Feat: Report Sale by Zone
This commit is contained in:
72
report.py
72
report.py
@@ -206,3 +206,75 @@ class ReportSaleByUser(ReportSaleAbstract, ModelView):
|
||||
def _column_id(cls, tables):
|
||||
sale = tables['sale.sale']
|
||||
return Min(sale.id)
|
||||
|
||||
|
||||
class ReportSaleByZone(ReportSaleAbstract, ModelView):
|
||||
"""Report Sale Group by Zone"""
|
||||
__name__ = 'sale_fast_food.reporting.zone'
|
||||
|
||||
zone = fields.Many2One('sale.zone', "Zone")
|
||||
table = fields.Many2One('sale.table', "Table")
|
||||
completed_sales = fields.Integer("Completed Sales")
|
||||
untaxed_amount = fields.Numeric(
|
||||
"Untaxed Amount", digits='currency', readonly=True)
|
||||
tax_amount = fields.Numeric(
|
||||
"Tax Amount", digits='currency', readonly=True)
|
||||
total_amount = fields.Numeric(
|
||||
"Total Amount", digits='currency', readonly=True)
|
||||
total_tip_amount = fields.Numeric(
|
||||
"Total Tip Amount", digits='currency', readonly=True)
|
||||
currency = fields.Many2One(
|
||||
'currency.currency', 'Currency', required=True)
|
||||
|
||||
@classmethod
|
||||
def _joins(cls):
|
||||
pool = Pool()
|
||||
tables = {}
|
||||
|
||||
Sale = pool.get('sale.sale')
|
||||
tables['sale.sale'] = sale = Sale.__table__()
|
||||
|
||||
Table = pool.get('sale.table')
|
||||
tables['sale.table'] = table = Table.__table__()
|
||||
|
||||
Zone = pool.get('sale.zone')
|
||||
tables['sale.table'] = zone = Zone.__table__()
|
||||
|
||||
from_item = sale.left_join(
|
||||
table,
|
||||
condition=table.id == sale.table
|
||||
).left_join(
|
||||
zone,
|
||||
condition=zone.id == table.zone
|
||||
)
|
||||
|
||||
return from_item, tables
|
||||
|
||||
@classmethod
|
||||
def _columns(cls, tables):
|
||||
sale = tables['sale.sale']
|
||||
return super(ReportSaleByZone, cls)._columns(tables) + [
|
||||
sale.zone.as_('zone'),
|
||||
sale.table.as_('table'),
|
||||
Count(Literal(1)).as_('completed_sales'),
|
||||
Sum(sale.untaxed_amount_cache).as_('untaxed_amount'),
|
||||
Sum(sale.tax_amount_cache).as_('tax_amount'),
|
||||
Sum(sale.total_amount_cache).as_('total_amount'),
|
||||
Sum(sale.total_tip_cache).as_('total_tip_amount'),
|
||||
sale.currency.as_('currency'),
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def _group_by(cls, tables):
|
||||
sale = tables['sale.sale']
|
||||
|
||||
return [
|
||||
sale.zone,
|
||||
sale.table,
|
||||
sale.currency
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def _column_id(cls, tables):
|
||||
sale = tables['sale.sale']
|
||||
return Min(sale.id)
|
||||
|
||||
Reference in New Issue
Block a user