Compare commits

..

3 Commits

3 changed files with 134 additions and 14 deletions

View File

@ -63,6 +63,11 @@
<property name="enabled"> <property name="enabled">
<bool>false</bool> <bool>false</bool>
</property> </property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="buttonSymbols"> <property name="buttonSymbols">
<enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum> <enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum>
</property> </property>
@ -80,7 +85,7 @@
<item row="2" column="3"> <item row="2" column="3">
<widget class="QCheckBox" name="fund_deal_fee_check"> <widget class="QCheckBox" name="fund_deal_fee_check">
<property name="enabled"> <property name="enabled">
<bool>false</bool> <bool>true</bool>
</property> </property>
<property name="checked"> <property name="checked">
<bool>true</bool> <bool>true</bool>
@ -89,6 +94,11 @@
</item> </item>
<item row="6" column="2"> <item row="6" column="2">
<widget class="FastEditQDoubleSpinBox" name="share_deal_fee_box"> <widget class="FastEditQDoubleSpinBox" name="share_deal_fee_box">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="buttonSymbols"> <property name="buttonSymbols">
<enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum> <enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum>
</property> </property>
@ -105,6 +115,11 @@
</item> </item>
<item row="8" column="0" colspan="2"> <item row="8" column="0" colspan="2">
<widget class="QLabel" name="share_deal_reduce_trades_lab"> <widget class="QLabel" name="share_deal_reduce_trades_lab">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text"> <property name="text">
<string>Share dealing discount # of trades</string> <string>Share dealing discount # of trades</string>
</property> </property>
@ -115,6 +130,11 @@
</item> </item>
<item row="5" column="0" colspan="2"> <item row="5" column="0" colspan="2">
<widget class="QLabel" name="share_plat_max_fee_lab"> <widget class="QLabel" name="share_plat_max_fee_lab">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text"> <property name="text">
<string>Share platform monthly fee cap</string> <string>Share platform monthly fee cap</string>
</property> </property>
@ -122,6 +142,11 @@
</item> </item>
<item row="2" column="2"> <item row="2" column="2">
<widget class="FastEditQDoubleSpinBox" name="fund_deal_fee_box"> <widget class="FastEditQDoubleSpinBox" name="fund_deal_fee_box">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="buttonSymbols"> <property name="buttonSymbols">
<enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum> <enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum>
</property> </property>
@ -138,6 +163,11 @@
</item> </item>
<item row="6" column="0" colspan="2"> <item row="6" column="0" colspan="2">
<widget class="QLabel" name="share_deal_fee_lab"> <widget class="QLabel" name="share_deal_fee_lab">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text"> <property name="text">
<string>Share dealing fee*</string> <string>Share dealing fee*</string>
</property> </property>
@ -148,6 +178,11 @@
<property name="enabled"> <property name="enabled">
<bool>false</bool> <bool>false</bool>
</property> </property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="buttonSymbols"> <property name="buttonSymbols">
<enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum> <enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum>
</property> </property>
@ -174,6 +209,11 @@
</item> </item>
<item row="2" column="0" colspan="2"> <item row="2" column="0" colspan="2">
<widget class="QLabel" name="fund_deal_fee_lab"> <widget class="QLabel" name="fund_deal_fee_lab">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text"> <property name="text">
<string>Fund dealing fee*</string> <string>Fund dealing fee*</string>
</property> </property>
@ -183,10 +223,21 @@
<widget class="QCheckBox" name="share_plat_max_fee_check"/> <widget class="QCheckBox" name="share_plat_max_fee_check"/>
</item> </item>
<item row="0" column="2"> <item row="0" column="2">
<widget class="QLineEdit" name="plat_name_box"/> <widget class="QLineEdit" name="plat_name_box">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
</widget>
</item> </item>
<item row="9" column="0" colspan="2"> <item row="9" column="0" colspan="2">
<widget class="QLabel" name="share_deal_reduce_amount_lab"> <widget class="QLabel" name="share_deal_reduce_amount_lab">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text"> <property name="text">
<string>Share dealing discount amount</string> <string>Share dealing discount amount</string>
</property> </property>
@ -194,6 +245,11 @@
</item> </item>
<item row="4" column="0" colspan="2"> <item row="4" column="0" colspan="2">
<widget class="QLabel" name="share_plat_fee_lab"> <widget class="QLabel" name="share_plat_fee_lab">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text"> <property name="text">
<string>Share platform fee*</string> <string>Share platform fee*</string>
</property> </property>
@ -201,6 +257,11 @@
</item> </item>
<item row="4" column="2"> <item row="4" column="2">
<widget class="FastEditQDoubleSpinBox" name="share_plat_fee_box"> <widget class="FastEditQDoubleSpinBox" name="share_plat_fee_box">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="buttonSymbols"> <property name="buttonSymbols">
<enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum> <enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum>
</property> </property>
@ -217,6 +278,11 @@
</item> </item>
<item row="0" column="0" colspan="2"> <item row="0" column="0" colspan="2">
<widget class="QLabel" name="plat_name_lab"> <widget class="QLabel" name="plat_name_lab">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text"> <property name="text">
<string>Platform name</string> <string>Platform name</string>
</property> </property>
@ -227,6 +293,11 @@
<property name="enabled"> <property name="enabled">
<bool>false</bool> <bool>false</bool>
</property> </property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="buttonSymbols"> <property name="buttonSymbols">
<enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum> <enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum>
</property> </property>
@ -255,6 +326,11 @@
<height>24</height> <height>24</height>
</rect> </rect>
</property> </property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text"> <property name="text">
<string>Save</string> <string>Save</string>
</property> </property>
@ -303,6 +379,11 @@
</property> </property>
<item row="0" column="3"> <item row="0" column="3">
<widget class="FastEditQDoubleSpinBox" name="first_tier_fee_box"> <widget class="FastEditQDoubleSpinBox" name="first_tier_fee_box">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="buttonSymbols"> <property name="buttonSymbols">
<enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum> <enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum>
</property> </property>
@ -319,6 +400,11 @@
</item> </item>
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="first_tier_lab"> <widget class="QLabel" name="first_tier_lab">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text"> <property name="text">
<string>on the first</string> <string>on the first</string>
</property> </property>
@ -326,6 +412,11 @@
</item> </item>
<item row="0" column="2"> <item row="0" column="2">
<widget class="QLabel" name="first_tier_fee_lab"> <widget class="QLabel" name="first_tier_fee_lab">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text"> <property name="text">
<string>the fee is</string> <string>the fee is</string>
</property> </property>
@ -333,6 +424,11 @@
</item> </item>
<item row="0" column="1"> <item row="0" column="1">
<widget class="FastEditQDoubleSpinBox" name="first_tier_box"> <widget class="FastEditQDoubleSpinBox" name="first_tier_box">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="buttonSymbols"> <property name="buttonSymbols">
<enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum> <enum>QAbstractSpinBox::ButtonSymbols::NoButtons</enum>
</property> </property>
@ -358,6 +454,11 @@
<height>24</height> <height>24</height>
</rect> </rect>
</property> </property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text"> <property name="text">
<string>Add row</string> <string>Add row</string>
</property> </property>
@ -371,6 +472,11 @@
<height>24</height> <height>24</height>
</rect> </rect>
</property> </property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text"> <property name="text">
<string>Remove row</string> <string>Remove row</string>
</property> </property>

View File

@ -66,7 +66,6 @@ class SIPPCompare(QMainWindow):
def init_variables(self): def init_variables(self):
self.optional_boxes = self.platform_win.get_optional_boxes() self.optional_boxes = self.platform_win.get_optional_boxes()
self.fund_plat_fee = self.platform_win.get_fund_plat_fee() 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() self.share_plat_fee = self.platform_win.get_share_plat_fee()
self.share_deal_fee = self.platform_win.get_share_deal_fee() self.share_deal_fee = self.platform_win.get_share_deal_fee()
@ -77,16 +76,21 @@ class SIPPCompare(QMainWindow):
self.plat_name = None self.plat_name = None
if self.optional_boxes[1]: if self.optional_boxes[1]:
self.fund_deal_fee = self.platform_win.get_fund_deal_fee()
else:
self.fund_deal_fee = None
if self.optional_boxes[2]:
self.share_plat_max_fee = self.platform_win.get_share_plat_max_fee() self.share_plat_max_fee = self.platform_win.get_share_plat_max_fee()
else: else:
self.share_plat_max_fee = None self.share_plat_max_fee = None
if self.optional_boxes[2]: if self.optional_boxes[3]:
self.share_deal_reduce_trades = self.platform_win.get_share_deal_reduce_trades() self.share_deal_reduce_trades = self.platform_win.get_share_deal_reduce_trades()
else: else:
self.share_deal_reduce_trades = None self.share_deal_reduce_trades = None
if self.optional_boxes[3]: if self.optional_boxes[4]:
self.share_deal_reduce_amount = self.platform_win.get_share_deal_reduce_amount() self.share_deal_reduce_amount = self.platform_win.get_share_deal_reduce_amount()
else: else:
self.share_deal_reduce_amount = None self.share_deal_reduce_amount = None
@ -101,7 +105,8 @@ class SIPPCompare(QMainWindow):
slider_val: int = self.mix_slider.value() slider_val: int = self.mix_slider.value()
funds_value = (slider_val / 100) * value_num funds_value = (slider_val / 100) * value_num
fund_trades_num = int(self.fund_trades_combo.currentText()) fund_trades_num = int(self.fund_trades_combo.currentText())
self.fund_deal_fees = fund_trades_num * self.fund_deal_fee if self.fund_deal_fee is not None:
self.fund_deal_fees = fund_trades_num * self.fund_deal_fee
for i in range(1, len(self.fund_plat_fee[0])): for i in range(1, len(self.fund_plat_fee[0])):
band = self.fund_plat_fee[0][i] band = self.fund_plat_fee[0][i]
@ -120,15 +125,15 @@ class SIPPCompare(QMainWindow):
if self.share_plat_max_fee is not None: if self.share_plat_max_fee is not None:
if (self.share_plat_fee * shares_value / 12) > self.share_plat_max_fee: if (self.share_plat_fee * shares_value / 12) > self.share_plat_max_fee:
self.share_plat_fees = self.share_plat_max_fee * 12 self.share_plat_fees = self.share_plat_max_fee * 12
else: else:
self.share_plat_fees = self.share_plat_fee * shares_value self.share_plat_fees = self.share_plat_fee * shares_value
share_trades_num = int(self.share_trades_combo.currentText()) share_trades_num = int(self.share_trades_combo.currentText())
if self.share_deal_reduce_trades is not None: if self.share_deal_reduce_trades is not None:
if (share_trades_num / 12) >= self.share_deal_reduce_trades: if (share_trades_num / 12) >= self.share_deal_reduce_trades:
self.share_deal_fees = self.share_deal_reduce_amount * share_trades_num self.share_deal_fees = self.share_deal_reduce_amount * share_trades_num
else: else:
self.share_deal_fees = self.share_deal_fee * share_trades_num self.share_deal_fees = self.share_deal_fee * share_trades_num
self.show_output_win() self.show_output_win()

View File

@ -1,5 +1,5 @@
from PyQt6.QtCore import QRegularExpression from PyQt6.QtCore import QRegularExpression
from PyQt6.QtGui import QRegularExpressionValidator from PyQt6.QtGui import QRegularExpressionValidator, QFont
from PyQt6.QtWidgets import QWidget, QLabel from PyQt6.QtWidgets import QWidget, QLabel
from PyQt6 import uic from PyQt6 import uic
@ -34,13 +34,13 @@ class PlatformEdit(QWidget):
self.save_but.setEnabled(True) self.save_but.setEnabled(True)
self.required_fields = [ self.required_fields = [
self.fund_deal_fee_box,
self.share_plat_fee_box, self.share_plat_fee_box,
self.share_deal_fee_box self.share_deal_fee_box
] ]
self.optional_fields = [ self.optional_fields = [
self.plat_name_box, self.plat_name_box,
self.fund_deal_fee_box,
self.share_plat_max_fee_box, self.share_plat_max_fee_box,
self.share_deal_reduce_trades_box, self.share_deal_reduce_trades_box,
self.share_deal_reduce_amount_box self.share_deal_reduce_amount_box
@ -48,12 +48,14 @@ class PlatformEdit(QWidget):
self.optional_check_boxes = [ self.optional_check_boxes = [
self.plat_name_check, self.plat_name_check,
self.fund_deal_fee_check,
self.share_plat_max_fee_check, self.share_plat_max_fee_check,
self.share_deal_reduce_trades_check, self.share_deal_reduce_trades_check,
self.share_deal_reduce_amount_check self.share_deal_reduce_amount_check
] ]
self.check_boxes_ticked = [ self.check_boxes_ticked = [
True,
True, True,
False, False,
False, False,
@ -171,22 +173,27 @@ class PlatformEdit(QWidget):
return -1 return -1
widgets = [] widgets = []
font = QFont()
font.setPointSize(11)
widgets.append(QLabel(self.gridLayoutWidget_2)) widgets.append(QLabel(self.gridLayoutWidget_2))
widgets[0].setText(f"between {int(self.first_tier_box.value())} and") widgets[0].setFont(font)
widgets.append(FastEditQDoubleSpinBox(self.gridLayoutWidget_2)) widgets.append(FastEditQDoubleSpinBox(self.gridLayoutWidget_2))
widgets[1].setPrefix("£") widgets[1].setPrefix("£")
widgets[1].setMaximum(9999999) widgets[1].setMaximum(9999999)
widgets[1].setButtonSymbols(FastEditQDoubleSpinBox.ButtonSymbols.NoButtons) widgets[1].setButtonSymbols(FastEditQDoubleSpinBox.ButtonSymbols.NoButtons)
widgets[1].setFont(font)
widgets.append(QLabel(self.gridLayoutWidget_2)) widgets.append(QLabel(self.gridLayoutWidget_2))
widgets[2].setText(f"the fee is") widgets[2].setText(f"the fee is")
widgets[2].setFont(font)
widgets.append(FastEditQDoubleSpinBox(self.gridLayoutWidget_2)) widgets.append(FastEditQDoubleSpinBox(self.gridLayoutWidget_2))
widgets[3].setSuffix("%") widgets[3].setSuffix("%")
widgets[3].setMaximum(100) widgets[3].setMaximum(100)
widgets[3].setButtonSymbols(FastEditQDoubleSpinBox.ButtonSymbols.NoButtons) widgets[3].setButtonSymbols(FastEditQDoubleSpinBox.ButtonSymbols.NoButtons)
widgets[3].setFont(font)
# TODO: why 28.5? # TODO: why 28.5?
self.gridLayoutWidget_2.setGeometry(11, 314, 611, int(round(28.5 * (self.fund_fee_rows + 1), 0))) self.gridLayoutWidget_2.setGeometry(11, 314, 611, int(round(28.5 * (self.fund_fee_rows + 1), 0)))
@ -204,7 +211,9 @@ class PlatformEdit(QWidget):
prev_box_row = cur_box_pos[0] - 1 prev_box_row = cur_box_pos[0] - 1
prev_box_item = self.gridLayout_2.itemAtPosition(prev_box_row, cur_box_pos[1]).widget() prev_box_item = self.gridLayout_2.itemAtPosition(prev_box_row, cur_box_pos[1]).widget()
cur_label_item = self.gridLayout_2.itemAtPosition(cur_label_pos[0], cur_label_pos[1]).widget() cur_label_item = self.gridLayout_2.itemAtPosition(cur_label_pos[0], cur_label_pos[1]).widget()
cur_label_item.setText(f"between {int(prev_box_item.value())} and") cur_label_item.setText(f"between £{int(prev_box_item.value())} and")
# TODO: Tab order
def remove_row(self): def remove_row(self):
if not self.fund_fee_rows > 1: if not self.fund_fee_rows > 1: