diff --git a/modules/interventi/actions.php b/modules/interventi/actions.php index 7bf35abf6..7e17f8ef5 100755 --- a/modules/interventi/actions.php +++ b/modules/interventi/actions.php @@ -13,14 +13,15 @@ use Modules\Interventi\Components\Sessione; use Modules\Interventi\Intervento; use Modules\Interventi\Stato; use Modules\TipiIntervento\Tipo as TipoSessione; +use Plugins\PianificazioneInterventi\Promemoria; switch (post('op')) { case 'update': $idcontratto = post('idcontratto'); - $idcontratto_riga = post('idcontratto_riga'); + $id_promemoria = post('idcontratto_riga'); // Rimozione del collegamento al promemoria - if (!empty($idcontratto_riga) && $intervento->id_contratto != $idcontratto) { + if (!empty($id_promemoria) && $intervento->id_contratto != $idcontratto) { $dbo->update('co_promemoria', ['idintervento' => null], ['idintervento' => $id_record]); } @@ -84,7 +85,7 @@ switch (post('op')) { // Informazioni di base $idpreventivo = post('idpreventivo'); $idcontratto = post('idcontratto'); - $idcontratto_riga = post('idcontratto_riga'); + $id_promemoria = post('idcontratto_riga'); $idtipointervento = post('idtipointervento'); $idsede_partenza = post('idsede_partenza'); $idsede_destinazione = post('idsede_destinazione'); @@ -106,41 +107,10 @@ switch (post('op')) { $intervento->save(); - // 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_destinazione ?: 0, - ], ['idcontratto' => $idcontratto, 'id' => $idcontratto_riga]); - - //copio le righe dal promemoria all'intervento - $dbo->query('INSERT INTO in_righe_interventi (descrizione, qta, um, prezzo_unitario, costo_unitario, 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_promemoria WHERE id_promemoria = '.$idcontratto_riga); - - //copio gli articoli dal promemoria all'intervento - $dbo->query('INSERT INTO in_righe_interventi (idarticolo, idintervento, descrizione, costo_unitario, prezzo_unitario, sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$id_record.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva, qta, um, abilita_serial, idimpianto FROM co_promemoria_articoli WHERE id_promemoria = '.$idcontratto_riga); - - // Copia degli allegati - $allegati = Uploads::copy([ - 'id_plugin' => Plugins::get('Pianificazione interventi')['id'], - 'id_record' => $idcontratto_riga, - ], [ - 'id_module' => $id_module, - 'id_record' => $id_record, - ]); - - if (!$allegati) { - $errors = error_get_last(); - flash()->warning(tr('Errore durante la copia degli allegati')); - } - - // Movimento il magazziono per ogni articolo copiato - $articoli = $intervento->articoli; - foreach ($articoli as $articolo) { - $articolo->movimenta($articolo->qta); - } + // Sincronizzazione con il promemoria indicato + if (!empty($id_promemoria)) { + $promemoria = Promemoria::find($id_promemoria); + $promemoria->pianifica($intervento); } if (!empty(post('idordineservizio'))) { diff --git a/modules/interventi/src/Intervento.php b/modules/interventi/src/Intervento.php index 84732eb02..76698a180 100755 --- a/modules/interventi/src/Intervento.php +++ b/modules/interventi/src/Intervento.php @@ -7,10 +7,13 @@ use Modules\Anagrafiche\Anagrafica; use Modules\Contratti\Contratto; use Modules\Preventivi\Preventivo; use Modules\TipiIntervento\Tipo as TipoSessione; +use Traits\RecordTrait; use Util\Generator; class Intervento extends Document { + use RecordTrait; + protected $table = 'in_interventi'; protected $info = []; @@ -82,6 +85,11 @@ class Intervento extends Document return $this->info['fine']; } + public function getModuleAttribute() + { + return 'Interventi'; + } + /** * Restituisce la collezione di righe e articoli con valori rilevanti per i conti. * diff --git a/plugins/pianificazione_interventi/actions.php b/plugins/pianificazione_interventi/actions.php index 22dcd3248..c9583d806 100755 --- a/plugins/pianificazione_interventi/actions.php +++ b/plugins/pianificazione_interventi/actions.php @@ -75,6 +75,9 @@ switch ($operazione) { $data_inizio = post('data_inizio'); $count = 0; + $count_interventi = 0; + $count_promemoria = 0; + $date_con_promemoria = []; $date_con_intervento = []; if (post('pianifica_promemoria')) { @@ -124,6 +127,8 @@ switch ($operazione) { 'id_record' => $promemoria_corrente->id, ]); } + + $count_promemoria++; } else { $promemoria_corrente = $promemoria_contratto[$data_promemoria]->first(); $date_con_promemoria[] = dateFormat($data_promemoria); @@ -141,13 +146,13 @@ switch ($operazione) { // Aggiungo i tecnici selezionati $idtecnici = post('idtecnico'); foreach ($idtecnici as $idtecnico) { - add_tecnico($intervento->id, $idtecnico, $data_richiesta.' '.post('orario_inizio'), $data_richiesta.' '.post('orario_fine')); + add_tecnico($intervento->id, $idtecnico, $data_promemoria.' '.post('orario_inizio'), $data_promemoria.' '.post('orario_fine')); } // Copia delle informazioni del promemoria $promemoria_corrente->pianifica($intervento); - flash()->info(tr('Interventi pianificati correttamente')); + $count_interventi++; } elseif (post('pianifica_intervento')) { $date_con_intervento[] = dateFormat($data_promemoria); } @@ -161,8 +166,8 @@ switch ($operazione) { if ($count == 0) { flash()->warning(tr('Nessun promemoria pianificato')); } else { - flash()->info(tr('Sono stati pianificati _NUM_ interventi!', [ - '_NUM_' => $count, + flash()->info(tr('Sono stati creati _NUM_ promemoria!', [ + '_NUM_' => $count_promemoria, ])); if (!empty($date_con_promemoria)) { @@ -171,10 +176,16 @@ switch ($operazione) { ])); } - if (!empty($date_con_intervento)) { - flash()->warning(tr('I promemoria delle seguenti date presentano già un intervento collegato: _LIST_', [ - '_LIST_' => implode(', ', $date_con_intervento), + if (post('pianifica_intervento')) { + flash()->info(tr('Sono stati pianificati _NUM_ interventi!', [ + '_NUM_' => $count_interventi, ])); + + if (!empty($date_con_intervento)) { + flash()->warning(tr('I promemoria delle seguenti date presentano già un intervento collegato: _LIST_', [ + '_LIST_' => implode(', ', $date_con_intervento), + ])); + } } } break; diff --git a/plugins/pianificazione_interventi/edit.php b/plugins/pianificazione_interventi/edit.php index 0ade62def..9690af203 100755 --- a/plugins/pianificazione_interventi/edit.php +++ b/plugins/pianificazione_interventi/edit.php @@ -67,11 +67,11 @@ if (!$elenco_promemoria->isEmpty()) { } // Intervento svolto - $intervento = $promemoria->intevento; + $intervento = $promemoria->intervento; if (!empty($intervento)) { $info_intervento = Modules::link('Interventi', $intervento['id'], tr('Intervento num. _NUM_ del _DATE_', [ - '_NUM_' => $intervento['codice'], - '_DATE_' => Translator::dateToLocale($intervento['data']), + '_NUM_' => $intervento->codice, + '_DATE_' => dateFormat($intervento->data_richiesta), ])); $disabled = 'disabled'; diff --git a/update/2_4_14.sql b/update/2_4_14.sql index 25cfe4f90..bd06a3c59 100755 --- a/update/2_4_14.sql +++ b/update/2_4_14.sql @@ -153,5 +153,8 @@ ALTER TABLE `co_promemoria_righe` RENAME TO `co_righe_promemoria`; DROP TABLE `mg_articoli_interventi`; DROP TABLE `co_promemoria_articoli`; +ALTER TABLE `co_righe_promemoria` ADD `original_id` int(11), ADD `original_type` varchar(255); +ALTER TABLE `in_righe_interventi` ADD `original_id` int(11), ADD `original_type` varchar(255); + -- Aggiunta supporto a prezzi ivati INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `updated_at`, `order`, `help`) VALUES (NULL, 'Utilizza prezzi di vendita con IVA incorporata', '0', 'boolean', '1', 'Fatturazione', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, 'Abilita la gestione degli importi ivati per i documenti di vendita.');