django-afip icon indicating copy to clipboard operation
django-afip copied to clipboard

Agregar validaciones de valores dentro de la validacion de comprobantes

Open juanpsenn opened this issue 4 years ago • 4 comments

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?

juanpsenn avatar Sep 06 '21 21:09 juanpsenn

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())

juanpsenn avatar Sep 06 '21 21:09 juanpsenn

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

WhyNotHugo avatar Sep 07 '21 10:09 WhyNotHugo

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.

Alvezgr avatar May 25 '22 12:05 Alvezgr

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.

juanpsenn avatar May 25 '22 20:05 juanpsenn