Misc. improvements for ordering batches, purchases

also we now show handler's description when executing batch
This commit is contained in:
Lance Edgar 2021-01-30 13:17:08 -06:00
parent e1e3301fc1
commit fac00e6ecd
8 changed files with 77 additions and 34 deletions

View file

@ -281,9 +281,9 @@ class PurchasingBatchView(BatchMasterView):
if self.creating:
f.replace('vendor', 'vendor_uuid')
f.set_label('vendor_uuid', "Vendor")
widget_type = self.rattail_config.get('tailbone', 'default_widget.vendor',
default='autocomplete')
if widget_type == 'autocomplete':
use_autocomplete = self.rattail_config.getbool(
'rattail', 'vendor.use_autocomplete', default=True)
if use_autocomplete:
vendor_display = ""
if self.request.method == 'POST':
if self.request.POST.get('vendor_uuid'):
@ -293,14 +293,12 @@ class PurchasingBatchView(BatchMasterView):
vendors_url = self.request.route_url('vendors.autocomplete')
f.set_widget('vendor_uuid', forms.widgets.JQueryAutocompleteWidget(
field_display=vendor_display, service_url=vendors_url))
elif widget_type == 'dropdown':
else:
vendors = self.Session.query(model.Vendor)\
.order_by(model.Vendor.id)
vendor_values = [(vendor.uuid, "({}) {}".format(vendor.id, vendor.name))
for vendor in vendors]
f.set_widget('vendor_uuid', dfwidget.SelectWidget(values=vendor_values))
else:
raise NotImplementedError("Unsupported vendor widget type: {}".format(widget_type))
elif self.editing:
f.set_readonly('vendor')

View file

@ -2,7 +2,7 @@
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2020 Lance Edgar
# Copyright © 2010-2021 Lance Edgar
#
# This file is part of Rattail.
#
@ -155,9 +155,11 @@ class OrderingBatchView(PurchasingBatchView):
def configure_form(self, f):
super(OrderingBatchView, self).configure_form(f)
batch = f.model_instance
# purchase
f.remove_field('purchase')
if self.creating or not batch.executed or not batch.purchase:
f.remove_field('purchase')
def get_batch_kwargs(self, batch, mobile=False):
kwargs = super(OrderingBatchView, self).get_batch_kwargs(batch, mobile=mobile)
@ -468,6 +470,11 @@ class OrderingBatchView(PurchasingBatchView):
return self.file_response(path)
def get_execute_success_url(self, batch, result, **kwargs):
if isinstance(result, model.Purchase):
return self.request.route_url('purchases.view', uuid=result.uuid)
return super(OrderingBatchView, self).get_execute_success_url(batch, result, **kwargs)
@classmethod
def _ordering_defaults(cls, config):
route_prefix = cls.get_route_prefix()