fetchArray($qp); if (!empty($rsp)) { // Lettura numero di rate e totale già fatturato $rs2 = $dbo->fetchArray('SELECT * FROM co_ordiniservizio_pianificazionefatture'); for ($j = 0; $j < sizeof($rs2); ++$j) { // Leggo quante rate sono pianificate per dividere l'importo delle sedi in modo corretto ++$n_rate[$rs2[$j]['idcontratto']][$rs2[$j]['idzona']]; // Leggo il totale già fatturato per questa zona per toglierlo dalla divisione (totale/n_rate) $rs3 = $dbo->fetchArray('SELECT SUM(subtotale-sconto) AS totale FROM co_righe_documenti WHERE iddocumento='.prepare($rs2[$j]['iddocumento'])); $gia_fatturato[$rs2[$j]['idcontratto']][$rs2[$j]['idzona']] += $rs3[0]['totale']; } // Elenco fatture da emettere foreach ($rsp as $i => $r) { ++$n_rata[$r['idzona']][$r['idcontratto']]; // Se cambia il mese ricreo l'intestazione della tabella if (!isset($rsp[$i - 1]) || $r['mese'] != $rsp[$i - 1]['mese']) { echo "
"; if ($i == 0) { $attr = ''; $class = 'fa-minus-circle'; } else { $attr = 'style="display:none;"'; $class = 'fa-plus-circle'; } echo "

".$mesi[intval(date('m', strtotime($r['data_scadenza']))) - 1].' '.date('Y', strtotime($r['data_scadenza'])).'

'; echo '
'; } // Lettura numero di sedi in cui si sono pianificati ordini di servizio per la zona corrente if (!empty($r['idzona'])) { $n_sedi_pianificate = $dbo->fetchNum('SELECT DISTINCT(idsede) FROM my_impianti WHERE id IN (SELECT idimpianto FROM co_ordiniservizio WHERE idcontratto='.prepare($id_record).') AND idsede IN(SELECT id FROM an_sedi WHERE idzona='.prepare($r['idzona']).')'); // Verifico se ci sono impianti in questa zona legati alla sede legale $n_sedi_pianificate += $dbo->fetchNum('SELECT DISTINCT(idsede) FROM my_impianti WHERE id IN (SELECT idimpianto FROM co_ordiniservizio WHERE idcontratto='.prepare($id_record).') AND idsede=(SELECT idsede FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM co_contratti WHERE id='.prepare($id_record).') AND idzona='.prepare($r['idzona']).') AND idsede=0'); } // Fix nel caso non siano previste sedi pianificate (l'eventuale 0 portava a problemi nel calcolo dell'importo) $n_sedi_pianificate = ($n_sedi_pianificate < 1) ? 1 : $n_sedi_pianificate; /* Importo */ // $importo = ($r['budget_contratto'] * $n_sedi_pianificate / $n_rate[ $r['idcontratto'] ][ $r['idzona'] ]) - ($gia_fatturato[ $r['idcontratto'] ][ $r['idzona'] ] * $n_sedi_pianificate / sizeof($gia_fatturato[ $r['idcontratto'] ][ $r['idzona'] ]) ); $importo = ($r['budget_contratto'] * $n_sedi_pianificate / $n_rate[$r['idcontratto']][$r['idzona']]); // Sede if ($r['zona'] == '') { $zona = tr('Altro'); } else { $zona = $r['zona']; } if ($n_sedi_pianificate == 1) { $n_sedi = tr('1 sede'); } else { $n_sedi = tr('_NUM_ sedi', [ '_NUM_' => $n_sedi_pianificate, ]); } // Visualizzo solo le rate non pagate if ($r['iddocumento'] == 0) { echo " '; // Pulsanti echo ' '; } if (!isset($rsp[$i + 1]) || $r['mese'] != $rsp[$i + 1]['mese']) { echo '
'.tr('Entro il').' '.tr('Ragione sociale').' '.tr('Zona').' '.tr('Impianto').'
".Translator::dateToLocale($r['data_scadenza'])."
rif. ".$r['nome']."
".nl2br($r['ragione_sociale']).' '.$zona.' ('.$n_sedi.') '.Translator::numberToLocale($importo).' '.currency().'
'.Translator::numberToLocale($r['budget_contratto']).' '.currency().' x '.$n_sedi_pianificate.' sedi / '.$n_rate[$r['idcontratto']][$r['idzona']].' rate
'; if (empty($r['idintervento'])) { echo ''; } echo '
'; } } } else { echo '

'.tr('Non ci sono fatture da emettere').'.

'; }