@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.
- package/build/commands/auth/get-security-code-status-by-admin.query.js +8 -0
- package/build/commands/auth/index.js +2 -0
- package/build/commands/auth/reset-security-code-limits-by-admin.command.js +10 -0
- package/build/commands/integration/one-c/get-one-c-order-exchange-state.query.js +8 -0
- package/build/commands/integration/one-c/index.js +1 -0
- package/build/constant/error.js +24 -0
- package/build/enum/index.js +3 -0
- package/build/enum/one-c-order-exchange-stage.enum.js +18 -0
- package/build/enum/one-c-order-owner.enum.js +12 -0
- package/build/enum/one-c-order-pending-reason.enum.js +15 -0
- package/build/enum/security-code-blocked-reason.enum.js +2 -0
- package/build/schemas/auth/get-security-code-status-by-admin-response.schema.js +6 -0
- package/build/schemas/auth/index.js +5 -0
- package/build/schemas/auth/reset-security-code-limits-by-admin-request.schema.js +5 -0
- package/build/schemas/auth/reset-security-code-limits-by-admin-response.schema.js +5 -0
- package/build/schemas/auth/security-code-issuance-block.schema.js +9 -0
- package/build/schemas/auth/security-code-issuance-status.schema.js +16 -0
- package/build/schemas/integration/one-c/get-one-c-order-exchange-state-response.schema.js +10 -0
- package/build/schemas/integration/one-c/index.js +2 -0
- package/build/schemas/integration/one-c/one-c-order-exchange-state.schema.js +35 -0
- package/build/schemas/integration/one-c/one-c-settings.schema.js +15 -1
- package/build/schemas/integration/one-c/one-c-status.schema.js +2 -4
- package/build/schemas/integration/one-c/update-one-c-settings-request.schema.js +5 -1
- package/commands/auth/get-security-code-status-by-admin.query.ts +7 -0
- package/commands/auth/index.ts +2 -0
- package/commands/auth/reset-security-code-limits-by-admin.command.ts +11 -0
- package/commands/integration/one-c/get-one-c-order-exchange-state.query.ts +7 -0
- package/commands/integration/one-c/index.ts +1 -0
- package/constant/error.ts +24 -0
- package/enum/index.ts +3 -0
- package/enum/one-c-order-exchange-stage.enum.ts +14 -0
- package/enum/one-c-order-owner.enum.ts +8 -0
- package/enum/one-c-order-pending-reason.enum.ts +11 -0
- package/enum/security-code-blocked-reason.enum.ts +2 -0
- package/package.json +1 -1
- package/schemas/auth/get-security-code-status-by-admin-response.schema.ts +4 -0
- package/schemas/auth/index.ts +5 -0
- package/schemas/auth/reset-security-code-limits-by-admin-request.schema.ts +3 -0
- package/schemas/auth/reset-security-code-limits-by-admin-response.schema.ts +3 -0
- package/schemas/auth/security-code-issuance-block.schema.ts +7 -0
- package/schemas/auth/security-code-issuance-status.schema.ts +14 -0
- package/schemas/integration/one-c/get-one-c-order-exchange-state-response.schema.ts +8 -0
- package/schemas/integration/one-c/index.ts +2 -0
- package/schemas/integration/one-c/one-c-order-exchange-state.schema.ts +34 -0
- package/schemas/integration/one-c/one-c-settings.schema.ts +16 -1
- package/schemas/integration/one-c/one-c-status.schema.ts +2 -4
- 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);
|
package/build/constant/error.js
CHANGED
|
@@ -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 },
|
package/build/enum/index.js
CHANGED
|
@@ -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.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С уходят изменения выгруженного
|
|
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
|
|
7
|
-
exports.OneCStatusSchema =
|
|
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 ||
|
|
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
|
+
}
|
package/commands/auth/index.ts
CHANGED
|
@@ -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
|
+
}
|
package/package.json
CHANGED
package/schemas/auth/index.ts
CHANGED
|
@@ -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,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С уходят изменения выгруженного
|
|
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 {
|
|
3
|
+
import { OneCSettingsSchema } from './one-c-settings.schema';
|
|
4
4
|
|
|
5
|
-
export const OneCStatusSchema =
|
|
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 =>
|
|
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
|
);
|