tryton-ar / account_invoice_ar

Tryton module with AFIP WS integration
GNU General Public License v3.0
14 stars 12 forks source link

Al desconciliar una linea de asiento de pago se rompe y tira un error #125

Closed lukio closed 5 years ago

lukio commented 5 years ago

Estoy probando en v4.2:

Por lo visto, al querer pasar una factura de estado pagada a contabilizada (cuando se des concilian los apuntes) da un error.

  1. Contabilizar Factura
  2. Pagar Factura usando payment_collect. (El módulo de payment_collect hace los pagos de la misma forma que el core de Tryton ( o sea, no usamos voucher_ar)).
  3. Abro asiento de pago, quiero desconciliar linea de asiento y me tira el error que copio abajo:
    Traceback (most recent call last):
    File "/trytond/wsgi.py", line 47, in dispatch_request
    return endpoint(request, **request.view_args)
    File "/trytond/protocols/dispatcher.py", line 41, in rpc
    request, database_name, *request.rpc_params)
    File "/trytond/wsgi.py", line 39, in auth_required
    return wrapped(*args, **kwargs)
    File "/trytond/protocols/wrappers.py", line 106, in wrapper
    return func(request, pool, *args, **kwargs)
    File "/trytond/protocols/dispatcher.py", line 163, in _dispatch
    result = rpc.result(meth(*c_args, **c_kwargs))
    File "/trytond/wizard/wizard.py", line 287, in execute
    return wizard._execute(state_name)
    File "/trytond/wizard/wizard.py", line 318, in _execute
    result = self._execute(transition())
    File "/trytond/modules/account/move.py", line 1781, in transition_unreconcile
    Reconciliation.delete(reconciliations)
    File "/trytond/modules/account_invoice/account.py", line 286, in delete
    Invoice.process(invoices)
    File "/trytond/modules/account_invoice/invoice.py", line 1342, in process
    cls.post(posted)
    File "/trytond/model/modelview.py", line 640, in wrapper
    return func(cls, records, *args, **kwargs)
    File "/trytond/model/workflow.py", line 34, in wrapper
    result = func(cls, filtered, *args, **kwargs)
    File "/trytond/modules/account_invoice_ar/invoice.py", line 827, in post
    cls.post_wsfe(invoices_by_type)
    File "/trytond/modules/account_invoice_ar/invoice.py", line 942, in post_wsfe
    (ws, error) = invoice.create_pyafipws_invoice(ws, batch=True)
    TypeError: 'NoneType' object is not iterable
lukio commented 5 years ago

Anteriormente, si la factura en estado contabilizada ya tenía un número asignado, se salteaba, y no pasaba por el proceso de contabilización en AFIP. Eso cambio al agregar en el sistema el proceso de factura en lote #88.

Para verificar si la factura en estado contabilizada ya esta en AFIP, se evalua el campo del CAE (pyafipws_cae). Por lo que se ve, evalua bien ya que agrega al log:

32717 140528631179008 [2019-02-08 14:10:12,601] INFO
trytond.modules.account_invoice_ar.invoice Se trata de obtener CAE de la
factura que ya tiene. Factura: 00002-00000087, CAE: 69064727181522

Pero el return es incorrecto, ya que el método create_pyafipws_invoice debe retornar una tupla de la forma return (ws, True/False) y actualmente esta retornando None.

lukio commented 5 years ago

Ahora, al saltar este problema, cuando realizo la desconciliación, me genera un raise_user_error avisando que hubo un error al contabilizar esa factura. Lo cual, sigue estando mal, ya que directamente no tendría que dar ningún aviso sobre esta factura.

lukio commented 5 years ago

Antes de invoicar a post_wsfe deberiamos de obviar todas las facturas que actualmente tienen un cae asignado.

https://github.com/tryton-ar/account_invoice_ar/blob/master/invoice.py#L817