Segmento Attività/Promemoria per attività

Migliorata coda di invio
This commit is contained in:
Luca 2020-06-22 16:57:43 +02:00
parent e9aa41b1b9
commit 7ee366514a
5 changed files with 95 additions and 8 deletions

View File

@ -1,8 +1,24 @@
<?php <?php
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
use Notifications\EmailNotification;
switch (post('op')) { switch (post('op')) {
case 'send':
$email = EmailNotification::build($mail);
// Invio mail
if ($email->send()){
$mail->sent_at = date("Y-m-d H:i:s");
$mail->save();
flash()->info(tr('Email inviata.'));
}else{
flash()->error(tr('Errore durante invio email.'));
}
break;
case 'retry': case 'retry':
$mail->attempt = 0; $mail->attempt = 0;
@ -13,7 +29,7 @@ switch (post('op')) {
if (empty($mail->sent_at)) { if (empty($mail->sent_at)) {
$mail->delete(); $mail->delete();
flash()->info(tr('Email rimossa dalla coda di invio!')); flash()->info(tr('Email rimossa dalla coda di invio.'));
} }
break; break;

View File

@ -0,0 +1,42 @@
<?php
include_once __DIR__.'/../../core.php';
use Modules\Emails\Mail;
switch (post('op')) {
case 'delete-bulk':
$i = 0;
foreach ($id_records as $id_record) {
if (isset($id_record)) {
$mail = Mail::find($id_record);
if (empty($mail->sent_at)) {
$mail->delete();
$i++;
}
}
}
if ($i>0){
flash()->info(tr($i.' email rimosse dalla coda di invio.'));
}else{
flash()->warning(tr('Nessuna email rimossa dalla coda di invio.'));
}
break;
}
$operations['delete-bulk'] = [
'text' => '<span><i class="fa fa-trash"></i> '.tr('Elimina selezionati').'</span>',
'data' => [
'msg' => tr('Vuoi davvero eliminare dalla coda di invio le email selezionate?'),
'button' => tr('Procedi'),
'class' => 'btn btn-lg btn-danger',
],
];
return $operations;

View File

@ -0,0 +1,29 @@
<?php
if (( $record['attempt'] >= 10) && empty($record['sent_at'])) {
echo '
<span class="label label-danger">
<i class="fa fa-times"></i> '.tr('Email fallita il: ').Translator::timestampToLocale($record['failed_at']).'
</span> &nbsp;';
echo '
<a class="btn btn-warning ask" data-backto="record-edit" data-msg="'.tr("Rimettere in coda l'email?").'" data-op="retry" data-button="'.tr('Rimetti in coda').'" data-class="btn btn-lg btn-warning" >
<i class="fa fa-refresh"></i> '.tr('Rimetti in coda').'
</a>';
echo '
<a class="btn btn-info ask" data-backto="record-edit" data-msg="'.tr("Inviare immediatamente l'email?").'" data-op="send" data-button="'.tr('Invia').'" data-class="btn btn-lg btn-info" >
<i class="fa fa-envelope"></i> '.tr('Invia immeditamente').'
</a>';
}else if (!empty($record['sent_at'])) {
echo '
<span class="label label-success">
<i class="fa fa-success"></i> '.tr('Email inviata il: ').Translator::timestampToLocale($record['sent_at']).'
</span>';
}

View File

@ -148,16 +148,10 @@ echo '
'.$mail->content.' '.$mail->content.'
</div>'; </div>';
//Posso eliminare l'email solo se questa non è già stata inviata
if (empty($mail->sent_at)) { if (empty($mail->sent_at)) {
echo ' echo '
<a class="btn btn-danger ask" data-backto="record-list"> <a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> '.tr('Elimina').' <i class="fa fa-trash"></i> '.tr('Elimina').'
</a>'; </a>';
if ($mail->attempt >= 10) {
echo '
<a class="btn btn-warning ask pull-right" data-backto="record-edit" data-msg="'.tr("Rimettere in coda l'email?").'" data-op="retry" data-button="'.tr('Rimetti in coda').'" data-class="btn btn-lg btn-warning" >
<i class="fa fa-refresh"></i> '.tr('Rimetti in coda').'
</a>';
}
} }

View File

@ -26,3 +26,9 @@ UPDATE `dt_ddt` SET `data_ora_trasporto` = NULL WHERE `dt_ddt`.`id` = '0000-00-0
-- fix widget Contratti in scadenza -- fix widget Contratti in scadenza
UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(dati.id) AS dato FROM(SELECT id, ((SELECT SUM(co_righe_contratti.qta) FROM co_righe_contratti WHERE co_righe_contratti.um=''ore'' AND co_righe_contratti.idcontratto=co_contratti.id) - IFNULL( (SELECT SUM(in_interventi_tecnici.ore) FROM in_interventi_tecnici INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id WHERE in_interventi.id_contratto=co_contratti.id AND in_interventi.idstatointervento IN (SELECT in_statiintervento.idstatointervento FROM in_statiintervento WHERE in_statiintervento.is_completato = 1)), 0) ) AS ore_rimanenti, DATEDIFF(data_conclusione, NOW()) AS giorni_rimanenti, data_conclusione, ore_preavviso_rinnovo, giorni_preavviso_rinnovo, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=co_contratti.idanagrafica) AS ragione_sociale FROM co_contratti WHERE idstato IN (SELECT id FROM co_staticontratti WHERE is_fatturabile = 1) AND rinnovabile = 1 AND YEAR(data_conclusione) > 1970 AND (SELECT id FROM co_contratti contratti WHERE contratti.idcontratto_prev = co_contratti.id) IS NULL HAVING (ore_rimanenti < ore_preavviso_rinnovo OR DATEDIFF(data_conclusione, NOW()) < ABS(giorni_preavviso_rinnovo)) ORDER BY giorni_rimanenti ASC, ore_rimanenti ASC) dati' WHERE `zz_widgets`.`name` = 'Contratti in scadenza'; UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(dati.id) AS dato FROM(SELECT id, ((SELECT SUM(co_righe_contratti.qta) FROM co_righe_contratti WHERE co_righe_contratti.um=''ore'' AND co_righe_contratti.idcontratto=co_contratti.id) - IFNULL( (SELECT SUM(in_interventi_tecnici.ore) FROM in_interventi_tecnici INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id WHERE in_interventi.id_contratto=co_contratti.id AND in_interventi.idstatointervento IN (SELECT in_statiintervento.idstatointervento FROM in_statiintervento WHERE in_statiintervento.is_completato = 1)), 0) ) AS ore_rimanenti, DATEDIFF(data_conclusione, NOW()) AS giorni_rimanenti, data_conclusione, ore_preavviso_rinnovo, giorni_preavviso_rinnovo, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=co_contratti.idanagrafica) AS ragione_sociale FROM co_contratti WHERE idstato IN (SELECT id FROM co_staticontratti WHERE is_fatturabile = 1) AND rinnovabile = 1 AND YEAR(data_conclusione) > 1970 AND (SELECT id FROM co_contratti contratti WHERE contratti.idcontratto_prev = co_contratti.id) IS NULL HAVING (ore_rimanenti < ore_preavviso_rinnovo OR DATEDIFF(data_conclusione, NOW()) < ABS(giorni_preavviso_rinnovo)) ORDER BY giorni_rimanenti ASC, ore_rimanenti ASC) dati' WHERE `zz_widgets`.`name` = 'Contratti in scadenza';
-- Segmento Attività/Promemoria per attività.
INSERT INTO `zz_segments` (`id`, `id_module`, `name`, `clause`, `position`, `pattern`, `note`, `predefined`, `predefined_accredito`, `predefined_addebito`, `is_fiscale`) VALUES
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi'), 'Tutti', '1=1', 'WHR', '####', '', 1, 0, 0, 0),
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi'), 'Attività', 'orario_inizio BETWEEN ''|period_start|'' AND ''|period_end|'' OR orario_fine BETWEEN ''|period_start|'' AND ''|period_end|''', 'WHR', '####', '', 0, 0, 0, 0),
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi'), 'Promemoria', '((in_interventi_tecnici.orario_inizio=''0000-00-00 00:00:00'' AND in_interventi_tecnici.orario_fine=''0000-00-00 00:00:00'') OR in_interventi_tecnici.id IS NULL)', 'WHR', '####', '', 0, 0, 0, 0);