Prevent deletion of products with current stock (closes #81)

This commit is contained in:
Bernd Bestel
2018-10-02 18:17:26 +02:00
parent ae58606d04
commit 6090ac621e
2 changed files with 48 additions and 25 deletions

View File

@@ -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', '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', 'Select file' => 'Datei auswählen',
'Image of product #1' => 'Bild des Produkts #1', '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 //Constants
'manually' => 'Manuell', 'manually' => 'Manuell',

View File

@@ -35,33 +35,54 @@ $(document).on('click', '.product-delete-button', function (e)
var objectName = $(e.currentTarget).attr('data-product-name'); var objectName = $(e.currentTarget).attr('data-product-name');
var objectId = $(e.currentTarget).attr('data-product-id'); var objectId = $(e.currentTarget).attr('data-product-id');
bootbox.confirm({ Grocy.Api.Get('stock/get-product-details/' + objectId,
message: L('Are you sure to delete product "#1"?', objectName), function(productDetails)
buttons: { {
confirm: { var stockAmount = productDetails.stock_amount || '0';
label: L('Yes'),
className: 'btn-success' if (stockAmount.toString() == "0")
}, {
cancel: { bootbox.confirm({
label: L('No'), message: L('Are you sure to delete product "#1"?', objectName),
className: 'btn-danger' 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.') + '<br><br>' + 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) console.error(xhr);
{
Grocy.Api.Get('delete-object/products/' + objectId,
function(result)
{
window.location.href = U('/products');
},
function(xhr)
{
console.error(xhr);
}
);
}
} }
}); );
}); });