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); } - }); + ); });