@marmot-systems/common 2.0.79 → 2.0.81

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/dist/index.cjs CHANGED
@@ -92,43 +92,25 @@ function handleZodCurrency(minAmount, maxAmount, t) {
92
92
  });
93
93
  }
94
94
  const fromString = import_zod.z.string({
95
- error: t(
96
- "validation_errors.create_invoice_validation.enter_a_valid_number"
97
- )
95
+ error: t("enter_a_valid_number")
98
96
  }).refine((s) => s.trim().length > 0, {
99
- error: t(
100
- "validation_errors.create_invoice_validation.enter_a_valid_number"
101
- )
97
+ error: t("enter_a_valid_number")
102
98
  }).transform((s) => s.replace(/[,\s]/g, "")).refine((s) => s !== "" && !Number.isNaN(Number(s)), {
103
- error: t(
104
- "validation_errors.create_invoice_validation.enter_a_valid_number"
105
- )
99
+ error: t("enter_a_valid_number")
106
100
  }).refine((s) => Number.isFinite(Number(s)), {
107
- error: t(
108
- "validation_errors.create_invoice_validation.enter_a_valid_number"
109
- )
101
+ error: t("enter_a_valid_number")
110
102
  }).refine((s) => Number(s) >= 0, {
111
- error: t(
112
- "validation_errors.create_invoice_validation.enter_a_positive_number"
113
- )
103
+ error: t("enter_a_positive_number")
114
104
  }).transform((s) => Number(s));
115
105
  const fromNumber = import_zod.z.number().refine((n) => Number.isFinite(n), {
116
- error: t(
117
- "validation_errors.create_invoice_validation.enter_a_valid_number"
118
- )
106
+ error: t("enter_a_valid_number")
119
107
  }).refine((n) => n >= 0, {
120
- error: t(
121
- "validation_errors.create_invoice_validation.enter_a_positive_number"
122
- )
108
+ error: t("enter_a_positive_number")
123
109
  });
124
110
  return import_zod.z.union([fromString, fromNumber]).transform((n) => roundWithPrecision(n, 2)).refine((n) => n >= minAmount, {
125
- error: `${t(
126
- "validation_errors.create_invoice_validation.must_be_at_least"
127
- )} ${minAmount}`
111
+ error: `${t("must_be_at_least")} ${minAmount}`
128
112
  }).refine((n) => n <= maxAmount, {
129
- error: `${t(
130
- "validation_errors.create_invoice_validation.exceeds_allowed_limit"
131
- )} ${maxAmount}`
113
+ error: `${t("exceeds_allowed_limit")} ${maxAmount}`
132
114
  });
133
115
  }
134
116
  var transformEmptyStringToUndefined = (s) => s.trim() === "" ? void 0 : s;
@@ -376,9 +358,7 @@ function makeInvoiceSchemas(t) {
376
358
  const YmdDateSchema2 = import_zod7.z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Use YYYY-MM-DD");
377
359
  const BaseInvoice2 = import_zod7.z.object({
378
360
  invoice_type: import_zod7.z.enum(INVOICE_TYPE, {
379
- error: t(
380
- "validation_errors.create_invoice_validation.invoice_type_not_found"
381
- )
361
+ error: t("invoice_type_not_found")
382
362
  }),
383
363
  invoice_date: YmdDateSchema2,
384
364
  due_date: YmdDateSchema2,
@@ -398,7 +378,7 @@ function makeInvoiceSchemas(t) {
398
378
  const LineItemBase2 = import_zod7.z.object({
399
379
  invoice_id: import_zod7.z.uuid().optional(),
400
380
  product_id: import_zod7.z.uuid({
401
- error: t("validation_errors.create_invoice_validation.select_product")
381
+ error: t("select_product")
402
382
  }),
403
383
  product_name: import_zod7.z.string().optional(),
404
384
  product_description: import_zod7.z.string().optional(),
@@ -416,9 +396,7 @@ function makeInvoiceSchemas(t) {
416
396
  const CreditItem2 = LineItemBase2.safeExtend({
417
397
  price: handleZodCurrency(0, 99999.99),
418
398
  credit_type: import_zod7.z.enum(CREDIT_TYPE, {
419
- error: t(
420
- "validation_errors.create_invoice_validation.select_credit_type"
421
- )
399
+ error: t("select_credit_type")
422
400
  })
423
401
  });
424
402
  const PurchaseItem2 = LineItemBase2.safeExtend({
@@ -428,32 +406,23 @@ function makeInvoiceSchemas(t) {
428
406
  const SalesInvoiceSchema2 = BaseInvoice2.safeExtend({
429
407
  invoice_type: import_zod7.z.literal("sales"),
430
408
  party_id: import_zod7.z.uuid({
431
- error: t("validation_errors.create_invoice_validation.select_customer")
409
+ error: t("select_customer")
432
410
  }),
433
- invoice_items: import_zod7.z.array(SalesItem2).min(
434
- 1,
435
- t("validation_errors.create_invoice_validation.add_one_invoice_item")
436
- )
411
+ invoice_items: import_zod7.z.array(SalesItem2).min(1, t("add_one_invoice_item"))
437
412
  });
438
413
  const CreditInvoiceSchema2 = BaseInvoice2.safeExtend({
439
414
  invoice_type: import_zod7.z.literal("credit"),
440
415
  party_id: import_zod7.z.uuid({
441
- error: t("validation_errors.create_invoice_validation.select_customer")
416
+ error: t("select_customer")
442
417
  }),
443
- invoice_items: import_zod7.z.array(CreditItem2).min(
444
- 1,
445
- t("validation_errors.create_invoice_validation.add_one_invoice_item")
446
- )
418
+ invoice_items: import_zod7.z.array(CreditItem2).min(1, t("add_one_invoice_item"))
447
419
  });
448
420
  const PurchaseInvoiceSchema2 = BaseInvoice2.safeExtend({
449
421
  invoice_type: import_zod7.z.literal("purchase"),
450
422
  party_id: import_zod7.z.uuid({
451
- error: t("validation_errors.create_invoice_validation.select_vendor")
423
+ error: t("select_vendor")
452
424
  }),
453
- invoice_items: import_zod7.z.array(PurchaseItem2).min(
454
- 1,
455
- t("validation_errors.create_invoice_validation.add_one_invoice_item")
456
- )
425
+ invoice_items: import_zod7.z.array(PurchaseItem2).min(1, t("add_one_invoice_item"))
457
426
  });
458
427
  const AnyInvoiceSchema2 = import_zod7.z.discriminatedUnion("invoice_type", [
459
428
  SalesInvoiceSchema2,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/types/money_types.ts","../src/utils/utils.ts","../src/types/shared_types.ts","../src/domains/auth/login/login_schemas.ts","../src/domains/companies/companies_schemas.ts","../src/domains/companies/companies_types.ts","../src/domains/customers/customer_schemas.ts","../src/domains/products/product_schemas.ts","../src/domains/invoices/invoices_schemas.ts","../src/domains/invoices/invoices_types.ts","../src/domains/invoice_items/invoice_items_mappers.ts","../src/domains/credit_applications/credit_applications_schemas.ts","../src/domains/payments/payments_schemas.ts","../src/domains/payments/payments_types.ts","../src/utils/money_utils.ts","../src/utils/date_utils.ts","../src/utils/errors_utils.ts","../src/domains/point_of_sales/point_of_sales_schemas.ts","../src/domains/point_of_sales/point_of_sales_types.ts"],"sourcesContent":["export * from \"./utils/utils\";\n\nexport { CreatedLocation, UUID } from \"./types/shared_types\";\n\n//Login\nexport * from \"./domains/auth/login/login_schemas\";\n\n//Company\nexport * from \"./domains/companies/companies_schemas\";\nexport * from \"./domains/companies/companies_types\";\n\n//Users\nexport * from \"./domains/users/users_types\";\n\n//Customers\nexport * from \"./domains/customers/customer_schemas\";\nexport * from \"./domains/customers/customers_types\";\n\n//Vendors\nexport * from \"./domains/vendors/vendors_types\";\n\n// Products\nexport * from \"./domains/products/product_schemas\";\nexport * from \"./domains/products/products_types\";\n\n//Warehouses\nexport * from \"./domains/warehouses/warehouses_types\";\n\n//Inventory\nexport * from \"./domains/inventory/inventory_locations/inventory_locations_types\";\nexport * from \"./domains/inventory/inventory_balances/inventory_balances_type\";\n\n//Invoices\nexport * from \"./domains/invoices/invoices_schemas\";\nexport * from \"./domains/invoices/invoices_types\";\n\n//Invoice Items\nexport * from \"./domains/invoice_items/invoice_items_types\";\nexport * from \"./domains/invoice_items/invoice_items_mappers\";\n\n//Credit Applications\nexport * from \"./domains/credit_applications/credit_applications_schemas\";\nexport * from \"./domains/credit_applications/credit_applications_types\";\n\n//Payments\nexport * from \"./domains/payments/payments_schemas\";\nexport * from \"./domains/payments/payments_types\";\n\n//Drivers\nexport * from \"./domains/drivers/driver_customers/driver_customers_types\";\nexport * from \"./domains/drivers/driver_settings/driver_settings_types\";\n\n//Sync\nexport * from \"./domains/sync/sync_types\";\n\n// Money\nexport * from \"./utils/money_utils\";\nexport * from \"./types/money_types\";\n\n//Date\nexport * from \"./utils/date_utils\";\n\n//Errors\nexport * from \"./utils/errors_utils\";\n\n//Audit Events\nexport * from \"./domains/audit_events/audit_events_types\";\n\n//Country Tax Rules\nexport * from \"./domains/country_tax_rules/country_tax_rules_types\";\n\n//Point of sales\nexport * from \"./domains/point_of_sales/point_of_sales_schemas\";\nexport * from \"./domains/point_of_sales/point_of_sales_types\";\n","import { IsoCountryCode } from \"../domains/companies/companies_types\";\n\nexport type IsoCurrencyCode = \"USD\" | \"HNL\";\ntype Locale = \"en-US\" | \"es-HN\";\n\nexport const countryToCurrency: Record<IsoCountryCode, IsoCurrencyCode> = {\n US: \"USD\",\n HN: \"HNL\",\n};\n\nexport const currencyToLocale: Record<IsoCurrencyCode, Locale> = {\n USD: \"en-US\",\n HNL: \"es-HN\",\n};\n","import * as GlobalTypes from \"./types\";\nimport { IsoCountryCode } from \"../domains/companies/companies_types\";\nimport {\n IsoCurrencyCode,\n countryToCurrency,\n currencyToLocale,\n} from \"../types/money_types\";\n\nimport { z } from \"zod\";\nimport { SchemaT } from \"../domains/invoices/invoices_types\";\n\n/**\n * Validates zod currency with precision.\n *\n *\n * @param minAmount\n * @param maxAmount\n * @returns\n */\nexport function handleZodCurrency(\n minAmount: number,\n maxAmount: number,\n t?: SchemaT,\n) {\n if (!t) {\n const fromString = z\n .string({\n error: \"Enter a valid number\",\n })\n .refine((s) => s.trim().length > 0, { error: \"Enter a valid number\" })\n .transform((s) => s.replace(/[,\\s]/g, \"\"))\n .refine((s) => s !== \"\" && !Number.isNaN(Number(s)), {\n error: \"Enter a valid number\",\n })\n .refine((s) => Number.isFinite(Number(s)), {\n error: \"Enter a valid number\",\n })\n .refine((s) => Number(s) >= 0, { error: \"Enter a positive number\" })\n .transform((s) => Number(s));\n\n const fromNumber = z\n .number()\n .refine((n) => Number.isFinite(n), { error: \"Enter a valid number\" })\n .refine((n) => n >= 0, { error: \"Enter a positive number\" });\n\n return z\n .union([fromString, fromNumber])\n .transform((n) => roundWithPrecision(n, 2))\n .refine((n) => n >= minAmount, {\n error: `Must be at least ${minAmount}`,\n })\n .refine((n) => n <= maxAmount, {\n error: `Exceeds allowed limit ${maxAmount}`,\n });\n }\n\n const fromString = z\n .string({\n error: t(\n \"validation_errors.create_invoice_validation.enter_a_valid_number\",\n ),\n })\n .refine((s) => s.trim().length > 0, {\n error: t(\n \"validation_errors.create_invoice_validation.enter_a_valid_number\",\n ),\n })\n .transform((s) => s.replace(/[,\\s]/g, \"\"))\n .refine((s) => s !== \"\" && !Number.isNaN(Number(s)), {\n error: t(\n \"validation_errors.create_invoice_validation.enter_a_valid_number\",\n ),\n })\n .refine((s) => Number.isFinite(Number(s)), {\n error: t(\n \"validation_errors.create_invoice_validation.enter_a_valid_number\",\n ),\n })\n .refine((s) => Number(s) >= 0, {\n error: t(\n \"validation_errors.create_invoice_validation.enter_a_positive_number\",\n ),\n })\n .transform((s) => Number(s));\n\n const fromNumber = z\n .number()\n .refine((n) => Number.isFinite(n), {\n error: t(\n \"validation_errors.create_invoice_validation.enter_a_valid_number\",\n ),\n })\n .refine((n) => n >= 0, {\n error: t(\n \"validation_errors.create_invoice_validation.enter_a_positive_number\",\n ),\n });\n\n return z\n .union([fromString, fromNumber])\n .transform((n) => roundWithPrecision(n, 2))\n .refine((n) => n >= minAmount, {\n error: `${t(\n \"validation_errors.create_invoice_validation.must_be_at_least\",\n )} ${minAmount}`,\n })\n .refine((n) => n <= maxAmount, {\n error: `${t(\n \"validation_errors.create_invoice_validation.exceeds_allowed_limit\",\n )} ${maxAmount}`,\n });\n}\n\n/**\n * Trims any leading or trailing spaces\n * Transforms empty strings into undefined.\n *\n * @param s\n * @returns\n */\nexport const transformEmptyStringToUndefined = (s: string) =>\n s.trim() === \"\" ? undefined : s;\n\n/**\n * - Collapses any run of whitespace in a string (spaces, tabs, newlines, nbspb, and other weird unicode spaces etc.)\n * into a single ASCII space.\n * - Trims leading and trailing whitespace.\n * \" Jared \\n Gomez \\t Driver\\t \" -> \"Jared Gomez Driver\"\n *\n * @param s\n * @returns\n */\nexport const normalizeSpaces = (s: string) => whitespace(s, \"normalize\");\n\n/**\n * Removes all whitespace from a string\n * @param s\n * @returns\n */\nexport const removeAllWhitespace = (s: string) => whitespace(s, \"remove\");\n\nconst whitespace = (s: string, mode: GlobalTypes.WhitespaceMode) => {\n if (mode === \"remove\") {\n return s.replace(/\\s+/g, \"\");\n }\n\n return s.replace(/\\s+/g, \" \").trim();\n};\n\n/**\n * Removes all dashes and + signs from a string\n * +1-305-555-0123 -> \"13055550123\"\n * 305-555-0123 -> \"3055550123\"\n *\n * @param s\n * @returns\n */\nexport const removeDashesAndPlusSign = (s: string): string =>\n s.replace(/[+-]/g, \"\");\n\n/**\n * Rounds a number to a certain precision.\n * Contract:\n * 1. Number must be finite and non negative.\n * 2. Precision must be finite nonnegative and an integer.\n * 3. Precision must be <= Max precision\n * 4. Returns a number >= 0\n * Default is round half up.\n *\n * @param num\n * @param precision\n * @param opts\n * @returns\n */\nexport function roundWithPrecision(\n num: number,\n precision: number,\n opts?: GlobalTypes.ToFixedOptions,\n): number {\n const MAX_PRECISION = 2;\n const { roundType = \"half_up\" } = opts ?? {};\n\n if (!Number.isFinite(num) || num < 0) {\n throw new RangeError(\"Number must be finite and greater than 0.\");\n }\n\n if (\n !Number.isFinite(precision) ||\n !Number.isInteger(precision) ||\n precision < 1\n ) {\n throw new RangeError(\"Precision must be a finite integer greater than 0.\");\n }\n\n if (precision > MAX_PRECISION) {\n throw new RangeError(\"Max precision allowed is 2.\");\n }\n\n return Number(\n (+(Math.round(+(num + \"e\" + precision)) + \"e\" + -precision)).toFixed(\n precision,\n ),\n );\n}\n\nexport function getCurrencyFromCountry(\n country: IsoCountryCode,\n): IsoCurrencyCode {\n return countryToCurrency[country];\n}\n\nexport function formatMoneyCurrency(value: number, currency: IsoCurrencyCode) {\n const locale =\n currency in currencyToLocale ? currencyToLocale[currency] : \"en-US\";\n\n const formatted = new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency: currency,\n }).format(value);\n\n return sanitizeSpaces(formatted);\n}\n\nfunction sanitizeSpaces(str: string): string {\n return str\n .replace(/\\u00A0/g, \" \")\n .replace(/\\u202F/g, \" \")\n .replace(/[^\\x20-\\x7E]/g, \"\");\n}\n","import { z } from \"zod\";\n\nexport const CREATED_LOCATION = [\"web\", \"mobile\"] as const;\n\nexport type CreatedLocation = (typeof CREATED_LOCATION)[number];\n\nexport type IntBool = 0 | 1;\n\nexport const uuidSchema = z.uuid();\nexport type UUID = z.infer<typeof uuidSchema>;\n\nexport type status = \"active\" | \"inactive\";\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../../utils/utils\";\n\nexport const LoginFormSchema = z.strictObject({\n user_email: z\n .string({ error: \"Email required\" })\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .email()\n .max(254, \"Customer email must be at most 254 characters.\")\n .transform((email) => email.toLowerCase())\n ),\n password: z\n .string({ error: \"Password required\" })\n .min(1, { error: \"Password required\" }),\n});\n","import { z } from \"zod\";\nimport { COMPANY_LANGUAGES, ISO_COUNTRY_CODES } from \"./companies_types\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nconst iso_country_code = z.enum(ISO_COUNTRY_CODES, {\n error: \"Country code not supported.\",\n});\n\nexport const RegisterFormSchema = z.strictObject({\n companyData: z.strictObject({\n company_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Company name is required\")\n .max(50, \"Company name must be at most 50 characters.\")\n ),\n company_address: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Company address is required\")\n .max(100, \"Company address must be at most 100 characters.\")\n ),\n company_phone_number: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .transform(GlobalUtils.removeDashesAndPlusSign)\n .refine((s) => /^\\d{4,15}$/.test(s), {\n error: \"Phone number required and must be from 4 to 15 digits.\",\n }),\n iso_country_code: z\n .string({ error: \"Please select a country.\" })\n .transform(GlobalUtils.removeAllWhitespace)\n .transform((s) => s.toUpperCase())\n .pipe(iso_country_code),\n }),\n adminUserData: z.strictObject({\n user_first_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"First name is required\")\n .max(50, \"First name must be at most 50 characters.\")\n ),\n user_last_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Last name is required\")\n .max(50, \"Last name must be at most 50 characters.\")\n ),\n user_email: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .email()\n .max(254, \"Customer email must be at most 254 characters.\")\n .transform((email) => email.toLowerCase())\n ),\n password: z\n .string()\n .min(8, \"Password must be at least 8 characters\")\n .max(25, \"Password must be at most 25 characters\")\n .regex(/[A-Z]/, \"Password must contain at least one uppercase letter\")\n .regex(/[a-z]/, \"Password must contain at least one lowercase letter\")\n .regex(/\\d/, \"Password must contain at least one number\")\n .regex(\n /[@$!%*?&#^_+=-]/,\n \"Password must contain at least one special character\"\n )\n .regex(/^\\S*$/, \"Password cannot contain spaces or other whitespace.\"),\n }),\n});\n\nexport const CompanyFormSchema =\n RegisterFormSchema.shape.companyData.safeExtend({\n company_email: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .email(\"Invalid company email.\")\n .max(254, \"Company email must be at most 254 characters.\")\n .transform((email) => email.toLowerCase())\n ),\n rtn: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(z.string().max(100, \"RTN must be at most 100 characters.\"))\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n web_language: z.enum(COMPANY_LANGUAGES, {\n error: \"Please select a web portal language.\",\n }),\n });\n","export const ISO_COUNTRY_CODES = [\"US\", \"HN\"] as const;\n\nexport type IsoCountryCode = (typeof ISO_COUNTRY_CODES)[number];\n\nexport const USER_ROLES = [\"admin\", \"driver\"] as const;\n\nexport type UserRole = (typeof USER_ROLES)[number];\n\nexport type InventorySystem = \"warehouse_only\" | \"dsd\";\n\nexport type CompanySnapshot = {\n company_id: number;\n company_name: string;\n company_address: string;\n company_phone_number: string;\n company_email: string;\n inventory_system: InventorySystem;\n iso_country_code: IsoCountryCode;\n rtn: string | null;\n};\n\nexport const COMPANY_LANGUAGES = [\"es\", \"en\"] as const;\n\nexport type CompanyLanguages = (typeof COMPANY_LANGUAGES)[number];\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nexport const CustomerFormSchema = z.strictObject({\n customer_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Customer name is required\")\n .max(50, \"Customer name must be at most 50 characters.\")\n ),\n\n customer_address: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z.string().max(100, \"Customer address must be at most 100 characters.\")\n )\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n customer_phone_number: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .transform(GlobalUtils.removeDashesAndPlusSign)\n .refine((s) => s === \"\" || /^\\d{4,15}$/.test(s), {\n error: \"Phone number must be from 4 to 15 digits.\",\n })\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n customer_email_address: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .pipe(\n z\n .email()\n .max(254, \"Customer email must be at most 254 characters.\")\n .transform((email) => email.toLowerCase())\n .optional()\n )\n .optional(),\n});\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nexport const ProductFormSchema = z\n .strictObject({\n product_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Product name is required\")\n .max(50, \"Product name must be at most 50 characters.\")\n ),\n\n product_description: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .max(100, \"Product desription must be at most 100 characters.\")\n )\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n product_sku: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(z.string().max(30, \"Product SKU must be at most 30 characters.\"))\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n product_upc: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .refine((s) => s === \"\" || /^\\d{12}$/.test(s), {\n error: \"UPC must be exactly 12 digits\",\n })\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n country_tax_rule_id: z.number().optional(),\n\n product_gtin_14: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .refine((s) => s === \"\" || /^\\d{14}$/.test(s), {\n error: \"GTIN14 must be exactly 14 digits\",\n })\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n product_type: z.enum([\"unit\", \"weight\", \"case\"], {\n error: \"Product type must be unit, weight, or case.\",\n }),\n\n weight_unit: z.preprocess((v) => {\n if (v === \"\") return undefined;\n if (typeof v === \"string\") return v.trim().toLowerCase();\n return v;\n }, z.enum([\"kg\", \"lb\", \"g\", \"oz\"]).optional()),\n\n price: GlobalUtils.handleZodCurrency(0, 99_999.99),\n cost: GlobalUtils.handleZodCurrency(0, 99_999.99),\n })\n\n .superRefine((data, ctx) => {\n if (data.product_type === \"weight\" && !data.weight_unit) {\n ctx.addIssue({\n code: \"custom\",\n error: \"Weight unit is required.\",\n path: [\"weight_unit\"],\n });\n }\n\n if (\n data.product_type !== \"weight\" &&\n typeof data.weight_unit !== \"undefined\"\n ) {\n ctx.addIssue({\n code: \"custom\",\n error: \"Weight unit must be empty\",\n path: [\"weight_unit\"],\n });\n }\n });\n","import { z } from \"zod\";\nimport {\n CREDIT_TYPE,\n INVOICE_STATUS,\n INVOICE_TYPE,\n SchemaT,\n} from \"./invoices_types\";\nimport { handleZodCurrency } from \"../../utils/utils\";\n\nexport const YmdDateSchema = z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Use YYYY-MM-DD\");\n\nconst BaseInvoice = z\n .object({\n invoice_type: z.enum(INVOICE_TYPE, { error: \"Invoice type not found.\" }),\n invoice_date: YmdDateSchema,\n due_date: YmdDateSchema,\n tax_rate: z.number().default(0),\n tax_amount: z.number().default(0),\n warehouse_id: z.uuid().optional(),\n invoice_status: z.enum(INVOICE_STATUS).default(\"finalized\"),\n })\n .superRefine(({ invoice_date, due_date }, ctx) => {\n if (due_date < invoice_date) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Due date can't be earlier than the invoice date.\",\n path: [\"due_date\"],\n });\n }\n });\n\nconst LineItemBase = z.object({\n invoice_id: z.uuid().optional(),\n product_id: z.uuid({ error: \"Select a product\" }),\n product_name: z.string().optional(),\n product_description: z.string().optional(),\n product_type: z.enum([\"unit\", \"weight\", \"case\"]).optional(),\n product_upc: z.string().optional(),\n weight_unit: z.enum([\"kg\", \"lb\", \"g\", \"oz\"]).optional(),\n quantity: handleZodCurrency(0.01, 99_999.99),\n country_tax_rule_id: z.number().optional(),\n tax_percentage: z.number().optional(),\n});\n\nconst SalesItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.undefined(),\n});\n\nconst CreditItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.enum(CREDIT_TYPE, {\n error: \"Select a credit type\",\n }),\n});\n\nconst PurchaseItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.undefined(),\n});\n\nexport const SalesInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"sales\"),\n party_id: z.uuid({ message: \"Select a customer\" }),\n invoice_items: z.array(SalesItem).min(1, \"Add at least one invoice item\"),\n});\n\nexport const CreditInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"credit\"),\n party_id: z.uuid({ message: \"Select a customer\" }),\n invoice_items: z.array(CreditItem).min(1, \"Add at least one invoice item\"),\n});\n\nexport const PurchaseInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"purchase\"),\n party_id: z.uuid({ message: \"Select a vendor\" }),\n invoice_items: z.array(PurchaseItem).min(1, \"Add at least one invoice item\"),\n});\n\nexport const AnyInvoiceSchema = z.discriminatedUnion(\"invoice_type\", [\n SalesInvoiceSchema,\n PurchaseInvoiceSchema,\n CreditInvoiceSchema,\n]);\n\n///////////////////////////////////////////////////////////////////////\n//English / Spanish implementation\n\nexport function makeInvoiceSchemas(t: SchemaT) {\n const YmdDateSchema = z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Use YYYY-MM-DD\");\n\n const BaseInvoice = z\n .object({\n invoice_type: z.enum(INVOICE_TYPE, {\n error: t(\n \"validation_errors.create_invoice_validation.invoice_type_not_found\",\n ),\n }),\n invoice_date: YmdDateSchema,\n due_date: YmdDateSchema,\n tax_rate: z.number().default(0),\n tax_amount: z.number().default(0),\n warehouse_id: z.uuid().optional(),\n invoice_status: z.enum(INVOICE_STATUS).default(\"finalized\"),\n })\n .superRefine(({ invoice_date, due_date }, ctx) => {\n if (due_date < invoice_date) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Due date can't be earlier than the invoice date.\",\n path: [\"due_date\"],\n });\n }\n });\n\n const LineItemBase = z.object({\n invoice_id: z.uuid().optional(),\n product_id: z.uuid({\n error: t(\"validation_errors.create_invoice_validation.select_product\"),\n }),\n product_name: z.string().optional(),\n product_description: z.string().optional(),\n product_type: z.enum([\"unit\", \"weight\", \"case\"]).optional(),\n product_upc: z.string().optional(),\n weight_unit: z.enum([\"kg\", \"lb\", \"g\", \"oz\"]).optional(),\n quantity: handleZodCurrency(0.01, 99_999.99),\n country_tax_rule_id: z.number().optional(),\n tax_percentage: z.number().optional(),\n });\n\n const SalesItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.undefined(),\n });\n\n const CreditItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.enum(CREDIT_TYPE, {\n error: t(\n \"validation_errors.create_invoice_validation.select_credit_type\",\n ),\n }),\n });\n\n const PurchaseItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.undefined(),\n });\n\n const SalesInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"sales\"),\n party_id: z.uuid({\n error: t(\"validation_errors.create_invoice_validation.select_customer\"),\n }),\n invoice_items: z\n .array(SalesItem)\n .min(\n 1,\n t(\"validation_errors.create_invoice_validation.add_one_invoice_item\"),\n ),\n });\n\n const CreditInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"credit\"),\n party_id: z.uuid({\n error: t(\"validation_errors.create_invoice_validation.select_customer\"),\n }),\n invoice_items: z\n .array(CreditItem)\n .min(\n 1,\n t(\"validation_errors.create_invoice_validation.add_one_invoice_item\"),\n ),\n });\n\n const PurchaseInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"purchase\"),\n party_id: z.uuid({\n error: t(\"validation_errors.create_invoice_validation.select_vendor\"),\n }),\n invoice_items: z\n .array(PurchaseItem)\n .min(\n 1,\n t(\"validation_errors.create_invoice_validation.add_one_invoice_item\"),\n ),\n });\n\n const AnyInvoiceSchema = z.discriminatedUnion(\"invoice_type\", [\n SalesInvoiceSchema,\n PurchaseInvoiceSchema,\n CreditInvoiceSchema,\n ]);\n\n return {\n YmdDateSchema,\n SalesInvoiceSchema,\n CreditInvoiceSchema,\n PurchaseInvoiceSchema,\n AnyInvoiceSchema,\n };\n}\n","import { z } from \"zod\";\nimport * as InvoiceSchemas from \"./invoices_schemas\";\nimport { IntBool, UUID } from \"../../types/shared_types\";\n\nexport type SchemaT = (key: string, params?: Record<string, any>) => string;\n\nexport type SalesInvoice = z.infer<typeof InvoiceSchemas.SalesInvoiceSchema>;\nexport type CreditInvoice = z.infer<typeof InvoiceSchemas.CreditInvoiceSchema>;\nexport type PurchaseInvoice = z.infer<\n typeof InvoiceSchemas.PurchaseInvoiceSchema\n>;\nexport type AnyInvoiceOut = z.output<typeof InvoiceSchemas.AnyInvoiceSchema>;\n\nexport const INVOICE_TYPE = [\"sales\", \"credit\", \"purchase\"] as const;\n\nexport type InvoiceType = (typeof INVOICE_TYPE)[number];\n\nexport const INVOICE_STATUS = [\"finalized\", \"voided\"] as const;\n\nexport type InvoiceStatus = (typeof INVOICE_STATUS)[number];\n\nexport const CREDIT_TYPE = [\"dump\", \"return\"] as const;\n\nexport type CreditType = (typeof CREDIT_TYPE)[number];\n\nexport type InvoiceSnapshot = {\n invoice_id: UUID;\n invoice_type: InvoiceType;\n subtotal: string;\n tax_amount: string;\n total_amount: string;\n remaining_balance: string;\n due_date: string;\n tax_rate: string;\n is_admin_reviewed: IntBool;\n customer_id: UUID;\n company_id: number;\n short_invoice_id: string;\n invoice_date: string;\n invoice_status: InvoiceStatus;\n occurred_at_ms: string;\n cai: string | null;\n invoice_number_start_range: string | null;\n invoice_number_end_range: string | null;\n issuance_date: string | null;\n issuance_deadline: string | null;\n};\n\nexport type InvoiceSnapshotMobile = InvoiceSnapshot & {\n signature: string | null;\n};\n","import * as InvoiceItemsTypes from \"./invoice_items_types\";\n\nexport function mapInvoiceProducts(\n row: InvoiceItemsTypes.InvoiceItemResponse\n): InvoiceItemsTypes.MappedInvoiceItem {\n return {\n invoice_item_id: row.invoice_item_id,\n product_id: row.product_id,\n quantity: Number(row.quantity),\n price: Number(row.price),\n amount: Number(row.amount),\n credit_type: row.credit_type ?? undefined,\n product_name: row.product_name,\n product_description: row.product_description ?? undefined,\n product_type: row.product_type,\n weight_unit: row.weight_unit ?? undefined,\n product_upc: row.product_upc ?? undefined,\n rule_name: row.rule_name ?? undefined,\n tax_percentage:\n row.tax_percentage === null ? undefined : Number(row.tax_percentage),\n };\n}\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nexport const CreditApplicationSchema = z.strictObject({\n credit_invoice_id: z.uuid({ error: \"Select a credit\" }),\n applied_amount: GlobalUtils.handleZodCurrency(0.01, 999_999.99),\n});\n","import { z } from \"zod\";\nimport { PAYMENT_METHOD } from \"./payments_types\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nexport const PaymentFormSchema = z.strictObject({\n payment_method: z.enum(PAYMENT_METHOD, {\n error: \"Payment method is required.\",\n }),\n check_number: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z.string().max(50, \"Payment check number must be at most 50 characters.\")\n )\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n payment_amount: GlobalUtils.handleZodCurrency(0.01, 999_999.99),\n});\n","import { IntBool, UUID } from \"../../types/shared_types\";\n\nexport const PAYMENT_METHOD = [\n \"check\",\n \"cash\",\n \"bank_transfer\",\n \"digital_wallet\",\n] as const;\n\nexport type PaymentMethod = (typeof PAYMENT_METHOD)[number];\n\nexport type PaymentStatus = \"finalized\" | \"voided\";\n\nexport type PaymentSnapshot = {\n payment_id: UUID;\n invoice_id: UUID;\n payment_amount: string;\n payment_date: string;\n payment_method: PaymentMethod;\n check_number: string | null;\n is_admin_reviewed: IntBool;\n company_id: number;\n short_invoice_id: string;\n payment_status: PaymentStatus;\n occurred_at_ms: string;\n};\n","export const exceedsTwoDecimals = (raw: string) => {\n const s = String(raw ?? \"\").replace(/[,\\s]/g, \"\");\n const dot = s.indexOf(\".\");\n if (dot === -1) return false;\n const after = s.slice(dot + 1);\n const digitsAfter = (after.match(/\\d/g) ?? []).length;\n return digitsAfter > 2;\n};\n","// \"Today\" in the user's LOCAL timezone as YMD\nexport function todayLocalYmd(): string {\n const now = new Date();\n const y = now.getFullYear();\n const m = String(now.getMonth() + 1).padStart(2, \"0\");\n const d = String(now.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${d}`;\n}\n\n// Add days in LOCAL time (no drift)\nexport function addDaysLocalYmd(ymd: string, days: number): string {\n const dt = localDateFromYmd(ymd);\n dt.setDate(dt.getDate() + days);\n return ymdFromLocalDate(dt);\n}\n\nexport function formatYmdLong(ymd: string, locale = \"en-US\"): string {\n const { y, m, d } = parseYmd(ymd);\n const utcDate = new Date(Date.UTC(y, m - 1, d)); // 00:00Z\n return new Intl.DateTimeFormat(locale, {\n dateStyle: \"long\",\n timeZone: \"UTC\",\n }).format(utcDate);\n}\n\nexport function localDateFromYmd(ymd: string): Date {\n const { y, m, d } = parseYmd(ymd);\n return new Date(y, m - 1, d); // LOCAL midnight\n}\n\nexport function ymdFromLocalDate(dt: Date): string {\n const y = dt.getFullYear();\n const m = String(dt.getMonth() + 1).padStart(2, \"0\");\n const d = String(dt.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${d}`;\n}\n\nfunction parseYmd(ymd: string): { y: number; m: number; d: number } {\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(ymd);\n if (!m) throw new Error(\"Bad YMD\");\n return { y: Number(m[1]), m: Number(m[2]), d: Number(m[3]) };\n}\n","import type { FieldError, FieldErrorsImpl, Merge } from \"react-hook-form\";\n\ntype RHFError =\n | string\n | FieldError\n | Merge<FieldError, FieldErrorsImpl<any>>\n | undefined;\n\nexport const getErrorMessage = (err: RHFError): string | undefined => {\n if (!err) return undefined;\n if (typeof err === \"string\") return err;\n // FieldError has .message (string | undefined)\n const msg = (err as FieldError).message as string | undefined;\n return typeof msg === \"string\" ? msg : undefined;\n};\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../utils/utils\";\nimport { YmdDateSchema } from \"../invoices/invoices_schemas\";\nimport { PosInvoiceType, POS_INVOICE_TYPE } from \"./point_of_sales_types\";\n\nconst HN_INVOICE_REGEX = /^\\d{3}-\\d{3}-\\d{2}-\\d{8}$/;\n\nconst InvoiceNumberSchema = z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .string()\n .min(19, \"Must be in format NNN-NNN-NN-NNNNNNNN (3-3-2-8)\")\n .max(19, \"Must be in format NNN-NNN-NN-NNNNNNNN (3-3-2-8)\")\n .regex(HN_INVOICE_REGEX, {\n error: \"Must be in format NNN-NNN-NN-NNNNNNNN (3-3-2-8)\",\n })\n );\n\nexport const PointOfSalesSchema = z\n .strictObject({\n cai: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .string()\n .min(1, \"CAI is required\")\n .max(50, \"CAI must be at most 50 characters.\")\n ),\n\n pos_invoice_type: z.enum(\n POS_INVOICE_TYPE,\n \"Please select an invoice / document type.\"\n ),\n\n invoice_number_start_range: InvoiceNumberSchema,\n invoice_number_end_range: InvoiceNumberSchema,\n next_invoice_number: InvoiceNumberSchema,\n\n issuance_date: YmdDateSchema,\n issuance_deadline: YmdDateSchema,\n })\n .superRefine(\n (\n {\n issuance_date,\n issuance_deadline,\n invoice_number_start_range: start,\n invoice_number_end_range: end,\n next_invoice_number: next,\n },\n\n ctx\n ) => {\n if (issuance_deadline < issuance_date) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Issuance deadline can't be earlier than the issuance date.\",\n path: [\"issuance_deadline\"],\n });\n }\n\n const prefix = (s: string) => s.slice(0, 10); // \"NNN-NNN-NN\"\n\n if (prefix(start) !== prefix(end)) {\n ctx.addIssue({\n code: \"custom\",\n message:\n \"Start and end invoice numbers must share the same NNN-NNN-NN prefix.\",\n path: [\"invoice_number_end_range\"],\n });\n }\n\n if (prefix(start) !== prefix(next)) {\n ctx.addIssue({\n code: \"custom\",\n message:\n \"Start and next invoice numbers must share the same NNN-NNN-NN prefix.\",\n path: [\"next_invoice_number\"],\n });\n }\n\n if (!(next >= start && next <= end)) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Next invoice number must be within the authorized range.\",\n path: [\"next_invoice_number\"],\n });\n }\n\n if (end < start) {\n ctx.addIssue({\n code: \"custom\",\n message:\n \"End invoice number must be greater than or equal to start invoice number.\",\n path: [\"invoice_number_end_range\"],\n });\n }\n }\n );\n","export type MappedPointOfSales = {\n point_of_sales_id: number;\n cai: string;\n pos_invoice_type: PosInvoiceType;\n invoice_number_start_range: string;\n invoice_number_end_range: string;\n next_invoice_number: string;\n issuance_date: string;\n issuance_deadline: string;\n};\n\nexport const POS_INVOICE_TYPE = [\"sales\", \"credit\"] as const;\n\nexport type PosInvoiceType = (typeof POS_INVOICE_TYPE)[number];\n"],"mappings":"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","names":["fromString","fromNumber","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","YmdDateSchema","BaseInvoice","LineItemBase","SalesItem","CreditItem","PurchaseItem","SalesInvoiceSchema","CreditInvoiceSchema","PurchaseInvoiceSchema","AnyInvoiceSchema","import_zod","import_zod","import_zod"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/types/money_types.ts","../src/utils/utils.ts","../src/types/shared_types.ts","../src/domains/auth/login/login_schemas.ts","../src/domains/companies/companies_schemas.ts","../src/domains/companies/companies_types.ts","../src/domains/customers/customer_schemas.ts","../src/domains/products/product_schemas.ts","../src/domains/invoices/invoices_schemas.ts","../src/domains/invoices/invoices_types.ts","../src/domains/invoice_items/invoice_items_mappers.ts","../src/domains/credit_applications/credit_applications_schemas.ts","../src/domains/payments/payments_schemas.ts","../src/domains/payments/payments_types.ts","../src/utils/money_utils.ts","../src/utils/date_utils.ts","../src/utils/errors_utils.ts","../src/domains/point_of_sales/point_of_sales_schemas.ts","../src/domains/point_of_sales/point_of_sales_types.ts"],"sourcesContent":["export * from \"./utils/utils\";\n\nexport { CreatedLocation, UUID } from \"./types/shared_types\";\n\n//Login\nexport * from \"./domains/auth/login/login_schemas\";\n\n//Company\nexport * from \"./domains/companies/companies_schemas\";\nexport * from \"./domains/companies/companies_types\";\n\n//Users\nexport * from \"./domains/users/users_types\";\n\n//Customers\nexport * from \"./domains/customers/customer_schemas\";\nexport * from \"./domains/customers/customers_types\";\n\n//Vendors\nexport * from \"./domains/vendors/vendors_types\";\n\n// Products\nexport * from \"./domains/products/product_schemas\";\nexport * from \"./domains/products/products_types\";\n\n//Warehouses\nexport * from \"./domains/warehouses/warehouses_types\";\n\n//Inventory\nexport * from \"./domains/inventory/inventory_locations/inventory_locations_types\";\nexport * from \"./domains/inventory/inventory_balances/inventory_balances_type\";\n\n//Invoices\nexport * from \"./domains/invoices/invoices_schemas\";\nexport * from \"./domains/invoices/invoices_types\";\n\n//Invoice Items\nexport * from \"./domains/invoice_items/invoice_items_types\";\nexport * from \"./domains/invoice_items/invoice_items_mappers\";\n\n//Credit Applications\nexport * from \"./domains/credit_applications/credit_applications_schemas\";\nexport * from \"./domains/credit_applications/credit_applications_types\";\n\n//Payments\nexport * from \"./domains/payments/payments_schemas\";\nexport * from \"./domains/payments/payments_types\";\n\n//Drivers\nexport * from \"./domains/drivers/driver_customers/driver_customers_types\";\nexport * from \"./domains/drivers/driver_settings/driver_settings_types\";\n\n//Sync\nexport * from \"./domains/sync/sync_types\";\n\n// Money\nexport * from \"./utils/money_utils\";\nexport * from \"./types/money_types\";\n\n//Date\nexport * from \"./utils/date_utils\";\n\n//Errors\nexport * from \"./utils/errors_utils\";\n\n//Audit Events\nexport * from \"./domains/audit_events/audit_events_types\";\n\n//Country Tax Rules\nexport * from \"./domains/country_tax_rules/country_tax_rules_types\";\n\n//Point of sales\nexport * from \"./domains/point_of_sales/point_of_sales_schemas\";\nexport * from \"./domains/point_of_sales/point_of_sales_types\";\n","import { IsoCountryCode } from \"../domains/companies/companies_types\";\n\nexport type IsoCurrencyCode = \"USD\" | \"HNL\";\ntype Locale = \"en-US\" | \"es-HN\";\n\nexport const countryToCurrency: Record<IsoCountryCode, IsoCurrencyCode> = {\n US: \"USD\",\n HN: \"HNL\",\n};\n\nexport const currencyToLocale: Record<IsoCurrencyCode, Locale> = {\n USD: \"en-US\",\n HNL: \"es-HN\",\n};\n","import * as GlobalTypes from \"./types\";\nimport { IsoCountryCode } from \"../domains/companies/companies_types\";\nimport {\n IsoCurrencyCode,\n countryToCurrency,\n currencyToLocale,\n} from \"../types/money_types\";\n\nimport { z } from \"zod\";\nimport { SchemaT } from \"../domains/invoices/invoices_types\";\n\n/**\n * Validates zod currency with precision.\n *\n *\n * @param minAmount\n * @param maxAmount\n * @returns\n */\nexport function handleZodCurrency(\n minAmount: number,\n maxAmount: number,\n t?: SchemaT,\n) {\n if (!t) {\n const fromString = z\n .string({\n error: \"Enter a valid number\",\n })\n .refine((s) => s.trim().length > 0, { error: \"Enter a valid number\" })\n .transform((s) => s.replace(/[,\\s]/g, \"\"))\n .refine((s) => s !== \"\" && !Number.isNaN(Number(s)), {\n error: \"Enter a valid number\",\n })\n .refine((s) => Number.isFinite(Number(s)), {\n error: \"Enter a valid number\",\n })\n .refine((s) => Number(s) >= 0, { error: \"Enter a positive number\" })\n .transform((s) => Number(s));\n\n const fromNumber = z\n .number()\n .refine((n) => Number.isFinite(n), { error: \"Enter a valid number\" })\n .refine((n) => n >= 0, { error: \"Enter a positive number\" });\n\n return z\n .union([fromString, fromNumber])\n .transform((n) => roundWithPrecision(n, 2))\n .refine((n) => n >= minAmount, {\n error: `Must be at least ${minAmount}`,\n })\n .refine((n) => n <= maxAmount, {\n error: `Exceeds allowed limit ${maxAmount}`,\n });\n }\n\n const fromString = z\n .string({\n error: t(\"enter_a_valid_number\"),\n })\n .refine((s) => s.trim().length > 0, {\n error: t(\"enter_a_valid_number\"),\n })\n .transform((s) => s.replace(/[,\\s]/g, \"\"))\n .refine((s) => s !== \"\" && !Number.isNaN(Number(s)), {\n error: t(\"enter_a_valid_number\"),\n })\n .refine((s) => Number.isFinite(Number(s)), {\n error: t(\"enter_a_valid_number\"),\n })\n .refine((s) => Number(s) >= 0, {\n error: t(\"enter_a_positive_number\"),\n })\n .transform((s) => Number(s));\n\n const fromNumber = z\n .number()\n .refine((n) => Number.isFinite(n), {\n error: t(\"enter_a_valid_number\"),\n })\n .refine((n) => n >= 0, {\n error: t(\"enter_a_positive_number\"),\n });\n\n return z\n .union([fromString, fromNumber])\n .transform((n) => roundWithPrecision(n, 2))\n .refine((n) => n >= minAmount, {\n error: `${t(\"must_be_at_least\")} ${minAmount}`,\n })\n .refine((n) => n <= maxAmount, {\n error: `${t(\"exceeds_allowed_limit\")} ${maxAmount}`,\n });\n}\n\n/**\n * Trims any leading or trailing spaces\n * Transforms empty strings into undefined.\n *\n * @param s\n * @returns\n */\nexport const transformEmptyStringToUndefined = (s: string) =>\n s.trim() === \"\" ? undefined : s;\n\n/**\n * - Collapses any run of whitespace in a string (spaces, tabs, newlines, nbspb, and other weird unicode spaces etc.)\n * into a single ASCII space.\n * - Trims leading and trailing whitespace.\n * \" Jared \\n Gomez \\t Driver\\t \" -> \"Jared Gomez Driver\"\n *\n * @param s\n * @returns\n */\nexport const normalizeSpaces = (s: string) => whitespace(s, \"normalize\");\n\n/**\n * Removes all whitespace from a string\n * @param s\n * @returns\n */\nexport const removeAllWhitespace = (s: string) => whitespace(s, \"remove\");\n\nconst whitespace = (s: string, mode: GlobalTypes.WhitespaceMode) => {\n if (mode === \"remove\") {\n return s.replace(/\\s+/g, \"\");\n }\n\n return s.replace(/\\s+/g, \" \").trim();\n};\n\n/**\n * Removes all dashes and + signs from a string\n * +1-305-555-0123 -> \"13055550123\"\n * 305-555-0123 -> \"3055550123\"\n *\n * @param s\n * @returns\n */\nexport const removeDashesAndPlusSign = (s: string): string =>\n s.replace(/[+-]/g, \"\");\n\n/**\n * Rounds a number to a certain precision.\n * Contract:\n * 1. Number must be finite and non negative.\n * 2. Precision must be finite nonnegative and an integer.\n * 3. Precision must be <= Max precision\n * 4. Returns a number >= 0\n * Default is round half up.\n *\n * @param num\n * @param precision\n * @param opts\n * @returns\n */\nexport function roundWithPrecision(\n num: number,\n precision: number,\n opts?: GlobalTypes.ToFixedOptions,\n): number {\n const MAX_PRECISION = 2;\n const { roundType = \"half_up\" } = opts ?? {};\n\n if (!Number.isFinite(num) || num < 0) {\n throw new RangeError(\"Number must be finite and greater than 0.\");\n }\n\n if (\n !Number.isFinite(precision) ||\n !Number.isInteger(precision) ||\n precision < 1\n ) {\n throw new RangeError(\"Precision must be a finite integer greater than 0.\");\n }\n\n if (precision > MAX_PRECISION) {\n throw new RangeError(\"Max precision allowed is 2.\");\n }\n\n return Number(\n (+(Math.round(+(num + \"e\" + precision)) + \"e\" + -precision)).toFixed(\n precision,\n ),\n );\n}\n\nexport function getCurrencyFromCountry(\n country: IsoCountryCode,\n): IsoCurrencyCode {\n return countryToCurrency[country];\n}\n\nexport function formatMoneyCurrency(value: number, currency: IsoCurrencyCode) {\n const locale =\n currency in currencyToLocale ? currencyToLocale[currency] : \"en-US\";\n\n const formatted = new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency: currency,\n }).format(value);\n\n return sanitizeSpaces(formatted);\n}\n\nfunction sanitizeSpaces(str: string): string {\n return str\n .replace(/\\u00A0/g, \" \")\n .replace(/\\u202F/g, \" \")\n .replace(/[^\\x20-\\x7E]/g, \"\");\n}\n","import { z } from \"zod\";\n\nexport const CREATED_LOCATION = [\"web\", \"mobile\"] as const;\n\nexport type CreatedLocation = (typeof CREATED_LOCATION)[number];\n\nexport type IntBool = 0 | 1;\n\nexport const uuidSchema = z.uuid();\nexport type UUID = z.infer<typeof uuidSchema>;\n\nexport type status = \"active\" | \"inactive\";\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../../utils/utils\";\n\nexport const LoginFormSchema = z.strictObject({\n user_email: z\n .string({ error: \"Email required\" })\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .email()\n .max(254, \"Customer email must be at most 254 characters.\")\n .transform((email) => email.toLowerCase())\n ),\n password: z\n .string({ error: \"Password required\" })\n .min(1, { error: \"Password required\" }),\n});\n","import { z } from \"zod\";\nimport { COMPANY_LANGUAGES, ISO_COUNTRY_CODES } from \"./companies_types\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nconst iso_country_code = z.enum(ISO_COUNTRY_CODES, {\n error: \"Country code not supported.\",\n});\n\nexport const RegisterFormSchema = z.strictObject({\n companyData: z.strictObject({\n company_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Company name is required\")\n .max(50, \"Company name must be at most 50 characters.\")\n ),\n company_address: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Company address is required\")\n .max(100, \"Company address must be at most 100 characters.\")\n ),\n company_phone_number: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .transform(GlobalUtils.removeDashesAndPlusSign)\n .refine((s) => /^\\d{4,15}$/.test(s), {\n error: \"Phone number required and must be from 4 to 15 digits.\",\n }),\n iso_country_code: z\n .string({ error: \"Please select a country.\" })\n .transform(GlobalUtils.removeAllWhitespace)\n .transform((s) => s.toUpperCase())\n .pipe(iso_country_code),\n }),\n adminUserData: z.strictObject({\n user_first_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"First name is required\")\n .max(50, \"First name must be at most 50 characters.\")\n ),\n user_last_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Last name is required\")\n .max(50, \"Last name must be at most 50 characters.\")\n ),\n user_email: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .email()\n .max(254, \"Customer email must be at most 254 characters.\")\n .transform((email) => email.toLowerCase())\n ),\n password: z\n .string()\n .min(8, \"Password must be at least 8 characters\")\n .max(25, \"Password must be at most 25 characters\")\n .regex(/[A-Z]/, \"Password must contain at least one uppercase letter\")\n .regex(/[a-z]/, \"Password must contain at least one lowercase letter\")\n .regex(/\\d/, \"Password must contain at least one number\")\n .regex(\n /[@$!%*?&#^_+=-]/,\n \"Password must contain at least one special character\"\n )\n .regex(/^\\S*$/, \"Password cannot contain spaces or other whitespace.\"),\n }),\n});\n\nexport const CompanyFormSchema =\n RegisterFormSchema.shape.companyData.safeExtend({\n company_email: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .email(\"Invalid company email.\")\n .max(254, \"Company email must be at most 254 characters.\")\n .transform((email) => email.toLowerCase())\n ),\n rtn: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(z.string().max(100, \"RTN must be at most 100 characters.\"))\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n web_language: z.enum(COMPANY_LANGUAGES, {\n error: \"Please select a web portal language.\",\n }),\n });\n","export const ISO_COUNTRY_CODES = [\"US\", \"HN\"] as const;\n\nexport type IsoCountryCode = (typeof ISO_COUNTRY_CODES)[number];\n\nexport const USER_ROLES = [\"admin\", \"driver\"] as const;\n\nexport type UserRole = (typeof USER_ROLES)[number];\n\nexport type InventorySystem = \"warehouse_only\" | \"dsd\";\n\nexport type CompanySnapshot = {\n company_id: number;\n company_name: string;\n company_address: string;\n company_phone_number: string;\n company_email: string;\n inventory_system: InventorySystem;\n iso_country_code: IsoCountryCode;\n rtn: string | null;\n};\n\nexport const COMPANY_LANGUAGES = [\"es\", \"en\"] as const;\n\nexport type CompanyLanguages = (typeof COMPANY_LANGUAGES)[number];\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nexport const CustomerFormSchema = z.strictObject({\n customer_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Customer name is required\")\n .max(50, \"Customer name must be at most 50 characters.\")\n ),\n\n customer_address: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z.string().max(100, \"Customer address must be at most 100 characters.\")\n )\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n customer_phone_number: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .transform(GlobalUtils.removeDashesAndPlusSign)\n .refine((s) => s === \"\" || /^\\d{4,15}$/.test(s), {\n error: \"Phone number must be from 4 to 15 digits.\",\n })\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n customer_email_address: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .pipe(\n z\n .email()\n .max(254, \"Customer email must be at most 254 characters.\")\n .transform((email) => email.toLowerCase())\n .optional()\n )\n .optional(),\n});\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nexport const ProductFormSchema = z\n .strictObject({\n product_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Product name is required\")\n .max(50, \"Product name must be at most 50 characters.\")\n ),\n\n product_description: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .max(100, \"Product desription must be at most 100 characters.\")\n )\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n product_sku: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(z.string().max(30, \"Product SKU must be at most 30 characters.\"))\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n product_upc: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .refine((s) => s === \"\" || /^\\d{12}$/.test(s), {\n error: \"UPC must be exactly 12 digits\",\n })\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n country_tax_rule_id: z.number().optional(),\n\n product_gtin_14: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .refine((s) => s === \"\" || /^\\d{14}$/.test(s), {\n error: \"GTIN14 must be exactly 14 digits\",\n })\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n product_type: z.enum([\"unit\", \"weight\", \"case\"], {\n error: \"Product type must be unit, weight, or case.\",\n }),\n\n weight_unit: z.preprocess((v) => {\n if (v === \"\") return undefined;\n if (typeof v === \"string\") return v.trim().toLowerCase();\n return v;\n }, z.enum([\"kg\", \"lb\", \"g\", \"oz\"]).optional()),\n\n price: GlobalUtils.handleZodCurrency(0, 99_999.99),\n cost: GlobalUtils.handleZodCurrency(0, 99_999.99),\n })\n\n .superRefine((data, ctx) => {\n if (data.product_type === \"weight\" && !data.weight_unit) {\n ctx.addIssue({\n code: \"custom\",\n error: \"Weight unit is required.\",\n path: [\"weight_unit\"],\n });\n }\n\n if (\n data.product_type !== \"weight\" &&\n typeof data.weight_unit !== \"undefined\"\n ) {\n ctx.addIssue({\n code: \"custom\",\n error: \"Weight unit must be empty\",\n path: [\"weight_unit\"],\n });\n }\n });\n","import { z } from \"zod\";\nimport {\n CREDIT_TYPE,\n INVOICE_STATUS,\n INVOICE_TYPE,\n SchemaT,\n} from \"./invoices_types\";\nimport { handleZodCurrency } from \"../../utils/utils\";\n\nexport const YmdDateSchema = z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Use YYYY-MM-DD\");\n\nconst BaseInvoice = z\n .object({\n invoice_type: z.enum(INVOICE_TYPE, { error: \"Invoice type not found.\" }),\n invoice_date: YmdDateSchema,\n due_date: YmdDateSchema,\n tax_rate: z.number().default(0),\n tax_amount: z.number().default(0),\n warehouse_id: z.uuid().optional(),\n invoice_status: z.enum(INVOICE_STATUS).default(\"finalized\"),\n })\n .superRefine(({ invoice_date, due_date }, ctx) => {\n if (due_date < invoice_date) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Due date can't be earlier than the invoice date.\",\n path: [\"due_date\"],\n });\n }\n });\n\nconst LineItemBase = z.object({\n invoice_id: z.uuid().optional(),\n product_id: z.uuid({ error: \"Select a product\" }),\n product_name: z.string().optional(),\n product_description: z.string().optional(),\n product_type: z.enum([\"unit\", \"weight\", \"case\"]).optional(),\n product_upc: z.string().optional(),\n weight_unit: z.enum([\"kg\", \"lb\", \"g\", \"oz\"]).optional(),\n quantity: handleZodCurrency(0.01, 99_999.99),\n country_tax_rule_id: z.number().optional(),\n tax_percentage: z.number().optional(),\n});\n\nconst SalesItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.undefined(),\n});\n\nconst CreditItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.enum(CREDIT_TYPE, {\n error: \"Select a credit type\",\n }),\n});\n\nconst PurchaseItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.undefined(),\n});\n\nexport const SalesInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"sales\"),\n party_id: z.uuid({ message: \"Select a customer\" }),\n invoice_items: z.array(SalesItem).min(1, \"Add at least one invoice item\"),\n});\n\nexport const CreditInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"credit\"),\n party_id: z.uuid({ message: \"Select a customer\" }),\n invoice_items: z.array(CreditItem).min(1, \"Add at least one invoice item\"),\n});\n\nexport const PurchaseInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"purchase\"),\n party_id: z.uuid({ message: \"Select a vendor\" }),\n invoice_items: z.array(PurchaseItem).min(1, \"Add at least one invoice item\"),\n});\n\nexport const AnyInvoiceSchema = z.discriminatedUnion(\"invoice_type\", [\n SalesInvoiceSchema,\n PurchaseInvoiceSchema,\n CreditInvoiceSchema,\n]);\n\n///////////////////////////////////////////////////////////////////////\n//English / Spanish implementation\n\nexport function makeInvoiceSchemas(t: SchemaT) {\n const YmdDateSchema = z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Use YYYY-MM-DD\");\n\n const BaseInvoice = z\n .object({\n invoice_type: z.enum(INVOICE_TYPE, {\n error: t(\"invoice_type_not_found\"),\n }),\n invoice_date: YmdDateSchema,\n due_date: YmdDateSchema,\n tax_rate: z.number().default(0),\n tax_amount: z.number().default(0),\n warehouse_id: z.uuid().optional(),\n invoice_status: z.enum(INVOICE_STATUS).default(\"finalized\"),\n })\n .superRefine(({ invoice_date, due_date }, ctx) => {\n if (due_date < invoice_date) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Due date can't be earlier than the invoice date.\",\n path: [\"due_date\"],\n });\n }\n });\n\n const LineItemBase = z.object({\n invoice_id: z.uuid().optional(),\n product_id: z.uuid({\n error: t(\"select_product\"),\n }),\n product_name: z.string().optional(),\n product_description: z.string().optional(),\n product_type: z.enum([\"unit\", \"weight\", \"case\"]).optional(),\n product_upc: z.string().optional(),\n weight_unit: z.enum([\"kg\", \"lb\", \"g\", \"oz\"]).optional(),\n quantity: handleZodCurrency(0.01, 99_999.99),\n country_tax_rule_id: z.number().optional(),\n tax_percentage: z.number().optional(),\n });\n\n const SalesItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.undefined(),\n });\n\n const CreditItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.enum(CREDIT_TYPE, {\n error: t(\"select_credit_type\"),\n }),\n });\n\n const PurchaseItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.undefined(),\n });\n\n const SalesInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"sales\"),\n party_id: z.uuid({\n error: t(\"select_customer\"),\n }),\n invoice_items: z.array(SalesItem).min(1, t(\"add_one_invoice_item\")),\n });\n\n const CreditInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"credit\"),\n party_id: z.uuid({\n error: t(\"select_customer\"),\n }),\n invoice_items: z.array(CreditItem).min(1, t(\"add_one_invoice_item\")),\n });\n\n const PurchaseInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"purchase\"),\n party_id: z.uuid({\n error: t(\"select_vendor\"),\n }),\n invoice_items: z.array(PurchaseItem).min(1, t(\"add_one_invoice_item\")),\n });\n\n const AnyInvoiceSchema = z.discriminatedUnion(\"invoice_type\", [\n SalesInvoiceSchema,\n PurchaseInvoiceSchema,\n CreditInvoiceSchema,\n ]);\n\n return {\n YmdDateSchema,\n SalesInvoiceSchema,\n CreditInvoiceSchema,\n PurchaseInvoiceSchema,\n AnyInvoiceSchema,\n };\n}\n\nexport type InvoiceSchemas = ReturnType<typeof makeInvoiceSchemas>;\n","import { z } from \"zod\";\nimport * as InvoiceSchemas from \"./invoices_schemas\";\nimport { IntBool, UUID } from \"../../types/shared_types\";\n\nexport type SchemaT = (key: string, params?: Record<string, any>) => string;\n\nexport type SalesInvoice = z.infer<typeof InvoiceSchemas.SalesInvoiceSchema>;\nexport type CreditInvoice = z.infer<typeof InvoiceSchemas.CreditInvoiceSchema>;\nexport type PurchaseInvoice = z.infer<\n typeof InvoiceSchemas.PurchaseInvoiceSchema\n>;\nexport type AnyInvoiceOut = z.output<typeof InvoiceSchemas.AnyInvoiceSchema>;\n\nexport const INVOICE_TYPE = [\"sales\", \"credit\", \"purchase\"] as const;\n\nexport type InvoiceType = (typeof INVOICE_TYPE)[number];\n\nexport const INVOICE_STATUS = [\"finalized\", \"voided\"] as const;\n\nexport type InvoiceStatus = (typeof INVOICE_STATUS)[number];\n\nexport const CREDIT_TYPE = [\"dump\", \"return\"] as const;\n\nexport type CreditType = (typeof CREDIT_TYPE)[number];\n\nexport type InvoiceSnapshot = {\n invoice_id: UUID;\n invoice_type: InvoiceType;\n subtotal: string;\n tax_amount: string;\n total_amount: string;\n remaining_balance: string;\n due_date: string;\n tax_rate: string;\n is_admin_reviewed: IntBool;\n customer_id: UUID;\n company_id: number;\n short_invoice_id: string;\n invoice_date: string;\n invoice_status: InvoiceStatus;\n occurred_at_ms: string;\n cai: string | null;\n invoice_number_start_range: string | null;\n invoice_number_end_range: string | null;\n issuance_date: string | null;\n issuance_deadline: string | null;\n};\n\nexport type InvoiceSnapshotMobile = InvoiceSnapshot & {\n signature: string | null;\n};\n","import * as InvoiceItemsTypes from \"./invoice_items_types\";\n\nexport function mapInvoiceProducts(\n row: InvoiceItemsTypes.InvoiceItemResponse\n): InvoiceItemsTypes.MappedInvoiceItem {\n return {\n invoice_item_id: row.invoice_item_id,\n product_id: row.product_id,\n quantity: Number(row.quantity),\n price: Number(row.price),\n amount: Number(row.amount),\n credit_type: row.credit_type ?? undefined,\n product_name: row.product_name,\n product_description: row.product_description ?? undefined,\n product_type: row.product_type,\n weight_unit: row.weight_unit ?? undefined,\n product_upc: row.product_upc ?? undefined,\n rule_name: row.rule_name ?? undefined,\n tax_percentage:\n row.tax_percentage === null ? undefined : Number(row.tax_percentage),\n };\n}\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nexport const CreditApplicationSchema = z.strictObject({\n credit_invoice_id: z.uuid({ error: \"Select a credit\" }),\n applied_amount: GlobalUtils.handleZodCurrency(0.01, 999_999.99),\n});\n","import { z } from \"zod\";\nimport { PAYMENT_METHOD } from \"./payments_types\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nexport const PaymentFormSchema = z.strictObject({\n payment_method: z.enum(PAYMENT_METHOD, {\n error: \"Payment method is required.\",\n }),\n check_number: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z.string().max(50, \"Payment check number must be at most 50 characters.\")\n )\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n payment_amount: GlobalUtils.handleZodCurrency(0.01, 999_999.99),\n});\n","import { IntBool, UUID } from \"../../types/shared_types\";\n\nexport const PAYMENT_METHOD = [\n \"check\",\n \"cash\",\n \"bank_transfer\",\n \"digital_wallet\",\n] as const;\n\nexport type PaymentMethod = (typeof PAYMENT_METHOD)[number];\n\nexport type PaymentStatus = \"finalized\" | \"voided\";\n\nexport type PaymentSnapshot = {\n payment_id: UUID;\n invoice_id: UUID;\n payment_amount: string;\n payment_date: string;\n payment_method: PaymentMethod;\n check_number: string | null;\n is_admin_reviewed: IntBool;\n company_id: number;\n short_invoice_id: string;\n payment_status: PaymentStatus;\n occurred_at_ms: string;\n};\n","export const exceedsTwoDecimals = (raw: string) => {\n const s = String(raw ?? \"\").replace(/[,\\s]/g, \"\");\n const dot = s.indexOf(\".\");\n if (dot === -1) return false;\n const after = s.slice(dot + 1);\n const digitsAfter = (after.match(/\\d/g) ?? []).length;\n return digitsAfter > 2;\n};\n","// \"Today\" in the user's LOCAL timezone as YMD\nexport function todayLocalYmd(): string {\n const now = new Date();\n const y = now.getFullYear();\n const m = String(now.getMonth() + 1).padStart(2, \"0\");\n const d = String(now.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${d}`;\n}\n\n// Add days in LOCAL time (no drift)\nexport function addDaysLocalYmd(ymd: string, days: number): string {\n const dt = localDateFromYmd(ymd);\n dt.setDate(dt.getDate() + days);\n return ymdFromLocalDate(dt);\n}\n\nexport function formatYmdLong(ymd: string, locale = \"en-US\"): string {\n const { y, m, d } = parseYmd(ymd);\n const utcDate = new Date(Date.UTC(y, m - 1, d)); // 00:00Z\n return new Intl.DateTimeFormat(locale, {\n dateStyle: \"long\",\n timeZone: \"UTC\",\n }).format(utcDate);\n}\n\nexport function localDateFromYmd(ymd: string): Date {\n const { y, m, d } = parseYmd(ymd);\n return new Date(y, m - 1, d); // LOCAL midnight\n}\n\nexport function ymdFromLocalDate(dt: Date): string {\n const y = dt.getFullYear();\n const m = String(dt.getMonth() + 1).padStart(2, \"0\");\n const d = String(dt.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${d}`;\n}\n\nfunction parseYmd(ymd: string): { y: number; m: number; d: number } {\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(ymd);\n if (!m) throw new Error(\"Bad YMD\");\n return { y: Number(m[1]), m: Number(m[2]), d: Number(m[3]) };\n}\n","import type { FieldError, FieldErrorsImpl, Merge } from \"react-hook-form\";\n\ntype RHFError =\n | string\n | FieldError\n | Merge<FieldError, FieldErrorsImpl<any>>\n | undefined;\n\nexport const getErrorMessage = (err: RHFError): string | undefined => {\n if (!err) return undefined;\n if (typeof err === \"string\") return err;\n // FieldError has .message (string | undefined)\n const msg = (err as FieldError).message as string | undefined;\n return typeof msg === \"string\" ? msg : undefined;\n};\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../utils/utils\";\nimport { YmdDateSchema } from \"../invoices/invoices_schemas\";\nimport { PosInvoiceType, POS_INVOICE_TYPE } from \"./point_of_sales_types\";\n\nconst HN_INVOICE_REGEX = /^\\d{3}-\\d{3}-\\d{2}-\\d{8}$/;\n\nconst InvoiceNumberSchema = z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .string()\n .min(19, \"Must be in format NNN-NNN-NN-NNNNNNNN (3-3-2-8)\")\n .max(19, \"Must be in format NNN-NNN-NN-NNNNNNNN (3-3-2-8)\")\n .regex(HN_INVOICE_REGEX, {\n error: \"Must be in format NNN-NNN-NN-NNNNNNNN (3-3-2-8)\",\n })\n );\n\nexport const PointOfSalesSchema = z\n .strictObject({\n cai: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .string()\n .min(1, \"CAI is required\")\n .max(50, \"CAI must be at most 50 characters.\")\n ),\n\n pos_invoice_type: z.enum(\n POS_INVOICE_TYPE,\n \"Please select an invoice / document type.\"\n ),\n\n invoice_number_start_range: InvoiceNumberSchema,\n invoice_number_end_range: InvoiceNumberSchema,\n next_invoice_number: InvoiceNumberSchema,\n\n issuance_date: YmdDateSchema,\n issuance_deadline: YmdDateSchema,\n })\n .superRefine(\n (\n {\n issuance_date,\n issuance_deadline,\n invoice_number_start_range: start,\n invoice_number_end_range: end,\n next_invoice_number: next,\n },\n\n ctx\n ) => {\n if (issuance_deadline < issuance_date) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Issuance deadline can't be earlier than the issuance date.\",\n path: [\"issuance_deadline\"],\n });\n }\n\n const prefix = (s: string) => s.slice(0, 10); // \"NNN-NNN-NN\"\n\n if (prefix(start) !== prefix(end)) {\n ctx.addIssue({\n code: \"custom\",\n message:\n \"Start and end invoice numbers must share the same NNN-NNN-NN prefix.\",\n path: [\"invoice_number_end_range\"],\n });\n }\n\n if (prefix(start) !== prefix(next)) {\n ctx.addIssue({\n code: \"custom\",\n message:\n \"Start and next invoice numbers must share the same NNN-NNN-NN prefix.\",\n path: [\"next_invoice_number\"],\n });\n }\n\n if (!(next >= start && next <= end)) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Next invoice number must be within the authorized range.\",\n path: [\"next_invoice_number\"],\n });\n }\n\n if (end < start) {\n ctx.addIssue({\n code: \"custom\",\n message:\n \"End invoice number must be greater than or equal to start invoice number.\",\n path: [\"invoice_number_end_range\"],\n });\n }\n }\n );\n","export type MappedPointOfSales = {\n point_of_sales_id: number;\n cai: string;\n pos_invoice_type: PosInvoiceType;\n invoice_number_start_range: string;\n invoice_number_end_range: string;\n next_invoice_number: string;\n issuance_date: string;\n issuance_deadline: string;\n};\n\nexport const POS_INVOICE_TYPE = [\"sales\", \"credit\"] as const;\n\nexport type PosInvoiceType = (typeof POS_INVOICE_TYPE)[number];\n"],"mappings":"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","names":["fromString","fromNumber","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","YmdDateSchema","BaseInvoice","LineItemBase","SalesItem","CreditItem","PurchaseItem","SalesInvoiceSchema","CreditInvoiceSchema","PurchaseInvoiceSchema","AnyInvoiceSchema","import_zod","import_zod","import_zod"]}
package/dist/index.d.cts CHANGED
@@ -473,6 +473,7 @@ declare function makeInvoiceSchemas(t: SchemaT): {
473
473
  }, z.core.$strip>>;
474
474
  }, z.core.$strip>], "invoice_type">;
475
475
  };
476
+ type InvoiceSchemas = ReturnType<typeof makeInvoiceSchemas>;
476
477
 
477
478
  declare const CREATED_LOCATION: readonly ["web", "mobile"];
478
479
  type CreatedLocation = (typeof CREATED_LOCATION)[number];
@@ -929,4 +930,4 @@ type MappedPointOfSales = {
929
930
  declare const POS_INVOICE_TYPE: readonly ["sales", "credit"];
930
931
  type PosInvoiceType = (typeof POS_INVOICE_TYPE)[number];
931
932
 
932
- export { type AnyInvoiceOut, AnyInvoiceSchema, type AppLanguage, type AuditEventsSnapshot, COMPANY_LANGUAGES, CREDIT_TYPE, CompanyFormSchema, type CompanyLanguages, type CompanySnapshot, type CountryTaxRuleSnapshot, type CreatedLocation, CreditApplicationSchema, type CreditApplicationSnapshot, type CreditApplicationStatus, type CreditInvoice, CreditInvoiceSchema, type CreditType, type CustomerFilter, CustomerFormSchema, type CustomerSnapshot, type DriverCustomerSnapshot, type DriverSettingSnapshot, type EntityAction, type EntityType, INVOICE_STATUS, INVOICE_TYPE, ISO_COUNTRY_CODES, type InventoryBalanceSnapshot, type InventoryLocationSnapshot, type InventorySystem, type InvoiceFilter, type InvoiceItemResponse, type InvoiceItemSnapshot, type InvoiceItemStatus, type InvoiceSnapshot, type InvoiceSnapshotMobile, type InvoiceStatus, type InvoiceType, type IsoCountryCode, type IsoCurrencyCode, LoginFormSchema, type MappedCustomers, type MappedInvoiceItem, type MappedPointOfSales, type MappedVendors, PAYMENT_METHOD, POS_INVOICE_TYPE, type PaymentFilter, PaymentFormSchema, type PaymentMethod, type PaymentSnapshot, type PaymentStatus, PointOfSalesSchema, type PosInvoiceType, ProductFormSchema, type ProductSnapshot, type ProductType, type PurchaseInvoice, PurchaseInvoiceSchema, RegisterFormSchema, type SalesInvoice, SalesInvoiceSchema, type SchemaT, type ServerSyncIds, type ServerSyncLogIds, USER_ROLES, type UUID, type UserRole, type UsersSnapshot, type WarehouseSnapshot, type WeightUnit, YmdDateSchema, addDaysLocalYmd, countryToCurrency, currencyToLocale, exceedsTwoDecimals, formatMoneyCurrency, formatYmdLong, getCurrencyFromCountry, getErrorMessage, handleZodCurrency, localDateFromYmd, makeInvoiceSchemas, mapInvoiceProducts, normalizeSpaces, removeAllWhitespace, removeDashesAndPlusSign, roundWithPrecision, todayLocalYmd, transformEmptyStringToUndefined, ymdFromLocalDate };
933
+ export { type AnyInvoiceOut, AnyInvoiceSchema, type AppLanguage, type AuditEventsSnapshot, COMPANY_LANGUAGES, CREDIT_TYPE, CompanyFormSchema, type CompanyLanguages, type CompanySnapshot, type CountryTaxRuleSnapshot, type CreatedLocation, CreditApplicationSchema, type CreditApplicationSnapshot, type CreditApplicationStatus, type CreditInvoice, CreditInvoiceSchema, type CreditType, type CustomerFilter, CustomerFormSchema, type CustomerSnapshot, type DriverCustomerSnapshot, type DriverSettingSnapshot, type EntityAction, type EntityType, INVOICE_STATUS, INVOICE_TYPE, ISO_COUNTRY_CODES, type InventoryBalanceSnapshot, type InventoryLocationSnapshot, type InventorySystem, type InvoiceFilter, type InvoiceItemResponse, type InvoiceItemSnapshot, type InvoiceItemStatus, type InvoiceSchemas, type InvoiceSnapshot, type InvoiceSnapshotMobile, type InvoiceStatus, type InvoiceType, type IsoCountryCode, type IsoCurrencyCode, LoginFormSchema, type MappedCustomers, type MappedInvoiceItem, type MappedPointOfSales, type MappedVendors, PAYMENT_METHOD, POS_INVOICE_TYPE, type PaymentFilter, PaymentFormSchema, type PaymentMethod, type PaymentSnapshot, type PaymentStatus, PointOfSalesSchema, type PosInvoiceType, ProductFormSchema, type ProductSnapshot, type ProductType, type PurchaseInvoice, PurchaseInvoiceSchema, RegisterFormSchema, type SalesInvoice, SalesInvoiceSchema, type SchemaT, type ServerSyncIds, type ServerSyncLogIds, USER_ROLES, type UUID, type UserRole, type UsersSnapshot, type WarehouseSnapshot, type WeightUnit, YmdDateSchema, addDaysLocalYmd, countryToCurrency, currencyToLocale, exceedsTwoDecimals, formatMoneyCurrency, formatYmdLong, getCurrencyFromCountry, getErrorMessage, handleZodCurrency, localDateFromYmd, makeInvoiceSchemas, mapInvoiceProducts, normalizeSpaces, removeAllWhitespace, removeDashesAndPlusSign, roundWithPrecision, todayLocalYmd, transformEmptyStringToUndefined, ymdFromLocalDate };
package/dist/index.d.ts CHANGED
@@ -473,6 +473,7 @@ declare function makeInvoiceSchemas(t: SchemaT): {
473
473
  }, z.core.$strip>>;
474
474
  }, z.core.$strip>], "invoice_type">;
475
475
  };
476
+ type InvoiceSchemas = ReturnType<typeof makeInvoiceSchemas>;
476
477
 
477
478
  declare const CREATED_LOCATION: readonly ["web", "mobile"];
478
479
  type CreatedLocation = (typeof CREATED_LOCATION)[number];
@@ -929,4 +930,4 @@ type MappedPointOfSales = {
929
930
  declare const POS_INVOICE_TYPE: readonly ["sales", "credit"];
930
931
  type PosInvoiceType = (typeof POS_INVOICE_TYPE)[number];
931
932
 
932
- export { type AnyInvoiceOut, AnyInvoiceSchema, type AppLanguage, type AuditEventsSnapshot, COMPANY_LANGUAGES, CREDIT_TYPE, CompanyFormSchema, type CompanyLanguages, type CompanySnapshot, type CountryTaxRuleSnapshot, type CreatedLocation, CreditApplicationSchema, type CreditApplicationSnapshot, type CreditApplicationStatus, type CreditInvoice, CreditInvoiceSchema, type CreditType, type CustomerFilter, CustomerFormSchema, type CustomerSnapshot, type DriverCustomerSnapshot, type DriverSettingSnapshot, type EntityAction, type EntityType, INVOICE_STATUS, INVOICE_TYPE, ISO_COUNTRY_CODES, type InventoryBalanceSnapshot, type InventoryLocationSnapshot, type InventorySystem, type InvoiceFilter, type InvoiceItemResponse, type InvoiceItemSnapshot, type InvoiceItemStatus, type InvoiceSnapshot, type InvoiceSnapshotMobile, type InvoiceStatus, type InvoiceType, type IsoCountryCode, type IsoCurrencyCode, LoginFormSchema, type MappedCustomers, type MappedInvoiceItem, type MappedPointOfSales, type MappedVendors, PAYMENT_METHOD, POS_INVOICE_TYPE, type PaymentFilter, PaymentFormSchema, type PaymentMethod, type PaymentSnapshot, type PaymentStatus, PointOfSalesSchema, type PosInvoiceType, ProductFormSchema, type ProductSnapshot, type ProductType, type PurchaseInvoice, PurchaseInvoiceSchema, RegisterFormSchema, type SalesInvoice, SalesInvoiceSchema, type SchemaT, type ServerSyncIds, type ServerSyncLogIds, USER_ROLES, type UUID, type UserRole, type UsersSnapshot, type WarehouseSnapshot, type WeightUnit, YmdDateSchema, addDaysLocalYmd, countryToCurrency, currencyToLocale, exceedsTwoDecimals, formatMoneyCurrency, formatYmdLong, getCurrencyFromCountry, getErrorMessage, handleZodCurrency, localDateFromYmd, makeInvoiceSchemas, mapInvoiceProducts, normalizeSpaces, removeAllWhitespace, removeDashesAndPlusSign, roundWithPrecision, todayLocalYmd, transformEmptyStringToUndefined, ymdFromLocalDate };
933
+ export { type AnyInvoiceOut, AnyInvoiceSchema, type AppLanguage, type AuditEventsSnapshot, COMPANY_LANGUAGES, CREDIT_TYPE, CompanyFormSchema, type CompanyLanguages, type CompanySnapshot, type CountryTaxRuleSnapshot, type CreatedLocation, CreditApplicationSchema, type CreditApplicationSnapshot, type CreditApplicationStatus, type CreditInvoice, CreditInvoiceSchema, type CreditType, type CustomerFilter, CustomerFormSchema, type CustomerSnapshot, type DriverCustomerSnapshot, type DriverSettingSnapshot, type EntityAction, type EntityType, INVOICE_STATUS, INVOICE_TYPE, ISO_COUNTRY_CODES, type InventoryBalanceSnapshot, type InventoryLocationSnapshot, type InventorySystem, type InvoiceFilter, type InvoiceItemResponse, type InvoiceItemSnapshot, type InvoiceItemStatus, type InvoiceSchemas, type InvoiceSnapshot, type InvoiceSnapshotMobile, type InvoiceStatus, type InvoiceType, type IsoCountryCode, type IsoCurrencyCode, LoginFormSchema, type MappedCustomers, type MappedInvoiceItem, type MappedPointOfSales, type MappedVendors, PAYMENT_METHOD, POS_INVOICE_TYPE, type PaymentFilter, PaymentFormSchema, type PaymentMethod, type PaymentSnapshot, type PaymentStatus, PointOfSalesSchema, type PosInvoiceType, ProductFormSchema, type ProductSnapshot, type ProductType, type PurchaseInvoice, PurchaseInvoiceSchema, RegisterFormSchema, type SalesInvoice, SalesInvoiceSchema, type SchemaT, type ServerSyncIds, type ServerSyncLogIds, USER_ROLES, type UUID, type UserRole, type UsersSnapshot, type WarehouseSnapshot, type WeightUnit, YmdDateSchema, addDaysLocalYmd, countryToCurrency, currencyToLocale, exceedsTwoDecimals, formatMoneyCurrency, formatYmdLong, getCurrencyFromCountry, getErrorMessage, handleZodCurrency, localDateFromYmd, makeInvoiceSchemas, mapInvoiceProducts, normalizeSpaces, removeAllWhitespace, removeDashesAndPlusSign, roundWithPrecision, todayLocalYmd, transformEmptyStringToUndefined, ymdFromLocalDate };
package/dist/index.js CHANGED
@@ -27,43 +27,25 @@ function handleZodCurrency(minAmount, maxAmount, t) {
27
27
  });
28
28
  }
29
29
  const fromString = z.string({
30
- error: t(
31
- "validation_errors.create_invoice_validation.enter_a_valid_number"
32
- )
30
+ error: t("enter_a_valid_number")
33
31
  }).refine((s) => s.trim().length > 0, {
34
- error: t(
35
- "validation_errors.create_invoice_validation.enter_a_valid_number"
36
- )
32
+ error: t("enter_a_valid_number")
37
33
  }).transform((s) => s.replace(/[,\s]/g, "")).refine((s) => s !== "" && !Number.isNaN(Number(s)), {
38
- error: t(
39
- "validation_errors.create_invoice_validation.enter_a_valid_number"
40
- )
34
+ error: t("enter_a_valid_number")
41
35
  }).refine((s) => Number.isFinite(Number(s)), {
42
- error: t(
43
- "validation_errors.create_invoice_validation.enter_a_valid_number"
44
- )
36
+ error: t("enter_a_valid_number")
45
37
  }).refine((s) => Number(s) >= 0, {
46
- error: t(
47
- "validation_errors.create_invoice_validation.enter_a_positive_number"
48
- )
38
+ error: t("enter_a_positive_number")
49
39
  }).transform((s) => Number(s));
50
40
  const fromNumber = z.number().refine((n) => Number.isFinite(n), {
51
- error: t(
52
- "validation_errors.create_invoice_validation.enter_a_valid_number"
53
- )
41
+ error: t("enter_a_valid_number")
54
42
  }).refine((n) => n >= 0, {
55
- error: t(
56
- "validation_errors.create_invoice_validation.enter_a_positive_number"
57
- )
43
+ error: t("enter_a_positive_number")
58
44
  });
59
45
  return z.union([fromString, fromNumber]).transform((n) => roundWithPrecision(n, 2)).refine((n) => n >= minAmount, {
60
- error: `${t(
61
- "validation_errors.create_invoice_validation.must_be_at_least"
62
- )} ${minAmount}`
46
+ error: `${t("must_be_at_least")} ${minAmount}`
63
47
  }).refine((n) => n <= maxAmount, {
64
- error: `${t(
65
- "validation_errors.create_invoice_validation.exceeds_allowed_limit"
66
- )} ${maxAmount}`
48
+ error: `${t("exceeds_allowed_limit")} ${maxAmount}`
67
49
  });
68
50
  }
69
51
  var transformEmptyStringToUndefined = (s) => s.trim() === "" ? void 0 : s;
@@ -311,9 +293,7 @@ function makeInvoiceSchemas(t) {
311
293
  const YmdDateSchema2 = z7.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Use YYYY-MM-DD");
312
294
  const BaseInvoice2 = z7.object({
313
295
  invoice_type: z7.enum(INVOICE_TYPE, {
314
- error: t(
315
- "validation_errors.create_invoice_validation.invoice_type_not_found"
316
- )
296
+ error: t("invoice_type_not_found")
317
297
  }),
318
298
  invoice_date: YmdDateSchema2,
319
299
  due_date: YmdDateSchema2,
@@ -333,7 +313,7 @@ function makeInvoiceSchemas(t) {
333
313
  const LineItemBase2 = z7.object({
334
314
  invoice_id: z7.uuid().optional(),
335
315
  product_id: z7.uuid({
336
- error: t("validation_errors.create_invoice_validation.select_product")
316
+ error: t("select_product")
337
317
  }),
338
318
  product_name: z7.string().optional(),
339
319
  product_description: z7.string().optional(),
@@ -351,9 +331,7 @@ function makeInvoiceSchemas(t) {
351
331
  const CreditItem2 = LineItemBase2.safeExtend({
352
332
  price: handleZodCurrency(0, 99999.99),
353
333
  credit_type: z7.enum(CREDIT_TYPE, {
354
- error: t(
355
- "validation_errors.create_invoice_validation.select_credit_type"
356
- )
334
+ error: t("select_credit_type")
357
335
  })
358
336
  });
359
337
  const PurchaseItem2 = LineItemBase2.safeExtend({
@@ -363,32 +341,23 @@ function makeInvoiceSchemas(t) {
363
341
  const SalesInvoiceSchema2 = BaseInvoice2.safeExtend({
364
342
  invoice_type: z7.literal("sales"),
365
343
  party_id: z7.uuid({
366
- error: t("validation_errors.create_invoice_validation.select_customer")
344
+ error: t("select_customer")
367
345
  }),
368
- invoice_items: z7.array(SalesItem2).min(
369
- 1,
370
- t("validation_errors.create_invoice_validation.add_one_invoice_item")
371
- )
346
+ invoice_items: z7.array(SalesItem2).min(1, t("add_one_invoice_item"))
372
347
  });
373
348
  const CreditInvoiceSchema2 = BaseInvoice2.safeExtend({
374
349
  invoice_type: z7.literal("credit"),
375
350
  party_id: z7.uuid({
376
- error: t("validation_errors.create_invoice_validation.select_customer")
351
+ error: t("select_customer")
377
352
  }),
378
- invoice_items: z7.array(CreditItem2).min(
379
- 1,
380
- t("validation_errors.create_invoice_validation.add_one_invoice_item")
381
- )
353
+ invoice_items: z7.array(CreditItem2).min(1, t("add_one_invoice_item"))
382
354
  });
383
355
  const PurchaseInvoiceSchema2 = BaseInvoice2.safeExtend({
384
356
  invoice_type: z7.literal("purchase"),
385
357
  party_id: z7.uuid({
386
- error: t("validation_errors.create_invoice_validation.select_vendor")
358
+ error: t("select_vendor")
387
359
  }),
388
- invoice_items: z7.array(PurchaseItem2).min(
389
- 1,
390
- t("validation_errors.create_invoice_validation.add_one_invoice_item")
391
- )
360
+ invoice_items: z7.array(PurchaseItem2).min(1, t("add_one_invoice_item"))
392
361
  });
393
362
  const AnyInvoiceSchema2 = z7.discriminatedUnion("invoice_type", [
394
363
  SalesInvoiceSchema2,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/money_types.ts","../src/utils/utils.ts","../src/types/shared_types.ts","../src/domains/auth/login/login_schemas.ts","../src/domains/companies/companies_schemas.ts","../src/domains/companies/companies_types.ts","../src/domains/customers/customer_schemas.ts","../src/domains/products/product_schemas.ts","../src/domains/invoices/invoices_schemas.ts","../src/domains/invoices/invoices_types.ts","../src/domains/invoice_items/invoice_items_mappers.ts","../src/domains/credit_applications/credit_applications_schemas.ts","../src/domains/payments/payments_schemas.ts","../src/domains/payments/payments_types.ts","../src/utils/money_utils.ts","../src/utils/date_utils.ts","../src/utils/errors_utils.ts","../src/domains/point_of_sales/point_of_sales_schemas.ts","../src/domains/point_of_sales/point_of_sales_types.ts"],"sourcesContent":["import { IsoCountryCode } from \"../domains/companies/companies_types\";\n\nexport type IsoCurrencyCode = \"USD\" | \"HNL\";\ntype Locale = \"en-US\" | \"es-HN\";\n\nexport const countryToCurrency: Record<IsoCountryCode, IsoCurrencyCode> = {\n US: \"USD\",\n HN: \"HNL\",\n};\n\nexport const currencyToLocale: Record<IsoCurrencyCode, Locale> = {\n USD: \"en-US\",\n HNL: \"es-HN\",\n};\n","import * as GlobalTypes from \"./types\";\nimport { IsoCountryCode } from \"../domains/companies/companies_types\";\nimport {\n IsoCurrencyCode,\n countryToCurrency,\n currencyToLocale,\n} from \"../types/money_types\";\n\nimport { z } from \"zod\";\nimport { SchemaT } from \"../domains/invoices/invoices_types\";\n\n/**\n * Validates zod currency with precision.\n *\n *\n * @param minAmount\n * @param maxAmount\n * @returns\n */\nexport function handleZodCurrency(\n minAmount: number,\n maxAmount: number,\n t?: SchemaT,\n) {\n if (!t) {\n const fromString = z\n .string({\n error: \"Enter a valid number\",\n })\n .refine((s) => s.trim().length > 0, { error: \"Enter a valid number\" })\n .transform((s) => s.replace(/[,\\s]/g, \"\"))\n .refine((s) => s !== \"\" && !Number.isNaN(Number(s)), {\n error: \"Enter a valid number\",\n })\n .refine((s) => Number.isFinite(Number(s)), {\n error: \"Enter a valid number\",\n })\n .refine((s) => Number(s) >= 0, { error: \"Enter a positive number\" })\n .transform((s) => Number(s));\n\n const fromNumber = z\n .number()\n .refine((n) => Number.isFinite(n), { error: \"Enter a valid number\" })\n .refine((n) => n >= 0, { error: \"Enter a positive number\" });\n\n return z\n .union([fromString, fromNumber])\n .transform((n) => roundWithPrecision(n, 2))\n .refine((n) => n >= minAmount, {\n error: `Must be at least ${minAmount}`,\n })\n .refine((n) => n <= maxAmount, {\n error: `Exceeds allowed limit ${maxAmount}`,\n });\n }\n\n const fromString = z\n .string({\n error: t(\n \"validation_errors.create_invoice_validation.enter_a_valid_number\",\n ),\n })\n .refine((s) => s.trim().length > 0, {\n error: t(\n \"validation_errors.create_invoice_validation.enter_a_valid_number\",\n ),\n })\n .transform((s) => s.replace(/[,\\s]/g, \"\"))\n .refine((s) => s !== \"\" && !Number.isNaN(Number(s)), {\n error: t(\n \"validation_errors.create_invoice_validation.enter_a_valid_number\",\n ),\n })\n .refine((s) => Number.isFinite(Number(s)), {\n error: t(\n \"validation_errors.create_invoice_validation.enter_a_valid_number\",\n ),\n })\n .refine((s) => Number(s) >= 0, {\n error: t(\n \"validation_errors.create_invoice_validation.enter_a_positive_number\",\n ),\n })\n .transform((s) => Number(s));\n\n const fromNumber = z\n .number()\n .refine((n) => Number.isFinite(n), {\n error: t(\n \"validation_errors.create_invoice_validation.enter_a_valid_number\",\n ),\n })\n .refine((n) => n >= 0, {\n error: t(\n \"validation_errors.create_invoice_validation.enter_a_positive_number\",\n ),\n });\n\n return z\n .union([fromString, fromNumber])\n .transform((n) => roundWithPrecision(n, 2))\n .refine((n) => n >= minAmount, {\n error: `${t(\n \"validation_errors.create_invoice_validation.must_be_at_least\",\n )} ${minAmount}`,\n })\n .refine((n) => n <= maxAmount, {\n error: `${t(\n \"validation_errors.create_invoice_validation.exceeds_allowed_limit\",\n )} ${maxAmount}`,\n });\n}\n\n/**\n * Trims any leading or trailing spaces\n * Transforms empty strings into undefined.\n *\n * @param s\n * @returns\n */\nexport const transformEmptyStringToUndefined = (s: string) =>\n s.trim() === \"\" ? undefined : s;\n\n/**\n * - Collapses any run of whitespace in a string (spaces, tabs, newlines, nbspb, and other weird unicode spaces etc.)\n * into a single ASCII space.\n * - Trims leading and trailing whitespace.\n * \" Jared \\n Gomez \\t Driver\\t \" -> \"Jared Gomez Driver\"\n *\n * @param s\n * @returns\n */\nexport const normalizeSpaces = (s: string) => whitespace(s, \"normalize\");\n\n/**\n * Removes all whitespace from a string\n * @param s\n * @returns\n */\nexport const removeAllWhitespace = (s: string) => whitespace(s, \"remove\");\n\nconst whitespace = (s: string, mode: GlobalTypes.WhitespaceMode) => {\n if (mode === \"remove\") {\n return s.replace(/\\s+/g, \"\");\n }\n\n return s.replace(/\\s+/g, \" \").trim();\n};\n\n/**\n * Removes all dashes and + signs from a string\n * +1-305-555-0123 -> \"13055550123\"\n * 305-555-0123 -> \"3055550123\"\n *\n * @param s\n * @returns\n */\nexport const removeDashesAndPlusSign = (s: string): string =>\n s.replace(/[+-]/g, \"\");\n\n/**\n * Rounds a number to a certain precision.\n * Contract:\n * 1. Number must be finite and non negative.\n * 2. Precision must be finite nonnegative and an integer.\n * 3. Precision must be <= Max precision\n * 4. Returns a number >= 0\n * Default is round half up.\n *\n * @param num\n * @param precision\n * @param opts\n * @returns\n */\nexport function roundWithPrecision(\n num: number,\n precision: number,\n opts?: GlobalTypes.ToFixedOptions,\n): number {\n const MAX_PRECISION = 2;\n const { roundType = \"half_up\" } = opts ?? {};\n\n if (!Number.isFinite(num) || num < 0) {\n throw new RangeError(\"Number must be finite and greater than 0.\");\n }\n\n if (\n !Number.isFinite(precision) ||\n !Number.isInteger(precision) ||\n precision < 1\n ) {\n throw new RangeError(\"Precision must be a finite integer greater than 0.\");\n }\n\n if (precision > MAX_PRECISION) {\n throw new RangeError(\"Max precision allowed is 2.\");\n }\n\n return Number(\n (+(Math.round(+(num + \"e\" + precision)) + \"e\" + -precision)).toFixed(\n precision,\n ),\n );\n}\n\nexport function getCurrencyFromCountry(\n country: IsoCountryCode,\n): IsoCurrencyCode {\n return countryToCurrency[country];\n}\n\nexport function formatMoneyCurrency(value: number, currency: IsoCurrencyCode) {\n const locale =\n currency in currencyToLocale ? currencyToLocale[currency] : \"en-US\";\n\n const formatted = new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency: currency,\n }).format(value);\n\n return sanitizeSpaces(formatted);\n}\n\nfunction sanitizeSpaces(str: string): string {\n return str\n .replace(/\\u00A0/g, \" \")\n .replace(/\\u202F/g, \" \")\n .replace(/[^\\x20-\\x7E]/g, \"\");\n}\n","import { z } from \"zod\";\n\nexport const CREATED_LOCATION = [\"web\", \"mobile\"] as const;\n\nexport type CreatedLocation = (typeof CREATED_LOCATION)[number];\n\nexport type IntBool = 0 | 1;\n\nexport const uuidSchema = z.uuid();\nexport type UUID = z.infer<typeof uuidSchema>;\n\nexport type status = \"active\" | \"inactive\";\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../../utils/utils\";\n\nexport const LoginFormSchema = z.strictObject({\n user_email: z\n .string({ error: \"Email required\" })\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .email()\n .max(254, \"Customer email must be at most 254 characters.\")\n .transform((email) => email.toLowerCase())\n ),\n password: z\n .string({ error: \"Password required\" })\n .min(1, { error: \"Password required\" }),\n});\n","import { z } from \"zod\";\nimport { COMPANY_LANGUAGES, ISO_COUNTRY_CODES } from \"./companies_types\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nconst iso_country_code = z.enum(ISO_COUNTRY_CODES, {\n error: \"Country code not supported.\",\n});\n\nexport const RegisterFormSchema = z.strictObject({\n companyData: z.strictObject({\n company_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Company name is required\")\n .max(50, \"Company name must be at most 50 characters.\")\n ),\n company_address: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Company address is required\")\n .max(100, \"Company address must be at most 100 characters.\")\n ),\n company_phone_number: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .transform(GlobalUtils.removeDashesAndPlusSign)\n .refine((s) => /^\\d{4,15}$/.test(s), {\n error: \"Phone number required and must be from 4 to 15 digits.\",\n }),\n iso_country_code: z\n .string({ error: \"Please select a country.\" })\n .transform(GlobalUtils.removeAllWhitespace)\n .transform((s) => s.toUpperCase())\n .pipe(iso_country_code),\n }),\n adminUserData: z.strictObject({\n user_first_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"First name is required\")\n .max(50, \"First name must be at most 50 characters.\")\n ),\n user_last_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Last name is required\")\n .max(50, \"Last name must be at most 50 characters.\")\n ),\n user_email: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .email()\n .max(254, \"Customer email must be at most 254 characters.\")\n .transform((email) => email.toLowerCase())\n ),\n password: z\n .string()\n .min(8, \"Password must be at least 8 characters\")\n .max(25, \"Password must be at most 25 characters\")\n .regex(/[A-Z]/, \"Password must contain at least one uppercase letter\")\n .regex(/[a-z]/, \"Password must contain at least one lowercase letter\")\n .regex(/\\d/, \"Password must contain at least one number\")\n .regex(\n /[@$!%*?&#^_+=-]/,\n \"Password must contain at least one special character\"\n )\n .regex(/^\\S*$/, \"Password cannot contain spaces or other whitespace.\"),\n }),\n});\n\nexport const CompanyFormSchema =\n RegisterFormSchema.shape.companyData.safeExtend({\n company_email: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .email(\"Invalid company email.\")\n .max(254, \"Company email must be at most 254 characters.\")\n .transform((email) => email.toLowerCase())\n ),\n rtn: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(z.string().max(100, \"RTN must be at most 100 characters.\"))\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n web_language: z.enum(COMPANY_LANGUAGES, {\n error: \"Please select a web portal language.\",\n }),\n });\n","export const ISO_COUNTRY_CODES = [\"US\", \"HN\"] as const;\n\nexport type IsoCountryCode = (typeof ISO_COUNTRY_CODES)[number];\n\nexport const USER_ROLES = [\"admin\", \"driver\"] as const;\n\nexport type UserRole = (typeof USER_ROLES)[number];\n\nexport type InventorySystem = \"warehouse_only\" | \"dsd\";\n\nexport type CompanySnapshot = {\n company_id: number;\n company_name: string;\n company_address: string;\n company_phone_number: string;\n company_email: string;\n inventory_system: InventorySystem;\n iso_country_code: IsoCountryCode;\n rtn: string | null;\n};\n\nexport const COMPANY_LANGUAGES = [\"es\", \"en\"] as const;\n\nexport type CompanyLanguages = (typeof COMPANY_LANGUAGES)[number];\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nexport const CustomerFormSchema = z.strictObject({\n customer_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Customer name is required\")\n .max(50, \"Customer name must be at most 50 characters.\")\n ),\n\n customer_address: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z.string().max(100, \"Customer address must be at most 100 characters.\")\n )\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n customer_phone_number: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .transform(GlobalUtils.removeDashesAndPlusSign)\n .refine((s) => s === \"\" || /^\\d{4,15}$/.test(s), {\n error: \"Phone number must be from 4 to 15 digits.\",\n })\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n customer_email_address: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .pipe(\n z\n .email()\n .max(254, \"Customer email must be at most 254 characters.\")\n .transform((email) => email.toLowerCase())\n .optional()\n )\n .optional(),\n});\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nexport const ProductFormSchema = z\n .strictObject({\n product_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Product name is required\")\n .max(50, \"Product name must be at most 50 characters.\")\n ),\n\n product_description: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .max(100, \"Product desription must be at most 100 characters.\")\n )\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n product_sku: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(z.string().max(30, \"Product SKU must be at most 30 characters.\"))\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n product_upc: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .refine((s) => s === \"\" || /^\\d{12}$/.test(s), {\n error: \"UPC must be exactly 12 digits\",\n })\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n country_tax_rule_id: z.number().optional(),\n\n product_gtin_14: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .refine((s) => s === \"\" || /^\\d{14}$/.test(s), {\n error: \"GTIN14 must be exactly 14 digits\",\n })\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n product_type: z.enum([\"unit\", \"weight\", \"case\"], {\n error: \"Product type must be unit, weight, or case.\",\n }),\n\n weight_unit: z.preprocess((v) => {\n if (v === \"\") return undefined;\n if (typeof v === \"string\") return v.trim().toLowerCase();\n return v;\n }, z.enum([\"kg\", \"lb\", \"g\", \"oz\"]).optional()),\n\n price: GlobalUtils.handleZodCurrency(0, 99_999.99),\n cost: GlobalUtils.handleZodCurrency(0, 99_999.99),\n })\n\n .superRefine((data, ctx) => {\n if (data.product_type === \"weight\" && !data.weight_unit) {\n ctx.addIssue({\n code: \"custom\",\n error: \"Weight unit is required.\",\n path: [\"weight_unit\"],\n });\n }\n\n if (\n data.product_type !== \"weight\" &&\n typeof data.weight_unit !== \"undefined\"\n ) {\n ctx.addIssue({\n code: \"custom\",\n error: \"Weight unit must be empty\",\n path: [\"weight_unit\"],\n });\n }\n });\n","import { z } from \"zod\";\nimport {\n CREDIT_TYPE,\n INVOICE_STATUS,\n INVOICE_TYPE,\n SchemaT,\n} from \"./invoices_types\";\nimport { handleZodCurrency } from \"../../utils/utils\";\n\nexport const YmdDateSchema = z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Use YYYY-MM-DD\");\n\nconst BaseInvoice = z\n .object({\n invoice_type: z.enum(INVOICE_TYPE, { error: \"Invoice type not found.\" }),\n invoice_date: YmdDateSchema,\n due_date: YmdDateSchema,\n tax_rate: z.number().default(0),\n tax_amount: z.number().default(0),\n warehouse_id: z.uuid().optional(),\n invoice_status: z.enum(INVOICE_STATUS).default(\"finalized\"),\n })\n .superRefine(({ invoice_date, due_date }, ctx) => {\n if (due_date < invoice_date) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Due date can't be earlier than the invoice date.\",\n path: [\"due_date\"],\n });\n }\n });\n\nconst LineItemBase = z.object({\n invoice_id: z.uuid().optional(),\n product_id: z.uuid({ error: \"Select a product\" }),\n product_name: z.string().optional(),\n product_description: z.string().optional(),\n product_type: z.enum([\"unit\", \"weight\", \"case\"]).optional(),\n product_upc: z.string().optional(),\n weight_unit: z.enum([\"kg\", \"lb\", \"g\", \"oz\"]).optional(),\n quantity: handleZodCurrency(0.01, 99_999.99),\n country_tax_rule_id: z.number().optional(),\n tax_percentage: z.number().optional(),\n});\n\nconst SalesItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.undefined(),\n});\n\nconst CreditItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.enum(CREDIT_TYPE, {\n error: \"Select a credit type\",\n }),\n});\n\nconst PurchaseItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.undefined(),\n});\n\nexport const SalesInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"sales\"),\n party_id: z.uuid({ message: \"Select a customer\" }),\n invoice_items: z.array(SalesItem).min(1, \"Add at least one invoice item\"),\n});\n\nexport const CreditInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"credit\"),\n party_id: z.uuid({ message: \"Select a customer\" }),\n invoice_items: z.array(CreditItem).min(1, \"Add at least one invoice item\"),\n});\n\nexport const PurchaseInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"purchase\"),\n party_id: z.uuid({ message: \"Select a vendor\" }),\n invoice_items: z.array(PurchaseItem).min(1, \"Add at least one invoice item\"),\n});\n\nexport const AnyInvoiceSchema = z.discriminatedUnion(\"invoice_type\", [\n SalesInvoiceSchema,\n PurchaseInvoiceSchema,\n CreditInvoiceSchema,\n]);\n\n///////////////////////////////////////////////////////////////////////\n//English / Spanish implementation\n\nexport function makeInvoiceSchemas(t: SchemaT) {\n const YmdDateSchema = z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Use YYYY-MM-DD\");\n\n const BaseInvoice = z\n .object({\n invoice_type: z.enum(INVOICE_TYPE, {\n error: t(\n \"validation_errors.create_invoice_validation.invoice_type_not_found\",\n ),\n }),\n invoice_date: YmdDateSchema,\n due_date: YmdDateSchema,\n tax_rate: z.number().default(0),\n tax_amount: z.number().default(0),\n warehouse_id: z.uuid().optional(),\n invoice_status: z.enum(INVOICE_STATUS).default(\"finalized\"),\n })\n .superRefine(({ invoice_date, due_date }, ctx) => {\n if (due_date < invoice_date) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Due date can't be earlier than the invoice date.\",\n path: [\"due_date\"],\n });\n }\n });\n\n const LineItemBase = z.object({\n invoice_id: z.uuid().optional(),\n product_id: z.uuid({\n error: t(\"validation_errors.create_invoice_validation.select_product\"),\n }),\n product_name: z.string().optional(),\n product_description: z.string().optional(),\n product_type: z.enum([\"unit\", \"weight\", \"case\"]).optional(),\n product_upc: z.string().optional(),\n weight_unit: z.enum([\"kg\", \"lb\", \"g\", \"oz\"]).optional(),\n quantity: handleZodCurrency(0.01, 99_999.99),\n country_tax_rule_id: z.number().optional(),\n tax_percentage: z.number().optional(),\n });\n\n const SalesItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.undefined(),\n });\n\n const CreditItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.enum(CREDIT_TYPE, {\n error: t(\n \"validation_errors.create_invoice_validation.select_credit_type\",\n ),\n }),\n });\n\n const PurchaseItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.undefined(),\n });\n\n const SalesInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"sales\"),\n party_id: z.uuid({\n error: t(\"validation_errors.create_invoice_validation.select_customer\"),\n }),\n invoice_items: z\n .array(SalesItem)\n .min(\n 1,\n t(\"validation_errors.create_invoice_validation.add_one_invoice_item\"),\n ),\n });\n\n const CreditInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"credit\"),\n party_id: z.uuid({\n error: t(\"validation_errors.create_invoice_validation.select_customer\"),\n }),\n invoice_items: z\n .array(CreditItem)\n .min(\n 1,\n t(\"validation_errors.create_invoice_validation.add_one_invoice_item\"),\n ),\n });\n\n const PurchaseInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"purchase\"),\n party_id: z.uuid({\n error: t(\"validation_errors.create_invoice_validation.select_vendor\"),\n }),\n invoice_items: z\n .array(PurchaseItem)\n .min(\n 1,\n t(\"validation_errors.create_invoice_validation.add_one_invoice_item\"),\n ),\n });\n\n const AnyInvoiceSchema = z.discriminatedUnion(\"invoice_type\", [\n SalesInvoiceSchema,\n PurchaseInvoiceSchema,\n CreditInvoiceSchema,\n ]);\n\n return {\n YmdDateSchema,\n SalesInvoiceSchema,\n CreditInvoiceSchema,\n PurchaseInvoiceSchema,\n AnyInvoiceSchema,\n };\n}\n","import { z } from \"zod\";\nimport * as InvoiceSchemas from \"./invoices_schemas\";\nimport { IntBool, UUID } from \"../../types/shared_types\";\n\nexport type SchemaT = (key: string, params?: Record<string, any>) => string;\n\nexport type SalesInvoice = z.infer<typeof InvoiceSchemas.SalesInvoiceSchema>;\nexport type CreditInvoice = z.infer<typeof InvoiceSchemas.CreditInvoiceSchema>;\nexport type PurchaseInvoice = z.infer<\n typeof InvoiceSchemas.PurchaseInvoiceSchema\n>;\nexport type AnyInvoiceOut = z.output<typeof InvoiceSchemas.AnyInvoiceSchema>;\n\nexport const INVOICE_TYPE = [\"sales\", \"credit\", \"purchase\"] as const;\n\nexport type InvoiceType = (typeof INVOICE_TYPE)[number];\n\nexport const INVOICE_STATUS = [\"finalized\", \"voided\"] as const;\n\nexport type InvoiceStatus = (typeof INVOICE_STATUS)[number];\n\nexport const CREDIT_TYPE = [\"dump\", \"return\"] as const;\n\nexport type CreditType = (typeof CREDIT_TYPE)[number];\n\nexport type InvoiceSnapshot = {\n invoice_id: UUID;\n invoice_type: InvoiceType;\n subtotal: string;\n tax_amount: string;\n total_amount: string;\n remaining_balance: string;\n due_date: string;\n tax_rate: string;\n is_admin_reviewed: IntBool;\n customer_id: UUID;\n company_id: number;\n short_invoice_id: string;\n invoice_date: string;\n invoice_status: InvoiceStatus;\n occurred_at_ms: string;\n cai: string | null;\n invoice_number_start_range: string | null;\n invoice_number_end_range: string | null;\n issuance_date: string | null;\n issuance_deadline: string | null;\n};\n\nexport type InvoiceSnapshotMobile = InvoiceSnapshot & {\n signature: string | null;\n};\n","import * as InvoiceItemsTypes from \"./invoice_items_types\";\n\nexport function mapInvoiceProducts(\n row: InvoiceItemsTypes.InvoiceItemResponse\n): InvoiceItemsTypes.MappedInvoiceItem {\n return {\n invoice_item_id: row.invoice_item_id,\n product_id: row.product_id,\n quantity: Number(row.quantity),\n price: Number(row.price),\n amount: Number(row.amount),\n credit_type: row.credit_type ?? undefined,\n product_name: row.product_name,\n product_description: row.product_description ?? undefined,\n product_type: row.product_type,\n weight_unit: row.weight_unit ?? undefined,\n product_upc: row.product_upc ?? undefined,\n rule_name: row.rule_name ?? undefined,\n tax_percentage:\n row.tax_percentage === null ? undefined : Number(row.tax_percentage),\n };\n}\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nexport const CreditApplicationSchema = z.strictObject({\n credit_invoice_id: z.uuid({ error: \"Select a credit\" }),\n applied_amount: GlobalUtils.handleZodCurrency(0.01, 999_999.99),\n});\n","import { z } from \"zod\";\nimport { PAYMENT_METHOD } from \"./payments_types\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nexport const PaymentFormSchema = z.strictObject({\n payment_method: z.enum(PAYMENT_METHOD, {\n error: \"Payment method is required.\",\n }),\n check_number: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z.string().max(50, \"Payment check number must be at most 50 characters.\")\n )\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n payment_amount: GlobalUtils.handleZodCurrency(0.01, 999_999.99),\n});\n","import { IntBool, UUID } from \"../../types/shared_types\";\n\nexport const PAYMENT_METHOD = [\n \"check\",\n \"cash\",\n \"bank_transfer\",\n \"digital_wallet\",\n] as const;\n\nexport type PaymentMethod = (typeof PAYMENT_METHOD)[number];\n\nexport type PaymentStatus = \"finalized\" | \"voided\";\n\nexport type PaymentSnapshot = {\n payment_id: UUID;\n invoice_id: UUID;\n payment_amount: string;\n payment_date: string;\n payment_method: PaymentMethod;\n check_number: string | null;\n is_admin_reviewed: IntBool;\n company_id: number;\n short_invoice_id: string;\n payment_status: PaymentStatus;\n occurred_at_ms: string;\n};\n","export const exceedsTwoDecimals = (raw: string) => {\n const s = String(raw ?? \"\").replace(/[,\\s]/g, \"\");\n const dot = s.indexOf(\".\");\n if (dot === -1) return false;\n const after = s.slice(dot + 1);\n const digitsAfter = (after.match(/\\d/g) ?? []).length;\n return digitsAfter > 2;\n};\n","// \"Today\" in the user's LOCAL timezone as YMD\nexport function todayLocalYmd(): string {\n const now = new Date();\n const y = now.getFullYear();\n const m = String(now.getMonth() + 1).padStart(2, \"0\");\n const d = String(now.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${d}`;\n}\n\n// Add days in LOCAL time (no drift)\nexport function addDaysLocalYmd(ymd: string, days: number): string {\n const dt = localDateFromYmd(ymd);\n dt.setDate(dt.getDate() + days);\n return ymdFromLocalDate(dt);\n}\n\nexport function formatYmdLong(ymd: string, locale = \"en-US\"): string {\n const { y, m, d } = parseYmd(ymd);\n const utcDate = new Date(Date.UTC(y, m - 1, d)); // 00:00Z\n return new Intl.DateTimeFormat(locale, {\n dateStyle: \"long\",\n timeZone: \"UTC\",\n }).format(utcDate);\n}\n\nexport function localDateFromYmd(ymd: string): Date {\n const { y, m, d } = parseYmd(ymd);\n return new Date(y, m - 1, d); // LOCAL midnight\n}\n\nexport function ymdFromLocalDate(dt: Date): string {\n const y = dt.getFullYear();\n const m = String(dt.getMonth() + 1).padStart(2, \"0\");\n const d = String(dt.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${d}`;\n}\n\nfunction parseYmd(ymd: string): { y: number; m: number; d: number } {\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(ymd);\n if (!m) throw new Error(\"Bad YMD\");\n return { y: Number(m[1]), m: Number(m[2]), d: Number(m[3]) };\n}\n","import type { FieldError, FieldErrorsImpl, Merge } from \"react-hook-form\";\n\ntype RHFError =\n | string\n | FieldError\n | Merge<FieldError, FieldErrorsImpl<any>>\n | undefined;\n\nexport const getErrorMessage = (err: RHFError): string | undefined => {\n if (!err) return undefined;\n if (typeof err === \"string\") return err;\n // FieldError has .message (string | undefined)\n const msg = (err as FieldError).message as string | undefined;\n return typeof msg === \"string\" ? msg : undefined;\n};\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../utils/utils\";\nimport { YmdDateSchema } from \"../invoices/invoices_schemas\";\nimport { PosInvoiceType, POS_INVOICE_TYPE } from \"./point_of_sales_types\";\n\nconst HN_INVOICE_REGEX = /^\\d{3}-\\d{3}-\\d{2}-\\d{8}$/;\n\nconst InvoiceNumberSchema = z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .string()\n .min(19, \"Must be in format NNN-NNN-NN-NNNNNNNN (3-3-2-8)\")\n .max(19, \"Must be in format NNN-NNN-NN-NNNNNNNN (3-3-2-8)\")\n .regex(HN_INVOICE_REGEX, {\n error: \"Must be in format NNN-NNN-NN-NNNNNNNN (3-3-2-8)\",\n })\n );\n\nexport const PointOfSalesSchema = z\n .strictObject({\n cai: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .string()\n .min(1, \"CAI is required\")\n .max(50, \"CAI must be at most 50 characters.\")\n ),\n\n pos_invoice_type: z.enum(\n POS_INVOICE_TYPE,\n \"Please select an invoice / document type.\"\n ),\n\n invoice_number_start_range: InvoiceNumberSchema,\n invoice_number_end_range: InvoiceNumberSchema,\n next_invoice_number: InvoiceNumberSchema,\n\n issuance_date: YmdDateSchema,\n issuance_deadline: YmdDateSchema,\n })\n .superRefine(\n (\n {\n issuance_date,\n issuance_deadline,\n invoice_number_start_range: start,\n invoice_number_end_range: end,\n next_invoice_number: next,\n },\n\n ctx\n ) => {\n if (issuance_deadline < issuance_date) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Issuance deadline can't be earlier than the issuance date.\",\n path: [\"issuance_deadline\"],\n });\n }\n\n const prefix = (s: string) => s.slice(0, 10); // \"NNN-NNN-NN\"\n\n if (prefix(start) !== prefix(end)) {\n ctx.addIssue({\n code: \"custom\",\n message:\n \"Start and end invoice numbers must share the same NNN-NNN-NN prefix.\",\n path: [\"invoice_number_end_range\"],\n });\n }\n\n if (prefix(start) !== prefix(next)) {\n ctx.addIssue({\n code: \"custom\",\n message:\n \"Start and next invoice numbers must share the same NNN-NNN-NN prefix.\",\n path: [\"next_invoice_number\"],\n });\n }\n\n if (!(next >= start && next <= end)) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Next invoice number must be within the authorized range.\",\n path: [\"next_invoice_number\"],\n });\n }\n\n if (end < start) {\n ctx.addIssue({\n code: \"custom\",\n message:\n \"End invoice number must be greater than or equal to start invoice number.\",\n path: [\"invoice_number_end_range\"],\n });\n }\n }\n );\n","export type MappedPointOfSales = {\n point_of_sales_id: number;\n cai: string;\n pos_invoice_type: PosInvoiceType;\n invoice_number_start_range: string;\n invoice_number_end_range: string;\n next_invoice_number: string;\n issuance_date: string;\n issuance_deadline: string;\n};\n\nexport const POS_INVOICE_TYPE = [\"sales\", \"credit\"] as const;\n\nexport type PosInvoiceType = (typeof POS_INVOICE_TYPE)[number];\n"],"mappings":"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","names":["fromString","fromNumber","z","z","z","z","z","z","z","z","z","z","z","z","YmdDateSchema","BaseInvoice","LineItemBase","SalesItem","CreditItem","PurchaseItem","SalesInvoiceSchema","CreditInvoiceSchema","PurchaseInvoiceSchema","AnyInvoiceSchema","z","z","z","z","z","z"]}
1
+ {"version":3,"sources":["../src/types/money_types.ts","../src/utils/utils.ts","../src/types/shared_types.ts","../src/domains/auth/login/login_schemas.ts","../src/domains/companies/companies_schemas.ts","../src/domains/companies/companies_types.ts","../src/domains/customers/customer_schemas.ts","../src/domains/products/product_schemas.ts","../src/domains/invoices/invoices_schemas.ts","../src/domains/invoices/invoices_types.ts","../src/domains/invoice_items/invoice_items_mappers.ts","../src/domains/credit_applications/credit_applications_schemas.ts","../src/domains/payments/payments_schemas.ts","../src/domains/payments/payments_types.ts","../src/utils/money_utils.ts","../src/utils/date_utils.ts","../src/utils/errors_utils.ts","../src/domains/point_of_sales/point_of_sales_schemas.ts","../src/domains/point_of_sales/point_of_sales_types.ts"],"sourcesContent":["import { IsoCountryCode } from \"../domains/companies/companies_types\";\n\nexport type IsoCurrencyCode = \"USD\" | \"HNL\";\ntype Locale = \"en-US\" | \"es-HN\";\n\nexport const countryToCurrency: Record<IsoCountryCode, IsoCurrencyCode> = {\n US: \"USD\",\n HN: \"HNL\",\n};\n\nexport const currencyToLocale: Record<IsoCurrencyCode, Locale> = {\n USD: \"en-US\",\n HNL: \"es-HN\",\n};\n","import * as GlobalTypes from \"./types\";\nimport { IsoCountryCode } from \"../domains/companies/companies_types\";\nimport {\n IsoCurrencyCode,\n countryToCurrency,\n currencyToLocale,\n} from \"../types/money_types\";\n\nimport { z } from \"zod\";\nimport { SchemaT } from \"../domains/invoices/invoices_types\";\n\n/**\n * Validates zod currency with precision.\n *\n *\n * @param minAmount\n * @param maxAmount\n * @returns\n */\nexport function handleZodCurrency(\n minAmount: number,\n maxAmount: number,\n t?: SchemaT,\n) {\n if (!t) {\n const fromString = z\n .string({\n error: \"Enter a valid number\",\n })\n .refine((s) => s.trim().length > 0, { error: \"Enter a valid number\" })\n .transform((s) => s.replace(/[,\\s]/g, \"\"))\n .refine((s) => s !== \"\" && !Number.isNaN(Number(s)), {\n error: \"Enter a valid number\",\n })\n .refine((s) => Number.isFinite(Number(s)), {\n error: \"Enter a valid number\",\n })\n .refine((s) => Number(s) >= 0, { error: \"Enter a positive number\" })\n .transform((s) => Number(s));\n\n const fromNumber = z\n .number()\n .refine((n) => Number.isFinite(n), { error: \"Enter a valid number\" })\n .refine((n) => n >= 0, { error: \"Enter a positive number\" });\n\n return z\n .union([fromString, fromNumber])\n .transform((n) => roundWithPrecision(n, 2))\n .refine((n) => n >= minAmount, {\n error: `Must be at least ${minAmount}`,\n })\n .refine((n) => n <= maxAmount, {\n error: `Exceeds allowed limit ${maxAmount}`,\n });\n }\n\n const fromString = z\n .string({\n error: t(\"enter_a_valid_number\"),\n })\n .refine((s) => s.trim().length > 0, {\n error: t(\"enter_a_valid_number\"),\n })\n .transform((s) => s.replace(/[,\\s]/g, \"\"))\n .refine((s) => s !== \"\" && !Number.isNaN(Number(s)), {\n error: t(\"enter_a_valid_number\"),\n })\n .refine((s) => Number.isFinite(Number(s)), {\n error: t(\"enter_a_valid_number\"),\n })\n .refine((s) => Number(s) >= 0, {\n error: t(\"enter_a_positive_number\"),\n })\n .transform((s) => Number(s));\n\n const fromNumber = z\n .number()\n .refine((n) => Number.isFinite(n), {\n error: t(\"enter_a_valid_number\"),\n })\n .refine((n) => n >= 0, {\n error: t(\"enter_a_positive_number\"),\n });\n\n return z\n .union([fromString, fromNumber])\n .transform((n) => roundWithPrecision(n, 2))\n .refine((n) => n >= minAmount, {\n error: `${t(\"must_be_at_least\")} ${minAmount}`,\n })\n .refine((n) => n <= maxAmount, {\n error: `${t(\"exceeds_allowed_limit\")} ${maxAmount}`,\n });\n}\n\n/**\n * Trims any leading or trailing spaces\n * Transforms empty strings into undefined.\n *\n * @param s\n * @returns\n */\nexport const transformEmptyStringToUndefined = (s: string) =>\n s.trim() === \"\" ? undefined : s;\n\n/**\n * - Collapses any run of whitespace in a string (spaces, tabs, newlines, nbspb, and other weird unicode spaces etc.)\n * into a single ASCII space.\n * - Trims leading and trailing whitespace.\n * \" Jared \\n Gomez \\t Driver\\t \" -> \"Jared Gomez Driver\"\n *\n * @param s\n * @returns\n */\nexport const normalizeSpaces = (s: string) => whitespace(s, \"normalize\");\n\n/**\n * Removes all whitespace from a string\n * @param s\n * @returns\n */\nexport const removeAllWhitespace = (s: string) => whitespace(s, \"remove\");\n\nconst whitespace = (s: string, mode: GlobalTypes.WhitespaceMode) => {\n if (mode === \"remove\") {\n return s.replace(/\\s+/g, \"\");\n }\n\n return s.replace(/\\s+/g, \" \").trim();\n};\n\n/**\n * Removes all dashes and + signs from a string\n * +1-305-555-0123 -> \"13055550123\"\n * 305-555-0123 -> \"3055550123\"\n *\n * @param s\n * @returns\n */\nexport const removeDashesAndPlusSign = (s: string): string =>\n s.replace(/[+-]/g, \"\");\n\n/**\n * Rounds a number to a certain precision.\n * Contract:\n * 1. Number must be finite and non negative.\n * 2. Precision must be finite nonnegative and an integer.\n * 3. Precision must be <= Max precision\n * 4. Returns a number >= 0\n * Default is round half up.\n *\n * @param num\n * @param precision\n * @param opts\n * @returns\n */\nexport function roundWithPrecision(\n num: number,\n precision: number,\n opts?: GlobalTypes.ToFixedOptions,\n): number {\n const MAX_PRECISION = 2;\n const { roundType = \"half_up\" } = opts ?? {};\n\n if (!Number.isFinite(num) || num < 0) {\n throw new RangeError(\"Number must be finite and greater than 0.\");\n }\n\n if (\n !Number.isFinite(precision) ||\n !Number.isInteger(precision) ||\n precision < 1\n ) {\n throw new RangeError(\"Precision must be a finite integer greater than 0.\");\n }\n\n if (precision > MAX_PRECISION) {\n throw new RangeError(\"Max precision allowed is 2.\");\n }\n\n return Number(\n (+(Math.round(+(num + \"e\" + precision)) + \"e\" + -precision)).toFixed(\n precision,\n ),\n );\n}\n\nexport function getCurrencyFromCountry(\n country: IsoCountryCode,\n): IsoCurrencyCode {\n return countryToCurrency[country];\n}\n\nexport function formatMoneyCurrency(value: number, currency: IsoCurrencyCode) {\n const locale =\n currency in currencyToLocale ? currencyToLocale[currency] : \"en-US\";\n\n const formatted = new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency: currency,\n }).format(value);\n\n return sanitizeSpaces(formatted);\n}\n\nfunction sanitizeSpaces(str: string): string {\n return str\n .replace(/\\u00A0/g, \" \")\n .replace(/\\u202F/g, \" \")\n .replace(/[^\\x20-\\x7E]/g, \"\");\n}\n","import { z } from \"zod\";\n\nexport const CREATED_LOCATION = [\"web\", \"mobile\"] as const;\n\nexport type CreatedLocation = (typeof CREATED_LOCATION)[number];\n\nexport type IntBool = 0 | 1;\n\nexport const uuidSchema = z.uuid();\nexport type UUID = z.infer<typeof uuidSchema>;\n\nexport type status = \"active\" | \"inactive\";\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../../utils/utils\";\n\nexport const LoginFormSchema = z.strictObject({\n user_email: z\n .string({ error: \"Email required\" })\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .email()\n .max(254, \"Customer email must be at most 254 characters.\")\n .transform((email) => email.toLowerCase())\n ),\n password: z\n .string({ error: \"Password required\" })\n .min(1, { error: \"Password required\" }),\n});\n","import { z } from \"zod\";\nimport { COMPANY_LANGUAGES, ISO_COUNTRY_CODES } from \"./companies_types\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nconst iso_country_code = z.enum(ISO_COUNTRY_CODES, {\n error: \"Country code not supported.\",\n});\n\nexport const RegisterFormSchema = z.strictObject({\n companyData: z.strictObject({\n company_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Company name is required\")\n .max(50, \"Company name must be at most 50 characters.\")\n ),\n company_address: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Company address is required\")\n .max(100, \"Company address must be at most 100 characters.\")\n ),\n company_phone_number: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .transform(GlobalUtils.removeDashesAndPlusSign)\n .refine((s) => /^\\d{4,15}$/.test(s), {\n error: \"Phone number required and must be from 4 to 15 digits.\",\n }),\n iso_country_code: z\n .string({ error: \"Please select a country.\" })\n .transform(GlobalUtils.removeAllWhitespace)\n .transform((s) => s.toUpperCase())\n .pipe(iso_country_code),\n }),\n adminUserData: z.strictObject({\n user_first_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"First name is required\")\n .max(50, \"First name must be at most 50 characters.\")\n ),\n user_last_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Last name is required\")\n .max(50, \"Last name must be at most 50 characters.\")\n ),\n user_email: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .email()\n .max(254, \"Customer email must be at most 254 characters.\")\n .transform((email) => email.toLowerCase())\n ),\n password: z\n .string()\n .min(8, \"Password must be at least 8 characters\")\n .max(25, \"Password must be at most 25 characters\")\n .regex(/[A-Z]/, \"Password must contain at least one uppercase letter\")\n .regex(/[a-z]/, \"Password must contain at least one lowercase letter\")\n .regex(/\\d/, \"Password must contain at least one number\")\n .regex(\n /[@$!%*?&#^_+=-]/,\n \"Password must contain at least one special character\"\n )\n .regex(/^\\S*$/, \"Password cannot contain spaces or other whitespace.\"),\n }),\n});\n\nexport const CompanyFormSchema =\n RegisterFormSchema.shape.companyData.safeExtend({\n company_email: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .email(\"Invalid company email.\")\n .max(254, \"Company email must be at most 254 characters.\")\n .transform((email) => email.toLowerCase())\n ),\n rtn: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(z.string().max(100, \"RTN must be at most 100 characters.\"))\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n web_language: z.enum(COMPANY_LANGUAGES, {\n error: \"Please select a web portal language.\",\n }),\n });\n","export const ISO_COUNTRY_CODES = [\"US\", \"HN\"] as const;\n\nexport type IsoCountryCode = (typeof ISO_COUNTRY_CODES)[number];\n\nexport const USER_ROLES = [\"admin\", \"driver\"] as const;\n\nexport type UserRole = (typeof USER_ROLES)[number];\n\nexport type InventorySystem = \"warehouse_only\" | \"dsd\";\n\nexport type CompanySnapshot = {\n company_id: number;\n company_name: string;\n company_address: string;\n company_phone_number: string;\n company_email: string;\n inventory_system: InventorySystem;\n iso_country_code: IsoCountryCode;\n rtn: string | null;\n};\n\nexport const COMPANY_LANGUAGES = [\"es\", \"en\"] as const;\n\nexport type CompanyLanguages = (typeof COMPANY_LANGUAGES)[number];\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nexport const CustomerFormSchema = z.strictObject({\n customer_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Customer name is required\")\n .max(50, \"Customer name must be at most 50 characters.\")\n ),\n\n customer_address: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z.string().max(100, \"Customer address must be at most 100 characters.\")\n )\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n customer_phone_number: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .transform(GlobalUtils.removeDashesAndPlusSign)\n .refine((s) => s === \"\" || /^\\d{4,15}$/.test(s), {\n error: \"Phone number must be from 4 to 15 digits.\",\n })\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n customer_email_address: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .pipe(\n z\n .email()\n .max(254, \"Customer email must be at most 254 characters.\")\n .transform((email) => email.toLowerCase())\n .optional()\n )\n .optional(),\n});\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nexport const ProductFormSchema = z\n .strictObject({\n product_name: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .min(1, \"Product name is required\")\n .max(50, \"Product name must be at most 50 characters.\")\n ),\n\n product_description: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z\n .string()\n .max(100, \"Product desription must be at most 100 characters.\")\n )\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n product_sku: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(z.string().max(30, \"Product SKU must be at most 30 characters.\"))\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n product_upc: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .refine((s) => s === \"\" || /^\\d{12}$/.test(s), {\n error: \"UPC must be exactly 12 digits\",\n })\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n country_tax_rule_id: z.number().optional(),\n\n product_gtin_14: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .refine((s) => s === \"\" || /^\\d{14}$/.test(s), {\n error: \"GTIN14 must be exactly 14 digits\",\n })\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n product_type: z.enum([\"unit\", \"weight\", \"case\"], {\n error: \"Product type must be unit, weight, or case.\",\n }),\n\n weight_unit: z.preprocess((v) => {\n if (v === \"\") return undefined;\n if (typeof v === \"string\") return v.trim().toLowerCase();\n return v;\n }, z.enum([\"kg\", \"lb\", \"g\", \"oz\"]).optional()),\n\n price: GlobalUtils.handleZodCurrency(0, 99_999.99),\n cost: GlobalUtils.handleZodCurrency(0, 99_999.99),\n })\n\n .superRefine((data, ctx) => {\n if (data.product_type === \"weight\" && !data.weight_unit) {\n ctx.addIssue({\n code: \"custom\",\n error: \"Weight unit is required.\",\n path: [\"weight_unit\"],\n });\n }\n\n if (\n data.product_type !== \"weight\" &&\n typeof data.weight_unit !== \"undefined\"\n ) {\n ctx.addIssue({\n code: \"custom\",\n error: \"Weight unit must be empty\",\n path: [\"weight_unit\"],\n });\n }\n });\n","import { z } from \"zod\";\nimport {\n CREDIT_TYPE,\n INVOICE_STATUS,\n INVOICE_TYPE,\n SchemaT,\n} from \"./invoices_types\";\nimport { handleZodCurrency } from \"../../utils/utils\";\n\nexport const YmdDateSchema = z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Use YYYY-MM-DD\");\n\nconst BaseInvoice = z\n .object({\n invoice_type: z.enum(INVOICE_TYPE, { error: \"Invoice type not found.\" }),\n invoice_date: YmdDateSchema,\n due_date: YmdDateSchema,\n tax_rate: z.number().default(0),\n tax_amount: z.number().default(0),\n warehouse_id: z.uuid().optional(),\n invoice_status: z.enum(INVOICE_STATUS).default(\"finalized\"),\n })\n .superRefine(({ invoice_date, due_date }, ctx) => {\n if (due_date < invoice_date) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Due date can't be earlier than the invoice date.\",\n path: [\"due_date\"],\n });\n }\n });\n\nconst LineItemBase = z.object({\n invoice_id: z.uuid().optional(),\n product_id: z.uuid({ error: \"Select a product\" }),\n product_name: z.string().optional(),\n product_description: z.string().optional(),\n product_type: z.enum([\"unit\", \"weight\", \"case\"]).optional(),\n product_upc: z.string().optional(),\n weight_unit: z.enum([\"kg\", \"lb\", \"g\", \"oz\"]).optional(),\n quantity: handleZodCurrency(0.01, 99_999.99),\n country_tax_rule_id: z.number().optional(),\n tax_percentage: z.number().optional(),\n});\n\nconst SalesItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.undefined(),\n});\n\nconst CreditItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.enum(CREDIT_TYPE, {\n error: \"Select a credit type\",\n }),\n});\n\nconst PurchaseItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.undefined(),\n});\n\nexport const SalesInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"sales\"),\n party_id: z.uuid({ message: \"Select a customer\" }),\n invoice_items: z.array(SalesItem).min(1, \"Add at least one invoice item\"),\n});\n\nexport const CreditInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"credit\"),\n party_id: z.uuid({ message: \"Select a customer\" }),\n invoice_items: z.array(CreditItem).min(1, \"Add at least one invoice item\"),\n});\n\nexport const PurchaseInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"purchase\"),\n party_id: z.uuid({ message: \"Select a vendor\" }),\n invoice_items: z.array(PurchaseItem).min(1, \"Add at least one invoice item\"),\n});\n\nexport const AnyInvoiceSchema = z.discriminatedUnion(\"invoice_type\", [\n SalesInvoiceSchema,\n PurchaseInvoiceSchema,\n CreditInvoiceSchema,\n]);\n\n///////////////////////////////////////////////////////////////////////\n//English / Spanish implementation\n\nexport function makeInvoiceSchemas(t: SchemaT) {\n const YmdDateSchema = z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Use YYYY-MM-DD\");\n\n const BaseInvoice = z\n .object({\n invoice_type: z.enum(INVOICE_TYPE, {\n error: t(\"invoice_type_not_found\"),\n }),\n invoice_date: YmdDateSchema,\n due_date: YmdDateSchema,\n tax_rate: z.number().default(0),\n tax_amount: z.number().default(0),\n warehouse_id: z.uuid().optional(),\n invoice_status: z.enum(INVOICE_STATUS).default(\"finalized\"),\n })\n .superRefine(({ invoice_date, due_date }, ctx) => {\n if (due_date < invoice_date) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Due date can't be earlier than the invoice date.\",\n path: [\"due_date\"],\n });\n }\n });\n\n const LineItemBase = z.object({\n invoice_id: z.uuid().optional(),\n product_id: z.uuid({\n error: t(\"select_product\"),\n }),\n product_name: z.string().optional(),\n product_description: z.string().optional(),\n product_type: z.enum([\"unit\", \"weight\", \"case\"]).optional(),\n product_upc: z.string().optional(),\n weight_unit: z.enum([\"kg\", \"lb\", \"g\", \"oz\"]).optional(),\n quantity: handleZodCurrency(0.01, 99_999.99),\n country_tax_rule_id: z.number().optional(),\n tax_percentage: z.number().optional(),\n });\n\n const SalesItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.undefined(),\n });\n\n const CreditItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.enum(CREDIT_TYPE, {\n error: t(\"select_credit_type\"),\n }),\n });\n\n const PurchaseItem = LineItemBase.safeExtend({\n price: handleZodCurrency(0, 99_999.99),\n credit_type: z.undefined(),\n });\n\n const SalesInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"sales\"),\n party_id: z.uuid({\n error: t(\"select_customer\"),\n }),\n invoice_items: z.array(SalesItem).min(1, t(\"add_one_invoice_item\")),\n });\n\n const CreditInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"credit\"),\n party_id: z.uuid({\n error: t(\"select_customer\"),\n }),\n invoice_items: z.array(CreditItem).min(1, t(\"add_one_invoice_item\")),\n });\n\n const PurchaseInvoiceSchema = BaseInvoice.safeExtend({\n invoice_type: z.literal(\"purchase\"),\n party_id: z.uuid({\n error: t(\"select_vendor\"),\n }),\n invoice_items: z.array(PurchaseItem).min(1, t(\"add_one_invoice_item\")),\n });\n\n const AnyInvoiceSchema = z.discriminatedUnion(\"invoice_type\", [\n SalesInvoiceSchema,\n PurchaseInvoiceSchema,\n CreditInvoiceSchema,\n ]);\n\n return {\n YmdDateSchema,\n SalesInvoiceSchema,\n CreditInvoiceSchema,\n PurchaseInvoiceSchema,\n AnyInvoiceSchema,\n };\n}\n\nexport type InvoiceSchemas = ReturnType<typeof makeInvoiceSchemas>;\n","import { z } from \"zod\";\nimport * as InvoiceSchemas from \"./invoices_schemas\";\nimport { IntBool, UUID } from \"../../types/shared_types\";\n\nexport type SchemaT = (key: string, params?: Record<string, any>) => string;\n\nexport type SalesInvoice = z.infer<typeof InvoiceSchemas.SalesInvoiceSchema>;\nexport type CreditInvoice = z.infer<typeof InvoiceSchemas.CreditInvoiceSchema>;\nexport type PurchaseInvoice = z.infer<\n typeof InvoiceSchemas.PurchaseInvoiceSchema\n>;\nexport type AnyInvoiceOut = z.output<typeof InvoiceSchemas.AnyInvoiceSchema>;\n\nexport const INVOICE_TYPE = [\"sales\", \"credit\", \"purchase\"] as const;\n\nexport type InvoiceType = (typeof INVOICE_TYPE)[number];\n\nexport const INVOICE_STATUS = [\"finalized\", \"voided\"] as const;\n\nexport type InvoiceStatus = (typeof INVOICE_STATUS)[number];\n\nexport const CREDIT_TYPE = [\"dump\", \"return\"] as const;\n\nexport type CreditType = (typeof CREDIT_TYPE)[number];\n\nexport type InvoiceSnapshot = {\n invoice_id: UUID;\n invoice_type: InvoiceType;\n subtotal: string;\n tax_amount: string;\n total_amount: string;\n remaining_balance: string;\n due_date: string;\n tax_rate: string;\n is_admin_reviewed: IntBool;\n customer_id: UUID;\n company_id: number;\n short_invoice_id: string;\n invoice_date: string;\n invoice_status: InvoiceStatus;\n occurred_at_ms: string;\n cai: string | null;\n invoice_number_start_range: string | null;\n invoice_number_end_range: string | null;\n issuance_date: string | null;\n issuance_deadline: string | null;\n};\n\nexport type InvoiceSnapshotMobile = InvoiceSnapshot & {\n signature: string | null;\n};\n","import * as InvoiceItemsTypes from \"./invoice_items_types\";\n\nexport function mapInvoiceProducts(\n row: InvoiceItemsTypes.InvoiceItemResponse\n): InvoiceItemsTypes.MappedInvoiceItem {\n return {\n invoice_item_id: row.invoice_item_id,\n product_id: row.product_id,\n quantity: Number(row.quantity),\n price: Number(row.price),\n amount: Number(row.amount),\n credit_type: row.credit_type ?? undefined,\n product_name: row.product_name,\n product_description: row.product_description ?? undefined,\n product_type: row.product_type,\n weight_unit: row.weight_unit ?? undefined,\n product_upc: row.product_upc ?? undefined,\n rule_name: row.rule_name ?? undefined,\n tax_percentage:\n row.tax_percentage === null ? undefined : Number(row.tax_percentage),\n };\n}\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nexport const CreditApplicationSchema = z.strictObject({\n credit_invoice_id: z.uuid({ error: \"Select a credit\" }),\n applied_amount: GlobalUtils.handleZodCurrency(0.01, 999_999.99),\n});\n","import { z } from \"zod\";\nimport { PAYMENT_METHOD } from \"./payments_types\";\nimport * as GlobalUtils from \"../../utils/utils\";\n\nexport const PaymentFormSchema = z.strictObject({\n payment_method: z.enum(PAYMENT_METHOD, {\n error: \"Payment method is required.\",\n }),\n check_number: z\n .string()\n .transform(GlobalUtils.normalizeSpaces)\n .pipe(\n z.string().max(50, \"Payment check number must be at most 50 characters.\")\n )\n .transform(GlobalUtils.transformEmptyStringToUndefined)\n .optional(),\n\n payment_amount: GlobalUtils.handleZodCurrency(0.01, 999_999.99),\n});\n","import { IntBool, UUID } from \"../../types/shared_types\";\n\nexport const PAYMENT_METHOD = [\n \"check\",\n \"cash\",\n \"bank_transfer\",\n \"digital_wallet\",\n] as const;\n\nexport type PaymentMethod = (typeof PAYMENT_METHOD)[number];\n\nexport type PaymentStatus = \"finalized\" | \"voided\";\n\nexport type PaymentSnapshot = {\n payment_id: UUID;\n invoice_id: UUID;\n payment_amount: string;\n payment_date: string;\n payment_method: PaymentMethod;\n check_number: string | null;\n is_admin_reviewed: IntBool;\n company_id: number;\n short_invoice_id: string;\n payment_status: PaymentStatus;\n occurred_at_ms: string;\n};\n","export const exceedsTwoDecimals = (raw: string) => {\n const s = String(raw ?? \"\").replace(/[,\\s]/g, \"\");\n const dot = s.indexOf(\".\");\n if (dot === -1) return false;\n const after = s.slice(dot + 1);\n const digitsAfter = (after.match(/\\d/g) ?? []).length;\n return digitsAfter > 2;\n};\n","// \"Today\" in the user's LOCAL timezone as YMD\nexport function todayLocalYmd(): string {\n const now = new Date();\n const y = now.getFullYear();\n const m = String(now.getMonth() + 1).padStart(2, \"0\");\n const d = String(now.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${d}`;\n}\n\n// Add days in LOCAL time (no drift)\nexport function addDaysLocalYmd(ymd: string, days: number): string {\n const dt = localDateFromYmd(ymd);\n dt.setDate(dt.getDate() + days);\n return ymdFromLocalDate(dt);\n}\n\nexport function formatYmdLong(ymd: string, locale = \"en-US\"): string {\n const { y, m, d } = parseYmd(ymd);\n const utcDate = new Date(Date.UTC(y, m - 1, d)); // 00:00Z\n return new Intl.DateTimeFormat(locale, {\n dateStyle: \"long\",\n timeZone: \"UTC\",\n }).format(utcDate);\n}\n\nexport function localDateFromYmd(ymd: string): Date {\n const { y, m, d } = parseYmd(ymd);\n return new Date(y, m - 1, d); // LOCAL midnight\n}\n\nexport function ymdFromLocalDate(dt: Date): string {\n const y = dt.getFullYear();\n const m = String(dt.getMonth() + 1).padStart(2, \"0\");\n const d = String(dt.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${d}`;\n}\n\nfunction parseYmd(ymd: string): { y: number; m: number; d: number } {\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(ymd);\n if (!m) throw new Error(\"Bad YMD\");\n return { y: Number(m[1]), m: Number(m[2]), d: Number(m[3]) };\n}\n","import type { FieldError, FieldErrorsImpl, Merge } from \"react-hook-form\";\n\ntype RHFError =\n | string\n | FieldError\n | Merge<FieldError, FieldErrorsImpl<any>>\n | undefined;\n\nexport const getErrorMessage = (err: RHFError): string | undefined => {\n if (!err) return undefined;\n if (typeof err === \"string\") return err;\n // FieldError has .message (string | undefined)\n const msg = (err as FieldError).message as string | undefined;\n return typeof msg === \"string\" ? msg : undefined;\n};\n","import { z } from \"zod\";\nimport * as GlobalUtils from \"../../utils/utils\";\nimport { YmdDateSchema } from \"../invoices/invoices_schemas\";\nimport { PosInvoiceType, POS_INVOICE_TYPE } from \"./point_of_sales_types\";\n\nconst HN_INVOICE_REGEX = /^\\d{3}-\\d{3}-\\d{2}-\\d{8}$/;\n\nconst InvoiceNumberSchema = z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .string()\n .min(19, \"Must be in format NNN-NNN-NN-NNNNNNNN (3-3-2-8)\")\n .max(19, \"Must be in format NNN-NNN-NN-NNNNNNNN (3-3-2-8)\")\n .regex(HN_INVOICE_REGEX, {\n error: \"Must be in format NNN-NNN-NN-NNNNNNNN (3-3-2-8)\",\n })\n );\n\nexport const PointOfSalesSchema = z\n .strictObject({\n cai: z\n .string()\n .transform(GlobalUtils.removeAllWhitespace)\n .pipe(\n z\n .string()\n .min(1, \"CAI is required\")\n .max(50, \"CAI must be at most 50 characters.\")\n ),\n\n pos_invoice_type: z.enum(\n POS_INVOICE_TYPE,\n \"Please select an invoice / document type.\"\n ),\n\n invoice_number_start_range: InvoiceNumberSchema,\n invoice_number_end_range: InvoiceNumberSchema,\n next_invoice_number: InvoiceNumberSchema,\n\n issuance_date: YmdDateSchema,\n issuance_deadline: YmdDateSchema,\n })\n .superRefine(\n (\n {\n issuance_date,\n issuance_deadline,\n invoice_number_start_range: start,\n invoice_number_end_range: end,\n next_invoice_number: next,\n },\n\n ctx\n ) => {\n if (issuance_deadline < issuance_date) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Issuance deadline can't be earlier than the issuance date.\",\n path: [\"issuance_deadline\"],\n });\n }\n\n const prefix = (s: string) => s.slice(0, 10); // \"NNN-NNN-NN\"\n\n if (prefix(start) !== prefix(end)) {\n ctx.addIssue({\n code: \"custom\",\n message:\n \"Start and end invoice numbers must share the same NNN-NNN-NN prefix.\",\n path: [\"invoice_number_end_range\"],\n });\n }\n\n if (prefix(start) !== prefix(next)) {\n ctx.addIssue({\n code: \"custom\",\n message:\n \"Start and next invoice numbers must share the same NNN-NNN-NN prefix.\",\n path: [\"next_invoice_number\"],\n });\n }\n\n if (!(next >= start && next <= end)) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Next invoice number must be within the authorized range.\",\n path: [\"next_invoice_number\"],\n });\n }\n\n if (end < start) {\n ctx.addIssue({\n code: \"custom\",\n message:\n \"End invoice number must be greater than or equal to start invoice number.\",\n path: [\"invoice_number_end_range\"],\n });\n }\n }\n );\n","export type MappedPointOfSales = {\n point_of_sales_id: number;\n cai: string;\n pos_invoice_type: PosInvoiceType;\n invoice_number_start_range: string;\n invoice_number_end_range: string;\n next_invoice_number: string;\n issuance_date: string;\n issuance_deadline: string;\n};\n\nexport const POS_INVOICE_TYPE = [\"sales\", \"credit\"] as const;\n\nexport type PosInvoiceType = (typeof POS_INVOICE_TYPE)[number];\n"],"mappings":"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","names":["fromString","fromNumber","z","z","z","z","z","z","z","z","z","z","z","z","YmdDateSchema","BaseInvoice","LineItemBase","SalesItem","CreditItem","PurchaseItem","SalesInvoiceSchema","CreditInvoiceSchema","PurchaseInvoiceSchema","AnyInvoiceSchema","z","z","z","z","z","z"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marmot-systems/common",
3
- "version": "2.0.79",
3
+ "version": "2.0.81",
4
4
  "description": "Schemas and utils shared across Marmot apps",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",