aivilife-contracts 4.2.0 → 4.4.0

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.
@@ -0,0 +1,369 @@
1
+ import { z } from 'zod';
2
+
3
+ // src/warehouse/warehouse.enums.ts
4
+ var WarehouseStatus = {
5
+ DRAFT: "DRAFT",
6
+ ACTIVE: "ACTIVE",
7
+ SUSPENDED: "SUSPENDED",
8
+ ARCHIVED: "ARCHIVED"
9
+ };
10
+ var WarehouseAssignmentType = {
11
+ STAFF: "STAFF",
12
+ CUSTOMER_DEFAULT: "CUSTOMER_DEFAULT"
13
+ };
14
+ var WarehouseRequestType = {
15
+ REPLENISHMENT: "REPLENISHMENT",
16
+ WRITE_OFF: "WRITE_OFF",
17
+ TRANSFER: "TRANSFER"
18
+ };
19
+ var WarehouseRequestStatus = {
20
+ DRAFT: "DRAFT",
21
+ PENDING_REVIEW: "PENDING_REVIEW",
22
+ APPROVED: "APPROVED",
23
+ READY_TO_SHIP: "READY_TO_SHIP",
24
+ IN_TRANSIT: "IN_TRANSIT",
25
+ COMPLETED: "COMPLETED",
26
+ REJECTED: "REJECTED",
27
+ CANCELLED: "CANCELLED",
28
+ DISCREPANCY_REPORTED: "DISCREPANCY_REPORTED",
29
+ FAILED: "FAILED"
30
+ };
31
+ var WarehouseMovementType = {
32
+ REPLENISHMENT: "REPLENISHMENT",
33
+ WRITE_OFF: "WRITE_OFF",
34
+ TRANSFER_OUT: "TRANSFER_OUT",
35
+ TRANSFER_IN: "TRANSFER_IN",
36
+ ORDER_ISSUE: "ORDER_ISSUE"
37
+ };
38
+ var WarehouseWriteOffReason = {
39
+ DEFECT: "DEFECT",
40
+ DAMAGED: "DAMAGED",
41
+ EXPIRED: "EXPIRED",
42
+ LOST: "LOST",
43
+ INVENTORY_SHORTAGE: "INVENTORY_SHORTAGE",
44
+ OTHER: "OTHER"
45
+ };
46
+ var WarehouseWeekday = {
47
+ MONDAY: "MONDAY",
48
+ TUESDAY: "TUESDAY",
49
+ WEDNESDAY: "WEDNESDAY",
50
+ THURSDAY: "THURSDAY",
51
+ FRIDAY: "FRIDAY",
52
+ SATURDAY: "SATURDAY",
53
+ SUNDAY: "SUNDAY"
54
+ };
55
+ var PageSchema = z.coerce.number().int().min(1).default(1);
56
+ var LimitSchema = z.coerce.number().int().min(1).max(100).default(20);
57
+ var SortOrderSchema = z.enum(["asc", "desc"]).default("desc");
58
+ z.object({
59
+ page: PageSchema.optional(),
60
+ limit: LimitSchema.optional()
61
+ });
62
+
63
+ // src/common/list-query.schemas.ts
64
+ var DateFromSchema = z.string().datetime().optional();
65
+ var DateToSchema = z.string().datetime().optional();
66
+ var SearchSchema = z.string().trim().min(1).max(255).optional();
67
+ var BaseListQuerySchema = z.object({
68
+ page: PageSchema.optional(),
69
+ limit: LimitSchema.optional(),
70
+ search: SearchSchema,
71
+ dateFrom: DateFromSchema,
72
+ dateTo: DateToSchema,
73
+ sortOrder: SortOrderSchema.optional()
74
+ });
75
+
76
+ // src/warehouse/warehouse.schemas.ts
77
+ var PublicIdSchema = z.uuid();
78
+ var CodeSchema = z.string().trim().toUpperCase().regex(/^[A-Z0-9][A-Z0-9_-]{1,63}$/);
79
+ var DateSchema = z.iso.date();
80
+ var DateTimeSchema = z.iso.datetime();
81
+ var TimeSchema = z.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/);
82
+ var NullableTrimmedSchema = (max) => z.string().trim().min(1).max(max).nullable().optional();
83
+ var WarehouseDayScheduleSchema = z.object({
84
+ isOpen: z.boolean(),
85
+ opensAt: TimeSchema.nullable(),
86
+ closesAt: TimeSchema.nullable()
87
+ }).superRefine((value, context) => {
88
+ if (value.isOpen && (!value.opensAt || !value.closesAt)) {
89
+ context.addIssue({
90
+ code: "custom",
91
+ message: "\u0414\u043B\u044F \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u0434\u043D\u044F \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u0432\u0440\u0435\u043C\u044F \u043E\u0442\u043A\u0440\u044B\u0442\u0438\u044F \u0438 \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u044F"
92
+ });
93
+ }
94
+ if (!value.isOpen && (value.opensAt || value.closesAt)) {
95
+ context.addIssue({
96
+ code: "custom",
97
+ message: "\u0414\u043B\u044F \u0432\u044B\u0445\u043E\u0434\u043D\u043E\u0433\u043E \u0434\u043D\u044F \u0432\u0440\u0435\u043C\u044F \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043F\u0443\u0441\u0442\u044B\u043C"
98
+ });
99
+ }
100
+ if (value.isOpen && value.opensAt && value.closesAt && value.opensAt >= value.closesAt) {
101
+ context.addIssue({
102
+ code: "custom",
103
+ message: "\u0412\u0440\u0435\u043C\u044F \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u044F \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043F\u043E\u0437\u0436\u0435 \u0432\u0440\u0435\u043C\u0435\u043D\u0438 \u043E\u0442\u043A\u0440\u044B\u0442\u0438\u044F"
104
+ });
105
+ }
106
+ });
107
+ var WarehouseWeeklyScheduleSchema = z.record(
108
+ z.enum(WarehouseWeekday),
109
+ WarehouseDayScheduleSchema
110
+ );
111
+ var WarehouseFieldsSchema = z.object({
112
+ name: z.string().trim().min(2).max(160),
113
+ countryCode: z.string().trim().toUpperCase().length(2),
114
+ country: z.string().trim().min(2).max(120),
115
+ city: z.string().trim().min(1).max(160),
116
+ address: z.string().trim().min(3).max(500),
117
+ phoneNumber: z.string().trim().min(7).max(32),
118
+ mapUrl: z.url().max(2e3).refine((value) => new URL(value).protocol === "https:", {
119
+ message: "\u0421\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 \u043A\u0430\u0440\u0442\u0443 \u0434\u043E\u043B\u0436\u043D\u0430 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C HTTPS"
120
+ }),
121
+ timezone: z.string().trim().min(1).max(64),
122
+ schedule: WarehouseWeeklyScheduleSchema,
123
+ isPickupPoint: z.boolean()
124
+ });
125
+ var CreateWarehouseRequestSchema = WarehouseFieldsSchema.extend({
126
+ code: CodeSchema,
127
+ isPickupPoint: WarehouseFieldsSchema.shape.isPickupPoint.default(true)
128
+ });
129
+ var UpdateWarehouseRequestSchema = WarehouseFieldsSchema.partial().extend({ version: z.number().int().positive() }).required({ version: true });
130
+ var WarehousePublicIdParamSchema = z.object({
131
+ publicId: PublicIdSchema
132
+ });
133
+ var WarehouseAssignmentParamSchema = z.object({
134
+ publicId: PublicIdSchema,
135
+ assignmentPublicId: PublicIdSchema
136
+ });
137
+ var WarehouseListQuerySchema = BaseListQuerySchema.extend({
138
+ status: z.enum(WarehouseStatus).optional(),
139
+ countryCode: z.string().trim().toUpperCase().length(2).optional(),
140
+ city: z.string().trim().min(1).max(160).optional()
141
+ });
142
+ var WarehouseUserSearchQuerySchema = z.object({
143
+ search: z.string().trim().min(2).max(100),
144
+ page: z.coerce.number().int().min(1).default(1),
145
+ limit: z.coerce.number().int().min(1).max(20).default(20)
146
+ });
147
+ var AssignWarehouseUserRequestSchema = z.object({
148
+ userUuid: z.string().trim().min(3).max(32),
149
+ type: z.enum(WarehouseAssignmentType)
150
+ });
151
+ var WarehouseRequestLineInputSchema = z.object({
152
+ variantPublicId: PublicIdSchema,
153
+ quantity: z.number().int().positive().max(1e9),
154
+ expiresAt: DateSchema.nullable().optional(),
155
+ batchNumber: NullableTrimmedSchema(120),
156
+ comment: NullableTrimmedSchema(1e3)
157
+ });
158
+ var CreateWarehouseOperationRequestSchema = z.object({
159
+ type: z.enum(WarehouseRequestType),
160
+ sourceWarehousePublicId: PublicIdSchema.nullable().optional(),
161
+ destinationWarehousePublicId: PublicIdSchema.nullable().optional(),
162
+ writeOffReason: z.enum(WarehouseWriteOffReason).nullable().optional(),
163
+ comment: z.string().trim().max(2e3).nullable().optional(),
164
+ lines: z.array(WarehouseRequestLineInputSchema).min(1).max(500)
165
+ }).superRefine((value, context) => {
166
+ const source = value.sourceWarehousePublicId ?? null;
167
+ const destination = value.destinationWarehousePublicId ?? null;
168
+ if (value.type === WarehouseRequestType.REPLENISHMENT) {
169
+ if (!destination || source) {
170
+ context.addIssue({
171
+ code: "custom",
172
+ path: ["destinationWarehousePublicId"],
173
+ message: "\u0414\u043B\u044F \u043F\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F \u043D\u0443\u0436\u0435\u043D \u0442\u043E\u043B\u044C\u043A\u043E \u0441\u043A\u043B\u0430\u0434 \u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F"
174
+ });
175
+ }
176
+ value.lines.forEach((line, index) => {
177
+ if (!line.expiresAt) {
178
+ context.addIssue({
179
+ code: "custom",
180
+ path: ["lines", index, "expiresAt"],
181
+ message: "\u0421\u0440\u043E\u043A \u0433\u043E\u0434\u043D\u043E\u0441\u0442\u0438 \u043F\u043E\u0441\u0442\u0443\u043F\u043B\u0435\u043D\u0438\u044F \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u0435\u043D"
182
+ });
183
+ }
184
+ });
185
+ }
186
+ if (value.type === WarehouseRequestType.WRITE_OFF) {
187
+ if (!source || destination) {
188
+ context.addIssue({
189
+ code: "custom",
190
+ path: ["sourceWarehousePublicId"],
191
+ message: "\u0414\u043B\u044F \u0441\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u043D\u0443\u0436\u0435\u043D \u0442\u043E\u043B\u044C\u043A\u043E \u0438\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u0441\u043A\u043B\u0430\u0434"
192
+ });
193
+ }
194
+ if (!value.writeOffReason) {
195
+ context.addIssue({
196
+ code: "custom",
197
+ path: ["writeOffReason"],
198
+ message: "\u041F\u0440\u0438\u0447\u0438\u043D\u0430 \u0441\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u0430"
199
+ });
200
+ }
201
+ if (!value.comment?.trim()) {
202
+ context.addIssue({
203
+ code: "custom",
204
+ path: ["comment"],
205
+ message: "\u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439 \u043A \u0441\u043F\u0438\u0441\u0430\u043D\u0438\u044E \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u0435\u043D"
206
+ });
207
+ }
208
+ }
209
+ if (value.type === WarehouseRequestType.TRANSFER) {
210
+ if (!source || !destination || source === destination) {
211
+ context.addIssue({
212
+ code: "custom",
213
+ path: ["destinationWarehousePublicId"],
214
+ message: "\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u0440\u0430\u0437\u043D\u044B\u0435 \u0438\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u0441\u043A\u043B\u0430\u0434 \u0438 \u0441\u043A\u043B\u0430\u0434 \u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F"
215
+ });
216
+ }
217
+ }
218
+ });
219
+ var WarehouseOperationPublicIdParamSchema = z.object({
220
+ publicId: PublicIdSchema
221
+ });
222
+ var WarehouseOperationAttachmentParamSchema = z.object({
223
+ publicId: PublicIdSchema,
224
+ attachmentPublicId: PublicIdSchema
225
+ });
226
+ var WarehouseOperationListQuerySchema = BaseListQuerySchema.extend({
227
+ type: z.enum(WarehouseRequestType).optional(),
228
+ status: z.enum(WarehouseRequestStatus).optional(),
229
+ warehousePublicId: PublicIdSchema.optional(),
230
+ createdByUserId: z.coerce.number().int().positive().optional()
231
+ });
232
+ var WarehouseOperationCommentSchema = z.object({
233
+ comment: z.string().trim().max(2e3).nullable().optional()
234
+ });
235
+ var RejectWarehouseOperationRequestSchema = z.object({
236
+ comment: z.string().trim().min(1).max(2e3)
237
+ });
238
+ var ExecuteWarehouseOperationRequestSchema = z.object({
239
+ idempotencyKey: z.uuid(),
240
+ comment: z.string().trim().max(2e3).nullable().optional()
241
+ });
242
+ var ReportWarehouseDiscrepancyRequestSchema = z.object({
243
+ comment: z.string().trim().min(1).max(2e3)
244
+ });
245
+ var WarehouseStockListQuerySchema = BaseListQuerySchema.extend({
246
+ warehousePublicId: PublicIdSchema.optional(),
247
+ variantPublicId: PublicIdSchema.optional(),
248
+ expired: z.union([z.boolean(), z.enum(["true", "false"]).transform((v) => v === "true")]).optional(),
249
+ expiresBefore: DateSchema.optional()
250
+ });
251
+ var WarehouseSchema = z.object({
252
+ publicId: PublicIdSchema,
253
+ code: CodeSchema,
254
+ name: z.string(),
255
+ status: z.enum(WarehouseStatus),
256
+ countryCode: z.string().length(2),
257
+ country: z.string(),
258
+ city: z.string(),
259
+ address: z.string(),
260
+ phoneNumber: z.string(),
261
+ mapUrl: z.string(),
262
+ timezone: z.string(),
263
+ schedule: WarehouseWeeklyScheduleSchema,
264
+ isPickupPoint: z.boolean(),
265
+ version: z.number().int().positive(),
266
+ createdAt: DateTimeSchema,
267
+ updatedAt: DateTimeSchema
268
+ });
269
+ var WarehouseUserLookupSchema = z.object({
270
+ id: z.number().int().positive(),
271
+ uuid: z.string(),
272
+ login: z.string(),
273
+ firstName: z.string(),
274
+ lastName: z.string(),
275
+ email: z.email(),
276
+ role: z.string()
277
+ });
278
+ var WarehouseAssignmentSchema = z.object({
279
+ publicId: PublicIdSchema,
280
+ warehousePublicId: PublicIdSchema,
281
+ type: z.enum(WarehouseAssignmentType),
282
+ user: WarehouseUserLookupSchema,
283
+ assignedByLogin: z.string(),
284
+ assignedAt: DateTimeSchema
285
+ });
286
+ var WarehouseOperationLineSchema = z.object({
287
+ publicId: PublicIdSchema,
288
+ variantPublicId: PublicIdSchema,
289
+ sku: z.string(),
290
+ quantity: z.number().int().positive(),
291
+ expiresAt: DateSchema.nullable(),
292
+ batchNumber: z.string().nullable(),
293
+ comment: z.string().nullable()
294
+ });
295
+ var WarehouseOperationEventSchema = z.object({
296
+ publicId: PublicIdSchema,
297
+ fromStatus: z.enum(WarehouseRequestStatus).nullable(),
298
+ toStatus: z.enum(WarehouseRequestStatus),
299
+ actorUserId: z.number().int().positive(),
300
+ actorLogin: z.string(),
301
+ comment: z.string().nullable(),
302
+ createdAt: DateTimeSchema
303
+ });
304
+ var WarehouseOperationAttachmentSchema = z.object({
305
+ publicId: PublicIdSchema,
306
+ mimeType: z.string(),
307
+ sizeBytes: z.number().int().positive(),
308
+ originalName: z.string().nullable(),
309
+ uploadedByLogin: z.string(),
310
+ contentUrl: z.string(),
311
+ createdAt: DateTimeSchema
312
+ });
313
+ var WarehouseOperationSchema = z.object({
314
+ publicId: PublicIdSchema,
315
+ type: z.enum(WarehouseRequestType),
316
+ status: z.enum(WarehouseRequestStatus),
317
+ sourceWarehouse: WarehouseSchema.nullable(),
318
+ destinationWarehouse: WarehouseSchema.nullable(),
319
+ writeOffReason: z.enum(WarehouseWriteOffReason).nullable(),
320
+ comment: z.string().nullable(),
321
+ rejectionComment: z.string().nullable(),
322
+ createdByUserId: z.number().int().positive(),
323
+ createdByLogin: z.string(),
324
+ approvedByUserId: z.number().int().positive().nullable(),
325
+ approvedByLogin: z.string().nullable(),
326
+ approvedAt: DateTimeSchema.nullable(),
327
+ completedByUserId: z.number().int().positive().nullable(),
328
+ completedByLogin: z.string().nullable(),
329
+ completedAt: DateTimeSchema.nullable(),
330
+ version: z.number().int().positive(),
331
+ lines: z.array(WarehouseOperationLineSchema),
332
+ events: z.array(WarehouseOperationEventSchema),
333
+ attachments: z.array(WarehouseOperationAttachmentSchema),
334
+ createdAt: DateTimeSchema,
335
+ updatedAt: DateTimeSchema
336
+ });
337
+ var WarehouseStockSchema = z.object({
338
+ publicId: PublicIdSchema,
339
+ warehouse: WarehouseSchema,
340
+ variantPublicId: PublicIdSchema,
341
+ sku: z.string(),
342
+ productPublicId: PublicIdSchema,
343
+ productCode: z.string(),
344
+ batchNumber: z.string().nullable(),
345
+ expiresAt: DateSchema,
346
+ onHand: z.number().int().nonnegative(),
347
+ reserved: z.number().int().nonnegative(),
348
+ available: z.number().int().nonnegative(),
349
+ expired: z.boolean(),
350
+ version: z.number().int().positive(),
351
+ updatedAt: DateTimeSchema
352
+ });
353
+ var WarehouseMovementSchema = z.object({
354
+ publicId: PublicIdSchema,
355
+ warehousePublicId: PublicIdSchema,
356
+ operationPublicId: PublicIdSchema,
357
+ variantPublicId: PublicIdSchema,
358
+ inventoryBatchPublicId: PublicIdSchema.nullable(),
359
+ type: z.enum(WarehouseMovementType),
360
+ quantityDelta: z.number().int(),
361
+ balanceAfter: z.number().int().nonnegative(),
362
+ actorUserId: z.number().int().positive(),
363
+ actorLogin: z.string(),
364
+ createdAt: DateTimeSchema
365
+ });
366
+
367
+ export { AssignWarehouseUserRequestSchema, CreateWarehouseOperationRequestSchema, CreateWarehouseRequestSchema, ExecuteWarehouseOperationRequestSchema, RejectWarehouseOperationRequestSchema, ReportWarehouseDiscrepancyRequestSchema, UpdateWarehouseRequestSchema, WarehouseAssignmentParamSchema, WarehouseAssignmentSchema, WarehouseAssignmentType, WarehouseDayScheduleSchema, WarehouseListQuerySchema, WarehouseMovementSchema, WarehouseMovementType, WarehouseOperationAttachmentParamSchema, WarehouseOperationAttachmentSchema, WarehouseOperationCommentSchema, WarehouseOperationEventSchema, WarehouseOperationLineSchema, WarehouseOperationListQuerySchema, WarehouseOperationPublicIdParamSchema, WarehouseOperationSchema, WarehousePublicIdParamSchema, WarehouseRequestLineInputSchema, WarehouseRequestStatus, WarehouseRequestType, WarehouseSchema, WarehouseStatus, WarehouseStockListQuerySchema, WarehouseStockSchema, WarehouseUserLookupSchema, WarehouseUserSearchQuerySchema, WarehouseWeekday, WarehouseWeeklyScheduleSchema, WarehouseWriteOffReason };
368
+ //# sourceMappingURL=index.mjs.map
369
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/warehouse/warehouse.enums.ts","../../src/common/pagination.schemas.ts","../../src/common/list-query.schemas.ts","../../src/warehouse/warehouse.schemas.ts"],"names":["z"],"mappings":"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","file":"index.mjs","sourcesContent":["export const WarehouseStatus = {\n DRAFT: 'DRAFT',\n ACTIVE: 'ACTIVE',\n SUSPENDED: 'SUSPENDED',\n ARCHIVED: 'ARCHIVED',\n} as const;\n\nexport type WarehouseStatus =\n (typeof WarehouseStatus)[keyof typeof WarehouseStatus];\n\nexport const WarehouseAssignmentType = {\n STAFF: 'STAFF',\n CUSTOMER_DEFAULT: 'CUSTOMER_DEFAULT',\n} as const;\n\nexport type WarehouseAssignmentType =\n (typeof WarehouseAssignmentType)[keyof typeof WarehouseAssignmentType];\n\nexport const WarehouseRequestType = {\n REPLENISHMENT: 'REPLENISHMENT',\n WRITE_OFF: 'WRITE_OFF',\n TRANSFER: 'TRANSFER',\n} as const;\n\nexport type WarehouseRequestType =\n (typeof WarehouseRequestType)[keyof typeof WarehouseRequestType];\n\nexport const WarehouseRequestStatus = {\n DRAFT: 'DRAFT',\n PENDING_REVIEW: 'PENDING_REVIEW',\n APPROVED: 'APPROVED',\n READY_TO_SHIP: 'READY_TO_SHIP',\n IN_TRANSIT: 'IN_TRANSIT',\n COMPLETED: 'COMPLETED',\n REJECTED: 'REJECTED',\n CANCELLED: 'CANCELLED',\n DISCREPANCY_REPORTED: 'DISCREPANCY_REPORTED',\n FAILED: 'FAILED',\n} as const;\n\nexport type WarehouseRequestStatus =\n (typeof WarehouseRequestStatus)[keyof typeof WarehouseRequestStatus];\n\nexport const WarehouseMovementType = {\n REPLENISHMENT: 'REPLENISHMENT',\n WRITE_OFF: 'WRITE_OFF',\n TRANSFER_OUT: 'TRANSFER_OUT',\n TRANSFER_IN: 'TRANSFER_IN',\n ORDER_ISSUE: 'ORDER_ISSUE',\n} as const;\n\nexport type WarehouseMovementType =\n (typeof WarehouseMovementType)[keyof typeof WarehouseMovementType];\n\nexport const WarehouseWriteOffReason = {\n DEFECT: 'DEFECT',\n DAMAGED: 'DAMAGED',\n EXPIRED: 'EXPIRED',\n LOST: 'LOST',\n INVENTORY_SHORTAGE: 'INVENTORY_SHORTAGE',\n OTHER: 'OTHER',\n} as const;\n\nexport type WarehouseWriteOffReason =\n (typeof WarehouseWriteOffReason)[keyof typeof WarehouseWriteOffReason];\n\nexport const WarehouseWeekday = {\n MONDAY: 'MONDAY',\n TUESDAY: 'TUESDAY',\n WEDNESDAY: 'WEDNESDAY',\n THURSDAY: 'THURSDAY',\n FRIDAY: 'FRIDAY',\n SATURDAY: 'SATURDAY',\n SUNDAY: 'SUNDAY',\n} as const;\n\nexport type WarehouseWeekday =\n (typeof WarehouseWeekday)[keyof typeof WarehouseWeekday];\n","import { z } from 'zod';\n\nexport const PageSchema = z.coerce.number().int().min(1).default(1);\nexport const LimitSchema = z.coerce.number().int().min(1).max(100).default(20);\nexport const SortOrderSchema = z.enum(['asc', 'desc']).default('desc');\n\nexport const PaginationQuerySchema = z.object({\n page: PageSchema.optional(),\n limit: LimitSchema.optional(),\n});\n","import { z } from 'zod';\nimport { LimitSchema, PageSchema, SortOrderSchema } from './pagination.schemas';\n\nexport const DateFromSchema = z.string().datetime().optional();\nexport const DateToSchema = z.string().datetime().optional();\n\nexport const SearchSchema = z.string().trim().min(1).max(255).optional();\n\nexport const BaseListQuerySchema = z.object({\n page: PageSchema.optional(),\n limit: LimitSchema.optional(),\n search: SearchSchema,\n dateFrom: DateFromSchema,\n dateTo: DateToSchema,\n sortOrder: SortOrderSchema.optional(),\n});\n","import { z } from 'zod';\nimport { BaseListQuerySchema } from '../common/list-query.schemas';\nimport {\n WarehouseAssignmentType,\n WarehouseMovementType,\n WarehouseRequestStatus,\n WarehouseRequestType,\n WarehouseStatus,\n WarehouseWeekday,\n WarehouseWriteOffReason,\n} from './warehouse.enums';\n\nconst PublicIdSchema = z.uuid();\nconst CodeSchema = z\n .string()\n .trim()\n .toUpperCase()\n .regex(/^[A-Z0-9][A-Z0-9_-]{1,63}$/);\nconst DateSchema = z.iso.date();\nconst DateTimeSchema = z.iso.datetime();\nconst TimeSchema = z.string().regex(/^([01]\\d|2[0-3]):[0-5]\\d$/);\nconst NullableTrimmedSchema = (max: number) =>\n z.string().trim().min(1).max(max).nullable().optional();\n\nexport const WarehouseDayScheduleSchema = z\n .object({\n isOpen: z.boolean(),\n opensAt: TimeSchema.nullable(),\n closesAt: TimeSchema.nullable(),\n })\n .superRefine((value, context) => {\n if (value.isOpen && (!value.opensAt || !value.closesAt)) {\n context.addIssue({\n code: 'custom',\n message: 'Для рабочего дня укажите время открытия и закрытия',\n });\n }\n if (!value.isOpen && (value.opensAt || value.closesAt)) {\n context.addIssue({\n code: 'custom',\n message: 'Для выходного дня время должно быть пустым',\n });\n }\n if (\n value.isOpen &&\n value.opensAt &&\n value.closesAt &&\n value.opensAt >= value.closesAt\n ) {\n context.addIssue({\n code: 'custom',\n message: 'Время закрытия должно быть позже времени открытия',\n });\n }\n });\n\nexport const WarehouseWeeklyScheduleSchema = z.record(\n z.enum(WarehouseWeekday),\n WarehouseDayScheduleSchema,\n);\n\nconst WarehouseFieldsSchema = z.object({\n name: z.string().trim().min(2).max(160),\n countryCode: z.string().trim().toUpperCase().length(2),\n country: z.string().trim().min(2).max(120),\n city: z.string().trim().min(1).max(160),\n address: z.string().trim().min(3).max(500),\n phoneNumber: z.string().trim().min(7).max(32),\n mapUrl: z\n .url()\n .max(2_000)\n .refine((value) => new URL(value).protocol === 'https:', {\n message: 'Ссылка на карту должна использовать HTTPS',\n }),\n timezone: z.string().trim().min(1).max(64),\n schedule: WarehouseWeeklyScheduleSchema,\n isPickupPoint: z.boolean(),\n});\n\nexport const CreateWarehouseRequestSchema = WarehouseFieldsSchema.extend({\n code: CodeSchema,\n isPickupPoint: WarehouseFieldsSchema.shape.isPickupPoint.default(true),\n});\n\nexport const UpdateWarehouseRequestSchema = WarehouseFieldsSchema.partial()\n .extend({ version: z.number().int().positive() })\n .required({ version: true });\n\nexport const WarehousePublicIdParamSchema = z.object({\n publicId: PublicIdSchema,\n});\n\nexport const WarehouseAssignmentParamSchema = z.object({\n publicId: PublicIdSchema,\n assignmentPublicId: PublicIdSchema,\n});\n\nexport const WarehouseListQuerySchema = BaseListQuerySchema.extend({\n status: z.enum(WarehouseStatus).optional(),\n countryCode: z.string().trim().toUpperCase().length(2).optional(),\n city: z.string().trim().min(1).max(160).optional(),\n});\n\nexport const WarehouseUserSearchQuerySchema = z.object({\n search: z.string().trim().min(2).max(100),\n page: z.coerce.number().int().min(1).default(1),\n limit: z.coerce.number().int().min(1).max(20).default(20),\n});\n\nexport const AssignWarehouseUserRequestSchema = z.object({\n userUuid: z.string().trim().min(3).max(32),\n type: z.enum(WarehouseAssignmentType),\n});\n\nexport const WarehouseRequestLineInputSchema = z.object({\n variantPublicId: PublicIdSchema,\n quantity: z.number().int().positive().max(1_000_000_000),\n expiresAt: DateSchema.nullable().optional(),\n batchNumber: NullableTrimmedSchema(120),\n comment: NullableTrimmedSchema(1_000),\n});\n\nexport const CreateWarehouseOperationRequestSchema = z\n .object({\n type: z.enum(WarehouseRequestType),\n sourceWarehousePublicId: PublicIdSchema.nullable().optional(),\n destinationWarehousePublicId: PublicIdSchema.nullable().optional(),\n writeOffReason: z.enum(WarehouseWriteOffReason).nullable().optional(),\n comment: z.string().trim().max(2_000).nullable().optional(),\n lines: z.array(WarehouseRequestLineInputSchema).min(1).max(500),\n })\n .superRefine((value, context) => {\n const source = value.sourceWarehousePublicId ?? null;\n const destination = value.destinationWarehousePublicId ?? null;\n if (value.type === WarehouseRequestType.REPLENISHMENT) {\n if (!destination || source) {\n context.addIssue({\n code: 'custom',\n path: ['destinationWarehousePublicId'],\n message: 'Для пополнения нужен только склад назначения',\n });\n }\n value.lines.forEach((line, index) => {\n if (!line.expiresAt) {\n context.addIssue({\n code: 'custom',\n path: ['lines', index, 'expiresAt'],\n message: 'Срок годности поступления обязателен',\n });\n }\n });\n }\n if (value.type === WarehouseRequestType.WRITE_OFF) {\n if (!source || destination) {\n context.addIssue({\n code: 'custom',\n path: ['sourceWarehousePublicId'],\n message: 'Для списания нужен только исходный склад',\n });\n }\n if (!value.writeOffReason) {\n context.addIssue({\n code: 'custom',\n path: ['writeOffReason'],\n message: 'Причина списания обязательна',\n });\n }\n if (!value.comment?.trim()) {\n context.addIssue({\n code: 'custom',\n path: ['comment'],\n message: 'Комментарий к списанию обязателен',\n });\n }\n }\n if (value.type === WarehouseRequestType.TRANSFER) {\n if (!source || !destination || source === destination) {\n context.addIssue({\n code: 'custom',\n path: ['destinationWarehousePublicId'],\n message: 'Укажите разные исходный склад и склад назначения',\n });\n }\n }\n });\n\nexport const WarehouseOperationPublicIdParamSchema = z.object({\n publicId: PublicIdSchema,\n});\n\nexport const WarehouseOperationAttachmentParamSchema = z.object({\n publicId: PublicIdSchema,\n attachmentPublicId: PublicIdSchema,\n});\n\nexport const WarehouseOperationListQuerySchema = BaseListQuerySchema.extend({\n type: z.enum(WarehouseRequestType).optional(),\n status: z.enum(WarehouseRequestStatus).optional(),\n warehousePublicId: PublicIdSchema.optional(),\n createdByUserId: z.coerce.number().int().positive().optional(),\n});\n\nexport const WarehouseOperationCommentSchema = z.object({\n comment: z.string().trim().max(2_000).nullable().optional(),\n});\n\nexport const RejectWarehouseOperationRequestSchema = z.object({\n comment: z.string().trim().min(1).max(2_000),\n});\n\nexport const ExecuteWarehouseOperationRequestSchema = z.object({\n idempotencyKey: z.uuid(),\n comment: z.string().trim().max(2_000).nullable().optional(),\n});\n\nexport const ReportWarehouseDiscrepancyRequestSchema = z.object({\n comment: z.string().trim().min(1).max(2_000),\n});\n\nexport const WarehouseStockListQuerySchema = BaseListQuerySchema.extend({\n warehousePublicId: PublicIdSchema.optional(),\n variantPublicId: PublicIdSchema.optional(),\n expired: z\n .union([z.boolean(), z.enum(['true', 'false']).transform((v) => v === 'true')])\n .optional(),\n expiresBefore: DateSchema.optional(),\n});\n\nexport const WarehouseSchema = z.object({\n publicId: PublicIdSchema,\n code: CodeSchema,\n name: z.string(),\n status: z.enum(WarehouseStatus),\n countryCode: z.string().length(2),\n country: z.string(),\n city: z.string(),\n address: z.string(),\n phoneNumber: z.string(),\n mapUrl: z.string(),\n timezone: z.string(),\n schedule: WarehouseWeeklyScheduleSchema,\n isPickupPoint: z.boolean(),\n version: z.number().int().positive(),\n createdAt: DateTimeSchema,\n updatedAt: DateTimeSchema,\n});\n\nexport const WarehouseUserLookupSchema = z.object({\n id: z.number().int().positive(),\n uuid: z.string(),\n login: z.string(),\n firstName: z.string(),\n lastName: z.string(),\n email: z.email(),\n role: z.string(),\n});\n\nexport const WarehouseAssignmentSchema = z.object({\n publicId: PublicIdSchema,\n warehousePublicId: PublicIdSchema,\n type: z.enum(WarehouseAssignmentType),\n user: WarehouseUserLookupSchema,\n assignedByLogin: z.string(),\n assignedAt: DateTimeSchema,\n});\n\nexport const WarehouseOperationLineSchema = z.object({\n publicId: PublicIdSchema,\n variantPublicId: PublicIdSchema,\n sku: z.string(),\n quantity: z.number().int().positive(),\n expiresAt: DateSchema.nullable(),\n batchNumber: z.string().nullable(),\n comment: z.string().nullable(),\n});\n\nexport const WarehouseOperationEventSchema = z.object({\n publicId: PublicIdSchema,\n fromStatus: z.enum(WarehouseRequestStatus).nullable(),\n toStatus: z.enum(WarehouseRequestStatus),\n actorUserId: z.number().int().positive(),\n actorLogin: z.string(),\n comment: z.string().nullable(),\n createdAt: DateTimeSchema,\n});\n\nexport const WarehouseOperationAttachmentSchema = z.object({\n publicId: PublicIdSchema,\n mimeType: z.string(),\n sizeBytes: z.number().int().positive(),\n originalName: z.string().nullable(),\n uploadedByLogin: z.string(),\n contentUrl: z.string(),\n createdAt: DateTimeSchema,\n});\n\nexport const WarehouseOperationSchema = z.object({\n publicId: PublicIdSchema,\n type: z.enum(WarehouseRequestType),\n status: z.enum(WarehouseRequestStatus),\n sourceWarehouse: WarehouseSchema.nullable(),\n destinationWarehouse: WarehouseSchema.nullable(),\n writeOffReason: z.enum(WarehouseWriteOffReason).nullable(),\n comment: z.string().nullable(),\n rejectionComment: z.string().nullable(),\n createdByUserId: z.number().int().positive(),\n createdByLogin: z.string(),\n approvedByUserId: z.number().int().positive().nullable(),\n approvedByLogin: z.string().nullable(),\n approvedAt: DateTimeSchema.nullable(),\n completedByUserId: z.number().int().positive().nullable(),\n completedByLogin: z.string().nullable(),\n completedAt: DateTimeSchema.nullable(),\n version: z.number().int().positive(),\n lines: z.array(WarehouseOperationLineSchema),\n events: z.array(WarehouseOperationEventSchema),\n attachments: z.array(WarehouseOperationAttachmentSchema),\n createdAt: DateTimeSchema,\n updatedAt: DateTimeSchema,\n});\n\nexport const WarehouseStockSchema = z.object({\n publicId: PublicIdSchema,\n warehouse: WarehouseSchema,\n variantPublicId: PublicIdSchema,\n sku: z.string(),\n productPublicId: PublicIdSchema,\n productCode: z.string(),\n batchNumber: z.string().nullable(),\n expiresAt: DateSchema,\n onHand: z.number().int().nonnegative(),\n reserved: z.number().int().nonnegative(),\n available: z.number().int().nonnegative(),\n expired: z.boolean(),\n version: z.number().int().positive(),\n updatedAt: DateTimeSchema,\n});\n\nexport const WarehouseMovementSchema = z.object({\n publicId: PublicIdSchema,\n warehousePublicId: PublicIdSchema,\n operationPublicId: PublicIdSchema,\n variantPublicId: PublicIdSchema,\n inventoryBatchPublicId: PublicIdSchema.nullable(),\n type: z.enum(WarehouseMovementType),\n quantityDelta: z.number().int(),\n balanceAfter: z.number().int().nonnegative(),\n actorUserId: z.number().int().positive(),\n actorLogin: z.string(),\n createdAt: DateTimeSchema,\n});\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aivilife-contracts",
3
- "version": "4.2.0",
3
+ "version": "4.4.0",
4
4
  "description": "Aivilife Contracts",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -20,6 +20,16 @@
20
20
  "types": "./dist/localization/index.d.ts",
21
21
  "import": "./dist/localization/index.mjs",
22
22
  "require": "./dist/localization/index.js"
23
+ },
24
+ "./catalog": {
25
+ "types": "./dist/catalog/index.d.ts",
26
+ "import": "./dist/catalog/index.mjs",
27
+ "require": "./dist/catalog/index.js"
28
+ },
29
+ "./warehouse": {
30
+ "types": "./dist/warehouse/index.d.ts",
31
+ "import": "./dist/warehouse/index.mjs",
32
+ "require": "./dist/warehouse/index.js"
23
33
  }
24
34
  },
25
35
  "files": [