Example #1
0
 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,
            ]
Example #2
0
 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
            ]
Example #3
0
 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
             ])
Example #4
0
 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
                        ])
Example #7
0
    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()