shifted get_company_currency from transaction base to setup/utils.py
diff --git a/accounts/doctype/gl_control/gl_control.py b/accounts/doctype/gl_control/gl_control.py
index 44cab1e..7566de5 100644
--- a/accounts/doctype/gl_control/gl_control.py
+++ b/accounts/doctype/gl_control/gl_control.py
@@ -17,26 +17,17 @@
from __future__ import unicode_literals
import webnotes
-from webnotes.utils import cstr, flt, get_defaults, now, sendmail
-from webnotes.model import db_exists
+from webnotes.utils import cstr, flt, get_defaults
from webnotes.model.doc import Document, addchild
-from webnotes.model.wrapper import getlist, copy_doclist
+from webnotes.model.wrapper import getlist
from webnotes.model.code import get_obj
from webnotes import msgprint
-from webnotes.utils.email_lib import sendmail
-
-
-from utilities.transaction_base import TransactionBase
class DocType:
def __init__(self,d,dl):
self.doc, self.doclist = d, dl
self.entries = []
- def get_company_currency(self,arg=''):
- dcc = TransactionBase().get_company_currency(arg)
- return dcc
-
def get_period_difference(self,arg, cost_center =''):
# used in General Ledger Page Report
# used for Budget where cost center passed as extra argument
diff --git a/accounts/doctype/journal_voucher/journal_voucher.py b/accounts/doctype/journal_voucher/journal_voucher.py
index 7c1dcfe..89114dd 100644
--- a/accounts/doctype/journal_voucher/journal_voucher.py
+++ b/accounts/doctype/journal_voucher/journal_voucher.py
@@ -18,15 +18,14 @@
import webnotes
from webnotes.utils import cint, cstr, flt, fmt_money, formatdate, getdate
-from webnotes.model import db_exists
from webnotes.model.doc import addchild, make_autoname
-from webnotes.model.wrapper import getlist, copy_doclist
+from webnotes.model.wrapper import getlist
from webnotes.model.code import get_obj
-from webnotes import form, msgprint
+from webnotes import msgprint
+from setup.utils import get_company_currency
sql = webnotes.conn.sql
-from utilities.transaction_base import TransactionBase
class DocType:
def __init__(self,d,dl):
@@ -238,7 +237,7 @@
self.doc.pay_to_recd_from = webnotes.conn.get_value(master_type, ' - '.join(d.account.split(' - ')[:-1]), master_type == 'Customer' and 'customer_name' or 'supplier_name')
if acc_type == 'Bank or Cash':
- dcc = TransactionBase().get_company_currency(self.doc.company)
+ dcc = get_company_currency(self.doc.company)
amt = cint(d.debit) and d.debit or d.credit
self.doc.total_amount = dcc +' '+ cstr(amt)
self.doc.total_amount_in_words = get_obj('Sales Common').get_total_in_words(dcc, cstr(amt))
diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py
index 105f6c2..82261ed 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -21,6 +21,7 @@
from webnotes.model.wrapper import getlist
from webnotes.model.code import get_obj
from webnotes import msgprint
+from setup.utils import get_company_currency
sql = webnotes.conn.sql
@@ -159,7 +160,7 @@
# Check Conversion Rate
# ----------------------
def check_conversion_rate(self):
- default_currency = super(DocType, self).get_company_currency(self.doc.company)
+ default_currency = get_company_currency(self.doc.company)
if not default_currency:
msgprint('Message: Please enter default currency in Company Master')
raise Exception
@@ -370,7 +371,7 @@
pc_obj = get_obj(dt='Purchase Common')
# get total in words
- dcc = super(DocType, self).get_company_currency(self.doc.company)
+ dcc = get_company_currency(self.doc.company)
self.doc.in_words = pc_obj.get_total_in_words(dcc, self.doc.grand_total)
self.doc.in_words_import = pc_obj.get_total_in_words(self.doc.currency,
self.doc.grand_total_import)
diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py
index 5042f53..2e48f91 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/accounts/doctype/sales_invoice/sales_invoice.py
@@ -26,6 +26,7 @@
from webnotes.model.wrapper import getlist, copy_doclist
from webnotes.model.code import get_obj
from webnotes import session, form, msgprint
+from setup.utils import get_company_currency
session = webnotes.session
@@ -412,7 +413,7 @@
def set_in_words(self):
- dcc = TransactionBase().get_company_currency(self.doc.company)
+ dcc = get_company_currency(self.doc.company)
self.doc.in_words = get_obj('Sales Common').get_total_in_words(dcc, self.doc.rounded_total)
self.doc.in_words_export = get_obj('Sales Common').get_total_in_words(self.doc.currency, self.doc.rounded_total_export)
@@ -503,7 +504,7 @@
d.actual_qty = bin and flt(bin[0]['actual_qty']) or 0
for d in getlist(self.doclist, 'packing_details'):
- bin = sql("select actual_qty, projected_qty from `tabBin` where item_code = %s and warehouse = %s", (d.item_code, d.warehouse), as_dict = 1)
+ bin = webnotes.conn.sql("select actual_qty, projected_qty from `tabBin` where item_code = %s and warehouse = %s", (d.item_code, d.warehouse), as_dict = 1)
d.actual_qty = bin and flt(bin[0]['actual_qty']) or 0
d.projected_qty = bin and flt(bin[0]['projected_qty']) or 0
diff --git a/buying/doctype/purchase_order/purchase_order.py b/buying/doctype/purchase_order/purchase_order.py
index 52d2be6..be2833c 100644
--- a/buying/doctype/purchase_order/purchase_order.py
+++ b/buying/doctype/purchase_order/purchase_order.py
@@ -23,6 +23,7 @@
from webnotes.model.code import get_obj
from webnotes import msgprint
from buying.utils import get_last_purchase_details
+from setup.utils import get_company_currency
sql = webnotes.conn.sql
@@ -57,9 +58,6 @@
# Step 4:=> validate for items
pc_obj.validate_for_items(self)
- # Step 5:=> validate conversion rate
- pc_obj.validate_conversion_rate(self)
-
# Get po date
pc_obj.get_prevdoc_date(self)
@@ -70,7 +68,7 @@
self.check_for_stopped_status(pc_obj)
# get total in words
- dcc = super(DocType, self).get_company_currency(self.doc.company)
+ dcc = get_company_currency(self.doc.company)
self.doc.in_words = pc_obj.get_total_in_words(dcc, self.doc.grand_total)
self.doc.in_words_import = pc_obj.get_total_in_words(self.doc.currency, self.doc.grand_total_import)
diff --git a/buying/doctype/supplier_quotation/supplier_quotation.py b/buying/doctype/supplier_quotation/supplier_quotation.py
index 0bc5f13..4f28ecf 100644
--- a/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -17,6 +17,7 @@
from __future__ import unicode_literals
import webnotes
from webnotes.model.code import get_obj
+from setup.utils import get_company_currency
from controllers.buying_controller import BuyingController
class DocType(BuyingController):
@@ -77,12 +78,11 @@
pc = get_obj('Purchase Common')
pc.validate_mandatory(self)
pc.validate_for_items(self)
- pc.validate_conversion_rate(self)
pc.get_prevdoc_date(self)
pc.validate_reference_value(self)
def set_in_words(self):
pc = get_obj('Purchase Common')
- company_currency = super(DocType, self).get_company_currency(self.doc.company)
+ company_currency = get_company_currency(self.doc.company)
self.doc.in_words = pc.get_total_in_words(company_currency, self.doc.grand_total)
self.doc.in_words_import = pc.get_total_in_words(self.doc.currency, self.doc.grand_total_import)
diff --git a/hr/doctype/salary_slip/salary_slip.py b/hr/doctype/salary_slip/salary_slip.py
index 7886281..651cc77 100644
--- a/hr/doctype/salary_slip/salary_slip.py
+++ b/hr/doctype/salary_slip/salary_slip.py
@@ -18,11 +18,11 @@
import webnotes
from webnotes.utils import add_days, cint, cstr, flt, getdate
-from webnotes.model import db_exists
from webnotes.model.doc import make_autoname
-from webnotes.model.wrapper import getlist, copy_doclist
+from webnotes.model.wrapper import getlist
from webnotes.model.code import get_obj
from webnotes import msgprint
+from setup.utils import get_company_currency
sql = webnotes.conn.sql
@@ -137,7 +137,7 @@
def validate(self):
self.check_existing()
- dcc = TransactionBase().get_company_currency(self.doc.company)
+ dcc = get_company_currency(self.doc.company)
self.doc.total_in_words = get_obj('Sales Common').get_total_in_words(dcc, self.doc.rounded_total)
diff --git a/selling/doctype/quotation/quotation.py b/selling/doctype/quotation/quotation.py
index ed09ab0..111b0b4 100644
--- a/selling/doctype/quotation/quotation.py
+++ b/selling/doctype/quotation/quotation.py
@@ -17,12 +17,11 @@
from __future__ import unicode_literals
import webnotes
-from webnotes.utils import cstr, load_json
-from webnotes.model import db_exists
-from webnotes.model.doc import Document
-from webnotes.model.wrapper import getlist, copy_doclist
+from webnotes.utils import cstr, getdate
+from webnotes.model.wrapper import getlist
from webnotes.model.code import get_obj
from webnotes import msgprint
+from setup.utils import get_company_currency
sql = webnotes.conn.sql
@@ -194,7 +193,7 @@
sales_com_obj.check_conversion_rate(self)
# Get total in words
- dcc = TransactionBase().get_company_currency(self.doc.company)
+ dcc = get_company_currency(self.doc.company)
self.doc.in_words = sales_com_obj.get_total_in_words(dcc, self.doc.rounded_total)
self.doc.in_words_export = sales_com_obj.get_total_in_words(self.doc.currency, self.doc.rounded_total_export)
diff --git a/selling/doctype/sales_common/sales_common.py b/selling/doctype/sales_common/sales_common.py
index 03280e2..b0b04bf 100644
--- a/selling/doctype/sales_common/sales_common.py
+++ b/selling/doctype/sales_common/sales_common.py
@@ -23,6 +23,7 @@
from webnotes.model.wrapper import getlist, copy_doclist
from webnotes.model.code import get_obj
from webnotes import form, msgprint, _
+from setup.utils import get_company_currency
get_value = webnotes.conn.get_value
@@ -351,7 +352,7 @@
# Check Conversion Rate (i.e. it will not allow conversion rate to be 1 for Currency other than default currency set in Global Defaults)
# ===========================================================================
def check_conversion_rate(self, obj):
- default_currency = TransactionBase().get_company_currency(obj.doc.company)
+ default_currency = get_company_currency(obj.doc.company)
if not default_currency:
msgprint('Message: Please enter default currency in Company Master')
raise Exception
diff --git a/selling/doctype/sales_order/sales_order.py b/selling/doctype/sales_order/sales_order.py
index 3e7b03d..f035cdc 100644
--- a/selling/doctype/sales_order/sales_order.py
+++ b/selling/doctype/sales_order/sales_order.py
@@ -17,11 +17,11 @@
from __future__ import unicode_literals
import webnotes
-from webnotes.utils import cstr, date_diff, flt, getdate
-from webnotes.model import db_exists
-from webnotes.model.wrapper import getlist, copy_doclist
+from webnotes.utils import cstr, flt, getdate
+from webnotes.model.wrapper import getlist
from webnotes.model.code import get_obj
from webnotes import msgprint
+from setup.utils import get_company_currency
sql = webnotes.conn.sql
@@ -222,7 +222,7 @@
self.doclist = sales_com_obj.make_packing_list(self,'sales_order_details')
# get total in words
- dcc = TransactionBase().get_company_currency(self.doc.company)
+ dcc = get_company_currency(self.doc.company)
self.doc.in_words = sales_com_obj.get_total_in_words(dcc, self.doc.rounded_total)
self.doc.in_words_export = sales_com_obj.get_total_in_words(self.doc.currency, self.doc.rounded_total_export)
diff --git a/setup/doctype/authorization_control/authorization_control.py b/setup/doctype/authorization_control/authorization_control.py
index 9455f8a..8e02bdf 100644
--- a/setup/doctype/authorization_control/authorization_control.py
+++ b/setup/doctype/authorization_control/authorization_control.py
@@ -18,9 +18,9 @@
import webnotes
from webnotes.utils import cstr, flt, has_common, make_esc
-from webnotes.model import db_exists
-from webnotes.model.wrapper import getlist, copy_doclist
+from webnotes.model.wrapper import getlist
from webnotes import session, msgprint
+from setup.utils import get_company_currency
sql = webnotes.conn.sql
@@ -52,7 +52,7 @@
if not has_common(appr_roles, webnotes.user.get_roles()) and not has_common(appr_users, [session['user']]):
msg, add_msg = '',''
if max_amount:
- dcc = TransactionBase().get_company_currency(self.doc.company)
+ dcc = get_company_currency(self.doc.company)
if based_on == 'Grand Total': msg = "since Grand Total exceeds %s. %s" % (dcc, flt(max_amount))
elif based_on == 'Itemwise Discount': msg = "since Discount exceeds %s for Item Code : %s" % (cstr(max_amount)+'%', item)
elif based_on == 'Average Discount' or based_on == 'Customerwise Discount': msg = "since Discount exceeds %s" % (cstr(max_amount)+'%')
diff --git a/setup/utils.py b/setup/utils.py
new file mode 100644
index 0000000..baa4d0f
--- /dev/null
+++ b/setup/utils.py
@@ -0,0 +1,28 @@
+# ERPNext - web based ERP (http://erpnext.com)
+# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+from __future__ import unicode_literals
+import webnotes
+
+def get_company_currency(company):
+ currency = webnotes.conn.get_value("Company", company, "default_currency")
+ if not currency:
+ currency = webnotes.conn.get_default("currency")
+ if not currency:
+ msgprint(_('Please specify Default Currency in Company Master \
+ and Global Defaults'), raise_exception=True)
+
+ return currency
\ No newline at end of file
diff --git a/stock/doctype/delivery_note/delivery_note.py b/stock/doctype/delivery_note/delivery_note.py
index 411ce5c..53f66c3 100644
--- a/stock/doctype/delivery_note/delivery_note.py
+++ b/stock/doctype/delivery_note/delivery_note.py
@@ -18,10 +18,10 @@
import webnotes
from webnotes.utils import cstr, flt, getdate
-from webnotes.model import db_exists
-from webnotes.model.wrapper import getlist, copy_doclist
+from webnotes.model.wrapper import getlist
from webnotes.model.code import get_obj
from webnotes import msgprint
+from setup.utils import get_company_currency
sql = webnotes.conn.sql
@@ -149,7 +149,7 @@
sales_com_obj.check_conversion_rate(self)
# Get total in Words
- dcc = TransactionBase().get_company_currency(self.doc.company)
+ dcc = get_company_currency(self.doc.company)
self.doc.in_words = sales_com_obj.get_total_in_words(dcc, self.doc.rounded_total)
self.doc.in_words_export = sales_com_obj.get_total_in_words(self.doc.currency, self.doc.rounded_total_export)
diff --git a/stock/doctype/purchase_receipt/purchase_receipt.py b/stock/doctype/purchase_receipt/purchase_receipt.py
index 3d45d1e..0015048 100644
--- a/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -22,6 +22,7 @@
from webnotes.model.wrapper import getlist
from webnotes.model.code import get_obj
from webnotes import msgprint
+from setup.utils import get_company_currency
sql = webnotes.conn.sql
@@ -131,13 +132,12 @@
pc_obj = get_obj(dt='Purchase Common')
pc_obj.validate_for_items(self)
pc_obj.validate_mandatory(self)
- pc_obj.validate_conversion_rate(self)
pc_obj.get_prevdoc_date(self)
pc_obj.validate_reference_value(self)
self.check_for_stopped_status(pc_obj)
# get total in words
- dcc = super(DocType, self).get_company_currency(self.doc.company)
+ dcc = get_company_currency(self.doc.company)
self.doc.in_words = pc_obj.get_total_in_words(dcc, self.doc.grand_total)
self.doc.in_words_import = pc_obj.get_total_in_words(self.doc.currency, self.doc.grand_total_import)
# update valuation rate
diff --git a/utilities/transaction_base.py b/utilities/transaction_base.py
index 2ff42af..8502041 100644
--- a/utilities/transaction_base.py
+++ b/utilities/transaction_base.py
@@ -229,14 +229,6 @@
ch.incentives = d and flt(d[3]) or 0
ch.idx = idx
idx += 1
-
- # Get Company Specific Default Currency
- # -------------------------------------
- def get_company_currency(self, name):
- ret = webnotes.conn.sql("select default_currency from tabCompany where name = '%s'" %(name))
- dcc = ret and ret[0][0] or get_defaults()['currency']
- return dcc
-
def load_notification_message(self):
dt = self.doc.doctype.lower().replace(" ", "_")