79 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
 | |
| # For license information, please see license.txt
 | |
| 
 | |
| 
 | |
| import frappe
 | |
| from frappe import _
 | |
| 
 | |
| 
 | |
| def execute(filters=None):
 | |
| 	if not filters:
 | |
| 		filters = {}
 | |
| 
 | |
| 	if not filters.get("date"):
 | |
| 		frappe.throw(_("Please select date"))
 | |
| 
 | |
| 	columns = get_columns(filters)
 | |
| 
 | |
| 	date = filters.get("date")
 | |
| 
 | |
| 	data = []
 | |
| 
 | |
| 	if not filters.get("shareholder"):
 | |
| 		pass
 | |
| 	else:
 | |
| 		transfers = get_all_transfers(date, filters.get("shareholder"))
 | |
| 		for transfer in transfers:
 | |
| 			if transfer.transfer_type == "Transfer":
 | |
| 				if transfer.from_shareholder == filters.get("shareholder"):
 | |
| 					transfer.transfer_type += " to {}".format(transfer.to_shareholder)
 | |
| 				else:
 | |
| 					transfer.transfer_type += " from {}".format(transfer.from_shareholder)
 | |
| 			row = [
 | |
| 				filters.get("shareholder"),
 | |
| 				transfer.date,
 | |
| 				transfer.transfer_type,
 | |
| 				transfer.share_type,
 | |
| 				transfer.no_of_shares,
 | |
| 				transfer.rate,
 | |
| 				transfer.amount,
 | |
| 				transfer.company,
 | |
| 				transfer.name,
 | |
| 			]
 | |
| 
 | |
| 			data.append(row)
 | |
| 
 | |
| 	return columns, data
 | |
| 
 | |
| 
 | |
| def get_columns(filters):
 | |
| 	columns = [
 | |
| 		_("Shareholder") + ":Link/Shareholder:150",
 | |
| 		_("Date") + ":Date:100",
 | |
| 		_("Transfer Type") + "::140",
 | |
| 		_("Share Type") + "::90",
 | |
| 		_("No of Shares") + "::90",
 | |
| 		_("Rate") + ":Currency:90",
 | |
| 		_("Amount") + ":Currency:90",
 | |
| 		_("Company") + "::150",
 | |
| 		_("Share Transfer") + ":Link/Share Transfer:90",
 | |
| 	]
 | |
| 	return columns
 | |
| 
 | |
| 
 | |
| def get_all_transfers(date, shareholder):
 | |
| 	condition = " "
 | |
| 	# if company:
 | |
| 	# 	condition = 'AND company = %(company)s '
 | |
| 	return frappe.db.sql(
 | |
| 		"""SELECT * FROM `tabShare Transfer`
 | |
| 		WHERE ((DATE(date) <= %(date)s AND from_shareholder = %(shareholder)s {condition})
 | |
| 		OR (DATE(date) <= %(date)s AND to_shareholder = %(shareholder)s {condition}))
 | |
| 		AND docstatus = 1
 | |
| 		ORDER BY date""".format(
 | |
| 			condition=condition
 | |
| 		),
 | |
| 		{"date": date, "shareholder": shareholder},
 | |
| 		as_dict=1,
 | |
| 	)
 |