Abrimos el menú de "Proyecto" e indicamos la opción "Administrar paquetes NuGet".
Indicamos el nombre del paquete NuGet e instalamos.
El primer paso es abrir el instalador y se mostrará la siguiente ventana.
Indicamos la ruta donde instalaremos las dependencias del SDK.
Seleccionamos las bibliotecas con las que deseamos trabajar.
En esta ventana debemos aceptar la configuración de instalación que deseamos.
El último paso es confirmar el termino de la instalación de las bibiliotecas para comenzar su uso.
Abrimos el menú de "Proyecto" e indicamos la opción "Referencia".
Indicamos el uso de la biblioteca "tagcode BuildCFDI" que se encuentra en la ruta "C:\Windows\System32\tagcode.BuildCFDI.tlb".
El primer paso es abrir el instalador y se mostrará la siguiente ventana.
Indicamos la ruta donde instalaremos las dependencias del SDK.
Seleccionamos las bibliotecas con las que deseamos trabajar.
En esta ventana debemos aceptar la configuración de instalación que deseamos.
El último paso es confirmar el termino de la instalación de las bibiliotecas para comenzar su uso.
Con nuestro código de comandos JSON ejecutaremos la aplicación consola.
using tagcode.BuildCFDI; //Configuración general para el uso de servicios ConfiguracionesBuildCFDI config = new ConfiguracionesBuildCFDI("CFx4....Hg", "micontraseñaPIN", "C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña"); //Puedes establecer los certificados a partir de un dato Byte ConfiguracionesBuildCFDI config = new ConfiguracionesBuildCFDI("CFx4....Hg", "micontraseñaPIN", Certificado[], LlavePrivada[], "micontraseña"); //Es posible establecer la cuenta PIN para el uso de servicios config.EstablecerPIN("CFx4....Hg", "miconstraseñaPIN"); //Es posible establecer los certificados con un método independiente config.EstablecerCertificados("C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña"); //Es posible establecer los certificados con un método independiente a partir de un dato Byte config.EstablecerCertificados(Certificado[], LlavePrivada[], "micontraseña"); //Podemos establecer una dirección Proxy para el paso de la información a la Red. config.EstablecerProxy = "127.0.0.1:8888"; //Es posible establecer el comportamiento de los mensajes de errores. config.MostrarDetallesEnErrores = true; //Esta propiedad nos permite cambiar la URL de la API para usuarios con servicio personalizado. config.UrlAPI = "https://...";
'Configuración general para el uso de servicios Dim config As New ConfiguracionesBuildCFDI 'Establecer la cuenta PIN para el uso de servicios config.EstablecerPIN "CFx4....Hg", "miconstraseñaPIN" 'Establecer los certificados con un método independiente config.EstablecerCertificados "C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña" 'Es posible establecer los certificados con un método independiente a partir de un dato Byte config.EstablecerCertificadosByte Certificado(), LlavePrivada(), "micontraseña" 'Podemos establecer una dirección Proxy para el paso de la información a la Red. config.EstablecerProxy = "127.0.0.1:8888" 'Es posible establecer el comportamiento de los mensajes de errores. config.MostrarDetallesEnErrores = True 'Esta propiedad nos permite cambiar la URL de la API para usuarios con servicio personalizado. config.UrlAPI = "https://..."
{ "ConfiguracionesConsola": { //Establece la cuenta PIN (Cuenta de timbres) "PIN": "CFx45...Hg", //Establece la contraseña de la cuenta PIN "PasswordPIN": "micontraseña", //Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. "MostrarDetallesEnErrores": true, //Podemos establecer una dirección Proxy para el paso de la información a la Red. "EstablecerProxy": "127.0.0.1:8888", //Indica si la salida de errores será por medio de un Archivo ó directo a la consola. "ErroresEnConsola": false, //Indica si la salida de resultados de la función ejecutada será por medio de un Archivo ó directo a la consola. "ResultadosEnConsola": false, //Cuando el campo ErroresEnConsola sea 'true', este campo será obligatorio establecerlo. (Condicional) "ArchivoErrores": "C:\\Errores.json", //Cuando el campo ResultadosEnConsola sea 'true', este campo será obligatorio establecerlo. (Condicional) "ArchivoResultados": "C:\\Resultados.json" }, "BuildCFDI": { "..." } }
using tagcode.BuildCFDI; using static tagcode.BuildCFDI.Cfdi; //Creamos el nodo Comprobante Comprobante c = new Comprobante(DateTime.Now, 1500, 2000, "MXN", opTipoDeComprobante.Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago.PUE, 20, 1); //Creamos el nodo Emisor Emisor em = new Emisor("AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601"); //Creamos el nodo Receptor Receptor r = new Receptor("ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03"); //Creamos el nodo Conceptos Conceptos con = new Conceptos(); //Puedes agregar la cantidad de conceptos que necesites for (int i = 0; i < 3; i++) { //Creamos el nodo impuestos del concepto Conceptos.Impuestos im = new Conceptos.Impuestos(); //Puedes agregar la cantidad de traslados necesarios. //for(int i = 0; i < N; i++){ im.AgregarTraslado(opImpuestosTraslado.IVA, 1000, opImpuestosTipoFactor.Tasa, 0.16, 160); //} //Puedes agregar la cantidad de retenciones necesarias //for(int i = 0; i < N; i++){ im.AgregarRetencion(opImpuestosRetencion.ISR, 1000, opImpuestosTipoFactor.Tasa, 0.04, 40); //} //Agregamos el nodo concepto con.AgregarConcepto("01010101", 1, "E48", "Prueba de factura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im); } //Configuración general para el uso de servicios (Obligatorio para poder timbrar) ConfiguracionesBuildCFDI config = new ConfiguracionesBuildCFDI("CFx45...Hg", "micontraseña", "C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña"); //Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = true; //Iniciamos la clase que genera el CFDI y timbra. Cfdi cfdi = new Cfdi(); ResultadosTimbre res = cfdi.TimbrarCFDI("C:\\XML\\CfdiTimbrado.xml", opTipoTimbre.TimbrePrueba, c, em, r, con, null, null, null, "C:\\XML\\QR.png"); //Podemos hacer uso de la información generada con el timbre Console.WriteLine(res.UUID); Console.WriteLine(res.CadenaTimbrado); Console.WriteLine(res.FechaTimbrado); Console.WriteLine(res.NoCertificadoCFDI); Console.WriteLine(res.NoCertificadoSAT); Console.WriteLine(res.SelloCFDI); Console.WriteLine(res.SelloSAT); Console.WriteLine(res.Leyenda); Console.WriteLine(res.PAC);
'Creamos el nodo Comprobante Dim c As New Comprobante c.CrearNodo Now, 1500, 2000, "MXN", opTipoDeComprobante_Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago_PUE, 20, 1 'Creamos el nodo Emisor Dim em As New Emisor em.CrearNodo "AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601" 'Creamos el nodo Receptor Dim r As New Receptor r.CrearNodo "ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03" 'Creamos el nodo Conceptos Dim con As New Conceptos 'Puedes agregar la cantidad de conceptos que necesites For i = 0 To 3 'Creamos el nodo impuestos del concepto Dim im As New Impuestos 'Puedes agregar la cantidad de traslados necesarios. 'For i = 0 To N im.AgregarTraslado opImpuestosTraslado_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.16, 160 'Next i 'Puedes agregar la cantidad de retenciones necesarias 'For i = 0 To N im.AgregarRetencion opImpuestosRetencion_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.04, 40 'Next i 'Agregamos el nodo concepto con.AgregarConcepto "01010101", 1, "E48", "Prueba de factura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im Next i 'Configuración general para el uso de servicios (Obligatorio para poder timbrar) Dim config As New ConfiguracionesBuildCFDI 'Establece los parametros de la cuenta de timbre que se usará para timbrar el documento. config.EstablecerPIN "CFx45...Hg", "micontraseña" 'Establecemos los certificados con los que firmaremos el CFDI previo al timbre. config.EstablecerCertificados "C:\CSD\Certificado.cer", "C:\CSD\LlavePrivada.key", "micontraseña" 'Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = True 'Iniciamos la clase que genera el CFDI y timbra. Dim cfdi As New cfdi Dim res As ResultadosTimbre Set res = cfdi.TimbrarCFDI("C:\XML\CfdiTimbrado.xml", opTipoTimbre_TimbrePrueba, c, em, r, con, , , , "C:\XML\QR.png") 'Podemos hacer uso de la información generada con el timbre MsgBox res.UUID MsgBox res.CadenaTimbrado MsgBox res.FechaTimbrado MsgBox res.NoCertificadoCFDI MsgBox res.NoCertificadoSAT MsgBox res.SelloCFDI MsgBox res.SelloSAT MsgBox res.Leyenda MsgBox res.PAC
{ "ConfiguracionesConsola": { "PIN": "CFx45...Hg", "PasswordPIN": "micontraseña", "MostrarDetallesEnErrores": true, "ErroresEnConsola": false, "ResultadosEnConsola": false, "ArchivoErrores": "C:\\Errores.json", "ArchivoResultados": "C:\\Resultados.json" }, "BuildCFDI": { "Cfdi": { "TimbrarXML": { //Obligatorio "Certificado": "C:\\CSD\\Certificado.cer", //Obligatorio "LlavePrivada": "C:\\CSD\\LlavePrivada.key", //Obligatorio "PasswordLlavePrivada": "Contraseña", //Obligatorio (Prueba, Produccion) "TipoServicio": "Prueba", //Obligatorio "ArchivoXML": "C:\\XML\\CfdiTimbrado.xml", //Opcional "ArchivoQR": "C:\\XML\\QR.png" }, //Todos los campos y nodos corresponden a la estructura jerárquica de un CFDI según el Anexo 20 "Comprobante": { "Fecha": "2022-02-22T13:00:00", "Folio": "2574", "Serie": "C", "LugarExpedicion": "01010", "Moneda": "MXN", "TipoDeComprobante": "I", "FormaPago": "01", "CondicionesDePago": "Pago de contado", "SubTotal": 1000, "Total": 1100, "Descuento": 20, "MetodoPago": "PUE", "Emisor": { "Rfc": "AAA010101AAA", "Nombre": "EMPRESA DE PRUEBA SA DE CV", "RegimenFiscal": "601" }, "Receptor": { "Rfc": "ROQB401225R10", "Nombre": "BERNARDO ROQUE QUIÑONES", "DomicilioFiscalReceptor": "01010", "RegimenFiscalReceptor": "626", "UsoCFDI": "G03" }, "Conceptos": [ { "ClaveProdServ": "01010101", "ClaveUnidad": "E48", "Descripcion": "Prueba de factura 1", "NoIdentificacion": "SKU321513", "Unidad": "Servicio", "Cantidad": 1, "ValorUnitario": 500, "Importe": 500, "Descuento": 10, "ObjetoImp": "02", "Impuestos": { "Retenciones": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.04, "Importe": 20 } ], "Traslados": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.16, "Importe": 80 } ] } }, { "ClaveProdServ": "01010101", "ClaveUnidad": "E48", "Descripcion": "Prueba de factura 2", "NoIdentificacion": "SKU321514", "Unidad": "Servicio", "Cantidad": 1, "ValorUnitario": 500, "Importe": 500, "Descuento": 10, "ObjetoImp": "02", "Impuestos": { "Retenciones": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.04, "Importe": 20 } ], "Traslados": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.16, "Importe": 80 } ] } } ] } } } }
using tagcode.BuildCFDI; using static tagcode.BuildCFDI.Cfdi; //Creamos el nodo Comprobante Comprobante c = new Comprobante(DateTime.Now, 1500, 2000, "MXN", opTipoDeComprobante.Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago.PUE, 20, 1); //Creamos el nodo Informacion global InformacionGlobal ig = new InformacionGlobal("02", "03", 2023); //Creamos el nodo Emisor Emisor em = new Emisor("AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601"); //Creamos el nodo Receptor Receptor r = new Receptor("XAXX010101000", "PUBLICO EN GENERAL", "01010", "616", "S01"); //Creamos el nodo Conceptos Conceptos con = new Conceptos(); //Puedes agregar la cantidad de conceptos que necesites for (int i = 0; i < 3; i++) { //Creamos el nodo impuestos del concepto Conceptos.Impuestos im = new Conceptos.Impuestos(); //Puedes agregar la cantidad de traslados necesarios. //for(int i = 0; i < N; i++){ im.AgregarTraslado(opImpuestosTraslado.IVA, 1000, opImpuestosTipoFactor.Tasa, 0.16, 160); //} //Puedes agregar la cantidad de retenciones necesarias //for(int i = 0; i < N; i++){ im.AgregarRetencion(opImpuestosRetencion.ISR, 1000, opImpuestosTipoFactor.Tasa, 0.04, 40); //} //Agregamos el nodo concepto con.AgregarConcepto("01010101", 1, "ACT", "Venta", 1000, 1000, "02", i.ToString("000"), "", 0, im); } //Configuración general para el uso de servicios (Obligatorio para poder timbrar) ConfiguracionesBuildCFDI config = new ConfiguracionesBuildCFDI("CFx45...Hg", "micontraseña", "C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña"); //Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = true; //Iniciamos la clase que genera el CFDI y timbra. Cfdi cfdi = new Cfdi(); ResultadosTimbre res = cfdi.TimbrarCFDI("C:\\XML\\CfdiGlobal.xml", opTipoTimbre.TimbrePrueba, c, em, r, con, ig, null, null, "C:\\XML\\QR.png"); //Podemos hacer uso de la información generada con el timbre Console.WriteLine(res.UUID); Console.WriteLine(res.CadenaTimbrado); Console.WriteLine(res.FechaTimbrado); Console.WriteLine(res.NoCertificadoCFDI); Console.WriteLine(res.NoCertificadoSAT); Console.WriteLine(res.SelloCFDI); Console.WriteLine(res.SelloSAT); Console.WriteLine(res.Leyenda); Console.WriteLine(res.PAC);
'Creamos el nodo Comprobante Dim c As New Comprobante c.CrearNodo Now, 1500, 2000, "MXN", opTipoDeComprobante_Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago_PUE, 20, 1 'Creamos el nodo Información global Dim ig As New InformacionGlobal ig.CrearNodo "02", "03", 2023 'Creamos el nodo Emisor Dim em As New Emisor em.CrearNodo "AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601" 'Creamos el nodo Receptor Dim r As New Receptor r.CrearNodo "XAXX010101000", "PUBLICO EN GENERAL", "01010", "616", "S01" 'Creamos el nodo Conceptos Dim con As New Conceptos 'Puedes agregar la cantidad de conceptos que necesites For i = 0 To 3 'Creamos el nodo impuestos del concepto Dim im As New Impuestos 'Puedes agregar la cantidad de traslados necesarios. 'For i = 0 To N im.AgregarTraslado opImpuestosTraslado_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.16, 160 'Next i 'Puedes agregar la cantidad de retenciones necesarias 'For i = 0 To N im.AgregarRetencion opImpuestosRetencion_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.04, 40 'Next i 'Agregamos el nodo concepto con.AgregarConcepto "01010101", 1, "ACT", "Venta", 1000, 1000, "02", Format(i, "000"), , , im Next i 'Configuración general para el uso de servicios (Obligatorio para poder timbrar) Dim config As New ConfiguracionesBuildCFDI 'Establece los parametros de la cuenta de timbre que se usará para timbrar el documento. config.EstablecerPIN "CFx45...Hg", "micontraseña" 'Establecemos los certificados con los que firmaremos el CFDI previo al timbre. config.EstablecerCertificados "C:\CSD\Certificado.cer", "C:\CSD\LlavePrivada.key", "micontraseña" 'Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = True 'Iniciamos la clase que genera el CFDI y timbra. Dim cfdi As New cfdi Dim res As ResultadosTimbre Set res = cfdi.TimbrarCFDI("C:\XML\CfdiGlobal.xml", opTipoTimbre_TimbrePrueba, c, em, r, con, ig, , , "C:\XML\QR.png") 'Podemos hacer uso de la información generada con el timbre MsgBox res.UUID MsgBox res.CadenaTimbrado MsgBox res.FechaTimbrado MsgBox res.NoCertificadoCFDI MsgBox res.NoCertificadoSAT MsgBox res.SelloCFDI MsgBox res.SelloSAT MsgBox res.Leyenda MsgBox res.PAC
{ "ConfiguracionesConsola": { "PIN": "CFx45...Hg", "PasswordPIN": "micontraseña", "MostrarDetallesEnErrores": true, "ErroresEnConsola": false, "ResultadosEnConsola": false, "ArchivoErrores": "C:\\Errores.json", "ArchivoResultados": "C:\\Resultados.json" }, "BuildCFDI": { "Cfdi": { "TimbrarXML": { //Obligatorio "Certificado": "C:\\CSD\\Certificado.cer", //Obligatorio "LlavePrivada": "C:\\CSD\\LlavePrivada.key", //Obligatorio "PasswordLlavePrivada": "Contraseña", //Obligatorio (Prueba, Produccion) "TipoServicio": "Prueba", //Obligatorio "ArchivoXML": "C:\\XML\\CfdiGlobal.xml", //Opcional "ArchivoQR": "C:\\XML\\QR.png" }, //Todos los campos y nodos corresponden a la estructura jerárquica de un CFDI según el Anexo 20 "Comprobante": { "Fecha": "2023-03-10T13:00:00", "Folio": "2574", "Serie": "C", "LugarExpedicion": "01010", "Moneda": "MXN", "TipoDeComprobante": "I", "FormaPago": "01", "CondicionesDePago": "Pago de contado", "SubTotal": 1000, "Total": 1100, "Descuento": 20, "MetodoPago": "PUE", //Declaramos el nodo Información global "InformacionGlobal": { "Periodicidad": "02", "Meses": "03", "Año": 2023 }, "Emisor": { "Rfc": "AAA010101AAA", "Nombre": "EMPRESA DE PRUEBA SA DE CV", "RegimenFiscal": "601" }, "Receptor": { "Rfc": "XAXX010101000", "Nombre": "PUBLICO EN GENERAL", "DomicilioFiscalReceptor": "01010", "RegimenFiscalReceptor": "616", "UsoCFDI": "S01" }, "Conceptos": [ { "ClaveProdServ": "01010101", "ClaveUnidad": "ACT", "Descripcion": "Venta", "NoIdentificacion": "001", "Cantidad": 1, "ValorUnitario": 500, "Importe": 500, "ObjetoImp": "02", "Impuestos": { "Retenciones": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.04, "Importe": 20 } ], "Traslados": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.16, "Importe": 80 } ] } }, { "ClaveProdServ": "01010101", "ClaveUnidad": "ACT", "Descripcion": "Venta", "NoIdentificacion": "002", "Cantidad": 1, "ValorUnitario": 500, "Importe": 500, "ObjetoImp": "02", "Impuestos": { "Retenciones": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.04, "Importe": 20 } ], "Traslados": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.16, "Importe": 80 } ] } } ] } } } }
using tagcode.BuildCFDI; using static tagcode.BuildCFDI.Cfdi; using static tagcode.BuildCFDI.Cfdi.CfdiRelacionados; //Creamos el nodo Comprobante Comprobante c = new Comprobante(DateTime.Now, 1500, 2000, "MXN", opTipoDeComprobante.Egreso, "01010", "01", "01", "255", "N", "", opMetodoPago.PUE, 20); //Creamos el nodo CfdiRelacionado con los comprobantes CfdiRelacionado rel = new CfdiRelacionado(); //Puedes agregar la cantidad de relaciones necesarias //for(int i = 0; i < N; i++){ rel.AgregarUUID("3E01CF7D-7258-42F7-9A21-7170C74B35EC"); //} //Creamos el nodo CfdiRelacionados indicando el tipo de relacion y los documentos relacionados anteriormente. CfdiRelacionados cr = new CfdiRelacionados("01", rel); //Creamos el nodo Emisor Emisor em = new Emisor("AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601"); //Creamos el nodo Receptor Receptor r = new Receptor("ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G02"); //Creamos el nodo Conceptos Conceptos con = new Conceptos(); //Puedes agregar la cantidad de conceptos que necesites for (int i = 0; i < 3; i++) { //Creamos el nodo impuestos del concepto Conceptos.Impuestos im = new Conceptos.Impuestos(); //Puedes agregar la cantidad de traslados necesarios. //for(int i = 0; i < N; i++){ im.AgregarTraslado(opImpuestosTraslado.IVA, 1000, opImpuestosTipoFactor.Tasa, 0.16, 160); //} //Puedes agregar la cantidad de retenciones necesarias //for(int i = 0; i < N; i++){ im.AgregarRetencion(opImpuestosRetencion.ISR, 1000, opImpuestosTipoFactor.Tasa, 0.04, 40); //} //Agregamos el nodo concepto con.AgregarConcepto("84111506", 1, "ACT", "Devolución de producto", 1000, 1000, "02", "SKU321513", "", 10, im); } //Configuración general para el uso de servicios (Obligatorio para poder timbrar) ConfiguracionesBuildCFDI config = new ConfiguracionesBuildCFDI("CFx45...Hg", "micontraseña", "C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña"); //Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = true; //Iniciamos la clase que genera el CFDI y timbra. Cfdi cfdi = new Cfdi(); ResultadosTimbre res = cfdi.TimbrarCFDI("C:\\XML\\CfdiEgreso.xml", opTipoTimbre.TimbrePrueba, c, em, r, con, null, cr, null, "C:\\XML\\QR.png"); //Podemos hacer uso de la información generada con el timbre Console.WriteLine(res.UUID); Console.WriteLine(res.CadenaTimbrado); Console.WriteLine(res.FechaTimbrado); Console.WriteLine(res.NoCertificadoCFDI); Console.WriteLine(res.NoCertificadoSAT); Console.WriteLine(res.SelloCFDI); Console.WriteLine(res.SelloSAT); Console.WriteLine(res.Leyenda); Console.WriteLine(res.PAC);
'Creamos el nodo Comprobante Dim c As New Comprobante c.CrearNodo Now, 1500, 2000, "MXN", opTipoDeComprobante_Egreso, "01010", "01", "01", "255", "N", , opMetodoPago_PUE, 20 'Creamos el nodo CfdiRelacionado con los comprobantes Dim rel As New CfdiRelacionado 'Puedes agregar la cantidad de relaciones necesarias 'For i = 0 To N rel.AgregarUUID "3E01CF7D-7258-42F7-9A21-7170C74B35EC" 'Next i 'Creamos el nodo CfdiRelacionados indicando el tipo de relacion y los documentos relacionados anteriormente. Dim cr As New CfdiRelacionados cr.CrearNodo "01", rel 'Creamos el nodo Emisor Dim em As New Emisor em.CrearNodo "AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601" 'Creamos el nodo Receptor Dim r As New Receptor r.CrearNodo "ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G02" 'Creamos el nodo Conceptos Dim con As New Conceptos 'Puedes agregar la cantidad de conceptos que necesites For i = 0 To 3 'Creamos el nodo impuestos del concepto Dim im As New Impuestos 'Puedes agregar la cantidad de traslados necesarios. 'For i = 0 To N im.AgregarTraslado opImpuestosTraslado_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.16, 160 'Next i 'Puedes agregar la cantidad de retenciones necesarias 'For i = 0 To N im.AgregarRetencion opImpuestosRetencion_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.04, 40 'Next i 'Agregamos el nodo concepto con.AgregarConcepto "84111506", 1, "ACT", "Devolución de producto", 1000, 1000, "02", "SKU321513", , 10, im Next i 'Configuración general para el uso de servicios (Obligatorio para poder timbrar) Dim config As New ConfiguracionesBuildCFDI 'Establece los parametros de la cuenta de timbre que se usará para timbrar el documento. config.EstablecerPIN "CFx45...Hg", "micontraseña" 'Establecemos los certificados con los que firmaremos el CFDI previo al timbre. config.EstablecerCertificados "C:\CSD\Certificado.cer", "C:\CSD\LlavePrivada.key", "micontraseña" 'Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = True 'Iniciamos la clase que genera el CFDI y timbra. Dim cfdi As New cfdi Dim res As ResultadosTimbre Set res = cfdi.TimbrarCFDI("C:\XML\CfdiEgreso.xml", opTipoTimbre_TimbrePrueba, c, em, r, con, ig, , , "C:\XML\QR.png") 'Podemos hacer uso de la información generada con el timbre MsgBox res.UUID MsgBox res.CadenaTimbrado MsgBox res.FechaTimbrado MsgBox res.NoCertificadoCFDI MsgBox res.NoCertificadoSAT MsgBox res.SelloCFDI MsgBox res.SelloSAT MsgBox res.Leyenda MsgBox res.PAC
{ "ConfiguracionesConsola": { "PIN": "CFx45...Hg", "PasswordPIN": "micontraseña", "MostrarDetallesEnErrores": true, "ErroresEnConsola": false, "ResultadosEnConsola": false, "ArchivoErrores": "C:\\Errores.json", "ArchivoResultados": "C:\\Resultados.json" }, "BuildCFDI": { "Cfdi": { "TimbrarXML": { //Obligatorio "Certificado": "C:\\CSD\\Certificado.cer", //Obligatorio "LlavePrivada": "C:\\CSD\\LlavePrivada.key", //Obligatorio "PasswordLlavePrivada": "Contraseña", //Obligatorio (Prueba, Produccion) "TipoServicio": "Prueba", //Obligatorio "ArchivoXML": "C:\\XML\\CfdiEgreso.xml", //Opcional "ArchivoQR": "C:\\XML\\QR.png" }, //Todos los campos y nodos corresponden a la estructura jerárquica de un CFDI según el Anexo 20 "Comprobante": { "Fecha": "2022-02-22T13:00:00", "Folio": "255", "Serie": "N", "LugarExpedicion": "01010", "Moneda": "MXN", "TipoDeComprobante": "E", "FormaPago": "01", "SubTotal": 1000, "Total": 1100, "Descuento": 20, "MetodoPago": "PUE", //Declaramos el nodo CfdiRelacionados con todos los comprobantes y el tipo de relación "CfdiRelacionados": { "TipoRelacion": "01", "CfdiRelacionado": [ { "UUID": "3E01CF7D-7258-42F7-9A21-7170C74B35EC" } ] }, "Emisor": { "Rfc": "AAA010101AAA", "Nombre": "EMPRESA DE PRUEBA SA DE CV", "RegimenFiscal": "601" }, "Receptor": { "Rfc": "ROQB401225R10", "Nombre": "BERNARDO ROQUE QUIÑONES", "DomicilioFiscalReceptor": "01010", "RegimenFiscalReceptor": "626", "UsoCFDI": "G02" }, "Conceptos": [ { "ClaveProdServ": "84111506", "ClaveUnidad": "ACT", "Descripcion": "Devolución de producto", "NoIdentificacion": "SKU321513", "Cantidad": 1, "ValorUnitario": 500, "Importe": 500, "Descuento": 10, "ObjetoImp": "02", "Impuestos": { "Retenciones": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.04, "Importe": 20 } ], "Traslados": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.16, "Importe": 80 } ] } } ] } } } }
using tagcode.BuildCFDI; using static tagcode.BuildCFDI.Cfdi; using static tagcode.BuildCFDI.Cfdi.Conceptos; using static tagcode.BuildCFDI.Cfdi.Conceptos.Parte; //Creamos el nodo Comprobante Comprobante c = new Comprobante(DateTime.Now, 1500, 2000, "MXN", opTipoDeComprobante.Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago.PUE, 20, 1); //Creamos el nodo Emisor Emisor em = new Emisor("AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601"); //Creamos el nodo Receptor Receptor r = new Receptor("ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03"); //Creamos el nodo Conceptos Conceptos con = new Conceptos(); //Puedes agregar la cantidad de conceptos que necesites for (int i = 0; i < 3; i++) { //Creamos el nodo impuestos del concepto Impuestos im = new Impuestos(); //Puedes agregar la cantidad de traslados necesarios. //for(int i = 0; i < N; i++){ im.AgregarTraslado(opImpuestosTraslado.IVA, 1000, opImpuestosTipoFactor.Tasa, 0.16, 160); //} //Puedes agregar la cantidad de retenciones necesarias //for(int i = 0; i < N; i++){ im.AgregarRetencion(opImpuestosRetencion.ISR, 1000, opImpuestosTipoFactor.Tasa, 0.04, 40); //} //Creamos los nodos Información Aduanera InformacionAduanera ia = new InformacionAduanera(); //Puedes agregar la cantidad de pedimentos necesarios //for(int i = 0; i < N; i++){ ia.AgregarNumeroPedimento("10 47 3807 8003832"); //} //Creamos el nodo Cuenta Predial con el numero correspondiente CuentaPredial cp = new CuentaPredial("159-560-10-000"); //Creamos el nodo ACuentaTerceros con sus datos ACuentaTerceros ct = new ACuentaTerceros("JUFA7608212V6", "ALEJANDRA JUAREZ FORLAN", "601", "01010"); //Creamos el nodo Parte Parte p = new Parte(); //Puedes agregar la cantidad de pedimentos necesarios //for(int i = 0; i < N; i++){ //Agregamos información aduanera correspondiente al concepto del Kit InformacionAduaneraParte iap = new InformacionAduaneraParte(); //Puedes agregar la cantidad de pedimentos necesarios al concepto del Kit //for(int i = 0; i < N; i++){ iap.AgregarNumeroPedimento("10 47 3807 8003832"); //} //Agregamos el concepto del Kit p.AgregarParte("51241200", 1, "Descripción del Kit", "KIT0001", "Pieza", 100, 100, iap); //} //Agregamos el nodo concepto con.AgregarConcepto("01010101", 1, "E48", "Prueba de factura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im, ia, cp, null, ct, p); } //Configuración general para el uso de servicios (Obligatorio para poder timbrar) ConfiguracionesBuildCFDI config = new ConfiguracionesBuildCFDI("CFx45...Hg", "micontraseña", "C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña"); //Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = true; //Iniciamos la clase que genera el CFDI y timbra. Cfdi cfdi = new Cfdi(); ResultadosTimbre res = cfdi.TimbrarCFDI("C:\\XML\\CfdiTimbrado.xml", opTipoTimbre.TimbrePrueba, c, em, r, con, null, null, null, "C:\\XML\\QR.png"); //Podemos hacer uso de la información generada con el timbre Console.WriteLine(res.UUID); Console.WriteLine(res.CadenaTimbrado); Console.WriteLine(res.FechaTimbrado); Console.WriteLine(res.NoCertificadoCFDI); Console.WriteLine(res.NoCertificadoSAT); Console.WriteLine(res.SelloCFDI); Console.WriteLine(res.SelloSAT); Console.WriteLine(res.Leyenda); Console.WriteLine(res.PAC);
'Creamos el nodo Comprobante Dim c As New Comprobante c.CrearNodo Now, 1500, 2000, "MXN", opTipoDeComprobante_Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago_PUE, 20, 1 'Creamos el nodo Emisor Dim em As New Emisor em.CrearNodo "AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601" 'Creamos el nodo Receptor Dim r As New Receptor r.CrearNodo "ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03" 'Creamos el nodo Conceptos Dim con As New Conceptos 'Puedes agregar la cantidad de conceptos que necesites For i = 0 To 3 'Creamos el nodo impuestos del concepto Dim im As New Impuestos 'Puedes agregar la cantidad de traslados necesarios. 'For i = 0 To N im.AgregarTraslado opImpuestosTraslado_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.16, 160 'Next i 'Puedes agregar la cantidad de retenciones necesarias 'For i = 0 To N im.AgregarRetencion opImpuestosRetencion_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.04, 40 'Next i 'Creamos los nodos Información Aduanera Dim ia As New InformacionAduanera 'Puedes agregar la cantidad de pedimentos necesarios 'For i = 0 To N ia.AgregarNumeroPedimento "10 47 3807 8003832" 'Next i 'Creamos el nodo Cuenta Predial con el numero correspondiente Dim cp As New CuentaPredial cp.CrearNodo "159-560-10-000" 'Creamos el nodo ACuentaTerceros con sus datos Dim ct As New ACuentaTerceros ct.CrearNodo "JUFA7608212V6", "ALEJANDRA JUAREZ FORLAN", "601", "01010" 'Creamos el nodo Parte Dim p As New Parte 'Puedes agregar la cantidad de pedimentos necesarios 'For i = 0 To N 'Agregamos información aduanera correspondiente al concepto del Kit Dim iap As New InformacionAduaneraParte 'Puedes agregar la cantidad de pedimentos necesarios al concepto del Kit 'For i = 0 To N iap.AgregarInformacionAduanera "10 47 3807 8003832" 'Next i 'Agregamos el concepto del Kit p.AgregarParte "51241200", 1, "Descripción del Kit", "KIT0001", "Pieza", 100, 100, iap 'Next i 'Agregamos el nodo concepto con.AgregarConcepto "01010101", 1, "E48", "Prueba de factura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im, ia, cp, , ct, p Next i 'Configuración general para el uso de servicios (Obligatorio para poder timbrar) Dim config As New ConfiguracionesBuildCFDI 'Establece los parametros de la cuenta de timbre que se usará para timbrar el documento. config.EstablecerPIN "CFx45...Hg", "micontraseña" 'Establecemos los certificados con los que firmaremos el CFDI previo al timbre. config.EstablecerCertificados "C:\CSD\Certificado.cer", "C:\CSD\LlavePrivada.key", "micontraseña" 'Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = True 'Iniciamos la clase que genera el CFDI y timbra. Dim cfdi As New cfdi Dim res As ResultadosTimbre Set res = cfdi.TimbrarCFDI("C:\XML\CfdiTimbrado.xml", opTipoTimbre_TimbrePrueba, c, em, r, con, , , , "C:\XML\QR.png") 'Podemos hacer uso de la información generada con el timbre MsgBox res.UUID MsgBox res.CadenaTimbrado MsgBox res.FechaTimbrado MsgBox res.NoCertificadoCFDI MsgBox res.NoCertificadoSAT MsgBox res.SelloCFDI MsgBox res.SelloSAT MsgBox res.Leyenda MsgBox res.PAC
{ "ConfiguracionesConsola": { "PIN": "CFx45...Hg", "PasswordPIN": "micontraseña", "MostrarDetallesEnErrores": true, "ErroresEnConsola": false, "ResultadosEnConsola": false, "ArchivoErrores": "C:\\Errores.json", "ArchivoResultados": "C:\\Resultados.json" }, "BuildCFDI": { "Cfdi": { "TimbrarXML": { //Obligatorio "Certificado": "C:\\CSD\\Certificado.cer", //Obligatorio "LlavePrivada": "C:\\CSD\\LlavePrivada.key", //Obligatorio "PasswordLlavePrivada": "Contraseña", //Obligatorio (Prueba, Produccion) "TipoServicio": "Prueba", //Obligatorio "ArchivoXML": "C:\\XML\\CfdiTimbrado.xml", //Opcional "ArchivoQR": "C:\\XML\\QR.png" }, //Todos los campos y nodos corresponden a la estructura jerárquica de un CFDI según el Anexo 20 "Comprobante": { "Fecha": "2022-02-22T13:00:00", "Folio": "2574", "Serie": "C", "LugarExpedicion": "01010", "Moneda": "MXN", "TipoDeComprobante": "I", "FormaPago": "01", "CondicionesDePago": "Pago de contado", "SubTotal": 1000, "Total": 1100, "Descuento": 20, "MetodoPago": "PUE", "Emisor": { "Rfc": "AAA010101AAA", "Nombre": "EMPRESA DE PRUEBA SA DE CV", "RegimenFiscal": "601" }, "Receptor": { "Rfc": "ROQB401225R10", "Nombre": "BERNARDO ROQUE QUIÑONES", "DomicilioFiscalReceptor": "01010", "RegimenFiscalReceptor": "626", "UsoCFDI": "G03" }, "Conceptos": [ { "ClaveProdServ": "01010101", "ClaveUnidad": "E48", "Descripcion": "Prueba de factura 1", "NoIdentificacion": "SKU321513", "Unidad": "Servicio", "Cantidad": 1, "ValorUnitario": 500, "Importe": 500, "Descuento": 10, "ObjetoImp": "02", "Impuestos": { "Retenciones": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.04, "Importe": 20 } ], "Traslados": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.16, "Importe": 80 } ] }, //Creación de información aduanera "InformacionAduanera": [ { "NumeroPedimento": "10 47 3807 8003832" } ], //Creación de cuenta predial "CuentaPredial": { "Numero": "159-560-10-000" }, "ACuentaTerceros": { "RfcACuentaTerceros": "JUFA7608212V6", "NombreACuentaTerceros": "ALEJANDRA JUAREZ FORLAN", "RegimenFiscalACuentaTerceros": "601", "DomicilioFiscalACuentaTerceros": "01010" }, //Creación de nodo parte "Parte": [ { "ClaveProdServ": "51241200", "Cantidad": 1, "Descripcion": "Descripción del Kit", "Unidad": "Pieza", "ValorUnitario": "100", "Importe": "100", "InformacionAduanera": [ { "NumeroPedimento": "10 47 3807 8003835" } ] } ] } ] } } } }
using tagcode.BuildCFDI; using static tagcode.BuildCFDI.Cfdi; using static tagcode.BuildCFDI.Cfdi.Conceptos; using static tagcode.BuildCFDI.Cfdi.Conceptos.ComplementoConcepto; //Creamos el nodo Comprobante Comprobante c = new Comprobante(DateTime.Now, 1500, 2000, "MXN", opTipoDeComprobante.Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago.PUE, 20, 1); //Creamos el nodo Emisor Emisor em = new Emisor("AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601"); //Creamos el nodo Receptor Receptor r = new Receptor("ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03"); //Creamos el nodo Conceptos Conceptos con = new Conceptos(); //Puedes agregar la cantidad de conceptos que necesites for (int i = 0; i < 3; i++) { //Creamos el nodo impuestos del concepto Impuestos im = new Impuestos(); //Puedes agregar la cantidad de traslados necesarios. //for(int i = 0; i < N; i++){ im.AgregarTraslado(opImpuestosTraslado.IVA, 1000, opImpuestosTipoFactor.Tasa, 0.16, 160); //} //Puedes agregar la cantidad de retenciones necesarias //for(int i = 0; i < N; i++){ im.AgregarRetencion(opImpuestosRetencion.ISR, 1000, opImpuestosTipoFactor.Tasa, 0.04, 40); //} //Creamos el nodo ComplementoConcepto ComplementoConcepto comcon = new ComplementoConcepto(); //Creamos el nodo Institución educativa InstitucionEducativa iedu = new InstitucionEducativa("MARIANA ROQUE DIAZ", "XEXX010101HNEXXXA4", opnivelEducativo.Primaria, "118141", "ROQB401225R10"); //Agregamos el nodo Institución educativa al nodo ComplementoConcepto comcon.AgregarComplementoConcepto(iedu); //Agregamos el nodo concepto con.AgregarConcepto("86121500", 1, "E48", "Colegiatura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im, null, null, comcon); } //Configuración general para el uso de servicios (Obligatorio para poder timbrar) ConfiguracionesBuildCFDI config = new ConfiguracionesBuildCFDI("CFx45...Hg", "micontraseña", "C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña"); //Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = true; //Iniciamos la clase que genera el CFDI y timbra. Cfdi cfdi = new Cfdi(); ResultadosTimbre res = cfdi.TimbrarCFDI("C:\\XML\\CfdiIEDU.xml", opTipoTimbre.TimbrePrueba, c, em, r, con, null, null, null, "C:\\XML\\QR.png"); //Podemos hacer uso de la información generada con el timbre Console.WriteLine(res.UUID); Console.WriteLine(res.CadenaTimbrado); Console.WriteLine(res.FechaTimbrado); Console.WriteLine(res.NoCertificadoCFDI); Console.WriteLine(res.NoCertificadoSAT); Console.WriteLine(res.SelloCFDI); Console.WriteLine(res.SelloSAT); Console.WriteLine(res.Leyenda); Console.WriteLine(res.PAC);
'Creamos el nodo Comprobante Dim c As New Comprobante c.CrearNodo Now, 1500, 2000, "MXN", opTipoDeComprobante_Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago_PUE, 20, 1 'Creamos el nodo Emisor Dim em As New Emisor em.CrearNodo "AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601" 'Creamos el nodo Receptor Dim r As New Receptor r.CrearNodo "ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03" 'Creamos el nodo Conceptos Dim con As New Conceptos 'Puedes agregar la cantidad de conceptos que necesites For i = 0 To 3 'Creamos el nodo impuestos del concepto Dim im As New Impuestos 'Puedes agregar la cantidad de traslados necesarios. 'For i = 0 To N im.AgregarTraslado opImpuestosTraslado_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.16, 160 'Next i 'Puedes agregar la cantidad de retenciones necesarias 'For i = 0 To N im.AgregarRetencion opImpuestosRetencion_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.04, 40 'Next i 'Creamos el nodo ComplementoConcepto Dim comcon As New ComplementoConcepto 'Creamos el nodo Institución educativa Dim iedu As New InstitucionEducativa iedu.CrearNodo "MARIANA ROQUE DIAZ", "XEXX010101HNEXXXA4", opnivelEducativo.Primaria, "118141", "ROQB401225R10" 'Agregamos el nodo Institución educativa al nodo ComplementoConcepto comcon.AgregarComplementoConceptoInstitucionEducativa iedu 'Agregamos el nodo concepto con.AgregarConcepto "86121500", 1, "E48", "Colegiatura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im, , , comcon Next i 'Configuración general para el uso de servicios (Obligatorio para poder timbrar) Dim config As New ConfiguracionesBuildCFDI 'Establece los parametros de la cuenta de timbre que se usará para timbrar el documento. config.EstablecerPIN "CFx45...Hg", "micontraseña" 'Establecemos los certificados con los que firmaremos el CFDI previo al timbre. config.EstablecerCertificados "C:\CSD\Certificado.cer", "C:\CSD\LlavePrivada.key", "micontraseña" 'Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = True 'Iniciamos la clase que genera el CFDI y timbra. Dim cfdi As New cfdi Dim res As ResultadosTimbre Set res = cfdi.TimbrarCFDI("C:\XML\CfdiIEDU.xml", opTipoTimbre_TimbrePrueba, c, em, r, con, , , , "C:\XML\QR.png") 'Podemos hacer uso de la información generada con el timbre MsgBox res.UUID MsgBox res.CadenaTimbrado MsgBox res.FechaTimbrado MsgBox res.NoCertificadoCFDI MsgBox res.NoCertificadoSAT MsgBox res.SelloCFDI MsgBox res.SelloSAT MsgBox res.Leyenda MsgBox res.PAC
{ "ConfiguracionesConsola": { "PIN": "CFx45...Hg", "PasswordPIN": "micontraseña", "MostrarDetallesEnErrores": true, "ErroresEnConsola": false, "ResultadosEnConsola": false, "ArchivoErrores": "C:\\Errores.json", "ArchivoResultados": "C:\\Resultados.json" }, "BuildCFDI": { "Cfdi": { "TimbrarXML": { //Obligatorio "Certificado": "C:\\CSD\\Certificado.cer", //Obligatorio "LlavePrivada": "C:\\CSD\\LlavePrivada.key", //Obligatorio "PasswordLlavePrivada": "Contraseña", //Obligatorio (Prueba, Produccion) "TipoServicio": "Prueba", //Obligatorio "ArchivoXML": "C:\\XML\\CfdiIEDU.xml", //Opcional "ArchivoQR": "C:\\XML\\QR.png" }, //Todos los campos y nodos corresponden a la estructura jerárquica de un CFDI según el Anexo 20 "Comprobante": { "Fecha": "2022-02-22T13:00:00", "Folio": "2574", "Serie": "C", "LugarExpedicion": "01010", "Moneda": "MXN", "TipoDeComprobante": "I", "FormaPago": "01", "CondicionesDePago": "Pago de contado", "SubTotal": 1000, "Total": 1100, "Descuento": 20, "MetodoPago": "PUE", "Emisor": { "Rfc": "AAA010101AAA", "Nombre": "EMPRESA DE PRUEBA SA DE CV", "RegimenFiscal": "601" }, "Receptor": { "Rfc": "ROQB401225R10", "Nombre": "BERNARDO ROQUE QUIÑONES", "DomicilioFiscalReceptor": "01010", "RegimenFiscalReceptor": "626", "UsoCFDI": "G03" }, "Conceptos": [ { "ClaveProdServ": "86121500", "ClaveUnidad": "E48", "Descripcion": "Colegiatura", "NoIdentificacion": "SKU321513", "Unidad": "Servicio", "Cantidad": 1, "ValorUnitario": 500, "Importe": 500, "Descuento": 10, "ObjetoImp": "02", "Impuestos": { "Retenciones": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.04, "Importe": 20 } ], "Traslados": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.16, "Importe": 80 } ] }, //Creación de ComplementoConcepto "ComplementoConcepto": { //Creación de Institución educativa "instEducativas": { "nombreAlumno": "MARIANA ROQUE DIAZ", "CURP": "XEXX010101HNEXXXA4", "nivelEducativo": "Primaria", "autRVOE": "118141", "rfcPago": "ROQB401225R10" } } } ] } } } }
using tagcode.BuildCFDI; using static tagcode.BuildCFDI.Cfdi; using static tagcode.BuildCFDI.Cfdi.Complemento; //Creamos el nodo Comprobante Comprobante c = new Comprobante(DateTime.Now, 1500, 2000, "MXN", opTipoDeComprobante.Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago.PUE, 20, 1); //Creamos el nodo Emisor Emisor em = new Emisor("AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601"); //Creamos el nodo Receptor Receptor r = new Receptor("ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03"); //Creamos el nodo Conceptos Conceptos con = new Conceptos(); //Puedes agregar la cantidad de conceptos que necesites for (int i = 0; i < 3; i++) { //Creamos el nodo impuestos del concepto Conceptos.Impuestos im = new Conceptos.Impuestos(); //Puedes agregar la cantidad de traslados necesarios. //for(int i = 0; i < N; i++){ im.AgregarTraslado(opImpuestosTraslado.IVA, 1000, opImpuestosTipoFactor.Tasa, 0.16, 160); //} //Puedes agregar la cantidad de retenciones necesarias //for(int i = 0; i < N; i++){ im.AgregarRetencion(opImpuestosRetencion.ISR, 1000, opImpuestosTipoFactor.Tasa, 0.04, 40); //} //Agregamos el nodo concepto con.AgregarConcepto("01010101", 1, "E48", "Prueba de factura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im); } //Creamos el nodo Complemento Complemento com = new Complemento(); //Creamos el nodo Divisas Complemento.Divisas divisas = new Complemento.Divisas(optipoOperacion.venta); //Agregamos el nodo Divisas al Complemento com.AgregarComplemento(divisas); //Configuración general para el uso de servicios (Obligatorio para poder timbrar) ConfiguracionesBuildCFDI config = new ConfiguracionesBuildCFDI("CFx45...Hg", "micontraseña", "C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña"); //Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = true; //Iniciamos la clase que genera el CFDI y timbra. Cfdi cfdi = new Cfdi(); ResultadosTimbre res = cfdi.TimbrarCFDI("C:\\XML\\CfdiDivisas.xml", opTipoTimbre.TimbrePrueba, c, em, r, con, null, null, com, "C:\\XML\\QR.png"); //Podemos hacer uso de la información generada con el timbre Console.WriteLine(res.UUID); Console.WriteLine(res.CadenaTimbrado); Console.WriteLine(res.FechaTimbrado); Console.WriteLine(res.NoCertificadoCFDI); Console.WriteLine(res.NoCertificadoSAT); Console.WriteLine(res.SelloCFDI); Console.WriteLine(res.SelloSAT); Console.WriteLine(res.Leyenda); Console.WriteLine(res.PAC);
'Creamos el nodo Comprobante Dim c As New Comprobante c.CrearNodo Now, 1500, 2000, "MXN", opTipoDeComprobante_Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago_PUE, 20, 1 'Creamos el nodo Emisor Dim em As New Emisor em.CrearNodo "AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601" 'Creamos el nodo Receptor Dim r As New Receptor r.CrearNodo "ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03" 'Creamos el nodo Conceptos Dim con As New Conceptos 'Puedes agregar la cantidad de conceptos que necesites For i = 0 To 3 'Creamos el nodo impuestos del concepto Dim im As New Impuestos 'Puedes agregar la cantidad de traslados necesarios. 'For i = 0 To N im.AgregarTraslado opImpuestosTraslado_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.16, 160 'Next i 'Puedes agregar la cantidad de retenciones necesarias 'For i = 0 To N im.AgregarRetencion opImpuestosRetencion_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.04, 40 'Next i 'Agregamos el nodo concepto con.AgregarConcepto "01010101", 1, "E48", "Prueba de factura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im Next i 'Creamos el nodo Complemento Dim com As New Complemento 'Creamos el nodo Divisas Dim divisas As New divisas divisas.CrearNodo optipoOperacion.venta 'Agregamos el nodo Divisas al Complemento com.AgregarComplementoDivisas divisas 'Configuración general para el uso de servicios (Obligatorio para poder timbrar) Dim config As New ConfiguracionesBuildCFDI 'Establece los parametros de la cuenta de timbre que se usará para timbrar el documento. config.EstablecerPIN "CFx45...Hg", "micontraseña" 'Establecemos los certificados con los que firmaremos el CFDI previo al timbre. config.EstablecerCertificados "C:\CSD\Certificado.cer", "C:\CSD\LlavePrivada.key", "micontraseña" 'Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = True 'Iniciamos la clase que genera el CFDI y timbra. Dim cfdi As New cfdi Dim res As ResultadosTimbre Set res = cfdi.TimbrarCFDI("C:\XML\CfdiDivisas.xml", opTipoTimbre_TimbrePrueba, c, em, r, con, , , com, "C:\XML\QR.png") 'Podemos hacer uso de la información generada con el timbre MsgBox res.UUID MsgBox res.CadenaTimbrado MsgBox res.FechaTimbrado MsgBox res.NoCertificadoCFDI MsgBox res.NoCertificadoSAT MsgBox res.SelloCFDI MsgBox res.SelloSAT MsgBox res.Leyenda MsgBox res.PAC
{ "ConfiguracionesConsola": { "PIN": "CFx45...Hg", "PasswordPIN": "micontraseña", "MostrarDetallesEnErrores": true, "ErroresEnConsola": false, "ResultadosEnConsola": false, "ArchivoErrores": "C:\\Errores.json", "ArchivoResultados": "C:\\Resultados.json" }, "BuildCFDI": { "Cfdi": { "TimbrarXML": { //Obligatorio "Certificado": "C:\\CSD\\Certificado.cer", //Obligatorio "LlavePrivada": "C:\\CSD\\LlavePrivada.key", //Obligatorio "PasswordLlavePrivada": "Contraseña", //Obligatorio (Prueba, Produccion) "TipoServicio": "Prueba", //Obligatorio "ArchivoXML": "C:\\XML\\CfdiDivisas.xml", //Opcional "ArchivoQR": "C:\\XML\\QR.png" }, //Todos los campos y nodos corresponden a la estructura jerárquica de un CFDI según el Anexo 20 "Comprobante": { "Fecha": "2022-02-22T13:00:00", "Folio": "2574", "Serie": "C", "LugarExpedicion": "01010", "Moneda": "MXN", "TipoDeComprobante": "I", "FormaPago": "01", "CondicionesDePago": "Pago de contado", "SubTotal": 1000, "Total": 1100, "Descuento": 20, "MetodoPago": "PUE", "Emisor": { "Rfc": "AAA010101AAA", "Nombre": "EMPRESA DE PRUEBA SA DE CV", "RegimenFiscal": "601" }, "Receptor": { "Rfc": "ROQB401225R10", "Nombre": "BERNARDO ROQUE QUIÑONES", "DomicilioFiscalReceptor": "01010", "RegimenFiscalReceptor": "626", "UsoCFDI": "G03" }, "Conceptos": [ { "ClaveProdServ": "01010101", "ClaveUnidad": "E48", "Descripcion": "Prueba de factura", "NoIdentificacion": "SKU321513", "Unidad": "Servicio", "Cantidad": 1, "ValorUnitario": 500, "Importe": 500, "Descuento": 10, "ObjetoImp": "02", "Impuestos": { "Retenciones": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.04, "Importe": 20 } ], "Traslados": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.16, "Importe": 80 } ] } } ], //Creamos el nodo Complemento "Complemento": { //Creación del nodo Divisas "Divisas": { "tipoOperacion": "venta" } } } } } }
using tagcode.BuildCFDI; using static tagcode.BuildCFDI.Cfdi; using static tagcode.BuildCFDI.Cfdi.Complemento; //Creamos el nodo Comprobante Comprobante c = new Comprobante(DateTime.Now, 1500, 2000, "MXN", opTipoDeComprobante.Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago.PUE, 20, 1); //Creamos el nodo Emisor Emisor em = new Emisor("AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601"); //Creamos el nodo Receptor Receptor r = new Receptor("ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03"); //Creamos el nodo Conceptos Conceptos con = new Conceptos(); //Puedes agregar la cantidad de conceptos que necesites for (int i = 0; i < 3; i++) { //Creamos el nodo impuestos del concepto Conceptos.Impuestos im = new Conceptos.Impuestos(); //Puedes agregar la cantidad de traslados necesarios. //for(int i = 0; i < N; i++){ im.AgregarTraslado(opImpuestosTraslado.IVA, 1000, opImpuestosTipoFactor.Tasa, 0.16, 160); //} //Puedes agregar la cantidad de retenciones necesarias //for(int i = 0; i < N; i++){ im.AgregarRetencion(opImpuestosRetencion.ISR, 1000, opImpuestosTipoFactor.Tasa, 0.04, 40); //} //Agregamos el nodo concepto con.AgregarConcepto("01010101", 1, "E48", "Prueba de factura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im); } //Creamos el nodo Complemento Complemento com = new Complemento(); //Creamos el nodo Donatarias Donatarias donatarias = new Donatarias("325-SAT-28-I-(21)-4109", DateTime.Now, "Este comprobante ampara un donativo, el cual será destinado por la donataria a los fines propios de su objeto social. En el caso de que los bienes donados hayan sido deducidos previamente para los efectos de impuestos sobre la renta, este donativo no es deducible. La reproducción no autorizada de este comprobante constituye un delito en los términos de las disposiciones fiscales Efectos Fiscales al Pago"); //Agregamos el nodo Donatarias al Complemento com.AgregarComplemento(donatarias); //Configuración general para el uso de servicios (Obligatorio para poder timbrar) ConfiguracionesBuildCFDI config = new ConfiguracionesBuildCFDI("CFx45...Hg", "micontraseña", "C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña"); //Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = true; //Iniciamos la clase que genera el CFDI y timbra. Cfdi cfdi = new Cfdi(); ResultadosTimbre res = cfdi.TimbrarCFDI("C:\\XML\\CfdiDonatarias.xml", opTipoTimbre.TimbrePrueba, c, em, r, con, null, null, com, "C:\\XML\\QR.png"); //Podemos hacer uso de la información generada con el timbre Console.WriteLine(res.UUID); Console.WriteLine(res.CadenaTimbrado); Console.WriteLine(res.FechaTimbrado); Console.WriteLine(res.NoCertificadoCFDI); Console.WriteLine(res.NoCertificadoSAT); Console.WriteLine(res.SelloCFDI); Console.WriteLine(res.SelloSAT); Console.WriteLine(res.Leyenda); Console.WriteLine(res.PAC);
'Creamos el nodo Comprobante Dim c As New Comprobante c.CrearNodo Now, 1500, 2000, "MXN", opTipoDeComprobante_Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago_PUE, 20, 1 'Creamos el nodo Emisor Dim em As New Emisor em.CrearNodo "AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601" 'Creamos el nodo Receptor Dim r As New Receptor r.CrearNodo "ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03" 'Creamos el nodo Conceptos Dim con As New Conceptos 'Puedes agregar la cantidad de conceptos que necesites For i = 0 To 3 'Creamos el nodo impuestos del concepto Dim im As New Impuestos 'Puedes agregar la cantidad de traslados necesarios. 'For i = 0 To N im.AgregarTraslado opImpuestosTraslado_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.16, 160 'Next i 'Puedes agregar la cantidad de retenciones necesarias 'For i = 0 To N im.AgregarRetencion opImpuestosRetencion_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.04, 40 'Next i 'Agregamos el nodo concepto con.AgregarConcepto "01010101", 1, "E48", "Prueba de factura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im Next i 'Creamos el nodo Complemento Dim com As New Complemento 'Creamos el nodo Donatarias Dim donatarias As New donatarias donatarias.CrearNodo "325-SAT-28-I-(21)-4109", Now, "Este comprobante ampara un donativo, el cual será destinado por la donataria a los fines propios de su objeto social. En el caso de que los bienes donados hayan sido deducidos previamente para los efectos de impuestos sobre la renta, este donativo no es deducible. La reproducción no autorizada de este comprobante constituye un delito en los términos de las disposiciones fiscales Efectos Fiscales al Pago" 'Agregamos el nodo Donatarias al Complemento com.AgregarComplementoDonatarias donatarias 'Configuración general para el uso de servicios (Obligatorio para poder timbrar) Dim config As New ConfiguracionesBuildCFDI 'Establece los parametros de la cuenta de timbre que se usará para timbrar el documento. config.EstablecerPIN "CFx45...Hg", "micontraseña" 'Establecemos los certificados con los que firmaremos el CFDI previo al timbre. config.EstablecerCertificados "C:\CSD\Certificado.cer", "C:\CSD\LlavePrivada.key", "micontraseña" 'Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = True 'Iniciamos la clase que genera el CFDI y timbra. Dim cfdi As New cfdi Dim res As ResultadosTimbre Set res = cfdi.TimbrarCFDI("C:\XML\CfdiDonatarias.xml", opTipoTimbre_TimbrePrueba, c, em, r, con, , , com, "C:\XML\QR.png") 'Podemos hacer uso de la información generada con el timbre MsgBox res.UUID MsgBox res.CadenaTimbrado MsgBox res.FechaTimbrado MsgBox res.NoCertificadoCFDI MsgBox res.NoCertificadoSAT MsgBox res.SelloCFDI MsgBox res.SelloSAT MsgBox res.Leyenda MsgBox res.PAC
{ "ConfiguracionesConsola": { "PIN": "CFx45...Hg", "PasswordPIN": "micontraseña", "MostrarDetallesEnErrores": true, "ErroresEnConsola": false, "ResultadosEnConsola": false, "ArchivoErrores": "C:\\Errores.json", "ArchivoResultados": "C:\\Resultados.json" }, "BuildCFDI": { "Cfdi": { "TimbrarXML": { //Obligatorio "Certificado": "C:\\CSD\\Certificado.cer", //Obligatorio "LlavePrivada": "C:\\CSD\\LlavePrivada.key", //Obligatorio "PasswordLlavePrivada": "Contraseña", //Obligatorio (Prueba, Produccion) "TipoServicio": "Prueba", //Obligatorio "ArchivoXML": "C:\\XML\\CfdiDonatarias.xml", //Opcional "ArchivoQR": "C:\\XML\\QR.png" }, //Todos los campos y nodos corresponden a la estructura jerárquica de un CFDI según el Anexo 20 "Comprobante": { "Fecha": "2022-02-22T13:00:00", "Folio": "2574", "Serie": "C", "LugarExpedicion": "01010", "Moneda": "MXN", "TipoDeComprobante": "I", "FormaPago": "01", "CondicionesDePago": "Pago de contado", "SubTotal": 1000, "Total": 1100, "Descuento": 20, "MetodoPago": "PUE", "Emisor": { "Rfc": "AAA010101AAA", "Nombre": "EMPRESA DE PRUEBA SA DE CV", "RegimenFiscal": "601" }, "Receptor": { "Rfc": "ROQB401225R10", "Nombre": "BERNARDO ROQUE QUIÑONES", "DomicilioFiscalReceptor": "01010", "RegimenFiscalReceptor": "626", "UsoCFDI": "G03" }, "Conceptos": [ { "ClaveProdServ": "01010101", "ClaveUnidad": "E48", "Descripcion": "Prueba de factura", "NoIdentificacion": "SKU321513", "Unidad": "Servicio", "Cantidad": 1, "ValorUnitario": 500, "Importe": 500, "Descuento": 10, "ObjetoImp": "02", "Impuestos": { "Retenciones": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.04, "Importe": 20 } ], "Traslados": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.16, "Importe": 80 } ] } } ], //Creamos el nodo Complemento "Complemento": { //Creación del nodo Donatarias "Donatarias": { "noAutorizacion": "325-SAT-28-I-(21)-4109", "fechaAutorizacion": "2050-12-25", "leyenda": "Este comprobante ampara un donativo, el cual será destinado por la donataria a los fines propios de su objeto social. En el caso de que los bienes donados hayan sido deducidos previamente para los efectos de impuestos sobre la renta, este donativo no es deducible. La reproducción no autorizada de este comprobante constituye un delito en los términos de las disposiciones fiscales Efectos Fiscales al Pago" } } } } } }
using tagcode.BuildCFDI; using static tagcode.BuildCFDI.Cfdi; using static tagcode.BuildCFDI.Cfdi.Complemento; //Creamos el nodo Comprobante Comprobante c = new Comprobante(DateTime.Now, 1500, 2000, "MXN", opTipoDeComprobante.Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago.PUE, 20, 1); //Creamos el nodo Emisor Emisor em = new Emisor("AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601"); //Creamos el nodo Receptor Receptor r = new Receptor("ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03"); //Creamos el nodo Conceptos Conceptos con = new Conceptos(); //Puedes agregar la cantidad de conceptos que necesites for (int i = 0; i < 3; i++) { //Creamos el nodo impuestos del concepto Conceptos.Impuestos im = new Conceptos.Impuestos(); //Puedes agregar la cantidad de traslados necesarios. //for(int i = 0; i < N; i++){ im.AgregarTraslado(opImpuestosTraslado.IVA, 1000, opImpuestosTipoFactor.Tasa, 0.16, 160); //} //Puedes agregar la cantidad de retenciones necesarias //for(int i = 0; i < N; i++){ im.AgregarRetencion(opImpuestosRetencion.ISR, 1000, opImpuestosTipoFactor.Tasa, 0.04, 40); //} //Agregamos el nodo concepto con.AgregarConcepto("01010101", 1, "E48", "Prueba de factura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im); } //Creamos el nodo Complemento Complemento com = new Complemento(); //Creamos el nodo ImpuestosLocales ImpuestosLocales implocales = new ImpuestosLocales(); //Puedes agregar la cantidad de trasladados necesarios //for(int i = 0; i < N; i++){ implocales.AgregarImpuestoLocalTrasladado("ISH Hospedaje", 4, 48); // //Puedes agregar la cantidad de retenciones necesarias //for(int i = 0; i < N; i++){ implocales.AgregarImpuestoLocalRetenido("Cedular", 2.5, 125); // //Agregamos el nodo Impuesto Local al Complemento com.AgregarComplemento(implocales); //Configuración general para el uso de servicios (Obligatorio para poder timbrar) ConfiguracionesBuildCFDI config = new ConfiguracionesBuildCFDI("CFx45...Hg", "micontraseña", "C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña"); //Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = true; //Iniciamos la clase que genera el CFDI y timbra. Cfdi cfdi = new Cfdi(); ResultadosTimbre res = cfdi.TimbrarCFDI("C:\\XML\\CfdiImpLocales.xml", opTipoTimbre.TimbrePrueba, c, em, r, con, null, null, com, "C:\\XML\\QR.png"); //Podemos hacer uso de la información generada con el timbre Console.WriteLine(res.UUID); Console.WriteLine(res.CadenaTimbrado); Console.WriteLine(res.FechaTimbrado); Console.WriteLine(res.NoCertificadoCFDI); Console.WriteLine(res.NoCertificadoSAT); Console.WriteLine(res.SelloCFDI); Console.WriteLine(res.SelloSAT); Console.WriteLine(res.Leyenda); Console.WriteLine(res.PAC);
'Creamos el nodo Comprobante Dim c As New Comprobante c.CrearNodo Now, 1500, 2000, "MXN", opTipoDeComprobante_Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago_PUE, 20, 1 'Creamos el nodo Emisor Dim em As New Emisor em.CrearNodo "AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601" 'Creamos el nodo Receptor Dim r As New Receptor r.CrearNodo "ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03" 'Creamos el nodo Conceptos Dim con As New Conceptos 'Puedes agregar la cantidad de conceptos que necesites For i = 0 To 3 'Creamos el nodo impuestos del concepto Dim im As New Impuestos 'Puedes agregar la cantidad de traslados necesarios. 'For i = 0 To N im.AgregarTraslado opImpuestosTraslado_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.16, 160 'Next i 'Puedes agregar la cantidad de retenciones necesarias 'For i = 0 To N im.AgregarRetencion opImpuestosRetencion_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.04, 40 'Next i 'Agregamos el nodo concepto con.AgregarConcepto "01010101", 1, "E48", "Prueba de factura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im Next i 'Creamos el nodo Complemento Dim com As New Complemento 'Creamos el nodo ImpuestosLocales Dim implocales As New ImpuestosLocales 'Puedes agregar la cantidad de trasladados necesarios 'For i = 0 To N implocales.AgregarImpuestoLocalTrasladado "ISH Hospedaje", 4, 48 'Next i 'Puedes agregar la cantidad de retenciones necesarias 'For i = 0 To N implocales.AgregarImpuestoLocalRetenido "Cedular", 2.5, 125 'Next i 'Agregamos el nodo Impuesto Local al Complemento com.AgregarComplementoImpuestosLocales implocales 'Configuración general para el uso de servicios (Obligatorio para poder timbrar) Dim config As New ConfiguracionesBuildCFDI 'Establece los parametros de la cuenta de timbre que se usará para timbrar el documento. config.EstablecerPIN "CFx45...Hg", "micontraseña" 'Establecemos los certificados con los que firmaremos el CFDI previo al timbre. config.EstablecerCertificados "C:\CSD\Certificado.cer", "C:\CSD\LlavePrivada.key", "micontraseña" 'Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = True 'Iniciamos la clase que genera el CFDI y timbra. Dim cfdi As New cfdi Dim res As ResultadosTimbre Set res = cfdi.TimbrarCFDI("C:\XML\CfdiImpLocales.xml", opTipoTimbre_TimbrePrueba, c, em, r, con, , , com, "C:\XML\QR.png") 'Podemos hacer uso de la información generada con el timbre MsgBox res.UUID MsgBox res.CadenaTimbrado MsgBox res.FechaTimbrado MsgBox res.NoCertificadoCFDI MsgBox res.NoCertificadoSAT MsgBox res.SelloCFDI MsgBox res.SelloSAT MsgBox res.Leyenda MsgBox res.PAC
{ "ConfiguracionesConsola": { "PIN": "CFx45...Hg", "PasswordPIN": "micontraseña", "MostrarDetallesEnErrores": true, "ErroresEnConsola": false, "ResultadosEnConsola": false, "ArchivoErrores": "C:\\Errores.json", "ArchivoResultados": "C:\\Resultados.json" }, "BuildCFDI": { "Cfdi": { "TimbrarXML": { //Obligatorio "Certificado": "C:\\CSD\\Certificado.cer", //Obligatorio "LlavePrivada": "C:\\CSD\\LlavePrivada.key", //Obligatorio "PasswordLlavePrivada": "Contraseña", //Obligatorio (Prueba, Produccion) "TipoServicio": "Prueba", //Obligatorio "ArchivoXML": "C:\\XML\\CfdiImpLocales.xml", //Opcional "ArchivoQR": "C:\\XML\\QR.png" }, //Todos los campos y nodos corresponden a la estructura jerárquica de un CFDI según el Anexo 20 "Comprobante": { "Fecha": "2022-02-22T13:00:00", "Folio": "2574", "Serie": "C", "LugarExpedicion": "01010", "Moneda": "MXN", "TipoDeComprobante": "I", "FormaPago": "01", "CondicionesDePago": "Pago de contado", "SubTotal": 1000, "Total": 1100, "Descuento": 20, "MetodoPago": "PUE", "Emisor": { "Rfc": "AAA010101AAA", "Nombre": "EMPRESA DE PRUEBA SA DE CV", "RegimenFiscal": "601" }, "Receptor": { "Rfc": "ROQB401225R10", "Nombre": "BERNARDO ROQUE QUIÑONES", "DomicilioFiscalReceptor": "01010", "RegimenFiscalReceptor": "626", "UsoCFDI": "G03" }, "Conceptos": [ { "ClaveProdServ": "01010101", "ClaveUnidad": "E48", "Descripcion": "Prueba de factura", "NoIdentificacion": "SKU321513", "Unidad": "Servicio", "Cantidad": 1, "ValorUnitario": 500, "Importe": 500, "Descuento": 10, "ObjetoImp": "02", "Impuestos": { "Retenciones": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.04, "Importe": 20 } ], "Traslados": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.16, "Importe": 80 } ] } } ], //Creamos el nodo Complemento "Complemento": { //Creación del nodo ImpuestosLocales "ImpuestosLocales": { "RetencionesLocales": [ { "ImpLocRetenido": "Cedular", "TasadeRetencion": 2.5, "Importe": 125 } ], "TrasladosLocales": [ { "ImpLocTrasladado": "ISH Hospedaje", "TasadeTraslado": "4", "Importe": 48 } ] } } } } } }
using tagcode.BuildCFDI; using static tagcode.BuildCFDI.Cfdi; using static tagcode.BuildCFDI.Cfdi.Complemento; using static tagcode.BuildCFDI.Cfdi.Complemento.INE; using static tagcode.BuildCFDI.Cfdi.Complemento.INE.EntidadINE; //Creamos el nodo Comprobante Comprobante c = new Comprobante(DateTime.Now, 1500, 2000, "MXN", opTipoDeComprobante.Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago.PUE, 20, 1); //Creamos el nodo Emisor Emisor em = new Emisor("AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601"); //Creamos el nodo Receptor Receptor r = new Receptor("ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03"); //Creamos el nodo Conceptos Conceptos con = new Conceptos(); //Puedes agregar la cantidad de conceptos que necesites for (int i = 0; i < 3; i++) { //Creamos el nodo impuestos del concepto Conceptos.Impuestos im = new Conceptos.Impuestos(); //Puedes agregar la cantidad de traslados necesarios. //for(int i = 0; i < N; i++){ im.AgregarTraslado(opImpuestosTraslado.IVA, 1000, opImpuestosTipoFactor.Tasa, 0.16, 160); //} //Puedes agregar la cantidad de retenciones necesarias //for(int i = 0; i < N; i++){ im.AgregarRetencion(opImpuestosRetencion.ISR, 1000, opImpuestosTipoFactor.Tasa, 0.04, 40); //} //Agregamos el nodo concepto con.AgregarConcepto("01010101", 1, "E48", "Prueba de factura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im); } //Creamos el nodo Complemento Complemento com = new Complemento(); //Creamos el nodo Contabilidad del nodo Entidad del complemento INE ContabilidadEntidadINE contabilidad = new ContabilidadEntidadINE(); //Puedes agregar la cantidad de registros contabilidad necesarios //for(int i = 0; i < N; i++){ contabilidad.AgregarContabilidad(4512); //} //Creamos el nodo Entidad del complemento INE EntidadINE entidad = new EntidadINE(); //Puedes agregar la cantidad de registros Entidad necesarios //for(int i = 0; i < N; i++){ entidad.AgregarEntidad("MEX", opAmbitoINE.Federal, contabilidad); //} //Creamos el nodo INE INE ine = new INE(opTipoProcesoINE.Campaña, opTipoComiteINE.Ejecutivo_Nacional, 8723, entidad); //Agregamos el nodo INE al Complemento com.AgregarComplemento(ine); //Configuración general para el uso de servicios (Obligatorio para poder timbrar) ConfiguracionesBuildCFDI config = new ConfiguracionesBuildCFDI("CFx45...Hg", "micontraseña", "C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña"); //Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = true; //Iniciamos la clase que genera el CFDI y timbra. Cfdi cfdi = new Cfdi(); ResultadosTimbre res = cfdi.TimbrarCFDI("C:\\XML\\CfdiINE.xml", opTipoTimbre.TimbrePrueba, c, em, r, con, null, null, com, "C:\\XML\\QR.png"); //Podemos hacer uso de la información generada con el timbre Console.WriteLine(res.UUID); Console.WriteLine(res.CadenaTimbrado); Console.WriteLine(res.FechaTimbrado); Console.WriteLine(res.NoCertificadoCFDI); Console.WriteLine(res.NoCertificadoSAT); Console.WriteLine(res.SelloCFDI); Console.WriteLine(res.SelloSAT); Console.WriteLine(res.Leyenda); Console.WriteLine(res.PAC);
'Creamos el nodo Comprobante Dim c As New Comprobante c.CrearNodo Now, 1500, 2000, "MXN", opTipoDeComprobante_Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago_PUE, 20, 1 'Creamos el nodo Emisor Dim em As New Emisor em.CrearNodo "AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601" 'Creamos el nodo Receptor Dim r As New Receptor r.CrearNodo "ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03" 'Creamos el nodo Conceptos Dim con As New Conceptos 'Puedes agregar la cantidad de conceptos que necesites For i = 0 To 3 'Creamos el nodo impuestos del concepto Dim im As New Impuestos 'Puedes agregar la cantidad de traslados necesarios. 'For i = 0 To N im.AgregarTraslado opImpuestosTraslado_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.16, 160 'Next i 'Puedes agregar la cantidad de retenciones necesarias 'For i = 0 To N im.AgregarRetencion opImpuestosRetencion_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.04, 40 'Next i 'Agregamos el nodo concepto con.AgregarConcepto "01010101", 1, "E48", "Prueba de factura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im Next i 'Creamos el nodo Complemento Dim com As New Complemento 'Creamos el nodo Contabilidad del nodo Entidad del complemento INE Dim contabilidad As New ContabilidadEntidadINE 'Puedes agregar la cantidad de registros contabilidad necesarios 'For i = 0 To N contabilidad.AgregarContabilidad 4512 'Next i 'Creamos el nodo Entidad del complemento INE Dim entidad As New EntidadINE 'Puedes agregar la cantidad de registros Entidad necesarios 'For i = 0 To N entidad.AgregarEntidad "MEX", opAmbitoINE_Federal, contabilidad 'Next i 'Creamos el nodo INE Dim ine As New ine ine.CrearNodo opTipoProcesoINE_Campaña, opTipoComiteINE_Ejecutivo_Nacional, 8723, entidad 'Agregamos el nodo INE al Complemento com.AgregarComplementoINE ine 'Configuración general para el uso de servicios (Obligatorio para poder timbrar) Dim config As New ConfiguracionesBuildCFDI 'Establece los parametros de la cuenta de timbre que se usará para timbrar el documento. config.EstablecerPIN "CFx45...Hg", "micontraseña" 'Establecemos los certificados con los que firmaremos el CFDI previo al timbre. config.EstablecerCertificados "C:\CSD\Certificado.cer", "C:\CSD\LlavePrivada.key", "micontraseña" 'Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = True 'Iniciamos la clase que genera el CFDI y timbra. Dim cfdi As New cfdi Dim res As ResultadosTimbre Set res = cfdi.TimbrarCFDI("C:\XML\CfdiINE.xml", opTipoTimbre_TimbrePrueba, c, em, r, con, , , com, "C:\XML\QR.png") 'Podemos hacer uso de la información generada con el timbre MsgBox res.UUID MsgBox res.CadenaTimbrado MsgBox res.FechaTimbrado MsgBox res.NoCertificadoCFDI MsgBox res.NoCertificadoSAT MsgBox res.SelloCFDI MsgBox res.SelloSAT MsgBox res.Leyenda MsgBox res.PAC
{ "ConfiguracionesConsola": { "PIN": "CFx45...Hg", "PasswordPIN": "micontraseña", "MostrarDetallesEnErrores": true, "ErroresEnConsola": false, "ResultadosEnConsola": false, "ArchivoErrores": "C:\\Errores.json", "ArchivoResultados": "C:\\Resultados.json" }, "BuildCFDI": { "Cfdi": { "TimbrarXML": { //Obligatorio "Certificado": "C:\\CSD\\Certificado.cer", //Obligatorio "LlavePrivada": "C:\\CSD\\LlavePrivada.key", //Obligatorio "PasswordLlavePrivada": "Contraseña", //Obligatorio (Prueba, Produccion) "TipoServicio": "Prueba", //Obligatorio "ArchivoXML": "C:\\XML\\CfdiINE.xml", //Opcional "ArchivoQR": "C:\\XML\\QR.png" }, //Todos los campos y nodos corresponden a la estructura jerárquica de un CFDI según el Anexo 20 "Comprobante": { "Fecha": "2022-02-22T13:00:00", "Folio": "2574", "Serie": "C", "LugarExpedicion": "01010", "Moneda": "MXN", "TipoDeComprobante": "I", "FormaPago": "01", "CondicionesDePago": "Pago de contado", "SubTotal": 1000, "Total": 1100, "Descuento": 20, "MetodoPago": "PUE", "Emisor": { "Rfc": "AAA010101AAA", "Nombre": "EMPRESA DE PRUEBA SA DE CV", "RegimenFiscal": "601" }, "Receptor": { "Rfc": "ROQB401225R10", "Nombre": "BERNARDO ROQUE QUIÑONES", "DomicilioFiscalReceptor": "01010", "RegimenFiscalReceptor": "626", "UsoCFDI": "G03" }, "Conceptos": [ { "ClaveProdServ": "01010101", "ClaveUnidad": "E48", "Descripcion": "Prueba de factura", "NoIdentificacion": "SKU321513", "Unidad": "Servicio", "Cantidad": 1, "ValorUnitario": 500, "Importe": 500, "Descuento": 10, "ObjetoImp": "02", "Impuestos": { "Retenciones": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.04, "Importe": 20 } ], "Traslados": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.16, "Importe": 80 } ] } } ], //Creamos el nodo Complemento "Complemento": { //Creación del nodo INE "INE": { "TipoProceso": "Campaña", "TipoComite": "Ejecutivo Nacional", "IdContabilidad": 8723, "Entidad": [ { "Ambito": "Federal", "ClaveEntidad": "MEX", "Contabilidad": { "IdContabilidad": [ 4512, 4513 ] } } ] } } } } } }
using tagcode.BuildCFDI; using static tagcode.BuildCFDI.Cfdi; using static tagcode.BuildCFDI.Cfdi.Complemento; using static tagcode.BuildCFDI.Cfdi.Complemento.CartaPorte; using static tagcode.BuildCFDI.Cfdi.Complemento.CartaPorte.UbicacionesCartaPorte; using static tagcode.BuildCFDI.Cfdi.Complemento.CartaPorte.MercanciasCartaPorte; using static tagcode.BuildCFDI.Cfdi.Complemento.CartaPorte.MercanciasCartaPorte.MercanciaMercanciasCartaPorte; using static tagcode.BuildCFDI.Cfdi.Complemento.CartaPorte.MercanciasCartaPorte.AutotransporteMercanciasCartaPorte; //Creamos el nodo Comprobante Comprobante c = new Comprobante(DateTime.Now, 1500, 2000, "MXN", opTipoDeComprobante.Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago.PUE, 20, 1); //Creamos el nodo Emisor Emisor em = new Emisor("AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601"); //Creamos el nodo Receptor Receptor r = new Receptor("ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03"); //Creamos el nodo Conceptos Conceptos con = new Conceptos(); //Puedes agregar la cantidad de conceptos que necesites for (int i = 0; i < 3; i++) { //Creamos el nodo impuestos del concepto Conceptos.Impuestos im = new Conceptos.Impuestos(); //Puedes agregar la cantidad de traslados necesarios. //for(int i = 0; i < N; i++){ im.AgregarTraslado(opImpuestosTraslado.IVA, 1000, opImpuestosTipoFactor.Tasa, 0.16, 160); //} //Puedes agregar la cantidad de retenciones necesarias //for(int i = 0; i < N; i++){ im.AgregarRetencion(opImpuestosRetencion.ISR, 1000, opImpuestosTipoFactor.Tasa, 0.04, 40); //} //Agregamos el nodo concepto con.AgregarConcepto("01010101", 1, "E48", "Prueba de factura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im); } //Creamos el nodo Complemento Complemento com = new Complemento(); //Ubicaciones //Creamos nodo Ubicaciones UbicacionesCartaPorte ubicaciones = new UbicacionesCartaPorte(); //Establecemos el nodo Domicilio de la Ubicacion Origen DomicilioUbicacionesCartaPorte domorigen = new DomicilioUbicacionesCartaPorte("DUR", "MEX", "34000", "Av. 20 de Noviembre", "4000", "", "0001", "01", "", "005"); //Agregamos la ubicación ubicaciones.AgregarUbicacion(opTipoUbicacionCartaPorte.Origen, "BBB010101BBB", DateTime.Now, domorigen, 0, "OR000001", "EMPRESA PROPIETARIA SA DE CV"); //Establecemos el nodo Domicilio de la Ubicacion Destino DomicilioUbicacionesCartaPorte domdestino = new DomicilioUbicacionesCartaPorte("NLE", "MEX", "64720", "Domicilio conocido", "S/N", "", "0376", "07", "", "039"); ubicaciones.AgregarUbicacion(opTipoUbicacionCartaPorte.Destino, "ROQB401225R10", DateTime.Now, domdestino, 595, "DE000001", "BERNARDO ROQUE QUIÑONES"); //Mercancias //Puedes agregar la cantidad de nodo mercancia que necesites //for(int i = 0; i < N; i++){ MercanciaMercanciasCartaPorte mercancia = new MercanciaMercanciasCartaPorte(); CantidadTransportaMercanciaCartaPorte cantidad = new CantidadTransportaMercanciaCartaPorte(); //Puedes agregar la cantidad de nodos CantidadTransporta necesarios //for(int i = 0; i < N; i++){ cantidad.AgregarCantidadTransporta(1, "OR000001", "DE000001"); //} //Agregamos la mercancía con los datos de CantidadTransporta mercancia.AgregarMercancia("11121900", "Perfume varios", 1, "XBX", 100, opMaterialPeligrosoCartaPorte.Sí, "", "CAJA", "", "1266", "4H2", "Descripcion embalaje", 12300, "MXN", "", "", null, null, cantidad); //} //Ingresamos los datos del nodo IdentificacionVehicular IdentificacionVehicularAutotransporteMercanciaCartaPorte identificacion = new IdentificacionVehicularAutotransporteMercanciaCartaPorte("VL", "501BD", 2018); //Ingresamos los datos del seguro SegurosAutotransporteMercanciaCartaPorte seguros = new SegurosAutotransporteMercanciaCartaPorte("PFG Seguros S.A. de C.V.", "154647", "PFG Seguros S.A. de C.V.", "65323131"); //Ingresamos los datos del remolque RemolquesAutotransporteMercanciaCartaPorte remolques = new RemolquesAutotransporteMercanciaCartaPorte(); //Puedes agregar la cantidad de remolques que necesites //for(int i = 0; i < N; i++){ remolques.AgregarRemolque("CTR021", "XVG3421"); //} //Agregamos el nodo Autotransporte AutotransporteMercanciasCartaPorte autotransporte = new AutotransporteMercanciasCartaPorte("TPAF01", "Permiso no contemplado en el catálogo", identificacion, seguros, remolques); //Creamos nodo Mercancias MercanciasCartaPorte mercancias = new MercanciasCartaPorte(100, "XBX", 1, mercancia, autotransporte); //FigurasTransporte //Creamos nodo Figuras FiguraTransporteCartaPorte figura = new FiguraTransporteCartaPorte(); //Puedes agregar la cantidad de nodo FiguraTransporte que necesites //for(int i = 0; i < N; i++){ figura.AgregarTiposFigura("01", "GUMA840209KJ2", "1023442", "Alberto Guzman Manriquez"); //} //Creamos nodo Carta Porte CartaPorte cartaporte = new CartaPorte(opTransInternacCartaPorte.No, ubicaciones, mercancias, figura, 595); //Agregamos el nodo Carta Porte al Complemento com.AgregarComplemento(cartaporte); //Configuración general para el uso de servicios (Obligatorio para poder timbrar) ConfiguracionesBuildCFDI config = new ConfiguracionesBuildCFDI("CFx45...Hg", "micontraseña", "C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña"); //Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = true; //Iniciamos la clase que genera el CFDI y timbra. Cfdi cfdi = new Cfdi(); ResultadosTimbre res = cfdi.TimbrarCFDI("C:\\XML\\CfdiCartaPorte.xml", opTipoTimbre.TimbrePrueba, c, em, r, con, null, null, com, "C:\\XML\\QR.png"); //Podemos hacer uso de la información generada con el timbre Console.WriteLine(res.UUID); Console.WriteLine(res.CadenaTimbrado); Console.WriteLine(res.FechaTimbrado); Console.WriteLine(res.NoCertificadoCFDI); Console.WriteLine(res.NoCertificadoSAT); Console.WriteLine(res.SelloCFDI); Console.WriteLine(res.SelloSAT); Console.WriteLine(res.Leyenda); Console.WriteLine(res.PAC);
'Creamos el nodo Comprobante Dim c As New Comprobante c.CrearNodo Now, 1500, 2000, "MXN", opTipoDeComprobante_Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago_PUE, 20, 1 'Creamos el nodo Emisor Dim em As New Emisor em.CrearNodo "AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601" 'Creamos el nodo Receptor Dim r As New Receptor r.CrearNodo "ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03" 'Creamos el nodo Conceptos Dim con As New Conceptos 'Puedes agregar la cantidad de conceptos que necesites For i = 0 To 3 'Creamos el nodo impuestos del concepto Dim im As New Impuestos 'Puedes agregar la cantidad de traslados necesarios. 'For i = 0 To N im.AgregarTraslado opImpuestosTraslado_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.16, 160 'Next i 'Puedes agregar la cantidad de retenciones necesarias 'For i = 0 To N im.AgregarRetencion opImpuestosRetencion_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.04, 40 'Next i 'Agregamos el nodo concepto con.AgregarConcepto "01010101", 1, "E48", "Prueba de factura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im Next i 'Creamos el nodo Complemento Dim com As New Complemento 'Creamos nodo Carta Porte Dim cartaporte As New cartaporte 'Ubicaciones 'Creamos nodo Ubicaciones Dim ubicaciones As New UbicacionesCartaPorte 'Establecemos el nodo Domicilio de la Ubicacion Origen Dim domorigen As New DomicilioUbicacionesCartaPorte domorigen.CrearNodo "DUR", "MEX", "34000", "Av. 20 de Noviembre", "4000", , "0001", "01", , "005" 'Agregamos la ubicación ubicaciones.AgregarUbicacion opTipoUbicacionCartaPorte_Origen, "BBB010101BBB", Now, domorigen, 0, "OR000001", "EMPRESA PROPIETARIA SA DE CV" 'Establecemos el nodo Domicilio de la Ubicacion Destino Dim domdestino As New DomicilioUbicacionesCartaPorte domdestino.CrearNodo "NLE", "MEX", "64720", "Domicilio conocido", "S/N", , "0376", "07", "", "039" ubicaciones.AgregarUbicacion opTipoUbicacionCartaPorte_Destino, "ROQB401225R10", Now, domdestino, 595, "DE000001", "BERNARDO ROQUE QUIÑONES" 'Mercancias 'Creamos nodo Mercancias Dim mercancias As New MercanciasCartaPorte 'Puedes agregar la cantidad de nodo mercancia que necesites 'For i = 0 To N Dim mercancia As New MercanciaMercanciasCartaPorte Dim cantidad As New CantidadTransportaMercanciaCartaPorte 'Puedes agregar la cantidad de nodos CantidadTransporta necesarios 'For i = 0 To N cantidad.AgregarCantidadTransporta 1, "OR000001", "DE000001" 'Next 'Agregamos la mercancía con los datos de CantidadTransporta mercancia.AgregarMercancia "11121900", "Perfume varios", 1, "XBX", 100, opMaterialPeligrosoCartaPorte_Sí, , "CAJA", , "1266", "4H2", "Descripcion embalaje", 12300, "MXN", , , , , cantidad 'Next i 'Agregamos el nodo Autotransporte Dim autotransporte As New AutotransporteMercanciasCartaPorte 'Ingresamos los datos del nodo IdentificacionVehicular Dim identificacion As New IdentificacionVehicularAutotransporteMercanciaCartaPorte identificacion.CrearNodo "VL", "501BD", 2018 'Ingresamos los datos del seguro Dim seguros As New SegurosAutotransporteMercanciaCartaPorte seguros.CrearNodo "PFG Seguros S.A. de C.V.", "154647", "PFG Seguros S.A. de C.V.", "65323131" 'Ingresamos los datos del remolque Dim remolques As New RemolquesAutotransporteMercanciaCartaPorte 'Puedes agregar la cantidad de remolques que necesites 'For i = 0 to N remolques.AgregarRemolque "CTR021", "XVG3421" 'Next i 'Agregamos la informacion de IdentificacionVehicular, Seguro y Remolques al nodo Autotransporte autotransporte.CrearNodo "TPAF01", "Permiso no contemplado en el catálogo", identificacion, seguros, remolques 'Agregamos toda la información al mercancias mercancias.CrearNodo 100, "XBX", 1, mercancia, autotransporte 'Figuras 'Creamos nodo Figuras Dim figura As New FiguraTransporteCartaPorte 'Puedes agregar la cantidad de nodo FiguraTransporte que necesites 'For i = 0 To N figura.AgregarTiposFigura "01", "GUMA840209KJ2", "1023442", "Alberto Guzman Manriquez" 'Next i cartaporte.CrearNodo opTransInternacCartaPorte_No, ubicaciones, mercancias, figura, 595 'Agregamos el nodo Carta porte al nodo complemento com.AgregarComplementoCartaPorte cartaporte 'Configuración general para el uso de servicios (Obligatorio para poder timbrar) Dim config As New ConfiguracionesBuildCFDI 'Establece los parametros de la cuenta de timbre que se usará para timbrar el documento. config.EstablecerPIN "CFx45...Hg", "micontraseña" 'Establecemos los certificados con los que firmaremos el CFDI previo al timbre. config.EstablecerCertificados "C:\CSD\Certificado.cer", "C:\CSD\LlavePrivada.key", "micontraseña" 'Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = True 'Iniciamos la clase que genera el CFDI y timbra. Dim cfdi As New cfdi Dim res As ResultadosTimbre Set res = cfdi.TimbrarCFDI("C:\XML\CfdiCartaPorte.xml", opTipoTimbre_TimbrePrueba, c, em, r, con, , , com, "C:\XML\QR.png") 'Podemos hacer uso de la información generada con el timbre MsgBox res.UUID MsgBox res.CadenaTimbrado MsgBox res.FechaTimbrado MsgBox res.NoCertificadoCFDI MsgBox res.NoCertificadoSAT MsgBox res.SelloCFDI MsgBox res.SelloSAT MsgBox res.Leyenda MsgBox res.PAC
using tagcode.BuildCFDI; using static tagcode.BuildCFDI.Cfdi; using static tagcode.BuildCFDI.Cfdi.Complemento; using static tagcode.BuildCFDI.Cfdi.Complemento.ComercioExterior; using static tagcode.BuildCFDI.Cfdi.Complemento.ComercioExterior.EmisorComercioExterior; using static tagcode.BuildCFDI.Cfdi.Complemento.ComercioExterior.ReceptorComercioExterior; using static tagcode.BuildCFDI.Cfdi.Complemento.ComercioExterior.DestinatarioComercioExterior; using static tagcode.BuildCFDI.Cfdi.Complemento.ComercioExterior.MercanciasComercioExterior; //Creamos el nodo Comprobante Comprobante c = new Comprobante(DateTime.Now, 1500, 2000, "MXN", opTipoDeComprobante.Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago.PUE, 20, 1); //Creamos el nodo Emisor Emisor em = new Emisor("AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601"); //Creamos el nodo Receptor Receptor r = new Receptor("ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03"); //Creamos el nodo Conceptos Conceptos con = new Conceptos(); //Puedes agregar la cantidad de conceptos que necesites for (int i = 0; i < 3; i++) { //Creamos el nodo impuestos del concepto Conceptos.Impuestos im = new Conceptos.Impuestos(); //Puedes agregar la cantidad de traslados necesarios. //for(int i = 0; i < N; i++){ im.AgregarTraslado(opImpuestosTraslado.IVA, 1000, opImpuestosTipoFactor.Tasa, 0.16, 160); //} //Puedes agregar la cantidad de retenciones necesarias //for(int i = 0; i < N; i++){ im.AgregarRetencion(opImpuestosRetencion.ISR, 1000, opImpuestosTipoFactor.Tasa, 0.04, 40); //} //Agregamos el nodo concepto con.AgregarConcepto("01010101", 1, "E48", "Prueba de factura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im); } //Creamos el nodo Complemento Complemento com = new Complemento(); //Creación de nodo domicilio del emisor DomicilioEmisorComercioExterior dom_emisor = new DomicilioEmisorComercioExterior("Av. 20 de Noviembre", "QUE", "MEX", "76199", "2501", "INT B", "0214", "01", "Primer departamento subiendo escaleras", "014"); //Creación de nodo emisor EmisorComercioExterior cce_emisor = new EmisorComercioExterior("XEXX010101HNEXXXA4", dom_emisor); //Creación de nodo domicilio de receptor DomicilioReceptorComercioExterior dom_receptor = new DomicilioReceptorComercioExterior("ST. 5", "TX", "USA", "00000"); //Creación de nodo receptor ReceptorComercioExterior cce_receptor = new ReceptorComercioExterior("123456789", dom_receptor); //Creación de nodo destinatario DestinatarioComercioExterior cce_destinatario = new DestinatarioComercioExterior(); //Puedes agregar la cantidad de destinatarios que necesites //for(int i = 0; i < N; i++){ DomicilioDestinatarioComercioExterior dom_destinatario = new DomicilioDestinatarioComercioExterior(); //Puedes agregar la cantidad de domicilios destinatarios que necesites //for(int i = 0; i < N; i++){ dom_destinatario.AgregarDomicilio("ST. 20", "TX", "USA", "00000"); //} cce_destinatario.AgregarDestinatario(dom_destinatario, "123456789", "JOSEPH RICE"); //} //Creacion del nodo propietarios PropietarioComercioExterior cce_propietarios = new PropietarioComercioExterior(); //Puedes agregar la cantidad de domicilios destinatarios que necesites //for(int i = 0; i < N; i++){ cce_propietarios.AgregarPropietario("123456789", "USA"); //} //Creación del nodo Mercancías MercanciasComercioExterior cce_mercancias = new MercanciasComercioExterior(); //Puedes agregar la cantidad de mercancías necesarias //for(int i = 0; i < N; i++){ DescripcionesEspecificasComercioExterior cce_descripciones = new DescripcionesEspecificasComercioExterior(); //Puedes agregar la cantidad de descripciones específicas para la mercancía //for(int i = 0; i < N; i++){ cce_descripciones.AgregarDescripcionEspecifica("Marca propia", "303056", "1458", "NX856465T78293"); //} cce_mercancias.AgregarMercancia("01010101", 30, "2402200100", 145.36, "01", 355.40, cce_descripciones); //} //Creación del nodo Comercio Exterior ComercioExterior cce = new ComercioExterior("2", "02", "A1", 1, "12345678901234567890", "1234567890", "FOB", 1, "Observaciones de comercio exterior", 20.4632, 6000, cce_emisor, cce_propietarios, cce_receptor, cce_destinatario, cce_mercancias); //Agregamos el nodo Carta Porte al Complemento com.AgregarComplemento(cce); //Configuración general para el uso de servicios (Obligatorio para poder timbrar) ConfiguracionesBuildCFDI config = new ConfiguracionesBuildCFDI("CFx45...Hg", "micontraseña", "C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña"); //Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = true; //Iniciamos la clase que genera el CFDI y timbra. Cfdi cfdi = new Cfdi(); ResultadosTimbre res = cfdi.TimbrarCFDI("C:\\XML\\CfdiComercioExterior.xml", opTipoTimbre.TimbrePrueba, c, em, r, con, null, null, com, "C:\\XML\\QR.png"); //Podemos hacer uso de la información generada con el timbre Console.WriteLine(res.UUID); Console.WriteLine(res.CadenaTimbrado); Console.WriteLine(res.FechaTimbrado); Console.WriteLine(res.NoCertificadoCFDI); Console.WriteLine(res.NoCertificadoSAT); Console.WriteLine(res.SelloCFDI); Console.WriteLine(res.SelloSAT); Console.WriteLine(res.Leyenda); Console.WriteLine(res.PAC);
'Creamos el nodo Comprobante Dim c As New Comprobante c.CrearNodo Now, 1500, 2000, "MXN", opTipoDeComprobante_Ingreso, "01010", "01", "03", "534792", "A", "Pago de contado", opMetodoPago_PUE, 20, 1 'Creamos el nodo Emisor Dim em As New Emisor em.CrearNodo "AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601" 'Creamos el nodo Receptor Dim r As New Receptor r.CrearNodo "ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "G03" 'Creamos el nodo Conceptos Dim con As New Conceptos 'Puedes agregar la cantidad de conceptos que necesites For i = 0 To 3 'Creamos el nodo impuestos del concepto Dim im As New Impuestos 'Puedes agregar la cantidad de traslados necesarios. 'For i = 0 To N im.AgregarTraslado opImpuestosTraslado_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.16, 160 'Next i 'Puedes agregar la cantidad de retenciones necesarias 'For i = 0 To N im.AgregarRetencion opImpuestosRetencion_IVA, 1000, opImpuestosTipoFactor_Tasa, 0.04, 40 'Next i 'Agregamos el nodo concepto con.AgregarConcepto "01010101", 1, "E48", "Prueba de factura", 1000, 1000, "02", "SKU321513", "Servicio", 20, im Next i 'Creamos el nodo Complemento Dim com As New Complemento 'Creación de nodo domicilio del emisor Dim dom_emisor As New DomicilioEmisorComercioExterior dom_emisor.CrearNodo "Av. 20 de Noviembre", "QUE", "MEX", "76199", "2501", "INT B", "0214", "01", "Primer departamento subiendo escaleras", "014" 'Creación de nodo emisor Dim cce_emisor As New EmisorComercioExterior cce_emisor.CrearNodo "XEXX010101HNEXXXA4", dom_emisor 'Creación de nodo domicilio de receptor Dim dom_receptor As New DomicilioReceptorComercioExterior dom_receptor.CrearNodo "ST. 5", "TX", "USA", "00000" 'Creación de nodo receptor Dim cce_receptor As New ReceptorComercioExterior cce_receptor.CrearNodo "123456789", dom_receptor 'Creación de nodo destinatario Dim cce_destinatario As New DestinatarioComercioExterior 'Puedes agregar la cantidad de destinatarios que necesites 'For i = 0 To N Dim dom_destinatario As New DomicilioDestinatarioComercioExterior 'Puedes agregar la cantidad de domicilios destinatarios que necesites 'For i = 0 To N dom_destinatario.AgregarDomicilio "ST. 20", "TX", "USA", "00000" 'Next i cce_destinatario.AgregarDestinatario dom_destinatario, "123456789", "JOSEPH RICE" 'Next i 'Creacion del nodo propietarios Dim cce_propietarios As New PropietarioComercioExterior 'Puedes agregar la cantidad de domicilios destinatarios que necesites 'For i = 0 To N cce_propietarios.AgregarPropietario "123456789", "USA" 'Next i 'Creación del nodo Mercancías Dim cce_mercancias As New MercanciasComercioExterior 'Puedes agregar la cantidad de mercancías necesarias 'For i = 0 To N Dim cce_descripciones As New DescripcionesEspecificasComercioExterior 'Puedes agregar la cantidad de descripciones específicas para la mercancía 'For i = 0 To N cce_descripciones.AgregarDescripcionEspecifica "Marca propia", "303056", "1458", "NX856465T78293" 'Next i cce_mercancias.AgregarMercancia "01010101", 30, "2402200100", 145.36, "01", 355.4, cce_descripciones 'Next i 'Creación del nodo Comercio Exterior Dim cce As New ComercioExterior cce.CrearNodo "2", "02", "A1", 1, "12345678901234567890", "1234567890", "FOB", 1, "Observaciones de comercio exterior", 20.4632, 6000, cce_emisor, cce_propietarios, cce_receptor, cce_destinatario, cce_mercancias 'Agregamos el nodo Carta porte al nodo complemento com.AgregarComplementoComercioExterior cce 'Configuración general para el uso de servicios (Obligatorio para poder timbrar) Dim config As New ConfiguracionesBuildCFDI 'Establece los parametros de la cuenta de timbre que se usará para timbrar el documento. config.EstablecerPIN "CFx45...Hg", "micontraseña" 'Establecemos los certificados con los que firmaremos el CFDI previo al timbre. config.EstablecerCertificados "C:\CSD\Certificado.cer", "C:\CSD\LlavePrivada.key", "micontraseña" 'Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = True 'Iniciamos la clase que genera el CFDI y timbra. Dim cfdi As New cfdi Dim res As ResultadosTimbre Set res = cfdi.TimbrarCFDI("C:\XML\CfdiComercioExterior.xml", opTipoTimbre_TimbrePrueba, c, em, r, con, , , com, "C:\XML\QR.png") 'Podemos hacer uso de la información generada con el timbre MsgBox res.UUID MsgBox res.CadenaTimbrado MsgBox res.FechaTimbrado MsgBox res.NoCertificadoCFDI MsgBox res.NoCertificadoSAT MsgBox res.SelloCFDI MsgBox res.SelloSAT MsgBox res.Leyenda MsgBox res.PAC
{ "ConfiguracionesConsola": { "PIN": "CFx45...Hg", "PasswordPIN": "micontraseña", "MostrarDetallesEnErrores": true, "ErroresEnConsola": false, "ResultadosEnConsola": false, "ArchivoErrores": "C:\\Errores.json", "ArchivoResultados": "C:\\Resultados.json" }, "BuildCFDI": { "Cfdi": { "TimbrarXML": { //Obligatorio "Certificado": "C:\\CSD\\Certificado.cer", //Obligatorio "LlavePrivada": "C:\\CSD\\LlavePrivada.key", //Obligatorio "PasswordLlavePrivada": "Contraseña", //Obligatorio (Prueba, Produccion) "TipoServicio": "Prueba", //Obligatorio "ArchivoXML": "C:\\XML\\CfdiComercioExterior.xml", //Opcional "ArchivoQR": "C:\\XML\\QR.png" }, //Todos los campos y nodos corresponden a la estructura jerárquica de un CFDI según el Anexo 20 "Comprobante": { "Fecha": "2022-02-22T13:00:00", "Folio": "2574", "Serie": "C", "LugarExpedicion": "01010", "Moneda": "MXN", "TipoDeComprobante": "I", "FormaPago": "01", "CondicionesDePago": "Pago de contado", "SubTotal": 1000, "Total": 1100, "Descuento": 20, "MetodoPago": "PUE", "Emisor": { "Rfc": "AAA010101AAA", "Nombre": "EMPRESA DE PRUEBA SA DE CV", "RegimenFiscal": "601" }, "Receptor": { "Rfc": "ROQB401225R10", "Nombre": "BERNARDO ROQUE QUIÑONES", "DomicilioFiscalReceptor": "01010", "RegimenFiscalReceptor": "626", "UsoCFDI": "G03" }, "Conceptos": [ { "ClaveProdServ": "01010101", "ClaveUnidad": "E48", "Descripcion": "Prueba de factura", "NoIdentificacion": "SKU321513", "Unidad": "Servicio", "Cantidad": 1, "ValorUnitario": 500, "Importe": 500, "Descuento": 10, "ObjetoImp": "02", "Impuestos": { "Retenciones": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.04, "Importe": 20 } ], "Traslados": [ { "Base": 500, "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": 0.16, "Importe": 80 } ] } } ], //Creamos el nodo Complemento "Complemento": { //Creación del nodo ComercioExterior "ComercioExterior": { //Creación del nodo Emisor del ComercioExterior "Emisor": { "Curp": "XEXX010101HNEXXXA4", "Domicilio": { "Calle": "Av. 20 de Noviembre", "NumeroExterior": "2501", "NumeroInterior": "INT B", "Colonia": "0214", "CodigoPostal": "76199", "Referencia": "Primer departamento subiendo escaleras", "Localidad": "01", "Municipio": "014", "Estado": "QUE", "Pais": "MEX" } }, //Creación del nodo Receptor del ComercioExterior "Receptor": { "NumRegIdTrib": "123456789", "Domicilio": { "Calle": "ST. 5", "CodigoPostal": "00000", "Estado": "TX", "Pais": "USA" } }, //Creación del nodo Propietario del ComercioExterior "Propietario": [ { "NumRegIdTrib": "123456789", "ResidenciaFiscal": "USA" } ], //Creación del nodo Destinatario del ComercioExterior "Destinatario": [ { "NumRegIdTrib": "123456789", "Nombre": "JOSEPH RICE", "Domicilio": [ { "Calle": "ST. 20", "CodigoPostal": "00000", "Estado": "TX", "Pais": "USA" } ] } ], //Creación del nodo Mercancias del ComercioExterior "Mercancias": { "Mercancia": [ { "NoIdentificacion": "01010101", "FraccionArancelaria": "2402200100", "CantidadAduana": 145.36, "UnidadAduana": "01", "ValorUnitarioAduana": 355.40, "ValorDolares": 30, "DescripcionesEspecificas": [ { "Marca": "Marca propia", "Modelo": "303056", "SubModelo": "1458", "NumeroSerie": "NX856465T78293" } ] } ] } } } } } } }
using tagcode.BuildCFDI; using static tagcode.BuildCFDI.Pagos; using static tagcode.BuildCFDI.Pagos.PagosComplemento; using static tagcode.BuildCFDI.Pagos.PagosComplemento.DoctoRelacionadoPagosComplemento; //Creamos el nodo Comprobante PagosComprobante c = new PagosComprobante(DateTime.Now, "01010", "4792", "N"); //Creamos el nodo CfdiRelacionados PagosCfdiRelacionados cr = new PagosCfdiRelacionados(); //Puedes agregar la cantidad de relaciones que necesites //for(int i = 0; i < N; i++){ cr.AgregarUUID("5FB2822E-396D-4725-8521-CDC4BDD20CCF"); //} //Creamos el nodo Emisor PagosEmisor em = new PagosEmisor("AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601"); //Creamos el nodo Receptor PagosReceptor r = new PagosReceptor("ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626", "USA", "87987478972"); //Pagos 2.0 //Creamos nodo Carta Porte DoctoRelacionadoPagosComplemento docto = new DoctoRelacionadoPagosComplemento(); //Puedes agregar la cantidad de nodos DoctoRelacionado necesarios //for(int i = 0; i < N; i++){ //Creamos el nodo ImpuestosDR ImpuestosDRPagosComplemento impdr = new ImpuestosDRPagosComplemento(); //Puedes agregar la cantidad de nodos de impuestos necesarios //for(int i = 0; i < N; i++){ impdr.AgregarTraslado(opImpuestosTraslado.IVA, 1400, opImpuestosTipoFactor.Tasa, 0.16, 193.11); //} //Para agregar impuestos retenidos en el nodo docto relacionados se usa esta funcion //for(int i = 0; i < N; i++){ impdr.AgregarRetencion(opImpuestosRetencion.ISR, 1400, opImpuestosTipoFactor.Tasa, 0.1, 140); //} docto.AgregarDoctoRelacionado("750dd2b8-cb5b-11ec-9d64-0242ac120002", "MXN", 2, 1400, 1400, 0, "01", "F", "23452", 1, impdr); //} //Declaramos la variable que genera el nodo Pago del complemento PagosComplemento com = new PagosComplemento(); //Puedes agregar la cantidad de nodos de impuestos necesarios //for(int i = 0; i < N; i++){ com.AgregarPago(DateTime.Now, "01", "MXN", 1400, docto, 1, "987492783"); //} //Configuración general para el uso de servicios (Obligatorio para poder timbrar) ConfiguracionesBuildCFDI config = new ConfiguracionesBuildCFDI("CFx45...Hg", "micontraseña", "C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña"); //Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = true; //Iniciamos la clase que genera el CFDI y timbra. Pagos cfdi = new Pagos(); ResultadosTimbre res = cfdi.TimbrarPagos("C:\\XML\\CfdiPago.xml", opTipoTimbre.TimbrePrueba, c, em, r, com, cr, "C:\\XML\\QR.png"); //Podemos hacer uso de la información generada con el timbre Console.WriteLine(res.UUID); Console.WriteLine(res.CadenaTimbrado); Console.WriteLine(res.FechaTimbrado); Console.WriteLine(res.NoCertificadoCFDI); Console.WriteLine(res.NoCertificadoSAT); Console.WriteLine(res.SelloCFDI); Console.WriteLine(res.SelloSAT); Console.WriteLine(res.Leyenda); Console.WriteLine(res.PAC);
'Creamos el nodo Comprobante del complemento Pagos 2.0 Dim c As New PagosComprobante c.CrearNodo Now, "010101", "328", "P" 'Creamos el nodo CfdiRelacionados Dim cr As New PagosCfdiRelacionados 'Puedes agregar la cantidad de nodos DoctoRelacionado necesarios 'For i = 0 To N cr.AgregarUUID "5FB2822E-396D-4725-8521-CDC4BDD20CCF" 'Next 'Creamos el nodo Emisor Dim em As New PagosEmisor em.CrearNodo "AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601" 'Creamos el nodo Receptor Dim r As New PagosReceptor r.CrearNodo "ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626" 'Pagos 2.0 'Creamos nodo Carta Porte Dim docto As New DoctoRelacionadoPagosComplemento 'Puedes agregar la cantidad de nodos DoctoRelacionado necesarios 'For i = 0 To N Dim impdr As ImpuestosDRPagosComplemento Set impdr = New ImpuestosDRPagosComplemento 'Puedes agregar la cantidad de nodos de impuestos necesarios 'For i = 0 To N impdr.AgregarTraslado opImpuestosTraslado_IVA, 1400, opImpuestosTipoFactor_Tasa, 0.16, 193.11 'Next i 'Para agregar impuestos retenidos en el nodo docto relacionados se usa esta funcion 'For i = 0 To N impdr.AgregarRetencion opImpuestosRetencion_ISR, 1400, opImpuestosTipoFactor_Tasa, 0.1, 140 'Next i docto.AgregarDoctoRelacionado "750dd2b8-cb5b-11ec-9d64-0242ac120002", "MXN", 2, 1400, 1400, 0, "01", "F", "23452", 1, impdr 'Next i 'Declaramos la variable que genera el nodo Pago del complemento Dim com As New PagosComplemento 'Puedes agregar la cantidad de nodos de impuestos necesarios 'For i = 0 To N com.AgregarPago Now, "01", "MXN", 1400, docto, 1, "987492783" 'Next 'Configuración general para el uso de servicios (Obligatorio para poder timbrar) Dim config As New ConfiguracionesBuildCFDI 'Establece los parametros de la cuenta de timbre que se usará para timbrar el documento. config.EstablecerPIN "CFx45...Hg", "micontraseña" 'Establecemos los certificados con los que firmaremos el CFDI previo al timbre. config.EstablecerCertificados "C:\CSD\Certificado.cer", "C:\CSD\LlavePrivada.key", "micontraseña" 'Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = True 'Iniciamos la clase que genera la Nómina y timbra. Dim cfdi As New Pagos Dim res As ResultadosTimbre Set res = cfdi.TimbrarPagos("C:\XML\CfdiPago.xml", opTipoTimbre_TimbrePrueba, c, em, r, com, cr, "C:\XML\QR.png") 'Podemos hacer uso de la información generada con el timbre MsgBox res.UUID MsgBox res.CadenaTimbrado MsgBox res.FechaTimbrado MsgBox res.NoCertificadoCFDI MsgBox res.NoCertificadoSAT MsgBox res.SelloCFDI MsgBox res.SelloSAT MsgBox res.Leyenda MsgBox res.PAC
{ "ConfiguracionesConsola": { "PIN": "CFx45...Hg", "PasswordPIN": "micontraseña", "MostrarDetallesEnErrores": true, "ErroresEnConsola": false, "ResultadosEnConsola": false, "ArchivoErrores": "C:\\Errores.json", "ArchivoResultados": "C:\\Resultados.json" }, "BuildCFDI": { "Pagos": { "TimbrarPagos": { //Obligatorio "Certificado": "C:\\CSD\\Certificado.cer", //Obligatorio "LlavePrivada": "C:\\CSD\\LlavePrivada.key", //Obligatorio "PasswordLlavePrivada": "Contraseña", //Obligatorio (Prueba, Produccion) "TipoServicio": "Prueba", //Obligatorio "ArchivoXML": "C:\\XML\\CfdiPago.xml", //Opcional "ArchivoQR": "C:\\XML\\QR.png" }, //Todos los campos y nodos corresponden a la estructura jerárquica de un CFDI según el Anexo 20 "Comprobante": { "Fecha": "2022-05-16T13:00:00", "Folio": "102", "Serie": "P", "LugarExpedicion": "01010", "CfdiRelacionados": { "CfdiRelacionado": [ { "UUID": "18f9ffa8-b043-4b4b-80a9-eb5d0e7a088e" }, { "UUID": "18f9ffa8-b043-4b4b-80a9-eb5d0e7a088f" } ] }, "Emisor": { "Rfc": "AAA010101AAA", "Nombre": "EMPRESA DE PRUEBA SA DE CV", "RegimenFiscal": "601", "FacAtrAdquirente": "0123456789" }, "Receptor": { "Rfc": "ROQB401225R10", "Nombre": "BERNARDO ROQUE QUIÑONES", "DomicilioFiscalReceptor": "01010", "RegimenFiscalReceptor": "626", "ResidenciaFiscal": "USA", "NumRegIdTrib": "56465165636" }, "Complementos": { //Complemento de pago 2.0 "Pago": [ { "FechaPago": "2022-05-01T00:00:00", "FormaDePagoP": "03", "MonedaP": "MXN", "TipoCambioP": 1, "Monto": 3500, "NumOperacion": "876387423", "RfcEmisorCtaOrd": "BNM840515VB1", "NomBancoOrdExt": "NOMBRE DE BANCO EXTRANJERO", "CtaOrdenante": "1234567890", "RfcEmisorCtaBen": "BBA830831LJ2", "CtaBeneficiario": "1234567890", "TipoCadPago": "01", "CadPago": "||1.0|0408216| ... ||", "CertPago": "MIIF8zCCA9ugAw ... cp0OD1M4hydVwyM", "DoctoRelacionado": [ { "IdDocumento": "18f9ffa8-b043-4b4b-80a9-eb5d0e7a088a", "Serie": "A", "Folio": "5569", "MonedaDR": "MXN", "EquivalenciaDR": 1, "NumParcialidad": 1, "ImpSaldoAnt": 4500, "ImpPagado": 2000, "ImpSaldoInsoluto": 2500, "ObjetoImpDR": "02", "ImpuestosDR": { "RetencionesDR": [ { "ImpuestoP": "001", "BaseP": 2000, "TasaOCuotaP": 0.10, "TipoFactor": "Tasa", "Importe": 200 } ], "TrasladosDR": [ { "ImpuestoP": "002", "BaseP": 2000, "TasaOCuotaP": 0.16, "TipoFactor": "Tasa", "Importe": 320 } ] } }, { "IdDocumento": "18f9ffa8-b043-4b4b-80a9-eb5d0e7a088b", "Serie": "A", "Folio": "5570", "MonedaDR": "MXN", "EquivalenciaDR": 1, "NumParcialidad": 2, "ImpSaldoAnt": 1500, "ImpPagado": 1500, "ImpSaldoInsoluto": 0, "ObjetoImpDR": "01" } ] } ] } } } } }
using tagcode.BuildCFDI; using static tagcode.BuildCFDI.Nomina; using static tagcode.BuildCFDI.Nomina.NominaComplemento; using static tagcode.BuildCFDI.Nomina.NominaComplemento.EmisorNominaComplemento; using static tagcode.BuildCFDI.Nomina.NominaComplemento.PercepcionesNominaComplemento; using static tagcode.BuildCFDI.Nomina.NominaComplemento.OtrosPagosNominaComplemento; //Creamos el nodo Comprobante NominaComprobante c = new NominaComprobante(DateTime.Now, "01010", "4792", "N"); //Creamos el nodo CfdiRelacionados NominaCfdiRelacionados cr = new NominaCfdiRelacionados(); //Puedes agregar la cantidad de relaciones que necesites //for(int i = 0; i < N; i++){ cr.AgregarUUID("5FB2822E-396D-4725-8521-CDC4BDD20CCF"); //} //Creamos el nodo Emisor NominaEmisor em = new NominaEmisor("AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601"); //Creamos el nodo Receptor NominaReceptor r = new NominaReceptor("ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626"); //Nomina //Crear nodo EntidadSNCF EntidadSNCFEmisorNominaComplemento entidad = new EntidadSNCFEmisorNominaComplemento("IP", 1500); //Crear nodo Emisor del complemento Nómina EmisorNominaComplemento enom = new EmisorNominaComplemento("CABL840215MDFSRS01", "B5510768108", "AAA010101AAA", entidad); //Crear nodo Receptor del complemento Nómina ReceptorNominaComplemento rnom = new ReceptorNominaComplemento("AABL840215MDFSRS01", "01", "02", "001", "02", "JAL", opSindicalizadoReceptorNomina.No, null, "123456789", "P365W", "01", "SISTEMAS", "GERENTE", "1", "002", "072320002084170154", 490, 490); //Crear nodos Percepciones del complemento Nómina PercepcionesNominaComplemento pnom = new PercepcionesNominaComplemento(); //Puedes agregar la cantidad de nodos Percepcion necesarios //for(int i = 0; i < N; i++){ //Crear nodo Horas Extras HorasExtraPercepcionNominaComplemento hextra = new HorasExtraPercepcionNominaComplemento(); //Puedes agregar la cantidad de nodos HorasExtra necesarios //for(int i = 0; i < N; i++){ hextra.AgregarHorasExtra(1, "01", 2, 200); //} //Crear nodo AcionesOTitulos AccionesOTitulosPercepcionNominaComplemento acciones = new AccionesOTitulosPercepcionNominaComplemento(3000, 4000); pnom.AgregarPercepcion("001", "00500", "Sueldos y salarios", 320.2, 129.8, hextra, acciones); //} //Crear nodo JubilacionPensionRetiro JubilacionPensionRetiroPercepcionesNominaComplemento jubilacion = new JubilacionPensionRetiroPercepcionesNominaComplemento(500, 200, 150, 150, 50); pnom.AgregarJubilacionPensionRetiro(jubilacion); //Crear nodo SeparacionIndemnizacion SeparacionIndemnizacionPercepcionesNominaComplemento separacion = new SeparacionIndemnizacionPercepcionesNominaComplemento(400, 3, 2000, 300, 200.5); pnom.AgregarSeparacionIndemnizacion(separacion); //Crear nodos Deducciones del complemento Nómina DeduccionesNominaComplemento dnom = new DeduccionesNominaComplemento(); //Puedes agregar la cantidad de nodos Deduccion necesarios //for(int i = 0; i < N; i++){ dnom.AgregarDeduccion("001", "00300", "Seguro Social", 700); //} //Crear nodos OtrosPagos del complemento Nómina OtrosPagosNominaComplemento onom = new OtrosPagosNominaComplemento(); //Puedes agregar la cantidad de nodos OtroPago necesarios //for(int i = 0; i < N; i++){ //Crear nodo SubsidioAlEmpleo SubsidioAlEmpleoOtroPagoNominaComplemento subsidio = new SubsidioAlEmpleoOtroPagoNominaComplemento(98.5); //Crear nodo CompensacionSaldosAFavor CompensacionSaldosAFavorOtroPagoNominaComplemento compensacion = new CompensacionSaldosAFavorOtroPagoNominaComplemento(200, 2022); onom.AgregarOtroPago("001", "00200", "Subsidio al empleo", 450, subsidio, compensacion); //} //Crear nodos Incapacidades del complemento Nómina IncapacidadesNominaComplemento inom = new IncapacidadesNominaComplemento(); //Puedes agregar la cantidad de nodos OtroPago necesarios //for(int i = 0; i < N; i++){ inom.AgregarIncapacidad(7, "03", 1500); //} //Creamos el complemento Nomina 1.2 NominaComplemento com = new NominaComplemento(opTipoNomina.Ordinaria, DateTime.Now, DateTime.Now.AddDays(-7), DateTime.Now, 7, rnom, enom, pnom, dnom, onom, inom); //Configuración general para el uso de servicios (Obligatorio para poder timbrar) ConfiguracionesBuildCFDI config = new ConfiguracionesBuildCFDI("CFx45...Hg", "micontraseña", "C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña"); //Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = true; //Iniciamos la clase que genera el CFDI y timbra. Nomina cfdi = new Nomina(); ResultadosTimbre res = cfdi.TimbrarNomina("C:\\XML\\CfdiNomina.xml", opTipoTimbre.TimbrePrueba, c, em, r, com, cr, "C:\\XML\\QR.png"); //Podemos hacer uso de la información generada con el timbre Console.WriteLine(res.UUID); Console.WriteLine(res.CadenaTimbrado); Console.WriteLine(res.FechaTimbrado); Console.WriteLine(res.NoCertificadoCFDI); Console.WriteLine(res.NoCertificadoSAT); Console.WriteLine(res.SelloCFDI); Console.WriteLine(res.SelloSAT); Console.WriteLine(res.Leyenda); Console.WriteLine(res.PAC);
'Creamos el nodo Comprobante del complemento Nomina 1.2 Dim c As New NominaComprobante c.CrearNodo Now, "010101", "641", "N" 'Creamos el nodo CfdiRelacionados Dim cr As New NominaCfdiRelacionados 'Puedes agregar la cantidad de nodos Percepcion necesarios 'For i = 0 To N cr.AgregarUUID "5FB2822E-396D-4725-8521-CDC4BDD20CCF" 'Next 'Creamos el nodo emisor Dim em As New NominaEmisor em.CrearNodo "AAA010101AAA", "EMPRESA DE PRUEBA SA DE CV", "601" 'Creamos el nodo receptor Dim r As New NominaReceptor r.CrearNodo "ROQB401225R10", "BERNARDO ROQUE QUIÑONES", "01010", "626" 'Nomina 'Crear nodo EntidadSNCF Dim entidad As New EntidadSNCFEmisorNominaComplemento entidad.CrearNodo "IP", 1500 'Crear nodo Emisor del complemento Nómina Dim enom As New EmisorNominaComplemento enom.CrearNodo "CABL840215MDFSRS01", "B5510768108", "AAA010101AAA", entidad 'Crear nodo Receptor del complemento Nómina Dim rnom As New ReceptorNominaComplemento rnom.CrearNodo "AABL840215MDFSRS01", "01", "02", "001", "02", "JAL", opSindicalizadoReceptorNomina_No, #1/1/2001#, "123456789", "P365W", "01", "SISTEMAS", "GERENTE", "1", "002", "072320002084170154", 490, 490 'Crear nodos Percepciones del complemento Nómina Dim pnom As New PercepcionesNominaComplemento 'Puedes agregar la cantidad de nodos Percepcion necesarios 'For i = 0 To N 'Crear nodo Horas Extras Dim hextra As New HorasExtraPercepcionNominaComplemento 'Puedes agregar la cantidad de nodos HorasExtra necesarios 'For i = 0 To N hextra.AgregarHorasExtra 1, "01", 2, 200 'Next 'Crear nodo AcionesOTitulos Dim acciones As New AccionesOTitulosPercepcionNominaComplemento acciones.CrearNodo 3000, 4000 pnom.AgregarPercepcion "001", "00500", "Sueldos y salarios", 320.2, 129.8, hextra, acciones 'Next 'Crear nodo JubilacionPensionRetiro Dim jubilacion As New JubilacionPensionRetiroPercepcionesNominaComplemento jubilacion.CrearNodo 500, 200, 150, 150, 50 pnom.AgregarJubilacionPensionRetiro jubilacion 'Crear nodo SeparacionIndemnizacion Dim separacion As New SeparacionIndemnizacionPercepcionesNominaComplemento separacion.CrearNodo 400, 3, 2000, 300, 200.5 pnom.AgregarSeparacionIndemnizacion separacion 'Crear nodos Deducciones del complemento Nómina Dim dnom As New DeduccionesNominaComplemento 'Puedes agregar la cantidad de nodos Deduccion necesarios 'For i = 0 To N dnom.AgregarDeduccion "001", "00300", "Seguro Social", 700 'Next 'Crear nodos OtrosPagos del complemento Nómina Dim onom As New OtrosPagosNominaComplemento 'Puedes agregar la cantidad de nodos OtroPago necesarios 'For i = 0 To N 'Crear nodo SubsidioAlEmpleo Dim subsidio As New SubsidioAlEmpleoOtroPagoNominaComplemento subsidio.CrearNodo 98.5 'Crear nodo CompensacionSaldosAFavor Dim compensacion As New CompensacionSaldosAFavorOtroPagoNominaComplemento compensacion.CrearNodo 200, 2022 onom.AgregarOtroPago "001", "00200", "Subsidio al empleo", 450, subsidio, compensacion 'Next 'Crear nodos Incapacidades del complemento Nómina Dim inom As New IncapacidadesNominaComplemento 'Puedes agregar la cantidad de nodos OtroPago necesarios 'For i = 0 To N inom.AgregarIncapacidad 7, "03", 1500 'Next 'Creamos el complemento Nomina 1.2 Dim com As New NominaComplemento com.CrearNodo opTipoNomina_Ordinaria, Now, Now - 7, Now, 7, rnom, enom, pnom, dnom, onom, inom 'Configuración general para el uso de servicios (Obligatorio para poder timbrar) Dim config As New ConfiguracionesBuildCFDI 'Establece los parametros de la cuenta de timbre que se usará para timbrar el documento. config.EstablecerPIN "CFx45...Hg", "micontraseña" 'Establecemos los certificados con los que firmaremos el CFDI previo al timbre. config.EstablecerCertificados "C:\CSD\Certificado.cer", "C:\CSD\LlavePrivada.key", "micontraseña" 'Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = True 'Iniciamos la clase que genera la Nómina y timbra. Dim cfdi As New Nomina Dim res As ResultadosTimbre Set res = cfdi.TimbrarNomina("C:\XML\CfdiNomina.xml", opTipoTimbre_TimbrePrueba, c, em, r, com, cr, "C:\XML\QR.png") 'Podemos hacer uso de la información generada con el timbre MsgBox res.UUID MsgBox res.CadenaTimbrado MsgBox res.FechaTimbrado MsgBox res.NoCertificadoCFDI MsgBox res.NoCertificadoSAT MsgBox res.SelloCFDI MsgBox res.SelloSAT MsgBox res.Leyenda MsgBox res.PAC
{ "ConfiguracionesConsola": { "PIN": "CFx45...Hg", "PasswordPIN": "micontraseña", "MostrarDetallesEnErrores": true, "ErroresEnConsola": false, "ResultadosEnConsola": false, "ArchivoErrores": "C:\\Errores.json", "ArchivoResultados": "C:\\Resultados.json" }, "BuildCFDI": { "Nominas": { "TimbrarNomina": { //Obligatorio "Certificado": "C:\\CSD\\Certificado.cer", //Obligatorio "LlavePrivada": "C:\\CSD\\LlavePrivada.key", //Obligatorio "PasswordLlavePrivada": "Contraseña", //Obligatorio (Prueba, Produccion) "TipoServicio": "Prueba", //Obligatorio "ArchivoXML": "C:\\XML\\CfdiNomina.xml", //Opcional "ArchivoQR": "C:\\XML\\QR.png" }, //Todos los campos y nodos corresponden a la estructura jerárquica de un CFDI según el Anexo 20 "Comprobante": { "Fecha": "2022-05-16T13:00:00", "Folio": "102", "Serie": "P", "LugarExpedicion": "01010", "CfdiRelacionados": { "CfdiRelacionado": [ { "UUID": "18f9ffa8-b043-4b4b-80a9-eb5d0e7a088e" }, { "UUID": "18f9ffa8-b043-4b4b-80a9-eb5d0e7a088f" } ] }, "Emisor": { "Rfc": "AAA010101AAA", "Nombre": "EMPRESA DE PRUEBA SA DE CV", "RegimenFiscal": "601", "FacAtrAdquirente": "0123456789" }, "Receptor": { "Rfc": "ROQB401225R10", "Nombre": "BERNARDO ROQUE QUIÑONES", "DomicilioFiscalReceptor": "01010", "RegimenFiscalReceptor": "626" }, "Complementos": { "Nomina": { "TipoNomina": "O", "FechaPago": "2022-05-16T00:00:00", "FechaInicialPago": "2022-05-07T00:00:00", "FechaFinalPago": "2022-05-14T00:00:00", "NumDiasPagados": 7, "Emisor": { "Curp": "CABL840215MDFSRS01", "RegistroPatronal": "B5510768108", "RfcPatronOrigen": "AAA010101AAA", "EntidadSNCF": { "OrigenRecursos": "IP", "MontoRecursoPropio": 500 } }, "Receptor": { "Curp": "AABL840215MDFSRS01", "NumSeguridadSocial": "123456789", "FechaInicioRelLaboral": "2010-01-20T00:00:00", "Antigüedad": "P110W", "TipoContrato": "01", "Sindicalizado": false, "TipoJornada": "01", "TipoRegimen": "02", "NumEmpleado": "001056", "Departamento": "SISTEMAS", "Puesto": "Programador", "RiesgoPuesto": "1", "PeriodicidadPago": "02", "Banco": "002", "CuentaBancaria": "002215911558451272", "SalarioBaseCotApor": 490.22, "SalarioDiarioIntegrado": 146.47, "ClaveEntFed": "JAL", "SubContratacion": [ { "RfcLabora": "XAXX010101000", "PorcentajeTiempo": 40 }, { "RfcLabora": "XEXX010101000", "PorcentajeTiempo": 60 } ] }, "Percepciones": { "Percepcion": [ { "TipoPercepcion": "001", "Clave": "4533", "Concepto": "Sueldo", "ImporteExento": 100, "ImporteGravado": 40, "AccionesOTitulos": { "ValorMercado": 10000, "PrecioAlOtorgarse": 13000 }, "HorasExtra": [ { "Dias": 1, "TipoHoras": "03", "HorasExtra": 6, "ImportePagado": 600 }, { "Dias": 1, "TipoHoras": "02", "HorasExtra": 3, "ImportePagado": 1800 } ] }, { "TipoPercepcion": "029", "Clave": "6233", "Concepto": "Vales de despensa", "ImporteExento": 600, "ImporteGravado": 300 } ], "JubilacionPensionRetiro": { "TotalUnaExhibicion": 15000, "TotalParcialidad": 10000, "MontoDiario": 200, "IngresoAcumulable": 30000, "IngresoNoAcumulable": 32000 }, "SeparacionIndemnizacion": { "TotalPagado": 63400.40, "NumAñosServicio": 10, "UltimoSueldoMensOrd": 8200, "IngresoAcumulable": 20000, "IngresoNoAcumulable": 14000 } }, "Deducciones": { "Deduccion": [ { "TipoDeduccion": "001", "Clave": "1000", "Concepto": "ISR", "Importe": 1600 }, { "TipoDeduccion": "002", "Clave": "1001", "Concepto": "IMSS", "Importe": 900 } ] }, "OtrosPagos": { "OtroPago": [ { "TipoDeduccion": "002", "Clave": "2005", "Concepto": "Subsidio al empleo", "Importe": 1000, "SubsidioAlEmpleo": { "SubsidioCausado": 200.58 } }, { "TipoDeduccion": "004", "Clave": "2005", "Concepto": "Saldo a favor compensación", "Importe": 4000, "CompensacionSaldosAFavor": { "SaldoAFavor": 600, "Año": 2021, "RemanenteSalFav": 215 } } ] }, "Incapacidades": { "Incapapacidad": [ { "DiasIncapacidad": 7, "TipoIncapacidad": "03", "ImporteMonetario": 1030.50 } ] } } } } } } }
using tagcode.BuildCFDI; //Configuración general para el uso de servicios (Obligatorio para poder timbrar) ConfiguracionesBuildCFDI config = new ConfiguracionesBuildCFDI("CFx45...Hg", "micontraseña", "C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña"); //Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = true; //Iniciamos la clase Cancelación Cancelaciones cancelacion = new Cancelaciones(); //Podemos cancelar un comprobante a partir de datos específicos. ResultadosCancelacion res = cancelacion.CancelarCFDI("C:\\Cancelaciones\\Acuse.xml", opTipoCancelacion.CancelacionPrueba, "AAA010101AAA", "453DF4C2-500E-4A93-BD8E-B24C03A0B22C", "01", "FFF92425-B8C8-4560-8C4A-49B5D2FDEF47"); //Tambien podemos cancelar un comprobante a partir de los archivos que deseas cancelar. ResultadosCancelacion res = cancelacion.CancelarCFDIArchivo("C:\\Cancelaciones\\Acuse.xml", "C:\\XML\\CfdiTimbrado.xml", opTipoCancelacion.CancelacionPrueba, "01", "C:\\XML\\CfdiSustitucion.xml"); //Podemos hacer uso de la información obtenida de la cancelación Console.WriteLine(res.CodigoEstado); Console.WriteLine(res.Estado);
'Configuración general para el uso de servicios (Obligatorio para poder timbrar) Dim config As New ConfiguracionesBuildCFDI 'Establece los parametros de la cuenta de timbre que se usará para timbrar el documento. config.EstablecerPIN "CFx45...Hg", "micontraseña" 'Establecemos los certificados con los que firmaremos el CFDI previo al timbre. config.EstablecerCertificados "C:\CSD\Certificado.cer", "C:\CSD\LlavePrivada.key", "micontraseña" 'Mostramos información mas detallada en caso de recibir un error a la hora de timbrar el documento. config.MostrarDetallesEnErrores = True 'Iniciamos la clase Cancelación Dim cancelacion As New Cancelaciones Dim res As ResultadosCancelacion 'Podemos cancelar un comprobante a partir de datos específicos. Set res = cancelacion.CancelarCFDI("C:\Cancelaciones\Acuse.xml", opTipoCancelacion_CancelacionPrueba, "AAA010101AAA", "453DF4C2-500E-4A93-BD8E-B24C03A0B22C", "01", "FFF92425-B8C8-4560-8C4A-49B5D2FDEF47") 'Tambien podemos cancelar un comprobante a partir de los archivos que deseas cancelar. Set res = cancelacion.CancelarCFDIArchivo("C:\\Cancelaciones\\Acuse.xml", "C:\\XML\\CfdiTimbrado.xml", opTipoCancelacion_CancelacionPrueba, "01", "C:\\XML\\CfdiSustitucion.xml") 'Podemos hacer uso de la información obtenida de la cancelación MsgBox res.CodigoEstado MsgBox res.Estado
{ "ConfiguracionesConsola": { "PIN": "CFx45...Hg", "PasswordPIN": "micontraseña", "MostrarDetallesEnErrores": true, "ErroresEnConsola": false, "ResultadosEnConsola": false, "ArchivoErrores": "C:\\Errores.json", "ArchivoResultados": "C:\\Resultados.json" }, "BuildCFDI": { "Cancelaciones": { "CancelarCFDI": { //Obligatorio "Certificado": "C:\\CSD\\Certificado.cer", //Obligatorio "LlavePrivada": "C:\\CSD\\LlavePrivada.key", //Obligatorio "PasswordLlavePrivada": "Contraseña", //Obligatorio (Prueba, Produccion) "TipoServicio": "Prueba", //Obligatorio "ArchivoAcuse": "C:\\Cancelaciones\\Acuse.xml" }, //Condicional (se debe declarar cuando exista el RfcEmisor) "UUID": "453DF4C2-500E-4A93-BD8E-B24C03A0B22C", //Condicional (se debe declarar cuando exista el UUID) "RfcEmisor": "AAA010101AAA", //Obligatorio "Motivo": "01", //Condicional (se debe declarar dependiendo el Motivo y si existe RfcEmisor y UUID) "FolioSustitucion": "FFF92425-B8C8-4560-8C4A-49B5D2FDEF47", //Condicional (se debe declarar cuando desee cancelar un comprobante a partir de un archivo XML) "ArchivoCFDI": "C:\\XML\\CfdiTimbrado.xml", //Condicional (se debe declarar dependiendo el Motivo y si existe ArchivoCFDI) "ArchivoCFDISustitucion": "C:\\XML\\CfdiTimbradoSustitucion.xml" } } }
try { //Configuración general para el uso de servicios (Obligatorio para poder timbrar) ConfiguracionesBuildCFDI config = new ConfiguracionesBuildCFDI("CFx45...Hg", "micontraseña", "C:\\CSD\\Certificado.cer", "C:\\CSD\\LlavePrivada.key", "micontraseña"); //... //... //... //... } catch (Exception ex) { //Aquí controlamos nuestro código en caso de un error en el procedimiento de timbrado Console.WriteLine(ex.Message); }
On Error GoTo Errores 'Configuración general para el uso de servicios (Obligatorio para poder timbrar) Dim config As New ConfiguracionesBuildCFDI '... '... '... '... Exit Sub Errores: MsgBox Err.Description