Source code for stoqlib.reporting.till
# -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4
##
## Copyright (C) 2005, 2007 Async Open Source <http://www.async.com.br>
## All rights reserved
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU Lesser General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU Lesser General Public License for more details.
##
## You should have received a copy of the GNU Lesser General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., or visit: http://www.gnu.org/.
##
## Author(s): Stoq Team <stoq-devel@async.com.br>
##
##
""" Till report implementation """
from storm.expr import And
from stoqlib.domain.till import TillClosedView
from stoqlib.lib.translation import stoqlib_gettext as _
from stoqlib.reporting.report import ObjectListReport, HTMLReport
N_ = _
[docs]class TillHistoryReport(ObjectListReport):
"""This report show a list of the till history returned by a SearchBar,
listing both its description, date and value.
"""
title = _("Till History Listing")
main_object_name = (_("till entry"), _("till entries"))
summary = ['value']
[docs]class TillDailyMovementReport(HTMLReport):
"""This report shows all the financial transactions on till
"""
template_filename = 'till/till.html'
title = _('Daily Movement')
complete_header = False
def __init__(self, filename, store, branch, daterange, data_object):
self.branch = branch
self.start_date = daterange[0]
self.end_date = daterange[1]
self.sales = data_object.sales
self.lonely_in_payments = data_object.lonely_in_payments
self.purchases = data_object.purchases
self.lonely_out_payments = data_object.lonely_out_payments
self.return_sales = data_object.return_sales
self.till_supplies = data_object.till_supplies
self.till_removals = data_object.till_removals
self.method_summary = data_object.method_summary
self.card_summary = data_object.card_summary
queries = [TillClosedView.opening_date >= self.start_date,
TillClosedView.opening_date <= self.end_date]
if branch:
queries.append(TillClosedView.branch_id == branch.id)
self.tills = store.find(TillClosedView, And(queries))
HTMLReport.__init__(self, filename)
#
# HTMLReport
#
[docs] def get_subtitle(self):
"""Returns a subtitle text
"""
if self.end_date:
return _('Till movement on %s to %s') % (self.start_date.strftime('%x'),
self.end_date.strftime('%x'))
return _('Till movement on %s') % self.start_date
[docs] def get_namespace(self):
if self.branch is None:
return dict(notes=[_('All Branches')])
return dict(notes=[self.branch.get_description()])
[docs] def has_in_payments(self):
return bool(self.sales or self.lonely_in_payments)
[docs] def has_out_payments(self):
return bool(self.purchases or self.lonely_out_payments or self.return_sales)
[docs] def has_till_entries(self):
return bool(self.till_supplies or self.till_removals)