mirror of
https://github.com/devcode-it/openstamanager.git
synced 2024-12-22 21:28:08 +01:00
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;
|
||||
}
|
||||
|
||||
// Reply To
|
||||
if (!empty($template['reply_to'])) {
|
||||
$mail->AddReplyTo($template['reply_to']);
|
||||
}
|
||||
|
||||
// CC
|
||||
if (!empty($template['cc'])) {
|
||||
$mail->AddCC($template['cc']);
|
||||
}
|
||||
|
||||
// BCC
|
||||
if (!empty($template['bcc'])) {
|
||||
$mail->AddBCC($template['bcc']);
|
||||
}
|
||||
// Template
|
||||
$mail->setTemplate($template);
|
||||
|
||||
// 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\Bridge\MonologCollector($logger));
|
||||
$debugbar->addCollector(new Extension\EloquentCollector($dbo->getCapsule()));
|
||||
$debugbar->addCollector(new Extensions\EloquentCollector($dbo->getCapsule()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -123,45 +123,45 @@ switch (post('op')) {
|
||||
$sconto_unitario = post('sconto')[$idriga];
|
||||
$tipo_sconto = post('tipo_sconto')[$idriga];
|
||||
$sconto = calcola_sconto([
|
||||
'sconto' => $sconto_unitario,
|
||||
'prezzo' => $prezzo_ore_consuntivo,
|
||||
'tipo' => $tipo_sconto,
|
||||
]);
|
||||
'sconto' => $sconto_unitario,
|
||||
'prezzo' => $prezzo_ore_consuntivo,
|
||||
'tipo' => $tipo_sconto,
|
||||
]);
|
||||
|
||||
$scontokm_unitario = post('scontokm')[$idriga];
|
||||
$tipo_scontokm = post('tipo_scontokm')[$idriga];
|
||||
$scontokm = ($tipo_scontokm == 'PRC') ? ($prezzo_km_consuntivo * $scontokm_unitario) / 100 : $scontokm_unitario;
|
||||
|
||||
$dbo->update('in_interventi_tecnici', [
|
||||
'idintervento' => $id_record,
|
||||
'idtipointervento' => $idtipointervento_tecnico,
|
||||
'idtecnico' => post('idtecnico')[$idriga],
|
||||
'idintervento' => $id_record,
|
||||
'idtipointervento' => $idtipointervento_tecnico,
|
||||
'idtecnico' => post('idtecnico')[$idriga],
|
||||
|
||||
'orario_inizio' => $orario_inizio,
|
||||
'orario_fine' => $orario_fine,
|
||||
'ore' => $ore,
|
||||
'km' => $km,
|
||||
'orario_inizio' => $orario_inizio,
|
||||
'orario_fine' => $orario_fine,
|
||||
'ore' => $ore,
|
||||
'km' => $km,
|
||||
|
||||
'prezzo_ore_unitario' => $prezzo_ore_unitario,
|
||||
'prezzo_km_unitario' => $prezzo_km_unitario,
|
||||
'prezzo_dirittochiamata' => $prezzo_dirittochiamata,
|
||||
'prezzo_ore_unitario_tecnico' => $prezzo_ore_unitario_tecnico,
|
||||
'prezzo_km_unitario_tecnico' => $prezzo_km_unitario_tecnico,
|
||||
'prezzo_dirittochiamata_tecnico' => $prezzo_dirittochiamata_tecnico,
|
||||
'prezzo_ore_unitario' => $prezzo_ore_unitario,
|
||||
'prezzo_km_unitario' => $prezzo_km_unitario,
|
||||
'prezzo_dirittochiamata' => $prezzo_dirittochiamata,
|
||||
'prezzo_ore_unitario_tecnico' => $prezzo_ore_unitario_tecnico,
|
||||
'prezzo_km_unitario_tecnico' => $prezzo_km_unitario_tecnico,
|
||||
'prezzo_dirittochiamata_tecnico' => $prezzo_dirittochiamata_tecnico,
|
||||
|
||||
'prezzo_ore_consuntivo' => $prezzo_ore_consuntivo,
|
||||
'prezzo_km_consuntivo' => $prezzo_km_consuntivo,
|
||||
'prezzo_ore_consuntivo_tecnico' => $prezzo_ore_consuntivo_tecnico,
|
||||
'prezzo_km_consuntivo_tecnico' => $prezzo_km_consuntivo_tecnico,
|
||||
'prezzo_ore_consuntivo' => $prezzo_ore_consuntivo,
|
||||
'prezzo_km_consuntivo' => $prezzo_km_consuntivo,
|
||||
'prezzo_ore_consuntivo_tecnico' => $prezzo_ore_consuntivo_tecnico,
|
||||
'prezzo_km_consuntivo_tecnico' => $prezzo_km_consuntivo_tecnico,
|
||||
|
||||
'sconto' => $sconto,
|
||||
'sconto_unitario' => $sconto_unitario,
|
||||
'tipo_sconto' => $tipo_sconto,
|
||||
'sconto' => $sconto,
|
||||
'sconto_unitario' => $sconto_unitario,
|
||||
'tipo_sconto' => $tipo_sconto,
|
||||
|
||||
'scontokm' => $scontokm,
|
||||
'scontokm_unitario' => $scontokm_unitario,
|
||||
'tipo_scontokm' => $tipo_scontokm,
|
||||
], ['id' => $idriga]);
|
||||
'scontokm' => $scontokm,
|
||||
'scontokm_unitario' => $scontokm_unitario,
|
||||
'tipo_scontokm' => $tipo_scontokm,
|
||||
], ['id' => $idriga]);
|
||||
}
|
||||
|
||||
$tipo_sconto = post('tipo_sconto_globale');
|
||||
@ -188,6 +188,17 @@ switch (post('op')) {
|
||||
'tipo_sconto_globale' => $tipo_sconto,
|
||||
], ['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!'));
|
||||
|
||||
break;
|
||||
@ -322,7 +333,6 @@ switch (post('op')) {
|
||||
|
||||
// Collegamenti tecnici/interventi
|
||||
$idtecnici = post('idtecnico');
|
||||
|
||||
foreach ($idtecnici as $idtecnico) {
|
||||
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))) {
|
||||
flash()->info(tr('Firma salvata correttamente!'));
|
||||
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 {
|
||||
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');
|
||||
|
||||
add_tecnico($id_record, $idtecnico, $inizio, $fine, $idcontratto);
|
||||
|
||||
break;
|
||||
|
||||
// RIMOZIONE SESSIONE DI LAVORO
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -55,7 +55,7 @@ function add_tecnico($idintervento, $idtecnico, $inizio, $fine, $idcontratto = n
|
||||
$dbo = Database::getConnection();
|
||||
|
||||
// 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)) {
|
||||
return false;
|
||||
}
|
||||
@ -161,6 +161,16 @@ function add_tecnico($idintervento, $idtecnico, $inizio, $fine, $idcontratto = n
|
||||
'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;
|
||||
}
|
||||
|
||||
@ -347,7 +357,7 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
|
||||
$dbo = Database::getConnection();
|
||||
|
||||
$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
|
||||
$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'];
|
||||
|
||||
// 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);
|
||||
$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'];
|
||||
}
|
||||
|
||||
$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);
|
||||
}
|
||||
}
|
||||
@ -412,7 +422,7 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
|
||||
$desc_iva = $rs[0]['descrizione'];
|
||||
|
||||
// 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);
|
||||
$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',
|
||||
'um' => '-',
|
||||
'qta' => $rst[$i]['qta'],
|
||||
'idrivalsainps' => $$id_rivalsa_inps,
|
||||
'idrivalsainps' => $id_rivalsa_inps,
|
||||
'rivalsainps' => $rivalsainps,
|
||||
'idritenutaacconto' => $id_ritenuta_acconto,
|
||||
'ritenutaacconto' => $ritenutaacconto,
|
||||
@ -469,7 +479,7 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
|
||||
$iva_indetraibile = $iva / 100 * $rs[0]['indetraibile'];
|
||||
|
||||
// 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);
|
||||
$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'];
|
||||
}
|
||||
|
||||
$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);
|
||||
}
|
||||
}
|
||||
@ -500,7 +510,7 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
|
||||
$iva_indetraibile = $iva / 100 * $dati[0]['indetraibile'];
|
||||
|
||||
// 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);
|
||||
$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'];
|
||||
}
|
||||
|
||||
$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);
|
||||
}
|
||||
|
||||
@ -530,7 +540,7 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
|
||||
$iva_indetraibile = $iva / 100 * $rs[0]['indetraibile'];
|
||||
|
||||
// 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);
|
||||
$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'];
|
||||
}
|
||||
|
||||
$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);
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,8 @@
|
||||
|
||||
$r = $dbo->fetchOne('SELECT *,
|
||||
(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));
|
||||
|
||||
// Variabili da sostituire
|
||||
@ -15,4 +16,5 @@ return [
|
||||
'data richiesta' => Translator::dateToLocale($r['data_richiesta']),
|
||||
'data fine intervento' => empty($r['data_fine']) ? Translator::dateToLocale($r['data_richiesta']) : Translator::dateToLocale($r['data_fine']),
|
||||
'id_anagrafica' => $r['idanagrafica'],
|
||||
'stato' => $r['stato'],
|
||||
];
|
||||
|
@ -4,13 +4,14 @@ include_once __DIR__.'/../../core.php';
|
||||
|
||||
switch (post('op')) {
|
||||
case 'update':
|
||||
$descrizione = post('descrizione');
|
||||
$colore = post('colore');
|
||||
$completato = post('completato');
|
||||
|
||||
// Aggiorna
|
||||
$query = 'UPDATE in_statiintervento SET descrizione='.prepare($descrizione).', colore='.prepare($colore).', completato='.prepare($completato).' WHERE idstatointervento='.prepare($id_record);
|
||||
$dbo->query($query);
|
||||
$dbo->update('in_statiintervento', [
|
||||
'descrizione' => post('descrizione'),
|
||||
'colore' => post('colore'),
|
||||
'completato' => post('completato'),
|
||||
'notifica' => post('notifica'),
|
||||
'id_email' => post('email'),
|
||||
'destinatari' => post('destinatari'),
|
||||
], ['idstatointervento' => $id_record]);
|
||||
|
||||
flash()->info(tr('Informazioni salvate correttamente.'));
|
||||
|
||||
|
@ -22,14 +22,28 @@ if ($record['can_delete']) {
|
||||
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$descrizione$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Questo è uno stato completato'); ?>", "name": "completato", "value": "$completato$", "help": "<?php echo tr('Gli interventi che si trovano in questo stato verranno considerati come completati'); ?>", "placeholder": "<?php echo tr('Completato'); ?>", "extra": "<?php echo $attr; ?>" ]}
|
||||
<div class="col-md-2">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Questo è uno stato completato'); ?>", "name": "completato", "value": "$completato$", "help": "<?php echo tr('Gli interventi che si trovano in questo stato verranno considerati come completati'); ?>", "placeholder": "<?php echo tr('Completato'); ?>", "extra": "<?php echo $attr; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
{[ "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 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>
|
||||
|
||||
<?php
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace Extension;
|
||||
namespace Extensions;
|
||||
|
||||
class EloquentCollector extends \DebugBar\DataCollector\PDO\PDOCollector
|
||||
{
|
104
src/Mail.php
104
src/Mail.php
@ -1,5 +1,8 @@
|
||||
<?php
|
||||
|
||||
use Models\MailAccount;
|
||||
use Models\MailTemplate;
|
||||
|
||||
/**
|
||||
* 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()
|
||||
{
|
||||
if (empty(self::$accounts)) {
|
||||
$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;
|
||||
return MailAccount::getAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce le informazioni relative a un singolo account email specificato.
|
||||
*
|
||||
* @param string|int $template
|
||||
* @param string|int $account
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function get($account = null)
|
||||
{
|
||||
if (!is_numeric($account) && !empty(self::getAccounts()[$account])) {
|
||||
$account = self::getAccounts()[$account];
|
||||
$accounts = self::getAccounts();
|
||||
|
||||
$result = MailAccount::get($account);
|
||||
|
||||
if (empty($return)) {
|
||||
$result = $accounts->first(function ($item) use ($group) {
|
||||
return !empty($item->main);
|
||||
});
|
||||
}
|
||||
|
||||
if (empty($account)) {
|
||||
$account = self::getAccounts()['default'];
|
||||
}
|
||||
|
||||
return self::getAccounts()[$account];
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -204,6 +190,27 @@ class Mail extends PHPMailer\PHPMailer\PHPMailer
|
||||
$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()
|
||||
{
|
||||
if (empty($this->AltBody)) {
|
||||
@ -223,6 +230,24 @@ class Mail extends PHPMailer\PHPMailer\PHPMailer
|
||||
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.
|
||||
*
|
||||
@ -287,16 +312,15 @@ class Mail extends PHPMailer\PHPMailer\PHPMailer
|
||||
}
|
||||
|
||||
/**
|
||||
* Aggiunge i detinatari.
|
||||
* Aggiunge i destinatari.
|
||||
*
|
||||
* @param array $receivers
|
||||
* @param array $types
|
||||
*/
|
||||
public function addReceivers($receivers, $types)
|
||||
public function addReceivers($receivers, $types = [])
|
||||
{
|
||||
// Destinatari
|
||||
foreach ($receivers as $key => $destinatario) {
|
||||
$type = $types[$key];
|
||||
$type = $types[$key] ?: 'a';
|
||||
|
||||
$pieces = explode('<', $destinatario);
|
||||
$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;
|
||||
}
|
||||
}
|
||||
|
21
src/Models/MailAccount.php
Normal file
21
src/Models/MailAccount.php
Normal file
@ -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');
|
||||
}
|
||||
}
|
26
src/Models/MailTemplate.php
Normal file
26
src/Models/MailTemplate.php
Normal file
@ -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');
|
||||
}
|
||||
|
||||
public function mailTemplates()
|
||||
{
|
||||
return $this->hasMany(MailTemplate::class, 'id_module');
|
||||
}
|
||||
|
||||
public function views()
|
||||
{
|
||||
return $this->hasMany(View::class, 'id_module');
|
||||
@ -124,6 +129,8 @@ class Module extends Model
|
||||
return $this->hasMany(Clause::class, 'idmodule');
|
||||
}
|
||||
|
||||
/* Gerarchia */
|
||||
|
||||
public function children()
|
||||
{
|
||||
return $this->hasMany(self::class, 'parent')->withoutGlobalScope('enabled')
|
||||
@ -145,8 +152,6 @@ class Module extends Model
|
||||
return $this->children()->with('allChildren');
|
||||
}
|
||||
|
||||
/* Metodi statici */
|
||||
|
||||
public static function getHierarchy()
|
||||
{
|
||||
return self::with('allChildren')
|
||||
|
195
src/Notifications/EmailNotification.php
Normal file
195
src/Notifications/EmailNotification.php
Normal file
@ -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();
|
||||
}
|
||||
}
|
72
src/Notifications/Notification.php
Normal file
72
src/Notifications/Notification.php
Normal file
@ -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
|
||||
(NULL, 'Inizio orario lavorativo', '00:00:00', 'time', 1, 'Dashboard', 1),
|
||||
(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
Block a user