fix: child item picker picking all items when creating PI from PR

(cherry picked from commit 738c1e0d0a)
This commit is contained in:
Mihir Kandoi
2025-08-20 17:20:03 +05:30
committed by Mergify
parent dec7680d73
commit edaff5d699
3 changed files with 19 additions and 3 deletions

View File

@@ -599,6 +599,9 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends (
docstatus: 1, docstatus: 1,
status: ["not in", ["Stopped", "Expired"]], status: ["not in", ["Stopped", "Expired"]],
}, },
allow_child_item_selection: true,
child_fieldname: "items",
child_columns: ["item_code", "item_name", "qty", "rate", "amount"],
}); });
}, },
__("Get Items From") __("Get Items From")

View File

@@ -2,6 +2,8 @@
# License: GNU General Public License v3. See license.txt # License: GNU General Public License v3. See license.txt
import json
import frappe import frappe
from frappe import _ from frappe import _
from frappe.model.mapper import get_mapped_doc from frappe.model.mapper import get_mapped_doc
@@ -235,7 +237,12 @@ def get_list_context(context=None):
@frappe.whitelist() @frappe.whitelist()
def make_purchase_order(source_name, target_doc=None): def make_purchase_order(source_name, target_doc=None, args=None):
if args is None:
args = {}
if isinstance(args, str):
args = json.loads(args)
def set_missing_values(source, target): def set_missing_values(source, target):
target.run_method("set_missing_values") target.run_method("set_missing_values")
target.run_method("get_schedule_dates") target.run_method("get_schedule_dates")
@@ -244,6 +251,11 @@ def make_purchase_order(source_name, target_doc=None):
def update_item(obj, target, source_parent): def update_item(obj, target, source_parent):
target.stock_qty = flt(obj.qty) * flt(obj.conversion_factor) target.stock_qty = flt(obj.qty) * flt(obj.conversion_factor)
def select_item(d):
filtered_items = args.get("filtered_children", [])
child_filter = d.name in filtered_items if filtered_items else True
return child_filter
doclist = get_mapped_doc( doclist = get_mapped_doc(
"Supplier Quotation", "Supplier Quotation",
source_name, source_name,
@@ -265,6 +277,7 @@ def make_purchase_order(source_name, target_doc=None):
["sales_order", "sales_order"], ["sales_order", "sales_order"],
], ],
"postprocess": update_item, "postprocess": update_item,
"condition": select_item,
}, },
"Purchase Taxes and Charges": { "Purchase Taxes and Charges": {
"doctype": "Purchase Taxes and Charges", "doctype": "Purchase Taxes and Charges",

View File

@@ -1322,8 +1322,8 @@ def make_purchase_invoice(source_name, target_doc=None, args=None):
"postprocess": update_item, "postprocess": update_item,
"filter": lambda d: ( "filter": lambda d: (
get_pending_qty(d)[0] <= 0 if not doc.get("is_return") else get_pending_qty(d)[0] > 0 get_pending_qty(d)[0] <= 0 if not doc.get("is_return") else get_pending_qty(d)[0] > 0
) ),
and select_item(d), "condition": select_item,
}, },
"Purchase Taxes and Charges": { "Purchase Taxes and Charges": {
"doctype": "Purchase Taxes and Charges", "doctype": "Purchase Taxes and Charges",