/* * 2007-2020 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA * @copyright 2007-2020 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ $.fn.columnCnt = function () { return $(this).find('> tbody > tr:first-child td').length; }; $.fn.expandOrderDetails = function (idColissimoOrder, tableId) { var tr = $(this).closest('tr'); var nbCol = tableId.columnCnt(); if ($(this).collapseDeliveryAddress(idColissimoOrder)) { $(this).removeClass('col-reference-plus').addClass('col-reference-minus'); $('').insertAfter(tr); $.ajax({ type: 'POST', dataType: 'json', url: baseAdminDir + 'index.php', data: { controller: 'AdminColissimoAffranchissement', ajax: 1, token: token, action: 'orderDetails', id_colissimo_order: idColissimoOrder, nb_col: nbCol } }).fail(function (jqXHR, textStatus) { tr.find('td.col-reference-minus').removeClass('col-reference-minus').addClass('col-reference-plus'); showErrorMessage(genericErrorMessage); }).done(function (data) { $(data.html).insertAfter(tr); tr.toggleClass('selected'); }).always(function (data) { $('.colissimo-pending-' + idColissimoOrder).remove(); }); } }; $.fn.expandDashboardOrderDetails = function (idColissimoOrder, tableId) { var tr = $(this).closest('tr'); var nbCol = tableId.columnCnt(); $(this).removeClass('col-reference-plus').addClass('col-reference-minus'); $('').insertAfter(tr); $.ajax({ type: 'POST', dataType: 'json', url: baseAdminDir + 'index.php', data: { controller: 'AdminColissimoDashboard', ajax: 1, token: token, action: 'orderDetails', id_colissimo_order: idColissimoOrder, nb_col: nbCol } }).fail(function (jqXHR, textStatus) { tr.find('td.col-reference-minus').removeClass('col-reference-minus').addClass('col-reference-plus'); showErrorMessage(genericErrorMessage); }).done(function (data) { $(data.html).insertAfter(tr); tr.toggleClass('selected'); }).always(function (data) { $('.colissimo-pending-' + idColissimoOrder).remove(); }); }; $.fn.expandDeliveryAddress = function (idColissimoOrder, tableId) { var tr = $(this).closest('tr'); var nbCol = tableId.columnCnt(); if ($(this).prev('td').collapseOrderDetails(idColissimoOrder) && $(this).prev('td').collapseDeliveryAddress(idColissimoOrder)) { $('').insertAfter(tr); $.ajax({ type: 'POST', dataType: 'json', url: baseAdminDir + 'index.php', data: { controller: 'AdminColissimoAffranchissement', ajax: 1, token: token, action: 'addressDetails', id_colissimo_order: idColissimoOrder, nb_col: nbCol } }).fail(function (jqXHR, textStatus) { showErrorMessage(genericErrorMessage); }).done(function (data) { $(data.html).insertAfter(tr); }).always(function (data) { $('.colissimo-pending-' + idColissimoOrder).remove(); tr.toggleClass('selected'); }); } }; $.fn.collapseOrderDetails = function (idColissimoOrder) { var nbPending = $('.colissimo-pending-' + idColissimoOrder).length; var tr = $(this).closest('tr'); var orderDetails = $('.colissimo-order-detail-' + idColissimoOrder); if (nbPending === 0) { if (orderDetails.length) { orderDetails.remove(); $(this).removeClass('col-reference-minus').addClass('col-reference-plus'); $(this).find('i').removeClass('icon-minus-circle').addClass('icon-plus-circle'); tr.toggleClass('selected'); } return 1; } else { return 0; } }; $.fn.collapseDashboardOrderDetails = function (idColissimoOrder) { var nbPending = $('.colissimo-pending-' + idColissimoOrder).length; var tr = $(this).closest('tr'); var orderDetails = $('.colissimo-order-detail-' + idColissimoOrder); if (nbPending === 0) { if (orderDetails.length) { orderDetails.remove(); $(this).removeClass('col-reference-minus').addClass('col-reference-plus'); $(this).find('i').removeClass('icon-minus-circle').addClass('icon-plus-circle'); tr.toggleClass('selected'); } return 1; } else { return 0; } }; $.fn.collapseDeliveryAddress = function (idColissimoOrder) { var nbPending = $('.colissimo-pending-' + idColissimoOrder).length; var tr = $(this).closest('tr'); var addressDetails = $('.colissimo-address-detail-' + idColissimoOrder); if (nbPending === 0) { if (addressDetails.length) { addressDetails.remove(); tr.toggleClass('selected'); } return 1; } else { return 0; } }; function removeDupplicates(val, index, self) { return self.indexOf(val) === index; } function processColissimoOrders(ordersList, success, ordersCount, form) { var percent = ((ordersCount - ordersList.length + 1) / ordersCount) * 100; var idColissimoOrder = parseInt(ordersList.pop()); if (idColissimoOrder) { var data = { controller: 'AdminColissimoAffranchissement', ajax: 1, token: token, action: 'generateLabel', id_colissimo_order: idColissimoOrder }; $('.colissimo-order-result-' + idColissimoOrder).html(''); $.ajax({ type: 'POST', dataType: 'json', url: baseAdminDir + 'index.php?' + $.param(data), data: form }).fail(function (jqXHR, textStatus) { showErrorMessage(genericErrorMessage); }).done(function (data) { if (data.id_label) { success.push(data.id_label); } if (data.id_return_label) { success.push(data.id_return_label); } $('.js-step-line').css({width: percent + '%'}); $('.colissimo-order-result-' + idColissimoOrder).html(data.result_html); processColissimoOrders(ordersList, success, ordersCount, form); }); } else { $('html, body').animate({scrollTop: 0}, 'slow'); $.ajax({ type: 'POST', dataType: 'json', url: baseAdminDir + 'index.php', data: { controller: 'AdminColissimoAffranchissement', ajax: 1, token: token, action: 'displayResult', label_ids: JSON.stringify(success) } }).fail(function (jqXHR, textStatus) { showErrorMessage(genericErrorMessage); }).done(function (data) { if ($('#colissimo-form-documents').length) { var ids = $('input[name=colissimo_label_ids]').val(); var jsonIds = JSON.parse(ids); console.debug(jsonIds); jsonIds = jsonIds.concat(JSON.parse(data.labels_ids)); var jsonIdsUnique = jsonIds.filter(removeDupplicates); console.debug(jsonIds); console.debug(JSON.stringify(jsonIdsUnique)); $('input[name=colissimo_label_ids]').val(JSON.stringify(jsonIdsUnique)); } else { $('#colissimo-process-result').html(data.result_html); } }).always(function (data) { $('#colissimo-process').hide(200); $('#submit-process-colissimo-configuration').toggleClass('disabled'); }); $('.step.current').removeClass('current').addClass('complete'); $('.step.incomplete').removeClass('incomplete').addClass('current'); } } function processColissimoDepositSlip(labelList, success) { var labels = labelList.pop(); if (labels) { $.ajax({ type: 'POST', dataType: 'json', url: baseAdminDir + 'index.php', data: { controller: 'AdminColissimoDepositSlip', ajax: 1, token: token, action: 'generateDepositSlip', label_ids: JSON.stringify(labels) } }).fail(function (jqXHR, textStatus) { showErrorMessage(genericErrorMessage); }).done(function (data) { if (data.error) { $('#deposit-slip-result').html(data.result_html).show(); $('#submit-process-colissimo-deposit-slip').toggleClass('disabled'); return; } else { success.push(data.depositSlipId); } processColissimoDepositSlip(labelList, success); }); } else { displayDepositSlipResult(success); } } function displayDepositSlipResult(success) { $.ajax({ type: 'POST', dataType: 'json', url: baseAdminDir + 'index.php', data: { controller: 'AdminColissimoDepositSlip', ajax: 1, token: token, action: 'displayResult', deposit_slip_ids: JSON.stringify(success) } }).fail(function (jqXHR, textStatus) { showErrorMessage(genericErrorMessage); }).done(function (data) { if (data.error) { showErrorMessage(data.message); } else { $('#deposit-slip-result').html(data.result_html).show(); tableOlderParcels.ajax.reload(function () { var count1 = tableParcelsOfToday.rows({selected: true}).count(); var count2 = tableOlderParcels.rows({selected: true}).count(); $('.js-colissimo-count-selected').text(count1 + count2); }, false); tableParcelsOfToday.ajax.reload(function () { var count1 = tableParcelsOfToday.rows({selected: true}).count(); var count2 = tableOlderParcels.rows({selected: true}).count(); $('.js-colissimo-count-selected').text(count1 + count2); }, false); showSuccessMessage(successMessage); } }).always(function (data) { $('#submit-process-colissimo-deposit-slip').toggleClass('disabled'); }); } function startLabelProcess() { var ordersList = []; var success = []; var form = $('#colissimo-affranchissement-configuration').serialize(); $('.colissimo-configuration-table input.colissimo-order-selection[type=checkbox]').each(function () { var idColissimoOrder = parseInt(this.name.substr(16, this.name.length - 16)) || 0; if (this.checked) { $('.colissimo-order-result-' + idColissimoOrder).html('' + queueingText + ''); ordersList.push(idColissimoOrder); } $('tr.selected td.colissimo-delivery-addr').collapseDeliveryAddress(idColissimoOrder); $('td.col-reference-minus').collapseOrderDetails(idColissimoOrder); }); $('.js-step-line').css({width: '0%'}); if ($('.step.complete').length === 2) { $('.step.current').removeClass('current').addClass('incomplete'); $('.step-config').removeClass('complete').addClass('current'); } ordersList.reverse(); if (ordersList.length !== 0) { $('#submit-process-colissimo-configuration').toggleClass('disabled'); $('html, body').animate({scrollTop: 0}, 'slow'); $('#colissimo-process').show(200); processColissimoOrders(ordersList, success, ordersList.length, form); } else { showErrorMessage(noOrdersText); } } function submitAddress(form) { var data = { controller: 'AdminColissimoAffranchissement', ajax: 1, token: token, action: 'addressSave' }; form.find('button > i').removeClass('process-icon-save').addClass('process-icon-loading'); $.ajax({ type: 'POST', dataType: 'json', url: baseAdminDir + 'index.php?' + $.param(data), data: form.serialize() }).fail(function (jqXHR, textStatus) { showErrorMessage(addressErrorMessage); }).done(function (data) { var td = form.closest('tr').prev('tr').find('td.colissimo-delivery-addr'); if (!data.error) { showSuccessMessage(data.message); td.html(data.html); } else { showErrorMessage(data.message); } }).always(function (data) { var idColissimoOrder = form.closest('.sub-tr').find('.btn-close').attr('data-id'); var td = form.closest('tr').prev('tr').find('td.colissimo-delivery-addr'); form.find('button > i').removeClass('process-icon-loading').addClass('process-icon-save'); td.collapseDeliveryAddress(idColissimoOrder); }); } function findLabel(tableParcelsOfToday, tableOlderParcels) { var parcelNumberInput = $('#colissimo-parcel-number-barcode'); tableOlderParcels.rows(function (idx, data, node) { if (data.shipping_number === parcelNumberInput.val()) { var row = tableOlderParcels.row(idx); var rowNode = row.node(); if ($(rowNode).hasClass('selected')) { row.deselect(); } else { row.select(); } showSuccessMessage(label_selection_text); parcelNumberInput.val(''); parcelNumberInput.typeWatch({ captureLength: 12, highlight: true, wait: 50, callback: function () { findLabel(tableParcelsOfToday, tableOlderParcels); } }); return; } return false; }); tableParcelsOfToday.rows(function (idx, data, node) { if (data.shipping_number === parcelNumberInput.val()) { var row = tableParcelsOfToday.row(idx); var rowNode = row.node(); if ($(rowNode).hasClass('selected')) { row.deselect(); } else { row.select(); } showSuccessMessage(label_selection_text); parcelNumberInput.val(''); parcelNumberInput.typeWatch({ captureLength: 12, highlight: true, wait: 50, callback: function () { findLabel(tableParcelsOfToday, tableOlderParcels); } }); return; } return false; }); } function purgeDocuments(btn) { $.ajax({ type: 'POST', dataType: 'json', url: baseAdminDir + 'index.php', data: { controller: 'AdminColissimoAffranchissement', ajax: 1, token: token, action: 'purgeDocuments' } }).fail(function (jqXHR, textStatus) { showErrorMessage(genericErrorMessage); }).done(function (data) { if (data.error) { showErrorMessage(data.message); } else { showSuccessMessage(data.message); $('.colissimo-docs-alert').remove(); } }).always(function (data) { btn.find('i').toggleClass('icon-trash icon-spin icon-spinner'); btn.toggleClass('disabled'); }); } function loadColissimoServiceModalUpdate(idOrder) { $.ajax({ type: 'POST', dataType: 'json', url: baseAdminDir + 'index.php', data: { controller: 'AdminColissimoAffranchissement', ajax: 1, token: tokenAffranchissement, id_order: parseInt(idOrder), action: 'loadServiceUpdateModal' } }).fail(function (jqXHR, textStatus) { showErrorMessage(genericErrorMessage); }).done(function (data) { if (data.error) { showErrorMessage(data.message); } else { $(data.result_html).appendTo('body'); $('.colissimo-back-widget').modal('show'); } }).always(function (data) { $('.colissimo-service-selection').removeClass('disabled'); $('.colissimo-service-selection').find('i').removeClass('icon-spin icon-spinner').addClass('icon-refresh'); }); } function printAllDocuments(form, btn) { var data = { controller: 'AdminColissimoLabel', ajax: 1, token: tokenLabel, action: 'printDocuments', }; var base64string; $.ajax({ type: 'POST', dataType: 'json', url: baseAdminDir + 'index.php?' + $.param(data), data: form.serialize(), }).fail(function (jqXHR, textStatus) { showErrorMessage(genericErrorMessage); btn.toggleClass('disabled'); btn.find('i').toggleClass('icon-print icon-spin icon-spinner'); }).done(function (data) { if (data.error) { showErrorMessage(data.message); } else { base64string = data.file_string; printJS({ printable: base64string, type: 'pdf', base64: true, showModal: true, fallbackPrintable: `data:application/pdf;base64,${data.file_string}`, onBrowserIncompatible: function () { var data = base64string; var fileName = 'Colissimo_Documents.pdf'; if (window.navigator && window.navigator.msSaveOrOpenBlob) { var byteCharacters = atob(data); var byteNumbers = new Array(byteCharacters.length); for (var i = 0; i < byteCharacters.length; i++) { byteNumbers[i] = byteCharacters.charCodeAt(i); } var byteArray = new Uint8Array(byteNumbers); var blob = new Blob([byteArray], {type: 'application/pdf'}); window.navigator.msSaveOrOpenBlob(blob, fileName); } else { window.open('data:application/pdf;base64, ' + data, ''); } } }); } }).always(function (data) { btn.toggleClass('disabled'); btn.find('i').toggleClass('icon-print icon-spin icon-spinner'); }); } function printAllThermalDocuments(form, btn) { var data = { controller: 'AdminColissimoLabel', ajax: 1, token: tokenLabel, action: 'printThermalLabels', }; $.ajax({ type: 'POST', dataType: 'json', url: baseAdminDir + 'index.php?' + $.param(data), data: form.serialize(), }).fail(function (jqXHR, textStatus) { showErrorMessage(genericErrorMessage); btn.toggleClass('disabled'); btn.find('i').toggleClass('icon-print icon-spin icon-spinner'); }).done(function (data) { if (data.error) { showErrorMessage(data.message); } else { for (var i = 0; i < data.request_urls.length; i++) { $.get(data.request_urls[i]); } showSuccessMessage(data.message); } }).always(function (data) { btn.toggleClass('disabled'); btn.find('i').toggleClass('icon-print icon-spin icon-spinner'); }); } function printThermal(base64) { $.ajax({ type: 'POST', dataType: 'json', url: baseAdminDir + 'index.php', data: { controller: 'AdminColissimoLabel', ajax: 1, token: tokenLabel, base64: base64, action: 'printLabelThermal' } }).fail(function (jqXHR, textStatus) { showErrorMessage(genericErrorMessage); }).done(function (data) { if (data.error) { showErrorMessage(data.message); } else { var successMessage = data.message; $.get(data.request_url, function(data, textStatus, jqXHR) { if (jqXHR.status === 200) { showSuccessMessage(successMessage); } else { showErrorMessage(genericErrorMessage); } }).fail(function(data, textStatus, jqXHR) { showErrorMessage(genericErrorMessage); }); } }); }