2017-08-04 16:28:16 +02:00
< ? php
include_once __DIR__ . '/../../../core.php' ;
2018-09-20 16:42:35 +02:00
// TODO: aggiornare con la funzione months()
2017-08-04 16:28:16 +02:00
$mesi = [
2017-09-04 12:02:29 +02:00
tr ( 'Gennaio' ),
tr ( 'Febbraio' ),
tr ( 'Marzo' ),
tr ( 'Aprile' ),
tr ( 'Maggio' ),
tr ( 'Giugno' ),
tr ( 'Luglio' ),
tr ( 'Agosto' ),
tr ( 'Settembre' ),
tr ( 'Ottobre' ),
tr ( 'Novembre' ),
tr ( 'Dicembre' ),
2017-08-04 16:28:16 +02:00
];
// Righe inserite
2019-03-22 11:35:26 +01:00
//idcontratto IN( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE is_pianificabile = 1) ) AND
2018-12-07 09:29:43 +01:00
$qp = " SELECT *,
2020-02-17 18:43:49 +01:00
( SELECT SUM ( subtotale ) FROM co_righe_contratti WHERE idcontratto = co_fatturazione_contratti . idcontratto ) AS budget_contratto ,
2018-12-07 09:29:43 +01:00
DATE_FORMAT ( data_scadenza , '%m-%Y' ) AS mese ,
( SELECT idanagrafica FROM co_contratti WHERE id = idcontratto ) AS idcliente ,
2019-01-10 18:48:06 +01:00
( SELECT nome FROM co_contratti WHERE id = idcontratto ) AS nome ,
2018-12-07 09:29:43 +01:00
( SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica = ( SELECT idanagrafica FROM co_contratti WHERE id = idcontratto )) AS ragione_sociale ,
2020-02-17 18:43:49 +01:00
( SELECT descrizione FROM an_zone WHERE id = co_fatturazione_contratti . idzona ) AS zona
FROM co_fatturazione_contratti WHERE co_fatturazione_contratti . iddocumento = 0 ORDER BY data_scadenza ASC , idcliente ASC " ;
2017-08-04 16:28:16 +02:00
$rsp = $dbo -> fetchArray ( $qp );
if ( ! empty ( $rsp )) {
// Lettura numero di rate e totale già fatturato
2020-02-17 18:43:49 +01:00
$rs2 = $dbo -> fetchArray ( 'SELECT * FROM co_fatturazione_contratti' );
2017-08-04 16:28:16 +02:00
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 "
< div class = 'title_settings' >
< a class = 'clickable' onclick = \ " $ ('#f_ " . $i . " ').slideToggle(); \" ></a>
</ div > " ;
if ( $i == 0 ) {
$attr = '' ;
$class = 'fa-minus-circle' ;
} else {
$attr = 'style="display:none;"' ;
$class = 'fa-plus-circle' ;
}
echo "
< h4 >
< a class = 'clickable' onclick = \ " if( $ ('#f_ " . $i . " ').css('display') == 'none' ) { $ (this).children('i').removeClass('fa-plus-circle'); $ (this).children('i').addClass('fa-minus-circle'); }else { $ (this).children('i').addClass('fa-plus-circle'); $ (this).children('i').removeClass('fa-minus-circle'); } $ ('#f_ " . $i . " ').slideToggle(); \" >
< i class = 'fa ".$class."' ></ i > " . $mesi [intval(date('m', strtotime( $r['data_scadenza'] ))) - 1].' '.date('Y', strtotime( $r['data_scadenza'] )).'
</ a >
</ h4 > ' ;
echo '
2018-10-22 12:51:42 +02:00
< div id = " f_'. $i .' " '.$attr.' >
2017-08-04 16:28:16 +02:00
< table class = " table table-hover table-striped " >
< thead >
< tr >
2019-01-10 18:48:06 +01:00
< th width = " 25% " > '.tr(' Entro il ').' </ th >
< th width = " 35% " > '.tr(' Ragione sociale ').' </ th >
< th width = " 10% " > '.tr(' Zona ').' </ th >
2017-09-04 12:02:29 +02:00
< th width = " 20% " > '.tr(' Impianto ').' </ th >
2017-08-04 16:28:16 +02:00
< th width = " 10% " ></ th >
</ tr >
</ thead >
< tbody > ' ;
}
2018-12-07 09:29:43 +01:00
// 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' ]) . ')' );
2017-08-04 16:28:16 +02:00
2018-12-07 09:29:43 +01:00
// 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 ;
2017-08-04 16:28:16 +02:00
/*
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' ] == '' ) {
2017-09-04 12:02:29 +02:00
$zona = tr ( 'Altro' );
2017-08-04 16:28:16 +02:00
} else {
$zona = $r [ 'zona' ];
}
if ( $n_sedi_pianificate == 1 ) {
2017-09-04 12:02:29 +02:00
$n_sedi = tr ( '1 sede' );
2017-08-04 16:28:16 +02:00
} else {
2017-09-10 14:35:41 +02:00
$n_sedi = tr ( '_NUM_ sedi' , [
'_NUM_' => $n_sedi_pianificate ,
]);
2017-08-04 16:28:16 +02:00
}
// Visualizzo solo le rate non pagate
if ( $r [ 'iddocumento' ] == 0 ) {
echo "
< tr id = 'fat_".$r[' id ']."' >
2019-01-10 18:48:06 +01:00
< td > " .Translator::dateToLocale( $r['data_scadenza'] ). " < br >< a href = '".$rootdir.' / editor . php ? id_module = '.Modules::get(' Contratti ')[' id '].' & id_record = '.$r[' idcontratto ']."' >< small > rif . " . $r['nome'] . " </ small ></ a ></ td >
2017-08-04 16:28:16 +02:00
< td >
2017-09-22 15:19:59 +02:00
< a href = '".$rootdir.' / editor . php ? id_module = '.Modules::get(' Anagrafiche ')[' id '].' & id_record = '.$r[' idcliente ']."' > " .nl2br( $r['ragione_sociale'] ).'</a>
2017-08-04 16:28:16 +02:00
</ td >
< td > '.$zona.' ( '.$n_sedi.' ) </ td >
< td >
2019-04-13 02:56:39 +02:00
'.moneyFormat($importo).' < br >
< small >< small > '.moneyFormat($r[' budget_contratto ']).' x '.$n_sedi_pianificate.' sedi / '.$n_rate[$r[' idcontratto ']][$r[' idzona ']].' rate </ small ></ small >
2017-08-04 16:28:16 +02:00
</ td > ' ;
// Pulsanti
echo '
< td > ' ;
if ( empty ( $r [ 'idintervento' ])) {
2019-07-29 13:16:55 +02:00
echo '<button type="button" class="btn btn-primary btn-sm" onclick="launch_modal( \'Crea fattura\', \'' . $rootdir . '/modules/contratti/plugins/addfattura.php?idcontratto=' . $r [ 'idcontratto' ] . '&idpianificazione=' . $r [ 'id' ] . '&importo=' . $importo . '&n_rata=' . $n_rata [ $r [ 'idzona' ]][ $r [ 'idcontratto' ]] . ' \ ' ); " >
2018-04-23 18:10:25 +02:00
< i class = " fa fa-euro " ></ i > Crea fattura
2018-06-26 14:30:26 +02:00
</ button > ' ;
2017-08-04 16:28:16 +02:00
}
echo '
</ td >
</ tr > ' ;
}
if ( ! isset ( $rsp [ $i + 1 ]) || $r [ 'mese' ] != $rsp [ $i + 1 ][ 'mese' ]) {
echo '
</ tbody >
</ table >
</ div > ' ;
}
}
} else {
echo '
2017-09-04 12:02:29 +02:00
< p > '.tr(' Non ci sono fatture da emettere ').' .</ p > ' ;
2017-08-04 16:28:16 +02:00
}