mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Refactor available quantity calculation for BOM table
This commit is contained in:
parent
2a24fc43e7
commit
481350b138
@ -691,8 +691,24 @@ function loadBomTable(table, options={}) {
|
|||||||
|
|
||||||
setupFilterList('bom', $(table));
|
setupFilterList('bom', $(table));
|
||||||
|
|
||||||
// Construct the table columns
|
function availableQuantity(row) {
|
||||||
|
|
||||||
|
// Base stock
|
||||||
|
var available = row.available_stock;
|
||||||
|
|
||||||
|
// Substitute stock
|
||||||
|
available += (row.available_substitute_stock || 0);
|
||||||
|
|
||||||
|
// Variant stock
|
||||||
|
if (row.allow_variants) {
|
||||||
|
available += (row.available_variant_stock || 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return available;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Construct the table columns
|
||||||
var cols = [];
|
var cols = [];
|
||||||
|
|
||||||
if (options.editable) {
|
if (options.editable) {
|
||||||
@ -807,11 +823,10 @@ function loadBomTable(table, options={}) {
|
|||||||
var url = `/part/${row.sub_part_detail.pk}/?display=part-stock`;
|
var url = `/part/${row.sub_part_detail.pk}/?display=part-stock`;
|
||||||
|
|
||||||
// Calculate total "available" (unallocated) quantity
|
// Calculate total "available" (unallocated) quantity
|
||||||
var base_stock = row.available_stock;
|
|
||||||
var substitute_stock = row.available_substitute_stock || 0;
|
var substitute_stock = row.available_substitute_stock || 0;
|
||||||
var variant_stock = row.allow_variants ? (row.available_variant_stock || 0) : 0;
|
var variant_stock = row.allow_variants ? (row.available_variant_stock || 0) : 0;
|
||||||
|
|
||||||
var available_stock = base_stock + substitute_stock + variant_stock;
|
var available_stock = availableQuantity(row);
|
||||||
|
|
||||||
var text = `${available_stock}`;
|
var text = `${available_stock}`;
|
||||||
|
|
||||||
@ -923,7 +938,7 @@ function loadBomTable(table, options={}) {
|
|||||||
formatter: function(value, row) {
|
formatter: function(value, row) {
|
||||||
var can_build = 0;
|
var can_build = 0;
|
||||||
|
|
||||||
var available = row.available_stock + (row.available_substitute_stock || 0) + (row.available_variant_stock || 0);
|
var available = availableQuantity(row);
|
||||||
|
|
||||||
if (row.quantity > 0) {
|
if (row.quantity > 0) {
|
||||||
can_build = available / row.quantity;
|
can_build = available / row.quantity;
|
||||||
@ -937,11 +952,11 @@ function loadBomTable(table, options={}) {
|
|||||||
var cb_b = 0;
|
var cb_b = 0;
|
||||||
|
|
||||||
if (rowA.quantity > 0) {
|
if (rowA.quantity > 0) {
|
||||||
cb_a = (rowA.available_stock + rowA.available_substitute_stock) / rowA.quantity;
|
cb_a = availableQuantity(rowA) / rowA.quantity;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rowB.quantity > 0) {
|
if (rowB.quantity > 0) {
|
||||||
cb_b = (rowB.available_stock + rowB.available_substitute_stock) / rowB.quantity;
|
cb_b = availableQuantity(rowB) / rowB.quantity;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (cb_a > cb_b) ? 1 : -1;
|
return (cb_a > cb_b) ? 1 : -1;
|
||||||
|
Loading…
Reference in New Issue
Block a user