django-afip
django-afip copied to clipboard
Agregar validaciones de valores dentro de la validacion de comprobantes
Hace poco tuvimos un inconveniente con la generacion de Notas de credito donde los valores de los Vat no coincidian con los totales de la Receipt, al parecer AFIP no reboto esas notas de credito y genero inconsistencias en la base de datos de ellos.
Dejo un ejemplo de lo que esta registrado en AFIP, como podras observar la BaseImp de la AlicIva es igual al total_amount de la Receipt.
{
'Concepto': 1,
'DocTipo': 80,
'DocNro': XXXXXXXXX,
'CbteDesde': 19,
'CbteHasta': 19,
'CbteFch': '20210802',
'ImpTotal': 2039.08,
'ImpTotConc': 0.0,
'ImpNeto': 1685.19,
'ImpOpEx': 0.0,
'ImpTrib': 0.0,
'ImpIVA': 353.89,
'FchServDesde': None,
'FchServHasta': None,
'FchVtoPago': None,
'MonId': 'PES',
'MonCotiz': 1.0,
'CbtesAsoc': {
'CbteAsoc': [
{
'Tipo': 6,
'PtoVta': 4,
'Nro': 321,
'Cuit': None,
'CbteFch': None
}
]
},
'Tributos': None,
'Iva': {
'AlicIva': [
{
'Id': 5,
'BaseImp': 2039.08,
'Importe': 353.89
}
]
},
'Opcionales': None,
'Compradores': None,
'PeriodoAsoc': None,
'Resultado': 'A',
'CodAutorizacion': 'xxxxxxxxxxxx',
'EmisionTipo': 'CAE',
'FchVto': '20210812',
'FchProceso': '20210802091051',
'Observaciones': None,
'PtoVta': 4,
'CbteTipo': 8
}
No se si es viable implementar alguna especie de validacion ya que es muy variable y depende del estado tributario del emisor y receptor. Por lo pronto estoy necesitando extraer (cito de mail de afip) lo siguiente.
los XMLs de request/response (incluyendo todo el envoltorio SOAP) de una transaccion que exhiba el comportamiento que Ud. nos reporta para analizar en detalle que estan enviando a la AFIP, y que es lo que la AFIP les devuelve
Hay alguna forma de llegar al xml que recibe Zeep? De momento logre obtener el xml de la request con Client.create_message(), pero no consigo el de la response. Alguna idea?
Well, I've just figured... El Client de Zeep tiene un settings que se puede usar de la siguiente forma a modo de debugging para extraer los xml de las responses.
from xml.dom.minidom import parseString
client = get_client('wsfe', sandbox)
with client.settings(raw_response=True):
status = client.service.FEDummy()
print(parseString(status.content).toprettyxml())
Por lo que veo, si corrés en con el logger en logging.DEBUG deberías ver el mensaje entero:
https://github.com/mvantellingen/python-zeep/blob/master/src/zeep/transports.py#L59-L71
I'm seeing the same behavior that @juanpsenn describe here, only with Nota de credito though. To do this validation, @juanpsenn says that "es muy variable y depende del estado tributario del emisor y receptor". Any idea where I can find this documentation? Maybe I'm very wrong but in my side I'm checking that:
imp_total = imp_tot_conc + imp_neto + imp_op_ex + imp_trib + imp_iva
and this has to be true for anyone regardless of the tax status.
Hmm I don't know if there is any documentation about this. AFIP does a basic validation, in our case we didn't get any solution from AFIP devs.