Relazione contratto-intervento senza promemoria

This commit is contained in:
Thomas Zilio 2019-02-14 09:52:42 +01:00
parent c7461e3e6b
commit 1802dd5e15
7 changed files with 120 additions and 113 deletions

View File

@ -21,7 +21,22 @@ $totale = 0;
$totale_stato = [];
// Tabella con riepilogo interventi
$rsi = $dbo->fetchArray('SELECT *, in_interventi.id, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS inizio, (SELECT SUM(ore) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS ore, (SELECT MIN(km) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS km FROM co_promemoria INNER JOIN in_interventi ON co_promemoria.idintervento=in_interventi.id WHERE co_promemoria.idcontratto='.prepare($id_record).' ORDER BY co_promemoria.idintervento DESC');
$rsi = $dbo->fetchArray('SELECT in_interventi.id, in_interventi.codice,
(SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS inizio,
(SELECT SUM(ore) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS ore,
(SELECT MIN(km) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS km
FROM co_promemoria
INNER JOIN in_interventi ON co_promemoria.idintervento=in_interventi.id
WHERE co_promemoria.idcontratto='.prepare($id_record).'
UNION
SELECT in_interventi.id, in_interventi.codice,
(SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS inizio,
(SELECT SUM(ore) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS ore,
(SELECT MIN(km) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS km
FROM in_interventi
WHERE id_contratto = '.prepare($id_record).'
ORDER BY id DESC');
if (!empty($rsi)) {
echo '
<table class="table table-bordered table-condensed">

View File

@ -11,46 +11,11 @@ use Modules\Interventi\TipoSessione;
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 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_promemoria WHERE idintervento='.prepare($id_record));
if (empty($rs)) {
$dbo->insert('co_promemoria', array_merge(['idcontratto' => $idcontratto], $array));
}
// ...altrimenti se sto cambiando contratto aggiorno solo l'id del nuovo contratto
else {
$dbo->update('co_promemoria', ['idcontratto' => $idcontratto], ['idintervento' => $id_record]);
}
}
// Pianificazione già impostata, aggiorno solo il codice intervento
elseif (!empty($idcontratto) && !empty($idcontratto_riga)) {
$dbo->update('co_promemoria', $array, ['idcontratto' => $idriga, 'id' => $idcontratto_riga]);
}
// Se non è impostato nessun contratto o riga, tolgo il collegamento dell'intervento al contratto
elseif (empty($idcontratto)) {
// Rimozione del collegamento al promemoria
if (!empty($idcontratto_riga) && $intervento->id_contratto != $idcontratto) {
$dbo->update('co_promemoria', ['idintervento' => null], ['idintervento' => $id_record]);
}
@ -58,32 +23,32 @@ switch (post('op')) {
$sconto = post('sconto_globale');
// Salvataggio modifiche intervento
$dbo->update('in_interventi', [
'data_richiesta' => $data_richiesta,
'richiesta' => $richiesta,
'descrizione' => post('descrizione'),
'informazioniaggiuntive' => post('informazioniaggiuntive'),
$intervento->data_richiesta = post('data_richiesta');
$intervento->richiesta = post('richiesta');
$intervento->descrizione = post('descrizione');
$intervento->informazioniaggiuntive = post('informazioniaggiuntive');
'idanagrafica' => post('idanagrafica'),
'idclientefinale' => post('idclientefinale'),
'idreferente' => post('idreferente'),
'idtipointervento' => $idtipointervento,
$intervento->idanagrafica = post('idanagrafica');
$intervento->idclientefinale = post('idclientefinale');
$intervento->idreferente = post('idreferente');
$intervento->idtipointervento = post('idtipointervento');
'idstatointervento' => post('idstatointervento'),
'idsede' => $idsede,
'idautomezzo' => post('idautomezzo'),
'id_preventivo' => $idpreventivo,
$intervento->idstatointervento = post('idstatointervento');
$intervento->idsede = post('idsede');
$intervento->idautomezzo = post('idautomezzo');
$intervento->id_preventivo = post('idpreventivo');
$intervento->id_contratto = $idcontratto;
'sconto_globale' => $sconto,
'tipo_sconto_globale' => $tipo_sconto,
$intervento->sconto_globale = $sconto;
$intervento->tipo_sconto_globale = $tipo_sconto;
'id_documento_fe' => post('id_documento_fe'),
'codice_cup' => post('codice_cup'),
'codice_cig' => post('codice_cig'),
], ['id' => $id_record]);
$intervento->id_documento_fe = post('id_documento_fe');
$intervento->codice_cup = post('codice_cup');
$intervento->codice_cig = post('codice_cig');
$intervento->save();
$stato = $dbo->selectOne('in_statiintervento', '*', ['idstatointervento' => post('idstatointervento')]);
// Notifica chiusura intervento
$stato = $dbo->selectOne('in_statiintervento', '*', ['idstatointervento' => post('idstatointervento')]);
if (!empty($stato['notifica']) && !empty($stato['destinatari']) && $stato['idstatointervento'] != $record['idstatointervento']) {
$n = new Notifications\EmailNotification();
@ -134,59 +99,46 @@ switch (post('op')) {
$intervento->idsede = post('idsede');
}
$intervento->id_preventivo = post('$idpreventivo');
$intervento->id_preventivo = post('idpreventivo');
$intervento->id_contratto = post('idcontratto');
$intervento->richiesta = $richiesta;
$intervento->save();
// Collego l'intervento al contratto
if (!empty($idcontratto)) {
$array = [
// 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_promemoria', [
'idintervento' => $id_record,
'idtipointervento' => $idtipointervento,
'data_richiesta' => $data_richiesta,
'richiesta' => $richiesta,
'idsede' => $idsede ?: 0,
];
], ['idcontratto' => $idcontratto, 'id' => $idcontratto_riga]);
// 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_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_promemoria_righe WHERE id_promemoria = '.$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_promemoria_righe WHERE id_promemoria = '.$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_promemoria_articoli WHERE id_promemoria = '.$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_promemoria_articoli WHERE id_promemoria = '.$idcontratto_riga.' ');
// Copia degli allegati
$alleagti = Uploads::copy([
'id_plugin' => Plugins::get('Pianificazione interventi')['id'],
'id_record' => $idcontratto_riga,
], [
'id_module' => $id_module,
'id_record' => $id_record,
]);
// Copia degli allegati
$alleagti = Uploads::copy([
'id_plugin' => Plugins::get('Pianificazione interventi')['id'],
'id_record' => $idcontratto_riga,
], [
'id_module' => $id_module,
'id_record' => $id_record,
]);
if (!$alleagti) {
$errors = error_get_last();
flash()->warning(tr('Errore durante la copia degli allegati'));
}
if (!$alleagti) {
$errors = error_get_last();
flash()->warning(tr('Errore durante la copia degli allegati'));
}
// 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'], -$rs_articolo['qta'], ['idautomezzo' => $rs_articolo['idautomezzo'], 'idintervento' => $id_record]);
}
} else {
$dbo->insert('co_promemoria', [
'idcontratto' => $idcontratto,
'idintervento' => $id_record,
'idtipointervento' => $idtipointervento,
'data_richiesta' => $data_richiesta,
'richiesta' => $richiesta,
'idsede' => $idsede ?: 0,
]);
// 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'], -$rs_articolo['qta'], ['idautomezzo' => $rs_articolo['idautomezzo'], 'idintervento' => $id_record]);
}
}
@ -535,7 +487,7 @@ switch (post('op')) {
$id_tecnico = post('id_tecnico');
// Verifico se l'intervento è collegato ad un contratto
// TODO: utilizzare campo id_contratto in in_interventi come avviene già per i preventivi (id_preventivo) dalla 2.4.2
// TODO: utilizzare campo id_contratto in in_interventi come avviene già per i preventivi (id_preventivo) dalla 2.4.2
$rs = $dbo->fetchArray('SELECT idcontratto FROM co_promemoria WHERE idintervento='.prepare($id_record));
$idcontratto = $rs[0]['idcontratto'];

View File

@ -42,13 +42,11 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
</div>
</div>
<!-- RIGA 2 -->
<div class="row">
<div class="col-md-6">
<?php
if (($record['idpreventivo'] != '')) {
if (!empty($record['idpreventivo'])) {
echo '
'.Modules::link('Preventivi', $record['idpreventivo'], null, null, 'class="pull-right"');
}
@ -59,22 +57,16 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
<div class="col-md-6">
<?php
/*$rs = $dbo->fetchArray('SELECT id, idcontratto FROM co_promemoria WHERE idintervento='.prepare($id_record));
if (count($rs) == 1) {
$idcontratto = $rs[0]['idcontratto'];
$idcontratto_riga = $rs[0]['id'];
} else {
$idcontratto = '';
$idcontratto_riga = '';
}*/
$idcontratto_riga = $dbo->fetchOne('SELECT id FROM co_promemoria WHERE idintervento='.prepare($id_record))['id'];
if (($record['idcontratto'] != '')) {
if (!empty($record['idcontratto'])) {
echo '
'.Modules::link('Contratti', $record['idcontratto'], null, null, 'class="pull-right"');
}
?>
{[ "type": "select", "label": "<?php echo tr('Contratto'); ?>", "name": "idcontratto", "value": "<?php echo $record['idcontratto']; ?>", "ajax-source": "contratti", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
{[ "type": "select", "label": "<?php echo tr('Contratto'); ?>", "name": "idcontratto", "value": "<?php echo $record['id_contratto']; ?>", "ajax-source": "contratti", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
<input type='hidden' name='idcontratto_riga' value='<?php echo $idcontratto_riga; ?>'>
</div>
</div>

View File

@ -2,6 +2,17 @@
include_once __DIR__.'/../../core.php';
use Modules\Interventi\Intervento;
if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT *, (SELECT tipo FROM an_anagrafiche WHERE idanagrafica = in_interventi.idanagrafica) AS tipo_anagrafica, (SELECT completato FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS flag_completato, IF((in_interventi.idsede = 0), (SELECT idzona FROM an_anagrafiche WHERE idanagrafica = in_interventi.idanagrafica), (SELECT idzona FROM an_sedi WHERE id = in_interventi.idsede)) AS idzona, (SELECT colore FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS colore, (SELECT idcontratto FROM co_promemoria WHERE idintervento=in_interventi.id LIMIT 0,1) AS idcontratto, in_interventi.id_preventivo as idpreventivo FROM in_interventi WHERE id='.prepare($id_record));
$intervento = Intervento::find($id_record);
$record = $dbo->fetchOne('SELECT *,
(SELECT tipo FROM an_anagrafiche WHERE idanagrafica = in_interventi.idanagrafica) AS tipo_anagrafica,
(SELECT completato FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS flag_completato,
IF((in_interventi.idsede = 0), (SELECT idzona FROM an_anagrafiche WHERE idanagrafica = in_interventi.idanagrafica), (SELECT idzona FROM an_sedi WHERE id = in_interventi.idsede)) AS idzona,
(SELECT colore FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS colore,
in_interventi.id_preventivo as idpreventivo,
in_interventi.id_contratto as idcontratto
FROM in_interventi WHERE id='.prepare($id_record));
}

View File

@ -59,7 +59,23 @@ $totale_ore_impiegate = 0;
$sconto = [];
$imponibile = [];
$interventi = $dbo->fetchArray('SELECT *, in_interventi.id, in_interventi.codice, (SELECT GROUP_CONCAT(DISTINCT ragione_sociale) FROM in_interventi_tecnici JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = in_interventi_tecnici.idtecnico WHERE idintervento=in_interventi.id) AS tecnici, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS inizio, (SELECT SUM(ore) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS ore, (SELECT SUM(km) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS km FROM co_promemoria JOIN in_interventi ON co_promemoria.idintervento=in_interventi.id WHERE co_promemoria.idcontratto='.prepare($id_record).' ORDER BY inizio DESC');
$interventi = $dbo->fetchArray('SELECT in_interventi.id, in_interventi.codice,
(SELECT GROUP_CONCAT(DISTINCT ragione_sociale) FROM in_interventi_tecnici JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = in_interventi_tecnici.idtecnico WHERE idintervento=in_interventi.id) AS tecnici,
(SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS inizio,
(SELECT SUM(ore) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS ore,
(SELECT MIN(km) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS km
FROM co_promemoria
INNER JOIN in_interventi ON co_promemoria.idintervento=in_interventi.id
WHERE co_promemoria.idcontratto='.prepare($id_record).'
UNION
SELECT in_interventi.id, in_interventi.codice,
(SELECT GROUP_CONCAT(DISTINCT ragione_sociale) FROM in_interventi_tecnici JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = in_interventi_tecnici.idtecnico WHERE idintervento=in_interventi.id) AS tecnici,
(SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS inizio,
(SELECT SUM(ore) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS ore,
(SELECT MIN(km) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS km
FROM in_interventi
WHERE id_contratto = '.prepare($id_record).'
ORDER BY id DESC');
if (!empty($interventi)) {
// Interventi

20
update/2_4_7.php Normal file
View File

@ -0,0 +1,20 @@
<?php
// File e cartelle deprecate
$files = [
'modules/fatture/src/Articolo.php',
'modules/fatture/src/Riga.php',
'modules/fatture/src/Descrizione.php',
'modules/interventi/src/Articolo.php',
'modules/interventi/src/Riga.php',
'modules/interventi/src/Descrizione.php',
'include/src/Article.php',
'include/src/Row.php',
'include/src/Description.php',
];
foreach ($files as $key => $value) {
$files[$key] = realpath(DOCROOT.'/'.$value);
}
delete($files);

1
update/2_4_7.sql Normal file
View File

@ -0,0 +1 @@
UPDATE `in_interventi` SET `id_contratto` = (SELECT `idcontratto` FROM `co_promemoria` WHERE `idintervento` = `in_interventi`.`id`);