@floristcloud/api-lib 1.2.127 → 1.2.129

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.
@@ -2,12 +2,32 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GetDailyOrdersSummaryContractQuery = void 0;
4
4
  const zod_1 = require("zod");
5
+ const order_status_enum_1 = require("../../enum/order-status.enum");
6
+ const report_order_date_basis_enum_1 = require("../../enum/report-order-date-basis.enum");
5
7
  const date_helper_1 = require("../../helpers/date.helper");
6
8
  const money_schema_1 = require("../../schemas/money.schema");
7
9
  const GetDailyOrdersSummaryRequestSchema = zod_1.z
8
10
  .object({
9
11
  startDate: zod_1.z.coerce.date(),
10
12
  endDate: zod_1.z.coerce.date(),
13
+ // Ось периода — общая с отчётами продаж, чтобы сводка и отчёт за тот же период не разошлись
14
+ // в семантике. Дизъюнкции «любая из дат» здесь нет намеренно, см. ReportOrderDateBasisEnum.
15
+ //
16
+ // COMPLETED_AT сужает сводку до отгруженных заказов: даты отгрузки у остальных статусов
17
+ // просто нет. Поэтому на этой оси ordersCompleted равен ordersCreated, а фильтр по любому
18
+ // статусу кроме COMPLETED даёт нули — на фронте эти два фильтра совмещать не нужно.
19
+ dateBasis: zod_1.z.nativeEnum(report_order_date_basis_enum_1.ReportOrderDateBasisEnum).default(report_order_date_basis_enum_1.ReportOrderDateBasisEnum.CREATED_AT),
20
+ // Необязательное сужение по статусу. Принимается и CSV (`?status=NEW,ACCEPTED`), и повтор
21
+ // параметра — как excludeClientUUID в ReportOrderFilterSchema.
22
+ //
23
+ // Служебные статусы здесь НЕ отсеиваются, хотя в сводку они и так не попадают: отсев на
24
+ // этом слое означал бы «фильтр пуст → фильтра нет», и `?status=TEMPLATE` вернул бы весь
25
+ // отчёт вместо нулей. Отбрасывает их билдер — там пустой результат остаётся пустым.
26
+ status: zod_1.z
27
+ .union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())])
28
+ .transform(value => (Array.isArray(value) ? value : value.split(',')).map(item => item.trim()).filter(Boolean))
29
+ .pipe(zod_1.z.array(zod_1.z.nativeEnum(order_status_enum_1.OrderStatusEnum)))
30
+ .optional(),
11
31
  })
12
32
  .refine(value => (0, date_helper_1.dateRangeCheck)(value.startDate, value.endDate), {
13
33
  message: 'validation.dateRange',
@@ -26,6 +46,9 @@ const metricsShape = {
26
46
  ordersCreated: zod_1.z.number(),
27
47
  ordersCompleted: zod_1.z.number(),
28
48
  totalSum: money_schema_1.MoneySchema,
49
+ // Часть totalSum по заказам со статусом COMPLETED. На оси COMPLETED_AT равна totalSum:
50
+ // там весь срез и так отгружен.
51
+ completedSum: money_schema_1.MoneySchema,
29
52
  unitsByMeasure: UnitsByMeasureSchema,
30
53
  };
31
54
  const DailyOrdersSummaryTotalsSchema = zod_1.z.object(Object.assign({}, metricsShape));
@@ -5,4 +5,13 @@ var DiscountRulesModeTypeEnum;
5
5
  (function (DiscountRulesModeTypeEnum) {
6
6
  DiscountRulesModeTypeEnum["FIXED"] = "FIXED";
7
7
  DiscountRulesModeTypeEnum["PERCENT"] = "PERCENT";
8
+ /**
9
+ * Готовая цена, а не величина скидки.
10
+ *
11
+ * Значение вычисляемое: его выставляет правило `COST_PLUS_MARKUP`, посчитав цену от
12
+ * себестоимости товара. Задать его снаружи нельзя — схема ввода правила
13
+ * (`discountRulesModeSchema`) знает только FIXED и PERCENT, а схема выдачи
14
+ * (`discountPriceOutcomeSchema`) — все три.
15
+ */
16
+ DiscountRulesModeTypeEnum["TARGET_PRICE"] = "TARGET_PRICE";
8
17
  })(DiscountRulesModeTypeEnum || (exports.DiscountRulesModeTypeEnum = DiscountRulesModeTypeEnum = {}));
@@ -8,4 +8,5 @@ var DiscountRulesTypeEnum;
8
8
  DiscountRulesTypeEnum["QUANTITY_BASED"] = "QUANTITY_BASED";
9
9
  DiscountRulesTypeEnum["ITEM_DISCOUNT"] = "ITEM_DISCOUNT";
10
10
  DiscountRulesTypeEnum["DISCOUNT_PROHIBITED"] = "DISCOUNT_PROHIBITED";
11
+ DiscountRulesTypeEnum["COST_PLUS_MARKUP"] = "COST_PLUS_MARKUP";
11
12
  })(DiscountRulesTypeEnum || (exports.DiscountRulesTypeEnum = DiscountRulesTypeEnum = {}));
@@ -116,6 +116,7 @@ __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("./report-excluded-order-status-list"), exports);
119
120
  __exportStar(require("./invoice-product-field.enum"), exports);
120
121
  __exportStar(require("./transfer-document-state.enum"), exports);
121
122
  __exportStar(require("./transfer-document-kind.enum"), exports);
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReportExcludedOrderStatusList = void 0;
4
+ const order_status_enum_1 = require("./order-status.enum");
5
+ /**
6
+ * Служебные статусы заказа: шаблон и заготовка импорта. Это не продажи, поэтому из отчётов по
7
+ * заказам они выкидываются всегда — в том числе когда пользователь явно фильтрует по статусу.
8
+ */
9
+ exports.ReportExcludedOrderStatusList = [order_status_enum_1.OrderStatusEnum.TEMPLATE, order_status_enum_1.OrderStatusEnum.IMPORTED];
@@ -1,19 +1,39 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DiscountRulesExtendedSchema = exports.DiscountRulesSplitQuantityForClientSchema = exports.DiscountRulesSplitQuantityResponseSchema = exports.DiscountRulesSplitQuantitySchema = exports.DiscountRulesBaseExtendedSchema = exports.DiscountRulesListSchema = exports.UpdateDiscountRulesSchema = exports.CreateDiscountRulesSchema = exports.DiscountRulesSchema = exports.DiscountRulesBaseSchema = exports.DiscountRulesTypeSchema = exports.discountRulesModeSchema = void 0;
3
+ exports.DiscountRulesExtendedSchema = exports.DiscountRulesSplitQuantityForClientSchema = exports.DiscountRulesSplitQuantityResponseSchema = exports.DiscountRulesSplitQuantitySchema = exports.DiscountRulesBaseExtendedSchema = exports.DiscountRulesListSchema = exports.UpdateDiscountRulesSchema = exports.CreateDiscountRulesSchema = exports.DiscountRulesSchema = exports.DiscountRulesBaseSchema = exports.DiscountRulesTypeSchema = exports.discountPriceOutcomeSchema = exports.discountRulesModeSchema = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const enum_1 = require("../../enum");
6
6
  const client_1 = require("../client");
7
7
  const product_schema_1 = require("../product/product.schema");
8
8
  const money_schema_1 = require("../money.schema");
9
+ const non_negative_money_schema_1 = require("../non-negative-money.schema");
9
10
  const positive_money_schema_1 = require("../positive-money.schema");
10
11
  // PERCENT — это процент, а не деньги: остаётся числом 0..100. FIXED — денежная величина, едет строкой.
11
- exports.discountRulesModeSchema = zod_1.z.discriminatedUnion('typeDiscount', [
12
- zod_1.z.object({ typeDiscount: zod_1.z.literal(enum_1.DiscountRulesModeTypeEnum.PERCENT), discountValue: zod_1.z.number().min(0).max(100) }),
12
+ const discountPercentModeSchema = zod_1.z.object({
13
+ typeDiscount: zod_1.z.literal(enum_1.DiscountRulesModeTypeEnum.PERCENT),
14
+ discountValue: zod_1.z.number().min(0).max(100),
15
+ });
16
+ const discountFixedModeSchema = zod_1.z.object({
17
+ typeDiscount: zod_1.z.literal(enum_1.DiscountRulesModeTypeEnum.FIXED),
18
+ // Строго положительная сумма: минус отсекаем по знаку строки, нули вида "0" / "0.00" — сравнением.
19
+ discountValue: positive_money_schema_1.PositiveMoneySchema,
20
+ });
21
+ exports.discountRulesModeSchema = zod_1.z.discriminatedUnion('typeDiscount', [discountPercentModeSchema, discountFixedModeSchema]);
22
+ /**
23
+ * Итог применения правила к товару — то, что уезжает клиенту в `discountDataList`.
24
+ *
25
+ * От схемы ввода отличается ровно одной веткой: TARGET_PRICE несёт уже посчитанную цену, а не
26
+ * величину скидки. Так работает правило от себестоимости: считать цену на клиенте нечем — там нет
27
+ * ни себестоимости, ни права её видеть. Ветка живёт только в выдаче: задать TARGET_PRICE при
28
+ * создании правила нельзя, `discountRulesModeSchema` его не принимает.
29
+ */
30
+ exports.discountPriceOutcomeSchema = zod_1.z.discriminatedUnion('typeDiscount', [
31
+ discountPercentModeSchema,
32
+ discountFixedModeSchema,
13
33
  zod_1.z.object({
14
- typeDiscount: zod_1.z.literal(enum_1.DiscountRulesModeTypeEnum.FIXED),
15
- // Строго положительная сумма: минус отсекаем по знаку строки, нули вида "0" / "0.00" — сравнением.
16
- discountValue: positive_money_schema_1.PositiveMoneySchema,
34
+ typeDiscount: zod_1.z.literal(enum_1.DiscountRulesModeTypeEnum.TARGET_PRICE),
35
+ // Ноль допустим: себестоимость может быть нулевой, а наценка — нулевой по условию правила.
36
+ targetPrice: non_negative_money_schema_1.NonNegativeMoneySchema,
17
37
  }),
18
38
  ]);
19
39
  // Rules schemas other data
@@ -40,6 +60,19 @@ const DiscountRulesQuantityBasedDataSchema = zod_1.z
40
60
  .and(exports.discountRulesModeSchema);
41
61
  const DiscountRulesItemDiscountDataSchema = exports.discountRulesModeSchema;
42
62
  const DiscountRulesDiscountProhibitedDataSchema = zod_1.z.object({}).default({});
63
+ /**
64
+ * Наценка к себестоимости: цена клиента = себестоимость + наценка.
65
+ *
66
+ * Три отличия от режима скидки, и все намеренные:
67
+ * — только вверх, знака у величины нет: продажу ниже себестоимости правилом не задают;
68
+ * — ноль допустим (`markupValue: 0` — продаём по себестоимости), поэтому FIXED берёт
69
+ * `NonNegativeMoneySchema`, а не `PositiveMoneySchema`;
70
+ * — у процента нет верхней границы: наценка в 150 % законна, в отличие от скидки в 150 %.
71
+ */
72
+ const DiscountRulesCostPlusMarkupDataSchema = zod_1.z.discriminatedUnion('typeMarkup', [
73
+ zod_1.z.object({ typeMarkup: zod_1.z.literal(enum_1.DiscountRulesModeTypeEnum.PERCENT), markupValue: zod_1.z.number().min(0) }),
74
+ zod_1.z.object({ typeMarkup: zod_1.z.literal(enum_1.DiscountRulesModeTypeEnum.FIXED), markupValue: non_negative_money_schema_1.NonNegativeMoneySchema }),
75
+ ]);
43
76
  exports.DiscountRulesTypeSchema = zod_1.z.discriminatedUnion('type', [
44
77
  zod_1.z.object({
45
78
  type: zod_1.z.literal(enum_1.DiscountRulesTypeEnum.PERSONAL_DISCOUNT),
@@ -61,6 +94,10 @@ exports.DiscountRulesTypeSchema = zod_1.z.discriminatedUnion('type', [
61
94
  type: zod_1.z.literal(enum_1.DiscountRulesTypeEnum.DISCOUNT_PROHIBITED),
62
95
  data: DiscountRulesDiscountProhibitedDataSchema,
63
96
  }),
97
+ zod_1.z.object({
98
+ type: zod_1.z.literal(enum_1.DiscountRulesTypeEnum.COST_PLUS_MARKUP),
99
+ data: DiscountRulesCostPlusMarkupDataSchema,
100
+ }),
64
101
  ]);
65
102
  exports.DiscountRulesBaseSchema = zod_1.z.object({
66
103
  uuid: zod_1.z.string(),
@@ -95,7 +95,7 @@ exports.ProductExtendedForClientSchema = exports.ProductForClientSchema.merge(zo
95
95
  .object({
96
96
  discountRulesUUID: zod_1.z.string(),
97
97
  type: zod_1.z.nativeEnum(enum_1.DiscountRulesTypeEnum),
98
- discountValueData: discount_rules_schema_1.discountRulesModeSchema,
98
+ discountValueData: discount_rules_schema_1.discountPriceOutcomeSchema,
99
99
  priceWithDiscount: money_schema_1.MoneySchema,
100
100
  multipleQuantity: zod_1.z.number().optional(),
101
101
  })
@@ -1,4 +1,6 @@
1
1
  import { z } from 'zod';
2
+ import { OrderStatusEnum } from '../../enum/order-status.enum';
3
+ import { ReportOrderDateBasisEnum } from '../../enum/report-order-date-basis.enum';
2
4
  import { dateRangeCheck, isStatementPeriodWithinLimit } from '../../helpers/date.helper';
3
5
  import { MoneySchema } from '../../schemas/money.schema';
4
6
 
@@ -6,6 +8,24 @@ const GetDailyOrdersSummaryRequestSchema = z
6
8
  .object({
7
9
  startDate: z.coerce.date(),
8
10
  endDate: z.coerce.date(),
11
+ // Ось периода — общая с отчётами продаж, чтобы сводка и отчёт за тот же период не разошлись
12
+ // в семантике. Дизъюнкции «любая из дат» здесь нет намеренно, см. ReportOrderDateBasisEnum.
13
+ //
14
+ // COMPLETED_AT сужает сводку до отгруженных заказов: даты отгрузки у остальных статусов
15
+ // просто нет. Поэтому на этой оси ordersCompleted равен ordersCreated, а фильтр по любому
16
+ // статусу кроме COMPLETED даёт нули — на фронте эти два фильтра совмещать не нужно.
17
+ dateBasis: z.nativeEnum(ReportOrderDateBasisEnum).default(ReportOrderDateBasisEnum.CREATED_AT),
18
+ // Необязательное сужение по статусу. Принимается и CSV (`?status=NEW,ACCEPTED`), и повтор
19
+ // параметра — как excludeClientUUID в ReportOrderFilterSchema.
20
+ //
21
+ // Служебные статусы здесь НЕ отсеиваются, хотя в сводку они и так не попадают: отсев на
22
+ // этом слое означал бы «фильтр пуст → фильтра нет», и `?status=TEMPLATE` вернул бы весь
23
+ // отчёт вместо нулей. Отбрасывает их билдер — там пустой результат остаётся пустым.
24
+ status: z
25
+ .union([z.string(), z.array(z.string())])
26
+ .transform(value => (Array.isArray(value) ? value : value.split(',')).map(item => item.trim()).filter(Boolean))
27
+ .pipe(z.array(z.nativeEnum(OrderStatusEnum)))
28
+ .optional(),
9
29
  })
10
30
  .refine(value => dateRangeCheck(value.startDate, value.endDate), {
11
31
  message: 'validation.dateRange',
@@ -26,6 +46,9 @@ const metricsShape = {
26
46
  ordersCreated: z.number(),
27
47
  ordersCompleted: z.number(),
28
48
  totalSum: MoneySchema,
49
+ // Часть totalSum по заказам со статусом COMPLETED. На оси COMPLETED_AT равна totalSum:
50
+ // там весь срез и так отгружен.
51
+ completedSum: MoneySchema,
29
52
  unitsByMeasure: UnitsByMeasureSchema,
30
53
  };
31
54
 
@@ -1,4 +1,13 @@
1
1
  export enum DiscountRulesModeTypeEnum {
2
2
  FIXED = 'FIXED',
3
3
  PERCENT = 'PERCENT',
4
+ /**
5
+ * Готовая цена, а не величина скидки.
6
+ *
7
+ * Значение вычисляемое: его выставляет правило `COST_PLUS_MARKUP`, посчитав цену от
8
+ * себестоимости товара. Задать его снаружи нельзя — схема ввода правила
9
+ * (`discountRulesModeSchema`) знает только FIXED и PERCENT, а схема выдачи
10
+ * (`discountPriceOutcomeSchema`) — все три.
11
+ */
12
+ TARGET_PRICE = 'TARGET_PRICE',
4
13
  }
@@ -4,4 +4,5 @@ export enum DiscountRulesTypeEnum {
4
4
  QUANTITY_BASED = 'QUANTITY_BASED',
5
5
  ITEM_DISCOUNT = 'ITEM_DISCOUNT',
6
6
  DISCOUNT_PROHIBITED = 'DISCOUNT_PROHIBITED',
7
+ COST_PLUS_MARKUP = 'COST_PLUS_MARKUP',
7
8
  }
package/enum/index.ts CHANGED
@@ -100,6 +100,7 @@ export * from './payment-invoice-status.enum';
100
100
  export * from './order-by.enum';
101
101
  export * from './report-sort-by.enum';
102
102
  export * from './report-order-date-basis.enum';
103
+ export * from './report-excluded-order-status-list';
103
104
  export * from './invoice-product-field.enum';
104
105
  export * from './transfer-document-state.enum';
105
106
  export * from './transfer-document-kind.enum';
@@ -0,0 +1,7 @@
1
+ import { OrderStatusEnum } from './order-status.enum';
2
+
3
+ /**
4
+ * Служебные статусы заказа: шаблон и заготовка импорта. Это не продажи, поэтому из отчётов по
5
+ * заказам они выкидываются всегда — в том числе когда пользователь явно фильтрует по статусу.
6
+ */
7
+ export const ReportExcludedOrderStatusList: OrderStatusEnum[] = [OrderStatusEnum.TEMPLATE, OrderStatusEnum.IMPORTED];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floristcloud/api-lib",
3
- "version": "1.2.127",
3
+ "version": "1.2.129",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "scripts": {
@@ -3,15 +3,38 @@ import { DiscountRulesTypeEnum, DiscountRulesApplyTypeEnum, DiscountRulesStatusE
3
3
  import { ClientSchema } from '../client';
4
4
  import { ProductSchema } from '../product/product.schema';
5
5
  import { MoneySchema } from '../money.schema';
6
+ import { NonNegativeMoneySchema } from '../non-negative-money.schema';
6
7
  import { PositiveMoneySchema } from '../positive-money.schema';
7
8
 
8
9
  // PERCENT — это процент, а не деньги: остаётся числом 0..100. FIXED — денежная величина, едет строкой.
9
- export const discountRulesModeSchema = z.discriminatedUnion('typeDiscount', [
10
- z.object({ typeDiscount: z.literal(DiscountRulesModeTypeEnum.PERCENT), discountValue: z.number().min(0).max(100) }),
10
+ const discountPercentModeSchema = z.object({
11
+ typeDiscount: z.literal(DiscountRulesModeTypeEnum.PERCENT),
12
+ discountValue: z.number().min(0).max(100),
13
+ });
14
+
15
+ const discountFixedModeSchema = z.object({
16
+ typeDiscount: z.literal(DiscountRulesModeTypeEnum.FIXED),
17
+ // Строго положительная сумма: минус отсекаем по знаку строки, нули вида "0" / "0.00" — сравнением.
18
+ discountValue: PositiveMoneySchema,
19
+ });
20
+
21
+ export const discountRulesModeSchema = z.discriminatedUnion('typeDiscount', [discountPercentModeSchema, discountFixedModeSchema]);
22
+
23
+ /**
24
+ * Итог применения правила к товару — то, что уезжает клиенту в `discountDataList`.
25
+ *
26
+ * От схемы ввода отличается ровно одной веткой: TARGET_PRICE несёт уже посчитанную цену, а не
27
+ * величину скидки. Так работает правило от себестоимости: считать цену на клиенте нечем — там нет
28
+ * ни себестоимости, ни права её видеть. Ветка живёт только в выдаче: задать TARGET_PRICE при
29
+ * создании правила нельзя, `discountRulesModeSchema` его не принимает.
30
+ */
31
+ export const discountPriceOutcomeSchema = z.discriminatedUnion('typeDiscount', [
32
+ discountPercentModeSchema,
33
+ discountFixedModeSchema,
11
34
  z.object({
12
- typeDiscount: z.literal(DiscountRulesModeTypeEnum.FIXED),
13
- // Строго положительная сумма: минус отсекаем по знаку строки, нули вида "0" / "0.00" — сравнением.
14
- discountValue: PositiveMoneySchema,
35
+ typeDiscount: z.literal(DiscountRulesModeTypeEnum.TARGET_PRICE),
36
+ // Ноль допустим: себестоимость может быть нулевой, а наценка — нулевой по условию правила.
37
+ targetPrice: NonNegativeMoneySchema,
15
38
  }),
16
39
  ]);
17
40
 
@@ -44,6 +67,20 @@ const DiscountRulesItemDiscountDataSchema = discountRulesModeSchema;
44
67
 
45
68
  const DiscountRulesDiscountProhibitedDataSchema = z.object({}).default({});
46
69
 
70
+ /**
71
+ * Наценка к себестоимости: цена клиента = себестоимость + наценка.
72
+ *
73
+ * Три отличия от режима скидки, и все намеренные:
74
+ * — только вверх, знака у величины нет: продажу ниже себестоимости правилом не задают;
75
+ * — ноль допустим (`markupValue: 0` — продаём по себестоимости), поэтому FIXED берёт
76
+ * `NonNegativeMoneySchema`, а не `PositiveMoneySchema`;
77
+ * — у процента нет верхней границы: наценка в 150 % законна, в отличие от скидки в 150 %.
78
+ */
79
+ const DiscountRulesCostPlusMarkupDataSchema = z.discriminatedUnion('typeMarkup', [
80
+ z.object({ typeMarkup: z.literal(DiscountRulesModeTypeEnum.PERCENT), markupValue: z.number().min(0) }),
81
+ z.object({ typeMarkup: z.literal(DiscountRulesModeTypeEnum.FIXED), markupValue: NonNegativeMoneySchema }),
82
+ ]);
83
+
47
84
  export const DiscountRulesTypeSchema = z.discriminatedUnion('type', [
48
85
  z.object({
49
86
  type: z.literal(DiscountRulesTypeEnum.PERSONAL_DISCOUNT),
@@ -65,6 +102,10 @@ export const DiscountRulesTypeSchema = z.discriminatedUnion('type', [
65
102
  type: z.literal(DiscountRulesTypeEnum.DISCOUNT_PROHIBITED),
66
103
  data: DiscountRulesDiscountProhibitedDataSchema,
67
104
  }),
105
+ z.object({
106
+ type: z.literal(DiscountRulesTypeEnum.COST_PLUS_MARKUP),
107
+ data: DiscountRulesCostPlusMarkupDataSchema,
108
+ }),
68
109
  ]);
69
110
 
70
111
  export const DiscountRulesBaseSchema = z.object({
@@ -4,7 +4,7 @@ import { CategorySchema } from '../category/category.schema';
4
4
  import { TypeSchema } from '../type/type.schema';
5
5
  import { ConsignmentSchema } from '../consignment/consignment.schema';
6
6
  import { DiscountRulesTypeEnum, ProductMarkEnum, SalesUnitEnum } from '../../enum';
7
- import { discountRulesModeSchema } from '../discount-rules/discount-rules.schema';
7
+ import { discountPriceOutcomeSchema } from '../discount-rules/discount-rules.schema';
8
8
  import { ProductMultiplicityOptionSchema } from '../..';
9
9
  import { ProductMultiplicityOptionForClientSchema } from './product-multiplicity-option-for-client.schema';
10
10
  import { MoneySchema } from '../money.schema';
@@ -102,7 +102,7 @@ export const ProductExtendedForClientSchema = ProductForClientSchema.merge(
102
102
  .object({
103
103
  discountRulesUUID: z.string(),
104
104
  type: z.nativeEnum(DiscountRulesTypeEnum),
105
- discountValueData: discountRulesModeSchema,
105
+ discountValueData: discountPriceOutcomeSchema,
106
106
  priceWithDiscount: MoneySchema,
107
107
  multipleQuantity: z.number().optional(),
108
108
  })