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
JavaScript
;
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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