FactuGES_ERP/modules/customers/src/common/dto/shared/tax-combination-code.dto.ts
2026-04-24 20:53:05 +02:00

24 lines
560 B
TypeScript

import { z } from "zod/v4";
const TAX_CODE_PATTERN = /^[a-z0-9_]+$/i;
const EMPTY_TAX_SLOT = "#";
export const TaxCombinationCodeSchema = z.string().refine(
(value) => {
const parts = value.split(";");
if (parts.length !== 3) {
return false;
}
return parts.every((part) => {
return part === EMPTY_TAX_SLOT || TAX_CODE_PATTERN.test(part);
});
},
{
message: "taxes must use format '<iva_code|#>;<rec_code|#>;<retention_code|#>'",
}
);
export type TaxCombinationCodeDTO = z.infer<typeof TaxCombinationCodeSchema>;