@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.
- package/build/commands/order/get-order-delivery-pricing.query.js +10 -0
- package/build/commands/order/index.js +1 -0
- package/build/commands/pre-order/get-pre-order-by-pre-order-collection-uuid.command.js +2 -6
- package/build/commands/pre-order/group/analyze-create-orders-from-pre-orders.command.js +4 -35
- package/build/commands/pre-order/group/group-create-orders-from-pre-orders.command.js +4 -51
- package/build/commands/pre-order/index.js +1 -0
- package/build/commands/pre-order/revert-pre-order-conversion.command.js +8 -0
- package/build/commands/pre-order/webshop/checkout-pre-order-webshop.command.js +4 -14
- package/build/commands/pre-order/webshop/create-pre-order-webshop.command.js +2 -6
- package/build/commands/pre-order/webshop/update-pre-order-webshop.command.js +2 -6
- package/build/constant/error.js +35 -0
- package/build/enum/delivery-pricing-in-transit-mode.enum.js +8 -0
- package/build/enum/delivery-pricing-rule-scope.enum.js +9 -0
- package/build/enum/index.js +8 -0
- package/build/enum/pre-order-conversion-difference-field.enum.js +11 -0
- package/build/enum/pre-order-conversion-match-kind.enum.js +8 -0
- package/build/enum/pre-order-conversion-remainder-reason.enum.js +10 -0
- package/build/enum/pre-order-conversion-skip-reason.enum.js +7 -0
- package/build/enum/pre-order-conversion-warning.enum.js +8 -0
- package/build/enum/pre-order-fulfillment-status.enum.js +10 -0
- package/build/helpers/canonical-money-key.helper.js +9 -0
- package/build/helpers/normalize-delivery-pricing-value.helper.js +5 -0
- package/build/helpers/validate-unique-delivery-pricing-rules.helper.js +16 -0
- package/build/helpers/validate-unique-delivery-pricing-thresholds.helper.js +14 -0
- package/build/schemas/index.js +4 -0
- package/build/schemas/order/delivery-pricing.schema.js +13 -0
- package/build/schemas/order/get-order-delivery-pricing-request.schema.js +5 -0
- package/build/schemas/order/get-order-delivery-pricing-response.schema.js +9 -0
- package/build/schemas/order/index.js +3 -0
- package/build/schemas/order/order-extended-for-client.schema.js +4 -2
- package/build/schemas/pre-order/analyze-create-orders-from-pre-orders-data.schema.js +10 -0
- package/build/schemas/pre-order/analyze-create-orders-from-pre-orders-request.schema.js +13 -0
- package/build/schemas/pre-order/analyze-create-orders-from-pre-orders-response.schema.js +9 -0
- package/build/schemas/pre-order/checkout-pre-order-webshop-request.schema.js +7 -0
- package/build/schemas/pre-order/checkout-pre-order-webshop-response.schema.js +6 -0
- package/build/schemas/pre-order/create-pre-order-webshop-response.schema.js +6 -0
- package/build/schemas/pre-order/get-pre-order-by-collection-for-client-response.schema.js +6 -0
- package/build/schemas/pre-order/group-create-orders-from-pre-orders-data.schema.js +12 -0
- package/build/schemas/pre-order/group-create-orders-from-pre-orders-request.schema.js +17 -0
- package/build/schemas/pre-order/group-create-orders-from-pre-orders-response.schema.js +9 -0
- package/build/schemas/pre-order/index.js +39 -0
- package/build/schemas/pre-order/pre-order-conversion-allocation.schema.js +23 -0
- package/build/schemas/pre-order/pre-order-conversion-analysis.schema.js +12 -0
- package/build/schemas/pre-order/pre-order-conversion-attributes.schema.js +12 -0
- package/build/schemas/pre-order/pre-order-conversion-change.schema.js +9 -0
- package/build/schemas/pre-order/pre-order-conversion-created.schema.js +11 -0
- package/build/schemas/pre-order/pre-order-conversion-current-order.schema.js +11 -0
- package/build/schemas/pre-order/pre-order-conversion-difference.schema.js +12 -0
- package/build/schemas/pre-order/pre-order-conversion-error.schema.js +9 -0
- package/build/schemas/pre-order/pre-order-conversion-failed-error.schema.js +8 -0
- package/build/schemas/pre-order/pre-order-conversion-failed.schema.js +6 -0
- package/build/schemas/pre-order/pre-order-conversion-mapping.schema.js +14 -0
- package/build/schemas/pre-order/pre-order-conversion-match-description.schema.js +9 -0
- package/build/schemas/pre-order/pre-order-conversion-match.schema.js +13 -0
- package/build/schemas/pre-order/pre-order-conversion-order.schema.js +6 -0
- package/build/schemas/pre-order/pre-order-conversion-plan-allocation.schema.js +5 -0
- package/build/schemas/pre-order/pre-order-conversion-plan-entry.schema.js +10 -0
- package/build/schemas/pre-order/pre-order-conversion-plan-line.schema.js +9 -0
- package/build/schemas/pre-order/pre-order-conversion-preview-plan-entry.schema.js +5 -0
- package/build/schemas/pre-order/pre-order-conversion-remainder.schema.js +9 -0
- package/build/schemas/pre-order/pre-order-conversion-skipped.schema.js +6 -0
- package/build/schemas/pre-order/pre-order-conversion-summary-line.schema.js +20 -0
- package/build/schemas/pre-order/pre-order-conversion-summary.schema.js +14 -0
- package/build/schemas/pre-order/pre-order-for-client.schema.js +4 -0
- package/build/schemas/pre-order/pre-order-fulfillment-stop-price.schema.js +6 -0
- package/build/schemas/pre-order/pre-order-fulfillment-substitute.schema.js +5 -0
- package/build/schemas/pre-order/pre-order-fulfillment.schema.js +16 -0
- package/build/schemas/pre-order/pre-order.schema.js +14 -1
- package/build/schemas/pre-order/revert-pre-order-conversion-order.schema.js +8 -0
- package/build/schemas/pre-order/revert-pre-order-conversion-response.schema.js +8 -0
- package/build/schemas/pre-order/revert-pre-order-conversion-result.schema.js +10 -0
- package/build/schemas/pre-order/update-pre-order-webshop-response.schema.js +6 -0
- package/build/schemas/settings/city-delivery-pricing-rule.schema.js +11 -0
- package/build/schemas/settings/default-delivery-pricing-rule.schema.js +11 -0
- package/build/schemas/settings/delivery-pricing-rule.schema.js +12 -0
- package/build/schemas/settings/delivery-pricing-rules.schema.js +7 -0
- package/build/schemas/settings/delivery-pricing-tier.schema.js +10 -0
- package/build/schemas/settings/delivery-pricing-tiers.schema.js +7 -0
- package/build/schemas/settings/group-delivery-pricing-rule.schema.js +11 -0
- package/build/schemas/settings/settings.schema.js +18 -12
- package/commands/order/get-order-delivery-pricing.query.ts +10 -0
- package/commands/order/index.ts +2 -0
- package/commands/pre-order/get-pre-order-by-pre-order-collection-uuid.command.ts +3 -7
- package/commands/pre-order/group/analyze-create-orders-from-pre-orders.command.ts +3 -49
- package/commands/pre-order/group/group-create-orders-from-pre-orders.command.ts +3 -51
- package/commands/pre-order/index.ts +1 -0
- package/commands/pre-order/revert-pre-order-conversion.command.ts +7 -0
- package/commands/pre-order/webshop/checkout-pre-order-webshop.command.ts +3 -14
- package/commands/pre-order/webshop/create-pre-order-webshop.command.ts +3 -7
- package/commands/pre-order/webshop/update-pre-order-webshop.command.ts +3 -7
- package/constant/error.ts +35 -0
- package/enum/delivery-pricing-in-transit-mode.enum.ts +4 -0
- package/enum/delivery-pricing-rule-scope.enum.ts +5 -0
- package/enum/index.ts +10 -0
- package/enum/pre-order-conversion-difference-field.enum.ts +7 -0
- package/enum/pre-order-conversion-match-kind.enum.ts +4 -0
- package/enum/pre-order-conversion-remainder-reason.enum.ts +6 -0
- package/enum/pre-order-conversion-skip-reason.enum.ts +3 -0
- package/enum/pre-order-conversion-warning.enum.ts +4 -0
- package/enum/pre-order-fulfillment-status.enum.ts +6 -0
- package/helpers/canonical-money-key.helper.ts +5 -0
- package/helpers/normalize-delivery-pricing-value.helper.ts +1 -0
- package/helpers/validate-unique-delivery-pricing-rules.helper.ts +18 -0
- package/helpers/validate-unique-delivery-pricing-thresholds.helper.ts +13 -0
- package/package.json +1 -1
- package/schemas/index.ts +4 -0
- package/schemas/order/delivery-pricing.schema.ts +11 -0
- package/schemas/order/get-order-delivery-pricing-request.schema.ts +3 -0
- package/schemas/order/get-order-delivery-pricing-response.schema.ts +7 -0
- package/schemas/order/index.ts +4 -0
- package/schemas/order/order-extended-for-client.schema.ts +4 -2
- package/schemas/pre-order/analyze-create-orders-from-pre-orders-data.schema.ts +8 -0
- package/schemas/pre-order/analyze-create-orders-from-pre-orders-request.schema.ts +11 -0
- package/schemas/pre-order/analyze-create-orders-from-pre-orders-response.schema.ts +7 -0
- package/schemas/pre-order/checkout-pre-order-webshop-request.schema.ts +4 -0
- package/schemas/pre-order/checkout-pre-order-webshop-response.schema.ts +3 -0
- package/schemas/pre-order/create-pre-order-webshop-response.schema.ts +3 -0
- package/schemas/pre-order/get-pre-order-by-collection-for-client-response.schema.ts +3 -0
- package/schemas/pre-order/group-create-orders-from-pre-orders-data.schema.ts +10 -0
- package/schemas/pre-order/group-create-orders-from-pre-orders-request.schema.ts +15 -0
- package/schemas/pre-order/group-create-orders-from-pre-orders-response.schema.ts +7 -0
- package/schemas/pre-order/index.ts +43 -0
- package/schemas/pre-order/pre-order-conversion-allocation.schema.ts +21 -0
- package/schemas/pre-order/pre-order-conversion-analysis.schema.ts +10 -0
- package/schemas/pre-order/pre-order-conversion-attributes.schema.ts +10 -0
- package/schemas/pre-order/pre-order-conversion-change.schema.ts +7 -0
- package/schemas/pre-order/pre-order-conversion-created.schema.ts +9 -0
- package/schemas/pre-order/pre-order-conversion-current-order.schema.ts +8 -0
- package/schemas/pre-order/pre-order-conversion-difference.schema.ts +10 -0
- package/schemas/pre-order/pre-order-conversion-error.schema.ts +7 -0
- package/schemas/pre-order/pre-order-conversion-failed-error.schema.ts +6 -0
- package/schemas/pre-order/pre-order-conversion-failed.schema.ts +4 -0
- package/schemas/pre-order/pre-order-conversion-mapping.schema.ts +12 -0
- package/schemas/pre-order/pre-order-conversion-match-description.schema.ts +7 -0
- package/schemas/pre-order/pre-order-conversion-match.schema.ts +11 -0
- package/schemas/pre-order/pre-order-conversion-order.schema.ts +4 -0
- package/schemas/pre-order/pre-order-conversion-plan-allocation.schema.ts +3 -0
- package/schemas/pre-order/pre-order-conversion-plan-entry.schema.ts +8 -0
- package/schemas/pre-order/pre-order-conversion-plan-line.schema.ts +7 -0
- package/schemas/pre-order/pre-order-conversion-preview-plan-entry.schema.ts +3 -0
- package/schemas/pre-order/pre-order-conversion-remainder.schema.ts +7 -0
- package/schemas/pre-order/pre-order-conversion-skipped.schema.ts +4 -0
- package/schemas/pre-order/pre-order-conversion-summary-line.schema.ts +18 -0
- package/schemas/pre-order/pre-order-conversion-summary.schema.ts +12 -0
- package/schemas/pre-order/pre-order-for-client.schema.ts +4 -0
- package/schemas/pre-order/pre-order-fulfillment-stop-price.schema.ts +3 -0
- package/schemas/pre-order/pre-order-fulfillment-substitute.schema.ts +2 -0
- package/schemas/pre-order/pre-order-fulfillment.schema.ts +13 -0
- package/schemas/pre-order/pre-order.schema.ts +14 -1
- package/schemas/pre-order/revert-pre-order-conversion-order.schema.ts +6 -0
- package/schemas/pre-order/revert-pre-order-conversion-response.schema.ts +6 -0
- package/schemas/pre-order/revert-pre-order-conversion-result.schema.ts +8 -0
- package/schemas/pre-order/update-pre-order-webshop-response.schema.ts +3 -0
- package/schemas/settings/city-delivery-pricing-rule.schema.ts +9 -0
- package/schemas/settings/default-delivery-pricing-rule.schema.ts +9 -0
- package/schemas/settings/delivery-pricing-rule.schema.ts +10 -0
- package/schemas/settings/delivery-pricing-rules.schema.ts +5 -0
- package/schemas/settings/delivery-pricing-tier.schema.ts +8 -0
- package/schemas/settings/delivery-pricing-tiers.schema.ts +5 -0
- package/schemas/settings/group-delivery-pricing-rule.schema.ts +9 -0
- 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,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,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,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,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,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,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({
|
|
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,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,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 {
|
|
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
|
-
|
|
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
|
-
|
|
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(),
|