API запросы ecos-edi

В 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:
  • clientBoxId - ид проверяемого ящика

  • inn - ИНН контрагента

  • kpp - КПП контрагента

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

Запрос на создание связи с контрагентом.
Параметры:
  • counterpartyRef - recordRef контрагента в ecos

  • clientBoxId - ид ящика организации

  • invitationDocRef - recordRef пригласительного документа (опционально)

  • comment - Комментарий

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

Запрос на разрыв связи с контрагентом
Параметры:
  • counterpartyRef - recordRef контрагента в ecos

  • clientBoxId - id ящика организации

  • comment - комментарий

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

Отправка исходящего пакета провайдеру.
Параметры:
  • packageRef - recordRef отправляемого пакета

  • counterpartyRef - recordRef контрагента в ecos

  • counterpartyBoxId - boxId контрагента (опционально, обязаетельно если не указан counterpartyRef )

  • legalEntityRef - recordRef юр. лица в ecos

  • clientBoxId - boxId юр. лица (опционально, обязательно если не указан legalEntityRef)

  • fromDepartmentId - Id департамента в провайдере от имени которого отправляется пакет (Опционально)

  • toDepartmentId - Id департамента в провайдере, которому отправляется пакет (Опционально)

  • isInternal - является ли пакет внутренним (оборот между департаменатами одной организации)

  • needSentSignature - Требуется ли подпись контрагента

  • packageNumber - Номер пакета (Опционально)

  • packageDate - Дата пакета (Опционлаьно)

  • packageComment - Комментарий к пакету (Опционально)

  • signerRef - recordRef пользователя подписавшего документы в пакете

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

Отправка подписанных документов в пакете провайдеру.
Параметры:
  • packageRef – recordRef пакета с ЭДО документами

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

Точечная синхронизация с провайдером по одному пакету.
Параметры:
  • clientBoxId - id ящика с которым настроена синхрнизация

  • systemPackageId- id пакета по которому требуется провести синхронизацию

var rec = Records.get('edi/edi-action@');
rec.att("_self", {
                "requestType":"pointwiseSync",
                "providerType":"KONTUR",
                "requestData": {
                    "clientBoxId":"12315116136163241231",
                    "systemPackageId":"1321312312312321312312"
                }

    });
rec.save("json");

signDocuments

Отправка подписей по документам провайдеру.
Параметры:
  • documentRefs - список подписанных документов, для которых требуется отправить подписи

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

Отправка подписей по формализованным документам провайдеру.
Параметры:
  • documentRefs - список подписанных неформализованных документов, для которых требуется отправить подписи.

  • invoicesRefs - список подписанных формализованных документов, для которых требуется отправить подписи

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

Отправка подписей для актов сверки.
Параметры:
  • documentRefs - список подписанных неформализованных документов, для которых требуется отправить подписи

  • signerRef - recordRef пользователя подписавшего документы

  • signerJobTitle - Должность пользователя подписавшего документы

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

Отправка подписанного отказа в подписи документов в пакете.
Параметры:
  • packageRef - recordRef пакета с ЭДО документами

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

Отправка подписанного отказа в подписи документов.
Параметры:
  • documentRefs - список документов, для которых требуется отправить отказ

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

Отправка подписанных отказов в подписи для актов сверки.
Параметры:
  • documentRefs - список актов сверки для которых требуется отправить отказ

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

Отправка подписанных запросов на аннулирование по документам.
Параметры:
  • documentRefs - список документов по которым было подписано аннулирование

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

Отправка подписанных отказов по запросу на аннулирование по документам.
Параметры:
  • documentRefs - список документов по которым было подписан отказ аннулирования

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

Отправка подписанных запросов на аннулирование по документам.
Параметры:
  • documentRefs - список документов по которым был подписан запрос на аннулирование

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

Отправка подписанных запросов на корректировку по документам.
Параметры:
  • documentRefs - список документов по которым был подписан запрос на корректировку

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

Отправка подписанных титулов покупателя по формализованным документам.
Параметры:
  • documentRefs - список документов по которым был подписан титул покупателя

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

Генерация печатной формы по документу, возвращается контент печатной формы
Параметры:
  • documentRef - recordRef документа по которому требуется сгенерировать печатную форму

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 документа, статус генерации печатной формы у провайдера, возможные ошибки)
Параметры:
  • documentRef - recordRef документа по которому требуется сгенерировать печатную форму

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

Требуется ли генерация печатной формы для документа
Параметры:
  • documentRef - recordRef документа по которому требуется уточнение по требованию генерации

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 отказа в подписи для документа.
Параметры:
  • documentRef – recordRef документа по которому требуется генерация xml отказа в подписи

  • signerRef - recordRef пользователя, который будет подписывать отказ

  • comment - комментарий отказа

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 отказа в подписи для документов
Параметры:
  • documentRef – recordRef документа по которому требуется генерация xml отказа в подписи

  • signerRef - recordRef пользователя, который будет подписывать отказ

  • comment - комментарий отказа

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 запроса на аннулирование для документа
Параметры:
  • documentRef – recordRef документа по которому требуется генерация xml запроса на аннулирование

  • signerRef - имя пользователя, который будет подписывать запрос на аннулирование

  • comment - комментарий запроса на аннулирование

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 запроса на аннулирование для документов.
Параметры:
  • documentRef – recordRef документов по которым требуется генерация xml запроса на аннулирование

  • signerRef - имя пользователя, который будет подписывать запрос на аннулирование

  • comment - комментарий запроса на аннулирование

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 корректировки для документа.
Параметры:
  • documentRef – recordRef документа по которому требуется генерация xml корректировки

  • signerRef - имя пользователя, который будет подписывать корректировку

  • comment - комментарий

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

Проверка на требование подписания титула покупателя у документа
Параметры:
  • documentRef - recordRef документа по которому требуется проверка

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 титула покупателя для документа
Параметры:
  • documentRef – recordRef документа по которому требуется генерация титула покупателя

  • signerName - имя пользователя, который будет подписывать титул покупателя

  • factArrivalDate - фактическая дата передачи товара

  • comment - комментарий

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 извещения о получении для документа
Параметры:
  • documentRef – recordRef документа по которому требуется генерация извещения о получении

  • signerName - имя пользователя, который будет подписывать извещение о получении

  • signerPosition - должность пользователя

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 извещения о получении для документов
Параметры:
  • documentRefs – recordRef документов по которым требуется генерация извещения о получении

  • signerName - имя пользователя, который будет подписывать извещение о получении

  • signerPosition - должность пользователя

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 извещения о получении для документов.
Параметры:
  • documentRefs - recordRef документов по которым требуется отправка извещения о получении

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 извещения о получении для документа (Оптимизируется в дальнейшем)
Параметры:
  • documentRef - recordRef документа по которому требуется отправка извещения о получении

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
Параметры:
  • packageRef - recordRef ЭДО пакета в который добавляются документы, может быть null, в таком случае создается новый пакет

  • documentRefs – документы добавляемые в пакет

В ответе возвращается 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");