Expose "true cost" and "true margin" columns for products grid
This commit is contained in:
parent
15c47fb593
commit
d096909a95
|
@ -97,6 +97,8 @@ class ProductsView(MasterView):
|
||||||
'department',
|
'department',
|
||||||
'vendor',
|
'vendor',
|
||||||
'cost',
|
'cost',
|
||||||
|
'true_cost',
|
||||||
|
'true_margin',
|
||||||
'regular_price',
|
'regular_price',
|
||||||
'current_price',
|
'current_price',
|
||||||
]
|
]
|
||||||
|
@ -234,6 +236,21 @@ class ProductsView(MasterView):
|
||||||
g.sorters['subdepartment'] = g.make_sorter(model.Subdepartment.name)
|
g.sorters['subdepartment'] = g.make_sorter(model.Subdepartment.name)
|
||||||
g.sorters['vendor'] = g.make_sorter(model.Vendor.name)
|
g.sorters['vendor'] = g.make_sorter(model.Vendor.name)
|
||||||
|
|
||||||
|
ProductTrueCost = orm.aliased(model.ProductVolatile)
|
||||||
|
ProductTrueMargin = orm.aliased(model.ProductVolatile)
|
||||||
|
|
||||||
|
# true_cost
|
||||||
|
g.set_joiner('true_cost', lambda q: q.outerjoin(ProductTrueCost))
|
||||||
|
g.set_filter('true_cost', ProductTrueCost.true_cost)
|
||||||
|
g.set_sorter('true_cost', ProductTrueCost.true_cost)
|
||||||
|
g.set_renderer('true_cost', self.render_true_cost)
|
||||||
|
|
||||||
|
# true_margin
|
||||||
|
g.set_joiner('true_margin', lambda q: q.outerjoin(ProductTrueMargin))
|
||||||
|
g.set_filter('true_margin', ProductTrueMargin.true_margin)
|
||||||
|
g.set_sorter('true_margin', ProductTrueMargin.true_margin)
|
||||||
|
g.set_renderer('true_margin', self.render_true_margin)
|
||||||
|
|
||||||
# on_hand
|
# on_hand
|
||||||
g.set_sorter('on_hand', model.ProductInventory.on_hand)
|
g.set_sorter('on_hand', model.ProductInventory.on_hand)
|
||||||
g.set_filter('on_hand', model.ProductInventory.on_hand)
|
g.set_filter('on_hand', model.ProductInventory.on_hand)
|
||||||
|
@ -455,6 +472,20 @@ class ProductsView(MasterView):
|
||||||
return ""
|
return ""
|
||||||
return "${:0.2f}".format(cost.unit_cost)
|
return "${:0.2f}".format(cost.unit_cost)
|
||||||
|
|
||||||
|
def render_true_cost(self, product, field):
|
||||||
|
if not product.volatile:
|
||||||
|
return ""
|
||||||
|
if product.volatile.true_cost is None:
|
||||||
|
return ""
|
||||||
|
return "${:0.3f}".format(product.volatile.true_cost)
|
||||||
|
|
||||||
|
def render_true_margin(self, product, field):
|
||||||
|
if not product.volatile:
|
||||||
|
return ""
|
||||||
|
if product.volatile.true_margin is None:
|
||||||
|
return ""
|
||||||
|
return "{:0.3f} %".format(product.volatile.true_margin * 100)
|
||||||
|
|
||||||
def render_on_hand(self, product, column):
|
def render_on_hand(self, product, column):
|
||||||
inventory = product.inventory
|
inventory = product.inventory
|
||||||
if not inventory:
|
if not inventory:
|
||||||
|
|
Loading…
Reference in a new issue