diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py index 82261ed5ea..f144ce951b 100644 --- a/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -366,15 +366,6 @@ class DocType(BuyingController): self.doc.posting_date,'Posting Date') self.validate_write_off_account() - - #get Purchase Common Obj - pc_obj = get_obj(dt='Purchase Common') - - # get total in words - 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) def check_prev_docstatus(self): for d in getlist(self.doclist,'entries'): diff --git a/buying/doctype/purchase_common/purchase_common.py b/buying/doctype/purchase_common/purchase_common.py index 79e4fe0de6..42b558c491 100644 --- a/buying/doctype/purchase_common/purchase_common.py +++ b/buying/doctype/purchase_common/purchase_common.py @@ -456,14 +456,6 @@ class DocType(BuyingController): } #msgprint(ret) return ret - - - - # Get total in words - # ================================================================== - def get_total_in_words(self, currency, amount): - from webnotes.utils import money_in_words - return money_in_words(amount, currency) # get against document date #----------------------------- diff --git a/buying/doctype/purchase_order/purchase_order.py b/buying/doctype/purchase_order/purchase_order.py index f08a319b45..6cef02a20b 100644 --- a/buying/doctype/purchase_order/purchase_order.py +++ b/buying/doctype/purchase_order/purchase_order.py @@ -67,10 +67,6 @@ class DocType(BuyingController): # Check for stopped status self.check_for_stopped_status(pc_obj) - # get total in words - 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) def get_default_schedule_date(self): get_obj(dt = 'Purchase Common').get_default_schedule_date(self) diff --git a/buying/doctype/supplier_quotation/supplier_quotation.py b/buying/doctype/supplier_quotation/supplier_quotation.py index 4f28ecf59c..c8f528276e 100644 --- a/buying/doctype/supplier_quotation/supplier_quotation.py +++ b/buying/doctype/supplier_quotation/supplier_quotation.py @@ -37,7 +37,6 @@ class DocType(BuyingController): self.validate_fiscal_year() self.validate_common() - self.set_in_words() def on_submit(self): purchase_controller = webnotes.get_obj("Purchase Common") @@ -79,10 +78,4 @@ class DocType(BuyingController): pc.validate_mandatory(self) pc.validate_for_items(self) pc.get_prevdoc_date(self) - pc.validate_reference_value(self) - - def set_in_words(self): - pc = get_obj('Purchase Common') - 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) + pc.validate_reference_value(self) \ No newline at end of file diff --git a/controllers/buying_controller.py b/controllers/buying_controller.py index d7a2964c49..1127d82bbb 100644 --- a/controllers/buying_controller.py +++ b/controllers/buying_controller.py @@ -20,7 +20,7 @@ from webnotes import _, msgprint from webnotes.utils import flt from buying.utils import get_item_details -from setup.utils import get_company_currency +from setup.utils import get_company_currency, get_total_in_words from utilities.transaction_base import TransactionBase class BuyingController(TransactionBase): @@ -31,6 +31,10 @@ class BuyingController(TransactionBase): if self.doc.price_list_name and self.doc.price_list_currency: self.validate_conversion_rate("price_list_currency", "plc_conversion_rate") + + # set total in words + if self.meta.get_field("in_words") and self.meta.get_field("in_words_import"): + self.set_total_in_words() def update_item_details(self): for item in self.doclist.get({"parentfield": self.fname}): @@ -68,3 +72,9 @@ class BuyingController(TransactionBase): msgprint(_('Please enter valid ') + conversion_rate_label + (': ') + ("1 %s = [?] %s" % (currency, self.company_currency)), raise_exception=True) + + def set_total_in_words(self): + company_currency = get_company_currency(self.doc.company) + self.doc.in_words = get_total_in_words(self.doc.grand_total, company_currency) + self.doc.in_words_import = get_total_in_words(self.doc.grand_total_import, + self.doc.currency) \ No newline at end of file diff --git a/setup/utils.py b/setup/utils.py index 396dc16a7d..7005235c3c 100644 --- a/setup/utils.py +++ b/setup/utils.py @@ -47,3 +47,9 @@ def get_price_list_currency(args): return {"price_list_currency": result[0][0]} else: return {} + +@webnotes.whitelist() +def get_total_in_words(amount, currency): + from webnotes.utils import money_in_words + fraction = webnotes.conn.get_value("Currency", currency, "fraction") + return money_in_words(amount, currency, fraction) \ No newline at end of file diff --git a/stock/doctype/purchase_receipt/purchase_receipt.py b/stock/doctype/purchase_receipt/purchase_receipt.py index 5c4aebdecb..46484e042e 100644 --- a/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/stock/doctype/purchase_receipt/purchase_receipt.py @@ -17,12 +17,11 @@ from __future__ import unicode_literals import webnotes -from webnotes.utils import cstr, flt, get_defaults, getdate +from webnotes.utils import cstr, flt, get_defaults from webnotes.model.doc import addchild 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 @@ -136,10 +135,6 @@ class DocType(BuyingController): pc_obj.validate_reference_value(self) self.check_for_stopped_status(pc_obj) - # get total in words - 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 self.update_valuation_rate()