fix: serial no filter in the Serial No Ledger report (backport #38669) (#38682)

fix: serial no filter in the Serial No Ledger report (#38669)

(cherry picked from commit 780c4278e6c3a5d89814479c57fed02d0ccd3b89)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
This commit is contained in:
mergify[bot] 2023-12-12 14:33:11 +05:30 committed by GitHub
parent 4055543f5d
commit d188c8ec0e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,9 +1,12 @@
# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors # Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors
# For license information, please see license.txt # For license information, please see license.txt
import copy
import frappe import frappe
from frappe import _ from frappe import _
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos as get_serial_nos_from_sle
from erpnext.stock.stock_ledger import get_stock_ledger_entries from erpnext.stock.stock_ledger import get_stock_ledger_entries
@ -15,8 +18,8 @@ def execute(filters=None):
def get_columns(filters): def get_columns(filters):
columns = [ columns = [
{"label": _("Posting Date"), "fieldtype": "Date", "fieldname": "posting_date"}, {"label": _("Posting Date"), "fieldtype": "Date", "fieldname": "posting_date", "width": 120},
{"label": _("Posting Time"), "fieldtype": "Time", "fieldname": "posting_time"}, {"label": _("Posting Time"), "fieldtype": "Time", "fieldname": "posting_time", "width": 90},
{ {
"label": _("Voucher Type"), "label": _("Voucher Type"),
"fieldtype": "Link", "fieldtype": "Link",
@ -29,7 +32,7 @@ def get_columns(filters):
"fieldtype": "Dynamic Link", "fieldtype": "Dynamic Link",
"fieldname": "voucher_no", "fieldname": "voucher_no",
"options": "voucher_type", "options": "voucher_type",
"width": 180, "width": 230,
}, },
{ {
"label": _("Company"), "label": _("Company"),
@ -49,7 +52,7 @@ def get_columns(filters):
"label": _("Status"), "label": _("Status"),
"fieldtype": "Data", "fieldtype": "Data",
"fieldname": "status", "fieldname": "status",
"width": 120, "width": 90,
}, },
{ {
"label": _("Serial No"), "label": _("Serial No"),
@ -62,7 +65,7 @@ def get_columns(filters):
"label": _("Valuation Rate"), "label": _("Valuation Rate"),
"fieldtype": "Float", "fieldtype": "Float",
"fieldname": "valuation_rate", "fieldname": "valuation_rate",
"width": 150, "width": 130,
}, },
{ {
"label": _("Qty"), "label": _("Qty"),
@ -102,15 +105,29 @@ def get_data(filters):
} }
) )
serial_nos = [{"serial_no": row.serial_no, "valuation_rate": row.valuation_rate}] serial_nos = []
if row.serial_no:
parsed_serial_nos = get_serial_nos_from_sle(row.serial_no)
for serial_no in parsed_serial_nos:
if filters.get("serial_no") and filters.get("serial_no") != serial_no:
continue
serial_nos.append(
{
"serial_no": serial_no,
"valuation_rate": abs(row.stock_value_difference / row.actual_qty),
}
)
if row.serial_and_batch_bundle: if row.serial_and_batch_bundle:
serial_nos = bundle_wise_serial_nos.get(row.serial_and_batch_bundle, []) serial_nos.extend(bundle_wise_serial_nos.get(row.serial_and_batch_bundle, []))
for index, bundle_data in enumerate(serial_nos): for index, bundle_data in enumerate(serial_nos):
if index == 0: if index == 0:
args.serial_no = bundle_data.get("serial_no") new_args = copy.deepcopy(args)
args.valuation_rate = bundle_data.get("valuation_rate") new_args.serial_no = bundle_data.get("serial_no")
data.append(args) new_args.valuation_rate = bundle_data.get("valuation_rate")
data.append(new_args)
else: else:
data.append( data.append(
{ {