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
No known key found for this signature in database
GPG Key ID: 71BD34C0D4891300
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',
'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',

View File

@ -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.') + '<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)
{
Grocy.Api.Get('delete-object/products/' + objectId,
function(result)
{
window.location.href = U('/products');
},
function(xhr)
{
console.error(xhr);
}
);
}
console.error(xhr);
}
});
);
});