Error calculo impuesto en linea de venta

Se tiene creado un módulo con el cual se importa algunas ventas de una base de datos externa. Hace poco noté que hay problemas con el calculo del impuesto en algunas de las ventas importadas, resulta que hay productos a los que se le aplica diferentes impuestos y uno de estos le aplico un impuesto traído por una regla de impuesto que tiene el tercero, y es con este impuesto que tengo el problema, ya que me hace el calculo de forma errónea ya que toma una base que no corresponde a la cantidad * precio del producto de la línea

¿Tienen idea a qué se deba?

A continuación dejo parte del código dónde añado la línea en la venta

            for lin in documentos_linea:
                linea = SaleLine()
                id_producto = str(lin.IdProducto)
                producto = cls.buscar_producto(id_producto)
                linea.sale = sale
                linea.product = producto
                linea.type = 'line'
                linea.unit = producto.template.default_uom
                cant = float(lin.Cantidad_Facturada)
                cantidad_facturada = abs(round(cant, 3))
                if linea.unit.id == 1:
                    cantidad_facturada = int(cantidad_facturada)
                if sw == 2:
                    linea.quantity = cantidad_facturada * -1
                    dcto_base = str(venta.Tipo_Docto_Base)+'-'+str(venta.Numero_Docto_Base)
                    sale.comment = f"DEVOLUCIÓN DE LA FACTURA {dcto_base}"
                else:
                    linea.quantity = cantidad_facturada
                if company_operation:
                    linea.operation_center = company_operation
                linea.on_change_product()
                impuesto_consumo = lin.Impuesto_Consumo
                impuestos_linea = []
                for impuestol in linea.taxes:
                    clase_impuesto = impuestol.classification_tax
                    if clase_impuesto == '05' and retencion_iva:
                        impuestos_linea.append(impuestol)
                    elif clase_impuesto == '06' and retencion_rete:
                        impuestos_linea.append(impuestol)
                    elif clase_impuesto == '07' and retencion_ica:
                        impuestos_linea.append(impuestol)
                    elif impuestol.consumo and impuesto_consumo > 0:
                        #Se busca el impuesto al consumo con el mismo valor para aplicarlo
                        tax = Tax.search([('consumo', '=', True), ('type', '=', 'fixed'), ('amount', '=', impuesto_consumo)])
                        if tax:
                            tax, = tax
                            impuestos_linea.append(tax)
                        else:
                            raise UserError('ERROR IMPUESTO', 'No se encontró el impuesto al consumo: '+id_venta)
                    elif clase_impuesto != '05' and clase_impuesto != '06' and clase_impuesto != '07' and not impuestol.consumo:
                        impuestos_linea.append(impuestol)
                linea.taxes = impuestos_linea
                linea.unit_price = lin.Valor_Unitario
                if lin.Porcentaje_Descuento_1 > 0:
                    porcentaje = lin.Porcentaje_Descuento_1/100
                    linea.base_price = lin.Valor_Unitario
                    linea.discount_rate = Decimal(str(porcentaje))
                    linea.on_change_discount_rate()
                linea.save()

De ante mano agradezco su colaboración.

El error trataba de impuestos que se cargaba de forma repetida, se añadió la siguiente validación y de está forma se soluciono

if impuestol not in impuestos_linea:
   impuestos_linea.append(impuestol)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.