From 688758a56f9db762151aedac61b5aada6e22a068 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 13 Nov 2018 16:13:02 +0530 Subject: [PATCH 01/10] fix(test): Fixed item discount amount calculation and test cases related to pricing rule --- .../doctype/pricing_rule/test_pricing_rule.py | 38 +++++++------------ erpnext/controllers/taxes_and_totals.py | 2 +- 2 files changed, 15 insertions(+), 25 deletions(-) diff --git a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py index f5f832d857..995efee2c0 100644 --- a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py +++ b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py @@ -11,11 +11,17 @@ from erpnext.stock.get_item_details import get_item_details from frappe import MandatoryError class TestPricingRule(unittest.TestCase): + def setUp(self): + frappe.db.sql("delete from `tabPricing Rule`") + + def tearDown(self): + frappe.db.sql("delete from `tabPricing Rule`") + def test_pricing_rule_for_discount(self): from erpnext.stock.get_item_details import get_item_details from frappe import MandatoryError - frappe.db.sql("delete from `tabPricing Rule`") + test_record = { "doctype": "Pricing Rule", @@ -89,14 +95,10 @@ class TestPricingRule(unittest.TestCase): details = get_item_details(args) self.assertEqual(details.get("discount_percentage"), 15) - frappe.db.sql("delete from `tabPricing Rule`") - def test_pricing_rule_for_margin(self): from erpnext.stock.get_item_details import get_item_details from frappe import MandatoryError - frappe.db.sql("delete from `tabPricing Rule`") - test_record = { "doctype": "Pricing Rule", "title": "_Test Pricing Rule", @@ -111,14 +113,14 @@ class TestPricingRule(unittest.TestCase): "company": "_Test Company" } frappe.get_doc(test_record.copy()).insert() - + item_price = frappe.get_doc({ "doctype": "Item Price", "price_list": "_Test Price List 2", "item_code": "_Test FG Item 2", "price_list_rate": 100 }) - + item_price.insert(ignore_permissions=True) args = frappe._dict({ @@ -138,14 +140,10 @@ class TestPricingRule(unittest.TestCase): self.assertEqual(details.get("margin_type"), "Percentage") self.assertEqual(details.get("margin_rate_or_amount"), 10) - frappe.db.sql("delete from `tabPricing Rule`") - def test_pricing_rule_for_variants(self): from erpnext.stock.get_item_details import get_item_details from frappe import MandatoryError - frappe.db.sql("delete from `tabPricing Rule`") - if not frappe.db.exists("Item", "Test Variant PRT"): frappe.get_doc({ "doctype": "Item", @@ -213,8 +211,6 @@ class TestPricingRule(unittest.TestCase): self.assertEqual(details.get("discount_percentage"), 17.5) def test_pricing_rule_for_stock_qty(self): - frappe.db.sql("delete from `tabPricing Rule`") - test_record = { "doctype": "Pricing Rule", "title": "_Test Pricing Rule", @@ -257,25 +253,19 @@ class TestPricingRule(unittest.TestCase): self.assertEqual(so.items[0].rate, 100) def test_pricing_rule_with_margin_and_discount(self): - frappe.delete_doc_if_exists('Pricing Rule', '_Test Pricing Rule') - make_pricing_rule(selling=1, margin_type="Percentage", margin_rate_or_amount=10) + make_pricing_rule(selling=1, margin_type="Percentage", margin_rate_or_amount=10, discount_percentage=10) si = create_sales_invoice(do_not_save=True) si.items[0].price_list_rate = 1000 si.payment_schedule = [] si.insert(ignore_permissions=True) item = si.items[0] - self.assertEqual(item.rate, 1100) self.assertEqual(item.margin_rate_or_amount, 10) - - # With discount - item.discount_percentage = 10 - si.payment_schedule = [] - si.save() - item = si.items[0] - self.assertEqual(item.rate, 990) + self.assertEqual(item.rate_with_margin, 1100) self.assertEqual(item.discount_percentage, 10) - frappe.db.sql("delete from `tabPricing Rule`") + self.assertEqual(item.discount_amount, 110) + self.assertEqual(item.rate, 990) + def make_pricing_rule(**args): args = frappe._dict(args) diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py index 6985c80bc1..24fe293579 100644 --- a/erpnext/controllers/taxes_and_totals.py +++ b/erpnext/controllers/taxes_and_totals.py @@ -70,7 +70,7 @@ class calculate_taxes_and_totals(object): if item.rate_with_margin > 0 else item.rate item.net_rate = item.rate - item.discount_amount = item.price_list_rate - item.rate + item.discount_amount = item.rate_with_margin - item.rate item.amount = flt(item.rate * item.qty, item.precision("amount")) item.net_amount = item.amount From 7fe4124bb8ff5e0a93f7cba1553812d55000e41d Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 13 Nov 2018 16:48:59 +0530 Subject: [PATCH 02/10] fix(field property): Made barcode field non-mandatory in item --- erpnext/stock/doctype/item_barcode/item_barcode.json | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/erpnext/stock/doctype/item_barcode/item_barcode.json b/erpnext/stock/doctype/item_barcode/item_barcode.json index c8a3a897b3..d89ca55a4f 100644 --- a/erpnext/stock/doctype/item_barcode/item_barcode.json +++ b/erpnext/stock/doctype/item_barcode/item_barcode.json @@ -1,5 +1,6 @@ { "allow_copy": 0, + "allow_events_in_timeline": 0, "allow_guest_to_view": 0, "allow_import": 0, "allow_rename": 0, @@ -15,6 +16,7 @@ "fields": [ { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -38,13 +40,15 @@ "read_only": 0, "remember_last_selected_value": 0, "report_hide": 0, - "reqd": 1, + "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 1 }, { "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -72,6 +76,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 } ], @@ -85,7 +90,7 @@ "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2017-12-10 20:55:23.814039", + "modified": "2018-11-13 06:03:09.814357", "modified_by": "Administrator", "module": "Stock", "name": "Item Barcode", @@ -99,5 +104,6 @@ "sort_field": "modified", "sort_order": "DESC", "track_changes": 1, - "track_seen": 0 + "track_seen": 0, + "track_views": 0 } \ No newline at end of file From 367a076fa4c7755406ff81405b196172455cc076 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 13 Nov 2018 18:41:58 +0530 Subject: [PATCH 03/10] fix(discount): Fixed item discount amount calculation --- erpnext/controllers/taxes_and_totals.py | 9 +++++---- erpnext/public/js/controllers/taxes_and_totals.js | 2 +- erpnext/public/js/controllers/transaction.js | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py index 24fe293579..a4410256f6 100644 --- a/erpnext/controllers/taxes_and_totals.py +++ b/erpnext/controllers/taxes_and_totals.py @@ -65,12 +65,13 @@ class calculate_taxes_and_totals(object): if item.doctype in ['Quotation Item', 'Sales Order Item', 'Delivery Note Item', 'Sales Invoice Item']: item.rate_with_margin, item.base_rate_with_margin = self.calculate_margin(item) - - item.rate = flt(item.rate_with_margin * (1.0 - (item.discount_percentage / 100.0)), item.precision("rate"))\ - if item.rate_with_margin > 0 else item.rate + if flt(item.rate_with_margin) > 0: + item.rate = flt(item.rate_with_margin * (1.0 - (item.discount_percentage / 100.0)), item.precision("rate")) + item.discount_amount = item.rate_with_margin - item.rate + elif flt(item.price_list_rate) > 0: + item.discount_amount = item.price_list_rate - item.rate item.net_rate = item.rate - item.discount_amount = item.rate_with_margin - item.rate item.amount = flt(item.rate * item.qty, item.precision("amount")) item.net_amount = item.amount diff --git a/erpnext/public/js/controllers/taxes_and_totals.js b/erpnext/public/js/controllers/taxes_and_totals.js index 21e02b7c80..a2d44c3ae2 100644 --- a/erpnext/public/js/controllers/taxes_and_totals.js +++ b/erpnext/public/js/controllers/taxes_and_totals.js @@ -13,8 +13,8 @@ erpnext.taxes_and_totals = erpnext.payments.extend({ + flt(effective_item_rate) * ( flt(item.margin_rate_or_amount) / 100); } else { item.rate_with_margin = flt(effective_item_rate) + flt(item.margin_rate_or_amount); - item.base_rate_with_margin = flt(item.rate_with_margin) * flt(this.frm.doc.conversion_rate); } + item.base_rate_with_margin = flt(item.rate_with_margin) * flt(this.frm.doc.conversion_rate); item.rate = flt(item.rate_with_margin , precision("rate", item)); diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index f3c29fce78..a33b87f619 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -33,6 +33,7 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ item.margin_rate_or_amount = 0; item.rate_with_margin = 0; } + item.base_rate_with_margin = item.rate_with_margin * flt(this.frm.doc.conversion_rate); cur_frm.cscript.set_gross_profit(item); cur_frm.cscript.calculate_taxes_and_totals(); From 047a7123eb0308ce64dbd5b48b81a88c518f7346 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Wed, 14 Nov 2018 13:20:00 +0530 Subject: [PATCH 04/10] Claimed amount is not reset on cancel --- erpnext/hr/doctype/employee_advance/employee_advance.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/erpnext/hr/doctype/employee_advance/employee_advance.py b/erpnext/hr/doctype/employee_advance/employee_advance.py index 29aae05ba3..c90e5dbbde 100644 --- a/erpnext/hr/doctype/employee_advance/employee_advance.py +++ b/erpnext/hr/doctype/employee_advance/employee_advance.py @@ -58,10 +58,9 @@ class EmployeeAdvance(Document): select sum(ifnull(allocated_amount, 0)) from `tabExpense Claim Advance` where employee_advance = %s and docstatus=1 and allocated_amount > 0 - """, self.name)[0][0] + """, self.name)[0][0] or 0 - if claimed_amount: - frappe.db.set_value("Employee Advance", self.name, "claimed_amount", claimed_amount) + frappe.db.set_value("Employee Advance", self.name, "claimed_amount", claimed_amount) @frappe.whitelist() def make_bank_entry(dt, dn): From a95697f5069ee97b4391e98bcdb4efc8dfcf939d Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Wed, 14 Nov 2018 19:51:09 +0530 Subject: [PATCH 05/10] Added currency filter in consolidated financial statement report --- .../consolidated_financial_statement.js | 7 +++++++ .../consolidated_financial_statement.py | 16 +++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js index 91a06f4a40..7b373f0d9a 100644 --- a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js +++ b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js @@ -42,6 +42,13 @@ frappe.query_reports["Consolidated Financial Statement"] = { "default": "Balance Sheet", "reqd": 1 }, + { + "fieldname": "presentation_currency", + "label": __("Currency"), + "fieldtype": "Select", + "options": erpnext.get_presentation_currency_list(), + "default": frappe.defaults.get_user_default("Currency") + }, { "fieldname":"accumulated_in_group_company", "label": __("Accumulated Values in Group Company"), diff --git a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py index 2d134694f2..383d4c09ed 100644 --- a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py +++ b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py @@ -5,6 +5,7 @@ from __future__ import unicode_literals import frappe, erpnext from frappe import _ from frappe.utils import flt, cint +from erpnext.accounts.report.utils import get_currency, convert_to_presentation_currency from erpnext.accounts.report.financial_statements import get_fiscal_year_data, sort_accounts from erpnext.accounts.report.balance_sheet.balance_sheet import (get_provisional_profit_loss, check_opening_balance, get_chart_data) @@ -48,7 +49,7 @@ def get_balance_sheet_data(fiscal_year, companies, columns, filters): data.extend(liability or []) data.extend(equity or []) - company_currency = frappe.db.get_value("Company", filters.company, "default_currency") + company_currency = get_company_currency(filters) provisional_profit_loss, total_credit = get_provisional_profit_loss(asset, liability, equity, companies, filters.get('company'), company_currency, True) @@ -59,7 +60,7 @@ def get_balance_sheet_data(fiscal_year, companies, columns, filters): "account_name": "'" + _("Unclosed Fiscal Years Profit / Loss (Credit)") + "'", "account": "'" + _("Unclosed Fiscal Years Profit / Loss (Credit)") + "'", "warn_if_negative": True, - "currency": frappe.get_cached_value('Company', filters.company, "default_currency") + "currency": company_currency } for company in companies: unclosed[company] = opening_balance @@ -92,7 +93,7 @@ def get_profit_loss_data(fiscal_year, companies, columns, filters): return data, None, chart def get_income_expense_data(companies, fiscal_year, filters): - company_currency = frappe.get_cached_value('Company', filters.company, "default_currency") + company_currency = get_company_currency(filters) income = get_data(companies, "Income", "Credit", fiscal_year, filters, True) expense = get_data(companies, "Expense", "Debit", fiscal_year, filters, True) @@ -107,7 +108,7 @@ def get_cash_flow_data(fiscal_year, companies, filters): income, expense, net_profit_loss = get_income_expense_data(companies, fiscal_year, filters) data = [] - company_currency = frappe.get_cached_value('Company', filters.company, "default_currency") + company_currency = get_company_currency(filters) for cash_flow_account in cash_flow_accounts: section_data = [] @@ -185,6 +186,7 @@ def get_columns(companies): "fieldname": company, "label": company, "fieldtype": "Currency", + "options": "currency", "width": 150 }) @@ -216,7 +218,8 @@ def get_data(companies, root_type, balance_must_be, fiscal_year, filters=None, i return out def get_company_currency(filters=None): - return frappe.get_cached_value('Company', filters.get('company'), "default_currency") + return (filters.get('presentation_currency') + or frappe.get_cached_value('Company', filters.company, "default_currency")) def calculate_values(accounts_by_name, gl_entries_by_account, companies, fiscal_year, filters): for entries in gl_entries_by_account.values(): @@ -346,6 +349,9 @@ def set_gl_entries_by_account(from_date, to_date, root_lft, root_rgt, filters, g }, as_dict=True) + if filters and filters.get('presentation_currency'): + convert_to_presentation_currency(gl_entries, get_currency(filters)) + for entry in gl_entries: key = entry.account_number or entry.account_name validate_entries(key, entry, accounts_by_name) From 43920530a1b9fa2c4c06512049fcd7970b84d54d Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Thu, 15 Nov 2018 12:20:27 +0530 Subject: [PATCH 06/10] [Minor] Patch fixes --- erpnext/patches/v11_0/set_missing_gst_hsn_code.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/erpnext/patches/v11_0/set_missing_gst_hsn_code.py b/erpnext/patches/v11_0/set_missing_gst_hsn_code.py index 9d28a4a3f3..3c2cea2230 100644 --- a/erpnext/patches/v11_0/set_missing_gst_hsn_code.py +++ b/erpnext/patches/v11_0/set_missing_gst_hsn_code.py @@ -36,8 +36,8 @@ def execute(): where dt_item.name in ({rows_name}) """.format(dt=dt, rows_name=", ".join(['%s']*len(transaction_rows_name))), tuple(transaction_rows_name)) - for t in transactions: - print(t.name) - trans_doc = frappe.get_doc(dt, t.name) + parent = set([d.name for d in transactions]) + for t in list(parent): + trans_doc = frappe.get_doc(dt, t) hsnwise_tax = get_itemised_tax_breakup_html(trans_doc) - frappe.db.set_value(dt, t.name, "other_charges_calculation", hsnwise_tax, update_modified=False) \ No newline at end of file + frappe.db.set_value(dt, t, "other_charges_calculation", hsnwise_tax, update_modified=False) \ No newline at end of file From 9d0f90975b4b40c4a93f6bb585ad38da9d263566 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Thu, 15 Nov 2018 12:55:20 +0530 Subject: [PATCH 07/10] [Fix] Consolidated financial statement report currency conversion issue --- .../consolidated_financial_statement.py | 47 ++++++++++--------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py index 383d4c09ed..10940c351f 100644 --- a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py +++ b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py @@ -331,31 +331,36 @@ def set_gl_entries_by_account(from_date, to_date, root_lft, root_rgt, filters, g filters.get('company'), ["lft", "rgt"]) additional_conditions = get_additional_conditions(from_date, ignore_closing_entries, filters) - - gl_entries = frappe.db.sql("""select gl.posting_date, gl.account, gl.debit, gl.credit, gl.is_opening, gl.company, - gl.fiscal_year, gl.debit_in_account_currency, gl.credit_in_account_currency, gl.account_currency, - acc.account_name, acc.account_number - from `tabGL Entry` gl, `tabAccount` acc where acc.name = gl.account and gl.company in - (select name from `tabCompany` where lft >= %(company_lft)s and rgt <= %(company_rgt)s) - {additional_conditions} and gl.posting_date <= %(to_date)s and acc.lft >= %(lft)s and acc.rgt <= %(rgt)s - order by gl.account, gl.posting_date""".format(additional_conditions=additional_conditions), - { - "from_date": from_date, - "to_date": to_date, - "lft": root_lft, - "rgt": root_rgt, + companies = frappe.db.sql_list(""" select name from `tabCompany` + where lft >= %(company_lft)s and rgt <= %(company_rgt)s""", { "company_lft": company_lft, "company_rgt": company_rgt, - }, - as_dict=True) + }) - if filters and filters.get('presentation_currency'): - convert_to_presentation_currency(gl_entries, get_currency(filters)) + for company in companies: + gl_entries = frappe.db.sql("""select gl.posting_date, gl.account, gl.debit, gl.credit, gl.is_opening, gl.company, + gl.fiscal_year, gl.debit_in_account_currency, gl.credit_in_account_currency, gl.account_currency, + acc.account_name, acc.account_number + from `tabGL Entry` gl, `tabAccount` acc where acc.name = gl.account and gl.company = %(company)s + {additional_conditions} and gl.posting_date <= %(to_date)s and acc.lft >= %(lft)s and acc.rgt <= %(rgt)s + order by gl.account, gl.posting_date""".format(additional_conditions=additional_conditions), + { + "from_date": from_date, + "to_date": to_date, + "lft": root_lft, + "rgt": root_rgt, + "company": company + }, + as_dict=True) - for entry in gl_entries: - key = entry.account_number or entry.account_name - validate_entries(key, entry, accounts_by_name) - gl_entries_by_account.setdefault(key, []).append(entry) + if filters and filters.get('presentation_currency'): + filters['company'] = company + convert_to_presentation_currency(gl_entries, get_currency(filters)) + + for entry in gl_entries: + key = entry.account_number or entry.account_name + validate_entries(key, entry, accounts_by_name) + gl_entries_by_account.setdefault(key, []).append(entry) return gl_entries_by_account From 704796b1cbb715756facbfac48e073a40d7affbd Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Thu, 15 Nov 2018 13:46:18 +0530 Subject: [PATCH 08/10] Code optimization for consolidated financial statement report --- .../consolidated_financial_statement.py | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py index 10940c351f..b9aebd83f9 100644 --- a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py +++ b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py @@ -331,13 +331,18 @@ def set_gl_entries_by_account(from_date, to_date, root_lft, root_rgt, filters, g filters.get('company'), ["lft", "rgt"]) additional_conditions = get_additional_conditions(from_date, ignore_closing_entries, filters) - companies = frappe.db.sql_list(""" select name from `tabCompany` + companies = frappe.db.sql(""" select name, default_currency from `tabCompany` where lft >= %(company_lft)s and rgt <= %(company_rgt)s""", { "company_lft": company_lft, "company_rgt": company_rgt, - }) + }, as_dict=1) - for company in companies: + currency_info = frappe._dict({ + 'report_date': to_date, + 'presentation_currency': filters.get('presentation_currency') + }) + + for d in companies: gl_entries = frappe.db.sql("""select gl.posting_date, gl.account, gl.debit, gl.credit, gl.is_opening, gl.company, gl.fiscal_year, gl.debit_in_account_currency, gl.credit_in_account_currency, gl.account_currency, acc.account_name, acc.account_number @@ -349,13 +354,14 @@ def set_gl_entries_by_account(from_date, to_date, root_lft, root_rgt, filters, g "to_date": to_date, "lft": root_lft, "rgt": root_rgt, - "company": company + "company": d.name }, as_dict=True) - if filters and filters.get('presentation_currency'): - filters['company'] = company - convert_to_presentation_currency(gl_entries, get_currency(filters)) + if filters and filters.get('presentation_currency') != d.default_currency: + currency_info['company'] = d.name + currency_info['company_currency'] = d.default_currency + convert_to_presentation_currency(gl_entries, currency_info) for entry in gl_entries: key = entry.account_number or entry.account_name From 2426d00dd68b504404a35bf37cce4ecd936f59bd Mon Sep 17 00:00:00 2001 From: Frappe Bot Date: Thu, 15 Nov 2018 09:04:14 +0000 Subject: [PATCH 09/10] bumped to version 10.1.72 --- erpnext/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index 981ca9a510..d6bb2d7aab 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -5,7 +5,7 @@ import frappe from erpnext.hooks import regional_overrides from frappe.utils import getdate -__version__ = '10.1.71' +__version__ = '10.1.72' def get_default_company(user=None): '''Get default company for user''' From a4fe9123821b6e2fef1b3e352b507ade4a9be4b2 Mon Sep 17 00:00:00 2001 From: Frappe Bot Date: Thu, 15 Nov 2018 09:19:18 +0000 Subject: [PATCH 10/10] bumped to version 11.0.3-beta.23 --- erpnext/hooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/hooks.py b/erpnext/hooks.py index 6947c02618..0c07c8a227 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -12,7 +12,7 @@ app_license = "GNU General Public License (v3)" source_link = "https://github.com/frappe/erpnext" develop_version = '12.x.x-develop' -staging_version = '11.0.3-beta.22' +staging_version = '11.0.3-beta.23' error_report_email = "support@erpnext.com"