1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2024-12-27 00:06:14 +01:00
openstamanager/modules/interventi/actions.php
Thomas Zilio 1da2f8909f Miglioramenti nella gestione dell'IVA
Aggiunta possibilità di specificare IVA di vendita e di acquisto predefinita per le anagrafiche.
Aggiunto nuovo modulo per le Stampe contabili.
Modifica nella gestione dei diritti di chiamata, ora applicati solo sulla prima sessione di lavoro della giornata (se questa viene eliminata, il diritto chiamata viene rimosso di conseguenza anche con altre sessioni presenti).
2017-09-14 16:20:11 +02:00

611 lines
26 KiB
PHP

<?php
include_once __DIR__.'/../../core.php';
include_once $docroot.'/modules/interventi/modutil.php';
include_once $docroot.'/modules/articoli/modutil.php';
include_once $docroot.'/modules/my_impianti/modutil.php';
switch (post('op')) {
case 'update':
$idpreventivo = post('idpreventivo');
$idcontratto = post('idcontratto');
$idcontratto_riga = post('idcontratto_riga');
$idtipointervento = post('idtipointervento');
$data_richiesta = post('data_richiesta');
$richiesta = post('richiesta');
$idsede = post('idsede');
/*
Collegamento intervento a preventivo (se impostato)
*/
// Elimino il collegamento attuale
$dbo->query('DELETE FROM co_preventivi_interventi WHERE idintervento='.prepare($id_record));
if (!empty($idpreventivo)) {
$dbo->insert('co_preventivi_interventi', [
'idintervento' => $id_record,
'idpreventivo' => $idpreventivo,
]);
}
/*
Collegamento intervento a contratto (se impostato).
Oltre al collegamento al contratto, l'intervento è collegato ad una riga di pianificazione, perciò è importante considerarla se è impostata
*/
$array = [
'idintervento' => $id_record,
'idtipointervento' => $idtipointervento,
'data_richiesta' => $data_richiesta,
'richiesta' => $richiesta,
'idsede' => $idsede ?: 0,
];
// Creazione nuova pianificazione se non era impostata
if (!empty($idcontratto) && empty($idcontratto_riga)) {
// Se questo intervento era collegato ad un altro contratto aggiorno le informazioni...
$rs = $dbo->fetchArray('SELECT id FROM co_righe_contratti WHERE idintervento='.prepare($id_record));
if (empty($rs)) {
$dbo->insert('co_righe_contratti', array_merge(['idcontratto' => $idcontratto], $array));
}
// ...altrimenti se sto cambiando contratto aggiorno solo l'id del nuovo contratto
else {
$dbo->update('co_righe_contratti', ['idcontratto' => $idcontratto], ['idintervento' => $id_record]);
}
}
// Pianificazione già impostata, aggiorno solo il codice intervento
elseif (!empty($idcontratto) && !empty($idcontratto_riga)) {
$dbo->update('co_righe_contratti', $array, ['idcontratto' => $idriga, 'id' => $idcontratto_riga]);
}
// Se non è impostato nessun contratto o riga, tolgo il collegamento dell'intervento al contratto
elseif (empty($idcontratto)) {
$dbo->update('co_righe_contratti', ['idintervento' => null], ['idintervento' => $id_record]);
}
// Aggiorna tutte le sessioni di lavoro
$lista = (array) post('id_');
// Limitazione delle azioni dei tecnici
if ($user['gruppo'] == 'Tecnici') {
$lista = get_var('Mostra i prezzi al tecnico') && !empty($user['idanagrafica']) ? [$user['idanagrafica']] : [];
}
foreach ($lista as $idriga) {
// Lettura delle date di inizio e fine intervento
$orario_inizio = post('orario_inizio')[$idriga];
$orario_fine = post('orario_fine')[$idriga];
$km = post('km')[$idriga];
$ore = post('ore')[$idriga];
// Lettura tariffe in base al tipo di intervento ed al tecnico
$idtipointervento_tecnico = $post['idtipointerventot'][$idriga];
$rs = $dbo->fetchArray('SELECT * FROM in_interventi_tecnici WHERE idtecnico='.prepare($post['idtecnico'][$idriga]).' AND idintervento='.prepare($id_record));
if ($idtipointervento_tecnico != $rs[0]['idtipointervento']) {
$rs = $dbo->fetchArray('SELECT * FROM in_tariffe WHERE idtecnico='.prepare($post['idtecnico'][$idriga]).' AND idtipointervento='.prepare($idtipointervento_tecnico));
$prezzo_ore_unitario = $rs[0]['costo_ore'];
$prezzo_km_unitario = $rs[0]['costo_km'];
$prezzo_dirittochiamata = $rs[0]['costo_dirittochiamata'];
$prezzo_ore_unitario_tecnico = $rs[0]['costo_ore_tecnico'];
$prezzo_km_unitario_tecnico = $rs[0]['costo_km_tecnico'];
$prezzo_dirittochiamata_tecnico = $rs[0]['costo_dirittochiamata_tecnico'];
} else {
$prezzo_ore_unitario = $rs[0]['prezzo_ore_unitario'];
$prezzo_km_unitario = $rs[0]['prezzo_km_unitario'];
$prezzo_dirittochiamata = $rs[0]['prezzo_dirittochiamata'];
$prezzo_ore_unitario_tecnico = $rs[0]['prezzo_ore_unitario_tecnico'];
$prezzo_km_unitario_tecnico = $rs[0]['prezzo_km_unitario_tecnico'];
$prezzo_dirittochiamata_tecnico = $rs[0]['prezzo_dirittochiamata_tecnico'];
}
// Totali
$prezzo_ore_consuntivo = $prezzo_ore_unitario * $ore + $prezzo_dirittochiamata;
$prezzo_km_consuntivo = $prezzo_km_unitario * $km;
$prezzo_ore_consuntivo_tecnico = $prezzo_ore_unitario_tecnico * $ore + $prezzo_dirittochiamata_tecnico;
$prezzo_km_consuntivo_tecnico = $prezzo_km_unitario_tecnico * $km;
// Sconti
$sconto_unitario = post('sconto')[$idriga];
$tipo_sconto = post('tipo_sconto')[$idriga];
$sconto = ($tipo_sconto == 'PRC') ? ($prezzo_ore_consuntivo * $sconto_unitario) / 100 : $sconto_unitario;
$scontokm_unitario = post('scontokm')[$idriga];
$tipo_scontokm = post('tipo_scontokm')[$idriga];
$scontokm = ($tipo_scontokm == 'PRC') ? ($prezzo_km_consuntivo * $sconto_unitario) / 100 : $scontokm_unitario;
$dbo->update('in_interventi_tecnici', [
'idintervento' => $id_record,
'idtipointervento' => $idtipointervento_tecnico,
'idtecnico' => post('idtecnico')[$idriga],
'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_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,
'scontokm' => $scontokm,
'scontokm_unitario' => $scontokm_unitario,
'tipo_scontokm' => $tipo_scontokm,
], ['id' => $idriga]);
}
$tipo_sconto = $post['tipo_sconto_globale'];
$sconto = $post['sconto_globale'];
// Salvataggio modifiche intervento
$dbo->update('in_interventi', [
'data_richiesta' => $data_richiesta,
'richiesta' => $richiesta,
'descrizione' => post('descrizione'),
'informazioniaggiuntive' => post('informazioniaggiuntive'),
'idanagrafica' => post('idanagrafica'),
'idclientefinale' => post('idclientefinale'),
'idreferente' => post('idreferente'),
'idtipointervento' => $idtipointervento,
'idstatointervento' => post('idstatointervento'),
'idsede' => $idsede,
'idautomezzo' => post('idautomezzo'),
'sconto_globale' => $sconto,
'tipo_sconto_globale' => $tipo_sconto,
], ['id' => $id_record]);
$_SESSION['infos'][] = tr('Informazioni salvate correttamente!');
break;
case 'add':
/*
$codice = post('codice');
// Controlli sul codice
$count = -1;
do {
$new_codice = ($count < 0) ? $codice : get_next_code($codice, 1, get_var('Formato codice intervento'));
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice='.prepare($new_codice));
++$count;
} while (!empty($rs) || empty($new_codice));
if ($count > 0) {
$_SESSION['warnings'][] = tr('Numero intervento _NUM_ saltato perchè già esistente!', [
'_NUM_' => "'".$codice."'"
]);
$_SESSION['warnings'][] = tr('Nuovo numero intervento calcolato _NUM_', [
'_NUM_' => "'".$new_codice."'"
]);
}
*/
$formato = get_var('Formato codice intervento');
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE concat("", codice * 1) = codice AND LENGTH(codice) = '.strlen($formato).' ORDER BY CAST(codice AS SIGNED) DESC LIMIT 1');
$codice = get_next_code($rs[0]['codice'], 1, $formato);
// Informazioni di base
$idpreventivo = post('idpreventivo');
$idcontratto = post('idcontratto');
$idcontratto_riga = post('idcontratto_riga');
$idtipointervento = post('idtipointervento');
$idsede = post('idsede');
$data_richiesta = post('data_richiesta');
$richiesta = post('richiesta');
if (!empty($codice) && !empty($post['idanagrafica']) && !empty($post['idtipointervento'])) {
// Salvataggio modifiche intervento
$dbo->insert('in_interventi', [
'idanagrafica' => post('idanagrafica'),
'idclientefinale' => post('idclientefinale') ?: 0,
'idstatointervento' => post('idstatointervento'),
'idtipointervento' => $idtipointervento,
'idsede' => $idsede ?: 0,
'idautomezzo' => $idautomezzo ?: 0,
'codice' => $codice,
'data_richiesta' => $data_richiesta,
'richiesta' => $richiesta,
]);
$id_record = $dbo->lastInsertedID();
$_SESSION['infos'][] = tr('Aggiunto nuovo intervento!');
}
// Collego l'intervento al preventivo
if (!empty($idpreventivo)) {
$dbo->insert('co_preventivi_interventi', [
'idintervento' => $id_record,
'idpreventivo' => $idpreventivo,
]);
}
// Collego l'intervento al contratto
if (!empty($idcontratto)) {
$array = [
'idintervento' => $id_record,
'idtipointervento' => $idtipointervento,
'data_richiesta' => $data_richiesta,
'richiesta' => $richiesta,
'idsede' => $idsede ?: 0,
];
// Se è specificato che l'intervento fa parte di una pianificazione aggiorno il codice dell'intervento sulla riga della pianificazione
if (!empty($idcontratto_riga)) {
$dbo->update('co_righe_contratti', $array, ['idcontratto' => $idcontratto, 'id' => $idcontratto_riga]);
}
// Altrimenti inserisco una nuova pianificazione e collego l'intervento
else {
$dbo->insert('co_righe_contratti', array_merge(['idcontratto' => $idcontratto], $array));
}
}
if (!empty($post['idordineservizio'])) {
$dbo->query('UPDATE co_ordiniservizio SET idintervento='.prepare($id_record).' WHERE id='.prepare($post['idordineservizio']));
}
// Collegamenti tecnici/interventi
$idtecnici = post('idtecnico');
$data = post('data');
foreach ($idtecnici as $idtecnico) {
add_tecnico($id_record, $idtecnico, $data.' '.post('orario_inizio'), $data.' '.post('orario_fine'), $idcontratto);
}
// Collegamenti intervento/impianti
$impianti = (array) post('idimpianti');
if (!empty($impianti)) {
foreach ($impianti as $impianto) {
$dbo->insert('my_impianti_interventi', [
'idintervento' => $id_record,
'idimpianto' => $impianto,
]);
}
// Collegamenti intervento/componenti
$componenti = (array) post('componenti');
foreach ($componenti as $componente) {
$dbo->insert('my_componenti_interventi', [
'id_intervento' => $id_record,
'id_componente' => $componente,
]);
}
}
if (post('ref') == 'dashboard') {
$_SESSION['infos'] = [];
$_SESSION['warnings'] = [];
}
break;
// Eliminazione intervento
case 'delete':
// Elimino anche eventuali file caricati
$rs = $dbo->fetchArray('SELECT filename FROM zz_files WHERE id_module='.prepare($id_module).' AND id='.prepare($id_record));
for ($i = 0; $i < count($rs); ++$i) {
delete($docroot.'/files/interventi/'.$rs[$i]['filename']);
}
$dbo->query('DELETE FROM zz_files WHERE id_module='.prepare($id_module).' AND id='.prepare($id_record));
/*
Riporto in magazzino gli articoli presenti nell'intervento in cancellazine
*/
// Leggo la quantità attuale nell'intervento
$q = 'SELECT qta, idautomezzo, idarticolo FROM mg_articoli_interventi WHERE idintervento='.prepare($id_record);
$rs = $dbo->fetchArray($q);
for ($i = 0; $i < count($rs); ++$i) {
$qta = $rs[$i]['qta'];
$idautomezzo = $rs[$i]['idautomezzo'];
$idarticolo = $rs[$i]['idarticolo'];
add_movimento_magazzino($idarticolo, $qta, ['idautomezzo' => $idautomezzo, 'idintervento' => $id_record]);
}
// Eliminazione associazioni tra interventi e contratti
$query = 'UPDATE co_righe_contratti SET idintervento = NULL WHERE idintervento='.prepare($id_record);
$dbo->query($query);
// Eliminazione dell'intervento
$query = 'DELETE FROM in_interventi WHERE id='.prepare($id_record).' '.Modules::getAdditionalsQuery($id_module);
$dbo->query($query);
// Elimino i collegamenti degli articoli a questo intervento
$dbo->query('DELETE FROM mg_articoli_interventi WHERE idintervento='.prepare($id_record));
// Elimino il collegamento al componente
$dbo->query('DELETE FROM my_impianto_componenti WHERE idintervento='.prepare($id_record));
// Eliminazione associazione tecnici collegati all'intervento
$query = 'DELETE FROM in_interventi_tecnici WHERE idintervento='.prepare($id_record);
$dbo->query($query);
// Eliminazione associazioni tra interventi e preventivi
$query = 'DELETE FROM co_preventivi_interventi WHERE idintervento='.prepare($id_record);
$dbo->query($query);
// Eliminazione righe aggiuntive dell'intervento
$query = 'DELETE FROM in_righe_interventi WHERE idintervento='.prepare($id_record);
$dbo->query($query);
// Eliminazione associazione interventi e articoli
$query = 'DELETE FROM mg_articoli_interventi WHERE idintervento='.prepare($id_record);
$dbo->query($query);
// Eliminazione associazione interventi e my_impianti
$query = 'DELETE FROM my_impianti_interventi WHERE idintervento='.prepare($id_record);
$dbo->query($query);
// Eliminazione movimenti riguardanti l'intervento cancellato
$dbo->query('DELETE FROM mg_movimenti WHERE idintervento='.prepare($id_record));
$_SESSION['infos'][] = tr('Intervento _NUM_ eliminato!', [
'_NUM_' => "'".$id_record."'",
]);
break;
/*
Gestione righe generiche
*/
case 'addriga':
$descrizione = post('descrizione');
$qta = post('qta');
$um = post('um');
$prezzo_vendita = post('prezzo_vendita');
$prezzo_acquisto = post('prezzo_acquisto');
$sconto_unitario = $post['sconto'];
$tipo_sconto = $post['tipo_sconto'];
$sconto = ($tipo_sconto == 'PRC') ? ($prezzo_vendita * $sconto_unitario) / 100 : $sconto_unitario;
$sconto = $sconto * $qta;
$dbo->query('INSERT INTO in_righe_interventi(descrizione, qta, um, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idintervento) VALUES ('.prepare($descrizione).', '.prepare($qta).', '.prepare($um).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($id_record).')');
break;
case 'editriga':
$idriga = post('idriga');
$descrizione = post('descrizione');
$qta = post('qta');
$um = post('um');
$prezzo_vendita = post('prezzo_vendita');
$prezzo_acquisto = post('prezzo_acquisto');
$sconto_unitario = $post['sconto'];
$tipo_sconto = $post['tipo_sconto'];
$sconto = ($tipo_sconto == 'PRC') ? ($prezzo_vendita * $sconto_unitario) / 100 : $sconto_unitario;
$sconto = $sconto * $qta;
$dbo->query('UPDATE in_righe_interventi SET '.
' descrizione='.prepare($descrizione).','.
' qta='.prepare($qta).','.
' um='.prepare($um).','.
' prezzo_vendita='.prepare($prezzo_vendita).','.
' prezzo_acquisto='.prepare($prezzo_acquisto).','.
' sconto='.prepare($sconto).','.
' sconto_unitario='.prepare($sconto_unitario).','.
' tipo_sconto='.prepare($tipo_sconto).
' WHERE id='.prepare($idriga));
break;
case 'delriga':
$idriga = post('idriga');
$dbo->query('DELETE FROM in_righe_interventi WHERE id='.prepare($idriga).' '.Modules::getAdditionalsQuery($id_module));
break;
/*
GESTIONE ARTICOLI
*/
case 'editarticolo':
$idriga = post('idriga');
$idarticolo = post('idarticolo');
$idimpianto = post('idimpianto');
$idautomezzo = post('idautomezzo');
$idarticolo_originale = post('idarticolo_originale');
// Leggo la quantità attuale nell'intervento
$q = 'SELECT qta, idautomezzo, idimpianto FROM mg_articoli_interventi WHERE idarticolo='.prepare($idarticolo_originale).' AND idintervento='.prepare($id_record);
$rs = $dbo->fetchArray($q);
$old_qta = $rs[0]['qta'];
$idimpianto = $rs[0]['idimpianto'];
$idautomezzo = $rs[0]['idautomezzo'];
$serials = array_column($dbo->select('mg_prodotti', 'serial', ['id_riga_intervento' => $idriga]), 'serial');
add_movimento_magazzino($idarticolo_originale, $old_qta, ['idautomezzo' => $idautomezzo, 'idintervento' => $id_record]);
// Elimino questo articolo dall'intervento
$dbo->query('DELETE FROM mg_articoli_interventi WHERE id='.prepare($idriga));
// Elimino il collegamento al componente
$dbo->query('DELETE FROM my_impianto_componenti WHERE idimpianto='.prepare($idimpianto).' AND idintervento='.prepare($id_record));
/* Ricollego l'articolo modificato all'intervento */
/* ci può essere il caso in cui cambio idarticolo e anche qta */
// no break
case 'addarticolo':
$idarticolo = post('idarticolo');
$idautomezzo = post('idautomezzo');
$descrizione = post('descrizione');
$idimpianto = post('idimpianto');
$qta = post('qta');
$um = post('um');
$prezzo_vendita = post('prezzo_vendita');
$sconto_unitario = $post['sconto'];
$tipo_sconto = $post['tipo_sconto'];
$sconto = ($tipo_sconto == 'PRC') ? ($prezzo_vendita * $sconto_unitario) / 100 : $sconto_unitario;
$sconto = $sconto * $qta;
// Decremento la quantità
add_movimento_magazzino($idarticolo, -$qta, ['idautomezzo' => $idautomezzo, 'idintervento' => $id_record]);
// Aggiorno l'automezzo dell'intervento
$dbo->query('UPDATE in_interventi SET idautomezzo='.prepare($idautomezzo).' WHERE id='.prepare($id_record).' '.Modules::getAdditionalsQuery($id_module));
$rsart = $dbo->fetchArray('SELECT abilita_serial, prezzo_acquisto FROM mg_articoli WHERE id='.prepare($idarticolo));
$prezzo_acquisto = $rsart[0]['prezzo_acquisto'];
// Aggiunto il collegamento fra l'articolo e l'intervento
$idriga = $dbo->query('INSERT INTO mg_articoli_interventi(idarticolo, idintervento, idimpianto, idautomezzo, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva_vendita, qta, um, abilita_serial) VALUES ('.prepare($idarticolo).', '.prepare($id_record).', '.(empty($idimpianto) ? 'NULL' : prepare($idimpianto)).', '.prepare($idautomezzo).', '.prepare($descrizione).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', (SELECT idiva_vendita FROM mg_articoli WHERE id='.prepare($idarticolo).'), '.prepare($qta).', '.prepare($um).', '.prepare($rsart[0]['abilita_serial']).')');
if (!empty($serials)) {
if ($old_qta > $qta) {
$serials = array_slice($serials, 0, $qta);
}
$dbo->sync('mg_prodotti', ['id_riga_intervento' => $idriga, 'dir' => 'entrata', 'id_articolo' => $idarticolo], ['serial' => $serials]);
}
link_componente_to_articolo($id_record, $idimpianto, $idarticolo, $qta);
break;
case 'unlink_articolo':
$idriga = post('idriga');
$idarticolo = post('idarticolo');
// Riporto la merce nel magazzino
if (!empty($idriga) && !empty($id_record)) {
// Leggo la quantità attuale nell'intervento
$q = 'SELECT qta, idautomezzo, idarticolo, idimpianto FROM mg_articoli_interventi WHERE id='.prepare($idriga);
$rs = $dbo->fetchArray($q);
$qta = $rs[0]['qta'];
$idarticolo = $rs[0]['idarticolo'];
$idimpianto = $rs[0]['idimpianto'];
$idautomezzo = $rs[0]['idautomezzo'];
add_movimento_magazzino($idarticolo, $qta, ['idautomezzo' => $idautomezzo, 'idintervento' => $id_record]);
// Elimino questo articolo dall'intervento
$dbo->query('DELETE FROM mg_articoli_interventi WHERE id='.prepare($idriga).' AND idintervento='.prepare($id_record));
// Elimino il collegamento al componente
$dbo->query('DELETE FROM my_impianto_componenti WHERE idimpianto='.prepare($idimpianto).' AND idintervento='.prepare($id_record));
// Elimino i seriali utilizzati dalla riga
$dbo->query('DELETE FROM `mg_prodotti` WHERE id_articolo = '.prepare($idarticolo).' AND id_riga_intervento = '.prepare($id_record));
}
break;
case 'add_serial':
$idriga = $post['idriga'];
$idarticolo = $post['idarticolo'];
$serials = (array) $post['serial'];
foreach ($serials as $key => $value) {
if (empty($value)) {
unset($serials[$key]);
}
}
$dbo->sync('mg_prodotti', ['id_riga_intervento' => $idriga, 'dir' => 'entrata', 'id_articolo' => $idarticolo], ['serial' => $serials]);
break;
case 'firma':
if (directory($docroot.'/files/interventi')) {
if (post('firma_base64') != '') {
// Salvataggio firma
$firma_file = 'firma_'.time().'.png';
$firma_nome = post('firma_nome');
$data = explode(',', post('firma_base64'));
$img = Intervention\Image\ImageManagerStatic::make(base64_decode($data[1]));
$img->resize(680, 202, function ($constraint) {
$constraint->aspectRatio();
});
if (!$img->save($docroot.'/files/interventi/'.$firma_file)) {
$_SESSION['errors'][] = tr('Impossibile creare il file!');
} elseif ($dbo->query('UPDATE in_interventi SET firma_file='.prepare($firma_file).', firma_data=NOW(), firma_nome = '.prepare($firma_nome).', idstatointervento = (SELECT idstatointervento FROM in_statiintervento WHERE completato = 1 LIMIT 0, 1) WHERE id='.prepare($id_record))) {
$_SESSION['infos'][] = tr('Firma salvata correttamente!');
$_SESSION['infos'][] = tr('Attività completata!');
} else {
$_SESSION['errors'][] = tr('Errore durante il salvataggio della firma nel database!');
}
} else {
$_SESSION['errors'][] = tr('Errore durante il salvataggio della firma!').tr('La firma risulta vuota').'...';
}
} else {
$_SESSION['errors'][] = tr("Non è stato possibile creare la cartella _DIRECTORY_ per salvare l'immagine della firma!", [
'_DIRECTORY_' => '<b>/files/interventi</b>',
]);
}
break;
case 'sendemail':
$from_address = post('from_address');
$from_name = post('from_name');
$destinatario = post('destinatario');
$cc = get_var('Destinatario fisso in copia (campo CC)');
$oggetto = html_entity_decode(post('oggetto'));
$testo_email = post('body');
$allegato = post('allegato');
$mail = new Mail();
$mail->AddReplyTo($from_address, $from_name);
$mail->SetFrom($from_address, $from_name);
$mail->AddAddress($destinatario, '');
// se ho impostato la conferma di lettura
if (post('confermalettura') == 'on') {
$mail->ConfirmReadingTo = $from_address;
}
$mail->Subject = $oggetto;
$mail->AddCC($cc);
$mail->MsgHTML($testo_email);
if (!empty($allegato)) {
$mail->AddAttachment($allegato);
}
if (!$mail->send()) {
$_SESSION['errors'][] = tr("Errore durante l'invio dell'email").': '.$mail->ErrorInfo;
} else {
$dbo->query('UPDATE in_interventi SET data_invio=NOW() WHERE id='.prepare($id_record));
$_SESSION['infos'][] = tr('Email inviata!');
}
break;
}