В ecos-edi микросервисе реализован функционал из enterprise-core cервиса EcosEdiService.
При отправке запроса на отправку пакета или документов или генерацию сервисных документов используется record dao c id - edi-action.
Для отправки запроса через рекорды необходимо использовать метод mutate.
DTO запроса и ответа:
public static class EdiActionRequest { private String requestType; private EdiProviderType providerType; private ObjectData requestData; } public static class EdiActionResult { private T data; }
Где:
- requestType - тип запроса, например “generatePrintForm“
- providerType- тип провайдера, Контур, СБИС и т.д. для Диадока необходимо указывать “KONTUR“ (см. EdiProviderType enum).
- requestData - данные по запросу, например, для генерации печатных форм это documentRef документа
Пример запроса:
RecordAtts requestAtts = new RecordAtts(); requestAtts.setId("edi/edi-action@"); requestAtts.setAtt("requestType", "generatePrintForm"); requestAtts.setAtt("providerType","KONTUR"); requestAtts.setAtt("requestData", ObjectData.create().set("documentRef", RecordRef.valueOf("recordRef value"))); recordsService.mutate(requestAtts);
Посмотреть различные типы запросов можно в классе EdiRequestRecords микросервиса ecos-edi
Пример запроса из консоли:
var rec = Records.get('edi/edi-action@'); // важно @ в конце rec.att("_self", { "requestType":"generatePrintForm", "providerType":"KONTUR", "requestData": {"documentRef":"emodel/edi-document@5d518efd-cef1-4ebf-b518-62ff9a620c9e"} }); var resp = await rec.save("?json");
Список текущих поддерживаемых запросов:
Запрос | Описание | Пример |
---|---|---|
isCounterpartyExists | Запрос на проверку существания связи с контрагентом у конткретной организации.
Параметры requestData:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"isCounterpartyExists",
"providerType":"KONTUR",
"requestData": {
"clientBoxId":"1312313-131331-1231",
"inn":"12334561234",
"kpp":"123652323"
}
});
var resp = await rec.save("json");
|
aquireCounterparty | Запрос на создание связи с контрагентом.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"aquireCounterparty",
"providerType":"KONTUR",
"requestData": {
"counterpartyRef":"emodel/counterparty@12311241-123123",
"clientBoxId":"123123-123123123-123213",
"invitationDocRef ":"emodel/invitationDoc@12311241-123123",
"comment": "commentText"
}
});
var resp = await rec.save("json");
|
breakWithCounterparty | Запрос на разрыв связи с контрагентом
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"breakWithCounterparty",
"providerType":"KONTUR",
"requestData": {
"counterpartyRef":"emodel/counterparty@12311241-123123",
"clientBoxId":"123123-123123123-123213",
"comment": "commentText"
}
});
var resp = await rec.save("json");
|
sendPackageToCounterparty | Отправка исходящего пакета провайдеру.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"sendPackageToCounterparty",
"providerType":"KONTUR",
"requestData": {
"packageRef":"emodel/edi-package@12311241-123123",
"counterpartyRef":"emodel/counterparty@12311241-123123",
"counterpartyBoxId ":"234623478246824623442374",
"legalEntityRef":"emodel/legal-entity@12311241-123123",
"clientBoxId":"2342342342342342424324",
"fromDepartmentId ":"3434444444444434343434",
"toDepartmentId":"242423423424242424242",
"isInternal":false,
"needSentSignature":true,
"packageNumber":"22551515252",
"packageDate":"2023/09/08",
"packageComment":"Test comment",
"signerRef": "emodel/person@12311241-123123"
}
});
var resp = await rec.save("json");
|
signPackage | Отправка подписанных документов в пакете провайдеру.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"signPackage",
"providerType":"KONTUR",
"requestData": {
"packageRef ":"emodel/edi-package@12311241-123123"
}
});
rec.save("json");
|
pointwiseSync | Точечная синхронизация с провайдером по одному пакету.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"pointwiseSync",
"providerType":"KONTUR",
"requestData": {
"clientBoxId":"12315116136163241231",
"systemPackageId":"1321312312312321312312"
}
});
rec.save("json");
|
signDocuments | Отправка подписей по документам провайдеру.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"signDocuments",
"providerType":"KONTUR",
"requestData": {
"documentRefs":[
"emodel/edi-document@ref1",
"emodel/edi-document@ref2"
]
}
});
rec.save("json");
|
signDocumentsAndBuyerTitles | Отправка подписей по формализованным документам провайдеру.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"signDocumentsAndBuyerTitles",
"providerType":"KONTUR",
"requestData": {
"documentRefs":[
"emodel/edi-document@ref1",
"emodel/edi-document@ref2"
],
"invoicesRefs":[
"emodel/edi-document@ref3",
"emodel/edi-document@ref4"
]
}
});
rec.save("json");
|
sendReconciliationActSigns | Отправка подписей для актов сверки.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"sendReconciliationActSigns",
"providerType":"KONTUR",
"requestData": {
"documentRefs":[
"emodel/edi-document@ref1",
"emodel/edi-document@ref2"
],
"signerRef":"emodel/person@ref-1",
"signerJobTitle":"Директор тест"
}
});
rec.save("json");
|
rejectPackage | Отправка подписанного отказа в подписи документов в пакете.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"rejectPackage",
"providerType":"KONTUR",
"requestData": {
"packageRef ":"emodel/edi-package@12311241-123123"
}
});
rec.save("json");
|
rejectDocuments | Отправка подписанного отказа в подписи документов.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"rejectDocuments",
"providerType":"KONTUR",
"requestData": {
"documentRefs":[
"emodel/edi-document@ref1",
"emodel/edi-document@ref2"
]
}
});
rec.save("json");
|
sendReconciliationActRejects | Отправка подписанных отказов в подписи для актов сверки.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"sendReconciliationActRejects",
"providerType":"KONTUR",
"requestData": {
"documentRefs":[
"emodel/edi-document@ref1",
"emodel/edi-document@ref2"
]
}
});
rec.save("json");
|
acceptRevocationRequests | Отправка подписанных запросов на аннулирование по документам.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"acceptRevocationRequests",
"providerType":"KONTUR",
"requestData": {
"documentRefs":[
"emodel/edi-document@ref1",
"emodel/edi-document@ref2"
]
}
});
rec.save("json");
|
declineRevocationRequests | Отправка подписанных отказов по запросу на аннулирование по документам.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"declineRevocationRequests",
"providerType":"KONTUR",
"requestData": {
"documentRefs":[
"emodel/edi-document@ref1",
"emodel/edi-document@ref2"
]
}
});
rec.save("json");
|
sendRevocationRequests | Отправка подписанных запросов на аннулирование по документам.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"sendRevocationRequests",
"providerType":"KONTUR",
"requestData": {
"documentRefs":[
"emodel/edi-document@ref1",
"emodel/edi-document@ref2"
]
}
});
rec.save("json");
|
sendCorrectionRequests | Отправка подписанных запросов на корректировку по документам.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"sendCorrectionRequests",
"providerType":"KONTUR",
"requestData": {
"documentRefs":[
"emodel/edi-document@ref1",
"emodel/edi-document@ref2"
]
}
});
rec.save("json");
|
sendBuyerTitles | Отправка подписанных титулов покупателя по формализованным документам.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"sendBuyerTitles",
"providerType":"KONTUR",
"requestData": {
"documentRefs":[
"emodel/edi-document@ref1",
"emodel/edi-document@ref2"
]
}
});
rec.save("json");
|
generatePrintForm | Генерация печатной формы по документу, возвращается контент печатной формы
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"generatePrintForm",
"providerType":"KONTUR",
"requestData": {
"documentRef":"emodel/edi-document@ref1"
}
});
var res = rec.save("json");
|
generatePrintFormWithDetails | Генерация печатной формы по документу, возвращается контент печатной формы + доп. параметры (id документа, статус генерации печатной формы у провайдера, возможные ошибки)
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"generatePrintFormWithDetails",
"providerType":"KONTUR",
"requestData": {
"documentRef":"emodel/edi-document@ref1"
}
});
var res = rec.save("json");
|
needUpdateMainContentByPrintForm | Требуется ли генерация печатной формы для документа
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"needUpdateMainContentByPrintForm",
"providerType":"KONTUR",
"requestData": {
"documentRef":"emodel/edi-document@ref1"
}
});
var res = rec.save("json");
|
generateRejectionXml | Генерация xml отказа в подписи для документа.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"generateRejectionXml",
"providerType":"KONTUR",
"requestData": {
"documentRef":"emodel/edi-document@ref1",
"signerRef":"emodel/person@ref-1",
"comment":"Test comment"
}
});
var res = rec.save("json");
|
generateRejectionsXml | Генерация xml отказа в подписи для документов
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"generateRejectionsXml",
"providerType":"KONTUR",
"requestData": {
"documentRefs":[
"emodel/edi-document@ref1",
"emodel/edi-document@ref2"
],
"signerRef":"emodel/person@ref-1",
"comment":"Test comment"
}
});
var res = rec.save("json");
|
generateRevocationXml | Генерация xml запроса на аннулирование для документа
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"generateRevocationXml",
"providerType":"KONTUR",
"requestData": {
"documentRef":"emodel/edi-document@ref1",
"signerName":"admin",
"comment":"Test comment"
}
});
var res = rec.save("json");
|
generateRevocationsXml | Генерация xml запроса на аннулирование для документов.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"generateRevocationsXml",
"providerType":"KONTUR",
"requestData": {
"documentRefs":[
"emodel/edi-document@ref1",
"emodel/edi-document@ref2"
],
"signerName":"admin",
"comment":"Test comment"
}
});
var res = rec.save("json");
|
generateInvoiceCorrectionRequestXml | Генерация xml корректировки для документа.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"generateInvoiceCorrectionRequestXml",
"providerType":"KONTUR",
"requestData": {
"documentRef":"emodel/edi-document@ref1",
"signerName":"admin",
"comment":"Test comment"
}
});
var res = rec.save("json");
|
isNeedSignTitle | Проверка на требование подписания титула покупателя у документа
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"isNeedSignTitle",
"providerType":"KONTUR",
"requestData": {
"documentRef":"emodel/edi-document@ref1"
}
});
var res = rec.save("json");
|
generateBuyerTitle | Генерация xml титула покупателя для документа
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"generateBuyerTitle",
"providerType":"KONTUR",
"requestData": {
"documentRef":"emodel/edi-document@ref1",
"signerName":"admin",
"factArrivalDate ":"2023/09/08",
"comment":"Test comment"
}
});
var res = rec.save("json");
|
generateReceiptXml | Генерация xml извещения о получении для документа
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"generateReceiptXml",
"providerType":"KONTUR",
"requestData": {
"documentRef":"emodel/edi-document@ref1",
"signerName":"admin",
"signerPosition":"DirectorTest"
}
});
var res = rec.save("json");
|
generateReceiptsXml | Генерация xml извещения о получении для документов
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"generateReceiptsXml",
"providerType":"KONTUR",
"requestData": {
"documentRefs":[
"emodel/edi-document@ref1",
"emodel/edi-document@ref2"
],
"signerName":"admin",
"signerPosition":"DirectorTest"
}
});
var res = rec.save("json");
|
sendReceiptsXml | Отправка подписанного xml извещения о получении для документов.
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"sendReceiptsXml",
"providerType":"KONTUR",
"requestData": {
"documentRefs":[
"emodel/edi-document@ref1",
"emodel/edi-document@ref2"
]
}
});
var res = rec.save("json");
|
sendReceiptXml | Отправка подписанного xml извещения о получении для документа (Оптимизируется в дальнейшем)
Параметры:
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"sendReceiptXml",
"providerType":"KONTUR",
"requestData": {
"documentRef":"emodel/edi-document@ref1"
}
});
var res = rec.save("json");
|
addDocumentsToSystemPackage | Добавление документа в системный пакет edi-package.
В параметры передаются ref системного пакета и список документов для добавления в данный пакет.
Если ref пакета не указан, то будет создан новый edi пакет и в него будут добавлены передаваемые документы.
Документы могут передавать как с типом edi-document и его наследники, так и с любым другим, не связаным с edi
Если передается документ не являющийся типом edi-document или его наследником, то для каждого из таких документов создается соответствующий ему документ c типом edi-document.
Edi-document добавляется в пакет и далее может быть отправлен провайдеру.
Edi-document и добавляемый кастомный документ связываются через ассоциацию ediDoc:systemDocumentLink
Параметры:
В ответе возвращается recordRef пакета
|
var rec = Records.get('edi/edi-action@');
rec.att("_self", {
"requestType":"addDocumentsToSystemPackage",
"providerType":"KONTUR",
"requestData": {
"packageRef":"emodel/edi-package@packageId", //id системеного пакета для добавления документов (может быть null, тогда будет создан новый пакет
"documentRefs":["emodel/doc-type@doc-id"] // список документов для добавления в системный edi пакет
}
});
var resp = await rec.save("json");
|