@floristcloud/api-lib 1.2.106 → 1.2.107
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/pre-order/group/group-create-standing-orders-from-pre-orders.command.js +39 -0
- package/build/commands/pre-order/group/index.js +1 -0
- package/build/constant/error-i18n-key.js +4 -0
- package/build/constant/error.js +21 -0
- package/build/schemas/pre-order/pre-order.schema.js +16 -2
- package/commands/pre-order/group/group-create-standing-orders-from-pre-orders.command.ts +42 -0
- package/commands/pre-order/group/index.ts +1 -0
- package/constant/error-i18n-key.ts +5 -0
- package/constant/error.ts +21 -0
- package/package.json +1 -1
- package/schemas/pre-order/pre-order.schema.ts +16 -1
package/build/commands/pre-order/group/group-create-standing-orders-from-pre-orders.command.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GroupCreateStandingOrdersFromPreOrdersContractCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const schemas_1 = require("../../../schemas");
|
|
6
|
+
const SourcePreOrderSchema = zod_1.z.object({
|
|
7
|
+
uuid: zod_1.z.uuid(),
|
|
8
|
+
preOrderNum: zod_1.z.number(),
|
|
9
|
+
clientName: zod_1.z.string(),
|
|
10
|
+
});
|
|
11
|
+
const GroupCreateStandingOrdersFromPreOrdersRequestSchema = zod_1.z.object({
|
|
12
|
+
preOrderUUIDList: zod_1.z.uuid().array().min(1),
|
|
13
|
+
});
|
|
14
|
+
const GroupCreateStandingOrdersFromPreOrdersResponseSchema = zod_1.z.object({
|
|
15
|
+
message: zod_1.z.string().optional(),
|
|
16
|
+
data: zod_1.z.object({
|
|
17
|
+
created: zod_1.z
|
|
18
|
+
.object({
|
|
19
|
+
sourcePreOrder: SourcePreOrderSchema,
|
|
20
|
+
standingOrder: schemas_1.PreOrderSchema,
|
|
21
|
+
warnings: zod_1.z.array(schemas_1.ErrorMessageSchema),
|
|
22
|
+
})
|
|
23
|
+
.array(),
|
|
24
|
+
failed: zod_1.z
|
|
25
|
+
.object({
|
|
26
|
+
sourcePreOrder: SourcePreOrderSchema,
|
|
27
|
+
error: zod_1.z.object({
|
|
28
|
+
code: zod_1.z.string(),
|
|
29
|
+
message: zod_1.z.string(),
|
|
30
|
+
}),
|
|
31
|
+
})
|
|
32
|
+
.array(),
|
|
33
|
+
}),
|
|
34
|
+
});
|
|
35
|
+
var GroupCreateStandingOrdersFromPreOrdersContractCommand;
|
|
36
|
+
(function (GroupCreateStandingOrdersFromPreOrdersContractCommand) {
|
|
37
|
+
GroupCreateStandingOrdersFromPreOrdersContractCommand.RequestSchema = GroupCreateStandingOrdersFromPreOrdersRequestSchema;
|
|
38
|
+
GroupCreateStandingOrdersFromPreOrdersContractCommand.ResponseSchema = GroupCreateStandingOrdersFromPreOrdersResponseSchema;
|
|
39
|
+
})(GroupCreateStandingOrdersFromPreOrdersContractCommand || (exports.GroupCreateStandingOrdersFromPreOrdersContractCommand = GroupCreateStandingOrdersFromPreOrdersContractCommand = {}));
|
|
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./group-create-pre-orders-from-standing-orders.command"), exports);
|
|
18
|
+
__exportStar(require("./group-create-standing-orders-from-pre-orders.command"), exports);
|
|
18
19
|
__exportStar(require("./group-delete-pre-order.command"), exports);
|
|
19
20
|
__exportStar(require("./group-update-pre-order.command"), exports);
|
|
20
21
|
__exportStar(require("./analyze-create-pre-orders-from-standing-orders.command"), exports);
|
|
@@ -66,6 +66,10 @@ exports.ErrorI18nKey = {
|
|
|
66
66
|
soProductNotCreated: 'preOrderFromStandingOrder.productNotCreated',
|
|
67
67
|
soCriticalError: 'preOrderFromStandingOrder.criticalError',
|
|
68
68
|
soNoPreOrdersCreated: 'preOrderFromStandingOrder.noPreOrdersCreated',
|
|
69
|
+
// Pre-order → standing-order conversion warnings
|
|
70
|
+
preOrderToSoSourceEmpty: 'preOrderToStandingOrder.sourceEmpty',
|
|
71
|
+
preOrderToSoItemSkipped: 'preOrderToStandingOrder.itemSkipped',
|
|
72
|
+
preOrderToSoProductNotCreated: 'preOrderToStandingOrder.productNotCreated',
|
|
69
73
|
// Copy pre-order per-item warnings
|
|
70
74
|
preOrderCopyItemNoMatches: 'preOrderCopy.itemNoMatches',
|
|
71
75
|
preOrderCopyItemInsufficientQuantity: 'preOrderCopy.itemInsufficientQuantity',
|
package/build/constant/error.js
CHANGED
|
@@ -852,6 +852,27 @@ exports.ERRORS = {
|
|
|
852
852
|
message: 'No pre-orders were created for this standing order: no matching items found in the selected collections',
|
|
853
853
|
httpCode: 400,
|
|
854
854
|
},
|
|
855
|
+
// PRE ORDER — pre-order → standing-order conversion
|
|
856
|
+
PRE_ORDER_TO_STANDING_ORDER_FAILED: {
|
|
857
|
+
code: 'PO044',
|
|
858
|
+
message: 'Failed to create standing order from pre-order',
|
|
859
|
+
httpCode: 500,
|
|
860
|
+
},
|
|
861
|
+
PRE_ORDER_TO_SO_SOURCE_EMPTY: {
|
|
862
|
+
code: 'PO045',
|
|
863
|
+
message: 'Pre-order has no positions to convert into a standing order',
|
|
864
|
+
httpCode: 400,
|
|
865
|
+
},
|
|
866
|
+
PRE_ORDER_TO_SO_ITEM_SKIPPED: {
|
|
867
|
+
code: 'PO046',
|
|
868
|
+
message: 'Position was skipped: a standing-order position requires both a name and a category',
|
|
869
|
+
httpCode: 400,
|
|
870
|
+
},
|
|
871
|
+
PRE_ORDER_TO_SO_PRODUCT_NOT_CREATED: {
|
|
872
|
+
code: 'PO047',
|
|
873
|
+
message: 'Failed to create standing-order position from pre-order position',
|
|
874
|
+
httpCode: 400,
|
|
875
|
+
},
|
|
855
876
|
// PRE ORDER — copy pre-order per-item warnings
|
|
856
877
|
PRE_ORDER_COPY_ITEM_NO_MATCHES: {
|
|
857
878
|
code: 'PO032',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UpdatePreOrderWebshopSchema = exports.CreatePreOrderWebshopSchema = exports.UpdatePreOrderSchema = exports.CreatePreOrderSchema = exports.PreOrderListSchema = exports.PreOrderWithClientSchema = exports.PreOrderExtendedSchema = exports.PreOrderSchema = void 0;
|
|
3
|
+
exports.UpdatePreOrderWebshopSchema = exports.CreatePreOrderWebshopSchema = exports.UpdatePreOrderSchema = exports.UpdatablePreOrderStatusSchema = exports.CreatePreOrderSchema = exports.PreOrderListSchema = exports.PreOrderWithClientSchema = exports.PreOrderExtendedSchema = exports.PreOrderSchema = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const enum_1 = require("../../enum");
|
|
6
6
|
const client_1 = require("../client");
|
|
@@ -40,7 +40,21 @@ exports.CreatePreOrderSchema = zod_1.z.object({
|
|
|
40
40
|
tag: zod_1.z.string().nullable(),
|
|
41
41
|
status: zod_1.z.nativeEnum(enum_1.PreOrderStatusEnum),
|
|
42
42
|
});
|
|
43
|
-
|
|
43
|
+
// STANDING_ORDER is not a status a pre-order can be switched into: an SO must live in the
|
|
44
|
+
// STANDING_ORDER_CATALOG collection with its own 1:1 collection items. Flipping the status alone
|
|
45
|
+
// leaves the pre-order half-converted (shared catalog items, stale reserved balances), so the
|
|
46
|
+
// panel update endpoints only accept the regular lifecycle statuses. Use the pre-order → SO
|
|
47
|
+
// conversion (POST /pre-order/group-actions/create-standing-orders-from-pre-orders) instead.
|
|
48
|
+
exports.UpdatablePreOrderStatusSchema = zod_1.z.enum([
|
|
49
|
+
enum_1.PreOrderStatusEnum.NEW,
|
|
50
|
+
enum_1.PreOrderStatusEnum.WEBSHOP_NEW,
|
|
51
|
+
enum_1.PreOrderStatusEnum.ACCEPTED,
|
|
52
|
+
enum_1.PreOrderStatusEnum.VERIFIED,
|
|
53
|
+
enum_1.PreOrderStatusEnum.COMPLETED,
|
|
54
|
+
]);
|
|
55
|
+
exports.UpdatePreOrderSchema = exports.PreOrderSchema.omit({ uuid: true, preOrderNum: true, createdAt: true })
|
|
56
|
+
.partial()
|
|
57
|
+
.extend({ status: exports.UpdatablePreOrderStatusSchema.optional() });
|
|
44
58
|
exports.CreatePreOrderWebshopSchema = exports.PreOrderSchema.pick({ branchUUID: true, comment: true }).extend({
|
|
45
59
|
preOrderCollectionUUID: zod_1.z.string(),
|
|
46
60
|
branchUUID: zod_1.z.string().nullable().optional(),
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ErrorMessageSchema, PreOrderSchema } from '../../../schemas';
|
|
3
|
+
|
|
4
|
+
const SourcePreOrderSchema = z.object({
|
|
5
|
+
uuid: z.uuid(),
|
|
6
|
+
preOrderNum: z.number(),
|
|
7
|
+
clientName: z.string(),
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
const GroupCreateStandingOrdersFromPreOrdersRequestSchema = z.object({
|
|
11
|
+
preOrderUUIDList: z.uuid().array().min(1),
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
const GroupCreateStandingOrdersFromPreOrdersResponseSchema = z.object({
|
|
15
|
+
message: z.string().optional(),
|
|
16
|
+
data: z.object({
|
|
17
|
+
created: z
|
|
18
|
+
.object({
|
|
19
|
+
sourcePreOrder: SourcePreOrderSchema,
|
|
20
|
+
standingOrder: PreOrderSchema,
|
|
21
|
+
warnings: z.array(ErrorMessageSchema),
|
|
22
|
+
})
|
|
23
|
+
.array(),
|
|
24
|
+
failed: z
|
|
25
|
+
.object({
|
|
26
|
+
sourcePreOrder: SourcePreOrderSchema,
|
|
27
|
+
error: z.object({
|
|
28
|
+
code: z.string(),
|
|
29
|
+
message: z.string(),
|
|
30
|
+
}),
|
|
31
|
+
})
|
|
32
|
+
.array(),
|
|
33
|
+
}),
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
export namespace GroupCreateStandingOrdersFromPreOrdersContractCommand {
|
|
37
|
+
export const RequestSchema = GroupCreateStandingOrdersFromPreOrdersRequestSchema;
|
|
38
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
39
|
+
|
|
40
|
+
export const ResponseSchema = GroupCreateStandingOrdersFromPreOrdersResponseSchema;
|
|
41
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
42
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './group-create-pre-orders-from-standing-orders.command';
|
|
2
|
+
export * from './group-create-standing-orders-from-pre-orders.command';
|
|
2
3
|
export * from './group-delete-pre-order.command';
|
|
3
4
|
export * from './group-update-pre-order.command';
|
|
4
5
|
export * from './analyze-create-pre-orders-from-standing-orders.command';
|
|
@@ -70,6 +70,11 @@ export const ErrorI18nKey = {
|
|
|
70
70
|
soCriticalError: 'preOrderFromStandingOrder.criticalError',
|
|
71
71
|
soNoPreOrdersCreated: 'preOrderFromStandingOrder.noPreOrdersCreated',
|
|
72
72
|
|
|
73
|
+
// Pre-order → standing-order conversion warnings
|
|
74
|
+
preOrderToSoSourceEmpty: 'preOrderToStandingOrder.sourceEmpty',
|
|
75
|
+
preOrderToSoItemSkipped: 'preOrderToStandingOrder.itemSkipped',
|
|
76
|
+
preOrderToSoProductNotCreated: 'preOrderToStandingOrder.productNotCreated',
|
|
77
|
+
|
|
73
78
|
// Copy pre-order per-item warnings
|
|
74
79
|
preOrderCopyItemNoMatches: 'preOrderCopy.itemNoMatches',
|
|
75
80
|
preOrderCopyItemInsufficientQuantity: 'preOrderCopy.itemInsufficientQuantity',
|
package/constant/error.ts
CHANGED
|
@@ -888,6 +888,27 @@ export const ERRORS = {
|
|
|
888
888
|
message: 'No pre-orders were created for this standing order: no matching items found in the selected collections',
|
|
889
889
|
httpCode: 400,
|
|
890
890
|
},
|
|
891
|
+
// PRE ORDER — pre-order → standing-order conversion
|
|
892
|
+
PRE_ORDER_TO_STANDING_ORDER_FAILED: {
|
|
893
|
+
code: 'PO044',
|
|
894
|
+
message: 'Failed to create standing order from pre-order',
|
|
895
|
+
httpCode: 500,
|
|
896
|
+
},
|
|
897
|
+
PRE_ORDER_TO_SO_SOURCE_EMPTY: {
|
|
898
|
+
code: 'PO045',
|
|
899
|
+
message: 'Pre-order has no positions to convert into a standing order',
|
|
900
|
+
httpCode: 400,
|
|
901
|
+
},
|
|
902
|
+
PRE_ORDER_TO_SO_ITEM_SKIPPED: {
|
|
903
|
+
code: 'PO046',
|
|
904
|
+
message: 'Position was skipped: a standing-order position requires both a name and a category',
|
|
905
|
+
httpCode: 400,
|
|
906
|
+
},
|
|
907
|
+
PRE_ORDER_TO_SO_PRODUCT_NOT_CREATED: {
|
|
908
|
+
code: 'PO047',
|
|
909
|
+
message: 'Failed to create standing-order position from pre-order position',
|
|
910
|
+
httpCode: 400,
|
|
911
|
+
},
|
|
891
912
|
// PRE ORDER — copy pre-order per-item warnings
|
|
892
913
|
PRE_ORDER_COPY_ITEM_NO_MATCHES: {
|
|
893
914
|
code: 'PO032',
|
package/package.json
CHANGED
|
@@ -43,7 +43,22 @@ export const CreatePreOrderSchema = z.object({
|
|
|
43
43
|
status: z.nativeEnum(PreOrderStatusEnum),
|
|
44
44
|
});
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
// STANDING_ORDER is not a status a pre-order can be switched into: an SO must live in the
|
|
47
|
+
// STANDING_ORDER_CATALOG collection with its own 1:1 collection items. Flipping the status alone
|
|
48
|
+
// leaves the pre-order half-converted (shared catalog items, stale reserved balances), so the
|
|
49
|
+
// panel update endpoints only accept the regular lifecycle statuses. Use the pre-order → SO
|
|
50
|
+
// conversion (POST /pre-order/group-actions/create-standing-orders-from-pre-orders) instead.
|
|
51
|
+
export const UpdatablePreOrderStatusSchema = z.enum([
|
|
52
|
+
PreOrderStatusEnum.NEW,
|
|
53
|
+
PreOrderStatusEnum.WEBSHOP_NEW,
|
|
54
|
+
PreOrderStatusEnum.ACCEPTED,
|
|
55
|
+
PreOrderStatusEnum.VERIFIED,
|
|
56
|
+
PreOrderStatusEnum.COMPLETED,
|
|
57
|
+
]);
|
|
58
|
+
|
|
59
|
+
export const UpdatePreOrderSchema = PreOrderSchema.omit({ uuid: true, preOrderNum: true, createdAt: true })
|
|
60
|
+
.partial()
|
|
61
|
+
.extend({ status: UpdatablePreOrderStatusSchema.optional() });
|
|
47
62
|
|
|
48
63
|
export const CreatePreOrderWebshopSchema = PreOrderSchema.pick({ branchUUID: true, comment: true }).extend({
|
|
49
64
|
preOrderCollectionUUID: z.string(),
|