@floristcloud/api-lib 1.2.171 → 1.2.172
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/integration/one-c/get-one-c-stock-conflict-preview.query.js +8 -0
- package/build/commands/integration/one-c/index.js +2 -0
- package/build/commands/integration/one-c/resolve-one-c-stock-conflict.command.js +10 -0
- package/build/constant/error.js +14 -0
- package/build/enum/index.js +2 -0
- package/build/enum/one-c-stock-conflict-line-action.enum.js +10 -0
- package/build/enum/one-c-stock-conflict-line-restriction.enum.js +11 -0
- package/build/schemas/integration/one-c/get-one-c-stock-conflict-preview-response.schema.js +9 -0
- package/build/schemas/integration/one-c/index.js +7 -0
- package/build/schemas/integration/one-c/one-c-stock-conflict-decision.schema.js +16 -0
- package/build/schemas/integration/one-c/one-c-stock-conflict-line.schema.js +18 -0
- package/build/schemas/integration/one-c/one-c-stock-conflict-preview.schema.js +14 -0
- package/build/schemas/integration/one-c/one-c-stock-conflict-resolution.schema.js +13 -0
- package/build/schemas/integration/one-c/resolve-one-c-stock-conflict-request.schema.js +10 -0
- package/build/schemas/integration/one-c/resolve-one-c-stock-conflict-response.schema.js +9 -0
- package/commands/integration/one-c/get-one-c-stock-conflict-preview.query.ts +7 -0
- package/commands/integration/one-c/index.ts +2 -0
- package/commands/integration/one-c/resolve-one-c-stock-conflict.command.ts +11 -0
- package/constant/error.ts +14 -0
- package/enum/index.ts +2 -0
- package/enum/one-c-stock-conflict-line-action.enum.ts +6 -0
- package/enum/one-c-stock-conflict-line-restriction.enum.ts +7 -0
- package/package.json +1 -1
- package/schemas/integration/one-c/get-one-c-stock-conflict-preview-response.schema.ts +7 -0
- package/schemas/integration/one-c/index.ts +7 -0
- package/schemas/integration/one-c/one-c-stock-conflict-decision.schema.ts +14 -0
- package/schemas/integration/one-c/one-c-stock-conflict-line.schema.ts +16 -0
- package/schemas/integration/one-c/one-c-stock-conflict-preview.schema.ts +12 -0
- package/schemas/integration/one-c/one-c-stock-conflict-resolution.schema.ts +11 -0
- package/schemas/integration/one-c/resolve-one-c-stock-conflict-request.schema.ts +8 -0
- package/schemas/integration/one-c/resolve-one-c-stock-conflict-response.schema.ts +7 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetOneCStockConflictPreviewContractQuery = void 0;
|
|
4
|
+
const get_one_c_stock_conflict_preview_response_schema_1 = require("../../../schemas/integration/one-c/get-one-c-stock-conflict-preview-response.schema");
|
|
5
|
+
var GetOneCStockConflictPreviewContractQuery;
|
|
6
|
+
(function (GetOneCStockConflictPreviewContractQuery) {
|
|
7
|
+
GetOneCStockConflictPreviewContractQuery.ResponseSchema = get_one_c_stock_conflict_preview_response_schema_1.GetOneCStockConflictPreviewResponseSchema;
|
|
8
|
+
})(GetOneCStockConflictPreviewContractQuery || (exports.GetOneCStockConflictPreviewContractQuery = GetOneCStockConflictPreviewContractQuery = {}));
|
|
@@ -19,3 +19,5 @@ __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
21
|
__exportStar(require("./get-one-c-stock-conflict-list.query"), exports);
|
|
22
|
+
__exportStar(require("./get-one-c-stock-conflict-preview.query"), exports);
|
|
23
|
+
__exportStar(require("./resolve-one-c-stock-conflict.command"), exports);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResolveOneCStockConflictContractCommand = void 0;
|
|
4
|
+
const resolve_one_c_stock_conflict_request_schema_1 = require("../../../schemas/integration/one-c/resolve-one-c-stock-conflict-request.schema");
|
|
5
|
+
const resolve_one_c_stock_conflict_response_schema_1 = require("../../../schemas/integration/one-c/resolve-one-c-stock-conflict-response.schema");
|
|
6
|
+
var ResolveOneCStockConflictContractCommand;
|
|
7
|
+
(function (ResolveOneCStockConflictContractCommand) {
|
|
8
|
+
ResolveOneCStockConflictContractCommand.RequestSchema = resolve_one_c_stock_conflict_request_schema_1.ResolveOneCStockConflictRequestSchema;
|
|
9
|
+
ResolveOneCStockConflictContractCommand.ResponseSchema = resolve_one_c_stock_conflict_response_schema_1.ResolveOneCStockConflictResponseSchema;
|
|
10
|
+
})(ResolveOneCStockConflictContractCommand || (exports.ResolveOneCStockConflictContractCommand = ResolveOneCStockConflictContractCommand = {}));
|
package/build/constant/error.js
CHANGED
|
@@ -1653,6 +1653,20 @@ exports.ERRORS = {
|
|
|
1653
1653
|
ONE_C_STOCK_CONFLICT_CHECK_FAILED: { code: 'OC012', message: 'Failed to check 1C stock conflicts', httpCode: 500 },
|
|
1654
1654
|
ONE_C_STOCK_CONFLICT_FETCH_FAILED: { code: 'OC013', message: 'Failed to read 1C stock conflicts', httpCode: 500 },
|
|
1655
1655
|
ONE_C_STOCK_CONFLICT_NOTIFY_FAILED: { code: 'OC014', message: 'Failed to notify admins about 1C stock conflicts', httpCode: 500 },
|
|
1656
|
+
ONE_C_STOCK_CONFLICT_NOT_FOUND: { code: 'OC015', message: '1C stock conflict not found', httpCode: 404 },
|
|
1657
|
+
// Снимок остатка или строки резерва изменились после предпросмотра — сотрудник пересчитывает решение.
|
|
1658
|
+
ONE_C_STOCK_CONFLICT_STALE: { code: 'OC016', message: '1C stock conflict data changed, refresh the preview', httpCode: 409 },
|
|
1659
|
+
ONE_C_STOCK_CONFLICT_BUSY: { code: 'OC017', message: '1C stock conflicts are being checked, try again', httpCode: 409 },
|
|
1660
|
+
ONE_C_STOCK_CONFLICT_INVALID_DECISION: { code: 'OC018', message: 'Invalid decision for a 1C stock conflict line', httpCode: 400 },
|
|
1661
|
+
ONE_C_STOCK_CONFLICT_LINE_NOT_EDITABLE: { code: 'OC019', message: 'This order line cannot be changed from the panel', httpCode: 409 },
|
|
1662
|
+
ONE_C_STOCK_CONFLICT_PREVIEW_FAILED: { code: 'OC020', message: 'Failed to build 1C stock conflict preview', httpCode: 500 },
|
|
1663
|
+
ONE_C_STOCK_CONFLICT_RESOLVE_FAILED: { code: 'OC021', message: 'Failed to apply 1C stock conflict decision', httpCode: 500 },
|
|
1664
|
+
// Строки менялись, а доступный остаток пересчитать нельзя (товар вне поставки синхронизации 1С) — решение откатывается.
|
|
1665
|
+
ONE_C_STOCK_CONFLICT_BALANCE_NOT_RECOMPUTED: {
|
|
1666
|
+
code: 'OC022',
|
|
1667
|
+
message: 'Product stock cannot be recomputed: it is not in the 1C sync consignment',
|
|
1668
|
+
httpCode: 409,
|
|
1669
|
+
},
|
|
1656
1670
|
// COMPANY INTEGRATION (общая запись интеграции компании)
|
|
1657
1671
|
COMPANY_INTEGRATION_FETCH_FAILED: { code: 'CINT001', message: 'Failed to read company integration', httpCode: 500 },
|
|
1658
1672
|
COMPANY_INTEGRATION_NOT_SAVED: { code: 'CINT002', message: 'Failed to save company integration', httpCode: 500 },
|
package/build/enum/index.js
CHANGED
|
@@ -166,3 +166,5 @@ __exportStar(require("./webshop-mode.enum"), exports);
|
|
|
166
166
|
__exportStar(require("./write-off-report-date-basis.enum"), exports);
|
|
167
167
|
__exportStar(require("./write-off-status.enum"), exports);
|
|
168
168
|
__exportStar(require("./one-c-stock-conflict-status.enum"), exports);
|
|
169
|
+
__exportStar(require("./one-c-stock-conflict-line-action.enum"), exports);
|
|
170
|
+
__exportStar(require("./one-c-stock-conflict-line-restriction.enum"), exports);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OneCStockConflictLineActionEnum = void 0;
|
|
4
|
+
// Решение сотрудника по строке заказа в конфликте «остаток 1С меньше резерва FC» (FC-560).
|
|
5
|
+
var OneCStockConflictLineActionEnum;
|
|
6
|
+
(function (OneCStockConflictLineActionEnum) {
|
|
7
|
+
OneCStockConflictLineActionEnum["REDUCE"] = "REDUCE";
|
|
8
|
+
OneCStockConflictLineActionEnum["REMOVE"] = "REMOVE";
|
|
9
|
+
OneCStockConflictLineActionEnum["KEEP"] = "KEEP";
|
|
10
|
+
})(OneCStockConflictLineActionEnum || (exports.OneCStockConflictLineActionEnum = OneCStockConflictLineActionEnum = {}));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OneCStockConflictLineRestrictionEnum = void 0;
|
|
4
|
+
// Почему строку в конфликте остатка нельзя менять из панели.
|
|
5
|
+
var OneCStockConflictLineRestrictionEnum;
|
|
6
|
+
(function (OneCStockConflictLineRestrictionEnum) {
|
|
7
|
+
// Корзина покупателя (WEBSHOP_NEW): сотрудник её не правит, корзина освобождается по таймеру.
|
|
8
|
+
OneCStockConflictLineRestrictionEnum["CART"] = "CART";
|
|
9
|
+
// Заказ входит в УПД.
|
|
10
|
+
OneCStockConflictLineRestrictionEnum["TRANSFER_DOCUMENT"] = "TRANSFER_DOCUMENT";
|
|
11
|
+
})(OneCStockConflictLineRestrictionEnum || (exports.OneCStockConflictLineRestrictionEnum = OneCStockConflictLineRestrictionEnum = {}));
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetOneCStockConflictPreviewResponseSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const one_c_stock_conflict_preview_schema_1 = require("./one-c-stock-conflict-preview.schema");
|
|
6
|
+
exports.GetOneCStockConflictPreviewResponseSchema = zod_1.z.object({
|
|
7
|
+
message: zod_1.z.string().optional(),
|
|
8
|
+
data: one_c_stock_conflict_preview_schema_1.OneCStockConflictPreviewSchema,
|
|
9
|
+
});
|
|
@@ -20,3 +20,10 @@ __exportStar(require("./get-one-c-stock-conflict-list-request.schema"), exports)
|
|
|
20
20
|
__exportStar(require("./get-one-c-stock-conflict-list-response.schema"), exports);
|
|
21
21
|
__exportStar(require("./one-c-stock-conflict-list.schema"), exports);
|
|
22
22
|
__exportStar(require("./one-c-stock-conflict.schema"), exports);
|
|
23
|
+
__exportStar(require("./get-one-c-stock-conflict-preview-response.schema"), exports);
|
|
24
|
+
__exportStar(require("./one-c-stock-conflict-decision.schema"), exports);
|
|
25
|
+
__exportStar(require("./one-c-stock-conflict-line.schema"), exports);
|
|
26
|
+
__exportStar(require("./one-c-stock-conflict-preview.schema"), exports);
|
|
27
|
+
__exportStar(require("./one-c-stock-conflict-resolution.schema"), exports);
|
|
28
|
+
__exportStar(require("./resolve-one-c-stock-conflict-request.schema"), exports);
|
|
29
|
+
__exportStar(require("./resolve-one-c-stock-conflict-response.schema"), exports);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OneCStockConflictDecisionSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const one_c_stock_conflict_line_action_enum_1 = require("../../../enum/one-c-stock-conflict-line-action.enum");
|
|
6
|
+
// Решение по строке: REDUCE — до quantity (меньше текущего, не меньше 1), REMOVE — удалить, KEEP — оставить.
|
|
7
|
+
exports.OneCStockConflictDecisionSchema = zod_1.z
|
|
8
|
+
.object({
|
|
9
|
+
orderProductUUID: zod_1.z.string(),
|
|
10
|
+
action: zod_1.z.nativeEnum(one_c_stock_conflict_line_action_enum_1.OneCStockConflictLineActionEnum),
|
|
11
|
+
quantity: zod_1.z.number().int().min(1).optional(),
|
|
12
|
+
})
|
|
13
|
+
.refine(decision => decision.action !== one_c_stock_conflict_line_action_enum_1.OneCStockConflictLineActionEnum.REDUCE || decision.quantity !== undefined, {
|
|
14
|
+
message: 'quantity is required for REDUCE',
|
|
15
|
+
path: ['quantity'],
|
|
16
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OneCStockConflictLineSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const one_c_stock_conflict_line_restriction_enum_1 = require("../../../enum/one-c-stock-conflict-line-restriction.enum");
|
|
6
|
+
const order_status_enum_1 = require("../../../enum/order-status.enum");
|
|
7
|
+
// Строка заказа, держащая резерв товара конфликта. restriction != null — менять из панели нельзя.
|
|
8
|
+
exports.OneCStockConflictLineSchema = zod_1.z.object({
|
|
9
|
+
orderProductUUID: zod_1.z.string(),
|
|
10
|
+
orderUUID: zod_1.z.string(),
|
|
11
|
+
orderId: zod_1.z.number().int(),
|
|
12
|
+
orderStatus: zod_1.z.nativeEnum(order_status_enum_1.OrderStatusEnum),
|
|
13
|
+
orderCreatedAt: zod_1.z.string().datetime(),
|
|
14
|
+
clientUUID: zod_1.z.string(),
|
|
15
|
+
clientName: zod_1.z.string(),
|
|
16
|
+
quantity: zod_1.z.number().int(),
|
|
17
|
+
restriction: zod_1.z.nativeEnum(one_c_stock_conflict_line_restriction_enum_1.OneCStockConflictLineRestrictionEnum).nullable(),
|
|
18
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OneCStockConflictPreviewSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const one_c_stock_conflict_line_schema_1 = require("./one-c-stock-conflict-line.schema");
|
|
6
|
+
const one_c_stock_conflict_schema_1 = require("./one-c-stock-conflict.schema");
|
|
7
|
+
// Предпросмотр решения: строки — сначала корзины, затем заказы от новых к старым. previewToken передаётся в применение:
|
|
8
|
+
// если снимок остатка или строки изменились, применение ответит «пересчитайте».
|
|
9
|
+
exports.OneCStockConflictPreviewSchema = zod_1.z.object({
|
|
10
|
+
conflict: one_c_stock_conflict_schema_1.OneCStockConflictSchema,
|
|
11
|
+
stockSnapshotFormedAt: zod_1.z.string().datetime().nullable(),
|
|
12
|
+
lines: zod_1.z.array(one_c_stock_conflict_line_schema_1.OneCStockConflictLineSchema),
|
|
13
|
+
previewToken: zod_1.z.string(),
|
|
14
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OneCStockConflictResolutionSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const one_c_stock_conflict_status_enum_1 = require("../../../enum/one-c-stock-conflict-status.enum");
|
|
6
|
+
// Итог решения: оставшаяся недостача принята (ACKNOWLEDGED) или её нет (RESOLVED). balance — доступный остаток
|
|
7
|
+
// после пересчёта; null — строки не менялись (только подтверждение недостачи), пересчёта не было.
|
|
8
|
+
exports.OneCStockConflictResolutionSchema = zod_1.z.object({
|
|
9
|
+
status: zod_1.z.nativeEnum(one_c_stock_conflict_status_enum_1.OneCStockConflictStatusEnum),
|
|
10
|
+
shortage: zod_1.z.string(),
|
|
11
|
+
balance: zod_1.z.number().int().nullable(),
|
|
12
|
+
changedLines: zod_1.z.number().int(),
|
|
13
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResolveOneCStockConflictRequestSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const one_c_stock_conflict_decision_schema_1 = require("./one-c-stock-conflict-decision.schema");
|
|
6
|
+
// Строки, которых нет в decisions, остаются как есть. Пустой список — «оставить всё»: принять текущую недостачу.
|
|
7
|
+
exports.ResolveOneCStockConflictRequestSchema = zod_1.z.object({
|
|
8
|
+
previewToken: zod_1.z.string().min(1),
|
|
9
|
+
decisions: zod_1.z.array(one_c_stock_conflict_decision_schema_1.OneCStockConflictDecisionSchema).max(500),
|
|
10
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResolveOneCStockConflictResponseSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const one_c_stock_conflict_resolution_schema_1 = require("./one-c-stock-conflict-resolution.schema");
|
|
6
|
+
exports.ResolveOneCStockConflictResponseSchema = zod_1.z.object({
|
|
7
|
+
message: zod_1.z.string().optional(),
|
|
8
|
+
data: one_c_stock_conflict_resolution_schema_1.OneCStockConflictResolutionSchema,
|
|
9
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import { GetOneCStockConflictPreviewResponseSchema } from '../../../schemas/integration/one-c/get-one-c-stock-conflict-preview-response.schema';
|
|
3
|
+
|
|
4
|
+
export namespace GetOneCStockConflictPreviewContractQuery {
|
|
5
|
+
export const ResponseSchema = GetOneCStockConflictPreviewResponseSchema;
|
|
6
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
7
|
+
}
|
|
@@ -3,3 +3,5 @@ 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
5
|
export * from './get-one-c-stock-conflict-list.query';
|
|
6
|
+
export * from './get-one-c-stock-conflict-preview.query';
|
|
7
|
+
export * from './resolve-one-c-stock-conflict.command';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import { ResolveOneCStockConflictRequestSchema } from '../../../schemas/integration/one-c/resolve-one-c-stock-conflict-request.schema';
|
|
3
|
+
import { ResolveOneCStockConflictResponseSchema } from '../../../schemas/integration/one-c/resolve-one-c-stock-conflict-response.schema';
|
|
4
|
+
|
|
5
|
+
export namespace ResolveOneCStockConflictContractCommand {
|
|
6
|
+
export const RequestSchema = ResolveOneCStockConflictRequestSchema;
|
|
7
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
8
|
+
|
|
9
|
+
export const ResponseSchema = ResolveOneCStockConflictResponseSchema;
|
|
10
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
11
|
+
}
|
package/constant/error.ts
CHANGED
|
@@ -1720,6 +1720,20 @@ export const ERRORS = {
|
|
|
1720
1720
|
ONE_C_STOCK_CONFLICT_CHECK_FAILED: { code: 'OC012', message: 'Failed to check 1C stock conflicts', httpCode: 500 },
|
|
1721
1721
|
ONE_C_STOCK_CONFLICT_FETCH_FAILED: { code: 'OC013', message: 'Failed to read 1C stock conflicts', httpCode: 500 },
|
|
1722
1722
|
ONE_C_STOCK_CONFLICT_NOTIFY_FAILED: { code: 'OC014', message: 'Failed to notify admins about 1C stock conflicts', httpCode: 500 },
|
|
1723
|
+
ONE_C_STOCK_CONFLICT_NOT_FOUND: { code: 'OC015', message: '1C stock conflict not found', httpCode: 404 },
|
|
1724
|
+
// Снимок остатка или строки резерва изменились после предпросмотра — сотрудник пересчитывает решение.
|
|
1725
|
+
ONE_C_STOCK_CONFLICT_STALE: { code: 'OC016', message: '1C stock conflict data changed, refresh the preview', httpCode: 409 },
|
|
1726
|
+
ONE_C_STOCK_CONFLICT_BUSY: { code: 'OC017', message: '1C stock conflicts are being checked, try again', httpCode: 409 },
|
|
1727
|
+
ONE_C_STOCK_CONFLICT_INVALID_DECISION: { code: 'OC018', message: 'Invalid decision for a 1C stock conflict line', httpCode: 400 },
|
|
1728
|
+
ONE_C_STOCK_CONFLICT_LINE_NOT_EDITABLE: { code: 'OC019', message: 'This order line cannot be changed from the panel', httpCode: 409 },
|
|
1729
|
+
ONE_C_STOCK_CONFLICT_PREVIEW_FAILED: { code: 'OC020', message: 'Failed to build 1C stock conflict preview', httpCode: 500 },
|
|
1730
|
+
ONE_C_STOCK_CONFLICT_RESOLVE_FAILED: { code: 'OC021', message: 'Failed to apply 1C stock conflict decision', httpCode: 500 },
|
|
1731
|
+
// Строки менялись, а доступный остаток пересчитать нельзя (товар вне поставки синхронизации 1С) — решение откатывается.
|
|
1732
|
+
ONE_C_STOCK_CONFLICT_BALANCE_NOT_RECOMPUTED: {
|
|
1733
|
+
code: 'OC022',
|
|
1734
|
+
message: 'Product stock cannot be recomputed: it is not in the 1C sync consignment',
|
|
1735
|
+
httpCode: 409,
|
|
1736
|
+
},
|
|
1723
1737
|
|
|
1724
1738
|
// COMPANY INTEGRATION (общая запись интеграции компании)
|
|
1725
1739
|
COMPANY_INTEGRATION_FETCH_FAILED: { code: 'CINT001', message: 'Failed to read company integration', httpCode: 500 },
|
package/enum/index.ts
CHANGED
|
@@ -150,3 +150,5 @@ export * from './webshop-mode.enum';
|
|
|
150
150
|
export * from './write-off-report-date-basis.enum';
|
|
151
151
|
export * from './write-off-status.enum';
|
|
152
152
|
export * from './one-c-stock-conflict-status.enum';
|
|
153
|
+
export * from './one-c-stock-conflict-line-action.enum';
|
|
154
|
+
export * from './one-c-stock-conflict-line-restriction.enum';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Почему строку в конфликте остатка нельзя менять из панели.
|
|
2
|
+
export enum OneCStockConflictLineRestrictionEnum {
|
|
3
|
+
// Корзина покупателя (WEBSHOP_NEW): сотрудник её не правит, корзина освобождается по таймеру.
|
|
4
|
+
CART = 'CART',
|
|
5
|
+
// Заказ входит в УПД.
|
|
6
|
+
TRANSFER_DOCUMENT = 'TRANSFER_DOCUMENT',
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -4,3 +4,10 @@ export * from './get-one-c-stock-conflict-list-request.schema';
|
|
|
4
4
|
export * from './get-one-c-stock-conflict-list-response.schema';
|
|
5
5
|
export * from './one-c-stock-conflict-list.schema';
|
|
6
6
|
export * from './one-c-stock-conflict.schema';
|
|
7
|
+
export * from './get-one-c-stock-conflict-preview-response.schema';
|
|
8
|
+
export * from './one-c-stock-conflict-decision.schema';
|
|
9
|
+
export * from './one-c-stock-conflict-line.schema';
|
|
10
|
+
export * from './one-c-stock-conflict-preview.schema';
|
|
11
|
+
export * from './one-c-stock-conflict-resolution.schema';
|
|
12
|
+
export * from './resolve-one-c-stock-conflict-request.schema';
|
|
13
|
+
export * from './resolve-one-c-stock-conflict-response.schema';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { OneCStockConflictLineActionEnum } from '../../../enum/one-c-stock-conflict-line-action.enum';
|
|
3
|
+
|
|
4
|
+
// Решение по строке: REDUCE — до quantity (меньше текущего, не меньше 1), REMOVE — удалить, KEEP — оставить.
|
|
5
|
+
export const OneCStockConflictDecisionSchema = z
|
|
6
|
+
.object({
|
|
7
|
+
orderProductUUID: z.string(),
|
|
8
|
+
action: z.nativeEnum(OneCStockConflictLineActionEnum),
|
|
9
|
+
quantity: z.number().int().min(1).optional(),
|
|
10
|
+
})
|
|
11
|
+
.refine(decision => decision.action !== OneCStockConflictLineActionEnum.REDUCE || decision.quantity !== undefined, {
|
|
12
|
+
message: 'quantity is required for REDUCE',
|
|
13
|
+
path: ['quantity'],
|
|
14
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { OneCStockConflictLineRestrictionEnum } from '../../../enum/one-c-stock-conflict-line-restriction.enum';
|
|
3
|
+
import { OrderStatusEnum } from '../../../enum/order-status.enum';
|
|
4
|
+
|
|
5
|
+
// Строка заказа, держащая резерв товара конфликта. restriction != null — менять из панели нельзя.
|
|
6
|
+
export const OneCStockConflictLineSchema = z.object({
|
|
7
|
+
orderProductUUID: z.string(),
|
|
8
|
+
orderUUID: z.string(),
|
|
9
|
+
orderId: z.number().int(),
|
|
10
|
+
orderStatus: z.nativeEnum(OrderStatusEnum),
|
|
11
|
+
orderCreatedAt: z.string().datetime(),
|
|
12
|
+
clientUUID: z.string(),
|
|
13
|
+
clientName: z.string(),
|
|
14
|
+
quantity: z.number().int(),
|
|
15
|
+
restriction: z.nativeEnum(OneCStockConflictLineRestrictionEnum).nullable(),
|
|
16
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { OneCStockConflictLineSchema } from './one-c-stock-conflict-line.schema';
|
|
3
|
+
import { OneCStockConflictSchema } from './one-c-stock-conflict.schema';
|
|
4
|
+
|
|
5
|
+
// Предпросмотр решения: строки — сначала корзины, затем заказы от новых к старым. previewToken передаётся в применение:
|
|
6
|
+
// если снимок остатка или строки изменились, применение ответит «пересчитайте».
|
|
7
|
+
export const OneCStockConflictPreviewSchema = z.object({
|
|
8
|
+
conflict: OneCStockConflictSchema,
|
|
9
|
+
stockSnapshotFormedAt: z.string().datetime().nullable(),
|
|
10
|
+
lines: z.array(OneCStockConflictLineSchema),
|
|
11
|
+
previewToken: z.string(),
|
|
12
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { OneCStockConflictStatusEnum } from '../../../enum/one-c-stock-conflict-status.enum';
|
|
3
|
+
|
|
4
|
+
// Итог решения: оставшаяся недостача принята (ACKNOWLEDGED) или её нет (RESOLVED). balance — доступный остаток
|
|
5
|
+
// после пересчёта; null — строки не менялись (только подтверждение недостачи), пересчёта не было.
|
|
6
|
+
export const OneCStockConflictResolutionSchema = z.object({
|
|
7
|
+
status: z.nativeEnum(OneCStockConflictStatusEnum),
|
|
8
|
+
shortage: z.string(),
|
|
9
|
+
balance: z.number().int().nullable(),
|
|
10
|
+
changedLines: z.number().int(),
|
|
11
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { OneCStockConflictDecisionSchema } from './one-c-stock-conflict-decision.schema';
|
|
3
|
+
|
|
4
|
+
// Строки, которых нет в decisions, остаются как есть. Пустой список — «оставить всё»: принять текущую недостачу.
|
|
5
|
+
export const ResolveOneCStockConflictRequestSchema = z.object({
|
|
6
|
+
previewToken: z.string().min(1),
|
|
7
|
+
decisions: z.array(OneCStockConflictDecisionSchema).max(500),
|
|
8
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { OneCStockConflictResolutionSchema } from './one-c-stock-conflict-resolution.schema';
|
|
3
|
+
|
|
4
|
+
export const ResolveOneCStockConflictResponseSchema = z.object({
|
|
5
|
+
message: z.string().optional(),
|
|
6
|
+
data: OneCStockConflictResolutionSchema,
|
|
7
|
+
});
|