fix bugs and add platform name opt

This commit is contained in:
Roland W-H 2025-01-29 20:25:40 +00:00
parent c20e1e9d09
commit 83c02ec4db
4 changed files with 42 additions and 22 deletions

View File

@ -19,7 +19,7 @@
<x>10</x>
<y>10</y>
<width>461</width>
<height>191</height>
<height>226</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
@ -41,66 +41,76 @@
<property name="verticalSpacing">
<number>10</number>
</property>
<item row="2" column="0" colspan="2">
<item row="3" column="0" colspan="2">
<widget class="QLabel" name="share_plat_fee_lab">
<property name="text">
<string>Share platform fee</string>
</property>
</widget>
</item>
<item row="4" column="2">
<item row="5" column="2">
<widget class="QLineEdit" name="share_deal_fee_box"/>
</item>
<item row="3" column="2">
<item row="4" column="2">
<widget class="QLineEdit" name="share_plat_max_fee_box"/>
</item>
<item row="0" column="0" colspan="2">
<item row="1" column="0" colspan="2">
<widget class="QLabel" name="fund_deal_fee_lab">
<property name="text">
<string>Fund dealing fee</string>
</property>
</widget>
</item>
<item row="0" column="2">
<item row="1" column="2">
<widget class="QLineEdit" name="fund_deal_fee_box"/>
</item>
<item row="2" column="2">
<item row="3" column="2">
<widget class="QLineEdit" name="share_plat_fee_box"/>
</item>
<item row="3" column="0" colspan="2">
<item row="4" column="0" colspan="2">
<widget class="QLabel" name="share_plat_max_fee_lab">
<property name="text">
<string>Share platform fee cap</string>
</property>
</widget>
</item>
<item row="7" column="2">
<item row="8" column="2">
<widget class="QLineEdit" name="share_deal_reduce_amount_box"/>
</item>
<item row="4" column="0" colspan="2">
<item row="5" column="0" colspan="2">
<widget class="QLabel" name="share_deal_fee_lab">
<property name="text">
<string>Share dealing fee</string>
</property>
</widget>
</item>
<item row="7" column="0" colspan="2">
<item row="8" column="0" colspan="2">
<widget class="QLabel" name="share_deal_reduce_amount_lab">
<property name="text">
<string>Share dealing fee discount</string>
</property>
</widget>
</item>
<item row="6" column="2">
<item row="7" column="2">
<widget class="QLineEdit" name="share_deal_reduce_trades_box"/>
</item>
<item row="6" column="0" colspan="2">
<item row="7" column="0" colspan="2">
<widget class="QLabel" name="share_deal_reduce_trades_lab">
<property name="text">
<string>Share dealing discount # of trades</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="plat_name_lab">
<property name="text">
<string>Platform name</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLineEdit" name="plat_name_box"/>
</item>
</layout>
</widget>
<widget class="QPushButton" name="save_but">
@ -118,6 +128,7 @@
</widget>
</widget>
<tabstops>
<tabstop>plat_name_box</tabstop>
<tabstop>fund_deal_fee_box</tabstop>
<tabstop>share_plat_fee_box</tabstop>
<tabstop>share_plat_max_fee_box</tabstop>

View File

@ -12,6 +12,7 @@ class SIPPCompare(QMainWindow):
# Define class variables
self.fund_plat_fee = 0.0
self.plat_name = ""
self.fund_deal_fee = 0.0
self.share_plat_fee = 0.0
self.share_plat_max_fee = 0.0
@ -39,6 +40,7 @@ class SIPPCompare(QMainWindow):
self.mix_lab.setText(mix_lab_str)
def init_variables(self):
self.plat_name = self.platform_win.get_plat_name()
self.fund_plat_fee = self.platform_win.get_fund_plat_fee()
self.fund_deal_fee = self.platform_win.get_fund_deal_fee()
self.share_plat_fee = self.platform_win.get_share_plat_fee()
@ -50,6 +52,7 @@ class SIPPCompare(QMainWindow):
# Calculate fees
def calculate_fees(self):
self.init_variables()
self.fund_plat_fees = 0
value_num = float(self.value_input.text()[1:])
slider_val = self.mix_slider.value()
funds_value = (slider_val / 100) * value_num
@ -57,10 +60,10 @@ class SIPPCompare(QMainWindow):
self.fund_deal_fees = fund_trades_num * self.fund_deal_fee
remaining = funds_value
for i in range(1, len(self.tiered_fees[0])):
band = self.tiered_fees[0][i]
prev_band = self.tiered_fees[0][i - 1]
fee = self.tiered_fees[1][i]
for i in range(1, len(self.fund_plat_fee[0])):
band = self.fund_plat_fee[0][i]
prev_band = self.fund_plat_fee[0][i - 1]
fee = self.fund_plat_fee[1][i]
gap = (band - prev_band)
if remaining > gap:
@ -88,7 +91,7 @@ class SIPPCompare(QMainWindow):
def show_output_win(self):
# Refresh the results when new fees are calculated
self.output_win.display_output(self.fund_plat_fees, self.fund_deal_fees,
self.share_plat_fees, self.share_deal_fees)
self.share_plat_fees, self.share_deal_fees, self.plat_name)
self.output_win.show()
# Show the platform editor window (currently useless)

View File

@ -14,20 +14,21 @@ class OutputWindow(QWidget):
self.res_save_but.clicked.connect(self.save_results)
self.results_str = ""
self.platform_name = ""
def save_results(self):
cur_time = datetime.datetime.now()
if not os.path.exists("output"):
os.makedirs("output")
filename_str = (f"output/{cur_time.year}-{cur_time.month}-{cur_time.day}"
f".{cur_time.hour}-{cur_time.minute}-{cur_time.second}.txt")
filename_str = f"output/{self.platform_name}-{cur_time.year}.{cur_time.month}.{cur_time.day}.txt"
output_file = open(filename_str, "wt")
output_file.write(self.results_str)
def display_output(self, fund_plat_fees: float, fund_deal_fees: float,
share_plat_fees: float, share_deal_fees: float):
self.results_str = "Fees breakdown:"
share_plat_fees: float, share_deal_fees: float, plat_name: str):
self.platform_name = plat_name
self.results_str = f"Fees breakdown (Platform \"{self.platform_name}\"):"
self.results_str += "\n\nPlatform fees:"
self.results_str += f"\n\tFund platform fees: £{round(fund_plat_fees, 2):.2f}"

View File

@ -11,6 +11,7 @@ class PlatformEdit(QWidget):
[0, 250000, 1000000, 2000000],
[0, 0.25, 0.1, 0.05]
]
self.plat_name = ""
self.fund_deal_fee = 0.0
self.share_plat_fee = 0.0
self.share_plat_max_fee = 0.0
@ -21,6 +22,7 @@ class PlatformEdit(QWidget):
self.save_but.clicked.connect(self.init_variables)
def init_variables(self):
self.plat_name = self.plat_name_box.text()
self.fund_deal_fee = float(self.fund_deal_fee_box.text())
self.share_plat_fee = float(self.share_plat_fee_box.text()) / 100
self.share_plat_max_fee = float(self.share_plat_max_fee_box.text())
@ -28,6 +30,9 @@ class PlatformEdit(QWidget):
self.share_deal_reduce_trades = float(self.share_deal_reduce_trades_box.text())
self.share_deal_reduce_amount = float(self.share_deal_reduce_amount_box.text())
def get_plat_name(self):
return self.plat_name
def get_fund_plat_fee(self):
return self.fund_plat_fee