Add some awareness of suspend/resume for POS batch
This commit is contained in:
parent
d66dd5f199
commit
1a15d70568
|
@ -53,21 +53,21 @@ class POSBatchView(BatchMasterView):
|
||||||
|
|
||||||
grid_columns = [
|
grid_columns = [
|
||||||
'id',
|
'id',
|
||||||
'terminal_id',
|
|
||||||
'customer',
|
|
||||||
'created',
|
'created',
|
||||||
'created_by',
|
'terminal_id',
|
||||||
|
'cashier',
|
||||||
|
'customer',
|
||||||
'rowcount',
|
'rowcount',
|
||||||
'sales_total',
|
'sales_total',
|
||||||
'void',
|
'void',
|
||||||
'status_code',
|
'status_code',
|
||||||
'executed',
|
'executed',
|
||||||
'executed_by',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
form_fields = [
|
form_fields = [
|
||||||
'id',
|
'id',
|
||||||
'terminal_id',
|
'terminal_id',
|
||||||
|
'cashier',
|
||||||
'customer',
|
'customer',
|
||||||
'params',
|
'params',
|
||||||
'rowcount',
|
'rowcount',
|
||||||
|
@ -121,13 +121,26 @@ class POSBatchView(BatchMasterView):
|
||||||
|
|
||||||
def configure_grid(self, g):
|
def configure_grid(self, g):
|
||||||
super().configure_grid(g)
|
super().configure_grid(g)
|
||||||
|
model = self.model
|
||||||
|
|
||||||
# terminal_id
|
# terminal_id
|
||||||
g.set_label('terminal_id', "Terminal")
|
g.set_label('terminal_id', "Terminal")
|
||||||
if 'terminal_id' in g.filters:
|
if 'terminal_id' in g.filters:
|
||||||
g.filters['terminal_id'].label = self.labels.get('terminal_id', "Terminal ID")
|
g.filters['terminal_id'].label = self.labels.get('terminal_id', "Terminal ID")
|
||||||
|
|
||||||
|
# cashier
|
||||||
|
def join_cashier(q):
|
||||||
|
return q.outerjoin(model.Employee,
|
||||||
|
model.Employee.uuid == model.POSBatch.cashier_uuid)\
|
||||||
|
.outerjoin(model.Person,
|
||||||
|
model.Person.uuid == model.Employee.person_uuid)
|
||||||
|
g.set_joiner('cashier', join_cashier)
|
||||||
|
g.set_sorter('cashier', model.Person.display_name)
|
||||||
|
|
||||||
|
# customer
|
||||||
g.set_link('customer')
|
g.set_link('customer')
|
||||||
|
g.set_joiner('customer', lambda q: q.outerjoin(model.Customer))
|
||||||
|
g.set_sorter('customer', model.Customer.name)
|
||||||
|
|
||||||
g.set_link('created')
|
g.set_link('created')
|
||||||
g.set_link('created_by')
|
g.set_link('created_by')
|
||||||
|
@ -144,20 +157,26 @@ class POSBatchView(BatchMasterView):
|
||||||
def grid_extra_class(self, batch, i):
|
def grid_extra_class(self, batch, i):
|
||||||
if batch.void:
|
if batch.void:
|
||||||
return 'warning'
|
return 'warning'
|
||||||
if batch.training_mode:
|
if (batch.training_mode
|
||||||
|
or batch.status_code == batch.STATUS_SUSPENDED):
|
||||||
return 'notice'
|
return 'notice'
|
||||||
|
|
||||||
def configure_form(self, f):
|
def configure_form(self, f):
|
||||||
super().configure_form(f)
|
super().configure_form(f)
|
||||||
app = self.get_rattail_app()
|
app = self.get_rattail_app()
|
||||||
|
|
||||||
|
# cashier
|
||||||
|
f.set_renderer('cashier', self.render_employee)
|
||||||
|
|
||||||
|
# customer
|
||||||
f.set_renderer('customer', self.render_customer)
|
f.set_renderer('customer', self.render_customer)
|
||||||
|
|
||||||
f.set_type('sales_total', 'currency')
|
f.set_type('sales_total', 'currency')
|
||||||
f.set_type('tender_total', 'currency')
|
f.set_type('tender_total', 'currency')
|
||||||
f.set_type('tender_total', 'currency')
|
f.set_type('tender_total', 'currency')
|
||||||
|
|
||||||
f.set_renderer('taxes', self.render_taxes)
|
if self.viewing:
|
||||||
|
f.set_renderer('taxes', self.render_taxes)
|
||||||
|
|
||||||
f.set_renderer('balance', lambda batch, field: app.render_currency(batch.get_balance()))
|
f.set_renderer('balance', lambda batch, field: app.render_currency(batch.get_balance()))
|
||||||
|
|
||||||
|
@ -257,8 +276,8 @@ class POSBatchView(BatchMasterView):
|
||||||
"Make transactions (ring up sales)")
|
"Make transactions (ring up sales)")
|
||||||
# config.add_tailbone_permission('pos', 'pos.resume',
|
# config.add_tailbone_permission('pos', 'pos.resume',
|
||||||
# "Resume previously-suspended transaction")
|
# "Resume previously-suspended transaction")
|
||||||
# config.add_tailbone_permission('pos', 'pos.suspend',
|
config.add_tailbone_permission('pos', 'pos.suspend',
|
||||||
# "Suspend current transaction")
|
"Suspend current transaction")
|
||||||
config.add_tailbone_permission('pos', 'pos.swap_customer',
|
config.add_tailbone_permission('pos', 'pos.swap_customer',
|
||||||
"Swap customer for current transaction")
|
"Swap customer for current transaction")
|
||||||
config.add_tailbone_permission('pos', 'pos.void_txn',
|
config.add_tailbone_permission('pos', 'pos.void_txn',
|
||||||
|
|
|
@ -1010,6 +1010,14 @@ class MasterView(View):
|
||||||
items.append(HTML.tag('li', c=[tags.link_to(text, url)]))
|
items.append(HTML.tag('li', c=[tags.link_to(text, url)]))
|
||||||
return HTML.tag('ul', c=items)
|
return HTML.tag('ul', c=items)
|
||||||
|
|
||||||
|
def render_employee(self, obj, field):
|
||||||
|
employee = getattr(obj, field)
|
||||||
|
if not employee:
|
||||||
|
return ""
|
||||||
|
text = str(employee)
|
||||||
|
url = self.request.route_url('employees.view', uuid=employee.uuid)
|
||||||
|
return tags.link_to(text, url)
|
||||||
|
|
||||||
def render_customer(self, obj, field):
|
def render_customer(self, obj, field):
|
||||||
customer = getattr(obj, field)
|
customer = getattr(obj, field)
|
||||||
if not customer:
|
if not customer:
|
||||||
|
|
Loading…
Reference in a new issue