From e587c689a3399dc470fe4ec297b85ca48be275c6 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Thu, 5 Dec 2013 13:02:06 +0530 Subject: [PATCH 01/25] [minor] added simplified and traditional chinese in languages list --- translations/languages.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/translations/languages.json b/translations/languages.json index fe6bf2dfa9..9bffb5c9ff 100644 --- a/translations/languages.json +++ b/translations/languages.json @@ -1,4 +1,6 @@ { + "中国(简体)": "zh-cn", + "中國(繁體)": "zh-tw", "deutsch": "de", "ελληνικά": "el", "english": "en", From c8c13b90ce50fca537e79f4977cf7b5af9b24713 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Thu, 5 Dec 2013 16:08:30 +0530 Subject: [PATCH 02/25] [report] stock ledger loading time --- stock/report/stock_ledger/stock_ledger.js | 4 +- stock/report/stock_ledger/stock_ledger.py | 59 ++++++++++++++++------- 2 files changed, 44 insertions(+), 19 deletions(-) diff --git a/stock/report/stock_ledger/stock_ledger.js b/stock/report/stock_ledger/stock_ledger.js index 0e323ebb61..752d6d2813 100644 --- a/stock/report/stock_ledger/stock_ledger.js +++ b/stock/report/stock_ledger/stock_ledger.js @@ -15,14 +15,14 @@ wn.query_reports["Stock Ledger"] = { "fieldname":"from_date", "label": wn._("From Date"), "fieldtype": "Date", - "default": wn.defaults.get_user_default("year_start_date"), + "default": wn.datetime.add_months(wn.datetime.get_today(), -1), "reqd": 1 }, { "fieldname":"to_date", "label": wn._("To Date"), "fieldtype": "Date", - "default": wn.defaults.get_user_default("year_end_date"), + "default": wn.datetime.get_today(), "reqd": 1 }, { diff --git a/stock/report/stock_ledger/stock_ledger.py b/stock/report/stock_ledger/stock_ledger.py index 3ae9135dca..ea1a60fac2 100644 --- a/stock/report/stock_ledger/stock_ledger.py +++ b/stock/report/stock_ledger/stock_ledger.py @@ -3,37 +3,62 @@ from __future__ import unicode_literals import webnotes +from webnotes import _ def execute(filters=None): - columns = ["Date:Datetime:95", "Item:Link/Item:100", "Item Name::100", + columns = get_columns() + sl_entries = get_stock_ledger_entries(filters) + item_details = get_item_details(filters) + + data = [] + for sle in sl_entries: + item_detail = item_details[sle.item_code] + data.append([sle.date, sle.item_code, item_detail.item_name, item_detail.item_group, + item_detail.brand, item_detail.description, sle.warehouse, item_detail.stock_uom, + sle.actual_qty, sle.qty_after_transaction, sle.stock_value, sle.voucher_type, + sle.voucher_no, sle.batch_no, sle.serial_no, sle.company]) + + return columns, data + +def get_columns(): + return ["Date:Datetime:95", "Item:Link/Item:100", "Item Name::100", "Item Group:Link/Item Group:100", "Brand:Link/Brand:100", "Description::200", "Warehouse:Link/Warehouse:100", "Stock UOM:Link/UOM:100", "Qty:Float:50", "Balance Qty:Float:80", "Balance Value:Currency:100", "Voucher Type::100", "Voucher #::100", "Batch:Link/Batch:100", "Serial #:Link/Serial No:100", "Company:Link/Company:100"] - - data = webnotes.conn.sql("""select concat_ws(" ", posting_date, posting_time), - item.name, item.item_name, item.item_group, brand, description, warehouse, sle.stock_uom, - actual_qty, qty_after_transaction, stock_value, voucher_type, voucher_no, - batch_no, serial_no, company - from `tabStock Ledger Entry` sle, - (select name, item_name, description, stock_uom, brand, item_group - from `tabItem` {item_conditions}) item - where item_code = item.name and - company = %(company)s and + +def get_stock_ledger_entries(filters): + if not filters.get("company"): + webnotes.throw(_("Company is mandatory")) + if not filters.get("from_date"): + webnotes.throw(_("From Date is mandatory")) + if not filters.get("to_date"): + webnotes.throw(_("To Date is mandatory")) + + return webnotes.conn.sql("""select concat_ws(" ", posting_date, posting_time) as date, + item_code, warehouse, actual_qty, qty_after_transaction, + stock_value, voucher_type, voucher_no, batch_no, serial_no, company + from `tabStock Ledger Entry` + where company = %(company)s and posting_date between %(from_date)s and %(to_date)s {sle_conditions} - order by posting_date desc, posting_time desc, sle.name desc"""\ - .format(item_conditions=get_item_conditions(filters), - sle_conditions=get_sle_conditions(filters)), - filters) + order by posting_date desc, posting_time desc, name desc"""\ + .format(sle_conditions=get_sle_conditions(filters)), filters, as_dict=1) - return columns, data +def get_item_details(filters): + item_details = {} + for item in webnotes.conn.sql("""select name, item_name, description, item_group, + brand, stock_uom from `tabItem` {item_conditions}"""\ + .format(item_conditions=get_item_conditions(filters)), filters, as_dict=1): + item_details.setdefault(item.name, item) + + return item_details def get_item_conditions(filters): conditions = [] if filters.get("item_code"): - conditions.append("item_code=%(item_code)s") + conditions.append("name=%(item_code)s") if filters.get("brand"): conditions.append("brand=%(brand)s") From c3d8b0662356bdc5cd1a0229bc242d5f6b35caa2 Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Thu, 5 Dec 2013 16:56:37 +0600 Subject: [PATCH 03/25] bumped to version 3.1.0 --- config.json | 154 ++++++++++++++++++++++++++-------------------------- 1 file changed, 77 insertions(+), 77 deletions(-) diff --git a/config.json b/config.json index 05918ef7eb..7bdd1ad5ca 100644 --- a/config.json +++ b/config.json @@ -1,78 +1,78 @@ { - "app_name": "ERPNext", - "app_version": "3.0.0", - "requires_framework_version": "==3.0.0", - "base_template": "app/portal/templates/base.html", - "modules": { - "Selling": { - "link": "selling-home", - "color": "#1abc9c", - "icon": "icon-tag", - "type": "module" - }, - "Accounts": { - "link": "accounts-home", - "color": "#3498db", - "icon": "icon-money", - "type": "module" - }, - "Stock": { - "type": "module", - "link": "stock-home", - "color": "#f39c12", - "icon": "icon-truck" - }, - "Buying": { - "type": "module", - "link": "buying-home", - "color": "#c0392b", - "icon": "icon-shopping-cart" - }, - "Support": { - "type": "module", - "link": "support-home", - "color": "#2c3e50", - "icon": "icon-phone" - }, - "Projects": { - "type": "module", - "link": "projects-home", - "color": "#8e44ad", - "icon": "icon-puzzle-piece" - }, - "Manufacturing": { - "type": "module", - "link": "manufacturing-home", - "color": "#7f8c8d", - "icon": "icon-cogs" - }, - "HR": { - "type": "module", - "link": "hr-home", - "color": "#2ecc71", - "label": "Human Resources", - "icon": "icon-group" - }, - "Setup": { - "type": "setup", - "link": "Setup", - "color": "#bdc3c7", - "icon": "icon-wrench" - }, - "Activity": { - "type": "page", - "link": "activity", - "color": "#e67e22", - "icon": "icon-play", - "label": "Activity" - }, - "Notes": { - "type": "list", - "doctype": "Note", - "link": "List/Note", - "color": "#95a5a6", - "label": "Notes", - "icon": "icon-file-alt" - } - } -} + "app_name": "ERPNext", + "app_version": "3.1.0", + "base_template": "app/portal/templates/base.html", + "modules": { + "Accounts": { + "color": "#3498db", + "icon": "icon-money", + "link": "accounts-home", + "type": "module" + }, + "Activity": { + "color": "#e67e22", + "icon": "icon-play", + "label": "Activity", + "link": "activity", + "type": "page" + }, + "Buying": { + "color": "#c0392b", + "icon": "icon-shopping-cart", + "link": "buying-home", + "type": "module" + }, + "HR": { + "color": "#2ecc71", + "icon": "icon-group", + "label": "Human Resources", + "link": "hr-home", + "type": "module" + }, + "Manufacturing": { + "color": "#7f8c8d", + "icon": "icon-cogs", + "link": "manufacturing-home", + "type": "module" + }, + "Notes": { + "color": "#95a5a6", + "doctype": "Note", + "icon": "icon-file-alt", + "label": "Notes", + "link": "List/Note", + "type": "list" + }, + "Projects": { + "color": "#8e44ad", + "icon": "icon-puzzle-piece", + "link": "projects-home", + "type": "module" + }, + "Selling": { + "color": "#1abc9c", + "icon": "icon-tag", + "link": "selling-home", + "type": "module" + }, + "Setup": { + "color": "#bdc3c7", + "icon": "icon-wrench", + "link": "Setup", + "type": "setup" + }, + "Stock": { + "color": "#f39c12", + "icon": "icon-truck", + "link": "stock-home", + "type": "module" + }, + "Support": { + "color": "#2c3e50", + "icon": "icon-phone", + "link": "support-home", + "type": "module" + } + }, + "requires_framework_version": "==3.1.0" +} \ No newline at end of file From afc44cf54ed48518575bc948b4c89ae33cf396ee Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Thu, 5 Dec 2013 17:42:53 +0530 Subject: [PATCH 04/25] [fix] [minor] email settings - set send print in body and attachment --- patches/december_2013/__init__.py | 0 ...l_settings_set_send_print_in_body_and_attachment.py | 10 ++++++++++ patches/patch_list.py | 1 + 3 files changed, 11 insertions(+) create mode 100644 patches/december_2013/__init__.py create mode 100644 patches/december_2013/p01_email_settings_set_send_print_in_body_and_attachment.py diff --git a/patches/december_2013/__init__.py b/patches/december_2013/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/patches/december_2013/p01_email_settings_set_send_print_in_body_and_attachment.py b/patches/december_2013/p01_email_settings_set_send_print_in_body_and_attachment.py new file mode 100644 index 0000000000..7b7e7fb4f1 --- /dev/null +++ b/patches/december_2013/p01_email_settings_set_send_print_in_body_and_attachment.py @@ -0,0 +1,10 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import webnotes + +def execute(): + webnotes.conn.sql("""update `tabSingles` set value = 1 + where doctype = 'Email Settings' and field = 'send_print_in_body_and_attachment' and + ifnull(value,'')=''""") \ No newline at end of file diff --git a/patches/patch_list.py b/patches/patch_list.py index 9400e08872..8a7d10e450 100644 --- a/patches/patch_list.py +++ b/patches/patch_list.py @@ -258,4 +258,5 @@ patch_list = [ "execute:webnotes.delete_doc('Report', 'Stock Ledger') #2013-11-29", "execute:webnotes.delete_doc('Report', 'Payment Collection With Ageing')", "execute:webnotes.delete_doc('Report', 'Payment Made With Ageing')", + "patches.december_2013.p01_email_settings_set_send_print_in_body_and_attachment", ] \ No newline at end of file From d701e839610c53018d75c1dd3ae583b9b585963c Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Thu, 5 Dec 2013 18:05:07 +0530 Subject: [PATCH 05/25] [minor] make slow branch migratable to master --- patches/may_2013/p06_make_notes.py | 1 - patches/october_2013/p09_update_naming_series_settings.py | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/may_2013/p06_make_notes.py b/patches/may_2013/p06_make_notes.py index adb3dfdf72..149547fb9f 100644 --- a/patches/may_2013/p06_make_notes.py +++ b/patches/may_2013/p06_make_notes.py @@ -37,7 +37,6 @@ def execute(): webnotes.delete_doc("DocType", "Question") webnotes.delete_doc("DocType", "Answer") - webnotes.bean("Style Settings").save() # update comment delete webnotes.conn.sql("""update tabDocPerm \ diff --git a/patches/october_2013/p09_update_naming_series_settings.py b/patches/october_2013/p09_update_naming_series_settings.py index 36632b44c0..7771b7333f 100644 --- a/patches/october_2013/p09_update_naming_series_settings.py +++ b/patches/october_2013/p09_update_naming_series_settings.py @@ -15,4 +15,5 @@ def execute(): # reset property setters for series for name in ("Stock Settings", "Selling Settings", "Buying Settings", "HR Settings"): - webnotes.bean(name, name).save() \ No newline at end of file + webnotes.reload_doc(name.split()[0], 'DocType', name) + webnotes.bean(name, name).save() From 1417c6d58fe92974853c772e40858458d312fab7 Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Fri, 6 Dec 2013 14:50:06 +0530 Subject: [PATCH 06/25] [hotfix] fix null issue in budget variance --- .../report/budget_variance_report/budget_variance_report.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/accounts/report/budget_variance_report/budget_variance_report.py b/accounts/report/budget_variance_report/budget_variance_report.py index 2cbbd622e6..a5860c83bd 100644 --- a/accounts/report/budget_variance_report/budget_variance_report.py +++ b/accounts/report/budget_variance_report/budget_variance_report.py @@ -121,6 +121,6 @@ def get_costcenter_account_month_map(filters): for ad in actual_details.get(ccd.name, {}).get(ccd.account, []): if ad.month_name == month: - tav_dict.actual += ad.debit - ad.credit + tav_dict.actual += flt(ad.debit) - flt(ad.credit) - return cam_map \ No newline at end of file + return cam_map From d9255abd46f167e6fe34b105ee3a5d786def0265 Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Fri, 6 Dec 2013 18:49:48 +0530 Subject: [PATCH 07/25] [fix] [minor] set send_print_in_body_and_attachment in email settings --- hr/doctype/earning_type/earning_type.txt | 4 ++-- manufacturing/doctype/bom/bom.txt | 10 ++++++---- ...l_settings_set_send_print_in_body_and_attachment.py | 7 +++++++ setup/doctype/email_settings/email_settings.txt | 3 ++- stock/doctype/delivery_note/delivery_note.txt | 4 ++-- stock/doctype/stock_entry/stock_entry.js | 4 ++-- stock/doctype/stock_entry/stock_entry.txt | 10 +++++----- 7 files changed, 26 insertions(+), 16 deletions(-) diff --git a/hr/doctype/earning_type/earning_type.txt b/hr/doctype/earning_type/earning_type.txt index 0c84cf1d4e..905bbd89b9 100644 --- a/hr/doctype/earning_type/earning_type.txt +++ b/hr/doctype/earning_type/earning_type.txt @@ -2,7 +2,7 @@ { "creation": "2013-01-24 11:03:32", "docstatus": 0, - "modified": "2013-07-22 15:25:26", + "modified": "2013-12-06 15:16:11", "modified_by": "Administrator", "owner": "Administrator" }, @@ -85,7 +85,7 @@ "doctype": "DocField", "fieldname": "exemption_limit", "fieldtype": "Float", - "hidden": 1, + "hidden": 0, "label": "Exemption Limit", "oldfieldname": "exemption_limit", "oldfieldtype": "Currency" diff --git a/manufacturing/doctype/bom/bom.txt b/manufacturing/doctype/bom/bom.txt index 68553fb9e3..1878f25e1f 100644 --- a/manufacturing/doctype/bom/bom.txt +++ b/manufacturing/doctype/bom/bom.txt @@ -2,7 +2,7 @@ { "creation": "2013-01-22 15:11:38", "docstatus": 0, - "modified": "2013-12-04 11:51:36", + "modified": "2013-12-06 18:48:23", "modified_by": "Administrator", "owner": "Administrator" }, @@ -120,18 +120,20 @@ "options": "Price List" }, { - "depends_on": "with_operations", + "description": "Specify the operations, operating cost and give a unique Operation no to your operations.", "doctype": "DocField", "fieldname": "operations", "fieldtype": "Section Break", + "hidden": 0, "label": "Operations", - "oldfieldtype": "Section Break", - "options": "Specify the operations, operating cost and give a unique Operation no to your operations." + "oldfieldtype": "Section Break" }, { + "depends_on": "with_operations", "doctype": "DocField", "fieldname": "bom_operations", "fieldtype": "Table", + "hidden": 0, "label": "BOM Operations", "oldfieldname": "bom_operations", "oldfieldtype": "Table", diff --git a/patches/december_2013/p01_email_settings_set_send_print_in_body_and_attachment.py b/patches/december_2013/p01_email_settings_set_send_print_in_body_and_attachment.py index 7b7e7fb4f1..1a11f57871 100644 --- a/patches/december_2013/p01_email_settings_set_send_print_in_body_and_attachment.py +++ b/patches/december_2013/p01_email_settings_set_send_print_in_body_and_attachment.py @@ -5,6 +5,13 @@ from __future__ import unicode_literals import webnotes def execute(): + doctype = webnotes.conn.sql("""select doctype from `tabSingles` + where doctype = 'Email Settings'""") + if not doctype: + email_settings = webnotes.bean("Email Settings", "Email Settings") + email_settings.doc.send_print_in_body_and_attachment = 1 + email_settings.save() + webnotes.conn.sql("""update `tabSingles` set value = 1 where doctype = 'Email Settings' and field = 'send_print_in_body_and_attachment' and ifnull(value,'')=''""") \ No newline at end of file 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/delivery_note/delivery_note.txt b/stock/doctype/delivery_note/delivery_note.txt index 7fb166e686..b94310e8ac 100644 --- a/stock/doctype/delivery_note/delivery_note.txt +++ b/stock/doctype/delivery_note/delivery_note.txt @@ -2,7 +2,7 @@ { "creation": "2013-05-24 19:29:09", "docstatus": 0, - "modified": "2013-11-03 14:20:19", + "modified": "2013-12-06 15:15:49", "modified_by": "Administrator", "owner": "Administrator" }, @@ -229,7 +229,7 @@ "doctype": "DocField", "fieldname": "po_date", "fieldtype": "Date", - "hidden": 1, + "hidden": 0, "label": "Customer's Purchase Order Date", "no_copy": 0, "oldfieldname": "po_date", diff --git a/stock/doctype/stock_entry/stock_entry.js b/stock/doctype/stock_entry/stock_entry.js index ed41d7d879..440a9a3a1e 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/stock/doctype/stock_entry/stock_entry.txt b/stock/doctype/stock_entry/stock_entry.txt index ca9b5f29a2..a63f8a4492 100644 --- a/stock/doctype/stock_entry/stock_entry.txt +++ b/stock/doctype/stock_entry/stock_entry.txt @@ -2,7 +2,7 @@ { "creation": "2013-04-09 11:43:55", "docstatus": 0, - "modified": "2013-11-03 14:11:42", + "modified": "2013-12-06 15:15:25", "modified_by": "Administrator", "owner": "Administrator" }, @@ -108,7 +108,7 @@ "doctype": "DocField", "fieldname": "delivery_note_no", "fieldtype": "Link", - "hidden": 1, + "hidden": 0, "in_filter": 0, "label": "Delivery Note No", "no_copy": 1, @@ -126,7 +126,7 @@ "doctype": "DocField", "fieldname": "sales_invoice_no", "fieldtype": "Link", - "hidden": 1, + "hidden": 0, "label": "Sales Invoice No", "no_copy": 1, "options": "Sales Invoice", @@ -139,7 +139,7 @@ "doctype": "DocField", "fieldname": "purchase_receipt_no", "fieldtype": "Link", - "hidden": 1, + "hidden": 0, "in_filter": 0, "label": "Purchase Receipt No", "no_copy": 1, @@ -299,7 +299,7 @@ "doctype": "DocField", "fieldname": "production_order", "fieldtype": "Link", - "hidden": 1, + "hidden": 0, "in_filter": 1, "label": "Production Order", "no_copy": 0, From 32e7b3074484eebf12bb06a214cdb2951024615f Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Sun, 8 Dec 2013 17:17:05 +0600 Subject: [PATCH 08/25] bumped to version 3.1.1 --- config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.json b/config.json index 7bdd1ad5ca..497268e336 100644 --- a/config.json +++ b/config.json @@ -1,6 +1,6 @@ { "app_name": "ERPNext", - "app_version": "3.1.0", + "app_version": "3.1.1", "base_template": "app/portal/templates/base.html", "modules": { "Accounts": { From a652347bd12923839cba570ab27ee2a035801920 Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Mon, 9 Dec 2013 15:52:47 +0530 Subject: [PATCH 09/25] [fix] [minor] customer_name not visible in sales invoice --- accounts/doctype/sales_invoice/sales_invoice.txt | 2 +- selling/sales_common.js | 2 +- stock/doctype/stock_entry/stock_entry.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/accounts/doctype/sales_invoice/sales_invoice.txt b/accounts/doctype/sales_invoice/sales_invoice.txt index 99bfe5cdf0..ece17a4ef7 100644 --- a/accounts/doctype/sales_invoice/sales_invoice.txt +++ b/accounts/doctype/sales_invoice/sales_invoice.txt @@ -2,7 +2,7 @@ { "creation": "2013-05-24 19:29:05", "docstatus": 0, - "modified": "2013-11-18 15:16:50", + "modified": "2013-12-09 14:05:34", "modified_by": "Administrator", "owner": "Administrator" }, diff --git a/selling/sales_common.js b/selling/sales_common.js index ee55dfab7a..d6c8fdd0e4 100644 --- a/selling/sales_common.js +++ b/selling/sales_common.js @@ -95,7 +95,7 @@ erpnext.selling.SellingController = erpnext.TransactionController.extend({ refresh: function() { this._super(); this.frm.toggle_display("customer_name", - (this.customer_name && this.frm.doc.customer_name!==this.frm.doc.customer)); + (this.frm.doc.customer_name && this.frm.doc.customer_name!==this.frm.doc.customer)); if(this.frm.fields_dict.packing_details) { var packing_list_exists = this.frm.get_doclist({parentfield: "packing_details"}).length; this.frm.toggle_display("packing_list", packing_list_exists ? true : false); diff --git a/stock/doctype/stock_entry/stock_entry.js b/stock/doctype/stock_entry/stock_entry.js index 440a9a3a1e..73fd441f76 100644 --- a/stock/doctype/stock_entry/stock_entry.js +++ b/stock/doctype/stock_entry/stock_entry.js @@ -106,7 +106,7 @@ erpnext.stock.StockEntry = erpnext.stock.StockController.extend({ }, callback: function(r) { if (!r.exc) { - for(d in getchildren('Stock Entry Detail',doc.name,'mtn_details')) { + for(d in getchildren('Stock Entry Detail', me.frm.doc.name, 'mtn_details')) { if(!d.expense_account) d.expense_account = r.message; } } From 7b1d9409f16312566ef1089aa4af54aba29a4e01 Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Mon, 9 Dec 2013 15:57:26 +0530 Subject: [PATCH 10/25] [fix] [minor] remove email patch --- patches/december_2013/__init__.py | 0 ...ngs_set_send_print_in_body_and_attachment.py | 17 ----------------- patches/patch_list.py | 1 - 3 files changed, 18 deletions(-) delete mode 100644 patches/december_2013/__init__.py delete mode 100644 patches/december_2013/p01_email_settings_set_send_print_in_body_and_attachment.py diff --git a/patches/december_2013/__init__.py b/patches/december_2013/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/patches/december_2013/p01_email_settings_set_send_print_in_body_and_attachment.py b/patches/december_2013/p01_email_settings_set_send_print_in_body_and_attachment.py deleted file mode 100644 index 1a11f57871..0000000000 --- a/patches/december_2013/p01_email_settings_set_send_print_in_body_and_attachment.py +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -import webnotes - -def execute(): - doctype = webnotes.conn.sql("""select doctype from `tabSingles` - where doctype = 'Email Settings'""") - if not doctype: - email_settings = webnotes.bean("Email Settings", "Email Settings") - email_settings.doc.send_print_in_body_and_attachment = 1 - email_settings.save() - - webnotes.conn.sql("""update `tabSingles` set value = 1 - where doctype = 'Email Settings' and field = 'send_print_in_body_and_attachment' and - ifnull(value,'')=''""") \ No newline at end of file diff --git a/patches/patch_list.py b/patches/patch_list.py index 8a7d10e450..9400e08872 100644 --- a/patches/patch_list.py +++ b/patches/patch_list.py @@ -258,5 +258,4 @@ patch_list = [ "execute:webnotes.delete_doc('Report', 'Stock Ledger') #2013-11-29", "execute:webnotes.delete_doc('Report', 'Payment Collection With Ageing')", "execute:webnotes.delete_doc('Report', 'Payment Made With Ageing')", - "patches.december_2013.p01_email_settings_set_send_print_in_body_and_attachment", ] \ No newline at end of file From 5ce1b8b8f9f6a0cb10441ed81a567eff83a93063 Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Mon, 9 Dec 2013 16:29:04 +0530 Subject: [PATCH 11/25] [fix] [minor] customer name visibility fixed in sales invoice --- hr/doctype/earning_type/earning_type.txt | 4 ++-- manufacturing/doctype/bom/bom.txt | 6 +++--- selling/sales_common.js | 2 +- stock/doctype/delivery_note/delivery_note.txt | 4 ++-- stock/doctype/stock_entry/stock_entry.js | 2 +- stock/doctype/stock_entry/stock_entry.txt | 10 +++++----- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/hr/doctype/earning_type/earning_type.txt b/hr/doctype/earning_type/earning_type.txt index 0c84cf1d4e..902a4ed85b 100644 --- a/hr/doctype/earning_type/earning_type.txt +++ b/hr/doctype/earning_type/earning_type.txt @@ -2,7 +2,7 @@ { "creation": "2013-01-24 11:03:32", "docstatus": 0, - "modified": "2013-07-22 15:25:26", + "modified": "2013-12-09 16:24:07", "modified_by": "Administrator", "owner": "Administrator" }, @@ -85,7 +85,7 @@ "doctype": "DocField", "fieldname": "exemption_limit", "fieldtype": "Float", - "hidden": 1, + "hidden": 0, "label": "Exemption Limit", "oldfieldname": "exemption_limit", "oldfieldtype": "Currency" diff --git a/manufacturing/doctype/bom/bom.txt b/manufacturing/doctype/bom/bom.txt index 68553fb9e3..a5ff125293 100644 --- a/manufacturing/doctype/bom/bom.txt +++ b/manufacturing/doctype/bom/bom.txt @@ -2,7 +2,7 @@ { "creation": "2013-01-22 15:11:38", "docstatus": 0, - "modified": "2013-12-04 11:51:36", + "modified": "2013-12-09 16:25:50", "modified_by": "Administrator", "owner": "Administrator" }, @@ -121,12 +121,12 @@ }, { "depends_on": "with_operations", + "description": "Specify the operations, operating cost and give a unique Operation no to your operations.", "doctype": "DocField", "fieldname": "operations", "fieldtype": "Section Break", "label": "Operations", - "oldfieldtype": "Section Break", - "options": "Specify the operations, operating cost and give a unique Operation no to your operations." + "oldfieldtype": "Section Break" }, { "doctype": "DocField", diff --git a/selling/sales_common.js b/selling/sales_common.js index ee55dfab7a..d6c8fdd0e4 100644 --- a/selling/sales_common.js +++ b/selling/sales_common.js @@ -95,7 +95,7 @@ erpnext.selling.SellingController = erpnext.TransactionController.extend({ refresh: function() { this._super(); this.frm.toggle_display("customer_name", - (this.customer_name && this.frm.doc.customer_name!==this.frm.doc.customer)); + (this.frm.doc.customer_name && this.frm.doc.customer_name!==this.frm.doc.customer)); if(this.frm.fields_dict.packing_details) { var packing_list_exists = this.frm.get_doclist({parentfield: "packing_details"}).length; this.frm.toggle_display("packing_list", packing_list_exists ? true : false); diff --git a/stock/doctype/delivery_note/delivery_note.txt b/stock/doctype/delivery_note/delivery_note.txt index 7fb166e686..1dc3cd3011 100644 --- a/stock/doctype/delivery_note/delivery_note.txt +++ b/stock/doctype/delivery_note/delivery_note.txt @@ -2,7 +2,7 @@ { "creation": "2013-05-24 19:29:09", "docstatus": 0, - "modified": "2013-11-03 14:20:19", + "modified": "2013-12-09 16:24:08", "modified_by": "Administrator", "owner": "Administrator" }, @@ -229,7 +229,7 @@ "doctype": "DocField", "fieldname": "po_date", "fieldtype": "Date", - "hidden": 1, + "hidden": 0, "label": "Customer's Purchase Order Date", "no_copy": 0, "oldfieldname": "po_date", diff --git a/stock/doctype/stock_entry/stock_entry.js b/stock/doctype/stock_entry/stock_entry.js index ed41d7d879..76284eabb7 100644 --- a/stock/doctype/stock_entry/stock_entry.js +++ b/stock/doctype/stock_entry/stock_entry.js @@ -106,7 +106,7 @@ erpnext.stock.StockEntry = erpnext.stock.StockController.extend({ }, callback: function(r) { if (!r.exc) { - for(d in getchildren('Stock Entry Detail',doc.name,'mtn_details')) { + for(d in getchildren('Stock Entry Detail', me.frm.doc.name, 'mtn_details')) { if(!d.expense_account) d.expense_account = r.message; } } diff --git a/stock/doctype/stock_entry/stock_entry.txt b/stock/doctype/stock_entry/stock_entry.txt index ca9b5f29a2..18a07a3550 100644 --- a/stock/doctype/stock_entry/stock_entry.txt +++ b/stock/doctype/stock_entry/stock_entry.txt @@ -2,7 +2,7 @@ { "creation": "2013-04-09 11:43:55", "docstatus": 0, - "modified": "2013-11-03 14:11:42", + "modified": "2013-12-09 16:24:10", "modified_by": "Administrator", "owner": "Administrator" }, @@ -108,7 +108,7 @@ "doctype": "DocField", "fieldname": "delivery_note_no", "fieldtype": "Link", - "hidden": 1, + "hidden": 0, "in_filter": 0, "label": "Delivery Note No", "no_copy": 1, @@ -126,7 +126,7 @@ "doctype": "DocField", "fieldname": "sales_invoice_no", "fieldtype": "Link", - "hidden": 1, + "hidden": 0, "label": "Sales Invoice No", "no_copy": 1, "options": "Sales Invoice", @@ -139,7 +139,7 @@ "doctype": "DocField", "fieldname": "purchase_receipt_no", "fieldtype": "Link", - "hidden": 1, + "hidden": 0, "in_filter": 0, "label": "Purchase Receipt No", "no_copy": 1, @@ -299,7 +299,7 @@ "doctype": "DocField", "fieldname": "production_order", "fieldtype": "Link", - "hidden": 1, + "hidden": 0, "in_filter": 1, "label": "Production Order", "no_copy": 0, From e4bb2ba158e9dd1df48ab74909c84ff9916b270d Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Mon, 9 Dec 2013 17:41:11 +0600 Subject: [PATCH 12/25] bumped to version 3.1.2 --- config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config.json b/config.json index 497268e336..bc72fa9bc9 100644 --- a/config.json +++ b/config.json @@ -1,6 +1,6 @@ { "app_name": "ERPNext", - "app_version": "3.1.1", + "app_version": "3.1.2", "base_template": "app/portal/templates/base.html", "modules": { "Accounts": { @@ -74,5 +74,5 @@ "type": "module" } }, - "requires_framework_version": "==3.1.0" + "requires_framework_version": "==3.1.1" } \ No newline at end of file From 5d3da6c095daf4094fe92eddcc450f10f3a8a0d0 Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Tue, 10 Dec 2013 11:18:08 +0530 Subject: [PATCH 13/25] [fix] [minor] rename fix for customer and supplier --- buying/doctype/supplier/supplier.py | 10 ++++++++++ manufacturing/doctype/bom/bom.txt | 4 +++- selling/doctype/customer/customer.py | 12 +++++++++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/buying/doctype/supplier/supplier.py b/buying/doctype/supplier/supplier.py index b2873c5661..48bb9c276c 100644 --- a/buying/doctype/supplier/supplier.py +++ b/buying/doctype/supplier/supplier.py @@ -151,6 +151,16 @@ 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) + self.rename_address(olddn, newdn) + self.rename_contact(olddn, newdn) + + def rename_address(self, olddn, newdn): + webnotes.conn.sql("""update `tabAddress` set supplier_name=%s, + address_title=%s where supplier=%s""", (newdn, newdn, olddn)) + + def rename_contact(self,olddn, newdn): + webnotes.conn.sql("""update `tabContact` set supplier_name=%s + where supplier=%s""", (newdn, olddn)) def after_rename(self, olddn, newdn, merge=False): if webnotes.defaults.get_global_default('supp_master_name') == 'Supplier Name': diff --git a/manufacturing/doctype/bom/bom.txt b/manufacturing/doctype/bom/bom.txt index a5ff125293..023473a620 100644 --- a/manufacturing/doctype/bom/bom.txt +++ b/manufacturing/doctype/bom/bom.txt @@ -2,7 +2,7 @@ { "creation": "2013-01-22 15:11:38", "docstatus": 0, - "modified": "2013-12-09 16:25:50", + "modified": "2013-12-09 16:56:41", "modified_by": "Administrator", "owner": "Administrator" }, @@ -102,6 +102,7 @@ "doctype": "DocField", "fieldname": "with_operations", "fieldtype": "Check", + "hidden": 0, "label": "With Operations" }, { @@ -125,6 +126,7 @@ "doctype": "DocField", "fieldname": "operations", "fieldtype": "Section Break", + "hidden": 0, "label": "Operations", "oldfieldtype": "Section Break" }, diff --git a/selling/doctype/customer/customer.py b/selling/doctype/customer/customer.py index d00926f43c..356628a6b9 100644 --- a/selling/doctype/customer/customer.py +++ b/selling/doctype/customer/customer.py @@ -146,7 +146,17 @@ 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) - + self.rename_address(olddn, newdn) + self.rename_contact(olddn, newdn) + + def rename_address(self, olddn, newdn): + webnotes.conn.sql("""update `tabAddress` set customer_name=%s, + address_title=%s where customer=%s""", (newdn, newdn, olddn)) + + def rename_contact(self,olddn, newdn): + webnotes.conn.sql("""update `tabContact` set customer_name=%s + where customer=%s""", (newdn, olddn)) + def after_rename(self, olddn, newdn, merge=False): if webnotes.defaults.get_global_default('cust_master_name') == 'Customer Name': webnotes.conn.set(self.doc, "customer_name", newdn) From abefa3fd40440a92a65ca4cf0cc99f0dc5792849 Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Tue, 10 Dec 2013 14:22:52 +0530 Subject: [PATCH 14/25] [fix] [minor] supplier & customer rename fix --- buying/doctype/supplier/supplier.py | 30 ++++++++++++++++++---------- selling/doctype/customer/customer.py | 30 ++++++++++++++++++---------- 2 files changed, 40 insertions(+), 20 deletions(-) diff --git a/buying/doctype/supplier/supplier.py b/buying/doctype/supplier/supplier.py index 48bb9c276c..503ec8a1dd 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 + where supplier=%s""", (self.doc.supplier_name, self.doc.name)) + + def update_contact(self): + webnotes.conn.sql("""update `tabContact` set supplier_name=%s + 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,20 +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) - self.rename_address(olddn, newdn) - self.rename_contact(olddn, newdn) - def rename_address(self, olddn, newdn): - webnotes.conn.sql("""update `tabAddress` set supplier_name=%s, - address_title=%s where supplier=%s""", (newdn, newdn, olddn)) - - def rename_contact(self,olddn, newdn): - webnotes.conn.sql("""update `tabContact` set supplier_name=%s - where supplier=%s""", (newdn, olddn)) - def after_rename(self, olddn, newdn, merge=False): + condition = value = '' if webnotes.defaults.get_global_default('supp_master_name') == 'Supplier Name': webnotes.conn.set(self.doc, "supplier_name", newdn) + self.update_contact() + condition = ", supplier_name=%s" + value = newdn + self.update_supplier_address(newdn, condition, value) + + def update_supplier_address(self, newdn, condition, value): + webnotes.conn.sql("""update `tabAddress` set address_title=%s %s + where supplier=%s""" % ('%s', condition, '%s'), (newdn, value, newdn)) @webnotes.whitelist() def get_dashboard_info(supplier): diff --git a/selling/doctype/customer/customer.py b/selling/doctype/customer/customer.py index 356628a6b9..71116b33b1 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 where customer=%s""", + (self.doc.customer_name, self.doc.name)) + + def update_contact(self): + webnotes.conn.sql("""update `tabContact` set customer_name=%s 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,20 +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) - self.rename_address(olddn, newdn) - self.rename_contact(olddn, newdn) - - def rename_address(self, olddn, newdn): - webnotes.conn.sql("""update `tabAddress` set customer_name=%s, - address_title=%s where customer=%s""", (newdn, newdn, olddn)) - - def rename_contact(self,olddn, newdn): - webnotes.conn.sql("""update `tabContact` set customer_name=%s - where customer=%s""", (newdn, olddn)) def after_rename(self, olddn, newdn, merge=False): + condition = value = '' if webnotes.defaults.get_global_default('cust_master_name') == 'Customer Name': webnotes.conn.set(self.doc, "customer_name", newdn) + self.update_contact() + condition = ", customer_name=%s" + value = newdn + self.update_customer_address(newdn, condition, value) + + def update_customer_address(self, newdn, condition, value): + webnotes.conn.sql("""update `tabAddress` set address_title=%s %s + where customer=%s""" % ('%s', condition, '%s'), (newdn, value, newdn)) @webnotes.whitelist() def get_dashboard_info(customer): From 4e677a3f5235c96e86c5fe5acd8d2f59dff895dc Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Tue, 10 Dec 2013 15:23:07 +0530 Subject: [PATCH 15/25] [fix] [minor] stashed bom.txt --- manufacturing/doctype/bom/bom.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/manufacturing/doctype/bom/bom.txt b/manufacturing/doctype/bom/bom.txt index 023473a620..a5ff125293 100644 --- a/manufacturing/doctype/bom/bom.txt +++ b/manufacturing/doctype/bom/bom.txt @@ -2,7 +2,7 @@ { "creation": "2013-01-22 15:11:38", "docstatus": 0, - "modified": "2013-12-09 16:56:41", + "modified": "2013-12-09 16:25:50", "modified_by": "Administrator", "owner": "Administrator" }, @@ -102,7 +102,6 @@ "doctype": "DocField", "fieldname": "with_operations", "fieldtype": "Check", - "hidden": 0, "label": "With Operations" }, { @@ -126,7 +125,6 @@ "doctype": "DocField", "fieldname": "operations", "fieldtype": "Section Break", - "hidden": 0, "label": "Operations", "oldfieldtype": "Section Break" }, From f0dad52aaa51f495812ed341881da905fdad0df9 Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Tue, 10 Dec 2013 18:11:31 +0530 Subject: [PATCH 16/25] [fix] [minor] merge conflict fix --- manufacturing/doctype/bom/bom.txt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/manufacturing/doctype/bom/bom.txt b/manufacturing/doctype/bom/bom.txt index 57076654df..a5ff125293 100644 --- a/manufacturing/doctype/bom/bom.txt +++ b/manufacturing/doctype/bom/bom.txt @@ -120,24 +120,18 @@ "options": "Price List" }, { -<<<<<<< HEAD -======= "depends_on": "with_operations", ->>>>>>> 4e677a3f5235c96e86c5fe5acd8d2f59dff895dc "description": "Specify the operations, operating cost and give a unique Operation no to your operations.", "doctype": "DocField", "fieldname": "operations", "fieldtype": "Section Break", - "hidden": 0, "label": "Operations", "oldfieldtype": "Section Break" }, { - "depends_on": "with_operations", "doctype": "DocField", "fieldname": "bom_operations", "fieldtype": "Table", - "hidden": 0, "label": "BOM Operations", "oldfieldname": "bom_operations", "oldfieldtype": "Table", From 42a8fc2ee31229e6b77e04dda3ae8806e669c2fe Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Wed, 11 Dec 2013 11:15:03 +0530 Subject: [PATCH 17/25] [fix] [minor] stashed sales_invoice.txt --- accounts/doctype/sales_invoice/sales_invoice.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/accounts/doctype/sales_invoice/sales_invoice.txt b/accounts/doctype/sales_invoice/sales_invoice.txt index ece17a4ef7..99bfe5cdf0 100644 --- a/accounts/doctype/sales_invoice/sales_invoice.txt +++ b/accounts/doctype/sales_invoice/sales_invoice.txt @@ -2,7 +2,7 @@ { "creation": "2013-05-24 19:29:05", "docstatus": 0, - "modified": "2013-12-09 14:05:34", + "modified": "2013-11-18 15:16:50", "modified_by": "Administrator", "owner": "Administrator" }, From 229b246d6df2ab743dd8dcb5975740cf2d2b6ad2 Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Wed, 11 Dec 2013 18:49:11 +0530 Subject: [PATCH 18/25] [fix] [minor] production planning tool clear sales order table --- .../accounts_receivable.py | 2 +- .../production_planning_tool.py | 22 ++++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) 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/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): From 9d835a039a593ac1aa48ab8207794e188e673050 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Thu, 12 Dec 2013 11:00:40 +0530 Subject: [PATCH 19/25] [fix] [minor] convert serial no to upper case for comparing --- stock/doctype/serial_no/serial_no.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/stock/doctype/serial_no/serial_no.py b/stock/doctype/serial_no/serial_no.py index dc067ec6d1..bd2704d8ac 100644 --- a/stock/doctype/serial_no/serial_no.py +++ b/stock/doctype/serial_no/serial_no.py @@ -150,7 +150,7 @@ class DocType(StockController): where serial_no like %s and item_code=%s and ifnull(is_cancelled, 'No')='No' order by posting_date desc, posting_time desc, name desc""", ("%%%s%%" % self.doc.name, self.doc.item_code), as_dict=1): - if self.doc.name in get_serial_nos(sle.serial_no): + if self.doc.name.upper() in get_serial_nos(sle.serial_no): if sle.actual_qty > 0: sle_dict.setdefault("incoming", []).append(sle) else: @@ -268,7 +268,8 @@ def get_item_details(item_code): from tabItem where name=%s""", item_code, as_dict=True)[0] def get_serial_nos(serial_no): - return [s.strip() for s in cstr(serial_no).strip().replace(',', '\n').split('\n') if s.strip()] + return [s.strip() for s in cstr(serial_no).strip().upper().replace(',', '\n').split('\n') + if s.strip()] def make_serial_no(serial_no, sle): sr = webnotes.new_bean("Serial No") From 7d4c2d62bf11f5f740a1e1df151d6afde3e74b32 Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Thu, 12 Dec 2013 12:32:43 +0530 Subject: [PATCH 20/25] [fix] [minor] allowed renaming for address and contact --- buying/doctype/supplier/supplier.py | 18 +++++++++--------- selling/doctype/customer/customer.py | 22 +++++++++++----------- utilities/doctype/address/address.txt | 3 ++- utilities/doctype/contact/contact.txt | 3 ++- 4 files changed, 24 insertions(+), 22 deletions(-) diff --git a/buying/doctype/supplier/supplier.py b/buying/doctype/supplier/supplier.py index 503ec8a1dd..2435d0cc31 100644 --- a/buying/doctype/supplier/supplier.py +++ b/buying/doctype/supplier/supplier.py @@ -28,11 +28,11 @@ class DocType(TransactionBase): self.doc.name = make_autoname(self.doc.naming_series + '.#####') def update_address(self): - webnotes.conn.sql("""update `tabAddress` set supplier_name=%s + 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 + 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): @@ -164,17 +164,17 @@ class DocType(TransactionBase): rename_account_for("Supplier", olddn, newdn, merge) def after_rename(self, olddn, newdn, merge=False): - condition = value = '' + set_field = '' if webnotes.defaults.get_global_default('supp_master_name') == 'Supplier Name': webnotes.conn.set(self.doc, "supplier_name", newdn) self.update_contact() - condition = ", supplier_name=%s" - value = newdn - self.update_supplier_address(newdn, condition, value) + set_field = ", supplier_name=%(newdn)s" + self.update_supplier_address(newdn, set_field) - def update_supplier_address(self, newdn, condition, value): - webnotes.conn.sql("""update `tabAddress` set address_title=%s %s - where supplier=%s""" % ('%s', condition, '%s'), (newdn, value, newdn)) + 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/selling/doctype/customer/customer.py b/selling/doctype/customer/customer.py index 71116b33b1..49296b0b1c 100644 --- a/selling/doctype/customer/customer.py +++ b/selling/doctype/customer/customer.py @@ -48,12 +48,12 @@ class DocType(TransactionBase): 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 where customer=%s""", - (self.doc.customer_name, self.doc.name)) + 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 where customer=%s""", - (self.doc.customer_name, self.doc.name)) + 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 : @@ -159,17 +159,17 @@ class DocType(TransactionBase): rename_account_for("Customer", olddn, newdn, merge) def after_rename(self, olddn, newdn, merge=False): - condition = value = '' + set_field = '' if webnotes.defaults.get_global_default('cust_master_name') == 'Customer Name': webnotes.conn.set(self.doc, "customer_name", newdn) self.update_contact() - condition = ", customer_name=%s" - value = newdn - self.update_customer_address(newdn, condition, value) + set_field = ", customer_name=%(newdn)s" + self.update_customer_address(newdn, set_field) - def update_customer_address(self, newdn, condition, value): - webnotes.conn.sql("""update `tabAddress` set address_title=%s %s - where customer=%s""" % ('%s', condition, '%s'), (newdn, value, newdn)) + 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/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", From 13fc64d7329a1b15236fc9383c7f31ea68e8cc31 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Thu, 12 Dec 2013 12:50:42 +0530 Subject: [PATCH 21/25] [fix] [minor] Negative outstanding validation for JV against JV --- accounts/doctype/gl_entry/gl_entry.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/accounts/doctype/gl_entry/gl_entry.py b/accounts/doctype/gl_entry/gl_entry.py index 3a0b28c78f..d3c6317787 100644 --- a/accounts/doctype/gl_entry/gl_entry.py +++ b/accounts/doctype/gl_entry/gl_entry.py @@ -5,8 +5,7 @@ from __future__ import unicode_literals import webnotes from webnotes.utils import flt, fmt_money, getdate -from webnotes.model.code import get_obj -from webnotes import msgprint, _ +from webnotes import _ class DocType: def __init__(self,d,dl): @@ -130,11 +129,12 @@ def update_outstanding_amt(account, against_voucher_type, against_voucher, on_ca against_voucher_amount = flt(webnotes.conn.sql(""" select sum(ifnull(debit, 0)) - sum(ifnull(credit, 0)) from `tabGL Entry` where voucher_type = 'Journal Voucher' and voucher_no = %s - and account = %s""", (against_voucher, account))[0][0]) + and account = %s and ifnull(against_voucher, '') = ''""", + (against_voucher, account))[0][0]) bal = against_voucher_amount + bal if against_voucher_amount < 0: bal = -bal - + # Validation : Outstanding can not be negative if bal < 0 and not on_cancel: webnotes.throw(_("Outstanding for Voucher ") + against_voucher + _(" will become ") + @@ -158,4 +158,4 @@ def validate_frozen_account(account, adv_adj): elif frozen_accounts_modifier not in webnotes.user.get_roles(): webnotes.throw(account + _(" is a frozen account. ") + _("To create / edit transactions against this account, you need role") + ": " + - frozen_accounts_modifier) + frozen_accounts_modifier) \ No newline at end of file From 6ad8973538788c869cf0896b1daba13463c02b3e Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Thu, 12 Dec 2013 13:39:21 +0600 Subject: [PATCH 22/25] bumped to version 3.2.0 --- config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config.json b/config.json index bc72fa9bc9..779f0638b7 100644 --- a/config.json +++ b/config.json @@ -1,6 +1,6 @@ { "app_name": "ERPNext", - "app_version": "3.1.2", + "app_version": "3.2.0", "base_template": "app/portal/templates/base.html", "modules": { "Accounts": { @@ -74,5 +74,5 @@ "type": "module" } }, - "requires_framework_version": "==3.1.1" + "requires_framework_version": "==3.2.0" } \ No newline at end of file From c3f2fb7355ec457edca6f1972063e367d66f2c6f Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Thu, 12 Dec 2013 14:55:25 +0530 Subject: [PATCH 23/25] [fix] [minor] payment to invoice patching tool --- .../payment_to_invoice_matching_tool.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py b/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py index 6a31191969..dea5fb59c9 100644 --- a/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py +++ b/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py @@ -145,6 +145,8 @@ def gl_entry_details(doctype, txt, searchfield, start, page_len, filters): and voucher_no != gle.voucher_no) != abs(ifnull(gle.debit, 0) - ifnull(gle.credit, 0) ) + and if(gle.voucher_type='Sales Invoice', (select is_pos from `tabSales Invoice` + where name=gle.voucher_no), 0)=0 %(mcond)s ORDER BY gle.posting_date desc, gle.voucher_no desc limit %(start)s, %(page_len)s""" % { From f943dc5dc1d446b6c47beda4e85289464c801699 Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Thu, 12 Dec 2013 19:45:30 +0600 Subject: [PATCH 24/25] bumped to version 3.2.1 --- config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.json b/config.json index 779f0638b7..77a00b846f 100644 --- a/config.json +++ b/config.json @@ -1,6 +1,6 @@ { "app_name": "ERPNext", - "app_version": "3.2.0", + "app_version": "3.2.1", "base_template": "app/portal/templates/base.html", "modules": { "Accounts": { From dea59996d87c22b02b4f9c44fa84943e30d64b4f Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Sat, 14 Dec 2013 01:15:37 +0600 Subject: [PATCH 25/25] bumped to version 3.2.2 --- config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.json b/config.json index 77a00b846f..28d1a3d5e3 100644 --- a/config.json +++ b/config.json @@ -1,6 +1,6 @@ { "app_name": "ERPNext", - "app_version": "3.2.1", + "app_version": "3.2.2", "base_template": "app/portal/templates/base.html", "modules": { "Accounts": {