Open natt-eyre opened 4 years ago
По 1 пункту проблема решилась добавлением дефисов по такому паттерну 81a130d2-502f-4cf1-a376-63edeb000e9f
остальные вопросы пока актуальны
Диадоковцы запрятали XSD файл очень глубоко, его через веб-интерфейс не найти. Вот то, что мы собрали для УПД с НДС 20%.
И так как в Диадоке у контрагентов часто неверные юридические адреса, то BoxId для них мы не используем, а заполняем их реквизиты сами и храним в своей базе.
OrgType также нужно менять. 1 - юрлица, 2 - ИП.
Так как мы в УПД пишем, что оказываем услугу, то некоторых полей (например количество) в Item не передаем (их надо поискать в других местах)
Сыро, но хотя бы уже что-то:
<UniversalTransferDocument Function="СЧФДОП"
DocumentDate="31.01.2020"
DocumentNumber="1202"
DocumentCreator="ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ ********, ИНН/КПП: ********/********"
Currency="643">
<Sellers>
<Seller>
<OrganizationReference OrgType="1" BoxId="********"/>
</Seller>
</Sellers>
<Buyers>
<Buyer>
<OrganizationDetails OrgType="1" OrgName="ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ ********" Inn="********" Kpp="********">
<Address>
<RussianAddress Region="75" ZipCode="********" City="********" Street="********" Building="********" Apartment="********"/>
</Address>
</OrganizationDetails>
</Buyer>
</Buyers>
<Shippers>
<Shipper SameAsSeller="true" />
</Shippers>
<Signers>
<SignerDetails Inn="********"
LastName="********"
FirstName="********"
MiddleName="********"
Position="********"
SignerPowers="5"
SignerType="1"
SignerStatus="1"
SignerPowersBase="Должностные обязанности"/>
</Signers>
<PaymentDocuments>
<Document Date="31.01.2020" Number="225" />
</PaymentDocuments>
<Table TotalWithVatExcluded="10833.33" Vat="2166.67" Total="13000">
<Item Product="********" TaxRate="20%" SubtotalWithVatExcluded="10833.33" Vat="2166.67" Subtotal="13000"/>
</Table>
<TransferInfo OperationInfo="Услуги оказаны в полном объеме">
<Employee Position="Генеральный директор" LastName="********" FirstName="********" MiddleName="********" />
<TransferBases>
<TransferBase BaseDocumentName="Договор" BaseDocumentNumber="131829" BaseDocumentDate="18.09.2018" />
</TransferBases>
</TransferInfo>
</UniversalTransferDocument>
Добрый день!
Есть метод GetDocumentTypes
, который возвращает информацию по каждому типу и каждой версии. Пример для титула от счет-фактуры:
{
"Version":"utd820_05_01_01_hyphen",
"SupportsContentPatching":true,
"SupportsEncrypting":true,
"Titles":[
{
"Index":0,
"IsFormal":true,
"XsdUrl":"/GetContent?typeNamedId=Invoice&function=default&version=utd820_05_01_01_hyphen&titleIndex=0&contentType=TitleXsd",
"UserDataXsdUrl":"/GetContent?typeNamedId=Invoice&function=default&version=utd820_05_01_01_hyphen&titleIndex=0&contentType=UserContractXsd",
"SignerInfo":{
"SignerType":"ExtendedSigner",
"ExtendedDocumentTitleType":"UtdSeller"
},
"MetadataItems":[
...
],
"IsActual":true,
"Workflows":[
{
"Id":10,
"IsDefault":true
}
],
"SupportsPredefinedRecipientTitle":false
}
Среди прочих параметров там есть параметр UserDataXsdUrl
— по этому урлу можно скачать нужную XSD
Спасибо @ethaniel за пример. Все-таки с наглядными примерами проще писать код, чем обращаться по API для получения урла, по которому доступна схема...
Вот пример данных, которые успешно получается отправить:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<UniversalTransferDocument Function=\"СЧФДОП\"
DocumentDate=\"26.12.2019\"
DocumentNumber=\"МУ-1139/377\"
Currency=\"643\"
DocumentCreator=\"Общество с ограниченной ответственностью «****»\">
<Sellers>
<Seller>
<OrganizationDetails OrgName=\"Общество с ограниченной ответственностью «***»\"
Inn=\"ИНН\"
Kpp=\"КПП\"
FnsParticipantId=\"ID\"
OrgType=\"1\"
Phone=\"***\"
Email=\"***\"
CorrespondentAccount=\"***\"
BankAccountNumber=\"***\"
BankName=\"***\"
BankId=\"***\">
<Address>
<RussianAddress ZipCode=\"***\"
Street=\"***\"
Building=\"***\"
Block=\"***\"
City=\"***\"
Region=\"**\"/>
</Address>
</OrganizationDetails>
</Seller>
</Sellers>
<Buyers>
<Buyer>
<OrganizationDetails OrgName=\"Общество с ограниченной ответственностью ***\"
Inn=\"***\"
FnsParticipantId=\"ID\"
OrgType=\"1\"
Email=\"***\"
CorrespondentAccount=\"***\"
BankId=\"***\"
Kpp=\"***\"
Phone=\"***\"
BankAccountNumber=\"***\"
BankName=\"***\">
<Address>
<RussianAddress ZipCode=\"***\"
Region=\"**\"
Street=\"***\"
Building=\"**\"
Apartment=\"***\"/>
</Address>
</OrganizationDetails>
</Buyer>
</Buyers>
<Shippers>
<Shipper SameAsSeller=\"true\"/>
</Shippers>
<Consignees>
<Consignee>
<OrganizationReference OrgType=\"1\"
BoxId=\"***\"/>
</Consignee>
</Consignees>
<Table Vat=\"3333.33\"
Total=\"20000.0\">
<Item Product=\"product\"
TaxRate=\"20%\"
Vat=\"3333.33\"
SubtotalWithVatExcluded=\"16666.67\"
Subtotal=\"20000.0\"/>
</Table>
<TransferInfo OperationInfo=\"Услуги оказаны в полном объеме\"
TransferDate=\"26.12.2019\">
<Employee Position=\"Генеральный директор\"
LastName=\"***\"
FirstName=\"***\"/>
</TransferInfo>
<PaymentDocuments>
<Document Date=\"25.12.2019\"
Number=\"1097\"/>
</PaymentDocuments>
<Signers>
<SignerDetails LastName=\"***\"
FirstName=\"***\"
Position=\"Генеральный директор\"
Inn=\"***\"
SignerType=\"1\"
SignerOrganizationName=\"Общество с ограниченной ответственностью «***»\"
SignerPowers=\"0\"
SignerStatus=\"1\"/>
</Signers>
</UniversalTransferDocument>
@einfoman А вот тут в issues писали, что если передаешь OrganizationReference, то OrganizationDetails передавать не надо, однако когда мы в Consignee передаем OrganizationReference, мы для некоторых документов получаем ошибку Address is required. Что делать в таком случае? Не использовать OrganizationReference вообще?
@natt-eyre
однако когда мы в Consignee передаем OrganizationReference, мы для некоторых документов получаем ошибку Address is required. Что делать в таком случае? Не использовать OrganizationReference вообще?
OrganizationReference
используется лишь для того, чтобы Диадок сам подставил имеющиеся у него данные по организации.
По некоторым форматам документов адрес должен быть указан, потому и ошибка. Скорее всего, у вашего грузополучателя в Диадоке не прописан адрес. Если подскажете boxId
, то я смогу посмотреть, так ли это.
Добрый день!
Несколько вопросов по по методу GenerateSenderTitleXml
Как получить BoxIdGuid для передачи в метод GenerateSenderTitleXml в атрибуты Buyer OrganizationReference. Пытаемся передавать 36bbf987214c4e91be11a6b6bb2a1660@diadoc.ru и без '@diadoc.ru' , но в ответ получаем s invalid according to its datatype 'guid' - The Pattern constraint failed. Мы используем Ruby on Rails для отправки HTTP запросов к вашему API, в формате XML, у нас нет возможности вызвать метод C# Guid.Parse(). Можно ли получить guid каким-то еще способом? Сейчас мы получаем box_id покупателя с помощью метода GetCounteragents.
Как и где посмотреть какие поля и в каком формате поддерживаются данным методом?
Как передавать поле TaxRate, получаем ошибки вида The 'TaxRate' attribute is invalid - The value is invalid according to its datatype 'TaxRateWithTwentyPercentAndTaxedByAgent' - The Enumeration constraint failed."