From 7cd49529f49aadb565eaf04446ea1979d401f5cd Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 24 May 2013 13:51:25 +0530 Subject: [PATCH 1/3] [sales invoice][fix] float precision issue --- accounts/doctype/sales_invoice/sales_invoice.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py index 050a49055d..6871b1e90f 100644 --- a/accounts/doctype/sales_invoice/sales_invoice.py +++ b/accounts/doctype/sales_invoice/sales_invoice.py @@ -566,7 +566,7 @@ class DocType(SellingController): def check_value(self, ref_dt, ref_dn, ref_item_dn, val, item_code): ref_val = webnotes.conn.get_value(ref_dt + " Item", ref_item_dn, "export_rate") - if flt(ref_val) != flt(val): + if flt(ref_val, 2) != flt(val, 2): msgprint(_("Rate is not matching with ") + ref_dt + ": " + ref_dn + _(" for item: ") + item_code, raise_exception=True) From da6e4670a3d380d13716d99d94745000bd1179df Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 27 May 2013 16:34:15 +0530 Subject: [PATCH 2/3] [report][fix] filter fixes in sales/pur register --- .../purchase_register/purchase_register.py | 29 +++++++++------ .../report/sales_register/sales_register.py | 35 +++++++++++-------- 2 files changed, 39 insertions(+), 25 deletions(-) diff --git a/accounts/report/purchase_register/purchase_register.py b/accounts/report/purchase_register/purchase_register.py index d4f23927d5..7c4b38671d 100644 --- a/accounts/report/purchase_register/purchase_register.py +++ b/accounts/report/purchase_register/purchase_register.py @@ -17,6 +17,7 @@ from __future__ import unicode_literals import webnotes from webnotes.utils import flt +from webnotes import msgprint, _ def execute(filters=None): if not filters: filters = {} @@ -24,6 +25,11 @@ def execute(filters=None): invoice_list = get_invoices(filters) columns, expense_accounts, tax_accounts = get_columns(invoice_list) + + if not invoice_list: + msgprint(_("No record found")) + return columns, invoice_list + invoice_expense_map = get_invoice_expense_map(invoice_list) invoice_tax_map = get_invoice_tax_map(invoice_list) invoice_po_pr_map = get_invoice_po_pr_map(invoice_list) @@ -64,17 +70,18 @@ def get_columns(invoice_list): "Project:Link/Project:80", "Bill No::120", "Bill Date:Date:80", "Remarks::150", "Purchase Order:Link/Purchase Order:100", "Purchase Receipt:Link/Purchase Receipt:100" ] - - expense_accounts = webnotes.conn.sql_list("""select distinct expense_head - from `tabPurchase Invoice Item` where docstatus = 1 and ifnull(expense_head, '') != '' - and parent in (%s) order by expense_head""" % - ', '.join(['%s']*len(invoice_list)), tuple([inv.name for inv in invoice_list])) + expense_accounts = tax_accounts = [] + if invoice_list: + expense_accounts = webnotes.conn.sql_list("""select distinct expense_head + from `tabPurchase Invoice Item` where docstatus = 1 and ifnull(expense_head, '') != '' + and parent in (%s) order by expense_head""" % + ', '.join(['%s']*len(invoice_list)), tuple([inv.name for inv in invoice_list])) - tax_accounts = webnotes.conn.sql_list("""select distinct account_head - from `tabPurchase Taxes and Charges` where parenttype = 'Purchase Invoice' - and docstatus = 1 and ifnull(account_head, '') != '' and parent in (%s) - order by account_head""" % - ', '.join(['%s']*len(invoice_list)), tuple([inv.name for inv in invoice_list])) + tax_accounts = webnotes.conn.sql_list("""select distinct account_head + from `tabPurchase Taxes and Charges` where parenttype = 'Purchase Invoice' + and docstatus = 1 and ifnull(account_head, '') != '' and parent in (%s) + order by account_head""" % + ', '.join(['%s']*len(invoice_list)), tuple([inv.name for inv in invoice_list])) columns = columns + [(account + ":Currency:120") for account in expense_accounts] + \ ["Net Total:Currency:120"] + [(account + ":Currency:120") for account in tax_accounts] + \ @@ -86,7 +93,7 @@ def get_conditions(filters): conditions = "" if filters.get("company"): conditions += " and company=%(company)s" - if filters.get("account"): conditions += " and account = %(account)s" + if filters.get("account"): conditions += " and credit_to = %(account)s" if filters.get("from_date"): conditions += " and posting_date>=%(from_date)s" if filters.get("to_date"): conditions += " and posting_date<=%(to_date)s" diff --git a/accounts/report/sales_register/sales_register.py b/accounts/report/sales_register/sales_register.py index 3946f0033d..99057f9a2e 100644 --- a/accounts/report/sales_register/sales_register.py +++ b/accounts/report/sales_register/sales_register.py @@ -17,6 +17,7 @@ from __future__ import unicode_literals import webnotes from webnotes.utils import flt +from webnotes import msgprint, _ def execute(filters=None): if not filters: filters = {} @@ -24,6 +25,10 @@ def execute(filters=None): invoice_list = get_invoices(filters) columns, income_accounts, tax_accounts = get_columns(invoice_list) + if not invoice_list: + msgprint(_("No record found")) + return columns, invoice_list + invoice_income_map = get_invoice_income_map(invoice_list) invoice_tax_map = get_invoice_tax_map(invoice_list) @@ -69,15 +74,17 @@ def get_columns(invoice_list): "Remarks::150", "Sales Order:Link/Sales Order:100", "Delivery Note:Link/Delivery Note:100" ] - income_accounts = webnotes.conn.sql_list("""select distinct income_account - from `tabSales Invoice Item` where docstatus = 1 and parent in (%s) - order by income_account""" % - ', '.join(['%s']*len(invoice_list)), tuple([inv.name for inv in invoice_list])) + income_accounts = tax_accounts = [] + if invoice_list: + income_accounts = webnotes.conn.sql_list("""select distinct income_account + from `tabSales Invoice Item` where docstatus = 1 and parent in (%s) + order by income_account""" % + ', '.join(['%s']*len(invoice_list)), tuple([inv.name for inv in invoice_list])) - tax_accounts = webnotes.conn.sql_list("""select distinct account_head - from `tabSales Taxes and Charges` where parenttype = 'Sales Invoice' - and docstatus = 1 and parent in (%s) order by account_head""" % - ', '.join(['%s']*len(invoice_list)), tuple([inv.name for inv in invoice_list])) + tax_accounts = webnotes.conn.sql_list("""select distinct account_head + from `tabSales Taxes and Charges` where parenttype = 'Sales Invoice' + and docstatus = 1 and parent in (%s) order by account_head""" % + ', '.join(['%s']*len(invoice_list)), tuple([inv.name for inv in invoice_list])) columns = columns + [(account + ":Currency:120") for account in income_accounts] + \ ["Net Total:Currency:120"] + [(account + ":Currency:120") for account in tax_accounts] + \ @@ -89,19 +96,19 @@ def get_conditions(filters): conditions = "" if filters.get("company"): conditions += " and company=%(company)s" - if filters.get("account"): conditions += " and account = %(account)s" + if filters.get("account"): conditions += " and debit_to = %(account)s" - if filters.get("from_date"): conditions += " and posting_date>=%(from_date)s" - if filters.get("to_date"): conditions += " and posting_date<=%(to_date)s" + if filters.get("from_date"): conditions += " and posting_date >= %(from_date)s" + if filters.get("to_date"): conditions += " and posting_date <= %(to_date)s" return conditions def get_invoices(filters): conditions = get_conditions(filters) return webnotes.conn.sql("""select name, posting_date, debit_to, project_name, customer, - remarks, net_total, other_charges_total, grand_total - from `tabSales Invoice` where docstatus = 1 %s - order by posting_date desc, name desc""" % conditions, filters, as_dict=1) + remarks, net_total, other_charges_total, grand_total from `tabSales Invoice` + where docstatus = 1 %s order by posting_date desc, name desc""" % + conditions, filters, as_dict=1) def get_invoice_income_map(invoice_list): income_details = webnotes.conn.sql("""select parent, income_account, sum(amount) as amount From 996191e8b7aee0c4615e3a9e62874f8b26de55c1 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Mon, 27 May 2013 18:28:36 +0530 Subject: [PATCH 3/3] [purchase invoice] [fix] error message for missing expense account for an item --- accounts/doctype/purchase_invoice/purchase_invoice.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py index c53b6d94fc..95b56dc4ff 100644 --- a/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -326,7 +326,7 @@ class DocType(BuyingController): against_accounts.append(stock_not_billed_account) elif not item.expense_head: - msgprint(_("""Expense account is mandatory for item: """) + item.item_code, + msgprint(_("""Expense account is mandatory for item: """) + (item.item_code or item.item_name), raise_exception=1) elif item.expense_head not in against_accounts: