fix: divide offsetting amount only when account exists
This commit is contained in:
parent
1e1e4b93c1
commit
3a3ffa2307
@ -56,7 +56,9 @@ def make_gl_entries(
|
||||
|
||||
|
||||
def make_acc_dimensions_offsetting_entry(gl_map):
|
||||
accounting_dimensions_to_offset = get_accounting_dimensions_for_offsetting_entry(gl_map)
|
||||
accounting_dimensions_to_offset = get_accounting_dimensions_for_offsetting_entry(
|
||||
gl_map, gl_map[0].company
|
||||
)
|
||||
no_of_dimensions = len(accounting_dimensions_to_offset)
|
||||
if no_of_dimensions == 0:
|
||||
return
|
||||
@ -64,14 +66,7 @@ def make_acc_dimensions_offsetting_entry(gl_map):
|
||||
offsetting_entries = []
|
||||
for gle in gl_map:
|
||||
for dimension in accounting_dimensions_to_offset:
|
||||
dimension_details = frappe.db.get_values(
|
||||
"Accounting Dimension Detail",
|
||||
{"parent": dimension, "company": gle.company},
|
||||
["automatically_post_balancing_accounting_entry", "offsetting_account"],
|
||||
)
|
||||
dimension_details = dimension_details[0] if len(dimension_details) > 0 else None
|
||||
if dimension_details and dimension_details[0] == 1:
|
||||
offsetting_account = dimension_details[1]
|
||||
offsetting_account = dimension.offsetting_account
|
||||
offsetting_entry = gle.copy()
|
||||
offsetting_entry.update(
|
||||
{
|
||||
@ -80,7 +75,7 @@ def make_acc_dimensions_offsetting_entry(gl_map):
|
||||
"credit": flt(gle.debit) / no_of_dimensions if gle.debit != 0 else 0,
|
||||
"debit_in_account_currency": flt(gle.credit) / no_of_dimensions if gle.credit != 0 else 0,
|
||||
"credit_in_account_currency": flt(gle.debit) / no_of_dimensions if gle.debit != 0 else 0,
|
||||
"remarks": _("Offsetting for Accounting Dimension") + " - {0}".format(dimension),
|
||||
"remarks": _("Offsetting for Accounting Dimension") + " - {0}".format(dimension.name),
|
||||
"against_voucher": None,
|
||||
}
|
||||
)
|
||||
@ -89,11 +84,23 @@ def make_acc_dimensions_offsetting_entry(gl_map):
|
||||
gl_map += offsetting_entries
|
||||
|
||||
|
||||
def get_accounting_dimensions_for_offsetting_entry(gl_map):
|
||||
acc_dimensions = frappe.db.get_list("Accounting Dimension", {"disabled": 0}, pluck="name")
|
||||
def get_accounting_dimensions_for_offsetting_entry(gl_map, company):
|
||||
acc_dimension = frappe.qb.DocType("Accounting Dimension")
|
||||
dimension_detail = frappe.qb.DocType("Accounting Dimension Detail")
|
||||
acc_dimensions = (
|
||||
frappe.qb.from_(acc_dimension)
|
||||
.inner_join(dimension_detail)
|
||||
.on(acc_dimension.name == dimension_detail.parent)
|
||||
.select(acc_dimension.name, dimension_detail.offsetting_account)
|
||||
.where(
|
||||
(acc_dimension.disabled == 0)
|
||||
& (dimension_detail.company == company)
|
||||
& (dimension_detail.automatically_post_balancing_accounting_entry == 1)
|
||||
)
|
||||
).run(as_dict=True)
|
||||
accounting_dimensions_to_offset = []
|
||||
for acc_dimension in acc_dimensions:
|
||||
fieldname = acc_dimension.lower().replace(" ", "_")
|
||||
fieldname = acc_dimension.name.lower().replace(" ", "_")
|
||||
values = set([entry.get(fieldname) for entry in gl_map])
|
||||
if len(values) > 1:
|
||||
accounting_dimensions_to_offset.append(acc_dimension)
|
||||
|
Loading…
x
Reference in New Issue
Block a user