@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
package/commands/order/index.ts
CHANGED
|
@@ -25,3 +25,5 @@ export * from './webshop/create-cart.command';
|
|
|
25
25
|
export * from './webshop/get-order-list-for-client.query';
|
|
26
26
|
export * from './webshop/update-cart.command';
|
|
27
27
|
export * from './webshop/get-order-sales-by-month.query';
|
|
28
|
+
|
|
29
|
+
export * from './get-order-delivery-pricing.query';
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
const GetPreOrderResponseSchema = z.object({
|
|
5
|
-
data: PreOrderSchema,
|
|
6
|
-
});
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import { GetPreOrderByCollectionForClientResponseSchema } from '../../schemas/pre-order/get-pre-order-by-collection-for-client-response.schema';
|
|
7
3
|
|
|
8
4
|
export namespace GetPreOrderByPreOrderCollectionUuidContractCommand {
|
|
9
|
-
export const ResponseSchema =
|
|
5
|
+
export const ResponseSchema = GetPreOrderByCollectionForClientResponseSchema;
|
|
10
6
|
export type Response = z.infer<typeof ResponseSchema>;
|
|
11
7
|
}
|
|
@@ -1,52 +1,6 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
PreOrderProductExtendedSchema,
|
|
5
|
-
PreOrderWithClientSchema,
|
|
6
|
-
ProductExtendedForAdminSchema,
|
|
7
|
-
} from '../../../schemas';
|
|
8
|
-
|
|
9
|
-
const AnalyzeCreateOrdersFromPreOrdersRequestSchema = z.object({
|
|
10
|
-
preOrderUUIDs: z.uuid().array(),
|
|
11
|
-
consignmentUUIDs: z.uuid().array(),
|
|
12
|
-
matchingConfig: MatchingConfigSchema.optional().nullable(),
|
|
13
|
-
isProportionalAllocation: z.coerce.boolean().optional(),
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
const AnalyzeCreateOrdersFromPreOrdersResponseSchema = z.object({
|
|
17
|
-
message: z.string().optional(),
|
|
18
|
-
data: z.object({
|
|
19
|
-
analyses: z.array(
|
|
20
|
-
z.object({
|
|
21
|
-
preOrder: PreOrderWithClientSchema,
|
|
22
|
-
mappings: z.record(
|
|
23
|
-
z.string(),
|
|
24
|
-
z.object({
|
|
25
|
-
item: PreOrderProductExtendedSchema,
|
|
26
|
-
matches: z.array(
|
|
27
|
-
z.object({
|
|
28
|
-
product: ProductExtendedForAdminSchema,
|
|
29
|
-
quantity: z.number(),
|
|
30
|
-
remainingBalance: z.number(),
|
|
31
|
-
}),
|
|
32
|
-
),
|
|
33
|
-
warnings: z.array(z.string()),
|
|
34
|
-
remainingQuantity: z.number(),
|
|
35
|
-
}),
|
|
36
|
-
),
|
|
37
|
-
warnings: z.array(z.string()),
|
|
38
|
-
}),
|
|
39
|
-
),
|
|
40
|
-
errorList: z
|
|
41
|
-
.array(
|
|
42
|
-
z.object({
|
|
43
|
-
code: z.string(),
|
|
44
|
-
message: z.string(),
|
|
45
|
-
}),
|
|
46
|
-
)
|
|
47
|
-
.optional(),
|
|
48
|
-
}),
|
|
49
|
-
});
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import { AnalyzeCreateOrdersFromPreOrdersRequestSchema } from '../../../schemas/pre-order/analyze-create-orders-from-pre-orders-request.schema';
|
|
3
|
+
import { AnalyzeCreateOrdersFromPreOrdersResponseSchema } from '../../../schemas/pre-order/analyze-create-orders-from-pre-orders-response.schema';
|
|
50
4
|
|
|
51
5
|
export namespace AnalyzeCreateOrdersFromPreOrdersContractCommand {
|
|
52
6
|
export const RequestSchema = AnalyzeCreateOrdersFromPreOrdersRequestSchema;
|
|
@@ -1,54 +1,6 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
const GroupCreateOrdersFromPreOrdersRequestSchema = z.object({
|
|
5
|
-
preOrderUUIDs: z.uuid().array(),
|
|
6
|
-
consignmentUUIDs: z.uuid().array(),
|
|
7
|
-
matchingConfig: MatchingConfigSchema.optional().nullable(),
|
|
8
|
-
isProportionalAllocation: z.coerce.boolean().optional(),
|
|
9
|
-
orderProductTag: z.string().nullable().optional(),
|
|
10
|
-
/**
|
|
11
|
-
* The conversion the user confirmed in the preview. Without it the server re-runs the analysis
|
|
12
|
-
* and converts whatever it finds at that moment; with it the analysis is skipped and exactly
|
|
13
|
-
* these allocations are created. Carries product choice and quantity only — prices always stay
|
|
14
|
-
* server-side (product price + discount rules).
|
|
15
|
-
*/
|
|
16
|
-
plan: z
|
|
17
|
-
.object({
|
|
18
|
-
preOrderUUID: z.uuid(),
|
|
19
|
-
lines: z
|
|
20
|
-
.object({
|
|
21
|
-
preOrderProductUUID: z.uuid(),
|
|
22
|
-
allocations: z.object({ productUUID: z.uuid(), quantity: z.number().int().positive() }).array(),
|
|
23
|
-
})
|
|
24
|
-
.array(),
|
|
25
|
-
})
|
|
26
|
-
.array()
|
|
27
|
-
.optional(),
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
const GroupCreateOrdersFromPreOrdersResponseSchema = z.object({
|
|
31
|
-
message: z.string().optional(),
|
|
32
|
-
data: z.object({
|
|
33
|
-
created: z
|
|
34
|
-
.object({
|
|
35
|
-
preOrderUUID: z.uuid(),
|
|
36
|
-
orders: OrderSchema.extend({
|
|
37
|
-
warnings: z.string().array(),
|
|
38
|
-
}).array(),
|
|
39
|
-
})
|
|
40
|
-
.array(),
|
|
41
|
-
failed: z
|
|
42
|
-
.object({
|
|
43
|
-
preOrderUUID: z.uuid(),
|
|
44
|
-
error: z.object({
|
|
45
|
-
code: z.string(),
|
|
46
|
-
message: z.string(),
|
|
47
|
-
}),
|
|
48
|
-
})
|
|
49
|
-
.array(),
|
|
50
|
-
}),
|
|
51
|
-
});
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import { GroupCreateOrdersFromPreOrdersRequestSchema } from '../../../schemas/pre-order/group-create-orders-from-pre-orders-request.schema';
|
|
3
|
+
import { GroupCreateOrdersFromPreOrdersResponseSchema } from '../../../schemas/pre-order/group-create-orders-from-pre-orders-response.schema';
|
|
52
4
|
|
|
53
5
|
export namespace GroupCreateOrdersFromPreOrdersContractCommand {
|
|
54
6
|
export const RequestSchema = GroupCreateOrdersFromPreOrdersRequestSchema;
|
|
@@ -11,3 +11,4 @@ export * from './create-order-from-pre-order.command';
|
|
|
11
11
|
export * from './import-standing-order.command';
|
|
12
12
|
export * from './get-standing-order-import-template.command';
|
|
13
13
|
export * from './export-pre-order.command';
|
|
14
|
+
export * from './revert-pre-order-conversion.command';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import { RevertPreOrderConversionResponseSchema } from '../../schemas/pre-order/revert-pre-order-conversion-response.schema';
|
|
3
|
+
|
|
4
|
+
export namespace RevertPreOrderConversionContractCommand {
|
|
5
|
+
export const ResponseSchema = RevertPreOrderConversionResponseSchema;
|
|
6
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
7
|
+
}
|
|
@@ -1,17 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
const CheckoutPreOrderWebshopRequestSchema = z
|
|
5
|
-
.object({
|
|
6
|
-
comment: z.string().nullable().optional(),
|
|
7
|
-
branchUUID: z.string().nullable().optional(),
|
|
8
|
-
})
|
|
9
|
-
.default({});
|
|
10
|
-
|
|
11
|
-
const CheckoutPreOrderWebshopResponseSchema = z.object({
|
|
12
|
-
message: z.string().optional(),
|
|
13
|
-
data: PreOrderSchema,
|
|
14
|
-
});
|
|
1
|
+
import { CheckoutPreOrderWebshopRequestSchema } from '../../../schemas/pre-order/checkout-pre-order-webshop-request.schema';
|
|
2
|
+
import { CheckoutPreOrderWebshopResponseSchema } from '../../../schemas/pre-order/checkout-pre-order-webshop-response.schema';
|
|
3
|
+
import type { z } from 'zod';
|
|
15
4
|
|
|
16
5
|
export namespace CheckoutPreOrderWebshopContractCommand {
|
|
17
6
|
export const RequestSchema = CheckoutPreOrderWebshopRequestSchema;
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
const CreatePreOrderWebshopResponseSchema = z.object({
|
|
5
|
-
message: z.string().optional(),
|
|
6
|
-
data: PreOrderSchema,
|
|
7
|
-
});
|
|
1
|
+
import { CreatePreOrderWebshopResponseSchema } from '../../../schemas/pre-order/create-pre-order-webshop-response.schema';
|
|
2
|
+
import type { z } from 'zod';
|
|
3
|
+
import { CreatePreOrderWebshopSchema } from '../../../schemas';
|
|
8
4
|
|
|
9
5
|
export namespace CreatePreOrderWebshopContractCommand {
|
|
10
6
|
export const RequestSchema = CreatePreOrderWebshopSchema;
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
const UpdatePreOrderWebshopResponseSchema = z.object({
|
|
5
|
-
message: z.string().optional(),
|
|
6
|
-
data: PreOrderSchema,
|
|
7
|
-
});
|
|
1
|
+
import { UpdatePreOrderWebshopResponseSchema } from '../../../schemas/pre-order/update-pre-order-webshop-response.schema';
|
|
2
|
+
import type { z } from 'zod';
|
|
3
|
+
import { UpdatePreOrderWebshopSchema } from '../../../schemas';
|
|
8
4
|
|
|
9
5
|
export namespace UpdatePreOrderWebshopContractCommand {
|
|
10
6
|
export const RequestSchema = UpdatePreOrderWebshopSchema;
|
package/constant/error.ts
CHANGED
|
@@ -1112,6 +1112,41 @@ export const ERRORS = {
|
|
|
1112
1112
|
message: 'Failed to create standing-order position from pre-order position',
|
|
1113
1113
|
httpCode: 400,
|
|
1114
1114
|
},
|
|
1115
|
+
PRE_ORDER_ALREADY_CONVERTED: {
|
|
1116
|
+
code: 'PO059',
|
|
1117
|
+
message: 'The pre-order has already been converted into orders.',
|
|
1118
|
+
httpCode: 409,
|
|
1119
|
+
},
|
|
1120
|
+
PRE_ORDER_NOTHING_MATCHED: {
|
|
1121
|
+
code: 'PO057',
|
|
1122
|
+
message: 'Nothing matched; the pre-order remains open.',
|
|
1123
|
+
httpCode: 400,
|
|
1124
|
+
},
|
|
1125
|
+
PRE_ORDER_CLOSE_REMAINDER_CONFIRMATION_REQUIRED: {
|
|
1126
|
+
code: 'PO058',
|
|
1127
|
+
message: 'Confirm closing the unallocated remainder before conversion.',
|
|
1128
|
+
httpCode: 400,
|
|
1129
|
+
},
|
|
1130
|
+
PRE_ORDER_NOT_CONVERTED: {
|
|
1131
|
+
code: 'PO060',
|
|
1132
|
+
message: 'The pre-order has not been converted into orders.',
|
|
1133
|
+
httpCode: 409,
|
|
1134
|
+
},
|
|
1135
|
+
PRE_ORDER_CONVERSION_REVERT_ORDERS_IN_WORK: {
|
|
1136
|
+
code: 'PO061',
|
|
1137
|
+
message: 'Orders from this conversion are already in work, so the conversion cannot be reverted.',
|
|
1138
|
+
httpCode: 409,
|
|
1139
|
+
},
|
|
1140
|
+
PRE_ORDER_CONVERSION_REVERT_ROWS_MOVED: {
|
|
1141
|
+
code: 'PO062',
|
|
1142
|
+
message: 'Goods from this conversion were moved to other orders, so the conversion cannot be reverted.',
|
|
1143
|
+
httpCode: 409,
|
|
1144
|
+
},
|
|
1145
|
+
PRE_ORDER_CONVERSION_SUMMARY_UNREADABLE: {
|
|
1146
|
+
code: 'PO063',
|
|
1147
|
+
message: 'The conversion snapshot cannot be read, so the orders to delete are unknown.',
|
|
1148
|
+
httpCode: 409,
|
|
1149
|
+
},
|
|
1115
1150
|
PRE_ORDER_CONVERSION_ANALYSIS_STALE: {
|
|
1116
1151
|
code: 'PO048',
|
|
1117
1152
|
message: 'The pre-order changed after the conversion analysis, analyze it again',
|
package/enum/index.ts
CHANGED
|
@@ -152,3 +152,13 @@ export * from './write-off-status.enum';
|
|
|
152
152
|
export * from './one-c-stock-conflict-status.enum';
|
|
153
153
|
export * from './one-c-stock-conflict-line-action.enum';
|
|
154
154
|
export * from './one-c-stock-conflict-line-restriction.enum';
|
|
155
|
+
export * from './pre-order-conversion-match-kind.enum';
|
|
156
|
+
export * from './pre-order-conversion-warning.enum';
|
|
157
|
+
export * from './pre-order-conversion-remainder-reason.enum';
|
|
158
|
+
export * from './pre-order-conversion-difference-field.enum';
|
|
159
|
+
export * from './pre-order-conversion-skip-reason.enum';
|
|
160
|
+
|
|
161
|
+
export * from './pre-order-fulfillment-status.enum';
|
|
162
|
+
|
|
163
|
+
export * from './delivery-pricing-rule-scope.enum';
|
|
164
|
+
export * from './delivery-pricing-in-transit-mode.enum';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Input has already passed MoneySchema. Compare decimal strings without floating point arithmetic. */
|
|
2
|
+
export const canonicalMoneyKey = (value: string): string => {
|
|
3
|
+
const [integer, fraction = ''] = value.split('.');
|
|
4
|
+
return `${integer.replace(/^0+(?=\d)/, '')}.${(fraction + '00').slice(0, 2)}`;
|
|
5
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const normalizeDeliveryPricingValue = (value: string): string => value.trim().toLowerCase();
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { RefinementCtx } from 'zod';
|
|
2
|
+
import { DeliveryPricingRuleScopeEnum } from '../enum/delivery-pricing-rule-scope.enum';
|
|
3
|
+
import { normalizeDeliveryPricingValue } from './normalize-delivery-pricing-value.helper';
|
|
4
|
+
|
|
5
|
+
export function validateUniqueDeliveryPricingRules(
|
|
6
|
+
rules: { scope: DeliveryPricingRuleScopeEnum; value: string | null }[],
|
|
7
|
+
ctx: RefinementCtx,
|
|
8
|
+
): void {
|
|
9
|
+
const seen = new Set<string>();
|
|
10
|
+
rules.forEach((rule, index) => {
|
|
11
|
+
const value = normalizeDeliveryPricingValue(rule.value ?? '');
|
|
12
|
+
const key = `${rule.scope}:${value}`;
|
|
13
|
+
if (seen.has(key)) {
|
|
14
|
+
ctx.addIssue({ code: 'custom', path: [index, 'value'], message: 'Duplicate delivery pricing rule' });
|
|
15
|
+
}
|
|
16
|
+
seen.add(key);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { RefinementCtx } from 'zod';
|
|
2
|
+
import { canonicalMoneyKey } from './canonical-money-key.helper';
|
|
3
|
+
|
|
4
|
+
export function validateUniqueDeliveryPricingThresholds(tiers: { minSubtotal: string }[], ctx: RefinementCtx): void {
|
|
5
|
+
const thresholds = new Set<string>();
|
|
6
|
+
tiers.forEach((tier, index) => {
|
|
7
|
+
const key = canonicalMoneyKey(tier.minSubtotal);
|
|
8
|
+
if (thresholds.has(key)) {
|
|
9
|
+
ctx.addIssue({ code: 'custom', path: [index, 'minSubtotal'], message: 'Duplicate delivery pricing threshold' });
|
|
10
|
+
}
|
|
11
|
+
thresholds.add(key);
|
|
12
|
+
});
|
|
13
|
+
}
|
package/package.json
CHANGED
package/schemas/index.ts
CHANGED
|
@@ -107,6 +107,10 @@ export * from './report/user-activity-summary-row.schema';
|
|
|
107
107
|
export * from './report/user-activity-timeline-row.schema';
|
|
108
108
|
export * from './service/service.schema';
|
|
109
109
|
export * from './settings/settings.schema';
|
|
110
|
+
export * from './settings/city-delivery-pricing-rule.schema';
|
|
111
|
+
export * from './settings/default-delivery-pricing-rule.schema';
|
|
112
|
+
export * from './settings/group-delivery-pricing-rule.schema';
|
|
113
|
+
export * from './settings/delivery-pricing-tiers.schema';
|
|
110
114
|
export * from './transaction';
|
|
111
115
|
export * from './transaction/transaction-list.schema';
|
|
112
116
|
export * from './transaction/transaction.schema';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { MoneySchema } from '../money.schema';
|
|
3
|
+
import { DeliveryPricingTierSchema } from '../settings/delivery-pricing-tier.schema';
|
|
4
|
+
import { DeliveryPricingInTransitModeEnum } from '../../enum/delivery-pricing-in-transit-mode.enum';
|
|
5
|
+
|
|
6
|
+
export const DeliveryPricingSchema = z.object({
|
|
7
|
+
cost: MoneySchema,
|
|
8
|
+
inStockSubtotal: MoneySchema,
|
|
9
|
+
tiers: z.array(DeliveryPricingTierSchema),
|
|
10
|
+
inTransitMode: z.nativeEnum(DeliveryPricingInTransitModeEnum),
|
|
11
|
+
});
|
package/schemas/order/index.ts
CHANGED
|
@@ -12,3 +12,7 @@ export * from './order.schema';
|
|
|
12
12
|
export * from './update-cart-delivery-request.schema';
|
|
13
13
|
export * from './update-cart-request.schema';
|
|
14
14
|
export * from './update-cart-response.schema';
|
|
15
|
+
|
|
16
|
+
export * from './delivery-pricing.schema';
|
|
17
|
+
export * from './get-order-delivery-pricing-request.schema';
|
|
18
|
+
export * from './get-order-delivery-pricing-response.schema';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DeliveryPricingSchema } from './delivery-pricing.schema';
|
|
1
2
|
import { z } from 'zod';
|
|
2
3
|
import { OrderForClientSchema } from './order-for-client.schema';
|
|
3
4
|
import { ClientForClientSchema } from '../client/client-for-client.schema';
|
|
@@ -11,7 +12,8 @@ export const OrderExtendedForClientSchema = OrderForClientSchema.extend({
|
|
|
11
12
|
delivery: OrderDeliverySchema.nullable(),
|
|
12
13
|
writeOffSum: MoneySchema,
|
|
13
14
|
consignmentDeliveryDates: z.union([z.date(), z.literal('in-stock')]).array(),
|
|
14
|
-
// Server
|
|
15
|
-
|
|
15
|
+
// Server quote for the current cart; transit products do not contribute to the stock threshold.
|
|
16
|
+
deliveryPricing: DeliveryPricingSchema.nullable(),
|
|
17
|
+
/** @deprecated One-release compatibility alias for deliveryPricing.cost. */
|
|
16
18
|
deliveryCostPreview: MoneySchema.nullable(),
|
|
17
19
|
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { PreOrderConversionAnalysisSchema } from './pre-order-conversion-analysis.schema';
|
|
3
|
+
import { PreOrderConversionErrorSchema } from './pre-order-conversion-error.schema';
|
|
4
|
+
|
|
5
|
+
export const AnalyzeCreateOrdersFromPreOrdersDataSchema = z.object({
|
|
6
|
+
analyses: z.array(PreOrderConversionAnalysisSchema),
|
|
7
|
+
errorList: z.array(PreOrderConversionErrorSchema).optional(),
|
|
8
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PreOrderConversionPreviewPlanEntrySchema } from './pre-order-conversion-preview-plan-entry.schema';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { MatchingConfigSchema } from '../pre-order-product/matching-config.schema';
|
|
4
|
+
|
|
5
|
+
export const AnalyzeCreateOrdersFromPreOrdersRequestSchema = z.object({
|
|
6
|
+
plan: PreOrderConversionPreviewPlanEntrySchema.array().optional(),
|
|
7
|
+
preOrderUUIDs: z.uuid().array(),
|
|
8
|
+
consignmentUUIDs: z.uuid().array(),
|
|
9
|
+
matchingConfig: MatchingConfigSchema.optional().nullable(),
|
|
10
|
+
isProportionalAllocation: z.coerce.boolean().optional(),
|
|
11
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { AnalyzeCreateOrdersFromPreOrdersDataSchema } from './analyze-create-orders-from-pre-orders-data.schema';
|
|
3
|
+
|
|
4
|
+
export const AnalyzeCreateOrdersFromPreOrdersResponseSchema = z.object({
|
|
5
|
+
message: z.string().optional(),
|
|
6
|
+
data: AnalyzeCreateOrdersFromPreOrdersDataSchema,
|
|
7
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PreOrderConversionSkippedSchema } from './pre-order-conversion-skipped.schema';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { PreOrderConversionCreatedSchema } from './pre-order-conversion-created.schema';
|
|
4
|
+
import { PreOrderConversionFailedSchema } from './pre-order-conversion-failed.schema';
|
|
5
|
+
|
|
6
|
+
export const GroupCreateOrdersFromPreOrdersDataSchema = z.object({
|
|
7
|
+
created: PreOrderConversionCreatedSchema.array(),
|
|
8
|
+
skipped: PreOrderConversionSkippedSchema.array(),
|
|
9
|
+
failed: PreOrderConversionFailedSchema.array(),
|
|
10
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { MatchingConfigSchema } from '../pre-order-product/matching-config.schema';
|
|
3
|
+
import { PreOrderConversionPlanEntrySchema } from './pre-order-conversion-plan-entry.schema';
|
|
4
|
+
|
|
5
|
+
export const GroupCreateOrdersFromPreOrdersRequestSchema = z.object({
|
|
6
|
+
preOrderUUIDs: z.uuid().array(),
|
|
7
|
+
consignmentUUIDs: z.uuid().array(),
|
|
8
|
+
matchingConfig: MatchingConfigSchema.optional().nullable(),
|
|
9
|
+
isProportionalAllocation: z.coerce.boolean().optional(),
|
|
10
|
+
orderProductTag: z.string().nullable().optional(),
|
|
11
|
+
confirmCloseRemainder: z.boolean().optional(),
|
|
12
|
+
// Оформляется только подтверждённый сотрудником план: без него сервер подобрал бы товары заново, и в заказы
|
|
13
|
+
// ушли бы распределения и цены, которых сотрудник не видел.
|
|
14
|
+
plan: PreOrderConversionPlanEntrySchema.array(),
|
|
15
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { GroupCreateOrdersFromPreOrdersDataSchema } from './group-create-orders-from-pre-orders-data.schema';
|
|
3
|
+
|
|
4
|
+
export const GroupCreateOrdersFromPreOrdersResponseSchema = z.object({
|
|
5
|
+
message: z.string().optional(),
|
|
6
|
+
data: GroupCreateOrdersFromPreOrdersDataSchema,
|
|
7
|
+
});
|
|
@@ -37,3 +37,46 @@ export * from './standing-order-conversion-plan-line.schema';
|
|
|
37
37
|
export * from './standing-order-conversion-result.schema';
|
|
38
38
|
export * from './standing-order-conversion-target-pre-order.schema';
|
|
39
39
|
export * from './standing-order-conversion-target.schema';
|
|
40
|
+
export * from './pre-order-conversion-plan-allocation.schema';
|
|
41
|
+
export * from './pre-order-conversion-failed-error.schema';
|
|
42
|
+
export * from './group-create-orders-from-pre-orders-data.schema';
|
|
43
|
+
export * from './group-create-orders-from-pre-orders-request.schema';
|
|
44
|
+
export * from './group-create-orders-from-pre-orders-response.schema';
|
|
45
|
+
export * from './pre-order-conversion-match.schema';
|
|
46
|
+
export * from './pre-order-conversion-mapping.schema';
|
|
47
|
+
export * from './pre-order-conversion-analysis.schema';
|
|
48
|
+
export * from './pre-order-conversion-error.schema';
|
|
49
|
+
export * from './analyze-create-orders-from-pre-orders-data.schema';
|
|
50
|
+
export * from './analyze-create-orders-from-pre-orders-request.schema';
|
|
51
|
+
export * from './analyze-create-orders-from-pre-orders-response.schema';
|
|
52
|
+
export * from './pre-order-conversion-plan-line.schema';
|
|
53
|
+
export * from './pre-order-conversion-plan-entry.schema';
|
|
54
|
+
export * from './pre-order-conversion-order.schema';
|
|
55
|
+
export * from './pre-order-conversion-created.schema';
|
|
56
|
+
export * from './pre-order-conversion-failed.schema';
|
|
57
|
+
export * from './pre-order-conversion-attributes.schema';
|
|
58
|
+
export * from './pre-order-conversion-difference.schema';
|
|
59
|
+
export * from './pre-order-conversion-remainder.schema';
|
|
60
|
+
export * from './pre-order-conversion-allocation.schema';
|
|
61
|
+
export * from './pre-order-conversion-summary-line.schema';
|
|
62
|
+
export * from './pre-order-conversion-summary.schema';
|
|
63
|
+
export * from './pre-order-conversion-match-description.schema';
|
|
64
|
+
export * from './pre-order-conversion-change.schema';
|
|
65
|
+
export * from './pre-order-conversion-skipped.schema';
|
|
66
|
+
export * from './pre-order-conversion-preview-plan-entry.schema';
|
|
67
|
+
|
|
68
|
+
export * from './pre-order-fulfillment-substitute.schema';
|
|
69
|
+
|
|
70
|
+
export * from './pre-order-fulfillment-stop-price.schema';
|
|
71
|
+
|
|
72
|
+
export * from './pre-order-fulfillment.schema';
|
|
73
|
+
|
|
74
|
+
export * from './pre-order-conversion-current-order.schema';
|
|
75
|
+
export * from './create-pre-order-webshop-response.schema';
|
|
76
|
+
export * from './update-pre-order-webshop-response.schema';
|
|
77
|
+
export * from './checkout-pre-order-webshop-request.schema';
|
|
78
|
+
export * from './checkout-pre-order-webshop-response.schema';
|
|
79
|
+
export * from './get-pre-order-by-collection-for-client-response.schema';
|
|
80
|
+
export * from './revert-pre-order-conversion-order.schema';
|
|
81
|
+
export * from './revert-pre-order-conversion-result.schema';
|
|
82
|
+
export * from './revert-pre-order-conversion-response.schema';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { PreOrderConversionWarningEnum } from '../../enum/pre-order-conversion-warning.enum';
|
|
2
|
+
import { PreOrderConversionMatchKindEnum } from '../../enum/pre-order-conversion-match-kind.enum';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { MoneySchema } from '../money.schema';
|
|
5
|
+
import { PreOrderConversionDifferenceSchema } from './pre-order-conversion-difference.schema';
|
|
6
|
+
import { PreOrderConversionAttributesSchema } from './pre-order-conversion-attributes.schema';
|
|
7
|
+
|
|
8
|
+
export const PreOrderConversionAllocationSchema = z.object({
|
|
9
|
+
orderUUID: z.uuid(),
|
|
10
|
+
orderId: z.number().int(),
|
|
11
|
+
orderProductUUID: z.uuid(),
|
|
12
|
+
productUUID: z.uuid(),
|
|
13
|
+
quantity: z.number().int().positive(),
|
|
14
|
+
orderProductQuantity: z.number().int().positive(),
|
|
15
|
+
price: MoneySchema,
|
|
16
|
+
multiplicityOptionUUID: z.string().nullable(),
|
|
17
|
+
kind: z.enum(PreOrderConversionMatchKindEnum),
|
|
18
|
+
differences: PreOrderConversionDifferenceSchema.array(),
|
|
19
|
+
warnings: z.enum(PreOrderConversionWarningEnum).array(),
|
|
20
|
+
product: PreOrderConversionAttributesSchema,
|
|
21
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { PreOrderWithClientSchema } from './pre-order.schema';
|
|
3
|
+
import { PreOrderConversionMappingSchema } from './pre-order-conversion-mapping.schema';
|
|
4
|
+
|
|
5
|
+
export const PreOrderConversionAnalysisSchema = z.object({
|
|
6
|
+
version: z.string().optional(),
|
|
7
|
+
preOrder: PreOrderWithClientSchema,
|
|
8
|
+
mappings: z.record(z.string(), PreOrderConversionMappingSchema),
|
|
9
|
+
warnings: z.array(z.string()),
|
|
10
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
export const PreOrderConversionAttributesSchema = z.object({
|
|
4
|
+
name: z.string().nullable(),
|
|
5
|
+
size: z.string().nullable(),
|
|
6
|
+
color: z.string().nullable(),
|
|
7
|
+
grower: z.string().nullable(),
|
|
8
|
+
categoryUUID: z.string().nullable(),
|
|
9
|
+
categoryName: z.string().nullable(),
|
|
10
|
+
});
|