Move some custorder logic to handler; allow force-swap of product selection
This commit is contained in:
parent
b0fa559760
commit
4d33e3dcbe
3 changed files with 24 additions and 60 deletions
|
@ -551,61 +551,12 @@ class CustomerOrderView(MasterView):
|
|||
return self.info_for_product(batch, data, product)
|
||||
|
||||
def uom_choices_for_product(self, product):
|
||||
choices = []
|
||||
|
||||
# Each
|
||||
if not product or not product.weighed:
|
||||
unit_name = self.enum.UNIT_OF_MEASURE[self.enum.UNIT_OF_MEASURE_EACH]
|
||||
choices.append({'key': self.enum.UNIT_OF_MEASURE_EACH,
|
||||
'value': unit_name})
|
||||
|
||||
# Pound
|
||||
if not product or product.weighed:
|
||||
unit_name = self.enum.UNIT_OF_MEASURE[self.enum.UNIT_OF_MEASURE_POUND]
|
||||
choices.append({
|
||||
'key': self.enum.UNIT_OF_MEASURE_POUND,
|
||||
'value': unit_name,
|
||||
})
|
||||
|
||||
# Case
|
||||
case_text = None
|
||||
case_size = self.handler.get_case_size_for_product(product)
|
||||
if case_size is None:
|
||||
case_text = "{} (× ?? {})".format(
|
||||
self.enum.UNIT_OF_MEASURE[self.enum.UNIT_OF_MEASURE_CASE],
|
||||
unit_name)
|
||||
elif case_size > 1:
|
||||
case_text = "{} (× {} {})".format(
|
||||
self.enum.UNIT_OF_MEASURE[self.enum.UNIT_OF_MEASURE_CASE],
|
||||
pretty_quantity(case_size),
|
||||
unit_name)
|
||||
if case_text:
|
||||
choices.append({'key': self.enum.UNIT_OF_MEASURE_CASE,
|
||||
'value': case_text})
|
||||
|
||||
return choices
|
||||
return self.handler.uom_choices_for_product(product)
|
||||
|
||||
def info_for_product(self, batch, data, product):
|
||||
app = self.get_rattail_app()
|
||||
products = app.get_products_handler()
|
||||
data = {
|
||||
'uuid': product.uuid,
|
||||
'upc': six.text_type(product.upc),
|
||||
'upc_pretty': product.upc.pretty(),
|
||||
'unit_price_display': self.get_unit_price_display(product),
|
||||
'full_description': product.full_description,
|
||||
'url': self.request.route_url('products.view', uuid=product.uuid),
|
||||
'image_url': products.get_image_url(product),
|
||||
'uom_choices': self.uom_choices_for_product(product),
|
||||
}
|
||||
|
||||
key = self.rattail_config.product_key()
|
||||
if key == 'upc':
|
||||
data['key'] = data['upc_pretty']
|
||||
else:
|
||||
data['key'] = getattr(product, key, data['upc_pretty'])
|
||||
|
||||
return data
|
||||
info = self.handler.get_product_info(batch, product)
|
||||
info['url'] = self.request.route_url('products.view', uuid=info['uuid'])
|
||||
return info
|
||||
|
||||
def normalize_batch(self, batch):
|
||||
return {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue