Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

virtualxml-cfdi

1.0.5 • Public • Published

# virtualxml-cfdi

MIT License NPM version NODE version NPM downloads

Librería para firmar, sellar y timbrar cfdi

Introducción

Librería para la generación de CFDI 3.3, incluidos todos los complementos vigentes. Incluye el proceso de firmado, Sellado y tambien el Timbrado por medio del servicio de VirtualPAC, de acuerdo a la especificación del SAT.

Características

  • Generación de CFDI 3.3
  • Generación de todos los complementos vigentes:
  • Generación de representacion impresa simple (PDF)
  • Generación de Codigo de Barras Bidimensional en formatos: png, jpg y bmp
  • Sellado local (tu llave privada y clave son usadas localmente)

Instalación

NPM:

$ npm install --save virtualxml-cfdi

Requisitos

  • Contar con un CSD vigente (Certificado de Sello Digital).
  • Contar con los archivos .cer, .key
  • Contar con la clave del archivo .key
  • En caso de desear timbrar con credenciales diferentes al demo; haber contratado un plan de timbres con VirtualPAC

NOTA: Los archivos .cer/.key de la FIEL no funcionan para el proceso de timbrado, deberan usarse los del CSD

Información DEMO

Estas credenciales pueden usarse sin necesidad de ningun tipo de registro

  • usuario: demo_nodejs
  • rfcemisor: AAA010101AAA
  • Certificado Emisor: CSD01_AAA010101AAA.cer (archivo ubicado dentro de la carpeta "test" del paquete)
  • Llave Privada Emisor: CSD01_AAA010101AAA.key (archivo ubicado dentro de la carpeta "test" del paquete)
  • Clave Llave Privada: 12345678a

Contacto

Métodos

addFunctionCall

Agrega al Stack FIFO una llamada referenciada a la funcion funcName con los parámetros especificados.

  • Parametros
    Nombre Tipo Requerido Ejemplo
    funcName Cadena VirtualXML_SetEmisorInfo_cfdi33
    ...args Multi parámetros 'AAA010101AAA', 'NombreDelEmisorRazónSocial', '601'

NOTA: Dependiendo de la funcion referenciada (funcName), el numero de parámetros varía. Ver las funciones disponibles y numero de argumentos en la sección funciones referenciadas

  • Retorno La instancia de la clase, para usarse con llamadas secuenciales en 1 sola linea si se desea.
emiteCFDI33

Procesa Stack de funciones e intenta timbrar el documento generado.

  • Parametros

    Nombre Tipo Requerido Ejemplo
    usuario Cadena demo_nodejs
    rfcemisor Cadena AAA010101AAA
    certificado Cadena ./MisCertificados/AAA010101AAA.cer o Base64 (MIIF+TCCA+GgAwIBAgI...)
    llaveprivada Cadena ./MisCertificados/AAA010101AAA.key o Base64 (MIIFDjBABgkqhkiG9w0...)
    clave Cadena 12345678a
    outbasepath Cadena No ../../salida/
    outprefix Cadena No prefijo
    outsuffix Cadena No sufijo
    qrpng Bool No true
    qrbmp Bool No false
    qrjpg Bool No false
    pdf Bool No true
  • Retorno Regresa una promesa. Un timbrado exitoso tendra resolvera la promesa (resolve/then) y la respuesta contendra un exitcode = 0, un uuid y un xmltimbrado. Cualquier otro valor sera un error en el proceso y debera referirse al mensaje message = ... normalmente en el rechazo (reject/catch) de la promesa

    • Resolve (Then)

      { 
      "exitcode": 0, 
      "message": ""
      "uuid": "025357315-4D60-4E56-A056-7AA0B1D8D95F", 
      "xmltimbrado": "XML en base64", 
      "qrpng": "QR.png en base64",
      "qrjpg": "QR.jpg en base64",
      "qrbmp": "QR.bmp en base64",
      "pdf": "Representacion impresa PDF en base64",
      }
    • Reject (Catch)

      { 
      "exitcode": -5, 
      "message": "Algunas funciones no son validas: VirtualXML_NoExiste_cfdi33"
      }

Proceso

El siguiente diagrama muestra el proceso completo:

virtualxml-cfdi

Demo

En el siguiente enlace se podra descargar un demo que incluye:

  • Cliente Web: Contiene un formulario simple que sirve de interface para llenar la informacion del CFDI asi como observar la respuesta obtenida por el uso de virtualxml-cfdi por parte del servidor.
  • Servidor: Sirve como capa de negocio exponiendo un servicio REST que procesa las solicitudes del cliente y hace uso de este paquete (virtualxml-cfdi) para la firma, sellado y timbrado del CFDI.

Descarga aqui

UsoDemo

Abrir linea de comandos en folder server y ejecutar:

$ npm install
$ npm start

Abrir linea de comandos en folder client

$ npm install
$ npm start

Abrir browser en direccion http://localhost:3000 y probar el demo.

virtualxml-cfdi

Funciones Referenciadas

Estas funciones son añadidas a una pila FIFO (FirstIn-FirstOut) para ser enviadas y ejecutadas remotamente. Constan de un nombre funcName y de 1 o mas parámetros.
Las funciones se agregan a la pila mediante el metodo addFunctionCall una vez que la clase VirtualXML ha sido instanciada. El siguiente ejemplo ilustra el modo de uso:

Los parámetros de funcName deberan ser de tipo cadena independientemente del tipo de dato que representen, y deberan tener el formato que corresponda de acuerdo a los lineamientos del SAT.

Los parámetros de funcName deberan ser una cadena vacia si no contiene informacion, y debera respetarse la posicion de los mismos.

const VirtualXML = require('virtualxml-cfdi');
const vxml = new VirtualXML(); // Nueva Instancia
vxml.addFunctionCall( 'VirtualXML_SetComprobanteInfo_cfdi33', // **funcName**
                      'NOM',                                  // param01 = Serie
                      '1',                                    // param02 = Folio
                      '2018-01-30T05:24:30',                  // param03 = Fecha
                      '01',                                   // param04 = FormaPago
                      'CondiciónDePago',                      // param05 = CondicionesDePago
                      '5000.00',                              // param06 = SubTotal
                      '',                                     // param07 = Descuento
                      'MXN',                                  // param08 = Moneda
                      '',                                     // param09 = TipoCambio
                      '5000.00',                              // param10 = Total
                      'I',                                    // param11 = TipoDeComprobante
                      'PUE',                                  // param12 = MetodoPago
                      '68025',                                // param13 = LugarExpedicion
                      '');                                    // param14 = Confirmacion 

Se pueden agregar tantas llamadas como se necesiten para el correcto llenado del CFDI, teniendo en cuenta que algunos elementos que pueden aparecer varias veces (ej. cfdi.Conceptos), a su vez podran contener un detalle y las funciones del detalle afectaran al ultimo elemento padre al que pertenece. Por ejemplo:

const VirtualXML = require('virtualxml-cfdi');
const vxml = new VirtualXML(); // Nueva Instancia
vxml.addFunctionCall('VirtualXML_SetComprobanteInfo_cfdi33','NOM','1','2018-01-30T05:24:30','01','CondiciónDePago','5000.00','','MXN','','5000.00','I','PUE','68025',''); 
vxml.addFunctionCall('VirtualXML_SetReceptorInfo_cfdi33', 'MAG041126GT8', 'NombreDelReceptorRazónSocial', '', '', 'G01');
vxml.addFunctionCall('VirtualXML_AddConcepto_cfdi33', '15101501', '', '1', 'DPC', 'Pieza', 'Concepto01', '1000.00', '1000.00', '');
vmlx.addFunctionCall('VirtualXML_AddConceptoCuentaPredial_cfdi33','5678901');
vxml.addFunctionCall('VirtualXML_AddConcepto_cfdi33', '15101502', '', '1', 'DPC', 'Pieza', 'Concepto02', '2000.00', '2000.00', '');
vxml.addFunctionCall('VirtualXML_AddConcepto_cfdi33', '15101503', '', '1', 'DPC', 'Pieza', 'Concepto03', '3000.00', '3000.00', '');
vmlx.addFunctionCall('VirtualXML_AddConceptoTraslado_cfdi33','3000.00','002','Tasa','0.160000','480.00');
// Para funciones que afectan informacion unica, NO importa el momento en que se llamen
vxml.addFunctionCall('VirtualXML_SetEmisorInfo_cfdi33', 'AAA010101AAA', 'NombreDelEmisorRazónSocial', '601'); 
// Esta funcion afectara al ultimo CONCEPTO agregado
vmlx.addFunctionCall('VirtualXML_AddConceptoRetencion_cfdi33','3000.00','003','Tasa','0.300000','900.00');

El resultado seria un CFDI con la siguiente estructura:

CFDI
|--Emisor
|--Receptor
|--Conceptos
      |--Concepto01
            |--CuentaPredial
      |--Concepto02
      |--Concepto03
            |--Impuestos
                  |--Traslado
                  |--Retencion
CFDI.Básicas
  • VirtualXML_SetComprobanteInfo_cfdi33

    • [01] Serie
    • [02] Folio
    • [03] Fecha
    • [04] FormaPago
    • [05] CondicionesDePago
    • [06] SubTotal
    • [07] Descuento
    • [08] Moneda
    • [09] TipoCambio
    • [10] Total
    • [11] TipoDeComprobante
    • [12] MetodoPago
    • [13] LugarExpedicion
    • [14] Confirmacion
  • VirtualXML_SetCfdiRelacionados_cfdi33

    • [01] TipoRelacion
  • VirtualXML_AddCfdiRelacionado_cfdi33 (Usar antes SetCfdiRelacionados)

    • [01] UUID
  • VirtualXML_SetEmisorInfo_cfdi33

    • [01] Rfc
    • [02] Nombre
    • [03] RegimenFiscal
  • VirtualXML_SetReceptorInfo_cfdi33

    • [01] Rfc
    • [02] Nombre
    • [03] ResidenciaFiscal
    • [04] NumRegIdTrib
    • [05] UsoCFDI
  • VirtualXML_SetImpuestosInfo_cfdi33

    • [01] TotalImpuestosTrasladados
    • [02] TotalImpuestosRetenidos
  • VirtualXML_AddTraslado_cfdi33 (Usar antes SetImpuestosInfo)

    • [01] Impuesto
    • [02] TipoFactor
    • [03] TasaOCuota
    • [04] Importe
  • VirtualXML_AddRetencion_cfdi33 (Usar antes SetImpuestosInfo)

    • [01] Impuesto
    • [02] Importe
  • VirtualXML_SetAddenda_cfdi33

    • [01] FragmentoXML (Debe ser válido e incluir los namespaces que pudiera utilizar)
  • VirtualXML_SetAddendaText_cfdi33

    • [01] TextoAddenda (Los caracteres especiales se codificaran en unicode)
CFDI.Conceptos
  • VirtualXML_AddConcepto_cfdi33

    • [01] ClaveProdServ
    • [02] NoIdentificacion
    • [03] Cantidad
    • [04] ClaveUnidad
    • [05] Unidad
    • [06] Descripcion
    • [07] ValorUnitario
    • [08] Importe
    • [09] Descuento
  • VirtualXML_AddConceptoTraslado_cfdi33 (Usar antes AddConcepto)

    • [01] Base
    • [02] Impuesto
    • [03] TipoFactor
    • [04] TasaOCuota
    • [05] Importe
  • VirtualXML_AddConceptoRetencion_cfdi33 (Usar antes AddConcepto)

    • [01] Base
    • [02] Impuesto
    • [03] TipoFactor
    • [04] TasaOCuota
    • [05] Importe
  • VirtualXML_AddConceptoInformacionAduanera_cfdi33 (Usar antes AddConcepto)

    • [01] NumeroPedimento
  • VirtualXML_AddConceptoCuentaPredial_cfdi33 (Usar antes AddConcepto)

    • [01] Numero
  • VirtualXML_AddConceptoParte_cfdi33 (Usar antes AddConcepto)

    • [01] ClaveProdServ
    • [02] NoIdentificacion
    • [03] Cantidad
    • [04] Unidad
    • [05] Descripcion
    • [06] ValorUnitario
    • [07] Importe
    • [08] NumeroPedimento
CFDI.Conceptos.ComplementoConcepto.iedu10
  • VirtualXML_AddConceptoComplementoIedu_cfdi33 (Usar antes AddConcepto)
    • [01] nombreAlumno
    • [02] CURP
    • [03] nivelEducativo
    • [04] autRVOE
    • [05] rfcPago
CFDI.Conceptos.ComplementoConcepto.ventavehiculos11
  • VirtualXML_AddConceptoComplementoVentaVehiculos11_cfdi33 (Usar antes AddConcepto)
    • [01] ClaveVehicular
    • [02] Niv
    • [03] numero
    • [04] fecha
    • [05] aduana);
CFDI.Conceptos.ComplementoConcepto.terceros11
  • VirtualXML_SetConceptoComplementoTerceros11 (Usar antes AddConcepto)

    • [01] rfc
    • [02] nombre
    • [03] calle
    • [04] noExterior
    • [05] noInterior
    • [06] colonia
    • [07] localidad
    • [08] referencia
    • [09] municipio
    • [10] estado
    • [11] pais
    • [12] codigoPostal
  • VirtualXML_AddTerceros11InformacionAduanera (Usar antes SetConceptoComplementoTerceros11)

    • [01] numero
    • [02] fecha
    • [03] aduana
  • VirtualXML_AddTerceros11CuentaPredial (Usar antes SetConceptoComplementoTerceros11)

    • [01] numero
  • VirtualXML_AddTerceros11Parte (Usar antes SetConceptoComplementoTerceros11)

    • [01] cantidad
    • [02] unidad
    • [03] noIdentificacion
    • [04] descripcion
    • [05] valorUnitario
    • [06] importe
    • [07] numero
    • [08] fecha
    • [09] aduana
  • VirtualXML_AddTerceros11ParteInformacionAduanera (Usar antes AddTerceros11Parte)

    • [01] numero
    • [02] fecha
    • [03] aduana
  • VirtualXML_AddTerceros11Retencion (Usar antes SetConceptoComplementoTerceros11)

    • [01] impuesto
    • [02] importe
  • VirtualXML_AddTerceros11Traslado (Usar antes SetConceptoComplementoTerceros11)

    • [01] impuesto
    • [02] tasa
    • [03] importe
CFDI.Complemento.Nomina12
  • VirtualXML_SetNomina12

    • [01] TipoNomina
    • [02] FechaPago
    • [03] FechaInicialPago
    • [04] FechaFinalPago
    • [05] NumDiasPagados
    • [06] TotalPercepciones
    • [07] TotalDeducciones
    • [08] TotalOtrosPagos
  • VirtualXML_Nomina12SetEmisor (Usar antes SetNomina12)

    • [01] Curp
    • [02] RegistroPatronal
    • [03] RfcPatronOrigen
    • [04] OrigenRecurso
    • [05] MontoRecursoPropio
  • VirtualXML_Nomina12SetReceptor (Usar antes SetNomina12)

    • [01] Curp
    • [02] NumSeguridadSocial
    • [03] FechaInicioRelLaboral
    • [04] Antigüedad
    • [05] TipoContrato
    • [06] Sindicalizado
    • [07] TipoJornada
    • [08] TipoRegimen
    • [09] NumEmpleado
    • [10] Departamento
    • [11] Puesto
    • [12] RiesgoPuesto
    • [13] PeriodicidadPago
    • [14] Banco
    • [15] CuentaBancaria
    • [16] SalarioBaseCotApor
    • [17] SalarioDiarioIntegrado
    • [18] ClaveEntFed
  • VirtualXML_Nomina12AddSubContratacion (Usar antes Nomina12SetReceptor)

    • [01] RfcLabora
    • [02] PorcentajeTiempo
  • VirtualXML_Nomina12SetPercepciones (Usar antes SetNomina12)

    • [01] TotalSueldos
    • [02] TotalSeparacionIndemnizacion
    • [03] TotalJubilacionPensionRetiro
    • [04] TotalGravado
    • [05] TotalExento
  • VirtualXML_Nomina12AddPercepcion (Usar antes Nomina12SetPercepciones)

    • [01] TipoPercepcion
    • [02] Clave
    • [03] Concepto
    • [04] ImporteGravado
    • [05] ImporteExento
    • [06] Dias
    • [07] TipoHoras
    • [08] HorasExtra
    • [09] ImportePagado
    • [10] ValorMercado
    • [11] PrecioAlOtorgarse
  • VirtualXML_Nomina12SetJubilacionPensionRetiro (Usar antes Nomina12SetPercepciones)

    • [01] TotalUnaExhibicion
    • [02] TotalParcialidad
    • [03] MontoDiario
    • [04] IngresoAcumulable
    • [05] IngresoNoAcumulable
  • VirtualXML_Nomina12SetSeparacionIndemnizacion (Usar antes Nomina12SetPercepciones)

    • [01] TotalPagado
    • [02] NumAñosServicio
    • [03] UltimoSueldoMensOrd
    • [04] IngresoAcumulable
    • [05] IngresoNoAcumulable
  • VirtualXML_Nomina12SetDeducciones (Usar antes SetNomina12)

    • [01] TotalOtrasDeducciones
    • [02] TotalImpuestosRetenidos
  • VirtualXML_Nomina12AddDeduccion (Usar antes Nomina12SetDeducciones)

    • [01] TipoDeduccion
    • [02] Clave
    • [03] Concepto
    • [04] Importe
  • VirtualXML_Nomina12AddOtroPago (Usar antes SetNomina12)

    • [01] TipoOtroPago
    • [02] Clave
    • [03] Concepto
    • [04] Importe
    • [05] SaldoAFavor
    • [06] Año
    • [07] RemanenteSalFav
    • [08] SubsidioCausado
  • VirtualXML_Nomina12AddIncapacidad (Usar antes SetNomina12)

    • [01] DiasIncapacidad
    • [02] TipoIncapacidad
    • [03] ImporteMonetario
CFDI.Complemento.cce11
  • VirtualXML_SetComercioExterior11

    • [01] MotivoTraslado
    • [02] TipoOperacion
    • [03] ClaveDePedimento
    • [04] CertificadoOrigen
    • [05] NumCertificadoOrigen
    • [06] NumeroExportadorConfiable
    • [07] Incoterm
    • [08] Subdivision
    • [09] Observaciones
    • [10] TipoCambioUSD
    • [11] TotalUSD
  • VirtualXML_CCE11SetEmisor (Usar antes SetComercioExterior11)

    • [01] Curp
    • [02] Calle
    • [03] NumeroExterior
    • [04] NumeroInterior
    • [05] Colonia
    • [06] Localidad
    • [07] Referencia
    • [08] Municipio
    • [09] Estado
    • [10] Pais
    • [11] CodigoPostal
  • VirtualXML_CCE11AddPropietario (Usar antes SetComercioExterior11)

    • [01] NumRegIdTrib
    • [02] ResidenciaFiscal
  • VirtualXML_CCE11SetReceptor (Usar antes SetComercioExterior11)

    • [01] NumRegIdTrib
    • [02] Calle
    • [03] NumeroExterior
    • [04] NumeroInterior
    • [05] Colonia
    • [06] Localidad
    • [07] Referencia
    • [08] Municipio
    • [09] Estado
    • [10] Pais
    • [11] CodigoPostal
  • VirtualXML_CCE11AddDestinatario (Usar antes SetComercioExterior11)

    • [01] NumRegIdTrib
    • [02] Nombre
    • [03] Calle
    • [04] NumeroExterior
    • [05] NumeroInterior
    • [06] Colonia
    • [07] Localidad
    • [08] Referencia
    • [09] Municipio
    • [10] Estado
    • [11] Pais
    • [12] CodigoPostal
  • VirtualXML_CCE11AddMercancia (Usar antes SetComercioExterior11)

    • [01] NoIdentificacion
    • [02] FraccionArancelaria
    • [03] CantidadAduana
    • [04] UnidadAduana
    • [05] ValorUnitarioAduana
    • [06] ValorDolares
    • [07] Marca
    • [08] Modelo
    • [09] SubModelo
    • [10] NumeroSerie
  • VirtualXML_CCE11AddMercanciaDescripcionesEspecificas (Usar antes CCE11AddMercancia)

    • [01] Marca
    • [02] Modelo
    • [03] SubModelo
    • [04] NumeroSerie
CFDI.Complemento.pagos10
  • VirtualXML_SetPagos10

    • Sin parametros adicionales
  • VirtualXML_Pagos10AddPago (Usar antes SetPagos10)

    • [01] FechaPago
    • [02] FormaDePagoP
    • [03] MonedaP
    • [04] TipoCambioP
    • [05] Monto
    • [06] NumOperacion
    • [07] RfcEmisorCtaOrd
    • [08] NomBancoOrdExt
    • [09] CtaOrdenante
    • [10] RfcEmisorCtaBen
    • [11] CtaBeneficiario
    • [12] TipoCadPago
    • [13] CertPago
    • [14] CadPago
    • [15] SelloPago
  • VirtualXML_Pagos10AddPagoDoctoRelacionado (Usar antes Pagos10AddPago)

    • [01] IdDocumento
    • [02] Serie
    • [03] Folio
    • [04] MonedaDR
    • [05] TipoCambioDR
    • [06] MetodoDePagoDR
    • [07] NumParcialidad
    • [08] ImpSaldoAnt
    • [09] ImpPagado
    • [10] ImpSaldoInsoluto
  • VirtualXML_Pagos10AddPagoImpuestos (Usar antes Pagos10AddPago)

    • [01] TotalImpuestosRetenidos
    • [02] TotalImpuestosTrasladados
  • VirtualXML_Pagos10AddPagoImpuestosRetencion (Usar antes Pagos10AddPagoImpuestos)

    • [01] Impuesto
    • [02] Importe
  • VirtualXML_Pagos10AddPagoImpuestosTraslado (Usar antes Pagos10AddPagoImpuestos)

    • [01] Impuesto
    • [02] TipoFactor
    • [03] TasaOCuota
    • [04] Importe
CFDI.Complemento.ImpuestosLocales10
  • VirtualXML_SetImpuestosLocales10

    • [01] TotaldeTraslados
    • [02] TotaldeRetenciones
  • VirtualXML_ImpLocal10AddRetencionesLocales (Usar antes SetImpuestosLocales10)

    • [01] ImpLocRetenido
    • [02] TasadeRetencion
    • [03] Importe
  • VirtualXML_ImpLocal10AddTrasladosLocales (Usar antes SetImpuestosLocales10)

    • [01] ImpLocTrasladado
    • [02] TasadeTraslado
    • [03] Importe
CFDI.Complemento.Donatarias11
  • VirtualXML_SetDonatarias11
    • [01] noAutorizacion
    • [02] fechaAutorizacion
    • [03] leyenda
CFDI.Complemento.INE11
  • VirtualXML_SetINE11

    • [01] TipoProceso
    • [02] TipoComite
    • [03] IdContabilidad
    • [04] ClaveEntidad
    • [05] Ambito
    • [06] EntidadContabilidadIdContabilidad
  • VirtualXML_INE11AddEntidad (Usar antes SetINE11)

    • [01] ClaveEntidad
    • [02] Ambito
    • [03] IdContabilidad
  • VirtualXML_INE11AddEntidadContabilidad (Usar antes INE11AddEntidad)

    • [01] IdContabilidad
CFDI.Complemento.Divisas10
  • VirtualXML_SetDivisas10
    • [01] tipoOperacion
CFDI.Complemento.Aerolineas10
  • VirtualXML_SetAerolineas10

    • [01] TUA
    • [02] TotalCargos
    • [03] CodigoCargo
    • [04] Importe
  • VirtualXML_Aerolineas10AddCargo (Usar antes SetAerolineas10)

    • [01] CodigoCargo
    • [02] Importe
CFDI.Complemento.NotariosPublicos10
  • VirtualXML_SetNotariosPublicos10

    • [01] TipoInmueble
    • [02] Calle
    • [03] NoExterior
    • [04] NoInterior
    • [05] Colonia
    • [06] Localidad
    • [07] Referencia
    • [08] Municipio
    • [09] Estado
    • [10] Pais
    • [11] CodigoPostal
    • [12] NumInstrumentoNotarial
    • [13] FechaInstNotarial
    • [14] MontoOperacion
    • [15] Subtotal
    • [16] IVA
    • [17] CURP
    • [18] NumNotaria
    • [19] EntidadFederativa
    • [20] Adscripcion
    • [21] CoproSocConyugalEEnajenante
    • [22] CoproSocConyugalEAdquiriente
  • VirtualXML_NotariosPublicos10AddDescInmueble (Usar antes SetNotariosPublicos10)

    • [01] TipoInmueble
    • [02] Calle
    • [03] NoExterior
    • [04] NoInterior
    • [05] Colonia
    • [06] Localidad
    • [07] Referencia
    • [08] Municipio
    • [09] Estado
    • [10] Pais
    • [11] CodigoPostal
  • VirtualXML_NotariosPublicos10AddDatosUnEnajenante (Usar antes SetNotariosPublicos10)

    • [01] Nombre
    • [02] ApellidoPaterno
    • [03] ApellidoMaterno
    • [04] RFC
    • [05] CURP
  • VirtualXML_NotariosPublicos10AddDatosEnajenanteCopSC (Usar antes SetNotariosPublicos10)

    • [01] Nombre
    • [02] ApellidoPaterno
    • [03] ApellidoMaterno
    • [04] RFC
    • [05] CURP
    • [06] Porcentaje
  • VirtualXML_NotariosPublicos10AddDatosUnAdquiriente (Usar antes SetNotariosPublicos10)

    • [01] Nombre
    • [02] ApellidoPaterno
    • [03] ApellidoMaterno
    • [04] RFC
    • [05] CURP
  • VirtualXML_NotariosPublicos10AddDatosAdquirienteCopSC (Usar antes SetNotariosPublicos10)

    • [01] Nombre
    • [02] ApellidoPaterno
    • [03] ApellidoMaterno
    • [04] RFC
    • [05] CURP
    • [06] Porcentaje
CFDI.Complemento.VehiculoRenovacionSustitucionVehiculo10
  • VirtualXML_SetRenovSustitVehiculos10

    • [01] TipoDeDecreto
  • VirtualXML_RenovSustitVehiculos10AddRenovVehicular (Usar antes SetRenovSustitVehiculos10)

    • [01] VehEnaj
    • [02] UsadoPrecioVehUsado
    • [03] UsadoTipoVeh
    • [04] UsadoMarca
    • [05] UsadoTipooClase
    • [06] UsadoAño
    • [07] UsadoModelo
    • [08] UsadoNIV
    • [09] UsadoNumSerie
    • [10] UsadoNumPlacas
    • [11] UsadoNumMotor
    • [12] UsadoNumFolTarjCir
    • [13] UsadoNumPedIm
    • [14] UsadoAduana
    • [15] UsadoFechaRegulVeh
    • [16] UsadoFoliofiscal
    • [17] NuevoAño
    • [18] NuevoModelo
    • [19] NuevoNumPlacas
    • [20] NuevoRFC
  • VirtualXML_RenovSustitVehiculos10AddRenovVehicularVehiculoUsado (Usar antes RenovSustitVehiculos10AddRenovVehicular)

    • [01] UsadoPrecioVehUsado
    • [02] UsadoTipoVeh
    • [03] UsadoMarca
    • [04] UsadoTipooClase
    • [05] UsadoAño
    • [06] UsadoModelo
    • [07] UsadoNIV
    • [08] UsadoNumSerie
    • [09] UsadoNumPlacas
    • [10] UsadoNumMotor
    • [11] UsadoNumFolTarjCir
    • [12] UsadoNumPedIm
    • [13] UsadoAduana
    • [14] UsadoFechaRegulVeh
    • [15] UsadoFoliofiscal
  • VirtualXML_RenovSustitVehiculos10AddSustitVehicular (Usar antes SetRenovSustitVehiculos10)

    • [01] VehEnaj
    • [02] UsadoPrecioVehUsado
    • [03] UsadoTipoVeh
    • [04] UsadoMarca
    • [05] UsadoTipooClase
    • [06] UsadoAño
    • [07] UsadoModelo
    • [08] UsadoNIV
    • [09] UsadoNumSerie
    • [10] UsadoNumPlacas
    • [11] UsadoNumMotor
    • [12] UsadoNumFolTarjCir
    • [13] UsadoNumFolAvisoint
    • [14] UsadoNumPedIm
    • [15] UsadoAduana
    • [16] UsadoFechaRegulVeh
    • [17] UsadoFoliofiscal
    • [18] NuevoAño
    • [19] NuevoModelo
    • [20] NuevoNumPlacas
    • [21] NuevoRFC
CFDI.Complemento.LeyendasFiscales10
  • VirtualXML_SetLeyendasFiscales10Full
    • [01] A_disposicionFiscal01
    • [02] A_norma01
    • [03] A_textoLeyenda01
    • [04] A_disposicionFiscal02
    • [05] A_norma02
    • [06] A_textoLeyenda02
    • [07] A_disposicionFiscal03
    • [08] A_norma03
    • [09] A_textoLeyenda03
    • [10] A_disposicionFiscal04
    • [11] A_norma04
    • [12] A_textoLeyenda04
    • [13] A_disposicionFiscal05
    • [14] A_norma05
    • [15] A_textoLeyenda05
    • [16] A_disposicionFiscal06
    • [17] A_norma06
    • [18] A_textoLeyenda06
    • [19] A_disposicionFiscal07
    • [20] A_norma07
    • [21] A_textoLeyenda07
    • [22] A_disposicionFiscal08
    • [23] A_norma08
    • [24] A_textoLeyenda08
    • [25] A_disposicionFiscal09
    • [26] A_norma09
    • [27] A_textoLeyenda09
    • [28] A_disposicionFiscal10
    • [29] A_norma10
    • [30] A_textoLeyenda10
CFDI.Complemento.VehiculoUsado10
  • VirtualXML_SetVehiculoUsado10

    • [01] montoAdquisicion
    • [02] montoEnajenacion
    • [03] claveVehicular
    • [04] marca
    • [05] tipo
    • [06] modelo
    • [07] numeroMotor
    • [08] numeroSerie
    • [09] NIV
    • [10] valor
    • [11] numero
    • [12] fecha
    • [13] aduana
  • VirtualXML_VehiculoUsado10AddInformacionAduanera (Usar antes SetVehiculoUsado10)

    • [01] numero
    • [02] fecha
    • [03] aduana
CFDI.Complemento.ServicioParcial10
  • VirtualXML_SetServicioParcial10
    • [01] NumPerLicoAut
    • [02] Calle
    • [03] NoExterior
    • [04] NoInterior
    • [05] Colonia
    • [06] Localidad
    • [07] Referencia
    • [08] Municipio
    • [09] Estado
    • [10] CodigoPostal
CFDI.Complemento.SPEI10
  • VirtualXML_Spei10AddSpeiTercero
    • [01] FechaOperacion
    • [02] Hora
    • [03] ClaveSPEI
    • [04] sello
    • [05] numeroCertificado
    • [06] cadenaCDA
    • [07] Concepto
    • [08] IVA
    • [09] MontoPago
    • [10] BancoReceptor
    • [11] NombreReceptor
    • [12] TipoCuentaReceptor
    • [13] CuentaReceptor
    • [14] RFCReceptor
    • [15] BancoEmisor
    • [16] NombreEmisor
    • [17] TipoCuentaEmisor
    • [18] CuentaEmisor
    • [19] RFCEmisor
CFDI.Complemento.EstadoCuentaCombustible12
  • VirtualXML_SetEstadoDeCuentaCombustible12

    • [01] (NumeroDeCuenta
    • [02] SubTotal
    • [03] Total
  • VirtualXML_EstadoDeCuentaCombustible12AddConcepto (Usar antes SetEstadoDeCuentaCombustible12)

    • [01] Identificador
    • [02] Fecha
    • [03] Rfc
    • [04] ClaveEstacion
    • [05] Cantidad
    • [06] TipoCombustible
    • [07] Unidad
    • [08] NombreCombustible
    • [09] FolioOperacion
    • [10] ValorUnitario
    • [11] Importe
  • VirtualXML_EstadoDeCuentaCombustible12AddConceptoTraslado (Usar antes EstadoDeCuentaCombustible12AddConcepto)

    • [01] Impuesto
    • [02] TasaOCuota
    • [03] Importe
CFDI.Complemento.ConsumoDeCombustibles11
  • VirtualXML_SetConsumoDeCombustibles11

    • [01] numeroDeCuenta
    • [02] subTotal
    • [03] total
  • VirtualXML_ConsumoDeCombustibles11AddConcepto (Usar antes SetConsumoDeCombustibles11)

    • [01] identificador
    • [02] fecha
    • [03] rfc
    • [04] claveEstacion
    • [05] tipoCombustible
    • [06] cantidad
    • [07] nombreCombustible
    • [08] folioOperacion
    • [09] valorUnitario
    • [10] importe
  • VirtualXML_ConsumoDeCombustibles11AddConceptoDeterminado (Usar antes ConsumoDeCombustibles11AddConcepto)

    • [01] impuesto
    • [02] tasaOCuota
    • [03] importe
CFDI.Complemento.PagoEnEspecie10
  • VirtualXML_SetPagoEnEspecie10
    • [01] CvePIC
    • [02] FolioSolDon
    • [03] PzaArtNombre
    • [04] PzaArtTecn
    • [05] PzaArtAProd
    • [06] PzaArtDim
CFDI.Complemento.PFIntegranteCoordinado10
  • VirtualXML_SetPFintegranteCoordinado10
    • [01] ClaveVehicular
    • [02] Placa
    • [03] RFCPF
CFDI.Complemento.TuristaPasajeroExtranjero10
  • VirtualXML_SetTuristaPasajeroExtranjero10
    • [01] fechadeTransito
    • [02] tipoTransito
    • [03] Via
    • [04] TipoId
    • [05] NumeroId
    • [06] Nacionalidad
    • [07] EmpresaTransporte
    • [08] IdTransporte
CFDI.Complemento.ValesDeDespensa10
  • VirtualXML_SetValesDeDespensa10

    • [01] registroPatronal
    • [02] numeroDeCuenta
    • [03] total
    • [04] identificador
    • [05] fecha
    • [06] rfc
    • [07] curp
    • [08] nombre
    • [09] numSeguridadSocial
    • [10] importe
  • VirtualXML_ValesDeDespensa10AddConcepto (Usar antes SetValesDeDespensa10)

    • [01] identificador
    • [02] fecha
    • [03] rfc
    • [04] curp
    • [05] nombre
    • [06] numSeguridadSocial
    • [07] importe
CFDI.Complemento.Detallista10
  • VirtualXML_SetDetallista10

    • [01] A_documentStatus
    • [02] E_requestForPaymentIdentification_entityType
    • [03] E_orderIdentification_referenceIdentification
    • [04] E_orderIdentification_ReferenceDate
    • [05] A_AdditionalInformationReferenceIdentification_type
    • [06] E_AdditionalInformationReferenceIdentification_referenceIdentification
    • [07] E_buyer_gln
    • [08] E_buyerContactInformationPersonOrDepartmentName_text
    • [09] E_seller_gln
    • [10] A_seller_alternatePartyIdentificationType
    • [11] E_seller_alternatePartyIdentification
    • [12] E_shipTo_gln
    • [13] E_shipTo_nameAndAddressName
    • [14] E_shipTo_nameAndAddressStreetAddressOne
    • [15] E_shipTo_nameAndAddressCity
    • [16] E_shipTo_nameAndAddressPostalCode
    • [17] E_InvoiceCreator_gln
    • [18] A_InvoiceCreator_alternatePartyIdentificationType
    • [19] E_InvoiceCreator_alternatePartyIdentification
    • [20] E_InvoiceCreator_nameAndAddressName
    • [21] E_InvoiceCreator_nameAndAddressStreetAddressOne
    • [22] E_InvoiceCreator_nameAndAddressCity
    • [23] E_InvoiceCreator_nameAndAddressPostalCode
    • [24] A_paymentTerms_paymentTermsEvent
    • [25] A_paymentTerms_PaymentTermsRelationTime
    • [26] A_paymentTerms_netPaymentNetPaymentTermsType
    • [27] A_paymentTerms_netPaymentTimePeriod
    • [28] E_paymentTerms_netPaymentValue
    • [29] A_paymentTerms_discountPaymentDiscountType
    • [30] E_paymentTerms_discountPaymentPercentage
    • [31] E_totalAmount_Amount
  • VirtualXML_Detallista10AddOrderIdentificationReferenceIdentification (Usar antes SetDetallista10)

    • [01] E_orderIdentification_referenceIdentification
  • VirtualXML_Detallista10AddAdditionalInformationReferenceIdentification (Usar antes SetDetallista10)

    • [01] A_AdditionalInformationReferenceIdentification_type
    • [02] E_AdditionalInformationReferenceIdentification_referenceIdentification
  • VirtualXML_Detallista10AddSpecialInstruction (Usar antes SetDetallista10)

    • [01] A_code
    • [02] E_text01
    • [03] E_text02
    • [04] E_text03
    • [05] E_text04
    • [06] E_text05
    • [07] E_text06
    • [08] E_text07
    • [09] E_text08
    • [10] E_text09
    • [11] E_text10
    • [12] E_text11
    • [13] E_text12
    • [14] E_text13
    • [15] E_text14
    • [16] E_text15
  • VirtualXML_Detallista10AddDeliveryNote (Usar antes SetDetallista10)

    • [01] E_ReferenceDate
    • [02] E_referenceIdentification01
    • [03] E_referenceIdentification02
    • [04] E_referenceIdentification03
    • [05] E_referenceIdentification04
    • [06] E_referenceIdentification05
    • [07] E_referenceIdentification06
    • [08] E_referenceIdentification07
    • [09] E_referenceIdentification08
    • [10] E_referenceIdentification09
    • [11] E_referenceIdentification10
    • [12] E_referenceIdentification11
    • [13] E_referenceIdentification12
    • [14] E_referenceIdentification13
    • [15] E_referenceIdentification14
    • [16] E_referenceIdentification15
    • [17] E_referenceIdentification16
    • [18] E_referenceIdentification17
    • [19] E_referenceIdentification18
    • [20] E_referenceIdentification19
    • [21] E_referenceIdentification20
  • VirtualXML_Detallista10AddCustoms (Usar antes SetDetallista10)

    • [01] E_gln
  • VirtualXML_Detallista10AddCurrency (Usar antes SetDetallista10)

    • [01] A_currencyISOCode
    • [02] E_currencyFunction01
    • [03] E_currencyFunction02
    • [04] E_currencyFunction03
    • [05] E_rateOfChange
  • VirtualXML_Detallista10AddShipmentDetail (Usar antes SetDetallista10)

    • [01] E_shipmentDetail
  • VirtualXML_Detallista10AddAllowanceCharge (Usar antes SetDetallista10)

    • [01] A_allowanceChargeType
    • [02] A_settlementType
    • [03] A_sequenceNumber
    • [04] E_specialServicesType
    • [05] A_monetaryAmountOrPercentage_base
    • [06] E_monetaryAmountOrPercentage_percentage
  • VirtualXML_Detallista10AddTotalAllowanceCharge (Usar antes SetDetallista10)

    • [01] A_allowanceOrChargeType
    • [02] E_specialServicesType
    • [03] E_Amount
  • VirtualXML_Detallista10AddLineItem (Usar antes SetDetallista10)

    • [01] A_type
    • [02] A_number
    • [03] E_tradeItemIdentification_gtin
    • [04] A_tradeItemDescriptionInformation_language
    • [05] E_tradeItemDescriptionInformation_longText
    • [06] A_invoicedQuantity_unitOfMeasure
    • [07] E_invoicedQuantity_invoicedQuantity
    • [08] E_grossPrice_Amount
    • [09] E_netPrice_Amount
    • [10] A_AdditionalInformation_type
    • [11] E_AdditionalInformation_referenceIdentification
    • [12] A_LogisticUnits_type
    • [13] E_LogisticUnits_serialShippingContainerCode
    • [14] E_palletInformation_palletQuantity
    • [15] A_palletInformation_type
    • [16] E_palletInformation_description
    • [17] E_palletInformation_methodOfPayment
    • [18] E_totalLineAmount_grossAmount
    • [19] E_totalLineAmount_netAmount
  • VirtualXML_Detallista10AddLineItemAlternateTradeItemIdentification (Usar antes Detallista10AddLineItem)

    • [01] A_type
    • [02] E_alternateTradeItemIdentification
  • VirtualXML_Detallista10AddLineItemAditionalQuantity (Usar antes Detallista10AddLineItem)

    • [01] A_QuantityType
    • [02] E_aditionalQuantity
  • VirtualXML_Detallista10AddLineItemCustoms (Usar antes Detallista10AddLineItem)

    • [01] E_gln
    • [02] A_alternatePartyIdentification_type
    • [03] E_alternatePartyIdentification
    • [04] E_ReferenceDate
    • [05] E_nameAndAddress_name
  • VirtualXML_Detallista10AddLineItemExtendedAttributes (Usar antes Detallista10AddLineItem)

    • [01] A_productionDate
    • [02] E_lotNumber
  • VirtualXML_Detallista10AddLineItemAllowanceCharge (Usar antes Detallista10AddLineItem)

    • [01] A_allowanceChargeType
    • [02] A_settlementType
    • [03] A_sequenceNumber
    • [04] E_specialServicesType
    • [05] E_percentagePerUnit
    • [06] E_amountPerUnit
  • VirtualXML_Detallista10AddLineItemTradeItemTaxInformation (Usar antes Detallista10AddLineItem)

    • [01] E_taxTypeDescription
    • [02] E_referenceNumber
    • [03] E_taxPercentage
    • [04] E_taxAmount
    • [05] E_taxCategory
CFDI.Especiales
  • VirtualXML_AddComplemento_cfdi33

    • [01] fragmentoXML (Debe ser válido e incluir los namespaces que pudiera utilizar)
  • VirtualXML_AddComplementoConcepto_cfdi33

    • [01] fragmentoXML (Debe ser válido e incluir los namespaces que pudiera utilizar)
  • VirtualXML_AddNameSpace Agrega un namespace al nodo principal XML del CFDI.

    • [01] Namespace
    • [02] url
    • [03] schemalocation

Ejemplos

CFDI33 Sin Complemento
const VirtualXML = require('virtualxml-cfdi');
let vxml = new VirtualXML();
let ts = Date.now() - (new Date().getTimezoneOffset()) * 60000; // GMT-6
let FechaCFDI = (new Date(ts)).toISOString().substring(0, 19); // Fecha formato 2018-03-29T14:22:10
vxml.addFunctionCall('VirtualXML_SetComprobanteInfo_cfdi33', 'L', '1', FechaCFDI, '01', 'CondiciónDePago', '5000.00', '', 'MXN', '', '5000.00', 'I', 'PUE', '68025', '');
vxml.addFunctionCall('VirtualXML_SetCfdiRelacionados_cfdi33', '03');
vxml.addFunctionCall('VirtualXML_AddCfdiRelacionado_cfdi33', '68E06104-9B1A-4523-9842-E31E6C703BF9');
vxml.addFunctionCall('VirtualXML_AddCfdiRelacionado_cfdi33', '17A7229E-E6A7-489E-96C9-10AE7D35D11A');
vxml.addFunctionCall('VirtualXML_SetEmisorInfo_cfdi33', 'AAA010101AAA', 'NombreDelEmisorRazónSocial', '601');
vxml.addFunctionCall('VirtualXML_SetReceptorInfo_cfdi33', 'MAG041126GT8', 'NombreDelReceptorRazónSocial', '', '', 'G01');
vxml.addFunctionCall('VirtualXML_SetImpuestosInfo_cfdi33', '150.00', '150.00');
vxml.addFunctionCall('VirtualXML_AddTraslado_cfdi33', '002', 'Tasa', '0.160000', '75.00');
vxml.addFunctionCall('VirtualXML_AddTraslado_cfdi33', '003', 'Cuota', '0.350000', '75.00');
vxml.addFunctionCall('VirtualXML_AddRetencion_cfdi33', '003', '150.00');
vxml.addFunctionCall('VirtualXML_AddConcepto_cfdi33', '15101506', '', '1', 'DPC', 'Pieza', 'Bombilla 150W', '5000.00', '5000.00', '');
vxml.addFunctionCall('VirtualXML_AddConceptoTraslado_cfdi33', '468.75', '002', 'Tasa', '0.160000', '75.00');
vxml.addFunctionCall('VirtualXML_AddConceptoTraslado_cfdi33', '214.29', '003', 'Cuota', '0.350000', '75.00');
vxml.addFunctionCall('VirtualXML_AddConceptoRetencion_cfdi33', '500.00', '003', 'Tasa', '0.300000', '150.00');            
vxml.addFunctionCall('VirtualXML_AddConceptoCuentaPredial_cfdi33', '5678901');
vxml.addFunctionCall('VirtualXML_SetAddenda_cfdi33', '<MyOwnNode name="Attribute"><AnyChildNode data="dummy" /></MyOwnNode>');
 
vxml.emiteCFDI33("demo_nodejs",
                 "AAA010101AAA",
                 "./test/CSD01_AAA010101AAA.cer",
                 "./test/CSD01_AAA010101AAA.key",
                 "12345678a",
                 "./test/out/",
                 (new Date(ts)).toISOString().substring(0, 10),
                 "nodejs", true, true, true, true)
    .then((response) => {
      // Handle Response
    }).catch((err) => {
      // Handle Error
    });
CFDI33 Nomina12
const VirtualXML = require('virtualxml-cfdi');
let vxml = new VirtualXML();
let ts = Date.now() - (new Date().getTimezoneOffset()) * 60000; // GMT-6
let FechaCFDI = (new Date(ts)).toISOString().substring(0, 19); // Fecha formato 2018-03-29T14:22:10
vxml.addFunctionCall('VirtualXML_SetComprobanteInfo_cfdi33', 'N', '1', FechaCFDI, '99', '', '5000.00', '123.90', 'MXN', '', '4876.10', 'N', 'PUE', '68025', '');
vxml.addFunctionCall('VirtualXML_SetEmisorInfo_cfdi33', 'AAA010101AAA', 'NombreDelEmisorRazónSocial', '601');
vxml.addFunctionCall('VirtualXML_SetReceptorInfo_cfdi33', 'AAAA010101AAA', 'NombreDelReceptorPersonaFisica', '', '', 'P01');
vxml.addFunctionCall('VirtualXML_AddConcepto_cfdi33', '84111505', '', '1', 'ACT', '', 'Pago de nómina', '5000.00', '5000.00', '123.90');
vxml.addFunctionCall('VirtualXML_SetNomina12', 'O', '2016-10-31', '2016-10-16', '2016-10-31', '15', '5000.00', '123.90', '');
vxml.addFunctionCall('VirtualXML_Nomina12SetEmisor', '', 'B5510768108', '', '', '');
vxml.addFunctionCall('VirtualXML_Nomina12SetReceptor', 'FOLR670417HDFLPN00', '04078873454', '2016-06-01', 'P21W', '01', 'No', '01', '02', '060', 'Sistemas', 'Director', '2', '04', '021', '', '435.50', '435.50', 'JAL');
vxml.addFunctionCall('VirtualXML_Nomina12SetPercepciones', '5000.00', '', '', '5000.00', '0.00');
vxml.addFunctionCall('VirtualXML_Nomina12AddPercepcion', '001', '001', 'Sueldos, Salarios Rayas y Jornales', '5000.00', '0.00', '', '', '', '', '', '');
vxml.addFunctionCall('VirtualXML_Nomina12SetDeducciones', '123.90', '');
vxml.addFunctionCall('VirtualXML_Nomina12AddDeduccion', '005', '201', 'ISR SALARIOS', '81.00');
vxml.addFunctionCall('VirtualXML_Nomina12AddDeduccion', '001', '202', 'IMSS', '42.90');
 
vxml.emiteCFDI33("demo_nodejs",
                 "AAA010101AAA",
                 "./test/CSD01_AAA010101AAA.cer",
                 "./test/CSD01_AAA010101AAA.key",
                 "12345678a",
                 "./test/out/",
                 (new Date(ts)).toISOString().substring(0, 10),
                 "nodejs", true, true, true, true)
    .then((response) => {
      // Handle Response
    }).catch((err) => {
      // Handle Error
    });
CFDI33 Pagos10
const VirtualXML = require('virtualxml-cfdi');
let vxml = new VirtualXML();
let ts = Date.now() - (new Date().getTimezoneOffset()) * 60000; // GMT-6
let FechaCFDI = (new Date(ts)).toISOString().substring(0, 19); // Fecha formato 2018-03-29T14:22:10
vxml.addFunctionCall('VirtualXML_SetComprobanteInfo_cfdi33', 'P', '1', FechaCFDI, '', '', '0', '', 'XXX', '', '0', 'P', '', '68025', '');
vxml.addFunctionCall('VirtualXML_SetEmisorInfo_cfdi33', 'AAA010101AAA', 'NombreDelEmisorRazónSocial', '601');
vxml.addFunctionCall('VirtualXML_SetReceptorInfo_cfdi33', 'MAG041126GT8', 'NombreDelReceptorRazónSocial', '', '', 'P01');
vxml.addFunctionCall('VirtualXML_AddConcepto_cfdi33', '84111506', '', '1', 'ACT', '', 'Pago', '0', '0', '');
vxml.addFunctionCall('VirtualXML_SetPagos10');
vxml.addFunctionCall('VirtualXML_Pagos10AddPago', '2017-03-08T09:50:00', '02', 'MXN', '', '1160.00', '', 'BSM970519DU8', '', '123456789012345678', 'CFA950629CAA', '002180065145895321', '', '', '', '');
vxml.addFunctionCall('VirtualXML_Pagos10AddPagoDoctoRelacionado', 'AAAAAAA0-AF7B-4FC5-8854-6DAE18CFB5B4', 'A', '0434', 'MXN', '', 'PPD', '1', '580.00', '580.00', '0.00');
vxml.addFunctionCall('VirtualXML_Pagos10AddPagoDoctoRelacionado', 'BBBBBBB0-AF7B-4FC5-8854-6DAE18CFB5B4', 'A', '0435', 'MXN', '', 'PPD', '1', '500.00', '500.00', '0.00');
vxml.addFunctionCall('VirtualXML_Pagos10AddPagoDoctoRelacionado', 'CCCCCCC0-AF7B-4FC5-8854-6DAE18CFB5B4', 'A', '0436', 'MXN', '', 'PPD', '1', '80.00', '80.00', '0.00');
vxml.addFunctionCall('VirtualXML_SetPagos10');
vxml.addFunctionCall('VirtualXML_Pagos10AddPago', '2017-03-08T09:50:00', '02', 'MXN', '', '1160.00', '', 'BSM970519DU8', '', '123456789012345678', 'CFA950629CAA', '002180065145895321', '', '', '', '');
vxml.addFunctionCall('VirtualXML_Pagos10AddPagoDoctoRelacionado', 'AAAAAAA1-AF7B-4FC5-8854-6DAE18CFB5B4', 'A', '1434', 'MXN', '', 'PPD', '1', '580.00', '580.00', '0.00');
vxml.addFunctionCall('VirtualXML_Pagos10AddPagoDoctoRelacionado', 'BBBBBBB1-AF7B-4FC5-8854-6DAE18CFB5B4', 'A', '1435', 'MXN', '', 'PPD', '1', '500.00', '500.00', '0.00');
vxml.addFunctionCall('VirtualXML_Pagos10AddPagoDoctoRelacionado', 'CCCCCCC1-AF7B-4FC5-8854-6DAE18CFB5B4', 'A', '1436', 'MXN', '', 'PPD', '1', '80.00', '80.00', '0.00');
 
vxml.emiteCFDI33("demo_nodejs",
                 "AAA010101AAA",
                 "./test/CSD01_AAA010101AAA.cer",
                 "./test/CSD01_AAA010101AAA.key",
                 "12345678a",
                 "./test/out/",
                 (new Date(ts)).toISOString().substring(0, 10),
                 "nodejs", true, true, true, true)
    .then((response) => {
      // Handle Response
    }).catch((err) => {
      // Handle Error
    });
CFDI33 ComercioExterior11
const VirtualXML = require('virtualxml-cfdi');
let vxml = new VirtualXML();
vxml.addFunctionCall('VirtualXML_SetComprobanteInfo_cfdi33', 'E', '253', '2018-03-23T19:47:26', '', '', '0.00', '', 'USD', '18.5078', '0.00', 'T', '', '81000', '');
vxml.addFunctionCall('VirtualXML_SetEmisorInfo_cfdi33', 'AAA010101AAA', 'NombreDelEmisorRazónSocial', '622');
vxml.addFunctionCall('VirtualXML_SetReceptorInfo_cfdi33', 'XEXX010101000', 'NombreDelReceptorRazónSocial', 'USA', '998676161', 'P01');
vxml.addFunctionCall('VirtualXML_AddConcepto_cfdi33', '50406500', '0002', '109.000000', 'X4G', 'CAJAS DE CARTON', 'TOMATE BOLA', '7.800000', '850.20', '');
vxml.addFunctionCall('VirtualXML_SetComercioExterior11', '03', '2', 'A1', '0', '', '', 'DAP', '0', '', '18.5078', '850.20');
vxml.addFunctionCall('VirtualXML_CCE11SetReceptor', '', 'Avenue Sahara', '74', '', 'BIG DESERT', '', '', '', 'NV', 'USA', '89316');
vxml.addFunctionCall('VirtualXML_CCE11SetEmisor', '', 'Hidalgo', '1000', '', '0209', '', '', '014', 'QUE', 'MEX', '76224');
vxml.addFunctionCall('VirtualXML_CCE11AddMercancia', '0002', '07020099', '1090.000', '01', '0.78', '850.20', '', '', '', '');
 
 
vxml.emiteCFDI33("demo_nodejs",
                 "AAA010101AAA",
                 "./test/CSD01_AAA010101AAA.cer",
                 "./test/CSD01_AAA010101AAA.key",
                 "12345678a",
                 "./test/out/",
                 (new Date(ts)).toISOString().substring(0, 10),
                 "nodejs", true, true, true, true)
    .then((response) => {
      // Handle Response
    }).catch((err) => {
      // Handle Error
    });
CFDI33 InstitucionesEdicativas10
const VirtualXML = require('virtualxml-cfdi');
let vxml = new VirtualXML();
let ts = Date.now() - (new Date().getTimezoneOffset()) * 60000; // GMT-6
let FechaCFDI = (new Date(ts)).toISOString().substring(0, 19); // Fecha formato 2018-03-29T14:22:10
vxml.addFunctionCall('VirtualXML_SetComprobanteInfo_cfdi33', 'IEDU', '1', FechaCFDI, '01', 'CondiciónDePago', '5000.00', '', 'MXN', '', '5000.00', 'I', 'PUE', '68025', '');
vxml.addFunctionCall('VirtualXML_SetEmisorInfo_cfdi33', 'AAA010101AAA', 'NombreDelEmisorRazónSocial', '601');
vxml.addFunctionCall('VirtualXML_SetReceptorInfo_cfdi33', 'VEME800513DU2', 'NombreDelReceptorRazónSocial', '', '', 'G01');
vxml.addFunctionCall('VirtualXML_AddConcepto_cfdi33', '15101506', '', '1', 'DPC', 'Pieza', 'Bombilla 150W', '4000.00', '4000.00', '');
vxml.addFunctionCall('VirtualXML_AddConceptoCuentaPredial_cfdi33', '5678901');
vxml.addFunctionCall('VirtualXML_AddConcepto_cfdi33', '39101602', '', '1', 'DPC', 'CC iedu', 'CompConceptoIEDU', '1000.00', '1000.00', '');
vxml.addFunctionCall('VirtualXML_AddConceptoComplementoIedu_cfdi33', 'JESUS ALCANTARA MADRIGAL', 'MEGR670417HDFLPN00', 'Secundaria', 'RSX56YF', 'FONE830821R65');
vxml.addFunctionCall('VirtualXML_AddConceptoComplementoIedu_cfdi33', 'MERCEDES HONDA HYUNDAI', 'MEGR670417HDFLPN00', 'Profesional técnico', 'RSX56YF', 'FONE830821R65');
 
 
vxml.emiteCFDI33("demo_nodejs",
                 "AAA010101AAA",
                 "./test/CSD01_AAA010101AAA.cer",
                 "./test/CSD01_AAA010101AAA.key",
                 "12345678a",
                 "./test/out/",
                 (new Date(ts)).toISOString().substring(0, 10),
                 "nodejs", true, true, true, true)
    .then((response) => {
      // Handle Response
    }).catch((err) => {
      // Handle Error
    });
CFDI33 Especiales
const VirtualXML = require('virtualxml-cfdi');
let vxml = new VirtualXML();
let ts = Date.now() - (new Date().getTimezoneOffset()) * 60000; // GMT-6
let FechaCFDI = (new Date(ts)).toISOString().substring(0, 19); // Fecha formato 2018-03-29T14:22:10
vxml.addFunctionCall('VirtualXML_SetComprobanteInfo_cfdi33', 'M', '1', FechaCFDI, '01', 'CondiciónDePago', '5000.00', '', 'MXN', '', '5000.00', 'I', 'PUE', '68025', '');
vxml.addFunctionCall('VirtualXML_SetCfdiRelacionados_cfdi33', '07');
vxml.addFunctionCall('VirtualXML_AddCfdiRelacionado_cfdi33', '68E06104-9B1A-4523-9842-E31E6C703BF9');
vxml.addFunctionCall('VirtualXML_AddCfdiRelacionado_cfdi33', '17A7229E-E6A7-489E-96C9-10AE7D35D11A');
vxml.addFunctionCall('VirtualXML_SetEmisorInfo_cfdi33', 'AAA010101AAA', 'NombreDelEmisorRazónSocial', '601');
vxml.addFunctionCall('VirtualXML_SetReceptorInfo_cfdi33', 'VEME800513DU2', 'NombreDelReceptorRazónSocial', '', '', 'G01');
vxml.addFunctionCall('VirtualXML_AddConcepto_cfdi33', '15101506', '', '1', 'DPC', 'Pieza', 'Bombilla 150W', '4000.00', '4000.00', '');
vxml.addFunctionCall('VirtualXML_AddConceptoCuentaPredial_cfdi33', '5678901');
vxml.addFunctionCall('VirtualXML_AddConcepto_cfdi33', '39101600', '', '1', 'DPC', 'CC Terceros', 'CompConceptTerceros', '990.00', '990.00', '');
// El fragmentoXML debera contiener la definicion de los namespaces en caso de usarlos
// xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
// xmlns:terceros="http://www.sat.gob.mx/terceros
// xsi:schemaLocation="http://www.sat.gob.mx/terceros http://www.sat.gob.mx/sitio_internet/cfd/terceros/terceros11.xsd"
vxml.addFunctionCall('VirtualXML_AddComplementoConcepto_cfdi33', '<terceros:PorCuentadeTerceros xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:terceros="http://www.sat.gob.mx/terceros" xsi:schemaLocation="http://www.sat.gob.mx/terceros http://www.sat.gob.mx/sitio_internet/cfd/terceros/terceros11.xsd" version="1.1" rfc="MORA890206R67"><terceros:CuentaPredial numero="75768JHGJ"/><terceros:Impuestos><terceros:Retenciones><terceros:Retencion impuesto="ISR" importe="10.00"/><terceros:Retencion impuesto="IVA" importe="20.00"/></terceros:Retenciones><terceros:Traslados><terceros:Traslado impuesto="IEPS" tasa="10" importe="40.00"/><terceros:Traslado impuesto="IVA" tasa="16" importe="30.00"/></terceros:Traslados></terceros:Impuestos></terceros:PorCuentadeTerceros>');
vxml.addFunctionCall('VirtualXML_AddConcepto_cfdi33', '39101600', '', '1', 'DPC', 'CC Terceros', 'CompConceptTerceros', '4.00', '4.00', '');
vxml.addFunctionCall('VirtualXML_AddConcepto_cfdi33', '39101600', '', '1', 'DPC', 'CC Terceros', 'CompConceptTerceros', '3.00', '3.00', '');
vxml.addFunctionCall('VirtualXML_AddComplementoConcepto_cfdi33', '<terceros:PorCuentadeTerceros xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:terceros="http://www.sat.gob.mx/terceros" xsi:schemaLocation="http://www.sat.gob.mx/terceros http://www.sat.gob.mx/sitio_internet/cfd/terceros/terceros11.xsd" version="1.1" rfc="PECA890206R67"><terceros:InformacionFiscalTercero calle="STREET 22" municipio="MUNICIPIO" estado="SIN" pais="MEX" codigoPostal="68001"/><terceros:Parte cantidad="23.00" unidad="PZA" noIdentificacion="ID01" descripcion="DESC01" valorUnitario="1.00" importe="23.00"><terceros:InformacionAduanera numero="NOADUANA" fecha="2018-01-22"/></terceros:Parte><terceros:Parte cantidad="10.00" descripcion="DESC02"/><terceros:Parte cantidad="48.00" descripcion="DESC03"><terceros:InformacionAduanera numero="LAADUANA" fecha="2018-01-23" aduana="BAJIO"/><terceros:InformacionAduanera numero="ADUANA02" fecha="2018-01-24" aduana="SUR"/><terceros:InformacionAduanera numero="ADUANA02" fecha="2018-01-25" aduana="ORIENTE"/></terceros:Parte><terceros:Impuestos><terceros:Traslados><terceros:Traslado impuesto="IEPS" tasa="10" importe="40.00"/></terceros:Traslados></terceros:Impuestos></terceros:PorCuentadeTerceros>');
vxml.addFunctionCall('VirtualXML_AddConcepto_cfdi33', '39101600', '', '1', 'DPC', 'CC Terceros', 'CompConceptTerceros', '3.00', '3.00', '');
vxml.addFunctionCall('VirtualXML_AddComplementoConcepto_cfdi33', '<terceros:PorCuentadeTerceros xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:terceros="http://www.sat.gob.mx/terceros" xsi:schemaLocation="http://www.sat.gob.mx/terceros http://www.sat.gob.mx/sitio_internet/cfd/terceros/terceros11.xsd" version="1.1" rfc="MORS890206R67"><terceros:InformacionFiscalTercero calle="STREET 11" municipio="OAXACA DE JUAREZ" estado="OAX" pais="MEX" codigoPostal="68000"/><terceros:InformacionAduanera numero="NOADUANA" fecha="2017-12-18"/><terceros:Impuestos><terceros:Retenciones><terceros:Retencion impuesto="IVA" importe="20.00"/></terceros:Retenciones></terceros:Impuestos></terceros:PorCuentadeTerceros>');
 
 
vxml.emiteCFDI33("demo_nodejs",
                 "AAA010101AAA",
                 "./test/CSD01_AAA010101AAA.cer",
                 "./test/CSD01_AAA010101AAA.key",
                 "12345678a",
                 "./test/out/",
                 (new Date(ts)).toISOString().substring(0, 10),
                 "nodejs", true, true, true, true)
    .then((response) => {
      // Handle Response
    }).catch((err) => {
      // Handle Error
    });
Changelog

1.0.5

  • Uso de message en respuestas en lugar de msg
  • Seccion DEMO descargable en documentacion

1.0.4

  • Funcion emiteCFDI acepta contenido de archivos .CER/.KEY en formato base64,

1.0.3

  • Modificacion al formato de documentacion (<br/>) de acuerdo a NPM,

1.0.2

  • Modificacion a documentacion que incluye funciones EstadoDeCuentaCombustible12, funciones ConsumoDeCombustibles11
  • Modificacion a documentacion incluyendo explicitamente informacion para DEMO, informacion de contacto
  • Modificacion a documentacion completando los ejemplos
  • Test ComercioExterior11 removido.

1.0.1

  • Modificacion a documentacion para utilizar version Markdown usada por NPM

install

npm i virtualxml-cfdi

Downloadsweekly downloads

3

version

1.0.5

license

MIT

last publish

collaborators

  • avatar