@open-mercato/core 0.6.3-develop.3525.3.cc18b8a43f → 0.6.3-develop.3574.1.f3c5dcf345
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/dist/helpers/integration/queue-runner.js +15 -3
- package/dist/helpers/integration/queue-runner.js.map +2 -2
- package/dist/helpers/integration/queue.js +1 -1
- package/dist/helpers/integration/queue.js.map +2 -2
- package/dist/modules/auth/api/roles/acl/route.js +37 -1
- package/dist/modules/auth/api/roles/acl/route.js.map +2 -2
- package/dist/modules/auth/api/roles/route.js +36 -2
- package/dist/modules/auth/api/roles/route.js.map +2 -2
- package/dist/modules/auth/api/users/acl/route.js +36 -1
- package/dist/modules/auth/api/users/acl/route.js.map +2 -2
- package/dist/modules/auth/api/users/route.js +89 -11
- package/dist/modules/auth/api/users/route.js.map +2 -2
- package/dist/modules/auth/backend/roles/[id]/edit/page.js +32 -14
- package/dist/modules/auth/backend/roles/[id]/edit/page.js.map +2 -2
- package/dist/modules/auth/backend/users/[id]/edit/page.js +1 -1
- package/dist/modules/auth/backend/users/[id]/edit/page.js.map +2 -2
- package/dist/modules/auth/backend/users/create/page.js +1 -1
- package/dist/modules/auth/backend/users/create/page.js.map +2 -2
- package/dist/modules/auth/backend/users/roleOptions.js +1 -1
- package/dist/modules/auth/backend/users/roleOptions.js.map +2 -2
- package/dist/modules/auth/commands/roles.js +8 -0
- package/dist/modules/auth/commands/roles.js.map +2 -2
- package/dist/modules/auth/commands/users.js +3 -0
- package/dist/modules/auth/commands/users.js.map +2 -2
- package/dist/modules/auth/components/AclEditor.js +53 -26
- package/dist/modules/auth/components/AclEditor.js.map +2 -2
- package/dist/modules/auth/lib/grantChecks.js +97 -2
- package/dist/modules/auth/lib/grantChecks.js.map +2 -2
- package/dist/modules/business_rules/lib/expression-evaluator.js +9 -7
- package/dist/modules/business_rules/lib/expression-evaluator.js.map +2 -2
- package/dist/modules/dashboards/components/WidgetVisibilityEditor.js +41 -12
- package/dist/modules/dashboards/components/WidgetVisibilityEditor.js.map +2 -2
- package/dist/modules/sales/commands/documents.js +104 -0
- package/dist/modules/sales/commands/documents.js.map +2 -2
- package/dist/modules/sales/data/validators.js +20 -1
- package/dist/modules/sales/data/validators.js.map +2 -2
- package/dist/modules/translations/components/TranslationManager.js +9 -4
- package/dist/modules/translations/components/TranslationManager.js.map +2 -2
- package/dist/modules/workflows/lib/event-trigger-service.js +23 -11
- package/dist/modules/workflows/lib/event-trigger-service.js.map +2 -2
- package/jest.config.cjs +1 -0
- package/package.json +7 -7
- package/src/helpers/integration/queue-runner.ts +21 -2
- package/src/helpers/integration/queue.ts +1 -1
- package/src/modules/auth/api/roles/acl/route.ts +39 -1
- package/src/modules/auth/api/roles/route.ts +38 -2
- package/src/modules/auth/api/users/acl/route.ts +41 -1
- package/src/modules/auth/api/users/route.ts +92 -11
- package/src/modules/auth/backend/roles/[id]/edit/page.tsx +35 -13
- package/src/modules/auth/backend/users/[id]/edit/page.tsx +1 -1
- package/src/modules/auth/backend/users/create/page.tsx +1 -1
- package/src/modules/auth/backend/users/roleOptions.ts +2 -1
- package/src/modules/auth/commands/roles.ts +8 -0
- package/src/modules/auth/commands/users.ts +3 -0
- package/src/modules/auth/components/AclEditor.tsx +50 -24
- package/src/modules/auth/lib/grantChecks.ts +116 -2
- package/src/modules/business_rules/lib/expression-evaluator.ts +9 -13
- package/src/modules/dashboards/components/WidgetVisibilityEditor.tsx +38 -12
- package/src/modules/sales/commands/documents.ts +116 -0
- package/src/modules/sales/data/validators.ts +38 -0
- package/src/modules/sales/i18n/de.json +2 -0
- package/src/modules/sales/i18n/en.json +2 -0
- package/src/modules/sales/i18n/es.json +2 -0
- package/src/modules/sales/i18n/pl.json +2 -0
- package/src/modules/translations/components/TranslationManager.tsx +9 -4
- package/src/modules/workflows/lib/event-trigger-service.ts +24 -11
|
@@ -349,6 +349,22 @@ const enforceAdjustmentSign = (value, ctx) => {
|
|
|
349
349
|
}
|
|
350
350
|
};
|
|
351
351
|
const enforceReturnAdjustmentSign = enforceAdjustmentSign;
|
|
352
|
+
const RETURN_ADJUSTMENT_EXCEEDS_REMAINING_NET_MESSAGE = "Return adjustment amountNet exceeds the remaining grand total. Reduce the amount or remove existing returns first.";
|
|
353
|
+
const RETURN_ADJUSTMENT_EXCEEDS_REMAINING_GROSS_MESSAGE = "Return adjustment amountGross exceeds the remaining grand total. Reduce the amount or remove existing returns first.";
|
|
354
|
+
const RETURN_REMAINING_EPSILON = 5e-3;
|
|
355
|
+
const validateReturnAdjustmentWithinRemaining = (value) => {
|
|
356
|
+
if (value.kind !== "return") return [];
|
|
357
|
+
const absNet = typeof value.amountNet === "number" ? Math.abs(value.amountNet) : 0;
|
|
358
|
+
const absGross = typeof value.amountGross === "number" ? Math.abs(value.amountGross) : 0;
|
|
359
|
+
const issues = [];
|
|
360
|
+
if (absGross > value.remainingGross + RETURN_REMAINING_EPSILON) {
|
|
361
|
+
issues.push({ path: "amountGross", message: RETURN_ADJUSTMENT_EXCEEDS_REMAINING_GROSS_MESSAGE });
|
|
362
|
+
}
|
|
363
|
+
if (absNet > value.remainingNet + RETURN_REMAINING_EPSILON) {
|
|
364
|
+
issues.push({ path: "amountNet", message: RETURN_ADJUSTMENT_EXCEEDS_REMAINING_NET_MESSAGE });
|
|
365
|
+
}
|
|
366
|
+
return issues;
|
|
367
|
+
};
|
|
352
368
|
const orderAdjustmentCreateSchema = scoped.extend({
|
|
353
369
|
orderId: uuid(),
|
|
354
370
|
orderLineId: uuid().optional(),
|
|
@@ -716,6 +732,8 @@ const quoteAcceptSchema = z.object({
|
|
|
716
732
|
export {
|
|
717
733
|
DISCOUNT_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,
|
|
718
734
|
DISCOUNT_ADJUSTMENT_NEGATIVE_NET_MESSAGE,
|
|
735
|
+
RETURN_ADJUSTMENT_EXCEEDS_REMAINING_GROSS_MESSAGE,
|
|
736
|
+
RETURN_ADJUSTMENT_EXCEEDS_REMAINING_NET_MESSAGE,
|
|
719
737
|
RETURN_ADJUSTMENT_POSITIVE_GROSS_MESSAGE,
|
|
720
738
|
RETURN_ADJUSTMENT_POSITIVE_NET_MESSAGE,
|
|
721
739
|
SALES_PHONE_INVALID_MESSAGE_KEY,
|
|
@@ -772,6 +790,7 @@ export {
|
|
|
772
790
|
statusDictionaryCreateSchema,
|
|
773
791
|
statusDictionaryUpdateSchema,
|
|
774
792
|
taxRateCreateSchema,
|
|
775
|
-
taxRateUpdateSchema
|
|
793
|
+
taxRateUpdateSchema,
|
|
794
|
+
validateReturnAdjustmentWithinRemaining
|
|
776
795
|
};
|
|
777
796
|
//# sourceMappingURL=validators.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/modules/sales/data/validators.ts"],
|
|
4
|
-
"sourcesContent": ["import { z } from 'zod'\nimport {\n createDictionaryEntrySchema,\n updateDictionaryEntrySchema,\n} from '@open-mercato/core/modules/dictionaries/data/validators'\nimport { getPaymentProvider, getShippingProvider } from '../lib/providers'\nimport { REFERENCE_UNIT_CODES } from '@open-mercato/shared/lib/units/unitCodes'\nimport { isValidPhoneNumber } from '@open-mercato/shared/lib/phone'\n\nexport const SALES_PHONE_INVALID_MESSAGE_KEY = 'customers.people.form.primaryPhone.invalid'\n\nconst optionalPhoneField = (max = 50) =>\n z\n .string()\n .trim()\n .max(max)\n .refine((val) => isValidPhoneNumber(val), { message: SALES_PHONE_INVALID_MESSAGE_KEY })\n .optional()\n\nconst optionalNullablePhoneField = (max = 50) =>\n z\n .union([\n z\n .string()\n .trim()\n .max(max)\n .refine((val) => isValidPhoneNumber(val), { message: SALES_PHONE_INVALID_MESSAGE_KEY }),\n z.literal(''),\n z.null(),\n ])\n .optional()\n\nexport const customerSnapshotSchema = z\n .object({\n customer: z\n .object({\n primaryPhone: optionalNullablePhoneField(),\n })\n .passthrough()\n .nullable()\n .optional(),\n contact: z.unknown().optional(),\n })\n .passthrough()\n\nconst uuid = () => z.string().uuid()\n\nconst scoped = z.object({\n organizationId: uuid(),\n tenantId: uuid(),\n})\n\nconst currencyCode = z\n .string()\n .trim()\n .regex(/^[A-Z]{3}$/, 'currency code must be a three-letter ISO code')\n\nconst decimal = (opts?: { min?: number; max?: number; message?: string }) => {\n let schema = z.coerce.number()\n if (typeof opts?.min === 'number') schema = schema.min(opts.min)\n if (typeof opts?.max === 'number') schema = schema.max(opts.max, opts.message)\n return schema\n}\n\nconst MAX_QUANTITY = 999_999_999\n\nconst percentage = () => decimal({ min: 0, max: 100 })\n\nconst jsonRecord = z.record(z.string(), z.unknown())\n\nconst metadata = jsonRecord.optional()\nconst providerSettings = jsonRecord.optional()\n\nconst channelCodeSchema = z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120)\n\nconst numberFormatSchema = z.string().trim().min(1).max(191)\nconst statusListSchema = z\n .array(z.string().trim().min(1).max(120))\n .max(200)\n .optional()\n .nullable()\n\nexport const salesSettingsUpsertSchema = scoped.extend({\n orderNumberFormat: numberFormatSchema,\n quoteNumberFormat: numberFormatSchema,\n orderNextNumber: z.coerce.number().int().min(1).max(1_000_000_000).optional(),\n quoteNextNumber: z.coerce.number().int().min(1).max(1_000_000_000).optional(),\n orderCustomerEditableStatuses: statusListSchema,\n orderAddressEditableStatuses: statusListSchema,\n})\n\nexport type SalesSettingsUpsertInput = z.infer<typeof salesSettingsUpsertSchema>\n\nexport const salesEditingSettingsSchema = scoped.extend({\n orderNumberFormat: numberFormatSchema.optional(),\n quoteNumberFormat: numberFormatSchema.optional(),\n orderCustomerEditableStatuses: statusListSchema,\n orderAddressEditableStatuses: statusListSchema,\n})\n\nexport type SalesEditingSettingsInput = z.infer<typeof salesEditingSettingsSchema>\n\nexport const channelCreateSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: channelCodeSchema,\n description: z.string().trim().max(2000).optional(),\n statusEntryId: uuid().optional(),\n websiteUrl: z.string().trim().url().max(300).optional(),\n contactEmail: z.string().trim().email().max(320).optional(),\n contactPhone: optionalPhoneField(),\n addressLine1: z.string().trim().max(255).optional(),\n addressLine2: z.string().trim().max(255).optional(),\n city: z.string().trim().max(120).optional(),\n region: z.string().trim().max(120).optional(),\n postalCode: z.string().trim().max(30).optional(),\n country: z.string().trim().max(2).optional(),\n latitude: decimal().optional(),\n longitude: decimal().optional(),\n isActive: z.boolean().optional(),\n metadata,\n})\n\nexport const channelUpdateSchema = z\n .object({\n id: uuid(),\n code: channelCodeSchema,\n })\n .merge(channelCreateSchema.omit({ code: true }).partial())\n\n// Base schema without refinements (used for .partial() in update schema)\nconst shippingMethodBaseSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120),\n description: z.string().trim().max(2000).optional(),\n carrierCode: z.string().trim().max(120).optional(),\n providerKey: z.string().trim().max(120).optional(),\n serviceLevel: z.string().trim().max(120).optional(),\n estimatedTransitDays: z.coerce.number().int().min(0).max(365).optional(),\n baseRateNet: decimal({ min: 0 }).optional(),\n baseRateGross: decimal({ min: 0 }).optional(),\n currencyCode: currencyCode.optional(),\n isActive: z.boolean().optional(),\n providerSettings,\n metadata,\n})\n\n// Refinement for provider settings validation\nconst shippingMethodRefine = (value: { providerKey?: string; providerSettings?: Record<string, unknown> }, ctx: z.RefinementCtx) => {\n if (value.providerKey) {\n const provider = getShippingProvider(value.providerKey)\n const schema = provider?.settings?.schema\n if (schema) {\n const parsed = schema.safeParse(value.providerSettings ?? {})\n if (!parsed.success) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: parsed.error.issues?.[0]?.message ?? 'Invalid provider configuration',\n path: ['providerSettings'],\n })\n }\n }\n }\n}\n\nexport const shippingMethodCreateSchema = shippingMethodBaseSchema.superRefine(shippingMethodRefine)\n\nexport const shippingMethodUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(shippingMethodBaseSchema.partial())\n .superRefine(shippingMethodRefine)\n\nexport const deliveryWindowCreateSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120),\n description: z.string().trim().max(2000).optional(),\n leadTimeDays: z.coerce.number().int().min(0).max(365).optional(),\n cutoffTime: z.string().trim().regex(/^\\d{2}:\\d{2}$/).optional(),\n timezone: z.string().trim().max(120).optional(),\n isActive: z.boolean().optional(),\n metadata,\n})\n\nexport const deliveryWindowUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(deliveryWindowCreateSchema.partial())\n\n// Base schema without refinements (used for .partial() in update schema)\nconst paymentMethodBaseSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120),\n description: z.string().trim().max(2000).optional(),\n providerKey: z.string().trim().max(120).optional(),\n terms: z.string().trim().max(4000).optional(),\n isActive: z.boolean().optional(),\n providerSettings,\n metadata,\n})\n\n// Refinement for provider settings validation\nconst paymentMethodRefine = (value: { providerKey?: string; providerSettings?: Record<string, unknown> }, ctx: z.RefinementCtx) => {\n if (value.providerKey) {\n const provider = getPaymentProvider(value.providerKey)\n const schema = provider?.settings?.schema\n if (schema) {\n const parsed = schema.safeParse(value.providerSettings ?? {})\n if (!parsed.success) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: parsed.error.issues?.[0]?.message ?? 'Invalid provider configuration',\n path: ['providerSettings'],\n })\n }\n }\n }\n}\n\nexport const paymentMethodCreateSchema = paymentMethodBaseSchema.superRefine(paymentMethodRefine)\n\nexport const paymentMethodUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(paymentMethodBaseSchema.partial())\n .superRefine(paymentMethodRefine)\n\nexport const salesTagCreateSchema = scoped.extend({\n slug: z\n .string()\n .trim()\n .min(1)\n .max(80)\n .regex(/^[a-z0-9_-]+$/, 'Slug must be lowercase and may contain dashes or underscores'),\n label: z.string().trim().min(1).max(120),\n color: z.string().trim().max(30).optional(),\n description: z.string().trim().max(400).optional(),\n})\n\nexport const salesTagUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(salesTagCreateSchema.partial())\n\nexport const taxRateCreateSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120),\n rate: percentage(),\n countryCode: z.string().trim().length(2).optional(),\n regionCode: z.string().trim().max(6).optional(),\n postalCode: z.string().trim().max(30).optional(),\n city: z.string().trim().max(120).optional(),\n customerGroupId: uuid().optional(),\n productCategoryId: uuid().optional(),\n channelId: uuid().optional(),\n priority: z.coerce.number().int().min(0).max(10).optional(),\n isCompound: z.boolean().optional(),\n isDefault: z.boolean().optional(),\n metadata,\n startsAt: z.coerce.date().optional(),\n endsAt: z.coerce.date().optional(),\n})\n\nexport const taxRateUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(taxRateCreateSchema.partial())\n\nconst statusDictionaryEntryCreateSchema = z.object({\n value: createDictionaryEntrySchema.shape.value,\n label: z.string().trim().min(1).max(150).optional(),\n color: createDictionaryEntrySchema.shape.color,\n icon: createDictionaryEntrySchema.shape.icon,\n})\n\nconst statusDictionaryEntryUpdateFieldsSchema = z.object({\n value: updateDictionaryEntrySchema.shape.value,\n label: z.string().trim().min(1).max(150).optional(),\n color: updateDictionaryEntrySchema.shape.color,\n icon: updateDictionaryEntrySchema.shape.icon,\n})\n\nconst validateStatusDictionaryUpdate = (\n payload: z.infer<typeof statusDictionaryEntryUpdateFieldsSchema>,\n) => Object.values(payload).some((value) => value !== undefined)\n\nconst statusDictionaryEntryUpdateSchema = statusDictionaryEntryUpdateFieldsSchema.refine(\n validateStatusDictionaryUpdate,\n { message: 'Provide at least one field to update.' },\n)\n\nexport const statusDictionaryCreateSchema = scoped.merge(statusDictionaryEntryCreateSchema)\n\nexport const statusDictionaryUpdateSchema = scoped\n .merge(statusDictionaryEntryUpdateFieldsSchema)\n .safeExtend({ id: uuid() })\n .refine(validateStatusDictionaryUpdate, { message: 'Provide at least one field to update.' })\n\nconst lineKindSchema = z.enum(['product', 'service', 'shipping', 'discount', 'adjustment'])\n\nconst adjustmentKindSchema = z.string().trim().min(1).max(150)\n\nconst linePricingSchema = z.object({\n quantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }),\n quantityUnit: z.string().trim().max(25).optional(),\n normalizedQuantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }).optional(),\n normalizedUnit: z.string().trim().max(25).nullable().optional(),\n unitPriceNet: decimal({ min: 0 }).optional(),\n unitPriceGross: decimal({ min: 0 }).optional(),\n priceId: uuid().optional(),\n priceMode: z.enum(['net', 'gross']).optional(),\n taxRateId: uuid().optional(),\n discountAmount: decimal({ min: 0 }).optional(),\n discountPercent: percentage().optional(),\n taxRate: percentage().optional(),\n taxAmount: decimal({ min: 0 }).optional(),\n totalNetAmount: decimal({ min: 0 }).optional(),\n totalGrossAmount: decimal({ min: 0 }).optional(),\n})\n\nconst uomSnapshotSchema = z.object({\n version: z.literal(1),\n productId: z.string().nullable(),\n productVariantId: z.string().nullable(),\n baseUnitCode: z.string().nullable(),\n enteredUnitCode: z.string().nullable(),\n enteredQuantity: z.string(),\n toBaseFactor: z.string(),\n normalizedQuantity: z.string(),\n rounding: z.object({\n mode: z.enum(['half_up', 'down', 'up']),\n scale: z.number().int(),\n }),\n source: z.object({\n conversionId: z.string().nullable(),\n resolvedAt: z.string(),\n }),\n unitPriceReference: z.object({\n enabled: z.boolean(),\n referenceUnitCode: z.enum(REFERENCE_UNIT_CODES).nullable(),\n baseQuantity: z.string().nullable(),\n grossPerReference: z.string().nullable().optional(),\n netPerReference: z.string().nullable().optional(),\n }).optional(),\n}).nullable().optional()\n\nconst lineSharedSchema = z.object({\n kind: lineKindSchema.optional(),\n statusEntryId: uuid().optional(),\n productId: uuid().optional(),\n productVariantId: uuid().optional(),\n name: z.string().trim().max(255).optional(),\n description: z.string().trim().max(4000).optional(),\n comment: z.string().trim().max(2000).optional(),\n currencyCode,\n configuration: z.record(z.string(), z.unknown()).optional(),\n promotionCode: z.string().trim().max(120).optional(),\n promotionSnapshot: z.record(z.string(), z.unknown()).optional(),\n uomSnapshot: uomSnapshotSchema,\n metadata,\n customFieldSetId: uuid().optional(),\n customFields: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const orderLineCreateSchema = scoped.extend({\n orderId: uuid(),\n lineNumber: z.coerce.number().int().min(0).optional(),\n ...lineSharedSchema.shape,\n ...linePricingSchema.shape,\n catalogSnapshot: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const orderLineUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(orderLineCreateSchema.partial())\n\nexport const quoteLineCreateSchema = scoped.extend({\n quoteId: uuid(),\n lineNumber: z.coerce.number().int().min(0).optional(),\n ...lineSharedSchema.shape,\n ...linePricingSchema.shape,\n catalogSnapshot: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const quoteLineUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(quoteLineCreateSchema.partial())\n\n// Each adjustment kind has an intrinsic sign convention so the grand total\n// stays semantically correct regardless of operator input. The calculation\n// engine normalizes signs defensively, but the API edge rejects values that\n// would invert the kind's meaning so bad data never reaches storage.\n//\n// - `return`: non-positive \u2014 returns reduce the total (see #1705).\n// - `discount`: non-negative \u2014 discounts reduce the total.\n// - `surcharge`/`shipping`/`tax`: non-negative \u2014 they add to the total.\n// - `custom` and unknown kinds: unconstrained (operator-controlled).\n//\n// See #1905.\nexport const RETURN_ADJUSTMENT_POSITIVE_NET_MESSAGE =\n 'Return adjustments must use a non-positive amountNet (returns reduce the total).'\nexport const RETURN_ADJUSTMENT_POSITIVE_GROSS_MESSAGE =\n 'Return adjustments must use a non-positive amountGross (returns reduce the total).'\nexport const DISCOUNT_ADJUSTMENT_NEGATIVE_NET_MESSAGE =\n 'Discount adjustments must use a non-negative amountNet (discounts reduce the total).'\nexport const DISCOUNT_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE =\n 'Discount adjustments must use a non-negative amountGross (discounts reduce the total).'\nexport const SURCHARGE_ADJUSTMENT_NEGATIVE_NET_MESSAGE =\n 'Surcharge adjustments must use a non-negative amountNet (surcharges add to the total).'\nexport const SURCHARGE_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE =\n 'Surcharge adjustments must use a non-negative amountGross (surcharges add to the total).'\nexport const SHIPPING_ADJUSTMENT_NEGATIVE_NET_MESSAGE =\n 'Shipping adjustments must use a non-negative amountNet (shipping adds to the total).'\nexport const SHIPPING_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE =\n 'Shipping adjustments must use a non-negative amountGross (shipping adds to the total).'\nexport const TAX_ADJUSTMENT_NEGATIVE_NET_MESSAGE =\n 'Tax adjustments must use a non-negative amountNet (taxes add to the total).'\nexport const TAX_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE =\n 'Tax adjustments must use a non-negative amountGross (taxes add to the total).'\n\ntype AdjustmentSignInput = {\n kind?: string\n amountNet?: number\n amountGross?: number\n}\n\nconst NON_NEGATIVE_SIGN_MESSAGES: Record<string, { net: string; gross: string }> = {\n discount: {\n net: DISCOUNT_ADJUSTMENT_NEGATIVE_NET_MESSAGE,\n gross: DISCOUNT_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,\n },\n surcharge: {\n net: SURCHARGE_ADJUSTMENT_NEGATIVE_NET_MESSAGE,\n gross: SURCHARGE_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,\n },\n shipping: {\n net: SHIPPING_ADJUSTMENT_NEGATIVE_NET_MESSAGE,\n gross: SHIPPING_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,\n },\n tax: {\n net: TAX_ADJUSTMENT_NEGATIVE_NET_MESSAGE,\n gross: TAX_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,\n },\n}\n\nexport const enforceAdjustmentSign = (\n value: AdjustmentSignInput,\n ctx: z.RefinementCtx\n) => {\n if (!value.kind) return\n if (value.kind === 'return') {\n if (typeof value.amountNet === 'number' && value.amountNet > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: RETURN_ADJUSTMENT_POSITIVE_NET_MESSAGE,\n path: ['amountNet'],\n })\n }\n if (typeof value.amountGross === 'number' && value.amountGross > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: RETURN_ADJUSTMENT_POSITIVE_GROSS_MESSAGE,\n path: ['amountGross'],\n })\n }\n return\n }\n const messages = NON_NEGATIVE_SIGN_MESSAGES[value.kind]\n if (!messages) return\n if (typeof value.amountNet === 'number' && value.amountNet < 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: messages.net,\n path: ['amountNet'],\n })\n }\n if (typeof value.amountGross === 'number' && value.amountGross < 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: messages.gross,\n path: ['amountGross'],\n })\n }\n}\n\n/**\n * @deprecated Use `enforceAdjustmentSign` \u2014 it enforces the sign convention\n * for every adjustment kind, not just `return`. Kept for backward compatibility\n * with third-party code that imported the original helper.\n */\nexport const enforceReturnAdjustmentSign = enforceAdjustmentSign\n\nexport const orderAdjustmentCreateSchema = scoped.extend({\n orderId: uuid(),\n orderLineId: uuid().optional(),\n scope: z.enum(['order', 'line']).optional(),\n kind: adjustmentKindSchema.optional(),\n code: z.string().trim().max(120).optional(),\n label: z.string().trim().max(255).optional(),\n calculatorKey: z.string().trim().max(120).optional(),\n promotionId: uuid().optional(),\n rate: percentage().optional(),\n amountNet: decimal().optional(),\n amountGross: decimal().optional(),\n currencyCode: currencyCode.optional(),\n metadata,\n customFields: z.record(z.string(), z.unknown()).optional(),\n position: z.coerce.number().int().min(0).optional(),\n})\n\nexport const orderAdjustmentUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(orderAdjustmentCreateSchema.partial())\n\nexport const quoteAdjustmentCreateSchema = scoped.extend({\n quoteId: uuid(),\n quoteLineId: uuid().optional(),\n scope: z.enum(['order', 'line']).optional(),\n kind: adjustmentKindSchema.optional(),\n code: z.string().trim().max(120).optional(),\n label: z.string().trim().max(255).optional(),\n calculatorKey: z.string().trim().max(120).optional(),\n promotionId: uuid().optional(),\n rate: percentage().optional(),\n amountNet: decimal().optional(),\n amountGross: decimal().optional(),\n currencyCode: currencyCode.optional(),\n metadata,\n customFields: z.record(z.string(), z.unknown()).optional(),\n position: z.coerce.number().int().min(0).optional(),\n})\n\nexport const quoteAdjustmentUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(quoteAdjustmentCreateSchema.partial())\n\nconst orderTotalsSchema = z.object({\n subtotalNetAmount: decimal({ min: 0 }).optional(),\n subtotalGrossAmount: decimal({ min: 0 }).optional(),\n discountTotalAmount: decimal({ min: 0 }).optional(),\n taxTotalAmount: decimal({ min: 0 }).optional(),\n shippingNetAmount: decimal({ min: 0 }).optional(),\n shippingGrossAmount: decimal({ min: 0 }).optional(),\n surchargeTotalAmount: decimal({ min: 0 }).optional(),\n grandTotalNetAmount: decimal({ min: 0 }).optional(),\n grandTotalGrossAmount: decimal({ min: 0 }).optional(),\n paidTotalAmount: decimal({ min: 0 }).optional(),\n refundedTotalAmount: decimal({ min: 0 }).optional(),\n outstandingAmount: decimal().optional(),\n lineItemCount: z.coerce.number().int().min(0).optional(),\n})\n\nconst quoteTotalsSchema = z.object({\n subtotalNetAmount: decimal({ min: 0 }).optional(),\n subtotalGrossAmount: decimal({ min: 0 }).optional(),\n discountTotalAmount: decimal({ min: 0 }).optional(),\n taxTotalAmount: decimal({ min: 0 }).optional(),\n grandTotalNetAmount: decimal({ min: 0 }).optional(),\n grandTotalGrossAmount: decimal({ min: 0 }).optional(),\n lineItemCount: z.coerce.number().int().min(0).optional(),\n})\n\nexport const orderCreateSchema = scoped.extend({\n orderNumber: z.string().trim().min(1).max(191).optional(),\n externalReference: z.string().trim().max(191).optional(),\n customerReference: z.string().trim().max(191).optional(),\n customerEntityId: uuid().optional(),\n customerContactId: uuid().optional(),\n customerSnapshot: customerSnapshotSchema.optional(),\n billingAddressId: uuid().optional(),\n shippingAddressId: uuid().optional(),\n billingAddressSnapshot: jsonRecord.optional(),\n shippingAddressSnapshot: jsonRecord.optional(),\n currencyCode,\n exchangeRate: decimal({ min: 0 }).optional(),\n statusEntryId: uuid().optional(),\n fulfillmentStatusEntryId: uuid().optional(),\n paymentStatusEntryId: uuid().optional(),\n taxStrategyKey: z.string().trim().max(120).optional(),\n discountStrategyKey: z.string().trim().max(120).optional(),\n taxInfo: jsonRecord.optional(),\n shippingMethodId: uuid().optional(),\n shippingMethodCode: z.string().trim().max(120).optional(),\n deliveryWindowId: uuid().optional(),\n deliveryWindowCode: z.string().trim().max(120).optional(),\n paymentMethodId: uuid().optional(),\n paymentMethodCode: z.string().trim().max(120).optional(),\n channelId: uuid().optional(),\n placedAt: z.coerce.date().optional(),\n expectedDeliveryAt: z.coerce.date().optional(),\n dueAt: z.coerce.date().optional(),\n comments: z.string().trim().max(4000).optional(),\n internalNotes: z.string().trim().max(4000).optional(),\n shippingMethodSnapshot: jsonRecord.optional(),\n deliveryWindowSnapshot: jsonRecord.optional(),\n paymentMethodSnapshot: jsonRecord.optional(),\n metadata,\n customFieldSetId: uuid().optional(),\n lines: z.array(orderLineCreateSchema.omit({ organizationId: true, tenantId: true, orderId: true })).optional(),\n adjustments: z.array(orderAdjustmentCreateSchema.omit({ organizationId: true, tenantId: true, orderId: true })).optional(),\n tags: z.array(uuid()).optional(),\n ...orderTotalsSchema.shape,\n})\n\nexport const orderUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(orderCreateSchema.partial())\n\nexport const quoteCreateSchema = scoped.extend({\n quoteNumber: z.string().trim().min(1).max(191).optional(),\n statusEntryId: uuid().optional(),\n customerEntityId: uuid().optional(),\n customerContactId: uuid().optional(),\n channelId: uuid().optional(),\n customerSnapshot: customerSnapshotSchema.optional(),\n billingAddressId: uuid().optional(),\n shippingAddressId: uuid().optional(),\n billingAddressSnapshot: jsonRecord.optional(),\n shippingAddressSnapshot: jsonRecord.optional(),\n currencyCode,\n validFrom: z.coerce.date().optional(),\n validUntil: z.coerce.date().optional(),\n comments: z.string().trim().max(4000).optional(),\n taxInfo: jsonRecord.optional(),\n shippingMethodId: uuid().optional(),\n shippingMethodCode: z.string().trim().max(120).optional(),\n deliveryWindowId: uuid().optional(),\n deliveryWindowCode: z.string().trim().max(120).optional(),\n paymentMethodId: uuid().optional(),\n paymentMethodCode: z.string().trim().max(120).optional(),\n shippingMethodSnapshot: jsonRecord.optional(),\n deliveryWindowSnapshot: jsonRecord.optional(),\n paymentMethodSnapshot: jsonRecord.optional(),\n metadata,\n customFieldSetId: uuid().optional(),\n lines: z\n .array(quoteLineCreateSchema.omit({ organizationId: true, tenantId: true, quoteId: true }))\n .optional(),\n adjustments: z\n .array(quoteAdjustmentCreateSchema.omit({ organizationId: true, tenantId: true, quoteId: true }))\n .optional(),\n tags: z.array(uuid()).optional(),\n ...quoteTotalsSchema.shape,\n})\n\nexport const quoteUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(quoteCreateSchema.partial())\n\nconst documentKind = z.enum(['order', 'quote'])\n\nconst documentAddressFields = {\n documentId: uuid(),\n documentKind,\n customerAddressId: uuid().optional(),\n name: z.string().trim().max(255).nullable().optional(),\n purpose: z.string().trim().max(120).nullable().optional(),\n companyName: z.string().trim().max(255).nullable().optional(),\n addressLine1: z.string().trim().min(1).max(255),\n addressLine2: z.string().trim().max(255).nullable().optional(),\n city: z.string().trim().max(120).nullable().optional(),\n region: z.string().trim().max(120).nullable().optional(),\n postalCode: z.string().trim().max(60).nullable().optional(),\n country: z.string().trim().max(2).nullable().optional(),\n buildingNumber: z.string().trim().max(60).nullable().optional(),\n flatNumber: z.string().trim().max(60).nullable().optional(),\n latitude: z.coerce.number().optional().nullable(),\n longitude: z.coerce.number().optional().nullable(),\n}\n\nexport const documentAddressCreateSchema = scoped.extend(documentAddressFields)\n\nexport const documentAddressUpdateSchema = scoped.extend({\n id: uuid(),\n ...documentAddressFields,\n})\n\nexport const documentAddressDeleteSchema = scoped.extend({\n id: uuid(),\n documentId: uuid(),\n documentKind,\n})\n\nexport const shipmentCreateSchema = scoped.extend({\n orderId: uuid(),\n shipmentNumber: z.string().trim().max(191).optional(),\n shippingMethodId: uuid().optional(),\n statusEntryId: uuid().optional(),\n documentStatusEntryId: uuid().optional(),\n lineStatusEntryId: uuid().optional(),\n carrierName: z.string().trim().max(191).optional(),\n trackingNumbers: z.array(z.string().trim().max(191)).optional(),\n shippedAt: z.coerce.date().optional(),\n deliveredAt: z.coerce.date().optional(),\n weightValue: decimal({ min: 0 }).optional(),\n weightUnit: z.string().trim().max(25).optional(),\n declaredValueNet: decimal({ min: 0 }).optional(),\n declaredValueGross: decimal({ min: 0 }).optional(),\n currencyCode: currencyCode.optional(),\n notes: z.string().trim().max(4000).optional(),\n metadata,\n shipmentAddressSnapshot: jsonRecord.optional(),\n customFields: z.record(z.string(), z.unknown()).optional(),\n items: z\n .array(\n z.object({\n orderLineId: uuid(),\n quantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }).int('Quantity must be a whole number.'),\n metadata,\n })\n )\n .optional(),\n})\n\nexport const shipmentUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(shipmentCreateSchema.partial())\n\nconst returnLineQuantitySchema = z.coerce\n .number()\n .int('Return quantity must be a whole number.')\n .min(1, 'Return quantity must be at least 1.')\n .max(MAX_QUANTITY, 'Quantity is too large.')\n\nexport const returnCreateSchema = scoped.extend({\n orderId: uuid(),\n reason: z.string().trim().max(4000).optional(),\n notes: z.string().trim().max(4000).optional(),\n returnedAt: z.coerce.date().optional(),\n lines: z\n .array(\n z.object({\n orderLineId: uuid(),\n quantity: returnLineQuantitySchema,\n })\n )\n .min(1),\n})\n\nexport const invoiceCreateSchema = scoped.extend({\n orderId: uuid().optional(),\n invoiceNumber: z.string().trim().min(1).max(191).optional(),\n statusEntryId: uuid().optional(),\n issueDate: z.coerce.date().optional(),\n dueDate: z.coerce.date().optional(),\n currencyCode,\n metadata,\n customFieldSetId: uuid().optional(),\n lines: z\n .array(\n z.object({\n orderLineId: uuid().optional(),\n lineNumber: z.coerce.number().int().min(0).optional(),\n kind: lineKindSchema.optional(),\n name: z.string().trim().max(500).optional(),\n sku: z.string().trim().max(191).optional(),\n description: z.string().trim().max(4000).optional(),\n quantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }),\n quantityUnit: z.string().trim().max(25).optional(),\n normalizedQuantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }).optional(),\n normalizedUnit: z.string().trim().max(25).nullable().optional(),\n uomSnapshot: uomSnapshotSchema,\n currencyCode,\n unitPriceNet: decimal({ min: 0 }).optional(),\n unitPriceGross: decimal({ min: 0 }).optional(),\n discountAmount: decimal({ min: 0 }).optional(),\n discountPercent: percentage().optional(),\n taxRate: percentage().optional(),\n taxAmount: decimal({ min: 0 }).optional(),\n totalNetAmount: decimal({ min: 0 }).optional(),\n totalGrossAmount: decimal({ min: 0 }).optional(),\n metadata,\n })\n )\n .optional(),\n subtotalNetAmount: decimal({ min: 0 }).optional(),\n subtotalGrossAmount: decimal({ min: 0 }).optional(),\n discountTotalAmount: decimal({ min: 0 }).optional(),\n taxTotalAmount: decimal({ min: 0 }).optional(),\n grandTotalNetAmount: decimal({ min: 0 }).optional(),\n grandTotalGrossAmount: decimal({ min: 0 }).optional(),\n paidTotalAmount: decimal({ min: 0 }).optional(),\n outstandingAmount: decimal().optional(),\n})\n\nexport const invoiceUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(invoiceCreateSchema.partial())\n\nexport const creditMemoCreateSchema = scoped.extend({\n orderId: uuid().optional(),\n invoiceId: uuid().optional(),\n creditMemoNumber: z.string().trim().min(1).max(191).optional(),\n statusEntryId: uuid().optional(),\n issueDate: z.coerce.date().optional(),\n reason: z.string().trim().max(4000).optional(),\n currencyCode,\n metadata,\n customFieldSetId: uuid().optional(),\n lines: z\n .array(\n z.object({\n orderLineId: uuid().optional(),\n lineNumber: z.coerce.number().int().min(0).optional(),\n name: z.string().trim().max(500).optional(),\n sku: z.string().trim().max(191).optional(),\n description: z.string().trim().max(4000).optional(),\n quantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }),\n quantityUnit: z.string().trim().max(25).optional(),\n normalizedQuantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }).optional(),\n normalizedUnit: z.string().trim().max(25).nullable().optional(),\n uomSnapshot: uomSnapshotSchema,\n currencyCode,\n unitPriceNet: decimal({ min: 0 }).optional(),\n unitPriceGross: decimal({ min: 0 }).optional(),\n taxRate: percentage().optional(),\n taxAmount: decimal({ min: 0 }).optional(),\n totalNetAmount: decimal({ min: 0 }).optional(),\n totalGrossAmount: decimal({ min: 0 }).optional(),\n metadata,\n })\n )\n .optional(),\n subtotalNetAmount: decimal({ min: 0 }).optional(),\n subtotalGrossAmount: decimal({ min: 0 }).optional(),\n taxTotalAmount: decimal({ min: 0 }).optional(),\n grandTotalNetAmount: decimal({ min: 0 }).optional(),\n grandTotalGrossAmount: decimal({ min: 0 }).optional(),\n})\n\nexport const creditMemoUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(creditMemoCreateSchema.partial())\n\nexport const paymentCreateSchema = scoped.extend({\n orderId: uuid().optional(),\n paymentMethodId: uuid().optional(),\n paymentReference: z.string().trim().max(191).optional(),\n statusEntryId: uuid().optional(),\n documentStatusEntryId: uuid().optional(),\n lineStatusEntryId: uuid().optional(),\n amount: decimal({ min: 0 }),\n currencyCode,\n capturedAmount: decimal({ min: 0 }).optional(),\n refundedAmount: decimal({ min: 0 }).optional(),\n receivedAt: z.coerce.date().optional(),\n capturedAt: z.coerce.date().optional(),\n metadata,\n customFieldSetId: uuid().optional(),\n customFields: z.record(z.string(), z.unknown()).optional(),\n allocations: z\n .array(\n z.object({\n orderId: uuid().optional(),\n invoiceId: uuid().optional(),\n amount: decimal({ min: 0 }),\n currencyCode,\n metadata,\n })\n )\n .optional(),\n})\n\nexport const paymentUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(paymentCreateSchema.partial())\n\nexport const noteCreateSchema = scoped.extend({\n contextType: z.enum(['order', 'quote', 'invoice', 'credit_memo']),\n contextId: uuid(),\n orderId: uuid().optional(),\n quoteId: uuid().optional(),\n authorUserId: uuid().optional(),\n body: z.string().trim().min(1).max(8000),\n appearanceIcon: z.string().trim().max(100).optional().nullable(),\n appearanceColor: z\n .string()\n .trim()\n .regex(/^#([0-9a-fA-F]{6})$/)\n .optional()\n .nullable(),\n})\n\nexport const noteUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(\n z\n .object({\n body: z.string().trim().min(1).max(8000).optional(),\n })\n .extend({\n authorUserId: uuid().optional(),\n appearanceIcon: z.string().trim().max(100).optional().nullable(),\n appearanceColor: z\n .string()\n .trim()\n .regex(/^#([0-9a-fA-F]{6})$/)\n .optional()\n .nullable(),\n })\n )\n\nexport const documentNumberRequestSchema = scoped.extend({\n kind: z.enum(['order', 'quote', 'invoice', 'credit_memo']),\n format: numberFormatSchema.optional(),\n})\n\nexport type DocumentNumberRequestInput = z.infer<typeof documentNumberRequestSchema>\n\nexport type ChannelCreateInput = z.infer<typeof channelCreateSchema>\nexport type ChannelUpdateInput = z.infer<typeof channelUpdateSchema>\nexport type ShippingMethodCreateInput = z.infer<typeof shippingMethodCreateSchema>\nexport type ShippingMethodUpdateInput = z.infer<typeof shippingMethodUpdateSchema>\nexport type DeliveryWindowCreateInput = z.infer<typeof deliveryWindowCreateSchema>\nexport type DeliveryWindowUpdateInput = z.infer<typeof deliveryWindowUpdateSchema>\nexport type PaymentMethodCreateInput = z.infer<typeof paymentMethodCreateSchema>\nexport type PaymentMethodUpdateInput = z.infer<typeof paymentMethodUpdateSchema>\nexport type TaxRateCreateInput = z.infer<typeof taxRateCreateSchema>\nexport type TaxRateUpdateInput = z.infer<typeof taxRateUpdateSchema>\nexport type OrderCreateInput = z.infer<typeof orderCreateSchema>\nexport type OrderUpdateInput = z.infer<typeof orderUpdateSchema>\nexport type OrderLineCreateInput = z.infer<typeof orderLineCreateSchema>\nexport type OrderLineUpdateInput = z.infer<typeof orderLineUpdateSchema>\nexport type OrderAdjustmentCreateInput = z.infer<typeof orderAdjustmentCreateSchema>\nexport type OrderAdjustmentUpdateInput = z.infer<typeof orderAdjustmentUpdateSchema>\nexport type QuoteCreateInput = z.infer<typeof quoteCreateSchema>\nexport type QuoteUpdateInput = z.infer<typeof quoteUpdateSchema>\nexport type QuoteLineCreateInput = z.infer<typeof quoteLineCreateSchema>\nexport type QuoteLineUpdateInput = z.infer<typeof quoteLineUpdateSchema>\nexport type QuoteAdjustmentCreateInput = z.infer<typeof quoteAdjustmentCreateSchema>\nexport type QuoteAdjustmentUpdateInput = z.infer<typeof quoteAdjustmentUpdateSchema>\nexport type ShipmentCreateInput = z.infer<typeof shipmentCreateSchema>\nexport type ShipmentUpdateInput = z.infer<typeof shipmentUpdateSchema>\nexport type ReturnCreateInput = z.infer<typeof returnCreateSchema>\nexport type InvoiceCreateInput = z.infer<typeof invoiceCreateSchema>\nexport type InvoiceUpdateInput = z.infer<typeof invoiceUpdateSchema>\nexport type CreditMemoCreateInput = z.infer<typeof creditMemoCreateSchema>\nexport type CreditMemoUpdateInput = z.infer<typeof creditMemoUpdateSchema>\nexport const quoteSendSchema = z.object({\n quoteId: z.string().uuid(),\n validForDays: z.coerce.number().int().min(1).max(365).default(14),\n})\n\nexport const quoteAcceptSchema = z.object({\n token: z.string().uuid(),\n})\n\nexport type PaymentCreateInput = z.infer<typeof paymentCreateSchema>\nexport type PaymentUpdateInput = z.infer<typeof paymentUpdateSchema>\nexport type NoteCreateInput = z.infer<typeof noteCreateSchema>\nexport type NoteUpdateInput = z.infer<typeof noteUpdateSchema>\nexport type SalesTagCreateInput = z.infer<typeof salesTagCreateSchema>\nexport type SalesTagUpdateInput = z.infer<typeof salesTagUpdateSchema>\nexport type DocumentAddressCreateInput = z.infer<typeof documentAddressCreateSchema>\nexport type DocumentAddressUpdateInput = z.infer<typeof documentAddressUpdateSchema>\nexport type DocumentAddressDeleteInput = z.infer<typeof documentAddressDeleteSchema>\nexport type QuoteSendInput = z.infer<typeof quoteSendSchema>\nexport type QuoteAcceptInput = z.infer<typeof quoteAcceptSchema>\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { z } from 'zod'\nimport {\n createDictionaryEntrySchema,\n updateDictionaryEntrySchema,\n} from '@open-mercato/core/modules/dictionaries/data/validators'\nimport { getPaymentProvider, getShippingProvider } from '../lib/providers'\nimport { REFERENCE_UNIT_CODES } from '@open-mercato/shared/lib/units/unitCodes'\nimport { isValidPhoneNumber } from '@open-mercato/shared/lib/phone'\n\nexport const SALES_PHONE_INVALID_MESSAGE_KEY = 'customers.people.form.primaryPhone.invalid'\n\nconst optionalPhoneField = (max = 50) =>\n z\n .string()\n .trim()\n .max(max)\n .refine((val) => isValidPhoneNumber(val), { message: SALES_PHONE_INVALID_MESSAGE_KEY })\n .optional()\n\nconst optionalNullablePhoneField = (max = 50) =>\n z\n .union([\n z\n .string()\n .trim()\n .max(max)\n .refine((val) => isValidPhoneNumber(val), { message: SALES_PHONE_INVALID_MESSAGE_KEY }),\n z.literal(''),\n z.null(),\n ])\n .optional()\n\nexport const customerSnapshotSchema = z\n .object({\n customer: z\n .object({\n primaryPhone: optionalNullablePhoneField(),\n })\n .passthrough()\n .nullable()\n .optional(),\n contact: z.unknown().optional(),\n })\n .passthrough()\n\nconst uuid = () => z.string().uuid()\n\nconst scoped = z.object({\n organizationId: uuid(),\n tenantId: uuid(),\n})\n\nconst currencyCode = z\n .string()\n .trim()\n .regex(/^[A-Z]{3}$/, 'currency code must be a three-letter ISO code')\n\nconst decimal = (opts?: { min?: number; max?: number; message?: string }) => {\n let schema = z.coerce.number()\n if (typeof opts?.min === 'number') schema = schema.min(opts.min)\n if (typeof opts?.max === 'number') schema = schema.max(opts.max, opts.message)\n return schema\n}\n\nconst MAX_QUANTITY = 999_999_999\n\nconst percentage = () => decimal({ min: 0, max: 100 })\n\nconst jsonRecord = z.record(z.string(), z.unknown())\n\nconst metadata = jsonRecord.optional()\nconst providerSettings = jsonRecord.optional()\n\nconst channelCodeSchema = z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120)\n\nconst numberFormatSchema = z.string().trim().min(1).max(191)\nconst statusListSchema = z\n .array(z.string().trim().min(1).max(120))\n .max(200)\n .optional()\n .nullable()\n\nexport const salesSettingsUpsertSchema = scoped.extend({\n orderNumberFormat: numberFormatSchema,\n quoteNumberFormat: numberFormatSchema,\n orderNextNumber: z.coerce.number().int().min(1).max(1_000_000_000).optional(),\n quoteNextNumber: z.coerce.number().int().min(1).max(1_000_000_000).optional(),\n orderCustomerEditableStatuses: statusListSchema,\n orderAddressEditableStatuses: statusListSchema,\n})\n\nexport type SalesSettingsUpsertInput = z.infer<typeof salesSettingsUpsertSchema>\n\nexport const salesEditingSettingsSchema = scoped.extend({\n orderNumberFormat: numberFormatSchema.optional(),\n quoteNumberFormat: numberFormatSchema.optional(),\n orderCustomerEditableStatuses: statusListSchema,\n orderAddressEditableStatuses: statusListSchema,\n})\n\nexport type SalesEditingSettingsInput = z.infer<typeof salesEditingSettingsSchema>\n\nexport const channelCreateSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: channelCodeSchema,\n description: z.string().trim().max(2000).optional(),\n statusEntryId: uuid().optional(),\n websiteUrl: z.string().trim().url().max(300).optional(),\n contactEmail: z.string().trim().email().max(320).optional(),\n contactPhone: optionalPhoneField(),\n addressLine1: z.string().trim().max(255).optional(),\n addressLine2: z.string().trim().max(255).optional(),\n city: z.string().trim().max(120).optional(),\n region: z.string().trim().max(120).optional(),\n postalCode: z.string().trim().max(30).optional(),\n country: z.string().trim().max(2).optional(),\n latitude: decimal().optional(),\n longitude: decimal().optional(),\n isActive: z.boolean().optional(),\n metadata,\n})\n\nexport const channelUpdateSchema = z\n .object({\n id: uuid(),\n code: channelCodeSchema,\n })\n .merge(channelCreateSchema.omit({ code: true }).partial())\n\n// Base schema without refinements (used for .partial() in update schema)\nconst shippingMethodBaseSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120),\n description: z.string().trim().max(2000).optional(),\n carrierCode: z.string().trim().max(120).optional(),\n providerKey: z.string().trim().max(120).optional(),\n serviceLevel: z.string().trim().max(120).optional(),\n estimatedTransitDays: z.coerce.number().int().min(0).max(365).optional(),\n baseRateNet: decimal({ min: 0 }).optional(),\n baseRateGross: decimal({ min: 0 }).optional(),\n currencyCode: currencyCode.optional(),\n isActive: z.boolean().optional(),\n providerSettings,\n metadata,\n})\n\n// Refinement for provider settings validation\nconst shippingMethodRefine = (value: { providerKey?: string; providerSettings?: Record<string, unknown> }, ctx: z.RefinementCtx) => {\n if (value.providerKey) {\n const provider = getShippingProvider(value.providerKey)\n const schema = provider?.settings?.schema\n if (schema) {\n const parsed = schema.safeParse(value.providerSettings ?? {})\n if (!parsed.success) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: parsed.error.issues?.[0]?.message ?? 'Invalid provider configuration',\n path: ['providerSettings'],\n })\n }\n }\n }\n}\n\nexport const shippingMethodCreateSchema = shippingMethodBaseSchema.superRefine(shippingMethodRefine)\n\nexport const shippingMethodUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(shippingMethodBaseSchema.partial())\n .superRefine(shippingMethodRefine)\n\nexport const deliveryWindowCreateSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120),\n description: z.string().trim().max(2000).optional(),\n leadTimeDays: z.coerce.number().int().min(0).max(365).optional(),\n cutoffTime: z.string().trim().regex(/^\\d{2}:\\d{2}$/).optional(),\n timezone: z.string().trim().max(120).optional(),\n isActive: z.boolean().optional(),\n metadata,\n})\n\nexport const deliveryWindowUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(deliveryWindowCreateSchema.partial())\n\n// Base schema without refinements (used for .partial() in update schema)\nconst paymentMethodBaseSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120),\n description: z.string().trim().max(2000).optional(),\n providerKey: z.string().trim().max(120).optional(),\n terms: z.string().trim().max(4000).optional(),\n isActive: z.boolean().optional(),\n providerSettings,\n metadata,\n})\n\n// Refinement for provider settings validation\nconst paymentMethodRefine = (value: { providerKey?: string; providerSettings?: Record<string, unknown> }, ctx: z.RefinementCtx) => {\n if (value.providerKey) {\n const provider = getPaymentProvider(value.providerKey)\n const schema = provider?.settings?.schema\n if (schema) {\n const parsed = schema.safeParse(value.providerSettings ?? {})\n if (!parsed.success) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: parsed.error.issues?.[0]?.message ?? 'Invalid provider configuration',\n path: ['providerSettings'],\n })\n }\n }\n }\n}\n\nexport const paymentMethodCreateSchema = paymentMethodBaseSchema.superRefine(paymentMethodRefine)\n\nexport const paymentMethodUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(paymentMethodBaseSchema.partial())\n .superRefine(paymentMethodRefine)\n\nexport const salesTagCreateSchema = scoped.extend({\n slug: z\n .string()\n .trim()\n .min(1)\n .max(80)\n .regex(/^[a-z0-9_-]+$/, 'Slug must be lowercase and may contain dashes or underscores'),\n label: z.string().trim().min(1).max(120),\n color: z.string().trim().max(30).optional(),\n description: z.string().trim().max(400).optional(),\n})\n\nexport const salesTagUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(salesTagCreateSchema.partial())\n\nexport const taxRateCreateSchema = scoped.extend({\n name: z.string().trim().min(1).max(255),\n code: z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z0-9\\-_]+$/)\n .max(120),\n rate: percentage(),\n countryCode: z.string().trim().length(2).optional(),\n regionCode: z.string().trim().max(6).optional(),\n postalCode: z.string().trim().max(30).optional(),\n city: z.string().trim().max(120).optional(),\n customerGroupId: uuid().optional(),\n productCategoryId: uuid().optional(),\n channelId: uuid().optional(),\n priority: z.coerce.number().int().min(0).max(10).optional(),\n isCompound: z.boolean().optional(),\n isDefault: z.boolean().optional(),\n metadata,\n startsAt: z.coerce.date().optional(),\n endsAt: z.coerce.date().optional(),\n})\n\nexport const taxRateUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(taxRateCreateSchema.partial())\n\nconst statusDictionaryEntryCreateSchema = z.object({\n value: createDictionaryEntrySchema.shape.value,\n label: z.string().trim().min(1).max(150).optional(),\n color: createDictionaryEntrySchema.shape.color,\n icon: createDictionaryEntrySchema.shape.icon,\n})\n\nconst statusDictionaryEntryUpdateFieldsSchema = z.object({\n value: updateDictionaryEntrySchema.shape.value,\n label: z.string().trim().min(1).max(150).optional(),\n color: updateDictionaryEntrySchema.shape.color,\n icon: updateDictionaryEntrySchema.shape.icon,\n})\n\nconst validateStatusDictionaryUpdate = (\n payload: z.infer<typeof statusDictionaryEntryUpdateFieldsSchema>,\n) => Object.values(payload).some((value) => value !== undefined)\n\nconst statusDictionaryEntryUpdateSchema = statusDictionaryEntryUpdateFieldsSchema.refine(\n validateStatusDictionaryUpdate,\n { message: 'Provide at least one field to update.' },\n)\n\nexport const statusDictionaryCreateSchema = scoped.merge(statusDictionaryEntryCreateSchema)\n\nexport const statusDictionaryUpdateSchema = scoped\n .merge(statusDictionaryEntryUpdateFieldsSchema)\n .safeExtend({ id: uuid() })\n .refine(validateStatusDictionaryUpdate, { message: 'Provide at least one field to update.' })\n\nconst lineKindSchema = z.enum(['product', 'service', 'shipping', 'discount', 'adjustment'])\n\nconst adjustmentKindSchema = z.string().trim().min(1).max(150)\n\nconst linePricingSchema = z.object({\n quantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }),\n quantityUnit: z.string().trim().max(25).optional(),\n normalizedQuantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }).optional(),\n normalizedUnit: z.string().trim().max(25).nullable().optional(),\n unitPriceNet: decimal({ min: 0 }).optional(),\n unitPriceGross: decimal({ min: 0 }).optional(),\n priceId: uuid().optional(),\n priceMode: z.enum(['net', 'gross']).optional(),\n taxRateId: uuid().optional(),\n discountAmount: decimal({ min: 0 }).optional(),\n discountPercent: percentage().optional(),\n taxRate: percentage().optional(),\n taxAmount: decimal({ min: 0 }).optional(),\n totalNetAmount: decimal({ min: 0 }).optional(),\n totalGrossAmount: decimal({ min: 0 }).optional(),\n})\n\nconst uomSnapshotSchema = z.object({\n version: z.literal(1),\n productId: z.string().nullable(),\n productVariantId: z.string().nullable(),\n baseUnitCode: z.string().nullable(),\n enteredUnitCode: z.string().nullable(),\n enteredQuantity: z.string(),\n toBaseFactor: z.string(),\n normalizedQuantity: z.string(),\n rounding: z.object({\n mode: z.enum(['half_up', 'down', 'up']),\n scale: z.number().int(),\n }),\n source: z.object({\n conversionId: z.string().nullable(),\n resolvedAt: z.string(),\n }),\n unitPriceReference: z.object({\n enabled: z.boolean(),\n referenceUnitCode: z.enum(REFERENCE_UNIT_CODES).nullable(),\n baseQuantity: z.string().nullable(),\n grossPerReference: z.string().nullable().optional(),\n netPerReference: z.string().nullable().optional(),\n }).optional(),\n}).nullable().optional()\n\nconst lineSharedSchema = z.object({\n kind: lineKindSchema.optional(),\n statusEntryId: uuid().optional(),\n productId: uuid().optional(),\n productVariantId: uuid().optional(),\n name: z.string().trim().max(255).optional(),\n description: z.string().trim().max(4000).optional(),\n comment: z.string().trim().max(2000).optional(),\n currencyCode,\n configuration: z.record(z.string(), z.unknown()).optional(),\n promotionCode: z.string().trim().max(120).optional(),\n promotionSnapshot: z.record(z.string(), z.unknown()).optional(),\n uomSnapshot: uomSnapshotSchema,\n metadata,\n customFieldSetId: uuid().optional(),\n customFields: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const orderLineCreateSchema = scoped.extend({\n orderId: uuid(),\n lineNumber: z.coerce.number().int().min(0).optional(),\n ...lineSharedSchema.shape,\n ...linePricingSchema.shape,\n catalogSnapshot: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const orderLineUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(orderLineCreateSchema.partial())\n\nexport const quoteLineCreateSchema = scoped.extend({\n quoteId: uuid(),\n lineNumber: z.coerce.number().int().min(0).optional(),\n ...lineSharedSchema.shape,\n ...linePricingSchema.shape,\n catalogSnapshot: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const quoteLineUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(quoteLineCreateSchema.partial())\n\n// Each adjustment kind has an intrinsic sign convention so the grand total\n// stays semantically correct regardless of operator input. The calculation\n// engine normalizes signs defensively, but the API edge rejects values that\n// would invert the kind's meaning so bad data never reaches storage.\n//\n// - `return`: non-positive \u2014 returns reduce the total (see #1705).\n// - `discount`: non-negative \u2014 discounts reduce the total.\n// - `surcharge`/`shipping`/`tax`: non-negative \u2014 they add to the total.\n// - `custom` and unknown kinds: unconstrained (operator-controlled).\n//\n// See #1905.\nexport const RETURN_ADJUSTMENT_POSITIVE_NET_MESSAGE =\n 'Return adjustments must use a non-positive amountNet (returns reduce the total).'\nexport const RETURN_ADJUSTMENT_POSITIVE_GROSS_MESSAGE =\n 'Return adjustments must use a non-positive amountGross (returns reduce the total).'\nexport const DISCOUNT_ADJUSTMENT_NEGATIVE_NET_MESSAGE =\n 'Discount adjustments must use a non-negative amountNet (discounts reduce the total).'\nexport const DISCOUNT_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE =\n 'Discount adjustments must use a non-negative amountGross (discounts reduce the total).'\nexport const SURCHARGE_ADJUSTMENT_NEGATIVE_NET_MESSAGE =\n 'Surcharge adjustments must use a non-negative amountNet (surcharges add to the total).'\nexport const SURCHARGE_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE =\n 'Surcharge adjustments must use a non-negative amountGross (surcharges add to the total).'\nexport const SHIPPING_ADJUSTMENT_NEGATIVE_NET_MESSAGE =\n 'Shipping adjustments must use a non-negative amountNet (shipping adds to the total).'\nexport const SHIPPING_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE =\n 'Shipping adjustments must use a non-negative amountGross (shipping adds to the total).'\nexport const TAX_ADJUSTMENT_NEGATIVE_NET_MESSAGE =\n 'Tax adjustments must use a non-negative amountNet (taxes add to the total).'\nexport const TAX_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE =\n 'Tax adjustments must use a non-negative amountGross (taxes add to the total).'\n\ntype AdjustmentSignInput = {\n kind?: string\n amountNet?: number\n amountGross?: number\n}\n\nconst NON_NEGATIVE_SIGN_MESSAGES: Record<string, { net: string; gross: string }> = {\n discount: {\n net: DISCOUNT_ADJUSTMENT_NEGATIVE_NET_MESSAGE,\n gross: DISCOUNT_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,\n },\n surcharge: {\n net: SURCHARGE_ADJUSTMENT_NEGATIVE_NET_MESSAGE,\n gross: SURCHARGE_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,\n },\n shipping: {\n net: SHIPPING_ADJUSTMENT_NEGATIVE_NET_MESSAGE,\n gross: SHIPPING_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,\n },\n tax: {\n net: TAX_ADJUSTMENT_NEGATIVE_NET_MESSAGE,\n gross: TAX_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,\n },\n}\n\nexport const enforceAdjustmentSign = (\n value: AdjustmentSignInput,\n ctx: z.RefinementCtx\n) => {\n if (!value.kind) return\n if (value.kind === 'return') {\n if (typeof value.amountNet === 'number' && value.amountNet > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: RETURN_ADJUSTMENT_POSITIVE_NET_MESSAGE,\n path: ['amountNet'],\n })\n }\n if (typeof value.amountGross === 'number' && value.amountGross > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: RETURN_ADJUSTMENT_POSITIVE_GROSS_MESSAGE,\n path: ['amountGross'],\n })\n }\n return\n }\n const messages = NON_NEGATIVE_SIGN_MESSAGES[value.kind]\n if (!messages) return\n if (typeof value.amountNet === 'number' && value.amountNet < 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: messages.net,\n path: ['amountNet'],\n })\n }\n if (typeof value.amountGross === 'number' && value.amountGross < 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: messages.gross,\n path: ['amountGross'],\n })\n }\n}\n\n/**\n * @deprecated Use `enforceAdjustmentSign` \u2014 it enforces the sign convention\n * for every adjustment kind, not just `return`. Kept for backward compatibility\n * with third-party code that imported the original helper.\n */\nexport const enforceReturnAdjustmentSign = enforceAdjustmentSign\n\nexport const RETURN_ADJUSTMENT_EXCEEDS_REMAINING_NET_MESSAGE =\n 'Return adjustment amountNet exceeds the remaining grand total. Reduce the amount or remove existing returns first.'\nexport const RETURN_ADJUSTMENT_EXCEEDS_REMAINING_GROSS_MESSAGE =\n 'Return adjustment amountGross exceeds the remaining grand total. Reduce the amount or remove existing returns first.'\n\nexport type ReturnAdjustmentRemainingCheck = {\n kind?: string | null\n amountNet?: number | null\n amountGross?: number | null\n remainingNet: number\n remainingGross: number\n}\n\nexport type ReturnAdjustmentRemainingIssue = {\n path: 'amountNet' | 'amountGross'\n message: string\n}\n\n// Inclusive: abs(amount) === remaining is allowed. Tiny epsilon absorbs\n// floating-point rounding from upstream tax/rate adjustments.\nconst RETURN_REMAINING_EPSILON = 0.005\n\nexport const validateReturnAdjustmentWithinRemaining = (\n value: ReturnAdjustmentRemainingCheck\n): ReturnAdjustmentRemainingIssue[] => {\n if (value.kind !== 'return') return []\n const absNet = typeof value.amountNet === 'number' ? Math.abs(value.amountNet) : 0\n const absGross = typeof value.amountGross === 'number' ? Math.abs(value.amountGross) : 0\n const issues: ReturnAdjustmentRemainingIssue[] = []\n if (absGross > value.remainingGross + RETURN_REMAINING_EPSILON) {\n issues.push({ path: 'amountGross', message: RETURN_ADJUSTMENT_EXCEEDS_REMAINING_GROSS_MESSAGE })\n }\n if (absNet > value.remainingNet + RETURN_REMAINING_EPSILON) {\n issues.push({ path: 'amountNet', message: RETURN_ADJUSTMENT_EXCEEDS_REMAINING_NET_MESSAGE })\n }\n return issues\n}\n\nexport const orderAdjustmentCreateSchema = scoped.extend({\n orderId: uuid(),\n orderLineId: uuid().optional(),\n scope: z.enum(['order', 'line']).optional(),\n kind: adjustmentKindSchema.optional(),\n code: z.string().trim().max(120).optional(),\n label: z.string().trim().max(255).optional(),\n calculatorKey: z.string().trim().max(120).optional(),\n promotionId: uuid().optional(),\n rate: percentage().optional(),\n amountNet: decimal().optional(),\n amountGross: decimal().optional(),\n currencyCode: currencyCode.optional(),\n metadata,\n customFields: z.record(z.string(), z.unknown()).optional(),\n position: z.coerce.number().int().min(0).optional(),\n})\n\nexport const orderAdjustmentUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(orderAdjustmentCreateSchema.partial())\n\nexport const quoteAdjustmentCreateSchema = scoped.extend({\n quoteId: uuid(),\n quoteLineId: uuid().optional(),\n scope: z.enum(['order', 'line']).optional(),\n kind: adjustmentKindSchema.optional(),\n code: z.string().trim().max(120).optional(),\n label: z.string().trim().max(255).optional(),\n calculatorKey: z.string().trim().max(120).optional(),\n promotionId: uuid().optional(),\n rate: percentage().optional(),\n amountNet: decimal().optional(),\n amountGross: decimal().optional(),\n currencyCode: currencyCode.optional(),\n metadata,\n customFields: z.record(z.string(), z.unknown()).optional(),\n position: z.coerce.number().int().min(0).optional(),\n})\n\nexport const quoteAdjustmentUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(quoteAdjustmentCreateSchema.partial())\n\nconst orderTotalsSchema = z.object({\n subtotalNetAmount: decimal({ min: 0 }).optional(),\n subtotalGrossAmount: decimal({ min: 0 }).optional(),\n discountTotalAmount: decimal({ min: 0 }).optional(),\n taxTotalAmount: decimal({ min: 0 }).optional(),\n shippingNetAmount: decimal({ min: 0 }).optional(),\n shippingGrossAmount: decimal({ min: 0 }).optional(),\n surchargeTotalAmount: decimal({ min: 0 }).optional(),\n grandTotalNetAmount: decimal({ min: 0 }).optional(),\n grandTotalGrossAmount: decimal({ min: 0 }).optional(),\n paidTotalAmount: decimal({ min: 0 }).optional(),\n refundedTotalAmount: decimal({ min: 0 }).optional(),\n outstandingAmount: decimal().optional(),\n lineItemCount: z.coerce.number().int().min(0).optional(),\n})\n\nconst quoteTotalsSchema = z.object({\n subtotalNetAmount: decimal({ min: 0 }).optional(),\n subtotalGrossAmount: decimal({ min: 0 }).optional(),\n discountTotalAmount: decimal({ min: 0 }).optional(),\n taxTotalAmount: decimal({ min: 0 }).optional(),\n grandTotalNetAmount: decimal({ min: 0 }).optional(),\n grandTotalGrossAmount: decimal({ min: 0 }).optional(),\n lineItemCount: z.coerce.number().int().min(0).optional(),\n})\n\nexport const orderCreateSchema = scoped.extend({\n orderNumber: z.string().trim().min(1).max(191).optional(),\n externalReference: z.string().trim().max(191).optional(),\n customerReference: z.string().trim().max(191).optional(),\n customerEntityId: uuid().optional(),\n customerContactId: uuid().optional(),\n customerSnapshot: customerSnapshotSchema.optional(),\n billingAddressId: uuid().optional(),\n shippingAddressId: uuid().optional(),\n billingAddressSnapshot: jsonRecord.optional(),\n shippingAddressSnapshot: jsonRecord.optional(),\n currencyCode,\n exchangeRate: decimal({ min: 0 }).optional(),\n statusEntryId: uuid().optional(),\n fulfillmentStatusEntryId: uuid().optional(),\n paymentStatusEntryId: uuid().optional(),\n taxStrategyKey: z.string().trim().max(120).optional(),\n discountStrategyKey: z.string().trim().max(120).optional(),\n taxInfo: jsonRecord.optional(),\n shippingMethodId: uuid().optional(),\n shippingMethodCode: z.string().trim().max(120).optional(),\n deliveryWindowId: uuid().optional(),\n deliveryWindowCode: z.string().trim().max(120).optional(),\n paymentMethodId: uuid().optional(),\n paymentMethodCode: z.string().trim().max(120).optional(),\n channelId: uuid().optional(),\n placedAt: z.coerce.date().optional(),\n expectedDeliveryAt: z.coerce.date().optional(),\n dueAt: z.coerce.date().optional(),\n comments: z.string().trim().max(4000).optional(),\n internalNotes: z.string().trim().max(4000).optional(),\n shippingMethodSnapshot: jsonRecord.optional(),\n deliveryWindowSnapshot: jsonRecord.optional(),\n paymentMethodSnapshot: jsonRecord.optional(),\n metadata,\n customFieldSetId: uuid().optional(),\n lines: z.array(orderLineCreateSchema.omit({ organizationId: true, tenantId: true, orderId: true })).optional(),\n adjustments: z.array(orderAdjustmentCreateSchema.omit({ organizationId: true, tenantId: true, orderId: true })).optional(),\n tags: z.array(uuid()).optional(),\n ...orderTotalsSchema.shape,\n})\n\nexport const orderUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(orderCreateSchema.partial())\n\nexport const quoteCreateSchema = scoped.extend({\n quoteNumber: z.string().trim().min(1).max(191).optional(),\n statusEntryId: uuid().optional(),\n customerEntityId: uuid().optional(),\n customerContactId: uuid().optional(),\n channelId: uuid().optional(),\n customerSnapshot: customerSnapshotSchema.optional(),\n billingAddressId: uuid().optional(),\n shippingAddressId: uuid().optional(),\n billingAddressSnapshot: jsonRecord.optional(),\n shippingAddressSnapshot: jsonRecord.optional(),\n currencyCode,\n validFrom: z.coerce.date().optional(),\n validUntil: z.coerce.date().optional(),\n comments: z.string().trim().max(4000).optional(),\n taxInfo: jsonRecord.optional(),\n shippingMethodId: uuid().optional(),\n shippingMethodCode: z.string().trim().max(120).optional(),\n deliveryWindowId: uuid().optional(),\n deliveryWindowCode: z.string().trim().max(120).optional(),\n paymentMethodId: uuid().optional(),\n paymentMethodCode: z.string().trim().max(120).optional(),\n shippingMethodSnapshot: jsonRecord.optional(),\n deliveryWindowSnapshot: jsonRecord.optional(),\n paymentMethodSnapshot: jsonRecord.optional(),\n metadata,\n customFieldSetId: uuid().optional(),\n lines: z\n .array(quoteLineCreateSchema.omit({ organizationId: true, tenantId: true, quoteId: true }))\n .optional(),\n adjustments: z\n .array(quoteAdjustmentCreateSchema.omit({ organizationId: true, tenantId: true, quoteId: true }))\n .optional(),\n tags: z.array(uuid()).optional(),\n ...quoteTotalsSchema.shape,\n})\n\nexport const quoteUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(quoteCreateSchema.partial())\n\nconst documentKind = z.enum(['order', 'quote'])\n\nconst documentAddressFields = {\n documentId: uuid(),\n documentKind,\n customerAddressId: uuid().optional(),\n name: z.string().trim().max(255).nullable().optional(),\n purpose: z.string().trim().max(120).nullable().optional(),\n companyName: z.string().trim().max(255).nullable().optional(),\n addressLine1: z.string().trim().min(1).max(255),\n addressLine2: z.string().trim().max(255).nullable().optional(),\n city: z.string().trim().max(120).nullable().optional(),\n region: z.string().trim().max(120).nullable().optional(),\n postalCode: z.string().trim().max(60).nullable().optional(),\n country: z.string().trim().max(2).nullable().optional(),\n buildingNumber: z.string().trim().max(60).nullable().optional(),\n flatNumber: z.string().trim().max(60).nullable().optional(),\n latitude: z.coerce.number().optional().nullable(),\n longitude: z.coerce.number().optional().nullable(),\n}\n\nexport const documentAddressCreateSchema = scoped.extend(documentAddressFields)\n\nexport const documentAddressUpdateSchema = scoped.extend({\n id: uuid(),\n ...documentAddressFields,\n})\n\nexport const documentAddressDeleteSchema = scoped.extend({\n id: uuid(),\n documentId: uuid(),\n documentKind,\n})\n\nexport const shipmentCreateSchema = scoped.extend({\n orderId: uuid(),\n shipmentNumber: z.string().trim().max(191).optional(),\n shippingMethodId: uuid().optional(),\n statusEntryId: uuid().optional(),\n documentStatusEntryId: uuid().optional(),\n lineStatusEntryId: uuid().optional(),\n carrierName: z.string().trim().max(191).optional(),\n trackingNumbers: z.array(z.string().trim().max(191)).optional(),\n shippedAt: z.coerce.date().optional(),\n deliveredAt: z.coerce.date().optional(),\n weightValue: decimal({ min: 0 }).optional(),\n weightUnit: z.string().trim().max(25).optional(),\n declaredValueNet: decimal({ min: 0 }).optional(),\n declaredValueGross: decimal({ min: 0 }).optional(),\n currencyCode: currencyCode.optional(),\n notes: z.string().trim().max(4000).optional(),\n metadata,\n shipmentAddressSnapshot: jsonRecord.optional(),\n customFields: z.record(z.string(), z.unknown()).optional(),\n items: z\n .array(\n z.object({\n orderLineId: uuid(),\n quantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }).int('Quantity must be a whole number.'),\n metadata,\n })\n )\n .optional(),\n})\n\nexport const shipmentUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(shipmentCreateSchema.partial())\n\nconst returnLineQuantitySchema = z.coerce\n .number()\n .int('Return quantity must be a whole number.')\n .min(1, 'Return quantity must be at least 1.')\n .max(MAX_QUANTITY, 'Quantity is too large.')\n\nexport const returnCreateSchema = scoped.extend({\n orderId: uuid(),\n reason: z.string().trim().max(4000).optional(),\n notes: z.string().trim().max(4000).optional(),\n returnedAt: z.coerce.date().optional(),\n lines: z\n .array(\n z.object({\n orderLineId: uuid(),\n quantity: returnLineQuantitySchema,\n })\n )\n .min(1),\n})\n\nexport const invoiceCreateSchema = scoped.extend({\n orderId: uuid().optional(),\n invoiceNumber: z.string().trim().min(1).max(191).optional(),\n statusEntryId: uuid().optional(),\n issueDate: z.coerce.date().optional(),\n dueDate: z.coerce.date().optional(),\n currencyCode,\n metadata,\n customFieldSetId: uuid().optional(),\n lines: z\n .array(\n z.object({\n orderLineId: uuid().optional(),\n lineNumber: z.coerce.number().int().min(0).optional(),\n kind: lineKindSchema.optional(),\n name: z.string().trim().max(500).optional(),\n sku: z.string().trim().max(191).optional(),\n description: z.string().trim().max(4000).optional(),\n quantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }),\n quantityUnit: z.string().trim().max(25).optional(),\n normalizedQuantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }).optional(),\n normalizedUnit: z.string().trim().max(25).nullable().optional(),\n uomSnapshot: uomSnapshotSchema,\n currencyCode,\n unitPriceNet: decimal({ min: 0 }).optional(),\n unitPriceGross: decimal({ min: 0 }).optional(),\n discountAmount: decimal({ min: 0 }).optional(),\n discountPercent: percentage().optional(),\n taxRate: percentage().optional(),\n taxAmount: decimal({ min: 0 }).optional(),\n totalNetAmount: decimal({ min: 0 }).optional(),\n totalGrossAmount: decimal({ min: 0 }).optional(),\n metadata,\n })\n )\n .optional(),\n subtotalNetAmount: decimal({ min: 0 }).optional(),\n subtotalGrossAmount: decimal({ min: 0 }).optional(),\n discountTotalAmount: decimal({ min: 0 }).optional(),\n taxTotalAmount: decimal({ min: 0 }).optional(),\n grandTotalNetAmount: decimal({ min: 0 }).optional(),\n grandTotalGrossAmount: decimal({ min: 0 }).optional(),\n paidTotalAmount: decimal({ min: 0 }).optional(),\n outstandingAmount: decimal().optional(),\n})\n\nexport const invoiceUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(invoiceCreateSchema.partial())\n\nexport const creditMemoCreateSchema = scoped.extend({\n orderId: uuid().optional(),\n invoiceId: uuid().optional(),\n creditMemoNumber: z.string().trim().min(1).max(191).optional(),\n statusEntryId: uuid().optional(),\n issueDate: z.coerce.date().optional(),\n reason: z.string().trim().max(4000).optional(),\n currencyCode,\n metadata,\n customFieldSetId: uuid().optional(),\n lines: z\n .array(\n z.object({\n orderLineId: uuid().optional(),\n lineNumber: z.coerce.number().int().min(0).optional(),\n name: z.string().trim().max(500).optional(),\n sku: z.string().trim().max(191).optional(),\n description: z.string().trim().max(4000).optional(),\n quantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }),\n quantityUnit: z.string().trim().max(25).optional(),\n normalizedQuantity: decimal({ min: 0, max: MAX_QUANTITY, message: 'Quantity is too large.' }).optional(),\n normalizedUnit: z.string().trim().max(25).nullable().optional(),\n uomSnapshot: uomSnapshotSchema,\n currencyCode,\n unitPriceNet: decimal({ min: 0 }).optional(),\n unitPriceGross: decimal({ min: 0 }).optional(),\n taxRate: percentage().optional(),\n taxAmount: decimal({ min: 0 }).optional(),\n totalNetAmount: decimal({ min: 0 }).optional(),\n totalGrossAmount: decimal({ min: 0 }).optional(),\n metadata,\n })\n )\n .optional(),\n subtotalNetAmount: decimal({ min: 0 }).optional(),\n subtotalGrossAmount: decimal({ min: 0 }).optional(),\n taxTotalAmount: decimal({ min: 0 }).optional(),\n grandTotalNetAmount: decimal({ min: 0 }).optional(),\n grandTotalGrossAmount: decimal({ min: 0 }).optional(),\n})\n\nexport const creditMemoUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(creditMemoCreateSchema.partial())\n\nexport const paymentCreateSchema = scoped.extend({\n orderId: uuid().optional(),\n paymentMethodId: uuid().optional(),\n paymentReference: z.string().trim().max(191).optional(),\n statusEntryId: uuid().optional(),\n documentStatusEntryId: uuid().optional(),\n lineStatusEntryId: uuid().optional(),\n amount: decimal({ min: 0 }),\n currencyCode,\n capturedAmount: decimal({ min: 0 }).optional(),\n refundedAmount: decimal({ min: 0 }).optional(),\n receivedAt: z.coerce.date().optional(),\n capturedAt: z.coerce.date().optional(),\n metadata,\n customFieldSetId: uuid().optional(),\n customFields: z.record(z.string(), z.unknown()).optional(),\n allocations: z\n .array(\n z.object({\n orderId: uuid().optional(),\n invoiceId: uuid().optional(),\n amount: decimal({ min: 0 }),\n currencyCode,\n metadata,\n })\n )\n .optional(),\n})\n\nexport const paymentUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(paymentCreateSchema.partial())\n\nexport const noteCreateSchema = scoped.extend({\n contextType: z.enum(['order', 'quote', 'invoice', 'credit_memo']),\n contextId: uuid(),\n orderId: uuid().optional(),\n quoteId: uuid().optional(),\n authorUserId: uuid().optional(),\n body: z.string().trim().min(1).max(8000),\n appearanceIcon: z.string().trim().max(100).optional().nullable(),\n appearanceColor: z\n .string()\n .trim()\n .regex(/^#([0-9a-fA-F]{6})$/)\n .optional()\n .nullable(),\n})\n\nexport const noteUpdateSchema = z\n .object({\n id: uuid(),\n })\n .merge(\n z\n .object({\n body: z.string().trim().min(1).max(8000).optional(),\n })\n .extend({\n authorUserId: uuid().optional(),\n appearanceIcon: z.string().trim().max(100).optional().nullable(),\n appearanceColor: z\n .string()\n .trim()\n .regex(/^#([0-9a-fA-F]{6})$/)\n .optional()\n .nullable(),\n })\n )\n\nexport const documentNumberRequestSchema = scoped.extend({\n kind: z.enum(['order', 'quote', 'invoice', 'credit_memo']),\n format: numberFormatSchema.optional(),\n})\n\nexport type DocumentNumberRequestInput = z.infer<typeof documentNumberRequestSchema>\n\nexport type ChannelCreateInput = z.infer<typeof channelCreateSchema>\nexport type ChannelUpdateInput = z.infer<typeof channelUpdateSchema>\nexport type ShippingMethodCreateInput = z.infer<typeof shippingMethodCreateSchema>\nexport type ShippingMethodUpdateInput = z.infer<typeof shippingMethodUpdateSchema>\nexport type DeliveryWindowCreateInput = z.infer<typeof deliveryWindowCreateSchema>\nexport type DeliveryWindowUpdateInput = z.infer<typeof deliveryWindowUpdateSchema>\nexport type PaymentMethodCreateInput = z.infer<typeof paymentMethodCreateSchema>\nexport type PaymentMethodUpdateInput = z.infer<typeof paymentMethodUpdateSchema>\nexport type TaxRateCreateInput = z.infer<typeof taxRateCreateSchema>\nexport type TaxRateUpdateInput = z.infer<typeof taxRateUpdateSchema>\nexport type OrderCreateInput = z.infer<typeof orderCreateSchema>\nexport type OrderUpdateInput = z.infer<typeof orderUpdateSchema>\nexport type OrderLineCreateInput = z.infer<typeof orderLineCreateSchema>\nexport type OrderLineUpdateInput = z.infer<typeof orderLineUpdateSchema>\nexport type OrderAdjustmentCreateInput = z.infer<typeof orderAdjustmentCreateSchema>\nexport type OrderAdjustmentUpdateInput = z.infer<typeof orderAdjustmentUpdateSchema>\nexport type QuoteCreateInput = z.infer<typeof quoteCreateSchema>\nexport type QuoteUpdateInput = z.infer<typeof quoteUpdateSchema>\nexport type QuoteLineCreateInput = z.infer<typeof quoteLineCreateSchema>\nexport type QuoteLineUpdateInput = z.infer<typeof quoteLineUpdateSchema>\nexport type QuoteAdjustmentCreateInput = z.infer<typeof quoteAdjustmentCreateSchema>\nexport type QuoteAdjustmentUpdateInput = z.infer<typeof quoteAdjustmentUpdateSchema>\nexport type ShipmentCreateInput = z.infer<typeof shipmentCreateSchema>\nexport type ShipmentUpdateInput = z.infer<typeof shipmentUpdateSchema>\nexport type ReturnCreateInput = z.infer<typeof returnCreateSchema>\nexport type InvoiceCreateInput = z.infer<typeof invoiceCreateSchema>\nexport type InvoiceUpdateInput = z.infer<typeof invoiceUpdateSchema>\nexport type CreditMemoCreateInput = z.infer<typeof creditMemoCreateSchema>\nexport type CreditMemoUpdateInput = z.infer<typeof creditMemoUpdateSchema>\nexport const quoteSendSchema = z.object({\n quoteId: z.string().uuid(),\n validForDays: z.coerce.number().int().min(1).max(365).default(14),\n})\n\nexport const quoteAcceptSchema = z.object({\n token: z.string().uuid(),\n})\n\nexport type PaymentCreateInput = z.infer<typeof paymentCreateSchema>\nexport type PaymentUpdateInput = z.infer<typeof paymentUpdateSchema>\nexport type NoteCreateInput = z.infer<typeof noteCreateSchema>\nexport type NoteUpdateInput = z.infer<typeof noteUpdateSchema>\nexport type SalesTagCreateInput = z.infer<typeof salesTagCreateSchema>\nexport type SalesTagUpdateInput = z.infer<typeof salesTagUpdateSchema>\nexport type DocumentAddressCreateInput = z.infer<typeof documentAddressCreateSchema>\nexport type DocumentAddressUpdateInput = z.infer<typeof documentAddressUpdateSchema>\nexport type DocumentAddressDeleteInput = z.infer<typeof documentAddressDeleteSchema>\nexport type QuoteSendInput = z.infer<typeof quoteSendSchema>\nexport type QuoteAcceptInput = z.infer<typeof quoteAcceptSchema>\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -44,6 +44,7 @@ function TranslationManager({
|
|
|
44
44
|
const [editedTranslations, setEditedTranslations] = React.useState({});
|
|
45
45
|
const editedTranslationsRef = React.useRef({});
|
|
46
46
|
const [hasUserEdited, setHasUserEdited] = React.useState(false);
|
|
47
|
+
const hasUserEditedRef = React.useRef(false);
|
|
47
48
|
const entityType = isEmbedded ? propEntityType ?? "" : selectedEntityType;
|
|
48
49
|
const recordId = isEmbedded ? propRecordId ?? "" : selectedRecordId;
|
|
49
50
|
const { data: locales = [...defaultLocales] } = useTranslationLocales();
|
|
@@ -146,10 +147,10 @@ function TranslationManager({
|
|
|
146
147
|
const lastTranslationSignatureRef = React.useRef(null);
|
|
147
148
|
React.useEffect(() => {
|
|
148
149
|
const sig = translationSignature;
|
|
149
|
-
if (sig === lastTranslationSignatureRef.current &&
|
|
150
|
+
if (sig === lastTranslationSignatureRef.current && hasUserEditedRef.current) return;
|
|
150
151
|
lastTranslationSignatureRef.current = sig;
|
|
151
152
|
if (!translationData?.translations) {
|
|
152
|
-
if (!
|
|
153
|
+
if (!hasUserEditedRef.current) {
|
|
153
154
|
editedTranslationsRef.current = {};
|
|
154
155
|
setEditedTranslations({});
|
|
155
156
|
}
|
|
@@ -163,11 +164,11 @@ function TranslationManager({
|
|
|
163
164
|
parsed[locale][key] = typeof val === "string" ? val : "";
|
|
164
165
|
}
|
|
165
166
|
}
|
|
166
|
-
if (!
|
|
167
|
+
if (!hasUserEditedRef.current) {
|
|
167
168
|
editedTranslationsRef.current = parsed;
|
|
168
169
|
setEditedTranslations(parsed);
|
|
169
170
|
}
|
|
170
|
-
}, [translationSignature, translationData
|
|
171
|
+
}, [translationSignature, translationData]);
|
|
171
172
|
const mutation = useMutation({
|
|
172
173
|
mutationFn: async () => {
|
|
173
174
|
if (!entityType || !recordId) {
|
|
@@ -204,6 +205,7 @@ function TranslationManager({
|
|
|
204
205
|
},
|
|
205
206
|
onSuccess: () => {
|
|
206
207
|
flash(t("translations.manager.flash.saved", "Translations saved"), "success");
|
|
208
|
+
hasUserEditedRef.current = false;
|
|
207
209
|
setHasUserEdited(false);
|
|
208
210
|
void refetchTranslation();
|
|
209
211
|
},
|
|
@@ -213,6 +215,7 @@ function TranslationManager({
|
|
|
213
215
|
}
|
|
214
216
|
});
|
|
215
217
|
const updateFieldValue = (locale, fieldKey, value) => {
|
|
218
|
+
hasUserEditedRef.current = true;
|
|
216
219
|
setHasUserEdited(true);
|
|
217
220
|
const next = {
|
|
218
221
|
...editedTranslationsRef.current,
|
|
@@ -235,6 +238,7 @@ function TranslationManager({
|
|
|
235
238
|
value: selectedRecordId,
|
|
236
239
|
onChange: (next) => {
|
|
237
240
|
setSelectedRecordId(next);
|
|
241
|
+
hasUserEditedRef.current = false;
|
|
238
242
|
setHasUserEdited(false);
|
|
239
243
|
},
|
|
240
244
|
placeholder: t("translations.manager.searchRecords", "Search records..."),
|
|
@@ -370,6 +374,7 @@ function TranslationManager({
|
|
|
370
374
|
onChange: (next) => {
|
|
371
375
|
setSelectedEntityType(next);
|
|
372
376
|
setSelectedRecordId("");
|
|
377
|
+
hasUserEditedRef.current = false;
|
|
373
378
|
setHasUserEdited(false);
|
|
374
379
|
},
|
|
375
380
|
placeholder: t("translations.manager.placeholder", "Select an entity"),
|