diff --git a/localization/de.php b/localization/de.php
index 60503791..50e8d46c 100644
--- a/localization/de.php
+++ b/localization/de.php
@@ -265,6 +265,8 @@ return array(
'The current picture will be deleted when you save the product' => 'Das aktuelle Bild wird beim Speichern des Produkts gelöscht',
'Select file' => 'Datei auswählen',
'Image of product #1' => 'Bild des Produkts #1',
+ 'This product cannot be deleted because it is in stock, please remove the stock amount first.' => 'Dieses Produkt kann nicht gelöscht werden, da es auf Lager ist, bitte zuerst den Bestand entfernen.',
+ 'Delete not possible' => 'Löschen nicht möglich',
//Constants
'manually' => 'Manuell',
diff --git a/public/viewjs/products.js b/public/viewjs/products.js
index 79aec640..838c725d 100644
--- a/public/viewjs/products.js
+++ b/public/viewjs/products.js
@@ -35,33 +35,54 @@ $(document).on('click', '.product-delete-button', function (e)
var objectName = $(e.currentTarget).attr('data-product-name');
var objectId = $(e.currentTarget).attr('data-product-id');
- bootbox.confirm({
- message: L('Are you sure to delete product "#1"?', objectName),
- buttons: {
- confirm: {
- label: L('Yes'),
- className: 'btn-success'
- },
- cancel: {
- label: L('No'),
- className: 'btn-danger'
+ Grocy.Api.Get('stock/get-product-details/' + objectId,
+ function(productDetails)
+ {
+ var stockAmount = productDetails.stock_amount || '0';
+
+ if (stockAmount.toString() == "0")
+ {
+ bootbox.confirm({
+ message: L('Are you sure to delete product "#1"?', objectName),
+ buttons: {
+ confirm: {
+ label: L('Yes'),
+ className: 'btn-success'
+ },
+ cancel: {
+ label: L('No'),
+ className: 'btn-danger'
+ }
+ },
+ callback: function (result)
+ {
+ if (result === true)
+ {
+ Grocy.Api.Get('delete-object/products/' + objectId,
+ function (result)
+ {
+ window.location.href = U('/products');
+ },
+ function (xhr)
+ {
+ console.error(xhr);
+ }
+ );
+ }
+ }
+ });
+ }
+ else
+ {
+ bootbox.alert({
+ title: L('Delete not possible'),
+ message: L('This product cannot be deleted because it is in stock, please remove the stock amount first.') + '
' + L('Stock amount') + ': ' + stockAmount + ' ' + Pluralize(stockAmount, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural)
+ });
}
},
- callback: function(result)
+ function(xhr)
{
- if (result === true)
- {
- Grocy.Api.Get('delete-object/products/' + objectId,
- function(result)
- {
- window.location.href = U('/products');
- },
- function(xhr)
- {
- console.error(xhr);
- }
- );
- }
+ console.error(xhr);
}
- });
+ );
});