On 08/08/14 16:25, Sergi Almacellas Abellana wrote:
El 08/08/14 a les 15:41, Jesús Martín Jiménez ha escrit:
Hola a todos,

He hecho este merge propose donde sobre escribo el método on_change_lines de sale.sale para mejorar el rendimiento del módulo. La mejora es considerable puesto que tarda del orden de 1/100 respecto al método del módulo oficial (sale). El problema es que el diseño no es correcto porqué en ningún momento se vuelve a llamar al método padre y eso puede llegar a romper algún otro módulo que herede el mismo método. ¿Alguien tiene una idea mejor de como solventar el problema?

Justo esta semana estaba Nico tocando ese código. Puedes probar si esto mejora con este review:

http://codereview.tryton.org/9561002/


No, no creo que este review de Nicoe mejore el rendimiento. Este review sirve para unificar la forma de calcular los impuestos en facturas, ventas, compras.

El merge proposal de Jesús

https://bitbucket.org/aneolf/trytond-sale_pos/commits/48a2f8af2f8118331e9138f9f7452bb3b3858413

redefine el cálculo de la base imponible, impuesto y total de la venta a partir de los valores ya calculados en cada línea de venta (importe sin y con impuestos) que ya se calculan en el sale_pos.

Esto mejora mucho el rendimiento en ventas con muchas líneas, ya que sinó, por cada modificación de una línea (cambiar el producto, cantidad, precio, descuento) implica el recálculo de la base imponible, impuesto y total de la venta, y el módulo sale calcula los impuestos de cada línea, los agrupa por impuesto, los redondea, los vuelve a sumar y redondea el impuesto y total obtenidos.

Esta propuesta tiene dos inconvenientes como apuntaba Jesús:

1) Sustituye el método on_change_lines de sale.sale completamente sin hacer super para hacer el cálculo mucho más rápido. 2) El impuesto y el importe total de la venta calculado con el nuevo on_change_line puede tener algunos céntimos de error respecto al calculado originalmente, ya que no es lo mismo sumar los impuestos redondeados línea a línea, que sumar impuestos de todas las líneas y redondear por impuesto. Pero es un problema menor, cuando se guarda la venta ya se muestra el impuesto y el importe total de la venta correcto, pues entonces ya se usan los campos funcionales.

--
Jordi Esteve
Consultor Zikzakmedia SL
[email protected]
Mòbil 679 170 693

Zikzakmedia SL
St. Jaume, 9, baixos, 2a
08720 Vilafranca del Penedès
Tel 93 890 2108

Responder a