mirror of
https://github.com/frappe/erpnext.git
synced 2026-04-30 20:18:27 +00:00
fix: validation for Recreate Stock Ledgers
(cherry picked from commit 785845a425)
This commit is contained in:
committed by
Mergify
parent
ab089fae7e
commit
9f0d743e1b
@@ -4146,6 +4146,36 @@ class TestPurchaseReceipt(FrappeTestCase):
|
|||||||
|
|
||||||
self.assertTrue(sles)
|
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):
|
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.delivery_note import make_inter_company_purchase_receipt
|
||||||
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
|
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
|
||||||
|
|||||||
@@ -76,6 +76,27 @@ class RepostItemValuation(Document):
|
|||||||
self.reset_field_values()
|
self.reset_field_values()
|
||||||
self.validate_accounts_freeze()
|
self.validate_accounts_freeze()
|
||||||
self.reset_recreate_stock_ledgers()
|
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):
|
def validate_period_closing_voucher(self):
|
||||||
# Period Closing Voucher
|
# Period Closing Voucher
|
||||||
|
|||||||
Reference in New Issue
Block a user