From 4a4a6594d18e51abb1d50e928329a6a070fe5ce0 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 29 May 2015 15:56:24 +0530 Subject: [PATCH 1/8] [minor] [refactor] --- erpnext/crm/doctype/newsletter_list/newsletter_list.py | 7 +++++-- erpnext/setup/doctype/naming_series/naming_series.py | 1 - 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/erpnext/crm/doctype/newsletter_list/newsletter_list.py b/erpnext/crm/doctype/newsletter_list/newsletter_list.py index 1eb95eac172..3a580d333bb 100644 --- a/erpnext/crm/doctype/newsletter_list/newsletter_list.py +++ b/erpnext/crm/doctype/newsletter_list/newsletter_list.py @@ -44,11 +44,14 @@ class NewsletterList(Document): return self.update_total_subscribers() def update_total_subscribers(self): - self.total_subscribers = frappe.db.sql("""select count(*) from `tabNewsletter List Subscriber` - where newsletter_list=%s""", self.name)[0][0] + self.total_subscribers = self.get_total_subscribers() self.db_update() return self.total_subscribers + def get_total_subscribers(self): + return frappe.db.sql("""select count(*) from `tabNewsletter List Subscriber` + where newsletter_list=%s""", self.name)[0][0] + def on_trash(self): for d in frappe.get_all("Newsletter List Subscriber", "name", {"newsletter_list": self.name}): frappe.delete_doc("Newsletter List Subscriber", d.name) diff --git a/erpnext/setup/doctype/naming_series/naming_series.py b/erpnext/setup/doctype/naming_series/naming_series.py index 1b986827c21..5105fcd795f 100644 --- a/erpnext/setup/doctype/naming_series/naming_series.py +++ b/erpnext/setup/doctype/naming_series/naming_series.py @@ -12,7 +12,6 @@ from frappe.model.document import Document class NamingSeriesNotSetError(frappe.ValidationError): pass class NamingSeries(Document): - def get_transactions(self, arg=None): doctypes = list(set(frappe.db.sql_list("""select parent from `tabDocField` where fieldname='naming_series'""") From 2c30acdcb2b7c499ab1b7ad9ad483a9071744202 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 29 May 2015 16:33:36 +0530 Subject: [PATCH 2/8] [minor] journal entry, copy over party details to new row and automatically set difference --- .../doctype/journal_entry/journal_entry.js | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js index 5ff9e5fd2ca..3ea92e1b192 100644 --- a/erpnext/accounts/doctype/journal_entry/journal_entry.js +++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js @@ -4,7 +4,7 @@ frappe.provide("erpnext.accounts"); frappe.require("assets/erpnext/js/utils.js"); -erpnext.accounts.JournalVoucher = frappe.ui.form.Controller.extend({ +erpnext.accounts.JournalEntry = frappe.ui.form.Controller.extend({ onload: function() { this.load_defaults(); this.setup_queries(); @@ -130,10 +130,31 @@ erpnext.accounts.JournalVoucher = frappe.ui.form.Controller.extend({ cur_frm.cscript.update_totals(me.frm.doc); } }); - } + }, + + accounts_add: function(doc, cdt, cdn) { + var row = frappe.get_doc(cdt, cdn); + $.each(doc.accounts, function(i, d) { + if(d.account && d.party && d.party_type) { + row.account = d.account; + row.party = d.party; + row.party_type = d.party_type; + } + }); + + // set difference + if(doc.difference) { + if(doc.difference > 0) { + row.credit = doc.difference; + } else { + row.debit = -doc.difference; + } + } + }, + }); -cur_frm.script_manager.make(erpnext.accounts.JournalVoucher); +cur_frm.script_manager.make(erpnext.accounts.JournalEntry); cur_frm.cscript.refresh = function(doc) { erpnext.toggle_naming_series(); From 065badc54b8b6bdeba6df8d2f67983050aee5a35 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Sun, 31 May 2015 10:36:32 +0530 Subject: [PATCH 3/8] [minor] move buttons from sales invoice to toolbar --- erpnext/accounts/doctype/sales_invoice/sales_invoice.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js index 57e17b6da66..b35fa8ae84b 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js @@ -65,7 +65,7 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte }); if(!from_delivery_note) { - cur_frm.page.add_menu_item(__('Make Delivery'), cur_frm.cscript['Make Delivery Note'], "icon-truck") + cur_frm.add_custom_button(__('Make Delivery'), cur_frm.cscript['Make Delivery Note'], "icon-truck") } } @@ -75,14 +75,14 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte } // Show buttons only when pos view is active - if (doc.docstatus===0 && !cur_frm.page.current_view_name!=="pos") { + if (cint(doc.docstatus==0) && cur_frm.page.current_view_name!=="pos") { cur_frm.cscript.sales_order_btn(); cur_frm.cscript.delivery_note_btn(); } }, sales_order_btn: function() { - this.$sales_order_btn = cur_frm.page.add_menu_item(__('From Sales Order'), + this.$sales_order_btn = cur_frm.add_custom_button(__('From Sales Order'), function() { frappe.model.map_current_doc({ method: "erpnext.selling.doctype.sales_order.sales_order.make_sales_invoice", @@ -99,7 +99,7 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte }, delivery_note_btn: function() { - this.$delivery_note_btn = cur_frm.page.add_menu_item(__('From Delivery Note'), + this.$delivery_note_btn = cur_frm.add_custom_button(__('From Delivery Note'), function() { frappe.model.map_current_doc({ method: "erpnext.stock.doctype.delivery_note.delivery_note.make_sales_invoice", From 8908543a9cfe1cf34d8381a80df2960874fbe969 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 29 May 2015 16:26:07 +0530 Subject: [PATCH 4/8] In standard print format, item name will now honour 'Print Hide' property --- erpnext/accounts/general_ledger.py | 1 - erpnext/accounts/report/gross_profit/gross_profit.py | 2 -- erpnext/config/learn.py | 4 ++-- erpnext/config/stock.py | 2 +- .../print_formats/includes/item_table_description.html | 4 ++-- 5 files changed, 5 insertions(+), 8 deletions(-) diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py index 76b530998db..75dcbbf603a 100644 --- a/erpnext/accounts/general_ledger.py +++ b/erpnext/accounts/general_ledger.py @@ -101,7 +101,6 @@ def round_off_debit_credit(gl_map): debit_credit_diff += entry.debit - entry.credit debit_credit_diff = flt(debit_credit_diff, precision) - print debit_credit_diff, 1.0 / (10**precision) if abs(debit_credit_diff) >= (2.0 / (10**precision)): frappe.throw(_("Debit and Credit not equal for {0} #{1}. Difference is {2}.") .format(gl_map[0].voucher_type, gl_map[0].voucher_no, debit_credit_diff)) diff --git a/erpnext/accounts/report/gross_profit/gross_profit.py b/erpnext/accounts/report/gross_profit/gross_profit.py index 98a121ace77..dd7def8bd62 100644 --- a/erpnext/accounts/report/gross_profit/gross_profit.py +++ b/erpnext/accounts/report/gross_profit/gross_profit.py @@ -183,8 +183,6 @@ class GrossProfitGenerator(object): my_sle = self.sle.get((item_code, row.warehouse)) for i, sle in enumerate(my_sle): # find the stock valution rate from stock ledger entry - print sle.voucher_type, row.parenttype, sle.voucher_no, row.parent, \ - sle.voucher_detail_no, row.item_row if sle.voucher_type == row.parenttype and row.parent == sle.voucher_no and \ sle.voucher_detail_no == row.item_row: previous_stock_value = len(my_sle) > i+1 and \ diff --git a/erpnext/config/learn.py b/erpnext/config/learn.py index 146bb21b2d2..ffcd76ef48b 100644 --- a/erpnext/config/learn.py +++ b/erpnext/config/learn.py @@ -31,7 +31,7 @@ def get_data(): { "type": "help", "label": _("Opening Stock Balance"), - "youtube_id": "yPgrtfeCTs" + "youtube_id": "0yPgrtfeCTs" }, { "type": "help", @@ -106,7 +106,7 @@ def get_data(): { "type": "help", "label": _("Opening Stock Balance"), - "youtube_id": "yPgrtfeCTs" + "youtube_id": "0yPgrtfeCTs" }, { "type": "help", diff --git a/erpnext/config/stock.py b/erpnext/config/stock.py index 86ec45800cd..70bb258af9f 100644 --- a/erpnext/config/stock.py +++ b/erpnext/config/stock.py @@ -266,7 +266,7 @@ def get_data(): { "type": "help", "label": _("Opening Stock Balance"), - "youtube_id": "yPgrtfeCTs" + "youtube_id": "0yPgrtfeCTs" }, { "type": "help", diff --git a/erpnext/templates/print_formats/includes/item_table_description.html b/erpnext/templates/print_formats/includes/item_table_description.html index 34f95b9f274..107abe03c06 100644 --- a/erpnext/templates/print_formats/includes/item_table_description.html +++ b/erpnext/templates/print_formats/includes/item_table_description.html @@ -7,8 +7,8 @@ {% if doc.in_format_data("item_code") and not doc.is_print_hide("item_code") -%}
{{ doc.item_code }}
{%- endif %} - {% if (doc.in_format_data("item_name") and - (not doc.in_format_data("item_code") or doc.is_print_hide("item_code") + {% if (doc.in_format_data("item_name") and not doc.is_print_hide("item_name") and + (not doc.in_format_data("item_code") or doc.is_print_hide("item_code") or doc.item_code != doc.item_name)) -%}
{{ doc.get_formatted("item_name") }}
{%- endif %} From 4a6c178795e783066f6730c7791ec54731061acb Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 29 May 2015 17:31:31 +0530 Subject: [PATCH 5/8] On selection of item, set default qty as 1 --- erpnext/stock/get_item_details.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index 3f73932c5fc..399946b812e 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -163,8 +163,8 @@ def get_basic_details(args, item): "uom": item.stock_uom, "min_order_qty": flt(item.min_order_qty) if args.parenttype == "Material Request" else "", "conversion_factor": 1.0, - "qty": args.qty or 0.0, - "stock_qty": 0.0, + "qty": args.qty or 1.0, + "stock_qty": 1.0, "price_list_rate": 0.0, "base_price_list_rate": 0.0, "rate": 0.0, From c7ef8dda79c0df5434c5c115d003ead344b1868a Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 29 May 2015 17:31:51 +0530 Subject: [PATCH 6/8] [fix] Pricing Rule based on qty --- erpnext/accounts/doctype/pricing_rule/pricing_rule.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py index 0ed4433a1dc..70d6fb9c141 100644 --- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py @@ -205,9 +205,9 @@ def get_pricing_rules(args): def filter_pricing_rules(args, pricing_rules): # filter for qty - if pricing_rules and args.get("qty"): - pricing_rules = filter(lambda x: (args.qty>=flt(x.min_qty) - and (args.qty<=x.max_qty if x.max_qty else True)), pricing_rules) + if pricing_rules: + pricing_rules = filter(lambda x: (flt(args.get("qty"))>=flt(x.min_qty) + and (flt(args.get("qty"))<=x.max_qty if x.max_qty else True)), pricing_rules) # find pricing rule with highest priority if pricing_rules: From 3ebfad711572dc629d3f2aed4a4c36c9e7a08181 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 1 Jun 2015 14:01:43 +0530 Subject: [PATCH 7/8] minor fixes --- erpnext/accounts/doctype/journal_entry/journal_entry.py | 3 ++- erpnext/hr/doctype/leave_allocation/leave_allocation.py | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py index 1e2b352d4ed..1f296e5fa72 100644 --- a/erpnext/accounts/doctype/journal_entry/journal_entry.py +++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py @@ -81,7 +81,8 @@ class JournalEntry(AccountsController): frappe.throw(_("Row {0}: Party Type and Party is only applicable against Receivable / Payable account").format(d.idx)) def check_credit_limit(self): - customers = list(set([d.party for d in self.get("accounts") if d.party_type=="Customer" and flt(d.debit) > 0])) + customers = list(set([d.party for d in self.get("accounts") + if d.party_type=="Customer" and d.party and flt(d.debit) > 0])) if customers: from erpnext.selling.doctype.customer.customer import check_credit_limit for customer in customers: diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation.py b/erpnext/hr/doctype/leave_allocation/leave_allocation.py index 272ec3996ba..4e74b2846d2 100755 --- a/erpnext/hr/doctype/leave_allocation/leave_allocation.py +++ b/erpnext/hr/doctype/leave_allocation/leave_allocation.py @@ -23,9 +23,6 @@ class LeaveAllocation(Document): def on_update(self): self.get_total_allocated_leaves() - def on_cancel(self): - self.check_for_leave_application() - def validate_new_leaves_allocated_value(self): """validate that leave allocation is in multiples of 0.5""" if flt(self.new_leaves_allocated) % 0.5: From 8f25402dce1e4561253727c1991d6074387d24a9 Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Mon, 1 Jun 2015 15:21:17 +0600 Subject: [PATCH 8/8] bumped to version 5.0.14 --- erpnext/__version__.py | 2 +- erpnext/hooks.py | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/erpnext/__version__.py b/erpnext/__version__.py index e98ce438071..f2ff8cdf059 100644 --- a/erpnext/__version__.py +++ b/erpnext/__version__.py @@ -1,2 +1,2 @@ from __future__ import unicode_literals -__version__ = '5.0.13' +__version__ = '5.0.14' diff --git a/erpnext/hooks.py b/erpnext/hooks.py index 47ea8f59389..0d75a5312dd 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -5,7 +5,7 @@ app_publisher = "Frappe Technologies Pvt. Ltd. and Contributors" app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations" app_icon = "icon-th" app_color = "#e74c3c" -app_version = "5.0.13" +app_version = "5.0.14" error_report_email = "support@erpnext.com" diff --git a/setup.py b/setup.py index b2079d641d0..255951a94df 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ from setuptools import setup, find_packages -version = "5.0.13" +version = "5.0.14" with open("requirements.txt", "r") as f: install_requires = f.readlines()