[script report] payments made with ageing
This commit is contained in:
		
							parent
							
								
									d7889cd5d5
								
							
						
					
					
						commit
						4d7a1c1f35
					
				| @ -212,6 +212,11 @@ wn.module_page["Accounts"] = [ | ||||
| 				route: "query-report/Payment Collection With Ageing", | ||||
| 				doctype: "Journal Voucher" | ||||
| 			}, | ||||
| 			{ | ||||
| 				"label":wn._("Payment Made With Ageing"), | ||||
| 				route: "query-report/Payment Made With Ageing", | ||||
| 				doctype: "Journal Voucher" | ||||
| 			}, | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| from __future__ import unicode_literals | ||||
| import webnotes | ||||
| from webnotes.utils import getdate, nowdate, flt, cstr | ||||
| from webnotes import msgprint, _ | ||||
| from accounts.report.accounts_receivable.accounts_receivable import get_ageing_data | ||||
| 
 | ||||
| def execute(filters=None): | ||||
| @ -79,13 +80,16 @@ def get_conditions(filters, before_report_date=True): | ||||
| 	supplier_accounts = [] | ||||
| 	if filters.get("account"): | ||||
| 		supplier_accounts = [filters["account"]] | ||||
| 	elif filters.get("company"): | ||||
| 	else: | ||||
| 		supplier_accounts = webnotes.conn.sql_list("""select name from `tabAccount`  | ||||
| 			where ifnull(master_type, '') = 'Supplier' and docstatus < 2 %s""" %  | ||||
| 			conditions, filters) | ||||
| 	 | ||||
| 	if supplier_accounts: | ||||
| 		conditions += " and account in (%s)" % (", ".join(['%s']*len(supplier_accounts))) | ||||
| 	else: | ||||
| 		msgprint(_("No Supplier Accounts found. Supplier Accounts are identified based on \ | ||||
| 			'Master Type' value in account record."), raise_exception=1) | ||||
| 		 | ||||
| 	if filters.get("report_date"): | ||||
| 		if before_report_date: | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| from __future__ import unicode_literals | ||||
| import webnotes | ||||
| from webnotes import msgprint, _ | ||||
| from webnotes.utils import getdate, nowdate, flt, cstr | ||||
| 
 | ||||
| def execute(filters=None): | ||||
| @ -68,13 +69,16 @@ def get_conditions(filters, upto_report_date=True): | ||||
| 	customer_accounts = [] | ||||
| 	if filters.get("account"): | ||||
| 		customer_accounts = [filters["account"]] | ||||
| 	elif filters.get("company"): | ||||
| 	else: | ||||
| 		customer_accounts = webnotes.conn.sql_list("""select name from `tabAccount`  | ||||
| 			where ifnull(master_type, '') = 'Customer' and docstatus < 2 %s""" %  | ||||
| 			conditions, filters) | ||||
| 	 | ||||
| 	if customer_accounts: | ||||
| 		conditions += " and account in (%s)" % (", ".join(['%s']*len(customer_accounts))) | ||||
| 	else: | ||||
| 		msgprint(_("No Customer Accounts found. Customer Accounts are identified based on \ | ||||
| 			'Master Type' value in account record."), raise_exception=1) | ||||
| 		 | ||||
| 	if filters.get("report_date"): | ||||
| 		if upto_report_date: | ||||
|  | ||||
| @ -16,6 +16,7 @@ | ||||
| 
 | ||||
| from __future__ import unicode_literals | ||||
| import webnotes | ||||
| from webnotes import msgprint, _ | ||||
| from accounts.report.accounts_receivable.accounts_receivable import get_ageing_data | ||||
| 
 | ||||
| def execute(filters=None): | ||||
| @ -55,13 +56,16 @@ def get_conditions(filters): | ||||
| 	customer_accounts = [] | ||||
| 	if filters.get("account"): | ||||
| 		customer_accounts = [filters["account"]] | ||||
| 	elif filters.get("company"): | ||||
| 	else: | ||||
| 		cond = filters.get("company") and (" and company = '%s'" % filters["company"]) or "" | ||||
| 		customer_accounts = webnotes.conn.sql_list("""select name from `tabAccount`  | ||||
| 			where ifnull(master_type, '') = 'Customer' and docstatus < 2  | ||||
| 			and company = %s""", filters["company"]) | ||||
| 			where ifnull(master_type, '') = 'Customer' and docstatus < 2 %s""" % cond) | ||||
| 	 | ||||
| 	if customer_accounts: | ||||
| 		conditions += " and jvd.account in (%s)" % (", ".join(['%s']*len(customer_accounts))) | ||||
| 	else: | ||||
| 		msgprint(_("No Customer Accounts found. Customer Accounts are identified based on \ | ||||
| 			'Master Type' value in account record."), raise_exception=1) | ||||
| 		 | ||||
| 	if filters.get("from_date"): conditions += " and jv.posting_date >= '%s'" % filters["from_date"] | ||||
| 	if filters.get("to_date"): conditions += " and jv.posting_date <= '%s'" % filters["to_date"] | ||||
|  | ||||
| @ -0,0 +1,40 @@ | ||||
| wn.query_reports["Payment Made With Ageing"] = { | ||||
| 	"filters": [ | ||||
| 		{ | ||||
| 			fieldname: "from_date", | ||||
| 			label: "From Date", | ||||
| 			fieldtype: "Date", | ||||
| 			default: wn.defaults.get_user_default("year_start_date"), | ||||
| 		}, | ||||
| 		{ | ||||
| 			fieldname:"to_date", | ||||
| 			label: "To Date", | ||||
| 			fieldtype: "Date", | ||||
| 			default: get_today() | ||||
| 		}, | ||||
| 		{ | ||||
| 			fieldname:"account", | ||||
| 			label: "Supplier Account", | ||||
| 			fieldtype: "Link", | ||||
| 			options: "Account", | ||||
| 			get_query: function() { | ||||
| 				return { | ||||
| 					query: "accounts.utils.get_account_list",  | ||||
| 					filters: { | ||||
| 						is_pl_account: "No", | ||||
| 						debit_or_credit: "Credit", | ||||
| 						company: wn.query_report.filters_by_name.company.get_value(), | ||||
| 						master_type: "Supplier" | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 		}, | ||||
| 		{ | ||||
| 			fieldname:"company", | ||||
| 			label: "Company", | ||||
| 			fieldtype: "Link", | ||||
| 			options: "Company", | ||||
| 			default: sys_defaults.company | ||||
| 		}, | ||||
| 	] | ||||
| } | ||||
| @ -0,0 +1,89 @@ | ||||
| # 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 | ||||
| from webnotes import msgprint, _ | ||||
| from accounts.report.accounts_receivable.accounts_receivable import get_ageing_data | ||||
| 
 | ||||
| def execute(filters=None): | ||||
| 	if not filters: filters = {} | ||||
| 	 | ||||
| 	columns = get_columns() | ||||
| 	entries = get_entries(filters) | ||||
| 	pi_posting_date_map = get_pi_posting_date_map() | ||||
| 	 | ||||
| 	data = [] | ||||
| 	for d in entries: | ||||
| 		against_voucher_date = d.against_voucher and pi_posting_date_map[d.against_voucher] or "" | ||||
| 		 | ||||
| 		row = [d.name, d.account, d.posting_date, d.against_voucher, against_voucher_date,  | ||||
| 			d.debit, d.credit, d.cheque_no, d.cheque_date, d.remark] | ||||
| 			 | ||||
| 		if d.against_voucher: | ||||
| 			row += get_ageing_data(against_voucher_date, d.posting_date, d.debit or -1*d.credit) | ||||
| 		else: | ||||
| 			row += ["", "", "", "", ""] | ||||
| 			 | ||||
| 		data.append(row) | ||||
| 	 | ||||
| 	return columns, data | ||||
| 	 | ||||
| def get_columns(): | ||||
| 	return ["Journal Voucher:Link/Journal Voucher:140", "Account:Link/Account:140",  | ||||
| 		"Posting Date:Date:100", "Against Invoice:Link/Purchase Invoice:130",  | ||||
| 		"Against Invoice Posting Date:Date:130", "Debit:Currency:120", "Credit:Currency:120",  | ||||
| 		"Reference No::100", "Reference Date:Date:100", "Remarks::150", "Age:Int:40",  | ||||
| 		"0-30:Currency:100", "30-60:Currency:100", "60-90:Currency:100", "90-Above:Currency:100" | ||||
| 	] | ||||
| 
 | ||||
| def get_conditions(filters): | ||||
| 	conditions = "" | ||||
| 	supplier_accounts = [] | ||||
| 	if filters.get("account"): | ||||
| 		supplier_accounts = [filters["account"]] | ||||
| 	else: | ||||
| 		cond = filters.get("company") and (" and company = '%s'" % filters["company"]) or "" | ||||
| 		supplier_accounts = webnotes.conn.sql_list("""select name from `tabAccount`  | ||||
| 			where ifnull(master_type, '') = 'Supplier' and docstatus < 2 %s""" % cond) | ||||
| 	 | ||||
| 	if supplier_accounts: | ||||
| 		conditions += " and jvd.account in (%s)" % (", ".join(['%s']*len(supplier_accounts))) | ||||
| 	else: | ||||
| 		msgprint(_("No Supplier Accounts found. Supplier Accounts are identified based on \ | ||||
| 			'Master Type' value in account record."), raise_exception=1) | ||||
| 		 | ||||
| 	if filters.get("from_date"): conditions += " and jv.posting_date >= '%s'" % filters["from_date"] | ||||
| 	if filters.get("to_date"): conditions += " and jv.posting_date <= '%s'" % filters["to_date"] | ||||
| 
 | ||||
| 	return conditions, supplier_accounts | ||||
| 	 | ||||
| def get_entries(filters): | ||||
| 	conditions, supplier_accounts = get_conditions(filters) | ||||
| 	entries =  webnotes.conn.sql("""select jv.name, jvd.account, jv.posting_date,  | ||||
| 		jvd.against_voucher, jvd.debit, jvd.credit, jv.cheque_no, jv.cheque_date, jv.remark | ||||
| 		from `tabJournal Voucher Detail` jvd, `tabJournal Voucher` jv  | ||||
| 		where jvd.parent = jv.name and jv.docstatus=1 %s order by jv.name DESC""" %  | ||||
| 		(conditions), tuple(supplier_accounts), as_dict=1) | ||||
| 		 | ||||
| 	return entries | ||||
| 	 | ||||
| def get_pi_posting_date_map(): | ||||
| 	pi_posting_date_map = {} | ||||
| 	for t in webnotes.conn.sql("""select name, posting_date from `tabPurchase Invoice`"""): | ||||
| 		pi_posting_date_map[t[0]] = t[1] | ||||
| 		 | ||||
| 	return pi_posting_date_map | ||||
| @ -0,0 +1,22 @@ | ||||
| [ | ||||
|  { | ||||
|   "creation": "2013-05-02 12:10:21",  | ||||
|   "docstatus": 0,  | ||||
|   "modified": "2013-05-02 12:10:21",  | ||||
|   "modified_by": "Administrator",  | ||||
|   "owner": "Administrator" | ||||
|  },  | ||||
|  { | ||||
|   "add_total_row": 1,  | ||||
|   "doctype": "Report",  | ||||
|   "is_standard": "Yes",  | ||||
|   "name": "__common__",  | ||||
|   "ref_doctype": "Journal Voucher",  | ||||
|   "report_name": "Payment Made With Ageing",  | ||||
|   "report_type": "Script Report" | ||||
|  },  | ||||
|  { | ||||
|   "doctype": "Report",  | ||||
|   "name": "Payment Made With Ageing" | ||||
|  } | ||||
| ] | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user