From 304a4a66b416f3b1353da89717ef4b48ea1388e1 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 8 Jul 2013 17:01:32 +0530 Subject: [PATCH] [production order] [delivery note] fixes, pull --- .../production_order/production_order.js | 4 +- .../production_order/production_order.py | 4 +- stock/doctype/delivery_note/delivery_note.js | 48 ++++----- stock/doctype/delivery_note/delivery_note.txt | 102 +----------------- stock/doctype/stock_entry/stock_entry.py | 13 ++- 5 files changed, 40 insertions(+), 131 deletions(-) diff --git a/manufacturing/doctype/production_order/production_order.js b/manufacturing/doctype/production_order/production_order.js index 4c41d947150..77dce03d587 100644 --- a/manufacturing/doctype/production_order/production_order.js +++ b/manufacturing/doctype/production_order/production_order.js @@ -28,8 +28,8 @@ cur_frm.cscript.refresh = function(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) { - var percent = flt(doc.produced_qty) / doc.qty * 100; - cur_frm.dashboard.add_progress(cint(percent) + "% " + wn._("Complete")); + var percent = flt(doc.produced_qty) / flt(doc.qty) * 100; + cur_frm.dashboard.add_progress(cint(percent) + "% " + wn._("Complete"), percent); if(doc.status === "Stopped") { cur_frm.dashboard.set_headline_alert(wn._("Stopped"), "alert-danger", "icon-stop"); diff --git a/manufacturing/doctype/production_order/production_order.py b/manufacturing/doctype/production_order/production_order.py index c76a87f6b86..2d5b5fa3c5d 100644 --- a/manufacturing/doctype/production_order/production_order.py +++ b/manufacturing/doctype/production_order/production_order.py @@ -76,9 +76,9 @@ class DocType: (self.doc.sales_order, self.doc.production_item))[0][0] # total qty in SO so_qty = flt(so_item_qty) + flt(dnpi_qty) - + if ordered_qty_against_so > so_qty: - msgprint("""Total production order qty for item: %s against sales order: %s \ + webnotes.msgprint("""Total production order qty for item: %s against sales order: %s \ will be %s, which is greater than sales order qty (%s). Please reduce qty or remove the item.""" % (self.doc.production_item, self.doc.sales_order, diff --git a/stock/doctype/delivery_note/delivery_note.js b/stock/doctype/delivery_note/delivery_note.js index 8756e83c35b..117e77eacb2 100644 --- a/stock/doctype/delivery_note/delivery_note.js +++ b/stock/doctype/delivery_note/delivery_note.js @@ -46,15 +46,27 @@ erpnext.stock.DeliveryNoteController = erpnext.selling.SellingController.extend( var aii_enabled = cint(sys_defaults.auto_inventory_accounting) cur_frm.fields_dict[cur_frm.cscript.fname].grid.set_column_disp("expense_account", aii_enabled); cur_frm.fields_dict[cur_frm.cscript.fname].grid.set_column_disp("cost_center", aii_enabled); + + if (this.frm.doc.docstatus===0) { + cur_frm.add_custom_button(wn._('From Sales Order'), + function() { + wn.model.map_current_doc({ + method: "selling.doctype.sales_order.sales_order.make_delivery_note", + source_doctype: "Sales Order", + get_query_filters: { + docstatus: 1, + status: ["!=", "Stopped"], + per_delivered: ["<", 99.99], + project_name: cur_frm.doc.project_name || undefined, + customer: cur_frm.doc.customer || undefined, + company: cur_frm.doc.company + } + }) + }); + } + }, - get_items: function() { - wn.model.map_current_doc({ - method: "selling.doctype.sales_order.sales_order.make_delivery_note", - source_name: cur_frm.doc.sales_order_no, - }) - }, - make_sales_invoice: function() { wn.model.open_mapped_doc({ method: "stock.doctype.delivery_note.delivery_note.make_sales_invoice", @@ -67,7 +79,11 @@ erpnext.stock.DeliveryNoteController = erpnext.selling.SellingController.extend( method: "stock.doctype.delivery_note.delivery_note.make_installation_note", source_name: cur_frm.doc.name }); - } + }, + + tc_name: function() { + this.get_terms(); + }, }); @@ -96,22 +112,6 @@ cur_frm.fields_dict['project_name'].get_query = function(doc, cdt, cdn) { ORDER BY `tabProject`.name ASC LIMIT 50', {cond:cond}); } - -// *************** Customized link query for SALES ORDER based on customer and currency***************************** -cur_frm.fields_dict['sales_order_no'].get_query = function(doc) { - doc = locals[this.doctype][this.docname]; - var cond = ''; - - if(doc.customer) { - cond = '`tabSales Order`.customer = "'+doc.customer+'" and'; - } - - if(doc.project_name){ - cond += '`tabSales Order`.project_name ="'+doc.project_name+'"'; - } - return repl('SELECT DISTINCT `tabSales Order`.`name` FROM `tabSales Order` WHERE `tabSales Order`.company = "%(company)s" and `tabSales Order`.`docstatus` = 1 and `tabSales Order`.`status` != "Stopped" and ifnull(`tabSales Order`.per_delivered,0) < 99.99 and %(cond)s `tabSales Order`.%(key)s LIKE "%s" ORDER BY `tabSales Order`.`name` DESC LIMIT 50', {company:doc.company,cond:cond}) -} - cur_frm.cscript.serial_no = function(doc, cdt, cdn) { var d = locals[cdt][cdn]; if (d.serial_no) { diff --git a/stock/doctype/delivery_note/delivery_note.txt b/stock/doctype/delivery_note/delivery_note.txt index 3b032aeba7a..1d6072ee21f 100644 --- a/stock/doctype/delivery_note/delivery_note.txt +++ b/stock/doctype/delivery_note/delivery_note.txt @@ -2,7 +2,7 @@ { "creation": "2013-05-24 19:29:09", "docstatus": 0, - "modified": "2013-07-06 19:04:46", + "modified": "2013-07-08 16:34:21", "modified_by": "Administrator", "owner": "Administrator" }, @@ -34,6 +34,7 @@ "parent": "Delivery Note", "parentfield": "permissions", "parenttype": "DocType", + "permlevel": 0, "read": 1, "report": 1 }, @@ -373,42 +374,6 @@ "print_hide": 1, "read_only": 0 }, - { - "doctype": "DocField", - "fieldname": "section_break0", - "fieldtype": "Section Break", - "read_only": 0 - }, - { - "description": "You can make a delivery note from multiple sales orders. Select sales orders one by one and click on the button below.", - "doctype": "DocField", - "fieldname": "sales_order_no", - "fieldtype": "Link", - "in_list_view": 1, - "label": "Sales Order No", - "no_copy": 0, - "oldfieldname": "sales_order_no", - "oldfieldtype": "Link", - "options": "Sales Order", - "print_hide": 0, - "read_only": 0 - }, - { - "doctype": "DocField", - "fieldname": "get_items", - "fieldtype": "Button", - "hidden": 0, - "label": "Get Items", - "oldfieldtype": "Button", - "print_hide": 1, - "read_only": 0 - }, - { - "doctype": "DocField", - "fieldname": "col_break24", - "fieldtype": "Column Break", - "read_only": 0 - }, { "doctype": "DocField", "fieldname": "net_total_export", @@ -664,25 +629,6 @@ "print_hide": 1, "read_only": 0 }, - { - "doctype": "DocField", - "fieldname": "column_break_59", - "fieldtype": "Column Break" - }, - { - "doctype": "DocField", - "fieldname": "get_terms", - "fieldtype": "Button", - "label": "Get Terms and Conditions", - "oldfieldtype": "Button", - "print_hide": 1, - "read_only": 0 - }, - { - "doctype": "DocField", - "fieldname": "section_break_61", - "fieldtype": "Section Break" - }, { "doctype": "DocField", "fieldname": "terms", @@ -1125,83 +1071,39 @@ "cancel": 1, "create": 1, "doctype": "DocPerm", - "permlevel": 0, "role": "Material User", "submit": 1, "write": 1 }, - { - "amend": 0, - "cancel": 0, - "create": 0, - "doctype": "DocPerm", - "permlevel": 1, - "role": "Material User", - "submit": 0, - "write": 0 - }, { "amend": 1, "cancel": 1, "create": 1, "doctype": "DocPerm", - "permlevel": 0, "role": "Material Manager", "submit": 1, "write": 1 }, - { - "amend": 0, - "cancel": 0, - "create": 0, - "doctype": "DocPerm", - "permlevel": 1, - "role": "Material Manager", - "submit": 0, - "write": 0 - }, { "amend": 1, "cancel": 1, "create": 1, "doctype": "DocPerm", - "permlevel": 0, "role": "Sales User", "submit": 1, "write": 1 }, { - "amend": 0, "cancel": 0, "create": 0, "doctype": "DocPerm", - "permlevel": 1, - "role": "Sales User", - "submit": 0, - "write": 0 - }, - { - "cancel": 0, - "create": 0, - "doctype": "DocPerm", - "permlevel": 0, "role": "Accounts User", "submit": 0, "write": 0 }, - { - "amend": 0, - "cancel": 0, - "create": 0, - "doctype": "DocPerm", - "permlevel": 1, - "role": "Accounts User", - "submit": 0 - }, { "doctype": "DocPerm", "match": "customer_name", - "permlevel": 0, "role": "Customer" } ] \ No newline at end of file diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py index 4e640893763..c8babffad9f 100644 --- a/stock/doctype/stock_entry/stock_entry.py +++ b/stock/doctype/stock_entry/stock_entry.py @@ -464,16 +464,23 @@ class DocType(StockController): item_dict = self.get_pending_raw_materials(pro_obj) else: item_dict = self.get_bom_raw_materials(self.doc.fg_completed_qty) + for item in item_dict.values(): + item["from_warehouse"] = pro_obj.doc.wip_warehouse + item["to_warehouse"] = "" # add raw materials to Stock Entry Detail table self.add_to_stock_entry_detail(item_dict) # add finished good item to Stock Entry Detail table -- along with bom_no if self.doc.production_order and self.doc.purpose == "Manufacture/Repack": - self.doc.to_warehouse = pro_obj.doc.fg_warehouse self.add_to_stock_entry_detail({ - cstr(pro_obj.doc.production_item): - [self.doc.fg_completed_qty, pro_obj.doc.description, pro_obj.doc.stock_uom] + cstr(pro_obj.doc.production_item): { + "to_warehouse": pro_obj.doc.fg_warehouse, + "from_warehouse": "", + "qty": self.doc.fg_completed_qty, + "description": pro_obj.doc.description, + "stock_uom": pro_obj.doc.stock_uom + } }, bom_no=pro_obj.doc.bom_no) elif self.doc.purpose in ["Material Receipt", "Manufacture/Repack"]: