From e05a5b6043f24382c6f5f64f058566a01924c3a3 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Thu, 27 Dec 2012 15:05:06 +0530 Subject: [PATCH 1/2] do not pull customer on selection of project --- selling/doctype/sales_order/sales_order.js | 14 +--- selling/doctype/sales_order/sales_order.py | 75 +--------------------- 2 files changed, 4 insertions(+), 85 deletions(-) diff --git a/selling/doctype/sales_order/sales_order.js b/selling/doctype/sales_order/sales_order.js index 17c8d097b3..a3b71b4cbb 100644 --- a/selling/doctype/sales_order/sales_order.js +++ b/selling/doctype/sales_order/sales_order.js @@ -178,19 +178,11 @@ cur_frm.fields_dict['project_name'].get_query = function(doc, cdt, cdn) { var cond = ''; if(doc.customer) cond = '(`tabProject`.customer = "'+doc.customer+'" OR IFNULL(`tabProject`.customer,"")="") AND'; return repl('SELECT `tabProject`.name FROM `tabProject` \ - WHERE `tabProject`.status not in ("Completed", "Cancelled") \ - AND %(cond)s `tabProject`.name LIKE "%s" ORDER BY `tabProject`.name ASC LIMIT 50', {cond:cond}); + WHERE `tabProject`.status not in ("Completed", "Cancelled") \ + AND %(cond)s `tabProject`.name LIKE "%s" \ + ORDER BY `tabProject`.name ASC LIMIT 50', {cond:cond}); } -//---- get customer details ---------------------------- -cur_frm.cscript.project_name = function(doc,cdt,cdn){ - $c_obj(make_doclist(doc.doctype, doc.name),'pull_project_customer','', function(r,rt){ - refresh_many(['customer','customer_name', 'customer_address', 'contact_person', 'territory', 'contact_no', 'email_id', 'customer_group']); - }); - -} - - // *************** Customized link query for QUOTATION ***************************** cur_frm.fields_dict['quotation_no'].get_query = function(doc) { diff --git a/selling/doctype/sales_order/sales_order.py b/selling/doctype/sales_order/sales_order.py index f024efc2a8..e0ac2ffb57 100644 --- a/selling/doctype/sales_order/sales_order.py +++ b/selling/doctype/sales_order/sales_order.py @@ -39,10 +39,6 @@ class DocType(TransactionBase): self.partner_tname = 'Partner Target Detail' self.territory_tname = 'Territory Target Detail' -# DOCTYPE TRIGGER FUNCTIONS -# ============================= - # Pull Quotation Items - # ----------------------- def pull_quotation_details(self): self.doclist = self.doc.clear_table(self.doclist, 'other_charges') self.doclist = self.doc.clear_table(self.doclist, 'sales_order_details') @@ -55,29 +51,12 @@ class DocType(TransactionBase): return cstr(self.doc.quotation_no) - #pull project customer - #------------------------- - def pull_project_customer(self): - res = sql("select customer from `tabProject` where name = '%s'"%self.doc.project_name) - if res and res[0][0]: - get_obj('DocType Mapper', 'Project-Sales Order').dt_map('Project', 'Sales Order', self.doc.project_name, self.doc, self.doclist, "[['Project', 'Sales Order']]") - - - # Get contact person details based on customer selected - # ------------------------------------------------------ def get_contact_details(self): get_obj('Sales Common').get_contact_details(self,0) - # Get Commission rate of Sales Partner - # ------------------------------------- def get_comm_rate(self, sales_partner): return get_obj('Sales Common').get_comm_rate(sales_partner, self) - -# SALES ORDER DETAILS TRIGGER FUNCTIONS -# ================================================================================ - # Get Item Details - # ---------------- def get_item_details(self, args=None): import json args = args and json.loads(args) or {} @@ -94,45 +73,24 @@ class DocType(TransactionBase): if not doc.fields.get(r): doc.fields[r] = ret[r] - - # Re-calculates Basic Rate & amount based on Price List Selected - # -------------------------------------------------------------- def get_adj_percent(self, arg=''): get_obj('Sales Common').get_adj_percent(self) - - - # Get projected qty of item based on warehouse selected - # ----------------------------------------------------- def get_available_qty(self,args): return get_obj('Sales Common').get_available_qty(eval(args)) -# OTHER CHARGES TRIGGER FUNCTIONS -# ==================================================================================== - - # Get Tax rate if account type is TAX - # ------------------------------------ def get_rate(self,arg): return get_obj('Sales Common').get_rate(arg) - # Load Default Charges - # ---------------------------------------------------------- def load_default_taxes(self): self.doclist = get_obj('Sales Common').load_default_taxes(self) - # Pull details from other charges master (Get Sales Taxes and Charges Master) - # ---------------------------------------------------------- def get_other_charges(self): self.doclist = get_obj('Sales Common').get_other_charges(self) - -# GET TERMS & CONDITIONS -# ===================================================================================== def get_tc_details(self): return get_obj('Sales Common').get_tc_details(self) -#check if maintenance schedule already generated -#============================================ def check_maintenance_schedule(self): nm = sql("select t1.name from `tabMaintenance Schedule` t1, `tabMaintenance Schedule Item` t2 where t2.parent=t1.name and t2.prevdoc_docname=%s and t1.docstatus=1", self.doc.name) nm = nm and nm[0][0] or '' @@ -140,8 +98,6 @@ class DocType(TransactionBase): if not nm: return 'No' -#check if maintenance visit already generated -#============================================ def check_maintenance_visit(self): nm = sql("select t1.name from `tabMaintenance Visit` t1, `tabMaintenance Visit Purpose` t2 where t2.parent=t1.name and t2.prevdoc_docname=%s and t1.docstatus=1 and t1.completion_status='Fully Completed'", self.doc.name) nm = nm and nm[0][0] or '' @@ -149,20 +105,12 @@ class DocType(TransactionBase): if not nm: return 'No' -# VALIDATE -# ===================================================================================== - # Fiscal Year Validation - # ---------------------- def validate_fiscal_year(self): get_obj('Sales Common').validate_fiscal_year(self.doc.fiscal_year,self.doc.transaction_date,'Sales Order Date') - # Validate values with reference document - #---------------------------------------- def validate_reference_value(self): get_obj('DocType Mapper', 'Quotation-Sales Order', with_children = 1).validate_reference_value(self, self.doc.name) - # Validate Mandatory - # ------------------- def validate_mandatory(self): # validate transaction date v/s delivery date if self.doc.delivery_date: @@ -174,9 +122,6 @@ class DocType(TransactionBase): msgprint("Please Enter Amendment Date") raise Exception - - # Validate P.O Date - # ------------------ def validate_po(self): # validate p.o date v/s delivery date if self.doc.po_date and self.doc.delivery_date and getdate(self.doc.po_date) > getdate(self.doc.delivery_date): @@ -191,8 +136,6 @@ class DocType(TransactionBase): msgprint("""Another Sales Order (%s) exists against same PO No and Customer. Please be sure, you are not making duplicate entry.""" % so[0][0]) - # Validations of Details Table - # ----------------------------- def validate_for_items(self): check_list, flag = [], 0 chk_dupl_itm = [] @@ -237,8 +180,6 @@ class DocType(TransactionBase): if getlist(self.doclist, 'sales_order_details') and self.doc.quotation_no and flag == 0: msgprint("There are no items of the quotation selected", raise_exception=1) - # validate sales/ maintenance quotation against order type - #------------------------------------------------------------------ def validate_sales_mntc_quotation(self): for d in getlist(self.doclist, 'sales_order_details'): if d.prevdoc_docname: @@ -255,18 +196,13 @@ class DocType(TransactionBase): self.validate_sales_mntc_quotation() - #check for does customer belong to same project as entered.. - #------------------------------------------------------------------------------------------------- def validate_proj_cust(self): if self.doc.project_name and self.doc.customer_name: res = sql("select name from `tabProject` where name = '%s' and (customer = '%s' or ifnull(customer,'')='')"%(self.doc.project_name, self.doc.customer)) if not res: msgprint("Customer - %s does not belong to project - %s. \n\nIf you want to use project for multiple customers then please make customer details blank in project - %s."%(self.doc.customer,self.doc.project_name,self.doc.project_name)) raise Exception - - - # Validate - # --------- + def validate(self): self.validate_fiscal_year() self.validate_order_type() @@ -295,11 +231,6 @@ class DocType(TransactionBase): if not self.doc.billing_status: self.doc.billing_status = 'Not Billed' if not self.doc.delivery_status: self.doc.delivery_status = 'Not Delivered' - -# ON SUBMIT -# =============================================================================================== - # Checks Quotation Status - # ------------------------ def check_prev_docstatus(self): for d in getlist(self.doclist, 'sales_order_details'): cancel_quo = sql("select name from `tabQuotation` where docstatus = 2 and name = '%s'" % d.prevdoc_docname) @@ -312,8 +243,6 @@ class DocType(TransactionBase): if enq: sql("update `tabOpportunity` set status = %s where name=%s",(flag,enq[0][0])) - #update status of quotation, enquiry - #---------------------------------------- def update_prevdoc_status(self, flag): for d in getlist(self.doclist, 'sales_order_details'): if d.prevdoc_docname: @@ -354,8 +283,6 @@ class DocType(TransactionBase): webnotes.conn.set(self.doc, 'status', 'Cancelled') - # does not allow to cancel document if DN or RV made against it is SUBMITTED - # ---------------------------------------------------------------------------- def check_nextdoc_docstatus(self): # Checks Delivery Note submit_dn = sql("select t1.name from `tabDelivery Note` t1,`tabDelivery Note Item` t2 where t1.name = t2.parent and t2.prevdoc_docname = '%s' and t1.docstatus = 1" % (self.doc.name)) From 562de92070d9741456c4c7b8699a681583d9eb7f Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Thu, 27 Dec 2012 15:14:27 +0530 Subject: [PATCH 2/2] removed project related doctype mapper --- .../Project-Sales Invoice.txt | 49 ------------------- .../doctype/sales_invoice/sales_invoice.js | 7 --- .../doctype/sales_invoice/sales_invoice.py | 7 --- .../december_2012/remove_project_mapper.py | 6 +++ patches/patch_list.py | 4 ++ .../Project-Sales Order.txt | 49 ------------------- .../Project-Delivery Note.txt | 49 ------------------- stock/doctype/delivery_note/delivery_note.py | 7 --- 8 files changed, 10 insertions(+), 168 deletions(-) delete mode 100644 accounts/DocType Mapper/Project-Sales Invoice/Project-Sales Invoice.txt create mode 100644 patches/december_2012/remove_project_mapper.py delete mode 100644 selling/DocType Mapper/Project-Sales Order/Project-Sales Order.txt delete mode 100644 stock/DocType Mapper/Project-Delivery Note/Project-Delivery Note.txt diff --git a/accounts/DocType Mapper/Project-Sales Invoice/Project-Sales Invoice.txt b/accounts/DocType Mapper/Project-Sales Invoice/Project-Sales Invoice.txt deleted file mode 100644 index dd5705da9a..0000000000 --- a/accounts/DocType Mapper/Project-Sales Invoice/Project-Sales Invoice.txt +++ /dev/null @@ -1,49 +0,0 @@ -[ - { - "owner": "ashwini@webnotestech.com", - "docstatus": 0, - "creation": "2010-09-01 15:47:59", - "modified_by": "Administrator", - "modified": "2012-04-03 12:49:50" - }, - { - "match_id": 0, - "parent": "Project-Sales Invoice", - "name": "__common__", - "doctype": "Table Mapper Detail", - "parenttype": "DocType Mapper", - "from_table": "Project", - "to_table": "Sales Invoice", - "validation_logic": "name is not null", - "parentfield": "table_mapper_details" - }, - { - "map": "Yes", - "match_id": 0, - "parent": "Project-Sales Invoice", - "name": "__common__", - "to_field": "customer", - "doctype": "Field Mapper Detail", - "parenttype": "DocType Mapper", - "checking_operator": "=", - "from_field": "customer", - "parentfield": "field_mapper_details" - }, - { - "name": "__common__", - "to_doctype": "Sales Invoice", - "module": "Accounts", - "doctype": "DocType Mapper", - "from_doctype": "Project" - }, - { - "name": "Project-Sales Invoice", - "doctype": "DocType Mapper" - }, - { - "doctype": "Field Mapper Detail" - }, - { - "doctype": "Table Mapper Detail" - } -] \ No newline at end of file diff --git a/accounts/doctype/sales_invoice/sales_invoice.js b/accounts/doctype/sales_invoice/sales_invoice.js index 7c9b47710f..86dc3a5c14 100644 --- a/accounts/doctype/sales_invoice/sales_invoice.js +++ b/accounts/doctype/sales_invoice/sales_invoice.js @@ -264,13 +264,6 @@ cur_frm.cscript.write_off_amount = function(doc) { } -//---- get customer details ---------------------------- -cur_frm.cscript.project_name = function(doc,cdt,cdn){ - $c_obj(make_doclist(doc.doctype, doc.name),'pull_project_customer','', function(r,rt){ - refresh_many(['customer', 'customer_name','customer_address', 'territory']); - }); -} - //Set debit and credit to zero on adding new row //---------------------------------------------- cur_frm.fields_dict['entries'].grid.onrowadd = function(doc, cdt, cdn){ diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py index 486bc0aad1..5042f5380b 100644 --- a/accounts/doctype/sales_invoice/sales_invoice.py +++ b/accounts/doctype/sales_invoice/sales_invoice.py @@ -320,13 +320,6 @@ class DocType(TransactionBase): def get_advances(self): self.doclist = get_obj('GL Control').get_advances(self, self.doc.debit_to, 'Sales Invoice Advance', 'advance_adjustment_details', 'credit') - - def pull_project_customer(self): - res = webnotes.conn.sql("select customer from `tabProject` where name = '%s'" % - self.doc.project_name) - if res and res[0][0]: - get_obj('DocType Mapper', 'Project-Sales Invoice').dt_map('Project', 'Sales Invoice', self.doc.project_name, self.doc, self.doclist, "[['Project', 'Sales Invoice']]") - def get_company_abbr(self): return webnotes.conn.sql("select abbr from tabCompany where name=%s", self.doc.company)[0][0] diff --git a/patches/december_2012/remove_project_mapper.py b/patches/december_2012/remove_project_mapper.py new file mode 100644 index 0000000000..39aae6b764 --- /dev/null +++ b/patches/december_2012/remove_project_mapper.py @@ -0,0 +1,6 @@ +import webnotes + +def execute(): + from webnotes.model import delete_doc + for d in ["Project-Sales Order", "Project-Delivery Note", "Project-Sales Invoice"]: + delete_doc("DocType Mapper", d) \ No newline at end of file diff --git a/patches/patch_list.py b/patches/patch_list.py index 2ca4822f37..7a347ff6a0 100644 --- a/patches/patch_list.py +++ b/patches/patch_list.py @@ -562,4 +562,8 @@ patch_list = [ 'patch_module': 'patches.december_2012', 'patch_file': 'delete_form16_print_format', }, + { + 'patch_module': 'patches.december_2012', + 'patch_file': 'remove_project_mapper', + }, ] \ No newline at end of file diff --git a/selling/DocType Mapper/Project-Sales Order/Project-Sales Order.txt b/selling/DocType Mapper/Project-Sales Order/Project-Sales Order.txt deleted file mode 100644 index 0d4a5a3e97..0000000000 --- a/selling/DocType Mapper/Project-Sales Order/Project-Sales Order.txt +++ /dev/null @@ -1,49 +0,0 @@ -[ - { - "owner": "ashwini@webnotestech.com", - "docstatus": 0, - "creation": "2010-09-01 15:47:59", - "modified_by": "Administrator", - "modified": "2011-09-15 15:04:43" - }, - { - "match_id": 0, - "parent": "Project-Sales Order", - "name": "__common__", - "doctype": "Table Mapper Detail", - "parenttype": "DocType Mapper", - "from_table": "Project", - "to_table": "Sales Order", - "validation_logic": "name is not null", - "parentfield": "table_mapper_details" - }, - { - "map": "Yes", - "match_id": 0, - "parent": "Project-Sales Order", - "name": "__common__", - "to_field": "customer", - "doctype": "Field Mapper Detail", - "parenttype": "DocType Mapper", - "checking_operator": "=", - "from_field": "customer", - "parentfield": "field_mapper_details" - }, - { - "name": "__common__", - "to_doctype": "Sales Order", - "module": "Selling", - "doctype": "DocType Mapper", - "from_doctype": "Project" - }, - { - "name": "Project-Sales Order", - "doctype": "DocType Mapper" - }, - { - "doctype": "Field Mapper Detail" - }, - { - "doctype": "Table Mapper Detail" - } -] \ No newline at end of file diff --git a/stock/DocType Mapper/Project-Delivery Note/Project-Delivery Note.txt b/stock/DocType Mapper/Project-Delivery Note/Project-Delivery Note.txt deleted file mode 100644 index 6bc90f42d5..0000000000 --- a/stock/DocType Mapper/Project-Delivery Note/Project-Delivery Note.txt +++ /dev/null @@ -1,49 +0,0 @@ -[ - { - "owner": "harshada@webnotestech.com", - "docstatus": 0, - "creation": "2010-09-01 15:47:59", - "modified_by": "Administrator", - "modified": "2011-09-15 15:04:43" - }, - { - "match_id": 0, - "parent": "Project-Delivery Note", - "name": "__common__", - "doctype": "Table Mapper Detail", - "parenttype": "DocType Mapper", - "from_table": "Project", - "to_table": "Delivery Note", - "validation_logic": "name is not null", - "parentfield": "table_mapper_details" - }, - { - "map": "Yes", - "match_id": 0, - "parent": "Project-Delivery Note", - "name": "__common__", - "to_field": "customer", - "doctype": "Field Mapper Detail", - "parenttype": "DocType Mapper", - "checking_operator": "=", - "from_field": "customer", - "parentfield": "field_mapper_details" - }, - { - "name": "__common__", - "to_doctype": "Delivery Note", - "module": "Stock", - "doctype": "DocType Mapper", - "from_doctype": "Project" - }, - { - "name": "Project-Delivery Note", - "doctype": "DocType Mapper" - }, - { - "doctype": "Field Mapper Detail" - }, - { - "doctype": "Table Mapper Detail" - } -] \ No newline at end of file diff --git a/stock/doctype/delivery_note/delivery_note.py b/stock/doctype/delivery_note/delivery_note.py index ef22437797..af4d91e9aa 100644 --- a/stock/doctype/delivery_note/delivery_note.py +++ b/stock/doctype/delivery_note/delivery_note.py @@ -78,13 +78,6 @@ class DocType(TransactionBase): def get_tc_details(self): return get_obj('Sales Common').get_tc_details(self) - - def pull_project_customer(self): - res = sql("select customer from `tabProject` where name = '%s'" % self.doc.project_name) - if res and res[0][0]: - get_obj('DocType Mapper', 'Project-Delivery Note').dt_map('Project', 'Delivery Note', self.doc.project_name, self.doc, self.doclist, "[['Project', 'Delivery Note']]") - - def get_item_details(self, args=None): import json args = args and json.loads(args) or {}