mirror of
https://github.com/devcode-it/openstamanager.git
synced 2024-12-22 21:28:08 +01:00
Relazione contratto-intervento senza promemoria
This commit is contained in:
parent
c7461e3e6b
commit
1802dd5e15
@ -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">
|
||||
|
@ -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'];
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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
20
update/2_4_7.php
Normal 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
1
update/2_4_7.sql
Normal file
@ -0,0 +1 @@
|
||||
UPDATE `in_interventi` SET `id_contratto` = (SELECT `idcontratto` FROM `co_promemoria` WHERE `idintervento` = `in_interventi`.`id`);
|
Loading…
Reference in New Issue
Block a user