fix: cannot set warehouse on deleting all so items and updating them (#21079)
* fix: cannot set warehouse on deleting all so items and updating them * fix: travis * fix: travis * fix: docname is editable in update items dialog Co-authored-by: Marica <maricadsouza221197@gmail.com>
This commit is contained in:
@@ -19,6 +19,7 @@ from erpnext.accounts.doctype.pricing_rule.utils import (apply_pricing_rule_on_t
|
|||||||
from erpnext.exceptions import InvalidCurrency
|
from erpnext.exceptions import InvalidCurrency
|
||||||
from six import text_type
|
from six import text_type
|
||||||
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_accounting_dimensions
|
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_accounting_dimensions
|
||||||
|
from erpnext.stock.get_item_details import get_item_warehouse
|
||||||
|
|
||||||
force_item_fields = ("item_group", "brand", "stock_uom", "is_fixed_asset", "item_tax_rate", "pricing_rules")
|
force_item_fields = ("item_group", "brand", "stock_uom", "is_fixed_asset", "item_tax_rate", "pricing_rules")
|
||||||
|
|
||||||
@@ -1126,16 +1127,16 @@ def set_sales_order_defaults(parent_doctype, parent_doctype_name, child_docname,
|
|||||||
"""
|
"""
|
||||||
Returns a Sales Order Item child item containing the default values
|
Returns a Sales Order Item child item containing the default values
|
||||||
"""
|
"""
|
||||||
p_doctype = 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_doctype, 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", 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_doctype.delivery_date
|
child_item.reqd_by_date = 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_code, item.stock_uom).get("conversion_factor") or 1.0
|
||||||
child_item.warehouse = p_doctype.set_warehouse or p_doctype.items[0].warehouse
|
child_item.warehouse = get_item_warehouse(item, p_doc, overwrite_warehouse=True)
|
||||||
return child_item
|
return child_item
|
||||||
|
|
||||||
|
|
||||||
@@ -1143,13 +1144,13 @@ def set_purchase_order_defaults(parent_doctype, parent_doctype_name, child_docna
|
|||||||
"""
|
"""
|
||||||
Returns a Purchase Order Item child item containing the default values
|
Returns a Purchase Order Item child item containing the default values
|
||||||
"""
|
"""
|
||||||
p_doctype = 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_doctype, 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", 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_doctype.schedule_date
|
child_item.schedule_date = 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_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
|
||||||
|
|||||||
@@ -453,7 +453,8 @@ erpnext.utils.update_child_items = function(opts) {
|
|||||||
fields: [{
|
fields: [{
|
||||||
fieldtype:'Data',
|
fieldtype:'Data',
|
||||||
fieldname:"docname",
|
fieldname:"docname",
|
||||||
hidden: 0,
|
read_only: 1,
|
||||||
|
hidden: 1,
|
||||||
}, {
|
}, {
|
||||||
fieldtype:'Link',
|
fieldtype:'Link',
|
||||||
fieldname:"item_code",
|
fieldname:"item_code",
|
||||||
|
|||||||
@@ -239,26 +239,13 @@ def get_basic_details(args, item, overwrite_warehouse=True):
|
|||||||
item_group_defaults = get_item_group_defaults(item.name, args.company)
|
item_group_defaults = get_item_group_defaults(item.name, args.company)
|
||||||
brand_defaults = get_brand_defaults(item.name, args.company)
|
brand_defaults = get_brand_defaults(item.name, args.company)
|
||||||
|
|
||||||
if overwrite_warehouse or not args.warehouse:
|
defaults = frappe._dict({
|
||||||
warehouse = (
|
'item_defaults': item_defaults,
|
||||||
args.get("set_warehouse") or
|
'item_group_defaults': item_group_defaults,
|
||||||
item_defaults.get("default_warehouse") or
|
'brand_defaults': brand_defaults
|
||||||
item_group_defaults.get("default_warehouse") or
|
})
|
||||||
brand_defaults.get("default_warehouse") or
|
|
||||||
args.warehouse
|
warehouse = get_item_warehouse(item, args, overwrite_warehouse, defaults)
|
||||||
)
|
|
||||||
|
|
||||||
if not warehouse:
|
|
||||||
defaults = frappe.defaults.get_defaults() or {}
|
|
||||||
warehouse_exists = frappe.db.exists("Warehouse", {
|
|
||||||
'name': defaults.default_warehouse,
|
|
||||||
'company': args.company
|
|
||||||
})
|
|
||||||
if defaults.get("default_warehouse") and warehouse_exists:
|
|
||||||
warehouse = defaults.default_warehouse
|
|
||||||
|
|
||||||
else:
|
|
||||||
warehouse = args.warehouse
|
|
||||||
|
|
||||||
if args.get('doctype') == "Material Request" and not args.get('material_request_type'):
|
if args.get('doctype') == "Material Request" and not args.get('material_request_type'):
|
||||||
args['material_request_type'] = frappe.db.get_value('Material Request',
|
args['material_request_type'] = frappe.db.get_value('Material Request',
|
||||||
@@ -271,7 +258,7 @@ def get_basic_details(args, item, overwrite_warehouse=True):
|
|||||||
expense_account = get_asset_category_account(fieldname = "fixed_asset_account", item = args.item_code, company= args.company)
|
expense_account = get_asset_category_account(fieldname = "fixed_asset_account", item = args.item_code, company= args.company)
|
||||||
|
|
||||||
#Set the UOM to the Default Sales UOM or Default Purchase UOM if configured in the Item Master
|
#Set the UOM to the Default Sales UOM or Default Purchase UOM if configured in the Item Master
|
||||||
if not args.uom:
|
if not args.get('uom'):
|
||||||
if args.get('doctype') in sales_doctypes:
|
if args.get('doctype') in sales_doctypes:
|
||||||
args.uom = item.sales_uom if item.sales_uom else item.stock_uom
|
args.uom = item.sales_uom if item.sales_uom else item.stock_uom
|
||||||
elif (args.get('doctype') in ['Purchase Order', 'Purchase Receipt', 'Purchase Invoice']) or \
|
elif (args.get('doctype') in ['Purchase Order', 'Purchase Receipt', 'Purchase Invoice']) or \
|
||||||
@@ -360,6 +347,37 @@ def get_basic_details(args, item, overwrite_warehouse=True):
|
|||||||
|
|
||||||
return out
|
return out
|
||||||
|
|
||||||
|
def get_item_warehouse(item, args, overwrite_warehouse, defaults={}):
|
||||||
|
if not defaults:
|
||||||
|
defaults = frappe._dict({
|
||||||
|
'item_defaults' : get_item_defaults(item.name, args.company),
|
||||||
|
'item_group_defaults' : get_item_group_defaults(item.name, args.company),
|
||||||
|
'brand_defaults' : get_brand_defaults(item.name, args.company)
|
||||||
|
})
|
||||||
|
|
||||||
|
if overwrite_warehouse or not args.warehouse:
|
||||||
|
warehouse = (
|
||||||
|
args.get("set_warehouse") or
|
||||||
|
defaults.item_defaults.get("default_warehouse") or
|
||||||
|
defaults.item_group_defaults.get("default_warehouse") or
|
||||||
|
defaults.brand_defaults.get("default_warehouse") or
|
||||||
|
args.get('warehouse')
|
||||||
|
)
|
||||||
|
|
||||||
|
if not warehouse:
|
||||||
|
defaults = frappe.defaults.get_defaults() or {}
|
||||||
|
warehouse_exists = frappe.db.exists("Warehouse", {
|
||||||
|
'name': defaults.default_warehouse,
|
||||||
|
'company': args.company
|
||||||
|
})
|
||||||
|
if defaults.get("default_warehouse") and warehouse_exists:
|
||||||
|
warehouse = defaults.default_warehouse
|
||||||
|
|
||||||
|
else:
|
||||||
|
warehouse = args.get('warehouse')
|
||||||
|
|
||||||
|
return warehouse
|
||||||
|
|
||||||
def update_barcode_value(out):
|
def update_barcode_value(out):
|
||||||
from erpnext.accounts.doctype.sales_invoice.pos import get_barcode_data
|
from erpnext.accounts.doctype.sales_invoice.pos import get_barcode_data
|
||||||
barcode_data = get_barcode_data([out])
|
barcode_data = get_barcode_data([out])
|
||||||
|
|||||||
Reference in New Issue
Block a user