From d61e4fd3172439a56b92a62d0835735117d51caa Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 3 Dec 2012 15:54:45 +0530 Subject: [PATCH 1/5] fixes in bom costing --- production/doctype/bom/bom.js | 10 +- production/doctype/bom/bom.py | 13 +- production/doctype/bom/bom.txt | 805 ++++++++---------- .../production_order/production_order.txt | 4 +- .../production_planning_tool.txt | 4 +- 5 files changed, 353 insertions(+), 483 deletions(-) diff --git a/production/doctype/bom/bom.js b/production/doctype/bom/bom.js index fd9be8f604..dd32fe40d9 100644 --- a/production/doctype/bom/bom.js +++ b/production/doctype/bom/bom.js @@ -16,12 +16,7 @@ // On REFRESH cur_frm.cscript.refresh = function(doc,dt,dn){ - if(!doc.__islocal) { - set_field_permlevel('item',1); - unhide_field('update_cost_as_on_today'); - } else { - hide_field('update_cost_as_on_today'); - } + cur_frm.toggle_enable("item", doc.__islocal); } @@ -137,9 +132,6 @@ var calculate_total = function(doc) { } - -// Get Query -//----------------------------------------------------------------------------------------------------- cur_frm.fields_dict['item'].get_query = function(doc) { return 'SELECT DISTINCT `tabItem`.`name`, `tabItem`.description FROM `tabItem` WHERE is_manufactured_item = "Yes" and (IFNULL(`tabItem`.`end_of_life`,"") = "" OR `tabItem`.`end_of_life` = "0000-00-00" OR `tabItem`.`end_of_life` > NOW()) AND `tabItem`.`%(key)s` like "%s" ORDER BY `tabItem`.`name` LIMIT 50'; } diff --git a/production/doctype/bom/bom.py b/production/doctype/bom/bom.py index a413f6a6b8..25fccb83bf 100644 --- a/production/doctype/bom/bom.py +++ b/production/doctype/bom/bom.py @@ -152,7 +152,6 @@ class DocType: sql("update `tabItem` set default_bom = %s where name = %s", (self.doc.name, self.doc.item)) else: sql("update `tabItem` set default_bom = '' where name = %s and default_bom = %s", (self.doc.item, self.doc.name)) - def manage_active_bom(self): @@ -193,24 +192,22 @@ class DocType: total_op_cost = 0 for d in getlist(self.doclist, 'bom_operations'): hour_rate = sql("select hour_rate from `tabWorkstation` where name = %s", cstr(d.workstation)) - d.hour_rate = hour_rate and flt(hour_rate[0][0]) or 0 - d.operating_cost = flt(d.hour_rate) * flt(d.time_in_mins) / 60 + d.hour_rate = hour_rate and flt(hour_rate[0][0]) or d.hour_rate or 0 + d.operating_cost = d.hour_rate and d.time_in_mins and \ + flt(d.hour_rate) * flt(d.time_in_mins) / 60 or d.operating_cost d.save() total_op_cost += d.operating_cost self.doc.operating_cost = total_op_cost - def calculate_rm_cost(self): """Fetch RM rate as per today's valuation rate and calculate totals""" total_rm_cost = 0 for d in getlist(self.doclist, 'bom_materials'): - #if self.doc.rm_cost_as_per == 'Valuation Rate': arg = {'item_code': d.item_code, 'qty': d.qty, 'bom_no': d.bom_no} ret = self.get_bom_material_detail(cstr(arg)) for k in ret: d.fields[k] = ret[k] - d.amount = flt(d.rate) * flt(d.qty) d.save() total_rm_cost += d.amount @@ -286,15 +283,11 @@ class DocType: check_list.append([cstr(item), cstr(op)]) - - #----- Document on Save function------ def validate(self): self.validate_main_item() self.validate_operations() self.validate_materials() - - def check_recursion(self): """ Check whether reqursion occurs in any bom""" diff --git a/production/doctype/bom/bom.txt b/production/doctype/bom/bom.txt index 646321efd4..58cb5cb01e 100644 --- a/production/doctype/bom/bom.txt +++ b/production/doctype/bom/bom.txt @@ -1,462 +1,347 @@ -# DocType, BOM [ - - # These values are common in all dictionaries - { - 'creation': '2012-03-27 14:36:02', - 'docstatus': 0, - 'modified': '2012-03-27 14:45:46', - 'modified_by': u'Administrator', - 'owner': u'Administrator' - }, - - # These values are common for all DocType - { - '_last_update': u'1326963484', - 'allow_attach': 0, - 'allow_copy': 0, - 'allow_email': 0, - 'allow_print': 0, - 'allow_rename': 0, - 'allow_trash': 1, - 'colour': u'White:FFF', - 'default_print_format': u'Standard', - 'doctype': 'DocType', - 'document_type': u'Master', - 'hide_heading': 0, - 'hide_toolbar': 0, - 'in_create': 0, - 'is_submittable': 1, - 'issingle': 0, - 'istable': 0, - 'module': u'Production', - 'name': '__common__', - 'read_only': 0, - 'search_fields': u'item', - 'section_style': u'Simple', - 'server_code_error': u' ', - 'show_in_menu': 0, - 'subject': u'%(item)s', - 'version': 196 - }, - - # These values are common for all DocField - { - 'doctype': u'DocField', - 'name': '__common__', - 'parent': u'BOM', - 'parentfield': u'fields', - 'parenttype': u'DocType' - }, - - # These values are common for all DocPerm - { - 'doctype': u'DocPerm', - 'name': '__common__', - 'parent': u'BOM', - 'parentfield': u'permissions', - 'parenttype': u'DocType', - 'read': 1 - }, - - # DocType, BOM - { - 'doctype': 'DocType', - 'name': u'BOM' - }, - - # DocPerm - { - 'cancel': 1, - 'create': 1, - 'doctype': u'DocPerm', - 'permlevel': 0, - 'role': u'System Manager', - 'submit': 1, - 'write': 1 - }, - - # DocPerm - { - 'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'System Manager' - }, - - # DocPerm - { - 'cancel': 1, - 'create': 1, - 'doctype': u'DocPerm', - 'permlevel': 0, - 'role': u'Production Manager', - 'submit': 1, - 'write': 1 - }, - - # DocPerm - { - 'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'Production Manager' - }, - - # DocPerm - { - 'cancel': 1, - 'create': 1, - 'doctype': u'DocPerm', - 'permlevel': 0, - 'role': u'Production User', - 'submit': 1, - 'write': 1 - }, - - # DocPerm - { - 'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'Production User' - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'column_break0', - 'fieldtype': u'Column Break', - 'oldfieldtype': u'Column Break', - 'permlevel': 0, - 'width': u'50%' - }, - - # DocField - { - 'colour': u'White:FFF', - 'description': u'Select the item code for which Bill of Material is being created', - 'doctype': u'DocField', - 'fieldname': u'item', - 'fieldtype': u'Link', - 'in_filter': 1, - 'label': u'Item', - 'oldfieldname': u'item', - 'oldfieldtype': u'Link', - 'options': u'Item', - 'permlevel': 0, - 'reqd': 1, - 'search_index': 1, - 'trigger': u'Client' - }, - - # DocField - { - 'colour': u'White:FFF', - 'description': u'Total quantity of items for which raw materials required and operations done will be defined', - 'doctype': u'DocField', - 'fieldname': u'quantity', - 'fieldtype': u'Currency', - 'label': u'Quantity', - 'oldfieldname': u'quantity', - 'oldfieldtype': u'Currency', - 'permlevel': 0, - 'reqd': 1 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'uom', - 'fieldtype': u'Select', - 'label': u'UOM', - 'options': u'link:UOM', - 'permlevel': 1 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'description', - 'fieldtype': u'Text', - 'label': u'Description', - 'oldfieldname': u'description', - 'oldfieldtype': u'Text', - 'permlevel': 0, - 'width': u'300px' - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'column_break1', - 'fieldtype': u'Column Break', - 'permlevel': 0, - 'width': u'50%' - }, - - # DocField - { - 'description': u'Select name of the project if BOM need to be created against any project', - 'doctype': u'DocField', - 'fieldname': u'project_name', - 'fieldtype': u'Link', - 'in_filter': 1, - 'label': u'Project Name', - 'oldfieldname': u'project_name', - 'oldfieldtype': u'Link', - 'options': u'Project', - 'permlevel': 0, - 'trigger': u'Client' - }, - - # DocField - { - 'allow_on_submit': 1, - 'colour': u'White:FFF', - 'doctype': u'DocField', - 'fieldname': u'is_active', - 'fieldtype': u'Select', - 'hidden': 0, - 'label': u'Is Active', - 'no_copy': 1, - 'oldfieldname': u'is_active', - 'oldfieldtype': u'Select', - 'options': u'\nYes\nNo', - 'permlevel': 0, - 'reqd': 1 - }, - - # DocField - { - 'allow_on_submit': 1, - 'colour': u'White:FFF', - 'doctype': u'DocField', - 'fieldname': u'is_default', - 'fieldtype': u'Check', - 'label': u'Is Default', - 'no_copy': 1, - 'oldfieldname': u'is_default', - 'oldfieldtype': u'Check', - 'permlevel': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'maintained_by', - 'fieldtype': u'Data', - 'label': u'Maintained By', - 'oldfieldname': u'maintained_by', - 'oldfieldtype': u'Data', - 'permlevel': 0 - }, - - # DocField - { - 'colour': u'White:FFF', - 'doctype': u'DocField', - 'fieldname': u'remarks', - 'fieldtype': u'Text', - 'label': u'Remarks', - 'no_copy': 1, - 'oldfieldname': u'remarks', - 'oldfieldtype': u'Text', - 'permlevel': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'operations', - 'fieldtype': u'Section Break', - 'label': u'Operations', - 'oldfieldtype': u'Section Break', - 'permlevel': 0 - }, - - # DocField - { - 'colour': u'White:FFF', - 'description': u'Specify the operations, operating cost and give a unique Operation no to your operations.', - 'doctype': u'DocField', - 'fieldname': u'bom_operations', - 'fieldtype': u'Table', - 'label': u'BOM Operations', - 'oldfieldname': u'bom_operations', - 'oldfieldtype': u'Table', - 'options': u'BOM Operation', - 'permlevel': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'materials', - 'fieldtype': u'Section Break', - 'label': u'Materials', - 'oldfieldtype': u'Section Break', - 'permlevel': 0 - }, - - # DocField - { - 'colour': u'White:FFF', - 'description': u'Enter the raw materials required to manufacture the BOM item. Specify the operation no as entered in the previous tab which will be performed on the raw materials entered.', - 'doctype': u'DocField', - 'fieldname': u'bom_materials', - 'fieldtype': u'Table', - 'label': u'BOM Item', - 'oldfieldname': u'bom_materials', - 'oldfieldtype': u'Table', - 'options': u'BOM Item', - 'permlevel': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'costing', - 'fieldtype': u'Section Break', - 'label': u'Costing', - 'oldfieldtype': u'Section Break', - 'permlevel': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'column_break2', - 'fieldtype': u'Column Break', - 'permlevel': 0, - 'width': u'50%' - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'rm_cost_as_per', - 'fieldtype': u'Select', - 'label': u'Consider Raw Material Cost As Per', - 'options': u'Valuation Rate\nLast Purchase Rate\nStandard Rate', - 'permlevel': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'costing_date', - 'fieldtype': u'Date', - 'label': u'Costing Date', - 'permlevel': 1 - }, - - # DocField - { - 'allow_on_submit': 1, - 'doctype': u'DocField', - 'fieldname': u'update_cost_as_on_today', - 'fieldtype': u'Button', - 'label': u'Update Cost as on today', - 'options': u'calculate_cost', - 'permlevel': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'column_break3', - 'fieldtype': u'Column Break', - 'permlevel': 0, - 'width': u'50%' - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'raw_material_cost', - 'fieldtype': u'Float', - 'label': u'Raw Material Cost', - 'permlevel': 1 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'operating_cost', - 'fieldtype': u'Float', - 'label': u'Operating Cost', - 'permlevel': 1 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'total_cost', - 'fieldtype': u'Float', - 'label': u'Total Cost', - 'permlevel': 1 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'section_break0', - 'fieldtype': u'Section Break', - 'hidden': 1, - 'options': u'Simple', - 'permlevel': 0, - 'print_hide': 0 - }, - - # DocField - { - 'colour': u'White:FFF', - 'default': u'No Toolbar', - 'doctype': u'DocField', - 'fieldname': u'flat_bom_details', - 'fieldtype': u'Table', - 'hidden': 1, - 'label': u'BOM Explosion Item', - 'no_copy': 1, - 'oldfieldname': u'flat_bom_details', - 'oldfieldtype': u'Table', - 'options': u'BOM Explosion Item', - 'permlevel': 0, - 'print_hide': 1 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'trash_reason', - 'fieldtype': u'Small Text', - 'hidden': 1, - 'label': u'Trash Reason', - 'oldfieldname': u'trash_reason', - 'oldfieldtype': u'Small Text', - 'permlevel': 1 - }, - - # DocField - { - 'depends_on': u'eval:doc.amended_from', - 'description': u'The date at which current entry is corrected in the system.', - 'doctype': u'DocField', - 'fieldname': u'amendment_date', - 'fieldtype': u'Date', - 'label': u'Amendment Date', - 'no_copy': 1, - 'permlevel': 0, - 'print_hide': 1 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'amended_from', - 'fieldtype': u'Link', - 'label': u'Amended From', - 'no_copy': 1, - 'options': u'Sales Invoice', - 'permlevel': 1, - 'print_hide': 1 - } + { + "owner": "Administrator", + "docstatus": 0, + "creation": "2012-07-03 13:30:03", + "modified_by": "Administrator", + "modified": "2012-12-03 13:29:26" + }, + { + "istable": 0, + "in_create": 0, + "allow_print": 0, + "search_fields": "item", + "module": "Production", + "document_type": "Master", + "allow_attach": 0, + "read_only": 0, + "allow_email": 0, + "hide_heading": 0, + "issingle": 0, + "name": "__common__", + "default_print_format": "Standard", + "allow_rename": 0, + "doctype": "DocType", + "is_submittable": 1, + "hide_toolbar": 0, + "allow_copy": 0 + }, + { + "name": "__common__", + "parent": "BOM", + "doctype": "DocField", + "parenttype": "DocType", + "parentfield": "fields" + }, + { + "name": "__common__", + "parent": "BOM", + "read": 1, + "doctype": "DocPerm", + "parenttype": "DocType", + "parentfield": "permissions" + }, + { + "name": "BOM", + "doctype": "DocType" + }, + { + "oldfieldtype": "Column Break", + "doctype": "DocField", + "width": "50%", + "fieldname": "column_break0", + "fieldtype": "Column Break", + "permlevel": 0 + }, + { + "description": "Select the item code for which Bill of Material is being created", + "oldfieldtype": "Link", + "colour": "White:FFF", + "doctype": "DocField", + "label": "Item", + "oldfieldname": "item", + "permlevel": 0, + "trigger": "Client", + "fieldname": "item", + "fieldtype": "Link", + "search_index": 1, + "reqd": 1, + "in_filter": 1, + "options": "Item" + }, + { + "description": "Total quantity of items for which raw materials required and operations done will be defined", + "oldfieldtype": "Currency", + "colour": "White:FFF", + "doctype": "DocField", + "label": "Quantity", + "oldfieldname": "quantity", + "fieldname": "quantity", + "fieldtype": "Currency", + "reqd": 1, + "permlevel": 0 + }, + { + "doctype": "DocField", + "width": "50%", + "fieldname": "column_break1", + "fieldtype": "Column Break", + "permlevel": 0 + }, + { + "no_copy": 1, + "oldfieldtype": "Select", + "colour": "White:FFF", + "allow_on_submit": 1, + "doctype": "DocField", + "label": "Is Active", + "oldfieldname": "is_active", + "permlevel": 0, + "fieldname": "is_active", + "fieldtype": "Select", + "reqd": 1, + "hidden": 0, + "options": "\nYes\nNo" + }, + { + "allow_on_submit": 1, + "no_copy": 1, + "oldfieldtype": "Check", + "colour": "White:FFF", + "doctype": "DocField", + "label": "Is Default", + "oldfieldname": "is_default", + "fieldname": "is_default", + "fieldtype": "Check", + "permlevel": 0 + }, + { + "oldfieldtype": "Section Break", + "doctype": "DocField", + "label": "Operations", + "fieldname": "operations", + "fieldtype": "Section Break", + "permlevel": 0 + }, + { + "description": "Specify the operations, operating cost and give a unique Operation no to your operations.", + "oldfieldtype": "Table", + "colour": "White:FFF", + "doctype": "DocField", + "label": "BOM Operations", + "oldfieldname": "bom_operations", + "options": "BOM Operation", + "fieldname": "bom_operations", + "fieldtype": "Table", + "permlevel": 0 + }, + { + "oldfieldtype": "Section Break", + "doctype": "DocField", + "label": "Materials", + "fieldname": "materials", + "fieldtype": "Section Break", + "permlevel": 0 + }, + { + "doctype": "DocField", + "label": "Consider Raw Material Cost As Per", + "options": "Valuation Rate\nLast Purchase Rate\nStandard Rate", + "fieldname": "rm_cost_as_per", + "fieldtype": "Select", + "permlevel": 0 + }, + { + "description": "Enter the raw materials required to manufacture the BOM item. Specify the operation no as entered in the previous tab which will be performed on the raw materials entered.", + "oldfieldtype": "Table", + "colour": "White:FFF", + "doctype": "DocField", + "label": "BOM Item", + "oldfieldname": "bom_materials", + "options": "BOM Item", + "fieldname": "bom_materials", + "fieldtype": "Table", + "permlevel": 0 + }, + { + "oldfieldtype": "Section Break", + "doctype": "DocField", + "label": "Costing", + "fieldname": "costing", + "fieldtype": "Section Break", + "permlevel": 0 + }, + { + "doctype": "DocField", + "label": "Raw Material Cost", + "fieldname": "raw_material_cost", + "fieldtype": "Float", + "permlevel": 1 + }, + { + "doctype": "DocField", + "label": "Operating Cost", + "fieldname": "operating_cost", + "fieldtype": "Float", + "permlevel": 1 + }, + { + "doctype": "DocField", + "label": "Total Cost", + "fieldname": "total_cost", + "fieldtype": "Float", + "permlevel": 1 + }, + { + "doctype": "DocField", + "label": "More Info", + "fieldname": "more_info_section", + "fieldtype": "Section Break", + "permlevel": 0 + }, + { + "description": "Select name of the project if BOM need to be created against any project", + "oldfieldtype": "Link", + "label": "Project Name", + "oldfieldname": "project_name", + "trigger": "Client", + "fieldname": "project_name", + "fieldtype": "Link", + "doctype": "DocField", + "options": "Project", + "permlevel": 0, + "in_filter": 1 + }, + { + "doctype": "DocField", + "label": "Item UOM", + "options": "link:UOM", + "fieldname": "uom", + "fieldtype": "Select", + "permlevel": 1 + }, + { + "oldfieldtype": "Text", + "doctype": "DocField", + "label": "Item Description", + "oldfieldname": "description", + "width": "300px", + "fieldname": "description", + "fieldtype": "Small Text", + "permlevel": 0 + }, + { + "doctype": "DocField", + "fieldname": "col_break23", + "fieldtype": "Column Break", + "permlevel": 0 + }, + { + "oldfieldtype": "Data", + "doctype": "DocField", + "label": "Maintained By", + "oldfieldname": "maintained_by", + "fieldname": "maintained_by", + "fieldtype": "Data", + "permlevel": 0 + }, + { + "print_hide": 1, + "no_copy": 1, + "doctype": "DocField", + "label": "Amended From", + "options": "Sales Invoice", + "fieldname": "amended_from", + "fieldtype": "Link", + "permlevel": 1 + }, + { + "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", + "permlevel": 0 + }, + { + "no_copy": 1, + "oldfieldtype": "Text", + "colour": "White:FFF", + "doctype": "DocField", + "label": "Remarks", + "oldfieldname": "remarks", + "fieldname": "remarks", + "fieldtype": "Small Text", + "permlevel": 0 + }, + { + "print_hide": 0, + "doctype": "DocField", + "label": "BOM Explosion Items", + "options": "Simple", + "fieldname": "section_break0", + "fieldtype": "Section Break", + "hidden": 0, + "permlevel": 0 + }, + { + "print_hide": 1, + "permlevel": 1, + "no_copy": 1, + "oldfieldtype": "Table", + "colour": "White:FFF", + "doctype": "DocField", + "label": "BOM Explosion Item", + "oldfieldname": "flat_bom_details", + "default": "No Toolbar", + "fieldname": "flat_bom_details", + "fieldtype": "Table", + "hidden": 0, + "options": "BOM Explosion Item" + }, + { + "create": 1, + "doctype": "DocPerm", + "submit": 1, + "write": 1, + "role": "System Manager", + "cancel": 1, + "permlevel": 0 + }, + { + "doctype": "DocPerm", + "role": "System Manager", + "permlevel": 1 + }, + { + "create": 1, + "doctype": "DocPerm", + "submit": 1, + "write": 1, + "role": "Production Manager", + "cancel": 1, + "permlevel": 0 + }, + { + "doctype": "DocPerm", + "role": "Production Manager", + "permlevel": 1 + }, + { + "create": 1, + "doctype": "DocPerm", + "submit": 1, + "write": 1, + "role": "Production User", + "cancel": 1, + "permlevel": 0 + }, + { + "doctype": "DocPerm", + "role": "Production User", + "permlevel": 1 + } ] \ No newline at end of file diff --git a/production/doctype/production_order/production_order.txt b/production/doctype/production_order/production_order.txt index 369efd4d2a..5fed2ddb8c 100644 --- a/production/doctype/production_order/production_order.txt +++ b/production/doctype/production_order/production_order.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-07-03 13:30:03", "modified_by": "Administrator", - "modified": "2012-11-30 14:28:03" + "modified": "2012-12-03 15:38:54" }, { "is_submittable": 1, @@ -139,7 +139,7 @@ "oldfieldname": "consider_sa_items", "fieldname": "use_multi_level_bom", "fieldtype": "Check", - "reqd": 1, + "reqd": 0, "in_filter": 1, "permlevel": 0 }, diff --git a/production/doctype/production_planning_tool/production_planning_tool.txt b/production/doctype/production_planning_tool/production_planning_tool.txt index 42a76f7c30..bf736417d0 100644 --- a/production/doctype/production_planning_tool/production_planning_tool.txt +++ b/production/doctype/production_planning_tool/production_planning_tool.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-07-03 13:30:03", "modified_by": "Administrator", - "modified": "2012-11-30 14:08:55" + "modified": "2012-12-03 15:39:44" }, { "read_only": 1, @@ -164,7 +164,7 @@ "colour": "White:FFF", "doctype": "DocField", "label": "Use Multi-Level BOM", - "reqd": 1, + "reqd": 0, "fieldname": "use_multi_level_bom", "fieldtype": "Check" }, From dd4c679899b6d3e5f519c73ac244acc211e7a68c Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 3 Dec 2012 15:56:19 +0530 Subject: [PATCH 2/5] stock entry incoming rate fixes and batch no get_query --- selling/doctype/sales_common/sales_common.js | 23 + stock/doctype/delivery_note/delivery_note.js | 10 - stock/doctype/stock_entry/stock_entry.js | 243 +++++---- stock/doctype/stock_entry/stock_entry.py | 97 ++-- stock/doctype/stock_entry/stock_entry.txt | 4 +- .../stock_entry_detail/stock_entry_detail.txt | 480 ++++++++---------- .../stock_ledger_entry/stock_ledger_entry.py | 8 +- 7 files changed, 434 insertions(+), 431 deletions(-) diff --git a/selling/doctype/sales_common/sales_common.js b/selling/doctype/sales_common/sales_common.js index 4807dc1af4..c5eed98f71 100644 --- a/selling/doctype/sales_common/sales_common.js +++ b/selling/doctype/sales_common/sales_common.js @@ -304,6 +304,29 @@ cur_frm.cscript.barcode = function(doc, cdt, cdn) { get_server_fields('get_barcode_details', d.barcode, cur_frm.cscript.fname, doc, cdt, cdn, 1, callback); } +cur_frm.fields_dict[cur_frm.cscript.fname].grid.get_field('batch_no').get_query = + function(doc, cdt, cdn) { + var d = locals[cdt][cdn]; + if(d.item_code) { + if (d.warehouse) { + return "select batch_no from `tabStock Ledger Entry` sle \ + where item_code = '" + d.item_code + "' and warehouse = '" + d.warehouse + + "' and ifnull(is_cancelled, 'No') = 'No' and batch_no like '%s' \ + and exists(select * from `tabBatch` where \ + name = sle.batch_no and expiry_date >= '" + doc.posting_date + + "' and docstatus != 2) group by batch_no having sum(actual_qty) > 0 \ + order by batch_no desc limit 50"; + } else { + return "SELECT name FROM tabBatch WHERE docstatus != 2 AND item = '" + + d.item_code + "' and expiry_date >= '" + doc.posting_date + + "' AND name like '%s' ORDER BY name DESC LIMIT 50"; + } + } else { + msgprint("Please enter Item Code to get batch no"); + } + } + + // *********************** QUANTITY *************************** cur_frm.cscript.qty = function(doc, cdt, cdn) { cur_frm.cscript.recalc(doc, 1); } diff --git a/stock/doctype/delivery_note/delivery_note.js b/stock/doctype/delivery_note/delivery_note.js index 62958112a1..10739d2770 100644 --- a/stock/doctype/delivery_note/delivery_note.js +++ b/stock/doctype/delivery_note/delivery_note.js @@ -134,16 +134,6 @@ cur_frm.cscript.new_contact = function(){ loaddoc('Contact', tn); } -//========================= Overloaded query for link batch_no ============================================================= -cur_frm.fields_dict['delivery_note_details'].grid.get_field('batch_no').get_query= function(doc, cdt, cdn) { - var d = locals[cdt][cdn]; - if(d.item_code){ - return "SELECT tabBatch.name, tabBatch.description FROM tabBatch WHERE tabBatch.docstatus != 2 AND tabBatch.item = '"+ d.item_code +"' AND `tabBatch`.`name` like '%s' ORDER BY `tabBatch`.`name` DESC LIMIT 50" - } - else{ - alert("Please enter Item Code."); - } -} // ***************** Get project name ***************** cur_frm.fields_dict['project_name'].get_query = function(doc, cdt, cdn) { diff --git a/stock/doctype/stock_entry/stock_entry.js b/stock/doctype/stock_entry/stock_entry.js index bf7582652f..5805b2aa92 100644 --- a/stock/doctype/stock_entry/stock_entry.js +++ b/stock/doctype/stock_entry/stock_entry.js @@ -8,68 +8,77 @@ // // 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, cdt, cdn) { - if (!doc.posting_date) doc.posting_date = dateutil.obj_to_str(new Date()); - if (!doc.transfer_date) doc.transfer_date = dateutil.obj_to_str(new Date()); - if(!doc.purpose) set_multiple(cdt, cdn, {purpose:'Material Issue'}); - cfn_set_fields(doc, cdt, cdn); + if (!doc.posting_date) doc.posting_date = dateutil.obj_to_str(new Date()); + if (!doc.transfer_date) doc.transfer_date = dateutil.obj_to_str(new Date()); + if(!doc.purpose) set_multiple(cdt, cdn, {purpose:'Material Issue'}); + cfn_set_fields(doc, cdt, cdn); } var cfn_set_fields = function(doc, cdt, cdn) { - lst = ['supplier','supplier_name','supplier_address','customer','customer_name','customer_address']; - if (in_list(['Material Issue', 'Material Transfer', 'Material Receipt', 'Sales Return', 'Purchase Return', 'Production Order', 'Subcontracting', 'Other'], doc.purpose)) { - hide_field(lst); - $(cur_frm.fields_dict.contact_section.row.wrapper).toggle(false); - } else unhide_field(lst); + lst = ['supplier', 'supplier_name', 'supplier_address', + 'customer', 'customer_name', 'customer_address']; + if (in_list(['Material Issue', 'Material Transfer', 'Material Receipt', 'Sales Return', + 'Purchase Return', 'Production Order', 'Subcontracting', 'Other'], doc.purpose)) { + hide_field(lst); + $(cur_frm.fields_dict.contact_section.row.wrapper).toggle(false); + } else unhide_field(lst); + if (doc.purpose == 'Production Order' || doc.purpose == 'Other') { + unhide_field('get_items'); + hide_field(['from_warehouse', 'to_warehouse','purchase_receipt_no', + 'delivery_note_no', 'sales_invoice_no','warehouse_html', + 'transporter', 'is_excisable_goods', 'excisable_goods']); + if (doc.purpose=='Production Order') unhide_field(['production_order', 'process']); + else { + doc.production_order = doc.process = ''; + hide_field(['production_order', 'process']); + } - if (doc.purpose == 'Production Order' || doc.purpose == 'Other'){ - unhide_field('get_items'); - hide_field(['from_warehouse', 'to_warehouse','purchase_receipt_no','delivery_note_no', 'sales_invoice_no','warehouse_html', 'transporter', 'is_excisable_goods', 'excisable_goods']); - if (doc.purpose=='Production Order') unhide_field(['production_order', 'process']); - else hide_field(['production_order', 'process']); - - doc.from_warehouse = ''; - doc.to_warehouse = ''; - refresh_field(['from_warehosue', 'to_warehouse']); - if (doc.process == 'Backflush' || doc.purpose == 'Other'){ - unhide_field('fg_completed_qty'); - } - else{ - hide_field('fg_completed_qty'); - doc.fg_completed_qty = 0; - } - } - else{ - unhide_field(['from_warehouse', 'to_warehouse']); - hide_field(['production_order', 'process', 'get_items', 'fg_completed_qty','purchase_receipt_no','delivery_note_no', 'sales_invoice_no']); - doc.production_order = ''; - doc.process = ''; - doc.fg_completed_qty = 0; - } - + doc.from_warehouse = ''; + doc.to_warehouse = ''; + refresh_field(['from_warehosue', 'to_warehouse']); + if (doc.process == 'Backflush' || doc.purpose == 'Other') { + unhide_field('fg_completed_qty'); + } + else{ + hide_field('fg_completed_qty'); + doc.fg_completed_qty = 0; + } + } else { + unhide_field(['from_warehouse', 'to_warehouse']); + hide_field(['production_order', 'process', 'get_items', 'fg_completed_qty', + 'purchase_receipt_no','delivery_note_no', 'sales_invoice_no']); + doc.production_order = ''; + doc.process = ''; + doc.fg_completed_qty = 0; + } + - if(doc.purpose == 'Purchase Return'){ - doc.customer=doc.customer_name = doc.customer_address=doc.delivery_note_no=doc.sales_invoice_no=''; - unhide_field(['supplier','supplier_name','supplier_address','purchase_receipt_no']); - $(cur_frm.fields_dict.contact_section.row.wrapper).toggle(true); - } - else if(doc.purpose == 'Sales Return'){ - doc.supplier=doc.supplier_name = doc.supplier_address=doc.purchase_receipt_no=''; - unhide_field(['customer','customer_name','customer_address','delivery_note_no', 'sales_invoice_no']); - $(cur_frm.fields_dict.contact_section.row.wrapper).toggle(true); - } else{ - doc.customer=doc.customer_name=doc.customer_address=doc.delivery_note_no=doc.sales_invoice_no=''; - doc.supplier=doc.supplier_name = doc.supplier_address=doc.purchase_receipt_no=''; - } - refresh_many(lst); + if(doc.purpose == 'Purchase Return') { + doc.customer = doc.customer_name = doc.customer_address = + doc.delivery_note_no = doc.sales_invoice_no = ''; + unhide_field(['supplier','supplier_name','supplier_address','purchase_receipt_no']); + $(cur_frm.fields_dict.contact_section.row.wrapper).toggle(true); + } + else if(doc.purpose == 'Sales Return'){ + doc.supplier=doc.supplier_name = doc.supplier_address=doc.purchase_receipt_no=''; + unhide_field(['customer', 'customer_name', 'customer_address', + 'delivery_note_no', 'sales_invoice_no']); + $(cur_frm.fields_dict.contact_section.row.wrapper).toggle(true); + } else{ + doc.customer = doc.customer_name = doc.customer_address = + doc.delivery_note_no = doc.sales_invoice_no = doc.supplier = + doc.supplier_name = doc.supplier_address = doc.purchase_receipt_no = ''; + } + refresh_many(lst); } //Refresh @@ -77,47 +86,44 @@ cur_frm.cscript.refresh = function(doc, cdt, cdn) { erpnext.hide_naming_series(); //India related - excise_flds = ['is_excisable_goods', 'excisable_goods', 'under_rule'] + excise_flds = ['is_excisable_goods', 'excisable_goods', 'under_rule']; if(wn.control_panel.country == 'India') unhide_field(excise_flds); else hide_field(excise_flds); } - cur_frm.cscript.delivery_note_no = function(doc,cdt,cdn){ - if(doc.delivery_note_no) get_server_fields('get_cust_values','','',doc,cdt,cdn,1); + if(doc.delivery_note_no) get_server_fields('get_cust_values','','',doc,cdt,cdn,1); } cur_frm.cscript.sales_invoice_no = function(doc,cdt,cdn){ - if(doc.sales_invoice_no) get_server_fields('get_cust_values','','',doc,cdt,cdn,1); + if(doc.sales_invoice_no) get_server_fields('get_cust_values','','',doc,cdt,cdn,1); } cur_frm.cscript.customer = function(doc,cdt,cdn){ - if(doc.customer) get_server_fields('get_cust_addr','','',doc,cdt,cdn,1); + if(doc.customer) get_server_fields('get_cust_addr','','',doc,cdt,cdn,1); } cur_frm.cscript.purchase_receipt_no = function(doc,cdt,cdn){ - if(doc.purchase_receipt_no) get_server_fields('get_supp_values','','',doc,cdt,cdn,1); + if(doc.purchase_receipt_no) get_server_fields('get_supp_values','','',doc,cdt,cdn,1); } cur_frm.cscript.supplier = function(doc,cdt,cdn){ - if(doc.supplier) get_server_fields('get_supp_addr','','',doc,cdt,cdn,1); + if(doc.supplier) get_server_fields('get_supp_addr','','',doc,cdt,cdn,1); } cur_frm.fields_dict['production_order'].get_query = function(doc) { - return 'SELECT DISTINCT `tabProduction Order`.`name` FROM `tabProduction Order` WHERE `tabProduction Order`.`docstatus` = 1 AND `tabProduction Order`.`qty` > ifnull(`tabProduction Order`.`produced_qty`,0) AND `tabProduction Order`.`name` like "%s" ORDER BY `tabProduction Order`.`name` DESC LIMIT 50'; + return 'SELECT DISTINCT `tabProduction Order`.`name` FROM `tabProduction Order` WHERE `tabProduction Order`.`docstatus` = 1 AND `tabProduction Order`.`qty` > ifnull(`tabProduction Order`.`produced_qty`,0) AND `tabProduction Order`.`name` like "%s" ORDER BY `tabProduction Order`.`name` DESC LIMIT 50'; } cur_frm.cscript.purpose = function(doc, cdt, cdn) { - cfn_set_fields(doc, cdt, cdn); + cfn_set_fields(doc, cdt, cdn); } - cur_frm.cscript.process = function(doc, cdt, cdn) { - cfn_set_fields(doc, cdt, cdn); + cfn_set_fields(doc, cdt, cdn); } -// // item code - only if quantity present in source warehosue // var fld = cur_frm.fields_dict['mtn_details'].grid.get_field('item_code'); @@ -147,9 +153,7 @@ fld.get_query = function(doc, cdt, cdn) { } } -// // copy over source and target warehouses -// cur_frm.fields_dict['mtn_details'].grid.onrowadd = function(doc, cdt, cdn){ var d = locals[cdt][cdn]; if(!d.s_warehouse && doc.from_warehouse) { @@ -162,73 +166,88 @@ cur_frm.fields_dict['mtn_details'].grid.onrowadd = function(doc, cdt, cdn){ } } -//========================= Overloaded query for link batch_no ============================================================= -cur_frm.fields_dict['mtn_details'].grid.get_field('batch_no').get_query= function(doc, cdt, cdn) { - var d = locals[cdt][cdn]; - if(d.item_code){ - return "SELECT tabBatch.name, tabBatch.description FROM tabBatch WHERE tabBatch.docstatus != 2 AND tabBatch.item = '"+ d.item_code +"' AND `tabBatch`.`name` like '%s' ORDER BY `tabBatch`.`name` DESC LIMIT 50" - } - else{ - alert("Please enter Item Code."); - } +// Overloaded query for link batch_no +cur_frm.fields_dict['mtn_details'].grid.get_field('batch_no').get_query = function(doc, cdt, cdn) { + var d = locals[cdt][cdn]; + if(d.item_code) { + if (d.s_warehouse) { + return "select batch_no from `tabStock Ledger Entry` sle \ + where item_code = '" + d.item_code + "' and warehouse = '" + d.s_warehouse + + "' and ifnull(is_cancelled, 'No') = 'No' and batch_no like '%s' \ + and exists(select * from `tabBatch` where \ + name = sle.batch_no and expiry_date >= '" + doc.posting_date + + "' and docstatus != 2) group by batch_no having sum(actual_qty) > 0 \ + order by batch_no desc limit 50"; + } else { + return "SELECT name FROM tabBatch WHERE docstatus != 2 AND item = '" + + d.item_code + "' and expiry_date >= '" + doc.posting_date + + "' AND name like '%s' ORDER BY name DESC LIMIT 50"; + } + } else { + msgprint("Please enter Item Code to get batch no"); + } } -//================================================================================================================== - cur_frm.cscript.item_code = function(doc, cdt, cdn) { - var d = locals[cdt][cdn]; - // get values - args = { - 'item_code' : d.item_code, - 'warehouse' : cstr(d.s_warehouse), - 'transfer_qty' : d.transfer_qty, - 'serial_no' : d.serial_no - }; - get_server_fields('get_item_details',JSON.stringify(args),'mtn_details',doc,cdt,cdn,1); + var d = locals[cdt][cdn]; + args = { + 'item_code' : d.item_code, + 'warehouse' : cstr(d.s_warehouse) || cstr(d.t_warehouse), + 'transfer_qty' : d.transfer_qty, + 'serial_no' : d.serial_no, + 'fg_item' : d.fg_item, + 'bom_no' : d.bom_no + }; + get_server_fields('get_item_details',JSON.stringify(args),'mtn_details',doc,cdt,cdn,1); } -//================================================================================================================== +cur_frm.cscript.s_warehouse = function(doc, cdt, cdn) { + var d = locals[cdt][cdn]; + args = { + 'item_code' : d.item_code, + 'warehouse' : cstr(d.s_warehouse) || cstr(d.t_warehouse), + 'transfer_qty' : d.transfer_qty, + 'serial_no' : d.serial_no, + 'fg_item' : d.fg_item, + 'bom_no' : d.bom_no + } + get_server_fields('get_warehouse_details', JSON.stringify(args), + 'mtn_details', doc, cdt, cdn, 1); +} + +cur_frm.cscript.t_warehouse = cur_frm.cscript.s_warehouse; cur_frm.cscript.transfer_qty = function(doc,cdt,cdn) { - var d = locals[cdt][cdn]; - if (doc.from_warehouse && (flt(d.transfer_qty) > flt(d.actual_qty))) { - alert("Transfer Quantity is more than Available Qty"); - } + var d = locals[cdt][cdn]; + if (doc.from_warehouse && (flt(d.transfer_qty) > flt(d.actual_qty))) { + alert("Transfer Quantity is more than Available Qty"); + } } - -//================================================================================================================== - cur_frm.cscript.qty = function(doc, cdt, cdn) { - var d = locals[cdt][cdn]; - set_multiple('Stock Entry Detail', d.name, {'transfer_qty': flt(d.qty) * flt(d.conversion_factor)}, 'mtn_details'); - refresh_field('mtn_details'); + var d = locals[cdt][cdn]; + set_multiple('Stock Entry Detail', d.name, {'transfer_qty': flt(d.qty) * flt(d.conversion_factor)}, 'mtn_details'); + refresh_field('mtn_details'); } -//================================================================================================================== - cur_frm.cscript.uom = function(doc, cdt, cdn) { - var d = locals[cdt][cdn]; - if(d.uom && d.item_code){ - var arg = {'item_code':d.item_code, 'uom':d.uom, 'qty':d.qty} - get_server_fields('get_uom_details',JSON.stringify(arg),'mtn_details', doc, cdt, cdn, 1); - } + var d = locals[cdt][cdn]; + if(d.uom && d.item_code){ + var arg = {'item_code':d.item_code, 'uom':d.uom, 'qty':d.qty} + get_server_fields('get_uom_details',JSON.stringify(arg),'mtn_details', doc, cdt, cdn, 1); + } } -//================================================================================================================== -//validate cur_frm.cscript.validate = function(doc, cdt, cdn) { - cur_frm.cscript.validate_items(doc); + cur_frm.cscript.validate_items(doc); } -//================================================================================================================== -//validate items cur_frm.cscript.validate_items = function(doc) { - cl = getchildren('Stock Entry Detail',doc.name,'mtn_details'); - if (!cl.length) { - alert("Item table can not be blank"); - validated = false; - } + cl = getchildren('Stock Entry Detail',doc.name,'mtn_details'); + if (!cl.length) { + alert("Item table can not be blank"); + validated = false; + } } cur_frm.fields_dict.customer.get_query = erpnext.utils.customer_query; diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py index 29f58bc0bd..67f1643fde 100644 --- a/stock/doctype/stock_entry/stock_entry.py +++ b/stock/doctype/stock_entry/stock_entry.py @@ -35,8 +35,6 @@ class DocType(TransactionBase): self.item_dict = {} self.fname = 'mtn_details' - # get item details - # ---------------- def get_item_details(self, arg): import json arg, actual_qty, in_rate = json.loads(arg), 0, 0 @@ -44,28 +42,24 @@ class DocType(TransactionBase): item = sql("select stock_uom, description, item_name from `tabItem` where name = %s and (ifnull(end_of_life,'')='' or end_of_life ='0000-00-00' or end_of_life > now())", (arg.get('item_code')), as_dict = 1) if not item: msgprint("Item is not active", raise_exception=1) - - if arg.get('warehouse'): - actual_qty = self.get_as_on_stock(arg.get('item_code'), arg.get('warehouse'), self.doc.posting_date, self.doc.posting_time) - in_rate = self.get_incoming_rate(arg.get('item_code'), arg.get('warehouse'), self.doc.posting_date, self.doc.posting_time, arg.get('transfer_qty'), arg.get('serial_no')) or 0 - + ret = { 'uom' : item and item[0]['stock_uom'] or '', 'stock_uom' : item and item[0]['stock_uom'] or '', 'description' : item and item[0]['description'] or '', 'item_name' : item and item[0]['item_name'] or '', - 'actual_qty' : actual_qty, 'qty' : 0, 'transfer_qty' : 0, - 'incoming_rate' : in_rate, 'conversion_factor' : 1, - 'batch_no' : '' + 'batch_no' : '', + 'actual_qty' : 0, + 'incoming_rate' : 0 } + stock_and_rate = arg.get('warehouse') and self.get_warehouse_details(json.dumps(arg)) or {} + ret.update(stock_and_rate) return ret - # Get UOM Details - # ---------------- def get_uom_details(self, arg = ''): arg, ret = eval(arg), {} uom = sql("select conversion_factor from `tabUOM Conversion Detail` where parent = %s and uom = %s", (arg['item_code'],arg['uom']), as_dict = 1) @@ -78,28 +72,44 @@ class DocType(TransactionBase): 'transfer_qty' : flt(arg['qty']) * flt(uom[0]['conversion_factor']), } return ret - - - # get stock and incoming rate on posting date - # --------------------------------------------- + def get_warehouse_details(self, arg): + import json + arg, actual_qty, in_rate = json.loads(arg), 0, 0 + ret = { + "actual_qty" : self.get_as_on_stock(arg.get('item_code'), arg.get('warehouse'), + self.doc.posting_date, self.doc.posting_time), + "incoming_rate" : self.get_incoming_rate(arg.get('item_code'), + arg.get('warehouse'), self.doc.posting_date, self.doc.posting_time, + arg.get('transfer_qty'), arg.get('serial_no'), arg.get('fg_item'), + arg.get('bom_no')) or 0 + } + return ret + + def get_stock_and_rate(self, bom_no = ''): + """ get stock and incoming rate on posting date""" for d in getlist(self.doclist, 'mtn_details'): # assign parent warehouse - d.s_warehouse = cstr(d.s_warehouse) or self.doc.purpose != 'Production Order' and self.doc.from_warehouse or '' - d.t_warehouse = cstr(d.t_warehouse) or self.doc.purpose != 'Production Order' and self.doc.to_warehouse or '' + d.s_warehouse = cstr(d.s_warehouse) or self.doc.purpose != 'Production Order' \ + and self.doc.from_warehouse or '' + d.t_warehouse = cstr(d.t_warehouse) or self.doc.purpose != 'Production Order' \ + and self.doc.to_warehouse or '' # get current stock at source warehouse - d.actual_qty = d.s_warehouse and self.get_as_on_stock(d.item_code, d.s_warehouse, self.doc.posting_date, self.doc.posting_time) or 0 + d.actual_qty = self.get_as_on_stock(d.item_code, d.s_warehouse or d.t_warehouse, + self.doc.posting_date, self.doc.posting_time) or 0 # get incoming rate if not flt(d.incoming_rate): - d.incoming_rate = self.get_incoming_rate(d.item_code, d.s_warehouse, self.doc.posting_date, self.doc.posting_time, d.transfer_qty, d.serial_no, d.fg_item, d.bom_no or bom_no) + d.incoming_rate = self.get_incoming_rate(d.item_code, + d.s_warehouse or d.t_warehouse, self.doc.posting_date, + self.doc.posting_time, d.transfer_qty, d.serial_no, + d.fg_item, d.bom_no or bom_no) - # Get stock qty on any date - # --------------------------- def get_as_on_stock(self, item, wh, dt, tm): + """Get stock qty on any date""" bin = sql("select name from tabBin where item_code = %s and warehouse = %s", (item, wh)) bin_id = bin and bin[0][0] or '' prev_sle = bin_id and get_obj('Bin', bin_id).get_prev_sle(dt, tm) or {} @@ -107,17 +117,15 @@ class DocType(TransactionBase): return qty - # Get incoming rate - # ------------------- - def get_incoming_rate(self, item, wh, dt, tm, qty = 0, serial_no = '', fg_item = 0, bom_no = ''): + def get_incoming_rate(self, item, wh, dt, tm, qty=0, serial_no='', fg_item=0, bom_no=''): in_rate = 0 if fg_item and bom_no: - # re-calculate cost for production item from bom - get_obj('BOM Control').calculate_cost(bom_no) - bom_obj = get_obj('BOM', bom_no) - in_rate = flt(bom_obj.doc.total_cost) / (flt(bom_obj.doc.quantity) or 1) + in_rate = webnotes.conn.sql("""select ifnull(total_cost, 0) / ifnull(quantity, 1) + from `tabBOM` where name = %s and docstatus=1""", bom_no, debug=1) + in_rate = in_rate and in_rate[0][0] or 0 elif wh: - in_rate = get_obj('Valuation Control').get_incoming_rate(dt, tm, item, wh, qty, serial_no) + in_rate = get_obj('Valuation Control').get_incoming_rate(dt, tm, + item, wh, qty, serial_no) return in_rate @@ -205,6 +213,10 @@ class DocType(TransactionBase): def validate_bom_no(self): if self.doc.bom_no: + if not webnotes.conn.sql("""select name from tabBOM where name = %s and docstatus = 1 + and ifnull(is_active, 'No') = 'Yes'""", self.doc.bom_no): + msgprint("""BOM: %s not found, may be it has been cancelled or inactivated""" % + self.doc.bom_no, raise_exception=1) if not self.doc.fg_completed_qty: msgprint("Please enter FG Completed Qty", raise_exception=1) @@ -215,7 +227,8 @@ class DocType(TransactionBase): self.validate_for_production_order(pro_obj) bom_no = pro_obj.doc.bom_no - fg_qty = (self.doc.process == 'Backflush') and flt(self.doc.fg_completed_qty) or flt(pro_obj.doc.qty) + fg_qty = (self.doc.process == 'Backflush') and flt(self.doc.fg_completed_qty) \ + or flt(pro_obj.doc.qty) use_multi_level_bom = pro_obj.doc.use_multi_level_bom elif self.doc.purpose == 'Other': self.validate_bom_no() @@ -234,22 +247,30 @@ class DocType(TransactionBase): if self.doc.process == 'Backflush': sw = '' tw = cstr(pro_obj.doc.fg_warehouse) - fg_item_dict = {cstr(pro_obj.doc.production_item) : [self.doc.fg_completed_qty, pro_obj.doc.description, pro_obj.doc.stock_uom]} + fg_item_dict = { + cstr(pro_obj.doc.production_item) : [self.doc.fg_completed_qty, + pro_obj.doc.description, pro_obj.doc.stock_uom] + } elif self.doc.purpose == 'Other' and self.doc.bom_no: sw, tw = '', '' item = sql("select item, description, uom from `tabBOM` where name = %s", self.doc.bom_no, as_dict=1) - fg_item_dict = {item[0]['item'] : [self.doc.fg_completed_qty, item[0]['description'], item[0]['uom']]} + fg_item_dict = { + item[0]['item'] : [self.doc.fg_completed_qty, + item[0]['description'], item[0]['uom']] + } if fg_item_dict: self.add_to_stock_entry_detail(sw, tw, fg_item_dict, fg_item = 1, bom_no = bom_no) + self.get_stock_and_rate() + def validate_transfer_qty(self): for d in getlist(self.doclist, 'mtn_details'): if flt(d.transfer_qty) <= 0: - msgprint("Transfer Quantity can not be less than or equal to zero at Row No " + cstr(d.idx)) - raise Exception + msgprint("Transfer Quantity can not be less than or equal to zero \ + at Row No " + cstr(d.idx), raise_exception=1) def calc_amount(self): @@ -326,8 +347,10 @@ class DocType(TransactionBase): self.validate_incoming_rate() self.validate_bom_belongs_to_item() self.calc_amount() - get_obj('Sales Common').validate_fiscal_year(self.doc.fiscal_year,self.doc.posting_date,'Posting Date') - + get_obj('Sales Common').validate_fiscal_year(self.doc.fiscal_year, + self.doc.posting_date, 'Posting Date') + if self.doc.purpose == 'Other': + self.validate_bom_no() # If target warehouse exists, incoming rate is mandatory # -------------------------------------------------------- diff --git a/stock/doctype/stock_entry/stock_entry.txt b/stock/doctype/stock_entry/stock_entry.txt index 24412b88cf..5d2a79d5b7 100644 --- a/stock/doctype/stock_entry/stock_entry.txt +++ b/stock/doctype/stock_entry/stock_entry.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-11-28 11:26:22", "modified_by": "Administrator", - "modified": "2012-11-30 14:10:02" + "modified": "2012-12-03 12:00:59" }, { "is_submittable": 1, @@ -414,7 +414,9 @@ }, { "print_hide": 1, + "description": "Get valuation rate and available stock at source/target warehouse on mentioned posting date-time. If serialized item, please press this button after entering serial nos.", "oldfieldtype": "Button", + "colour": "White:FFF", "doctype": "DocField", "label": "Get Stock and Rate", "options": "get_stock_and_rate", diff --git a/stock/doctype/stock_entry_detail/stock_entry_detail.txt b/stock/doctype/stock_entry_detail/stock_entry_detail.txt index 031bd8f42f..503dd5b438 100644 --- a/stock/doctype/stock_entry_detail/stock_entry_detail.txt +++ b/stock/doctype/stock_entry_detail/stock_entry_detail.txt @@ -1,266 +1,218 @@ -# DocType, Stock Entry Detail [ - - # These values are common in all dictionaries - { - 'creation': '2012-04-13 11:56:38', - 'docstatus': 0, - 'modified': '2012-05-01 16:16:20', - 'modified_by': u'Administrator', - 'owner': u'Administrator' - }, - - # These values are common for all DocType - { - 'autoname': u'MTND/.######', - 'colour': u'White:FFF', - 'default_print_format': u'Standard', - 'doctype': 'DocType', - 'istable': 1, - 'module': u'Stock', - 'name': '__common__', - 'section_style': u'Tray', - 'server_code_error': u' ', - 'show_in_menu': 0, - 'version': 1 - }, - - # These values are common for all DocField - { - 'doctype': u'DocField', - 'name': '__common__', - 'parent': u'Stock Entry Detail', - 'parentfield': u'fields', - 'parenttype': u'DocType' - }, - - # DocType, Stock Entry Detail - { - 'doctype': 'DocType', - 'name': u'Stock Entry Detail' - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u's_warehouse', - 'fieldtype': u'Link', - 'in_filter': 1, - 'label': u'Source Warehouse', - 'oldfieldname': u's_warehouse', - 'oldfieldtype': u'Link', - 'options': u'Warehouse', - 'permlevel': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u't_warehouse', - 'fieldtype': u'Link', - 'in_filter': 1, - 'label': u'Target Warehouse', - 'oldfieldname': u't_warehouse', - 'oldfieldtype': u'Link', - 'options': u'Warehouse', - 'permlevel': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'item_code', - 'fieldtype': u'Link', - 'in_filter': 1, - 'label': u'Item Code', - 'oldfieldname': u'item_code', - 'oldfieldtype': u'Link', - 'options': u'Item', - 'permlevel': 0, - 'reqd': 1, - 'search_index': 1, - 'trigger': u'Client' - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'description', - 'fieldtype': u'Text', - 'label': u'Description', - 'oldfieldname': u'description', - 'oldfieldtype': u'Text', - 'permlevel': 0, - 'width': u'300px' - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'qty', - 'fieldtype': u'Currency', - 'label': u'Qty', - 'oldfieldname': u'qty', - 'oldfieldtype': u'Currency', - 'permlevel': 0, - 'reqd': 1, - 'trigger': u'Client' - }, - - # DocField - { - 'colour': u'White:FFF', - 'doctype': u'DocField', - 'fieldname': u'uom', - 'fieldtype': u'Link', - 'label': u'UOM', - 'oldfieldname': u'uom', - 'oldfieldtype': u'Link', - 'options': u'UOM', - 'permlevel': 0, - 'reqd': 1, - 'trigger': u'Client' - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'incoming_rate', - 'fieldtype': u'Currency', - 'label': u'Incoming Rate', - 'oldfieldname': u'incoming_rate', - 'oldfieldtype': u'Currency', - 'permlevel': 0, - 'reqd': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'amount', - 'fieldtype': u'Currency', - 'label': u'Amount', - 'oldfieldname': u'amount', - 'oldfieldtype': u'Currency', - 'permlevel': 1 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'serial_no', - 'fieldtype': u'Text', - 'label': u'Serial No', - 'no_copy': 1, - 'oldfieldname': u'serial_no', - 'oldfieldtype': u'Text', - 'permlevel': 0, - 'reqd': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'batch_no', - 'fieldtype': u'Link', - 'label': u'Batch No', - 'oldfieldname': u'batch_no', - 'oldfieldtype': u'Link', - 'options': u'Batch', - 'permlevel': 0, - 'print_hide': 1, - 'trigger': u'Client' - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'reqd_qty', - 'fieldtype': u'Currency', - 'in_filter': 0, - 'label': u'Reqd Qty', - 'oldfieldname': u'reqd_qty', - 'oldfieldtype': u'Currency', - 'permlevel': 3, - 'print_hide': 1 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'actual_qty', - 'fieldtype': u'Read Only', - 'in_filter': 1, - 'label': u'Actual Qty (at source)', - 'no_copy': 1, - 'oldfieldname': u'actual_qty', - 'oldfieldtype': u'Read Only', - 'permlevel': 1, - 'print_hide': 1, - 'reqd': 0, - 'search_index': 1 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'conversion_factor', - 'fieldtype': u'Currency', - 'label': u'Conversion Factor', - 'oldfieldname': u'conversion_factor', - 'oldfieldtype': u'Currency', - 'permlevel': 1, - 'reqd': 1 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'transfer_qty', - 'fieldtype': u'Currency', - 'label': u'Stock Qty', - 'oldfieldname': u'transfer_qty', - 'oldfieldtype': u'Currency', - 'permlevel': 1, - 'reqd': 1 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'stock_uom', - 'fieldtype': u'Link', - 'in_filter': 0, - 'label': u'Stock UOM', - 'oldfieldname': u'stock_uom', - 'oldfieldtype': u'Link', - 'options': u'UOM', - 'permlevel': 1, - 'reqd': 1, - 'search_index': 0 - }, - - # DocField - { - 'description': u'BOM No. for a Finished Good Item', - 'doctype': u'DocField', - 'fieldname': u'bom_no', - 'fieldtype': u'Link', - 'label': u'BOM No.', - 'options': u'BOM', - 'permlevel': 0 - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'fg_item', - 'fieldtype': u'Check', - 'in_filter': 1, - 'label': u'FG Item', - 'oldfieldname': u'fg_item', - 'oldfieldtype': u'Check', - 'permlevel': 0, - 'print_hide': 1 - } + { + "owner": "Administrator", + "docstatus": 0, + "creation": "2012-07-03 13:29:47", + "modified_by": "Administrator", + "modified": "2012-12-03 11:37:17" + }, + { + "istable": 1, + "autoname": "MTND/.######", + "name": "__common__", + "default_print_format": "Standard", + "doctype": "DocType", + "module": "Stock" + }, + { + "name": "__common__", + "parent": "Stock Entry Detail", + "doctype": "DocField", + "parenttype": "DocType", + "parentfield": "fields" + }, + { + "name": "Stock Entry Detail", + "doctype": "DocType" + }, + { + "oldfieldtype": "Link", + "doctype": "DocField", + "label": "Source Warehouse", + "oldfieldname": "s_warehouse", + "options": "Warehouse", + "fieldname": "s_warehouse", + "fieldtype": "Link", + "permlevel": 0, + "in_filter": 1 + }, + { + "oldfieldtype": "Link", + "doctype": "DocField", + "label": "Target Warehouse", + "oldfieldname": "t_warehouse", + "options": "Warehouse", + "fieldname": "t_warehouse", + "fieldtype": "Link", + "permlevel": 0, + "in_filter": 1 + }, + { + "oldfieldtype": "Link", + "doctype": "DocField", + "label": "Item Code", + "oldfieldname": "item_code", + "permlevel": 0, + "trigger": "Client", + "fieldname": "item_code", + "fieldtype": "Link", + "search_index": 1, + "reqd": 1, + "options": "Item", + "in_filter": 1 + }, + { + "oldfieldtype": "Text", + "doctype": "DocField", + "label": "Description", + "oldfieldname": "description", + "width": "300px", + "fieldname": "description", + "fieldtype": "Text", + "permlevel": 0 + }, + { + "oldfieldtype": "Currency", + "doctype": "DocField", + "label": "Qty", + "oldfieldname": "qty", + "trigger": "Client", + "fieldname": "qty", + "fieldtype": "Currency", + "reqd": 1, + "permlevel": 0 + }, + { + "oldfieldtype": "Link", + "colour": "White:FFF", + "doctype": "DocField", + "label": "UOM", + "oldfieldname": "uom", + "trigger": "Client", + "fieldname": "uom", + "fieldtype": "Link", + "reqd": 1, + "options": "UOM", + "permlevel": 0 + }, + { + "oldfieldtype": "Currency", + "doctype": "DocField", + "label": "Valuation Rate", + "oldfieldname": "incoming_rate", + "fieldname": "incoming_rate", + "fieldtype": "Currency", + "reqd": 0, + "permlevel": 0 + }, + { + "oldfieldtype": "Currency", + "doctype": "DocField", + "label": "Amount", + "oldfieldname": "amount", + "fieldname": "amount", + "fieldtype": "Currency", + "permlevel": 1 + }, + { + "no_copy": 1, + "oldfieldtype": "Text", + "doctype": "DocField", + "label": "Serial No", + "oldfieldname": "serial_no", + "fieldname": "serial_no", + "fieldtype": "Text", + "reqd": 0, + "permlevel": 0 + }, + { + "print_hide": 1, + "oldfieldtype": "Link", + "doctype": "DocField", + "label": "Batch No", + "oldfieldname": "batch_no", + "trigger": "Client", + "fieldname": "batch_no", + "fieldtype": "Link", + "options": "Batch", + "permlevel": 0 + }, + { + "print_hide": 1, + "oldfieldtype": "Currency", + "doctype": "DocField", + "label": "Reqd Qty", + "oldfieldname": "reqd_qty", + "fieldname": "reqd_qty", + "fieldtype": "Currency", + "permlevel": 3, + "in_filter": 0 + }, + { + "print_hide": 1, + "no_copy": 1, + "oldfieldtype": "Read Only", + "doctype": "DocField", + "label": "Actual Qty (at source/target)", + "oldfieldname": "actual_qty", + "fieldname": "actual_qty", + "fieldtype": "Read Only", + "search_index": 1, + "reqd": 0, + "permlevel": 1, + "in_filter": 1 + }, + { + "oldfieldtype": "Currency", + "doctype": "DocField", + "label": "Conversion Factor", + "oldfieldname": "conversion_factor", + "fieldname": "conversion_factor", + "fieldtype": "Currency", + "reqd": 1, + "permlevel": 1 + }, + { + "oldfieldtype": "Currency", + "doctype": "DocField", + "label": "Stock Qty", + "oldfieldname": "transfer_qty", + "fieldname": "transfer_qty", + "fieldtype": "Currency", + "reqd": 1, + "permlevel": 1 + }, + { + "oldfieldtype": "Link", + "doctype": "DocField", + "label": "Stock UOM", + "oldfieldname": "stock_uom", + "options": "UOM", + "fieldname": "stock_uom", + "fieldtype": "Link", + "search_index": 0, + "reqd": 1, + "permlevel": 1, + "in_filter": 0 + }, + { + "description": "BOM No. for a Finished Good Item", + "doctype": "DocField", + "label": "BOM No", + "options": "BOM", + "fieldname": "bom_no", + "fieldtype": "Link", + "permlevel": 0 + }, + { + "print_hide": 1, + "oldfieldtype": "Check", + "doctype": "DocField", + "label": "FG Item", + "oldfieldname": "fg_item", + "fieldname": "fg_item", + "fieldtype": "Check", + "permlevel": 0, + "in_filter": 1 + } ] \ No newline at end of file diff --git a/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/stock/doctype/stock_ledger_entry/stock_ledger_entry.py index facd052ca5..e6c4deeec5 100644 --- a/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +++ b/stock/doctype/stock_ledger_entry/stock_ledger_entry.py @@ -37,15 +37,12 @@ class DocType: if (batch_bal + self.doc.actual_qty) < 0: msgprint("""Not enough quantity (requested: %(actual_qty)s, current: %(batch_bal)s in Batch - %(batch_no)s for Item %(item_code)s at Warehouse%(warehouse)s + %(batch_no)s for Item %(item_code)s at Warehouse %(warehouse)s as on %(posting_date)s %(posting_time)s""" % self.doc.fields, raise_exception = 1) self.doc.fields.pop('batch_bal') - # mandatory - # --------- - def validate_mandatory(self): mandatory = ['warehouse','transaction_date','posting_date','voucher_type','voucher_no','actual_qty','company','fiscal_year'] for k in mandatory: @@ -55,9 +52,6 @@ class DocType: if not sql("select name from tabWarehouse where name = '%s'" % self.doc.fields.get(k)): msgprint("Warehouse: '%s' does not exist in the system. Please check." % self.doc.fields.get(k), raise_exception = 1) - # validate for item - # ----------------- - def validate_item(self): item_det = sql("select name, has_batch_no, docstatus from tabItem where name = '%s'" % self.doc.item_code) From 74c4cc1845d4e40b9387d6f378fc8cf653191f01 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Mon, 3 Dec 2012 17:26:35 +0530 Subject: [PATCH 3/5] removed debug=1 in salary manager --- hr/doctype/salary_manager/salary_manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hr/doctype/salary_manager/salary_manager.py b/hr/doctype/salary_manager/salary_manager.py index d8f1288ae3..45b78a6fb7 100644 --- a/hr/doctype/salary_manager/salary_manager.py +++ b/hr/doctype/salary_manager/salary_manager.py @@ -48,7 +48,7 @@ class DocType: from `tabEmployee` t1, `tabSalary Structure` t2 where t1.docstatus!=2 and t2.docstatus != 2 and t1.name = t2.employee - %s """% cond, debug=1) + %s """% cond) return emp_list From 23aac61bbf54802c632827f6d8c7394f8adf8585 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 3 Dec 2012 17:27:21 +0530 Subject: [PATCH 4/5] removed basic info section --- accounts/doctype/form_16a/form_16a.txt | 2 +- accounts/doctype/journal_voucher/journal_voucher.txt | 2 +- accounts/doctype/purchase_invoice/purchase_invoice.txt | 2 +- accounts/doctype/sales_invoice/sales_invoice.txt | 2 +- buying/doctype/purchase_order/purchase_order.txt | 2 +- buying/doctype/purchase_request/purchase_request.txt | 2 +- buying/doctype/supplier/supplier.txt | 2 +- buying/report/supplier_quotations/supplier_quotations.txt | 2 +- hr/doctype/salary_slip/salary_slip.txt | 2 +- hr/doctype/salary_structure/salary_structure.txt | 2 +- projects/doctype/project/project.txt | 2 +- selling/doctype/customer/customer.txt | 2 +- selling/doctype/opportunity/opportunity.txt | 2 +- selling/doctype/quotation/quotation.txt | 2 +- selling/doctype/sales_order/sales_order.txt | 2 +- stock/doctype/delivery_note/delivery_note.txt | 2 +- stock/doctype/purchase_receipt/purchase_receipt.txt | 2 +- support/doctype/customer_issue/customer_issue.txt | 2 +- support/doctype/newsletter/newsletter.txt | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/accounts/doctype/form_16a/form_16a.txt b/accounts/doctype/form_16a/form_16a.txt index 17164bb8d4..0104311149 100644 --- a/accounts/doctype/form_16a/form_16a.txt +++ b/accounts/doctype/form_16a/form_16a.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-07-03 13:29:51", "modified_by": "Administrator", - "modified": "2012-03-27 14:35:41" + "modified": "2012-12-03 17:10:41" }, { "in_create": 0, diff --git a/accounts/doctype/journal_voucher/journal_voucher.txt b/accounts/doctype/journal_voucher/journal_voucher.txt index 1479a2e486..e4b4c92fd5 100644 --- a/accounts/doctype/journal_voucher/journal_voucher.txt +++ b/accounts/doctype/journal_voucher/journal_voucher.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-10-16 12:29:32", "modified_by": "Administrator", - "modified": "2012-10-15 12:38:42" + "modified": "2012-12-03 17:10:41" }, { "is_submittable": 1, diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.txt b/accounts/doctype/purchase_invoice/purchase_invoice.txt index 86150db623..b4c539cebf 100755 --- a/accounts/doctype/purchase_invoice/purchase_invoice.txt +++ b/accounts/doctype/purchase_invoice/purchase_invoice.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-11-28 11:26:17", "modified_by": "Administrator", - "modified": "2012-11-26 11:52:32" + "modified": "2012-12-03 17:10:41" }, { "is_submittable": 1, diff --git a/accounts/doctype/sales_invoice/sales_invoice.txt b/accounts/doctype/sales_invoice/sales_invoice.txt index 8851951839..91e3298107 100644 --- a/accounts/doctype/sales_invoice/sales_invoice.txt +++ b/accounts/doctype/sales_invoice/sales_invoice.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-09-10 12:22:26", "modified_by": "Administrator", - "modified": "2012-11-30 16:39:08" + "modified": "2012-12-03 17:10:41" }, { "is_submittable": 1, diff --git a/buying/doctype/purchase_order/purchase_order.txt b/buying/doctype/purchase_order/purchase_order.txt index 95bc970c4a..2463a0dcbd 100644 --- a/buying/doctype/purchase_order/purchase_order.txt +++ b/buying/doctype/purchase_order/purchase_order.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-08-06 20:00:37", "modified_by": "Administrator", - "modified": "2012-08-06 17:14:18" + "modified": "2012-12-03 17:10:41" }, { "is_submittable": 1, diff --git a/buying/doctype/purchase_request/purchase_request.txt b/buying/doctype/purchase_request/purchase_request.txt index 54401fab80..393367e133 100644 --- a/buying/doctype/purchase_request/purchase_request.txt +++ b/buying/doctype/purchase_request/purchase_request.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-07-03 13:29:58", "modified_by": "Administrator", - "modified": "2012-05-01 13:02:17" + "modified": "2012-12-03 17:10:41" }, { "is_submittable": 1, diff --git a/buying/doctype/supplier/supplier.txt b/buying/doctype/supplier/supplier.txt index a8caadb7c8..318316e646 100644 --- a/buying/doctype/supplier/supplier.txt +++ b/buying/doctype/supplier/supplier.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-12-03 10:31:02", "modified_by": "Administrator", - "modified": "2012-12-03 11:25:12" + "modified": "2012-12-03 17:10:41" }, { "autoname": "naming_series:", diff --git a/buying/report/supplier_quotations/supplier_quotations.txt b/buying/report/supplier_quotations/supplier_quotations.txt index 860a432810..dba7dc6fac 100644 --- a/buying/report/supplier_quotations/supplier_quotations.txt +++ b/buying/report/supplier_quotations/supplier_quotations.txt @@ -5,7 +5,7 @@ { 'creation': '2012-08-07 14:52:42', 'docstatus': 0, - 'modified': '2012-08-07 14:57:57', + 'modified': '2012-12-03 17:10:41', 'modified_by': u'Administrator', 'owner': u'Administrator' }, diff --git a/hr/doctype/salary_slip/salary_slip.txt b/hr/doctype/salary_slip/salary_slip.txt index 731d82373c..ecab74f66c 100644 --- a/hr/doctype/salary_slip/salary_slip.txt +++ b/hr/doctype/salary_slip/salary_slip.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-07-03 13:29:40", "modified_by": "Administrator", - "modified": "2012-03-27 14:45:51" + "modified": "2012-12-03 17:10:41" }, { "is_submittable": 1, diff --git a/hr/doctype/salary_structure/salary_structure.txt b/hr/doctype/salary_structure/salary_structure.txt index 9a40edf099..f45d873609 100644 --- a/hr/doctype/salary_structure/salary_structure.txt +++ b/hr/doctype/salary_structure/salary_structure.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-07-03 13:29:41", "modified_by": "Administrator", - "modified": "2012-03-27 14:36:00" + "modified": "2012-12-03 17:10:41" }, { "name": "__common__", diff --git a/projects/doctype/project/project.txt b/projects/doctype/project/project.txt index b58f60ae3e..eaa0ac8974 100644 --- a/projects/doctype/project/project.txt +++ b/projects/doctype/project/project.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-11-28 11:26:18", "modified_by": "Administrator", - "modified": "2012-11-14 17:04:57" + "modified": "2012-12-03 17:10:41" }, { "autoname": "field:project_name", diff --git a/selling/doctype/customer/customer.txt b/selling/doctype/customer/customer.txt index 2bc9e89076..cc49c0aa37 100644 --- a/selling/doctype/customer/customer.txt +++ b/selling/doctype/customer/customer.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-12-03 10:31:05", "modified_by": "Administrator", - "modified": "2012-12-03 11:25:29" + "modified": "2012-12-03 17:10:41" }, { "description": "Buyer of Goods and Services.", diff --git a/selling/doctype/opportunity/opportunity.txt b/selling/doctype/opportunity/opportunity.txt index 47d79f29ee..f3e9d85355 100644 --- a/selling/doctype/opportunity/opportunity.txt +++ b/selling/doctype/opportunity/opportunity.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-12-03 10:31:06", "modified_by": "Administrator", - "modified": "2012-12-03 13:57:32" + "modified": "2012-12-03 17:10:41" }, { "is_submittable": 1, diff --git a/selling/doctype/quotation/quotation.txt b/selling/doctype/quotation/quotation.txt index 0a39bc62e8..6924dcb23a 100644 --- a/selling/doctype/quotation/quotation.txt +++ b/selling/doctype/quotation/quotation.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-11-28 11:26:20", "modified_by": "Administrator", - "modified": "2012-11-26 11:57:10" + "modified": "2012-12-03 17:10:41" }, { "is_submittable": 1, diff --git a/selling/doctype/sales_order/sales_order.txt b/selling/doctype/sales_order/sales_order.txt index 637914ac0f..822141123b 100644 --- a/selling/doctype/sales_order/sales_order.txt +++ b/selling/doctype/sales_order/sales_order.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-11-28 11:26:20", "modified_by": "Administrator", - "modified": "2012-11-26 11:56:33" + "modified": "2012-12-03 17:10:41" }, { "is_submittable": 1, diff --git a/stock/doctype/delivery_note/delivery_note.txt b/stock/doctype/delivery_note/delivery_note.txt index 3752b6e1bb..7f402fad11 100644 --- a/stock/doctype/delivery_note/delivery_note.txt +++ b/stock/doctype/delivery_note/delivery_note.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-11-28 11:26:21", "modified_by": "Administrator", - "modified": "2012-11-26 11:56:10" + "modified": "2012-12-03 17:10:41" }, { "is_submittable": 1, diff --git a/stock/doctype/purchase_receipt/purchase_receipt.txt b/stock/doctype/purchase_receipt/purchase_receipt.txt index 2e89d2242d..4df938366a 100755 --- a/stock/doctype/purchase_receipt/purchase_receipt.txt +++ b/stock/doctype/purchase_receipt/purchase_receipt.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-07-17 13:24:57", "modified_by": "Administrator", - "modified": "2012-07-16 16:26:24" + "modified": "2012-12-03 17:10:41" }, { "is_submittable": 1, diff --git a/support/doctype/customer_issue/customer_issue.txt b/support/doctype/customer_issue/customer_issue.txt index 675f75e4ad..cc03fffda7 100644 --- a/support/doctype/customer_issue/customer_issue.txt +++ b/support/doctype/customer_issue/customer_issue.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-11-28 11:26:23", "modified_by": "Administrator", - "modified": "2012-11-26 11:19:39" + "modified": "2012-12-03 17:10:41" }, { "is_submittable": 1, diff --git a/support/doctype/newsletter/newsletter.txt b/support/doctype/newsletter/newsletter.txt index 738084f9df..b32b875f3e 100644 --- a/support/doctype/newsletter/newsletter.txt +++ b/support/doctype/newsletter/newsletter.txt @@ -4,7 +4,7 @@ "docstatus": 0, "creation": "2012-11-28 11:26:23", "modified_by": "Administrator", - "modified": "2012-11-26 11:18:43" + "modified": "2012-12-03 17:10:41" }, { "autoname": "naming_series:", From 9356ac7ef55d39bfdfb0503b784f1ef17aeaa2a3 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Mon, 3 Dec 2012 17:35:17 +0530 Subject: [PATCH 5/5] sync communication before patch --- .../november_2012/support_ticket_response_to_communication.py | 1 + 1 file changed, 1 insertion(+) diff --git a/patches/november_2012/support_ticket_response_to_communication.py b/patches/november_2012/support_ticket_response_to_communication.py index 6534bb1549..12c1850dfb 100644 --- a/patches/november_2012/support_ticket_response_to_communication.py +++ b/patches/november_2012/support_ticket_response_to_communication.py @@ -2,6 +2,7 @@ import webnotes import email.utils def execute(): + webnotes.reload_doc("core", "doctype", "communication") webnotes.conn.commit() for d in webnotes.conn.sql("""select owner, creation, modified, modified_by, parent, from_email, mail from `tabSupport Ticket Response`""", as_dict=1):