Merge pull request #30564 from rohitwaghchaure/fixed-rejected-warehouse-issue-for-pr
fix: if accepted warehouse not selected during rejection then stock ledger not created
This commit is contained in:
commit
a9811c601c
@ -463,7 +463,10 @@ class BuyingController(StockController, Subcontracting):
|
||||
stock_items = self.get_stock_items()
|
||||
|
||||
for d in self.get("items"):
|
||||
if d.item_code in stock_items and d.warehouse:
|
||||
if d.item_code not in stock_items:
|
||||
continue
|
||||
|
||||
if d.warehouse:
|
||||
pr_qty = flt(d.qty) * flt(d.conversion_factor)
|
||||
|
||||
if pr_qty:
|
||||
@ -488,6 +491,7 @@ class BuyingController(StockController, Subcontracting):
|
||||
sle = self.get_sl_entries(
|
||||
d, {"actual_qty": flt(pr_qty), "serial_no": cstr(d.serial_no).strip()}
|
||||
)
|
||||
|
||||
if self.is_return:
|
||||
outgoing_rate = get_rate_for_return(
|
||||
self.doctype, self.name, d.item_code, self.return_against, item_row=d
|
||||
@ -517,18 +521,18 @@ class BuyingController(StockController, Subcontracting):
|
||||
|
||||
sl_entries.append(from_warehouse_sle)
|
||||
|
||||
if flt(d.rejected_qty) != 0:
|
||||
sl_entries.append(
|
||||
self.get_sl_entries(
|
||||
d,
|
||||
{
|
||||
"warehouse": d.rejected_warehouse,
|
||||
"actual_qty": flt(d.rejected_qty) * flt(d.conversion_factor),
|
||||
"serial_no": cstr(d.rejected_serial_no).strip(),
|
||||
"incoming_rate": 0.0,
|
||||
},
|
||||
)
|
||||
if flt(d.rejected_qty) != 0:
|
||||
sl_entries.append(
|
||||
self.get_sl_entries(
|
||||
d,
|
||||
{
|
||||
"warehouse": d.rejected_warehouse,
|
||||
"actual_qty": flt(d.rejected_qty) * flt(d.conversion_factor),
|
||||
"serial_no": cstr(d.rejected_serial_no).strip(),
|
||||
"incoming_rate": 0.0,
|
||||
},
|
||||
)
|
||||
)
|
||||
|
||||
self.make_sl_entries_for_supplier_warehouse(sl_entries)
|
||||
self.make_sl_entries(
|
||||
|
@ -647,6 +647,45 @@ class TestPurchaseReceipt(FrappeTestCase):
|
||||
return_pr.cancel()
|
||||
pr.cancel()
|
||||
|
||||
def test_purchase_receipt_for_rejected_gle_without_accepted_warehouse(self):
|
||||
from erpnext.stock.doctype.warehouse.test_warehouse import get_warehouse
|
||||
|
||||
rejected_warehouse = "_Test Rejected Warehouse - TCP1"
|
||||
if not frappe.db.exists("Warehouse", rejected_warehouse):
|
||||
get_warehouse(
|
||||
company="_Test Company with perpetual inventory",
|
||||
abbr=" - TCP1",
|
||||
warehouse_name="_Test Rejected Warehouse",
|
||||
).name
|
||||
|
||||
pr = make_purchase_receipt(
|
||||
company="_Test Company with perpetual inventory",
|
||||
warehouse="Stores - TCP1",
|
||||
received_qty=2,
|
||||
rejected_qty=2,
|
||||
rejected_warehouse=rejected_warehouse,
|
||||
do_not_save=True,
|
||||
)
|
||||
|
||||
pr.items[0].qty = 0.0
|
||||
pr.items[0].warehouse = ""
|
||||
pr.submit()
|
||||
|
||||
actual_qty = frappe.db.get_value(
|
||||
"Stock Ledger Entry",
|
||||
{
|
||||
"voucher_type": "Purchase Receipt",
|
||||
"voucher_no": pr.name,
|
||||
"warehouse": pr.items[0].rejected_warehouse,
|
||||
"is_cancelled": 0,
|
||||
},
|
||||
"actual_qty",
|
||||
)
|
||||
|
||||
self.assertEqual(actual_qty, 2)
|
||||
self.assertFalse(pr.items[0].warehouse)
|
||||
pr.cancel()
|
||||
|
||||
def test_purchase_return_for_serialized_items(self):
|
||||
def _check_serial_no_values(serial_no, field_values):
|
||||
serial_no = frappe.get_doc("Serial No", serial_no)
|
||||
|
Loading…
x
Reference in New Issue
Block a user