Merge branch 'develop' of https://github.com/frappe/erpnext into round_off_account_cost_center
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index a5f9e24..e37900b 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -1369,7 +1369,9 @@
if (
not self.is_internal_transfer() and self.rounding_adjustment and self.base_rounding_adjustment
):
- round_off_account, round_off_cost_center = get_round_off_account_and_cost_center(self.company)
+ round_off_account, round_off_cost_center = get_round_off_account_and_cost_center(
+ self.company, "Purchase Invoice", self.name
+ )
gl_entries.append(
self.get_gl_dict(
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 1efd3dc..5b7f1ce 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -1466,7 +1466,9 @@
and self.base_rounding_adjustment
and not self.is_internal_transfer()
):
- round_off_account, round_off_cost_center = get_round_off_account_and_cost_center(self.company)
+ round_off_account, round_off_cost_center = get_round_off_account_and_cost_center(
+ self.company, "Sales Invoice", self.name
+ )
gl_entries.append(
self.get_gl_dict(
diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py
index f52e517..2d36835 100644
--- a/erpnext/accounts/general_ledger.py
+++ b/erpnext/accounts/general_ledger.py
@@ -355,7 +355,7 @@
def make_round_off_gle(gl_map, debit_credit_diff, precision):
round_off_account, round_off_cost_center = get_round_off_account_and_cost_center(
- gl_map[0].company
+ gl_map[0].company, gl_map[0].voucher_type, gl_map[0].voucher_no
)
round_off_account_exists = False
round_off_gle = frappe._dict()
@@ -392,14 +392,33 @@
}
)
+ update_accounting_dimensions(round_off_gle)
+
if not round_off_account_exists:
gl_map.append(round_off_gle)
-def get_round_off_account_and_cost_center(company):
+def update_accounting_dimensions(round_off_gle):
+ dimensions = get_accounting_dimensions()
+ dimension_values = frappe.db.get_value(
+ round_off_gle["voucher_type"], round_off_gle["voucher_no"], dimensions
+ )
+
+ for dimension in dimensions:
+ round_off_gle[dimension] = dimension_values.get(dimension)
+
+
+def get_round_off_account_and_cost_center(company, voucher_type, voucher_no):
round_off_account, round_off_cost_center = frappe.get_cached_value(
"Company", company, ["round_off_account", "round_off_cost_center"]
) or [None, None]
+
+ # Give first preference to parent cost center for round off GLE
+ if frappe.db.has_column(voucher_type, "cost_center"):
+ parent_cost_center = frappe.db.get_value(voucher_type, voucher_no, "cost_center")
+ if parent_cost_center:
+ round_off_cost_center = parent_cost_center
+
if not round_off_account:
frappe.throw(_("Please mention Round Off Account in Company"))