2020-02-17 18:43:49 +01:00
< ? php
2020-09-07 15:04:06 +02:00
/*
* OpenSTAManager : il software gestionale open source per l ' assistenza tecnica e la fatturazione
2021-02-18 18:53:28 +01:00
* Copyright ( C ) DevCode s . r . l .
2020-09-07 15:04:06 +02:00
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < https :// www . gnu . org / licenses />.
*/
2020-02-17 18:43:49 +01:00
2020-09-23 18:36:33 +02:00
include_once __DIR__ . '/../../core.php' ;
2020-02-17 18:43:49 +01:00
use Modules\Contratti\Contratto ;
use Modules\Contratti\Stato ;
$contratto = Contratto :: find ( $id_record );
2020-03-31 20:34:31 +02:00
if ( empty ( $contratto )) {
return ;
}
2021-04-02 09:58:11 +02:00
$is_pianificabile = $contratto -> stato -> is_pianificabile && ! empty ( $contratto [ 'data_accettazione' ]) && ! empty ( $contratto [ 'data_conclusione' ]); // Contratto permette la pianificazione
2020-02-25 18:36:57 +01:00
$is_pianificato = false ;
2020-02-17 18:43:49 +01:00
$stati_pianificabili = Stato :: where ( 'is_pianificabile' , 1 ) -> get ();
$elenco_stati = $stati_pianificabili -> implode ( 'descrizione' , ', ' );
echo '
< p > '.tr(' Qui puoi pianificare la suddivisione del budget del contratto in rate uguali fatturabili in modo separato ').' . '.tr(' Questa procedura può essere effettuata solo una volta , e sovrascriverà in modo irreversibile tutte le righe del contratto ').' .</ p >
< p > '.tr(' Per poter procedere , il contratto deve avere < b > data accettazione </ b > e < b > data conclusione </ b > definita ed essere in uno dei seguenti stati : _LINK_ ' , [
'_LINK_' => '<b>' . $elenco_stati . '</b>' ,
]) . ' .</ p >
< div class = " alert alert-warning " >
< i class = " fa fa-warning " ></ i > '.tr("Tutte le righe del contratto vengono convertite in righe generiche, rendendo impossibile risalire ad eventuali articoli utilizzati all' interno del contratto e pertanto non movimentando il magazzino " ).'.
</ div > ' ;
2020-03-31 20:34:31 +02:00
$pianificazioni = $contratto -> pianificazioni ;
if ( ! $pianificazioni -> isEmpty ()) {
echo '
2020-03-31 20:10:18 +02:00
< hr >
< table class = " table table-bordered table-striped table-hover table-condensed " >
< thead >
< tr >
< th width = " 10% " > '.tr(' Scadenza ').' </ th >
< th > '.tr(' Documento ').' </ th >
2020-04-08 16:38:25 +02:00
< th class = " text-center " width = " 15% " > '.tr(' Importo ').' </ th >
2020-03-31 20:10:18 +02:00
< th class = " text-center " width = " 12% " > #</th>
</ tr >
</ thead >
< tbody > ' ;
2020-03-31 20:34:31 +02:00
$previous = null ;
2020-04-20 11:23:01 +02:00
foreach ( $pianificazioni as $pianificazione ) {
2020-03-31 20:34:31 +02:00
echo '
2020-03-31 20:10:18 +02:00
< tr >
< td > ' ;
2020-02-17 18:43:49 +01:00
2020-03-31 20:34:31 +02:00
// Data scadenza
if ( ! $pianificazione -> data_scadenza -> equalTo ( $previous )) {
$previous = $pianificazione -> data_scadenza ;
echo '
2020-03-31 20:10:18 +02:00
< b > '.ucfirst($pianificazione->data_scadenza->formatLocalized(' % B % Y ')).' </ b > ' ;
2020-03-31 20:34:31 +02:00
}
2020-02-17 18:43:49 +01:00
2020-03-31 20:34:31 +02:00
echo '
2020-03-31 20:10:18 +02:00
</ td > ' ;
2020-03-31 20:34:31 +02:00
// Documento collegato
echo '
2020-03-31 20:10:18 +02:00
< td > ' ;
2020-03-31 20:34:31 +02:00
$fattura = $pianificazione -> fattura ;
if ( ! empty ( $fattura )) {
$is_pianificato = true ;
echo '
2020-03-31 20:10:18 +02:00
'.Modules::link(' Fatture di vendita ', $fattura->id, tr(' Fattura num . _NUM_ del _DATE_ ' , [
'_NUM_' => $fattura -> numero_esterno ,
'_DATE_' => dateFormat ( $fattura -> data ),
])) . ' (<i class="' . $fattura -> stato -> icona . '"></i> ' . $fattura -> stato -> descrizione . ')' ;
2020-03-31 20:34:31 +02:00
} else {
2020-03-31 20:10:18 +02:00
echo '
2020-03-31 20:34:31 +02:00
< i class = " fa fa-hourglass-start " ></ i > '.tr(' Non ancora fatturato ' );
}
echo '
2020-04-08 16:38:25 +02:00
</ td >
< td class = " text-right " >
'.moneyFormat($pianificazione->totale_imponibile).'
2020-03-31 20:10:18 +02:00
</ td > ' ;
2020-03-31 20:34:31 +02:00
// Creazione fattura
echo '
2020-03-31 20:10:18 +02:00
< td class = " text-center " >
2020-04-20 11:23:01 +02:00
< button type = " button " class = " btn btn-primary btn-sm '.(!empty( $fattura ) ? 'disabled' : '').' " '.(!empty($fattura) ? ' disabled ' : ' ').' onclick = " crea_fattura('. $pianificazione->id .') " >
2020-03-31 20:10:18 +02:00
< i class = " fa fa-euro " ></ i > '.tr(' Crea fattura ').'
</ button >
</ td >
</ tr > ' ;
2020-03-31 20:34:31 +02:00
}
2020-02-17 18:43:49 +01:00
2020-03-31 20:34:31 +02:00
echo '
2020-03-31 20:10:18 +02:00
</ tbody >
</ table > ' ;
2020-02-17 18:43:49 +01:00
2020-03-31 20:34:31 +02:00
echo '<button type="button" ' . (( $is_pianificato ) ? 'disabled' : '' ) . ' title="' . tr ( 'Annulla le pianificazioni' ) . '" data-id_plugin="' . $id_plugin . '" data-id_record="' . $id_record . '" data-id_module="' . $id_module . '" data-op="reset" data-msg="' . tr ( 'Eliminare la pianificazione?' ) . '" data-button="' . tr ( 'Elimina pianificazione' ) . ' " class= " ask btn btn - danger pull - right tip " data-backto= " record - edit " >
2020-03-31 20:10:18 +02:00
< i class = " fa fa-ban " ></ i > '.tr(' Annulla pianificazioni ').'
</ button > ' ;
2020-02-25 18:36:57 +01:00
2020-03-31 20:34:31 +02:00
echo '<div class="clearfix"></div>' ;
} else {
echo '
2020-03-31 20:10:18 +02:00
< div class = " alert alert-info " >
2021-10-26 16:52:56 +02:00
< i class = " fa fa-info-circle " ></ i > '.tr(' Nessuna pianificazione della fatturazione impostata per questo contratto ').' .
2020-03-31 20:10:18 +02:00
</ div >
< button type = " button " '.(!empty($is_pianificabile) ? ' ' : ' disabled ').' title = " '.tr('Aggiungi una nuova pianificazione').' " data - toggle = " tooltip " class = " btn btn-primary pull-right tip " id = " pianifica " >
< i class = " fa fa-plus " ></ i > '.tr(' Pianifica ').'
</ button >
< div class = " clearfix " ></ div > ' ;
2020-03-31 20:34:31 +02:00
}
2020-02-25 18:36:57 +01:00
2024-01-15 15:30:45 +01:00
echo '
2020-03-31 20:10:18 +02:00
< script type = " text/javascript " >
$ ( " #pianifica " ) . click ( function () {
openModal ( " Nuova pianificazione " , " '. $structure->fileurl ('add_pianificazione.php').'?id_module='. $id_module .'&id_plugin='. $id_plugin .'&id_record='. $id_record .' " );
});
2020-02-17 18:43:49 +01:00
2020-03-31 20:10:18 +02:00
function crea_fattura ( rata ){
openModal ( " Crea fattura " , " '. $structure->fileurl ('crea_fattura.php').'?id_module='. $id_module .'&id_plugin='. $id_plugin .'&id_record='. $id_record .'&rata= " + rata );
}
</ script > ' ;