On last item deletion, prevent user on order canceling and cancellation email

... with a modal.
User can cancel the modal or confirm the last item deletion & order cancelation with or without sending a cancellation email to the consumer.
This commit is contained in:
Jean-Baptiste Bellet
2022-01-20 15:33:11 +01:00
parent 17906f378a
commit 8624fa2a85
4 changed files with 35 additions and 3 deletions

View File

@@ -82,7 +82,15 @@ adjustItems = function(shipment_number, variant_id, quantity){
var inventory_units = _.where(shipment.inventory_units, {variant_id: variant_id});
if (quantity == 0 && inventory_units.length == shipment.inventory_units.length) {
ofnAlert(t("js.admin.orders.cannot_remove_last_item"));
ofnCancelOrderAlert((confirm, sendEmailCancellation) => {
if (confirm) {
doAdjustItems(shipment_number, variant_id, quantity, inventory_units, () => {
var redirectTo = new URL(Spree.routes.cancel_order.toString());
redirectTo.searchParams.append("send_cancellation_email", sendEmailCancellation);
window.location.href = redirectTo.toString();
});
}
});
return;
}
doAdjustItems(shipment_number, variant_id, quantity, inventory_units, () => {
@@ -186,6 +194,24 @@ ofnAlert = function(message) {
$('#custom-alert').show();
}
ofnCancelOrderAlert = function(callback) {
$('#custom-confirm .message').html(
` ${t("js.admin.orders.cancel_the_order_html")}
<div class="form">
<input type="checkbox" name="send_cancellation_email" value="1" id="send_cancellation_email" />
<label for="send_cancellation_email">${t("js.admin.orders.cancel_the_order_send_cancelation_email")}</label>
</div>`);
$('#custom-confirm button.confirm').unbind( "click" ).click(() => {
$('#custom-confirm').hide();
callback(true, $('#send_cancellation_email').is(':checked'));
});
$('#custom-confirm button.cancel').click(() => {
$('#custom-confirm').hide();
callback(false)
});
$('#custom-confirm').show();
}
ofnConfirm = function(callback) {
$('#custom-confirm').data($(event.target).data());
$('#custom-confirm button.confirm').click(callback);