Merge pull request #23116 from nabinhait/subcontracted-pr-gle
fix: GLE for subcontracted PR is fg item rate is zero
This commit is contained in:
commit
cf4268e21a
@ -227,6 +227,14 @@ class PurchaseReceipt(BuyingController):
|
||||
if not stock_value_diff:
|
||||
continue
|
||||
|
||||
# If PR is sub-contracted and fg item rate is zero
|
||||
# in that case if account for shource and target warehouse are same,
|
||||
# then GL entries should not be posted
|
||||
if flt(stock_value_diff) == flt(d.rm_supp_cost) \
|
||||
and warehouse_account.get(self.supplier_warehouse) \
|
||||
and warehouse_account[d.warehouse]["account"] == warehouse_account[self.supplier_warehouse]["account"]:
|
||||
continue
|
||||
|
||||
gl_entries.append(self.get_gl_dict({
|
||||
"account": warehouse_account[d.warehouse]["account"],
|
||||
"against": stock_rbnb,
|
||||
@ -242,16 +250,16 @@ class PurchaseReceipt(BuyingController):
|
||||
|
||||
credit_amount = flt(d.base_net_amount, d.precision("base_net_amount")) \
|
||||
if credit_currency == self.company_currency else flt(d.net_amount, d.precision("net_amount"))
|
||||
|
||||
gl_entries.append(self.get_gl_dict({
|
||||
"account": warehouse_account[d.from_warehouse]['account'] \
|
||||
if d.from_warehouse else stock_rbnb,
|
||||
"against": warehouse_account[d.warehouse]["account"],
|
||||
"cost_center": d.cost_center,
|
||||
"remarks": self.get("remarks") or _("Accounting Entry for Stock"),
|
||||
"debit": -1 * flt(d.base_net_amount, d.precision("base_net_amount")),
|
||||
"debit_in_account_currency": -1 * credit_amount
|
||||
}, credit_currency, item=d))
|
||||
if credit_amount:
|
||||
gl_entries.append(self.get_gl_dict({
|
||||
"account": warehouse_account[d.from_warehouse]['account'] \
|
||||
if d.from_warehouse else stock_rbnb,
|
||||
"against": warehouse_account[d.warehouse]["account"],
|
||||
"cost_center": d.cost_center,
|
||||
"remarks": self.get("remarks") or _("Accounting Entry for Stock"),
|
||||
"debit": -1 * flt(d.base_net_amount, d.precision("base_net_amount")),
|
||||
"debit_in_account_currency": -1 * credit_amount
|
||||
}, credit_currency, item=d))
|
||||
|
||||
negative_expense_to_be_booked += flt(d.item_tax_amount)
|
||||
|
||||
|
@ -143,6 +143,22 @@ class TestPurchaseReceipt(unittest.TestCase):
|
||||
rm_supp_cost = sum([d.amount for d in pr.get("supplied_items")])
|
||||
self.assertEqual(pr.get("items")[0].rm_supp_cost, flt(rm_supp_cost, 2))
|
||||
|
||||
def test_subcontracting_gle_fg_item_rate_zero(self):
|
||||
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry
|
||||
set_perpetual_inventory()
|
||||
frappe.db.set_value("Buying Settings", None, "backflush_raw_materials_of_subcontract_based_on", "BOM")
|
||||
make_stock_entry(item_code="_Test Item", target="Work In Progress - TCP1", qty=100, basic_rate=100, company="_Test Company with perpetual inventory")
|
||||
make_stock_entry(item_code="_Test Item Home Desktop 100", target="Work In Progress - TCP1",
|
||||
qty=100, basic_rate=100, company="_Test Company with perpetual inventory")
|
||||
pr = make_purchase_receipt(item_code="_Test FG Item", qty=10, rate=0, is_subcontracted="Yes",
|
||||
company="_Test Company with perpetual inventory", warehouse='Stores - TCP1', supplier_warehouse='Work In Progress - TCP1')
|
||||
|
||||
gl_entries = get_gl_entries("Purchase Receipt", pr.name)
|
||||
|
||||
self.assertFalse(gl_entries)
|
||||
|
||||
set_perpetual_inventory(0)
|
||||
|
||||
def test_serial_no_supplier(self):
|
||||
pr = make_purchase_receipt(item_code="_Test Serialized Item With Series", qty=1)
|
||||
self.assertEqual(frappe.db.get_value("Serial No", pr.get("items")[0].serial_no, "supplier"),
|
||||
@ -710,7 +726,7 @@ def make_purchase_receipt(**args):
|
||||
"received_qty": received_qty,
|
||||
"rejected_qty": rejected_qty,
|
||||
"rejected_warehouse": args.rejected_warehouse or "_Test Rejected Warehouse - _TC" if rejected_qty != 0 else "",
|
||||
"rate": args.rate or 50,
|
||||
"rate": args.rate if args.rate != None else 50,
|
||||
"conversion_factor": args.conversion_factor or 1.0,
|
||||
"serial_no": args.serial_no,
|
||||
"stock_uom": args.stock_uom or "_Test UOM",
|
||||
|
Loading…
x
Reference in New Issue
Block a user