# -*- coding: utf-8 -*-
# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
# For license information, please see license.txt

from __future__ import unicode_literals
import frappe
from frappe.utils import cstr, cint, getdate
from frappe import msgprint, _

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})
		ORDER BY date""".format(condition=condition),
		{'date': date, 'shareholder': shareholder}, as_dict=1)