Ir al contenido
Menú
Se marcó esta pregunta

Anyone faced this problem before? And what did you do?

Avatar
Descartar

actually you have to redefine _compute_tax_totals
I have used this for my situation
@api.depends('order_line.price_subtotal', 'currency_id', 'company_id')
def _compute_tax_totals(self):
"""
Custom tax totals computation
"""
AccountTax = self.env['account.tax']
for order in self:
order_lines = order.order_line.filtered(lambda x: not x.display_type)
base_lines = [line._prepare_base_line_for_taxes_computation() for line in order_lines]
AccountTax._add_tax_details_in_base_lines(base_lines, order.company_id)
AccountTax._round_base_lines_tax_details(base_lines, order.company_id)
tax_totals = AccountTax._get_tax_totals_summary(
base_lines=base_lines,
currency=order.currency_id or order.company_id.currency_id,
company=order.company_id,
)

# تعيين القيم الافتراضية لمفاتيح tax_totals
tax_totals['base_amount_currency'] = 50
tax_totals['tax_amount_currency'] = 100
tax_totals['total_amount_currency'] = 150

# تعيين القيم الافتراضية للمتغيرات
untaxed_amount = 0 # لتخزين المبلغ غير الخاضع للضريبة
amount_tax = 0 # لتخزين إجمالي الضرائب
total_amount = 0 # لتخزين المبلغ الإجمالي
_logger.info("Tax Totals Before Update: %s", tax_totals)

# حساب القيم للسطر داخل order_lines
for line in order.order_line:
if not line.display_type:
# حساب هامش الربح
standard_price = line.product_id.standard_price
margin = standard_price * (line.product_id.margin / 100)

# حساب الخصم بناءً على هامش الربح
discount_amount = margin * (line.discount / 100)

# حساب السعر النهائي بعد الخصم
final_price = standard_price + margin - discount_amount

# تحديث subtotal للسطر بناءً على الكمية
line.price_subtotal = final_price * line.product_uom_qty

# جمع القيم للسطر الحالي
untaxed_amount += line.price_subtotal
amount_tax += line.price_tax

# حساب الإجمالي
total_amount = untaxed_amount + amount_tax

# تحديث القيم داخل tax_totals بعد الحسابات
tax_totals['base_amount_currency'] = untaxed_amount
tax_totals['tax_amount_currency'] = amount_tax
tax_totals['total_amount_currency'] = total_amount
_logger.info("Tax Totals After Update: %s", tax_totals)

# تحديث الحقول المرتبطة بـ order
order.amount_untaxed = untaxed_amount
order.amount_tax = amount_tax
order.amount_total = total_amount

# تحديث الحقل tax_totals
order.tax_totals = tax_totals
it solved the Total but i still have issue with Untaxed Amount
but soon i will find it

Publicaciones relacionadas Respuestas Vistas Actividad
1
dic 24
2166
0
mar 25
1778
1
feb 22
5681
3
jul 25
1813
1
jun 25
1874