diadoc / diadocsdk-csharp

Official Diadoc SDK for C#
MIT License
35 stars 64 forks source link

Переход с 820 на 736 для Счетов-фактур #873

Open DronVS opened 3 years ago

DronVS commented 3 years ago

Добрый день. У нас реализовано создание и отправка счетов фактур на основании 820 приказа след. образом

var message = new MessageToPost { FromBoxId = OrgSendFrom.Boxes[0].BoxId, ToBoxId = OrgSendTo.Boxes[0].BoxId, FromDepartmentId = SendToUser.Permissions.UserDepartmentId };

var ExtendedInvoice = new Diadoc.Api.DataXml.Utd820.InvoiceTableItem(); //Заполняем ExtendedInvoice Product Unit Price …..

var InvoiceTable = new Diadoc.Api.DataXml.Utd820.InvoiceTable(); InvoiceTable.Item = new InvoiceTableItem[] { ExtendedInvoice }; //заполняем InvoiceTable TotalWithVatExcludedSpecified VatSpecified Vat ….

var aDocInfo = new UniversalTransferDocument(); aDocInfo.Function = UniversalTransferDocumentFunction.СЧФ; aDocInfo.DocumentDate = DocLink.GetValue("ActDate"); aDocInfo.DocumentNumber = DocLink.GetValue("FactureNum"); aDocInfo.DocumentCreator = "RussoutdoorService"; aDocInfo.Currency = "643"; aDocInfo.Table = InvoiceTable; aDocInfo.TransferInfo = new Diadoc.Api.DataXml.Utd820.TransferInfo { OperationInfo = "Информация об операции" }; aDocInfo.CircumFormatInvoice = (PaymentType == "PrePay" ? UniversalTransferDocumentCircumFormatInvoice.PaymentsRecieve : UniversalTransferDocumentCircumFormatInvoice.ItemsRealization); aDocInfo.CircumFormatInvoiceSpecified = true;

                //Sellers
                aDocInfo.Sellers = new ExtendedOrganizationInfo[]
                                   {  new ExtendedOrganizationInfo
                                      {  Item = new ExtendedOrganizationReference
                                                {  BoxId = sellerBoxId,
                                                   OrgType = Diadoc.Api.DataXml.Utd820.OrganizationType.LegalEntity
                                                }
                                      }
                                   }; 

aDocInfo.Buyers = new ExtendedOrganizationInfo[] aDocInfo.Shippers = new UniversalTransferDocumentShipper[] aDocInfo.Consignees = new ExtendedOrganizationInfo[]

var contract = aDocInfo.SerializeToXml(); var aDoc = Api.GenerateSenderTitleXml(Api_AuthTokenLogin, OrgSendFrom.Boxes[0].BoxId, "UniversalTransferDocument", aDocInfo.Function.ToString(), "utd820_05_01_01", contract);

var messageAttachment = new XmlDocumentAttachment() { SignedContent = new SignedContent { Content = aDoc.Content } }; message.AddInvoice(messageAttachment);

// Отправляем в Диадок var response = Api.PostMessage(Api_AuthTokenLogin, message);

нашел пример как рекомендуется переписать https://github.com/diadoc/diadocsdk-csharp/commit/435022708981a2309428a72974858e952771c974

но там используется UniversalCorrectionDocument из namespace Diadoc.Api.DataXml.Ucd736 в котором нет ни Shippers, ни Consignees, ни PaymentDocuments. Надо использовать какой то другой объект?

alexxxwam commented 3 years ago

Добрый день. У нас реализовано создание и отправка счетов фактур на основании 820 приказа след. образом

var message = new MessageToPost { FromBoxId = OrgSendFrom.Boxes[0].BoxId, ToBoxId = OrgSendTo.Boxes[0].BoxId, FromDepartmentId = SendToUser.Permissions.UserDepartmentId };

var ExtendedInvoice = new Diadoc.Api.DataXml.Utd820.InvoiceTableItem(); //Заполняем ExtendedInvoice Product Unit Price …..

var InvoiceTable = new Diadoc.Api.DataXml.Utd820.InvoiceTable(); InvoiceTable.Item = new InvoiceTableItem[] { ExtendedInvoice }; //заполняем InvoiceTable TotalWithVatExcludedSpecified VatSpecified Vat ….

var aDocInfo = new UniversalTransferDocument(); aDocInfo.Function = UniversalTransferDocumentFunction.СЧФ; aDocInfo.DocumentDate = DocLink.GetValue("ActDate"); aDocInfo.DocumentNumber = DocLink.GetValue("FactureNum"); aDocInfo.DocumentCreator = "RussoutdoorService"; aDocInfo.Currency = "643"; aDocInfo.Table = InvoiceTable; aDocInfo.TransferInfo = new Diadoc.Api.DataXml.Utd820.TransferInfo { OperationInfo = "Информация об операции" }; aDocInfo.CircumFormatInvoice = (PaymentType == "PrePay" ? UniversalTransferDocumentCircumFormatInvoice.PaymentsRecieve : UniversalTransferDocumentCircumFormatInvoice.ItemsRealization); aDocInfo.CircumFormatInvoiceSpecified = true;

                //Sellers
                aDocInfo.Sellers = new ExtendedOrganizationInfo[]
                                   {  new ExtendedOrganizationInfo
                                      {  Item = new ExtendedOrganizationReference
                                                {  BoxId = sellerBoxId,
                                                   OrgType = Diadoc.Api.DataXml.Utd820.OrganizationType.LegalEntity
                                                }
                                      }
                                   }; 

aDocInfo.Buyers = new ExtendedOrganizationInfo[] aDocInfo.Shippers = new UniversalTransferDocumentShipper[] aDocInfo.Consignees = new ExtendedOrganizationInfo[]

var contract = aDocInfo.SerializeToXml(); var aDoc = Api.GenerateSenderTitleXml(Api_AuthTokenLogin, OrgSendFrom.Boxes[0].BoxId, "UniversalTransferDocument", aDocInfo.Function.ToString(), "utd820_05_01_01", contract);

var messageAttachment = new XmlDocumentAttachment() { SignedContent = new SignedContent { Content = aDoc.Content } }; message.AddInvoice(messageAttachment);

// Отправляем в Диадок var response = Api.PostMessage(Api_AuthTokenLogin, message);

нашел пример как рекомендуется переписать 4350227

но там используется UniversalCorrectionDocument из namespace Diadoc.Api.DataXml.Ucd736 в котором нет ни Shippers, ни Consignees, ни PaymentDocuments. Надо использовать какой то другой объект?

вы смешали 820 приказ и 736 820 приказ регламентирует обмен счф и упд 736 приказ только!!! - укд и ксф, то есть раньше эти документы передавались в 189 приказе , с 01 октября их нужно формировать в 736 приказе. Для вас передача УПД и СЧФ не изменилась , 820 приказ не меняется , добавляются лишь заполнение некоторых доп полей (касающихся прослеживаемости и маркировки) , в случае, если вы работаете с такими товарами.

DronVS commented 3 years ago

Спасибо, а подскажите тогда почему заполняя поле UniversalTransferDocument.DocumentShipments данными я их не вижу в веб интерфейсе. Хотя в xml они прописались: <ДокПодтвОтгр НаимДокОтгр="TestName" НомДокОтгр="TestNumber" ДатаДокОтгр="01.07.2021" /> и не изменилась надпись в правом верхнем углу на (в редю Постановления Правительства РФ от 02.04.2021 №534)

вот еще статья https://www.diadoc.ru/blog/7973 Каких документов это коснется Будут изменены превью и печатные формы для документов в форматах по Приказам № 820 и 736: счет-фактура, исправление счета-фактуры,

alexxxwam commented 3 years ago

Спасибо, а подскажите тогда почему заполняя поле UniversalTransferDocument.DocumentShipments данными я их не вижу в веб интерфейсе. Хотя в xml они прописались: <ДокПодтвОтгр НаимДокОтгр="TestName" НомДокОтгр="TestNumber" ДатаДокОтгр="01.07.2021" /> и не изменилась надпись в правом верхнем углу на (в редю Постановления Правительства РФ от 02.04.2021 №534)

вот еще статья https://www.diadoc.ru/blog/7973 Каких документов это коснется Будут изменены превью и печатные формы для документов в форматах по Приказам № 820 и 736: счет-фактура, исправление счета-фактуры,

класс заполняете верный, документ должен быть датой больше или равной 1 июля 2021 у нас в вебе все отображается , если у вас этого нет - думаю , надо задать доп вопрос сюда на форум

DronVS commented 3 years ago

Спасибо, действительно все дело было в дате. Остался последний вопрос новые колонки 12, 12а и 13 в счет-фактуре, появляются если товар отслеживаемый. а если нет, но бухгалтера настаивают что бы они появились, можно заполнить какой то объект прочерком или пустой строкой что бы они отобразились?

alexxxwam commented 3 years ago

Спасибо, действительно все дело было в дате. Остался последний вопрос новые колонки 12, 12а и 13 в счет-фактуре, появляются если товар отслеживаемый. а если нет, но бухгалтера настаивают что бы они появились, можно заполнить какой то объект прочерком или пустой строкой что бы они отобразились?

это , как я понимаю , скорее всего нет

https://www.diadoc.ru/blog/7973 почти в самом конце

DronVS commented 3 years ago

ссылка никуда не ведет...

NataliaShumikhina commented 3 years ago

https://www.diadoc.ru/blog/7973

Колонки 12, 12а и 13 будут отображаться только в том случае, если в документе заполнен элемент СведПрослеж, т.е. для товаров, подлежащих прослеживаемости. Согласно постановлению 1137 и статье 169 НК РФ эти данные заполняются только в случае прослеживаемости