Merge pull request #2944 from neilLasrado/po

fixes in Production Order
This commit is contained in:
Nabin Hait 2015-03-12 17:52:59 +05:30
commit 53ea6fa686
7 changed files with 238 additions and 232 deletions

View File

@ -59,12 +59,12 @@ erpnext.production_order = {
var doc = frm.doc; var doc = frm.doc;
if (doc.docstatus === 1) { if (doc.docstatus === 1) {
if (flt(doc.material_transferred_for_qty) < flt(doc.qty)) { if (flt(doc.material_transferred_for_manufacturing) < flt(doc.qty)) {
frm.add_custom_button(__('Transfer Materials for Manufacture'), frm.add_custom_button(__('Transfer Materials for Manufacture'),
cur_frm.cscript['Transfer Raw Materials'], frappe.boot.doctype_icons["Stock Entry"]); cur_frm.cscript['Transfer Raw Materials'], frappe.boot.doctype_icons["Stock Entry"]);
} }
if (flt(doc.produced_qty) < flt(doc.material_transferred_for_qty)) { if (flt(doc.produced_qty) < flt(doc.material_transferred_for_manufacturing)) {
frm.add_custom_button(__('Update Finished Goods'), frm.add_custom_button(__('Update Finished Goods'),
cur_frm.cscript['Update Finished Goods'], frappe.boot.doctype_icons["Stock Entry"]); cur_frm.cscript['Update Finished Goods'], frappe.boot.doctype_icons["Stock Entry"]);
} }
@ -160,8 +160,8 @@ $.extend(cur_frm.cscript, {
make_se: function(purpose) { make_se: function(purpose) {
var me = this; var me = this;
var max = (purpose === "Manufacture") ? var max = (purpose === "Manufacture") ?
flt(this.frm.doc.material_transferred_for_qty) - flt(this.frm.doc.produced_qty) : flt(this.frm.doc.qty) - flt(this.frm.doc.produced_qty) :
flt(this.frm.doc.qty) - flt(this.frm.doc.material_transferred_for_qty); flt(this.frm.doc.qty) - flt(this.frm.doc.material_transferred_for_manufacturing);
frappe.prompt({fieldtype:"Int", label: __("Qty for {0}", [purpose]), fieldname:"qty", frappe.prompt({fieldtype:"Int", label: __("Qty for {0}", [purpose]), fieldname:"qty",
description: __("Max: {0}", [max]) }, description: __("Max: {0}", [max]) },

View File

@ -94,10 +94,13 @@
"reqd": 1 "reqd": 1
}, },
{ {
"default": "0",
"depends_on": "eval:doc.docstatus==1",
"description": "", "description": "",
"fieldname": "material_transferred_for_qty", "fieldname": "material_transferred_for_manufacturing",
"fieldtype": "Int", "fieldtype": "Float",
"label": "Material Transferred for Qty", "label": "Material Transferred for Manufacturing",
"no_copy": 1,
"permlevel": 0, "permlevel": 0,
"precision": "", "precision": "",
"read_only": 1 "read_only": 1
@ -351,8 +354,8 @@
"icon": "icon-cogs", "icon": "icon-cogs",
"idx": 1, "idx": 1,
"in_create": 0, "in_create": 0,
"is_submittable": 1, "is_submittable": 1,
"modified": "2015-03-09 15:28:12.535414", "modified": "2015-03-10 17:02:28.401930",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Manufacturing", "module": "Manufacturing",
"name": "Production Order", "name": "Production Order",

View File

@ -124,8 +124,9 @@ class ProductionOrder(Document):
def update_production_order_qty(self): def update_production_order_qty(self):
"""Update **Manufactured Qty** and **Material Transferred for Qty** in Production Order """Update **Manufactured Qty** and **Material Transferred for Qty** in Production Order
based on Stock Entry""" based on Stock Entry"""
print "call"
for purpose, fieldname in (("Manufacture", "produced_qty"), for purpose, fieldname in (("Manufacture", "produced_qty"),
("Material Transfer for Manufacture", "material_transferred_for_qty")): ("Material Transfer for Manufacture", "material_transferred_for_manufacturing")):
qty = flt(frappe.db.sql("""select sum(fg_completed_qty) qty = flt(frappe.db.sql("""select sum(fg_completed_qty)
from `tabStock Entry` where production_order=%s and docstatus=1 from `tabStock Entry` where production_order=%s and docstatus=1
and purpose=%s""", (self.name, purpose))[0][0]) and purpose=%s""", (self.name, purpose))[0][0])

View File

@ -118,7 +118,7 @@ erpnext.patches.v5_0.rename_customer_issue
erpnext.patches.v5_0.update_material_transfer_for_manufacture erpnext.patches.v5_0.update_material_transfer_for_manufacture
erpnext.patches.v5_0.manufacturing_activity_type erpnext.patches.v5_0.manufacturing_activity_type
erpnext.patches.v5_0.update_item_description_and_image erpnext.patches.v5_0.update_item_description_and_image
erpnext.patches.v5_0.update_material_transferred_for_qty erpnext.patches.v5_0.update_material_transferred_for_manufacturing
erpnext.patches.v5_0.stock_entry_update_value erpnext.patches.v5_0.stock_entry_update_value
erpnext.patches.v5_0.convert_stock_reconciliation erpnext.patches.v5_0.convert_stock_reconciliation
erpnext.patches.v5_0.update_projects erpnext.patches.v5_0.update_projects

View File

@ -2,7 +2,7 @@ import frappe
def execute(): def execute():
frappe.reload_doctype("Production Order") frappe.reload_doctype("Production Order")
frappe.db.sql("""update `tabProduction Order` set material_transferred_for_qty= frappe.db.sql("""update `tabProduction Order` set material_transferred_for_manufacturing=
(select sum(fg_completed_qty) from `tabStock Entry` (select sum(fg_completed_qty) from `tabStock Entry`
where docstatus=1 where docstatus=1
and production_order=`tabProduction Order`.name and production_order=`tabProduction Order`.name

View File

@ -1,283 +1,285 @@
{ {
"allow_import": 1, "allow_import": 1,
"autoname": "naming_series:", "autoname": "naming_series:",
"creation": "2013-04-03 16:38:41", "creation": "2013-04-03 16:38:41",
"description": "Log of Activities performed by users against Tasks that can be used for tracking time, billing.", "description": "Log of Activities performed by users against Tasks that can be used for tracking time, billing.",
"docstatus": 0, "docstatus": 0,
"doctype": "DocType", "doctype": "DocType",
"document_type": "Master", "document_type": "Master",
"fields": [ "fields": [
{ {
"fieldname": "naming_series", "fieldname": "naming_series",
"fieldtype": "Select", "fieldtype": "Select",
"label": "Series", "label": "Series",
"options": "TL-", "options": "TL-",
"permlevel": 0, "permlevel": 0,
"read_only": 0, "read_only": 0,
"reqd": 1 "reqd": 1
}, },
{ {
"fieldname": "from_time", "fieldname": "from_time",
"fieldtype": "Datetime", "fieldtype": "Datetime",
"in_list_view": 0, "in_list_view": 0,
"label": "From Time", "label": "From Time",
"permlevel": 0, "permlevel": 0,
"read_only": 0, "read_only": 0,
"reqd": 1 "reqd": 1
}, },
{ {
"fieldname": "to_time", "fieldname": "to_time",
"fieldtype": "Datetime", "fieldtype": "Datetime",
"in_list_view": 0, "in_list_view": 0,
"label": "To Time", "label": "To Time",
"permlevel": 0, "permlevel": 0,
"read_only": 0, "read_only": 0,
"reqd": 1 "reqd": 1
}, },
{ {
"fieldname": "hours", "fieldname": "hours",
"fieldtype": "Float", "fieldtype": "Float",
"in_list_view": 1, "in_list_view": 1,
"label": "Hours", "label": "Hours",
"permlevel": 0, "permlevel": 0,
"read_only": 0 "read_only": 0
}, },
{ {
"fieldname": "billable", "fieldname": "billable",
"fieldtype": "Check", "fieldtype": "Check",
"in_list_view": 0, "in_list_view": 0,
"label": "Billable", "label": "Billable",
"permlevel": 0, "permlevel": 0,
"read_only": 0 "read_only": 0
}, },
{ {
"fieldname": "user", "fieldname": "user",
"fieldtype": "Link", "fieldtype": "Link",
"label": "User", "label": "User",
"options": "User", "options": "User",
"permlevel": 0, "permlevel": 0,
"precision": "" "precision": ""
}, },
{ {
"fieldname": "column_break_3", "fieldname": "column_break_3",
"fieldtype": "Column Break", "fieldtype": "Column Break",
"permlevel": 0, "permlevel": 0,
"read_only": 0 "read_only": 0
}, },
{ {
"fieldname": "status", "fieldname": "status",
"fieldtype": "Select", "fieldtype": "Select",
"in_list_view": 0, "in_list_view": 0,
"label": "Status", "label": "Status",
"options": "Draft\nSubmitted\nBatched for Billing\nBilled\nCancelled", "options": "Draft\nSubmitted\nBatched for Billing\nBilled\nCancelled",
"permlevel": 0, "permlevel": 0,
"read_only": 1, "read_only": 1,
"reqd": 0 "reqd": 0
}, },
{ {
"default": "Project", "default": "Project",
"fieldname": "time_log_for", "fieldname": "time_log_for",
"fieldtype": "Select", "fieldtype": "Select",
"label": "Time Log For", "label": "Time Log For",
"options": "Project\nManufacturing", "options": "Project\nManufacturing",
"permlevel": 0, "permlevel": 0,
"precision": "", "precision": "",
"read_only": 1, "read_only": 1,
"reqd": 0 "reqd": 0
}, },
{ {
"depends_on": "", "depends_on": "",
"fieldname": "activity_type", "fieldname": "activity_type",
"fieldtype": "Link", "fieldtype": "Link",
"in_list_view": 0, "in_list_view": 0,
"label": "Activity Type", "label": "Activity Type",
"options": "Activity Type", "options": "Activity Type",
"permlevel": 0, "permlevel": 0,
"read_only": 0, "read_only": 0,
"reqd": 1 "reqd": 1
}, },
{ {
"depends_on": "eval:doc.time_log_for != 'Manufacturing'", "depends_on": "eval:doc.time_log_for != 'Manufacturing'",
"fieldname": "task", "fieldname": "task",
"fieldtype": "Link", "fieldtype": "Link",
"label": "Task", "label": "Task",
"options": "Task", "options": "Task",
"permlevel": 0, "permlevel": 0,
"read_only": 0 "read_only": 0
}, },
{ {
"depends_on": "eval:doc.time_log_for == 'Manufacturing'", "depends_on": "eval:doc.time_log_for == 'Manufacturing'",
"fieldname": "section_break_11", "fieldname": "section_break_11",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"permlevel": 0, "permlevel": 0,
"precision": "" "precision": ""
}, },
{ {
"depends_on": "eval:doc.time_log_for == 'Manufacturing'", "depends_on": "eval:doc.time_log_for == 'Manufacturing'",
"fieldname": "production_order", "fieldname": "production_order",
"fieldtype": "Link", "fieldtype": "Link",
"label": "Production Order", "label": "Production Order",
"options": "Production Order", "options": "Production Order",
"permlevel": 0, "permlevel": 0,
"precision": "", "precision": "",
"read_only": 1 "read_only": 1
}, },
{ {
"depends_on": "eval:doc.time_log_for == 'Manufacturing'", "depends_on": "eval:doc.time_log_for == 'Manufacturing'",
"fieldname": "operation", "fieldname": "operation",
"fieldtype": "Select", "fieldtype": "Select",
"label": "Operation", "label": "Operation",
"options": "", "options": "",
"permlevel": 0, "permlevel": 0,
"precision": "", "precision": "",
"read_only": 1 "read_only": 1
}, },
{ {
"fieldname": "operation_id", "fieldname": "operation_id",
"fieldtype": "Data", "fieldtype": "Data",
"label": "Operation ID", "hidden": 1,
"options": "", "label": "Operation ID",
"permlevel": 0, "options": "",
"precision": "", "permlevel": 0,
"precision": "",
"print_hide": 1,
"read_only": 1 "read_only": 1
}, },
{ {
"fieldname": "column_break_14", "fieldname": "column_break_14",
"fieldtype": "Column Break", "fieldtype": "Column Break",
"permlevel": 0, "permlevel": 0,
"precision": "" "precision": ""
}, },
{ {
"depends_on": "eval:doc.time_log_for == 'Manufacturing'", "depends_on": "eval:doc.time_log_for == 'Manufacturing'",
"fieldname": "workstation", "fieldname": "workstation",
"fieldtype": "Link", "fieldtype": "Link",
"label": "Workstation", "label": "Workstation",
"options": "Workstation", "options": "Workstation",
"permlevel": 0, "permlevel": 0,
"precision": "", "precision": "",
"read_only": 1 "read_only": 1
}, },
{ {
"depends_on": "eval:doc.time_log_for == 'Manufacturing'", "depends_on": "eval:doc.time_log_for == 'Manufacturing'",
"description": "Operation completed for how many finished goods?", "description": "Operation completed for how many finished goods?",
"fieldname": "completed_qty", "fieldname": "completed_qty",
"fieldtype": "Float", "fieldtype": "Float",
"label": "Completed Qty", "label": "Completed Qty",
"permlevel": 0, "permlevel": 0,
"precision": "" "precision": ""
}, },
{ {
"fieldname": "section_break_7", "fieldname": "section_break_7",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"permlevel": 0, "permlevel": 0,
"read_only": 0 "read_only": 0
}, },
{ {
"fieldname": "note", "fieldname": "note",
"fieldtype": "Text Editor", "fieldtype": "Text Editor",
"label": "Note", "label": "Note",
"permlevel": 0, "permlevel": 0,
"read_only": 0 "read_only": 0
}, },
{ {
"fieldname": "section_break_9", "fieldname": "section_break_9",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"permlevel": 0, "permlevel": 0,
"read_only": 0 "read_only": 0
}, },
{ {
"depends_on": "eval:doc.time_log_for", "depends_on": "eval:doc.time_log_for",
"fieldname": "project", "fieldname": "project",
"fieldtype": "Link", "fieldtype": "Link",
"in_list_view": 1, "in_list_view": 1,
"label": "Project", "label": "Project",
"options": "Project", "options": "Project",
"permlevel": 0, "permlevel": 0,
"read_only": 0 "read_only": 0
}, },
{ {
"description": "Will be updated when batched.", "description": "Will be updated when batched.",
"fieldname": "time_log_batch", "fieldname": "time_log_batch",
"fieldtype": "Link", "fieldtype": "Link",
"label": "Time Log Batch", "label": "Time Log Batch",
"options": "Time Log Batch", "options": "Time Log Batch",
"permlevel": 0, "permlevel": 0,
"read_only": 1 "read_only": 1
}, },
{ {
"description": "Will be updated when billed.", "description": "Will be updated when billed.",
"fieldname": "sales_invoice", "fieldname": "sales_invoice",
"fieldtype": "Link", "fieldtype": "Link",
"label": "Sales Invoice", "label": "Sales Invoice",
"options": "Sales Invoice", "options": "Sales Invoice",
"permlevel": 0, "permlevel": 0,
"read_only": 1 "read_only": 1
}, },
{ {
"fieldname": "column_break_16", "fieldname": "column_break_16",
"fieldtype": "Column Break", "fieldtype": "Column Break",
"permlevel": 0, "permlevel": 0,
"read_only": 0 "read_only": 0
}, },
{ {
"fieldname": "amended_from", "fieldname": "amended_from",
"fieldtype": "Link", "fieldtype": "Link",
"ignore_user_permissions": 1, "ignore_user_permissions": 1,
"label": "Amended From", "label": "Amended From",
"no_copy": 1, "no_copy": 1,
"options": "Time Log", "options": "Time Log",
"permlevel": 1, "permlevel": 1,
"print_hide": 1, "print_hide": 1,
"read_only": 0 "read_only": 0
}, },
{ {
"fieldname": "title", "fieldname": "title",
"fieldtype": "Data", "fieldtype": "Data",
"hidden": 1, "hidden": 1,
"label": "Title", "label": "Title",
"permlevel": 0, "permlevel": 0,
"precision": "" "precision": ""
} }
], ],
"icon": "icon-time", "icon": "icon-time",
"idx": 1, "idx": 1,
"is_submittable": 1, "is_submittable": 1,
"modified": "2015-02-26 02:22:10.312376", "modified": "2015-03-10 17:07:35.506886",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Projects", "module": "Projects",
"name": "Time Log", "name": "Time Log",
"owner": "Administrator", "owner": "Administrator",
"permissions": [ "permissions": [
{ {
"amend": 1, "amend": 1,
"apply_user_permissions": 1, "apply_user_permissions": 1,
"cancel": 1, "cancel": 1,
"create": 1, "create": 1,
"delete": 1, "delete": 1,
"email": 1, "email": 1,
"permlevel": 0, "permlevel": 0,
"print": 1, "print": 1,
"read": 1, "read": 1,
"report": 1, "report": 1,
"role": "Projects User", "role": "Projects User",
"share": 1, "share": 1,
"submit": 1, "submit": 1,
"write": 1 "write": 1
}, },
{ {
"amend": 1, "amend": 1,
"cancel": 1, "cancel": 1,
"delete": 1, "delete": 1,
"email": 1, "email": 1,
"permlevel": 0, "permlevel": 0,
"print": 1, "print": 1,
"read": 1, "read": 1,
"report": 1, "report": 1,
"role": "Projects Manager", "role": "Projects Manager",
"share": 1, "share": 1,
"submit": 1, "submit": 1,
"write": 1 "write": 1
} }
], ],
"title_field": "title" "title_field": "title"
} }

View File

@ -470,7 +470,7 @@ class StockEntry(StockController):
pro_doc = frappe.get_doc("Production Order", self.production_order) pro_doc = frappe.get_doc("Production Order", self.production_order)
_validate_production_order(pro_doc) _validate_production_order(pro_doc)
pro_doc.run_method("update_status") pro_doc.run_method("update_status")
if self.purpose in "Manufacture": if self.purpose in ["Material Transfer for Manufacture","Manufacture"]:
pro_doc.run_method("update_production_order_qty") pro_doc.run_method("update_production_order_qty")
self.update_planned_qty(pro_doc) self.update_planned_qty(pro_doc)