added concurrency to preorderlogistics
This commit is contained in:
@@ -73,6 +73,10 @@
|
||||
<?php else: ?>
|
||||
<a class="btn btn-secondary" href="<?=self::getUrl("Preorderlogistics")?>">Filter zurücksetzen</a>
|
||||
<?php endif; ?>
|
||||
|
||||
<button id="printAllInView" type="button" class="btn btn-success">Alle in der Liste drucken</button>
|
||||
<button id="csvExportAddressesAndMarkAsSent" type="button" class="btn btn-success">CSV Export für Versand</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -106,7 +110,13 @@
|
||||
<th></th>
|
||||
</tr>
|
||||
<?php foreach($preorders as $preorder): ?>
|
||||
<tr class="preorder-list-tr" id="preorder-<?=$preorder->id?>">
|
||||
<tr class="preorder-list-tr" id="preorder-<?=$preorder->id?>"
|
||||
data-ucode="<?=$preorder->ucode?>"
|
||||
data-oaid="<?=$preorder->oaid?>"
|
||||
data-addr-name="<?=$preorder->company ? $preorder->company : $preorder->firstname." ".$preorder->lastname?>"
|
||||
data-addr-street="<?=$preorder->street?><?=($preorder->housenumber) ? " ".$preorder->housenumber : ""?>"
|
||||
data-addr-zip="<?=$preorder->zip?>"
|
||||
data-addr-city="<?=$preorder->city?>">
|
||||
<td class="text-right align-middle"><button type="button" class="btn btn-sm btn-success font-weight-bold" onclick="printShippingSlip(<?=$preorder->id?>)"><i class="fas fa-fw fa-print"></i> DRUCKEN</button> </td>
|
||||
<td class="text-center align-middle">
|
||||
<label>Versandt <i class="fas fa-check text-success hidden" id="sent-label-<?=$preorder->id?>"></i>
|
||||
@@ -197,4 +207,106 @@
|
||||
|
||||
</script>
|
||||
|
||||
<script>
|
||||
function printAllInView() {
|
||||
console.log("printAllInView");
|
||||
$("#printAllInView").html('<i class="fas fa-spinner fa-spin"></i> Bitte warten...');
|
||||
$("#printAllInView").prop("disabled", true);
|
||||
|
||||
var preorderIds = [];
|
||||
$(".preorder-list-tr").each(function() {
|
||||
var id = $(this).attr("id").replace("preorder-", "");
|
||||
preorderIds.push(id);
|
||||
});
|
||||
|
||||
var printUrls = preorderIds.map(function(id) {
|
||||
return "<?=self::getUrl("Preorderlogistics", "print")?>?id=" + id;
|
||||
});
|
||||
|
||||
var printWindows = [];
|
||||
var loadedCount = 0;
|
||||
var combinedHtml = "";
|
||||
|
||||
function loadAndCombine(url, index) {
|
||||
$.get(url, function(html) {
|
||||
combinedHtml += html;
|
||||
loadedCount++;
|
||||
|
||||
if (loadedCount === printUrls.length) {
|
||||
var combinedWindow = window.open("", "_blank");
|
||||
combinedWindow.document.write(combinedHtml);
|
||||
combinedWindow.document.close();
|
||||
// sleep for 1 second to allow the window to load
|
||||
setTimeout(function() {
|
||||
combinedWindow.focus();
|
||||
combinedWindow.print();
|
||||
}, 1000);
|
||||
|
||||
$("#printAllInView").html('Alle in der Liste drucken');
|
||||
$("#printAllInView").prop("disabled", false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
printUrls.forEach(loadAndCombine);
|
||||
}
|
||||
$("#printAllInView").on("click", printAllInView);
|
||||
|
||||
async function csvExportAddressesAndMarkAsSent(){
|
||||
//show confirmation dialog to the user browser api
|
||||
if(!confirm("Möchten Sie die Adressen als CSV exportieren und als versendet markieren?")) {
|
||||
return;
|
||||
}
|
||||
|
||||
$("#csvExportAddressesAndMarkAsSent").html('<i class="fas fa-spinner fa-spin"></i> Bitte warten...');
|
||||
|
||||
// show a confirmation dialog to the user
|
||||
// use .preorder-list-tr and data-ucode, data-oaid, data-addr-name, data-addr-street, data-addr-zip, data-addr-city to export to csv
|
||||
// after exporting mark as sent for each preorder
|
||||
var preorderIds = [];
|
||||
$(".preorder-list-tr").each(function() {
|
||||
var id = $(this).attr("id").replace("preorder-", "");
|
||||
preorderIds.push(id);
|
||||
});
|
||||
|
||||
var csvData = "ucode,oaid,addr_name,addr_street,addr_zip,addr_city\n";
|
||||
$(".preorder-list-tr").each(function() {
|
||||
var ucode = $(this).data("ucode");
|
||||
var oaid = $(this).data("oaid");
|
||||
var addr_name = $(this).data("addr-name");
|
||||
var addr_street = $(this).data("addr-street");
|
||||
var addr_zip = $(this).data("addr-zip");
|
||||
var addr_city = $(this).data("addr-city");
|
||||
|
||||
csvData += ucode + "," + oaid + "," + addr_name + "," + addr_street + "," + addr_zip + "," + addr_city + "\n";
|
||||
});
|
||||
|
||||
// create a blob from the csv data
|
||||
var blob = new Blob([csvData], { type: "text/csv;charset=utf-8;" });
|
||||
var link = document.createElement("a");
|
||||
link.href = URL.createObjectURL(blob);
|
||||
link.setAttribute("download", "addresses.csv");
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
// mark all as sent
|
||||
|
||||
for (const preorderId of preorderIds) {
|
||||
await $.post("<?=self::getUrl("Preorderlogistics", "Api")?>", {
|
||||
do: "saveSent",
|
||||
id: preorderId,
|
||||
sent: 1
|
||||
});
|
||||
|
||||
$("#sent-label-" + preorderId).show();
|
||||
$("#sent-" + preorderId).prop("checked", true);
|
||||
}
|
||||
|
||||
window.notify('success', 'Adressen als CSV exportiert und als versendet markiert');
|
||||
$("#csvExportAddressesAndMarkAsSent").html('CSV Export für Versand');
|
||||
}
|
||||
$("#csvExportAddressesAndMarkAsSent").on("click", csvExportAddressesAndMarkAsSent);
|
||||
|
||||
</script>
|
||||
|
||||
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>
|
||||
|
||||
Reference in New Issue
Block a user