Browse Source

Aug 12: [FIX] Bug Fixed 'sale_discount_total'

pull/332/merge
Cybrosys Technologies 9 months ago
parent
commit
c640cd7ec9
  1. 2
      sale_discount_total/__manifest__.py
  2. 7
      sale_discount_total/doc/RELEASE_NOTES.md
  3. 14
      sale_discount_total/models/sale.py

2
sale_discount_total/__manifest__.py

@ -22,7 +22,7 @@
{ {
'name': 'Sale Discount on Total Amount', 'name': 'Sale Discount on Total Amount',
'version': '16.0.1.1.0', 'version': '16.0.1.1.1',
'category': 'Sales Management', 'category': 'Sales Management',
'live_test_url': 'https://www.youtube.com/watch?v=CigmHe9iC4s&feature=youtu.be', 'live_test_url': 'https://www.youtube.com/watch?v=CigmHe9iC4s&feature=youtu.be',
'summary': "Discount on Total in Sale and Invoice With Discount Limit and Approval", 'summary': "Discount on Total in Sale and Invoice With Discount Limit and Approval",

7
sale_discount_total/doc/RELEASE_NOTES.md

@ -3,7 +3,10 @@
#### 10.09.2021 #### 10.09.2021
#### Version 16.0.1.0.0 #### Version 16.0.1.0.0
#### ADD #### ADD
Initial commit for Sale Discount On Total Amount - Initial commit for Sale Discount On Total Amount
#### 12.08.2024
#### Version 16.0.1.1.1
#### UPDT
- bug fix in discount rounding

14
sale_discount_total/models/sale.py

@ -1,5 +1,4 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
############################################################################# #############################################################################
# #
# Cybrosys Technologies Pvt. Ltd. # Cybrosys Technologies Pvt. Ltd.
@ -31,16 +30,14 @@ class SaleOrder(models.Model):
@api.depends('order_line.price_total') @api.depends('order_line.price_total')
def _amount_all(self): def _amount_all(self):
""" """ Compute the total amounts of the SO. """
Compute the total amounts of the SO.
"""
for order in self: for order in self:
amount_untaxed = amount_tax = amount_discount = 0.0 amount_untaxed = amount_tax = amount_discount = 0.0
for line in order.order_line: for line in order.order_line:
amount_untaxed += line.price_subtotal amount_untaxed += line.price_subtotal
amount_tax += line.price_tax amount_tax += line.price_tax
amount_discount += ( amount_discount += (line.product_uom_qty *
line.product_uom_qty * line.price_unit * line.discount) / 100 line.price_unit * line.discount)/100
order.update({ order.update({
'amount_untaxed': amount_untaxed, 'amount_untaxed': amount_untaxed,
'amount_tax': amount_tax, 'amount_tax': amount_tax,
@ -75,6 +72,7 @@ class SaleOrder(models.Model):
@api.onchange('discount_type', 'discount_rate', 'order_line') @api.onchange('discount_type', 'discount_rate', 'order_line')
def supply_rate(self): def supply_rate(self):
"""supply discount into order line"""
for order in self: for order in self:
if order.discount_type == 'percent' and order.discount_rate > 0: if order.discount_type == 'percent' and order.discount_rate > 0:
for line in order.order_line: for line in order.order_line:
@ -82,14 +80,13 @@ class SaleOrder(models.Model):
elif order.discount_rate > 0: elif order.discount_rate > 0:
total = discount = 0.0 total = discount = 0.0
for line in order.order_line: for line in order.order_line:
total += round((line.product_uom_qty * line.price_unit)) total += (line.product_uom_qty * line.price_unit)
if order.discount_rate != 0: if order.discount_rate != 0:
discount = (order.discount_rate / total) * 100 discount = (order.discount_rate / total) * 100
else: else:
discount = order.discount_rate discount = order.discount_rate
for line in order.order_line: for line in order.order_line:
line.discount = discount line.discount = discount
# print(line.discount)
new_sub_price = (line.price_unit * (discount / 100)) new_sub_price = (line.price_unit * (discount / 100))
line.total_discount = line.price_unit - new_sub_price line.total_discount = line.price_unit - new_sub_price
@ -127,6 +124,7 @@ class SaleOrder(models.Model):
class SaleOrderLine(models.Model): class SaleOrderLine(models.Model):
"""Inherit sale order line and add fields"""
_inherit = "sale.order.line" _inherit = "sale.order.line"
discount = fields.Float(string='Discount (%)', digits=(16, 20), default=0.0) discount = fields.Float(string='Discount (%)', digits=(16, 20), default=0.0)

Loading…
Cancel
Save