UNPKG

facturacionelectronicapy-recibo-xmlgen

Version:

API Node JS para generar el archivo XML del Recibo similar al exigido por la SET en base a JSON

304 lines (303 loc) 35.2 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const Constante_service_1 = __importDefault(require("./Constante.service")); class JSonDteTransporteService { /** * E10. Campos que describen el transporte de las mercaderías (E900-E999) * * @param params * @param data * @param options */ generateDatosTransporte(params, data) { if (data['tipoDocumento'] == 7) { if (!(data['detalleTransporte'] && data['detalleTransporte']['tipo'] && data['detalleTransporte']['tipo'] > 0)) { //throw new Error('Obligatorio informar detalleTransporte.tipo'); } } if (data['detalleTransporte'] && data['detalleTransporte']['condicionNegociacion']) { if (Constante_service_1.default.condicionesNegociaciones.indexOf(data['detalleTransporte']['condicionNegociacion']) < -1) { /*throw new Error( 'detalleTransporte.condicionNegociación (' + data['detalleTransporte']['condicionNegociacion'] + ') no válido', );*/ } } if (data['tipoDocumento'] == 7) { if (data['inicioEstimadoTranslado']) { //throw new Error('Obligatorio informar detalleTransporte.inicioEstimadoTranslado'); } } if (data['tipoDocumento'] == 7) { if (data['finEstimadoTranslado']) { //throw new Error('Obligatorio informar detalleTransporte.finEstimadoTranslado'); } } if (Constante_service_1.default.tiposTransportes.filter((um) => um.codigo === data['detalleTransporte']['tipo']).length == 0) { /*throw new Error( "Tipo de Transporte '" + data['detalleTransporte']['tipo'] + "' en data.detalleTransporte.tipo no encontrado. Valores: " + constanteService.tiposTransportes.map((a) => a.codigo + '-' + a.descripcion), );*/ } if (Constante_service_1.default.modalidadesTransportes.filter((um) => um.codigo === data['detalleTransporte']['modalidad']) .length == 0) { /*throw new Error( "Modalidad de Transporte '" + data['detalleTransporte']['modalidad'] + "' en data.detalleTransporte.modalidad no encontrado. Valores: " + constanteService.modalidadesTransportes.map((a) => a.codigo + '-' + a.descripcion), );*/ } if (Constante_service_1.default.condicionesNegociaciones.filter((um) => um.codigo === data['detalleTransporte']['condicionNegociacion']).length == 0) { /*throw new Error( "Condicion de Negociacion '" + data['detalleTransporte']['condicionNegociacion'] + "' en data.detalleTransporte.condicionNegociacion no encontrado. Valores: " + constanteService.condicionesNegociaciones.map((a) => a.codigo + '-' + a.descripcion), );*/ } const jsonResult = { iTipTrans: data['detalleTransporte']['tipo'], dDesTipTrans: Constante_service_1.default.tiposTransportes.filter((tt) => tt.codigo == data['detalleTransporte']['tipo'])[0]['descripcion'], iModTrans: data['detalleTransporte']['modalidad'], dDesModTrans: Constante_service_1.default.modalidadesTransportes.filter((mt) => mt.codigo == data['detalleTransporte']['modalidad'])[0]['descripcion'], iRespFlete: data['detalleTransporte']['tipoResponsable'], cCondNeg: data['detalleTransporte']['condicionNegociacion'], }; if (data['detalleTransporte']['numeroManifiesto']) { jsonResult['dNuManif'] = data['detalleTransporte']['numeroManifiesto']; } if (data['detalleTransporte'] && data['detalleTransporte']['numeroDespachoImportacion']) { if (data['detalleTransporte']['numeroDespachoImportacion'].length >= 16) { jsonResult['dNuDespImp'] = data['detalleTransporte']['numeroDespachoImportacion'].substring(0, 16); } } if (data['detalleTransporte']['inicioEstimadoTranslado']) { jsonResult['dIniTras'] = data['detalleTransporte']['inicioEstimadoTranslado']; } if (data['detalleTransporte']['finEstimadoTranslado']) { jsonResult['dFinTras'] = data['detalleTransporte']['finEstimadoTranslado']; } if (data['detalleTransporte']['paisDestino']) { jsonResult['cPaisDest'] = data['detalleTransporte']['paisDestino']; jsonResult['dDesPaisDest'] = Constante_service_1.default.paises.filter((pais) => pais.codigo === data['detalleTransporte']['paisDestino'])[0]['descripcion']; } jsonResult['gCamSal'] = this.generateDatosSalida(params, data); jsonResult['gCamEnt'] = this.generateDatosEntrega(params, data); jsonResult['gVehTras'] = this.generateDatosVehiculo(params, data); if (data['detalleTransporte']['transportista']) { jsonResult['gCamTrans'] = this.generateDatosTransportista(params, data); } return jsonResult; } /** * E10.1. Campos que identifican el local de salida de las mercaderías (E920-E939) * * @param params * @param data * @param options * @param items Es el item actual del array de items de "data" que se está iterando */ generateDatosSalida(params, data) { const jsonResult = { dDirLocSal: data['detalleTransporte']['salida']['direccion'], }; if (!data['detalleTransporte']['salida']['numeroCasa']) { data['detalleTransporte']['salida']['numeroCasa'] = '0'; } jsonResult['dNumCasSal'] = data['detalleTransporte']['salida']['numeroCasa']; if (data['detalleTransporte']['salida']['complementoDireccion1']) { jsonResult['dComp1Sal'] = data['detalleTransporte']['salida']['complementoDireccion1']; } if (data['detalleTransporte']['salida']['complementoDireccion2']) { jsonResult['dComp2Sal'] = data['detalleTransporte']['salida']['complementoDireccion2']; } jsonResult['cDepSal'] = +data['detalleTransporte']['salida']['departamento']; jsonResult['dDesDepSal'] = Constante_service_1.default.departamentos.filter((td) => td.codigo === +data['detalleTransporte']['salida']['departamento'])[0]['descripcion']; jsonResult['cDisSal'] = data['detalleTransporte']['salida']['distrito']; jsonResult['dDesDisSal'] = Constante_service_1.default.distritos.filter((td) => td.codigo === +data['detalleTransporte']['salida']['distrito'])[0]['descripcion']; jsonResult['cCiuSal'] = +data['detalleTransporte']['salida']['ciudad']; jsonResult['dDesCiuSal'] = Constante_service_1.default.ciudades.filter((td) => td.codigo === +data['detalleTransporte']['salida']['ciudad'])[0]['descripcion']; /*constanteService.validateDepartamentoDistritoCiudad( 'data.detalleTransporte.salida', +data['detalleTransporte']['salida']['departamento'], +data['detalleTransporte']['salida']['distrito'], +data['detalleTransporte']['salida']['ciudad'], );*/ if (data['detalleTransporte'] && data['detalleTransporte']['salida'] && data['detalleTransporte']['salida']['telefonoContacto']) { if (data['detalleTransporte']['salida']['telefonoContacto'].length >= 6) { jsonResult['dTelSal'] = data['detalleTransporte']['salida']['telefonoContacto']; } } return jsonResult; } /** * E10.2. Campos que identifican el local de entrega de las mercaderías (E940-E959) * * @param params * @param data * @param options * @param items Es el item actual del array de items de "data" que se está iterando */ generateDatosEntrega(params, data) { const jsonResult = { dDirLocEnt: data['detalleTransporte']['entrega']['direccion'], }; if (!data['detalleTransporte']['entrega']['numeroCasa']) { data['detalleTransporte']['entrega']['numeroCasa'] = '0'; } jsonResult['dNumCasEnt'] = data['detalleTransporte']['entrega']['numeroCasa']; if (data['detalleTransporte']['entrega']['complementoDireccion1']) { jsonResult['dComp1Ent'] = data['detalleTransporte']['entrega']['complementoDireccion1']; } if (data['detalleTransporte']['entrega']['complementoDireccion2']) { jsonResult['dComp2Ent'] = data['detalleTransporte']['entrega']['complementoDireccion2']; } jsonResult['cDepEnt'] = data['detalleTransporte']['entrega']['departamento']; jsonResult['dDesDepEnt'] = Constante_service_1.default.departamentos.filter((td) => td.codigo === data['detalleTransporte']['entrega']['departamento'])[0]['descripcion']; jsonResult['cDisEnt'] = data['detalleTransporte']['entrega']['distrito']; jsonResult['dDesDisEnt'] = Constante_service_1.default.distritos.filter((td) => td.codigo === data['detalleTransporte']['entrega']['distrito'])[0]['descripcion']; jsonResult['cCiuEnt'] = data['detalleTransporte']['entrega']['ciudad']; jsonResult['dDesCiuEnt'] = Constante_service_1.default.ciudades.filter((td) => td.codigo === data['detalleTransporte']['entrega']['ciudad'])[0]['descripcion']; if (data['detalleTransporte'] && data['detalleTransporte']['entrega'] && data['detalleTransporte']['entrega']['telefonoContacto']) { if (data['detalleTransporte']['entrega']['telefonoContacto'].length >= 6) { jsonResult['dTelEnt'] = data['detalleTransporte']['entrega']['telefonoContacto']; } } return jsonResult; } /** * E10.3. Campos que identifican el vehículo de traslado de mercaderías (E960-E979) * * @param params * @param data * @param options * @param items Es el item actual del array de items de "data" que se está iterando */ generateDatosVehiculo(params, data) { if (!(data['detalleTransporte'] && data['detalleTransporte']['vehiculo'])) { //throw new Error('Los datos del Vehiculo en data.detalleTransporte.vehiculo no fueron informados'); } const jsonResult = { //dTiVehTras: data['detalleTransporte']['vehiculo']['tipo'], dTiVehTras: Constante_service_1.default.modalidadesTransportes.filter((td) => td.codigo === +data['detalleTransporte']['vehiculo']['tipo'])[0]['descripcion'], dMarVeh: data['detalleTransporte']['vehiculo']['marca'], }; if (data['detalleTransporte']['vehiculo']['documentoTipo']) { jsonResult['dTipIdenVeh'] = data['detalleTransporte']['vehiculo']['documentoTipo']; } if (data['detalleTransporte']['vehiculo']['documentoNumero']) { jsonResult['dNroIDVeh'] = data['detalleTransporte']['vehiculo']['documentoNumero']; } if (data['detalleTransporte'] && data['detalleTransporte']['vehiculo'] && data['detalleTransporte']['vehiculo']['obs']) { jsonResult['dAdicVeh'] = data['detalleTransporte']['vehiculo']['obs']; } if (data['detalleTransporte']['vehiculo']['numeroMatricula']) { if (!(data['detalleTransporte']['vehiculo']['numeroMatricula'].length >= 6 && data['detalleTransporte']['vehiculo']['numeroMatricula'].length <= 7)) { /*throw new Error( "Número de Matricula '" + data['detalleTransporte']['vehiculo']['numeroMatricula'] + "' en data.detalleTransporte.vehiculo.numeroMatricula debe tener una longitud de 6 a 7 caracteres ", );*/ } jsonResult['dNroMatVeh'] = data['detalleTransporte']['vehiculo']['numeroMatricula']; } if (data['detalleTransporte']['vehiculo']['numeroVuelo']) { if (data['detalleTransporte']['vehiculo']['numeroVuelo'].length >= 6) { jsonResult['dNroVuelo'] = data['detalleTransporte']['vehiculo']['numeroVuelo'].substring(0, 6); } } return jsonResult; } /** * E10.4. Campos que identifican al transportista (persona física o jurídica) (E980-E999) * * @param params * @param data * @param options * @param items Es el item actual del array de items de "data" que se está iterando */ generateDatosTransportista(params, data) { if (Constante_service_1.default.tiposDocumentosIdentidades.filter((um) => um.codigo === data['detalleTransporte']['transportista']['documentoTipo']).length == 0) { /*throw new Error( "Tipo de Documento '" + data['detalleTransporte']['transportista']['documentoTipo'] + "' en data.detalleTransporte.transportista.documentoTipo no encontrado. Valores: " + constanteService.tiposDocumentosIdentidades.map((a) => a.codigo + '-' + a.descripcion), );*/ } if (data['detalleTransporte'] && data['detalleTransporte']['transportista'] && data['detalleTransporte']['transportista']['ruc']) { if (data['detalleTransporte']['transportista']['ruc'].indexOf('-') == -1) { //throw new Error('RUC debe contener dígito verificador en data.detalleTransporte.transportista.ruc'); } } if (data['detalleTransporte'] && data['detalleTransporte']['transportista'] && data['detalleTransporte']['transportista']['agente'] && data['detalleTransporte']['transportista']['agente']['ruc']) { if (data['detalleTransporte']['transportista']['agente']['ruc'].indexOf('-') == -1) { //throw new Error('RUC debe contener dígito verificador en data.detalleTransporte.transportista.agente.ruc'); } } const jsonResult = { iNatTrans: data['detalleTransporte']['transportista']['contribuyente'] ? 1 : 2, dNomTrans: data['detalleTransporte']['transportista']['nombre'], }; if (data['detalleTransporte']['transportista']['contribuyente']) { jsonResult['dRucTrans'] = data['detalleTransporte']['transportista']['ruc'].split('-')[0]; jsonResult['dDVTrans'] = data['detalleTransporte']['transportista']['ruc'].split('-')[1]; } if (!data['detalleTransporte']['transportista']['contribuyente']) { jsonResult['iTipIDTrans'] = data['detalleTransporte']['transportista']['documentoTipo']; jsonResult['dDTipIDTrans'] = Constante_service_1.default.tiposDocumentosIdentidades.filter((td) => td.codigo === data['detalleTransporte']['transportista']['documentoTipo'])[0]['descripcion']; jsonResult['dNumIDTrans'] = data['detalleTransporte']['transportista']['documentoNumero'].substring(0, 20); } if (data['detalleTransporte']['transportista'] && data['detalleTransporte']['transportista']['pais']) { if (Constante_service_1.default.paises.filter((pais) => pais.codigo === data['detalleTransporte']['transportista']['pais']).length == 0) { /*throw new Error( "Pais '" + data['detalleTransporte']['transportista']['pais'] + "' del Cliente en data.detalleTransporte.transportista.pais no encontrado. Valores: " + constanteService.paises.map((a: any) => a.codigo + '-' + a.descripcion), );*/ } jsonResult['cNacTrans'] = data['detalleTransporte']['transportista']['pais']; jsonResult['dDesNacTrans'] = Constante_service_1.default.paises.filter((pais) => pais.codigo === data['detalleTransporte']['transportista']['pais'])[0]['descripcion']; } if (data['detalleTransporte']['transportista']['chofer']['documentoNumero']) { jsonResult['dNumIDChof'] = data['detalleTransporte']['transportista']['chofer']['documentoNumero'].substring(0, 20); } jsonResult['dNomChof'] = data['detalleTransporte']['transportista']['chofer']['nombre']; if (data['detalleTransporte']['transportista']['direccion']) { jsonResult['dDomFisc'] = data['detalleTransporte']['transportista']['direccion']; } if (data['detalleTransporte']['transportista']['chofer']['direccion']) { jsonResult['dDirChof'] = data['detalleTransporte']['transportista']['chofer']['direccion']; } if (data['detalleTransporte']['transportista']['agente'] && data['detalleTransporte']['transportista']['agente']['ruc']) { jsonResult['dNombAg'] = data['detalleTransporte']['transportista']['agente']['nombre']; jsonResult['dRucAg'] = data['detalleTransporte']['transportista']['agente']['ruc'].split('-')[0]; jsonResult['dDVAg'] = data['detalleTransporte']['transportista']['agente']['ruc'].split('-')[1]; jsonResult['dDirAge'] = data['detalleTransporte']['transportista']['agente']['direccion']; } return jsonResult; } } exports.default = new JSonDteTransporteService(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkR0ZVRyYW5zcG9ydGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9qc29uRHRlVHJhbnNwb3J0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNEVBQW1EO0FBR25ELE1BQU0sd0JBQXdCO0lBQzVCOzs7Ozs7T0FNRztJQUNJLHVCQUF1QixDQUFDLE1BQVcsRUFBRSxJQUFTO1FBQ25ELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDOUcsaUVBQWlFO2FBQ2xFO1NBQ0Y7UUFDRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLEVBQUU7WUFDbEYsSUFBSSwyQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUM3Rzs7OztvQkFJSTthQUNMO1NBQ0Y7UUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDOUIsSUFBSSxJQUFJLENBQUMseUJBQXlCLENBQUMsRUFBRTtnQkFDbkMsb0ZBQW9GO2FBQ3JGO1NBQ0Y7UUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDOUIsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRTtnQkFDaEMsaUZBQWlGO2FBQ2xGO1NBQ0Y7UUFDRCxJQUFJLDJCQUFn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