Prevent removing last item in order

This commit is contained in:
Guido Oliveira
2021-08-12 16:18:13 -03:00
parent d1b22dfff3
commit b1cd163900
2 changed files with 38 additions and 30 deletions

View File

@@ -54,46 +54,53 @@ $(document).ready(function() {
}
$('a.save-item').click(handle_save_click);
handle_delete_click = function(){
var del = $(this);
var shipment_number = del.data('shipment-number');
var variant_id = del.data('variant-id');
handle_delete_click = function(e, confirmed){
if (confirmed) {
var del = $(this);
var shipment_number = del.data('shipment-number');
var variant_id = del.data('variant-id');
toggleItemEdit();
toggleItemEdit();
adjustItems(shipment_number, variant_id, 0);
adjustItems(shipment_number, variant_id, 0);
}
}
$('a.delete-item').click(handle_delete_click);
$('a.delete-item').on('confirm:complete', handle_delete_click);
}
});
adjustItems = function(shipment_number, variant_id, quantity){
var shipment = _.findWhere(shipments, {number: shipment_number + ''});
var inventory_units = _.where(shipment.inventory_units, {variant_id: variant_id});
var shipment = _.findWhere(shipments, {number: shipment_number + ''});
var inventory_units = _.where(shipment.inventory_units, {variant_id: variant_id});
var url = Spree.routes.orders_api + "/" + order_number + "/shipments/" + shipment_number;
if (quantity == 0 && inventory_units.length == shipment.inventory_units.length) {
alert(t("js.admin.orders.cannot_remove_last_item"));
return;
}
var new_quantity = 0;
if(inventory_units.length<quantity){
url += "/add"
new_quantity = (quantity - inventory_units.length);
}else if(inventory_units.length>quantity){
url += "/remove"
new_quantity = (inventory_units.length - quantity);
}
url += '.json';
var url = Spree.routes.orders_api + "/" + order_number + "/shipments/" + shipment_number;
if (new_quantity == 0) {
alert(t("js.admin.orders.quantity_unchanged"));
} else {
$.ajax({
type: "PUT",
url: Spree.url(url),
data: { variant_id: variant_id, quantity: new_quantity }
}).done(function( msg ) {
window.location.reload();
});
}
var new_quantity = 0;
if (inventory_units.length < quantity) {
url += "/add";
new_quantity = (quantity - inventory_units.length);
} else if (inventory_units.length > quantity) {
url += "/remove"
new_quantity = (inventory_units.length - quantity);
}
url += '.json';
if (new_quantity == 0) {
alert(t("js.admin.orders.quantity_unchanged"));
} else {
$.ajax({
type: "PUT",
url: Spree.url(url),
data: { variant_id: variant_id, quantity: new_quantity }
}).done(function( msg ) {
window.location.reload();
});
}
}
toggleTrackingEdit = function(){

View File

@@ -2876,6 +2876,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using
invalid: "invalid"
quantity_adjusted: "Insufficient stock available. Line item updated to maximum available quantity."
quantity_unchanged: "Quantity unchanged from previous amount."
cannot_remove_last_item: "Cannot remove last item from order. Please cancel order instead."
resend_user_email_confirmation:
resend: "Resend"
sending: "Resend..."