Merge pull request #35711 from rohitwaghchaure/fixed-incorrect-gl-for-debit-note
fix: incorrect gl entries for standalone debit note
This commit is contained in:
commit
fc38d45c35
@ -642,13 +642,6 @@ class TestPurchaseInvoice(unittest.TestCase, StockTestMixin):
|
|||||||
gle_filters={"account": "Stock In Hand - TCP1"},
|
gle_filters={"account": "Stock In Hand - TCP1"},
|
||||||
)
|
)
|
||||||
|
|
||||||
# assert loss booked in COGS
|
|
||||||
self.assertGLEs(
|
|
||||||
return_pi,
|
|
||||||
[{"credit": 0, "debit": 200}],
|
|
||||||
gle_filters={"account": "Cost of Goods Sold - TCP1"},
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_return_with_lcv(self):
|
def test_return_with_lcv(self):
|
||||||
from erpnext.controllers.sales_and_purchase_return import make_return_doc
|
from erpnext.controllers.sales_and_purchase_return import make_return_doc
|
||||||
from erpnext.stock.doctype.landed_cost_voucher.test_landed_cost_voucher import (
|
from erpnext.stock.doctype.landed_cost_voucher.test_landed_cost_voucher import (
|
||||||
@ -1671,6 +1664,21 @@ class TestPurchaseInvoice(unittest.TestCase, StockTestMixin):
|
|||||||
|
|
||||||
self.assertTrue(return_pi.docstatus == 1)
|
self.assertTrue(return_pi.docstatus == 1)
|
||||||
|
|
||||||
|
def test_gl_entries_for_standalone_debit_note(self):
|
||||||
|
make_purchase_invoice(qty=5, rate=500, update_stock=True)
|
||||||
|
|
||||||
|
returned_inv = make_purchase_invoice(qty=-5, rate=5, update_stock=True, is_return=True)
|
||||||
|
|
||||||
|
# override the rate with valuation rate
|
||||||
|
sle = frappe.get_all(
|
||||||
|
"Stock Ledger Entry",
|
||||||
|
fields=["stock_value_difference", "actual_qty"],
|
||||||
|
filters={"voucher_no": returned_inv.name},
|
||||||
|
)[0]
|
||||||
|
|
||||||
|
rate = flt(sle.stock_value_difference) / flt(sle.actual_qty)
|
||||||
|
self.assertAlmostEqual(returned_inv.items[0].rate, rate)
|
||||||
|
|
||||||
|
|
||||||
def check_gl_entries(doc, voucher_no, expected_gle, posting_date):
|
def check_gl_entries(doc, voucher_no, expected_gle, posting_date):
|
||||||
gl_entries = frappe.db.sql(
|
gl_entries = frappe.db.sql(
|
||||||
|
|||||||
@ -26,6 +26,8 @@ class BuyingController(SubcontractingController):
|
|||||||
self.flags.ignore_permlevel_for_fields = ["buying_price_list", "price_list_currency"]
|
self.flags.ignore_permlevel_for_fields = ["buying_price_list", "price_list_currency"]
|
||||||
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
|
self.set_rate_for_standalone_debit_note()
|
||||||
|
|
||||||
super(BuyingController, self).validate()
|
super(BuyingController, self).validate()
|
||||||
if getattr(self, "supplier", None) and not self.supplier_name:
|
if getattr(self, "supplier", None) and not self.supplier_name:
|
||||||
self.supplier_name = frappe.db.get_value("Supplier", self.supplier, "supplier_name")
|
self.supplier_name = frappe.db.get_value("Supplier", self.supplier, "supplier_name")
|
||||||
@ -100,6 +102,30 @@ class BuyingController(SubcontractingController):
|
|||||||
do_not_submit=True,
|
do_not_submit=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def set_rate_for_standalone_debit_note(self):
|
||||||
|
if self.get("is_return") and self.get("update_stock") and not self.return_against:
|
||||||
|
for row in self.items:
|
||||||
|
|
||||||
|
# override the rate with valuation rate
|
||||||
|
row.rate = get_incoming_rate(
|
||||||
|
{
|
||||||
|
"item_code": row.item_code,
|
||||||
|
"warehouse": row.warehouse,
|
||||||
|
"posting_date": self.get("posting_date"),
|
||||||
|
"posting_time": self.get("posting_time"),
|
||||||
|
"qty": row.qty,
|
||||||
|
"serial_and_batch_bundle": row.get("serial_and_batch_bundle"),
|
||||||
|
"company": self.company,
|
||||||
|
"voucher_type": self.doctype,
|
||||||
|
"voucher_no": self.name,
|
||||||
|
},
|
||||||
|
raise_error_if_no_rate=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
row.discount_percentage = 0.0
|
||||||
|
row.discount_amount = 0.0
|
||||||
|
row.margin_rate_or_amount = 0.0
|
||||||
|
|
||||||
def set_missing_values(self, for_validate=False):
|
def set_missing_values(self, for_validate=False):
|
||||||
super(BuyingController, self).set_missing_values(for_validate)
|
super(BuyingController, self).set_missing_values(for_validate)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user