Files
thetool/scripts/invoice/job-runners/send-invoice-email.php
Frank Schubert 1ed2dddb97 Added InvoiceJob
2024-08-29 14:51:37 +02:00

75 lines
1.5 KiB
PHP

<?php
/**
* @var $job InvoiceJob
*/
/*
echo "==========================\n";
echo "in send-invoice-email-runner\n";
echo "==========================\n";
*/
$started = new DateTime("now");
if(!$job->started) {
$job->started = $started->format("Y-m-d H:i:s");
$job->reconnectDB();
$job->save();
}
$job_return = new stdClass();
$job_return->sent = 0;
$pdfs_sent = 0;
$defer = false;
$timeout = false;
if($job->result) {
$job_return = json_decode($job->result);
if(json_last_error() === JSON_ERROR_NONE) {
$pdfs_sent = $job_return->sent;
} else {
$job_return = new stdClass();
$job_return->sent = 0;
}
}
$ic = new InvoiceController(false);
$ic->reconnectDB();
// main loop
do {
$now = new DateTime("now");
if($now->format("Y-m-d H:i:s") > $job->to_date." 23:59:59") {
$timeout = true;
break;
}
$email_return = $ic->_sendEmailInvoices(300);
if($email_return["defer"]) {
$defer = true;
}
$sent = $email_return["sent"];
$pdfs_sent += $sent;
$job_return->sent = $pdfs_sent;
$job->result = json_encode($job_return);
//$job->return = json_encode(["sent" => $sent]);
$job->reconnectDB();
$job->save();
} while($sent);
// prepare job update
if($timeout) {
$job->status = "timeout";
} elseif($defer) {
echo "email runner: deferring to next run\n";
$job->status = "defer";
} else {
$finished = new DateTime("now");
$job->finished = $finished->format("Y-m-d H:i:s");
$job->status = "finished";
}
$job->reconnectDB();
$job->save();