Al cancelar CFDI se elimina la relacion con el ir.attachment.facturae.mx
Closed
Al cancelar CFDI se elimina la relacion con el ir.attachment.facturae.mx
Resumen
¿Cual es la razon de la siguiente funcion?
Entiendo que al cancelar una factura o documento CFDI, esta desligando el ir.attachment.facturae.mx, pero queria saber, la razon concreta en si de hacer eso...
Lo comento, porque es totalmente factible, que una factura o cfdi, siga teniendo la relacion con el XML, aunque estuviera cancelado. Esto, pensando en el siguiente escenario...
Yo cancelo una Factura del año 2018 o de un periodo anterior al actual, esto con la intención generar una nueva que sustituya al CFDI cancelado con antelacion.
Sin embargo, si no tengo relacionado el CFDI como tal al account.invoice, me genera un error a tratar de generar el XML, ya que en el nodo de CfdiRelacionado del XMl no me puede incluir el UUID del XML relacionado.
De momento, lo que hice para poder generar mi factura, es que le volví a establecer de manera manual el cfdi_id del ir.attachment.factura.mx usando una Query Update directamente en Postgresql, para que el account.invoice pueda obtener el UUID de dicho documento.
prod_tequilera=# update account_invoice set cfdi_id=2772 where id in(2344);
UPDATE 1
Pasos para reproducirlo
- Cancelar una factura
- Generar una nueva factura con la intención de sustituir a la anterior.
- a. Seleccioanr el tipo de relacion: 04 Sustitucion de los cfdi previos
- b. Seleccionando como documento relacionado la factura cancelada.
- Cuando se intenta validar y timbrar, marca error de XML malformado
¿Cuál es el comportamiento equivocado que se está presentando?
Actualmente se obtiene el XML siguiente, donde puede indentificarse facilmente el error en el nodo CfdiRelacionado, ya que en lugar de llevar escrito el UUID, lo que lleva es un valor False.
<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd" Version="3.3" Serie="FE" Folio="3863" Fecha="2019-04-05T13:04:36" Sello="EeVkoeG2PXG67JXPoPaEpz40e2HkQdXzFcXXjF9ezvp8YvlG58jCjqIw5KYgRJ+XZhYNkC5Wp7xxPfXlEKJnnRRhNGAQPomSSLVCBp8PNoKf8RQ5q5lcqyruP/YvozZILpOGbRBJZVqsnOwDi0DeYtwuqROyKUuNJGN+sFk9HDgJdOgAhAhE14CXeyjsMiZijxldEYTxRI1RUUSpK90tK7RaoIDY7yLjrQmT8Nms+N01YoWCSQFBI0s2s6WEUFrc2l+bWEwGprsX7RdowolYCuRlmZ9H3AG6d6asV9RjtIdPGVpowOmnzG2VGjv3hGex7WFtGYRDDYAvBamJxrQ4zw==" NoCertificado="00001000000404123622" Certificado="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" FormaPago="99" CondicionesDePago="30 Net Days" SubTotal="10986.50" Descuento="3.00" Moneda="MXN" Total="16563.12" TipoDeComprobante="I" MetodoPago="PPD" LugarExpedicion="37238">
<cfdi:CfdiRelacionados TipoRelacion="04">
<cfdi:CfdiRelacionado UUID="False"/>
</cfdi:CfdiRelacionados>
<cfdi:Emisor Rfc="CLM960130596" Nombre="CORPORACIÓN LICORERA 1910 S.A. DE C.V." RegimenFiscal="601"/>
<cfdi:Receptor Nombre="Conseciones del Sureste S.A. de C.V." Rfc="CSU8802169B5" UsoCFDI="G01"/>
<cfdi:Conceptos>
<cfdi:Concepto ClaveProdServ="50202200" NoIdentificacion="33.04CT750NAC" Cantidad="10.000000" ClaveUnidad="XBX" Descripcion="[33.04CT750NAC] 1921 Crema de Tequila 750 ml 15% Alc. Vol." ValorUnitario="1098.350000" Importe="10983.50" Descuento="0.00">
<cfdi:Impuestos>
<cfdi:Traslados>
<cfdi:Traslado Base="10983.50" Impuesto="003" TipoFactor="Tasa" TasaOCuota="0.300000" Importe="3295.05"/>
<cfdi:Traslado Base="14278.55" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="2284.57"/>
</cfdi:Traslados>
</cfdi:Impuestos>
</cfdi:Concepto>
<cfdi:Concepto ClaveProdServ="50202200" NoIdentificacion="33.04CT750DEG" Cantidad="3.000000" ClaveUnidad="H87" Descripcion="[33.04CT750DEG] 1921 Crema de Tequila 750 ml 15% Alc. Vol." ValorUnitario="1.000000" Importe="3.00" Descuento="3.00">
</cfdi:Concepto>
</cfdi:Conceptos>
<cfdi:Impuestos TotalImpuestosTrasladados="5579.62">
<cfdi:Traslados>
<cfdi:Traslado Impuesto="003" TipoFactor="Tasa" TasaOCuota="0.300000" Importe="3295.05"/>
<cfdi:Traslado Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="2284.57"/>
</cfdi:Traslados>
</cfdi:Impuestos>
<cfdi:Complemento/>
</cfdi:Comprobante>
En el nodo CfdiRelacionado deberia de llevar algo por el estilo siguiente:
<cfdi:CfdiRelacionados TipoRelacion="04">
<cfdi:CfdiRelacionado UUID="4EA00BE8-B686-4B1A-A9CB-8B1E76FB9DF0"/>
</cfdi:CfdiRelacionados>
Entonces, con todo esto, me pregunto ¿Es correcta la razón de ser del método siguiente?
@api.model
def unlink_cfdi(self):
""" Delete de relation """
self.cfdi_id = False
Reciban un cordial saludo.
cc @OpenPymeMx
mentioned in merge request !268 (merged)
Saludos @chavamm.83 la función se creo como parte de la homologación del proceso de timbrado/cancelación ques e hizo para poder reutilizar parte del código.
En el caso de los comprobantes de pago, el proceso de cancelación/substitución requiere que elimminemos la relación del voucher con el CFDI correspondiente porque se tiene que generar un nuevo CFDI obligatoriamente.
Sin embargo, como bien dices en el caso de las facturas no debería de seguirse el mismo proceso, por eso estoy proponiendo las siguientes correcciones:
- !268 (merged): En este repositorio para eliminar la función y con eso la tentanción de utilizarla en algún otro lugar
- l10n_mx_facturae!88 (merged): En el repositorio de l10n_mx_facturae para corregir la lógica y que no se pierda la relación de la factura con su CFDI al cancelarla
Saludos @santos.rivera 1.- La razon, en mi opinion, es dejar la relacion porque, es probable que que una factura quede cancelada, y por algun razon en un futuro, puedas relacionarla con una nueva factura para sustituirla por ejemplo, pero puede incluso que no sea en el mismo momento, como lo hacen con el Voucher.
2.- En parte de la respuesta (1) comente acerca de esto mismo, puede que sea sustitucion o simple cancelacion, pero incluso puede ser que la cancelaron, y no debia ser asi, entonces, debes poder en un futuro relacionarla para poder ser sustituida.
3.- Puede incluso agregar el boton similar al de Complemento de Pago (Sustituir) y seguir el mismo proceso. Pero esto lo vería mas como un plus, ya que en el Voucher no es un opcional, asi tiene que ser, ya que un Complmento de Pago para poder ser cancelado, estrictamente debe ser asi el proceso:
- Cancelar Voucher Original,
- Generar un nuevo cfdi por monto de Un Peso que agregue el nodo de documento relacionado con la referencia del Voucher Original con el tipo de relacion (Sustitucion)
Y en el caso de las Facturas, solo se cancelan sin necesidad de emitir un cfdi con Documento relacionado. Pero, si es posible poder aplicar una sustitucion.
Espero haberme explicado y no haber confundido mas =)
Saludos!
mentioned in commit 1c0ee69e
closed via commit 1c0ee69e
closed via merge request !268 (merged)