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.