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