2017-08-04 16:28:16 +02:00
< ? php
2020-09-07 15:04:06 +02:00
/*
* OpenSTAManager : il software gestionale open source per l ' assistenza tecnica e la fatturazione
2021-01-20 15:08:51 +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 />.
*/
2017-08-04 16:28:16 +02:00
include_once __DIR__ . '/../../core.php' ;
2024-03-05 16:01:45 +01:00
use Models\Module ;
2024-03-08 16:29:53 +01:00
use Modules\Fatture\Tipo ;
2017-08-04 16:28:16 +02:00
2024-03-05 16:01:45 +01:00
$module = Module :: find ( $id_module );
2017-08-04 16:28:16 +02:00
2024-04-18 17:44:05 +02:00
if ( $module -> getTranslation ( 'title' ) == 'Fatture di vendita' ) {
2017-08-04 16:28:16 +02:00
$dir = 'entrata' ;
2017-09-04 12:02:29 +02:00
$tipo_anagrafica = tr ( 'Cliente' );
2017-08-04 16:28:16 +02:00
} else {
$dir = 'uscita' ;
2017-09-04 12:02:29 +02:00
$tipo_anagrafica = tr ( 'Fornitore' );
2017-08-04 16:28:16 +02:00
}
2023-02-10 14:55:02 +01:00
$id_anagrafica = ! empty ( get ( 'idanagrafica' )) ? get ( 'idanagrafica' ) : '' ;
2018-07-03 11:37:15 +02:00
2024-03-22 15:52:24 +01:00
$idtipodocumento = Tipo :: where ( 'predefined' , 1 ) -> where ( 'dir' , $dir ) -> first () -> id ;
2020-12-29 01:11:11 +01:00
2017-08-04 16:28:16 +02:00
?>
2018-02-23 16:04:50 +01:00
< form action = " " method = " post " id = " add-form " >
2017-08-04 16:28:16 +02:00
< input type = " hidden " name = " op " value = " add " >
< input type = " hidden " name = " backto " value = " record-edit " >
2018-02-18 19:53:23 +01:00
< input type = " hidden " name = " dir " value = " <?php echo $dir ; ?> " >
2017-08-04 16:28:16 +02:00
2022-03-09 10:33:55 +01:00
<!-- Fix creazione da Anagrafica -->
2024-04-11 11:17:03 +02:00
< input type = " hidden " name = " id_record " value = " 0 " >
2022-03-09 10:33:55 +01:00
2017-08-04 16:28:16 +02:00
< div class = " row " >
2020-04-22 18:17:25 +02:00
< ? php
if ( $dir == 'uscita' ) {
echo '
< div class = " col-md-3 " >
{[ " type " : " text " , " label " : " '.tr('N. fattura del fornitore').' " , " required " : 1 , " name " : " numero_esterno " , " class " : " text-center " , " value " : " " ]}
</ div > ' ;
$size = 3 ;
} else {
$size = 6 ;
}
2024-01-15 15:30:45 +01:00
?>
2020-04-22 18:17:25 +02:00
< div class = " col-md-<?php echo $size ; ?> " >
2017-09-04 12:02:29 +02:00
{[ " type " : " date " , " label " : " <?php echo tr('Data'); ?> " , " name " : " data " , " required " : 1 , " value " : " -now- " ]}
2017-08-04 16:28:16 +02:00
</ div >
2018-03-07 23:50:28 +01:00
< div class = " col-md-6 " >
2024-06-11 16:58:27 +02:00
{[ " type " : " select " , " label " : " <?php echo $tipo_anagrafica ; ?> " , " name " : " idanagrafica " , " id " : " idanagrafica_add " , " required " : 1 , " ajax-source " : " <?php echo $module->getTranslation ('title') == 'Fatture di vendita' ? 'clienti' : 'fornitori'; ?> " , " value " : " <?php echo $id_anagrafica ; ?> " , " icon-after " : " add|<?php echo Module::where('name', 'Anagrafiche')->first()->id; ?>|tipoanagrafica=<?php echo $tipo_anagrafica ; ?> " ]}
2017-08-04 16:28:16 +02:00
</ div >
2018-03-07 23:50:28 +01:00
</ div >
< div class = " row " >
< div class = " col-md-6 " >
2024-04-18 17:44:05 +02:00
{[ " type " : " select " , " label " : " <?php echo tr('Tipo documento'); ?> " , " name " : " idtipodocumento " , " required " : 1 , " values " : " query=SELECT `co_tipidocumento`.`id`, CONCAT(`co_tipidocumento`.`codice_tipo_documento_fe`, ' - ', `co_tipidocumento_lang`.`title`) AS descrizione, `co_tipidocumento`.`id_segment`, `zz_segments_lang`.`title` as name_segment FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = <?php echo prepare(Models \ Locale::getDefault()->id); ?>) INNER JOIN `zz_segments` ON `zz_segments`.`id` = `co_tipidocumento`.`id_segment` LEFT JOIN `zz_segments_lang` ON (`zz_segments`.`id` = `zz_segments_lang`.`id_record` AND `zz_segments_lang`.`id_lang` = <?php echo prepare(Models \ Locale::getDefault()->id); ?>) WHERE `co_tipidocumento`.`enabled` = 1 AND `co_tipidocumento`.`dir` = '<?php echo $dir ; ?>' ORDER BY `co_tipidocumento`.`codice_tipo_documento_fe` " , " value " : " <?php echo $idtipodocumento ; ?> " ]}
2017-08-04 16:28:16 +02:00
</ div >
2018-09-24 18:10:16 +02:00
2018-03-08 00:45:32 +01:00
< div class = " col-md-6 " >
2024-03-08 16:29:53 +01:00
{[ " type " : " select " , " label " : " <?php echo tr('Sezionale'); ?> " , " name " : " id_segment " , " required " : 1 , " ajax-source " : " segmenti " , " select-options " : < ? php echo json_encode ([ 'id_module' => $id_module , 'is_sezionale' => 1 ]); ?> , "value": "<?php echo Tipo::where('id', $idtipodocumento)->where('dir', $dir)->first()->id_segment; ?>" ]}
2018-03-08 00:45:32 +01:00
</ div >
2017-08-04 16:28:16 +02:00
</ div >
2023-03-21 15:05:26 +01:00
< ? php
2024-01-15 15:30:45 +01:00
if ( $dir == 'entrata' ) {
echo '
2024-05-20 11:13:08 +02:00
< br >
2023-03-21 15:05:26 +01:00
< div id = " info " class = " hidden " >
< div class = " row " >
< div class = " col-md-6 " >
2024-05-16 18:02:50 +02:00
< div id = " info-title-bozza " class = " card " >
2023-03-21 15:05:26 +01:00
2024-05-16 18:02:50 +02:00
< div class = " card-header with-border " >
< h3 class = " card-title " > '.tr(' Fatture in stato Bozza del cliente ').' </ h3 >
< div class = " card-tools pull-right " >
2024-05-23 17:51:21 +02:00
< button type = " button " class = " btn btn-tool " data - card - widget = " collapse " >
2023-03-21 15:05:26 +01:00
< i class = " fa fa-minus " ></ i >
</ button >
</ div >
</ div >
2024-05-16 18:02:50 +02:00
< div class = " card-body " id = " info-content-bozza " ></ div >
2021-06-28 17:14:54 +02:00
</ div >
</ div >
2023-03-21 15:05:26 +01:00
< div class = " col-md-6 " >
2024-05-16 18:02:50 +02:00
< div id = " info-title-scadute " class = " card " >
< div class = " card-header with-border " >
< h3 class = " card-title " > '.tr(' Fatture con termini di pagamento trascorsi ').' </ h3 >
< div class = " card-tools pull-right " >
2024-05-23 17:51:21 +02:00
< button type = " button " class = " btn btn-tool " data - card - widget = " collapse " >
2023-03-21 15:05:26 +01:00
< i class = " fa fa-minus " ></ i >
</ button >
</ div >
</ div >
2024-05-16 18:02:50 +02:00
< div class = " card-body " id = " info-content-scadute " ></ div >
2021-06-28 17:14:54 +02:00
</ div >
</ div >
</ div >
2020-03-16 10:04:49 +01:00
</ div >
2023-01-17 11:34:14 +01:00
2023-03-21 15:05:26 +01:00
<!-- DETTAGLI CLIENTE -->
2024-05-16 18:02:50 +02:00
< div class = " card card-info collapsable collapsed-card " >
< div class = " card-header with-border " >
< h3 class = " card-title " > '.tr(' Dettagli cliente ').' </ h3 >
< div class = " card-tools pull-right " >
2024-05-23 17:51:21 +02:00
< button type = " button " class = " btn btn-tool " data - card - widget = " collapse " >
2023-03-21 15:05:26 +01:00
< i class = " fa fa-plus " ></ i >
</ button >
</ div >
</ div >
2024-05-16 18:02:50 +02:00
< div class = " card-body " id = " dettagli_cliente " >
2023-08-04 14:54:28 +02:00
'.tr(' Seleziona prima un cliente ').' ...
2023-03-21 15:05:26 +01:00
</ div >
</ div > ' ;
2024-01-15 15:30:45 +01:00
}
?>
2023-01-17 11:34:14 +01:00
2017-08-04 16:28:16 +02:00
<!-- PULSANTI -->
< div class = " row " >
< div class = " col-md-12 text-right " >
2017-09-04 12:02:29 +02:00
< button type = " submit " class = " btn btn-primary " >< i class = " fa fa-plus " ></ i > < ? php echo tr ( 'Aggiungi' ); ?> </button>
2017-08-04 16:28:16 +02:00
</ div >
</ div >
</ form >
2020-03-16 10:04:49 +01:00
< ? php
if ( $dir == 'entrata' ) {
echo '
< script >
$ ( document ) . ready ( function () {
2023-01-17 11:34:14 +01:00
if ( $ ( " #idanagrafica_add " ) . val ()){
2024-05-16 18:02:50 +02:00
// Carico nel card i dettagli del cliente
2023-01-17 11:34:14 +01:00
$ . get ( " '.base_path().'/ajax_complete.php?module=Interventi&op=dettagli&id_anagrafica= " + $ ( " #idanagrafica_add " ) . val (), function ( data ){
$ ( " #dettagli_cliente " ) . html ( data );
});
}
2020-03-16 10:04:49 +01:00
$ ( " #idanagrafica_add " ) . change ( function () {
2020-08-17 09:47:18 +02:00
let data = $ ( this ) . selectData ();
2020-08-06 11:34:32 +02:00
2020-06-01 14:30:25 +02:00
if ( data !== undefined ) {
2021-06-28 17:14:54 +02:00
$ ( " #info " ) . removeClass ( " hidden " );
2020-03-16 10:04:49 +01:00
2020-06-01 14:30:25 +02:00
$ . ajax ({
url : globals . rootdir + " /actions.php " ,
type : " POST " ,
dataType : " json " ,
data : {
id_module : globals . id_module ,
id_anagrafica : data . id ,
op : " fatture_bozza " ,
},
success : function ( results ) {
2021-06-28 17:14:54 +02:00
2024-05-16 18:02:50 +02:00
$ ( " #info " ) . removeClass ( " card-info " );
$ ( " #info " ) . removeClass ( " card-warning " );
2020-06-01 14:30:25 +02:00
if ( results . length === 0 ){
2024-05-16 18:02:50 +02:00
$ ( " #info-title-bozza " ) . addClass ( " card-info " );
$ ( " #info-title-bozza " ) . removeClass ( " card-warning " );
2021-06-28 17:14:54 +02:00
$ ( " #info-content-bozza " ) . html ( " <p>'.tr('Per il cliente selezionato non è presente alcuna fattura in stato Bozza').'</p> " )
2020-06-01 14:30:25 +02:00
} else {
2020-08-17 09:47:18 +02:00
let content = " " ;
2020-06-01 14:30:25 +02:00
results . forEach ( function ( item ) {
content += " <li> " + item + " </li> " ;
});
2024-05-16 18:02:50 +02:00
$ ( " #info-title-bozza " ) . addClass ( " card-warning " );
$ ( " #info-title-bozza " ) . removeClass ( " card-info " );
2021-06-28 17:14:54 +02:00
$ ( " #info-content-bozza " ) . html ( " <p>'.tr('Attenzione: per il cliente selezionato sono presenti le seguenti fatture in stato Bozza').':</p><ul> " + content + " </ul> " )
2020-06-01 14:30:25 +02:00
}
2020-03-16 10:04:49 +01:00
}
2020-06-01 14:30:25 +02:00
});
2021-06-28 17:14:54 +02:00
$ . ajax ({
url : globals . rootdir + " /actions.php " ,
type : " POST " ,
dataType : " json " ,
data : {
id_module : globals . id_module ,
id_anagrafica : data . id ,
op : " fatture_scadute " ,
},
success : function ( results ) {
2024-05-16 18:02:50 +02:00
$ ( " #info " ) . removeClass ( " card-info " );
$ ( " #info " ) . removeClass ( " card-warning " );
2021-06-28 17:14:54 +02:00
if ( results . length === 0 ){
2024-05-16 18:02:50 +02:00
$ ( " #info-title-scadute " ) . addClass ( " card-info " );
$ ( " #info-title-scadute " ) . removeClass ( " card-warning " );
2021-06-28 17:14:54 +02:00
$ ( " #info-content-scadute " ) . html ( " <p>'.tr('Per il cliente selezionato non è presente alcuna fattura Scaduta').'</p> " )
} else {
let content = " " ;
results . forEach ( function ( item ) {
content += " <li> " + item + " </li> " ;
});
2024-05-16 18:02:50 +02:00
$ ( " #info-title-scadute " ) . addClass ( " card-warning " );
$ ( " #info-title-scadute " ) . removeClass ( " card-info " );
2021-06-28 17:14:54 +02:00
$ ( " #info-content-scadute " ) . html ( " <p>'.tr('Attenzione: per il cliente selezionato le seguenti fatture presentamento una o più rate scadute').':</p><ul> " + content + " </ul> " )
}
}
});
2024-05-16 18:02:50 +02:00
// Carico nel card i dettagli del cliente
2023-01-17 11:34:14 +01:00
$ . get ( " '.base_path().'/ajax_complete.php?module=Interventi&op=dettagli&id_anagrafica= " + data . id , function ( data ){
$ ( " #dettagli_cliente " ) . html ( data );
});
2021-06-28 17:14:54 +02:00
} else {
2023-01-17 11:34:14 +01:00
$ ( " #dettagli_cliente " ) . html ( " '.tr('Seleziona prima un cliente').'... " );
2021-06-28 17:14:54 +02:00
$ ( " #info " ) . addClass ( " hidden " );
return ;
2020-06-01 14:30:25 +02:00
}
2023-04-20 15:22:29 +02:00
});
input ( " idtipodocumento " ) . change ( function () {
2023-09-22 15:51:53 +02:00
$ ( " #id_segment " ) . selectSetNew ( $ ( this ) . selectData () . id_segment , $ ( this ) . selectData () . name_segment );
2023-04-20 15:22:29 +02:00
$ . ajax ({
url : globals . rootdir + " /actions.php " ,
type : " POST " ,
dataType : " json " ,
data : {
id_module : globals . id_module ,
idtipodocumento : input ( this ) . get (),
op : " check_tipodocumento " ,
},
success : function ( result ) {
if ( result ){
input ( " idanagrafica " ) . getElement () . selectSetNew ( result . id , result . ragione_sociale );
input ( " idanagrafica " ) . disable ();
} else {
input ( " idanagrafica " ) . enable ();
}
}
});
});
2020-03-16 10:04:49 +01:00
})
</ script > ' ;
}