Avoid "None" when rendering product UOM field

This commit is contained in:
Lance Edgar 2023-10-18 21:24:37 -05:00
parent 919d8d109f
commit 13565d1c45

View file

@ -393,138 +393,6 @@ class ProductView(MasterView):
g.set_link('item_id')
g.set_link('description')
def configure_common_form(self, f):
super().configure_common_form(f)
product = f.model_instance
# unit_size
f.set_type('unit_size', 'quantity')
# unit_of_measure
f.set_enum('unit_of_measure', self.enum.UNIT_OF_MEASURE)
f.set_label('unit_of_measure', "Unit of Measure")
# packs
if self.creating:
f.remove_field('packs')
elif self.viewing and product.packs:
f.set_renderer('packs', self.render_packs)
f.set_label('packs', "Pack Items")
else:
f.remove_field('packs')
# pack_size
if self.viewing and not product.is_pack_item():
f.remove_field('pack_size')
else:
f.set_type('pack_size', 'quantity')
# default_pack
if self.viewing and not product.is_pack_item():
f.remove_field('default_pack')
# unit
if self.creating:
f.remove_field('unit')
elif self.viewing and product.is_pack_item():
f.set_renderer('unit', self.render_unit)
f.set_label('unit', "Unit Item")
else:
f.remove_field('unit')
# suggested_price
if self.creating:
f.remove_field('suggested_price')
else:
f.set_readonly('suggested_price')
f.set_renderer('suggested_price', self.render_suggested_price)
# regular_price
if self.creating:
f.remove_field('regular_price')
else:
f.set_readonly('regular_price')
f.set_renderer('regular_price', self.render_regular_price)
# current_price
if self.creating:
f.remove_field('current_price')
else:
f.set_readonly('current_price')
f.set_renderer('current_price', self.render_current_price)
# current_price_ends
if self.creating:
f.remove_field('current_price_ends')
else:
f.set_readonly('current_price_ends')
f.set_renderer('current_price_ends', self.render_current_price_ends)
# sale_price
if self.creating:
f.remove_field('sale_price')
else:
f.set_readonly('sale_price')
f.set_renderer('sale_price', self.render_price)
# sale_price_ends
if self.creating:
f.remove_field('sale_price_ends')
else:
f.set_readonly('sale_price_ends')
f.set_renderer('sale_price_ends', self.render_sale_price_ends)
# tpr_price
if self.creating:
f.remove_field('tpr_price')
else:
f.set_readonly('tpr_price')
f.set_renderer('tpr_price', self.render_price)
# tpr_price_ends
if self.creating:
f.remove_field('tpr_price_ends')
else:
f.set_readonly('tpr_price_ends')
f.set_renderer('tpr_price_ends', self.render_tpr_price_ends)
# vendor
if self.creating:
f.remove_field('vendor')
else:
f.set_readonly('vendor')
f.set_label('vendor', "Preferred Vendor")
# cost
if self.creating:
f.remove_field('cost')
else:
f.set_readonly('cost')
f.set_label('cost', "Preferred Unit Cost")
f.set_renderer('cost', self.render_cost)
# last_sold
if self.creating:
f.remove_field('last_sold')
else:
f.set_readonly('last_sold')
# inventory_on_hand
if self.creating:
f.remove_field('inventory_on_hand')
else:
f.set_readonly('inventory_on_hand')
f.set_renderer('inventory_on_hand', self.render_inventory_on_hand)
f.set_label('inventory_on_hand', "On Hand")
# inventory_on_order
if self.creating:
f.remove_field('inventory_on_order')
else:
f.set_readonly('inventory_on_order')
f.set_renderer('inventory_on_order', self.render_inventory_on_order)
f.set_label('inventory_on_order', "On Order")
def render_cost(self, product, field):
cost = getattr(product, field)
if not cost:
@ -824,6 +692,135 @@ class ProductView(MasterView):
super().configure_form(f)
product = f.model_instance
# unit_size
f.set_type('unit_size', 'quantity')
# unit_of_measure
f.set_enum('unit_of_measure', self.enum.UNIT_OF_MEASURE)
f.set_renderer('unit_of_measure', self.render_unit_of_measure)
f.set_label('unit_of_measure', "Unit of Measure")
# packs
if self.creating:
f.remove_field('packs')
elif self.viewing and product.packs:
f.set_renderer('packs', self.render_packs)
f.set_label('packs', "Pack Items")
else:
f.remove_field('packs')
# pack_size
if self.viewing and not product.is_pack_item():
f.remove_field('pack_size')
else:
f.set_type('pack_size', 'quantity')
# default_pack
if self.viewing and not product.is_pack_item():
f.remove_field('default_pack')
# unit
if self.creating:
f.remove_field('unit')
elif self.viewing and product.is_pack_item():
f.set_renderer('unit', self.render_unit)
f.set_label('unit', "Unit Item")
else:
f.remove_field('unit')
# suggested_price
if self.creating:
f.remove_field('suggested_price')
else:
f.set_readonly('suggested_price')
f.set_renderer('suggested_price', self.render_suggested_price)
# regular_price
if self.creating:
f.remove_field('regular_price')
else:
f.set_readonly('regular_price')
f.set_renderer('regular_price', self.render_regular_price)
# current_price
if self.creating:
f.remove_field('current_price')
else:
f.set_readonly('current_price')
f.set_renderer('current_price', self.render_current_price)
# current_price_ends
if self.creating:
f.remove_field('current_price_ends')
else:
f.set_readonly('current_price_ends')
f.set_renderer('current_price_ends', self.render_current_price_ends)
# sale_price
if self.creating:
f.remove_field('sale_price')
else:
f.set_readonly('sale_price')
f.set_renderer('sale_price', self.render_price)
# sale_price_ends
if self.creating:
f.remove_field('sale_price_ends')
else:
f.set_readonly('sale_price_ends')
f.set_renderer('sale_price_ends', self.render_sale_price_ends)
# tpr_price
if self.creating:
f.remove_field('tpr_price')
else:
f.set_readonly('tpr_price')
f.set_renderer('tpr_price', self.render_price)
# tpr_price_ends
if self.creating:
f.remove_field('tpr_price_ends')
else:
f.set_readonly('tpr_price_ends')
f.set_renderer('tpr_price_ends', self.render_tpr_price_ends)
# vendor
if self.creating:
f.remove_field('vendor')
else:
f.set_readonly('vendor')
f.set_label('vendor', "Preferred Vendor")
# cost
if self.creating:
f.remove_field('cost')
else:
f.set_readonly('cost')
f.set_label('cost', "Preferred Unit Cost")
f.set_renderer('cost', self.render_cost)
# last_sold
if self.creating:
f.remove_field('last_sold')
else:
f.set_readonly('last_sold')
# inventory_on_hand
if self.creating:
f.remove_field('inventory_on_hand')
else:
f.set_readonly('inventory_on_hand')
f.set_renderer('inventory_on_hand', self.render_inventory_on_hand)
f.set_label('inventory_on_hand', "On Hand")
# inventory_on_order
if self.creating:
f.remove_field('inventory_on_order')
else:
f.set_readonly('inventory_on_order')
f.set_renderer('inventory_on_order', self.render_inventory_on_order)
f.set_label('inventory_on_order', "On Order")
# department
if self.creating or self.editing:
if 'department' in f.fields:
@ -998,6 +995,14 @@ class ProductView(MasterView):
return product
def render_unit_of_measure(self, product, field):
uom = getattr(product, field)
if uom is None:
return
if uom == self.enum.UNIT_OF_MEASURE_NONE:
return
return self.enum.UNIT_OF_MEASURE.get(uom, uom)
def render_department(self, product, field):
department = product.department
if not department: