brotherton-erpnext/erpnext/accounts/report/share_balance/share_balance.py
Ameya Shenoy 5c33a04043 Shareholder and related doctypes (#12215)
* 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
2018-02-12 11:32:47 +05:30

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