def create_filters(self): self.set_text_field_columns(['description']) self.executer.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
class PaymentFlowHistoryDialog(BasicDialog): title = _(u'Payment Flow History Dialog') desc = _("Select a date or a range to be visualised in the report:") size = (-1, -1) model_type = PaymentFlowDay def __init__(self, store): """A dialog to print the PaymentFlowHistoryReport report. :param store: a store """ self.store = store BasicDialog.__init__(self, header_text='<b>%s</b>' % self.desc, title=self.title) self._setup_widgets() # # BasicDialog # def confirm(self): state = self._date_filter.get_state() from kiwi.db.query import DateQueryState if isinstance(state, DateQueryState): start, end = state.date, state.date else: start, end = state.start, state.end results = PaymentFlowDay.get_flow_history(self.store, start, end) if not results: info(_('No payment history found.')) return False print_report(PaymentFlowHistoryReport, payment_histories=results) return True # # Private # def _setup_widgets(self): self.ok_button.set_label(gtk.STOCK_PRINT) 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()
def create_filters(self): self.set_text_field_columns(['description']) self.executer.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
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)
class SintegraDialog(BasicDialog): title = _('Fiscal Printer History') def __init__(self, store): BasicDialog.__init__(self, title=self.title) self.justify_label(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() def confirm(self): start = self.date_filter.get_start_date() end = self.date_filter.get_end_date() filename = save(_("Save Sintegra file"), self.get_toplevel(), "sintegra-%s.txt" % (start.strftime('%Y-%m'), )) if not filename: return try: generator = StoqlibSintegraGenerator(self.store, start, end) generator.write(filename) except SintegraError, e: warning(str(e)) return self.close()
class TillHistoryDialog(SearchDialog): size = (780, -1) table = TillEntry selection_mode = gtk.SELECTION_MULTIPLE searchbar_labels = _('Till Entries matching:') title = _('Till history') # # SearchDialog # def get_columns(self, *args): return [Column('identifier', _('Number'), data_type=int, width=100, format='%03d', 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)] 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) def setup_widgets(self): self.results.set_visible_rows(10) self.results.connect('has-rows', self._has_rows) self._add_editor_button(_('Cash _Add...'), CashAdvanceEditor, STOQ_MONEY) self._add_editor_button(_('Cash _In...'), CashInEditor, STOQ_MONEY_ADD) self._add_editor_button(_('Cash _Out...'), CashOutEditor, STOQ_MONEY_REMOVE) self.print_button = gtk.Button(None, gtk.STOCK_PRINT, True) self.print_button.set_property("use-stock", True) self.print_button.connect('clicked', self._print_button_clicked) self.action_area.set_layout(gtk.BUTTONBOX_START) self.action_area.pack_end(self.print_button, False, False, 6) self.print_button.show() self.print_button.set_sensitive(False) # # Private API # def _add_editor_button(self, name, editor_class, stock): button = self.add_button(name, stock=stock) button.connect('clicked', self._run_editor, editor_class) button.show() def _print_button_clicked(self, button): till_entries = self.results.get_selected_rows() or list(self.results) print_report(TillHistoryReport, self.results, till_entries, filters=self.search.get_search_filters()) def _run_editor(self, button, editor_class): with api.trans() as store: run_dialog(editor_class, self, store) if store.committed: self.search.refresh() self.results.unselect_all() if len(self.results): self.results.select(self.results[-1]) def _has_rows(self, results, obj): self.print_button.set_sensitive(obj)
class FinancialReportDialog(BasicDialog): title = _('Financial Report Dialog') def __init__(self, store): self.store = store self.date_filter = DateSearchFilter(_('Year:')) self.date_filter.clear_options() self._populate_date_filter(self.date_filter) self.date_filter.select() self.date_filter.set_use_date_entries(False) BasicDialog.__init__(self, title=self.title) self.justify_label(gtk.JUSTIFY_CENTER) self.ok_button.set_label(_("Generate")) self.add(self.date_filter) self.date_filter.show() def confirm(self): start = self.date_filter.get_start_date() if start is None: warning(_("There are no transactions yet")) return f = FinancialIntervalReport(self.store, start.year) if not f.run(): return temporary = tempfile.NamedTemporaryFile( # Translators: This will be part of a filename prefix=_('stoq-yearly-report'), suffix='.xls', delete=False) f.write(temporary) sse = SpreadSheetExporter() sse.export_temporary(temporary) self.close() # # Private # def _populate_date_filter(self, date_filter): transaction = self.store.find(AccountTransaction).order_by( AccountTransaction.date).first() if transaction is None: return for i in range(transaction.date.year, datetime.date.today().year + 1): year = datetime.datetime(i, 1, 1) date_filter.add_option_fixed_interval( _('Year %d') % (i, ), year, year.replace(month=12, day=31), position=0) def _date_filter_query(self, search_table, column): executer = StoqlibQueryExecuter(self.store) executer.set_filter_columns(self.date_filter, [column]) executer.set_table(search_table) return executer.search([self.date_filter.get_state()])