@floristcloud/api-lib 1.2.124 → 1.2.125
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.
|
@@ -3,13 +3,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SetConsignmentDiscountContractCommand = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const schemas_1 = require("../../schemas");
|
|
6
|
-
const
|
|
7
|
-
|
|
6
|
+
const enum_1 = require("../../enum");
|
|
7
|
+
const ConsignmentTargetSchema = zod_1.z.object({
|
|
8
8
|
consignmentUUID: zod_1.z.uuid().optional(),
|
|
9
9
|
productUUIDs: zod_1.z.uuid().array().optional().default([]),
|
|
10
10
|
onlyInStock: zod_1.z.boolean().optional().default(false),
|
|
11
|
-
})
|
|
12
|
-
|
|
11
|
+
});
|
|
12
|
+
/**
|
|
13
|
+
* Тело операции над скидками партии: либо скидка величиной, либо запрет скидок.
|
|
14
|
+
*
|
|
15
|
+
* Разделено объединением, а не одним объектом с необязательной величиной, потому что величина
|
|
16
|
+
* обязательна ровно тогда, когда тип — скидка. Иначе «запрет со скидкой 10 %» был бы валидным
|
|
17
|
+
* телом запроса, и решать, что с ним делать, пришлось бы обработчику.
|
|
18
|
+
*
|
|
19
|
+
* `ruleType` необязателен и по умолчанию `ITEM_DISCOUNT`: до появления запрета тело состояло только
|
|
20
|
+
* из области действия и режима, и старые клиенты должны продолжать работать без правок.
|
|
21
|
+
*/
|
|
22
|
+
const ItemDiscountBodySchema = ConsignmentTargetSchema.extend({
|
|
23
|
+
ruleType: zod_1.z.literal(enum_1.DiscountRulesTypeEnum.ITEM_DISCOUNT).optional(),
|
|
24
|
+
}).and(schemas_1.discountRulesModeSchema);
|
|
25
|
+
const ProhibitedBodySchema = ConsignmentTargetSchema.extend({
|
|
26
|
+
ruleType: zod_1.z.literal(enum_1.DiscountRulesTypeEnum.DISCOUNT_PROHIBITED),
|
|
27
|
+
});
|
|
28
|
+
const SetConsignmentDiscountBodySchema = zod_1.z
|
|
29
|
+
.union([ProhibitedBodySchema, ItemDiscountBodySchema])
|
|
13
30
|
.refine(data => Boolean(data.consignmentUUID) || data.productUUIDs.length > 0, {
|
|
14
31
|
message: 'validation.consignmentOrProducts',
|
|
15
32
|
});
|
|
@@ -1,13 +1,33 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { discountRulesModeSchema } from '../../schemas';
|
|
3
|
+
import { DiscountRulesTypeEnum } from '../../enum';
|
|
4
|
+
|
|
5
|
+
const ConsignmentTargetSchema = z.object({
|
|
6
|
+
consignmentUUID: z.uuid().optional(),
|
|
7
|
+
productUUIDs: z.uuid().array().optional().default([]),
|
|
8
|
+
onlyInStock: z.boolean().optional().default(false),
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Тело операции над скидками партии: либо скидка величиной, либо запрет скидок.
|
|
13
|
+
*
|
|
14
|
+
* Разделено объединением, а не одним объектом с необязательной величиной, потому что величина
|
|
15
|
+
* обязательна ровно тогда, когда тип — скидка. Иначе «запрет со скидкой 10 %» был бы валидным
|
|
16
|
+
* телом запроса, и решать, что с ним делать, пришлось бы обработчику.
|
|
17
|
+
*
|
|
18
|
+
* `ruleType` необязателен и по умолчанию `ITEM_DISCOUNT`: до появления запрета тело состояло только
|
|
19
|
+
* из области действия и режима, и старые клиенты должны продолжать работать без правок.
|
|
20
|
+
*/
|
|
21
|
+
const ItemDiscountBodySchema = ConsignmentTargetSchema.extend({
|
|
22
|
+
ruleType: z.literal(DiscountRulesTypeEnum.ITEM_DISCOUNT).optional(),
|
|
23
|
+
}).and(discountRulesModeSchema);
|
|
24
|
+
|
|
25
|
+
const ProhibitedBodySchema = ConsignmentTargetSchema.extend({
|
|
26
|
+
ruleType: z.literal(DiscountRulesTypeEnum.DISCOUNT_PROHIBITED),
|
|
27
|
+
});
|
|
3
28
|
|
|
4
29
|
const SetConsignmentDiscountBodySchema = z
|
|
5
|
-
.
|
|
6
|
-
consignmentUUID: z.uuid().optional(),
|
|
7
|
-
productUUIDs: z.uuid().array().optional().default([]),
|
|
8
|
-
onlyInStock: z.boolean().optional().default(false),
|
|
9
|
-
})
|
|
10
|
-
.and(discountRulesModeSchema)
|
|
30
|
+
.union([ProhibitedBodySchema, ItemDiscountBodySchema])
|
|
11
31
|
.refine(data => Boolean(data.consignmentUUID) || data.productUUIDs.length > 0, {
|
|
12
32
|
message: 'validation.consignmentOrProducts',
|
|
13
33
|
});
|