From a97a51ffbdfb7a466e9c94d292e1dd5a32cbbc07 Mon Sep 17 00:00:00 2001 From: valentina Date: Mon, 17 Feb 2025 11:59:53 +0100 Subject: [PATCH] fix: ripristino riepilogo ore in plugin consuntivo --- plugins/consuntivo/edit.php | 452 +++++++++++++++++++----------------- 1 file changed, 233 insertions(+), 219 deletions(-) diff --git a/plugins/consuntivo/edit.php b/plugins/consuntivo/edit.php index 665493b37..d77dd0e65 100644 --- a/plugins/consuntivo/edit.php +++ b/plugins/consuntivo/edit.php @@ -1,5 +1,4 @@ . */ -include_once __DIR__.'/../../../core.php'; +include_once __DIR__ . '/../../../core.php'; use Models\Module; use Modules\Contratti\Contratto; @@ -48,224 +47,200 @@ if ($id_module == Module::where('name', 'Preventivi')->first()->id) { } $interventi = Intervento::where($id_documento, $id_record)->get(); +$totale_ore_completate = 0; if (!empty($interventi)) { echo ' - - - - - + + + + + '; // Tabella con i dati foreach ($interventi as $intervento) { + $totale_ore_completate += !empty($intervento->stato->is_completato) ? $intervento->ore_totali : 0; // Riga per il singolo intervento echo ' - + '; - // Riga con dettagli echo ' - + '; } - $array_interventi = $interventi->toArray(); $totale_km = sum(array_column($array_interventi, 'km_totali')); $totale_costo = sum(array_column($array_interventi, 'spesa')); $totale_addebito = sum(array_column($array_interventi, 'imponibile')); $totale = sum(array_column($array_interventi, 'totale_imponibile')); $totale_ore = sum(array_column($array_interventi, 'ore_totali')); - // Totali echo ' '; - echo ' '; - echo ' '; - echo ' '; - echo '
'.tr('Attività').''.tr('Ore').''.tr('Km').''.tr('Costo').''.tr('Tot. scontato').'' . tr('Attività') . '' . tr('Ore') . '' . tr('Km') . '' . tr('Costo') . '' . tr('Tot. scontato') . '
- - '.Modules::link('Interventi', $intervento->id, tr('Intervento num. _NUM_ del _DATE_', [ - '_NUM_' => $intervento->codice, - '_DATE_' => Translator::dateToLocale($intervento->inizio), - ])).' + + ' . Modules::link('Interventi', $intervento->id, tr('Intervento num. _NUM_ del _DATE_', [ + '_NUM_' => $intervento->codice, + '_DATE_' => Translator::dateToLocale($intervento->inizio), + ])) . ' - '.($intervento->ore_totali <= 0 ? ' ' : '').numberFormat($intervento->ore_totali).' + ' . ($intervento->ore_totali <= 0 ? ' ' : '') . numberFormat($intervento->ore_totali) . ' - '.numberFormat($intervento->km_totali).' + ' . numberFormat($intervento->km_totali) . ' - '.moneyFormat($intervento->spesa).' + ' . moneyFormat($intervento->spesa) . ' - '.moneyFormat($intervento->totale_imponibile).' + ' . moneyFormat($intervento->totale_imponibile) . '
'; - // Lettura sessioni di lavoro $sessioni = $intervento->sessioni()->leftJoin('in_tipiintervento', 'in_interventi_tecnici.idtipointervento', 'in_tipiintervento.id')->where('non_conteggiare', 0)->get(); if (!empty($sessioni)) { echo ' - - - - - - - - - - + + + + + + + + + + '; - foreach ($sessioni as $sessione) { // Visualizzo lo sconto su ore o km se c'è - $sconto_ore = !empty($sessione->sconto_totale_manodopera) ? '
'.moneyFormat(-$sessione->sconto_totale_manodopera).'' : ''; - $sconto_km = !empty($sessione->sconto_totale_viaggio) ? '
'.moneyFormat(-$sessione->sconto_totale_viaggio).'' : ''; - + $sconto_ore = !empty($sessione->sconto_totale_manodopera) ? '
' . moneyFormat(-$sessione->sconto_totale_manodopera) . '' : ''; + $sconto_km = !empty($sessione->sconto_totale_viaggio) ? '
' . moneyFormat(-$sessione->sconto_totale_viaggio) . '' : ''; echo ' - - - - - - - - - - + + + + + + + + + + '; - // Raggruppamento per tipologia descrizione $tipologie[$sessione->tipo->getTranslation('title')]['ore'] += $sessione->ore; $tipologie[$sessione->tipo->getTranslation('title')]['costo'] += $sessione->costo_manodopera + $sessione->costo_viaggio + $sessione->costo_diritto_chiamata; $tipologie[$sessione->tipo->getTranslation('title')]['ricavo'] += $sessione->prezzo_manodopera - $sessione->sconto_totale_manodopera + $sessione->prezzo_viaggio - $sessione->sconto_totale_viaggio + $sessione->prezzo_diritto_chiamata; - // Raggruppamento per tecnico $tecnici[$sessione->anagrafica->ragione_sociale]['ore'] += $sessione->ore; $tecnici[$sessione->anagrafica->ragione_sociale]['km'] += $sessione->km; $tecnici[$sessione->anagrafica->ragione_sociale]['costo'] += $sessione->costo_manodopera + $sessione->costo_viaggio + $sessione->costo_diritto_chiamata; $tecnici[$sessione->anagrafica->ragione_sociale]['ricavo'] += $sessione->prezzo_manodopera - $sessione->sconto_totale_manodopera + $sessione->prezzo_viaggio - $sessione->sconto_totale_viaggio + $sessione->prezzo_diritto_chiamata; - // Raggruppamento per stato intervento $stati_intervento[$intervento->stato->getTranslation('title')]['colore'] = $intervento->stato->colore; $stati_intervento[$intervento->stato->getTranslation('title')]['ore'] += $sessione->ore; $stati_intervento[$intervento->stato->getTranslation('title')]['costo'] += $sessione->costo_manodopera + $sessione->costo_viaggio + $sessione->costo_diritto_chiamata; $stati_intervento[$intervento->stato->getTranslation('title')]['ricavo'] += $sessione->prezzo_manodopera - $sessione->sconto_totale_manodopera + $sessione->prezzo_viaggio - $sessione->sconto_totale_viaggio + $sessione->prezzo_diritto_chiamata; } - echo '
'.tr('Tecnico').''.tr('Tipo attività').''.tr('Ore').''.tr('Km').''.tr('Costo ore').''.tr('Costo km').''.tr('Diritto ch.').''.tr('Prezzo ore').''.tr('Prezzo km').''.tr('Diritto ch.').'' . tr('Tecnico') . '' . tr('Tipo attività') . '' . tr('Ore') . '' . tr('Km') . '' . tr('Costo ore') . '' . tr('Costo km') . '' . tr('Diritto ch.') . '' . tr('Prezzo ore') . '' . tr('Prezzo km') . '' . tr('Diritto ch.') . '
'.$sessione->anagrafica->ragione_sociale.''.$sessione->tipo->getTranslation('title').''.numberFormat($sessione->ore).''.numberFormat($sessione->km).''.moneyFormat($sessione->costo_manodopera).''.moneyFormat($sessione->costo_viaggio).''.moneyFormat($sessione->costo_diritto_chiamata).''.moneyFormat($sessione->prezzo_manodopera).$sconto_ore.''.moneyFormat($sessione->prezzo_viaggio).$sconto_km.''.moneyFormat($sessione->prezzo_diritto_chiamata).'' . $sessione->anagrafica->ragione_sociale . '' . $sessione->tipo->getTranslation('title') . '' . numberFormat($sessione->ore) . '' . numberFormat($sessione->km) . '' . moneyFormat($sessione->costo_manodopera) . '' . moneyFormat($sessione->costo_viaggio) . '' . moneyFormat($sessione->costo_diritto_chiamata) . '' . moneyFormat($sessione->prezzo_manodopera) . $sconto_ore . '' . moneyFormat($sessione->prezzo_viaggio) . $sconto_km . '' . moneyFormat($sessione->prezzo_diritto_chiamata) . '
'; } - // Lettura articoli utilizzati $articoli = $intervento->articoli; if (!$articoli->isEmpty()) { echo ' - - - - + + + + '; - foreach ($articoli as $articolo) { - $sconto = !empty($articolo->sconto) ? '
'.moneyFormat(-$articolo->sconto).'' : ''; - + $sconto = !empty($articolo->sconto) ? '
' . moneyFormat(-$articolo->sconto) . '' : ''; echo ' - - - + + + '; - // Raggruppamento per articolo con lo stesso prezzo $ricavo = (string) (($articolo->imponibile - $articolo->sconto) / ($articolo->qta > 0 ? $articolo->qta : 1)); $costo = (string) ($articolo->spesa / ($articolo->qta > 0 ? $articolo->qta : 1)); - $descrizione = $articolo->articolo->codice.' - '.$articolo->descrizione; - + $descrizione = $articolo->articolo->codice . ' - ' . $articolo->descrizione; $materiali_art[$descrizione][$ricavo][$costo]['id'] = $articolo->id; $materiali_art[$descrizione][$ricavo][$costo]['qta'] += $articolo->qta; $materiali_art[$descrizione][$ricavo][$costo]['costo'] += $articolo->spesa; $materiali_art[$descrizione][$ricavo][$costo]['ricavo'] += $articolo->imponibile - $articolo->sconto; } - echo '
'.tr('Materiale').''.tr('Q.tà').''.tr('Prezzo di acquisto').''.tr('Prezzo di vendita').'' . tr('Materiale') . '' . tr('Q.tà') . '' . tr('Prezzo di acquisto') . '' . tr('Prezzo di vendita') . '
- '.Modules::link('Articoli', $articolo->idarticolo, $articolo->descrizione).' + ' . Modules::link('Articoli', $articolo->idarticolo, $articolo->descrizione) . ' '.numberFormat($articolo->qta, 'qta').''.moneyFormat($articolo->spesa).''.moneyFormat($articolo->imponibile).$sconto.'' . numberFormat($articolo->qta, 'qta') . '' . moneyFormat($articolo->spesa) . '' . moneyFormat($articolo->imponibile) . $sconto . '
'; } - // Lettura spese aggiuntive $righe = $intervento->righe; if (!$righe->isEmpty()) { echo ' - - - - + + + + '; - foreach ($righe as $riga) { - $sconto = !empty($riga->sconto) ? '
'.moneyFormat(-$riga->sconto).'' : ''; - + $sconto = !empty($riga->sconto) ? '
' . moneyFormat(-$riga->sconto) . '' : ''; echo ' - - - + + + '; - // Raggruppamento per riga $materiali_righe[$riga->descrizione]['qta'] += $riga->qta; $materiali_righe[$riga->descrizione]['costo'] += $riga->spesa; $materiali_righe[$riga->descrizione]['ricavo'] += $riga->imponibile - $riga->sconto; } - echo '
'.tr('Altre spese').''.tr('Q.tà').''.tr('Prezzo di acquisto').''.tr('Prezzo di vendita').'' . tr('Altre spese') . '' . tr('Q.tà') . '' . tr('Prezzo di acquisto') . '' . tr('Prezzo di vendita') . '
- '.$riga->descrizione.' + ' . $riga->descrizione . ' '.numberFormat($riga->qta, 'qta').''.moneyFormat($riga->spesa).''.moneyFormat($riga->imponibile).$sconto.'' . numberFormat($riga->qta, 'qta') . '' . moneyFormat($riga->spesa) . '' . moneyFormat($riga->imponibile) . $sconto . '
'; } - echo '
- '.tr('Totale').' + ' . tr('Totale') . ' - '.numberFormat($totale_ore).' + ' . numberFormat($totale_ore) . ' - '.numberFormat($totale_km).' + ' . numberFormat($totale_km) . ' - '.moneyFormat($totale_costo).' + ' . moneyFormat($totale_costo) . ' - '.moneyFormat($totale).' + ' . moneyFormat($totale) . '
'; @@ -273,179 +248,218 @@ if (!empty($interventi)) { // Bilancio del documento $budget = $documento->totale_imponibile; +$righe = $documento->righe; +foreach ($righe as $riga) { + if ($riga->um == 'ore') { + $totale_ore_contratto = $riga->qta; + } +} + $diff = sum($budget, -$totale) - $documento->provvigione; +if ($diff > 0) { + $bilancio = '+ ' . moneyFormat($diff) . ''; +} elseif ($diff < 0) { + $bilancio = '' . moneyFormat($diff) . ''; +} else { + $bilancio = '' . moneyFormat($diff) . ''; +} echo '
-
- '.tr('Budget rimanente').':
'; -if ($diff > 0) { - echo ' - +'.moneyFormat($diff).''; -} elseif ($diff < 0) { - echo ' - '.moneyFormat($diff).''; -} else { - echo ' - '.moneyFormat($diff).''; -} -echo ' -
+

+ ' . tr('Rapporto budget/spesa') . ':
+ ' . $bilancio . ' +



- +
'; +if (!empty($totale_ore_contratto)) { + echo ' +
-
+
- - - - - - - '; -ksort($tipologie); -foreach ($tipologie as $key => $tipologia) { - $margine = $tipologia['ricavo'] - $tipologia['costo']; - $margine_prc = ($tipologia['ricavo'] && $tipologia['costo']) ? (int) (1 - ($tipologia['costo'] / ($tipologia['ricavo'] > 0 ? $tipologia['ricavo'] : 1))) * 100 : 100; - $ricarico_prc = ($tipologia['ricavo'] && $tipologia['costo']) ? (int) ((($tipologia['ricavo'] / ($tipologia['costo'] > 0 ? $tipologia['costo'] : 1)) - 1) * 100) : 100; - echo ' + + + - - - - - - - '; -} -echo ' -
'.tr('Tipologia').''.tr('Ore').''.tr('Costo').''.tr('Ricavo').''.tr('Margine').''.tr('Ricarico').'
' . tr('Ore a contratto') . ':' . Translator::numberToLocale($totale_ore_contratto) . '
'.$key.''.Translator::numberToLocale($tipologia['ore']).''.Translator::numberToLocale($tipologia['costo']).' €'.Translator::numberToLocale($tipologia['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)'.Translator::numberToLocale($margine).' € ('.$ricarico_prc.'%)
-
- -
- + + + - - - - - - - - '; -ksort($tecnici); -foreach ($tecnici as $key => $tecnico) { - $margine = $tecnico['ricavo'] - $tecnico['costo']; - $margine_prc = ($tecnico['ricavo'] && $tecnico['costo']) ? (int) (1 - ($tecnico['costo'] / ($tecnico['ricavo'] > 0 ? $tecnico['ricavo'] : 1))) * 100 : 100; - $ricarico_prc = ($tecnico['ricavo'] && $tecnico['costo']) ? (int) ((($tecnico['ricavo'] / ($tecnico['costo'] > 0 ? $tecnico['costo'] : 1)) - 1) * 100) : 100; - echo ' + + + - - - - - - - - '; -} -echo ' + + + + + + +
' . tr('Ore erogate totali') . ':' . Translator::numberToLocale($totale_ore) . '
'.tr('Tecnici').''.tr('Km').''.tr('Ore').''.tr('Costo').''.tr('Ricavo').''.tr('Margine').''.tr('Ricarico').'
' . tr('Ore residue totali') . ':' . Translator::numberToLocale(floatval($totale_ore_contratto) - floatval($totale_ore)) . '
'.$key.''.Translator::numberToLocale($tecnico['km']).''.Translator::numberToLocale($tecnico['ore']).''.Translator::numberToLocale($tecnico['costo']).' €'.Translator::numberToLocale($tecnico['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)'.Translator::numberToLocale($margine).' € ('.$ricarico_prc.'%)
' . tr('Ore erogate concluse') . ':' . Translator::numberToLocale($totale_ore_completate) . '
' . tr('Ore residue concluse') . ':' . Translator::numberToLocale(floatval($totale_ore_contratto) - floatval($totale_ore_completate)) . '
- -
-
- - - - - - - - - '; +'; +} +echo' +
+

' . tr('Per monitorare il consumo ore, inserisci almeno una riga con unità di misura "ore"') . '.

+
+
+
+
'.tr('Stato').''.tr('Ore').''.tr('Costo').''.tr('Ricavo').''.tr('Margine').''.tr('Ricarico').'
+ + + + + + + + '; +ksort($tipologie); +foreach ($tipologie as $key => $tipologia) { + $margine = $tipologia['ricavo'] - $tipologia['costo']; + if ($tipologia['ricavo']) { + $margine_prc = (int) (1 - ($tipologia['costo'] / ($tipologia['ricavo'] > 0 ? $tipologia['ricavo'] : 1))) * 100; + $ricarico_prc = ($tipologia['ricavo'] && $tipologia['costo']) ? (int) ((($tipologia['ricavo'] / ($tipologia['costo'] > 0 ? $tipologia['costo'] : 1)) - 1) * 100) : 100; + } + echo ' + + + + + + + + '; +} +echo ' +
' . tr('Tipologia') . '' . tr('Ore') . '' . tr('Costo') . '' . tr('Ricavo') . '' . tr('Margine') . '' . tr('Ricarico') . '
' . $key . '' . Translator::numberToLocale($tipologia['ore']) . '' . Translator::numberToLocale($tipologia['costo']) . ' €' . Translator::numberToLocale($tipologia['ricavo']) . ' €' . Translator::numberToLocale($margine) . ' € (' . $margine_prc . '%)' . Translator::numberToLocale($margine) . ' € (' . $ricarico_prc . '%)
+
+
+ + + + + + + + + + '; +ksort($tecnici); +foreach ($tecnici as $key => $tecnico) { + $margine = $tecnico['ricavo'] - $tecnico['costo']; + if ($tecnico['ricavo']) { + $margine_prc = (int) (1 - ($tecnico['costo'] / ($tecnico['ricavo'] > 0 ? $tecnico['ricavo'] : 1))) * 100; + $ricarico_prc = ($tecnico['ricavo'] && $tecnico['costo']) ? (int) ((($tecnico['ricavo'] / ($tecnico['costo'] > 0 ? $tecnico['costo'] : 1)) - 1) * 100) : 100; + } + echo ' + + + + + + + + + '; +} +echo ' +
' . tr('Tecnici') . '' . tr('km') . '' . tr('Ore') . '' . tr('Costo') . '' . tr('Ricavo') . '' . tr('Margine') . '' . tr('Ricarico') . '
' . $key . '' . (int) $tecnico['km'] . '' . Translator::numberToLocale($tecnico['ore']) . '' . Translator::numberToLocale($tecnico['costo']) . ' €' . Translator::numberToLocale($tecnico['ricavo']) . ' €' . Translator::numberToLocale($margine) . ' € (' . $margine_prc . '%)' . Translator::numberToLocale($margine) . ' € (' . $ricarico_prc . '%)
+
+
+
+
+ + + + + + + + + '; ksort($stati_intervento); foreach ($stati_intervento as $key => $stato) { $margine = $stato['ricavo'] - $stato['costo']; - $margine_prc = ($stato['ricavo'] && $stato['costo']) ? (int) (1 - ($stato['costo'] / ($stato['ricavo'] > 0 ? $stato['ricavo'] : 1))) * 100 : 100; - $ricarico_prc = ($stato['ricavo'] && $stato['costo']) ? (int) ((($stato['ricavo'] / ($stato['costo'] > 0 ? $stato['costo'] : 1)) - 1) * 100) : 100; + if ($stato['ricavo']) { + $margine_prc = (int) (1 - ($stato['costo'] / ($stato['ricavo'] > 0 ? $stato['ricavo'] : 1))) * 100; + $ricarico_prc = ($stato['ricavo'] && $stato['costo']) ? (int) ((($stato['ricavo'] / ($stato['costo'] > 0 ? $stato['costo'] : 1)) - 1) * 100) : 100; + } echo ' - - - - - - - - '; + + + + + + + + '; } echo ' -
' . tr('Stato') . '' . tr('Ore') . '' . tr('Costo') . '' . tr('Ricavo') . '' . tr('Margine') . '' . tr('Ricarico') . '
'.$key.'
'.Translator::numberToLocale($stato['ore']).''.Translator::numberToLocale($stato['costo']).' €'.Translator::numberToLocale($stato['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)'.Translator::numberToLocale($margine).' € ('.$ricarico_prc.'%)
' . $key . '
' . Translator::numberToLocale($stato['ore']) . '' . Translator::numberToLocale($stato['costo']) . ' €' . Translator::numberToLocale($stato['ricavo']) . ' €' . Translator::numberToLocale($margine) . ' € (' . $margine_prc . '%)' . Translator::numberToLocale($margine) . ' € (' . $ricarico_prc . '%)
-
- -
- - - - - - - - - '; +
'.tr('Materiale').''.tr('Qtà').''.tr('Costo').''.tr('Ricavo').''.tr('Margine').''.tr('Ricarico').'
+
+
+ + + + + + + + + '; ksort($materiali_art); foreach ($materiali_art as $key => $materiali_array1) { foreach ($materiali_array1 as $materiali_array2) { foreach ($materiali_array2 as $materiale) { $margine = $materiale['ricavo'] - $materiale['costo']; - $margine_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int) (1 - ($materiale['costo'] / ($materiale['ricavo'] > 0 ? $materiale['ricavo'] : 1))) * 100 : 100; + $margine_prc = (int) (1 - ($materiale['costo'] / ($materiale['ricavo'] > 0 ? $materiale['ricavo'] : 1))) * 100; $ricarico_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int) ((($materiale['ricavo'] / ($materiale['costo'] > 0 ? $materiale['costo'] : 1)) - 1) * 100) : 100; echo ' - - - - - - - - '; + + + + + + + + '; } } } - ksort($materiali_righe); foreach ($materiali_righe as $key => $materiale) { $margine = $materiale['ricavo'] - $materiale['costo']; - $margine_prc = ($materiale['ricavo']) ? (int) (1 - ($materiale['costo'] / ($materiale['ricavo'] > 0 ? $materiale['ricavo'] : 1))) * 100 : 0; + $margine_prc = (int) (1 - ($materiale['costo'] / ($materiale['ricavo'] > 0 ? $materiale['ricavo'] : 1))) * 100; $ricarico_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int) ((($materiale['ricavo'] / ($materiale['costo'] > 0 ? $materiale['costo'] : 1)) - 1) * 100) : 100; echo ' - - - - - - - - '; + + + + + + + + '; } echo ' -
' . tr('Materiale') . '' . tr('Qtà') . '' . tr('Costo') . '' . tr('Ricavo') . '' . tr('Margine') . '' . tr('Ricarico') . '
'.Modules::link('Articoli', $materiale['id'], $key).''.$materiale['qta'].''.Translator::numberToLocale($materiale['costo']).' €'.Translator::numberToLocale($materiale['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)'.Translator::numberToLocale($margine).' € ('.$ricarico_prc.'%)
' . Modules::link('Articoli', $materiale['id'], $key) . '' . $materiale['qta'] . '' . Translator::numberToLocale($materiale['costo']) . ' €' . Translator::numberToLocale($materiale['ricavo']) . ' €' . Translator::numberToLocale($margine) . ' € (' . $margine_prc . '%)' . Translator::numberToLocale($margine) . ' € (' . $ricarico_prc . '%)
'.$key.''.$materiale['qta'].''.Translator::numberToLocale($materiale['costo']).' €'.Translator::numberToLocale($materiale['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)'.Translator::numberToLocale($margine).' € ('.$ricarico_prc.'%)
' . $key . '' . $materiale['qta'] . '' . Translator::numberToLocale($materiale['costo']) . ' €' . Translator::numberToLocale($materiale['ricavo']) . ' €' . Translator::numberToLocale($margine) . ' € (' . $margine_prc . '%)' . Translator::numberToLocale($margine) . ' € (' . $ricarico_prc . '%)
-
+
'; - /* Stampa consuntivo */ echo '
- '.Prints::getLink('Consuntivo '.$text, $id_record, 'btn-primary', tr('Stampa consuntivo')).' + ' . Prints::getLink('Consuntivo ' . $text, $id_record, 'btn-primary', tr('Stampa consuntivo')) . '
'; // Aggiunta interventi se il documento é aperto o in attesa o pagato (non si possono inserire interventi collegati ad altri preventivi) -$query = 'SELECT id, CONCAT(\'Intervento \', codice, \' del \', DATE_FORMAT(IFNULL((SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE in_interventi_tecnici.idintervento=in_interventi.id), data_richiesta), \'%d/%m/%Y\')) AS descrizione FROM in_interventi WHERE '.$id_documento.' IS NULL AND id_contratto IS NULL AND id_ordine IS NULL AND id NOT IN( SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND id NOT IN( SELECT idintervento FROM co_promemoria WHERE idintervento IS NOT NULL) AND idanagrafica='.prepare($record['idanagrafica']); +$query = 'SELECT id, CONCAT(\'Intervento \', codice, \' del \', DATE_FORMAT(IFNULL((SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE in_interventi_tecnici.idintervento=in_interventi.id), data_richiesta), \'%d/%m/%Y\')) AS descrizione FROM in_interventi WHERE id_preventivo IS NULL AND id_contratto IS NULL AND id_ordine IS NULL AND id NOT IN( SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND id NOT IN( SELECT idintervento FROM co_promemoria WHERE idintervento IS NOT NULL) AND idanagrafica=' . prepare($record['idanagrafica']); $count = $dbo->fetchNum($query); @@ -456,14 +470,14 @@ echo '
- {[ "type": "select", "label": "'.tr('Aggiungi un intervento a questo documento').' ('.$count.')", "name": "idintervento", "values": "query='.$query.'", "required":"1" ]} + {[ "type": "select", "label": "' . tr('Aggiungi un intervento a questo documento') . ' (' . $count . ')", "name": "idintervento", "values": "query=' . $query . '", "required":"1" ]}

 

-