Add beginnings of mobile receiving views

Very incomplete, not much is supported yet, but this is a start..
This commit is contained in:
Lance Edgar 2017-02-18 13:34:31 -06:00
parent 6ed752d477
commit 3930ed9a16
5 changed files with 235 additions and 17 deletions

View file

@ -240,14 +240,16 @@ class PurchaseBatchView(BatchMasterView):
fs.department.set(readonly=True)
fs.purchase.set(readonly=True)
def eligible_purchases(self):
uuid = self.request.GET.get('vendor_uuid')
vendor = Session.query(model.Vendor).get(uuid) if uuid else None
def eligible_purchases(self, vendor_uuid=None, mode=None):
if not vendor_uuid:
vendor_uuid = self.request.GET.get('vendor_uuid')
vendor = Session.query(model.Vendor).get(vendor_uuid) if vendor_uuid else None
if not vendor:
return {'error': "Must specify a vendor."}
mode = self.request.GET.get('mode')
mode = int(mode) if mode and mode.isdigit() else None
if mode is None:
mode = self.request.GET.get('mode')
mode = int(mode) if mode and mode.isdigit() else None
if not mode or mode not in self.enum.PURCHASE_BATCH_MODE:
return {'error': "Unknown mode: {}".format(mode)}
@ -888,6 +890,37 @@ class PurchaseBatchView(BatchMasterView):
self.mobile = True
return self.render_to_response('mobile_index', {})
def mobile_create(self):
"""
View for creating a new purchasing batch via mobile
"""
# TODO: make this dynamic somehow, support other modes
mode = self.enum.PURCHASE_BATCH_MODE_RECEIVING
data = {'mode': mode}
vendor = None
if self.request.method == 'POST' and self.request.POST.get('vendor'):
vendor = self.Session.query(model.Vendor).get(self.request.POST['vendor'])
if vendor:
data['vendor'] = vendor
if self.request.POST.get('purchase'):
purchase = self.get_purchase(self.request.POST['purchase'])
if purchase:
# TODO: these kwargs need help!
batch = self.handler.make_batch(self.Session(),
mode=mode, vendor=vendor,
store=self.rattail_config.get_store(self.Session()),
buyer=self.request.user.employee,
created_by=self.request.user)
self.request.session.flash("Created new purchasing batch: {}".format(batch))
return self.redirect(self.request.route_url('purchases.batch.mobile_create'))
data['mode_title'] = self.enum.PURCHASE_BATCH_MODE[mode].capitalize()
if vendor:
purchases = self.eligible_purchases(vendor.uuid, mode=mode)
data['purchases'] = [(p['key'], p['display']) for p in purchases['purchases']]
return self.render_to_response('mobile_create', data)
@classmethod
def defaults(cls, config):
route_prefix = cls.get_route_prefix()
@ -896,11 +929,16 @@ class PurchaseBatchView(BatchMasterView):
model_key = cls.get_model_key()
model_title = cls.get_model_title()
# mobile
# mobile index
config.add_route('{}.mobile'.format(route_prefix), '/mobile{}'.format(url_prefix))
config.add_view(cls, attr='mobile_index', route_name='{}.mobile'.format(route_prefix),
permission='{}.list'.format(permission_prefix))
# mobile create
config.add_route('{}.mobile_create'.format(route_prefix), '/mobile{}/new'.format(url_prefix))
config.add_view(cls, attr='mobile_create', route_name='{}.mobile_create'.format(route_prefix),
permission='{}.create'.format(permission_prefix))
# eligible purchases (AJAX)
config.add_route('{}.eligible_purchases'.format(route_prefix), '{}/eligible-purchases'.format(url_prefix))
config.add_view(cls, attr='eligible_purchases', route_name='{}.eligible_purchases'.format(route_prefix),