Skip to content

Commit

Permalink
fix: Purchase Receipt Provisional Accounting GL Entries (backport fra…
Browse files Browse the repository at this point in the history
…ppe#37046) (frappe#37068)

* fix: Purchase Receipt Provisional Accounting GL Entries

(cherry picked from commit 6bab0ee)

* test: Purchase Receipt Provisional Accounting GL Entries

(cherry picked from commit 1c78a5a)

* fix(test): PR Provisional Accounting

---------

Co-authored-by: s-aga-r <sagarsharma.s312@gmail.com>
  • Loading branch information
mergify[bot] and s-aga-r authored Sep 13, 2023
1 parent b56c9b9 commit 8772e40
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 2 deletions.
4 changes: 4 additions & 0 deletions erpnext/buying/doctype/supplier/test_supplier.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,13 +195,17 @@ def test_serach_fields_for_supplier(self):
def create_supplier(**args):
args = frappe._dict(args)

if not args.supplier_name:
args.supplier_name = frappe.generate_hash()

if frappe.db.exists("Supplier", args.supplier_name):
return frappe.get_doc("Supplier", args.supplier_name)

doc = frappe.get_doc(
{
"doctype": "Supplier",
"supplier_name": args.supplier_name,
"default_currency": args.default_currency,
"supplier_group": args.supplier_group or "Services",
"supplier_type": args.supplier_type or "Company",
"tax_withholding_category": args.tax_withholding_category,
Expand Down
4 changes: 2 additions & 2 deletions erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
Original file line number Diff line number Diff line change
Expand Up @@ -605,7 +605,7 @@ def add_provisional_gl_entry(
account=provisional_account,
cost_center=item.cost_center,
debit=0.0,
credit=multiplication_factor * item.amount,
credit=multiplication_factor * item.base_amount,
remarks=remarks,
against_account=expense_account,
account_currency=credit_currency,
Expand All @@ -619,7 +619,7 @@ def add_provisional_gl_entry(
gl_entries=gl_entries,
account=expense_account,
cost_center=item.cost_center,
debit=multiplication_factor * item.amount,
debit=multiplication_factor * item.base_amount,
credit=0.0,
remarks=remarks,
against_account=provisional_account,
Expand Down
43 changes: 43 additions & 0 deletions erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
Original file line number Diff line number Diff line change
Expand Up @@ -2024,6 +2024,49 @@ def test_purchase_receipt_with_backdated_landed_cost_voucher(self):
ste7.reload()
self.assertEqual(ste7.items[0].valuation_rate, valuation_rate)

def test_purchase_receipt_provisional_accounting(self):
# Step - 1: Create Supplier with Default Currency as USD
from erpnext.buying.doctype.supplier.test_supplier import create_supplier

supplier = create_supplier(default_currency="USD")

# Step - 2: Setup Company for Provisional Accounting
from erpnext.accounts.doctype.account.test_account import create_account

provisional_account = create_account(
account_name="Provision Account",
parent_account="Current Liabilities - _TC",
company="_Test Company",
)
company = frappe.get_doc("Company", "_Test Company")
company.enable_provisional_accounting_for_non_stock_items = 1
company.default_provisional_account = provisional_account
company.save()

# Step - 3: Create Non-Stock Item
item = make_item(properties={"is_stock_item": 0})

# Step - 4: Create Purchase Receipt
pr = make_purchase_receipt(
qty=2,
item_code=item.name,
company=company.name,
supplier=supplier.name,
currency=supplier.default_currency,
)

# Test - 1: Total and Base Total should not be the same as the currency is different
self.assertNotEqual(flt(pr.total, 2), flt(pr.base_total, 2))
self.assertEqual(flt(pr.total * pr.conversion_rate, 2), flt(pr.base_total, 2))

# Test - 2: Sum of Debit or Credit should be equal to Purchase Receipt Base Total
amount = frappe.db.get_value("GL Entry", {"docstatus": 1, "voucher_no": pr.name}, ["sum(debit)"])
expected_amount = pr.base_total
self.assertEqual(amount, expected_amount)

company.enable_provisional_accounting_for_non_stock_items = 0
company.save()


def prepare_data_for_internal_transfer():
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_internal_supplier
Expand Down

0 comments on commit 8772e40

Please sign in to comment.