fix: warehouse unset when cannot find item warehouse
* cannot set delivery date when all items gets deleted and new are added
This commit is contained in:
parent
34640777cd
commit
f53299e98a
@ -1123,36 +1123,39 @@ def get_supplier_block_status(party_name):
|
|||||||
}
|
}
|
||||||
return info
|
return info
|
||||||
|
|
||||||
def set_sales_order_defaults(parent_doctype, parent_doctype_name, child_docname, item_code):
|
def set_sales_order_defaults(parent_doctype, parent_doctype_name, child_docname, trans_item):
|
||||||
"""
|
"""
|
||||||
Returns a Sales Order Item child item containing the default values
|
Returns a Sales Order Item child item containing the default values
|
||||||
"""
|
"""
|
||||||
p_doc = frappe.get_doc(parent_doctype, parent_doctype_name)
|
p_doc = frappe.get_doc(parent_doctype, parent_doctype_name)
|
||||||
child_item = frappe.new_doc('Sales Order Item', p_doc, child_docname)
|
child_item = frappe.new_doc('Sales Order Item', p_doc, child_docname)
|
||||||
item = frappe.get_doc("Item", item_code)
|
item = frappe.get_doc("Item", trans_item.get('item_code'))
|
||||||
child_item.item_code = item.item_code
|
child_item.item_code = item.item_code
|
||||||
child_item.item_name = item.item_name
|
child_item.item_name = item.item_name
|
||||||
child_item.description = item.description
|
child_item.description = item.description
|
||||||
child_item.reqd_by_date = p_doc.delivery_date
|
child_item.delivery_date = trans_item.get('delivery_date') or p_doc.delivery_date
|
||||||
child_item.uom = item.stock_uom
|
child_item.uom = item.stock_uom
|
||||||
child_item.conversion_factor = get_conversion_factor(item_code, item.stock_uom).get("conversion_factor") or 1.0
|
child_item.conversion_factor = get_conversion_factor(item.item_code, item.stock_uom).get("conversion_factor") or 1.0
|
||||||
child_item.warehouse = get_item_warehouse(item, p_doc, overwrite_warehouse=True)
|
child_item.warehouse = get_item_warehouse(item, p_doc, overwrite_warehouse=True)
|
||||||
|
if not child_item.warehouse:
|
||||||
|
frappe.throw(_("Cannot find {} for item {}. Please set the same in Item Master or Stock Settings.")
|
||||||
|
.format(frappe.bold("default warehouse"), frappe.bold(item.item_code)))
|
||||||
return child_item
|
return child_item
|
||||||
|
|
||||||
|
|
||||||
def set_purchase_order_defaults(parent_doctype, parent_doctype_name, child_docname, item_code):
|
def set_purchase_order_defaults(parent_doctype, parent_doctype_name, child_docname, trans_item):
|
||||||
"""
|
"""
|
||||||
Returns a Purchase Order Item child item containing the default values
|
Returns a Purchase Order Item child item containing the default values
|
||||||
"""
|
"""
|
||||||
p_doc = frappe.get_doc(parent_doctype, parent_doctype_name)
|
p_doc = frappe.get_doc(parent_doctype, parent_doctype_name)
|
||||||
child_item = frappe.new_doc('Purchase Order Item', p_doc, child_docname)
|
child_item = frappe.new_doc('Purchase Order Item', p_doc, child_docname)
|
||||||
item = frappe.get_doc("Item", item_code)
|
item = frappe.get_doc("Item", trans_item.get('item_code'))
|
||||||
child_item.item_code = item.item_code
|
child_item.item_code = item.item_code
|
||||||
child_item.item_name = item.item_name
|
child_item.item_name = item.item_name
|
||||||
child_item.description = item.description
|
child_item.description = item.description
|
||||||
child_item.schedule_date = p_doc.schedule_date
|
child_item.schedule_date = trans_item.get('schedule_date') or p_doc.schedule_date
|
||||||
child_item.uom = item.stock_uom
|
child_item.uom = item.stock_uom
|
||||||
child_item.conversion_factor = get_conversion_factor(item_code, item.stock_uom).get("conversion_factor") or 1.0
|
child_item.conversion_factor = get_conversion_factor(item.item_code, item.stock_uom).get("conversion_factor") or 1.0
|
||||||
child_item.base_rate = 1 # Initiallize value will update in parent validation
|
child_item.base_rate = 1 # Initiallize value will update in parent validation
|
||||||
child_item.base_amount = 1 # Initiallize value will update in parent validation
|
child_item.base_amount = 1 # Initiallize value will update in parent validation
|
||||||
return child_item
|
return child_item
|
||||||
@ -1196,9 +1199,9 @@ def update_child_qty_rate(parent_doctype, trans_items, parent_doctype_name, chil
|
|||||||
if not d.get("docname"):
|
if not d.get("docname"):
|
||||||
new_child_flag = True
|
new_child_flag = True
|
||||||
if parent_doctype == "Sales Order":
|
if parent_doctype == "Sales Order":
|
||||||
child_item = set_sales_order_defaults(parent_doctype, parent_doctype_name, child_docname, d.get("item_code"))
|
child_item = set_sales_order_defaults(parent_doctype, parent_doctype_name, child_docname, d)
|
||||||
if parent_doctype == "Purchase Order":
|
if parent_doctype == "Purchase Order":
|
||||||
child_item = set_purchase_order_defaults(parent_doctype, parent_doctype_name, child_docname, d.get("item_code"))
|
child_item = set_purchase_order_defaults(parent_doctype, parent_doctype_name, child_docname, d)
|
||||||
else:
|
else:
|
||||||
child_item = frappe.get_doc(parent_doctype + ' Item', d.get("docname"))
|
child_item = frappe.get_doc(parent_doctype + ' Item', d.get("docname"))
|
||||||
if flt(child_item.get("rate")) == flt(d.get("rate")) and flt(child_item.get("qty")) == flt(d.get("qty")):
|
if flt(child_item.get("rate")) == flt(d.get("rate")) and flt(child_item.get("qty")) == flt(d.get("qty")):
|
||||||
@ -1243,6 +1246,7 @@ def update_child_qty_rate(parent_doctype, trans_items, parent_doctype_name, chil
|
|||||||
|
|
||||||
child_item.flags.ignore_validate_update_after_submit = True
|
child_item.flags.ignore_validate_update_after_submit = True
|
||||||
if new_child_flag:
|
if new_child_flag:
|
||||||
|
parent.load_from_db()
|
||||||
child_item.idx = len(parent.items) + 1
|
child_item.idx = len(parent.items) + 1
|
||||||
child_item.insert()
|
child_item.insert()
|
||||||
else:
|
else:
|
||||||
|
@ -436,21 +436,7 @@ erpnext.utils.update_child_items = function(opts) {
|
|||||||
const cannot_add_row = (typeof opts.cannot_add_row === 'undefined') ? true : opts.cannot_add_row;
|
const cannot_add_row = (typeof opts.cannot_add_row === 'undefined') ? true : opts.cannot_add_row;
|
||||||
const child_docname = (typeof opts.cannot_add_row === 'undefined') ? "items" : opts.child_docname;
|
const child_docname = (typeof opts.cannot_add_row === 'undefined') ? "items" : opts.child_docname;
|
||||||
this.data = [];
|
this.data = [];
|
||||||
const dialog = new frappe.ui.Dialog({
|
const fields = [{
|
||||||
title: __("Update Items"),
|
|
||||||
fields: [
|
|
||||||
{
|
|
||||||
fieldname: "trans_items",
|
|
||||||
fieldtype: "Table",
|
|
||||||
label: "Items",
|
|
||||||
cannot_add_rows: cannot_add_row,
|
|
||||||
in_place_edit: true,
|
|
||||||
reqd: 1,
|
|
||||||
data: this.data,
|
|
||||||
get_data: () => {
|
|
||||||
return this.data;
|
|
||||||
},
|
|
||||||
fields: [{
|
|
||||||
fieldtype:'Data',
|
fieldtype:'Data',
|
||||||
fieldname:"docname",
|
fieldname:"docname",
|
||||||
read_only: 1,
|
read_only: 1,
|
||||||
@ -477,7 +463,32 @@ erpnext.utils.update_child_items = function(opts) {
|
|||||||
read_only: 0,
|
read_only: 0,
|
||||||
in_list_view: 1,
|
in_list_view: 1,
|
||||||
label: __('Rate')
|
label: __('Rate')
|
||||||
}]
|
}];
|
||||||
|
|
||||||
|
if (frm.doc.doctype == 'Sales Order' || frm.doc.doctype == 'Purchase Order' ) {
|
||||||
|
fields.splice(2, 0, {
|
||||||
|
fieldtype: 'Date',
|
||||||
|
fieldname: frm.doc.doctype == 'Sales Order' ? "delivery_date" : "schedule_date",
|
||||||
|
in_list_view: 1,
|
||||||
|
label: frm.doc.doctype == 'Sales Order' ? __("Delivery Date") : __("Reqd by date")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const dialog = new frappe.ui.Dialog({
|
||||||
|
title: __("Update Items"),
|
||||||
|
fields: [
|
||||||
|
{
|
||||||
|
fieldname: "trans_items",
|
||||||
|
fieldtype: "Table",
|
||||||
|
label: "Items",
|
||||||
|
cannot_add_rows: cannot_add_row,
|
||||||
|
in_place_edit: true,
|
||||||
|
reqd: 1,
|
||||||
|
data: this.data,
|
||||||
|
get_data: () => {
|
||||||
|
return this.data;
|
||||||
|
},
|
||||||
|
fields: fields
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
primary_action: function() {
|
primary_action: function() {
|
||||||
@ -506,6 +517,8 @@ erpnext.utils.update_child_items = function(opts) {
|
|||||||
"docname": d.name,
|
"docname": d.name,
|
||||||
"name": d.name,
|
"name": d.name,
|
||||||
"item_code": d.item_code,
|
"item_code": d.item_code,
|
||||||
|
"delivery_date": d.delivery_date,
|
||||||
|
"schedule_date": d.schedule_date,
|
||||||
"qty": d.qty,
|
"qty": d.qty,
|
||||||
"rate": d.rate,
|
"rate": d.rate,
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user