Librerías .NET que permite generar los XML de la Facturación Electrónica en Perú, estas librerías están actualmente en producción y en constante actualización.
- Generación de XML de los siguientes documentos electrónicos:
- Facturas
- Boletas
- Notas de Crédito
- Notas de Débito
- Resumen Diario de Boletas
- Comunicaciones de Baja
- Retenciones
- Guías de Remisión Remitente
- Guías de Remisión Transportista
Utiliza código generado desde los XSD oficiales del estándar UBL/SUNAT gracias a UblXsdToCS, estas clases contienen la estructura completa del estándar UBL/SUNAT, entonces implementar cualquier atributo adicional requerido parte de SUNAT es relativamente sencillo. Sin embargo dado la gran cantidad de propiedades que existen en el estándar UBL, en este proyecto se emplean objetos intermedios más sencillos que cumplen con todos los requerimientos de SUNAT, estas clases están definidas en GasperSoft.SUNAT.DTO.dll (CPEType, CREType, GREType, ResumenDiarioV2Type, ComunicacionBajaType), posteriormente después de asignar las propiedades correspondientes son convertidos usando la librería GasperSoft.SUNAT.UBL.dll a clases generadas desde los XSD (InvoiceType, DespatchAdviceType, SummaryDocumentsType, VoidedDocumentsType, RetentionType), finalmente son serializados a XML y firmado utilizando métodos definidos en GasperSoft.SUNAT.dll.
Note
Estas librería son compatible para net35, net40, net452, net462, net472, net481, netstandard2.0, net6.0, net7.0, net8.0 y net9.0, los métodos de envió a SUNAT no serán implementados para net35, net40 ni net452. La generación del zip en net35 y net40 es mediante la librería DotNetZip la cual contiene una vulnerabilidad relacionada con la descompresión no hay nada de qué preocuparse porque aún no implemento la lectura del CDR
-
En el proyecto Pruebas encontrara ejemplos de código de como generar y firmar los XML, se usa certificado digital de prueba generado de manera gratuita en LLAMA.PE(sin valor legal), actualmente se tienen los siguientes ejemplos:
- XML BOLETA DE VENTA GRAVADA CON DOS ÍTEMS Y UNA BONIFICACIÓN - Pagina 60 Manual SUNAT - C#
- XML BOLETA CON ICBPER - COBRANDO BOLSA - C#
- XML BOLETA CON ICBPER - REGALANDO BOLSA - C#
- XML BOLETA GRATUITA GRABADA - RETIRO POR ENTREGA A TRABAJADORES - C#
- XML FACTURA CREDITO (CUOTAS) - C#
- XML FACTURA GRATUITA - Pagina 98 Manual SUNAT - C#
- XML FACTURA CONTADO CON DETRACCION - C#
- XML FACTURA CON 4 ÍTEMS Y UNA BONIFICACIÓN - Pagina 77 Manual SUNAT - C#
- XML FACTURA CON 2 ÍTEMS E ISC - Pagina 88 Manual SUNAT - C#
- XML FACTURA CON ANTICIPOS - CON MONTO PENDIENTE DE PAGO - C#
- XML FACTURA CON ANTICIPOS - MONTO TOTAL EN CERO - C#
- XML FACTURA CON RETENCION - C#
- XML FACTURA CON PERCEPCION - C#
- XML FACTURA AL CONTADO PAGADO CON DEPOSITO EN CUENTA (MEDIO DE PAGO CATALOGO N° 59) - C#
- XML NOTA CREDITO MOTIVO 13 - C#
- XML GUIA REMISION REMITENTE - Transporte Publico - C#
- XML GUIA REMISION REMITENTE - Transporte Privado (Vehiculo y Conductor) - C#
- XML GUIA REMISION REMITENTE - Transporte Privado (M1 o L) - C#
- XML GUIA REMISION REMITENTE - EXPORTACION (PENDIENTE DE VERIFICACION CON SUNAT) - C#
- XML GUIA REMISION TRANSPORTISTA - C#
- XML RESUMEN DIARIO DE BOLETAS - INFORMAR - C#
- XML RESUMEN DIARIO DE BOLETAS - DAR DE BAJA - C#
- XML COMUNICACION DE BAJA (SOLO FACTURAS) - C#
- XML RETENCION FACTURA SOLES - C#
- XML RETENCION FACTURA DOLARES - CON TIPO DE CAMBIO - C#
- XML REVERSION (BAJAS DE RETENCIONES) - C#
-
Estos ejemplos son solo una forma de como incluir datos adicionales en el XML, SUNAT no lo exige y podrían incluirse en otras partes del documento, se tomó de ejemplo una Factura emitida por una entidad Financiera
Note
El ejemplo "FACTURA CON 4 ÍTEMS Y UNA BONIFICACIÓN - Pagina 77 Manual SUNAT" es el ejemplo mas completo de todos porque combina el uso de productos grabados, exonerados, bonificaciones y descuentos por ítem y global, por lo que recomiendo darle una observación detalla. La clase ValidadorCPE.cs del proyecto GasperSoft.SUNAT debería poder ayudarte a corregir errores de cálculo, si no es el caso y pudiste generar el XML pero no paso las validaciones de SUNAT te agradecería que me mandes un ejemplo (como los que se implementan en el proyecto Pruebas) con los datos que llenas y el XML generado a it@gaspersoft.com, me ayudarías a colocar mas validaciones que no permitan generar XMLs con errores de calculo.
- Se puede validar el XML generado en NUBEFACT, Sin embargo debe considerar que el solo hecho de copiar y pegar en esta página podría adulterar el contenido del XML y tener un mensaje de error 2335(Como en el ejemplo de "FACTURA CONTADO CON DETRACCION"), de ser ese el caso puede marcar la opcion Firmar.
Note
A la fecha 24-11-2024 la pagina de nubefact no valida los XML de Guia Transportista
- De momento este proyecto se enfoca exclusivamente en la generación de los XML, puede encontrar código de envió a SUNAT en OpenInvoice
Note
Actualmente existe una Clase para el envió de Guías Electrónicas usando GasperSoft.SUNAT.dll ClientGRE.cs. Un ejemplo de uso en EnvioGRE1.cs
Si consideras que hay algún error en la validación o generación de un XML y no puede solucionarlo usando las fuentes, puedes serializar a JSON el objeto intermedio "CPEType", "CREType", "GREType", "ResumenDiarioV2Type" o "ComunicacionBajaType" y informarlo a it@gaspersoft.com detallando el problema.
El siguiente código genera un archivo "CPE.json" que ayudaría a replicar el XML que estas generando.
var _cpe = new CPEType();
//Codigo para asignar las propiedades
var _json = System.Text.Json.JsonSerializer.Serialize(_cpe);
File.WriteAllText("CPE.json", _json);Note
Recomiendo hacer un Fork del proyecto e intentar darle solución por tus propios medios si dominas algo de C# es muy sencillo.
