aivilife-contracts 5.1.0 → 5.3.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,775 @@
1
+ 'use strict';
2
+
3
+ var zod = require('zod');
4
+
5
+ // src/order/order.enums.ts
6
+ var OrderDeliveryMethod = /* @__PURE__ */ ((OrderDeliveryMethod2) => {
7
+ OrderDeliveryMethod2["PICKUP"] = "PICKUP";
8
+ return OrderDeliveryMethod2;
9
+ })(OrderDeliveryMethod || {});
10
+ var OrderPaymentMethod = /* @__PURE__ */ ((OrderPaymentMethod2) => {
11
+ OrderPaymentMethod2["CASH"] = "CASH";
12
+ OrderPaymentMethod2["MAIN_WALLET"] = "MAIN_WALLET";
13
+ return OrderPaymentMethod2;
14
+ })(OrderPaymentMethod || {});
15
+ var OrderStatus = /* @__PURE__ */ ((OrderStatus2) => {
16
+ OrderStatus2["PENDING_PAYMENT"] = "PENDING_PAYMENT";
17
+ OrderStatus2["PROCESSING"] = "PROCESSING";
18
+ OrderStatus2["READY_FOR_PICKUP"] = "READY_FOR_PICKUP";
19
+ OrderStatus2["COMPLETED"] = "COMPLETED";
20
+ OrderStatus2["CANCELLED"] = "CANCELLED";
21
+ return OrderStatus2;
22
+ })(OrderStatus || {});
23
+ var OrderPaymentStatus = /* @__PURE__ */ ((OrderPaymentStatus2) => {
24
+ OrderPaymentStatus2["AWAITING_RECEIPT"] = "AWAITING_RECEIPT";
25
+ OrderPaymentStatus2["UNDER_REVIEW"] = "UNDER_REVIEW";
26
+ OrderPaymentStatus2["REJECTED"] = "REJECTED";
27
+ OrderPaymentStatus2["PAID"] = "PAID";
28
+ OrderPaymentStatus2["CANCELLED"] = "CANCELLED";
29
+ return OrderPaymentStatus2;
30
+ })(OrderPaymentStatus || {});
31
+ var OrderReceiptStatus = /* @__PURE__ */ ((OrderReceiptStatus2) => {
32
+ OrderReceiptStatus2["UNDER_REVIEW"] = "UNDER_REVIEW";
33
+ OrderReceiptStatus2["APPROVED"] = "APPROVED";
34
+ OrderReceiptStatus2["REJECTED"] = "REJECTED";
35
+ return OrderReceiptStatus2;
36
+ })(OrderReceiptStatus || {});
37
+ var OrderReceiptDecision = /* @__PURE__ */ ((OrderReceiptDecision2) => {
38
+ OrderReceiptDecision2["APPROVE"] = "APPROVE";
39
+ OrderReceiptDecision2["REJECT"] = "REJECT";
40
+ return OrderReceiptDecision2;
41
+ })(OrderReceiptDecision || {});
42
+ var OrderStockAvailability = /* @__PURE__ */ ((OrderStockAvailability2) => {
43
+ OrderStockAvailability2["AVAILABLE"] = "AVAILABLE";
44
+ OrderStockAvailability2["OUT_OF_STOCK"] = "OUT_OF_STOCK";
45
+ OrderStockAvailability2["INSUFFICIENT_STOCK"] = "INSUFFICIENT_STOCK";
46
+ return OrderStockAvailability2;
47
+ })(OrderStockAvailability || {});
48
+ var OrderReservationStatus = /* @__PURE__ */ ((OrderReservationStatus2) => {
49
+ OrderReservationStatus2["ACTIVE"] = "ACTIVE";
50
+ OrderReservationStatus2["RELEASED"] = "RELEASED";
51
+ return OrderReservationStatus2;
52
+ })(OrderReservationStatus || {});
53
+ var OrderEventType = /* @__PURE__ */ ((OrderEventType2) => {
54
+ OrderEventType2["CREATED"] = "CREATED";
55
+ OrderEventType2["WALLET_DEBITED"] = "WALLET_DEBITED";
56
+ OrderEventType2["RECEIPT_UPLOADED"] = "RECEIPT_UPLOADED";
57
+ OrderEventType2["PAYMENT_APPROVED"] = "PAYMENT_APPROVED";
58
+ OrderEventType2["PAYMENT_REJECTED"] = "PAYMENT_REJECTED";
59
+ OrderEventType2["CANCELLED_TIMEOUT"] = "CANCELLED_TIMEOUT";
60
+ OrderEventType2["WALLET_REFUNDED"] = "WALLET_REFUNDED";
61
+ return OrderEventType2;
62
+ })(OrderEventType || {});
63
+ var OrderNotificationType = /* @__PURE__ */ ((OrderNotificationType2) => {
64
+ OrderNotificationType2["ORDER_CREATED"] = "ORDER_CREATED";
65
+ OrderNotificationType2["RECEIPT_RECEIVED"] = "RECEIPT_RECEIVED";
66
+ OrderNotificationType2["PAYMENT_APPROVED"] = "PAYMENT_APPROVED";
67
+ OrderNotificationType2["PAYMENT_REJECTED"] = "PAYMENT_REJECTED";
68
+ OrderNotificationType2["ORDER_CANCELLED"] = "ORDER_CANCELLED";
69
+ return OrderNotificationType2;
70
+ })(OrderNotificationType || {});
71
+
72
+ // src/catalog/catalog.enums.ts
73
+ var ProductUnit = {
74
+ CAPSULE: "CAPSULE",
75
+ GRAM: "GRAM",
76
+ MILLILITER: "MILLILITER",
77
+ PIECE: "PIECE"
78
+ };
79
+
80
+ // src/cart/cart.enums.ts
81
+ var CartItemAvailability = /* @__PURE__ */ ((CartItemAvailability2) => {
82
+ CartItemAvailability2["AVAILABLE"] = "AVAILABLE";
83
+ CartItemAvailability2["PRODUCT_UNAVAILABLE"] = "PRODUCT_UNAVAILABLE";
84
+ CartItemAvailability2["VARIANT_UNAVAILABLE"] = "VARIANT_UNAVAILABLE";
85
+ return CartItemAvailability2;
86
+ })(CartItemAvailability || {});
87
+
88
+ // src/cart/cart.schemas.ts
89
+ var PublicIdSchema = zod.z.uuid();
90
+ var QuantitySchema = zod.z.number().int().min(1).max(999);
91
+ var DecimalSchema = zod.z.string().regex(/^\d{1,16}(?:\.\d{1,2})?$/);
92
+ zod.z.object({
93
+ variantPublicId: PublicIdSchema,
94
+ quantity: QuantitySchema.default(1)
95
+ });
96
+ zod.z.object({
97
+ quantity: QuantitySchema,
98
+ version: zod.z.number().int().positive()
99
+ });
100
+ zod.z.object({
101
+ itemPublicId: PublicIdSchema
102
+ });
103
+ var CartItemSchema = zod.z.object({
104
+ publicId: PublicIdSchema,
105
+ quantity: QuantitySchema,
106
+ version: zod.z.number().int().positive(),
107
+ availability: zod.z.enum(CartItemAvailability),
108
+ product: zod.z.object({
109
+ publicId: PublicIdSchema,
110
+ slug: zod.z.string(),
111
+ name: zod.z.string(),
112
+ coverContentUrl: zod.z.string().nullable()
113
+ }),
114
+ variant: zod.z.object({
115
+ publicId: PublicIdSchema,
116
+ sku: zod.z.string(),
117
+ quantity: zod.z.string(),
118
+ unit: zod.z.enum(ProductUnit),
119
+ priceUsd: DecimalSchema,
120
+ pv: DecimalSchema
121
+ }),
122
+ lineTotalUsd: DecimalSchema,
123
+ lineTotalPv: DecimalSchema,
124
+ createdAt: zod.z.string().datetime(),
125
+ updatedAt: zod.z.string().datetime()
126
+ });
127
+ var CartSchema = zod.z.object({
128
+ publicId: PublicIdSchema.nullable(),
129
+ items: zod.z.array(CartItemSchema),
130
+ totalQuantity: zod.z.number().int().nonnegative(),
131
+ subtotalUsd: DecimalSchema,
132
+ totalPv: DecimalSchema,
133
+ hasUnavailableItems: zod.z.boolean(),
134
+ updatedAt: zod.z.string().datetime().nullable()
135
+ });
136
+ var PageSchema = zod.z.coerce.number().int().min(1).default(1);
137
+ var LimitSchema = zod.z.coerce.number().int().min(1).max(100).default(20);
138
+ var SortOrderSchema = zod.z.enum(["asc", "desc"]).default("desc");
139
+ zod.z.object({
140
+ page: PageSchema.optional(),
141
+ limit: LimitSchema.optional()
142
+ });
143
+
144
+ // src/common/list-query.schemas.ts
145
+ var DateFromSchema = zod.z.string().datetime().optional();
146
+ var DateToSchema = zod.z.string().datetime().optional();
147
+ var SearchSchema = zod.z.string().trim().min(1).max(255).optional();
148
+ var BaseListQuerySchema = zod.z.object({
149
+ page: PageSchema.optional(),
150
+ limit: LimitSchema.optional(),
151
+ search: SearchSchema,
152
+ dateFrom: DateFromSchema,
153
+ dateTo: DateToSchema,
154
+ sortOrder: SortOrderSchema.optional()
155
+ });
156
+
157
+ // src/warehouse/warehouse.enums.ts
158
+ var WarehouseStatus = {
159
+ DRAFT: "DRAFT",
160
+ ACTIVE: "ACTIVE",
161
+ SUSPENDED: "SUSPENDED",
162
+ ARCHIVED: "ARCHIVED"
163
+ };
164
+ var WarehouseAssignmentType = {
165
+ STAFF: "STAFF"
166
+ };
167
+ var WarehouseRequestType = {
168
+ REPLENISHMENT: "REPLENISHMENT",
169
+ WRITE_OFF: "WRITE_OFF",
170
+ TRANSFER: "TRANSFER"
171
+ };
172
+ var WarehouseRequestStatus = {
173
+ DRAFT: "DRAFT",
174
+ PENDING_REVIEW: "PENDING_REVIEW",
175
+ APPROVED: "APPROVED",
176
+ READY_TO_SHIP: "READY_TO_SHIP",
177
+ IN_TRANSIT: "IN_TRANSIT",
178
+ COMPLETED: "COMPLETED",
179
+ REJECTED: "REJECTED",
180
+ CANCELLED: "CANCELLED",
181
+ DISCREPANCY_REPORTED: "DISCREPANCY_REPORTED",
182
+ FAILED: "FAILED"
183
+ };
184
+ var WarehouseMovementType = {
185
+ REPLENISHMENT: "REPLENISHMENT",
186
+ WRITE_OFF: "WRITE_OFF",
187
+ TRANSFER_OUT: "TRANSFER_OUT",
188
+ TRANSFER_IN: "TRANSFER_IN",
189
+ ORDER_ISSUE: "ORDER_ISSUE"
190
+ };
191
+ var WarehouseWriteOffReason = {
192
+ DEFECT: "DEFECT",
193
+ DAMAGED: "DAMAGED",
194
+ EXPIRED: "EXPIRED",
195
+ LOST: "LOST",
196
+ INVENTORY_SHORTAGE: "INVENTORY_SHORTAGE",
197
+ OTHER: "OTHER"
198
+ };
199
+ var WarehouseWeekday = {
200
+ MONDAY: "MONDAY",
201
+ TUESDAY: "TUESDAY",
202
+ WEDNESDAY: "WEDNESDAY",
203
+ THURSDAY: "THURSDAY",
204
+ FRIDAY: "FRIDAY",
205
+ SATURDAY: "SATURDAY",
206
+ SUNDAY: "SUNDAY"
207
+ };
208
+
209
+ // src/warehouse/warehouse.schemas.ts
210
+ var PublicIdSchema2 = zod.z.uuid();
211
+ var CodeSchema = zod.z.string().trim().toUpperCase().regex(/^[A-Z0-9][A-Z0-9_-]{1,63}$/);
212
+ var DateSchema = zod.z.iso.date();
213
+ var DateTimeSchema = zod.z.iso.datetime();
214
+ var TimeSchema = zod.z.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/);
215
+ var NullableTrimmedSchema = (max) => zod.z.string().trim().min(1).max(max).nullable().optional();
216
+ var WarehouseDayScheduleSchema = zod.z.object({
217
+ isOpen: zod.z.boolean(),
218
+ opensAt: TimeSchema.nullable(),
219
+ closesAt: TimeSchema.nullable()
220
+ }).superRefine((value, context) => {
221
+ if (value.isOpen && (!value.opensAt || !value.closesAt)) {
222
+ context.addIssue({
223
+ code: "custom",
224
+ 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"
225
+ });
226
+ }
227
+ if (!value.isOpen && (value.opensAt || value.closesAt)) {
228
+ context.addIssue({
229
+ code: "custom",
230
+ 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"
231
+ });
232
+ }
233
+ if (value.isOpen && value.opensAt && value.closesAt && value.opensAt >= value.closesAt) {
234
+ context.addIssue({
235
+ code: "custom",
236
+ 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"
237
+ });
238
+ }
239
+ });
240
+ var WarehouseWeeklyScheduleSchema = zod.z.record(
241
+ zod.z.enum(WarehouseWeekday),
242
+ WarehouseDayScheduleSchema
243
+ );
244
+ var WarehouseFieldsSchema = zod.z.object({
245
+ name: zod.z.string().trim().min(2).max(160),
246
+ countryCode: zod.z.string().trim().toUpperCase().length(2),
247
+ country: zod.z.string().trim().min(2).max(120),
248
+ city: zod.z.string().trim().min(1).max(160),
249
+ address: zod.z.string().trim().min(3).max(500),
250
+ phoneNumber: zod.z.string().trim().min(7).max(32),
251
+ mapUrl: zod.z.url().max(2e3).refine((value) => new URL(value).protocol === "https:", {
252
+ 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"
253
+ }),
254
+ timezone: zod.z.string().trim().min(1).max(64),
255
+ schedule: WarehouseWeeklyScheduleSchema,
256
+ isPickupPoint: zod.z.boolean()
257
+ });
258
+ WarehouseFieldsSchema.extend({
259
+ code: CodeSchema,
260
+ isPickupPoint: WarehouseFieldsSchema.shape.isPickupPoint.default(true)
261
+ });
262
+ WarehouseFieldsSchema.partial().extend({ version: zod.z.number().int().positive() }).required({ version: true });
263
+ zod.z.object({
264
+ publicId: PublicIdSchema2
265
+ });
266
+ zod.z.object({
267
+ publicId: PublicIdSchema2,
268
+ assignmentPublicId: PublicIdSchema2
269
+ });
270
+ BaseListQuerySchema.extend({
271
+ status: zod.z.enum(WarehouseStatus).optional(),
272
+ countryCode: zod.z.string().trim().toUpperCase().length(2).optional(),
273
+ city: zod.z.string().trim().min(1).max(160).optional()
274
+ });
275
+ zod.z.object({
276
+ search: zod.z.string().trim().min(2).max(100),
277
+ page: zod.z.coerce.number().int().min(1).default(1),
278
+ limit: zod.z.coerce.number().int().min(1).max(20).default(20)
279
+ });
280
+ zod.z.object({
281
+ userUuid: zod.z.string().trim().min(3).max(32),
282
+ type: zod.z.enum(WarehouseAssignmentType)
283
+ });
284
+ var WarehouseRequestLineInputSchema = zod.z.object({
285
+ variantPublicId: PublicIdSchema2,
286
+ quantity: zod.z.number().int().positive().max(1e9),
287
+ expiresAt: DateSchema.nullable().optional(),
288
+ batchNumber: NullableTrimmedSchema(120),
289
+ comment: NullableTrimmedSchema(1e3)
290
+ });
291
+ zod.z.object({
292
+ type: zod.z.enum(WarehouseRequestType),
293
+ sourceWarehousePublicId: PublicIdSchema2.nullable().optional(),
294
+ destinationWarehousePublicId: PublicIdSchema2.nullable().optional(),
295
+ writeOffReason: zod.z.enum(WarehouseWriteOffReason).nullable().optional(),
296
+ comment: zod.z.string().trim().max(2e3).nullable().optional(),
297
+ lines: zod.z.array(WarehouseRequestLineInputSchema).min(1).max(500)
298
+ }).superRefine((value, context) => {
299
+ const source = value.sourceWarehousePublicId ?? null;
300
+ const destination = value.destinationWarehousePublicId ?? null;
301
+ if (value.type === WarehouseRequestType.REPLENISHMENT) {
302
+ if (!destination || source) {
303
+ context.addIssue({
304
+ code: "custom",
305
+ path: ["destinationWarehousePublicId"],
306
+ 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"
307
+ });
308
+ }
309
+ value.lines.forEach((line, index) => {
310
+ if (!line.expiresAt) {
311
+ context.addIssue({
312
+ code: "custom",
313
+ path: ["lines", index, "expiresAt"],
314
+ 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"
315
+ });
316
+ }
317
+ });
318
+ }
319
+ if (value.type === WarehouseRequestType.WRITE_OFF) {
320
+ if (!source || destination) {
321
+ context.addIssue({
322
+ code: "custom",
323
+ path: ["sourceWarehousePublicId"],
324
+ 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"
325
+ });
326
+ }
327
+ if (!value.writeOffReason) {
328
+ context.addIssue({
329
+ code: "custom",
330
+ path: ["writeOffReason"],
331
+ 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"
332
+ });
333
+ }
334
+ if (!value.comment?.trim()) {
335
+ context.addIssue({
336
+ code: "custom",
337
+ path: ["comment"],
338
+ 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"
339
+ });
340
+ }
341
+ }
342
+ if (value.type === WarehouseRequestType.TRANSFER) {
343
+ if (!source || !destination || source === destination) {
344
+ context.addIssue({
345
+ code: "custom",
346
+ path: ["destinationWarehousePublicId"],
347
+ 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"
348
+ });
349
+ }
350
+ }
351
+ });
352
+ zod.z.object({
353
+ publicId: PublicIdSchema2
354
+ });
355
+ zod.z.object({
356
+ publicId: PublicIdSchema2,
357
+ attachmentPublicId: PublicIdSchema2
358
+ });
359
+ BaseListQuerySchema.extend({
360
+ type: zod.z.enum(WarehouseRequestType).optional(),
361
+ status: zod.z.enum(WarehouseRequestStatus).optional(),
362
+ warehousePublicId: PublicIdSchema2.optional(),
363
+ createdByUserId: zod.z.coerce.number().int().positive().optional()
364
+ });
365
+ zod.z.object({
366
+ comment: zod.z.string().trim().max(2e3).nullable().optional()
367
+ });
368
+ zod.z.object({
369
+ comment: zod.z.string().trim().min(1).max(2e3)
370
+ });
371
+ zod.z.object({
372
+ idempotencyKey: zod.z.uuid(),
373
+ comment: zod.z.string().trim().max(2e3).nullable().optional()
374
+ });
375
+ zod.z.object({
376
+ comment: zod.z.string().trim().min(1).max(2e3)
377
+ });
378
+ BaseListQuerySchema.extend({
379
+ warehousePublicId: PublicIdSchema2.optional(),
380
+ variantPublicId: PublicIdSchema2.optional(),
381
+ expired: zod.z.union([zod.z.boolean(), zod.z.enum(["true", "false"]).transform((v) => v === "true")]).optional(),
382
+ expiresBefore: DateSchema.optional()
383
+ });
384
+ var WarehouseSchema = zod.z.object({
385
+ publicId: PublicIdSchema2,
386
+ code: CodeSchema,
387
+ name: zod.z.string(),
388
+ status: zod.z.enum(WarehouseStatus),
389
+ countryCode: zod.z.string().length(2),
390
+ country: zod.z.string(),
391
+ city: zod.z.string(),
392
+ address: zod.z.string(),
393
+ phoneNumber: zod.z.string(),
394
+ mapUrl: zod.z.string(),
395
+ timezone: zod.z.string(),
396
+ schedule: WarehouseWeeklyScheduleSchema,
397
+ isPickupPoint: zod.z.boolean(),
398
+ version: zod.z.number().int().positive(),
399
+ createdAt: DateTimeSchema,
400
+ updatedAt: DateTimeSchema
401
+ });
402
+ var WarehouseUserLookupSchema = zod.z.object({
403
+ id: zod.z.number().int().positive(),
404
+ uuid: zod.z.string(),
405
+ login: zod.z.string(),
406
+ firstName: zod.z.string(),
407
+ lastName: zod.z.string(),
408
+ email: zod.z.email(),
409
+ role: zod.z.string()
410
+ });
411
+ zod.z.object({
412
+ publicId: PublicIdSchema2,
413
+ warehousePublicId: PublicIdSchema2,
414
+ type: zod.z.enum(WarehouseAssignmentType),
415
+ user: WarehouseUserLookupSchema,
416
+ assignedByLogin: zod.z.string(),
417
+ assignedAt: DateTimeSchema
418
+ });
419
+ var WarehouseOperationLineSchema = zod.z.object({
420
+ publicId: PublicIdSchema2,
421
+ variantPublicId: PublicIdSchema2,
422
+ sku: zod.z.string(),
423
+ quantity: zod.z.number().int().positive(),
424
+ expiresAt: DateSchema.nullable(),
425
+ batchNumber: zod.z.string().nullable(),
426
+ comment: zod.z.string().nullable()
427
+ });
428
+ var WarehouseOperationEventSchema = zod.z.object({
429
+ publicId: PublicIdSchema2,
430
+ fromStatus: zod.z.enum(WarehouseRequestStatus).nullable(),
431
+ toStatus: zod.z.enum(WarehouseRequestStatus),
432
+ actorUserId: zod.z.number().int().positive(),
433
+ actorLogin: zod.z.string(),
434
+ comment: zod.z.string().nullable(),
435
+ createdAt: DateTimeSchema
436
+ });
437
+ var WarehouseOperationAttachmentSchema = zod.z.object({
438
+ publicId: PublicIdSchema2,
439
+ mimeType: zod.z.string(),
440
+ sizeBytes: zod.z.number().int().positive(),
441
+ originalName: zod.z.string().nullable(),
442
+ uploadedByLogin: zod.z.string(),
443
+ contentUrl: zod.z.string(),
444
+ createdAt: DateTimeSchema
445
+ });
446
+ zod.z.object({
447
+ publicId: PublicIdSchema2,
448
+ type: zod.z.enum(WarehouseRequestType),
449
+ status: zod.z.enum(WarehouseRequestStatus),
450
+ sourceWarehouse: WarehouseSchema.nullable(),
451
+ destinationWarehouse: WarehouseSchema.nullable(),
452
+ writeOffReason: zod.z.enum(WarehouseWriteOffReason).nullable(),
453
+ comment: zod.z.string().nullable(),
454
+ rejectionComment: zod.z.string().nullable(),
455
+ createdByUserId: zod.z.number().int().positive(),
456
+ createdByLogin: zod.z.string(),
457
+ approvedByUserId: zod.z.number().int().positive().nullable(),
458
+ approvedByLogin: zod.z.string().nullable(),
459
+ approvedAt: DateTimeSchema.nullable(),
460
+ completedByUserId: zod.z.number().int().positive().nullable(),
461
+ completedByLogin: zod.z.string().nullable(),
462
+ completedAt: DateTimeSchema.nullable(),
463
+ version: zod.z.number().int().positive(),
464
+ lines: zod.z.array(WarehouseOperationLineSchema),
465
+ events: zod.z.array(WarehouseOperationEventSchema),
466
+ attachments: zod.z.array(WarehouseOperationAttachmentSchema),
467
+ createdAt: DateTimeSchema,
468
+ updatedAt: DateTimeSchema
469
+ });
470
+ zod.z.object({
471
+ publicId: PublicIdSchema2,
472
+ warehouse: WarehouseSchema,
473
+ variantPublicId: PublicIdSchema2,
474
+ sku: zod.z.string(),
475
+ productPublicId: PublicIdSchema2,
476
+ productCode: zod.z.string(),
477
+ batchNumber: zod.z.string().nullable(),
478
+ expiresAt: DateSchema,
479
+ onHand: zod.z.number().int().nonnegative(),
480
+ reserved: zod.z.number().int().nonnegative(),
481
+ available: zod.z.number().int().nonnegative(),
482
+ expired: zod.z.boolean(),
483
+ version: zod.z.number().int().positive(),
484
+ updatedAt: DateTimeSchema
485
+ });
486
+ zod.z.object({
487
+ publicId: PublicIdSchema2,
488
+ warehousePublicId: PublicIdSchema2,
489
+ operationPublicId: PublicIdSchema2,
490
+ variantPublicId: PublicIdSchema2,
491
+ inventoryBatchPublicId: PublicIdSchema2.nullable(),
492
+ type: zod.z.enum(WarehouseMovementType),
493
+ quantityDelta: zod.z.number().int(),
494
+ balanceAfter: zod.z.number().int().nonnegative(),
495
+ actorUserId: zod.z.number().int().positive(),
496
+ actorLogin: zod.z.string(),
497
+ createdAt: DateTimeSchema
498
+ });
499
+
500
+ // src/order/order.schemas.ts
501
+ var PublicIdSchema3 = zod.z.uuid();
502
+ var DateTimeSchema2 = zod.z.iso.datetime();
503
+ var MoneySchema = zod.z.string().regex(/^\d{1,16}\.\d{2}$/);
504
+ var DecimalSchema2 = zod.z.string().regex(/^\d{1,16}(?:\.\d{1,3})?$/);
505
+ var OrderNumberSchema = zod.z.string().regex(/^AV-\d{8}-[A-Z0-9]{6}$/);
506
+ var CheckoutWarehouseQuerySchema = zod.z.object({
507
+ countryCode: zod.z.string().trim().toUpperCase().length(2),
508
+ city: zod.z.string().trim().min(1).max(160)
509
+ });
510
+ var CheckoutLocationSchema = zod.z.object({
511
+ countryCode: zod.z.string().length(2),
512
+ country: zod.z.string(),
513
+ cities: zod.z.array(zod.z.string()).min(1)
514
+ });
515
+ var CheckoutSnapshotSchema = zod.z.object({
516
+ cart: CartSchema,
517
+ locations: zod.z.array(CheckoutLocationSchema),
518
+ mainWallet: zod.z.object({
519
+ balanceUsd: MoneySchema,
520
+ availableBalanceUsd: MoneySchema
521
+ }),
522
+ paymentMethods: zod.z.array(zod.z.enum(OrderPaymentMethod)),
523
+ reserveDurationHours: zod.z.literal(24)
524
+ });
525
+ var CheckoutWarehouseAvailabilitySchema = zod.z.object({
526
+ variantPublicId: PublicIdSchema3,
527
+ requestedQuantity: zod.z.number().int().positive(),
528
+ availableQuantity: zod.z.number().int().nonnegative(),
529
+ availability: zod.z.enum(OrderStockAvailability)
530
+ });
531
+ var CheckoutWarehouseSchema = zod.z.object({
532
+ publicId: PublicIdSchema3,
533
+ code: zod.z.string(),
534
+ name: zod.z.string(),
535
+ countryCode: zod.z.string().length(2),
536
+ country: zod.z.string(),
537
+ city: zod.z.string(),
538
+ address: zod.z.string(),
539
+ phoneNumber: zod.z.string(),
540
+ mapUrl: zod.z.url(),
541
+ timezone: zod.z.string(),
542
+ schedule: WarehouseWeeklyScheduleSchema,
543
+ canFulfill: zod.z.boolean(),
544
+ items: zod.z.array(CheckoutWarehouseAvailabilitySchema)
545
+ });
546
+ var CheckoutWarehouseListSchema = zod.z.array(CheckoutWarehouseSchema);
547
+ var CreateOrderRequestSchema = zod.z.object({
548
+ warehousePublicId: PublicIdSchema3,
549
+ deliveryMethod: zod.z.literal("PICKUP" /* PICKUP */),
550
+ paymentMethod: zod.z.enum(OrderPaymentMethod),
551
+ walletAmountUsd: MoneySchema.optional(),
552
+ idempotencyKey: PublicIdSchema3
553
+ }).superRefine((value, context) => {
554
+ if (value.paymentMethod === "CASH" /* CASH */ && value.walletAmountUsd) {
555
+ context.addIssue({
556
+ code: "custom",
557
+ path: ["walletAmountUsd"],
558
+ message: "\u0414\u043B\u044F \u043E\u043F\u043B\u0430\u0442\u044B \u043D\u0430\u043B\u0438\u0447\u043D\u044B\u043C\u0438 \u0441\u0443\u043C\u043C\u0430 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430 \u043D\u0435 \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044F"
559
+ });
560
+ }
561
+ if (value.paymentMethod === "MAIN_WALLET" /* MAIN_WALLET */ && (!value.walletAmountUsd || value.walletAmountUsd === "0.00")) {
562
+ context.addIssue({
563
+ code: "custom",
564
+ path: ["walletAmountUsd"],
565
+ message: "\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u0441\u0443\u043C\u043C\u0443 \u043E\u043F\u043B\u0430\u0442\u044B \u0441 \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u0433\u043E \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430"
566
+ });
567
+ }
568
+ });
569
+ var OrderPublicIdParamSchema = zod.z.object({ publicId: PublicIdSchema3 });
570
+ var OrderReceiptParamSchema = zod.z.object({
571
+ publicId: PublicIdSchema3,
572
+ receiptPublicId: PublicIdSchema3
573
+ });
574
+ var OrderWarehouseSchema = zod.z.object({
575
+ publicId: PublicIdSchema3,
576
+ code: zod.z.string(),
577
+ name: zod.z.string(),
578
+ countryCode: zod.z.string().length(2),
579
+ country: zod.z.string(),
580
+ city: zod.z.string(),
581
+ address: zod.z.string(),
582
+ phoneNumber: zod.z.string(),
583
+ mapUrl: zod.z.url(),
584
+ timezone: zod.z.string(),
585
+ schedule: WarehouseWeeklyScheduleSchema
586
+ });
587
+ var OrderItemSchema = zod.z.object({
588
+ publicId: PublicIdSchema3,
589
+ productPublicId: PublicIdSchema3,
590
+ variantPublicId: PublicIdSchema3,
591
+ productName: zod.z.string(),
592
+ sku: zod.z.string(),
593
+ variantQuantity: DecimalSchema2,
594
+ unit: zod.z.enum(ProductUnit),
595
+ quantity: zod.z.number().int().positive(),
596
+ unitPriceUsd: MoneySchema,
597
+ lineTotalUsd: MoneySchema,
598
+ unitPv: MoneySchema,
599
+ lineTotalPv: MoneySchema,
600
+ coverContentUrl: zod.z.string().nullable()
601
+ });
602
+ var OrderReceiptSchema = zod.z.object({
603
+ publicId: PublicIdSchema3,
604
+ status: zod.z.enum(OrderReceiptStatus),
605
+ originalName: zod.z.string().nullable(),
606
+ mimeType: zod.z.string(),
607
+ sizeBytes: zod.z.number().int().positive(),
608
+ version: zod.z.number().int().positive(),
609
+ rejectionReason: zod.z.string().nullable(),
610
+ reviewedAt: DateTimeSchema2.nullable(),
611
+ createdAt: DateTimeSchema2,
612
+ contentUrl: zod.z.string()
613
+ });
614
+ var OrderEventSchema = zod.z.object({
615
+ publicId: PublicIdSchema3,
616
+ type: zod.z.enum(OrderEventType),
617
+ actorLogin: zod.z.string().nullable(),
618
+ comment: zod.z.string().nullable(),
619
+ createdAt: DateTimeSchema2
620
+ });
621
+ var OrderSchema = zod.z.object({
622
+ publicId: PublicIdSchema3,
623
+ number: OrderNumberSchema,
624
+ status: zod.z.enum(OrderStatus),
625
+ paymentStatus: zod.z.enum(OrderPaymentStatus),
626
+ deliveryMethod: zod.z.enum(OrderDeliveryMethod),
627
+ paymentMethod: zod.z.enum(OrderPaymentMethod),
628
+ locale: zod.z.string().length(2),
629
+ baseCurrencyCode: zod.z.string().length(3),
630
+ displayCurrencyCode: zod.z.string().length(3),
631
+ displayRate: zod.z.string(),
632
+ subtotalUsd: MoneySchema,
633
+ totalPv: MoneySchema,
634
+ walletPaidUsd: MoneySchema,
635
+ walletRefundedUsd: MoneySchema,
636
+ cashDueUsd: MoneySchema,
637
+ reserveExpiresAt: DateTimeSchema2.nullable(),
638
+ paidAt: DateTimeSchema2.nullable(),
639
+ cancelledAt: DateTimeSchema2.nullable(),
640
+ cancellationReason: zod.z.string().nullable(),
641
+ warehouse: OrderWarehouseSchema,
642
+ items: zod.z.array(OrderItemSchema).min(1),
643
+ receipts: zod.z.array(OrderReceiptSchema),
644
+ events: zod.z.array(OrderEventSchema),
645
+ createdAt: DateTimeSchema2,
646
+ updatedAt: DateTimeSchema2
647
+ });
648
+ var OrderListItemSchema = OrderSchema.omit({
649
+ receipts: true,
650
+ events: true
651
+ });
652
+ var OrderListQuerySchema = BaseListQuerySchema.extend({
653
+ status: zod.z.enum(OrderStatus).optional(),
654
+ paymentStatus: zod.z.enum(OrderPaymentStatus).optional()
655
+ });
656
+ var OrderListResponseSchema = zod.z.object({
657
+ items: zod.z.array(OrderListItemSchema),
658
+ meta: zod.z.object({
659
+ page: zod.z.number().int().positive(),
660
+ limit: zod.z.number().int().positive(),
661
+ total: zod.z.number().int().nonnegative(),
662
+ pageCount: zod.z.number().int().nonnegative()
663
+ })
664
+ });
665
+ var WarehouseOrderReservationListQuerySchema = BaseListQuerySchema.extend({
666
+ warehousePublicId: PublicIdSchema3,
667
+ reservationStatus: zod.z.enum(OrderReservationStatus).optional()
668
+ });
669
+ var WarehouseOrderReservationSchema = zod.z.object({
670
+ publicId: PublicIdSchema3,
671
+ status: zod.z.enum(OrderReservationStatus),
672
+ quantity: zod.z.number().int().positive(),
673
+ createdAt: DateTimeSchema2,
674
+ releasedAt: DateTimeSchema2.nullable(),
675
+ reserveExpiresAt: DateTimeSchema2.nullable(),
676
+ releaseReason: zod.z.string().nullable(),
677
+ order: zod.z.object({
678
+ publicId: PublicIdSchema3,
679
+ number: OrderNumberSchema,
680
+ status: zod.z.enum(OrderStatus),
681
+ paymentStatus: zod.z.enum(OrderPaymentStatus)
682
+ }),
683
+ item: zod.z.object({
684
+ publicId: PublicIdSchema3,
685
+ productPublicId: PublicIdSchema3,
686
+ variantPublicId: PublicIdSchema3,
687
+ productName: zod.z.string(),
688
+ sku: zod.z.string(),
689
+ coverContentUrl: zod.z.string().nullable()
690
+ }),
691
+ batch: zod.z.object({
692
+ publicId: PublicIdSchema3,
693
+ batchNumber: zod.z.string().nullable(),
694
+ expiresAt: zod.z.iso.date()
695
+ })
696
+ });
697
+ var WarehouseOrderReservationListResponseSchema = zod.z.object({
698
+ items: zod.z.array(WarehouseOrderReservationSchema),
699
+ meta: zod.z.object({
700
+ page: zod.z.number().int().positive(),
701
+ limit: zod.z.number().int().positive(),
702
+ total: zod.z.number().int().nonnegative(),
703
+ pageCount: zod.z.number().int().nonnegative()
704
+ }),
705
+ summary: zod.z.object({
706
+ activeQuantity: zod.z.number().int().nonnegative(),
707
+ activeReservations: zod.z.number().int().nonnegative(),
708
+ releasedReservations: zod.z.number().int().nonnegative()
709
+ })
710
+ });
711
+ var ReviewOrderReceiptRequestSchema = zod.z.object({
712
+ decision: zod.z.enum(OrderReceiptDecision),
713
+ version: zod.z.number().int().positive(),
714
+ rejectionReason: zod.z.string().trim().min(1).max(2e3).optional()
715
+ }).superRefine((value, context) => {
716
+ if (value.decision === "REJECT" /* REJECT */ && !value.rejectionReason) {
717
+ context.addIssue({
718
+ code: "custom",
719
+ path: ["rejectionReason"],
720
+ message: "\u041F\u0440\u0438\u0447\u0438\u043D\u0430 \u043E\u0442\u043A\u043B\u043E\u043D\u0435\u043D\u0438\u044F \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u0430"
721
+ });
722
+ }
723
+ if (value.decision === "APPROVE" /* APPROVE */ && value.rejectionReason) {
724
+ context.addIssue({
725
+ code: "custom",
726
+ path: ["rejectionReason"],
727
+ message: "\u041F\u0440\u0438\u0447\u0438\u043D\u0430 \u043D\u0435 \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044F \u043F\u0440\u0438 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0438"
728
+ });
729
+ }
730
+ });
731
+ var OrderNotificationSchema = zod.z.object({
732
+ publicId: PublicIdSchema3,
733
+ orderPublicId: PublicIdSchema3,
734
+ orderNumber: OrderNumberSchema,
735
+ type: zod.z.enum(OrderNotificationType),
736
+ isRead: zod.z.boolean(),
737
+ createdAt: DateTimeSchema2
738
+ });
739
+ var OrderNotificationListSchema = zod.z.array(OrderNotificationSchema);
740
+
741
+ exports.CheckoutLocationSchema = CheckoutLocationSchema;
742
+ exports.CheckoutSnapshotSchema = CheckoutSnapshotSchema;
743
+ exports.CheckoutWarehouseAvailabilitySchema = CheckoutWarehouseAvailabilitySchema;
744
+ exports.CheckoutWarehouseListSchema = CheckoutWarehouseListSchema;
745
+ exports.CheckoutWarehouseQuerySchema = CheckoutWarehouseQuerySchema;
746
+ exports.CheckoutWarehouseSchema = CheckoutWarehouseSchema;
747
+ exports.CreateOrderRequestSchema = CreateOrderRequestSchema;
748
+ exports.OrderDeliveryMethod = OrderDeliveryMethod;
749
+ exports.OrderEventSchema = OrderEventSchema;
750
+ exports.OrderEventType = OrderEventType;
751
+ exports.OrderItemSchema = OrderItemSchema;
752
+ exports.OrderListItemSchema = OrderListItemSchema;
753
+ exports.OrderListQuerySchema = OrderListQuerySchema;
754
+ exports.OrderListResponseSchema = OrderListResponseSchema;
755
+ exports.OrderNotificationListSchema = OrderNotificationListSchema;
756
+ exports.OrderNotificationSchema = OrderNotificationSchema;
757
+ exports.OrderNotificationType = OrderNotificationType;
758
+ exports.OrderPaymentMethod = OrderPaymentMethod;
759
+ exports.OrderPaymentStatus = OrderPaymentStatus;
760
+ exports.OrderPublicIdParamSchema = OrderPublicIdParamSchema;
761
+ exports.OrderReceiptDecision = OrderReceiptDecision;
762
+ exports.OrderReceiptParamSchema = OrderReceiptParamSchema;
763
+ exports.OrderReceiptSchema = OrderReceiptSchema;
764
+ exports.OrderReceiptStatus = OrderReceiptStatus;
765
+ exports.OrderReservationStatus = OrderReservationStatus;
766
+ exports.OrderSchema = OrderSchema;
767
+ exports.OrderStatus = OrderStatus;
768
+ exports.OrderStockAvailability = OrderStockAvailability;
769
+ exports.OrderWarehouseSchema = OrderWarehouseSchema;
770
+ exports.ReviewOrderReceiptRequestSchema = ReviewOrderReceiptRequestSchema;
771
+ exports.WarehouseOrderReservationListQuerySchema = WarehouseOrderReservationListQuerySchema;
772
+ exports.WarehouseOrderReservationListResponseSchema = WarehouseOrderReservationListResponseSchema;
773
+ exports.WarehouseOrderReservationSchema = WarehouseOrderReservationSchema;
774
+ //# sourceMappingURL=index.js.map
775
+ //# sourceMappingURL=index.js.map