Merge pull request #49403 from rohitwaghchaure/fixed-support-47626

fix: validation for Recreate Stock Ledgers
This commit is contained in:
rohitwaghchaure
2025-09-01 16:12:10 +05:30
committed by GitHub
2 changed files with 51 additions and 0 deletions

View File

@@ -4171,6 +4171,36 @@ class TestPurchaseReceipt(IntegrationTestCase):
self.assertTrue(sles)
def test_validate_recreate_stock_ledgers_for_sn_item(self):
item_code = "Test SN Item for Recreate Stock Ledgers"
make_item(item_code, {"has_serial_no": 1, "serial_no_series": "SN-TRSLR-.#####"})
pr = make_purchase_receipt(item_code=item_code, qty=10, rate=100)
pr.submit()
sles = frappe.get_all(
"Stock Ledger Entry",
filters={"voucher_type": pr.doctype, "voucher_no": pr.name},
pluck="name",
)
self.assertTrue(sles)
repost_doc = frappe.get_doc(
{
"doctype": "Repost Item Valuation",
"based_on": "Transaction",
"voucher_type": pr.doctype,
"voucher_no": pr.name,
"posting_date": pr.posting_date,
"posting_time": pr.posting_time,
"company": pr.company,
"recreate_stock_ledgers": 1,
}
)
self.assertRaises(frappe.ValidationError, repost_doc.save)
def test_internal_pr_qty_change_only_single_batch(self):
from erpnext.stock.doctype.delivery_note.delivery_note import make_inter_company_purchase_receipt
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note

View File

@@ -76,6 +76,27 @@ class RepostItemValuation(Document):
self.reset_field_values()
self.validate_accounts_freeze()
self.reset_recreate_stock_ledgers()
self.validate_recreate_stock_ledgers()
def validate_recreate_stock_ledgers(self):
if not self.recreate_stock_ledgers:
return
items = []
if self.based_on == "Item and Warehouse":
items.append(self.item_code)
else:
items = get_items_to_be_repost(self.voucher_type, self.voucher_no)
items = list(set([d.item_code for d in items]))
if serial_batch_items := frappe.get_all(
"Item", or_filters={"has_serial_no": 1, "has_batch_no": 1}, filters={"name": ("in", items)}
):
item_list = ", ".join([d.name for d in serial_batch_items])
msg = _(
"Since {0} are Serial No/Batch No items, you cannot enable 'Recreate Stock Ledgers' in Repost Item Valuation."
).format(item_list)
frappe.throw(msg)
def validate_period_closing_voucher(self):
# Period Closing Voucher