From 7b53d2a1b76a26a6e2b578712f66d63876db8a29 Mon Sep 17 00:00:00 2001 From: MatteoPistorello Date: Mon, 6 Feb 2023 17:42:18 +0100 Subject: [PATCH] =?UTF-8?q?Aggiunta=20impostazione=20per=20fatturare=20att?= =?UTF-8?q?ivit=C3=A0=20collegate=20a=20documenti?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/fatture/add_intervento.php | 11 +++++++---- modules/fatture/edit.php | 14 ++++++++++---- update/2_4_40.sql | 5 ++++- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/modules/fatture/add_intervento.php b/modules/fatture/add_intervento.php index 27224de9a..b5b17e394 100755 --- a/modules/fatture/add_intervento.php +++ b/modules/fatture/add_intervento.php @@ -38,6 +38,12 @@ $idanagrafica = $fattura->idanagrafica; $idconto = ($dir == 'entrata') ? setting('Conto predefinito fatture di vendita') : setting('Conto predefinito fatture di acquisto'); +$where = ''; +// Lettura interventi non collegati a preventivi, ordini e contratti +if (!setting('Permetti fatturazione delle attività collegate a contratti, ordini e preventivi')) { + $where = 'AND in_interventi.id_preventivo IS NULL AND in_interventi.id_contratto IS NULL AND in_interventi.id_ordine IS NULL'; +} + /* Form di inserimento riga documento */ @@ -64,10 +70,7 @@ $rs = $dbo->fetchArray('SELECT (in_interventi.idanagrafica='.prepare($idanagrafica).' OR in_interventi.idclientefinale='.prepare($idanagrafica).') AND in_statiintervento.is_completato=1 AND in_statiintervento.is_fatturabile=1 AND in_interventi.id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) - AND in_interventi.id_preventivo IS NULL - AND in_interventi.id_contratto IS NULL - AND in_interventi.id_ordine IS NULL - AND NOT in_interventi.id IN (SELECT idintervento FROM co_promemoria WHERE idintervento IS NOT NULL)'); + AND NOT in_interventi.id IN (SELECT idintervento FROM co_promemoria WHERE idintervento IS NOT NULL) '.$where); foreach ($rs as $key => $value) { $intervento = \Modules\Interventi\Intervento::find($value['id']); $prezzo = $intervento->totale; diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index a41a6957c..1457997a7 100755 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -763,14 +763,20 @@ echo ' if (!$block_edit) { if (empty($record['ref_documento'])) { if ($dir == 'entrata') { - // Lettura interventi non rifiutati, non fatturati e non collegati a preventivi o contratti - $int_query = 'SELECT COUNT(*) AS tot FROM in_interventi INNER JOIN in_statiintervento ON in_interventi.idstatointervento=in_statiintervento.idstatointervento WHERE idanagrafica='.prepare($record['idanagrafica']).' AND in_statiintervento.is_completato=1 AND in_statiintervento.is_fatturabile=1 AND in_interventi.id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND in_interventi.id_preventivo IS NULL AND in_interventi.id NOT IN (SELECT idintervento FROM co_promemoria WHERE idintervento IS NOT NULL)'; + $where = ''; + // Lettura interventi non collegati a preventivi, ordini e contratti + if (!setting('Permetti fatturazione delle attività collegate a contratti, ordini e preventivi')) { + $where = 'AND in_interventi.id_preventivo IS NULL AND in_interventi.id_contratto IS NULL AND in_interventi.id_ordine IS NULL'; + } + + // Lettura interventi non rifiutati, non fatturati + $int_query = 'SELECT COUNT(*) AS tot FROM in_interventi INNER JOIN in_statiintervento ON in_interventi.idstatointervento=in_statiintervento.idstatointervento WHERE idanagrafica='.prepare($record['idanagrafica']).' AND in_statiintervento.is_completato=1 AND in_statiintervento.is_fatturabile=1 AND in_interventi.id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND in_interventi.id NOT IN (SELECT idintervento FROM co_promemoria WHERE idintervento IS NOT NULL) '.$where; $interventi = $dbo->fetchArray($int_query)[0]['tot']; // Se non trovo niente provo a vedere se ce ne sono per clienti terzi if (empty($interventi)) { - // Lettura interventi non rifiutati, non fatturati e non collegati a preventivi o contratti (clienti terzi) - $int_query = 'SELECT COUNT(*) AS tot FROM in_interventi INNER JOIN in_statiintervento ON in_interventi.idstatointervento=in_statiintervento.idstatointervento WHERE idclientefinale='.prepare($record['idanagrafica']).' AND in_statiintervento.is_completato=1 AND in_statiintervento.is_fatturabile=1 AND in_interventi.id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND in_interventi.id_preventivo IS NULL AND in_interventi.id NOT IN (SELECT idintervento FROM co_promemoria WHERE idintervento IS NOT NULL)'; + // Lettura interventi non rifiutati, non fatturati + $int_query = 'SELECT COUNT(*) AS tot FROM in_interventi INNER JOIN in_statiintervento ON in_interventi.idstatointervento=in_statiintervento.idstatointervento WHERE idclientefinale='.prepare($record['idanagrafica']).' AND in_statiintervento.is_completato=1 AND in_statiintervento.is_fatturabile=1 AND in_interventi.id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND in_interventi.id NOT IN (SELECT idintervento FROM co_promemoria WHERE idintervento IS NOT NULL) '.$where; $interventi = $dbo->fetchArray($int_query)[0]['tot']; } diff --git a/update/2_4_40.sql b/update/2_4_40.sql index 369f3beef..5b6e0d661 100644 --- a/update/2_4_40.sql +++ b/update/2_4_40.sql @@ -166,4 +166,7 @@ INSERT INTO zz_settings(nome, valore, tipo, editable, sezione) VALUES ('Posizion -- Miglioria segmenti scadenzario UPDATE `zz_segments` SET `name` = 'Scadenzario completo' WHERE `zz_segments`.`name` = 'Scadenziaro completo'; UPDATE `zz_segments` SET `clause` = '(`co_scadenziario`.`scadenza` BETWEEN \'|period_start|\' AND \'|period_end|\' AND idtipodocumento < 14)' WHERE `zz_segments`.`name` = 'Scadenzario completo'; -INSERT INTO `zz_segments` (`id_module`, `name`, `clause`, `position`, `pattern`,`note`, `dicitura_fissa`,`predefined`, `predefined_accredito`, `predefined_addebito`, `autofatture`, `is_sezionale`) VALUES ((SELECT `id` FROM `zz_modules` WHERE `name` = 'Scadenzario'), 'Scadenzario autofatture', '(idtipodocumento >= 14)', 'WHR', '####', '', '', 0, 0, 0, 0, 0); \ No newline at end of file +INSERT INTO `zz_segments` (`id_module`, `name`, `clause`, `position`, `pattern`,`note`, `dicitura_fissa`,`predefined`, `predefined_accredito`, `predefined_addebito`, `autofatture`, `is_sezionale`) VALUES ((SELECT `id` FROM `zz_modules` WHERE `name` = 'Scadenzario'), 'Scadenzario autofatture', '(idtipodocumento >= 14)', 'WHR', '####', '', '', 0, 0, 0, 0, 0); + +-- Impostazione per fatturare attività collegati ad altri documenti +INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Permetti fatturazione delle attività collegate a contratti, ordini e preventivi', '0', 'boolean', '1', 'Fatturazione', NULL, NULL) \ No newline at end of file