Add "declare credit" UI for receiving batch rows
This commit is contained in:
parent
c869516449
commit
5b9e97b4eb
3 changed files with 122 additions and 1 deletions
|
@ -953,6 +953,54 @@ class ReceivingBatchView(PurchasingBatchView):
|
|||
context['parent_title'] = self.get_instance_title(batch)
|
||||
return self.render_to_response('receive_row', context, mobile=mobile)
|
||||
|
||||
def declare_credit(self):
|
||||
"""
|
||||
View for declaring a credit, i.e. converting some "received" or similar
|
||||
quantity, to a credit of some sort.
|
||||
"""
|
||||
row = self.get_row_instance()
|
||||
batch = row.batch
|
||||
possible_credit_types = [
|
||||
'damaged',
|
||||
'expired',
|
||||
]
|
||||
context = {
|
||||
'row': row,
|
||||
'batch': batch,
|
||||
'parent_instance': batch,
|
||||
'instance': row,
|
||||
'instance_title': self.get_row_instance_title(row),
|
||||
'parent_model_title': self.get_model_title(),
|
||||
'product_image_url': self.get_row_image_url(row),
|
||||
'allow_expired': self.handler.allow_expired_credits(),
|
||||
'allow_cases': self.handler.allow_cases(),
|
||||
}
|
||||
|
||||
schema = DeclareCreditForm().bind(session=self.Session())
|
||||
form = forms.Form(schema=schema, request=self.request)
|
||||
form.set_widget('credit_type', forms.widgets.JQuerySelectWidget(
|
||||
values=[(m, m) for m in possible_credit_types]))
|
||||
form.set_widget('quantity', forms.widgets.CasesUnitsWidget(
|
||||
amount_required=True, one_amount_only=True))
|
||||
form.set_type('expiration_date', 'date_jquery')
|
||||
|
||||
if form.validate(newstyle=True):
|
||||
|
||||
# handler takes care of the row receiving logic for us
|
||||
kwargs = dict(form.validated)
|
||||
kwargs['cases'] = kwargs['quantity']['cases']
|
||||
kwargs['units'] = kwargs['quantity']['units']
|
||||
del kwargs['quantity']
|
||||
self.handler.declare_credit(row, **kwargs)
|
||||
|
||||
return self.redirect(self.get_row_action_url('view', row))
|
||||
|
||||
context['form'] = form
|
||||
context['dform'] = form.make_deform_form()
|
||||
context['parent_url'] = self.get_action_url('view', batch)
|
||||
context['parent_title'] = self.get_instance_title(batch)
|
||||
return self.render_to_response('declare_credit', context)
|
||||
|
||||
def transform_unit_row(self):
|
||||
"""
|
||||
View which transforms the given row, which is assumed to associate with
|
||||
|
@ -1790,6 +1838,11 @@ class ReceivingBatchView(PurchasingBatchView):
|
|||
config.add_view(cls, attr='mobile_receive_row', route_name='mobile.{}.receive_row'.format(route_prefix),
|
||||
permission='{}.edit_row'.format(permission_prefix))
|
||||
|
||||
# declare credit for row
|
||||
config.add_route('{}.declare_credit'.format(route_prefix), '{}/{{uuid}}/rows/{{row_uuid}}/declare-credit'.format(url_prefix))
|
||||
config.add_view(cls, attr='declare_credit', route_name='{}.declare_credit'.format(route_prefix),
|
||||
permission='{}.edit_row'.format(permission_prefix))
|
||||
|
||||
if cls.allow_truck_dump:
|
||||
|
||||
# add TD child batch, from invoice file
|
||||
|
@ -1887,6 +1940,22 @@ class ReceiveRowForm(colander.MappingSchema):
|
|||
quick_receive = colander.SchemaNode(colander.Boolean())
|
||||
|
||||
|
||||
class DeclareCreditForm(colander.MappingSchema):
|
||||
|
||||
credit_type = colander.SchemaNode(colander.String(),
|
||||
validator=colander.OneOf([
|
||||
'damaged',
|
||||
'expired',
|
||||
# 'mispick',
|
||||
]))
|
||||
|
||||
quantity = forms.types.ProductQuantity()
|
||||
|
||||
expiration_date = colander.SchemaNode(colander.Date(),
|
||||
widget=dfwidget.TextInputWidget(),
|
||||
missing=colander.null)
|
||||
|
||||
|
||||
class MobileReceivingForm(colander.MappingSchema):
|
||||
|
||||
row = colander.SchemaNode(colander.String(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue