format_currency en unit_price (precio unitario) cuando es un comprobante que no desglosa la alicuota de IVA
Closed this issue · 2 comments
Sucede que cuando el tipo de comprobante es A, el precio unitario es correcto que la cantidad de decimales a mostrar sea la correcta, ya que de esa forma, la cuenta que se realiza (cantidad * precio unitario) debe coincidir con el monto total.
Ahora bien, cuando el tipo de comprobante es distinto (ejemplo, B, C, E), el monto total y precio unitario contienen el impuesto asociado (en este caso la/s alícuotas de IVA). Como en la currency de ARS utilizamos dos dígitos, la columna de monto se utiliza format_number con la currency correspondiente y se muestran hasta dos decimales. En la columna del precio unitario, se utilza lo que se haya configurado para price_digits y por defecto, en Tryton se utilizan 4 decimales. Cuando se compone el valor del precio unitario puede darse la situación que el valor a mostrar sea diferente al del monto total de la línea.
La forma que veo de corregirlo es pasarle al método del reporte get_line_amount la currency a utilizar y luego de componer el valor del precio unitario pasarlo por currency.round().
Como extra, en vez de componer el valor del precio unitario de forma manual, lo correcto sería llamar al método Tax.compute del modelo account.tax
Se siguen mostrando la cantidad de decimales que tiene configurado el precio unitario. Por defecto usa 4, si se quiere cambiar, se puede modificar desde la configuration de trytond. Ahora bien, este commit lo que hace es adecuar correctamente la forma de calcular los montos usando Tax.compute.