@floristcloud/api-lib 1.2.140 → 1.2.141
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/order-product/group/price-correction-analyze.command.js +27 -1
- package/build/commands/order-product/group/price-correction-execute.command.js +10 -0
- package/commands/order-product/group/price-correction-analyze.command.ts +32 -1
- package/commands/order-product/group/price-correction-execute.command.ts +12 -0
- package/package.json +1 -1
|
@@ -9,10 +9,24 @@ const PriceCorrectionAnalyzeRequestSchema = zod_1.z
|
|
|
9
9
|
.object({
|
|
10
10
|
productUUIDList: zod_1.z.array(zod_1.z.string().uuid()).optional(),
|
|
11
11
|
consignmentUUID: zod_1.z.string().uuid().optional(),
|
|
12
|
+
/**
|
|
13
|
+
* Режим цены — обязателен и без умолчания, как в execute.
|
|
14
|
+
*
|
|
15
|
+
* Раньше analyze этого поля не знал и считал `onlyChanged` по OR обоих режимов: строка
|
|
16
|
+
* попадала в выдачу, если разошлась цена со скидкой ИЛИ без. На клиенте с фиксированной
|
|
17
|
+
* скидкой это выносило в предпросмотр каждую его позицию — цена строки законно ниже
|
|
18
|
+
* каталожной ровно на скидку, и «без скидок» это выглядит расхождением. Execute при этом
|
|
19
|
+
* считает предикат в выбранном режиме, то есть предпросмотр и применение расходились на
|
|
20
|
+
* целую партию.
|
|
21
|
+
*/
|
|
22
|
+
withDiscount: zod_1.z.boolean(),
|
|
12
23
|
// Поставка на сотни товаров даёт десятки тысяч позиций, из которых после правки прайса
|
|
13
24
|
// меняются единицы. По умолчанию отдаём только те, где цена реально расходится; полный
|
|
14
25
|
// список — режим «показать всё».
|
|
15
26
|
onlyChanged: zod_1.z.boolean().optional().default(true),
|
|
27
|
+
// Позиции, которые применить нельзя (статус заказа, заказ в передаточном документе).
|
|
28
|
+
// `true` — скрыть их из выдачи; сколько их всего, видно по `skippedTotal`.
|
|
29
|
+
excludeSkipped: zod_1.z.boolean().optional().default(false),
|
|
16
30
|
// Страница обязательна по смыслу, а не по схеме: строк здесь товары × заказы, то есть
|
|
17
31
|
// десятки тысяч на партию, и безлимитная выдача кладёт запрос независимо от того, сколько
|
|
18
32
|
// из неё нарисует таблица. Усечение при этом урезает только предпросмотр — execute в
|
|
@@ -33,8 +47,20 @@ const PriceCorrectionAnalyzeResponseSchema = zod_1.z.object({
|
|
|
33
47
|
message: zod_1.z.string().optional(),
|
|
34
48
|
data: zod_1.z.object({
|
|
35
49
|
items: zod_1.z.array(schemas_1.PriceCorrectionAnalyzeItemSchema),
|
|
36
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Размер выдачи, а не страницы: по нему листают. Учитывает ВСЕ фильтры запроса, включая
|
|
52
|
+
* `excludeSkipped`.
|
|
53
|
+
*/
|
|
37
54
|
total: zod_1.z.number(),
|
|
55
|
+
/**
|
|
56
|
+
* Сколько строк набора применить нельзя — статус заказа или заказ в передаточном документе.
|
|
57
|
+
*
|
|
58
|
+
* Считается по набору после `onlyChanged`, но ДО `excludeSkipped`: иначе при скрытых
|
|
59
|
+
* непроходных строках это всегда был бы ноль и шапку «столько-то не пройдёт» стало бы не из
|
|
60
|
+
* чего собрать. Отсюда: применимых строк — `total` при `excludeSkipped: true` и
|
|
61
|
+
* `total − skippedTotal` при `false`.
|
|
62
|
+
*/
|
|
63
|
+
skippedTotal: zod_1.z.number(),
|
|
38
64
|
}),
|
|
39
65
|
});
|
|
40
66
|
var PriceCorrectionAnalyzeContractCommand;
|
|
@@ -42,7 +42,17 @@ const PriceCorrectionExecuteResponseSchema = zod_1.z.object({
|
|
|
42
42
|
// равно перезапрашивает analyze, чтобы обновить таблицу.
|
|
43
43
|
results: zod_1.z.array(schemas_1.PriceCorrectionExecuteResultItemSchema),
|
|
44
44
|
orders: zod_1.z.array(schemas_1.PriceCorrectionExecuteOrderItemSchema),
|
|
45
|
+
/**
|
|
46
|
+
* «Строк в нужной цене после прогона», а не «строк изменено».
|
|
47
|
+
*
|
|
48
|
+
* Применение сходящееся: позиция, уже стоящая в нужной цене, — успех, а не отказ, поэтому
|
|
49
|
+
* повтор запроса и ретрай после таймаута безопасны и дают тот же ответ. Из-за этого при
|
|
50
|
+
* `onlyChanged: false` в счётчик попадают и нетронутые позиции. При `onlyChanged: true`
|
|
51
|
+
* таких строк здесь не будет: они отсеиваются до обработки и в счётчики не идут вовсе.
|
|
52
|
+
*/
|
|
45
53
|
successCount: zod_1.z.number(),
|
|
54
|
+
// Строки, которые прогон не применил: статус заказа, заказ в передаточном документе, отказ
|
|
55
|
+
// применения. Каждая из них есть в `results` — с точностью до потолка (см. `isTruncated`).
|
|
46
56
|
skippedCount: zod_1.z.number(),
|
|
47
57
|
// `results` в scope-форме обрезан по лимиту. Полные числа — в счётчиках и в `orders`.
|
|
48
58
|
isTruncated: zod_1.z.boolean(),
|
|
@@ -8,11 +8,28 @@ const PriceCorrectionAnalyzeRequestSchema = z
|
|
|
8
8
|
.object({
|
|
9
9
|
productUUIDList: z.array(z.string().uuid()).optional(),
|
|
10
10
|
consignmentUUID: z.string().uuid().optional(),
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Режим цены — обязателен и без умолчания, как в execute.
|
|
14
|
+
*
|
|
15
|
+
* Раньше analyze этого поля не знал и считал `onlyChanged` по OR обоих режимов: строка
|
|
16
|
+
* попадала в выдачу, если разошлась цена со скидкой ИЛИ без. На клиенте с фиксированной
|
|
17
|
+
* скидкой это выносило в предпросмотр каждую его позицию — цена строки законно ниже
|
|
18
|
+
* каталожной ровно на скидку, и «без скидок» это выглядит расхождением. Execute при этом
|
|
19
|
+
* считает предикат в выбранном режиме, то есть предпросмотр и применение расходились на
|
|
20
|
+
* целую партию.
|
|
21
|
+
*/
|
|
22
|
+
withDiscount: z.boolean(),
|
|
23
|
+
|
|
11
24
|
// Поставка на сотни товаров даёт десятки тысяч позиций, из которых после правки прайса
|
|
12
25
|
// меняются единицы. По умолчанию отдаём только те, где цена реально расходится; полный
|
|
13
26
|
// список — режим «показать всё».
|
|
14
27
|
onlyChanged: z.boolean().optional().default(true),
|
|
15
28
|
|
|
29
|
+
// Позиции, которые применить нельзя (статус заказа, заказ в передаточном документе).
|
|
30
|
+
// `true` — скрыть их из выдачи; сколько их всего, видно по `skippedTotal`.
|
|
31
|
+
excludeSkipped: z.boolean().optional().default(false),
|
|
32
|
+
|
|
16
33
|
// Страница обязательна по смыслу, а не по схеме: строк здесь товары × заказы, то есть
|
|
17
34
|
// десятки тысяч на партию, и безлимитная выдача кладёт запрос независимо от того, сколько
|
|
18
35
|
// из неё нарисует таблица. Усечение при этом урезает только предпросмотр — execute в
|
|
@@ -34,8 +51,22 @@ const PriceCorrectionAnalyzeResponseSchema = z.object({
|
|
|
34
51
|
message: z.string().optional(),
|
|
35
52
|
data: z.object({
|
|
36
53
|
items: z.array(PriceCorrectionAnalyzeItemSchema),
|
|
37
|
-
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Размер выдачи, а не страницы: по нему листают. Учитывает ВСЕ фильтры запроса, включая
|
|
57
|
+
* `excludeSkipped`.
|
|
58
|
+
*/
|
|
38
59
|
total: z.number(),
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Сколько строк набора применить нельзя — статус заказа или заказ в передаточном документе.
|
|
63
|
+
*
|
|
64
|
+
* Считается по набору после `onlyChanged`, но ДО `excludeSkipped`: иначе при скрытых
|
|
65
|
+
* непроходных строках это всегда был бы ноль и шапку «столько-то не пройдёт» стало бы не из
|
|
66
|
+
* чего собрать. Отсюда: применимых строк — `total` при `excludeSkipped: true` и
|
|
67
|
+
* `total − skippedTotal` при `false`.
|
|
68
|
+
*/
|
|
69
|
+
skippedTotal: z.number(),
|
|
39
70
|
}),
|
|
40
71
|
});
|
|
41
72
|
|
|
@@ -47,7 +47,19 @@ const PriceCorrectionExecuteResponseSchema = z.object({
|
|
|
47
47
|
// равно перезапрашивает analyze, чтобы обновить таблицу.
|
|
48
48
|
results: z.array(PriceCorrectionExecuteResultItemSchema),
|
|
49
49
|
orders: z.array(PriceCorrectionExecuteOrderItemSchema),
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* «Строк в нужной цене после прогона», а не «строк изменено».
|
|
53
|
+
*
|
|
54
|
+
* Применение сходящееся: позиция, уже стоящая в нужной цене, — успех, а не отказ, поэтому
|
|
55
|
+
* повтор запроса и ретрай после таймаута безопасны и дают тот же ответ. Из-за этого при
|
|
56
|
+
* `onlyChanged: false` в счётчик попадают и нетронутые позиции. При `onlyChanged: true`
|
|
57
|
+
* таких строк здесь не будет: они отсеиваются до обработки и в счётчики не идут вовсе.
|
|
58
|
+
*/
|
|
50
59
|
successCount: z.number(),
|
|
60
|
+
|
|
61
|
+
// Строки, которые прогон не применил: статус заказа, заказ в передаточном документе, отказ
|
|
62
|
+
// применения. Каждая из них есть в `results` — с точностью до потолка (см. `isTruncated`).
|
|
51
63
|
skippedCount: z.number(),
|
|
52
64
|
// `results` в scope-форме обрезан по лимиту. Полные числа — в счётчиках и в `orders`.
|
|
53
65
|
isTruncated: z.boolean(),
|