mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-13 18:21:22 +00:00
[precision] server side cleanup and client side precision method
This commit is contained in:
@@ -92,7 +92,11 @@ class SellingController(StockController):
|
||||
self.calculate_taxes()
|
||||
self.calculate_totals()
|
||||
# self.calculate_outstanding_amount()
|
||||
#
|
||||
|
||||
# TODO
|
||||
# allocated amount of sales person
|
||||
# total commission
|
||||
|
||||
self._cleanup()
|
||||
|
||||
def determin_exclusive_rate(self):
|
||||
@@ -122,12 +126,12 @@ class SellingController(StockController):
|
||||
|
||||
if cumulated_tax_fraction:
|
||||
item.basic_rate = flt((item.export_rate * self.doc.conversion_rate) /
|
||||
(1 + cumulated_tax_fraction), self.precision("basic_rate", item.parentfield))
|
||||
(1 + cumulated_tax_fraction), self.precision("basic_rate", item))
|
||||
|
||||
item.amount = flt(item.basic_rate * item.qty, self.precision("amount", item.parentfield))
|
||||
item.amount = flt(item.basic_rate * item.qty, self.precision("amount", item))
|
||||
|
||||
item.base_ref_rate = flt(item.basic_rate / (1 - (item.adj_rate / 100.0)),
|
||||
self.precision("base_ref_rate", item.parentfield))
|
||||
self.precision("base_ref_rate", item))
|
||||
|
||||
def get_current_tax_fraction(self, tax, item_tax_map):
|
||||
"""
|
||||
@@ -156,11 +160,11 @@ class SellingController(StockController):
|
||||
def _set_base(item, print_field, base_field):
|
||||
"""set values in base currency"""
|
||||
item.fields[base_field] = flt((flt(item.fields[print_field],
|
||||
self.precision(print_field, item.parentfield)) * self.doc.conversion_rate),
|
||||
self.precision(base_field, item.parentfield))
|
||||
self.precision(print_field, item)) * self.doc.conversion_rate),
|
||||
self.precision(base_field, item))
|
||||
|
||||
for item in self.item_doclist:
|
||||
self.round_floats_in_doc(item, item.parentfield)
|
||||
self.round_floats_in(item)
|
||||
|
||||
if item.adj_rate == 100:
|
||||
item.ref_rate = item.ref_rate or item.export_rate
|
||||
@@ -168,14 +172,14 @@ class SellingController(StockController):
|
||||
else:
|
||||
if item.ref_rate:
|
||||
item.export_rate = flt(item.ref_rate * (1.0 - (item.adj_rate / 100.0)),
|
||||
self.precision("export_rate", item.parentfield))
|
||||
self.precision("export_rate", item))
|
||||
else:
|
||||
# assume that print rate and discount are specified
|
||||
item.ref_rate = flt(item.export_rate / (1.0 - (item.adj_rate / 100.0)),
|
||||
self.precision("ref_rate", item.parentfield))
|
||||
self.precision("ref_rate", item))
|
||||
|
||||
item.export_amount = flt(item.export_rate * item.qty,
|
||||
self.precision("export_amount", item.parentfield))
|
||||
self.precision("export_amount", item))
|
||||
|
||||
_set_base(item, "ref_rate", "base_ref_rate")
|
||||
_set_base(item, "export_rate", "basic_rate")
|
||||
@@ -189,7 +193,7 @@ class SellingController(StockController):
|
||||
tax.item_wise_tax_detail = {}
|
||||
self.validate_on_previous_row(tax)
|
||||
self.validate_inclusive_tax(tax)
|
||||
self.round_floats_in_doc(tax, tax.parentfield)
|
||||
self.round_floats_in(tax)
|
||||
|
||||
def calculate_net_total(self):
|
||||
self.doc.net_total = 0
|
||||
@@ -216,7 +220,7 @@ class SellingController(StockController):
|
||||
# and tax.grand_total_for_current_item for the first such iteration
|
||||
if not (current_tax_amount or self.doc.net_total or tax.tax_amount) and \
|
||||
tax.charge_type=="Actual":
|
||||
zero_net_total_adjustment = flt(tax.rate, self.precision("tax_amount", tax.parentfield))
|
||||
zero_net_total_adjustment = flt(tax.rate, self.precision("tax_amount", tax))
|
||||
current_tax_amount += zero_net_total_adjustment
|
||||
|
||||
# store tax_amount for current item as it will be used for
|
||||
@@ -231,12 +235,12 @@ class SellingController(StockController):
|
||||
# item's amount, previously applied tax and the current tax on that item
|
||||
if i==0:
|
||||
tax.grand_total_for_current_item = flt(item.amount +
|
||||
current_tax_amount, self.precision("total", tax.parentfield))
|
||||
current_tax_amount, self.precision("total", tax))
|
||||
|
||||
else:
|
||||
tax.grand_total_for_current_item = \
|
||||
flt(self.tax_doclist[i-1].grand_total_for_current_item +
|
||||
current_tax_amount, self.precision("total", tax.parentfield))
|
||||
current_tax_amount, self.precision("total", tax))
|
||||
|
||||
# in tax.total, accumulate grand total of each item
|
||||
tax.total += tax.grand_total_for_current_item
|
||||
@@ -259,7 +263,7 @@ class SellingController(StockController):
|
||||
|
||||
if tax.charge_type == "Actual":
|
||||
# distribute the tax amount proportionally to each item row
|
||||
actual = flt(tax.rate, self.precision("tax_amount", tax.parentfield))
|
||||
actual = flt(tax.rate, self.precision("tax_amount", tax))
|
||||
current_tax_amount = (self.doc.net_total
|
||||
and ((item.amount / self.doc.net_total) * actual)
|
||||
or 0)
|
||||
@@ -272,7 +276,7 @@ class SellingController(StockController):
|
||||
current_tax_amount = (tax_rate / 100.0) * \
|
||||
self.tax_doclist[cint(tax.row_id) - 1].grand_total_for_current_item
|
||||
|
||||
return flt(current_tax_amount, self.precision("tax_amount", tax.parentfield))
|
||||
return flt(current_tax_amount, self.precision("tax_amount", tax))
|
||||
|
||||
def validate_on_previous_row(self, tax):
|
||||
"""
|
||||
@@ -334,7 +338,7 @@ class SellingController(StockController):
|
||||
|
||||
def _get_tax_rate(self, tax, item_tax_map):
|
||||
if item_tax_map.has_key(tax.account_head):
|
||||
return flt(item_tax_map.get(tax.account_head), self.precision("rate", tax.parentfield))
|
||||
return flt(item_tax_map.get(tax.account_head), self.precision("rate", tax))
|
||||
else:
|
||||
return tax.rate
|
||||
|
||||
|
||||
Reference in New Issue
Block a user