From 9fce94ff96d575a32abdf8d3759a16778bbe4b81 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 28 May 2013 17:12:15 +0530 Subject: [PATCH 1/6] [report] reports link added into accounts home page --- accounts/page/accounts_home/accounts_home.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/accounts/page/accounts_home/accounts_home.js b/accounts/page/accounts_home/accounts_home.js index c3d4cf18ce..25ee92c397 100644 --- a/accounts/page/accounts_home/accounts_home.js +++ b/accounts/page/accounts_home/accounts_home.js @@ -197,11 +197,21 @@ wn.module_page["Accounts"] = [ route: "query-report/Delivered Items To Be Billed", doctype: "Sales Invoice" }, + { + "label":wn._("Received Items To Be Billed"), + route: "query-report/Received Items To Be Billed", + doctype: "Purchase Invoice" + }, { "label":wn._("Ordered Items To Be Billed"), route: "query-report/Ordered Items To Be Billed", doctype: "Sales Invoice" }, + { + "label":wn._("Purchase Order Items To Be Billed"), + route: "query-report/Purchase Order Items To Be Billed", + doctype: "Purchase Invoice" + }, { "label":wn._("Bank Clearance Summary"), route: "query-report/Bank Clearance Summary", From 7742e2baed55ace102048cdd7e5642bbe8470a4d Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 28 May 2013 17:58:36 +0530 Subject: [PATCH 2/6] [report][fix] --- .../received_items_to_be_billed.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/accounts/report/received_items_to_be_billed/received_items_to_be_billed.txt b/accounts/report/received_items_to_be_billed/received_items_to_be_billed.txt index 53a1d7a7f5..554e0f0c79 100644 --- a/accounts/report/received_items_to_be_billed/received_items_to_be_billed.txt +++ b/accounts/report/received_items_to_be_billed/received_items_to_be_billed.txt @@ -2,7 +2,7 @@ { "creation": "2013-05-28 15:57:59", "docstatus": 0, - "modified": "2013-05-28 16:02:06", + "modified": "2013-05-28 17:34:05", "modified_by": "Administrator", "owner": "Administrator" }, @@ -11,7 +11,7 @@ "doctype": "Report", "is_standard": "Yes", "name": "__common__", - "query": "select \n `tabPurchase Receipt`.`name` as \"Purchase Receipt:Link/Purchase Receipt:120\",\n `tabPurchase Receipt`.`posting_date` as \"Date:Date:100\",\n `tabPurchase Receipt`.`supplier` as \"Supplier:Link/Supplier:120\",\n `tabPurchase Receipt Item`.`project_name` as \"Project\",\n\t`tabPurchase Receipt Item`.item_code as \"Item Code:Link/Item:120\",\n\t`tabPurchase Receipt Item`.qty as \"Qty:Float:100\",\n\t`tabPurchase Receipt Item`.billed_qty as \"Billed Qty:Float:100\", \n\t(`tabPurchase Receipt Item`.qty - ifnull(`tabPurchase Receipt Item`.billed_qty, 0)) as \"Qty to Bill:Float:100\",\n\t`tabPurchase Receipt Item`.item_name as \"Item Name::150\",\n\t`tabPurchase Receipt Item`.description as \"Description::200\"\nfrom\n\t`tabPurchase Receipt`, `tabPurchase Receipt Item`\nwhere\n\t`tabPurchase Receipt Item`.`parent` = `tabPurchase Receipt`.`name`\n\tand `tabPurchase Receipt`.docstatus = 1\n\tand `tabPurchase Receipt`.status != \"Stopped\"\n\tand ifnull(`tabPurchase Receipt Item`.billed_qty, 0) < ifnull(`tabPurchase Receipt Item`.qty, 0)\norder by `tabPurchase Receipt`.transaction_date asc", + "query": "select \n `tabPurchase Receipt`.`name` as \"Purchase Receipt:Link/Purchase Receipt:120\",\n `tabPurchase Receipt`.`posting_date` as \"Date:Date:100\",\n `tabPurchase Receipt`.`supplier` as \"Supplier:Link/Supplier:120\",\n `tabPurchase Receipt Item`.`project_name` as \"Project\",\n\t`tabPurchase Receipt Item`.item_code as \"Item Code:Link/Item:120\",\n\t`tabPurchase Receipt Item`.qty as \"Qty:Float:100\",\n\t`tabPurchase Receipt Item`.billed_qty as \"Billed Qty:Float:100\", \n\t(`tabPurchase Receipt Item`.qty - ifnull(`tabPurchase Receipt Item`.billed_qty, 0)) as \"Qty to Bill:Float:100\",\n\t`tabPurchase Receipt Item`.item_name as \"Item Name::150\",\n\t`tabPurchase Receipt Item`.description as \"Description::200\"\nfrom\n\t`tabPurchase Receipt`, `tabPurchase Receipt Item`\nwhere\n\t`tabPurchase Receipt Item`.`parent` = `tabPurchase Receipt`.`name`\n\tand `tabPurchase Receipt`.docstatus = 1\n\tand `tabPurchase Receipt`.status != \"Stopped\"\n\tand ifnull(`tabPurchase Receipt Item`.billed_qty, 0) < ifnull(`tabPurchase Receipt Item`.qty, 0)\norder by `tabPurchase Receipt`.posting_date asc", "ref_doctype": "Purchase Invoice", "report_name": "Received Items To Be Billed", "report_type": "Query Report" From 58c3348ca6b8281d5feca79029b9a73f9fc89196 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 28 May 2013 18:06:20 +0530 Subject: [PATCH 3/6] [voucher import tool][fix] fixes for handling exception --- .../voucher_import_tool.py | 53 ++++++++++++------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/accounts/page/voucher_import_tool/voucher_import_tool.py b/accounts/page/voucher_import_tool/voucher_import_tool.py index 6648ee6f8e..3c920ce04e 100644 --- a/accounts/page/voucher_import_tool/voucher_import_tool.py +++ b/accounts/page/voucher_import_tool/voucher_import_tool.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals import webnotes from webnotes import _ -from webnotes.utils import flt, comma_and +from webnotes.utils import flt, comma_and, cstr import webnotes.defaults @webnotes.whitelist() @@ -31,13 +31,12 @@ def get_template(): "3. Naming Series Options: %(naming_options)s" "4. Voucher Type Options: %(voucher_type)s"%(extra_note)s "-------Common Values-----------" -"Company:","%(default_company)s" +"Company:", "--------Data----------" %(columns)s ''' % { "template_type": template_type, "user_fmt": webnotes.defaults.get_global_default('date_format'), - "default_company": webnotes.conn.get_default("company"), "naming_options": naming_options.replace("\n", ", "), "voucher_type": voucher_type.replace("\n", ", "), "extra_note": extra_note, @@ -49,14 +48,28 @@ def get_template(): @webnotes.whitelist() def upload(): - from webnotes.utils.datautils import read_csv_content_from_uploaded_file - rows = read_csv_content_from_uploaded_file() - - common_values = get_common_values(rows) - company_abbr = webnotes.conn.get_value("Company", common_values.company, "abbr") - data, start_idx = get_data(rows, company_abbr) + messages = [] + try: + from webnotes.utils.datautils import read_csv_content_from_uploaded_file + rows = read_csv_content_from_uploaded_file() + common_values = get_common_values(rows) + if not common_values.company: + webnotes.msgprint(_("Company is missing in csv file"), raise_exception=1) + + company_abbr = webnotes.conn.get_value("Company", common_values.company, "abbr") + data, start_idx = get_data(rows, company_abbr) + except Exception, e: + err_msg = webnotes.message_log and "
".join(webnotes.message_log) or cstr(e) + messages.append("""

%s

""" % (err_msg or "No message")) + webnotes.errprint(webnotes.getTraceback()) + webnotes.message_log = [] + return messages + return import_vouchers(common_values, data, start_idx, rows[0][0]) + + + def map_fields(field_list, source, target): for f in field_list: @@ -70,9 +83,8 @@ def import_vouchers(common_values, data, start_idx, import_type): from webnotes.model.bean import Bean from accounts.utils import get_fiscal_year from webnotes.utils.dateutils import parse_date - messages = [] - + def get_account_details(account): acc_details = webnotes.conn.sql("""select is_pl_account, master_name from tabAccount where name=%s""", account, as_dict=1) @@ -113,8 +125,9 @@ def import_vouchers(common_values, data, start_idx, import_type): if d.ref_number: if not d.ref_date: - raise webnotes.ValidationError, \ - """Ref Date is Mandatory if Ref Number is specified""" + webnotes.msgprint(_("Ref Date is Mandatory if Ref Number is specified"), + raise_exception=1) + d.ref_date = parse_date(d.ref_date) d.company = common_values.company @@ -176,7 +189,7 @@ def import_vouchers(common_values, data, start_idx, import_type): webnotes.conn.commit() except Exception, e: webnotes.conn.rollback() - err_msg = webnotes.message_log and "
".join(webnotes.message_log) or unicode(e) + err_msg = webnotes.message_log and "
".join(webnotes.message_log) or cstr(e) messages.append("""

[row #%s] %s failed: %s

""" % ((start_idx + 1) + i, jv.name or "", err_msg or "No message")) messages.append("

All transactions rolled back

") @@ -240,16 +253,20 @@ def get_data(rows, company_abbr): raise Exception, """Column No(s). %s %s empty. \ Please remove them and try again.""" % (comma_and(empty_columns), len(empty_columns)==1 and "is" or "are") - + columns = [c.replace(" ", "_").lower() for c in rows[i+1] if not c.endswith(" - " + company_abbr)] accounts = [c for c in rows[i+1] if c.endswith(" - " + company_abbr)] - + + if not accounts: + webnotes.msgprint(_("""No Account found in csv file, + May be company abbreviation is not correct"""), raise_exception=1) + if accounts and (len(columns) != rows[i+1].index(accounts[0])): - raise Exception, _("""All account columns should be after \ + webnotes.msgprint(_("""All account columns should be after \ standard columns and on the right. If you entered it properly, next probable reason \ could be wrong account name. - Please rectify it in the file and try again.""") + Please rectify it in the file and try again."""), raise_exception=1) return data, start_row_idx \ No newline at end of file From 0dbd62f163e236f5661b9985770c8327af6bab58 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 28 May 2013 18:16:44 +0530 Subject: [PATCH 4/6] [voucher import tool][fix] fixes for handling exception --- accounts/page/voucher_import_tool/voucher_import_tool.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/accounts/page/voucher_import_tool/voucher_import_tool.py b/accounts/page/voucher_import_tool/voucher_import_tool.py index 3c920ce04e..7634e5bf84 100644 --- a/accounts/page/voucher_import_tool/voucher_import_tool.py +++ b/accounts/page/voucher_import_tool/voucher_import_tool.py @@ -54,10 +54,11 @@ def upload(): rows = read_csv_content_from_uploaded_file() common_values = get_common_values(rows) - if not common_values.company: - webnotes.msgprint(_("Company is missing in csv file"), raise_exception=1) - company_abbr = webnotes.conn.get_value("Company", common_values.company, "abbr") + + if not company_abbr: + webnotes.msgprint(_("Company is missing or entered incorrect value"), raise_exception=1) + data, start_idx = get_data(rows, company_abbr) except Exception, e: err_msg = webnotes.message_log and "
".join(webnotes.message_log) or cstr(e) From df3353228080a510811c541e43f62112995dd7ba Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 29 May 2013 11:03:11 +0530 Subject: [PATCH 5/6] [fixes] pulling available qty on selection of item in case of pos --- selling/doctype/sales_common/sales_common.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/selling/doctype/sales_common/sales_common.py b/selling/doctype/sales_common/sales_common.py index 78f842291d..549128f1ea 100644 --- a/selling/doctype/sales_common/sales_common.py +++ b/selling/doctype/sales_common/sales_common.py @@ -132,6 +132,7 @@ class DocType(TransactionBase): where name = %s and (ifnull(end_of_life,'')='' or end_of_life > now() or end_of_life = '0000-00-00') and (is_sales_item = 'Yes' or is_service_item = 'Yes')""", args['item_code'], as_dict=1) + tax = webnotes.conn.sql("""select tax_type, tax_rate from `tabItem Tax` where parent = %s""", args['item_code']) t = {} @@ -167,8 +168,9 @@ class DocType(TransactionBase): ret['export_rate'] = flt(base_ref_rate)/flt(obj.doc.conversion_rate) ret['base_ref_rate'] = flt(base_ref_rate) ret['basic_rate'] = flt(base_ref_rate) - + if ret['warehouse'] or ret['reserved_warehouse']: + av_qty = self.get_available_qty({'item_code': args['item_code'], 'warehouse': ret['warehouse'] or ret['reserved_warehouse']}) ret.update(av_qty) @@ -179,7 +181,7 @@ class DocType(TransactionBase): (args['item_code'], obj.doc.customer)) if customer_item_code_row and customer_item_code_row[0][0]: ret['customer_item_code'] = customer_item_code_row[0][0] - + return ret From f6911fb51c4f8efcd6baa3403f0fc58835511400 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 29 May 2013 11:06:17 +0530 Subject: [PATCH 6/6] Update sales_invoice.py [fixes] pulling available qty on selection of item in case of pos --- 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 6871b1e90f..ab44247d5c 100644 --- a/accounts/doctype/sales_invoice/sales_invoice.py +++ b/accounts/doctype/sales_invoice/sales_invoice.py @@ -351,7 +351,7 @@ class DocType(SellingController): if ret.get("warehouse"): ret["actual_qty"] = flt(webnotes.conn.get_value("Bin", - {"item_code": args.get("item_code"), "warehouse": args.get("warehouse")}, + {"item_code": args.get("item_code"), "warehouse": ret.get("warehouse")}, "actual_qty")) return ret