@floristcloud/api-lib 1.2.195 → 1.2.197

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/build/commands/auth/get-security-code-status-by-admin.query.js +8 -0
  2. package/build/commands/auth/index.js +2 -0
  3. package/build/commands/auth/reset-security-code-limits-by-admin.command.js +10 -0
  4. package/build/commands/integration/one-c/get-one-c-order-exchange-state.query.js +8 -0
  5. package/build/commands/integration/one-c/index.js +1 -0
  6. package/build/constant/error.js +24 -0
  7. package/build/enum/index.js +3 -0
  8. package/build/enum/one-c-order-exchange-stage.enum.js +18 -0
  9. package/build/enum/one-c-order-owner.enum.js +12 -0
  10. package/build/enum/one-c-order-pending-reason.enum.js +15 -0
  11. package/build/enum/security-code-blocked-reason.enum.js +2 -0
  12. package/build/schemas/auth/get-security-code-status-by-admin-response.schema.js +6 -0
  13. package/build/schemas/auth/index.js +5 -0
  14. package/build/schemas/auth/reset-security-code-limits-by-admin-request.schema.js +5 -0
  15. package/build/schemas/auth/reset-security-code-limits-by-admin-response.schema.js +5 -0
  16. package/build/schemas/auth/security-code-issuance-block.schema.js +9 -0
  17. package/build/schemas/auth/security-code-issuance-status.schema.js +16 -0
  18. package/build/schemas/integration/one-c/get-one-c-order-exchange-state-response.schema.js +10 -0
  19. package/build/schemas/integration/one-c/index.js +2 -0
  20. package/build/schemas/integration/one-c/one-c-order-exchange-state.schema.js +35 -0
  21. package/build/schemas/integration/one-c/one-c-settings.schema.js +15 -1
  22. package/build/schemas/integration/one-c/one-c-status.schema.js +2 -4
  23. package/build/schemas/integration/one-c/update-one-c-settings-request.schema.js +5 -1
  24. package/commands/auth/get-security-code-status-by-admin.query.ts +7 -0
  25. package/commands/auth/index.ts +2 -0
  26. package/commands/auth/reset-security-code-limits-by-admin.command.ts +11 -0
  27. package/commands/integration/one-c/get-one-c-order-exchange-state.query.ts +7 -0
  28. package/commands/integration/one-c/index.ts +1 -0
  29. package/constant/error.ts +24 -0
  30. package/enum/index.ts +3 -0
  31. package/enum/one-c-order-exchange-stage.enum.ts +14 -0
  32. package/enum/one-c-order-owner.enum.ts +8 -0
  33. package/enum/one-c-order-pending-reason.enum.ts +11 -0
  34. package/enum/security-code-blocked-reason.enum.ts +2 -0
  35. package/package.json +1 -1
  36. package/schemas/auth/get-security-code-status-by-admin-response.schema.ts +4 -0
  37. package/schemas/auth/index.ts +5 -0
  38. package/schemas/auth/reset-security-code-limits-by-admin-request.schema.ts +3 -0
  39. package/schemas/auth/reset-security-code-limits-by-admin-response.schema.ts +3 -0
  40. package/schemas/auth/security-code-issuance-block.schema.ts +7 -0
  41. package/schemas/auth/security-code-issuance-status.schema.ts +14 -0
  42. package/schemas/integration/one-c/get-one-c-order-exchange-state-response.schema.ts +8 -0
  43. package/schemas/integration/one-c/index.ts +2 -0
  44. package/schemas/integration/one-c/one-c-order-exchange-state.schema.ts +34 -0
  45. package/schemas/integration/one-c/one-c-settings.schema.ts +16 -1
  46. package/schemas/integration/one-c/one-c-status.schema.ts +2 -4
  47. package/schemas/integration/one-c/update-one-c-settings-request.schema.ts +6 -1
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetSecurityCodeStatusByAdminContractQuery = void 0;
4
+ const get_security_code_status_by_admin_response_schema_1 = require("../../schemas/auth/get-security-code-status-by-admin-response.schema");
5
+ var GetSecurityCodeStatusByAdminContractQuery;
6
+ (function (GetSecurityCodeStatusByAdminContractQuery) {
7
+ GetSecurityCodeStatusByAdminContractQuery.ResponseSchema = get_security_code_status_by_admin_response_schema_1.GetSecurityCodeStatusByAdminResponseSchema;
8
+ })(GetSecurityCodeStatusByAdminContractQuery || (exports.GetSecurityCodeStatusByAdminContractQuery = GetSecurityCodeStatusByAdminContractQuery = {}));
@@ -25,3 +25,5 @@ __exportStar(require("./restore-password-by-security-code.command"), exports);
25
25
  __exportStar(require("./reset-password-by-security-code.command"), exports);
26
26
  __exportStar(require("./mobile-login-user.command"), exports);
27
27
  __exportStar(require("./get-available-channels.command"), exports);
28
+ __exportStar(require("./get-security-code-status-by-admin.query"), exports);
29
+ __exportStar(require("./reset-security-code-limits-by-admin.command"), exports);
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResetSecurityCodeLimitsByAdminContractCommand = void 0;
4
+ const reset_security_code_limits_by_admin_request_schema_1 = require("../../schemas/auth/reset-security-code-limits-by-admin-request.schema");
5
+ const reset_security_code_limits_by_admin_response_schema_1 = require("../../schemas/auth/reset-security-code-limits-by-admin-response.schema");
6
+ var ResetSecurityCodeLimitsByAdminContractCommand;
7
+ (function (ResetSecurityCodeLimitsByAdminContractCommand) {
8
+ ResetSecurityCodeLimitsByAdminContractCommand.RequestSchema = reset_security_code_limits_by_admin_request_schema_1.ResetSecurityCodeLimitsByAdminRequestSchema;
9
+ ResetSecurityCodeLimitsByAdminContractCommand.ResponseSchema = reset_security_code_limits_by_admin_response_schema_1.ResetSecurityCodeLimitsByAdminResponseSchema;
10
+ })(ResetSecurityCodeLimitsByAdminContractCommand || (exports.ResetSecurityCodeLimitsByAdminContractCommand = ResetSecurityCodeLimitsByAdminContractCommand = {}));
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetOneCOrderExchangeStateContractQuery = void 0;
4
+ const get_one_c_order_exchange_state_response_schema_1 = require("../../../schemas/integration/one-c/get-one-c-order-exchange-state-response.schema");
5
+ var GetOneCOrderExchangeStateContractQuery;
6
+ (function (GetOneCOrderExchangeStateContractQuery) {
7
+ GetOneCOrderExchangeStateContractQuery.ResponseSchema = get_one_c_order_exchange_state_response_schema_1.GetOneCOrderExchangeStateResponseSchema;
8
+ })(GetOneCOrderExchangeStateContractQuery || (exports.GetOneCOrderExchangeStateContractQuery = GetOneCOrderExchangeStateContractQuery = {}));
@@ -18,6 +18,7 @@ __exportStar(require("./connect-one-c.command"), exports);
18
18
  __exportStar(require("./rotate-one-c-password.command"), exports);
19
19
  __exportStar(require("./disconnect-one-c.command"), exports);
20
20
  __exportStar(require("./get-one-c-status.query"), exports);
21
+ __exportStar(require("./get-one-c-order-exchange-state.query"), exports);
21
22
  __exportStar(require("./get-one-c-stock-conflict-list.query"), exports);
22
23
  __exportStar(require("./get-one-c-stock-conflict-preview.query"), exports);
23
24
  __exportStar(require("./resolve-one-c-stock-conflict.command"), exports);
@@ -530,6 +530,11 @@ exports.ERRORS = {
530
530
  CART_NOT_DELETED: { code: 'O013', message: 'Cart not deleted', httpCode: 500 },
531
531
  ORDER_SEND_INVOICE_FAILED_NO_EMAIL: { code: 'O014', message: 'Order send invoice failed, client does not have email', httpCode: 500 },
532
532
  ORDER_SEND_INVOICE_FAILED_NO_PHONE: { code: 'O017', message: 'Order send invoice failed, client does not have phone', httpCode: 500 },
533
+ ORDER_SEND_INVOICE_FAILED_NO_ACCOUNT: {
534
+ code: 'O067',
535
+ message: 'Order send invoice failed, client has no account for the selected channel',
536
+ httpCode: 400,
537
+ },
533
538
  ORDER_SEND_INVOICE_FAILED_NO_CONTACTS: {
534
539
  code: 'O025',
535
540
  message: 'Order send invoice failed, client does not have contact methods',
@@ -1578,6 +1583,9 @@ exports.ERRORS = {
1578
1583
  SECURITY_CODE_FRAUD: { code: 'SC005', message: 'Security code attempts exceeded. Contact administrator', httpCode: 403 },
1579
1584
  SECURITY_CODE_DAILY_LIMIT: { code: 'SC006', message: 'Daily security code limit reached. Contact administrator', httpCode: 429 },
1580
1585
  SECURITY_CODE_FRAUD_BLOCK: { code: 'SC007', message: 'Security code temporarily blocked after fraud detection', httpCode: 429 },
1586
+ SECURITY_CODE_WINDOW_LIMIT: { code: 'SC008', message: 'Too many security codes requested. Try again later', httpCode: 429 },
1587
+ SECURITY_CODE_STATUS_FAILED: { code: 'SC009', message: 'Failed to get security code status', httpCode: 500 },
1588
+ SECURITY_CODE_LIMITS_RESET_FAILED: { code: 'SC010', message: 'Failed to reset security code limits', httpCode: 500 },
1581
1589
  // MESSENGER PROFILE
1582
1590
  MESSENGER_VERIFICATION_CODE_NOT_FOUND: { code: 'MP001', message: 'Verification code not found', httpCode: 404 },
1583
1591
  MESSENGER_VERIFICATION_CODE_EXPIRED: { code: 'MP002', message: 'Verification code expired', httpCode: 400 },
@@ -1783,6 +1791,22 @@ exports.ERRORS = {
1783
1791
  ONE_C_EXCHANGE_FILE_TOO_LARGE: { code: 'OC024', message: '1C exchange file exceeds the size limit', httpCode: 413 },
1784
1792
  // Приём каталога выключен на интеграции (CompanyIntegration.isCatalogExchangeEnabled), обмен заказами продолжается.
1785
1793
  ONE_C_CATALOG_EXCHANGE_DISABLED: { code: 'OC025', message: '1C catalog exchange is disabled for this company', httpCode: 409 },
1794
+ // Состав заказа из файла заказов 1С (1С ведёт заказ) не применён к заказу FC.
1795
+ ONE_C_ORDER_APPLY_UNKNOWN_PRODUCT: {
1796
+ code: 'OC026',
1797
+ message: '1C order contains a product that is not linked in Florist Cloud',
1798
+ httpCode: 422,
1799
+ },
1800
+ ONE_C_ORDER_APPLY_FRACTIONAL_QUANTITY: { code: 'OC027', message: '1C order contains a fractional quantity', httpCode: 422 },
1801
+ ONE_C_ORDER_APPLY_FAILED: { code: 'OC028', message: 'Failed to apply 1C order to Florist Cloud order', httpCode: 500 },
1802
+ ONE_C_ORDER_EXCHANGE_STATE_FAILED: { code: 'OC029', message: 'Failed to read 1C order exchange state', httpCode: 500 },
1803
+ ONE_C_ORDER_APPLY_INVALID_LINE: {
1804
+ code: 'OC030',
1805
+ message: '1C order contains a line without product, quantity or price',
1806
+ httpCode: 422,
1807
+ },
1808
+ ONE_C_ORDER_APPLY_EMPTY: { code: 'OC031', message: '1C order contains no lines', httpCode: 422 },
1809
+ ONE_C_ORDER_APPLY_MIXED_PRICES: { code: 'OC032', message: '1C order contains one product at different prices', httpCode: 422 },
1786
1810
  // COMPANY INTEGRATION (общая запись интеграции компании)
1787
1811
  COMPANY_INTEGRATION_FETCH_FAILED: { code: 'CINT001', message: 'Failed to read company integration', httpCode: 500 },
1788
1812
  COMPANY_INTEGRATION_NOT_SAVED: { code: 'CINT002', message: 'Failed to save company integration', httpCode: 500 },
@@ -169,6 +169,9 @@ __exportStar(require("./write-off-report-date-basis.enum"), exports);
169
169
  __exportStar(require("./write-off-status.enum"), exports);
170
170
  __exportStar(require("./one-c-stock-conflict-status.enum"), exports);
171
171
  __exportStar(require("./one-c-order-sync-mode.enum"), exports);
172
+ __exportStar(require("./one-c-order-owner.enum"), exports);
173
+ __exportStar(require("./one-c-order-exchange-stage.enum"), exports);
174
+ __exportStar(require("./one-c-order-pending-reason.enum"), exports);
172
175
  __exportStar(require("./one-c-stock-conflict-line-action.enum"), exports);
173
176
  __exportStar(require("./one-c-stock-conflict-line-restriction.enum"), exports);
174
177
  __exportStar(require("./pre-order-conversion-match-kind.enum"), exports);
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OneCOrderExchangeStageEnum = void 0;
4
+ // Где заказ FC находится в обмене с 1С — для предупреждения на заказе.
5
+ var OneCOrderExchangeStageEnum;
6
+ (function (OneCOrderExchangeStageEnum) {
7
+ // В 1С ещё не ушёл: ждёт обмена, нужного статуса или даты отгрузки (см. pendingReason).
8
+ OneCOrderExchangeStageEnum["NOT_SENT"] = "NOT_SENT";
9
+ // В 1С, изменения FC доходят до документа.
10
+ OneCOrderExchangeStageEnum["SENT"] = "SENT";
11
+ // FC ведёт заказ, но в 1С началось исполнение (отгрузка, «Завершен», проведение в режиме «До проведения»):
12
+ // изменения FC в 1С больше не уходят.
13
+ OneCOrderExchangeStageEnum["IN_PROGRESS_IN_ONE_C"] = "IN_PROGRESS_IN_ONE_C";
14
+ // 1С ведёт заказ: изменения FC в 1С не уходят, состав приходит из 1С.
15
+ OneCOrderExchangeStageEnum["MANAGED_BY_ONE_C"] = "MANAGED_BY_ONE_C";
16
+ // 1С сообщила о полной отгрузке.
17
+ OneCOrderExchangeStageEnum["SHIPPED"] = "SHIPPED";
18
+ })(OneCOrderExchangeStageEnum || (exports.OneCOrderExchangeStageEnum = OneCOrderExchangeStageEnum = {}));
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OneCOrderOwnerEnum = void 0;
4
+ // Кто ведёт заказ после передачи в 1С.
5
+ var OneCOrderOwnerEnum;
6
+ (function (OneCOrderOwnerEnum) {
7
+ // FC — источник правды: изменения уходят в 1С до границы исполнения (первая отгрузка, «Завершен») или до сигнала режима
8
+ // OneCOrderSyncModeEnum, смотря что раньше.
9
+ OneCOrderOwnerEnum["FC"] = "FC";
10
+ // FC — канал продаж: заказ уходит в 1С один раз, дальше его состав приходит из файла заказов 1С.
11
+ OneCOrderOwnerEnum["ONE_C"] = "ONE_C";
12
+ })(OneCOrderOwnerEnum || (exports.OneCOrderOwnerEnum = OneCOrderOwnerEnum = {}));
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OneCOrderPendingReasonEnum = void 0;
4
+ // Почему заказ ещё не ушёл в 1С.
5
+ var OneCOrderPendingReasonEnum;
6
+ (function (OneCOrderPendingReasonEnum) {
7
+ // Ждёт ближайшего обмена.
8
+ OneCOrderPendingReasonEnum["AWAITING_EXCHANGE"] = "AWAITING_EXCHANGE";
9
+ // Статус заказа не входит в статусы, с которых заказы уходят в 1С.
10
+ OneCOrderPendingReasonEnum["STATUS_NOT_EXPORTED"] = "STATUS_NOT_EXPORTED";
11
+ // 1С резервирует заказы, а без даты отгрузки УНФ заказ не проведёт.
12
+ OneCOrderPendingReasonEnum["SHIPMENT_DATE_REQUIRED"] = "SHIPMENT_DATE_REQUIRED";
13
+ // В заказе нет товаров из 1С.
14
+ OneCOrderPendingReasonEnum["NO_ONE_C_PRODUCTS"] = "NO_ONE_C_PRODUCTS";
15
+ })(OneCOrderPendingReasonEnum || (exports.OneCOrderPendingReasonEnum = OneCOrderPendingReasonEnum = {}));
@@ -5,4 +5,6 @@ var SecurityCodeBlockedReasonEnum;
5
5
  (function (SecurityCodeBlockedReasonEnum) {
6
6
  SecurityCodeBlockedReasonEnum["FRAUD_BLOCK"] = "fraud_block";
7
7
  SecurityCodeBlockedReasonEnum["DAILY_LIMIT"] = "daily_limit";
8
+ SecurityCodeBlockedReasonEnum["WINDOW_LIMIT"] = "window_limit";
9
+ SecurityCodeBlockedReasonEnum["THROTTLED"] = "throttled";
8
10
  })(SecurityCodeBlockedReasonEnum || (exports.SecurityCodeBlockedReasonEnum = SecurityCodeBlockedReasonEnum = {}));
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetSecurityCodeStatusByAdminResponseSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const security_code_issuance_status_schema_1 = require("./security-code-issuance-status.schema");
6
+ exports.GetSecurityCodeStatusByAdminResponseSchema = zod_1.z.object({ data: security_code_issuance_status_schema_1.SecurityCodeIssuanceStatusSchema });
@@ -29,3 +29,8 @@ __exportStar(require("./reset-password-by-security-code-request.schema"), export
29
29
  __exportStar(require("./password-reset-user.schema"), exports);
30
30
  __exportStar(require("./password-reset-data.schema"), exports);
31
31
  __exportStar(require("./reset-password-by-security-code-response.schema"), exports);
32
+ __exportStar(require("./security-code-issuance-block.schema"), exports);
33
+ __exportStar(require("./security-code-issuance-status.schema"), exports);
34
+ __exportStar(require("./get-security-code-status-by-admin-response.schema"), exports);
35
+ __exportStar(require("./reset-security-code-limits-by-admin-request.schema"), exports);
36
+ __exportStar(require("./reset-security-code-limits-by-admin-response.schema"), exports);
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResetSecurityCodeLimitsByAdminRequestSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.ResetSecurityCodeLimitsByAdminRequestSchema = zod_1.z.object({});
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResetSecurityCodeLimitsByAdminResponseSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.ResetSecurityCodeLimitsByAdminResponseSchema = zod_1.z.object({ message: zod_1.z.string().optional() });
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SecurityCodeIssuanceBlockSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const security_code_blocked_reason_enum_1 = require("../../enum/security-code-blocked-reason.enum");
6
+ exports.SecurityCodeIssuanceBlockSchema = zod_1.z.object({
7
+ reason: zod_1.z.nativeEnum(security_code_blocked_reason_enum_1.SecurityCodeBlockedReasonEnum),
8
+ until: zod_1.z.date(),
9
+ });
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SecurityCodeIssuanceStatusSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const security_code_issuance_block_schema_1 = require("./security-code-issuance-block.schema");
6
+ exports.SecurityCodeIssuanceStatusSchema = zod_1.z.object({
7
+ isBlocked: zod_1.z.boolean(),
8
+ /** Действующие блоки по приоритету; первый — тот, что сейчас мешает получить код. */
9
+ blocks: security_code_issuance_block_schema_1.SecurityCodeIssuanceBlockSchema.array(),
10
+ dailyCount: zod_1.z.number().int(),
11
+ dailyLimit: zod_1.z.number().int(),
12
+ windowCount: zod_1.z.number().int(),
13
+ windowLimit: zod_1.z.number().int(),
14
+ windowMinutes: zod_1.z.number().int(),
15
+ lastIssuedAt: zod_1.z.date().nullable(),
16
+ });
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetOneCOrderExchangeStateResponseSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const one_c_order_exchange_state_schema_1 = require("./one-c-order-exchange-state.schema");
6
+ // data = null — интеграция 1С не подключена.
7
+ exports.GetOneCOrderExchangeStateResponseSchema = zod_1.z.object({
8
+ message: zod_1.z.string().optional(),
9
+ data: one_c_order_exchange_state_schema_1.OneCOrderExchangeStateSchema.nullable(),
10
+ });
@@ -30,3 +30,5 @@ __exportStar(require("./resolve-one-c-stock-conflict-response.schema"), exports)
30
30
  __exportStar(require("./one-c-settings.schema"), exports);
31
31
  __exportStar(require("./update-one-c-settings-request.schema"), exports);
32
32
  __exportStar(require("./update-one-c-settings-response.schema"), exports);
33
+ __exportStar(require("./one-c-order-exchange-state.schema"), exports);
34
+ __exportStar(require("./get-one-c-order-exchange-state-response.schema"), exports);
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OneCOrderExchangeStateSchema = exports.OneCShipmentDiscrepancySchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const one_c_order_exchange_stage_enum_1 = require("../../../enum/one-c-order-exchange-stage.enum");
6
+ const one_c_order_owner_enum_1 = require("../../../enum/one-c-order-owner.enum");
7
+ const one_c_order_pending_reason_enum_1 = require("../../../enum/one-c-order-pending-reason.enum");
8
+ // Товар, отгруженный в 1С не в том количестве, что в заказе FC, — в том числе отгруженный, но отсутствующий в заказе.
9
+ exports.OneCShipmentDiscrepancySchema = zod_1.z.object({
10
+ // Ид номенклатуры 1С.
11
+ externalId: zod_1.z.string(),
12
+ // null — товар 1С без товара FC (связки нет).
13
+ productUUID: zod_1.z.string().nullable(),
14
+ productName: zod_1.z.string().nullable(),
15
+ orderedQuantity: zod_1.z.number(),
16
+ shippedQuantity: zod_1.z.number(),
17
+ });
18
+ // Состояние заказа в обмене с 1С: панель показывает по нему предупреждение на заказе.
19
+ exports.OneCOrderExchangeStateSchema = zod_1.z.object({
20
+ orderOwner: zod_1.z.nativeEnum(one_c_order_owner_enum_1.OneCOrderOwnerEnum),
21
+ stage: zod_1.z.nativeEnum(one_c_order_exchange_stage_enum_1.OneCOrderExchangeStageEnum),
22
+ // Только для NOT_SENT.
23
+ pendingReason: zod_1.z.nativeEnum(one_c_order_pending_reason_enum_1.OneCOrderPendingReasonEnum).nullable(),
24
+ // Изменения FC дойдут до документа в 1С.
25
+ isChangesDelivered: zod_1.z.boolean(),
26
+ sentAt: zod_1.z.string().datetime().nullable(),
27
+ postedAt: zod_1.z.string().datetime().nullable(),
28
+ firstShippedAt: zod_1.z.string().datetime().nullable(),
29
+ shippedAt: zod_1.z.string().datetime().nullable(),
30
+ completedInOneCAt: zod_1.z.string().datetime().nullable(),
31
+ shipmentDiscrepancies: zod_1.z.array(exports.OneCShipmentDiscrepancySchema),
32
+ // Последнее применение состава из 1С не прошло (режим ONE_C): код ошибки и когда.
33
+ applyErrorCode: zod_1.z.string().nullable(),
34
+ applyErrorAt: zod_1.z.string().datetime().nullable(),
35
+ });
@@ -2,10 +2,24 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OneCSettingsSchema = void 0;
4
4
  const zod_1 = require("zod");
5
+ const one_c_order_owner_enum_1 = require("../../../enum/one-c-order-owner.enum");
5
6
  const one_c_order_sync_mode_enum_1 = require("../../../enum/one-c-order-sync-mode.enum");
7
+ const order_status_enum_1 = require("../../../enum/order-status.enum");
8
+ // Статусы, с которых заказ не может уйти в 1С: корзина витрины и шаблон.
9
+ const NOT_EXPORTABLE_STATUSES = [order_status_enum_1.OrderStatusEnum.WEBSHOP_NEW, order_status_enum_1.OrderStatusEnum.TEMPLATE];
6
10
  // Настройки интеграции 1С, которые меняет администратор компании.
7
11
  exports.OneCSettingsSchema = zod_1.z.object({
8
12
  isOrderMeasureUnitFromProduct: zod_1.z.boolean(),
9
- // До какого события в 1С уходят изменения выгруженного заказа (FC-583).
13
+ // До какого события в 1С уходят изменения выгруженного заказа, когда заказ ведёт FC (FC-583).
10
14
  orderSyncMode: zod_1.z.nativeEnum(one_c_order_sync_mode_enum_1.OneCOrderSyncModeEnum),
15
+ // Кто ведёт заказ после передачи в 1С.
16
+ orderOwner: zod_1.z.nativeEnum(one_c_order_owner_enum_1.OneCOrderOwnerEnum),
17
+ // С каких статусов новый заказ уходит в 1С; пусто — с любого, кроме корзины и шаблона.
18
+ exportStatuses: zod_1.z
19
+ .array(zod_1.z.nativeEnum(order_status_enum_1.OrderStatusEnum))
20
+ .refine(statuses => statuses.every(status => !NOT_EXPORTABLE_STATUSES.includes(status)), {
21
+ message: 'Cart and template statuses cannot be exported',
22
+ }),
23
+ // 1С резервирует заказы FC: остаток считается без двойного вычета, заказ без даты отгрузки не уходит.
24
+ isOneCReserving: zod_1.z.boolean(),
11
25
  });
@@ -3,11 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OneCStatusSchema = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const integration_status_enum_1 = require("../../../enum/integration-status.enum");
6
- const one_c_order_sync_mode_enum_1 = require("../../../enum/one-c-order-sync-mode.enum");
7
- exports.OneCStatusSchema = zod_1.z.object({
6
+ const one_c_settings_schema_1 = require("./one-c-settings.schema");
7
+ exports.OneCStatusSchema = one_c_settings_schema_1.OneCSettingsSchema.extend({
8
8
  isConnected: zod_1.z.boolean(),
9
- isOrderMeasureUnitFromProduct: zod_1.z.boolean(),
10
- orderSyncMode: zod_1.z.nativeEnum(one_c_order_sync_mode_enum_1.OneCOrderSyncModeEnum),
11
9
  status: zod_1.z.nativeEnum(integration_status_enum_1.IntegrationStatusEnum).nullable(),
12
10
  username: zod_1.z.string().nullable(),
13
11
  lastCheckauthAt: zod_1.z.string().datetime().nullable(),
@@ -4,4 +4,8 @@ exports.UpdateOneCSettingsRequestSchema = void 0;
4
4
  const one_c_settings_schema_1 = require("./one-c-settings.schema");
5
5
  // Меняются только переданные настройки; пустой запрос — ошибка валидации. Поля перечислены явно: библиотека собирается
6
6
  // под ES2016, Object.values в ней нет. Новая настройка добавляется и сюда.
7
- exports.UpdateOneCSettingsRequestSchema = one_c_settings_schema_1.OneCSettingsSchema.partial().refine(settings => settings.isOrderMeasureUnitFromProduct !== undefined || settings.orderSyncMode !== undefined, { message: 'At least one setting is required' });
7
+ exports.UpdateOneCSettingsRequestSchema = one_c_settings_schema_1.OneCSettingsSchema.partial().refine(settings => settings.isOrderMeasureUnitFromProduct !== undefined ||
8
+ settings.orderSyncMode !== undefined ||
9
+ settings.orderOwner !== undefined ||
10
+ settings.exportStatuses !== undefined ||
11
+ settings.isOneCReserving !== undefined, { message: 'At least one setting is required' });
@@ -0,0 +1,7 @@
1
+ import type { z } from 'zod';
2
+ import { GetSecurityCodeStatusByAdminResponseSchema } from '../../schemas/auth/get-security-code-status-by-admin-response.schema';
3
+
4
+ export namespace GetSecurityCodeStatusByAdminContractQuery {
5
+ export const ResponseSchema = GetSecurityCodeStatusByAdminResponseSchema;
6
+ export type Response = z.infer<typeof ResponseSchema>;
7
+ }
@@ -9,3 +9,5 @@ export * from './restore-password-by-security-code.command';
9
9
  export * from './reset-password-by-security-code.command';
10
10
  export * from './mobile-login-user.command';
11
11
  export * from './get-available-channels.command';
12
+ export * from './get-security-code-status-by-admin.query';
13
+ export * from './reset-security-code-limits-by-admin.command';
@@ -0,0 +1,11 @@
1
+ import type { z } from 'zod';
2
+ import { ResetSecurityCodeLimitsByAdminRequestSchema } from '../../schemas/auth/reset-security-code-limits-by-admin-request.schema';
3
+ import { ResetSecurityCodeLimitsByAdminResponseSchema } from '../../schemas/auth/reset-security-code-limits-by-admin-response.schema';
4
+
5
+ export namespace ResetSecurityCodeLimitsByAdminContractCommand {
6
+ export const RequestSchema = ResetSecurityCodeLimitsByAdminRequestSchema;
7
+ export type Request = z.infer<typeof RequestSchema>;
8
+
9
+ export const ResponseSchema = ResetSecurityCodeLimitsByAdminResponseSchema;
10
+ export type Response = z.infer<typeof ResponseSchema>;
11
+ }
@@ -0,0 +1,7 @@
1
+ import type { z } from 'zod';
2
+ import { GetOneCOrderExchangeStateResponseSchema } from '../../../schemas/integration/one-c/get-one-c-order-exchange-state-response.schema';
3
+
4
+ export namespace GetOneCOrderExchangeStateContractQuery {
5
+ export const ResponseSchema = GetOneCOrderExchangeStateResponseSchema;
6
+ export type Response = z.infer<typeof ResponseSchema>;
7
+ }
@@ -2,6 +2,7 @@ export * from './connect-one-c.command';
2
2
  export * from './rotate-one-c-password.command';
3
3
  export * from './disconnect-one-c.command';
4
4
  export * from './get-one-c-status.query';
5
+ export * from './get-one-c-order-exchange-state.query';
5
6
  export * from './get-one-c-stock-conflict-list.query';
6
7
  export * from './get-one-c-stock-conflict-preview.query';
7
8
  export * from './resolve-one-c-stock-conflict.command';
package/constant/error.ts CHANGED
@@ -547,6 +547,11 @@ export const ERRORS = {
547
547
  CART_NOT_DELETED: { code: 'O013', message: 'Cart not deleted', httpCode: 500 },
548
548
  ORDER_SEND_INVOICE_FAILED_NO_EMAIL: { code: 'O014', message: 'Order send invoice failed, client does not have email', httpCode: 500 },
549
549
  ORDER_SEND_INVOICE_FAILED_NO_PHONE: { code: 'O017', message: 'Order send invoice failed, client does not have phone', httpCode: 500 },
550
+ ORDER_SEND_INVOICE_FAILED_NO_ACCOUNT: {
551
+ code: 'O067',
552
+ message: 'Order send invoice failed, client has no account for the selected channel',
553
+ httpCode: 400,
554
+ },
550
555
  ORDER_SEND_INVOICE_FAILED_NO_CONTACTS: {
551
556
  code: 'O025',
552
557
  message: 'Order send invoice failed, client does not have contact methods',
@@ -1635,6 +1640,9 @@ export const ERRORS = {
1635
1640
  SECURITY_CODE_FRAUD: { code: 'SC005', message: 'Security code attempts exceeded. Contact administrator', httpCode: 403 },
1636
1641
  SECURITY_CODE_DAILY_LIMIT: { code: 'SC006', message: 'Daily security code limit reached. Contact administrator', httpCode: 429 },
1637
1642
  SECURITY_CODE_FRAUD_BLOCK: { code: 'SC007', message: 'Security code temporarily blocked after fraud detection', httpCode: 429 },
1643
+ SECURITY_CODE_WINDOW_LIMIT: { code: 'SC008', message: 'Too many security codes requested. Try again later', httpCode: 429 },
1644
+ SECURITY_CODE_STATUS_FAILED: { code: 'SC009', message: 'Failed to get security code status', httpCode: 500 },
1645
+ SECURITY_CODE_LIMITS_RESET_FAILED: { code: 'SC010', message: 'Failed to reset security code limits', httpCode: 500 },
1638
1646
 
1639
1647
  // MESSENGER PROFILE
1640
1648
  MESSENGER_VERIFICATION_CODE_NOT_FOUND: { code: 'MP001', message: 'Verification code not found', httpCode: 404 },
@@ -1853,6 +1861,22 @@ export const ERRORS = {
1853
1861
  ONE_C_EXCHANGE_FILE_TOO_LARGE: { code: 'OC024', message: '1C exchange file exceeds the size limit', httpCode: 413 },
1854
1862
  // Приём каталога выключен на интеграции (CompanyIntegration.isCatalogExchangeEnabled), обмен заказами продолжается.
1855
1863
  ONE_C_CATALOG_EXCHANGE_DISABLED: { code: 'OC025', message: '1C catalog exchange is disabled for this company', httpCode: 409 },
1864
+ // Состав заказа из файла заказов 1С (1С ведёт заказ) не применён к заказу FC.
1865
+ ONE_C_ORDER_APPLY_UNKNOWN_PRODUCT: {
1866
+ code: 'OC026',
1867
+ message: '1C order contains a product that is not linked in Florist Cloud',
1868
+ httpCode: 422,
1869
+ },
1870
+ ONE_C_ORDER_APPLY_FRACTIONAL_QUANTITY: { code: 'OC027', message: '1C order contains a fractional quantity', httpCode: 422 },
1871
+ ONE_C_ORDER_APPLY_FAILED: { code: 'OC028', message: 'Failed to apply 1C order to Florist Cloud order', httpCode: 500 },
1872
+ ONE_C_ORDER_EXCHANGE_STATE_FAILED: { code: 'OC029', message: 'Failed to read 1C order exchange state', httpCode: 500 },
1873
+ ONE_C_ORDER_APPLY_INVALID_LINE: {
1874
+ code: 'OC030',
1875
+ message: '1C order contains a line without product, quantity or price',
1876
+ httpCode: 422,
1877
+ },
1878
+ ONE_C_ORDER_APPLY_EMPTY: { code: 'OC031', message: '1C order contains no lines', httpCode: 422 },
1879
+ ONE_C_ORDER_APPLY_MIXED_PRICES: { code: 'OC032', message: '1C order contains one product at different prices', httpCode: 422 },
1856
1880
 
1857
1881
  // COMPANY INTEGRATION (общая запись интеграции компании)
1858
1882
  COMPANY_INTEGRATION_FETCH_FAILED: { code: 'CINT001', message: 'Failed to read company integration', httpCode: 500 },
package/enum/index.ts CHANGED
@@ -153,6 +153,9 @@ export * from './write-off-report-date-basis.enum';
153
153
  export * from './write-off-status.enum';
154
154
  export * from './one-c-stock-conflict-status.enum';
155
155
  export * from './one-c-order-sync-mode.enum';
156
+ export * from './one-c-order-owner.enum';
157
+ export * from './one-c-order-exchange-stage.enum';
158
+ export * from './one-c-order-pending-reason.enum';
156
159
  export * from './one-c-stock-conflict-line-action.enum';
157
160
  export * from './one-c-stock-conflict-line-restriction.enum';
158
161
  export * from './pre-order-conversion-match-kind.enum';
@@ -0,0 +1,14 @@
1
+ // Где заказ FC находится в обмене с 1С — для предупреждения на заказе.
2
+ export enum OneCOrderExchangeStageEnum {
3
+ // В 1С ещё не ушёл: ждёт обмена, нужного статуса или даты отгрузки (см. pendingReason).
4
+ NOT_SENT = 'NOT_SENT',
5
+ // В 1С, изменения FC доходят до документа.
6
+ SENT = 'SENT',
7
+ // FC ведёт заказ, но в 1С началось исполнение (отгрузка, «Завершен», проведение в режиме «До проведения»):
8
+ // изменения FC в 1С больше не уходят.
9
+ IN_PROGRESS_IN_ONE_C = 'IN_PROGRESS_IN_ONE_C',
10
+ // 1С ведёт заказ: изменения FC в 1С не уходят, состав приходит из 1С.
11
+ MANAGED_BY_ONE_C = 'MANAGED_BY_ONE_C',
12
+ // 1С сообщила о полной отгрузке.
13
+ SHIPPED = 'SHIPPED',
14
+ }
@@ -0,0 +1,8 @@
1
+ // Кто ведёт заказ после передачи в 1С.
2
+ export enum OneCOrderOwnerEnum {
3
+ // FC — источник правды: изменения уходят в 1С до границы исполнения (первая отгрузка, «Завершен») или до сигнала режима
4
+ // OneCOrderSyncModeEnum, смотря что раньше.
5
+ FC = 'FC',
6
+ // FC — канал продаж: заказ уходит в 1С один раз, дальше его состав приходит из файла заказов 1С.
7
+ ONE_C = 'ONE_C',
8
+ }
@@ -0,0 +1,11 @@
1
+ // Почему заказ ещё не ушёл в 1С.
2
+ export enum OneCOrderPendingReasonEnum {
3
+ // Ждёт ближайшего обмена.
4
+ AWAITING_EXCHANGE = 'AWAITING_EXCHANGE',
5
+ // Статус заказа не входит в статусы, с которых заказы уходят в 1С.
6
+ STATUS_NOT_EXPORTED = 'STATUS_NOT_EXPORTED',
7
+ // 1С резервирует заказы, а без даты отгрузки УНФ заказ не проведёт.
8
+ SHIPMENT_DATE_REQUIRED = 'SHIPMENT_DATE_REQUIRED',
9
+ // В заказе нет товаров из 1С.
10
+ NO_ONE_C_PRODUCTS = 'NO_ONE_C_PRODUCTS',
11
+ }
@@ -1,4 +1,6 @@
1
1
  export enum SecurityCodeBlockedReasonEnum {
2
2
  FRAUD_BLOCK = 'fraud_block',
3
3
  DAILY_LIMIT = 'daily_limit',
4
+ WINDOW_LIMIT = 'window_limit',
5
+ THROTTLED = 'throttled',
4
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floristcloud/api-lib",
3
- "version": "1.2.195",
3
+ "version": "1.2.197",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "scripts": {
@@ -0,0 +1,4 @@
1
+ import { z } from 'zod';
2
+ import { SecurityCodeIssuanceStatusSchema } from './security-code-issuance-status.schema';
3
+
4
+ export const GetSecurityCodeStatusByAdminResponseSchema = z.object({ data: SecurityCodeIssuanceStatusSchema });
@@ -13,3 +13,8 @@ export * from './reset-password-by-security-code-request.schema';
13
13
  export * from './password-reset-user.schema';
14
14
  export * from './password-reset-data.schema';
15
15
  export * from './reset-password-by-security-code-response.schema';
16
+ export * from './security-code-issuance-block.schema';
17
+ export * from './security-code-issuance-status.schema';
18
+ export * from './get-security-code-status-by-admin-response.schema';
19
+ export * from './reset-security-code-limits-by-admin-request.schema';
20
+ export * from './reset-security-code-limits-by-admin-response.schema';
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+
3
+ export const ResetSecurityCodeLimitsByAdminRequestSchema = z.object({});
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+
3
+ export const ResetSecurityCodeLimitsByAdminResponseSchema = z.object({ message: z.string().optional() });
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+ import { SecurityCodeBlockedReasonEnum } from '../../enum/security-code-blocked-reason.enum';
3
+
4
+ export const SecurityCodeIssuanceBlockSchema = z.object({
5
+ reason: z.nativeEnum(SecurityCodeBlockedReasonEnum),
6
+ until: z.date(),
7
+ });
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ import { SecurityCodeIssuanceBlockSchema } from './security-code-issuance-block.schema';
3
+
4
+ export const SecurityCodeIssuanceStatusSchema = z.object({
5
+ isBlocked: z.boolean(),
6
+ /** Действующие блоки по приоритету; первый — тот, что сейчас мешает получить код. */
7
+ blocks: SecurityCodeIssuanceBlockSchema.array(),
8
+ dailyCount: z.number().int(),
9
+ dailyLimit: z.number().int(),
10
+ windowCount: z.number().int(),
11
+ windowLimit: z.number().int(),
12
+ windowMinutes: z.number().int(),
13
+ lastIssuedAt: z.date().nullable(),
14
+ });
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ import { OneCOrderExchangeStateSchema } from './one-c-order-exchange-state.schema';
3
+
4
+ // data = null — интеграция 1С не подключена.
5
+ export const GetOneCOrderExchangeStateResponseSchema = z.object({
6
+ message: z.string().optional(),
7
+ data: OneCOrderExchangeStateSchema.nullable(),
8
+ });
@@ -14,3 +14,5 @@ export * from './resolve-one-c-stock-conflict-response.schema';
14
14
  export * from './one-c-settings.schema';
15
15
  export * from './update-one-c-settings-request.schema';
16
16
  export * from './update-one-c-settings-response.schema';
17
+ export * from './one-c-order-exchange-state.schema';
18
+ export * from './get-one-c-order-exchange-state-response.schema';
@@ -0,0 +1,34 @@
1
+ import { z } from 'zod';
2
+ import { OneCOrderExchangeStageEnum } from '../../../enum/one-c-order-exchange-stage.enum';
3
+ import { OneCOrderOwnerEnum } from '../../../enum/one-c-order-owner.enum';
4
+ import { OneCOrderPendingReasonEnum } from '../../../enum/one-c-order-pending-reason.enum';
5
+
6
+ // Товар, отгруженный в 1С не в том количестве, что в заказе FC, — в том числе отгруженный, но отсутствующий в заказе.
7
+ export const OneCShipmentDiscrepancySchema = z.object({
8
+ // Ид номенклатуры 1С.
9
+ externalId: z.string(),
10
+ // null — товар 1С без товара FC (связки нет).
11
+ productUUID: z.string().nullable(),
12
+ productName: z.string().nullable(),
13
+ orderedQuantity: z.number(),
14
+ shippedQuantity: z.number(),
15
+ });
16
+
17
+ // Состояние заказа в обмене с 1С: панель показывает по нему предупреждение на заказе.
18
+ export const OneCOrderExchangeStateSchema = z.object({
19
+ orderOwner: z.nativeEnum(OneCOrderOwnerEnum),
20
+ stage: z.nativeEnum(OneCOrderExchangeStageEnum),
21
+ // Только для NOT_SENT.
22
+ pendingReason: z.nativeEnum(OneCOrderPendingReasonEnum).nullable(),
23
+ // Изменения FC дойдут до документа в 1С.
24
+ isChangesDelivered: z.boolean(),
25
+ sentAt: z.string().datetime().nullable(),
26
+ postedAt: z.string().datetime().nullable(),
27
+ firstShippedAt: z.string().datetime().nullable(),
28
+ shippedAt: z.string().datetime().nullable(),
29
+ completedInOneCAt: z.string().datetime().nullable(),
30
+ shipmentDiscrepancies: z.array(OneCShipmentDiscrepancySchema),
31
+ // Последнее применение состава из 1С не прошло (режим ONE_C): код ошибки и когда.
32
+ applyErrorCode: z.string().nullable(),
33
+ applyErrorAt: z.string().datetime().nullable(),
34
+ });
@@ -1,9 +1,24 @@
1
1
  import { z } from 'zod';
2
+ import { OneCOrderOwnerEnum } from '../../../enum/one-c-order-owner.enum';
2
3
  import { OneCOrderSyncModeEnum } from '../../../enum/one-c-order-sync-mode.enum';
4
+ import { OrderStatusEnum } from '../../../enum/order-status.enum';
5
+
6
+ // Статусы, с которых заказ не может уйти в 1С: корзина витрины и шаблон.
7
+ const NOT_EXPORTABLE_STATUSES: OrderStatusEnum[] = [OrderStatusEnum.WEBSHOP_NEW, OrderStatusEnum.TEMPLATE];
3
8
 
4
9
  // Настройки интеграции 1С, которые меняет администратор компании.
5
10
  export const OneCSettingsSchema = z.object({
6
11
  isOrderMeasureUnitFromProduct: z.boolean(),
7
- // До какого события в 1С уходят изменения выгруженного заказа (FC-583).
12
+ // До какого события в 1С уходят изменения выгруженного заказа, когда заказ ведёт FC (FC-583).
8
13
  orderSyncMode: z.nativeEnum(OneCOrderSyncModeEnum),
14
+ // Кто ведёт заказ после передачи в 1С.
15
+ orderOwner: z.nativeEnum(OneCOrderOwnerEnum),
16
+ // С каких статусов новый заказ уходит в 1С; пусто — с любого, кроме корзины и шаблона.
17
+ exportStatuses: z
18
+ .array(z.nativeEnum(OrderStatusEnum))
19
+ .refine(statuses => statuses.every(status => !NOT_EXPORTABLE_STATUSES.includes(status)), {
20
+ message: 'Cart and template statuses cannot be exported',
21
+ }),
22
+ // 1С резервирует заказы FC: остаток считается без двойного вычета, заказ без даты отгрузки не уходит.
23
+ isOneCReserving: z.boolean(),
9
24
  });
@@ -1,11 +1,9 @@
1
1
  import { z } from 'zod';
2
2
  import { IntegrationStatusEnum } from '../../../enum/integration-status.enum';
3
- import { OneCOrderSyncModeEnum } from '../../../enum/one-c-order-sync-mode.enum';
3
+ import { OneCSettingsSchema } from './one-c-settings.schema';
4
4
 
5
- export const OneCStatusSchema = z.object({
5
+ export const OneCStatusSchema = OneCSettingsSchema.extend({
6
6
  isConnected: z.boolean(),
7
- isOrderMeasureUnitFromProduct: z.boolean(),
8
- orderSyncMode: z.nativeEnum(OneCOrderSyncModeEnum),
9
7
  status: z.nativeEnum(IntegrationStatusEnum).nullable(),
10
8
  username: z.string().nullable(),
11
9
  lastCheckauthAt: z.string().datetime().nullable(),
@@ -3,6 +3,11 @@ import { OneCSettingsSchema } from './one-c-settings.schema';
3
3
  // Меняются только переданные настройки; пустой запрос — ошибка валидации. Поля перечислены явно: библиотека собирается
4
4
  // под ES2016, Object.values в ней нет. Новая настройка добавляется и сюда.
5
5
  export const UpdateOneCSettingsRequestSchema = OneCSettingsSchema.partial().refine(
6
- settings => settings.isOrderMeasureUnitFromProduct !== undefined || settings.orderSyncMode !== undefined,
6
+ settings =>
7
+ settings.isOrderMeasureUnitFromProduct !== undefined ||
8
+ settings.orderSyncMode !== undefined ||
9
+ settings.orderOwner !== undefined ||
10
+ settings.exportStatuses !== undefined ||
11
+ settings.isOneCReserving !== undefined,
7
12
  { message: 'At least one setting is required' },
8
13
  );