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:
Ankush Menat 2022-04-04 18:26:17 +05:30 committed by GitHub
commit a9811c601c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 55 additions and 12 deletions

View File

@ -463,7 +463,10 @@ class BuyingController(StockController, Subcontracting):
stock_items = self.get_stock_items() stock_items = self.get_stock_items()
for d in self.get("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) pr_qty = flt(d.qty) * flt(d.conversion_factor)
if pr_qty: if pr_qty:
@ -488,6 +491,7 @@ class BuyingController(StockController, Subcontracting):
sle = self.get_sl_entries( sle = self.get_sl_entries(
d, {"actual_qty": flt(pr_qty), "serial_no": cstr(d.serial_no).strip()} d, {"actual_qty": flt(pr_qty), "serial_no": cstr(d.serial_no).strip()}
) )
if self.is_return: if self.is_return:
outgoing_rate = get_rate_for_return( outgoing_rate = get_rate_for_return(
self.doctype, self.name, d.item_code, self.return_against, item_row=d 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) sl_entries.append(from_warehouse_sle)
if flt(d.rejected_qty) != 0: if flt(d.rejected_qty) != 0:
sl_entries.append( sl_entries.append(
self.get_sl_entries( self.get_sl_entries(
d, d,
{ {
"warehouse": d.rejected_warehouse, "warehouse": d.rejected_warehouse,
"actual_qty": flt(d.rejected_qty) * flt(d.conversion_factor), "actual_qty": flt(d.rejected_qty) * flt(d.conversion_factor),
"serial_no": cstr(d.rejected_serial_no).strip(), "serial_no": cstr(d.rejected_serial_no).strip(),
"incoming_rate": 0.0, "incoming_rate": 0.0,
}, },
)
) )
)
self.make_sl_entries_for_supplier_warehouse(sl_entries) self.make_sl_entries_for_supplier_warehouse(sl_entries)
self.make_sl_entries( self.make_sl_entries(

View File

@ -647,6 +647,45 @@ class TestPurchaseReceipt(FrappeTestCase):
return_pr.cancel() return_pr.cancel()
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 test_purchase_return_for_serialized_items(self):
def _check_serial_no_values(serial_no, field_values): def _check_serial_no_values(serial_no, field_values):
serial_no = frappe.get_doc("Serial No", serial_no) serial_no = frappe.get_doc("Serial No", serial_no)