Migración a de 3.0 a 3.4 - Problema al procesar pagos

63 views
Skip to first unread message

Víctor Ramos

unread,
May 15, 2015, 4:23:43 PM5/15/15
to tryt...@googlegroups.com
Hola,


Estamos haciendo pruebas con la migración y hemos encontrado que al procesar los pagos nos salta el siguiente error:

Traceback (most recent call last):
  File "/trytond/protocols/jsonrpc.py", line 150, in _marshaled_dispatch
    response['result'] = dispatch_method(method, params)
  File "/trytond/protocols/jsonrpc.py", line 179, in _dispatch
    res = dispatch(*args)
  File "/trytond/protocols/dispatcher.py", line 161, in dispatch
    result = rpc.result(meth(*c_args, **c_kwargs))
  File "/trytond/wizard/wizard.py", line 249, in execute
    return wizard._execute(state_name)
  File "/trytond/wizard/wizard.py", line 275, in _execute
    do_result = do(action)
  File "/trytond/modules/account_payment_es/payment.py", line 476, in do_process
    return super(ProcessPayment, self).do_process(action)
  File "/trytond/modules/account_payment/payment.py", line 339, in do_process
    Payment.process(list(grouped_payments), group)
  File "/trytond/model/workflow.py", line 33, in wrapper
    result = func(cls, filtered, *args, **kwargs)
  File "/trytond/modules/account_payment/payment.py", line 272, in process
    process_method(group)
  File "/trytond/modules/account_payment_sepa_es/payment.py", line 173, in process_sepa_core
    self.process_sepa()
  File "/trytond/modules/account_payment_sepa_es/payment.py", line 210, in process_sepa
    super(Group, self).process_sepa()
  File "/trytond/modules/account_payment_sepa/payment.py", line 159, in process_sepa
    datetime=datetime).filter(remove_comment).render()
  File "/genshi/core.py", line 184, in render
    return encode(generator, method=method, encoding=encoding, out=out)
  File "/genshi/output.py", line 57, in encode
    return _encode(''.join(list(iterator)))
  File "/genshi/output.py", line 241, in __call__
    for kind, data, pos in stream:
  File "/genshi/output.py", line 669, in __call__
    for kind, data, pos in stream:
  File "/genshi/output.py", line 774, in __call__
    for kind, data, pos in chain(stream, [(None, None, None)]):
  File "/genshi/output.py", line 594, in __call__
    for ev in stream:
  File "/genshi/core.py", line 289, in _ensure
    for event in stream:
  File "/genshi/core.py", line 289, in _ensure
    for event in stream:
  File "/trytond/modules/account_payment_sepa/payment.py", line 103, in remove_comment
    for kind, data, pos in stream:
  File "/genshi/template/base.py", line 618, in _include
    for event in stream:
  File "/genshi/template/markup.py", line 326, in _match
    for event in stream:
  File "/genshi/template/base.py", line 578, in _flatten
    result = _eval_expr(data, ctxt, vars)
  File "/genshi/template/base.py", line 289, in _eval_expr
    retval = expr.evaluate(ctxt)
  File "/genshi/template/eval.py", line 177, in evaluate
    return eval(self.code, _globals, {'__data__': data})
  File "/trytond/modules/account_payment_sepa_es/template/pain.008.001.02.xml", line 44, in <Expression u'group.sepa_group_payment_id(key)[:35]'>
    <PmtInfId>${group.sepa_group_payment_id(key)[:35]}</PmtInfId>
  File "/trytond/modules/account_payment_sepa/payment.py", line 178, in sepa_group_payment_id
    payment_id += '-' + key['sequence_type']
TypeError: cannot concatenate 'str' and 'NoneType' objects


La versión del modulo account_payment_sepa es la 3.4.1
Por otro lado vemos que en la tabla account_payment los campos sepa_mandate_sequence_type, sepa_return_reason_code, sepa_return_reason_information están vacios.

No sabemos a que se debe el hecho de que estén vacíos y tampoco tenemos ningún ejemplo de que deberían contener.

Cualquier aporte seria de agradecer.

Gracias de antemano.







Sistemes i Xarxes Inf. Calidae, S.L.
www.calidae.com
tel +34 938654433 fax +34 938651973
C/ Font i Boet, 10
08140 - Caldes de Montbui

Aquest correu és confidencial, llegiu-ne l' advertiment legal
Este correo es confidencial, lea la advertencia legal
This is a confidential email, please read the legal disclaimer

Víctor Ramos

unread,
May 18, 2015, 9:52:33 AM5/18/15
to tryt...@googlegroups.com
Hola otra vez,

He probado a procesar un pago sin "mandate" (pues no es obligatorio) y el resultado es:

Traceback (most recent call last):
  File "/trytond/protocols/jsonrpc.py", line 150, in _marshaled_dispatch
    response['result'] = dispatch_method(method, params)
  File "/trytond/protocols/jsonrpc.py", line 179, in _dispatch
    res = dispatch(*args)
  File "/trytond/protocols/dispatcher.py", line 161, in dispatch
    result = rpc.result(meth(*c_args, **c_kwargs))
  File "/trytond/wizard/wizard.py", line 249, in execute
    return wizard._execute(state_name)
  File "/trytond/wizard/wizard.py", line 275, in _execute
    do_result = do(action)
  File "/trytond/modules/account_payment_es/payment.py", line 476, in do_process
    return super(ProcessPayment, self).do_process(action)
  File "/trytond/modules/account_payment/payment.py", line 339, in do_process
    Payment.process(list(grouped_payments), group)
  File "/trytond/model/workflow.py", line 33, in wrapper
    result = func(cls, filtered, *args, **kwargs)
  File "/trytond/modules/account_payment/payment.py", line 272, in process
    process_method(group)
  File "/trytond/modules/account_payment_sepa/template/pain.001.001.03.xml", line 76, in <Expression u'payment.sepa_end_to_end_id'>
    <EndToEndId>${payment.sepa_end_to_end_id}</EndToEndId>
  File "/genshi/template/eval.py", line 317, in lookup_attr
    val = getattr(obj, key)
  File "/trytond/model/modelstorage.py", line 1180, in __getattr__
    raise AttributeError('"%s" has no attribute "%s"' % (self, name))
AttributeError: "account.payment,2171" has no attribute "sepa_end_to_end_id"

Ahora mismo no sabemos como encontrar una solución al tema.
Alomejor podriais decirnos por donde empezar a buscar,etc

Gracias de antemano.

Un saludo.

Sergi Almacellas Abellana

unread,
May 18, 2015, 11:35:32 AM5/18/15
to tryt...@googlegroups.com
El 18/05/15 a les 15:52, Víctor Ramos ha escrit:
> AttributeError: "account.payment,2171" has no attribute "sepa_end_to_end_id"
>
> Ahora mismo no sabemos como encontrar una solución al tema.
> Alomejor podriais decirnos por donde empezar a buscar,etc
El error es muy extraño. El mòdul account_payment_sepa añade este campo
funcional que devuelve el id del registro (siempre estarà definido).

¿Tienes algún módulo que sobreescribe este campo?

¿Estas seguro que tienes todos lo mòdulos en la version 3.4? ¿De dónde
te has bajado esos mòdulos? Igual estas utilizando una versión antigua
del review que teniamos nosotros en bitbucket.

Un saludo,

--
Sergi Almacellas Abellana
www.koolpi.com
Twitter: @pokoli_srk

Víctor Ramos

unread,
May 18, 2015, 11:52:47 AM5/18/15
to tryt...@googlegroups.com

Después de un rato de investigación creo que el account_payment_sepa_es tiene algo que ver pues intenta coger algunos atributos que no existen:
En la linea 166 de payment.py -> sequence_type = payment.sepa_mandate.sequence_type

Que yo sepa account_payment_sea y account_payment_sepa_es son los dos únicos módulos que tenemos que podrían tener algo que ver en esto.

El modulo  account_payment_sepa lo descargué de (versión 3.4.1):

El modulo account_payment_sepa_es de la rama default (versión 3.4.0):

Víctor Ramos

unread,
May 18, 2015, 12:18:12 PM5/18/15
to tryt...@googlegroups.com
Mañana en cuanto pueda verificaré que todos los módulos estén en su versión mas reciente para 3.4 y volveré a realizar la migración desde 0.
En cuanto lo tenga os cuento si hay novedades.

Raimon Esteve

unread,
May 18, 2015, 12:50:48 PM5/18/15
to tryt...@googlegroups.com
pon un simple print i verás que tienes porque no puede unir un string con None 


La versión del modulo account_payment_sepa es la 3.4.1
Por otro lado vemos que en la tabla account_payment los campos sepa_mandate_sequence_type, sepa_return_reason_code, sepa_return_reason_information están vacios.

No sabemos a que se debe el hecho de que estén vacíos y tampoco tenemos ningún ejemplo de que deberían contener.

Cualquier aporte seria de agradecer.

Gracias de antemano.







Sistemes i Xarxes Inf. Calidae, S.L.
www.calidae.com
tel +34 938654433 fax +34 938651973
C/ Font i Boet, 10
08140 - Caldes de Montbui

Aquest correu és confidencial, llegiu-ne l' advertiment legal
Este correo es confidencial, lea la advertencia legal
This is a confidential email, please read the legal disclaimer



--
Si us plau, NO adjunti arxius a les seves respostes. Li preguem que integri el text al cos del missatge. Pot respondre usant NetEtiquete que li ajudarà a seguir la conversa. http://es.wikipedia.org/wiki/Netiquette

Por favor, NO adjunte archivos a sus respuestas. Le rogamos que integre el texto en el cuerpo del mensaje. Puede responder usando NetEtiquete que le ayudará a seguir la conversación.http://es.wikipedia.org/wiki/Netiquette

Please, DO NOT send attachment files with your answers, just copy and paste only the text you need to send into the body of your mails. Repply using NetEtiquete. http://en.wikipedia.org/wiki/Netiquette

Víctor Ramos

unread,
May 19, 2015, 11:04:54 AM5/19/15
to tryt...@googlegroups.com
Hola.

Vi que el account_payment tenia la versión 3.3.0 y pené que ese era el problema pero parece ser que no.

Tras descargar la versión 3.4.1 de http://downloads.tryton.org/3.4/ y migrar otra vez de 3.0 a 3.4 parece ser que no ha cambiado nada.

He podido comprobar que el campo aparece null directamente al actualizar.
Comprobado que todos lo demás módulos account_* están en la versión 3.4.0 como mínimo.

Por alguna razón no se rellena el campo account_payment.sepa_mandate_sequence_type  ni se añade el campo sequence_type en  account_payment_sepa_mandate que es hasta donde he podido investigar.

Víctor Ramos

unread,
May 19, 2015, 12:18:37 PM5/19/15
to tryt...@googlegroups.com
De momento he podido hacer un parche:

Rellenar todos los campos vacios de sepa_mandate_sequence_type con 'recurrent' pues todos mis mandate son de type recurrent.

Y cambiar en account_payment_sepa_es/payment.py tomando de ejemplo el de account_payment_sepa.

Lineas 166 y 168

payment.sepa_mandate.sequence_type

por

payment.sepa_mandate_sequence_type

Sergi Almacellas Abellana

unread,
May 19, 2015, 2:48:29 PM5/19/15
to tryt...@googlegroups.com
El 19/05/15 a les 18:18, Víctor Ramos ha escrit:
> De momento he podido hacer un parche:
>
> Rellenar todos los campos vacios de sepa_mandate_sequence_type con
> 'recurrent' pues todos mis mandate son de type recurrent.
>
> Y cambiar en account_payment_sepa_es/payment.py tomando de ejemplo el de
> account_payment_sepa.
>
> Lineas 166 y 168
>
> payment.sepa_mandate.sequence_type
>
> por
>
> payment.sepa_mandate_sequence_type

Asegurate que tienes valores en el campo type de la tabla de mandates,
porquè es de dónde se lee el sequence_type del mandate:

http://hg.tryton.org/modules/account_payment_sepa/file/82a7b7e3df17/payment.py#l485

Víctor Ramos

unread,
May 20, 2015, 10:27:09 AM5/20/15
to tryt...@googlegroups.com
Buenas otra vez, de momento funciona perfectamente lo citado anteriormente.

He encontrado otro problema al pagar efectos donde da error en account_payment_sepa_es/payment.py linea 276
Para solucionarlo he hecho el siguiente cambio y de momento no ha vuelto a fallar durante las pruebas.

                payment.sepa_mandate_sequence_type = mandate.sequence_type
por
                payment.sepa_mandate_sequence_type = mandate.type

Víctor Ramos

unread,
May 21, 2015, 10:20:50 AM5/21/15
to tryt...@googlegroups.com

Si pudieseis corroborar que los cambios que he realizado son correctos miraría de contribuir subiéndolos al repositorio que me indiquéis.
En caso contrario quizás seria bueno buscar la raíz de estos problemas.

Un saludo,

Sergi Almacellas Abellana

unread,
May 21, 2015, 10:39:10 AM5/21/15
to tryt...@googlegroups.com
El 21/05/15 a les 16:20, Víctor Ramos ha escrit:
>
> Si pudieseis corroborar que los cambios que he realizado son correctos
> miraría de contribuir subiéndolos al repositorio que me indiquéis.
> En caso contrario quizás seria bueno buscar la raíz de estos problemas.
Te conteste un correo [1] indicando de dónde se lee el campo que estas
cambiando y que comprovases si realmente tienes ese campo rellenado

Entiendo que rellenando ese campo en la base de datos se soluciona el
problema y que no hace falta ninguna modificación de código.

Un saludo,

[1] https://groups.google.com/d/msg/tryton-es/QqmIMqzPvgM/CayEeun2rV0J
Reply all
Reply to author
Forward
0 new messages