Add beginnings of mobile receiving views
Very incomplete, not much is supported yet, but this is a start..
This commit is contained in:
parent
6ed752d477
commit
3930ed9a16
5 changed files with 235 additions and 17 deletions
|
@ -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),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue