mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-25 16:04:46 +00:00
Merge pull request #49792 from frappe/mergify/bp/version-15-hotfix/pr-49791
refactor: convert item warehouse based reposting (backport #49791)
This commit is contained in:
@@ -84,7 +84,7 @@ def get_reposting_entries():
|
|||||||
def get_stock_ledgers(vouchers):
|
def get_stock_ledgers(vouchers):
|
||||||
return frappe.get_all(
|
return frappe.get_all(
|
||||||
"Stock Ledger Entry",
|
"Stock Ledger Entry",
|
||||||
fields=["item_code", "warehouse", "posting_date"],
|
fields=["item_code", "warehouse", "posting_date", "posting_time", "posting_datetime"],
|
||||||
filters={"voucher_no": ("in", vouchers)},
|
filters={"voucher_no": ("in", vouchers)},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -4,10 +4,11 @@
|
|||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.utils import get_link_to_form, parse_json
|
from frappe.utils import get_datetime, get_link_to_form, parse_json
|
||||||
|
|
||||||
import erpnext
|
import erpnext
|
||||||
from erpnext.accounts.utils import get_currency_precision, get_stock_accounts
|
from erpnext.accounts.utils import get_currency_precision, get_stock_accounts
|
||||||
|
from erpnext.stock.doctype.stock_reposting_settings.stock_reposting_settings import get_stock_ledgers
|
||||||
from erpnext.stock.doctype.warehouse.warehouse import get_warehouses_based_on_account
|
from erpnext.stock.doctype.warehouse.warehouse import get_warehouses_based_on_account
|
||||||
|
|
||||||
|
|
||||||
@@ -141,18 +142,29 @@ def create_reposting_entries(rows, company):
|
|||||||
rows = parse_json(rows)
|
rows = parse_json(rows)
|
||||||
|
|
||||||
entries = []
|
entries = []
|
||||||
for row in rows:
|
|
||||||
row = frappe._dict(row)
|
|
||||||
|
|
||||||
|
item_wh = frappe._dict()
|
||||||
|
vouchers = [row.get("voucher_no") for row in rows]
|
||||||
|
sles = get_stock_ledgers(vouchers)
|
||||||
|
for sle in sles:
|
||||||
|
key = (sle.item_code, sle.warehouse)
|
||||||
|
if key not in item_wh:
|
||||||
|
item_wh[key] = sle
|
||||||
|
elif get_datetime(item_wh.get(key).posting_datetime) > get_datetime(sle.posting_datetime):
|
||||||
|
item_wh[key] = sle
|
||||||
|
|
||||||
|
for key, sle in item_wh.items():
|
||||||
|
item_code, warehouse = key
|
||||||
try:
|
try:
|
||||||
doc = frappe.get_doc(
|
doc = frappe.get_doc(
|
||||||
{
|
{
|
||||||
"doctype": "Repost Item Valuation",
|
"doctype": "Repost Item Valuation",
|
||||||
"based_on": "Transaction",
|
"based_on": "Item and Warehouse",
|
||||||
"status": "Queued",
|
"status": "Queued",
|
||||||
"voucher_type": row.voucher_type,
|
"item_code": item_code,
|
||||||
"voucher_no": row.voucher_no,
|
"warehouse": warehouse,
|
||||||
"posting_date": row.posting_date,
|
"posting_date": sle.posting_date,
|
||||||
|
"posting_time": sle.posting_time,
|
||||||
"company": company,
|
"company": company,
|
||||||
"allow_nagative_stock": 1,
|
"allow_nagative_stock": 1,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user