361 lines
14 KiB
JavaScript
361 lines
14 KiB
JavaScript
/*
|
|
* Module made by Nukium
|
|
*
|
|
* @author Nukium
|
|
* @copyright 2018 Nukium SAS
|
|
* @license All rights reserved
|
|
*
|
|
* ███ ██ ██ ██ ██ ██ ██ ██ ██ ███ ███
|
|
* ████ ██ ██ ██ ██ ██ ██ ██ ██ ████ ████
|
|
* ██ ██ ██ ██ ██ █████ ██ ██ ██ ██ ████ ██
|
|
* ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
|
* ██ ████ ██████ ██ ██ ██ ██████ ██ ██
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
* THE SOFTWARE.
|
|
*/
|
|
$(document).ready(function() {
|
|
|
|
$('form.AdminGlsLabel label[for^="GLS_LABEL_CARRIER_FILTER_"]:contains("[' + carrier_disabled + ']")').addClass('text-muted');
|
|
|
|
$('.bulk-actions .dropdown-menu li:first > a').trigger('click');
|
|
|
|
$('body').tooltip({
|
|
selector: '[data-toggle="tooltip"]'
|
|
});
|
|
|
|
if($('input[name="gls_label_single_type"]').val() == 'return') {
|
|
$('.packages .card-footer, .packages .packages-count, .packages .package-title').remove();
|
|
}
|
|
|
|
$('#table-labels tr:not(.extra-content)').on('click', function(e) {
|
|
|
|
e.preventDefault();
|
|
if($(this).parent('tbody').length > 0) {
|
|
$(this).find('a.toggler').trigger('click');
|
|
}
|
|
|
|
});
|
|
|
|
$('#table-labels th a.toggler').on('click', function(e) {
|
|
|
|
e.preventDefault();
|
|
|
|
if($(this).attr('aria-expanded') == 'false') {
|
|
|
|
$('#table-labels a.toggler').attr('aria-expanded', 'true');
|
|
$('#table-labels#table-labels a.toggler i').removeClass('icon-angle-down').addClass('icon-angle-up');
|
|
$('.extra-content').each(function() {
|
|
$(this).find('.extra-content-form').stop(true, false).slideDown();
|
|
});
|
|
|
|
} else {
|
|
|
|
$('#table-labels a.toggler').attr('aria-expanded', 'false');
|
|
$('#table-labels a.toggler i').removeClass('icon-angle-up').addClass('icon-angle-down');
|
|
$('.extra-content').each(function() {
|
|
$(this).find('.extra-content-form').stop(true, false).slideUp();
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
$('#table-labels td a.toggler').on('click', function(e) {
|
|
|
|
e.preventDefault();
|
|
e.stopImmediatePropagation();
|
|
$(this).attr('aria-expanded', function(_, attr) { return !(attr == 'true') });
|
|
$(this).children('i').toggleClass('icon-angle-down icon-angle-up');
|
|
$(this).closest('tr').next().find('.extra-content-form').stop(true, false).slideToggle();
|
|
return false;
|
|
|
|
});
|
|
|
|
if($('#table-labels tbody tr:not(.extra-content)').length == 1) {
|
|
$('#table-labels tbody tr td a.toggler').trigger('click');
|
|
$('#table-labels a.toggler').hide();
|
|
$('#table-labels tr:not(.extra-content)').off('click');
|
|
}
|
|
|
|
function updatePrintingState(order_id) {
|
|
|
|
var total_controls = 0;
|
|
var completed_controls = 0;
|
|
|
|
$('#extra-content-form-' + order_id + ' .form-group').each(function() {
|
|
|
|
if($(this).css('display') !== 'none') {
|
|
|
|
$(this).children('.control-label.required').next().children('.form-control').each(function() {
|
|
|
|
total_controls++;
|
|
if($(this).val() != '') {
|
|
completed_controls++;
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
});
|
|
|
|
if(total_controls > 0) {
|
|
|
|
var progress = (completed_controls / total_controls) * 100;
|
|
$('#printing-progress-' + order_id + ' .progress-bar').css('width', progress + '%').attr('aria-valuenow', progress);
|
|
|
|
if(progress == 100) {
|
|
|
|
$('#printing-progress-' + order_id + ' .progress-bar').removeClass('bg-primary').addClass('bg-success');
|
|
$('#btn-print-' + order_id).removeClass('btn-disabled').attr('title', print_ready).attr('data-original-title', print_ready).tooltip('fixTitle');
|
|
|
|
} else {
|
|
|
|
$('#printing-progress-' + order_id + ' .progress-bar').removeClass('bg-success').addClass('bg-primary');
|
|
$('#btn-print-' + order_id).addClass('btn-disabled').attr('title', print_block).attr('data-original-title', print_block).tooltip('fixTitle');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$.fn.getOrderId = function() {
|
|
|
|
if($(this).closest('.extra-content-form').length > 0) {
|
|
|
|
return parseInt($(this).closest('.extra-content-form').attr('id').replace('extra-content-form-', ''));
|
|
|
|
} else if($(this).closest('tr').next().hasClass('extra-content')) {
|
|
|
|
return parseInt($(this).closest('tr').next().find('.extra-content-form').attr('id').replace('extra-content-form-', ''));
|
|
|
|
}
|
|
|
|
};
|
|
|
|
var gls_label_single_type = $('input[name="gls_label_single_type"]').val();
|
|
|
|
$('.btn-print').on('click', function(e) {
|
|
|
|
e.preventDefault();
|
|
e.stopImmediatePropagation();
|
|
|
|
var toggler = $(this).closest('tr').children('td:first').children('.toggler');
|
|
|
|
if($(this).hasClass('btn-disabled')) {
|
|
|
|
if($(toggler).attr('aria-expanded') == 'false') {
|
|
$(toggler).trigger('click');
|
|
}
|
|
|
|
} else {
|
|
|
|
$(this).children('i').toggleClass('icon-print icon-spinner icon-spin');
|
|
|
|
var order_id = $(this).getOrderId();
|
|
|
|
$('input[name="gls_label_single_type"]').val(gls_label_single_type);
|
|
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: ajax_uri,
|
|
cache: false,
|
|
dataType: 'json',
|
|
context: this,
|
|
data: $('#extra-content-form-' + order_id).serialize()
|
|
}).done(function(jsonData) {
|
|
|
|
if (jsonData.hasError === true) {
|
|
|
|
$('#btn-print-' + order_id).removeClass('btn-primary').addClass('btn-danger');
|
|
$('#btn-print-' + order_id).attr('title', jsonData.errors).tooltip('fixTitle').tooltip('show');
|
|
$(this).children('i').toggleClass('icon-print icon-spinner icon-spin');
|
|
|
|
} else if(jsonData.data) {
|
|
|
|
for (var i = 0, len = jsonData.data['labels'].length; i < len; i++) {
|
|
downloadFile(jsonData.data['labels'][i], 'order-' + order_id + '-label-' + (i+1) + '.pdf');
|
|
}
|
|
|
|
if($('#extra-content-form-' + order_id).find('.gls-service option:selected').attr('data-mobile-required') !== undefined
|
|
&& $('#extra-content-form-' + order_id).find('.gls-service option:selected').attr('data-mobile-required') == 'true'
|
|
&& $('#extra-content-form-' + order_id).find('input[name="return_label"]:checked').val() !== undefined
|
|
&& $('#extra-content-form-' + order_id).find('input[name="return_label"]:checked').val() == '1') {
|
|
|
|
$('input[name="gls_label_single_type"]').val('return_shipment');
|
|
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: ajax_uri,
|
|
cache: false,
|
|
dataType: 'json',
|
|
context: this,
|
|
data: $('#extra-content-form-' + order_id).serialize()
|
|
}).done(function(jsonData) {
|
|
|
|
if (jsonData.hasError === true) {
|
|
|
|
$('#btn-print-' + order_id).removeClass('btn-primary').addClass('btn-danger');
|
|
$('#btn-print-' + order_id).attr('title', jsonData.errors).tooltip('fixTitle').tooltip('show');
|
|
$(this).children('i').toggleClass('icon-print icon-spinner icon-spin');
|
|
|
|
} else if(jsonData.data) {
|
|
|
|
if($(toggler).attr('aria-expanded') == 'true') {
|
|
$(toggler).trigger('click');
|
|
}
|
|
|
|
$(this).closest('tr').next().find('.extra-content-form :input').prop('disabled', true);
|
|
|
|
var parent = $(this).parent();
|
|
parent.children('.btn-print').tooltip('destroy').remove();
|
|
parent.append('<span class="icon-stack icon-lg"><i class="icon icon-circle icon-stack-2x text-success"></i><i class="icon icon-check icon-stack-1x icon-inverse"></i></span>');
|
|
|
|
for (var i = 0, len = jsonData.data['labels'].length; i < len; i++) {
|
|
downloadFile(jsonData.data['labels'][i], 'order-' + order_id + '-label-' + (i+1) + '.pdf');
|
|
}
|
|
}
|
|
|
|
}).fail(function() {
|
|
|
|
$(this).children('i').toggleClass('icon-print icon-spinner icon-spin');
|
|
// TODO display error
|
|
});
|
|
|
|
} else {
|
|
|
|
if($(toggler).attr('aria-expanded') == 'true') {
|
|
$(toggler).trigger('click');
|
|
}
|
|
|
|
$(this).closest('tr').next().find('.extra-content-form :input').prop('disabled', true);
|
|
|
|
var parent = $(this).parent();
|
|
parent.children('.btn-print').tooltip('destroy').remove();
|
|
parent.append('<span class="icon-stack icon-lg"><i class="icon icon-circle icon-stack-2x text-success"></i><i class="icon icon-check icon-stack-1x icon-inverse"></i></span>');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}).fail(function() {
|
|
|
|
$(this).children('i').toggleClass('icon-print icon-spinner icon-spin');
|
|
// TODO display error
|
|
});
|
|
}
|
|
|
|
});
|
|
|
|
var default_package_item = $('.extra-content-form:first .package:first').clone(true);
|
|
|
|
$('.extra-content-form').each(function() {
|
|
|
|
$(this).get(0).reset();
|
|
updatePrintingState($(this).children().getOrderId());
|
|
|
|
});
|
|
|
|
$('body').on('input', '.extra-content-form .form-control', function() {
|
|
|
|
updatePrintingState($(this).getOrderId());
|
|
|
|
});
|
|
|
|
$('.add-package').on('click', function(e) {
|
|
|
|
e.preventDefault();
|
|
|
|
var order_id = $(this).getOrderId();
|
|
var package_item = default_package_item;
|
|
var nb_packages = $(this).closest('.packages').find('.package').length + 1;
|
|
package_item.find('.package-index').text(nb_packages);
|
|
package_item.find('.remove-package').removeClass('d-none');
|
|
$(this).closest('.packages').find('.card-body').append(package_item.clone(true));
|
|
|
|
$(this).closest('.packages').find('.packages-count').text(nb_packages);
|
|
|
|
updatePrintingState(order_id);
|
|
|
|
});
|
|
|
|
$('body').on('click', '.remove-package', function(e) {
|
|
|
|
e.preventDefault();
|
|
|
|
if($(this).closest('.packages').find('.package').length > 1) {
|
|
|
|
var packages = $(this).closest('.packages');
|
|
var order_id = $(this).getOrderId();
|
|
|
|
$(this).closest('.package').remove();
|
|
|
|
var count = 0;
|
|
$(packages).find('.package').each(function() {
|
|
count++;
|
|
$(this).find('.package-index').text(count);
|
|
});
|
|
packages.find('.packages-count').text(count);
|
|
|
|
updatePrintingState(order_id);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
$('.gls-service').on('change', function(e) {
|
|
|
|
var mobile = $(this).children('option:selected').attr('data-mobile-required');
|
|
|
|
if(typeof mobile !== 'undefined' && mobile === 'true') {
|
|
|
|
$(this).closest('.form-group').siblings('.mobile-group').find('.form-control').prop('disabled', false);
|
|
$(this).closest('.form-group').siblings('.mobile-group').stop(true, false).slideDown();
|
|
|
|
} else {
|
|
|
|
$(this).closest('.form-group').siblings('.mobile-group').stop(true, false).slideUp(function() {
|
|
$(this).find('.form-control').prop('disabled', true);
|
|
});
|
|
|
|
}
|
|
|
|
updatePrintingState($(this).getOrderId());
|
|
|
|
});
|
|
$('.gls-service').trigger('change');
|
|
|
|
function downloadFile(base64str, filename) {
|
|
|
|
var binary = atob(base64str.replace(/\s/g, ''));
|
|
var blen = binary.length;
|
|
var buffer = new ArrayBuffer(blen);
|
|
var view = new Uint8Array(buffer);
|
|
for (var n = 0; n < blen; n++) {
|
|
view[n] = binary.charCodeAt(n);
|
|
}
|
|
var newBlob = new Blob( [view], { type: "application/pdf" });
|
|
|
|
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
|
|
window.navigator.msSaveOrOpenBlob(newBlob);
|
|
} else {
|
|
var url = URL.createObjectURL(newBlob);
|
|
var a = document.createElement("a");
|
|
document.body.appendChild(a);
|
|
a.style = "display: none";
|
|
a.href = url;
|
|
a.download = filename;
|
|
a.click();
|
|
setTimeout(function() {
|
|
URL.revokeObjectURL(url);
|
|
}, 100);
|
|
}
|
|
}
|
|
|
|
}); |