@@ -94,15 +94,20 @@ def is_module_installed(self, module):
9494 )
9595 return True if module_installed else False
9696
97- @api .onchange ("date_order" )
97+ @api .onchange ("date_order" , "commercial_partner_id" )
9898 def _l10n_ar_recompute_fiscal_position_taxes (self ):
99- """Recalculamos las percepciones si cambiamos la fecha de la orden de venta. Para ello nos basamos en los
100- impuestos de la posicion fiscal, buscamos si hay impuestos existentes para los tax groups involucrados y los
101- reemplazamos por los nuevos impuestos.
99+ """Recalculamos las percepciones si cambiamos la fecha de la orden de venta o el commercial partner.
100+ Para ello nos basamos en los impuestos de la posicion fiscal, buscamos si hay impuestos existentes para los tax groups involucrados y los
101+ reemplazamos por los nuevos impuestos.
102+ NO lo hacemos para el cambio de fiscal_position_id porque el onchange de fiscal_position_id implementado en sale_ux ya recomputa todos los taxes
103+ NOTA: en facturas no tenemos approach exactamente igual ya que en facturas es opcional el auto update a través del módulo
104+ account_invoice_fiscal_position_update
102105 """
103106 for rec in self .filtered (
104- lambda x : x .fiscal_position_id .l10n_ar_tax_ids .filtered (lambda x : x .tax_type == "perception" )
105- and x .state not in ["cancel" , "sale" ]
107+ lambda x : (
108+ x .fiscal_position_id .l10n_ar_tax_ids .filtered (lambda x : x .tax_type == "perception" )
109+ and x .state not in ["cancel" , "sale" ]
110+ )
106111 ):
107112 fp_tax_groups = rec .fiscal_position_id .l10n_ar_tax_ids .filtered (
108113 lambda x : x .tax_type == "perception"
@@ -112,9 +117,7 @@ def _l10n_ar_recompute_fiscal_position_taxes(self):
112117 for line in rec .order_line :
113118 to_unlink = line .tax_ids .filtered (lambda x : x .tax_group_id in fp_tax_groups )
114119 if to_unlink ._origin != new_taxes :
115- line .tax_ids = [(3 , tax .id ) for tax in to_unlink ] + [
116- (4 , tax .id ) for tax in new_taxes if tax not in line .tax_ids
117- ]
120+ line .tax_id = (line .tax_id - to_unlink ) | new_taxes
118121
119122 def copy (self , default = None ):
120123 """Re computamos las percepciones al duplicar una venta porque puede ser que la orden venga de otro periodo
0 commit comments