function getChecksMulti() {
console.log('multi mode')
var splitMode = parent.$("input[name='chainMode']:checked").val();
if (splitMode == "split") {
splitter('multi')
return;
}
var selectedItems = [];
var errorItems = [];
var hseItems = [];
selected = '';
errordel = '';
hse = '';
$('input[type=checkbox]').each(function() {
if ($(this).is(":checked") && $(this).attr('name') != null) {
selectedItems.push($(this).attr('name'));
if ($(this).data('status') === "URGENT") {
var y = $(this).attr('name').split("-");
hseItems.push('../output/reports//' + y[0] + '_' + y[1] + '.pdf');
errorItems.push($(this).attr('name'));
}
}
});
selected = deliveryListToJson(selectedItems);
errordel = deliveryListToJson(errorItems);
hse = hseItems.join(',');
deliveryStoreList('itemList', selectedItems);
if (selectedItems.length === 0) {
showResponse('warning', 'No Items Selected')
return;
}
loadModalContent(
'
Do you wish to manually sort the reports?
',
"multiBox",
"modal-xl",
1060,
"true",
'Manual Sort',
'sortReports',
'genPack(' + deliveryJsArg(selected) + ',' + deliveryJsArg(errordel) + ',' + deliveryJsArg(hse) + ')',
'manualSort(' + deliveryJsArg(selected) + ',' + deliveryJsArg(errordel) + ',' + deliveryJsArg(hse) + ')'
);
}
////////////////////////////////////////////////////////////////////////////////
function deliveryPostPromise(url, data) {
return new Promise(function(resolve, reject) {
$.post(url, data, function(ret) {
resolve(ret);
}).fail(function(xhr) {
reject(xhr);
});
});
}
function deliveryGenerateCoversPromise(selected, mode) {
return new Promise(function(resolve) {
deliveryGenerateCovers(selected, mode, resolve);
});
}
function deliveryMultiCapableForms() {
return ['500', '502', '503', '504', '506', '900'];
}
function deliveryMultiGroupByForm(items) {
var grouped = {};
items.forEach(function(token) {
var parts = deliveryTokenParts(token);
var form = parts.reptype || '';
if (!grouped[form]) {
grouped[form] = [];
}
grouped[form].push(token);
});
return grouped;
}
function deliveryCompareReportGroups(group) {
return deliveryPostPromise(ROOT_URL + '/functions/compare_reports.php', {
data: group,
tenant: TENANT_URL
}).then(function(ret) {
try {
var parsed = $.parseJSON($.trim(ret));
return Array.isArray(parsed) && parsed.length ? parsed : group.map(function(item) {
return [item];
});
} catch (error) {
return group.map(function(item) {
return [item];
});
}
});
}
function deliveryGenerateMultiPdf(array, form) {
$('#statusCount').html('Generating Multi ' + form + ' Report
')
return deliveryPostPromise(ROOT_URL + '/functions/generators/genMultiPDF.php', {
clientnumber: '',
items: array,
form: form,
tenant: TENANT_URL
}).then(function(data) {
data = String(data || '').trim();
if (data !== '') {
deliveryStoreAppend('multiList', data);
}
return data;
});
}
function deliveryGenerateSinglePdf(token) {
var y = String(token).split("-");
$('#statusCount').html('Generating Report ' + (y[0] || '') + '
')
return deliveryPostPromise(ROOT_URL + '/functions/generators/checkPDF.php', {
clientnumber: '',
repnumber: y[0],
items: y[1],
form: y[2],
forceGen: document.getElementById('forceGen')?.checked ? 'force' : '',
tenant: TENANT_URL
}).then(function() {
deliveryStoreAppend('multiList', token);
return token;
});
}
function deliveryProcessMultiFormGroup(form, group) {
if (deliveryMultiCapableForms().indexOf(String(form)) === -1 || group.length <= 1) {
return Promise.all(group.map(deliveryGenerateSinglePdf));
}
return deliveryCompareReportGroups(group).then(function(groups) {
var jobs = [];
groups.forEach(function(itemGroup) {
if (!Array.isArray(itemGroup)) {
itemGroup = [itemGroup];
}
itemGroup = itemGroup.filter(Boolean);
if (itemGroup.length > 1) {
jobs.push(deliveryGenerateMultiPdf(itemGroup, form));
} else if (itemGroup.length === 1) {
jobs.push(deliveryGenerateSinglePdf(itemGroup[0]));
}
});
return Promise.all(jobs);
});
}
function deliveryGenerateMultiOutputs(items) {
var grouped = deliveryMultiGroupByForm(items);
var jobs = Object.keys(grouped).map(function(form) {
return deliveryProcessMultiFormGroup(form, grouped[form]);
});
if (!jobs.length) {
return Promise.resolve([]);
}
return Promise.all(jobs);
}
function genPack(selected, errordel, hse) {
console.log('genpack multi')
$('#multiBox').modal('hide');
$('#deliveryScreen').css('display', 'none');
$('#loading').css('display', 'block')
var varray = deliveryListFromAny(selected);
var outputMode = parent.$("input[name='outputMode']:checked").val();
deliveryStoreList('itemList', varray);
deliveryStoreList('multiList', []);
var scheduleJob = Promise.resolve();
if (parent.$('#schAttach').is(":checked")) {
$('#statusCount').html('Generating Schedule
')
scheduleJob = deliveryPostPromise(ROOT_URL + '/functions/generators/genShed.php', {
clientnumber: '',
site: deliverySelectedSite,
tenant: TENANT_URL
});
}
scheduleJob
.then(function() {
$('#statusCount').html('Generating Report Covers
')
return deliveryGenerateCoversPromise(selected, 'multi');
})
.then(function() {
return deliveryGenerateMultiOutputs(varray);
})
.then(function() {
if (outputMode == "zip") {
genZips(hse);
}
if (outputMode == "pdf") {
genMPDO(hse);
}
})
.catch(function(error) {
console.error(error);
$('#loading').css('display', 'none');
showResponse('danger', 'Unable to generate all selected reports');
});
}
// EOF GENPACK
////////////////////////////////////////////////////////////////////////////////