refactor: item-wh wise reposting by default
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index aba15b4..6431388 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -544,7 +544,7 @@
"company": self.company
})
if future_sle_exists(args):
- create_repost_item_valuation_entry(args)
+ create_item_wise_repost_entries(voucher_type=self.doctype, voucher_no=self.name)
@frappe.whitelist()
def make_quality_inspections(doctype, docname, items):
@@ -679,3 +679,39 @@
repost_entry.flags.ignore_permissions = True
repost_entry.save()
repost_entry.submit()
+
+
+def create_item_wise_repost_entries(voucher_type, voucher_no, allow_zero_rate=False):
+ """Using a voucher create repost item valuation records for all item-warehouse pairs."""
+
+ stock_ledger_entries = frappe.db.get_all("Stock Ledger Entry",
+ filters={"voucher_type": voucher_type, "voucher_no": voucher_no},
+ fields=["item_code", "warehouse", "posting_date", "posting_time", "creation", "company"],
+ order_by="creation asc",
+ group_by="item_code, warehouse"
+ )
+ distinct_item_warehouses = set()
+
+ repost_entries = []
+
+ for sle in stock_ledger_entries:
+ item_wh = (sle.item_code, sle.warehouse)
+ if item_wh in distinct_item_warehouses:
+ continue
+ distinct_item_warehouses.add(item_wh)
+
+ repost_entry = frappe.new_doc("Repost Item Valuation")
+ repost_entry.based_on = "Item and Warehouse"
+ repost_entry.voucher_type = voucher_type
+ repost_entry.voucher_no = voucher_no
+
+ repost_entry.item_code = sle.item_code
+ repost_entry.warehouse = sle.warehouse
+ repost_entry.posting_date = sle.posting_date
+ repost_entry.posting_time = sle.posting_time
+ repost_entry.allow_zero_rate = allow_zero_rate
+ repost_entry.flags.ignore_links = True
+ repost_entry.submit()
+ repost_entries.append(repost_entry)
+
+ return repost_entries