Add basic "receive" handler logic for receiving API
This commit is contained in:
parent
337422a619
commit
0715bd6321
4 changed files with 150 additions and 44 deletions
|
@ -47,6 +47,7 @@ from webhelpers2.html import tags, HTML
|
|||
|
||||
from tailbone import forms, grids
|
||||
from tailbone.views.purchasing import PurchasingBatchView
|
||||
from tailbone.forms.receiving import ReceiveRow as MobileReceivingForm
|
||||
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
@ -1455,6 +1456,8 @@ class ReceivingBatchView(PurchasingBatchView):
|
|||
if self.request.has_perm('{}.create_row'.format(permission_prefix)):
|
||||
schema = MobileReceivingForm().bind(session=self.Session())
|
||||
update_form = forms.Form(schema=schema, request=self.request)
|
||||
# TODO: this seems hacky, but avoids "complex" date value parsing
|
||||
update_form.set_widget('expiration_date', dfwidget.TextInputWidget())
|
||||
if update_form.validate(newstyle=True):
|
||||
row = self.Session.query(model.PurchaseBatchRow).get(update_form.validated['row'])
|
||||
mode = update_form.validated['mode']
|
||||
|
@ -1569,6 +1572,8 @@ class ReceivingBatchView(PurchasingBatchView):
|
|||
if self.request.has_perm('{}.create_row'.format(permission_prefix)):
|
||||
schema = MobileReceivingForm().bind(session=self.Session())
|
||||
update_form = forms.Form(schema=schema, request=self.request)
|
||||
# TODO: this seems hacky, but avoids "complex" date value parsing
|
||||
update_form.set_widget('expiration_date', dfwidget.TextInputWidget())
|
||||
if update_form.validate(newstyle=True):
|
||||
row = self.Session.query(model.PurchaseBatchRow).get(update_form.validated['row'])
|
||||
mode = update_form.validated['mode']
|
||||
|
@ -1794,22 +1799,6 @@ class MobileNewReceivingFromPO(colander.MappingSchema):
|
|||
purchase = colander.SchemaNode(colander.String())
|
||||
|
||||
|
||||
# TODO: this is a stopgap measure to fix an obvious bug, which exists when the
|
||||
# session is not provided by the view at runtime (i.e. when it was instead
|
||||
# being provided by the type instance, which was created upon app startup).
|
||||
@colander.deferred
|
||||
def valid_purchase_batch_row(node, kw):
|
||||
session = kw['session']
|
||||
def validate(node, value):
|
||||
row = session.query(model.PurchaseBatchRow).get(value)
|
||||
if not row:
|
||||
raise colander.Invalid(node, "Batch row not found")
|
||||
if row.batch.executed:
|
||||
raise colander.Invalid(node, "Batch has already been executed")
|
||||
return row.uuid
|
||||
return validate
|
||||
|
||||
|
||||
class ReceiveRowForm(colander.MappingSchema):
|
||||
|
||||
mode = colander.SchemaNode(colander.String(),
|
||||
|
@ -1845,29 +1834,5 @@ class DeclareCreditForm(colander.MappingSchema):
|
|||
missing=colander.null)
|
||||
|
||||
|
||||
class MobileReceivingForm(colander.MappingSchema):
|
||||
|
||||
row = colander.SchemaNode(colander.String(),
|
||||
validator=valid_purchase_batch_row)
|
||||
|
||||
mode = colander.SchemaNode(colander.String(),
|
||||
validator=colander.OneOf([
|
||||
'received',
|
||||
'damaged',
|
||||
'expired',
|
||||
# 'mispick',
|
||||
]))
|
||||
|
||||
cases = colander.SchemaNode(colander.Decimal(), missing=None)
|
||||
|
||||
units = colander.SchemaNode(colander.Decimal(), missing=None)
|
||||
|
||||
expiration_date = colander.SchemaNode(colander.Date(),
|
||||
widget=dfwidget.TextInputWidget(),
|
||||
missing=colander.null)
|
||||
|
||||
quick_receive = colander.SchemaNode(colander.Boolean())
|
||||
|
||||
|
||||
def includeme(config):
|
||||
ReceivingBatchView.defaults(config)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue