Improve views for taxes, esp. in POS batches
This commit is contained in:
parent
eccb855d09
commit
07b1d0841e
7 changed files with 113 additions and 17 deletions
|
@ -26,6 +26,8 @@ Views for POS batches
|
|||
|
||||
from rattail.db.model import POSBatch, POSBatchRow
|
||||
|
||||
from webhelpers2.html import HTML
|
||||
|
||||
from tailbone.views.batch import BatchMasterView
|
||||
|
||||
|
||||
|
@ -39,7 +41,11 @@ class POSBatchView(BatchMasterView):
|
|||
route_prefix = 'batch.pos'
|
||||
url_prefix = '/batch/pos'
|
||||
creatable = False
|
||||
editable = False
|
||||
cloneable = True
|
||||
refreshable = False
|
||||
rows_deletable = False
|
||||
rows_bulk_deletable = False
|
||||
|
||||
labels = {
|
||||
'terminal_id': "Terminal ID",
|
||||
|
@ -66,8 +72,7 @@ class POSBatchView(BatchMasterView):
|
|||
'params',
|
||||
'rowcount',
|
||||
'sales_total',
|
||||
'tax1_total',
|
||||
'tax2_total',
|
||||
'taxes',
|
||||
'tender_total',
|
||||
'balance',
|
||||
'void',
|
||||
|
@ -89,6 +94,7 @@ class POSBatchView(BatchMasterView):
|
|||
'quantity',
|
||||
'sales_total',
|
||||
'tender_total',
|
||||
'tax_code',
|
||||
'user',
|
||||
]
|
||||
|
||||
|
@ -102,8 +108,7 @@ class POSBatchView(BatchMasterView):
|
|||
'txn_price',
|
||||
'quantity',
|
||||
'sales_total',
|
||||
'tax1_total',
|
||||
'tax2_total',
|
||||
'tax_code',
|
||||
'tender_total',
|
||||
'tender',
|
||||
'void',
|
||||
|
@ -126,8 +131,6 @@ class POSBatchView(BatchMasterView):
|
|||
g.set_link('created_by')
|
||||
|
||||
g.set_type('sales_total', 'currency')
|
||||
g.set_type('tax1_total', 'currency')
|
||||
g.set_type('tax2_total', 'currency')
|
||||
g.set_type('tender_total', 'currency')
|
||||
|
||||
# executed
|
||||
|
@ -149,13 +152,54 @@ class POSBatchView(BatchMasterView):
|
|||
f.set_renderer('customer', self.render_customer)
|
||||
|
||||
f.set_type('sales_total', 'currency')
|
||||
f.set_type('tax1_total', 'currency')
|
||||
f.set_type('tax2_total', 'currency')
|
||||
f.set_type('tender_total', 'currency')
|
||||
f.set_type('tender_total', 'currency')
|
||||
|
||||
f.set_renderer('taxes', self.render_taxes)
|
||||
|
||||
f.set_renderer('balance', lambda batch, field: app.render_currency(batch.get_balance()))
|
||||
|
||||
def render_taxes(self, batch, field):
|
||||
route_prefix = self.get_route_prefix()
|
||||
|
||||
factory = self.get_grid_factory()
|
||||
g = factory(
|
||||
key=f'{route_prefix}.taxes',
|
||||
data=[],
|
||||
columns=[
|
||||
'code',
|
||||
'description',
|
||||
'rate',
|
||||
'total',
|
||||
],
|
||||
)
|
||||
|
||||
return HTML.literal(
|
||||
g.render_buefy_table_element(data_prop='taxesData'))
|
||||
|
||||
def template_kwargs_view(self, **kwargs):
|
||||
kwargs = super().template_kwargs_view(**kwargs)
|
||||
app = self.get_rattail_app()
|
||||
batch = kwargs['instance']
|
||||
|
||||
taxes = []
|
||||
for btax in batch.taxes.values():
|
||||
data = {
|
||||
'uuid': btax.uuid,
|
||||
'code': btax.tax_code,
|
||||
'description': btax.tax.description,
|
||||
'rate': app.render_percent(btax.tax_rate),
|
||||
'total': app.render_currency(btax.tax_total),
|
||||
}
|
||||
taxes.append(data)
|
||||
taxes.sort(key=lambda t: t['code'])
|
||||
kwargs['taxes_data'] = taxes
|
||||
|
||||
kwargs['execute_enabled'] = False
|
||||
kwargs['why_not_execute'] = "POS batch must be executed at POS"
|
||||
|
||||
return kwargs
|
||||
|
||||
def configure_row_grid(self, g):
|
||||
super().configure_row_grid(g)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue