Exemple #1
0
 def _get_payments_columns(self):
     return [
         IdentifierColumn('identifier', title=_('Payment #')),
         Column('method.description', _("Type"), data_type=str, width=60),
         Column('description',
                _("Description"),
                data_type=str,
                width=150,
                expand=True),
         Column('due_date',
                _("Due date"),
                sorted=True,
                data_type=datetime.date,
                width=90,
                justify=Gtk.Justification.RIGHT),
         Column('paid_date',
                _("Paid date"),
                data_type=datetime.date,
                width=90),
         Column('status_str', _("Status"), data_type=str, width=80),
         ColoredColumn('base_value',
                       _("Value"),
                       data_type=currency,
                       width=90,
                       color='red',
                       justify=Gtk.Justification.RIGHT,
                       data_func=payment_value_colorize),
         ColoredColumn('paid_value',
                       _("Paid value"),
                       data_type=currency,
                       width=92,
                       color='red',
                       justify=Gtk.Justification.RIGHT,
                       data_func=payment_value_colorize)
     ]
Exemple #2
0
 def _get_payments_columns(self):
     return [
         IdentifierColumn('identifier', title=_('Payment #')),
         Column('description',
                _("Description"),
                data_type=str,
                expand=True,
                ellipsize=pango.ELLIPSIZE_END),
         Column('due_date',
                _("Due date"),
                sorted=True,
                data_type=datetime.date,
                justify=gtk.JUSTIFY_RIGHT),
         Column('paid_date', _("Paid date"), data_type=datetime.date),
         Column('status_str', _("Status"), data_type=str),
         ColoredColumn('value',
                       _("Value"),
                       data_type=currency,
                       justify=gtk.JUSTIFY_RIGHT,
                       use_data_model=True,
                       data_func=payment_value_colorize),
         ColoredColumn('paid_value',
                       _("Paid value"),
                       data_type=currency,
                       justify=gtk.JUSTIFY_RIGHT,
                       use_data_model=True,
                       data_func=payment_value_colorize)
     ]
Exemple #3
0
 def _get_columns(self):
     return [
         IdentifierColumn('identifier', title=_('Purchase #')),
         Column('description',
                _("Description"),
                data_type=str,
                width=150,
                expand=True,
                ellipsize=pango.ELLIPSIZE_END),
         Column('due_date',
                _("Due date"),
                sorted=True,
                data_type=datetime.date,
                width=90,
                justify=gtk.JUSTIFY_RIGHT),
         Column('paid_date',
                _("Paid date"),
                data_type=datetime.date,
                width=90),
         Column('status_str', _("Status"), data_type=str, width=80),
         ColoredColumn('value',
                       _("Value"),
                       data_type=currency,
                       width=90,
                       color='red',
                       justify=gtk.JUSTIFY_RIGHT,
                       data_func=payment_value_colorize),
         ColoredColumn('paid_value',
                       _("Paid value"),
                       data_type=currency,
                       width=92,
                       color='red',
                       justify=gtk.JUSTIFY_RIGHT,
                       data_func=payment_value_colorize)
     ]
Exemple #4
0
    def _get_account_columns(self):
        def format_withdrawal(value):
            if value < 0:
                return currency(abs(value)).format(symbol=True, precision=2)

        def format_deposit(value):
            if value > 0:
                return currency(value).format(symbol=True, precision=2)

        if self.model.account_type == Account.TYPE_INCOME:
            color_func = lambda x: False
        else:
            color_func = lambda x: x < 0
        return [Column('date', title=_("Date"), data_type=datetime.date, sorted=True),
                Column('code', title=_("Code"), data_type=unicode),
                Column('description', title=_("Description"),
                       data_type=unicode, expand=True),
                Column('account', title=_("Account"), data_type=unicode),
                Column('value',
                       title=self.model.account.get_type_label(out=False),
                       data_type=currency,
                       format_func=format_deposit),
                Column('value',
                       title=self.model.account.get_type_label(out=True),
                       data_type=currency,
                       format_func=format_withdrawal),
                ColoredColumn('total', title=_("Total"), data_type=currency,
                              color='red',
                              data_func=color_func)]
Exemple #5
0
 def get_columns(self):
     return [SearchColumn('code', title=_('Code'), data_type=str,
                          sort_func=sort_sellable_code),
             SearchColumn('category_description', title=_('Category'),
                          data_type=str, width=100),
             SearchColumn('description', title=_('Description'),
                          data_type=str,
                          expand=True, sorted=True),
             SearchColumn('manufacturer', title=_('Manufacturer'),
                          data_type=str,
                          visible=False),
             SearchColumn('model', title=_('Model'), data_type=str,
                          visible=False),
             SearchColumn('location', title=_('Location'), data_type=str,
                          visible=False),
             SearchColumn('maximum_quantity', title=_('Maximum'),
                          visible=False, format_func=format_data,
                          data_type=Decimal),
             SearchColumn('minimum_quantity', title=_('Minimum'),
                          format_func=format_data, data_type=Decimal),
             SearchColumn('stock', title=_('In Stock'),
                          format_func=format_data, data_type=Decimal),
             SearchColumn('to_receive_quantity', title=_('To Receive'),
                          format_func=format_data,
                          data_type=Decimal),
             ColoredColumn('difference', title=_('Difference'), color='red',
                           format_func=format_data, data_type=Decimal,
                           data_func=lambda x: x <= Decimal(0))]
Exemple #6
0
    def __init__(self, with_code=True, create_mode=False):
        self.create_mode = create_mode
        self._accounts = {}

        columns = [StockTextColumn('description', title=_("Account name"),
                                   data_type=str, pack_end=True, expand=True,
                                   sorted=True, sort_func=sort_models)]
        if with_code:
            columns.append(Column('code', title=_("Code"), data_type=str,
                                  width=120))
        if not create_mode:
            # FIXME: This needs to be much better colorized, and moved to the
            #        domain classes
            def colorize(account):
                if (account.kind == 'account' and
                    account.account_type == Account.TYPE_INCOME):
                    return False
                else:
                    return account.total < 0
            columns.append(ColoredColumn('total', title=_("Total"), width=100,
                                         data_type=currency,
                                         color='red',
                                         data_func=colorize,
                                         use_data_model=True))
        ObjectTree.__init__(self, columns,
                            mode=gtk.SELECTION_SINGLE)

        def render_icon(icon):
            return self.render_icon(icon, gtk.ICON_SIZE_MENU)
        self._pixbuf_money = render_icon(STOQ_MONEY)
        self._pixbuf_payable = render_icon(STOQ_PAYABLE_APP)
        self._pixbuf_receivable = render_icon(STOQ_BILLS)
        self._pixbuf_till = render_icon(STOQ_TILL_APP)
        if self.create_mode:
            self.set_headers_visible(False)
Exemple #7
0
 def _get_payments_columns(self):
     return [
         IdentifierColumn('identifier'),
         Column("method_name", title=_("Type"), data_type=str, width=90),
         Column("description",
                title=_("Description"),
                data_type=str,
                searchable=True,
                width=190,
                expand=True),
         Column("due_date",
                title=_("Due date"),
                width=110,
                data_type=datetime.date,
                sorted=True),
         Column("paid_date",
                title=_("Paid date"),
                width=110,
                data_type=datetime.date),
         Column("status_str", title=_("Status"), width=80, data_type=str),
         ColoredColumn("value",
                       title=_("Value"),
                       justify=gtk.JUSTIFY_RIGHT,
                       data_type=currency,
                       color='red',
                       width=100,
                       data_func=payment_value_colorize),
         Column("days_late",
                title=_("Days Late"),
                width=110,
                format_func=(
                    lambda days_late: days_late and str(days_late) or u""),
                justify=gtk.JUSTIFY_RIGHT,
                data_type=str)
     ]
Exemple #8
0
    def get_columns(self):
        columns = [
            IdentifierColumn('identifier', title=_('Sale #'), sorted=True),
            SearchColumn('salesperson_name', title=_('Salesperson'),
                         data_type=str, expand=True),
            # This column evals to an integer, and due to a bug
            # in kiwi, its not searchable
            Column('commission_percentage', title=_('Commission (%)'),
                   data_type=Decimal, format="%.2f"),
            # negative commissions are shown in red color
            ColoredColumn('commission_value', title=_('Commission'),
                          color='red', data_func=lambda x: x < 0,
                          data_type=currency)]

        # FIXME: The date here depends on the parameter. We could use
        # it as a property on the view, but then it would not be searchable.
        # Find a better way of handling this sometime in the future.
        if sysparam(self.store).SALE_PAY_COMMISSION_WHEN_CONFIRMED:
            columns.append(SearchColumn('confirm_date', title=_('Date'),
                                        data_type=datetime.date))
        else:
            columns.append(SearchColumn('paid_date', title=_('Date'),
                                        data_type=datetime.date))

        columns.extend([
            Column('payment_amount', title=_('Payment value'),
                   data_type=currency),
            Column('total_amount', title=_('Sale total'),
                   data_type=currency)])

        return columns
Exemple #9
0
 def get_columns(self, *args):
     return [IdentifierColumn('identifier', title=_('Entry #'), sorted=True),
             Column('date', _('Date'), data_type=datetime.date),
             Column('time', _('Time'), data_type=datetime.time),
             Column('description', _('Description'), data_type=str,
                    expand=True),
             ColoredColumn('value', _('Value'), data_type=currency,
                           color='red', data_func=payment_value_colorize,
                           width=140)]
Exemple #10
0
 def get_columns(self):
     return [IdentifierColumn('identifier', title=_('Payment #'), sorted=True),
             Column('paid_date', title=_(u'Date'), data_type=datetime.date,
                    width=150),
             Column('description', title=_(u'Description'),
                    data_type=str, width=150, expand=True),
             ColoredColumn('paid_value', title=_(u'Value'), color='red',
                           data_type=currency, width=100,
                           use_data_model=True,
                           data_func=lambda p: not p.is_outpayment())]
 def _get_columns(self):
     return [
         Column('code', title=_('Code'), data_type=str),
         Column('category_description', title=_('Category'),
                data_type=str, expand=True, ellipsize=Pango.EllipsizeMode.END),
         Column('description', title=_('Description'), data_type=str,
                expand=True, ellipsize=Pango.EllipsizeMode.END, sorted=True),
         Column('unit_description', title=_('Unit'),
                data_type=str),
         Column('needed', title=_('Needed'), data_type=Decimal,
                format_func=format_quantity),
         Column('stock_quantity', title=_('In Stock'), data_type=Decimal,
                format_func=format_quantity),
         ColoredColumn('to_purchase', title=_('To Purchase'),
                       data_type=Decimal, format_func=format_quantity,
                       use_data_model=True, color='red',
                       data_func=self._colorize_to_purchase_col),
         ColoredColumn('to_make', title=_('To Make'), data_type=Decimal,
                       format_func=format_quantity, use_data_model=True,
                       color='red', data_func=self._colorize_to_make_col)]
Exemple #12
0
 def _get_columns(self):
     return [
         Column('description',
                title=_('Description'),
                data_type=str,
                width=300,
                sorted=True),
         ColoredColumn('value',
                       title=_('Amount'),
                       data_type=currency,
                       color='red',
                       data_func=lambda x: x < 0)
     ]
Exemple #13
0
    def _get_produced_items_columns(self):
        # Create a cache for test results, to avoid quering the database for
        # every update.
        self._test_result_cache = dict()

        columns = [
            Column('serial_number',
                   title=_('Serial Number'),
                   data_type=str,
                   expand=True)
        ]

        # Add one column for each test from each product.
        products = dict()
        for item in self.model.get_items():
            if item.product in products:
                continue
            products[item.product] = 1
            for test in item.product.quality_tests:
                columns.append(
                    # This wont just the serial number, since we use format_func
                    # to change the displayed value, but we still need one
                    # property to create the column
                    ColoredColumn('serial_number',
                                  data_type=str,
                                  title=test.description,
                                  format_func=self._format_func,
                                  format_func_data=test,
                                  color='red',
                                  data_func=self._colorize,
                                  use_data_model=True))

        columns.extend([
            Column('test_passed',
                   title=_('Tests Passed'),
                   data_type=bool,
                   visible=False),
            Column('entered_stock',
                   title=_('Entered Stock'),
                   data_type=bool,
                   visible=False)
        ])
        return columns
Exemple #14
0
 def _get_account_columns(self):
     return [
         IdentifierColumn('identifier', sorted=True),
         Column('date',
                title=_(u'Date'),
                data_type=datetime.date,
                width=150),
         Column('description',
                title=_(u'Description'),
                data_type=str,
                width=150,
                expand=True),
         ColoredColumn('value',
                       title=_(u'Value'),
                       color='red',
                       data_type=currency,
                       width=100,
                       data_func=lambda x: x < decimal.Decimal(0))
     ]
Exemple #15
0
 def _get_columns(self):
     cols = [
         Column('description',
                title=_('Description'),
                data_type=str,
                width=300,
                sorted=True)
     ]
     if self._blind_close:
         cols.append(
             Column('user_value',
                    title=_('Amount'),
                    data_type=currency,
                    editable=True))
     else:
         cols.append(
             ColoredColumn('system_value',
                           title=_('Amount'),
                           data_type=currency,
                           color='red',
                           data_func=lambda x: x < 0))
     return cols
Exemple #16
0
class _CreditInfoListSlave(ModelListSlave):
    model_type = Payment
    editor_class = None
    columns = [
        IdentifierColumn('identifier', title=_('Payment #'), sorted=True),
        Column('paid_date',
               title=_(u'Date'),
               data_type=datetime.date,
               width=150),
        Column('description',
               title=_(u'Description'),
               data_type=str,
               width=150,
               expand=True),
        ColoredColumn('paid_value',
                      title=_(u'Value'),
                      color='red',
                      data_type=currency,
                      width=100,
                      use_data_model=True,
                      data_func=lambda p: not p.is_outpayment())
    ]

    def __init__(self, *args, **kwargs):
        ModelListSlave.__init__(self, *args, **kwargs)
        self.set_list_type(ListType.ADDONLY)

    def populate(self):
        return self.parent.person.get_credit_transactions()

    def run_editor(self, store, model):
        store.savepoint('before_run_editor_credit')
        retval = self.run_dialog(CreditEditor,
                                 store=store,
                                 client=self.parent.person)
        if not retval:
            store.rollback_to_savepoint('before_run_editor_credit')
        return retval
Exemple #17
0
def color(data):
    return data % 2 == 0


columns = [
    SequentialColumn(),
    MyColumn('name', tooltip='What about a stupid tooltip?', editable=True),
    Column('age', data_type=int, format_func=format_func, editable=True),
    Column('bonus', data_type=bool, editable=True),
    Column('salary', data_type=currency, editable=True),
    Column('city', visible=True, sorted=True),
    Column('date', data_type=datetime.date),
    Column('time', data_type=datetime.time),
    Column('datetime', data_type=datetime.datetime),
    ColoredColumn('age', data_type=int, color='red', data_func=color),
]

data = (Person('Evandro', 23,
               'Belo Horizonte'), Person('Daniel', 22, 'São Carlos'),
        Person('Henrique', 21,
               'São Carlos'), Person('Gustavo', 23, 'São Jose do Santos'),
        Person('Johan', 23, 'Göteborg'), Person('Lorenzo', 26, 'Granada'))

win = Gtk.Window()
win.set_size_request(850, 300)
win.connect('destroy', Gtk.main_quit)

vbox = Gtk.VBox()
win.add(vbox)