mirror of
https://github.com/grocy/grocy.git
synced 2025-08-18 03:25:50 +00:00
Value information (#1045)
* viewjs stockoverview: add total value to stock overview * view stockoverview.blade: add Value column * refresh stockOverview value column * Removed the total units info * Properly format the total stock value number * Added new localization strings * Resolved merge conflict Co-authored-by: Bernd Bestel <bernd@berrnd.de>
This commit is contained in:
@@ -1915,3 +1915,9 @@ msgstr ""
|
|||||||
|
|
||||||
msgid "Consume exact amount"
|
msgid "Consume exact amount"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Value"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "%s total value"
|
||||||
|
msgstr ""
|
||||||
|
@@ -6,6 +6,7 @@ SELECT
|
|||||||
p.tare_weight AS tare_weight,
|
p.tare_weight AS tare_weight,
|
||||||
p.enable_tare_weight_handling AS enable_tare_weight_handling,
|
p.enable_tare_weight_handling AS enable_tare_weight_handling,
|
||||||
sc.amount AS amount,
|
sc.amount AS amount,
|
||||||
|
sc.value as value,
|
||||||
sc.product_id AS product_id,
|
sc.product_id AS product_id,
|
||||||
sc.best_before_date AS best_before_date,
|
sc.best_before_date AS best_before_date,
|
||||||
EXISTS(SELECT id FROM stock_missing_products_including_opened WHERE id = sc.product_id) AS product_missing,
|
EXISTS(SELECT id FROM stock_missing_products_including_opened WHERE id = sc.product_id) AS product_missing,
|
||||||
@@ -40,6 +41,7 @@ SELECT
|
|||||||
p.tare_weight AS tare_weight,
|
p.tare_weight AS tare_weight,
|
||||||
p.enable_tare_weight_handling AS enable_tare_weight_handling,
|
p.enable_tare_weight_handling AS enable_tare_weight_handling,
|
||||||
sc.amount AS amount,
|
sc.amount AS amount,
|
||||||
|
sc.value as value,
|
||||||
sc.product_id AS product_id,
|
sc.product_id AS product_id,
|
||||||
sc.best_before_date AS best_before_date,
|
sc.best_before_date AS best_before_date,
|
||||||
EXISTS(SELECT id FROM stock_missing_products_including_opened WHERE id = sc.product_id) AS product_missing,
|
EXISTS(SELECT id FROM stock_missing_products_including_opened WHERE id = sc.product_id) AS product_missing,
|
||||||
|
@@ -5,9 +5,9 @@
|
|||||||
{ 'orderable': false, 'targets': 0 },
|
{ 'orderable': false, 'targets': 0 },
|
||||||
{ 'searchable': false, "targets": 0 },
|
{ 'searchable': false, "targets": 0 },
|
||||||
{ 'searchable': false, "targets": 0 },
|
{ 'searchable': false, "targets": 0 },
|
||||||
{ 'visible': false, 'targets': 5 },
|
|
||||||
{ 'visible': false, 'targets': 6 },
|
{ 'visible': false, 'targets': 6 },
|
||||||
{ 'visible': false, 'targets': 7 }
|
{ 'visible': false, 'targets': 7 },
|
||||||
|
{ 'visible': false, 'targets': 8 }
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
$('#stock-overview-table tbody').removeClass("d-none");
|
$('#stock-overview-table tbody').removeClass("d-none");
|
||||||
@@ -25,7 +25,7 @@ $("#location-filter").on("change", function()
|
|||||||
value = "xx" + value + "xx";
|
value = "xx" + value + "xx";
|
||||||
}
|
}
|
||||||
|
|
||||||
stockOverviewTable.column(5).search(value).draw();
|
stockOverviewTable.column(6).search(value).draw();
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#product-group-filter").on("change", function()
|
$("#product-group-filter").on("change", function()
|
||||||
@@ -40,7 +40,7 @@ $("#product-group-filter").on("change", function()
|
|||||||
value = "xx" + value + "xx";
|
value = "xx" + value + "xx";
|
||||||
}
|
}
|
||||||
|
|
||||||
stockOverviewTable.column(7).search(value).draw();
|
stockOverviewTable.column(8).search(value).draw();
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#status-filter").on("change", function()
|
$("#status-filter").on("change", function()
|
||||||
@@ -54,7 +54,7 @@ $("#status-filter").on("change", function()
|
|||||||
// Transfer CSS classes of selected element to dropdown element (for background)
|
// Transfer CSS classes of selected element to dropdown element (for background)
|
||||||
$(this).attr("class", $("#" + $(this).attr("id") + " option[value='" + value + "']").attr("class") + " form-control");
|
$(this).attr("class", $("#" + $(this).attr("id") + " option[value='" + value + "']").attr("class") + " form-control");
|
||||||
|
|
||||||
stockOverviewTable.column(6).search(value).draw();
|
stockOverviewTable.column(7).search(value).draw();
|
||||||
});
|
});
|
||||||
|
|
||||||
$(".status-filter-message").on("click", function()
|
$(".status-filter-message").on("click", function()
|
||||||
@@ -70,9 +70,9 @@ $("#clear-filter-button").on("click", function()
|
|||||||
$("#status-filter").val("all");
|
$("#status-filter").val("all");
|
||||||
$("#product-group-filter").val("all");
|
$("#product-group-filter").val("all");
|
||||||
$("#location-filter").val("all");
|
$("#location-filter").val("all");
|
||||||
stockOverviewTable.column(5).search("").draw();
|
|
||||||
stockOverviewTable.column(6).search("").draw();
|
stockOverviewTable.column(6).search("").draw();
|
||||||
stockOverviewTable.column(7).search("").draw();
|
stockOverviewTable.column(7).search("").draw();
|
||||||
|
stockOverviewTable.column(8).search("").draw();
|
||||||
stockOverviewTable.search("").draw();
|
stockOverviewTable.search("").draw();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -204,7 +204,20 @@ function RefreshStatistics()
|
|||||||
{
|
{
|
||||||
amountSum += parseInt(element.amount);
|
amountSum += parseInt(element.amount);
|
||||||
});
|
});
|
||||||
$("#info-current-stock").text(__n(result.length, '%s Product', '%s Products'));
|
|
||||||
|
if (!Grocy.FeatureFlags.GROCY_FEATURE_FLAG_STOCK_PRICE_TRACKING)
|
||||||
|
{
|
||||||
|
$("#info-current-stock").text(__n(result.length, '%s Product', '%s Products'));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var valueSum = 0;
|
||||||
|
result.forEach(element =>
|
||||||
|
{
|
||||||
|
valueSum += parseInt(element.value);
|
||||||
|
});
|
||||||
|
$("#info-current-stock").text(__n(result.length, '%s Product', '%s Products') + ", " + __t('%s total value', valueSum.toLocaleString(undefined, { style: "currency", currency: Grocy.Currency })));
|
||||||
|
}
|
||||||
},
|
},
|
||||||
function(xhr)
|
function(xhr)
|
||||||
{
|
{
|
||||||
@@ -276,6 +289,7 @@ function RefreshProductRow(productId)
|
|||||||
$('#product-' + productId + '-amount').text(result.stock_amount);
|
$('#product-' + productId + '-amount').text(result.stock_amount);
|
||||||
$('#product-' + productId + '-consume-all-button').attr('data-consume-amount', result.stock_amount);
|
$('#product-' + productId + '-consume-all-button').attr('data-consume-amount', result.stock_amount);
|
||||||
$('#product-' + productId + '-factor-purchase-amount').text(__t('( %s', result.stock_factor_purchase_amount));
|
$('#product-' + productId + '-factor-purchase-amount').text(__t('( %s', result.stock_factor_purchase_amount));
|
||||||
|
$('#product-' + productId + '-value').text(result.stock_value);
|
||||||
$('#product-' + productId + '-next-best-before-date').text(result.next_best_before_date);
|
$('#product-' + productId + '-next-best-before-date').text(result.next_best_before_date);
|
||||||
$('#product-' + productId + '-next-best-before-date-timeago').attr('datetime', result.next_best_before_date);
|
$('#product-' + productId + '-next-best-before-date-timeago').attr('datetime', result.next_best_before_date);
|
||||||
|
|
||||||
|
@@ -128,6 +128,7 @@
|
|||||||
<th>{{ $__t('Product') }}</th>
|
<th>{{ $__t('Product') }}</th>
|
||||||
<th>{{ $__t('Product group') }}</th>
|
<th>{{ $__t('Product group') }}</th>
|
||||||
<th>{{ $__t('Amount') }}</th>
|
<th>{{ $__t('Amount') }}</th>
|
||||||
|
<th class="@if(!GROCY_FEATURE_FLAG_STOCK_PRICE_TRACKING) d-none @endif">{{ $__t('Value') }}</th>
|
||||||
<th class="@if(!GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING) d-none @endif">{{ $__t('Next best before date') }}</th>
|
<th class="@if(!GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING) d-none @endif">{{ $__t('Next best before date') }}</th>
|
||||||
<th class="d-none">Hidden location</th>
|
<th class="d-none">Hidden location</th>
|
||||||
<th class="d-none">Hidden status</th>
|
<th class="d-none">Hidden status</th>
|
||||||
@@ -308,6 +309,9 @@
|
|||||||
@endif
|
@endif
|
||||||
@endif
|
@endif
|
||||||
</td>
|
</td>
|
||||||
|
<td>
|
||||||
|
<span id="product-{{ $currentStockEntry->product_id }}-value" class="locale-number locale-number-currency">{{ $currentStockEntry->value }}</span>
|
||||||
|
</td>
|
||||||
<td class="@if(!GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING) d-none @endif">
|
<td class="@if(!GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING) d-none @endif">
|
||||||
<span id="product-{{ $currentStockEntry->product_id }}-next-best-before-date">{{ $currentStockEntry->best_before_date }}</span>
|
<span id="product-{{ $currentStockEntry->product_id }}-next-best-before-date">{{ $currentStockEntry->best_before_date }}</span>
|
||||||
<time id="product-{{ $currentStockEntry->product_id }}-next-best-before-date-timeago"
|
<time id="product-{{ $currentStockEntry->product_id }}-next-best-before-date-timeago"
|
||||||
|
Reference in New Issue
Block a user