facturacionelectronicapy-xmlgen
Version:
API Node JS para generar el archivo XML del Documento electrónico exigido por SIFEN en base a JSON
536 lines (532 loc) • 50.6 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const StringUtil_service_1 = __importDefault(require("./StringUtil.service"));
const constants_service_1 = __importDefault(require("./constants.service"));
class JSonDteItemService {
/**
* E8. Campos que describen los ítems de la operación (E700-E899)
*
* @param params
* @param data
* @param options
*/
generateDatosItemsOperacion(params, data, config) {
const jsonResult = [];
//Recorrer array de infoCuotas e informar en el JSON
if (data['items'] && data['items'].length > 0) {
for (let i = 0; i < data['items'].length; i++) {
const item = data['items'][i];
const gCamItem = {
dCodInt: item['codigo'],
};
if (item['partidaArancelaria']) {
gCamItem['dParAranc'] = item['partidaArancelaria'];
}
if (item['ncm']) {
gCamItem['dNCM'] = item['ncm'];
}
if (data['cliente']['tipoOperacion'] && data['cliente']['tipoOperacion'] === 3) {
if (item['dncp'] && item['dncp']['codigoNivelGeneral']) {
gCamItem['dDncpG'] = StringUtil_service_1.default.leftZero(item['dncp']['codigoNivelGeneral'], 8);
}
if (item['dncp'] && item['dncp']['codigoNivelEspecifico']) {
gCamItem['dDncpE'] = item['dncp']['codigoNivelEspecifico'];
}
//}
//if (data['cliente']['tipoOperacion'] && data['cliente']['tipoOperacion'] === 3) {
if (item['dncp'] && item['dncp']['codigoGtinProducto']) {
gCamItem['dGtin'] = item['dncp']['codigoGtinProducto'];
}
if (item['dncp'] && item['dncp']['codigoNivelPaquete']) {
gCamItem['dGtinPq'] = item['dncp']['codigoNivelPaquete'];
}
}
gCamItem['dDesProSer'] = item['descripcion']; // RG 24/2019
gCamItem['cUniMed'] = item['unidadMedida'];
gCamItem['dDesUniMed'] = constants_service_1.default.unidadesMedidas
.filter((um) => um.codigo === +item['unidadMedida'])[0]['representacion'].trim();
gCamItem['dCantProSer'] = item['cantidad'];
if (item['pais']) {
gCamItem['cPaisOrig'] = item['pais'];
gCamItem['dDesPaisOrig'] = constants_service_1.default.paises.filter((pais) => pais.codigo === item['pais'])[0]['descripcion'];
}
if (item['observacion'] && (item['observacion'] + '').trim().length > 0) {
gCamItem['dInfItem'] = (item['observacion'] + '').trim();
}
if (data['tipoDocumento'] === 7) {
if (item['tolerancia']) {
gCamItem['cRelMerc'] = item['tolerancia'];
gCamItem['dDesRelMerc'] = constants_service_1.default.relevanciasMercaderias.filter((um) => um.codigo === item['tolerancia'])[0]['descripcion'];
if (item['toleranciaCantidad']) {
gCamItem['dCanQuiMer'] = item['toleranciaCantidad'];
}
if (item['toleranciaPorcentaje']) {
gCamItem['dPorQuiMer'] = item['toleranciaPorcentaje'];
}
}
}
//Tratamiento E719. Tiene relacion con generateDatosGeneralesInherentesOperacion
if (data['tipoDocumento'] == 1 || data['tipoDocumento'] == 4) {
//if (data['tipoTransaccion'] === 9) {
if (item['cdcAnticipo']) {
gCamItem['dCDCAnticipo'] = item['cdcAnticipo'];
}
//}
}
if (data['tipoDocumento'] != 7) {
//Oblitatorio informar
gCamItem['gValorItem'] = this.generateDatosItemsOperacionPrecioTipoCambioTotal(params, data, item, i, config);
}
if (data['tipoImpuesto'] == 1 ||
data['tipoImpuesto'] == 3 ||
data['tipoImpuesto'] == 4 ||
data['tipoImpuesto'] == 5) {
if (data['tipoDocumento'] != 4 && data['tipoDocumento'] != 7) {
gCamItem['gCamIVA'] = this.generateDatosItemsOperacionIVA(params, data, item, i, Object.assign({}, gCamItem), config);
}
}
//Rastreo
if (item['lote'] ||
item['vencimiento'] ||
item['numeroSerie'] ||
item['numeroPedido'] ||
item['numeroSeguimiento'] ||
item['registroSenave'] ||
item['registroEntidadComercial']) {
gCamItem['gRasMerc'] = this.generateDatosItemsOperacionRastreoMercaderias(params, data, item, i);
}
//Automotores
if (item['sectorAutomotor'] && item['sectorAutomotor']['tipo']) {
gCamItem['gVehNuevo'] = this.generateDatosItemsOperacionSectorAutomotores(params, data, item, i);
}
jsonResult.push(gCamItem);
} //end-for
//Verificacion de Totales de Descuento Global y Anticipo
//Con los prorrateos pueden haber diferencias
//Las diferencias se corrigen en el ultimo item
let totalDescuentoGlobal = 0;
let totalAnticipoGlobal = 0;
if (data['descuentoGlobal'] > 0 || data['anticipoGlobal'] > 0) {
for (let i = 0; i < jsonResult.length; i++) {
const gCamItem = jsonResult[i];
if (data['descuentoGlobal']) {
totalDescuentoGlobal += gCamItem['dCantProSer'] * gCamItem['gValorItem']['gValorRestaItem']['dDescGloItem'];
}
if (data['anticipoGlobal']) {
totalAnticipoGlobal +=
gCamItem['dCantProSer'] * gCamItem['gValorItem']['gValorRestaItem']['dAntGloPreUniIt'];
}
}
if (data['descuentoGlobal'] > 0) {
if (data['descuentoGlobal'] != totalDescuentoGlobal) {
console.log('hay una diferencia', data['descuentoGlobal'], totalDescuentoGlobal);
//throw new Error("hay una diferencia", data['descuentoGlobal'], totalDescuentoGlobal);
}
}
if (data['anticipoGlobal'] > 0) {
if (data['anticipoGlobal'] != totalDescuentoGlobal) {
console.log('hay una diferencia', data['anticipoGlobal'], totalAnticipoGlobal);
//throw new Error("hay una diferencia", data['anticipoGlobal'], totalDescuentoGlobal);
}
}
}
}
return jsonResult;
}
/**
* E8.1. Campos que describen el precio, tipo de cambio y valor total de la operación por ítem (E720-E729)
*
* @param params
* @param data
* @param options
* @param items Es el item actual del array de items de "data" que se está iterando
*/
generateDatosItemsOperacionPrecioTipoCambioTotal(params, data, item, i, config) {
const jsonResult = {};
//Mejor no tocar como el usuario envia desde el JSON
jsonResult['dPUniProSer'] = item['precioUnitario'];
jsonResult['dTotBruOpeItem'] = parseFloat(jsonResult['dPUniProSer']) * parseFloat(item['cantidad']);
//console.log("dTotBruOpeItem 1", jsonResult['dTotBruOpeItem']);
if (config.sum0_000001SuffixBeforeToFixed == true) {
jsonResult['dTotBruOpeItem'] += 0.000001;
}
jsonResult['dTotBruOpeItem'] = parseFloat(jsonResult['dTotBruOpeItem'].toFixed(config.decimals));
//console.log("dTotBruOpeItem 2", jsonResult['dTotBruOpeItem']);
if (data.moneda === 'PYG') {
jsonResult['dTotBruOpeItem'] = parseFloat(jsonResult['dTotBruOpeItem'].toFixed(config.pygDecimals));
}
if (data['condicionTipoCambio'] && data['condicionTipoCambio'] == 2) {
jsonResult['dTiCamIt'] = item['cambio'];
}
jsonResult['gValorRestaItem'] = this.generateDatosItemsOperacionDescuentoAnticipoValorTotal(params, data, item, i, config);
return jsonResult;
}
/**
* E8.1.1 Campos que describen los descuentos, anticipos y valor total por ítem (EA001-EA050)
*
* @param params
* @param data
* @param options
* @param items Es el item actual del array de items de "data" que se está iterando
*/
generateDatosItemsOperacionDescuentoAnticipoValorTotal(params, data, item, i, config) {
const jsonResult = {};
jsonResult['dDescItem'] = 0;
if (item['descuento'] && +item['descuento'] > 0) {
//El descuento por item se pasa asi mismo como viene en el JSON, sin redondeos, igual al precio
jsonResult['dDescItem'] = item['descuento'];
/* //Validar que si el descuento es mayor al precio
jsonResult['dDescItem'] = parseFloat(item['descuento']).toFixed(config.decimals);
if (data.moneda === 'PYG') {
jsonResult['dDescItem'] = parseFloat(jsonResult['dDescItem']).toFixed(config.pygDecimals);
}
*/
//FacturaSend calcula solo el % Descuento, no hace falta informar
jsonResult['dPorcDesIt'] = Math.round((parseFloat(item['descuento']) * 100) / parseFloat(item['precioUnitario']));
}
let totalGeneral = 0;
for (let i = 0; i < data['items'].length; i++) {
const item2 = data['items'][i];
totalGeneral += item2['cantidad'] * item2['precioUnitario'];
}
jsonResult['dDescGloItem'] = 0;
if (data['descuentoGlobal'] && +data['descuentoGlobal'] > 0) {
let subtotal = item['cantidad'] * item['precioUnitario'];
let pesoPorc = (100 * subtotal) / totalGeneral;
let descuentoGlobalAplicado = (data['descuentoGlobal'] * pesoPorc) / 100;
let descuentoGlobalUnitario = descuentoGlobalAplicado / item['cantidad'];
jsonResult['dDescGloItem'] = parseFloat(descuentoGlobalUnitario + '').toFixed(8); //Deja en el maximo permitido para que el calculo al final salga exacto
if (data.moneda === 'PYG') {
//jsonResult['dDescGloItem'] = parseFloat(jsonResult['dDescGloItem']).toFixed(config.pygDecimals);
}
}
jsonResult['dAntPreUniIt'] = 0;
if (item['anticipo'] && +item['anticipo'] > 0) {
jsonResult['dAntPreUniIt'] = parseFloat(item['anticipo']).toFixed(config.decimals);
if (data.moneda === 'PYG') {
jsonResult['dAntPreUniIt'] = parseFloat(jsonResult['dAntPreUniIt']).toFixed(config.pygDecimals);
}
}
/*
if (data['anticipoGlobal'] && +data['anticipoGlobal'] > 0) {
jsonResult['dAntGloPreUniIt'] = parseFloat(data['anticipoGlobal']).toFixed(config.decimals);
}*/
jsonResult['dAntGloPreUniIt'] = 0;
if (data['anticipoGlobal'] && +data['anticipoGlobal'] > 0) {
let subtotal = item['cantidad'] * item['precioUnitario'];
let pesoPorc = (100 * subtotal) / totalGeneral;
let anticipoGlobalAplicado = (data['anticipoGlobal'] * pesoPorc) / 100;
let anticipoGlobalUnitario = anticipoGlobalAplicado / item['cantidad'];
jsonResult['dAntGloPreUniIt'] = parseFloat(anticipoGlobalUnitario + '').toFixed(8); //Analizar si no es mejor dejar config.decimals
if (data.moneda === 'PYG') {
jsonResult['dAntGloPreUniIt'] = parseFloat(jsonResult['dAntGloPreUniIt']).toFixed(config.pygDecimals);
}
}
/* dTotOpeItem (EA008)
Si D013 = 1, 3, 4 o 5 (afectado al IVA, Renta, ninguno, IVA - Renta),
entonces EA008 corresponde al cálculo aritmético:
(E721 (Precio unitario) –
EA002 (Descuento particular) –
EA004 (Descuento global) –
EA006 (Anticipo particular) –
EA007 (Anticipo global)) * E711(cantidad)
Cálculo para Autofactura (C002=4): E721 * E711
*/
if (data['tipoImpuesto'] == 1 ||
data['tipoImpuesto'] == 3 ||
data['tipoImpuesto'] == 4 ||
data['tipoImpuesto'] == 5) {
const precioUnitarioConDescuentoAplicado = parseFloat(item['precioUnitario']) -
parseFloat(jsonResult['dDescItem'] || 0) -
parseFloat(jsonResult['dDescGloItem'] || 0) -
parseFloat(jsonResult['dAntPreUniIt'] || 0) -
parseFloat(jsonResult['dAntGloPreUniIt'] || 0);
jsonResult['dTotOpeItem'] = parseFloat(precioUnitarioConDescuentoAplicado + '') * parseFloat(item['cantidad']);
if (config.sum0_000001SuffixBeforeToFixed == true) {
jsonResult['dTotOpeItem'] += 0.000001;
}
if (jsonResult['dDescGloItem'] == 0) {
// Cuando no hay descuento Global por item, entonces utiliza los redondeos establecidos en config, para el dTotOpeItem
jsonResult['dTotOpeItem'] = parseFloat(jsonResult['dTotOpeItem'].toFixed(config.decimals));
if (data.moneda === 'PYG') {
jsonResult['dTotOpeItem'] = parseFloat(jsonResult['dTotOpeItem'].toFixed(config.pygDecimals));
}
}
else {
// Cuando hay descuento Global por item, entonces utiliza el maximo permitido para que el calculo al final salga exacto.
jsonResult['dTotOpeItem'] = parseFloat(jsonResult['dTotOpeItem'].toFixed(8));
}
}
if (data['tipoDocumento'] == 4) {
//Si es Autofactura
jsonResult['dTotOpeItem'] = parseFloat(item['precioUnitario']) * parseFloat(item['cantidad']);
jsonResult['dTotOpeItem'] = parseFloat(jsonResult['dTotOpeItem'].toFixed(config.decimals));
if (data.moneda === 'PYG') {
jsonResult['dTotOpeItem'] = parseFloat(jsonResult['dTotOpeItem'].toFixed(config.pygDecimals));
}
}
if (data['condicionTipoCambio'] == 2) {
jsonResult['dTotOpeGs'] = jsonResult['dTotOpeItem'] * item['cambio'];
}
return jsonResult;
}
/**
* E8.2. Campos que describen el IVA de la operación por ítem (E730-E739)
*
* @param params
* @param data
* @param options
* @param items Es el item actual del array de items de "data" que se está iterando
*/
generateDatosItemsOperacionIVA(params, data, item, i, gCamItem, config) {
const jsonResult = {
iAfecIVA: item['ivaTipo'],
dDesAfecIVA: constants_service_1.default.codigosAfectaciones.filter((ca) => ca.codigo === +item['ivaTipo'])[0]['descripcion'],
dPropIVA: item['ivaBase'],
dTasaIVA: item['iva'],
};
/* Calculo para E735
Si E731 = 1 o 4 este campo es igual al resultado del cálculo
[EA008 * (E733/100)] / 1,1 si la tasa es del 10%
[EA008 * (E733/100)] / 1,05 si la tasa es del 5%
Si E731 = 2 o 3 este campo es igual 0
*/
jsonResult['dBasGravIVA'] = 0; //Valor por defecto
if (item['ivaTipo'] == 1 || item['ivaTipo'] == 4) {
////////////////////////////////////////////////////////////////////////////////////////////////////////
// Antes de NT13 -- esta opcion esta deprecada, valida solo hasta el 21/05/2023
if (item['iva'] == 10) {
jsonResult['dBasGravIVA'] =
(gCamItem['gValorItem']['gValorRestaItem']['dTotOpeItem'] * (item['ivaBase'] / 100)) / 1.1;
}
if (item['iva'] == 5) {
jsonResult['dBasGravIVA'] =
(gCamItem['gValorItem']['gValorRestaItem']['dTotOpeItem'] * (item['ivaBase'] / 100)) / 1.05;
}
if (config.test == true) {
// En ambiente de test desde 21/04/2023 hasta 21/05/2023
// Aplicando NT13
//-------------------------------------------------------------
/**
* Cambios en NT13
Si E731 = 1 o 4 este campo es igual al resultado del cálculo:
[100 * EA008 * E733] / [10000 + (E734 * E733)]
Si E731 = 2 o 3 este campo es igual 0
*/
if (new Date().getTime() >= new Date('2023-04-21').getTime()) {
jsonResult['dBasGravIVA'] =
(100 * gCamItem['gValorItem']['gValorRestaItem']['dTotOpeItem'] * item['ivaBase']) /
(10000 + item['iva'] * item['ivaBase']);
}
}
//Vigencia en Test y Produccion
if (new Date().getTime() >= new Date('2023-06-17').getTime()) {
//Si la fecha de hoy ya supera el plazo de entrada en vigor ya no importa, utiliza la nueva forma.
/**
* Cambios en NT13
Si E731 = 1 o 4 este campo es igual al resultado del cálculo:
[100 * EA008 * E733] / [10000 + (E734 * E733)]
Si E731 = 2 o 3 este campo es igual 0
*/
jsonResult['dBasGravIVA'] =
(100 * gCamItem['gValorItem']['gValorRestaItem']['dTotOpeItem'] * item['ivaBase']) /
(10000 + item['iva'] * item['ivaBase']);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
//Redondeo inicial a 2 decimales
if (jsonResult['dBasGravIVA']) {
jsonResult['dBasGravIVA'] = parseFloat(jsonResult['dBasGravIVA'].toFixed(config.partialTaxDecimals)); //Calculo intermedio, usa max decimales de SIFEN.
}
}
/*
Calculo para E736
Corresponde al cálculo aritmético:
E735 * ( E734 / 100 )
Si E731 = 2 o 3 este campo es igual 0
*/
jsonResult['dLiqIVAItem'] = 0;
if (item['ivaTipo'] == 1 || item['ivaTipo'] == 4) {
jsonResult['dLiqIVAItem'] = (jsonResult['dBasGravIVA'] * item['iva']) / 100;
//Redondeo
jsonResult['dLiqIVAItem'] = parseFloat(jsonResult['dLiqIVAItem'].toFixed(config.partialTaxDecimals));
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
if (config.test == true) {
//Ambiente de test de SIFEN
if (new Date().getTime() >= new Date('2023-04-21').getTime()) {
//Esta parte debe entrar en vigor en produccion a partir de 21/05/2023
//Calculo para E737, aparecio en la NT13
jsonResult['dBasExe'] = 0; //Valor por defecto E737
if (item['ivaTipo'] == 4) {
//E731 == 4
// Aplicando NT13
//-------------------------------------------------------------
/**
Si E731 = 4 este campo es igual al resultado del cálculo:
[100 * EA008 * (100 – E733)] / [10000 + (E734 * E733)]
Si E731 = 1 , 2 o 3 este campo es igual 0
*/
jsonResult['dBasExe'] =
(100 * gCamItem['gValorItem']['gValorRestaItem']['dTotOpeItem'] * (100 - item['ivaBase'])) /
(10000 + item['iva'] * item['ivaBase']);
//Redondeo inicial a 2 decimales
if (jsonResult['dBasExe']) {
jsonResult['dBasExe'] = parseFloat(jsonResult['dBasExe'].toFixed(config.partialTaxDecimals)); //Calculo intermedio, usa max decimales de SIFEN.
}
}
}
}
//Vigencia en test y produccion
if (new Date().getTime() >= new Date('2023-06-17').getTime()) {
//No importando si es test o produccion, luego del plazo de entrada en vigor en produccion ya aplica igualmente.
jsonResult['dBasExe'] = 0; //Valor por defecto E737
if (item['ivaTipo'] == 4) {
//E731 == 4
// Aplicando NT13
//-------------------------------------------------------------
/**
Si E731 = 4 este campo es igual al resultado del cálculo:
[100 * EA008 * (100 – E733)] / [10000 + (E734 * E733)]
Si E731 = 1 , 2 o 3 este campo es igual 0
*/
jsonResult['dBasExe'] =
(100 * gCamItem['gValorItem']['gValorRestaItem']['dTotOpeItem'] * (100 - item['ivaBase'])) /
(10000 + item['iva'] * item['ivaBase']);
//Redondeo inicial a 2 decimales
if (jsonResult['dBasExe']) {
jsonResult['dBasExe'] = parseFloat(jsonResult['dBasExe'].toFixed(config.partialTaxDecimals)); //Calculo intermedio, usa max decimales de SIFEN.
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
return jsonResult;
}
/**
* E8.4. Grupo de rastreo de la mercadería (E750-E760)
*
* @param params
* @param data
* @param options
* @param items Es el item actual del array de items de "data" que se está iterando
*/
generateDatosItemsOperacionRastreoMercaderias(params, data, item, i) {
const jsonResult = {};
if (item['lote']) {
jsonResult['dNumLote'] = item['lote'];
}
if (item['vencimiento']) {
jsonResult['dVencMerc'] = item['vencimiento'];
}
if (item['numeroSerie']) {
jsonResult['dNSerie'] = item['numeroSerie'];
}
if (item['numeroPedido']) {
jsonResult['dNumPedi'] = item['numeroPedido'];
}
if (item['numeroSeguimiento']) {
jsonResult['dNumSegui'] = item['numeroSeguimiento'];
}
if (item['importador'] && item['importador']['nombre']) {
//nt009 se retira estos campo
//jsonResult['dNomImp'] = item['importador']['nombre'].substring(0, 60);
//jsonResult['dDirImp'] = item['importador']['direccion'].substring(0, 255);
//jsonResult['dNumFir'] = item['importador']['registroImportador'].substring(0, 20);
//nt009 se retira estos campo
}
if (item['registroSenave']) {
jsonResult['dNumReg'] = item['registroSenave'];
}
if (item['registroEntidadComercial']) {
jsonResult['dNumRegEntCom'] = item['registroEntidadComercial'];
}
if (item['nombreProducto']) {
jsonResult['dNomPro'] = item['nombreProducto']; //E761
}
return jsonResult;
}
/**
* E8.5. Sector de automotores nuevos y usados (E770-E789)
*
* @param params
* @param data
* @param options
* @param items Es el item actual del array de items de "data" que se está iterando
*/
generateDatosItemsOperacionSectorAutomotores(params, data, item, i) {
if (!item['sectorAutomotor']) {
//Como no indica que este campo es obligatorio, si no se informa sale con vacio
return null;
}
/*if (
constanteService.tiposOperacionesVehiculos.filter((um) => um.codigo === item['sectorAutomotor']['tipo']).length ==
0
) {
throw new Error(
"Tipo de Operación de Venta de Automotor '" +
item['sectorAutomotor']['tipo'] +
"' en data.items[" +
i +
'].sectorAutomotor.tipo no encontrado. Valores: ' +
constanteService.tiposOperacionesVehiculos.map((a) => a.codigo + '-' + a.descripcion),
);
}
if (
constanteService.tiposCombustibles.filter((um) => um.codigo === item['sectorAutomotor']['tipoCombustible'])
.length == 0
) {
throw new Error(
"Tipo de Combustible '" +
item['sectorAutomotor']['tipoCombustible'] +
"' en data.items[" +
i +
'].sectorAutomotor.tipoCombustible no encontrado. Valores: ' +
constanteService.tiposCombustibles.map((a) => a.codigo + '-' + a.descripcion),
);
}*/
/*if (item['sectorAutomotor']['chasis']) {
if (item['sectorAutomotor']['chasis'].length != 17) {
throw new Error(
"El Chasis '" + item['sectorAutomotor']['chasis'] + "' en data.items[" + i + '] debe tener 17 caracteres',
);
}
}*/
/*if (item['sectorAutomotor']['cilindradas']) {
if ((item['sectorAutomotor']['cilindradas'] + '').length != 4) {
throw new Error(
"La Cilindradas '" +
item['sectorAutomotor']['cilindradas'] +
"' en data.items[" +
i +
'] debe tener 4 caracteres',
);
}
}*/
const jsonResult = {
iTipOpVN: item['sectorAutomotor']['tipo'],
dDesTipOpVN: constants_service_1.default.tiposOperacionesVehiculos.filter((ov) => ov.codigo === item['sectorAutomotor']['tipo'])[0]['descripcion'],
dChasis: item['sectorAutomotor']['chasis'],
dColor: item['sectorAutomotor']['color'],
dPotencia: item['sectorAutomotor']['potencia'],
dCapMot: item['sectorAutomotor']['capacidadMotor'],
dPNet: item['sectorAutomotor']['pesoNeto'],
dPBruto: item['sectorAutomotor']['pesoBruto'],
iTipCom: item['sectorAutomotor']['tipoCombustible'],
dDesTipCom: constants_service_1.default.tiposCombustibles.filter((tc) => tc.codigo === item['sectorAutomotor']['tipoCombustible'])[0]['descripcion'],
dNroMotor: item['sectorAutomotor']['numeroMotor'],
dCapTracc: item['sectorAutomotor']['capacidadTraccion'],
dAnoFab: item['sectorAutomotor']['año'],
cTipVeh: item['sectorAutomotor']['tipoVehiculo'],
dCapac: item['sectorAutomotor']['capacidadPasajeros'],
};
if (item['sectorAutomotor']['cilindradas']) {
jsonResult['dCilin'] = item['sectorAutomotor']['cilindradas'] + '';
}
//Se puede hacer todo por if, para no enviar null
return jsonResult;
}
}
exports.default = new JSonDteItemService();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkR0ZUl0ZW0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9qc29uRHRlSXRlbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOEVBQXFEO0FBQ3JELDRFQUFtRDtBQUduRCxNQUFNLGtCQUFrQjtJQUN0Qjs7Ozs7O09BTUc7SUFDSSwyQkFBMkIsQ0FBQyxNQUFXLEVBQUUsSUFBUyxFQUFFLE1BQW9CO1FBQzdFLE1BQU0sVUFBVSxHQUFRLEVBQUUsQ0FBQztRQUUzQixvREFBb0Q7UUFDcEQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDN0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzdDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFOUIsTUFBTSxRQUFRLEdBQVE7b0JBQ3BCLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO2lCQUN4QixDQUFDO2dCQUVGLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLEVBQUU7b0JBQzlCLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztpQkFDcEQ7Z0JBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ2YsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDaEM7Z0JBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMs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