mirror of
https://github.com/devcode-it/openstamanager.git
synced 2024-12-27 00:06:14 +01:00
459f75cab8
Aggiunto supporto al logo stampe caricabile come allegato. Miglioramento della gestione dei dati di input. Completata gestione AJAX degli allegati.
621 lines
29 KiB
PHP
621 lines
29 KiB
PHP
<?php
|
|
|
|
include_once __DIR__.'/../../core.php';
|
|
|
|
include_once Modules::filepath('Interventi', 'modutil.php');
|
|
include_once Modules::filepath('Articoli', 'modutil.php');
|
|
include_once Modules::filepath('MyImpianti', '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_contratti_promemoria WHERE idintervento='.prepare($id_record));
|
|
if (empty($rs)) {
|
|
$dbo->insert('co_contratti_promemoria', array_merge(['idcontratto' => $idcontratto], $array));
|
|
}
|
|
|
|
// ...altrimenti se sto cambiando contratto aggiorno solo l'id del nuovo contratto
|
|
else {
|
|
$dbo->update('co_contratti_promemoria', ['idcontratto' => $idcontratto], ['idintervento' => $id_record]);
|
|
}
|
|
}
|
|
|
|
// Pianificazione già impostata, aggiorno solo il codice intervento
|
|
elseif (!empty($idcontratto) && !empty($idcontratto_riga)) {
|
|
$dbo->update('co_contratti_promemoria', $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_contratti_promemoria', ['idintervento' => null], ['idintervento' => $id_record]);
|
|
}
|
|
|
|
// Aggiorna tutte le sessioni di lavoro
|
|
$lista = (array) post('id_');
|
|
|
|
foreach ($lista as $idriga) {
|
|
//Lettura del tecnico proprietario della riga
|
|
$rst = $dbo->fetchArray('SELECT idtecnico FROM in_interventi_tecnici WHERE id='.prepare($idriga));
|
|
|
|
// Limitazione delle azioni dei tecnici
|
|
if (($user['gruppo'] == 'Tecnici' && $user['idanagrafica'] == $rst[0]['idtecnico']) || $user['gruppo'] == 'Amministratori') {
|
|
// 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];
|
|
//per sicurezza ricalcolo ore lavorate da php
|
|
$diff = date_diff(date_create($orario_inizio), date_create($orario_fine));
|
|
$ore = ($diff->h + ($diff->i / 60));
|
|
|
|
// 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']) {
|
|
$rsc = $dbo->fetchArray('SELECT * FROM in_tariffe WHERE idtecnico='.prepare($post['idtecnico'][$idriga]).' AND idtipointervento='.prepare($idtipointervento_tecnico));
|
|
|
|
if ($rsc[0]['costo_ore'] != 0 || $rsc[0]['costo_km'] != 0 || $rsc[0]['costo_dirittochiamata'] != 0 || $rsc[0]['costo_ore_tecnico'] != 0 || $rsc[0]['costo_km_tecnico'] != 0 || $rsc[0]['costo_dirittochiamata_tecnico'] != 0) {
|
|
$prezzo_ore_unitario = $rsc[0]['costo_ore'];
|
|
$prezzo_km_unitario = $rsc[0]['costo_km'];
|
|
$prezzo_dirittochiamata = $rsc[0]['costo_dirittochiamata'];
|
|
|
|
$prezzo_ore_unitario_tecnico = $rsc[0]['costo_ore_tecnico'];
|
|
$prezzo_km_unitario_tecnico = $rsc[0]['costo_km_tecnico'];
|
|
$prezzo_dirittochiamata_tecnico = $rsc[0]['costo_dirittochiamata_tecnico'];
|
|
}
|
|
|
|
// ...altrimenti se non c'è una tariffa per il tecnico leggo i costi globali
|
|
else {
|
|
$rsc = $dbo->fetchArray('SELECT * FROM in_tipiintervento WHERE idtipointervento='.prepare($idtipointervento_tecnico));
|
|
|
|
$prezzo_ore_unitario = $rsc[0]['costo_orario'];
|
|
$prezzo_km_unitario = $rsc[0]['costo_km'];
|
|
$prezzo_dirittochiamata = $rsc[0]['costo_diritto_chiamata'];
|
|
|
|
$prezzo_ore_unitario_tecnico = $rsc[0]['costo_orario_tecnico'];
|
|
$prezzo_km_unitario_tecnico = $rsc[0]['costo_km_tecnico'];
|
|
$prezzo_dirittochiamata_tecnico = $rsc[0]['costo_diritto_chiamata_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_km_consuntivo = $prezzo_km_unitario * $km;
|
|
|
|
$prezzo_ore_consuntivo_tecnico = $prezzo_ore_unitario_tecnico * $ore;
|
|
$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 * $scontokm_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':
|
|
$formato = get_var('Formato codice intervento');
|
|
$template = str_replace('#', '%', $formato);
|
|
|
|
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice=(SELECT MAX(CAST(codice AS SIGNED)) FROM in_interventi) AND codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1');
|
|
$codice = Util\Generator::generate($formato, $rs[0]['codice']);
|
|
|
|
if (empty($codice)) {
|
|
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1');
|
|
|
|
$codice = Util\Generator::generate($formato, $rs[0]['codice']);
|
|
}
|
|
|
|
// 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');
|
|
$idautomezzo = null;
|
|
|
|
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_contratti_promemoria', $array, ['idcontratto' => $idcontratto, 'id' => $idcontratto_riga]);
|
|
|
|
//copio le righe dal promemoria all'intervento
|
|
$dbo->query('INSERT INTO in_righe_interventi (descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,idintervento,sconto,sconto_unitario,tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,'.$id_record.',sconto,sconto_unitario,tipo_sconto FROM co_righe_contratti_materiali WHERE id_riga_contratto = '.$idcontratto_riga.' ');
|
|
|
|
//copio gli articoli dal promemoria all'intervento
|
|
$dbo->query('INSERT INTO mg_articoli_interventi (idarticolo, idintervento,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$id_record.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto FROM co_righe_contratti_articoli WHERE id_riga_contratto = '.$idcontratto_riga.' ');
|
|
|
|
// Decremento la quantità per ogni articolo copiato
|
|
$rs_articoli = $dbo->fetchArray('SELECT * FROM mg_articoli_interventi WHERE idintervento = '.$id_record.' ');
|
|
foreach ($rs_articoli as $rs_articolo) {
|
|
add_movimento_magazzino($rs_articolo['idarticolo'], -force_decimal($rs_articolo['qta']), ['idautomezzo' => $rs_articolo['idautomezzo'], 'idintervento' => $id_record]);
|
|
}
|
|
} else {
|
|
$dbo->insert('co_contratti_promemoria', [
|
|
'idcontratto' => $idcontratto,
|
|
'idintervento' => $id_record,
|
|
'idtipointervento' => $idtipointervento,
|
|
'data_richiesta' => $data_richiesta,
|
|
'richiesta' => $richiesta,
|
|
'idsede' => $idsede ?: 0,
|
|
]);
|
|
}
|
|
}
|
|
|
|
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));
|
|
|
|
$codice = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE id='.prepare($id_record))[0]['codice'];
|
|
|
|
/*
|
|
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_contratti_promemoria 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_' => "'".$codice."'",
|
|
]);
|
|
|
|
break;
|
|
|
|
/*
|
|
Gestione righe generiche
|
|
*/
|
|
case 'addriga':
|
|
$descrizione = post('descrizione');
|
|
$qta = post('qta');
|
|
$um = post('um');
|
|
$idiva = post('idiva');
|
|
$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;
|
|
|
|
//Calcolo iva
|
|
$rs_iva = $dbo->fetchArray('SELECT * FROM co_iva WHERE id='.prepare($idiva));
|
|
$desc_iva = $rs_iva[0]['descrizione'];
|
|
|
|
$iva = (($prezzo_vendita * $qta) - $sconto) * $rs_iva[0]['percentuale'] / 100;
|
|
|
|
$dbo->query('INSERT INTO in_righe_interventi(descrizione, qta, um, prezzo_vendita, prezzo_acquisto, idiva, desc_iva, iva, sconto, sconto_unitario, tipo_sconto, idintervento) VALUES ('.prepare($descrizione).', '.prepare($qta).', '.prepare($um).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.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');
|
|
$idiva = post('idiva');
|
|
$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;
|
|
|
|
//Calcolo iva
|
|
$rs_iva = $dbo->fetchArray('SELECT * FROM co_iva WHERE id='.prepare($idiva));
|
|
$desc_iva = $rs_iva[0]['descrizione'];
|
|
|
|
$iva = (($prezzo_vendita * $qta) - $sconto) * $rs_iva[0]['percentuale'] / 100;
|
|
|
|
$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).','.
|
|
' idiva='.prepare($idiva).','.
|
|
' desc_iva='.prepare($desc_iva).','.
|
|
' iva='.prepare($iva).','.
|
|
' 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');
|
|
$idiva = post('idiva');
|
|
|
|
$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'];
|
|
|
|
//Calcolo iva
|
|
$rs_iva = $dbo->fetchArray('SELECT * FROM co_iva WHERE id='.prepare($idiva));
|
|
$desc_iva = $rs_iva[0]['descrizione'];
|
|
|
|
$iva = (($prezzo_vendita * $qta) - $sconto) * $rs_iva[0]['percentuale'] / 100;
|
|
|
|
// 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, desc_iva, iva, 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).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.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().'.jpg';
|
|
$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 = "OK" 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;
|
|
}
|