Skip to content

Commit

Permalink
test: PI offsetting entry for accounting dimension
Browse files Browse the repository at this point in the history
  • Loading branch information
GursheenK committed Jul 18, 2023
1 parent 3a3ffa2 commit 77deac4
Showing 1 changed file with 82 additions and 3 deletions.
85 changes: 82 additions & 3 deletions erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
Original file line number Diff line number Diff line change
Expand Up @@ -1736,6 +1736,72 @@ def test_gl_entries_for_standalone_debit_note(self):
rate = flt(sle.stock_value_difference) / flt(sle.actual_qty)
self.assertAlmostEqual(returned_inv.items[0].rate, rate)

def test_offsetting_entries_for_accounting_dimensions(self):
from erpnext.accounts.doctype.account.test_account import create_account

create_account(
account_name="Offsetting",
company="_Test Company",
parent_account="Temporary Accounts - _TC",
)

clear_dimension_defaults("Branch")
accounting_dimension = frappe.get_doc("Accounting Dimension", "Branch")
accounting_dimension.disabled = 0
accounting_dimension.append(
"dimension_defaults",
{
"company": "_Test Company",
"automatically_post_balancing_accounting_entry": 1,
"offsetting_account": "Offsetting - _TC",
},
)
accounting_dimension.save()

branch1 = frappe.new_doc("Branch")
branch1.branch = "Location 1"
branch1.insert(ignore_if_duplicate=True)
branch2 = frappe.new_doc("Branch")
branch2.branch = "Location 2"
branch2.insert(ignore_if_duplicate=True)

pi = make_purchase_invoice(
company="_Test Company",
customer="_Test Supplier",
do_not_save=True,
do_not_submit=True,
rate=1000,
price_list_rate=1000,
qty=1,
)
pi.branch = branch1.branch
pi.items[0].branch = branch2.branch
pi.save()
pi.submit()

expected_gle = [
["_Test Account Cost for Goods Sold - _TC", 1000, 0.0, nowdate(), {"branch": branch2.branch}],
["Creditors - _TC", 0.0, 1000, nowdate(), {"branch": branch1.branch}],
["Offsetting - _TC", 1000, 0.0, nowdate(), {"branch": branch1.branch}],
["Offsetting - _TC", 0.0, 1000, nowdate(), {"branch": branch2.branch}],
]

check_gl_entries(
self,
pi.name,
expected_gle,
nowdate(),
voucher_type="Purchase Invoice",
check_acc_dimensions=True,
)
clear_dimension_defaults("Branch")


def clear_dimension_defaults(dimension_name):
accounting_dimension = frappe.get_doc("Accounting Dimension", dimension_name)
accounting_dimension.dimension_defaults = []
accounting_dimension.save()


def set_advance_flag(company, flag, default_account):
frappe.db.set_value(
Expand All @@ -1748,9 +1814,16 @@ def set_advance_flag(company, flag, default_account):
)


def check_gl_entries(doc, voucher_no, expected_gle, posting_date, voucher_type="Purchase Invoice"):
def check_gl_entries(
doc,
voucher_no,
expected_gle,
posting_date,
voucher_type="Purchase Invoice",
check_acc_dimensions=False,
):
gl = frappe.qb.DocType("GL Entry")
q = (
query = (
frappe.qb.from_(gl)
.select(gl.account, gl.debit, gl.credit, gl.posting_date)
.where(
Expand All @@ -1761,13 +1834,19 @@ def check_gl_entries(doc, voucher_no, expected_gle, posting_date, voucher_type="
)
.orderby(gl.posting_date, gl.account, gl.creation)
)
gl_entries = q.run(as_dict=True)
if check_acc_dimensions:
for col in list(expected_gle[0][4].keys()):
query = query.select(col)
gl_entries = query.run(as_dict=True)

for i, gle in enumerate(gl_entries):
doc.assertEqual(expected_gle[i][0], gle.account)
doc.assertEqual(expected_gle[i][1], gle.debit)
doc.assertEqual(expected_gle[i][2], gle.credit)
doc.assertEqual(getdate(expected_gle[i][3]), gle.posting_date)
if check_acc_dimensions:
for acc_dimension in expected_gle[i][4]:
doc.assertEqual(expected_gle[i][4][acc_dimension], gle[acc_dimension])


def create_tax_witholding_category(category_name, company, account):
Expand Down

0 comments on commit 77deac4

Please sign in to comment.