Track Operations removed and Global Switch added to disable capacity planning in manufacturing settings

This commit is contained in:
Neil Trini Lasrado 2015-07-21 18:11:43 +05:30
parent 75ebed815f
commit 2771b7d828
7 changed files with 18 additions and 45 deletions

View File

@ -15,6 +15,14 @@
"permlevel": 0, "permlevel": 0,
"precision": "" "precision": ""
}, },
{
"description": "Disables creation of time logs against Production Orders.\nOperations shall not be tracked against Production Order",
"fieldname": "disable_capacity_planning",
"fieldtype": "Check",
"label": "Disable Capacity Planning",
"permlevel": 0,
"precision": ""
},
{ {
"description": "Plan time logs outside Workstation Working Hours.", "description": "Plan time logs outside Workstation Working Hours.",
"fieldname": "allow_overtime", "fieldname": "allow_overtime",
@ -72,7 +80,7 @@
"is_submittable": 0, "is_submittable": 0,
"issingle": 1, "issingle": 1,
"istable": 0, "istable": 0,
"modified": "2015-06-15 05:52:22.986958", "modified": "2015-07-21 08:51:01.651774",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Manufacturing", "module": "Manufacturing",
"name": "Manufacturing Settings", "name": "Manufacturing Settings",

View File

@ -186,27 +186,16 @@ $.extend(cur_frm.cscript, {
}, },
bom_no: function() { bom_no: function() {
if (this.frm.doc.track_operations) { return this.frm.call({
return this.frm.call({ doc: this.frm.doc,
doc: this.frm.doc, method: "set_production_order_operations"
method: "set_production_order_operations" });
});
}
}, },
qty: function() { qty: function() {
frappe.ui.form.trigger("Production Order", 'bom_no') frappe.ui.form.trigger("Production Order", 'bom_no')
}, },
track_operations: function(doc) {
if (doc.track_operations) {
frappe.ui.form.trigger("Production Order", 'bom_no')
}
else {
doc.operations =[];
}
},
show_time_logs: function(doc, cdt, cdn) { show_time_logs: function(doc, cdt, cdn) {
var child = locals[cdt][cdn] var child = locals[cdt][cdn]
frappe.route_options = {"operation_id": child.name}; frappe.route_options = {"operation_id": child.name};

View File

@ -73,14 +73,6 @@
"label": "Use Multi-Level BOM", "label": "Use Multi-Level BOM",
"permlevel": 0 "permlevel": 0
}, },
{
"default": "1",
"fieldname": "track_operations",
"fieldtype": "Check",
"label": "Track Operations",
"permlevel": 0,
"precision": ""
},
{ {
"fieldname": "column_break1", "fieldname": "column_break1",
"fieldtype": "Column Break", "fieldtype": "Column Break",
@ -215,7 +207,7 @@
"read_only": 1 "read_only": 1
}, },
{ {
"depends_on": "track_operations", "depends_on": "",
"fieldname": "operations_section", "fieldname": "operations_section",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"label": "Operations", "label": "Operations",
@ -234,7 +226,7 @@
"read_only": 1 "read_only": 1
}, },
{ {
"depends_on": "track_operations", "depends_on": "operations",
"fieldname": "section_break_22", "fieldname": "section_break_22",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"label": "Operation Cost", "label": "Operation Cost",
@ -368,7 +360,7 @@
"idx": 1, "idx": 1,
"in_create": 0, "in_create": 0,
"is_submittable": 1, "is_submittable": 1,
"modified": "2015-07-13 05:28:23.259016", "modified": "2015-07-21 07:45:53.206902",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Manufacturing", "module": "Manufacturing",
"name": "Production Order", "name": "Production Order",

View File

@ -174,17 +174,12 @@ class ProductionOrder(Document):
def set_production_order_operations(self): def set_production_order_operations(self):
"""Fetch operations from BOM and set in 'Production Order'""" """Fetch operations from BOM and set in 'Production Order'"""
if not self.bom_no: if not self.bom_no or cint(frappe.db.get_single_value("Manufacturing Settings", "disable_capacity_planning")):
return return
self.set('operations', []) self.set('operations', [])
operations = frappe.db.sql("""select operation, description, workstation, idx, operations = frappe.db.sql("""select operation, description, workstation, idx,
hour_rate, time_in_mins, "Pending" as status from `tabBOM Operation` hour_rate, time_in_mins, "Pending" as status from `tabBOM Operation`
where parent = %s order by idx""", self.bom_no, as_dict=1) where parent = %s order by idx""", self.bom_no, as_dict=1)
if operations:
self.track_operations=1
else:
self.track_operations=0
frappe.msgprint(_("Cannot 'track operations' as selected BOM does not have Operations."))
self.set('operations', operations) self.set('operations', operations)
self.calculate_time() self.calculate_time()

View File

@ -173,7 +173,6 @@ erpnext.patches.v5_0.item_variants
erpnext.patches.v5_0.update_item_desc_in_invoice erpnext.patches.v5_0.update_item_desc_in_invoice
erpnext.patches.v5_1.fix_against_account erpnext.patches.v5_1.fix_against_account
erpnext.patches.v5_1.fix_credit_days_based_on erpnext.patches.v5_1.fix_credit_days_based_on
erpnext.patches.v5_1.track_operations
execute:frappe.rename_doc("DocType", "Salary Manager", "Process Payroll", force=True) execute:frappe.rename_doc("DocType", "Salary Manager", "Process Payroll", force=True)
erpnext.patches.v5_1.rename_roles erpnext.patches.v5_1.rename_roles
erpnext.patches.v5_1.default_bom erpnext.patches.v5_1.default_bom

View File

@ -1,8 +0,0 @@
from __future__ import unicode_literals
import frappe
def execute():
frappe.reload_doctype("Production Order")
frappe.db.sql("""Update `tabProduction Order` as po set track_operations=1 where
exists(select name from `tabProduction Order Operation` as po_operation where po_operation.parent = po.name )""")

View File

@ -201,9 +201,7 @@ class StockEntry(StockController):
def check_if_operations_completed(self): def check_if_operations_completed(self):
"""Check if Time Logs are completed against before manufacturing to capture operating costs.""" """Check if Time Logs are completed against before manufacturing to capture operating costs."""
prod_order = frappe.get_doc("Production Order", self.production_order) prod_order = frappe.get_doc("Production Order", self.production_order)
if not prod_order.track_operations:
return
for d in prod_order.get("operations"): for d in prod_order.get("operations"):
total_completed_qty = flt(self.fg_completed_qty) + flt(prod_order.produced_qty) total_completed_qty = flt(self.fg_completed_qty) + flt(prod_order.produced_qty)
if total_completed_qty > flt(d.completed_qty): if total_completed_qty > flt(d.completed_qty):