diff --git a/manufacturing/doctype/production_order/production_order.js b/manufacturing/doctype/production_order/production_order.js index 85d9633334..ea8dd5bed5 100644 --- a/manufacturing/doctype/production_order/production_order.js +++ b/manufacturing/doctype/production_order/production_order.js @@ -8,88 +8,118 @@ // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License -// along with this program. If not, see . - +// along with this program. If not, see . cur_frm.cscript.onload = function(doc, dt, dn) { - if (!doc.posting_date) doc.transaction_date = dateutil.obj_to_str(new Date()); - if (!doc.status) doc.status = 'Draft'; - cfn_set_fields(doc, dt, dn); + if (!doc.status) doc.status = 'Draft'; + cfn_set_fields(doc, dt, dn); } // ================================== Refresh ========================================== -cur_frm.cscript.refresh = function(doc, dt, dn) { - cfn_set_fields(doc, dt, dn); +cur_frm.cscript.refresh = function(doc, dt, dn) { + cur_frm.set_intro(""); + cfn_set_fields(doc, dt, dn); + if(doc.docstatus===0 && !doc.__islocal) { + cur_frm.set_intro("Submit this Production Order for further processing."); + } else if(doc.docstatus===1) { + if(doc.status === "Stopped") { + cur_frm.set_intro("This Production Order is Stopped."); + } else { + if(doc.produced_qty == doc.qty) { + cur_frm.set_intro("This Production Order is Completed."); + } else { + cur_frm.set_intro("This Production Order is in progress."); + } + } + } + + cur_frm.cscript.update_status_html(doc); +} + +cur_frm.cscript.update_status_html = function(doc) { + $(cur_frm.get_field("status_html").wrapper).empty(); + + if(doc.issued_qty) { + $(repl("
\ +
\ +
"), { + manufactured_qty: doc.produced_qty, + manufactured: Math.round((doc.produced_qty / doc.qty) * 100), + uom: doc.stock_uom, + }).appendTo(cur_frm.get_field("status_html").wrapper); + } } var cfn_set_fields = function(doc, dt, dn) { - if (doc.docstatus == 1) { - if (doc.status != 'Stopped' && doc.status != 'Completed') - cur_frm.add_custom_button('Stop!', cur_frm.cscript['Stop Production Order']); - else if (doc.status == 'Stopped') - cur_frm.add_custom_button('Unstop', cur_frm.cscript['Unstop Production Order']); + if (doc.docstatus == 1) { + if (doc.status != 'Stopped' && doc.status != 'Completed') + cur_frm.add_custom_button('Stop!', cur_frm.cscript['Stop Production Order']); + else if (doc.status == 'Stopped') + cur_frm.add_custom_button('Unstop', cur_frm.cscript['Unstop Production Order']); - if (doc.status == 'Submitted' || doc.status == 'Material Transferred' || doc.status == 'In Process'){ - cur_frm.add_custom_button('Transfer Material', cur_frm.cscript['Transfer Material']); - cur_frm.add_custom_button('Backflush', cur_frm.cscript['Backflush']); - } - } + if (doc.status == 'Submitted' || doc.status == 'Material Transferred' || doc.status == 'In Process'){ + cur_frm.add_custom_button('Issue Raw Materials', cur_frm.cscript['Issue Raw Materials']); + cur_frm.add_custom_button('Update Finished Goods', cur_frm.cscript['Update Finished Goods']); + } + } } -cur_frm.cscript.production_item = function(doc, dt, dn) { - get_server_fields('get_item_detail',doc.production_item,'',doc,dt,dn,1); +cur_frm.cscript.production_item = function(doc) { + cur_frm.call({ + method: "get_item_details", + args: { item: doc.production_item } + }); } cur_frm.cscript['Stop Production Order'] = function() { - var doc = cur_frm.doc; - var check = confirm("Do you really want to stop production order: " + doc.name); - if (check) { - $c_obj(make_doclist(doc.doctype, doc.name), 'stop_unstop', 'Stopped', function(r, rt) {cur_frm.refresh();}); + var doc = cur_frm.doc; + var check = confirm("Do you really want to stop production order: " + doc.name); + if (check) { + $c_obj(make_doclist(doc.doctype, doc.name), 'stop_unstop', 'Stopped', function(r, rt) {cur_frm.refresh();}); } } cur_frm.cscript['Unstop Production Order'] = function() { - var doc = cur_frm.doc; - var check = confirm("Do really want to unstop production order: " + doc.name); - if (check) - $c_obj(make_doclist(doc.doctype, doc.name), 'stop_unstop', 'Unstopped', function(r, rt) {cur_frm.refresh();}); + var doc = cur_frm.doc; + var check = confirm("Do really want to unstop production order: " + doc.name); + if (check) + $c_obj(make_doclist(doc.doctype, doc.name), 'stop_unstop', 'Unstopped', function(r, rt) {cur_frm.refresh();}); } -cur_frm.cscript['Transfer Material'] = function() { - var doc = cur_frm.doc; - cur_frm.cscript.make_se(doc, process = 'Material Transfer'); +cur_frm.cscript['Issue Raw Materials'] = function() { + var doc = cur_frm.doc; + cur_frm.cscript.make_se(doc, process = 'Material Transfer'); } -cur_frm.cscript['Backflush'] = function() { - var doc = cur_frm.doc; - cur_frm.cscript.make_se(doc, process = 'Backflush'); +cur_frm.cscript['Update Finished Goods'] = function() { + var doc = cur_frm.doc; + cur_frm.cscript.make_se(doc, process = 'Backflush'); } cur_frm.cscript.make_se = function(doc, process) { - var se = LocalDB.create('Stock Entry'); - se = locals['Stock Entry'][se]; - se.purpose = 'Production Order'; - se.process = process; - se.posting_date = doc.posting_date; - se.production_order = doc.name; - se.fiscal_year = doc.fiscal_year; - se.company = doc.company; - - loaddoc('Stock Entry', se.name); + var se = LocalDB.create('Stock Entry'); + se = locals['Stock Entry'][se]; + se.purpose = 'Production Order'; + se.process = process; + se.production_order = doc.name; + se.company = doc.company; + + loaddoc('Stock Entry', se.name); } cur_frm.fields_dict['production_item'].get_query = function(doc) { - return 'SELECT DISTINCT `tabItem`.`name`, `tabItem`.`description` FROM `tabItem` WHERE (IFNULL(`tabItem`.`end_of_life`,"") = "" OR `tabItem`.`end_of_life` = "0000-00-00" OR `tabItem`.`end_of_life` > NOW()) AND `tabItem`.docstatus != 2 AND `tabItem`.is_pro_applicable = "Yes" AND `tabItem`.%(key)s LIKE "%s" ORDER BY `tabItem`.`name` LIMIT 50'; + return 'SELECT DISTINCT `tabItem`.`name`, `tabItem`.`description` FROM `tabItem` WHERE (IFNULL(`tabItem`.`end_of_life`,"") = "" OR `tabItem`.`end_of_life` = "0000-00-00" OR `tabItem`.`end_of_life` > NOW()) AND `tabItem`.docstatus != 2 AND `tabItem`.is_pro_applicable = "Yes" AND `tabItem`.%(key)s LIKE "%s" ORDER BY `tabItem`.`name` LIMIT 50'; } cur_frm.fields_dict['project_name'].get_query = function(doc, dt, dn) { - return 'SELECT `tabProject`.name FROM `tabProject` \ - WHERE `tabProject`.status not in ("Completed", "Cancelled") \ - AND `tabProject`.name LIKE "%s" ORDER BY `tabProject`.name ASC LIMIT 50'; + return 'SELECT `tabProject`.name FROM `tabProject` \ + WHERE `tabProject`.status not in ("Completed", "Cancelled") \ + AND `tabProject`.name LIKE "%s" ORDER BY `tabProject`.name ASC LIMIT 50'; } diff --git a/manufacturing/doctype/production_order/production_order.py b/manufacturing/doctype/production_order/production_order.py index 07073da918..b57d424543 100644 --- a/manufacturing/doctype/production_order/production_order.py +++ b/manufacturing/doctype/production_order/production_order.py @@ -35,20 +35,8 @@ class DocType: def autoname(self): - p = self.doc.fiscal_year - self.doc.name = make_autoname('PRO/' + self.doc.fiscal_year[2:5]+self.doc.fiscal_year[7:9] + '/.######') - - - def get_item_detail(self, prod_item): - item = sql("""select description, stock_uom, default_bom from `tabItem` - where (ifnull(end_of_life,'')='' or end_of_life = '0000-00-00' or end_of_life > now()) and name = %s""", prod_item, as_dict = 1 ) - ret = { - 'description' : item and item[0]['description'] or '', - 'stock_uom' : item and item[0]['stock_uom'] or '', - 'default_bom' : item and item[0]['default_bom'] or '' - } - return ret - + self.doc.name = make_autoname('PRO/' + self.doc.fiscal_year[2:5] + + self.doc.fiscal_year[7:9] + '/.######') def validate(self): if self.doc.production_item : @@ -144,4 +132,21 @@ class DocType: "posting_date": nowdate(), "planned_qty": flt(qty) } - get_obj('Warehouse', self.doc.fg_warehouse).update_bin(args) \ No newline at end of file + get_obj('Warehouse', self.doc.fg_warehouse).update_bin(args) + +@webnotes.whitelist() +def get_item_details(item): + res = webnotes.conn.sql("""select stock_uom + from `tabItem` where (ifnull(end_of_life, "")="" or end_of_life > now()) + and name=%s""", (item,), as_dict=1) + + if not res: + return {} + + res = res[0] + bom = webnotes.conn.sql("""select name from `tabBOM` where item=%s + and ifnull(is_default, 0)=1""", (item,)) + if bom: + res.bom_no = bom[0][0] + + return res \ No newline at end of file diff --git a/manufacturing/doctype/production_order/production_order.txt b/manufacturing/doctype/production_order/production_order.txt index 65ae4b8969..8de81efb00 100644 --- a/manufacturing/doctype/production_order/production_order.txt +++ b/manufacturing/doctype/production_order/production_order.txt @@ -2,9 +2,9 @@ { "owner": "Administrator", "docstatus": 0, - "creation": "2012-07-03 13:30:03", + "creation": "2012-12-11 15:15:05", "modified_by": "Administrator", - "modified": "2012-12-10 18:30:00" + "modified": "2012-12-11 18:30:35" }, { "is_submittable": 1, @@ -18,14 +18,22 @@ "parent": "Production Order", "doctype": "DocField", "parenttype": "DocType", + "permlevel": 0, "parentfield": "fields" }, { - "name": "__common__", "parent": "Production Order", "read": 1, + "cancel": 1, + "name": "__common__", + "amend": 1, + "create": 1, "doctype": "DocPerm", + "submit": 1, + "write": 1, "parenttype": "DocType", + "role": "Manufacturing User", + "permlevel": 0, "parentfield": "permissions" }, { @@ -33,291 +41,183 @@ "doctype": "DocType" }, { - "doctype": "DocField", - "width": "50%", - "fieldname": "column_break0", - "fieldtype": "Column Break", - "permlevel": 0 - }, - { - "description": "Item for which this Production Order is raised.", - "oldfieldtype": "Link", - "colour": "White:FFF", - "doctype": "DocField", - "label": "Production Item", - "oldfieldname": "production_item", - "permlevel": 0, - "trigger": "Client", - "fieldname": "production_item", - "fieldtype": "Link", - "reqd": 1, - "in_filter": 1, - "options": "Item" - }, - { - "description": "Bill of Material which was considered for manufacturing the production item.", - "oldfieldtype": "Link", - "colour": "White:FFF", - "doctype": "DocField", - "label": "BOM No", - "oldfieldname": "bom_no", - "permlevel": 0, - "trigger": "Client", - "fieldname": "bom_no", - "fieldtype": "Link", - "reqd": 1, - "options": "BOM" - }, - { - "description": "Quantity of item for which Production Order is raised.", - "oldfieldtype": "Currency", - "colour": "White:FFF", - "doctype": "DocField", - "label": "Qty", - "oldfieldname": "qty", - "fieldname": "qty", - "fieldtype": "Currency", - "reqd": 1, - "permlevel": 0 - }, - { - "description": "The date on which current entry will get or has actually executed.", - "oldfieldtype": "Date", - "colour": "White:FFF", - "doctype": "DocField", - "label": "Posting Date", - "oldfieldname": "posting_date", - "fieldname": "posting_date", - "fieldtype": "Date", - "reqd": 1, - "permlevel": 0 - }, - { - "oldfieldtype": "Column Break", - "doctype": "DocField", - "width": "50%", - "fieldname": "column_break1", - "fieldtype": "Column Break", - "permlevel": 0 - }, - { - "description": "The warehouse for finished goods where stock of produced items will be updated.", - "oldfieldtype": "Link", - "colour": "White:FFF", - "doctype": "DocField", - "label": "FG Warehouse", - "oldfieldname": "fg_warehouse", - "permlevel": 0, - "fieldname": "fg_warehouse", - "fieldtype": "Link", - "reqd": 1, - "in_filter": 1, - "options": "Warehouse" - }, - { - "description": "The work in progress warehouse where raw materials will be operated upon to create finished goods.", - "oldfieldtype": "Link", - "colour": "White:FFF", - "doctype": "DocField", - "label": "WIP Warehouse", - "oldfieldname": "wip_warehouse", - "permlevel": 0, - "fieldname": "wip_warehouse", - "fieldtype": "Link", - "reqd": 1, - "in_filter": 1, - "options": "Warehouse" - }, - { - "description": "If checked, BOM for sub-assembly items will be considered for getting raw materials. Otherwise, all sub-assembly items will be treated as a raw material.", - "default": "1", - "oldfieldtype": "Select", - "colour": "White:FFF", - "doctype": "DocField", - "label": "Use Multi-Level BOM", - "oldfieldname": "consider_sa_items", - "fieldname": "use_multi_level_bom", - "fieldtype": "Check", - "reqd": 0, - "in_filter": 1, - "permlevel": 0 - }, - { - "description": "Updated after finished goods are transferred to FG Warehouse through Stock Entry", + "read_only": 1, + "depends_on": "eval:!doc.__islocal", "no_copy": 1, - "oldfieldtype": "Currency", - "colour": "White:FFF", - "doctype": "DocField", - "label": "Produced Qty", - "oldfieldname": "produced_qty", - "fieldname": "produced_qty", - "fieldtype": "Currency", - "permlevel": 1 - }, - { - "doctype": "DocField", - "label": "More Info", - "fieldname": "more_info", - "fieldtype": "Section Break", - "permlevel": 0 - }, - { - "doctype": "DocField", - "width": "50%", - "fieldname": "column_break2", - "fieldtype": "Column Break", - "permlevel": 0 - }, - { - "no_copy": 1, - "oldfieldtype": "Select", - "doctype": "DocField", - "label": "Origin", - "oldfieldname": "origin", - "options": "Manual\nMRP", - "fieldname": "origin", - "fieldtype": "Select", - "reqd": 1, - "permlevel": 0, - "in_filter": 1 - }, - { - "no_copy": 1, - "oldfieldtype": "Select", + "search_index": 1, "doctype": "DocField", "label": "Status", "oldfieldname": "status", - "permlevel": 1, "fieldname": "status", "fieldtype": "Select", - "search_index": 1, + "oldfieldtype": "Select", "reqd": 1, "options": "\nDraft\nSubmitted\nStopped\nIn Process\nCompleted\nCancelled", "in_filter": 1 }, { - "doctype": "DocField", - "label": "Sales Order", - "options": "Sales Order", - "fieldname": "sales_order", - "fieldtype": "Link", - "permlevel": 0 - }, - { - "description": "Select name of the project if Production Order need to be created against any project", + "read_only": 0, "oldfieldtype": "Link", - "label": "Project Name", - "oldfieldname": "project_name", - "trigger": "Client", - "fieldname": "project_name", - "fieldtype": "Link", "doctype": "DocField", - "options": "Project", - "permlevel": 0, + "label": "Item To Manufacture", + "oldfieldname": "production_item", + "fieldname": "production_item", + "fieldtype": "Link", + "reqd": 1, + "options": "Item", "in_filter": 1 }, { + "read_only": 0, + "description": "Bill of Material to be considered for manufacturing", "oldfieldtype": "Link", "doctype": "DocField", - "label": "Company", - "oldfieldname": "company", - "options": "Company", - "fieldname": "company", + "label": "BOM No", + "oldfieldname": "bom_no", + "fieldname": "bom_no", + "fieldtype": "Link", + "depends_on": "production_item", + "reqd": 1, + "options": "BOM" + }, + { + "read_only": 0, + "description": "Update Planned Quantity in this Warehouse", + "depends_on": "production_item", + "doctype": "DocField", + "label": "For Warehouse", + "fieldname": "fg_warehouse", "fieldtype": "Link", "reqd": 1, - "permlevel": 0 - }, - { - "oldfieldtype": "Select", - "doctype": "DocField", - "label": "Fiscal Year", - "oldfieldname": "fiscal_year", - "options": "link:Fiscal Year", - "fieldname": "fiscal_year", - "fieldtype": "Select", - "reqd": 1, - "permlevel": 0, - "in_filter": 1 - }, - { - "no_copy": 1, - "oldfieldtype": "Data", - "doctype": "DocField", - "label": "Amended From", - "oldfieldname": "amended_from", - "fieldname": "amended_from", - "fieldtype": "Data", - "permlevel": 1 - }, - { - "no_copy": 1, - "oldfieldtype": "Date", - "doctype": "DocField", - "label": "Amendment Date", - "oldfieldname": "amendment_date", - "fieldname": "amendment_date", - "fieldtype": "Date", - "permlevel": 1 + "options": "Warehouse" }, { + "read_only": 0, + "oldfieldtype": "Column Break", "doctype": "DocField", "width": "50%", - "fieldname": "column_break3", - "fieldtype": "Column Break", - "permlevel": 0 + "fieldname": "column_break1", + "fieldtype": "Column Break" }, { + "read_only": 0, + "depends_on": "issued_qty", + "doctype": "DocField", + "label": "Status HTML", + "fieldname": "status_html", + "fieldtype": "HTML" + }, + { + "read_only": 0, + "oldfieldtype": "Currency", + "doctype": "DocField", + "label": "Qty To Manufacture", + "oldfieldname": "qty", + "fieldname": "qty", + "fieldtype": "Float", + "depends_on": "production_item", + "reqd": 1 + }, + { + "read_only": 1, + "description": "Automatically updated via Backflush (Stock Entry)", + "no_copy": 1, + "oldfieldtype": "Currency", + "doctype": "DocField", + "label": "Manufactured Qty", + "oldfieldname": "produced_qty", + "fieldname": "produced_qty", + "fieldtype": "Float", + "depends_on": "eval:doc.docstatus==1" + }, + { + "read_only": 1, "oldfieldtype": "Data", "doctype": "DocField", "label": "Stock UOM", "oldfieldname": "stock_uom", "fieldname": "stock_uom", "fieldtype": "Data", - "permlevel": 1 + "depends_on": "production_item" }, { - "oldfieldtype": "Text", + "read_only": 0, "doctype": "DocField", - "label": "Production Item Description", - "oldfieldname": "description", - "width": "300px", - "fieldname": "description", - "fieldtype": "Text", - "permlevel": 0 + "label": "More Info", + "fieldname": "more_info", + "fieldtype": "Section Break" }, { - "amend": 1, - "create": 1, - "doctype": "DocPerm", - "submit": 1, - "write": 1, - "role": "System Manager", - "cancel": 1, - "permlevel": 0 + "read_only": 0, + "description": "Manufacture against Sales Order", + "doctype": "DocField", + "label": "Sales Order", + "fieldname": "sales_order", + "fieldtype": "Link", + "options": "Sales Order" }, { - "doctype": "DocPerm", - "role": "All", - "permlevel": 1 + "read_only": 0, + "oldfieldtype": "Link", + "doctype": "DocField", + "label": "Project Name", + "oldfieldname": "project_name", + "fieldname": "project_name", + "fieldtype": "Link", + "options": "Project", + "in_filter": 1 }, { - "amend": 1, - "create": 1, - "doctype": "DocPerm", - "submit": 1, - "write": 1, - "role": "Manufacturing Manager", - "cancel": 1, - "permlevel": 0 + "read_only": 0, + "doctype": "DocField", + "width": "50%", + "fieldname": "column_break2", + "fieldtype": "Column Break" }, { - "amend": 1, - "create": 1, - "doctype": "DocPerm", - "submit": 1, - "write": 1, - "role": "Manufacturing User", - "cancel": 1, - "permlevel": 0 + "read_only": 0, + "oldfieldtype": "Link", + "doctype": "DocField", + "label": "Company", + "oldfieldname": "company", + "fieldname": "company", + "fieldtype": "Link", + "reqd": 1, + "options": "Company" + }, + { + "read_only": 0, + "oldfieldtype": "Select", + "doctype": "DocField", + "label": "Fiscal Year", + "oldfieldname": "fiscal_year", + "fieldname": "fiscal_year", + "fieldtype": "Select", + "reqd": 1, + "options": "link:Fiscal Year", + "in_filter": 1 + }, + { + "read_only": 1, + "no_copy": 1, + "oldfieldtype": "Data", + "doctype": "DocField", + "label": "Amended From", + "oldfieldname": "amended_from", + "fieldname": "amended_from", + "fieldtype": "Data" + }, + { + "print_hide": 1, + "description": "The date at which current entry is corrected in the system.", + "no_copy": 1, + "depends_on": "eval:doc.amended_from", + "doctype": "DocField", + "label": "Amendment Date", + "fieldname": "amendment_date", + "fieldtype": "Date" + }, + { + "doctype": "DocPerm" } ] \ No newline at end of file diff --git a/manufacturing/doctype/production_order/production_order_list.js b/manufacturing/doctype/production_order/production_order_list.js index 73b9535d46..dd56b71974 100644 --- a/manufacturing/doctype/production_order/production_order_list.js +++ b/manufacturing/doctype/production_order/production_order_list.js @@ -7,7 +7,7 @@ wn.doclistviews['Production Order'] = wn.views.ListView.extend({ '`tabProduction Order`.fg_warehouse', '`tabProduction Order`.stock_uom', 'IFNULL(`tabProduction Order`.qty, 0) as qty', - '`tabProduction Order`.posting_date', + '`tabProduction Order`.creation', '`tabProduction Order`.status', ]); this.stats = this.stats.concat(['company']); @@ -15,7 +15,7 @@ wn.doclistviews['Production Order'] = wn.views.ListView.extend({ prepare_data: function(data) { this._super(data); - data.posting_date = wn.datetime.str_to_user(data.posting_date); + data.creation = wn.datetime.str_to_user(data.creation); }, columns: [ @@ -33,7 +33,7 @@ wn.doclistviews['Production Order'] = wn.views.ListView.extend({ }, css: {'text-align':'right'} }, - {width: '12%', content:'posting_date', css: { + {width: '12%', content:'creation', css: { 'text-align': 'right', 'color':'#777' }}, ] diff --git a/manufacturing/doctype/production_planning_tool/production_planning_tool.py b/manufacturing/doctype/production_planning_tool/production_planning_tool.py index fb87fb27a3..76bf84ba39 100644 --- a/manufacturing/doctype/production_planning_tool/production_planning_tool.py +++ b/manufacturing/doctype/production_planning_tool/production_planning_tool.py @@ -204,10 +204,7 @@ class DocType: "bom_no" : d.bom_no, "description" : d.description, "stock_uom" : d.stock_uom, - "use_multi_level_bom": self.doc.use_multi_level_bom, "company" : self.doc.company, - "posting_date" : nowdate(), - "origin" : "MRP", "wip_warehouse" : "", "fg_warehouse" : "", "status" : "Draft", diff --git a/manufacturing/doctype/production_planning_tool/production_planning_tool.txt b/manufacturing/doctype/production_planning_tool/production_planning_tool.txt index dcec425bf6..6e750a8a33 100644 --- a/manufacturing/doctype/production_planning_tool/production_planning_tool.txt +++ b/manufacturing/doctype/production_planning_tool/production_planning_tool.txt @@ -2,14 +2,15 @@ { "owner": "jai@webnotestech.com", "docstatus": 0, - "creation": "2012-07-03 13:30:03", + "creation": "2012-12-11 15:15:06", "modified_by": "Administrator", - "modified": "2012-12-10 18:30:00" + "modified": "2012-12-11 16:13:59" }, { "read_only": 1, "issingle": 1, "in_create": 1, + "default_print_format": "Standard", "doctype": "DocType", "module": "Manufacturing", "name": "__common__" @@ -39,7 +40,6 @@ }, { "description": "Select Sales Orders from which you want to create Production Orders.", - "colour": "White:FFF", "doctype": "DocField", "label": "Select Sales Orders", "fieldname": "select_sales_orders", @@ -68,9 +68,9 @@ { "doctype": "DocField", "label": "Company", - "reqd": 1, "fieldname": "company", "fieldtype": "Link", + "reqd": 1, "options": "Company" }, { @@ -99,7 +99,6 @@ }, { "description": "Pull sales orders (pending to deliver) based on the above criteria", - "colour": "White:FFF", "doctype": "DocField", "label": "Get Sales Orders", "fieldname": "get_sales_orders", @@ -107,7 +106,6 @@ "options": "get_open_sales_orders" }, { - "colour": "White:FFF", "doctype": "DocField", "label": "Production Plan Sales Orders", "fieldname": "pp_so_details", @@ -115,17 +113,14 @@ "options": "Production Plan Sales Order" }, { - "colour": "White:FFF", "doctype": "DocField", "label": "Clear Table", - "trigger": "Client", "fieldname": "clear_so_table", "fieldtype": "Button", "options": "clear_so_table" }, { "description": "Enter items and planned qty for which you want to raise production orders or download raw materials for analysis.", - "colour": "White:FFF", "doctype": "DocField", "label": "Create Production Orders", "fieldname": "create_production_orders", @@ -133,7 +128,6 @@ }, { "description": "Pull items from Sales Order mentioned in the above table.", - "colour": "White:FFF", "doctype": "DocField", "label": "Get Items", "fieldname": "get_items_from_so", @@ -141,7 +135,6 @@ "options": "get_items_from_so" }, { - "colour": "White:FFF", "doctype": "DocField", "label": "Production Plan Items", "fieldname": "pp_details", @@ -149,23 +142,20 @@ "options": "Production Plan Item" }, { - "colour": "White:FFF", "doctype": "DocField", "label": "Clear Table", - "trigger": "Client", "fieldname": "clear_item_table", "fieldtype": "Button", "options": "clear_item_table" }, { - "description": "If checked, BOM for sub-assembly items will be considered for raw materials. Otherwise, all sub-assembly items will be treated as a raw material.", + "description": "If checked, BOM for sub-assembly items will be considered for getting raw materials. Otherwise, all sub-assembly items will be treated as a raw material.", "default": "1", - "colour": "White:FFF", "doctype": "DocField", "label": "Use Multi-Level BOM", - "reqd": 0, "fieldname": "use_multi_level_bom", - "fieldtype": "Check" + "fieldtype": "Check", + "reqd": 0 }, { "doctype": "DocField", @@ -181,7 +171,6 @@ }, { "description": "Separate production order will be created for each finished good item.", - "colour": "White:FFF", "doctype": "DocField", "label": "Raise Production Order", "fieldname": "raise_production_order", @@ -196,10 +185,8 @@ }, { "description": "Download a report containing all raw materials with their latest inventory status", - "colour": "White:FFF", "doctype": "DocField", "label": "Download Materials Required", - "trigger": "Client", "fieldname": "download_materials_required", "fieldtype": "Button" }, diff --git a/patches/december_2012/production_cleanup.py b/patches/december_2012/production_cleanup.py index 0c25b895ae..cb78bd140c 100644 --- a/patches/december_2012/production_cleanup.py +++ b/patches/december_2012/production_cleanup.py @@ -30,6 +30,9 @@ def rename_module(): webnotes.conn.set_global("modules_list", webnotes.conn.get_global('modules_list').replace("Production", "Manufacturing")) + + # set end of life to null if "0000-00-00" + webnotes.conn.sql("""update `tabItem` set end_of_life=null where end_of_life='0000-00-00'""") def rebuilt_exploded_bom(): from webnotes.model.code import get_obj diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py index 04d898aa43..574c24e688 100644 --- a/stock/doctype/stock_entry/stock_entry.py +++ b/stock/doctype/stock_entry/stock_entry.py @@ -469,6 +469,8 @@ class DocType(TransactionBase): "planned_qty": (is_submit and -1 or 1 ) * flt(self.doc.fg_completed_qty) } get_obj('Warehouse', pro_obj.doc.fg_warehouse).update_bin(args) + elif self.doc.process == 'Material Transfer': + pass pro_obj.doc.status = (flt(pro_obj.doc.qty)==flt(pro_obj.doc.produced_qty)) \ and 'Completed' or 'In Process'