@floristcloud/api-lib 1.2.176 → 1.2.179

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.
Files changed (161) hide show
  1. package/build/commands/order/get-order-delivery-pricing.query.js +10 -0
  2. package/build/commands/order/index.js +1 -0
  3. package/build/commands/pre-order/get-pre-order-by-pre-order-collection-uuid.command.js +2 -6
  4. package/build/commands/pre-order/group/analyze-create-orders-from-pre-orders.command.js +4 -35
  5. package/build/commands/pre-order/group/group-create-orders-from-pre-orders.command.js +4 -51
  6. package/build/commands/pre-order/index.js +1 -0
  7. package/build/commands/pre-order/revert-pre-order-conversion.command.js +8 -0
  8. package/build/commands/pre-order/webshop/checkout-pre-order-webshop.command.js +4 -14
  9. package/build/commands/pre-order/webshop/create-pre-order-webshop.command.js +2 -6
  10. package/build/commands/pre-order/webshop/update-pre-order-webshop.command.js +2 -6
  11. package/build/constant/error.js +35 -0
  12. package/build/enum/delivery-pricing-in-transit-mode.enum.js +8 -0
  13. package/build/enum/delivery-pricing-rule-scope.enum.js +9 -0
  14. package/build/enum/index.js +8 -0
  15. package/build/enum/pre-order-conversion-difference-field.enum.js +11 -0
  16. package/build/enum/pre-order-conversion-match-kind.enum.js +8 -0
  17. package/build/enum/pre-order-conversion-remainder-reason.enum.js +10 -0
  18. package/build/enum/pre-order-conversion-skip-reason.enum.js +7 -0
  19. package/build/enum/pre-order-conversion-warning.enum.js +8 -0
  20. package/build/enum/pre-order-fulfillment-status.enum.js +10 -0
  21. package/build/helpers/canonical-money-key.helper.js +9 -0
  22. package/build/helpers/normalize-delivery-pricing-value.helper.js +5 -0
  23. package/build/helpers/validate-unique-delivery-pricing-rules.helper.js +16 -0
  24. package/build/helpers/validate-unique-delivery-pricing-thresholds.helper.js +14 -0
  25. package/build/schemas/index.js +4 -0
  26. package/build/schemas/order/delivery-pricing.schema.js +13 -0
  27. package/build/schemas/order/get-order-delivery-pricing-request.schema.js +5 -0
  28. package/build/schemas/order/get-order-delivery-pricing-response.schema.js +9 -0
  29. package/build/schemas/order/index.js +3 -0
  30. package/build/schemas/order/order-extended-for-client.schema.js +4 -2
  31. package/build/schemas/pre-order/analyze-create-orders-from-pre-orders-data.schema.js +10 -0
  32. package/build/schemas/pre-order/analyze-create-orders-from-pre-orders-request.schema.js +13 -0
  33. package/build/schemas/pre-order/analyze-create-orders-from-pre-orders-response.schema.js +9 -0
  34. package/build/schemas/pre-order/checkout-pre-order-webshop-request.schema.js +7 -0
  35. package/build/schemas/pre-order/checkout-pre-order-webshop-response.schema.js +6 -0
  36. package/build/schemas/pre-order/create-pre-order-webshop-response.schema.js +6 -0
  37. package/build/schemas/pre-order/get-pre-order-by-collection-for-client-response.schema.js +6 -0
  38. package/build/schemas/pre-order/group-create-orders-from-pre-orders-data.schema.js +12 -0
  39. package/build/schemas/pre-order/group-create-orders-from-pre-orders-request.schema.js +17 -0
  40. package/build/schemas/pre-order/group-create-orders-from-pre-orders-response.schema.js +9 -0
  41. package/build/schemas/pre-order/index.js +39 -0
  42. package/build/schemas/pre-order/pre-order-conversion-allocation.schema.js +23 -0
  43. package/build/schemas/pre-order/pre-order-conversion-analysis.schema.js +12 -0
  44. package/build/schemas/pre-order/pre-order-conversion-attributes.schema.js +12 -0
  45. package/build/schemas/pre-order/pre-order-conversion-change.schema.js +9 -0
  46. package/build/schemas/pre-order/pre-order-conversion-created.schema.js +11 -0
  47. package/build/schemas/pre-order/pre-order-conversion-current-order.schema.js +11 -0
  48. package/build/schemas/pre-order/pre-order-conversion-difference.schema.js +12 -0
  49. package/build/schemas/pre-order/pre-order-conversion-error.schema.js +9 -0
  50. package/build/schemas/pre-order/pre-order-conversion-failed-error.schema.js +8 -0
  51. package/build/schemas/pre-order/pre-order-conversion-failed.schema.js +6 -0
  52. package/build/schemas/pre-order/pre-order-conversion-mapping.schema.js +14 -0
  53. package/build/schemas/pre-order/pre-order-conversion-match-description.schema.js +9 -0
  54. package/build/schemas/pre-order/pre-order-conversion-match.schema.js +13 -0
  55. package/build/schemas/pre-order/pre-order-conversion-order.schema.js +6 -0
  56. package/build/schemas/pre-order/pre-order-conversion-plan-allocation.schema.js +5 -0
  57. package/build/schemas/pre-order/pre-order-conversion-plan-entry.schema.js +10 -0
  58. package/build/schemas/pre-order/pre-order-conversion-plan-line.schema.js +9 -0
  59. package/build/schemas/pre-order/pre-order-conversion-preview-plan-entry.schema.js +5 -0
  60. package/build/schemas/pre-order/pre-order-conversion-remainder.schema.js +9 -0
  61. package/build/schemas/pre-order/pre-order-conversion-skipped.schema.js +6 -0
  62. package/build/schemas/pre-order/pre-order-conversion-summary-line.schema.js +20 -0
  63. package/build/schemas/pre-order/pre-order-conversion-summary.schema.js +14 -0
  64. package/build/schemas/pre-order/pre-order-for-client.schema.js +4 -0
  65. package/build/schemas/pre-order/pre-order-fulfillment-stop-price.schema.js +6 -0
  66. package/build/schemas/pre-order/pre-order-fulfillment-substitute.schema.js +5 -0
  67. package/build/schemas/pre-order/pre-order-fulfillment.schema.js +16 -0
  68. package/build/schemas/pre-order/pre-order.schema.js +14 -1
  69. package/build/schemas/pre-order/revert-pre-order-conversion-order.schema.js +8 -0
  70. package/build/schemas/pre-order/revert-pre-order-conversion-response.schema.js +8 -0
  71. package/build/schemas/pre-order/revert-pre-order-conversion-result.schema.js +10 -0
  72. package/build/schemas/pre-order/update-pre-order-webshop-response.schema.js +6 -0
  73. package/build/schemas/settings/city-delivery-pricing-rule.schema.js +11 -0
  74. package/build/schemas/settings/default-delivery-pricing-rule.schema.js +11 -0
  75. package/build/schemas/settings/delivery-pricing-rule.schema.js +12 -0
  76. package/build/schemas/settings/delivery-pricing-rules.schema.js +7 -0
  77. package/build/schemas/settings/delivery-pricing-tier.schema.js +10 -0
  78. package/build/schemas/settings/delivery-pricing-tiers.schema.js +7 -0
  79. package/build/schemas/settings/group-delivery-pricing-rule.schema.js +11 -0
  80. package/build/schemas/settings/settings.schema.js +18 -12
  81. package/commands/order/get-order-delivery-pricing.query.ts +10 -0
  82. package/commands/order/index.ts +2 -0
  83. package/commands/pre-order/get-pre-order-by-pre-order-collection-uuid.command.ts +3 -7
  84. package/commands/pre-order/group/analyze-create-orders-from-pre-orders.command.ts +3 -49
  85. package/commands/pre-order/group/group-create-orders-from-pre-orders.command.ts +3 -51
  86. package/commands/pre-order/index.ts +1 -0
  87. package/commands/pre-order/revert-pre-order-conversion.command.ts +7 -0
  88. package/commands/pre-order/webshop/checkout-pre-order-webshop.command.ts +3 -14
  89. package/commands/pre-order/webshop/create-pre-order-webshop.command.ts +3 -7
  90. package/commands/pre-order/webshop/update-pre-order-webshop.command.ts +3 -7
  91. package/constant/error.ts +35 -0
  92. package/enum/delivery-pricing-in-transit-mode.enum.ts +4 -0
  93. package/enum/delivery-pricing-rule-scope.enum.ts +5 -0
  94. package/enum/index.ts +10 -0
  95. package/enum/pre-order-conversion-difference-field.enum.ts +7 -0
  96. package/enum/pre-order-conversion-match-kind.enum.ts +4 -0
  97. package/enum/pre-order-conversion-remainder-reason.enum.ts +6 -0
  98. package/enum/pre-order-conversion-skip-reason.enum.ts +3 -0
  99. package/enum/pre-order-conversion-warning.enum.ts +4 -0
  100. package/enum/pre-order-fulfillment-status.enum.ts +6 -0
  101. package/helpers/canonical-money-key.helper.ts +5 -0
  102. package/helpers/normalize-delivery-pricing-value.helper.ts +1 -0
  103. package/helpers/validate-unique-delivery-pricing-rules.helper.ts +18 -0
  104. package/helpers/validate-unique-delivery-pricing-thresholds.helper.ts +13 -0
  105. package/package.json +1 -1
  106. package/schemas/index.ts +4 -0
  107. package/schemas/order/delivery-pricing.schema.ts +11 -0
  108. package/schemas/order/get-order-delivery-pricing-request.schema.ts +3 -0
  109. package/schemas/order/get-order-delivery-pricing-response.schema.ts +7 -0
  110. package/schemas/order/index.ts +4 -0
  111. package/schemas/order/order-extended-for-client.schema.ts +4 -2
  112. package/schemas/pre-order/analyze-create-orders-from-pre-orders-data.schema.ts +8 -0
  113. package/schemas/pre-order/analyze-create-orders-from-pre-orders-request.schema.ts +11 -0
  114. package/schemas/pre-order/analyze-create-orders-from-pre-orders-response.schema.ts +7 -0
  115. package/schemas/pre-order/checkout-pre-order-webshop-request.schema.ts +4 -0
  116. package/schemas/pre-order/checkout-pre-order-webshop-response.schema.ts +3 -0
  117. package/schemas/pre-order/create-pre-order-webshop-response.schema.ts +3 -0
  118. package/schemas/pre-order/get-pre-order-by-collection-for-client-response.schema.ts +3 -0
  119. package/schemas/pre-order/group-create-orders-from-pre-orders-data.schema.ts +10 -0
  120. package/schemas/pre-order/group-create-orders-from-pre-orders-request.schema.ts +15 -0
  121. package/schemas/pre-order/group-create-orders-from-pre-orders-response.schema.ts +7 -0
  122. package/schemas/pre-order/index.ts +43 -0
  123. package/schemas/pre-order/pre-order-conversion-allocation.schema.ts +21 -0
  124. package/schemas/pre-order/pre-order-conversion-analysis.schema.ts +10 -0
  125. package/schemas/pre-order/pre-order-conversion-attributes.schema.ts +10 -0
  126. package/schemas/pre-order/pre-order-conversion-change.schema.ts +7 -0
  127. package/schemas/pre-order/pre-order-conversion-created.schema.ts +9 -0
  128. package/schemas/pre-order/pre-order-conversion-current-order.schema.ts +8 -0
  129. package/schemas/pre-order/pre-order-conversion-difference.schema.ts +10 -0
  130. package/schemas/pre-order/pre-order-conversion-error.schema.ts +7 -0
  131. package/schemas/pre-order/pre-order-conversion-failed-error.schema.ts +6 -0
  132. package/schemas/pre-order/pre-order-conversion-failed.schema.ts +4 -0
  133. package/schemas/pre-order/pre-order-conversion-mapping.schema.ts +12 -0
  134. package/schemas/pre-order/pre-order-conversion-match-description.schema.ts +7 -0
  135. package/schemas/pre-order/pre-order-conversion-match.schema.ts +11 -0
  136. package/schemas/pre-order/pre-order-conversion-order.schema.ts +4 -0
  137. package/schemas/pre-order/pre-order-conversion-plan-allocation.schema.ts +3 -0
  138. package/schemas/pre-order/pre-order-conversion-plan-entry.schema.ts +8 -0
  139. package/schemas/pre-order/pre-order-conversion-plan-line.schema.ts +7 -0
  140. package/schemas/pre-order/pre-order-conversion-preview-plan-entry.schema.ts +3 -0
  141. package/schemas/pre-order/pre-order-conversion-remainder.schema.ts +7 -0
  142. package/schemas/pre-order/pre-order-conversion-skipped.schema.ts +4 -0
  143. package/schemas/pre-order/pre-order-conversion-summary-line.schema.ts +18 -0
  144. package/schemas/pre-order/pre-order-conversion-summary.schema.ts +12 -0
  145. package/schemas/pre-order/pre-order-for-client.schema.ts +4 -0
  146. package/schemas/pre-order/pre-order-fulfillment-stop-price.schema.ts +3 -0
  147. package/schemas/pre-order/pre-order-fulfillment-substitute.schema.ts +2 -0
  148. package/schemas/pre-order/pre-order-fulfillment.schema.ts +13 -0
  149. package/schemas/pre-order/pre-order.schema.ts +14 -1
  150. package/schemas/pre-order/revert-pre-order-conversion-order.schema.ts +6 -0
  151. package/schemas/pre-order/revert-pre-order-conversion-response.schema.ts +6 -0
  152. package/schemas/pre-order/revert-pre-order-conversion-result.schema.ts +8 -0
  153. package/schemas/pre-order/update-pre-order-webshop-response.schema.ts +3 -0
  154. package/schemas/settings/city-delivery-pricing-rule.schema.ts +9 -0
  155. package/schemas/settings/default-delivery-pricing-rule.schema.ts +9 -0
  156. package/schemas/settings/delivery-pricing-rule.schema.ts +10 -0
  157. package/schemas/settings/delivery-pricing-rules.schema.ts +5 -0
  158. package/schemas/settings/delivery-pricing-tier.schema.ts +8 -0
  159. package/schemas/settings/delivery-pricing-tiers.schema.ts +5 -0
  160. package/schemas/settings/group-delivery-pricing-rule.schema.ts +9 -0
  161. package/schemas/settings/settings.schema.ts +14 -11
@@ -0,0 +1,9 @@
1
+ import { PreOrderConversionSummarySchema } from './pre-order-conversion-summary.schema';
2
+ import { z } from 'zod';
3
+ import { PreOrderConversionOrderSchema } from './pre-order-conversion-order.schema';
4
+
5
+ export const PreOrderConversionCreatedSchema = z.object({
6
+ preOrderUUID: z.uuid(),
7
+ conversionSummary: PreOrderConversionSummarySchema.nullable().optional(),
8
+ orders: PreOrderConversionOrderSchema.array(),
9
+ });
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ import { OrderStatusEnum } from '../../enum/order-status.enum';
3
+ export const PreOrderConversionCurrentOrderSchema = z.object({
4
+ uuid: z.uuid(),
5
+ number: z.number().int(),
6
+ status: z.enum(OrderStatusEnum).nullable(),
7
+ exists: z.boolean(),
8
+ });
@@ -0,0 +1,10 @@
1
+ import { PreOrderConversionDifferenceFieldEnum } from '../../enum/pre-order-conversion-difference-field.enum';
2
+ import { z } from 'zod';
3
+
4
+ export const PreOrderConversionDifferenceSchema = z.object({
5
+ field: z.enum(PreOrderConversionDifferenceFieldEnum),
6
+ requestedLabel: z.string().nullable().optional(),
7
+ selectedLabel: z.string().nullable().optional(),
8
+ requested: z.string(),
9
+ selected: z.string().nullable(),
10
+ });
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+
3
+ export const PreOrderConversionErrorSchema = z.object({
4
+ preOrderUUID: z.uuid(),
5
+ code: z.string(),
6
+ message: z.string(),
7
+ });
@@ -0,0 +1,6 @@
1
+ import { z } from 'zod';
2
+
3
+ export const PreOrderConversionFailedErrorSchema = z.object({
4
+ code: z.string(),
5
+ message: z.string(),
6
+ });
@@ -0,0 +1,4 @@
1
+ import { z } from 'zod';
2
+ import { PreOrderConversionFailedErrorSchema } from './pre-order-conversion-failed-error.schema';
3
+
4
+ export const PreOrderConversionFailedSchema = z.object({ preOrderUUID: z.uuid(), error: PreOrderConversionFailedErrorSchema });
@@ -0,0 +1,12 @@
1
+ import { PreOrderConversionRemainderSchema } from './pre-order-conversion-remainder.schema';
2
+ import { z } from 'zod';
3
+ import { PreOrderProductExtendedSchema } from '../pre-order-product/pre-order-product.schema';
4
+ import { PreOrderConversionMatchSchema } from './pre-order-conversion-match.schema';
5
+
6
+ export const PreOrderConversionMappingSchema = z.object({
7
+ item: PreOrderProductExtendedSchema,
8
+ matches: z.array(PreOrderConversionMatchSchema),
9
+ warnings: z.array(z.string()),
10
+ remainder: PreOrderConversionRemainderSchema.array().optional(),
11
+ remainingQuantity: z.number(),
12
+ });
@@ -0,0 +1,7 @@
1
+ import { PreOrderConversionAllocationSchema } from './pre-order-conversion-allocation.schema';
2
+
3
+ export const PreOrderConversionMatchDescriptionSchema = PreOrderConversionAllocationSchema.pick({
4
+ kind: true,
5
+ differences: true,
6
+ warnings: true,
7
+ });
@@ -0,0 +1,11 @@
1
+ import { PreOrderConversionMatchDescriptionSchema } from './pre-order-conversion-match-description.schema';
2
+ import { z } from 'zod';
3
+ import { ProductExtendedForAdminSchema } from '../product/product-extended-for-admin.schema';
4
+
5
+ export const PreOrderConversionMatchSchema = z.object({
6
+ product: ProductExtendedForAdminSchema,
7
+ quantity: z.number(),
8
+ description: PreOrderConversionMatchDescriptionSchema.optional(),
9
+ price: z.string().optional(),
10
+ remainingBalance: z.number(),
11
+ });
@@ -0,0 +1,4 @@
1
+ import { z } from 'zod';
2
+ import { OrderSchema } from '../order/order.schema';
3
+
4
+ export const PreOrderConversionOrderSchema = OrderSchema.extend({ warnings: z.string().array() });
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+
3
+ export const PreOrderConversionPlanAllocationSchema = z.object({ productUUID: z.uuid(), quantity: z.number().int().positive() });
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ import { PreOrderConversionPlanLineSchema } from './pre-order-conversion-plan-line.schema';
3
+
4
+ export const PreOrderConversionPlanEntrySchema = z.object({
5
+ preOrderUUID: z.uuid(),
6
+ version: z.string().min(1),
7
+ lines: PreOrderConversionPlanLineSchema.array(),
8
+ });
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+ import { PreOrderConversionPlanAllocationSchema } from './pre-order-conversion-plan-allocation.schema';
3
+
4
+ export const PreOrderConversionPlanLineSchema = z.object({
5
+ preOrderProductUUID: z.uuid(),
6
+ allocations: PreOrderConversionPlanAllocationSchema.array(),
7
+ });
@@ -0,0 +1,3 @@
1
+ import { PreOrderConversionPlanEntrySchema } from './pre-order-conversion-plan-entry.schema';
2
+
3
+ export const PreOrderConversionPreviewPlanEntrySchema = PreOrderConversionPlanEntrySchema.omit({ version: true });
@@ -0,0 +1,7 @@
1
+ import { PreOrderConversionRemainderReasonEnum } from '../../enum/pre-order-conversion-remainder-reason.enum';
2
+ import { z } from 'zod';
3
+
4
+ export const PreOrderConversionRemainderSchema = z.object({
5
+ reason: z.enum(PreOrderConversionRemainderReasonEnum),
6
+ quantity: z.number().int().nonnegative(),
7
+ });
@@ -0,0 +1,4 @@
1
+ import { PreOrderConversionSkipReasonEnum } from '../../enum/pre-order-conversion-skip-reason.enum';
2
+ import { z } from 'zod';
3
+
4
+ export const PreOrderConversionSkippedSchema = z.object({ preOrderUUID: z.uuid(), reason: z.enum(PreOrderConversionSkipReasonEnum) });
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ import { MoneySchema } from '../money.schema';
3
+ import { PreOrderConversionAttributesSchema } from './pre-order-conversion-attributes.schema';
4
+ import { PreOrderConversionRemainderSchema } from './pre-order-conversion-remainder.schema';
5
+ import { PreOrderConversionAllocationSchema } from './pre-order-conversion-allocation.schema';
6
+
7
+ export const PreOrderConversionSummaryLineSchema = z.object({
8
+ preOrderProductUUID: z.uuid(),
9
+ requested: PreOrderConversionAttributesSchema,
10
+ comment: z.string().nullable(),
11
+ stopPrice: MoneySchema.nullable(),
12
+ isReplaceable: z.boolean(),
13
+ requestedQuantity: z.number().int().nonnegative(),
14
+ allocatedQuantity: z.number().int().nonnegative(),
15
+ closedQuantity: z.number().int().nonnegative(),
16
+ remainder: PreOrderConversionRemainderSchema.array(),
17
+ allocations: PreOrderConversionAllocationSchema.array(),
18
+ });
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ import { PreOrderStatusEnum } from '../../enum/pre-order-status.enum';
3
+ import { PreOrderConversionSummaryLineSchema } from './pre-order-conversion-summary-line.schema';
4
+
5
+ export const PreOrderConversionSummarySchema = z.object({
6
+ version: z.literal(1),
7
+ convertedAt: z.iso.datetime(),
8
+ creatorUserUUID: z.uuid(),
9
+ // Статус до оформления — в него предзаказ вернётся при откате. В ранних снимках поля нет.
10
+ previousStatus: z.enum(PreOrderStatusEnum).optional(),
11
+ lines: PreOrderConversionSummaryLineSchema.array(),
12
+ });
@@ -1,7 +1,11 @@
1
+ import { PreOrderFulfillmentSchema } from './pre-order-fulfillment.schema';
1
2
  import { z } from 'zod';
2
3
  import { PreOrderStatusEnum } from '../../enum';
3
4
 
4
5
  export const PreOrderForClientSchema = z.object({
6
+ fulfillment: z.record(z.uuid(), PreOrderFulfillmentSchema).nullable().optional(),
7
+ orderNumbers: z.number().int().array().optional(),
8
+ hasUnavailableOrders: z.boolean().optional(),
5
9
  uuid: z.string(),
6
10
  clientUUID: z.string(),
7
11
  branchUUID: z.string().nullable(),
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+ import { MoneySchema } from '../money.schema';
3
+ export const PreOrderFulfillmentStopPriceSchema = z.object({ limit: MoneySchema, prices: MoneySchema.array(), currency: z.string() });
@@ -0,0 +1,2 @@
1
+ import { z } from 'zod';
2
+ export const PreOrderFulfillmentSubstituteSchema = z.object({ name: z.string(), quantity: z.number().int().positive() });
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ import { PreOrderFulfillmentStatusEnum } from '../../enum/pre-order-fulfillment-status.enum';
3
+ import { PreOrderConversionAttributesSchema } from './pre-order-conversion-attributes.schema';
4
+ import { PreOrderFulfillmentSubstituteSchema } from './pre-order-fulfillment-substitute.schema';
5
+ import { PreOrderFulfillmentStopPriceSchema } from './pre-order-fulfillment-stop-price.schema';
6
+ export const PreOrderFulfillmentSchema = z.object({
7
+ status: z.enum(PreOrderFulfillmentStatusEnum),
8
+ allocated: z.number().int().nonnegative(),
9
+ requested: z.number().int().nonnegative(),
10
+ requestedAttributes: PreOrderConversionAttributesSchema.nullable(),
11
+ substitutes: PreOrderFulfillmentSubstituteSchema.array(),
12
+ stopPrice: PreOrderFulfillmentStopPriceSchema.nullable(),
13
+ });
@@ -1,3 +1,6 @@
1
+ import { PreOrderConversionCurrentOrderSchema } from './pre-order-conversion-current-order.schema';
2
+ import { PreOrderConversionChangeSchema } from './pre-order-conversion-change.schema';
3
+ import { PreOrderConversionSummarySchema } from './pre-order-conversion-summary.schema';
1
4
  import { z } from 'zod';
2
5
  import { PreOrderStatusEnum } from '../../enum/pre-order-status.enum';
3
6
  import { ClientSchema } from '../client/client-base.schema';
@@ -6,6 +9,9 @@ import { PreOrderCollectionSchema } from '../pre-order-collection/pre-order-coll
6
9
  import { MoneySchema } from '../money.schema';
7
10
 
8
11
  export const PreOrderSchema = z.object({
12
+ conversionOrders: PreOrderConversionCurrentOrderSchema.array().optional(),
13
+ conversionChanges: PreOrderConversionChangeSchema.array().optional(),
14
+ conversionSummary: PreOrderConversionSummarySchema.nullable().optional(),
9
15
  uuid: z.string(),
10
16
  clientUUID: z.string(),
11
17
  branchUUID: z.string().nullable(),
@@ -57,7 +63,14 @@ export const UpdatablePreOrderStatusSchema = z.enum([
57
63
  PreOrderStatusEnum.COMPLETED,
58
64
  ]);
59
65
 
60
- export const UpdatePreOrderSchema = PreOrderSchema.omit({ uuid: true, preOrderNum: true, createdAt: true })
66
+ export const UpdatePreOrderSchema = PreOrderSchema.omit({
67
+ uuid: true,
68
+ preOrderNum: true,
69
+ createdAt: true,
70
+ conversionOrders: true,
71
+ conversionSummary: true,
72
+ conversionChanges: true,
73
+ })
61
74
  .partial()
62
75
  .extend({ status: UpdatablePreOrderStatusSchema.optional() });
63
76
 
@@ -0,0 +1,6 @@
1
+ import { z } from 'zod';
2
+
3
+ export const RevertPreOrderConversionOrderSchema = z.object({
4
+ uuid: z.uuid(),
5
+ number: z.number().int(),
6
+ });
@@ -0,0 +1,6 @@
1
+ import { z } from 'zod';
2
+ import { RevertPreOrderConversionResultSchema } from './revert-pre-order-conversion-result.schema';
3
+
4
+ export const RevertPreOrderConversionResponseSchema = z.object({
5
+ data: RevertPreOrderConversionResultSchema,
6
+ });
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ import { PreOrderStatusEnum } from '../../enum/pre-order-status.enum';
3
+ import { RevertPreOrderConversionOrderSchema } from './revert-pre-order-conversion-order.schema';
4
+
5
+ export const RevertPreOrderConversionResultSchema = z.object({
6
+ status: z.enum(PreOrderStatusEnum),
7
+ deletedOrders: RevertPreOrderConversionOrderSchema.array(),
8
+ });
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+ import { PreOrderForClientSchema } from './pre-order-for-client.schema';
3
+ export const UpdatePreOrderWebshopResponseSchema = z.object({ message: z.string().optional(), data: PreOrderForClientSchema });
@@ -0,0 +1,9 @@
1
+ import { z } from 'zod';
2
+ import { DeliveryPricingRuleScopeEnum } from '../../enum/delivery-pricing-rule-scope.enum';
3
+ import { DeliveryPricingTiersSchema } from './delivery-pricing-tiers.schema';
4
+
5
+ export const CityDeliveryPricingRuleSchema = z.object({
6
+ scope: z.literal(DeliveryPricingRuleScopeEnum.CITY),
7
+ value: z.string().trim().min(1),
8
+ tiers: DeliveryPricingTiersSchema,
9
+ });
@@ -0,0 +1,9 @@
1
+ import { z } from 'zod';
2
+ import { DeliveryPricingRuleScopeEnum } from '../../enum/delivery-pricing-rule-scope.enum';
3
+ import { DeliveryPricingTiersSchema } from './delivery-pricing-tiers.schema';
4
+
5
+ export const DefaultDeliveryPricingRuleSchema = z.object({
6
+ scope: z.literal(DeliveryPricingRuleScopeEnum.DEFAULT),
7
+ value: z.null(),
8
+ tiers: DeliveryPricingTiersSchema,
9
+ });
@@ -0,0 +1,10 @@
1
+ import { z } from 'zod';
2
+ import { CityDeliveryPricingRuleSchema } from './city-delivery-pricing-rule.schema';
3
+ import { DefaultDeliveryPricingRuleSchema } from './default-delivery-pricing-rule.schema';
4
+ import { GroupDeliveryPricingRuleSchema } from './group-delivery-pricing-rule.schema';
5
+
6
+ export const DeliveryPricingRuleSchema = z.discriminatedUnion('scope', [
7
+ DefaultDeliveryPricingRuleSchema,
8
+ CityDeliveryPricingRuleSchema,
9
+ GroupDeliveryPricingRuleSchema,
10
+ ]);
@@ -0,0 +1,5 @@
1
+ import { z } from 'zod';
2
+ import { validateUniqueDeliveryPricingRules } from '../../helpers/validate-unique-delivery-pricing-rules.helper';
3
+ import { DeliveryPricingRuleSchema } from './delivery-pricing-rule.schema';
4
+
5
+ export const DeliveryPricingRulesSchema = z.array(DeliveryPricingRuleSchema).superRefine(validateUniqueDeliveryPricingRules);
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ import { NonNegativeMoneySchema } from '../non-negative-money.schema';
3
+
4
+ // JSON tiers follow the same decimal-string precision as monetary database columns.
5
+ export const DeliveryPricingTierSchema = z.object({
6
+ minSubtotal: NonNegativeMoneySchema,
7
+ cost: NonNegativeMoneySchema,
8
+ });
@@ -0,0 +1,5 @@
1
+ import { z } from 'zod';
2
+ import { validateUniqueDeliveryPricingThresholds } from '../../helpers/validate-unique-delivery-pricing-thresholds.helper';
3
+ import { DeliveryPricingTierSchema } from './delivery-pricing-tier.schema';
4
+
5
+ export const DeliveryPricingTiersSchema = z.array(DeliveryPricingTierSchema).superRefine(validateUniqueDeliveryPricingThresholds);
@@ -0,0 +1,9 @@
1
+ import { z } from 'zod';
2
+ import { DeliveryPricingRuleScopeEnum } from '../../enum/delivery-pricing-rule-scope.enum';
3
+ import { DeliveryPricingTiersSchema } from './delivery-pricing-tiers.schema';
4
+
5
+ export const GroupDeliveryPricingRuleSchema = z.object({
6
+ scope: z.literal(DeliveryPricingRuleScopeEnum.GROUP),
7
+ value: z.string().trim().min(1),
8
+ tiers: DeliveryPricingTiersSchema,
9
+ });
@@ -19,7 +19,14 @@ import { DISABLE_ORDERS_MESSAGE_MAX_LENGTH } from '../../constant/settings.const
19
19
  import { ValidationI18nKey } from '../../constant/validation-i18n-key';
20
20
  import { WebshopMainDisplayModeEnum } from '../../enum/webshop-main-display-mode.enum';
21
21
  import { MenuItemsUrlEnum } from '../../enum/menu-items-url.enum';
22
- import { NonNegativeMoneySchema } from '../non-negative-money.schema';
22
+ import { DeliveryPricingInTransitModeEnum } from '../../enum/delivery-pricing-in-transit-mode.enum';
23
+ import { DeliveryPricingRulesSchema } from './delivery-pricing-rules.schema';
24
+ import { DeliveryPricingTierSchema } from './delivery-pricing-tier.schema';
25
+
26
+ // Preserve existing direct imports and contracts package exports.
27
+ export { DeliveryPricingRuleSchema } from './delivery-pricing-rule.schema';
28
+ export { DeliveryPricingRulesSchema } from './delivery-pricing-rules.schema';
29
+ export { DeliveryPricingTierSchema } from './delivery-pricing-tier.schema';
23
30
 
24
31
  export const SettingsWorkingHoursSchema = z.object({
25
32
  uuid: z.string(),
@@ -82,14 +89,6 @@ export const ContactPhoneListSchema = z.array(ContactPhoneSchema).max(CONTACT_PH
82
89
  // только валидация.
83
90
  export const DisableOrdersMessageSchema = z.string().max(DISABLE_ORDERS_MESSAGE_MAX_LENGTH);
84
91
 
85
- // Обе величины — деньги: `minSubtotal` сравнивается с суммой заказа, `cost` попадает в
86
- // `order.delivery_cost`. Живут они внутри JSON-колонки, куда ALTER TABLE не достаёт, поэтому
87
- // точность здесь держит не тип колонки, а формат значения — та же десятичная строка, что и на проводе.
88
- export const DeliveryPricingTierSchema = z.object({
89
- minSubtotal: NonNegativeMoneySchema,
90
- cost: NonNegativeMoneySchema,
91
- });
92
-
93
92
  export const SettingsSchema = z.object({
94
93
  uuid: z.string(),
95
94
  language: z.nativeEnum(LanguageEnum),
@@ -176,6 +175,8 @@ export const SettingsSchema = z.object({
176
175
  });
177
176
 
178
177
  export const SettingsForAdminSchema = SettingsSchema.extend({
178
+ deliveryPricingRules: DeliveryPricingRulesSchema.nullable(),
179
+ deliveryPricingInTransitMode: z.nativeEnum(DeliveryPricingInTransitModeEnum),
179
180
  // post terminal settings
180
181
  vatTag: z.string().nullable(),
181
182
  taxMode: z.string().nullable(),
@@ -273,7 +274,8 @@ export const CreateSettingsSchema = z.object({
273
274
  chatNoManagerMode: z.nativeEnum(ChatNoManagerModeEnum).default(ChatNoManagerModeEnum.ANY_MANAGER),
274
275
  importantMessage: ImportantMessageSchema.nullable().optional(),
275
276
  deliveryPricingEnabled: z.coerce.boolean().optional(),
276
- deliveryPricingTiers: z.array(DeliveryPricingTierSchema).nullable().optional(),
277
+ deliveryPricingRules: DeliveryPricingRulesSchema.nullable().optional(),
278
+ deliveryPricingInTransitMode: z.nativeEnum(DeliveryPricingInTransitModeEnum).optional(),
277
279
  });
278
280
 
279
281
  export const UpdateSettingsRequestSchema = z.object({
@@ -355,7 +357,8 @@ export const UpdateSettingsRequestSchema = z.object({
355
357
  chatNoManagerMode: z.nativeEnum(ChatNoManagerModeEnum).default(ChatNoManagerModeEnum.ANY_MANAGER).optional(),
356
358
  importantMessage: ImportantMessageSchema.nullable().optional(),
357
359
  deliveryPricingEnabled: z.coerce.boolean().optional(),
358
- deliveryPricingTiers: z.array(DeliveryPricingTierSchema).nullable().optional(),
360
+ deliveryPricingRules: DeliveryPricingRulesSchema.nullable().optional(),
361
+ deliveryPricingInTransitMode: z.nativeEnum(DeliveryPricingInTransitModeEnum).optional(),
359
362
  employeeClientScopeEnabled: z.coerce.boolean().optional(),
360
363
  // post terminal settings
361
364
  vatTag: z.string().nullable().optional(),