feat: Provision to set Default Item Manufacturer
- Is Default checkbox added in Item Manufacturer - Default Item Manufacturer and Part No fields added to Item Master - Manufacturer Part No field editable in all child tables with validation - Manufacturer and Part No auto fetched via get_item_details in child table
This commit is contained in:
parent
0672b6b2e8
commit
3e7a8abf29
@ -754,8 +754,7 @@
|
|||||||
{
|
{
|
||||||
"fieldname": "manufacturer_part_no",
|
"fieldname": "manufacturer_part_no",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"label": "Manufacturer Part Number",
|
"label": "Manufacturer Part Number"
|
||||||
"read_only": 1
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"depends_on": "is_fixed_asset",
|
"depends_on": "is_fixed_asset",
|
||||||
@ -777,7 +776,7 @@
|
|||||||
"idx": 1,
|
"idx": 1,
|
||||||
"istable": 1,
|
"istable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2020-04-01 14:20:17.297284",
|
"modified": "2020-04-07 18:34:35.104178",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Accounts",
|
"module": "Accounts",
|
||||||
"name": "Purchase Invoice Item",
|
"name": "Purchase Invoice Item",
|
||||||
|
@ -702,8 +702,7 @@
|
|||||||
{
|
{
|
||||||
"fieldname": "manufacturer_part_no",
|
"fieldname": "manufacturer_part_no",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"label": "Manufacturer Part Number",
|
"label": "Manufacturer Part Number"
|
||||||
"read_only": 1
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"default": "0",
|
"default": "0",
|
||||||
@ -723,7 +722,7 @@
|
|||||||
"idx": 1,
|
"idx": 1,
|
||||||
"istable": 1,
|
"istable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2019-12-06 13:17:12.142799",
|
"modified": "2020-04-07 18:35:17.558928",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Buying",
|
"module": "Buying",
|
||||||
"name": "Purchase Order Item",
|
"name": "Purchase Order Item",
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"actions": [],
|
||||||
"autoname": "hash",
|
"autoname": "hash",
|
||||||
"creation": "2013-05-22 12:43:10",
|
"creation": "2013-05-22 12:43:10",
|
||||||
"doctype": "DocType",
|
"doctype": "DocType",
|
||||||
@ -522,8 +523,7 @@
|
|||||||
{
|
{
|
||||||
"fieldname": "manufacturer_part_no",
|
"fieldname": "manufacturer_part_no",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"label": "Manufacturer Part Number",
|
"label": "Manufacturer Part Number"
|
||||||
"read_only": 1
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "column_break_15",
|
"fieldname": "column_break_15",
|
||||||
@ -532,7 +532,8 @@
|
|||||||
],
|
],
|
||||||
"idx": 1,
|
"idx": 1,
|
||||||
"istable": 1,
|
"istable": 1,
|
||||||
"modified": "2019-06-02 05:32:46.019237",
|
"links": [],
|
||||||
|
"modified": "2020-04-07 18:35:51.175947",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Buying",
|
"module": "Buying",
|
||||||
"name": "Supplier Quotation Item",
|
"name": "Supplier Quotation Item",
|
||||||
|
@ -379,7 +379,31 @@ erpnext.buying.BuyingController = erpnext.TransactionController.extend({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
|
||||||
|
manufacturer_part_no: function(doc, cdt, cdn) {
|
||||||
|
const row = locals[cdt][cdn];
|
||||||
|
|
||||||
|
if (row.manufacturer_part_no) {
|
||||||
|
frappe.model.get_value('Item Manufacturer',
|
||||||
|
{
|
||||||
|
'item_code': row.item_code,
|
||||||
|
'manufacturer': row.manufacturer,
|
||||||
|
'manufacturer_part_no': row.manufacturer_part_no
|
||||||
|
},
|
||||||
|
'name',
|
||||||
|
function(data) {
|
||||||
|
if (!data) {
|
||||||
|
let msg = {
|
||||||
|
message: __("Manufacturer Part Number <b>{0}</b> is invalid", [row.manufacturer_part_no]),
|
||||||
|
title: __("Invalid Part Number")
|
||||||
|
}
|
||||||
|
frappe.throw(msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
cur_frm.add_fetch('project', 'cost_center', 'cost_center');
|
cur_frm.add_fetch('project', 'cost_center', 'cost_center');
|
||||||
|
@ -114,6 +114,8 @@
|
|||||||
"is_sub_contracted_item",
|
"is_sub_contracted_item",
|
||||||
"column_break_74",
|
"column_break_74",
|
||||||
"customer_code",
|
"customer_code",
|
||||||
|
"default_item_manufacturer",
|
||||||
|
"default_manufacturer_part_no",
|
||||||
"website_section",
|
"website_section",
|
||||||
"show_in_website",
|
"show_in_website",
|
||||||
"show_variant_in_website",
|
"show_variant_in_website",
|
||||||
@ -1038,6 +1040,18 @@
|
|||||||
"fieldname": "auto_create_assets",
|
"fieldname": "auto_create_assets",
|
||||||
"fieldtype": "Check",
|
"fieldtype": "Check",
|
||||||
"label": "Auto Create Assets on Purchase"
|
"label": "Auto Create Assets on Purchase"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "default_item_manufacturer",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Default Item Manufacturer",
|
||||||
|
"read_only": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "default_manufacturer_part_no",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Default Manufacturer Part No",
|
||||||
|
"read_only": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"has_web_view": 1,
|
"has_web_view": 1,
|
||||||
@ -1046,7 +1060,7 @@
|
|||||||
"image_field": "image",
|
"image_field": "image",
|
||||||
"links": [],
|
"links": [],
|
||||||
"max_attachments": 1,
|
"max_attachments": 1,
|
||||||
"modified": "2020-03-24 16:14:36.950677",
|
"modified": "2020-04-07 15:56:06.195722",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Stock",
|
"module": "Stock",
|
||||||
"name": "Item",
|
"name": "Item",
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"actions": [],
|
||||||
"allow_import": 1,
|
"allow_import": 1,
|
||||||
"creation": "2019-06-02 04:41:37.332911",
|
"creation": "2019-06-02 04:41:37.332911",
|
||||||
"doctype": "DocType",
|
"doctype": "DocType",
|
||||||
@ -10,7 +11,8 @@
|
|||||||
"manufacturer_part_no",
|
"manufacturer_part_no",
|
||||||
"column_break_3",
|
"column_break_3",
|
||||||
"item_name",
|
"item_name",
|
||||||
"description"
|
"description",
|
||||||
|
"is_default"
|
||||||
],
|
],
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
@ -52,9 +54,17 @@
|
|||||||
"fieldtype": "Small Text",
|
"fieldtype": "Small Text",
|
||||||
"label": "Description",
|
"label": "Description",
|
||||||
"read_only": 1
|
"read_only": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "0",
|
||||||
|
"fieldname": "is_default",
|
||||||
|
"fieldtype": "Check",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"label": "Is Default"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"modified": "2019-06-06 19:07:31.175919",
|
"links": [],
|
||||||
|
"modified": "2020-04-07 20:25:55.507905",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Stock",
|
"module": "Stock",
|
||||||
"name": "Item Manufacturer",
|
"name": "Item Manufacturer",
|
||||||
|
@ -11,6 +11,10 @@ from frappe.model.document import Document
|
|||||||
class ItemManufacturer(Document):
|
class ItemManufacturer(Document):
|
||||||
def validate(self):
|
def validate(self):
|
||||||
self.validate_duplicate_entry()
|
self.validate_duplicate_entry()
|
||||||
|
self.manage_default_item_manufacturer()
|
||||||
|
|
||||||
|
def on_trash(self):
|
||||||
|
self.manage_default_item_manufacturer(delete=True)
|
||||||
|
|
||||||
def validate_duplicate_entry(self):
|
def validate_duplicate_entry(self):
|
||||||
if self.is_new():
|
if self.is_new():
|
||||||
@ -24,6 +28,40 @@ class ItemManufacturer(Document):
|
|||||||
frappe.throw(_("Duplicate entry against the item code {0} and manufacturer {1}")
|
frappe.throw(_("Duplicate entry against the item code {0} and manufacturer {1}")
|
||||||
.format(self.item_code, self.manufacturer))
|
.format(self.item_code, self.manufacturer))
|
||||||
|
|
||||||
|
def manage_default_item_manufacturer(self, delete=False):
|
||||||
|
from frappe.model.utils import set_default
|
||||||
|
|
||||||
|
item = frappe.get_doc("Item", self.item_code)
|
||||||
|
default_manufacturer = item.default_item_manufacturer
|
||||||
|
default_part_no = item.default_manufacturer_part_no
|
||||||
|
|
||||||
|
if not self.is_default:
|
||||||
|
# if unchecked and default in Item master, clear it.
|
||||||
|
if default_manufacturer == self.manufacturer and default_part_no == self.manufacturer_part_no:
|
||||||
|
frappe.db.set_value("Item", item.name,
|
||||||
|
{
|
||||||
|
"default_item_manufacturer": None,
|
||||||
|
"default_manufacturer_part_no": None
|
||||||
|
})
|
||||||
|
|
||||||
|
elif self.is_default:
|
||||||
|
set_default(self, "item_code")
|
||||||
|
manufacturer, manufacturer_part_no = default_manufacturer, default_part_no
|
||||||
|
|
||||||
|
if delete:
|
||||||
|
manufacturer, manufacturer_part_no = None, None
|
||||||
|
|
||||||
|
elif (default_manufacturer != self.manufacturer) or \
|
||||||
|
(default_manufacturer == self.manufacturer and default_part_no != self.manufacturer_part_no):
|
||||||
|
manufacturer = self.manufacturer
|
||||||
|
manufacturer_part_no = self.manufacturer_part_no
|
||||||
|
|
||||||
|
frappe.db.set_value("Item", item.name,
|
||||||
|
{
|
||||||
|
"default_item_manufacturer": manufacturer,
|
||||||
|
"default_manufacturer_part_no": manufacturer_part_no
|
||||||
|
})
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def get_item_manufacturer_part_no(item_code, manufacturer):
|
def get_item_manufacturer_part_no(item_code, manufacturer):
|
||||||
return frappe.db.get_value("Item Manufacturer",
|
return frappe.db.get_value("Item Manufacturer",
|
||||||
|
@ -404,14 +404,13 @@
|
|||||||
{
|
{
|
||||||
"fieldname": "manufacturer_part_no",
|
"fieldname": "manufacturer_part_no",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"label": "Manufacturer Part Number",
|
"label": "Manufacturer Part Number"
|
||||||
"read_only": 1
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"idx": 1,
|
"idx": 1,
|
||||||
"istable": 1,
|
"istable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2020-02-25 03:09:10.698967",
|
"modified": "2020-04-07 18:37:54.495112",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Stock",
|
"module": "Stock",
|
||||||
"name": "Material Request Item",
|
"name": "Material Request Item",
|
||||||
|
@ -801,8 +801,7 @@
|
|||||||
{
|
{
|
||||||
"fieldname": "manufacturer_part_no",
|
"fieldname": "manufacturer_part_no",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"label": "Manufacturer Part Number",
|
"label": "Manufacturer Part Number"
|
||||||
"read_only": 1
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"depends_on": "is_fixed_asset",
|
"depends_on": "is_fixed_asset",
|
||||||
@ -832,7 +831,7 @@
|
|||||||
"idx": 1,
|
"idx": 1,
|
||||||
"istable": 1,
|
"istable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2020-03-11 14:19:48.799370",
|
"modified": "2020-04-07 18:38:21.141558",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Stock",
|
"module": "Stock",
|
||||||
"name": "Purchase Receipt Item",
|
"name": "Purchase Receipt Item",
|
||||||
|
@ -341,6 +341,9 @@ def get_basic_details(args, item, overwrite_warehouse=True):
|
|||||||
else:
|
else:
|
||||||
out["manufacturer_part_no"] = None
|
out["manufacturer_part_no"] = None
|
||||||
out["manufacturer"] = None
|
out["manufacturer"] = None
|
||||||
|
else:
|
||||||
|
out["manufacturer"], out["manufacturer_part_no"] = frappe.get_value("Item", item.name,
|
||||||
|
["default_item_manufacturer", "default_manufacturer_part_no"] )
|
||||||
|
|
||||||
child_doctype = args.doctype + ' Item'
|
child_doctype = args.doctype + ' Item'
|
||||||
meta = frappe.get_meta(child_doctype)
|
meta = frappe.get_meta(child_doctype)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user