From 021d077808a200be4cda178ac0df0b9bcce4886c Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Tue, 24 Dec 2024 14:49:41 +0530 Subject: [PATCH] fix: set project in GL from the SLE (#44879) --- erpnext/controllers/stock_controller.py | 45 ++++++++++++++++--------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index 9f48e0259ef..44f0ab21514 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -530,7 +530,7 @@ class StockController(AccountsController): "account": warehouse_account[sle.warehouse]["account"], "against": expense_account, "cost_center": item_row.cost_center, - "project": item_row.project or self.get("project"), + "project": sle.get("project") or item_row.project or self.get("project"), "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "debit": flt(sle.stock_value_difference, precision), "is_opening": item_row.get("is_opening") @@ -550,7 +550,9 @@ class StockController(AccountsController): "cost_center": item_row.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "debit": -1 * flt(sle.stock_value_difference, precision), - "project": item_row.get("project") or self.get("project"), + "project": sle.get("project") + or item_row.get("project") + or self.get("project"), "is_opening": item_row.get("is_opening") or self.get("is_opening") or "No", @@ -678,23 +680,34 @@ class StockController(AccountsController): def get_stock_ledger_details(self): stock_ledger = {} - stock_ledger_entries = frappe.db.sql( - """ - select - name, warehouse, stock_value_difference, valuation_rate, - voucher_detail_no, item_code, posting_date, posting_time, - actual_qty, qty_after_transaction - from - `tabStock Ledger Entry` - where - voucher_type=%s and voucher_no=%s and is_cancelled = 0 - """, - (self.doctype, self.name), - as_dict=True, - ) + + table = frappe.qb.DocType("Stock Ledger Entry") + + stock_ledger_entries = ( + frappe.qb.from_(table) + .select( + table.name, + table.warehouse, + table.stock_value_difference, + table.valuation_rate, + table.voucher_detail_no, + table.item_code, + table.posting_date, + table.posting_time, + table.actual_qty, + table.qty_after_transaction, + table.project, + ) + .where( + (table.voucher_type == self.doctype) + & (table.voucher_no == self.name) + & (table.is_cancelled == 0) + ) + ).run(as_dict=True) for sle in stock_ledger_entries: stock_ledger.setdefault(sle.voucher_detail_no, []).append(sle) + return stock_ledger def check_expense_account(self, item):