/** * TNT OFFICIAL MODULE FOR PRESTASHOP * * @author GFI Informatique * @copyright 2016 GFI Informatique, 2016 TNT * @license https://opensource.org/licenses/MIT MIT License */ $(document).ready(function () { $("#parcelsTbody").on('click', function (objEvent) { var $elmt = $(objEvent.target); if ($elmt.hasClass('removeParcel')) { removeParcel($elmt.val()); } if ($elmt.hasClass('updateParcel')) { updateParcel($elmt.val()); } }); $("#submitAddParcel").on('click', function () { addParcel(); }); $("a#fancyBoxAddParcelLink").fancybox({ "afterClose": function () { $("#addParcelFancyBox #addParcelError").hide(); $("#addParcelWeight").val(""); }, "transitionIn": 'elastic', "transitionOut": 'elastic', "type": 'inline', "speedIn": 600, "speedOut": 200, "overlayShow": false, "autoDimensions": true, "autoCenter": false, "helpers": { overlay: { closeClick: false, locked: false } } }); $("input[id*='parcelWeight-']").on('change', function () { var value = parseFloat($(this).val()); if (value.toFixed(1) == 0.0) { value = 0.1; } $(this).val(value.toFixed(1)); }); $('#shipping_date').datepicker({ "minDate": startDate, "dateFormat": 'dd/mm/yy', "onSelect": function () { $('#formAdminShippingDatePanel .alert').hide(); $('.waitimage').show(); var data = {}; data['orderId'] = id_order; data['shippingDate'] = $('#shipping_date').val(); $.ajax({ type: 'POST', url: checkShippingDateValidUrl, data: data, global: false, success: function (json) { var data = jQuery.parseJSON(json); if (data.error) { if (data.error.length) { $("#delivery-date-error").html(data.error); } else { $("#delivery-date-error").html('La date n\'est pas valide.'); } $("#delivery-date-error").show(); return; } if (data.dueDate) { $("#due-date").html(data.dueDate); } if (data.mdwMessage) { $("#delivery-date-success").html(data.mdwMessage); } else { $("#delivery-date-success").html('La date est valide.'); } $("#delivery-date-success").show(); }, error: function () { $("#delivery-date-error").html('Une erreur s\'est produite, merci de réessayer dans quelques minutes.'); $("#delivery-date-error").show(); }, complete: function () { $('.waitimage').hide(); } }); } }); if (typeof shippingDate != 'undefined') { $("#shipping_date").datepicker("setDate", shippingDate); } if (boolIsShipped) { $("#shipping_date").datepicker("option", "disabled", true); } if (!boolIsAddressEditable) { $("#addressShipping form :input").attr("disabled", true); $('#addressShipping a').css("cursor", "not-allowed"); $('#addressShipping a').on('click', function (objEvent) { objEvent.preventDefault(); }); } updateTotalWeight(); }); /** * remove a parcel * @param rowNumber */ function removeParcel(parcelId) { var data = { "parcelId": parcelId }; var parcelCount = getParcelRowCount(); if (parcelCount <= 1) { $("#updateParcelErrorMessage-" + parcelId).html(atLeastOneParcelStr); $("#parcelWeightError-" + parcelId).show(); } else { $.ajax({ type: 'POST', url: removeParcelUrl, data: data, success: function (json) { $("#row-parcel-" + parcelId).remove(); updateTotalWeight(); } }); } } /** * Update a parcel * @param parcelId */ function updateParcel(parcelId) { $("#parcelWeightError-" + parcelId).hide(); $("#parcelWeightSuccess-" + parcelId).hide(); var data = {}; data['parcelId'] = parcelId; data['weight'] = $("#parcelWeight-" + parcelId).val(); data['orderId'] = id_order; if (isNaN($("#parcelWeight-" + parcelId).val()) || $("#parcelWeight-" + parcelId).val() <= 0) { $("#updateParcelErrorMessage-" + parcelId).html("Le poids n'est pas valide"); $("#parcelWeightError-" + parcelId).show(); } else { $.ajax({ type: 'POST', url: updateParcelUrl, data: data, success: function (json) { var response = JSON.parse(json); if (!response.result) { $("#updateParcelErrorMessage-" + parcelId).html(response.error); $("#parcelWeightError-" + parcelId).show(); } else { $("#parcelWeight-" + parcelId).val(response.weight); $("#parcelWeightSuccess-" + parcelId).show(); updateTotalWeight(); } } }); } } /** * Add a parcel */ function addParcel() { $("#addParcelFancyBox #addParcelError").hide(); //check if the weight value is valid if (isNaN($("#addParcelWeight").val()) || ($("#addParcelWeight").val() <= 0)) { $("#addParcelFancyBox #addParcelErrorMessage").html("Le poids n'est pas valide"); $("#addParcelFancyBox #addParcelError").show(); } else { var data = {}; data['orderId'] = id_order; data['weight'] = $("#addParcelWeight").val(); $.ajax({ type: 'POST', url: addParcelUrl, data: data, success: function (json) { var response = JSON.parse(json); if (response.result) { $.fancybox.close(); addRowParcel(json); updateTotalWeight(); } else { $("#addParcelFancyBox #addParcelErrorMessage").html(response.error); $("#addParcelFancyBox #addParcelError").show(); } } }); } }; /** * Get the TNT admin controller token * @returns {*|jQuery} */ function getAdminTNTOfficielToken() { return $("#AdminTNTOfficielToken").val(); }; /** * add a row in the parcels table */ function addRowParcel(json) { var nextRowNumber = getNexttParcelNumber(); var data = JSON.parse(json); $("#parcelsTbody").append('\ \ \
' + nextRowNumber + '
\ \ \  \ \ \ \ \  \ \ \ '); } /* * Add or update total weight */ function updateTotalWeight() { var sum = 0; $("[id*='parcelWeight-']").each(function () { var value = $(this).val(); // add only if the value is number if (!isNaN(value) && value.length != 0) { sum += parseFloat(value); } }); $("#total-weight").html(sum); } function getParcelRowCount() { return $("#parcelsTable > #parcelsTbody tr").length++; } function getNexttParcelNumber() { return parseInt($("#parcelsTable > #parcelsTbody tr:last-child td:first-child div.input-group").html()) + 1 }