5c33a04043
* Added doctypes related to shares - Shareholder doctype, the entity who does the transaction - Share doctype, a child table to kepp list of all shares - Share Transfer doctype, Logs of all made transactions * Added logic for share transfer - update shareholder automatically on share transfer/issue/purchase - purchase and transfer have method remove_share which doesn't get executed because of some bug * Added report view for share ledger * Removed share number tracking - removed share number tracking from Share Ledger child table for Shareholder doctype - new doctype Share Type created * Share Balance report added - math behind Share Balance report needs fixing * Changes in shareholder - Share numbers are not tracked in Shareholder - Share Ledger doctype deleted - Share Balance Report bug fixed * Shareholder - fixed report for share balance - remove bug from share transfer by making share type mandatory - added buttons to shareholder for direct link to report * Added tests for Share Transfer * minor codacy fixes * Added Shareholder to Party Type * rate in share ledger & balance report is currency * First attempt at modelling shares after Item * Share Manager changes - on creation of shareholder party it should check if the same combo exists - in shareholder party make report button visible iff folio no exists - create folio no on creation of share transfer iff it doesnt already exist - move reports from shareholder to shareholder party * Shareholder chages - delete share child table doctype - autoname added to folio no - modify tests for share transfer * minor changes * removed share_no child doctype * Restructured Share Transfer Logic (not tested) - Everything revolves around Share Balance child table in Shareholder Party - is_company flag still to be utilized * Tested Share Tranfer * minor fixes * started new shareholder structure * modified shareholder * renamed Shareholder Party to Shareholder * Shareholder rewrite complete * new tests for shareholder written * codacy fixes * Added documentation
59 lines
1.4 KiB
Python
59 lines
1.4 KiB
Python
# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors
|
|
# For license information, please see license.txt
|
|
|
|
from __future__ import unicode_literals
|
|
import frappe
|
|
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:
|
|
share_type, no_of_shares, rate, amount = 1, 2, 3, 4
|
|
|
|
all_shares = get_all_shares(filters.get("shareholder"))
|
|
for share_entry in all_shares:
|
|
row = False
|
|
for datum in data:
|
|
if datum[share_type] == share_entry.share_type:
|
|
datum[no_of_shares] += share_entry.no_of_shares
|
|
datum[amount] += share_entry.amount
|
|
if datum[no_of_shares] == 0:
|
|
datum[rate] = 0
|
|
else:
|
|
datum[rate] = datum[amount] / datum[no_of_shares]
|
|
row = True
|
|
break
|
|
# new entry
|
|
if not row:
|
|
row = [filters.get("shareholder"),
|
|
share_entry.share_type, share_entry.no_of_shares, share_entry.rate, share_entry.amount]
|
|
|
|
data.append(row)
|
|
|
|
return columns, data
|
|
|
|
def get_columns(filters):
|
|
columns = [
|
|
_("Shareholder") + ":Link/Shareholder:150",
|
|
_("Share Type") + "::90",
|
|
_("No of Shares") + "::90",
|
|
_("Average Rate") + ":Currency:90",
|
|
_("Amount") + ":Currency:90"
|
|
]
|
|
return columns
|
|
|
|
def get_all_shares(shareholder):
|
|
return frappe.get_doc('Shareholder', shareholder).share_balance
|