facturacionelectronicapy-ts-xmlgen
Version:
Genera el contenido del archivo XML del Documento electrónico exigido por la SET
85 lines (84 loc) • 3.38 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SalidaYEntregaSchema = void 0;
const zod_1 = require("zod");
const departments_table_1 = require("../../data/departments.table");
const db_service_1 = __importDefault(require("../../services/db.service"));
const CommonValidators_1 = __importDefault(require("../../helpers/validation/CommonValidators"));
const SDParser_1 = __importDefault(require("../../helpers/SDParser"));
/**
* E10.1. Campos que identifican el local de salida de las mercaderías (E920-E939)
* E10.2. Campos que identifican el local de entrega de las mercaderías (E940-E959)
*
* @SALIDA
* @field E921 = direccion
* @field E922 = numeroCasa
* @field E923 = complementoDireccion1
* @field E924 = complementoDireccion2
* @field E925 = departamento
* @field E926 = departamentoDescripcion
* @field E927 = distrito
* @field E928 = distritoDescripccion
* @field E929 = ciudad
* @field E930 = ciudadDescripcion
* @field E931 = telefonoContacto
*
* @ENTREGA
* @field E941 = direccion
* @field E942 = numeroCasa
* @field E943 = complementoDireccion1
* @field E944 = complementoDireccion2
* @field E945 = departamento
* @field E946 = departamentoDescripcion
* @field E947 = distrito
* @field E948 = distritoDescripccion
* @field E949 = ciudad
* @field E950 = ciudadDescripcion
* @field E951 = telefonoContacto
*
* @field ???? = pais
* @field ???? = paisDescripcion
*/
exports.SalidaYEntregaSchema = zod_1.z
.object({
direccion: CommonValidators_1.default.address().describe(SDParser_1.default.stringify('E921 o E941')),
numeroCasa: CommonValidators_1.default.houseNumber().describe(SDParser_1.default.stringify('E922 o E942')),
complementoDireccion1: CommonValidators_1.default.address()
.optional()
.describe(SDParser_1.default.stringify('E923 o E943')),
complementoDireccion2: CommonValidators_1.default.address()
.optional()
.describe(SDParser_1.default.stringify('E924 o E944')),
departamento: zod_1.z
.nativeEnum(departments_table_1.Department)
.describe(SDParser_1.default.stringify('E925 o E945', { e: 'Department' })),
distrito: CommonValidators_1.default.district()
.optional()
.describe(SDParser_1.default.stringify('E926 o E946', { t: 'distritos' })),
ciudad: CommonValidators_1.default.city().describe(SDParser_1.default.stringify('E929 o E949', { t: 'ciudades' })),
telefonoContacto: zod_1.z
.string()
.min(6)
.max(15)
.optional()
.describe(SDParser_1.default.stringify('E931 o E951')),
})
.transform((data, ctx) => {
CommonValidators_1.default.location(ctx, data.departamento, data.distrito, data.ciudad);
return {
...data,
departamentoDescripcion: db_service_1.default.departments._findById(data.departamento).description,
// E928 - E948
distritoDescripcion: db_service_1.default.districts._findByIdIfExist(data.distrito, {
ctx,
fieldName: 'distrito',
})?.description,
ciudadDescripcion: db_service_1.default.cities._findById(data.ciudad, {
ctx,
fieldName: 'ciudad',
}).description,
};
});