From dd5e3a0c5e5f4dc357c2f465b36dda6c5b2400ff Mon Sep 17 00:00:00 2001 From: Beppe Date: Mon, 25 Nov 2024 12:30:10 +0100 Subject: [PATCH] refactor: Aggiunta stato esaurimento ore nel selettore contratto --- modules/contratti/ajax/select.php | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/modules/contratti/ajax/select.php b/modules/contratti/ajax/select.php index 3e07ad9b8..1f8b69936 100755 --- a/modules/contratti/ajax/select.php +++ b/modules/contratti/ajax/select.php @@ -19,6 +19,8 @@ include_once __DIR__.'/../../../core.php'; +use Modules\Contratti\Contratto; + switch ($resource) { /* * Opzioni utilizzate: @@ -43,5 +45,35 @@ switch ($resource) { $search_fields[] = '`co_contratti`.`nome` LIKE '.prepare('%'.$search.'%'); } + $query = str_replace('|where|', !empty($where) ? 'WHERE '.implode(' AND ', $where) : '', $query); + $rs = $dbo->fetchArray($query); + + foreach ($rs as $r) { + $contratto = Contratto::find($r['id']); + $ore_erogate = $contratto->interventi->sum('ore_totali'); + $ore_previste = $contratto->getRighe()->where('um', 'ore')->sum('qta'); + $perc_ore = $ore_previste != 0 ? ($ore_erogate * 100) / ($ore_previste ?: 1) : 0; + + if( $ore_previste ){ + if ($perc_ore < 75) { + $color = '#81f794'; + } elseif ($perc_ore <= 100) { + $color = '#f5cb78'; + } + } + + $descrizione = ($ore_previste>0 ? $r['descrizione']." - ".tr('_EROGATE_/_PREVISTE_ ore',[ + '_EROGATE_' => Translator::numberToLocale($ore_erogate,2), + '_PREVISTE_' => Translator::numberToLocale($ore_previste,2), + ]) : $r['descrizione']); + + $results[] = [ + 'id' => $r['id'], + 'text' => $descrizione, + 'descrizione' => $descrizione, + '_bgcolor_' => $color, + ]; + } + break; }