Este módulo soporta las versiónes 3.2 y 3.3 con los siguientes complementos del SAT.
-
Timbre fiscal
-
Pagos
-
Impuestos Locales
-
Nominas 1.1 y 1.2
-
Estado cuenta combustible 1.0, 1.1 y 1.2
-
Donatarias
-
Divisas
-
Leyendas fiscales
-
PFintegrante coordinado
-
Turista pasajero extranjero
-
Spei
-
Detallista
-
Cfdi registro fiscal
-
Pago en especie
-
Vales de despensa
-
Consumo de combustibles 1.0 y 1.1
-
Aerolineas
-
Notarios
-
Vehiculos usados
-
Servicio parcial construccion
-
Renovacion sustitucion vehiculos
-
Certificado destrucción
-
Obras arte antiguedades
-
ComercioExterior 1.1 y 1.1
-
Ine
-
Retenciones
- Arrendamiento en Fideicomiso
- Dividendos
- Enajenacion de Acciones
- Fideicomiso no Empresarial
- Intereses
- Intereses Hipotecarios
- Operaciones con Derivados
- Pagos a Extranjeros
- Planes de Retiro V1.1
- Premios
- Sector Financiero
- Servicios Plataformas Tecnologicas
npm i --save cfdi-to-json
const CfdiToJson = require('cfdi-to-json');
var jsonCfdi = null;
// Uso con ruta del XML
jsonCfdi = CfdiToJson.parse({ path: 'RUTA_DEL_CFDI.xml' });
// Uso con el contenido del XML
jsonCfdi = CfdiToJson.parse({
contentXML: `
<?xml version="1.0" encoding="utf-8"?>
<cfdi:Comprobante Version="3.3" ...>
...
</cfdi:Comprobante>
`
});
Este es un ejemplo de como vendría formateado el JSON resultado. Puedes probar con CFDIs complejos para ver como se formatean en tu caso.
{
version: String,
serie: String,
sello: String,
folio: String,
fecha: String,
formaDePago: String,
metodoDePago: String,
subTotal: String,
total: String,
certificado: String,
noCertificado: String,
tipoDeComprobante: String,
moneda: String,
tipoCambio: String,
descuento: String,
motivoDescuento: String,
lugarExpedicion: String,
numCtaPago: String,
emisor: Object<{
nombre: String,
rfc: String,
regimenFiscal: String
}>,
receptor: Object<{
nombre: String,
rfc: String,
residenciaFiscal: String,
numRegIdTrib: String,
usoCFDI: String
}>,
conceptos: Array<{
claveProdServ: String,
noIdentificacion: String,
cantidad: String,
claveUnidad: String,
unidad: String,
descripcion: String,
valorUnitario: String,
importe: String,
descuento: String
}>
impuestos: Object<{
totalImpuestosRetenidos: String,
totalImpuestosTrasladados: String,
traslados: Array<{ ... }>,
retenciones: Array<{ ... }>
}>,
timbreFiscal: Object<{
fechaTimbrado: String,
uuid: String,
noCertificadoSAT: String,
selloSAT: String,
selloCFD: String,
RFCProvCertif: String
}>
...
}
MIT