@floristcloud/api-lib 1.0.52 → 1.0.55

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.
@@ -8,6 +8,7 @@ const GetPreOrderListRequestSchema = zod_1.z.object({
8
8
  page: zod_1.z.string().transform(val => Number(val) || 1),
9
9
  count: zod_1.z.coerce.number().optional().default(10),
10
10
  searchQuery: zod_1.z.string().optional(),
11
+ clientUUID: zod_1.z.string().optional(),
11
12
  preOrderCollectionUUID: zod_1.z.string().optional(),
12
13
  status: zod_1.z.nativeEnum(enum_1.PreOrderStatusEnum).array().optional(),
13
14
  createdAtFrom: zod_1.z.coerce.date().optional(),
@@ -23,3 +23,4 @@ __exportStar(require("./analyze-create-orders-from-pre-orders.command"), exports
23
23
  __exportStar(require("./group-create-orders-from-pre-orders.command"), exports);
24
24
  __exportStar(require("./analyze-copy-pre-orders.command"), exports);
25
25
  __exportStar(require("./group-copy-pre-orders-to-collection.command"), exports);
26
+ __exportStar(require("./merge-pre-orders.command"), exports);
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MergePreOrdersContractCommand = exports.MergePreOrdersGroupAnalysisResponseSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const schemas_1 = require("../../../schemas");
6
+ const MergePreOrdersRequestSchema = zod_1.z.object({
7
+ preOrderUUIDList: zod_1.z.array(zod_1.z.string().uuid()).min(2),
8
+ });
9
+ exports.MergePreOrdersGroupAnalysisResponseSchema = zod_1.z.object({
10
+ clientUUID: zod_1.z.string(),
11
+ branchUUID: zod_1.z.string().nullable(),
12
+ isPossible: zod_1.z.boolean(),
13
+ targetPreOrderUUID: zod_1.z.string().nullable(),
14
+ sourcePreOrdersUUIDs: zod_1.z.array(zod_1.z.string()),
15
+ errors: zod_1.z.array(schemas_1.ErrorMessageSchema),
16
+ warnings: zod_1.z.array(schemas_1.ErrorMessageSchema),
17
+ mergeInfo: zod_1.z
18
+ .object({
19
+ willMergeTags: zod_1.z.boolean(),
20
+ willMergeComments: zod_1.z.boolean(),
21
+ totalProducts: zod_1.z.number(),
22
+ })
23
+ .optional(),
24
+ });
25
+ const MergePreOrdersResponseSchema = zod_1.z.object({
26
+ message: zod_1.z.string().optional(),
27
+ data: zod_1.z.array(exports.MergePreOrdersGroupAnalysisResponseSchema),
28
+ });
29
+ var MergePreOrdersContractCommand;
30
+ (function (MergePreOrdersContractCommand) {
31
+ MergePreOrdersContractCommand.RequestSchema = MergePreOrdersRequestSchema;
32
+ MergePreOrdersContractCommand.ResponseSchema = MergePreOrdersResponseSchema;
33
+ })(MergePreOrdersContractCommand || (exports.MergePreOrdersContractCommand = MergePreOrdersContractCommand = {}));
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MoveGroupPreOrderProductContractCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const MoveGroupPreOrderProductRequestSchema = zod_1.z.object({
6
+ preOrderProductUUIDList: zod_1.z.array(zod_1.z.string().uuid()).min(1),
7
+ newPreOrderUUID: zod_1.z.string().uuid(),
8
+ isDelete: zod_1.z.coerce.boolean().optional().default(true),
9
+ });
10
+ const MoveGroupPreOrderProductResponseSchema = zod_1.z.object({
11
+ message: zod_1.z.string().optional(),
12
+ data: zod_1.z.object({
13
+ success: zod_1.z.boolean(),
14
+ }),
15
+ });
16
+ var MoveGroupPreOrderProductContractCommand;
17
+ (function (MoveGroupPreOrderProductContractCommand) {
18
+ MoveGroupPreOrderProductContractCommand.RequestSchema = MoveGroupPreOrderProductRequestSchema;
19
+ MoveGroupPreOrderProductContractCommand.ResponseSchema = MoveGroupPreOrderProductResponseSchema;
20
+ })(MoveGroupPreOrderProductContractCommand || (exports.MoveGroupPreOrderProductContractCommand = MoveGroupPreOrderProductContractCommand = {}));
@@ -29,3 +29,4 @@ __exportStar(require("./get-pre-order-product-list.query"), exports);
29
29
  __exportStar(require("./get-pre-order-product-extended-list.query"), exports);
30
30
  __exportStar(require("./create-manually-pre-order-product-for-standing-order.command"), exports);
31
31
  __exportStar(require("./get-pre-order-products-by-pre-order-list.command"), exports);
32
+ __exportStar(require("./group/move-group-pre-order-product.command"), exports);
@@ -4,10 +4,20 @@ exports.CreateWriteOffFromPendingContractCommand = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const schemas_1 = require("../../schemas");
6
6
  const enum_1 = require("../../enum");
7
- const CreateWriteOffFromPendingRequestSchema = zod_1.z.object({
7
+ const CreateWriteOffFromPendingRequestSchema = zod_1.z
8
+ .object({
8
9
  quantity: zod_1.z.number().min(1),
9
- comment: zod_1.z.string().nullable(),
10
10
  status: zod_1.z.union([zod_1.z.literal(enum_1.WriteOffStatusEnum.APPROVED), zod_1.z.literal(enum_1.WriteOffStatusEnum.REJECTED)]),
11
+ rejectionReason: zod_1.z.string().optional(),
12
+ })
13
+ .refine(data => {
14
+ if (data.status === enum_1.WriteOffStatusEnum.REJECTED) {
15
+ return data.rejectionReason && data.rejectionReason.trim().length > 0;
16
+ }
17
+ return true;
18
+ }, {
19
+ message: 'rejectionReason is required when status is REJECTED',
20
+ path: ['rejectionReason'],
11
21
  });
12
22
  const CreateWriteOffFromPendingResponseSchema = zod_1.z.object({
13
23
  message: zod_1.z.string().optional(),
@@ -588,6 +588,17 @@ exports.ERRORS = {
588
588
  message: 'Failed to copy pre order',
589
589
  httpCode: 500,
590
590
  },
591
+ PRE_ORDER_MERGE_FAILED: { code: 'PO013', message: 'Pre-order merge failed', httpCode: 500 },
592
+ PRE_ORDER_MERGE_ANALYSIS_FAILED: { code: 'PO014', message: 'Pre-order merge analysis failed', httpCode: 500 },
593
+ PRE_ORDER_MERGE_NO_VALID_GROUPS: { code: 'PO015', message: 'No valid groups found for merge', httpCode: 400 },
594
+ PRE_ORDER_MERGE_NO_COLLECTION: { code: 'PO016', message: 'All pre-orders must belong to a collection for merge', httpCode: 400 },
595
+ PRE_ORDER_MERGE_NOT_ENOUGH: { code: 'PO017', message: 'At least 2 pre-orders required for merge', httpCode: 400 },
596
+ PRE_ORDER_MERGE_STATUS_NOT_ALLOWED: { code: 'PO018', message: 'Pre-order status not allowed for merge', httpCode: 400 },
597
+ PRE_ORDER_MERGE_DIFFERENT_STATUSES: { code: 'PO019', message: 'Pre-orders have different statuses', httpCode: 400 },
598
+ PRE_ORDER_MERGE_DIFFERENT_COLLECTIONS: { code: 'PO020', message: 'All pre-orders must belong to the same collection', httpCode: 400 },
599
+ PRE_ORDER_MERGE_HAS_EMPTY: { code: 'PO021', message: 'Some pre-orders are empty and will be deleted', httpCode: 400 },
600
+ PRE_ORDER_MERGE_TAGS_CONCATENATE: { code: 'PO022', message: 'Pre-orders have different tags', httpCode: 400 },
601
+ PRE_ORDER_MERGE_COMMENTS_CONCATENATE: { code: 'PO023', message: 'Pre-orders have different comments', httpCode: 400 },
591
602
  STANDING_ORDER_CLIENT_NAME_REQUIRED: {
592
603
  code: 'SO001',
593
604
  message: 'Standing order client name is required',
@@ -4,12 +4,14 @@ exports.preOrderProductExtendedListSchema = exports.PreOrderProductListSchema =
4
4
  const zod_1 = require("zod");
5
5
  const pre_order_collection_item_schema_1 = require("../pre-order-collection-item/pre-order-collection-item.schema");
6
6
  const category_schema_1 = require("../category/category.schema");
7
+ const pre_order_collection_item_multiplicity_option_schema_1 = require("../pre-order-collection-item/pre-order-collection-item-multiplicity-option.schema");
7
8
  exports.MatchingConfigSchema = zod_1.z.object({
8
9
  matchByName: zod_1.z.coerce.boolean(),
9
10
  matchByCategory: zod_1.z.coerce.boolean(),
10
11
  matchByColor: zod_1.z.coerce.boolean(),
11
12
  matchBySize: zod_1.z.coerce.boolean(),
12
13
  matchByGrower: zod_1.z.coerce.boolean(),
14
+ usePreOrderMultiplicity: zod_1.z.coerce.boolean().optional(),
13
15
  });
14
16
  exports.PreOrderProductSchema = zod_1.z.object({
15
17
  uuid: zod_1.z.string(),
@@ -36,6 +38,7 @@ exports.PreOrderProductExtendedSchema = exports.PreOrderProductSchema.extend({
36
38
  preOrderCollectionItem: pre_order_collection_item_schema_1.PreOrderCollectionItemExtendedSchema,
37
39
  category: category_schema_1.CategorySchema.nullable(),
38
40
  deliveryDate: zod_1.z.coerce.date().nullable(),
41
+ multiplicityOption: pre_order_collection_item_multiplicity_option_schema_1.PreOrderCollectionItemMultiplicityOptionSchema.nullable().optional(),
39
42
  });
40
43
  exports.CreatePreOrderProductSchema = exports.PreOrderProductSchema.omit({ uuid: true, preOrderUUID: true }).extend({
41
44
  multiplicityOptionUUID: zod_1.z.uuid().nullable().optional(),
@@ -6,6 +6,7 @@ const GetPreOrderListRequestSchema = z.object({
6
6
  page: z.string().transform(val => Number(val) || 1),
7
7
  count: z.coerce.number().optional().default(10),
8
8
  searchQuery: z.string().optional(),
9
+ clientUUID: z.string().optional(),
9
10
  preOrderCollectionUUID: z.string().optional(),
10
11
  status: z.nativeEnum(PreOrderStatusEnum).array().optional(),
11
12
  createdAtFrom: z.coerce.date().optional(),
@@ -7,3 +7,4 @@ export * from './analyze-create-orders-from-pre-orders.command';
7
7
  export * from './group-create-orders-from-pre-orders.command';
8
8
  export * from './analyze-copy-pre-orders.command';
9
9
  export * from './group-copy-pre-orders-to-collection.command';
10
+ export * from './merge-pre-orders.command';
@@ -0,0 +1,36 @@
1
+ import { z } from 'zod';
2
+ import { ErrorMessageSchema } from '../../../schemas';
3
+
4
+ const MergePreOrdersRequestSchema = z.object({
5
+ preOrderUUIDList: z.array(z.string().uuid()).min(2),
6
+ });
7
+
8
+ export const MergePreOrdersGroupAnalysisResponseSchema = z.object({
9
+ clientUUID: z.string(),
10
+ branchUUID: z.string().nullable(),
11
+ isPossible: z.boolean(),
12
+ targetPreOrderUUID: z.string().nullable(),
13
+ sourcePreOrdersUUIDs: z.array(z.string()),
14
+ errors: z.array(ErrorMessageSchema),
15
+ warnings: z.array(ErrorMessageSchema),
16
+ mergeInfo: z
17
+ .object({
18
+ willMergeTags: z.boolean(),
19
+ willMergeComments: z.boolean(),
20
+ totalProducts: z.number(),
21
+ })
22
+ .optional(),
23
+ });
24
+
25
+ const MergePreOrdersResponseSchema = z.object({
26
+ message: z.string().optional(),
27
+ data: z.array(MergePreOrdersGroupAnalysisResponseSchema),
28
+ });
29
+
30
+ export namespace MergePreOrdersContractCommand {
31
+ export const RequestSchema = MergePreOrdersRequestSchema;
32
+ export type Request = z.infer<typeof RequestSchema>;
33
+
34
+ export const ResponseSchema = MergePreOrdersResponseSchema;
35
+ export type Response = z.infer<typeof ResponseSchema>;
36
+ }
@@ -0,0 +1,22 @@
1
+ import { z } from 'zod';
2
+
3
+ const MoveGroupPreOrderProductRequestSchema = z.object({
4
+ preOrderProductUUIDList: z.array(z.string().uuid()).min(1),
5
+ newPreOrderUUID: z.string().uuid(),
6
+ isDelete: z.coerce.boolean().optional().default(true),
7
+ });
8
+
9
+ const MoveGroupPreOrderProductResponseSchema = z.object({
10
+ message: z.string().optional(),
11
+ data: z.object({
12
+ success: z.boolean(),
13
+ }),
14
+ });
15
+
16
+ export namespace MoveGroupPreOrderProductContractCommand {
17
+ export const RequestSchema = MoveGroupPreOrderProductRequestSchema;
18
+ export type Request = z.infer<typeof RequestSchema>;
19
+
20
+ export const ResponseSchema = MoveGroupPreOrderProductResponseSchema;
21
+ export type Response = z.infer<typeof ResponseSchema>;
22
+ }
@@ -13,3 +13,4 @@ export * from './get-pre-order-product-list.query';
13
13
  export * from './get-pre-order-product-extended-list.query';
14
14
  export * from './create-manually-pre-order-product-for-standing-order.command';
15
15
  export * from './get-pre-order-products-by-pre-order-list.command';
16
+ export * from './group/move-group-pre-order-product.command';
@@ -2,11 +2,24 @@ import { z } from 'zod';
2
2
  import { WriteOffSchema } from '../../schemas';
3
3
  import { WriteOffStatusEnum } from '../../enum';
4
4
 
5
- const CreateWriteOffFromPendingRequestSchema = z.object({
6
- quantity: z.number().min(1),
7
- comment: z.string().nullable(),
8
- status: z.union([z.literal(WriteOffStatusEnum.APPROVED), z.literal(WriteOffStatusEnum.REJECTED)]),
9
- });
5
+ const CreateWriteOffFromPendingRequestSchema = z
6
+ .object({
7
+ quantity: z.number().min(1),
8
+ status: z.union([z.literal(WriteOffStatusEnum.APPROVED), z.literal(WriteOffStatusEnum.REJECTED)]),
9
+ rejectionReason: z.string().optional(),
10
+ })
11
+ .refine(
12
+ data => {
13
+ if (data.status === WriteOffStatusEnum.REJECTED) {
14
+ return data.rejectionReason && data.rejectionReason.trim().length > 0;
15
+ }
16
+ return true;
17
+ },
18
+ {
19
+ message: 'rejectionReason is required when status is REJECTED',
20
+ path: ['rejectionReason'],
21
+ },
22
+ );
10
23
 
11
24
  const CreateWriteOffFromPendingResponseSchema = z.object({
12
25
  message: z.string().optional(),
package/constant/error.ts CHANGED
@@ -620,6 +620,17 @@ export const ERRORS = {
620
620
  message: 'Failed to copy pre order',
621
621
  httpCode: 500,
622
622
  },
623
+ PRE_ORDER_MERGE_FAILED: { code: 'PO013', message: 'Pre-order merge failed', httpCode: 500 },
624
+ PRE_ORDER_MERGE_ANALYSIS_FAILED: { code: 'PO014', message: 'Pre-order merge analysis failed', httpCode: 500 },
625
+ PRE_ORDER_MERGE_NO_VALID_GROUPS: { code: 'PO015', message: 'No valid groups found for merge', httpCode: 400 },
626
+ PRE_ORDER_MERGE_NO_COLLECTION: { code: 'PO016', message: 'All pre-orders must belong to a collection for merge', httpCode: 400 },
627
+ PRE_ORDER_MERGE_NOT_ENOUGH: { code: 'PO017', message: 'At least 2 pre-orders required for merge', httpCode: 400 },
628
+ PRE_ORDER_MERGE_STATUS_NOT_ALLOWED: { code: 'PO018', message: 'Pre-order status not allowed for merge', httpCode: 400 },
629
+ PRE_ORDER_MERGE_DIFFERENT_STATUSES: { code: 'PO019', message: 'Pre-orders have different statuses', httpCode: 400 },
630
+ PRE_ORDER_MERGE_DIFFERENT_COLLECTIONS: { code: 'PO020', message: 'All pre-orders must belong to the same collection', httpCode: 400 },
631
+ PRE_ORDER_MERGE_HAS_EMPTY: { code: 'PO021', message: 'Some pre-orders are empty and will be deleted', httpCode: 400 },
632
+ PRE_ORDER_MERGE_TAGS_CONCATENATE: { code: 'PO022', message: 'Pre-orders have different tags', httpCode: 400 },
633
+ PRE_ORDER_MERGE_COMMENTS_CONCATENATE: { code: 'PO023', message: 'Pre-orders have different comments', httpCode: 400 },
623
634
  STANDING_ORDER_CLIENT_NAME_REQUIRED: {
624
635
  code: 'SO001',
625
636
  message: 'Standing order client name is required',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floristcloud/api-lib",
3
- "version": "1.0.52",
3
+ "version": "1.0.55",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "scripts": {
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { PreOrderCollectionItemExtendedSchema } from '../pre-order-collection-item/pre-order-collection-item.schema';
3
3
  import { CategorySchema } from '../category/category.schema';
4
+ import { PreOrderCollectionItemMultiplicityOptionSchema } from '../pre-order-collection-item/pre-order-collection-item-multiplicity-option.schema';
4
5
 
5
6
  export const MatchingConfigSchema = z.object({
6
7
  matchByName: z.coerce.boolean(),
@@ -8,6 +9,7 @@ export const MatchingConfigSchema = z.object({
8
9
  matchByColor: z.coerce.boolean(),
9
10
  matchBySize: z.coerce.boolean(),
10
11
  matchByGrower: z.coerce.boolean(),
12
+ usePreOrderMultiplicity: z.coerce.boolean().optional(),
11
13
  });
12
14
 
13
15
  export const PreOrderProductSchema = z.object({
@@ -36,6 +38,7 @@ export const PreOrderProductExtendedSchema = PreOrderProductSchema.extend({
36
38
  preOrderCollectionItem: PreOrderCollectionItemExtendedSchema,
37
39
  category: CategorySchema.nullable(),
38
40
  deliveryDate: z.coerce.date().nullable(),
41
+ multiplicityOption: PreOrderCollectionItemMultiplicityOptionSchema.nullable().optional(),
39
42
  });
40
43
 
41
44
  export const CreatePreOrderProductSchema = PreOrderProductSchema.omit({ uuid: true, preOrderUUID: true }).extend({