From fe7a6b502a7bdac10056fdeb521654e665455694 Mon Sep 17 00:00:00 2001 From: ankitjavalkarwork Date: Mon, 6 Oct 2014 17:33:02 +0530 Subject: [PATCH] Add Customer Credit Balance Report, minor changes --- .../customer_credit_balance/__init__.py | 0 .../customer_credit_balance.js | 21 ++++++++ .../customer_credit_balance.json | 17 ++++++ .../customer_credit_balance.py | 54 +++++++++++++++++++ 4 files changed, 92 insertions(+) create mode 100644 erpnext/selling/report/customer_credit_balance/__init__.py create mode 100644 erpnext/selling/report/customer_credit_balance/customer_credit_balance.js create mode 100644 erpnext/selling/report/customer_credit_balance/customer_credit_balance.json create mode 100644 erpnext/selling/report/customer_credit_balance/customer_credit_balance.py diff --git a/erpnext/selling/report/customer_credit_balance/__init__.py b/erpnext/selling/report/customer_credit_balance/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/selling/report/customer_credit_balance/customer_credit_balance.js b/erpnext/selling/report/customer_credit_balance/customer_credit_balance.js new file mode 100644 index 0000000000..90254ad0dc --- /dev/null +++ b/erpnext/selling/report/customer_credit_balance/customer_credit_balance.js @@ -0,0 +1,21 @@ +// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors and contributors +// For license information, please see license.txt + +frappe.query_reports["Customer Credit Balance"] = { + "filters": [ + { + "fieldname":"company", + "label": __("Company"), + "fieldtype": "Link", + "options": "Company", + "reqd": 1, + "default": frappe.defaults.get_user_default("company") + }, + { + "fieldname":"customer", + "label": __("Customer"), + "fieldtype": "Link", + "options": "Customer" + } + ] +} diff --git a/erpnext/selling/report/customer_credit_balance/customer_credit_balance.json b/erpnext/selling/report/customer_credit_balance/customer_credit_balance.json new file mode 100644 index 0000000000..94ea416e0f --- /dev/null +++ b/erpnext/selling/report/customer_credit_balance/customer_credit_balance.json @@ -0,0 +1,17 @@ +{ + "add_total_row": 0, + "apply_user_permissions": 1, + "creation": "2014-10-06 15:19:31.578162", + "disabled": 0, + "docstatus": 0, + "doctype": "Report", + "is_standard": "Yes", + "modified": "2014-10-06 15:19:37.578616", + "modified_by": "Administrator", + "module": "Selling", + "name": "Customer Credit Balance", + "owner": "Administrator", + "ref_doctype": "Customer", + "report_name": "Customer Credit Balance", + "report_type": "Script Report" +} \ No newline at end of file diff --git a/erpnext/selling/report/customer_credit_balance/customer_credit_balance.py b/erpnext/selling/report/customer_credit_balance/customer_credit_balance.py new file mode 100644 index 0000000000..9bc14acd0d --- /dev/null +++ b/erpnext/selling/report/customer_credit_balance/customer_credit_balance.py @@ -0,0 +1,54 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe +from frappe import _ +from frappe.utils import flt +from erpnext.selling.doctype.customer.customer import get_customer_outstanding, get_credit_limit + +def execute(filters=None): + if not filters: filters = {} + #Check if customer id is according to naming series or customer name + customer_naming_type = frappe.db.get_value("Selling Settings", None, "cust_master_name") + columns = get_columns(customer_naming_type) + + data = [] + + customer_list = get_details(filters) + + for d in customer_list: + row = [] + outstanding_amt = get_customer_outstanding(d.name, filters.get("company")) + credit_limit = get_credit_limit(d.name, filters.get("company")) + bal = flt(credit_limit) - flt(outstanding_amt) + + if customer_naming_type == "Naming Series": + row = [d.name, d.customer_name, credit_limit, outstanding_amt, bal] + else: + row = [d.name, credit_limit, outstanding_amt, bal] + + if credit_limit: + data.append(row) + + return columns, data + +def get_columns(customer_naming_type): + columns = [ + _("Customer") + ":Link/Customer:120", _("Credit Limit") + ":Currency:120", + _("Outstanding Amt") + ":Currency:100", _("Credit Balance") + ":Currency:120" + ] + + if customer_naming_type == "Naming Series": + columns.insert(1, _("Customer Name") + ":Data:120") + + return columns + +def get_details(filters): + conditions = "" + + if filters.get("customer"): + conditions += " where name = %(customer)s" + + return frappe.db.sql("""select name, customer_name from `tabCustomer` %s""" + % conditions, filters, as_dict=1)