def get_row_transaction(self, transaction): asset = transaction.position.asset gain = transaction.gain gain_icon = get_arrow_icon(gain[1]) c_change = transaction.current_change return [transaction, get_name_string(asset), transaction.price_per_share, asset.price, c_change[0], gain[0], transaction.quantity, - transaction.total, transaction.current_value, transaction.days_gain, float(gain[1]), gain_icon, float(c_change[1]), "", self.portfolio.get_fraction(transaction), 0.0, 0.0, 0.0, False, ]
def get_row_position(self, position): asset = position.asset gain = position.gain gain_div = position.gain_with_dividends gain_icon = get_arrow_icon(gain[1]) c_change = position.current_change return [position, get_name_string(asset), position.price_per_share, asset.price, c_change[0], gain[0], position.quantity, position.buy_value, position.current_value, position.days_gain, float(gain[1]), gain_icon, float(c_change[1]), position.asset.type_str, self.portfolio.get_fraction(position), gain_div[0], float(gain_div[1]), position.get_annual_return(), True ]
def insert_dividend(self, div): parent_row = self.find_item(div.position) if parent_row is None: parent = self.treestore.append(None, [div.position, gui_utils.get_name_string(div.position.asset), None, div.price, div.cost, div.price - div.cost, None ]) else: parent_row[self.AMOUNT] += div.price parent_row[self.TA_COSTS] += div.cost parent_row[self.TOTAL] += div.total parent_row[self.DIVIDEND_YIELD] = parent_row[self.TOTAL] / div.position.buy_value parent = parent_row.iter self.treestore.append(parent, [div, "", div.date, div.price, div.cost, div.total, div.dividend_yield ])
def insert_transaction(self, ta): self.treestore.append(None, [ta, str(ta), gui_utils.get_name_string(ta.position.asset), ta.date, float(ta.quantity), ta.price_per_share, ta.cost, ta.total ])
def _get_row(self, position): gain = position.gain gain_icon = positions_tab.get_arrow_icon(gain[1]) c_change = position.current_change return [position, gui_utils.get_name_string(position.asset), position.asset.type_str, position.price, position.asset.price, c_change[0], c_change[1], gain[0], gain[1], gain_icon]
def insert_position(self, pos): self.model.append([pos, gui_utils.get_name_string(pos.asset), pos.quantity, pos.buy_date, pos.buy_price, pos.buy_cost, pos.buy_total, pos.sell_date, pos.sell_price, pos.sell_cost, pos.sell_total, pos.gain, pos.gain_percent ])
def __init__(self, pos, transaction=None, parent=None): if transaction is None: title = _("Sell position") max_quantity = pos.quantity else: title = _("Edit position") max_quantity = pos.quantity + transaction.quantity Gtk.Dialog.__init__( self, title, parent, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (Gtk.STOCK_CANCEL, Gtk.ResponseType.REJECT, Gtk.STOCK_OK, Gtk.ResponseType.ACCEPT), ) self.pos = pos self.transaction = transaction vbox = self.get_content_area() table = Gtk.Table() table.set_row_spacings(4) table.set_col_spacings(4) vbox.pack_end(table, True, True, 0) # name label = Gtk.Label() label.set_markup(gui_utils.get_name_string(pos.asset)) label.set_alignment(0.0, 0.5) table.attach(label, 0, 2, 0, 1, Gtk.AttachOptions.FILL, 0) # shares entry table.attach(Gtk.Label(label=_("Shares")), 1, 2, 1, 2) self.shares_entry = Gtk.SpinButton() self.shares_entry.set_adjustment(Gtk.Adjustment(lower=0, upper=max_quantity, step_increment=1, value=0)) self.shares_entry.set_digits(2) self.shares_entry.connect("value-changed", self.on_change) table.attach( self.shares_entry, 2, 3, 1, 2, xoptions=Gtk.AttachOptions.SHRINK, yoptions=Gtk.AttachOptions.SHRINK ) # price entry table.attach(Gtk.Label(label=_("Price:")), 1, 2, 2, 3) self.price_entry = Gtk.SpinButton() self.price_entry.set_adjustment(Gtk.Adjustment(lower=0, upper=100000, step_increment=0.1, value=1.0)) self.price_entry.set_digits(2) self.price_entry.connect("value-changed", self.on_change) table.attach(self.price_entry, 2, 3, 2, 3, xoptions=Gtk.AttachOptions.SHRINK, yoptions=Gtk.AttachOptions.SHRINK) # ta_costs entry table.attach( Gtk.Label(label=_("Transaction Costs")), 1, 2, 3, 4, xoptions=Gtk.AttachOptions.SHRINK, yoptions=Gtk.AttachOptions.SHRINK, ) self.tacosts_entry = Gtk.SpinButton() self.tacosts_entry.set_adjustment(Gtk.Adjustment(lower=0, upper=100000, step_increment=0.1, value=0.0)) self.tacosts_entry.set_digits(2) self.tacosts_entry.connect("value-changed", self.on_change) table.attach( self.tacosts_entry, 2, 3, 3, 4, xoptions=Gtk.AttachOptions.SHRINK, yoptions=Gtk.AttachOptions.SHRINK ) # total table.attach( Gtk.Label(label=_("Total")), 1, 2, 4, 5, xoptions=Gtk.AttachOptions.SHRINK, yoptions=Gtk.AttachOptions.SHRINK, ) self.total_entry = Gtk.SpinButton() self.total_entry.set_adjustment(Gtk.Adjustment(lower=0, upper=1000000, step_increment=0.1, value=0.0)) self.total_entry.set_digits(2) self.total_entry.connect("value-changed", self.on_change) table.attach(self.total_entry, 2, 3, 4, 5, xoptions=Gtk.AttachOptions.SHRINK, yoptions=Gtk.AttachOptions.SHRINK) # date self.calendar = Gtk.Calendar() table.attach(self.calendar, 0, 1, 1, 5) if self.transaction is not None: self.shares_entry.set_value(self.transaction.quantity) self.total_entry.set_value(self.transaction.total) self.tacosts_entry.set_value(self.transaction.cost) self.calendar.select_month(self.transaction.date.month - 1, self.transaction.date.year) self.calendar.select_day(self.transaction.date.day) self.on_change() self.show_all() self.response = self.run() self.process_result() self.destroy()