Aggiunto sistema di notifiche (Interventi)
This commit is contained in:
parent
5f78fbd85d
commit
8e58f81ee0
16
actions.php
16
actions.php
|
@ -83,20 +83,8 @@ if (filter('op') == 'link_file' || filter('op') == 'unlink_file') {
|
||||||
$mail->ConfirmReadingTo = $mail->From;
|
$mail->ConfirmReadingTo = $mail->From;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reply To
|
// Template
|
||||||
if (!empty($template['reply_to'])) {
|
$mail->setTemplate($template);
|
||||||
$mail->AddReplyTo($template['reply_to']);
|
|
||||||
}
|
|
||||||
|
|
||||||
// CC
|
|
||||||
if (!empty($template['cc'])) {
|
|
||||||
$mail->AddCC($template['cc']);
|
|
||||||
}
|
|
||||||
|
|
||||||
// BCC
|
|
||||||
if (!empty($template['bcc'])) {
|
|
||||||
$mail->AddBCC($template['bcc']);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Destinatari
|
// Destinatari
|
||||||
$mail->addReceivers(post('destinatari'), post('tipo_destinatari'));
|
$mail->addReceivers(post('destinatari'), post('tipo_destinatari'));
|
||||||
|
|
2
core.php
2
core.php
|
@ -134,7 +134,7 @@ if (!API::isAPIRequest()) {
|
||||||
$debugbar->addCollector(new DebugBar\DataCollector\TimeDataCollector());
|
$debugbar->addCollector(new DebugBar\DataCollector\TimeDataCollector());
|
||||||
|
|
||||||
$debugbar->addCollector(new DebugBar\Bridge\MonologCollector($logger));
|
$debugbar->addCollector(new DebugBar\Bridge\MonologCollector($logger));
|
||||||
$debugbar->addCollector(new Extension\EloquentCollector($dbo->getCapsule()));
|
$debugbar->addCollector(new Extensions\EloquentCollector($dbo->getCapsule()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -188,6 +188,17 @@ switch (post('op')) {
|
||||||
'tipo_sconto_globale' => $tipo_sconto,
|
'tipo_sconto_globale' => $tipo_sconto,
|
||||||
], ['id' => $id_record]);
|
], ['id' => $id_record]);
|
||||||
|
|
||||||
|
$stato = $dbo->selectOne('in_statiintervento', '*', ['idstatointervento' => post('idstatointervento')]);
|
||||||
|
// Notifica chiusura intervento
|
||||||
|
if (!empty($stato['notifica']) && !empty($stato['destinatari'])) {
|
||||||
|
$n = new Notifications\EmailNotification();
|
||||||
|
|
||||||
|
$n->setTemplate('Stato intervento', $id_record);
|
||||||
|
$n->setReceivers($stato['destinatari']);
|
||||||
|
|
||||||
|
$n->send();
|
||||||
|
}
|
||||||
|
|
||||||
flash()->info(tr('Informazioni salvate correttamente!'));
|
flash()->info(tr('Informazioni salvate correttamente!'));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -322,7 +333,6 @@ switch (post('op')) {
|
||||||
|
|
||||||
// Collegamenti tecnici/interventi
|
// Collegamenti tecnici/interventi
|
||||||
$idtecnici = post('idtecnico');
|
$idtecnici = post('idtecnico');
|
||||||
|
|
||||||
foreach ($idtecnici as $idtecnico) {
|
foreach ($idtecnici as $idtecnico) {
|
||||||
add_tecnico($id_record, $idtecnico, post('orario_inizio'), post('orario_fine'), $idcontratto);
|
add_tecnico($id_record, $idtecnico, post('orario_inizio'), post('orario_fine'), $idcontratto);
|
||||||
}
|
}
|
||||||
|
@ -598,6 +608,17 @@ switch (post('op')) {
|
||||||
} elseif ($dbo->query('UPDATE in_interventi SET firma_file='.prepare($firma_file).', firma_data=NOW(), firma_nome = '.prepare($firma_nome).', idstatointervento = "OK" WHERE id='.prepare($id_record))) {
|
} elseif ($dbo->query('UPDATE in_interventi SET firma_file='.prepare($firma_file).', firma_data=NOW(), firma_nome = '.prepare($firma_nome).', idstatointervento = "OK" WHERE id='.prepare($id_record))) {
|
||||||
flash()->info(tr('Firma salvata correttamente!'));
|
flash()->info(tr('Firma salvata correttamente!'));
|
||||||
flash()->info(tr('Attività completata!'));
|
flash()->info(tr('Attività completata!'));
|
||||||
|
|
||||||
|
$stato = $dbo->selectOne('in_statiintervento', '*', ['idstatointervento' => 'OK']);
|
||||||
|
// Notifica chiusura intervento
|
||||||
|
if (!empty($stato['notifica']) && !empty($stato['destinatari'])) {
|
||||||
|
$n = new Notifications\EmailNotification();
|
||||||
|
|
||||||
|
$n->setTemplate('Stato intervento', $id_record);
|
||||||
|
$n->setReceivers($stato['destinatari']);
|
||||||
|
|
||||||
|
$n->send();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
flash()->error(tr('Errore durante il salvataggio della firma nel database!'));
|
flash()->error(tr('Errore durante il salvataggio della firma nel database!'));
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,12 +23,25 @@ switch (get('op')) {
|
||||||
$fine = date_modify(date_create(date('Y-m-d H:\0\0')), '+'.$ore.' hours')->format('Y-m-d H:\0\0');
|
$fine = date_modify(date_create(date('Y-m-d H:\0\0')), '+'.$ore.' hours')->format('Y-m-d H:\0\0');
|
||||||
|
|
||||||
add_tecnico($id_record, $idtecnico, $inizio, $fine, $idcontratto);
|
add_tecnico($id_record, $idtecnico, $inizio, $fine, $idcontratto);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// RIMOZIONE SESSIONE DI LAVORO
|
// RIMOZIONE SESSIONE DI LAVORO
|
||||||
case 'del_sessione':
|
case 'del_sessione':
|
||||||
$dbo->query('DELETE FROM in_interventi_tecnici WHERE id='.prepare(get('id')));
|
$id = get('id');
|
||||||
|
|
||||||
|
$tecnico = $dbo->fetchOne('SELECT an_anagrafiche.email FROM an_anagrafiche INNER JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica WHERE in_interventi_tecnici.id = '.prepare($id));
|
||||||
|
|
||||||
|
$dbo->query('DELETE FROM in_interventi_tecnici WHERE id='.prepare($id));
|
||||||
|
|
||||||
|
// Notifica nuovo intervento al tecnico
|
||||||
|
if (!empty($tecnico['email'])) {
|
||||||
|
$n = new Notifications\EmailNotification();
|
||||||
|
|
||||||
|
$n->setTemplate('Notifica rimozione intervento', $id_record);
|
||||||
|
$n->setReceivers($tecnico['email']);
|
||||||
|
|
||||||
|
$n->send();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ function add_tecnico($idintervento, $idtecnico, $inizio, $fine, $idcontratto = n
|
||||||
$dbo = Database::getConnection();
|
$dbo = Database::getConnection();
|
||||||
|
|
||||||
// Controllo sull'identità del tecnico
|
// Controllo sull'identità del tecnico
|
||||||
$tecnico = $dbo->fetchArray('SELECT an_anagrafiche.idanagrafica FROM an_anagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica INNER JOIN an_tipianagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE an_anagrafiche.idanagrafica = '.prepare($idtecnico)." AND an_tipianagrafiche.descrizione = 'Tecnico'");
|
$tecnico = $dbo->fetchOne('SELECT an_anagrafiche.idanagrafica, an_anagrafiche.email FROM an_anagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica INNER JOIN an_tipianagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE an_anagrafiche.idanagrafica = '.prepare($idtecnico)." AND an_tipianagrafiche.descrizione = 'Tecnico'");
|
||||||
if (empty($tecnico)) {
|
if (empty($tecnico)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -161,6 +161,16 @@ function add_tecnico($idintervento, $idtecnico, $inizio, $fine, $idcontratto = n
|
||||||
'prezzo_dirittochiamata_tecnico' => $costo_dirittochiamata_tecnico,
|
'prezzo_dirittochiamata_tecnico' => $costo_dirittochiamata_tecnico,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
// Notifica nuovo intervento al tecnico
|
||||||
|
if (!empty($tecnico['email'])) {
|
||||||
|
$n = new Notifications\EmailNotification();
|
||||||
|
|
||||||
|
$n->setTemplate('Notifica intervento', $id_record);
|
||||||
|
$n->setReceivers($tecnico['email']);
|
||||||
|
|
||||||
|
$n->send();
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -347,7 +357,7 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
|
||||||
$dbo = Database::getConnection();
|
$dbo = Database::getConnection();
|
||||||
|
|
||||||
$id_ritenuta_acconto = setting("Percentuale ritenuta d'acconto");
|
$id_ritenuta_acconto = setting("Percentuale ritenuta d'acconto");
|
||||||
$$id_rivalsa_inps = setting('Percentuale rivalsa INPS');
|
$id_rivalsa_inps = setting('Percentuale rivalsa INPS');
|
||||||
|
|
||||||
// Leggo l'anagrafica del cliente
|
// Leggo l'anagrafica del cliente
|
||||||
$rs = $dbo->fetchArray('SELECT idanagrafica, codice, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento='.prepare($id_intervento).') AS data FROM `in_interventi` WHERE id='.prepare($id_intervento));
|
$rs = $dbo->fetchArray('SELECT idanagrafica, codice, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento='.prepare($id_intervento).') AS data FROM `in_interventi` WHERE id='.prepare($id_intervento));
|
||||||
|
@ -378,7 +388,7 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
|
||||||
$desc_iva = $rs[0]['descrizione'];
|
$desc_iva = $rs[0]['descrizione'];
|
||||||
|
|
||||||
// Calcolo rivalsa inps
|
// Calcolo rivalsa inps
|
||||||
$query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare($$id_rivalsa_inps);
|
$query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare($id_rivalsa_inps);
|
||||||
$rs = $dbo->fetchArray($query);
|
$rs = $dbo->fetchArray($query);
|
||||||
$rivalsainps = ($subtot - $sconto) / 100 * $rs[0]['percentuale'];
|
$rivalsainps = ($subtot - $sconto) / 100 * $rs[0]['percentuale'];
|
||||||
|
|
||||||
|
@ -391,7 +401,7 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
|
||||||
$ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale'];
|
$ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, calcolo_ritenutaacconto, `order`) VALUES('.prepare($id_fattura).', '.prepare($id_intervento).', '.prepare($id_conto).', '.prepare($id_iva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot).', '.prepare($sconto).', '.prepare($sconto).", 'UNT', 'ore', ".prepare($ore).', '.prepare($$id_rivalsa_inps).', '.prepare($rivalsainps).', '.prepare($id_ritenuta_acconto).', '.prepare($ritenutaacconto).', '.prepare(setting("Metodologia calcolo ritenuta d'acconto predefinito")).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_fattura).'))';
|
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, calcolo_ritenutaacconto, `order`) VALUES('.prepare($id_fattura).', '.prepare($id_intervento).', '.prepare($id_conto).', '.prepare($id_iva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot).', '.prepare($sconto).', '.prepare($sconto).", 'UNT', 'ore', ".prepare($ore).', '.prepare($id_rivalsa_inps).', '.prepare($rivalsainps).', '.prepare($id_ritenuta_acconto).', '.prepare($ritenutaacconto).', '.prepare(setting("Metodologia calcolo ritenuta d'acconto predefinito")).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_fattura).'))';
|
||||||
$dbo->query($query);
|
$dbo->query($query);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -412,7 +422,7 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
|
||||||
$desc_iva = $rs[0]['descrizione'];
|
$desc_iva = $rs[0]['descrizione'];
|
||||||
|
|
||||||
// Calcolo rivalsa inps
|
// Calcolo rivalsa inps
|
||||||
$query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare($$id_rivalsa_inps);
|
$query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare($id_rivalsa_inps);
|
||||||
$rs = $dbo->fetchArray($query);
|
$rs = $dbo->fetchArray($query);
|
||||||
$rivalsainps = $rst[$i]['tot_prezzo_dirittochiamata'] / 100 * $rs[0]['percentuale'];
|
$rivalsainps = $rst[$i]['tot_prezzo_dirittochiamata'] / 100 * $rs[0]['percentuale'];
|
||||||
|
|
||||||
|
@ -436,7 +446,7 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
|
||||||
'tipo_sconto' => 'UNT',
|
'tipo_sconto' => 'UNT',
|
||||||
'um' => '-',
|
'um' => '-',
|
||||||
'qta' => $rst[$i]['qta'],
|
'qta' => $rst[$i]['qta'],
|
||||||
'idrivalsainps' => $$id_rivalsa_inps,
|
'idrivalsainps' => $id_rivalsa_inps,
|
||||||
'rivalsainps' => $rivalsainps,
|
'rivalsainps' => $rivalsainps,
|
||||||
'idritenutaacconto' => $id_ritenuta_acconto,
|
'idritenutaacconto' => $id_ritenuta_acconto,
|
||||||
'ritenutaacconto' => $ritenutaacconto,
|
'ritenutaacconto' => $ritenutaacconto,
|
||||||
|
@ -469,7 +479,7 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
|
||||||
$iva_indetraibile = $iva / 100 * $rs[0]['indetraibile'];
|
$iva_indetraibile = $iva / 100 * $rs[0]['indetraibile'];
|
||||||
|
|
||||||
// Calcolo rivalsa inps
|
// Calcolo rivalsa inps
|
||||||
$query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare($$id_rivalsa_inps);
|
$query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare($id_rivalsa_inps);
|
||||||
$rs = $dbo->fetchArray($query);
|
$rs = $dbo->fetchArray($query);
|
||||||
$rivalsainps = ($subtot - $sconto) / 100 * $rs[0]['percentuale'];
|
$rivalsainps = ($subtot - $sconto) / 100 * $rs[0]['percentuale'];
|
||||||
|
|
||||||
|
@ -482,7 +492,7 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
|
||||||
$ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale'];
|
$ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, calcolo_ritenutaacconto, `order`) VALUES('.prepare($id_fattura).', '.prepare($id_intervento).', '.prepare($id_conto).', '.prepare($id_iva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($rsr[$i]['descrizione']).', '.prepare($subtot).', '.prepare($rsr[$i]['sconto']).', '.prepare($rsr[$i]['sconto_unitario']).', '.prepare($rsr[$i]['tipo_sconto']).', '.prepare($rsr[$i]['um']).', '.prepare($rsr[$i]['qta']).', '.prepare($$id_rivalsa_inps).', '.prepare($rivalsainps).', '.prepare($id_ritenuta_acconto).', '.prepare($ritenutaacconto).', '.prepare(setting("Metodologia calcolo ritenuta d'acconto predefinito")).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_fattura).'))';
|
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, calcolo_ritenutaacconto, `order`) VALUES('.prepare($id_fattura).', '.prepare($id_intervento).', '.prepare($id_conto).', '.prepare($id_iva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($rsr[$i]['descrizione']).', '.prepare($subtot).', '.prepare($rsr[$i]['sconto']).', '.prepare($rsr[$i]['sconto_unitario']).', '.prepare($rsr[$i]['tipo_sconto']).', '.prepare($rsr[$i]['um']).', '.prepare($rsr[$i]['qta']).', '.prepare($id_rivalsa_inps).', '.prepare($rivalsainps).', '.prepare($id_ritenuta_acconto).', '.prepare($ritenutaacconto).', '.prepare(setting("Metodologia calcolo ritenuta d'acconto predefinito")).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_fattura).'))';
|
||||||
$dbo->query($query);
|
$dbo->query($query);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -500,7 +510,7 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
|
||||||
$iva_indetraibile = $iva / 100 * $dati[0]['indetraibile'];
|
$iva_indetraibile = $iva / 100 * $dati[0]['indetraibile'];
|
||||||
|
|
||||||
// Calcolo rivalsa inps
|
// Calcolo rivalsa inps
|
||||||
$query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare($$id_rivalsa_inps);
|
$query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare($id_rivalsa_inps);
|
||||||
$dati = $dbo->fetchArray($query);
|
$dati = $dbo->fetchArray($query);
|
||||||
$rivalsainps = ($subtot - $sconto) / 100 * $dati[0]['percentuale'];
|
$rivalsainps = ($subtot - $sconto) / 100 * $dati[0]['percentuale'];
|
||||||
|
|
||||||
|
@ -513,7 +523,7 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
|
||||||
$ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $dati[0]['percentuale'];
|
$ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $dati[0]['percentuale'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, calcolo_ritenutaacconto, `order`) VALUES('.prepare($id_fattura).', '.prepare($id_intervento).', '.prepare($id_conto).', '.prepare($id_iva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare('Trasferta intervento '.$codice.' del '.Translator::dateToLocale($data)).', '.prepare($subtot).', '.prepare($sconto).', '.prepare($sconto).", 'UNT', '', 1, ".prepare($$id_rivalsa_inps).', '.prepare($rivalsainps).', '.prepare($id_ritenuta_acconto).', '.prepare($ritenutaacconto).', '.prepare(setting("Metodologia calcolo ritenuta d'acconto predefinito")).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_fattura).'))';
|
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, calcolo_ritenutaacconto, `order`) VALUES('.prepare($id_fattura).', '.prepare($id_intervento).', '.prepare($id_conto).', '.prepare($id_iva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare('Trasferta intervento '.$codice.' del '.Translator::dateToLocale($data)).', '.prepare($subtot).', '.prepare($sconto).', '.prepare($sconto).", 'UNT', '', 1, ".prepare($id_rivalsa_inps).', '.prepare($rivalsainps).', '.prepare($id_ritenuta_acconto).', '.prepare($ritenutaacconto).', '.prepare(setting("Metodologia calcolo ritenuta d'acconto predefinito")).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_fattura).'))';
|
||||||
$dbo->query($query);
|
$dbo->query($query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -530,7 +540,7 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
|
||||||
$iva_indetraibile = $iva / 100 * $rs[0]['indetraibile'];
|
$iva_indetraibile = $iva / 100 * $rs[0]['indetraibile'];
|
||||||
|
|
||||||
// Calcolo rivalsa inps
|
// Calcolo rivalsa inps
|
||||||
$query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare($$id_rivalsa_inps);
|
$query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare($id_rivalsa_inps);
|
||||||
$rs = $dbo->fetchArray($query);
|
$rs = $dbo->fetchArray($query);
|
||||||
$rivalsainps = ($subtot) / 100 * $rs[0]['percentuale'];
|
$rivalsainps = ($subtot) / 100 * $rs[0]['percentuale'];
|
||||||
|
|
||||||
|
@ -543,7 +553,7 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
|
||||||
$ritenutaacconto = ($subtot + $rivalsainps) / 100 * $rs[0]['percentuale'];
|
$ritenutaacconto = ($subtot + $rivalsainps) / 100 * $rs[0]['percentuale'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, calcolo_ritenutaacconto, `order`) VALUES('.prepare($id_fattura).', NULL, '.prepare($id_conto).', '.prepare($id_iva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare('Sconto '.$descrizione).', '.prepare($subtot).', 1, '.prepare($$id_rivalsa_inps).', '.prepare($rivalsainps).', '.prepare($id_ritenuta_acconto).', '.prepare($ritenutaacconto).', '.prepare(setting("Metodologia calcolo ritenuta d'acconto predefinito")).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_fattura).'))';
|
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, calcolo_ritenutaacconto, `order`) VALUES('.prepare($id_fattura).', NULL, '.prepare($id_conto).', '.prepare($id_iva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare('Sconto '.$descrizione).', '.prepare($subtot).', 1, '.prepare($id_rivalsa_inps).', '.prepare($rivalsainps).', '.prepare($id_ritenuta_acconto).', '.prepare($ritenutaacconto).', '.prepare(setting("Metodologia calcolo ritenuta d'acconto predefinito")).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_fattura).'))';
|
||||||
$dbo->query($query);
|
$dbo->query($query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
|
|
||||||
$r = $dbo->fetchOne('SELECT *,
|
$r = $dbo->fetchOne('SELECT *,
|
||||||
(SELECT MAX(orario_fine) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS data_fine,
|
(SELECT MAX(orario_fine) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS data_fine,
|
||||||
(SELECT email FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica=in_interventi.idanagrafica) AS email
|
(SELECT email FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica=in_interventi.idanagrafica) AS email,
|
||||||
|
(SELECT descrizione FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS stato
|
||||||
FROM in_interventi WHERE id='.prepare($id_record));
|
FROM in_interventi WHERE id='.prepare($id_record));
|
||||||
|
|
||||||
// Variabili da sostituire
|
// Variabili da sostituire
|
||||||
|
@ -15,4 +16,5 @@ return [
|
||||||
'data richiesta' => Translator::dateToLocale($r['data_richiesta']),
|
'data richiesta' => Translator::dateToLocale($r['data_richiesta']),
|
||||||
'data fine intervento' => empty($r['data_fine']) ? Translator::dateToLocale($r['data_richiesta']) : Translator::dateToLocale($r['data_fine']),
|
'data fine intervento' => empty($r['data_fine']) ? Translator::dateToLocale($r['data_richiesta']) : Translator::dateToLocale($r['data_fine']),
|
||||||
'id_anagrafica' => $r['idanagrafica'],
|
'id_anagrafica' => $r['idanagrafica'],
|
||||||
|
'stato' => $r['stato'],
|
||||||
];
|
];
|
||||||
|
|
|
@ -4,13 +4,14 @@ include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
switch (post('op')) {
|
switch (post('op')) {
|
||||||
case 'update':
|
case 'update':
|
||||||
$descrizione = post('descrizione');
|
$dbo->update('in_statiintervento', [
|
||||||
$colore = post('colore');
|
'descrizione' => post('descrizione'),
|
||||||
$completato = post('completato');
|
'colore' => post('colore'),
|
||||||
|
'completato' => post('completato'),
|
||||||
// Aggiorna
|
'notifica' => post('notifica'),
|
||||||
$query = 'UPDATE in_statiintervento SET descrizione='.prepare($descrizione).', colore='.prepare($colore).', completato='.prepare($completato).' WHERE idstatointervento='.prepare($id_record);
|
'id_email' => post('email'),
|
||||||
$dbo->query($query);
|
'destinatari' => post('destinatari'),
|
||||||
|
], ['idstatointervento' => $id_record]);
|
||||||
|
|
||||||
flash()->info(tr('Informazioni salvate correttamente.'));
|
flash()->info(tr('Informazioni salvate correttamente.'));
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,20 @@ if ($record['can_delete']) {
|
||||||
{[ "type": "text", "label": "<?php echo tr('Colore'); ?>", "name": "colore", "required": 1, "class": "colorpicker text-center", "value": "$colore$", "extra": "maxlength='7'", "icon-after": "<div class='img-circle square'></div>" ]}
|
{[ "type": "text", "label": "<?php echo tr('Colore'); ?>", "name": "colore", "required": 1, "class": "colorpicker text-center", "value": "$colore$", "extra": "maxlength='7'", "icon-after": "<div class='img-circle square'></div>" ]}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-2">
|
||||||
|
{[ "type": "checkbox", "label": "<?php echo tr('Abilita notifiche'); ?>", "name": "notifica", "value": "$notifica$" ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
{[ "type": "select", "label": "<?php echo tr('Template email'); ?>", "name": "email", "value": "$id_email$", "values": "query=SELECT id, name AS descrizione FROM zz_emails WHERE id_module = <?php echo Modules::get('Interventi')['id']; ?> AND deleted_at IS NULL" ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
{[ "type": "text", "label": "<?php echo tr('Destinatari'); ?>", "name": "destinatari", "value": "$destinatari$" ]}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Extension;
|
namespace Extensions;
|
||||||
|
|
||||||
class EloquentCollector extends \DebugBar\DataCollector\PDO\PDOCollector
|
class EloquentCollector extends \DebugBar\DataCollector\PDO\PDOCollector
|
||||||
{
|
{
|
104
src/Mail.php
104
src/Mail.php
|
@ -1,5 +1,8 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use Models\MailAccount;
|
||||||
|
use Models\MailTemplate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Classe per gestire le email in base alle impostazioni, basata sul framework open-source PHPMailer.
|
* Classe per gestire le email in base alle impostazioni, basata sul framework open-source PHPMailer.
|
||||||
*
|
*
|
||||||
|
@ -25,46 +28,29 @@ class Mail extends PHPMailer\PHPMailer\PHPMailer
|
||||||
*/
|
*/
|
||||||
public static function getAccounts()
|
public static function getAccounts()
|
||||||
{
|
{
|
||||||
if (empty(self::$accounts)) {
|
return MailAccount::getAll();
|
||||||
$database = Database::getConnection();
|
|
||||||
|
|
||||||
$results = $database->fetchArray('SELECT * FROM zz_smtps WHERE deleted_at IS NULL');
|
|
||||||
|
|
||||||
$accounts = [];
|
|
||||||
|
|
||||||
foreach ($results as $result) {
|
|
||||||
$accounts[$result['id']] = $result;
|
|
||||||
$accounts[$result['name']] = $result['id'];
|
|
||||||
|
|
||||||
if (!empty($result['main'])) {
|
|
||||||
$accounts['default'] = $result['id'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
self::$accounts = $accounts;
|
|
||||||
}
|
|
||||||
|
|
||||||
return self::$accounts;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restituisce le informazioni relative a un singolo account email specificato.
|
* Restituisce le informazioni relative a un singolo account email specificato.
|
||||||
*
|
*
|
||||||
* @param string|int $template
|
* @param string|int $account
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public static function get($account = null)
|
public static function get($account = null)
|
||||||
{
|
{
|
||||||
if (!is_numeric($account) && !empty(self::getAccounts()[$account])) {
|
$accounts = self::getAccounts();
|
||||||
$account = self::getAccounts()[$account];
|
|
||||||
|
$result = MailAccount::get($account);
|
||||||
|
|
||||||
|
if (empty($return)) {
|
||||||
|
$result = $accounts->first(function ($item) use ($group) {
|
||||||
|
return !empty($item->main);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($account)) {
|
return $result;
|
||||||
$account = self::getAccounts()['default'];
|
|
||||||
}
|
|
||||||
|
|
||||||
return self::getAccounts()[$account];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -204,6 +190,27 @@ class Mail extends PHPMailer\PHPMailer\PHPMailer
|
||||||
$this->WordWrap = 78;
|
$this->WordWrap = 78;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Testa la connessione al server SMTP.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function testSMTP()
|
||||||
|
{
|
||||||
|
if ($this->smtpConnect()) {
|
||||||
|
$this->smtpClose();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Invia l'email impostata.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
public function send()
|
public function send()
|
||||||
{
|
{
|
||||||
if (empty($this->AltBody)) {
|
if (empty($this->AltBody)) {
|
||||||
|
@ -223,6 +230,24 @@ class Mail extends PHPMailer\PHPMailer\PHPMailer
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setTemplate(array $template)
|
||||||
|
{
|
||||||
|
// Reply To
|
||||||
|
if (!empty($template['reply_to'])) {
|
||||||
|
$this->AddReplyTo($template['reply_to']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// CC
|
||||||
|
if (!empty($template['cc'])) {
|
||||||
|
$this->AddCC($template['cc']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// BCC
|
||||||
|
if (!empty($template['bcc'])) {
|
||||||
|
$this->AddBCC($template['bcc']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Aggiunge gli allegati all'email.
|
* Aggiunge gli allegati all'email.
|
||||||
*
|
*
|
||||||
|
@ -287,16 +312,15 @@ class Mail extends PHPMailer\PHPMailer\PHPMailer
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Aggiunge i detinatari.
|
* Aggiunge i destinatari.
|
||||||
*
|
*
|
||||||
* @param array $receivers
|
* @param array $receivers
|
||||||
* @param array $types
|
* @param array $types
|
||||||
*/
|
*/
|
||||||
public function addReceivers($receivers, $types)
|
public function addReceivers($receivers, $types = [])
|
||||||
{
|
{
|
||||||
// Destinatari
|
|
||||||
foreach ($receivers as $key => $destinatario) {
|
foreach ($receivers as $key => $destinatario) {
|
||||||
$type = $types[$key];
|
$type = $types[$key] ?: 'a';
|
||||||
|
|
||||||
$pieces = explode('<', $destinatario);
|
$pieces = explode('<', $destinatario);
|
||||||
$count = count($pieces);
|
$count = count($pieces);
|
||||||
|
@ -320,20 +344,4 @@ class Mail extends PHPMailer\PHPMailer\PHPMailer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Testa la connessione al server SMTP.
|
|
||||||
*
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function testSMTP()
|
|
||||||
{
|
|
||||||
if ($this->smtpConnect()) {
|
|
||||||
$this->smtpClose();
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Models;
|
||||||
|
|
||||||
|
use Traits\StoreTrait;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
|
|
||||||
|
class MailAccount extends Model
|
||||||
|
{
|
||||||
|
use StoreTrait, SoftDeletes;
|
||||||
|
|
||||||
|
protected $table = 'zz_smtps';
|
||||||
|
|
||||||
|
/* Relazioni Eloquent */
|
||||||
|
|
||||||
|
public function account()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(MailTemplate::class, 'id_smtp');
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Models;
|
||||||
|
|
||||||
|
use Traits\StoreTrait;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
|
|
||||||
|
class MailTemplate extends Model
|
||||||
|
{
|
||||||
|
use StoreTrait, SoftDeletes;
|
||||||
|
|
||||||
|
protected $table = 'zz_emails';
|
||||||
|
|
||||||
|
/* Relazioni Eloquent */
|
||||||
|
|
||||||
|
public function module()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Module::class, 'id_module');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function account()
|
||||||
|
{
|
||||||
|
return $this->hasOne(MailAccount::class, 'id_smtp');
|
||||||
|
}
|
||||||
|
}
|
|
@ -109,6 +109,11 @@ class Module extends Model
|
||||||
return $this->hasMany(PrintTemplate::class, 'id_module');
|
return $this->hasMany(PrintTemplate::class, 'id_module');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function mailTemplates()
|
||||||
|
{
|
||||||
|
return $this->hasMany(MailTemplate::class, 'id_module');
|
||||||
|
}
|
||||||
|
|
||||||
public function views()
|
public function views()
|
||||||
{
|
{
|
||||||
return $this->hasMany(View::class, 'id_module');
|
return $this->hasMany(View::class, 'id_module');
|
||||||
|
@ -124,6 +129,8 @@ class Module extends Model
|
||||||
return $this->hasMany(Clause::class, 'idmodule');
|
return $this->hasMany(Clause::class, 'idmodule');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Gerarchia */
|
||||||
|
|
||||||
public function children()
|
public function children()
|
||||||
{
|
{
|
||||||
return $this->hasMany(self::class, 'parent')->withoutGlobalScope('enabled')
|
return $this->hasMany(self::class, 'parent')->withoutGlobalScope('enabled')
|
||||||
|
@ -145,8 +152,6 @@ class Module extends Model
|
||||||
return $this->children()->with('allChildren');
|
return $this->children()->with('allChildren');
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Metodi statici */
|
|
||||||
|
|
||||||
public static function getHierarchy()
|
public static function getHierarchy()
|
||||||
{
|
{
|
||||||
return self::with('allChildren')
|
return self::with('allChildren')
|
||||||
|
|
|
@ -0,0 +1,195 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Notifications;
|
||||||
|
|
||||||
|
use Mail;
|
||||||
|
use Prints;
|
||||||
|
|
||||||
|
class EmailNotification extends Notification
|
||||||
|
{
|
||||||
|
protected $template = null;
|
||||||
|
protected $account = null;
|
||||||
|
protected $attachments = null;
|
||||||
|
protected $subject = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restituisce l'account email della notifica.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getAccount()
|
||||||
|
{
|
||||||
|
return Mail::get($this->account);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Imposta l'account email della notifica.
|
||||||
|
*
|
||||||
|
* @param string|int $value
|
||||||
|
*/
|
||||||
|
public function setAccount($value)
|
||||||
|
{
|
||||||
|
$this->account = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restituisce il template della notifica.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getTemplate()
|
||||||
|
{
|
||||||
|
return Mail::getTemplate($this->template);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Imposta il template della notifica.
|
||||||
|
*
|
||||||
|
* @param string|int $value
|
||||||
|
*/
|
||||||
|
public function setTemplate($value, $id_record)
|
||||||
|
{
|
||||||
|
$this->template = $value;
|
||||||
|
|
||||||
|
$template = $this->getTemplate();
|
||||||
|
$variables = Mail::getTemplateVariables($template['id'], $id_record);
|
||||||
|
|
||||||
|
// Sostituzione delle variabili di base
|
||||||
|
$replaces = [];
|
||||||
|
foreach ($variables as $key => $value) {
|
||||||
|
$replaces['{'.$key.'}'] = $value;
|
||||||
|
}
|
||||||
|
$body = replace($template['body'], $replaces);
|
||||||
|
$subject = replace($template['subject'], $replaces);
|
||||||
|
|
||||||
|
$this->setContent($body);
|
||||||
|
$this->setSubject($subject);
|
||||||
|
$this->setAccount($template['id_smtp']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Include le stampe selezionate dal template.
|
||||||
|
*
|
||||||
|
* @param int $id_record
|
||||||
|
*/
|
||||||
|
public function includeTemplatePrints($id_record)
|
||||||
|
{
|
||||||
|
$template = $this->getTemplate();
|
||||||
|
|
||||||
|
$prints = $dbo->fetchArray('SELECT id_print FROM zz_email_print WHERE id_email = '.prepare($template['id']));
|
||||||
|
foreach ($prints as $print) {
|
||||||
|
$this->addPrint($print['id_print'], $id_record);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restituisce gli allegati della notifica.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getAttachments()
|
||||||
|
{
|
||||||
|
return $this->attachments;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Imposta gli allegati della notifica.
|
||||||
|
*
|
||||||
|
* @param array $values
|
||||||
|
*/
|
||||||
|
public function setAttachments(array $values)
|
||||||
|
{
|
||||||
|
$this->attachments = [];
|
||||||
|
|
||||||
|
foreach ($values as $value) {
|
||||||
|
$path = is_array($value) ? $value['path'] : $value;
|
||||||
|
$name = is_array($value) ? $value['name'] : null;
|
||||||
|
$this->addAttachment($path, $name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Aggiunge un allegato alla notifica.
|
||||||
|
*
|
||||||
|
* @param string $value
|
||||||
|
*/
|
||||||
|
public function addAttachment($path, $name = null)
|
||||||
|
{
|
||||||
|
$this->attachments[] = [
|
||||||
|
'path' => $path,
|
||||||
|
'name' => $name ?: basename($path),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Aggiunge una stampa alla notifica.
|
||||||
|
*
|
||||||
|
* @param string|int $print
|
||||||
|
* @param int $id_record
|
||||||
|
* @param string $name
|
||||||
|
*/
|
||||||
|
public function addPrint($print, $id_record, $name = null)
|
||||||
|
{
|
||||||
|
$print = Prints::get($print);
|
||||||
|
|
||||||
|
if (empty($name)) {
|
||||||
|
$name = $print['title'].'.pdf';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Utilizzo di una cartella particolare per il salvataggio temporaneo degli allegati
|
||||||
|
$path = DOCROOT.'/files/notifications/'.$print['title'].' - '.$id_record.'.pdf';
|
||||||
|
|
||||||
|
Prints::render($print['id'], $id_record, $path);
|
||||||
|
|
||||||
|
$this->addAttachment($path, $name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restituisce il titolo della notifica.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getSubject()
|
||||||
|
{
|
||||||
|
return $this->subject;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Imposta il titolo della notifica.
|
||||||
|
*
|
||||||
|
* @param string $value
|
||||||
|
*/
|
||||||
|
public function setSubject($value)
|
||||||
|
{
|
||||||
|
$this->subject = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function send()
|
||||||
|
{
|
||||||
|
$account = $this->getAccount();
|
||||||
|
$mail = new Mail($account['id']);
|
||||||
|
|
||||||
|
// Template
|
||||||
|
$template = $this->getTemplate();
|
||||||
|
if (!empty($template)) {
|
||||||
|
$mail->setTemplate($template);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Destinatari
|
||||||
|
$mail->addReceivers($this->getReceivers());
|
||||||
|
|
||||||
|
// Allegati
|
||||||
|
$attachments = $this->getAttachments();
|
||||||
|
foreach ($attachments as $attachment) {
|
||||||
|
$this->AddAttachment($attachment['path'], $attachment['name']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Oggetto
|
||||||
|
$mail->Subject = $this->getSubject();
|
||||||
|
|
||||||
|
// Contenuto
|
||||||
|
$mail->Body = $this->getContent();
|
||||||
|
|
||||||
|
return $mail->send();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,72 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Notifications;
|
||||||
|
|
||||||
|
abstract class Notification
|
||||||
|
{
|
||||||
|
public $receivers = [];
|
||||||
|
public $content = null;
|
||||||
|
|
||||||
|
public function __construct($receivers = null, $content = null)
|
||||||
|
{
|
||||||
|
$this->setReceivers($receivers);
|
||||||
|
$this->setContent($content);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restituisce i destinatari della notifica.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getReceivers()
|
||||||
|
{
|
||||||
|
return $this->receivers;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Imposta i destinatari della notifica.
|
||||||
|
*
|
||||||
|
* @param string|array $value
|
||||||
|
*/
|
||||||
|
public function setReceivers($value)
|
||||||
|
{
|
||||||
|
$this->receivers = [];
|
||||||
|
|
||||||
|
$values = is_array($value) ? $value : explode(';', $value);
|
||||||
|
foreach ($values as $value) {
|
||||||
|
$this->addReceiver($value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Aggiunge un destinataro alla notifica.
|
||||||
|
*
|
||||||
|
* @param string $value
|
||||||
|
*/
|
||||||
|
public function addReceiver($value)
|
||||||
|
{
|
||||||
|
$this->receivers[] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restituisce i contenuti della notifica.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getContent()
|
||||||
|
{
|
||||||
|
return $this->content;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Imposta i contenuti della notifica.
|
||||||
|
*
|
||||||
|
* @param string $value
|
||||||
|
*/
|
||||||
|
public function setContent($value)
|
||||||
|
{
|
||||||
|
$this->content = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract public function send();
|
||||||
|
}
|
|
@ -300,3 +300,19 @@ DELETE FROM `zz_settings` WHERE `nome` = 'Abilitare orario lavorativo';
|
||||||
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`) VALUES
|
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`) VALUES
|
||||||
(NULL, 'Inizio orario lavorativo', '00:00:00', 'time', 1, 'Dashboard', 1),
|
(NULL, 'Inizio orario lavorativo', '00:00:00', 'time', 1, 'Dashboard', 1),
|
||||||
(NULL, 'Fine orario lavorativo', '23:59:00', 'time', 1, 'Dashboard', 2);
|
(NULL, 'Fine orario lavorativo', '23:59:00', 'time', 1, 'Dashboard', 2);
|
||||||
|
|
||||||
|
-- Notifiche negli stati interventi
|
||||||
|
ALTER TABLE `in_statiintervento` ADD `notifica` boolean NOT NULL DEFAULT 0, ADD `id_email` int(11), ADD `destinatari` varchar(255);
|
||||||
|
ALTER TABLE `in_statiintervento` ADD FOREIGN KEY (`id_email`) REFERENCES `zz_emails`(`id`) ON DELETE CASCADE;
|
||||||
|
|
||||||
|
-- Email di notifica
|
||||||
|
INSERT INTO `zz_emails` (`id`, `id_module`, `id_smtp`, `name`, `icon`, `subject`, `reply_to`, `cc`, `bcc`, `body`, `read_notify`, `main`) VALUES
|
||||||
|
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi'), 1, 'Notifica intervento', 'fa fa-envelope', 'Notifica intervento numero {numero} del {data}', '', '', '', '<p>Gentile Tecnico,</p>\r\n<p>un nuovo intervento {numero} in {data} è stato aggiunto.</p>\r\n<p> </p>\r\n<p>Distinti saluti</p>\r\n', '0', '0'),
|
||||||
|
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi'), 1, 'Notifica rimozione intervento', 'fa fa-envelope', 'Notifica intervento numero {numero} del {data}', '', '', '', '<p>Gentile Tecnico,</p>\r\n<p>sei stato rimosso dall''intervento {numero} in {data}.</p>\r\n<p> </p>\r\n<p>Distinti saluti</p>\r\n', '0', '0'),
|
||||||
|
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi'), 1, 'Stato intervento', 'fa fa-envelope', 'Intervento numero {numero} del {data}: {stato}.', '', '', '', '<p>Gentile Utente,</p>\r\n<p>l''intervento {numero} in {data} è stato spostato nello stato {stato}.</p>', '0', '0');
|
||||||
|
|
||||||
|
INSERT INTO `zz_email_print` (`id`, `id_email`, `id_print`) VALUES
|
||||||
|
(NULL, (SELECT `id` FROM `zz_emails` WHERE `name` = 'Stato intervento' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi')), (SELECT `id` FROM `zz_prints` WHERE `name` = 'Intervento'));
|
||||||
|
|
||||||
|
UPDATE `zz_emails` SET `main` = 1 WHERE `name` = 'Rapportino intervento' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi');
|
||||||
|
UPDATE `in_statiintervento` SET `id_email` = (SELECT `id` FROM `zz_emails` WHERE `name` = 'Stato intervento' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi'));
|
||||||
|
|
Loading…
Reference in New Issue