diff --git a/accounts/report/accounts_receivable/accounts_receivable.py b/accounts/report/accounts_receivable/accounts_receivable.py index ad0d92523b..945bae434a 100644 --- a/accounts/report/accounts_receivable/accounts_receivable.py +++ b/accounts/report/accounts_receivable/accounts_receivable.py @@ -85,7 +85,7 @@ class AccountsReceivableReport(object): def get_account_map(self): if not hasattr(self, "account_map"): self.account_map = dict(((r.name, r) for r in webnotes.conn.sql("""select - account.name, customer.customer_name, customer.territory + account.name, customer.name as customer_name, customer.territory from `tabAccount` account, `tabCustomer` customer where account.master_type="Customer" and customer.name=account.master_name""", as_dict=True))) diff --git a/buying/doctype/supplier/supplier.py b/buying/doctype/supplier/supplier.py index b2873c5661..2435d0cc31 100644 --- a/buying/doctype/supplier/supplier.py +++ b/buying/doctype/supplier/supplier.py @@ -27,6 +27,14 @@ class DocType(TransactionBase): else: self.doc.name = make_autoname(self.doc.naming_series + '.#####') + def update_address(self): + webnotes.conn.sql("""update `tabAddress` set supplier_name=%s, modified=NOW() + where supplier=%s""", (self.doc.supplier_name, self.doc.name)) + + def update_contact(self): + webnotes.conn.sql("""update `tabContact` set supplier_name=%s, modified=NOW() + where supplier=%s""", (self.doc.supplier_name, self.doc.name)) + def update_credit_days_limit(self): webnotes.conn.sql("""update tabAccount set credit_days = %s where name = %s""", (cint(self.doc.credit_days), self.doc.name + " - " + self.get_company_abbr())) @@ -35,6 +43,9 @@ class DocType(TransactionBase): if not self.doc.naming_series: self.doc.naming_series = '' + self.update_address() + self.update_contact() + # create account head self.create_account_head() @@ -151,10 +162,19 @@ class DocType(TransactionBase): def before_rename(self, olddn, newdn, merge=False): from accounts.utils import rename_account_for rename_account_for("Supplier", olddn, newdn, merge) - + def after_rename(self, olddn, newdn, merge=False): + set_field = '' if webnotes.defaults.get_global_default('supp_master_name') == 'Supplier Name': webnotes.conn.set(self.doc, "supplier_name", newdn) + self.update_contact() + set_field = ", supplier_name=%(newdn)s" + self.update_supplier_address(newdn, set_field) + + def update_supplier_address(self, newdn, set_field): + webnotes.conn.sql("""update `tabAddress` set address_title=%(newdn)s + {set_field} where supplier=%(newdn)s"""\ + .format(set_field=set_field), ({"newdn": newdn})) @webnotes.whitelist() def get_dashboard_info(supplier): diff --git a/manufacturing/doctype/production_planning_tool/production_planning_tool.py b/manufacturing/doctype/production_planning_tool/production_planning_tool.py index f3626a3da3..ce93d80c6b 100644 --- a/manufacturing/doctype/production_planning_tool/production_planning_tool.py +++ b/manufacturing/doctype/production_planning_tool/production_planning_tool.py @@ -72,9 +72,9 @@ class DocType: and (exists (select name from `tabItem` item where item.name=so_item.item_code and (ifnull(item.is_pro_applicable, 'No') = 'Yes' or ifnull(item.is_sub_contracted_item, 'No') = 'Yes') %s) - or exists (select name from `tabPacked Item` dnpi - where dnpi.parent = so.name and dnpi.parent_item = so_item.item_code - and exists (select name from `tabItem` item where item.name=dnpi.item_code + or exists (select name from `tabPacked Item` pi + where pi.parent = so.name and pi.parent_item = so_item.item_code + and exists (select name from `tabItem` item where item.name=pi.item_code and (ifnull(item.is_pro_applicable, 'No') = 'Yes' or ifnull(item.is_sub_contracted_item, 'No') = 'Yes') %s))) """ % ('%s', so_filter, item_filter, item_filter), self.doc.company, as_dict=1) @@ -83,6 +83,8 @@ class DocType: def add_so_in_table(self, open_so): """ Add sales orders in the table""" + self.clear_so_table() + so_list = [d.sales_order for d in getlist(self.doclist, 'pp_so_details')] for r in open_so: if cstr(r['name']) not in so_list: @@ -116,19 +118,19 @@ class DocType: or ifnull(item.is_sub_contracted_item, 'No') = 'Yes'))""" % \ (", ".join(["%s"] * len(so_list))), tuple(so_list), as_dict=1) - dnpi_items = webnotes.conn.sql("""select distinct dnpi.parent, dnpi.item_code, dnpi.warehouse as reserved_warhouse, - (((so_item.qty - ifnull(so_item.delivered_qty, 0)) * dnpi.qty) / so_item.qty) + packed_items = webnotes.conn.sql("""select distinct pi.parent, pi.item_code, pi.warehouse as reserved_warhouse, + (((so_item.qty - ifnull(so_item.delivered_qty, 0)) * pi.qty) / so_item.qty) as pending_qty - from `tabSales Order Item` so_item, `tabPacked Item` dnpi - where so_item.parent = dnpi.parent and so_item.docstatus = 1 - and dnpi.parent_item = so_item.item_code + from `tabSales Order Item` so_item, `tabPacked Item` pi + where so_item.parent = pi.parent and so_item.docstatus = 1 + and pi.parent_item = so_item.item_code and so_item.parent in (%s) and ifnull(so_item.qty, 0) > ifnull(so_item.delivered_qty, 0) - and exists (select * from `tabItem` item where item.name=dnpi.item_code + and exists (select * from `tabItem` item where item.name=pi.item_code and (ifnull(item.is_pro_applicable, 'No') = 'Yes' or ifnull(item.is_sub_contracted_item, 'No') = 'Yes'))""" % \ (", ".join(["%s"] * len(so_list))), tuple(so_list), as_dict=1) - return items + dnpi_items + return items + packed_items def add_items(self, items): diff --git a/selling/doctype/customer/customer.py b/selling/doctype/customer/customer.py index d00926f43c..49296b0b1c 100644 --- a/selling/doctype/customer/customer.py +++ b/selling/doctype/customer/customer.py @@ -47,6 +47,14 @@ class DocType(TransactionBase): if self.doc.lead_name: webnotes.conn.sql("update `tabLead` set status='Converted' where name = %s", self.doc.lead_name) + def update_address(self): + webnotes.conn.sql("""update `tabAddress` set customer_name=%s, modified=NOW() + where customer=%s""", (self.doc.customer_name, self.doc.name)) + + def update_contact(self): + webnotes.conn.sql("""update `tabContact` set customer_name=%s, modified=NOW() + where customer=%s""", (self.doc.customer_name, self.doc.name)) + def create_account_head(self): if self.doc.company : abbr = self.get_company_abbr() @@ -99,6 +107,9 @@ class DocType(TransactionBase): self.validate_name_with_customer_group() self.update_lead_status() + self.update_address() + self.update_contact() + # create account head self.create_account_head() # update credit days and limit in account @@ -146,10 +157,19 @@ class DocType(TransactionBase): def before_rename(self, olddn, newdn, merge=False): from accounts.utils import rename_account_for rename_account_for("Customer", olddn, newdn, merge) - + def after_rename(self, olddn, newdn, merge=False): + set_field = '' if webnotes.defaults.get_global_default('cust_master_name') == 'Customer Name': webnotes.conn.set(self.doc, "customer_name", newdn) + self.update_contact() + set_field = ", customer_name=%(newdn)s" + self.update_customer_address(newdn, set_field) + + def update_customer_address(self, newdn, set_field): + webnotes.conn.sql("""update `tabAddress` set address_title=%(newdn)s + {set_field} where customer=%(newdn)s"""\ + .format(set_field=set_field), ({"newdn": newdn})) @webnotes.whitelist() def get_dashboard_info(customer): diff --git a/setup/doctype/email_settings/email_settings.txt b/setup/doctype/email_settings/email_settings.txt index 3689718ff5..6b28f10f35 100644 --- a/setup/doctype/email_settings/email_settings.txt +++ b/setup/doctype/email_settings/email_settings.txt @@ -2,7 +2,7 @@ { "creation": "2013-03-25 17:53:21", "docstatus": 0, - "modified": "2013-11-28 11:54:42", + "modified": "2013-12-06 13:12:25", "modified_by": "Administrator", "owner": "Administrator" }, @@ -103,6 +103,7 @@ "label": "Auto Email Id" }, { + "default": "1", "description": "If checked, an email with an attached HTML format will be added to part of the EMail body as well as attachment. To only send as attachment, uncheck this.", "doctype": "DocField", "fieldname": "send_print_in_body_and_attachment", diff --git a/stock/doctype/stock_entry/stock_entry.js b/stock/doctype/stock_entry/stock_entry.js index 76284eabb7..73fd441f76 100644 --- a/stock/doctype/stock_entry/stock_entry.js +++ b/stock/doctype/stock_entry/stock_entry.js @@ -244,7 +244,7 @@ cur_frm.script_manager.make(erpnext.stock.StockEntry); cur_frm.cscript.toggle_related_fields = function(doc) { disable_from_warehouse = inList(["Material Receipt", "Sales Return"], doc.purpose); - disable_to_warehouse = inList(["Material Issue", "Purchase Return"], doc.purpose) + disable_to_warehouse = inList(["Material Issue", "Purchase Return"], doc.purpose); cur_frm.toggle_enable("from_warehouse", !disable_from_warehouse); cur_frm.toggle_enable("to_warehouse", !disable_to_warehouse); @@ -302,7 +302,7 @@ cur_frm.fields_dict['production_order'].get_query = function(doc) { } cur_frm.cscript.purpose = function(doc, cdt, cdn) { - cur_frm.cscript.toggle_related_fields(doc, cdt, cdn); + cur_frm.cscript.toggle_related_fields(doc); } // Overloaded query for link batch_no diff --git a/utilities/doctype/address/address.txt b/utilities/doctype/address/address.txt index 09be67eb10..5b4ada995e 100644 --- a/utilities/doctype/address/address.txt +++ b/utilities/doctype/address/address.txt @@ -2,11 +2,12 @@ { "creation": "2013-01-10 16:34:32", "docstatus": 0, - "modified": "2013-07-11 17:02:12", + "modified": "2013-12-12 12:17:46", "modified_by": "Administrator", "owner": "Administrator" }, { + "allow_rename": 1, "doctype": "DocType", "document_type": "Master", "icon": "icon-map-marker", diff --git a/utilities/doctype/contact/contact.txt b/utilities/doctype/contact/contact.txt index 199aaea82e..1c8a5cf94a 100644 --- a/utilities/doctype/contact/contact.txt +++ b/utilities/doctype/contact/contact.txt @@ -2,11 +2,12 @@ { "creation": "2013-01-10 16:34:32", "docstatus": 0, - "modified": "2013-10-08 16:48:50", + "modified": "2013-12-12 12:18:19", "modified_by": "Administrator", "owner": "Administrator" }, { + "allow_rename": 1, "doctype": "DocType", "document_type": "Master", "icon": "icon-user",