Hace poquísimo tuvimos que migrar a la versión 1.4 del facturador-de-SUNAT, para poder enviar la forma de pago. Sin embargo ya entraron en vigencia tambien nuevas validación que anteriormente solo eran observaciones y a partir del 1 de Setiembre del 2021 se convierten en errores.
Venta con Descuento por Nota de Crédito
El facturador de SUNAT. Es un aplicativo hecho en Java, que te permite enviar a SUNAT la información sobre los comprobantes de pago, que se generan o emiten en nuestro negocio. Es en algo similar al viejo PDT, ya que el PDT nos permite enviar la información de nuestros recibos por honorarios.
Nuestro sistema de inventarios, requiere interactuar con el facturador-de-SUNAT, para poder enviar la información a la SUNAT. Hasta allí todo bien. Sin embargo desde el 01 de Setiembre del 2021. La SUNAT ha comenzado a validar de manera mas rigurosa la información que los contribuyentes envían a través del facturador-de-SUNAT. Por lo cual. Al tener que enviar una venta con un descuento propiciado por una Nota de Crédito, nos comenzó a aparecer el siguiente error. Pero dicho caso aun podría simplificarse mas. Ya que podría resumirse en 'una venta con un descuento global'.
,---- [ ] | La sumatoria del total valor de venta - operaciones gravadas de línea no corresponden al total - | Detalle: xxx.xxx.xxx value=ticket: 1633220154195 error: INFO : 3277 (nodo: | "cac:TaxSubtotal/cbc:TaxableAmount" valor: "45.76") TaxSubtotal/cbc:TaxableAmount `----
Hicimos la consulta respectiva a SUNAT. En SUNAT sus técnicos u/o especialistas nos pidieron la información de nuestros archivos de texto (Las aplicaciones 'como nuestro sistema de inventarios' que envían su data a través del facturador-de-SUNAT, lo hacen pasándole archivos de texto en una carpeta predefinida 'tambien existe una segunda opción', para que puedan ser localizados por el facturador-de-SUNAT y luego nos permita 'Generar Comprobante SUNAT' y 'Enviar Comprobante SUNAT'). Le enviamos toda la información que nos solicitaron los técnicos u/o especialistas de SUNAT.
Nos pidieron que los llamemos nuevamente para que nos expliquen el problema. Nos dijeron la explicación del error. Dicha explicación, estaba en este documento. Y nos dijeron si, que teníamos que usar variables globales para indicar el descuento global. Realmente esto ultimo que nos dijeron nos brindo una pista de la información adicional que deberíamos agregar al archivo de texto, para tener éxito en el envió de 'una venta con descuento global' a la SUNAT.
--8<---------------cut here---------------start------------->8--- https://cpe.sunat.gob.pe/sites/default/files/inline-files/Listado%20de%20observaciones%20que%20migran%20a%20Error_0.xlsxx --8<---------------cut here---------------end--------------->8---
Navegando y buscando como resolver el problema. Volvimos a lo básico, al documento 'guía XML para factura electrónica (UBL 2.0)'. En la pagina 69 nos indica como hacer un descuento global. Dicho ejemplo ya se encuentra obsoleto. Aun así esa información nos ayudo a ir por el camino correcto. Finalmente después de probar con diferentes formas de envió, logramos un envió correcto.
--8<---------------cut here---------------start------------->8--- https://cpe.sunat.gob.pe/sites/default/files/inline-files/gu%C3%ADa%20xml%20para%20factura%20electr%C3%B3nica%20%28ubl%202.0%29_0.pdf --8<---------------cut here---------------end--------------->8---
Aquí se puede apreciar el archivo de texto JSON que fue aceptado por SUNAT.
{ "cabecera": { "tipOperacion": "0101", "fecEmision": "2021-11-10", "horEmision": "00:00:00", "fecVencimiento": "-", "codLocalEmisor": "0000", "tipDocUsuario": "6", "numDocUsuario": "99981372042", "rznSocialUsuario": "MIKITA SAIRITUPAC", "tipMoneda": "PEN", "sumTotTributos": "9.76", "sumTotValVenta": "54.24", "sumPrecioVenta": "64.00", "sumDescTotal": "10.00", "sumOtrosCargos": "0.00", "sumTotalAnticipos": "0.00", "sumImpVenta": "54", "ublVersionId": "2.1", "customizationId": "2.0" }, "datoPago": { "formaPago": "Contado" }, "detalle": [ { "codUnidadMedida": "NIU", "ctdUnidadItem": "1", "codProducto": "27", "codProductoSUNAT": "-", "desItem": "1GOD/BIZ/NO DEFINIDO/must_have_small/pecana medina", "mtoValorUnitario": "54.24", "sumTotTributosItem": "9.76", "codTriIGV": "1000", "mtoIgvItem": "9.76", "mtoBaseIgvItem": "54.24", "nomTributoIgvItem": "IGV", "codTipTributoIgvItem": "VAT", "tipAfeIGV": "10", "porIgvItem": "18.00", "codTriISC": "-", "mtoIscItem": "0", "mtoBaseIscItem": "54.24", "nomTributoIscItem": "ISC", "codTipTributoIscItem": "EXC", "tipSisISC": "1", "porIscItem": "0", "mtoPrecioVentaUnitario": "64", "mtoValorVentaItem": "54.24", "mtoValorReferencialUnitario": "0.00" } ], "leyendas": [ { "codLeyenda": "1000", "desLeyenda": "CINCUENTA Y CUATRO SOLES" } ], "tributos": [ { "ideTributo": "1000", "nomTributo": "IGV", "codTipTributo": "VAT", "codCatTributo": "S", "mtoBaseImponible": "54.24", "mtoTributo": "9.76" } ], "relacionados": [ { "indDocRelacionado": "98", "tipDocRelacionado": "99", "numDocRelacionado": "FT01-00000002", "tipDocEmisor": "6", "numDocEmisor": "99900943234", "mtoDocRelacionado": "10" } ], "variablesGlobales": [ { "tipVariableGlobal": "false", "codTipoVariableGlobal": "03", "porVariableGlobal": "1.00", "monMontoVariableGlobal": "PEN", "mtoVariableGlobal": "10", "monBaseImponibleVariableGlobal": "PEN", "mtoBaseImpVariableGlobal": "10" } ] }
Este es el patch, la diferencia entre lo que enviábamos originalmente y como se debe enviar finalmente.
diff -u /tmp/99900943234-01-FT01-00000003.JSON /tmp/99900943234-01-FT01-00000003.json --- /tmp/99900943234-01-FT01-00000003.JSON 2021-11-09 20:35:34.596005231 +0000 +++ /tmp/99900943234-01-FT01-00000003.json 2021-11-10 03:44:17.532017497 +0000 @@ -1,7 +1,7 @@ { "cabecera": { "tipOperacion": "0101", - "fecEmision": "2021-10-07", + "fecEmision": "2021-11-10", "horEmision": "00:00:00", "fecVencimiento": "-", "codLocalEmisor": "0000", @@ -9,9 +9,9 @@ "numDocUsuario": "99981372042", "rznSocialUsuario": "MIKITA SAIRITUPAC", "tipMoneda": "PEN", - "sumTotTributos": "8.24", - "sumTotValVenta": "45.76", - "sumPrecioVenta": "54", + "sumTotTributos": "9.76", + "sumTotValVenta": "54.24", + "sumPrecioVenta": "64.00", "sumDescTotal": "10.00", "sumOtrosCargos": "0.00", "sumTotalAnticipos": "0.00", @@ -62,8 +62,8 @@ "nomTributo": "IGV", "codTipTributo": "VAT", "codCatTributo": "S", - "mtoBaseImponible": "45.76", - "mtoTributo": "8.24" + "mtoBaseImponible": "54.24", + "mtoTributo": "9.76" } ], "relacionados": [ @@ -75,5 +75,16 @@ "numDocEmisor": "99900943234", "mtoDocRelacionado": "10" } + ], + "variablesGlobales": [ + { + "tipVariableGlobal": "false", + "codTipoVariableGlobal": "03", + "porVariableGlobal": "1.00", + "monMontoVariableGlobal": "PEN", + "mtoVariableGlobal": "10", + "monBaseImponibleVariableGlobal": "PEN", + "mtoBaseImpVariableGlobal": "10" + } ] } Diff finished. Wed Nov 10 03:45:12 2021
Escribimos este articulo para nosotros mismos. Para que quede como referencia para el futuro.
Nota: Usualmente se escriben los artículos en este blog en Ingles y Castellano. Pero como este articulo solo es relevante en Castellano no se traducirá al Ingles.
Last change: 11.11.2021 18:18 |