ACTUALIZACION: Librería para CFDI 4.0 GRATIS (C# y VB.NET)
ACTUALIZACION: La librería en C# sella el XML listo para timbrar CFDi 3.3
ACTUALIZACION: Ya dispongo de versión JAVA
ACTUALIZACION: Ya dispongo de versión VB.NET
Hola amigos, hoy les quiero mostrar un poco de mi nueva librería para CFDi 3.3 de la factura electrónica en Mexico; Esta librería en lo personal es la más fácil de usar y mantener de las varias librerías para CFDi que he hecho hasta el momento.
NOTAS:
- Cabe destacar que la librería esta a la venta, para mayores informes dejen su comentario y su correo electrónico para contactarlos
- Para agregar complementos al final del artículo
A continuación les muestro la forma de llenar la estructura básica de una factura usando todos los campos de los nodos, cabe aclarar que evidentemente no es una factura válida, es solo una demostración del uso de la librería.
Ejemplo C#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
// Comprobante Comprobante cfdi = new Comprobante(); // CfdiRelacionados cfdi.CfdiRelacionados["TipoRelacion"] = "01"; cfdi.CfdiRelacionados[0]["UUID"] = "9FB6ED1A-5F37-4FEF-980A-7F8C83B51894"; // Datos de la Factura cfdi["Serie"] = "F"; cfdi["Folio"] = "123"; cfdi["Fecha"] = DateTime.Now.ToString("s"); cfdi["FormaPago"] = "01"; cfdi["CondicionesDePago"] = "En una sola exhibición"; cfdi["SubTotal"] = "123.45"; cfdi["Descuento"] = "0.00"; cfdi["Moneda"] = "MXN"; cfdi["TipoCambio"] = "1.00"; cfdi["Total"] = "123.45"; cfdi["TipoDeComprobante"] = "I"; cfdi["MetodoPago"] = "PUE"; cfdi["LugarExpedicion"] = "27000"; cfdi["Confirmacion"] = "12345"; // Emisor cfdi.Emisor["Rfc"] = "AAA010101AAA"; cfdi.Emisor["Nombre"] = "Accem Servicios Empresariales"; cfdi.Emisor["RegimenFiscal"] = "601"; // Receptor cfdi.Receptor["Rfc"] = "XAXX010101000"; cfdi.Receptor["Nombre"] = "Público en General"; cfdi.Receptor["UsoCFDI"] = "G01"; // Concepto Normal cfdi.Conceptos[0]["ClaveProdServ"] = "01010101"; cfdi.Conceptos[0]["NoIdentificacion"] = "COD01"; cfdi.Conceptos[0]["Cantidad"] = "1.00"; cfdi.Conceptos[0]["ClaveUnidad"] = "C81"; cfdi.Conceptos[0]["Unidad"] = "Pieza"; cfdi.Conceptos[0]["Descripcion"] = "Producto de prueba 1"; cfdi.Conceptos[0]["ValorUnitario"] = "100.00"; // Concpetos con Impuestos cfdi.Conceptos[1]["ClaveProdServ"] = "01010101"; cfdi.Conceptos[1]["NoIdentificacion"] = "COD02"; cfdi.Conceptos[1]["Cantidad"] = "1.00"; cfdi.Conceptos[1]["ClaveUnidad"] = "C81"; cfdi.Conceptos[1]["Unidad"] = "Pieza"; cfdi.Conceptos[1]["Descripcion"] = "Producto de prueba 2"; cfdi.Conceptos[1]["ValorUnitario"] = "100.00"; cfdi.Conceptos[1].Impuestos.Traslados[0]["Base"] = "1.00"; cfdi.Conceptos[1].Impuestos.Traslados[0]["Impuesto"] = "IVA"; cfdi.Conceptos[1].Impuestos.Traslados[0]["TipoFactor"] = "Tasa"; cfdi.Conceptos[1].Impuestos.Traslados[0]["TasaOCuota"] = "0.000000"; cfdi.Conceptos[1].Impuestos.Traslados[0]["Importe"] = "0.00"; cfdi.Conceptos[1].Impuestos.Retenciones[0]["Base"] = "1.00"; cfdi.Conceptos[1].Impuestos.Retenciones[0]["Impuesto"] = "IVA"; cfdi.Conceptos[1].Impuestos.Retenciones[0]["TipoFactor"] = "Tasa"; cfdi.Conceptos[1].Impuestos.Retenciones[0]["TasaOCuota"] = "0.000000"; cfdi.Conceptos[1].Impuestos.Retenciones[0]["Importe"] = "0.00"; // Conceptos con Información Aduanera cfdi.Conceptos[2]["ClaveProdServ"] = "01010101"; cfdi.Conceptos[2]["NoIdentificacion"] = "COD03"; cfdi.Conceptos[2]["Cantidad"] = "1.00"; cfdi.Conceptos[2]["ClaveUnidad"] = "C81"; cfdi.Conceptos[2]["Unidad"] = "Pieza"; cfdi.Conceptos[2]["Descripcion"] = "Producto de prueba 3"; cfdi.Conceptos[2]["ValorUnitario"] = "100.00"; cfdi.Conceptos[2].InformacionAduanera[0]["NumeroPedimento"] = "0987654321"; cfdi.Conceptos[2].InformacionAduanera[1]["NumeroPedimento"] = "7896541230"; // Conceptos con Cuenta Predial cfdi.Conceptos[3]["ClaveProdServ"] = "01010101"; cfdi.Conceptos[3]["NoIdentificacion"] = "COD04"; cfdi.Conceptos[3]["Cantidad"] = "1.00"; cfdi.Conceptos[3]["ClaveUnidad"] = "C81"; cfdi.Conceptos[3]["Unidad"] = "Pieza"; cfdi.Conceptos[3]["Descripcion"] = "Producto de prueba 4"; cfdi.Conceptos[3]["ValorUnitario"] = "100.00"; cfdi.Conceptos[3].CuentaPredial["Numero"] = "1234567890"; // Conceptos con Parte cfdi.Conceptos[4]["ClaveProdServ"] = "01010101"; cfdi.Conceptos[4]["NoIdentificacion"] = "COD05"; cfdi.Conceptos[4]["Cantidad"] = "1.00"; cfdi.Conceptos[4]["ClaveUnidad"] = "C81"; cfdi.Conceptos[4]["Unidad"] = "Pieza"; cfdi.Conceptos[4]["Descripcion"] = "Producto de prueba 5"; cfdi.Conceptos[4]["ValorUnitario"] = "100.00"; cfdi.Conceptos[4].Parte[0]["ClaveProdServ"] = "0101010101"; cfdi.Conceptos[4].Parte[0]["NoIdentificacion"] = "COD05"; cfdi.Conceptos[4].Parte[0]["Cantidad"] = "1.00"; cfdi.Conceptos[4].Parte[0]["Unidad"] = "Pieza"; cfdi.Conceptos[4].Parte[0]["Descripcion"] = "Parte 1"; cfdi.Conceptos[4].Parte[0]["ValorUnitario"] = "100.00"; cfdi.Conceptos[4].Parte[0]["Importe"] = "100.00"; cfdi.Conceptos[4].Parte[0].InformacionAduanera[0]["NumeroPedimento"] = "1234567890"; // Impuestos cfdi.Impuestos["TotalImpuestosRetenidos"] = "0.00"; cfdi.Impuestos["TotalImpuestosTrasladados"] = "16.00"; // Retenciones cfdi.Impuestos.Retenciones[0]["Impuesto"] = "ISR"; cfdi.Impuestos.Retenciones[0]["Importe"] = "0.00"; // Traslados cfdi.Impuestos.Traslados[0]["Impuesto"] = "ISR"; cfdi.Impuestos.Traslados[0]["Importe"] = "0.00"; cfdi.Impuestos.Traslados[0]["TasaOCuota"] = "0.160000"; cfdi.Impuestos.Traslados[0]["TipoFactor"] = "Tasa"; // Sellar XML cfdi.Sellar("rutaXSLT", "Ruta archivo KEY", "Ruta archivo CER", "Clave Certificados"); // Se guarda el XML cfdi.Documento.Save("cfdi33.xml"); |
Ejemplo VB.NET
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
' Comprobante Dim cfdi As New Comprobante() ' CfdiRelacionados cfdi.CfdiRelacionados("TipoRelacion") = "01" cfdi.CfdiRelacionados.CfdiRelacionado(0)("UUID") = "9FB6ED1A-5F37-4FEF-980A-7F8C83B51894" ' Datos de la Factura cfdi("Serie") = "F" cfdi("Folio") = "123" cfdi("Fecha") = DateTime.Now.ToString("s") cfdi("FormaPago") = "01" cfdi("CondicionesDePago") = "En una sola exhibición" cfdi("SubTotal") = "123.45" cfdi("Descuento") = "0.00" cfdi("Moneda") = "MXN" cfdi("TipoCambio") = "1.00" cfdi("Total") = "123.45" cfdi("TipoDeComprobante") = "I" cfdi("MetodoPago") = "PUE" cfdi("LugarExpedicion") = "01000" cfdi("Confirmacion") = "12345" ' Emisor cfdi.Emisor("Rfc") = "AAA010101AAA" cfdi.Emisor("Nombre") = "ACCEM SERVICIOS EMPRESARIALES SC" cfdi.Emisor("RegimenFiscal") = "601" ' Receptor cfdi.Receptor("Rfc") = "XAXX010101000" cfdi.Receptor("Nombre") = "Público en General" cfdi.Receptor("UsoCFDI") = "G01" ' Concepto Normal cfdi.Conceptos(0)("ClaveProdServ") = "01010101" cfdi.Conceptos(0)("NoIdentificacion") = "COD01" cfdi.Conceptos(0)("Cantidad") = "1.00" cfdi.Conceptos(0)("ClaveUnidad") = "C81" cfdi.Conceptos(0)("Unidad") = "Pieza" cfdi.Conceptos(0)("Descripcion") = "Producto de prueba 1" cfdi.Conceptos(0)("ValorUnitario") = "123.45" cfdi.Conceptos(0)("Importe") = "123.45" cfdi.Conceptos(0)("Descuento") = "0.00" ' Concpetos con Impuestos cfdi.Conceptos(1)("ClaveProdServ") = "01010101" cfdi.Conceptos(1)("NoIdentificacion") = "COD02" cfdi.Conceptos(1)("Cantidad") = "1.00" cfdi.Conceptos(1)("ClaveUnidad") = "C81" cfdi.Conceptos(1)("Unidad") = "Pieza" cfdi.Conceptos(1)("Descripcion") = "Producto de prueba 2" cfdi.Conceptos(1)("ValorUnitario") = "100.00" cfdi.Conceptos(1)("Importe") = "123.45" cfdi.Conceptos(1)("Descuento") = "0.00" cfdi.Conceptos(1).Impuestos.Traslados(0)("Base") = "1.00" cfdi.Conceptos(1).Impuestos.Traslados(0)("Impuesto") = "IVA" cfdi.Conceptos(1).Impuestos.Traslados(0)("TipoFactor") = "Tasa" cfdi.Conceptos(1).Impuestos.Traslados(0)("TasaOCuota") = "0.000000" cfdi.Conceptos(1).Impuestos.Traslados(0)("Importe") = "0.00" cfdi.Conceptos(1).Impuestos.Retenciones(0)("Base") = "1.00" cfdi.Conceptos(1).Impuestos.Retenciones(0)("Impuesto") = "IVA" cfdi.Conceptos(1).Impuestos.Retenciones(0)("TipoFactor") = "Tasa" cfdi.Conceptos(1).Impuestos.Retenciones(0)("TasaOCuota") = "0.000000" cfdi.Conceptos(1).Impuestos.Retenciones(0)("Importe") = "0.00" ' Conceptos con Información Aduanera cfdi.Conceptos(2)("ClaveProdServ") = "01010101" cfdi.Conceptos(2)("NoIdentificacion") = "COD03" cfdi.Conceptos(2)("Cantidad") = "1.00" cfdi.Conceptos(2)("ClaveUnidad") = "C81" cfdi.Conceptos(2)("Unidad") = "Pieza" cfdi.Conceptos(2)("Descripcion") = "Producto de prueba 3" cfdi.Conceptos(2)("ValorUnitario") = "100.00" cfdi.Conceptos(2)("Importe") = "123.45" cfdi.Conceptos(2)("Descuento") = "0.00" cfdi.Conceptos(2).InformacionAduanera(0)("NumeroPedimento") = "0987654321" cfdi.Conceptos(2).InformacionAduanera(1)("NumeroPedimento") = "7896541230" ' Conceptos con Cuenta Predial cfdi.Conceptos(3)("ClaveProdServ") = "01010101" cfdi.Conceptos(3)("NoIdentificacion") = "COD04" cfdi.Conceptos(3)("Cantidad") = "1.00" cfdi.Conceptos(3)("ClaveUnidad") = "C81" cfdi.Conceptos(3)("Unidad") = "Pieza" cfdi.Conceptos(3)("Descripcion") = "Producto de prueba 4" cfdi.Conceptos(3)("ValorUnitario") = "100.00" cfdi.Conceptos(3)("Importe") = "123.45" cfdi.Conceptos(3)("Descuento") = "0.00" cfdi.Conceptos(3).CuentaPredial("Numero") = "1234567890" ' Conceptos con Parte cfdi.Conceptos(4)("ClaveProdServ") = "01010101" cfdi.Conceptos(4)("NoIdentificacion") = "COD05" cfdi.Conceptos(4)("Cantidad") = "1.00" cfdi.Conceptos(4)("ClaveUnidad") = "C81" cfdi.Conceptos(4)("Unidad") = "Pieza" cfdi.Conceptos(4)("Descripcion") = "Producto de prueba 5" cfdi.Conceptos(4)("ValorUnitario") = "100.00" cfdi.Conceptos(4)("Importe") = "123.45" cfdi.Conceptos(4)("Descuento") = "0.00" cfdi.Conceptos(4).Parte(0)("ClaveProdServ") = "0101010101" cfdi.Conceptos(4).Parte(0)("NoIdentificacion") = "COD05" cfdi.Conceptos(4).Parte(0)("Cantidad") = "1.00" cfdi.Conceptos(4).Parte(0)("Unidad") = "Pieza" cfdi.Conceptos(4).Parte(0)("Descripcion") = "Parte 1" cfdi.Conceptos(4).Parte(0)("ValorUnitario") = "100.00" cfdi.Conceptos(4).Parte(0)("Importe") = "100.00" cfdi.Conceptos(4).Parte(0).InformacionAduanera(0)("NumeroPedimento") = "1234567890" ' Se Lee el XML del complemento a Agregar Dim complemento As New XmlDocument() complemento.Load("ruta_xml_complemento.xml") cfdi.Conceptos(5).AgregaComplemento(complemento) ' Impuestos cfdi.Impuestos("TotalImpuestosRetenidos") = "0.00" cfdi.Impuestos("TotalImpuestosTrasladados") = "16.00" ' Retenciones cfdi.Impuestos.Retenciones(0)("Impuesto") = "ISR" cfdi.Impuestos.Retenciones(0)("Importe") = "0.00" ' Traslados cfdi.Impuestos.Traslados(0)("Impuesto") = "001" cfdi.Impuestos.Traslados(0)("Importe") = "16.00" cfdi.Impuestos.Traslados(0)("TasaOCuota") = "0.160000" cfdi.Impuestos.Traslados(0)("TipoFactor") = "Tasa" ' Sellar XML cfdi.Sellar("rutaXSLT", "Ruta archivo KEY", "Ruta archivo CER", "Clave Certificados") ' Se guarda el XML cfdi.Documento.Save("cfdi33.xml") |
Ejemplo JAVA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
public static void main(String[] args) throws Exception { // Ruta de XSLT para Cadena Original String xslt = "C:\\Users\\IsaRoGaMX\\Documents\\FE\\cadenaoriginal_3_3.xslt"; // Ruta de archivo CER String pcer = "C:\\Users\\IsaRoGaMX\\Desktop\\certificadopruebas33\\CertificadoPruebas\\CSD010_AAA010101AAA.cer"; // Ruta de archivo KEY String pkey = "C:\\Users\\IsaRoGaMX\\Desktop\\certificadopruebas33\\CertificadoPruebas\\CSD010_AAA010101AAA.key"; // Contraseña de archivo KEY String pass = "12345678a"; // Comprobante Comprobante cfdi = new Comprobante(); cfdi.setAtributo("Serie", "F"); cfdi.setAtributo("Folio", "123"); cfdi.setAtributo("Fecha", "2017-05-05T20:12:58"); cfdi.setAtributo("FormaPago", "99"); cfdi.setAtributo("CondicionesDePago", "En una sola exhibición"); cfdi.setAtributo("SubTotal", "500.05"); cfdi.setAtributo("Descuento", "0.00"); cfdi.setAtributo("Moneda", "MXN"); cfdi.setAtributo("TipoCambio", "1"); cfdi.setAtributo("Total", "500.05"); cfdi.setAtributo("TipoDeComprobante", "I"); cfdi.setAtributo("MetodoPago", "PUE"); cfdi.setAtributo("LugarExpedicion", "01000"); // Emisor cfdi.Emisor().setAtributo("Rfc", "AAA010101AAA"); cfdi.Emisor().setAtributo("Nombre", "ACCEM SERVICIOS EMPRESARIALES SC"); cfdi.Emisor().setAtributo("RegimenFiscal", "601"); // Receptor cfdi.Receptor().setAtributo("Rfc", "XAXX010101000"); cfdi.Receptor().setAtributo("Nombre", "Público en General"); cfdi.Receptor().setAtributo("UsoCFDI", "G01"); // Concepto Normal cfdi.Conceptos().Concepto(0).setAtributo("ClaveProdServ", "01010101"); cfdi.Conceptos().Concepto(0).setAtributo("Cantidad", "1.00"); cfdi.Conceptos().Concepto(0).setAtributo("ClaveUnidad", "C81"); cfdi.Conceptos().Concepto(0).setAtributo("Descripcion", "Producto de prueba"); cfdi.Conceptos().Concepto(0).setAtributo("ValorUnitario", "500.05"); cfdi.Conceptos().Concepto(0).setAtributo("Importe", "500.05"); // Complemento Leyendas Fiscales Complemento leyendasFiscales = new Complemento(NSXml.creaInstancia("leyendasFisc", "http://www.sat.gob.mx/leyendasFiscales", "http://www.sat.gob.mx/sitio_internet/cfd/leyendasFiscales/leyendasFisc.xsd")); NodoComplemento nodoLeyendas = new NodoComplemento("LeyendasFiscales"); nodoLeyendas.setAtributo("Version", "1.0"); leyendasFiscales.AgregaNodo(nodoLeyendas); NodoComplemento nodoLeyenda = new NodoComplemento("Leyenda"); nodoLeyenda.setAtributo("disposicionFiscal", "LISR 2014"); nodoLeyenda.setAtributo("norma", "Sección I, Capítulo II, Título IV"); nodoLeyenda.setAtributo("textoLeyenda", "DE LAS PERSONAS FÍSICAS CON ACTIVIDADES EMPRESARIALES Y PROFESIONALES"); nodoLeyendas.AgregaNodo(nodoLeyenda); // Se agrega complemento (SIEMPRE ANTES DE SELLAR) cfdi.AgregarComplemento(leyendasFiscales.Documento()); // Se sella el Comprobante cfdi.SellarCFDI(pcer, pkey, pass, xslt); // Se guarda el XML cfdi.Guardar("C:\\Users\\IsaRoGaMX\\workspace\\CFDi33\\cfdi33.xml"); } |
En seguida les muestro el XML generado por la librería
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
<?xml version="1.0" encoding="utf-8"?> <cfdi:Comprobante Version="3.3" Serie="F" Folio="123" Fecha="2017-03-04T10:27:49" FormaPago="01" CondicionesDePago="En una sola exhibición" SubTotal="123.45" Descuento="0.00" Moneda="MXN" TipoCambio="1.00" Total="123.45" TipoDeComprobante="I" MetodoPago="PUE" LugarExpedicion="27000" Confirmacion="12345" xmlns:cfdi="http://www.sat.gob.mx/cfd/3"> <cfdi:CfdiRelacionados TipoRelacion="01"> <cfdi:CfdiRelacionado UUID="9FB6ED1A-5F37-4FEF-980A-7F8C83B51894" /> </cfdi:CfdiRelacionados> <cfdi:Emisor Rfc="AAA010101AAA" Nombre="Accem Servicios Empresariales" RegimenFiscal="601" /> <cfdi:Receptor Rfc="XAXX010101000" Nombre="Público en General" UsoCFDI="G01" /> <cfdi:Conceptos> <cfdi:Concepto ClaveProdServ="01010101" NoIdentificacion="COD01" Cantidad="1.00" ClaveUnidad="C81" Unidad="Pieza" Descripcion="Producto de prueba 1" ValorUnitario="100.00" /> <cfdi:Concepto ClaveProdServ="01010101" NoIdentificacion="COD02" Cantidad="1.00" ClaveUnidad="C81" Unidad="Pieza" Descripcion="Producto de prueba 2" ValorUnitario="100.00"> <cfdi:Impuestos> <cfdi:Traslados> <cfdi:Traslado Base="1.00" Impuesto="IVA" TipoFactor="Tasa" TasaOCuota="0.000000" Importe="0.00" /> </cfdi:Traslados> <cfdi:Retenciones> <cfdi:Retencion Base="1.00" Impuesto="IVA" TipoFactor="Tasa" TasaOCuota="0.000000" Importe="0.00" /> </cfdi:Retenciones> </cfdi:Impuestos> </cfdi:Concepto> <cfdi:Concepto ClaveProdServ="01010101" NoIdentificacion="COD03" Cantidad="1.00" ClaveUnidad="C81" Unidad="Pieza" Descripcion="Producto de prueba 3" ValorUnitario="100.00"> <cfdi:InformacionAduanera NumeroPedimento="0987654321" /> <cfdi:InformacionAduanera NumeroPedimento="7896541230" /> </cfdi:Concepto> <cfdi:Concepto ClaveProdServ="01010101" NoIdentificacion="COD04" Cantidad="1.00" ClaveUnidad="C81" Unidad="Pieza" Descripcion="Producto de prueba 4" ValorUnitario="100.00"> <cfdi:CuentaPredial Numero="1234567890" /> </cfdi:Concepto> <cfdi:Concepto ClaveProdServ="01010101" NoIdentificacion="COD05" Cantidad="1.00" ClaveUnidad="C81" Unidad="Pieza" Descripcion="Producto de prueba 5" ValorUnitario="100.00"> <cfdi:Parte ClaveProdServ="0101010101" NoIdentificacion="COD05" Cantidad="1.00" Unidad="Pieza" Descripcion="Parte 1" ValorUnitario="100.00" Importe="100.00" /> </cfdi:Concepto> </cfdi:Conceptos> <cfdi:Impuestos TotalImpuestosRetenidos="0.00" TotalImpuestosTrasladados="16.00"> <cfdi:Retenciones> <cfdi:Retencion Impuesto="ISR" Importe="0.00" /> </cfdi:Retenciones> <cfdi:Traslados> <cfdi:Traslado Impuesto="ISR" Importe="0.00" TasaOCuota="0.160000" TipoFactor="Tasa" /> </cfdi:Traslados> </cfdi:Impuestos> </cfdi:Comprobante> |
Agregar un Complemento
Existen dos formas de agregar complementos al CFDi, generar el XML del complemento de forma manual (concatenando un string o utilizando las clases de .NET de XML) o utilizar la librería ComplementoCFDi para generar el XML del complemento. No importa cual método utilices siempre que guardes dicho XML en algun archivo para leerlo desde ahí e importarlo al CFDi de la siguiente forma:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// Se Lee el XML del complemento a Agregar XmlDocument complemento = new XmlDocument(); complemento.Load(@"C:\Users\IsaRoGaMX\Documents\complemento.xml"); // Se agrega el complemento al CFDi cfdi.AgregarComplemento(complemento); // Sellado cfdi.Sellar(@"C:\Users\IsaRoGaMX\Documents\FE\cadenaoriginal_3_3.xslt", @"C:\Users\IsaRoGaMX\Desktop\CertificadoPruebas\CSD010_AAA010101AAA.key", @"C:\Users\IsaRoGaMX\Desktop\CertificadoPruebas\CSD010_AAA010101AAA.cer", "12345678a" ); // Se guarda el XML cfdi.Documento.Save("cfdi33.xml"); |
Consideraciones:
- El complemento se debe agregar ANTES de sellar el CFDi.
- En el archivo XSLT que genera la cadena original se deben importar los XSLT de los complementos que deseamos utilizar en nuestros CFDi, en este caso en el archivo cadenaoriginal_3_3.xslt.
30/03/2021 a las 12:47 PM
Información del precio de la librería
30/03/2021 a las 5:00 PM
Te mando correo
30/03/2021 a las 1:26 PM
Buen día, que PAC usas para timbrado?, está libreria la puedo integrar con un sistema punto de venta en C#?
30/03/2021 a las 2:34 PM
Buen día, cuando la desarrolle la probé con Finkok, pero la librería te genera el XML sellado para que lo timbres con el PAC que gustes
30/07/2021 a las 10:53 AM
Informacion y precio
25/08/2021 a las 9:34 AM
Me puedes dar el precio?
tu solucion funciona para la nomina?
16/03/2022 a las 1:34 PM
Hola, me puedes dar más información sobre el precio de la librería?
Acepta todo tipo de CFDI? (Facturación ,Complementos de pago, Carta porte, Addendas)
09/06/2022 a las 10:53 PM
Puedes encontrar la nueva libreria en mi perfil de nuget https://www.nuget.org/profiles/IsaRoGaMX o puedes buscarlo directamente en Visual Studio, los complementos los voy a estar liberando conforme los vaya terminando
08/04/2022 a las 8:57 AM
Información del precio para c#
09/06/2022 a las 10:50 PM
Puedes encontrar la librería en nuget o lo puedes ver en mi perfil https://www.nuget.org/profiles/IsaRoGaMX, voy a ir liberando el resto de complementos conforme los vaya terminando, por si gustas decirme cuales necesitas para tomarlo en cuenta
19/04/2022 a las 8:30 PM
tienes la librería para la version 4? y qe costo para c#
09/06/2022 a las 10:49 PM
Puedes encontrar la libreria en el siguiente enlace: https://www.nuget.org/profiles/IsaRoGaMX, o la puedes buscar en nuget, voy a ir liberando los demás complementos conforme los vaya terminando por si gustas decirme cuales son los que necesitas para tomarlo en cuenta
27/06/2022 a las 10:37 AM
Hola Master, un favor, requiero asesoria full de java y CFDI, adicional saber le precio de la libreria para CFDI nomina 4.0.
Saludos.
28/06/2022 a las 2:46 PM
Buen día, específicamente en que necesitas asesoría? Saludos
10/08/2022 a las 1:15 PM
Hola, que precio tiene la libreria?
Me sirve para generar cfdi de ventas globales?
30/08/2022 a las 8:52 AM
Buen dia, te dejo el link para la libreria de cfdi 4.0, si te funciona para ventas globales, solo debes llenar los datos correspondientes, puedes basarte en los ejemplos https://isaacrobles.com/facturacion-cfdi-sat/libreria-para-facturacion-electronica-cfdi-4-0/
10/08/2022 a las 11:23 PM
Proporcioname el costo de la librería, necesito para la versión 3.3 y 4.0
30/08/2022 a las 8:51 AM
Buen dia, te dejo el link de la libreria para CFDI 4.0 https://isaacrobles.com/facturacion-cfdi-sat/libreria-para-facturacion-electronica-cfdi-4-0/