@floristcloud/api-lib 1.2.115 → 1.2.117
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/index.js +1 -0
- package/build/commands/report/get-write-off-summary.query.js +82 -0
- package/build/commands/report/index.js +1 -0
- package/build/commands/transfer-document/create-transfer-document.command.js +31 -0
- package/build/commands/transfer-document/delete-transfer-document.command.js +26 -0
- package/build/commands/transfer-document/get-transfer-document-list.query.js +23 -0
- package/build/commands/transfer-document/get-transfer-document.query.js +15 -0
- package/build/commands/transfer-document/index.js +21 -0
- package/build/commands/transfer-document/issue-transfer-document.command.js +17 -0
- package/build/constant/error-i18n-key.js +1 -0
- package/build/constant/error.js +54 -0
- package/build/constant/index.js +2 -0
- package/build/constant/okei.js +16 -0
- package/build/constant/oksm.js +72 -0
- package/build/constant/report.constant.js +8 -1
- package/build/enum/index.js +5 -0
- package/build/enum/invoice-product-field.enum.js +18 -0
- package/build/enum/transfer-document-item-kind.enum.js +15 -0
- package/build/enum/transfer-document-kind.enum.js +9 -0
- package/build/enum/transfer-document-state.enum.js +8 -0
- package/build/enum/write-off-report-date-basis.enum.js +18 -0
- package/build/schemas/index.js +2 -0
- package/build/schemas/settings/settings.schema.js +37 -0
- package/build/schemas/transfer-document/transfer-document-detailed.schema.js +37 -0
- package/build/schemas/transfer-document/transfer-document.schema.js +42 -0
- package/commands/index.ts +1 -0
- package/commands/report/get-write-off-summary.query.ts +90 -0
- package/commands/report/index.ts +1 -0
- package/commands/transfer-document/create-transfer-document.command.ts +34 -0
- package/commands/transfer-document/delete-transfer-document.command.ts +28 -0
- package/commands/transfer-document/get-transfer-document-list.query.ts +25 -0
- package/commands/transfer-document/get-transfer-document.query.ts +17 -0
- package/commands/transfer-document/index.ts +5 -0
- package/commands/transfer-document/issue-transfer-document.command.ts +19 -0
- package/constant/error-i18n-key.ts +1 -0
- package/constant/error.ts +54 -0
- package/constant/index.ts +2 -0
- package/constant/okei.ts +14 -0
- package/constant/oksm.ts +69 -0
- package/constant/report.constant.ts +9 -0
- package/enum/index.ts +5 -0
- package/enum/invoice-product-field.enum.ts +14 -0
- package/enum/transfer-document-item-kind.enum.ts +11 -0
- package/enum/transfer-document-kind.enum.ts +5 -0
- package/enum/transfer-document-state.enum.ts +4 -0
- package/enum/write-off-report-date-basis.enum.ts +14 -0
- package/package.json +1 -1
- package/schemas/index.ts +2 -0
- package/schemas/settings/settings.schema.ts +38 -0
- package/schemas/transfer-document/transfer-document-detailed.schema.ts +36 -0
- package/schemas/transfer-document/transfer-document.schema.ts +41 -0
package/build/commands/index.js
CHANGED
|
@@ -83,3 +83,4 @@ Object.defineProperty(exports, "CreateWsTicketContractCommand", { enumerable: tr
|
|
|
83
83
|
var validate_ws_ticket_s2s_query_1 = require("./session/validate-ws-ticket-s2s.query");
|
|
84
84
|
Object.defineProperty(exports, "ValidateWsTicketS2SContractQuery", { enumerable: true, get: function () { return validate_ws_ticket_s2s_query_1.ValidateWsTicketS2SContractQuery; } });
|
|
85
85
|
__exportStar(require("./consignment-transfer"), exports);
|
|
86
|
+
__exportStar(require("./transfer-document"), exports);
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetWriteOffSummaryContractQuery = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const date_helper_1 = require("../../helpers/date.helper");
|
|
6
|
+
const money_schema_1 = require("../../schemas/money.schema");
|
|
7
|
+
const write_off_report_date_basis_enum_1 = require("../../enum/write-off-report-date-basis.enum");
|
|
8
|
+
const report_constant_1 = require("../../constant/report.constant");
|
|
9
|
+
const GetWriteOffSummaryRequestSchema = zod_1.z
|
|
10
|
+
.object({
|
|
11
|
+
startDate: zod_1.z.coerce.date(),
|
|
12
|
+
endDate: zod_1.z.coerce.date(),
|
|
13
|
+
dateBasis: zod_1.z.nativeEnum(write_off_report_date_basis_enum_1.WriteOffReportDateBasisEnum).default(write_off_report_date_basis_enum_1.WriteOffReportDateBasisEnum.WRITE_OFF_DATE),
|
|
14
|
+
// Тот же формат, что в ReportOrderFilterSchema: CSV или повтор параметра. Применяется
|
|
15
|
+
// только к разрезу по клиентам — у складских списаний клиента нет.
|
|
16
|
+
excludeClientUUID: zod_1.z
|
|
17
|
+
.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())])
|
|
18
|
+
.transform(value => (Array.isArray(value) ? value : value.split(',')).map(item => item.trim()).filter(Boolean))
|
|
19
|
+
.pipe(zod_1.z.array(zod_1.z.string().uuid()).max(report_constant_1.REPORT_EXCLUDE_CLIENT_LIMIT))
|
|
20
|
+
.optional(),
|
|
21
|
+
clientLimit: zod_1.z.coerce
|
|
22
|
+
.number()
|
|
23
|
+
.int()
|
|
24
|
+
.positive()
|
|
25
|
+
.max(report_constant_1.REPORT_WRITE_OFF_CLIENT_LIMIT_MAX)
|
|
26
|
+
.default(report_constant_1.REPORT_WRITE_OFF_CLIENT_LIMIT_DEFAULT),
|
|
27
|
+
})
|
|
28
|
+
.refine(value => (0, date_helper_1.dateRangeCheck)(value.startDate, value.endDate), {
|
|
29
|
+
message: 'validation.dateRange',
|
|
30
|
+
path: ['endDate', 'startDate'],
|
|
31
|
+
})
|
|
32
|
+
.refine(value => (0, date_helper_1.isStatementPeriodWithinLimit)(value.startDate, value.endDate), {
|
|
33
|
+
message: 'validation.reportPeriodMax',
|
|
34
|
+
path: ['endDate', 'startDate'],
|
|
35
|
+
});
|
|
36
|
+
const WriteOffSummaryReasonRowSchema = zod_1.z.object({
|
|
37
|
+
// Свободный текст из справочника причин, схлопнут только по краевым пробелам (TRIM).
|
|
38
|
+
// Регистр не нормализуем: «Брак» и «брак» останутся разными строками.
|
|
39
|
+
reason: zod_1.z.string(),
|
|
40
|
+
units: zod_1.z.number(),
|
|
41
|
+
cost: money_schema_1.MoneySchema,
|
|
42
|
+
});
|
|
43
|
+
const WriteOffSummaryClientRowSchema = zod_1.z.object({
|
|
44
|
+
clientUUID: zod_1.z.string(),
|
|
45
|
+
clientName: zod_1.z.string(),
|
|
46
|
+
orderCount: zod_1.z.number(),
|
|
47
|
+
units: zod_1.z.number(),
|
|
48
|
+
cost: money_schema_1.MoneySchema,
|
|
49
|
+
orderAmount: money_schema_1.MoneySchema,
|
|
50
|
+
});
|
|
51
|
+
const GetWriteOffSummaryResponseSchema = zod_1.z.object({
|
|
52
|
+
message: zod_1.z.string().optional(),
|
|
53
|
+
data: zod_1.z.object({
|
|
54
|
+
// totals = warehouse + byClient, считается по всем строкам — усечение `clientLimit`
|
|
55
|
+
// на итоги не влияет.
|
|
56
|
+
totals: zod_1.z.object({
|
|
57
|
+
units: zod_1.z.number(),
|
|
58
|
+
cost: money_schema_1.MoneySchema,
|
|
59
|
+
}),
|
|
60
|
+
// Списания без заказа: до этого отчёта они не попадали ни в одну сводку.
|
|
61
|
+
warehouse: zod_1.z.object({
|
|
62
|
+
units: zod_1.z.number(),
|
|
63
|
+
cost: money_schema_1.MoneySchema,
|
|
64
|
+
byReason: WriteOffSummaryReasonRowSchema.array(),
|
|
65
|
+
}),
|
|
66
|
+
// Списания по заказу: клиенту они уже вернулись на баланс, то есть это выручка,
|
|
67
|
+
// которой по факту не было.
|
|
68
|
+
byClient: zod_1.z.object({
|
|
69
|
+
units: zod_1.z.number(),
|
|
70
|
+
cost: money_schema_1.MoneySchema,
|
|
71
|
+
orderAmount: money_schema_1.MoneySchema,
|
|
72
|
+
rows: WriteOffSummaryClientRowSchema.array(),
|
|
73
|
+
// Сколько клиентов всего — чтобы отличить усечённый ответ от полного.
|
|
74
|
+
rowsTotal: zod_1.z.number(),
|
|
75
|
+
}),
|
|
76
|
+
}),
|
|
77
|
+
});
|
|
78
|
+
var GetWriteOffSummaryContractQuery;
|
|
79
|
+
(function (GetWriteOffSummaryContractQuery) {
|
|
80
|
+
GetWriteOffSummaryContractQuery.RequestSchema = GetWriteOffSummaryRequestSchema;
|
|
81
|
+
GetWriteOffSummaryContractQuery.ResponseSchema = GetWriteOffSummaryResponseSchema;
|
|
82
|
+
})(GetWriteOffSummaryContractQuery || (exports.GetWriteOffSummaryContractQuery = GetWriteOffSummaryContractQuery = {}));
|
|
@@ -28,6 +28,7 @@ __exportStar(require("./export-client-statement.query"), exports);
|
|
|
28
28
|
__exportStar(require("./get-report-by-client-weeks.query"), exports);
|
|
29
29
|
__exportStar(require("./get-daily-orders-summary.query"), exports);
|
|
30
30
|
__exportStar(require("./get-cash-flow.query"), exports);
|
|
31
|
+
__exportStar(require("./get-write-off-summary.query"), exports);
|
|
31
32
|
__exportStar(require("./get-inventory-stock.query"), exports);
|
|
32
33
|
__exportStar(require("./get-inventory-turnover.query"), exports);
|
|
33
34
|
__exportStar(require("./get-sales-by-client.query"), exports);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateTransferDocumentContractCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const transfer_document_detailed_schema_1 = require("../../schemas/transfer-document/transfer-document-detailed.schema");
|
|
6
|
+
// Потолок числа заказов в одном документе — защита от абсурдного запроса, а не бизнес-правило.
|
|
7
|
+
// Тот же порядок, что у счёта: сто заказов в одной отгрузке клиенту не встречаются, а документ
|
|
8
|
+
// такого размера ещё собирается и читается.
|
|
9
|
+
const MAX_TRANSFER_DOCUMENT_ORDER_COUNT = 100;
|
|
10
|
+
/**
|
|
11
|
+
* Документ выпускается по отгруженным заказам одного клиента.
|
|
12
|
+
*
|
|
13
|
+
* `documentDate` — дата составления (строка 1 формы). `shipmentDate` — дата передачи (строка [11]);
|
|
14
|
+
* не передана — берём максимальную `completedAt` из заказов, а легаси-заказу без даты её же
|
|
15
|
+
* записываем обратно, иначе заказ и документ разъедутся.
|
|
16
|
+
*/
|
|
17
|
+
const CreateTransferDocumentRequestSchema = zod_1.z.object({
|
|
18
|
+
clientUUID: zod_1.z.uuid(),
|
|
19
|
+
orderUUIDs: zod_1.z.uuid().array().min(1).max(MAX_TRANSFER_DOCUMENT_ORDER_COUNT),
|
|
20
|
+
documentDate: zod_1.z.coerce.date(),
|
|
21
|
+
shipmentDate: zod_1.z.coerce.date().optional(),
|
|
22
|
+
});
|
|
23
|
+
const CreateTransferDocumentResponseSchema = zod_1.z.object({
|
|
24
|
+
message: zod_1.z.string().optional(),
|
|
25
|
+
data: transfer_document_detailed_schema_1.TransferDocumentDetailedSchema,
|
|
26
|
+
});
|
|
27
|
+
var CreateTransferDocumentContractCommand;
|
|
28
|
+
(function (CreateTransferDocumentContractCommand) {
|
|
29
|
+
CreateTransferDocumentContractCommand.RequestSchema = CreateTransferDocumentRequestSchema;
|
|
30
|
+
CreateTransferDocumentContractCommand.ResponseSchema = CreateTransferDocumentResponseSchema;
|
|
31
|
+
})(CreateTransferDocumentContractCommand || (exports.CreateTransferDocumentContractCommand = CreateTransferDocumentContractCommand = {}));
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeleteTransferDocumentContractCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const query_boolean_helper_1 = require("../../helpers/query-boolean.helper");
|
|
6
|
+
/**
|
|
7
|
+
* Удаление документа. Заказы отвязываются и снова становятся редактируемыми, номер сгорает —
|
|
8
|
+
* повтор получит следующий, а не дубль к тому, что уже лежит у контрагента.
|
|
9
|
+
*
|
|
10
|
+
* `force` приходит в query-строке и нужен только для выданного (`ISSUED`) документа: без него
|
|
11
|
+
* такое удаление отклоняется, чтобы фронт успел показать предупреждение.
|
|
12
|
+
*/
|
|
13
|
+
const DeleteTransferDocumentRequestSchema = zod_1.z.object({
|
|
14
|
+
force: query_boolean_helper_1.queryBooleanSchema,
|
|
15
|
+
});
|
|
16
|
+
const DeleteTransferDocumentResponseSchema = zod_1.z.object({
|
|
17
|
+
message: zod_1.z.string().optional(),
|
|
18
|
+
data: zod_1.z.object({
|
|
19
|
+
success: zod_1.z.boolean(),
|
|
20
|
+
}),
|
|
21
|
+
});
|
|
22
|
+
var DeleteTransferDocumentContractCommand;
|
|
23
|
+
(function (DeleteTransferDocumentContractCommand) {
|
|
24
|
+
DeleteTransferDocumentContractCommand.RequestSchema = DeleteTransferDocumentRequestSchema;
|
|
25
|
+
DeleteTransferDocumentContractCommand.ResponseSchema = DeleteTransferDocumentResponseSchema;
|
|
26
|
+
})(DeleteTransferDocumentContractCommand || (exports.DeleteTransferDocumentContractCommand = DeleteTransferDocumentContractCommand = {}));
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetTransferDocumentListContractQuery = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const transfer_document_schema_1 = require("../../schemas/transfer-document/transfer-document.schema");
|
|
6
|
+
const GetTransferDocumentListRequestSchema = zod_1.z.object({
|
|
7
|
+
page: zod_1.z.string().transform(value => Number(value) || 1),
|
|
8
|
+
count: zod_1.z.string().transform(value => Number(value) || 10),
|
|
9
|
+
searchQuery: zod_1.z.string().optional(),
|
|
10
|
+
clientUUID: zod_1.z.uuid().optional(),
|
|
11
|
+
});
|
|
12
|
+
const GetTransferDocumentListResponseSchema = zod_1.z.object({
|
|
13
|
+
message: zod_1.z.string().optional(),
|
|
14
|
+
data: zod_1.z.object({
|
|
15
|
+
list: transfer_document_schema_1.TransferDocumentSchema.array(),
|
|
16
|
+
total: zod_1.z.number(),
|
|
17
|
+
}),
|
|
18
|
+
});
|
|
19
|
+
var GetTransferDocumentListContractQuery;
|
|
20
|
+
(function (GetTransferDocumentListContractQuery) {
|
|
21
|
+
GetTransferDocumentListContractQuery.RequestSchema = GetTransferDocumentListRequestSchema;
|
|
22
|
+
GetTransferDocumentListContractQuery.ResponseSchema = GetTransferDocumentListResponseSchema;
|
|
23
|
+
})(GetTransferDocumentListContractQuery || (exports.GetTransferDocumentListContractQuery = GetTransferDocumentListContractQuery = {}));
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetTransferDocumentContractQuery = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const transfer_document_detailed_schema_1 = require("../../schemas/transfer-document/transfer-document-detailed.schema");
|
|
6
|
+
const GetTransferDocumentRequestSchema = zod_1.z.object({});
|
|
7
|
+
const GetTransferDocumentResponseSchema = zod_1.z.object({
|
|
8
|
+
message: zod_1.z.string().optional(),
|
|
9
|
+
data: transfer_document_detailed_schema_1.TransferDocumentDetailedSchema,
|
|
10
|
+
});
|
|
11
|
+
var GetTransferDocumentContractQuery;
|
|
12
|
+
(function (GetTransferDocumentContractQuery) {
|
|
13
|
+
GetTransferDocumentContractQuery.RequestSchema = GetTransferDocumentRequestSchema;
|
|
14
|
+
GetTransferDocumentContractQuery.ResponseSchema = GetTransferDocumentResponseSchema;
|
|
15
|
+
})(GetTransferDocumentContractQuery || (exports.GetTransferDocumentContractQuery = GetTransferDocumentContractQuery = {}));
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./create-transfer-document.command"), exports);
|
|
18
|
+
__exportStar(require("./get-transfer-document.query"), exports);
|
|
19
|
+
__exportStar(require("./get-transfer-document-list.query"), exports);
|
|
20
|
+
__exportStar(require("./issue-transfer-document.command"), exports);
|
|
21
|
+
__exportStar(require("./delete-transfer-document.command"), exports);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IssueTransferDocumentContractCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const transfer_document_detailed_schema_1 = require("../../schemas/transfer-document/transfer-document-detailed.schema");
|
|
6
|
+
// Перевод документа в состояние ISSUED — «передан контрагенту». Дальше он удаляется только
|
|
7
|
+
// с явным подтверждением: восстановить его нельзя, а номер сгорает.
|
|
8
|
+
const IssueTransferDocumentRequestSchema = zod_1.z.object({});
|
|
9
|
+
const IssueTransferDocumentResponseSchema = zod_1.z.object({
|
|
10
|
+
message: zod_1.z.string().optional(),
|
|
11
|
+
data: transfer_document_detailed_schema_1.TransferDocumentDetailedSchema,
|
|
12
|
+
});
|
|
13
|
+
var IssueTransferDocumentContractCommand;
|
|
14
|
+
(function (IssueTransferDocumentContractCommand) {
|
|
15
|
+
IssueTransferDocumentContractCommand.RequestSchema = IssueTransferDocumentRequestSchema;
|
|
16
|
+
IssueTransferDocumentContractCommand.ResponseSchema = IssueTransferDocumentResponseSchema;
|
|
17
|
+
})(IssueTransferDocumentContractCommand || (exports.IssueTransferDocumentContractCommand = IssueTransferDocumentContractCommand = {}));
|
|
@@ -11,6 +11,7 @@ exports.ErrorI18nKey = {
|
|
|
11
11
|
mergeOrderHasWriteOffs: 'mergeOrder.hasWriteOffs',
|
|
12
12
|
mergeOrderHasDistribution: 'mergeOrder.hasDistribution',
|
|
13
13
|
mergeOrderHasPaymentInvoice: 'mergeOrder.hasPaymentInvoice',
|
|
14
|
+
mergeOrderHasTransferDocument: 'mergeOrder.hasTransferDocument',
|
|
14
15
|
mergeOrderPaymentsTransfer: 'mergeOrder.paymentsTransfer',
|
|
15
16
|
mergeOrderDeliveryMerge: 'mergeOrder.deliveryMerge',
|
|
16
17
|
mergeOrderDeliveryTransfer: 'mergeOrder.deliveryTransfer',
|
package/build/constant/error.js
CHANGED
|
@@ -395,6 +395,13 @@ exports.ERRORS = {
|
|
|
395
395
|
message: 'Order not deleted, the order is included in a payment invoice',
|
|
396
396
|
httpCode: 409,
|
|
397
397
|
},
|
|
398
|
+
// Отказ общий для удаления заказа и для вывода его из COMPLETED, поэтому формулировка
|
|
399
|
+
// без привязки к действию: «not deleted» вводило бы в заблуждение при смене статуса.
|
|
400
|
+
ORDER_IN_TRANSFER_DOCUMENT: {
|
|
401
|
+
code: 'O059',
|
|
402
|
+
message: 'The order is included in a transfer document and cannot be changed or deleted',
|
|
403
|
+
httpCode: 409,
|
|
404
|
+
},
|
|
398
405
|
ORDER_SPLIT_NOT_COMPLETELY_ERROR: { code: 'O019', message: 'Error splitting orders, not all orders were split', httpCode: 500 },
|
|
399
406
|
ORDER_TOTAL_COST_NEGATIVE: { code: 'O020', message: 'Order total cost is negative', httpCode: 400 },
|
|
400
407
|
ORDER_SUBTOTAL_NEGATIVE: { code: 'O021', message: 'Order subtotal is negative', httpCode: 400 },
|
|
@@ -409,6 +416,7 @@ exports.ERRORS = {
|
|
|
409
416
|
ORDER_MERGE_HAS_WRITE_OFFS: { code: 'O031', message: 'Order has write-offs', httpCode: 400 },
|
|
410
417
|
ORDER_MERGE_HAS_DISTRIBUTION: { code: 'O032', message: 'Order has products with distribution', httpCode: 400 },
|
|
411
418
|
ORDER_MERGE_HAS_PAYMENT_INVOICE: { code: 'O040', message: 'Order is included in a payment invoice', httpCode: 400 },
|
|
419
|
+
ORDER_MERGE_HAS_TRANSFER_DOCUMENT: { code: 'O060', message: 'Order is included in a transfer document', httpCode: 400 },
|
|
412
420
|
ORDER_MERGE_BALANCE_STATUS_NOT_ALLOWED: {
|
|
413
421
|
code: 'O033',
|
|
414
422
|
message: 'Order status is balance affecting, merge not allowed',
|
|
@@ -1138,6 +1146,7 @@ exports.ERRORS = {
|
|
|
1138
1146
|
REPORT_FETCH_FAILED: { code: 'REP001', message: 'Failed to fetch report', httpCode: 500 },
|
|
1139
1147
|
REPORT_EXPORT_FAILED: { code: 'REP002', message: 'Failed to export report', httpCode: 500 },
|
|
1140
1148
|
REPORT_NO_DATA: { code: 'REP003', message: 'No data available for the selected period', httpCode: 404 },
|
|
1149
|
+
WRITE_OFF_SUMMARY_REPORT_FAILED: { code: 'REP004', message: 'Failed to build write-off summary report', httpCode: 500 },
|
|
1141
1150
|
STATEMENT_PERIOD_TOO_LONG: { code: 'REP004', message: 'Statement period must not exceed 1 year', httpCode: 400 },
|
|
1142
1151
|
// PAYMENT INVOICE
|
|
1143
1152
|
PAYMENT_INVOICE_CREATE_FAILED: { code: 'PINV001', message: 'Failed to create payment invoice', httpCode: 500 },
|
|
@@ -1450,4 +1459,49 @@ exports.ERRORS = {
|
|
|
1450
1459
|
message: 'Failed to assign cash flow item to transactions',
|
|
1451
1460
|
httpCode: 500,
|
|
1452
1461
|
},
|
|
1462
|
+
TRANSFER_DOCUMENT_CREATE_FAILED: { code: 'TDOC001', message: 'Failed to create transfer document', httpCode: 500 },
|
|
1463
|
+
TRANSFER_DOCUMENT_NOT_FOUND: { code: 'TDOC002', message: 'Transfer document not found', httpCode: 404 },
|
|
1464
|
+
TRANSFER_DOCUMENT_FETCH_FAILED: { code: 'TDOC003', message: 'Failed to fetch transfer documents', httpCode: 500 },
|
|
1465
|
+
TRANSFER_DOCUMENT_DELETE_FAILED: { code: 'TDOC004', message: 'Failed to delete transfer document', httpCode: 500 },
|
|
1466
|
+
TRANSFER_DOCUMENT_ORDERS_REQUIRED: { code: 'TDOC005', message: 'At least one order is required', httpCode: 400 },
|
|
1467
|
+
TRANSFER_DOCUMENT_ORDERS_NOT_FOUND: {
|
|
1468
|
+
code: 'TDOC006',
|
|
1469
|
+
message: 'Some of the requested orders were not found for this client',
|
|
1470
|
+
httpCode: 404,
|
|
1471
|
+
},
|
|
1472
|
+
TRANSFER_DOCUMENT_ORDER_NOT_COMPLETED: {
|
|
1473
|
+
code: 'TDOC007',
|
|
1474
|
+
message: 'A transfer document can only be issued for completed orders',
|
|
1475
|
+
httpCode: 409,
|
|
1476
|
+
},
|
|
1477
|
+
TRANSFER_DOCUMENT_ORDER_ALREADY_ISSUED: {
|
|
1478
|
+
code: 'TDOC008',
|
|
1479
|
+
message: 'Some of the requested orders are already included in another transfer document',
|
|
1480
|
+
httpCode: 409,
|
|
1481
|
+
},
|
|
1482
|
+
TRANSFER_DOCUMENT_AMOUNT_INVALID: { code: 'TDOC009', message: 'Transfer document amount must be greater than zero', httpCode: 400 },
|
|
1483
|
+
TRANSFER_DOCUMENT_EXPORT_FAILED: { code: 'TDOC010', message: 'Failed to build transfer document file', httpCode: 500 },
|
|
1484
|
+
TRANSFER_DOCUMENT_VAT_NOT_SUPPORTED: {
|
|
1485
|
+
code: 'TDOC011',
|
|
1486
|
+
message: 'Transfer documents are only issued as an act (status 2); VAT payers are not supported yet',
|
|
1487
|
+
httpCode: 409,
|
|
1488
|
+
},
|
|
1489
|
+
// Реквизиты сторон проверяем до выпуска: движок считает пустое значение штатным и напечатал бы
|
|
1490
|
+
// документ без «Продавца», ИНН и подписи — недействительный, и компания узнала бы об этом
|
|
1491
|
+
// от контрагента. `errorData` перечисляет незаполненные поля, чтобы UI назвал их поимённо.
|
|
1492
|
+
TRANSFER_DOCUMENT_SELLER_REQUISITES_MISSING: {
|
|
1493
|
+
code: 'TDOC012',
|
|
1494
|
+
message: 'Seller requisites are not filled in company settings',
|
|
1495
|
+
httpCode: 400,
|
|
1496
|
+
},
|
|
1497
|
+
TRANSFER_DOCUMENT_BUYER_REQUISITES_MISSING: {
|
|
1498
|
+
code: 'TDOC014',
|
|
1499
|
+
message: 'Buyer requisites are not filled in the client legal profile',
|
|
1500
|
+
httpCode: 400,
|
|
1501
|
+
},
|
|
1502
|
+
TRANSFER_DOCUMENT_NUMBER_START_DECREASED: {
|
|
1503
|
+
code: 'TDOC013',
|
|
1504
|
+
message: 'Transfer document number start cannot be decreased',
|
|
1505
|
+
httpCode: 400,
|
|
1506
|
+
},
|
|
1453
1507
|
};
|
package/build/constant/index.js
CHANGED
|
@@ -21,5 +21,7 @@ __exportStar(require("./import.constant"), exports);
|
|
|
21
21
|
__exportStar(require("./validation-i18n-key"), exports);
|
|
22
22
|
__exportStar(require("./validation-i18n-message"), exports);
|
|
23
23
|
__exportStar(require("./report.constant"), exports);
|
|
24
|
+
__exportStar(require("./oksm"), exports);
|
|
25
|
+
__exportStar(require("./okei"), exports);
|
|
24
26
|
__exportStar(require("./contact-phone.constant"), exports);
|
|
25
27
|
__exportStar(require("./settings.constant"), exports);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OKEI_BY_SALES_UNIT = void 0;
|
|
4
|
+
const sales_unit_enum_1 = require("../enum/sales-unit.enum");
|
|
5
|
+
/**
|
|
6
|
+
* ОКЕИ (ОК 015-94) — общероссийский классификатор единиц измерения. Код идёт в графу 2 УПД,
|
|
7
|
+
* условное национальное обозначение — в графу 2а.
|
|
8
|
+
*
|
|
9
|
+
* Услуги и доставка печатаются как «шт»: отдельной единицы для услуги в ОКЕИ нет, а оставлять
|
|
10
|
+
* графы пустыми при статусе 1 нельзя.
|
|
11
|
+
*/
|
|
12
|
+
exports.OKEI_BY_SALES_UNIT = {
|
|
13
|
+
[sales_unit_enum_1.SalesUnitEnum.PIECE]: { code: '796', name: 'шт' },
|
|
14
|
+
[sales_unit_enum_1.SalesUnitEnum.PACK]: { code: '778', name: 'упак' },
|
|
15
|
+
[sales_unit_enum_1.SalesUnitEnum.BOX]: { code: '812', name: 'ящик' },
|
|
16
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OKSM = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* ОКСМ (ОК 025-2001) — общероссийский классификатор стран мира. Цифровой код идёт в графу 10
|
|
6
|
+
* УПД, краткое наименование — в графу 10а. Коды совпадают с ISO 3166-1 numeric.
|
|
7
|
+
*
|
|
8
|
+
* Список неполный намеренно: здесь страны происхождения, реально встречающиеся у цветочного опта,
|
|
9
|
+
* плюс основные торговые партнёры. Новая страна добавляется сюда, её написания — в OKSM_ALIAS.
|
|
10
|
+
*/
|
|
11
|
+
exports.OKSM = [
|
|
12
|
+
{ code: '643', name: 'Россия', alpha2: 'RU' },
|
|
13
|
+
{ code: '528', name: 'Нидерланды', alpha2: 'NL' },
|
|
14
|
+
{ code: '218', name: 'Эквадор', alpha2: 'EC' },
|
|
15
|
+
{ code: '170', name: 'Колумбия', alpha2: 'CO' },
|
|
16
|
+
{ code: '404', name: 'Кения', alpha2: 'KE' },
|
|
17
|
+
{ code: '231', name: 'Эфиопия', alpha2: 'ET' },
|
|
18
|
+
{ code: '834', name: 'Танзания', alpha2: 'TZ' },
|
|
19
|
+
{ code: '800', name: 'Уганда', alpha2: 'UG' },
|
|
20
|
+
{ code: '716', name: 'Зимбабве', alpha2: 'ZW' },
|
|
21
|
+
{ code: '710', name: 'Южная Африка', alpha2: 'ZA' },
|
|
22
|
+
{ code: '376', name: 'Израиль', alpha2: 'IL' },
|
|
23
|
+
{ code: '380', name: 'Италия', alpha2: 'IT' },
|
|
24
|
+
{ code: '792', name: 'Турция', alpha2: 'TR' },
|
|
25
|
+
{ code: '156', name: 'Китай', alpha2: 'CN' },
|
|
26
|
+
{ code: '764', name: 'Таиланд', alpha2: 'TH' },
|
|
27
|
+
{ code: '704', name: 'Вьетнам', alpha2: 'VN' },
|
|
28
|
+
{ code: '356', name: 'Индия', alpha2: 'IN' },
|
|
29
|
+
{ code: '144', name: 'Шри-Ланка', alpha2: 'LK' },
|
|
30
|
+
{ code: '458', name: 'Малайзия', alpha2: 'MY' },
|
|
31
|
+
{ code: '360', name: 'Индонезия', alpha2: 'ID' },
|
|
32
|
+
{ code: '188', name: 'Коста-Рика', alpha2: 'CR' },
|
|
33
|
+
{ code: '484', name: 'Мексика', alpha2: 'MX' },
|
|
34
|
+
{ code: '076', name: 'Бразилия', alpha2: 'BR' },
|
|
35
|
+
{ code: '604', name: 'Перу', alpha2: 'PE' },
|
|
36
|
+
{ code: '152', name: 'Чили', alpha2: 'CL' },
|
|
37
|
+
{ code: '840', name: 'Соединённые Штаты', alpha2: 'US' },
|
|
38
|
+
{ code: '554', name: 'Новая Зеландия', alpha2: 'NZ' },
|
|
39
|
+
{ code: '036', name: 'Австралия', alpha2: 'AU' },
|
|
40
|
+
{ code: '276', name: 'Германия', alpha2: 'DE' },
|
|
41
|
+
{ code: '616', name: 'Польша', alpha2: 'PL' },
|
|
42
|
+
{ code: '056', name: 'Бельгия', alpha2: 'BE' },
|
|
43
|
+
{ code: '250', name: 'Франция', alpha2: 'FR' },
|
|
44
|
+
{ code: '724', name: 'Испания', alpha2: 'ES' },
|
|
45
|
+
{ code: '620', name: 'Португалия', alpha2: 'PT' },
|
|
46
|
+
{ code: '208', name: 'Дания', alpha2: 'DK' },
|
|
47
|
+
{ code: '246', name: 'Финляндия', alpha2: 'FI' },
|
|
48
|
+
{ code: '752', name: 'Швеция', alpha2: 'SE' },
|
|
49
|
+
{ code: '578', name: 'Норвегия', alpha2: 'NO' },
|
|
50
|
+
{ code: '826', name: 'Соединённое Королевство', alpha2: 'GB' },
|
|
51
|
+
{ code: '756', name: 'Швейцария', alpha2: 'CH' },
|
|
52
|
+
{ code: '040', name: 'Австрия', alpha2: 'AT' },
|
|
53
|
+
{ code: '203', name: 'Чехия', alpha2: 'CZ' },
|
|
54
|
+
{ code: '440', name: 'Литва', alpha2: 'LT' },
|
|
55
|
+
{ code: '428', name: 'Латвия', alpha2: 'LV' },
|
|
56
|
+
{ code: '233', name: 'Эстония', alpha2: 'EE' },
|
|
57
|
+
{ code: '112', name: 'Беларусь', alpha2: 'BY' },
|
|
58
|
+
{ code: '398', name: 'Казахстан', alpha2: 'KZ' },
|
|
59
|
+
{ code: '860', name: 'Узбекистан', alpha2: 'UZ' },
|
|
60
|
+
{ code: '051', name: 'Армения', alpha2: 'AM' },
|
|
61
|
+
{ code: '031', name: 'Азербайджан', alpha2: 'AZ' },
|
|
62
|
+
{ code: '268', name: 'Грузия', alpha2: 'GE' },
|
|
63
|
+
{ code: '498', name: 'Молдова', alpha2: 'MD' },
|
|
64
|
+
{ code: '804', name: 'Украина', alpha2: 'UA' },
|
|
65
|
+
{ code: '818', name: 'Египет', alpha2: 'EG' },
|
|
66
|
+
{ code: '504', name: 'Марокко', alpha2: 'MA' },
|
|
67
|
+
{ code: '788', name: 'Тунис', alpha2: 'TN' },
|
|
68
|
+
{ code: '784', name: 'Объединённые Арабские Эмираты', alpha2: 'AE' },
|
|
69
|
+
{ code: '364', name: 'Иран', alpha2: 'IR' },
|
|
70
|
+
{ code: '392', name: 'Япония', alpha2: 'JP' },
|
|
71
|
+
{ code: '410', name: 'Республика Корея', alpha2: 'KR' },
|
|
72
|
+
];
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.REPORT_EXCLUDE_CLIENT_LIMIT = void 0;
|
|
3
|
+
exports.REPORT_WRITE_OFF_CLIENT_LIMIT_MAX = exports.REPORT_WRITE_OFF_CLIENT_LIMIT_DEFAULT = exports.REPORT_EXCLUDE_CLIENT_LIMIT = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Потолок списка исключаемых из отчёта клиентов. Список едет в query-строке и дальше в SQL
|
|
6
6
|
* как `= ANY($n::text[])`, поэтому ограничение защищает и от переполнения URL, и от запроса
|
|
7
7
|
* с массивом в тысячи элементов.
|
|
8
8
|
*/
|
|
9
9
|
exports.REPORT_EXCLUDE_CLIENT_LIMIT = 500;
|
|
10
|
+
/**
|
|
11
|
+
* Сколько клиентов отдаётся в разрезе списаний по умолчанию и максимум. Итоги считаются по всем
|
|
12
|
+
* строкам независимо от лимита, поэтому усечение влияет только на список; отличить усечённый
|
|
13
|
+
* ответ от полного позволяет `rowsTotal`.
|
|
14
|
+
*/
|
|
15
|
+
exports.REPORT_WRITE_OFF_CLIENT_LIMIT_DEFAULT = 50;
|
|
16
|
+
exports.REPORT_WRITE_OFF_CLIENT_LIMIT_MAX = 500;
|
package/build/enum/index.js
CHANGED
|
@@ -116,3 +116,8 @@ __exportStar(require("./payment-invoice-status.enum"), exports);
|
|
|
116
116
|
__exportStar(require("./order-by.enum"), exports);
|
|
117
117
|
__exportStar(require("./report-sort-by.enum"), exports);
|
|
118
118
|
__exportStar(require("./report-order-date-basis.enum"), exports);
|
|
119
|
+
__exportStar(require("./invoice-product-field.enum"), exports);
|
|
120
|
+
__exportStar(require("./transfer-document-state.enum"), exports);
|
|
121
|
+
__exportStar(require("./transfer-document-kind.enum"), exports);
|
|
122
|
+
__exportStar(require("./transfer-document-item-kind.enum"), exports);
|
|
123
|
+
__exportStar(require("./write-off-report-date-basis.enum"), exports);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvoiceProductFieldEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Поля товара, из которых собирается его наименование в документах (накладная, УПД).
|
|
6
|
+
* Порядок значений в настройке = порядок элементов в строке.
|
|
7
|
+
*/
|
|
8
|
+
var InvoiceProductFieldEnum;
|
|
9
|
+
(function (InvoiceProductFieldEnum) {
|
|
10
|
+
InvoiceProductFieldEnum["CATEGORY"] = "CATEGORY";
|
|
11
|
+
InvoiceProductFieldEnum["NAME"] = "NAME";
|
|
12
|
+
InvoiceProductFieldEnum["GROWER"] = "GROWER";
|
|
13
|
+
InvoiceProductFieldEnum["SIZE"] = "SIZE";
|
|
14
|
+
InvoiceProductFieldEnum["SIZE2"] = "SIZE2";
|
|
15
|
+
InvoiceProductFieldEnum["COLOR"] = "COLOR";
|
|
16
|
+
InvoiceProductFieldEnum["COUNTRY"] = "COUNTRY";
|
|
17
|
+
InvoiceProductFieldEnum["ARTICLE"] = "ARTICLE";
|
|
18
|
+
})(InvoiceProductFieldEnum || (exports.InvoiceProductFieldEnum = InvoiceProductFieldEnum = {}));
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransferDocumentItemKindEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Природа строки табличной части УПД.
|
|
6
|
+
*
|
|
7
|
+
* По ней билдер понимает, где ставить прочерки в графах страны происхождения и номера ДТ:
|
|
8
|
+
* у услуги и доставки их нет.
|
|
9
|
+
*/
|
|
10
|
+
var TransferDocumentItemKindEnum;
|
|
11
|
+
(function (TransferDocumentItemKindEnum) {
|
|
12
|
+
TransferDocumentItemKindEnum["PRODUCT"] = "PRODUCT";
|
|
13
|
+
TransferDocumentItemKindEnum["SERVICE"] = "SERVICE";
|
|
14
|
+
TransferDocumentItemKindEnum["DELIVERY"] = "DELIVERY";
|
|
15
|
+
})(TransferDocumentItemKindEnum || (exports.TransferDocumentItemKindEnum = TransferDocumentItemKindEnum = {}));
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransferDocumentKindEnum = void 0;
|
|
4
|
+
var TransferDocumentKindEnum;
|
|
5
|
+
(function (TransferDocumentKindEnum) {
|
|
6
|
+
TransferDocumentKindEnum["PRIMARY"] = "PRIMARY";
|
|
7
|
+
TransferDocumentKindEnum["REVISION"] = "REVISION";
|
|
8
|
+
TransferDocumentKindEnum["CORRECTION"] = "CORRECTION";
|
|
9
|
+
})(TransferDocumentKindEnum || (exports.TransferDocumentKindEnum = TransferDocumentKindEnum = {}));
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransferDocumentStateEnum = void 0;
|
|
4
|
+
var TransferDocumentStateEnum;
|
|
5
|
+
(function (TransferDocumentStateEnum) {
|
|
6
|
+
TransferDocumentStateEnum["DRAFT"] = "DRAFT";
|
|
7
|
+
TransferDocumentStateEnum["ISSUED"] = "ISSUED";
|
|
8
|
+
})(TransferDocumentStateEnum || (exports.TransferDocumentStateEnum = TransferDocumentStateEnum = {}));
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WriteOffReportDateBasisEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* По какой дате списание попадает в период отчёта.
|
|
6
|
+
*
|
|
7
|
+
* `WRITE_OFF_DATE` — дата самого списания. На ней живёт блок списаний вкладки «По продажам»:
|
|
8
|
+
* выручка там считается по дате заказа, поэтому списание, оформленное в июле по июньскому
|
|
9
|
+
* заказу, уменьшит операционную прибыль июля. Это осознанное допущение, оно подписано в UI.
|
|
10
|
+
*
|
|
11
|
+
* `CONSIGNMENT_DELIVERY_DATE` — дата поставки партии. На ней построен `/report/profit`, поэтому
|
|
12
|
+
* на этой оси итоги сходятся с его строками «Всего списано» и «Списано по заказам».
|
|
13
|
+
*/
|
|
14
|
+
var WriteOffReportDateBasisEnum;
|
|
15
|
+
(function (WriteOffReportDateBasisEnum) {
|
|
16
|
+
WriteOffReportDateBasisEnum["WRITE_OFF_DATE"] = "WRITE_OFF_DATE";
|
|
17
|
+
WriteOffReportDateBasisEnum["CONSIGNMENT_DELIVERY_DATE"] = "CONSIGNMENT_DELIVERY_DATE";
|
|
18
|
+
})(WriteOffReportDateBasisEnum || (exports.WriteOffReportDateBasisEnum = WriteOffReportDateBasisEnum = {}));
|
package/build/schemas/index.js
CHANGED
|
@@ -97,3 +97,5 @@ __exportStar(require("./money.schema"), exports);
|
|
|
97
97
|
__exportStar(require("./non-negative-money.schema"), exports);
|
|
98
98
|
__exportStar(require("./positive-money.schema"), exports);
|
|
99
99
|
__exportStar(require("./report/report-order-filter.schema"), exports);
|
|
100
|
+
__exportStar(require("./transfer-document/transfer-document.schema"), exports);
|
|
101
|
+
__exportStar(require("./transfer-document/transfer-document-detailed.schema"), exports);
|
|
@@ -97,6 +97,18 @@ exports.SettingsSchema = zod_1.z.object({
|
|
|
97
97
|
bankBic: zod_1.z.string().nullable(),
|
|
98
98
|
correspondentAccount: zod_1.z.string().nullable(),
|
|
99
99
|
invoiceNumberPrefix: zod_1.z.string(),
|
|
100
|
+
kpp: zod_1.z.string().nullable(),
|
|
101
|
+
ogrn: zod_1.z.string().nullable(),
|
|
102
|
+
signatoryName: zod_1.z.string().nullable(),
|
|
103
|
+
signatoryPosition: zod_1.z.string().nullable(),
|
|
104
|
+
accountantName: zod_1.z.string().nullable(),
|
|
105
|
+
responsibleName: zod_1.z.string().nullable(),
|
|
106
|
+
responsiblePosition: zod_1.z.string().nullable(),
|
|
107
|
+
shipperName: zod_1.z.string().nullable(),
|
|
108
|
+
shipperAddress: zod_1.z.string().nullable(),
|
|
109
|
+
transferDocumentStatus: zod_1.z.number().int().nullable(),
|
|
110
|
+
transferDocumentNumberStart: zod_1.z.number().int().positive().nullable(),
|
|
111
|
+
invoiceProductFields: zod_1.z.array(zod_1.z.nativeEnum(enum_1.InvoiceProductFieldEnum)).nullable(),
|
|
100
112
|
isShowPriceAnonymous: zod_1.z.boolean(),
|
|
101
113
|
orderExpirationWarningMin: zod_1.z.number().nullable(),
|
|
102
114
|
orderExpirationMin: zod_1.z.number().nullable(),
|
|
@@ -179,6 +191,18 @@ exports.CreateSettingsSchema = zod_1.z.object({
|
|
|
179
191
|
bankBic: zod_1.z.string().nullable().optional(),
|
|
180
192
|
correspondentAccount: zod_1.z.string().nullable().optional(),
|
|
181
193
|
invoiceNumberPrefix: zod_1.z.string().optional(),
|
|
194
|
+
kpp: zod_1.z.string().nullable().optional(),
|
|
195
|
+
ogrn: zod_1.z.string().nullable().optional(),
|
|
196
|
+
signatoryName: zod_1.z.string().nullable().optional(),
|
|
197
|
+
signatoryPosition: zod_1.z.string().nullable().optional(),
|
|
198
|
+
accountantName: zod_1.z.string().nullable().optional(),
|
|
199
|
+
responsibleName: zod_1.z.string().nullable().optional(),
|
|
200
|
+
responsiblePosition: zod_1.z.string().nullable().optional(),
|
|
201
|
+
shipperName: zod_1.z.string().nullable().optional(),
|
|
202
|
+
shipperAddress: zod_1.z.string().nullable().optional(),
|
|
203
|
+
transferDocumentStatus: zod_1.z.number().int().nullable().optional(),
|
|
204
|
+
transferDocumentNumberStart: zod_1.z.number().int().positive().nullable().optional(),
|
|
205
|
+
invoiceProductFields: zod_1.z.array(zod_1.z.nativeEnum(enum_1.InvoiceProductFieldEnum)).nullable().optional(),
|
|
182
206
|
orderExpirationWarningMin: zod_1.z.coerce.number().nullable().optional(),
|
|
183
207
|
orderExpirationMin: zod_1.z.coerce.number().nullable().optional(),
|
|
184
208
|
paymentGraceDaysAfterCompletion: zod_1.z.coerce.number().nullable().optional(),
|
|
@@ -249,6 +273,19 @@ exports.UpdateSettingsRequestSchema = zod_1.z.object({
|
|
|
249
273
|
bankBic: zod_1.z.string().optional().nullable(),
|
|
250
274
|
correspondentAccount: zod_1.z.string().optional().nullable(),
|
|
251
275
|
invoiceNumberPrefix: zod_1.z.string().optional(),
|
|
276
|
+
kpp: zod_1.z.string().optional().nullable(),
|
|
277
|
+
ogrn: zod_1.z.string().optional().nullable(),
|
|
278
|
+
signatoryName: zod_1.z.string().optional().nullable(),
|
|
279
|
+
signatoryPosition: zod_1.z.string().optional().nullable(),
|
|
280
|
+
accountantName: zod_1.z.string().optional().nullable(),
|
|
281
|
+
responsibleName: zod_1.z.string().optional().nullable(),
|
|
282
|
+
responsiblePosition: zod_1.z.string().optional().nullable(),
|
|
283
|
+
shipperName: zod_1.z.string().optional().nullable(),
|
|
284
|
+
shipperAddress: zod_1.z.string().optional().nullable(),
|
|
285
|
+
transferDocumentStatus: zod_1.z.number().int().optional().nullable(),
|
|
286
|
+
// Понижать нельзя — это дало бы дубли к уже выданным документам; проверка в обработчике.
|
|
287
|
+
transferDocumentNumberStart: zod_1.z.number().int().positive().optional().nullable(),
|
|
288
|
+
invoiceProductFields: zod_1.z.array(zod_1.z.nativeEnum(enum_1.InvoiceProductFieldEnum)).optional().nullable(),
|
|
252
289
|
isShowPriceAnonymous: zod_1.z.coerce.boolean().optional(),
|
|
253
290
|
orderExpirationWarningMin: zod_1.z.coerce.number().nullable().optional(),
|
|
254
291
|
orderExpirationMin: zod_1.z.coerce.number().nullable().optional(),
|