예제 #1
0
    def add_filter_by_attribute(self,
                                attr,
                                title,
                                data_type,
                                valid_values=None,
                                callback=None,
                                use_having=False):
        """Add a filter accordingly to the attributes specified

        :param attr: attribute that will be filtered. This can be either the
          name of the attribute or the attribute itself.
        :param title: the title of the filter that will be visible in the
                      interface
        :param data_type: the attribute type (str, bool, decimal, etc)
        :param callback: the callback function that will be triggered
        :param use_having: use having expression in the query
        """
        if data_type is not bool:
            title += ':'

        if data_type == datetime.date:
            filter = DateSearchFilter(title)
            if valid_values:
                filter.clear_options()
                filter.add_custom_options()
                for opt in valid_values:
                    filter.add_option(opt)
                filter.select(valid_values[0])

        elif (data_type == decimal.Decimal or data_type == int
              or data_type == currency):
            filter = NumberSearchFilter(title)
            if data_type != int:
                filter.set_digits(2)
        elif data_type == str:
            if valid_values:
                filter = ComboSearchFilter(title, valid_values)
            else:
                filter = StringSearchFilter(title)
            filter.enable_advanced()
        elif data_type == bool:
            filter = BoolSearchFilter(title)
        else:
            raise NotImplementedError(title, data_type)

        filter.set_removable()
        self.add_filter(filter,
                        columns=[attr],
                        callback=callback,
                        use_having=use_having)

        if data_type is not bool:
            label = filter.get_title_label()
            label.set_alignment(1.0, 0.5)
            self.label_group.add_widget(label)
        combo = filter.get_mode_combo()
        if combo:
            self.combo_group.add_widget(combo)

        return filter
예제 #2
0
 def search_for_date(self, date):
     dfilter = DateSearchFilter(_("Expected receival date"))
     dfilter.set_removable()
     dfilter.select(data=DateSearchFilter.Type.USER_DAY)
     self.add_filter(dfilter, columns=["expected_receival_date"])
     dfilter.start_date.set_date(date)
     self.refresh()
예제 #3
0
    def create_filters(self):
        self.set_text_field_columns(['client_name', 'removed_by',
                                     'identifier_str'])

        # Date
        self.date_filter = DateSearchFilter(_('Date:'))
        self.add_filter(self.date_filter, columns=['expire_date', 'open_date'])
예제 #4
0
    def _setup_widgets(self):
        # Branches combo
        items = api.get_branches_for_filter(self.store)
        self.branch.prefill(items)

        # Daterange filter
        self.date_filter = DateSearchFilter(_(u'Date:'))
        self.date_filter.clear_options()
        self.date_filter.add_custom_options()
        for option in [Today, Yesterday, LastWeek, LastMonth]:
            self.date_filter.add_option(option)
        self.date_filter.select(position=0)
        self.daterange_hbox.pack_start(self.date_filter, False, False, 0)
        self.date_filter.show_all()

        # Setting report lists' columns
        self.sales_list.set_columns(self._get_sales_columns())
        self.inpayments_list.set_columns(self._get_lonely_payments_columns())
        self.purchases_list.set_columns(self._get_purchases_columns())
        self.outpayments_list.set_columns(self._get_lonely_payments_columns())
        self.return_sales_list.set_columns(self._get_return_sales_columns())
        self.supplies_list.set_columns(self._get_till_columns())
        self.removals_list.set_columns(self._get_till_columns())
        self.permethod_list.set_columns(self._get_permethod_columns())
        self.percard_list.set_columns(self._get_percard_columns())

        # Print button is insensitive, until the first report is generated
        self.print_button.set_sensitive(False)

        self._setup_summary_labels()
예제 #5
0
 def search_for_date(self, date):
     dfilter = DateSearchFilter(_("Expected receival date"))
     dfilter.set_removable()
     dfilter.mode.select_item_by_position(5)
     self.add_filter(dfilter, columns=["expected_receival_date"])
     dfilter.start_date.set_date(date)
     self.refresh()
예제 #6
0
    def create_filters(self):
        self.set_text_field_columns(['name'])
        self.search.set_query(self.executer_query)

        date_filter = DateSearchFilter(_('Date:'))
        self.search.add_filter(date_filter)
        self.date_filter = date_filter
예제 #7
0
파일: salesearch.py 프로젝트: sarkis89/stoq
 def create_filters(self):
     self._date_filter = DateSearchFilter(_("Date:"))
     self._date_filter.select(data=DateSearchFilter.Type.USER_INTERVAL)
     self.add_filter(self._date_filter, columns=[Sale.confirm_date])
     self.search.set_summary_label('quantity',
                                   label=_(u'Total:'),
                                   format='<b>%s</b>')
예제 #8
0
    def create_filters(self):
        self.set_text_field_columns(
            ['salesperson_name', 'description', 'code'])

        self._date_filter = DateSearchFilter("Data:")
        self.add_filter(self._date_filter,
                        SearchFilterPosition.BOTTOM,
                        columns=[Sale.confirm_date])
예제 #9
0
파일: payable.py 프로젝트: tmaxter/stoq
 def search_for_date(self, date):
     self.main_filter.select(None)
     dfilter = DateSearchFilter(_("Paid or due date"))
     dfilter.set_removable()
     dfilter.mode.select_item_by_position(5)
     self.add_filter(dfilter, columns=["paid_date", "due_date"])
     dfilter.start_date.set_date(date)
     self.search.refresh()
예제 #10
0
    def create_filters(self):
        self.set_text_field_columns(
            ['source_branch_name', 'destination_branch_name'])

        # Date
        self.date_filter = DateSearchFilter(_('Date:'))
        self.add_filter(self.date_filter,
                        columns=['open_date', 'receival_date'])
예제 #11
0
 def search_for_date(self, date):
     self.main_filter.combo.select(self._not_delivered_filter_item)
     dfilter = DateSearchFilter(_("Estimated finish"))
     dfilter.set_removable()
     dfilter.select(data=DateSearchFilter.Type.USER_DAY)
     self.add_filter(dfilter, columns=["estimated_finish"])
     dfilter.start_date.set_date(date)
     self.refresh()
예제 #12
0
파일: payable.py 프로젝트: pjamil/stoq
 def search_for_date(self, date):
     self.main_filter.select(None)
     dfilter = DateSearchFilter(_("Paid or due date"))
     dfilter.set_removable()
     dfilter.select(data=DateSearchFilter.Type.USER_DAY)
     self.add_filter(dfilter, columns=["paid_date", "due_date"])
     dfilter.start_date.set_date(date)
     self.refresh()
예제 #13
0
    def create_filters(self):
        self.set_text_field_columns(['description', 'identifier_str'])
        self.search.set_query(self.executer_query)

        # Date
        date_filter = DateSearchFilter(_('Date:'))
        date_filter.select(0)
        columns = [Payment.due_date, Payment.open_date, Payment.paid_date]
        self.add_filter(date_filter, columns=columns)
        self.date_filter = date_filter
예제 #14
0
    def create_filters(self):
        self.set_text_field_columns(['description'])

        self.date_filter = DateSearchFilter(_('Date:'))
        self.date_filter.select(Today)
        self.add_filter(self.date_filter, columns=['date'])
        # add summary label
        value_format = '<b>%s</b>'
        total_label = '<b>%s</b>' % api.escape(_(u'Total:'))
        self.search.set_summary_label('value', total_label, value_format)
예제 #15
0
 def create_filters(self):
     # Date
     date_filter = DateSearchFilter(_('Date:'))
     date_filter.select(Today)
     columns = [
         ProductHistory.sold_date, ProductHistory.received_date,
         ProductHistory.production_date, ProductHistory.decreased_date
     ]
     self.add_filter(date_filter, columns=columns)
     self.date_filter = date_filter
예제 #16
0
    def _setup_widgets(self):
        self.date_filter = DateSearchFilter(_(u'Date:'))
        # FIXME: add a remove_option method in DateSearchFilter.
        self.date_filter.clear_options()
        self.date_filter.add_custom_options()
        for option in [Today, Yesterday, LastWeek, LastMonth]:
            self.date_filter.add_option(option)
        self.date_filter.select(position=0)

        self.vbox.pack_start(self.date_filter, False, False)
        self.date_filter.show_all()
예제 #17
0
    def create_filters(self):
        self.set_text_field_columns(['description', 'message'])
        self.search.set_query(self.executer_query)

        # Date
        date_filter = DateSearchFilter(_("Date:"))
        self.search.add_filter(date_filter)
        self.date_filter = date_filter
        if self._date:
            date_filter.mode.select_item_by_position(5)
            date_filter.start_date.set_date(self._date)
            self.search.refresh()
예제 #18
0
    def create_filters(self):
        self.set_text_field_columns(['description'])
        self.search.set_query(self.executer_query)

        # Date
        date_filter = DateSearchFilter(_('Date:'))
        self.search.add_filter(date_filter)
        self.date_filter = date_filter

        # Branch
        branch_filter = self.create_branch_filter(_('In Branch:'))
        self.add_filter(branch_filter, columns=[])
        self.branch_filter = branch_filter
예제 #19
0
    def create_filters(self):
        # Extra filters (that are not columns)
        self.search.add_filter_option(SellableCategory.description,
                                      title=_(u"Product category"),
                                      data_type=str)
        self.search.add_filter_option(Sellable.description,
                                      title=_(u"Product"),
                                      data_type=str)

        # Date
        date_filter = DateSearchFilter(_('Date:'))
        date_filter.select(Today)
        self.add_filter(date_filter, columns=[Sale.confirm_date])
예제 #20
0
파일: searchslave.py 프로젝트: tmaxter/stoq
    def add_filter_by_column(self, column):
        """Add a filter accordingly to the column specification

        :param column: a SearchColumn instance
        """
        title = column.get_search_label()
        if column.data_type is not bool:
            title += ':'

        if column.data_type == datetime.date:
            filter = DateSearchFilter(title)
            if column.valid_values:
                filter.clear_options()
                filter.add_custom_options()
                for opt in column.valid_values:
                    filter.add_option(opt)
                filter.select(column.valid_values[0])

        elif (column.data_type == decimal.Decimal or column.data_type == int
              or column.data_type == currency):
            filter = NumberSearchFilter(title)
            if column.data_type != int:
                filter.set_digits(2)
        elif column.data_type == str:
            if column.valid_values:
                filter = ComboSearchFilter(title, column.valid_values)
            else:
                filter = StringSearchFilter(title)
                filter.enable_advanced()
        elif column.data_type == bool:
            filter = BoolSearchFilter(title)
        else:
            raise NotImplementedError(title, column.data_type)

        filter.set_removable()
        attr = column.search_attribute or column.attribute
        self.add_filter(filter,
                        columns=[attr],
                        callback=column.search_func,
                        use_having=column.use_having)

        if column.data_type is not bool:
            label = filter.get_title_label()
            label.set_alignment(1.0, 0.5)
            self.label_group.add_widget(label)
        combo = filter.get_mode_combo()
        if combo:
            self.combo_group.add_widget(combo)

        return filter
예제 #21
0
    def __init__(self, store):
        BasicDialog.__init__(self, title=self.title)
        self.main_label.set_justify(gtk.JUSTIFY_CENTER)

        self.store = store
        self.ok_button.set_label(_("Generate"))

        self.date_filter = DateSearchFilter(_('Month:'))
        self.date_filter.set_use_date_entries(False)
        self.date_filter.clear_options()
        self._populate_date_filter(self.date_filter)
        self.date_filter.select()

        self.add(self.date_filter)
        self.date_filter.show()
예제 #22
0
    def create_filters(self):
        self.set_text_field_columns(['salesperson_name', 'identifier_str'])

        self._salesperson_filter = self.create_salesperson_filter(_("Sold by:"))
        self.add_filter(self._salesperson_filter, SearchFilterPosition.TOP,
                        callback=self._get_salesperson_query)

        # Adding a filter by date with custom interval
        self._date_filter = DateSearchFilter(_("Date:"))
        self._date_filter.select(data=DateSearchFilter.Type.USER_INTERVAL)
        if sysparam.get_bool('SALE_PAY_COMMISSION_WHEN_CONFIRMED'):
            self.add_filter(self._date_filter, SearchFilterPosition.BOTTOM,
                            columns=[self.search_spec.confirm_date])
        else:
            self.add_filter(self._date_filter, SearchFilterPosition.BOTTOM,
                            columns=[self.search_spec.paid_date])
예제 #23
0
 def _add_date_filter(self):
     self.date_filter = DateSearchFilter(_('Date:'))
     self.date_filter.clear_options()
     self.date_filter.add_option(Any, 0)
     year = datetime.datetime.today().year
     month_names = get_month_names()
     for i, month in enumerate(month_names):
         name = month_names[i]
         option = type(name + 'Option', (MonthOption, ),
                       {'name': _(name),
                        'month': i + 1,
                        'year': year})
         self.date_filter.add_option(option, i + 1)
     self.date_filter.add_custom_options()
     self.date_filter.mode.select_item_by_position(0)
     self.search.add_filter(self.date_filter)
예제 #24
0
    def create_filters(self):
        self.set_text_field_columns(['medic_name', 'description', 'code'])

        # Dont set a limit here, otherwise it might break the summary
        executer = self.search.get_query_executer()
        executer.set_limit(-1)

        branch_filter = self.create_branch_filter(_('In Branch:'))
        self.add_filter(branch_filter, SearchFilterPosition.TOP,
                        columns=[Sale.branch_id])

        self._date_filter = DateSearchFilter(_("Date:"))
        self._date_filter.select(data=DateSearchFilter.Type.USER_INTERVAL)
        self.add_filter(self._date_filter, SearchFilterPosition.BOTTOM,
                        columns=[Sale.confirm_date])
        self.search.set_summary_label('total', label=_(u'Total:'),
                                      format='<b>%s</b>')
예제 #25
0
    def create_filters(self):
        self.set_text_field_columns(['description'])
        self.search.set_query(self.executer_query)

        # Date
        date_filter = DateSearchFilter(_('Date:'))
        date_filter.select(Today)
        self.add_filter(date_filter)
        self.date_filter = date_filter

        # Branch
        branch_filter = self.create_branch_filter(_('In branch:'))
        branch_filter.select(None)
        self.add_filter(branch_filter,
                        columns=[],
                        position=SearchFilterPosition.TOP)
        self.branch_filter = branch_filter
예제 #26
0
    def create_filters(self):
        self.set_text_field_columns([
            'source_branch_name', 'destination_branch_name', 'identifier_str'
        ])

        # Date
        self.date_filter = DateSearchFilter(_('Date:'))
        self.add_filter(self.date_filter, columns=['open_date', 'finish_date'])

        # Status
        self.status_filter = ComboSearchFilter(_('With status:'),
                                               self._get_status_options())
        self.status_filter.select('pending')
        executer = self.search.get_query_executer()
        executer.add_filter_query_callback(self.status_filter,
                                           self._get_status_query)
        self.add_filter(self.status_filter, position=SearchFilterPosition.TOP)
예제 #27
0
    def create_filters(self):
        self.set_text_field_columns(['description'])

        # Date
        date_filter = DateSearchFilter(_('Date:'))
        date_filter.select(Today)
        columns = [ProductHistory.sold_date,
                   ProductHistory.received_date,
                   ProductHistory.production_date,
                   ProductHistory.decreased_date]
        self.add_filter(date_filter, columns=columns)
        self.date_filter = date_filter

        # Branch
        self.branch_filter = self.create_branch_filter(_('In branch:'))
        self.add_filter(self.branch_filter, columns=['branch'],
                        position=SearchFilterPosition.TOP)
        # remove 'Any' option from branch_filter
        self.branch_filter.combo.remove_text(0)
예제 #28
0
    def create_filters(self):
        self.set_text_field_columns([
            'source_branch_name', 'destination_branch_name', 'identifier_str'
        ])

        # Date
        self.date_filter = DateSearchFilter(_('Date:'))
        self.add_filter(self.date_filter,
                        columns=['open_date', 'receival_date'])

        # Branch
        self.branch_filter = self.create_branch_filter(_('To branch:'))
        self.add_filter(self.branch_filter, columns=['destination_branch_id'])

        # Status
        statuses = self._get_status_values()
        self.status_filter = ComboSearchFilter(_('With status:'), statuses)
        self.status_filter.select(None)
        self.add_filter(self.status_filter,
                        columns=['status'],
                        position=SearchFilterPosition.TOP)
예제 #29
0
    def _setup_slaves(self):
        self.search = SearchSlave(self._get_columns(),
                                  restore_name=self.__class__.__name__,
                                  search_spec=QuotationView,
                                  store=self.store)
        self.attach_slave('search_group_holder', self.search)

        self.search.set_text_field_columns(['supplier_name', 'identifier_str'])
        filter = self.search.get_primary_filter()
        filter.set_label(_(u'Supplier:'))
        self.search.focus_search_entry()
        self.search.results.connect('selection-changed',
                                    self._on_searchlist__selection_changed)
        self.search.results.connect('row-activated',
                                    self._on_searchlist__row_activated)

        date_filter = DateSearchFilter(_('Date:'))
        self.search.add_filter(date_filter, columns=['open_date', 'deadline'])

        self.edit_button.set_sensitive(False)
        self.remove_button.set_sensitive(False)
예제 #30
0
 def create_filters(self):
     self.search.set_query(self.executer_query)
     date_filter = DateSearchFilter(_('Date:'))
     self.search.add_filter(date_filter)
     self.date_filter = date_filter