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
2020-08-25 10:07:46 +02:00
use Modules\Anagrafiche\Anagrafica ;
use Modules\Anagrafiche\Sede ;
2017-08-04 16:28:16 +02:00
include_once __DIR__ . '/../../core.php' ;
2020-02-14 17:02:16 +01:00
$block_edit = $record [ 'flag_completato' ];
2020-08-04 18:33:28 +02:00
$module_anagrafiche = Modules :: get ( 'Anagrafiche' );
2020-02-14 17:02:16 +01:00
2021-02-25 15:16:05 +01:00
// Verifica aggiuntive sulla sequenzialità dei numeri
$numero_previsto = verifica_numero_intervento ( $intervento );
2021-05-04 18:22:44 +02:00
2024-01-15 15:30:45 +01:00
if ( ! empty ( $numero_previsto ) && intval ( setting ( 'Verifica numero intervento' ))) {
2021-02-25 15:16:05 +01:00
echo '
2022-01-11 10:50:24 +01:00
< div class = " alert alert-warning alert-dismissable " >
< i class = " fa fa-warning " ></ i > '.tr("E' assente una attività con numero _NUM_ in data precedente o corrispondente al _DATE_ : potrebbero esserci alcuni errori di continuità con la numerazione delle attività " , [
2021-02-25 15:16:05 +01:00
'_DATE_' => dateFormat ( $intervento -> data_richiesta ),
'_NUM_' => '"' . $numero_previsto . '"' ,
]) . ' .</ b >
2022-01-11 10:50:24 +01:00
< button aria - hidden = " true " data - dismiss = " alert " class = " close " type = " button " > × </ button >
2021-02-25 15:16:05 +01:00
</ div > ' ;
}
2020-08-25 10:07:46 +02:00
echo '
2024-02-22 17:03:32 +01:00
< div class = " row " >
< div class = " col-md-2 " > ' ;
if ( $prev ) {
echo '
< a class = " btn btn-info btn-block " href = " '.base_path().'/editor.php?id_module=3&id_record='. $prev .' " >
< i class = " fa fa-arrow-circle-left " ></ i > '.tr(' Precedente ').'
</ a > ' ;
} echo '
</ div >
< div class = " col-md-2 col-md-offset-8 " > ' ;
if ( $next ) {
echo '
< a class = " btn btn-info btn-block " href = " '.base_path().'/editor.php?id_module=3&id_record='. $next .' " >
'.tr(' Successivo ').' < i class = " fa fa-arrow-circle-right " ></ i >
</ a > ' ;
}
echo '
</ div >
</ div >
< br >
2020-08-25 10:07:46 +02:00
< form action = " " method = " post " id = " edit-form " >
2017-08-04 16:28:16 +02:00
< input type = " hidden " name = " op " value = " update " >
< input type = " hidden " name = " backto " value = " record-edit " >
2020-08-25 10:07:46 +02:00
< input type = " hidden " name = " id_record " value = " '. $id_record .' " >
< div class = " row " >
< div class = " col-md-8 " >
<!-- DATI CLIENTE -->
< div class = " panel panel-primary " >
< div class = " panel-heading " >
< h3 class = " panel-title " > '.tr(' Dati cliente ').' </ h3 >
</ div >
< div class = " panel-body " >
<!-- RIGA 1 -->
< div class = " row " >
< div class = " col-md-6 " >
'.Modules::link(' Anagrafiche ', $record[' idanagrafica '], null, null, ' class = " pull-right " ').'
2020-10-06 12:29:14 +02:00
{[ " type " : " select " , " label " : " '.tr('Cliente').' " , " name " : " idanagrafica " , " required " : 1 , " value " : " $idanagrafica $ " , " ajax-source " : " clienti " , " readonly " : " '.( $user['gruppo'] == 'Clienti' ? '1' : $record['flag_completato'] ).' " ]}
2020-08-25 10:07:46 +02:00
</ div >
< div class = " col-md-6 " >
2020-09-01 16:34:35 +02:00
{[ " type " : " select " , " label " : " '.tr('Sede destinazione').' " , " name " : " idsede_destinazione " , " value " : " $idsede_destinazione $ " , " ajax-source " : " sedi " , " select-options " : '.json_encode([' idanagrafica ' => $record[' idanagrafica ']]).' , " placeholder " : " '.tr('Sede legale').' " , " readonly " : " '. $record['flag_completato'] .' " ]}
2020-08-25 10:07:46 +02:00
</ div >
2020-11-09 19:19:55 +01:00
< div class = " col-md-6 " > ' ;
2024-01-15 15:30:45 +01:00
if ( ! empty ( $record [ 'idclientefinale' ])) {
echo '
2020-11-09 19:19:55 +01:00
'.Modules::link(' Anagrafiche ', $record[' idclientefinale '], null, null, ' class = " pull-right " ' );
2024-01-15 15:30:45 +01:00
}
2020-11-09 19:19:55 +01:00
echo '
2020-08-25 10:07:46 +02:00
{[ " type " : " select " , " label " : " '.tr('Per conto di').' " , " name " : " idclientefinale " , " value " : " $idclientefinale $ " , " ajax-source " : " clienti " , " readonly " : " '. $record['flag_completato'] .' " ]}
</ div >
< div class = " col-md-6 " >
2023-11-17 15:14:24 +01:00
{[ " type " : " select " , " label " : " '.tr('Referente').' " , " name " : " idreferente " , " value " : " $idreferente $ " , " ajax-source " : " referenti " , " select-options " : '.json_encode([' idanagrafica ' => $record[' idanagrafica '], ' idclientefinale ' => $record[' idclientefinale '], ' idsede_destinazione ' => $record[' idsede_destinazione ']]).' , " readonly " : " '.intval( $record['flag_completato'] ).' " , " icon-after " : " add|'.Modules::get('Anagrafiche')['id'].'|id_plugin='.Plugins::get('Referenti')['id'].'&id_parent='. $record['idanagrafica'] .' " ]}
2020-08-25 10:07:46 +02:00
</ div >
</ div >
<!-- RIGA 2 -->
< div class = " row " >
< div class = " col-md-6 " > ' ;
if ( ! empty ( $record [ 'idpreventivo' ])) {
echo '
'.Modules::link(' Preventivi ', $record[' idpreventivo '], null, null, ' class = " pull-right " ' );
}
echo '
2022-05-26 17:08:26 +02:00
{[ " type " : " select " , " label " : " '.tr('Preventivo').' " , " name " : " idpreventivo " , " value " : " '. $record['id_preventivo'] .' " , " ajax-source " : " preventivi " , " select-options " : '.json_encode([' idanagrafica ' => $record[' idanagrafica ']]).' , " readonly " : " '. $record['flag_completato'] .' " , " icon-after " : " add|'.Modules::get('Preventivi')['id'].'|pianificabile=1&idanagrafica='. $record['idanagrafica'] .' " ]}
2020-08-25 10:07:46 +02:00
</ div >
< div class = " col-md-6 " > ' ;
2024-01-15 15:30:45 +01:00
$idpreventivo_riga = $dbo -> fetchOne ( 'SELECT id FROM co_promemoria WHERE idintervento=' . prepare ( $id_record ))[ 'id' ];
2020-08-25 10:07:46 +02:00
if ( ! empty ( $record [ 'idcontratto' ])) {
echo '
'.Modules::link(' Contratti ', $record[' idcontratto '], null, null, ' class = " pull-right " ' );
}
echo '
2022-03-07 14:51:53 +01:00
{[ " type " : " select " , " label " : " '.tr('Contratto').' " , " name " : " idcontratto " , " value " : " '. $record['id_contratto'] .' " , " ajax-source " : " contratti " , " select-options " : '.json_encode([' idanagrafica ' => $record[' idanagrafica ']]).' , " readonly " : " '. $record['flag_completato'] .' " , " icon-after " : " add|'.Modules::get('Contratti')['id'].'|pianificabile=1&idanagrafica='. $record['idanagrafica'] .' " ]}
2020-08-25 10:07:46 +02:00
< input type = " hidden " name = " idcontratto_riga " value = " '. $idcontratto_riga .' " >
</ div >
</ div >
2021-03-01 15:01:02 +01:00
< div class = " row " >
< div class = " col-md-6 " > ' ;
2024-01-15 15:30:45 +01:00
$idcontratto_riga = $dbo -> fetchOne ( 'SELECT id FROM co_promemoria WHERE idintervento=' . prepare ( $id_record ))[ 'id' ];
2021-03-01 16:01:19 +01:00
2024-01-15 15:30:45 +01:00
if ( ! empty ( $record [ 'idordine' ])) {
echo '
2021-03-01 15:01:02 +01:00
'.Modules::link(' Ordini cliente ', $record[' idordine '], null, null, ' class = " pull-right " ' );
2024-01-15 15:30:45 +01:00
}
echo '
2021-03-01 15:01:02 +01:00
2021-03-01 16:32:08 +01:00
{[ " type " : " select " , " label " : " '.tr('Ordine').' " , " name " : " idordine " , " value " : " '. $record['id_ordine'] .' " , " ajax-source " : " ordini-cliente " , " select-options " : '.json_encode([' idanagrafica ' => $record[' idanagrafica ']]).' , " readonly " : " '. $record['flag_completato'] .' " ]}
2021-03-01 15:01:02 +01:00
</ div >
2022-05-19 17:42:41 +02:00
< div class = " col-md-6 " > ' ;
2024-01-15 15:30:45 +01:00
if ( $record [ 'idagente' ] != 0 ) {
echo Modules :: link ( 'Anagrafiche' , $record [ 'idagente' ], null , null , 'class="pull-right"' );
}
echo '
2022-05-19 17:42:41 +02:00
{[ " type " : " select " , " label " : " '.tr('Agente').' " , " name " : " idagente " , " ajax-source " : " agenti " , " select-options " : { " idanagrafica " : '.$record[' idanagrafica '].' }, " value " : " $idagente $ " ]}
</ div >
2021-03-01 15:01:02 +01:00
</ div >
2020-08-25 10:07:46 +02:00
</ div >
</ div >
</ div > ' ;
$anagrafica_cliente = $intervento -> anagrafica ;
$sede_cliente = $anagrafica_cliente -> sedeLegale ;
if ( ! empty ( $intervento -> idsede_destinazione )) {
$sede_cliente = Sede :: find ( $intervento -> idsede_destinazione );
}
$anagrafica_azienda = Anagrafica :: find ( setting ( 'Azienda predefinita' ));
$sede_azienda = $anagrafica_azienda -> sedeLegale ;
echo '
2024-01-19 15:19:27 +01:00
< div class = " col-md-4 " >
< div class = " panel panel-primary " >
< div class = " panel-heading " >
< h3 class = " panel-title " >< i class = " fa fa-map " ></ i > '.tr(' Geolocalizzazione ').' </ h3 >
</ div >
< div class = " panel-body " > ' ;
2020-08-25 10:07:46 +02:00
2023-06-15 14:09:04 +02:00
if ( ! empty ( $sede_cliente -> gaddress ) || ( ! empty ( $sede_cliente -> lat ) && ! empty ( $sede_cliente -> lng ))) {
2020-08-25 10:07:46 +02:00
echo '
2024-01-19 15:19:27 +01:00
< div id = " map-edit " style = " width: 100%; " ></ div >
2020-08-25 10:07:46 +02:00
2024-01-19 15:19:27 +01:00
< div class = " clearfix " ></ div >
2020-08-25 10:07:46 +02:00
< br > ' ;
2023-06-29 09:49:21 +02:00
// Navigazione diretta verso l'indirizzo
echo '
< a class = " btn btn-info btn-block " onclick = " $ ( \ '#map-edit \ ').height(235); caricaMappa(); $ (this).hide(); " >
2023-08-03 17:40:09 +02:00
< i class = " fa fa-compass " ></ i > '.tr(' Carica mappa ').'
2023-06-29 09:49:21 +02:00
</ a > ' ;
2020-08-25 10:07:46 +02:00
// Navigazione diretta verso l'indirizzo
echo '
< a class = " btn btn-info btn-block " onclick = " calcolaPercorso() " >
< i class = " fa fa-map-signs " ></ i > '.tr(' Calcola percorso ').'
</ a > ' ;
} else {
// Navigazione diretta verso l'indirizzo
echo '
< a class = " btn btn-info btn-block " onclick = " calcolaPercorso() " >
< i class = " fa fa-map-signs " ></ i > '.tr(' Calcola percorso ').'
</ a > ' ;
2023-06-15 14:09:04 +02:00
// Ricerca diretta su Mappa
2020-08-25 10:07:46 +02:00
echo '
2023-06-15 14:09:04 +02:00
< a class = " btn btn-info btn-block " onclick = " cercaOpenStreetMap() " >
< i class = " fa fa-map-marker " ></ i > '.tr(' Cerca su Mappa ').'
2020-08-25 10:07:46 +02:00
</ a > ' ;
}
echo '
</ div >
</ div >
</ div >
</ div >
2017-08-04 16:28:16 +02:00
2020-08-25 10:07:46 +02:00
< script >
function modificaPosizione () {
openModal ( " '.tr('Modifica posizione').' " , " '. $module->fileurl ('modals/posizione.php').'?id_module='. $id_module .'&id_record='. $id_record .' " );
}
2023-06-15 14:09:04 +02:00
function cercaOpenStreetMap () {
2020-08-25 10:07:46 +02:00
const indirizzo = getIndirizzoAnagrafica ();
2023-10-13 14:57:59 +02:00
const destinazione = ( ! isNaN ( indirizzo [ 0 ]) && ! isNaN ( indirizzo [ 1 ])) ? indirizzo [ 0 ] + " , " + indirizzo [ 1 ] : indirizzo [ 2 ];
if ( isMobile . any ) {
window . open ( " geo: " + destinazione + " ?z=16&q= " + destinazione );
} else {
if ( ! isNaN ( indirizzo [ 0 ]) && ! isNaN ( indirizzo [ 1 ])) {
window . open ( " https://www.openstreetmap.org/?mlat= " + indirizzo [ 0 ] + " &mlon= " + indirizzo [ 1 ] + " #map=12/ " + destinazione + " / " + indirizzo [ 1 ]);
2023-10-13 10:41:31 +02:00
} else {
2023-10-13 14:57:59 +02:00
window . open ( " https://www.openstreetmap.org/search?query= " + indirizzo [ 2 ] + " #map=12 " );
2023-10-13 10:41:31 +02:00
}
2023-06-15 14:09:04 +02:00
}
2020-08-25 10:07:46 +02:00
}
function calcolaPercorso () {
const indirizzo_partenza = getIndirizzoAzienda ();
const indirizzo_destinazione = getIndirizzoAnagrafica ();
2023-10-13 10:41:31 +02:00
2023-10-13 14:57:59 +02:00
const destinazione = ( ! isNaN ( indirizzo_destinazione [ 0 ]) && ! isNaN ( indirizzo_destinazione [ 1 ])) ? indirizzo_destinazione [ 0 ] + " , " + indirizzo_destinazione [ 1 ] : indirizzo_destinazione [ 2 ];
2023-10-13 10:41:31 +02:00
if ( isMobile . any ) {
2023-10-13 14:57:59 +02:00
window . open ( " geo: " + destinazione + " ?z=16&q= " + destinazione );
2023-10-13 10:41:31 +02:00
} else {
2023-10-13 14:57:59 +02:00
window . open ( " https://www.openstreetmap.org/directions?engine=fossgis_osrm_car&route= " + indirizzo_partenza + " ; " + destinazione );
2023-10-13 10:41:31 +02:00
}
2020-08-25 10:07:46 +02:00
}
function getIndirizzoAzienda () {
const indirizzo = " '. $sede_azienda->indirizzo .' " ;
const citta = " '. $sede_azienda->citta .' " ;
const lat = parseFloat ( " '. $sede_azienda->lat .' " );
const lng = parseFloat ( " '. $sede_azienda->lng .' " );
2023-10-13 10:41:31 +02:00
if ( lat && lng ){
return lat + " , " + lng ;
} else {
return " " ;
}
2020-08-25 10:07:46 +02:00
}
function getIndirizzoAnagrafica () {
const indirizzo = " '. $sede_cliente->indirizzo .' " ;
const citta = " '. $sede_cliente->citta .' " ;
const lat = parseFloat ( " '. $sede_cliente->lat .' " );
const lng = parseFloat ( " '. $sede_cliente->lng .' " );
const indirizzo_default = encodeURI ( indirizzo ) + " , " + encodeURI ( citta );
2023-06-15 14:09:04 +02:00
return [ lat , lng , indirizzo_default ];
2020-08-25 10:07:46 +02:00
}
2023-06-29 09:49:21 +02:00
var map = null ;
2020-09-07 10:34:42 +02:00
function caricaMappa () {
2023-06-15 14:09:04 +02:00
const lat = parseFloat ( " '. $sede_cliente->lat .' " );
const lng = parseFloat ( " '. $sede_cliente->lng .' " );
2023-06-29 09:49:21 +02:00
var container = L . DomUtil . get ( " map-edit " );
if ( container . _leaflet_id != null ){
map . eachLayer ( function ( layer ) {
if ( layer instanceof L . Marker ) {
map . removeLayer ( layer );
}
});
} else {
map = L . map ( " map-edit " , {
gestureHandling : true
});
2023-08-04 14:54:28 +02:00
L . tileLayer ( " '.setting('Tile server OpenStreetMap').' " , {
2023-06-29 09:49:21 +02:00
maxZoom : 17 ,
attribution : " © OpenStreetMap "
}) . addTo ( map );
}
2023-06-15 14:09:04 +02:00
var icon = new L . Icon ({
iconUrl : globals . rootdir + " /assets/dist/img/marker-icon.png " ,
shadowUrl : globals . rootdir + " /assets/dist/img/leaflet/marker-shadow.png " ,
iconSize : [ 25 , 41 ],
iconAnchor : [ 12 , 41 ],
popupAnchor : [ 1 , - 34 ],
shadowSize : [ 41 , 41 ]
});
var marker = L . marker ([ lat , lng ], {
icon : icon
}) . addTo ( map );
2023-06-29 09:49:21 +02:00
map . setView ([ lat , lng ], 10 );
2020-09-07 10:34:42 +02:00
}
2020-08-25 10:07:46 +02:00
</ script > ' ;
?>
<!-- DATI INTERVENTO -->
< div class = " panel panel-primary " >
< div class = " panel-heading " >
< h3 class = " panel-title " >< ? php echo tr ( 'Dati intervento' ); ?> </h3>
</ div >
< div class = " panel-body " >
<!-- RIGA 3 -->
< div class = " row " >
< div class = " col-md-3 " >
2021-02-25 15:16:05 +01:00
{[ " type " : " text " , " label " : " <?php echo tr('Numero'); ?> " , " name " : " codice " , " value " : " $codice $ " , " readonly " : " <?php echo $record['flag_completato'] ; ?> " ]}
2020-08-25 10:07:46 +02:00
</ div >
< div class = " col-md-3 " >
{[ " type " : " timestamp " , " label " : " <?php echo tr('Data/ora richiesta'); ?> " , " name " : " data_richiesta " , " required " : 1 , " value " : " $data_richiesta $ " , " readonly " : " <?php echo $record['flag_completato'] ; ?> " ]}
</ div >
< div class = " col-md-3 " >
{[ " type " : " timestamp " , " label " : " <?php echo tr('Data/ora scadenza'); ?> " , " name " : " data_scadenza " , " required " : 0 , " value " : " $data_scadenza $ " , " readonly " : " <?php echo $record['flag_completato'] ; ?> " ]}
</ div >
< div class = " col-md-3 " >
{[ " type " : " select " , " label " : " <?php echo tr('Zona'); ?> " , " name " : " idzona " , " values " : " query=SELECT id, CONCAT_WS( ' - ', nome, descrizione) AS descrizione FROM an_zone ORDER BY nome " , " value " : " $idzona $ " , " placeholder " : " <?php echo tr('Nessuna zona'); ?> " , " extra " : " readonly " , " help " : " <?php echo 'La zona viene definita automaticamente in base al cliente selezionato'; ?>. " ]}
</ div >
</ div >
<!-- RIGA 4 -->
< div class = " row " >
< div class = " col-md-4 " >
2024-02-29 11:56:21 +01:00
{[ " type " : " select " , " label " : " <?php echo tr('Tipo attività'); ?> " , " name " : " idtipointervento " , " required " : 1 , " ajax-source " : " tipiintervento " , " value " : " $id $ " , " readonly " : " <?php echo $record['flag_completato'] ; ?> " ]}
2020-08-25 10:07:46 +02:00
</ div >
< div class = " col-md-4 " >
2024-02-28 15:28:39 +01:00
{[ " type " : " select " , " label " : " <?php echo tr('Stato'); ?> " , " name " : " idstatointervento " , " required " : 1 , " values " : " query=SELECT `in_statiintervento`.`id`, `name` as descrizione, `colore` AS _bgcolor_ FROM `in_statiintervento` LEFT JOIN `in_statiintervento_lang` ON (`in_statiintervento`.`id` = `in_statiintervento_lang`.`id_record` AND `in_statiintervento_lang`.`id_lang` = <?php echo prepare(setting('Lingua')); ?>) WHERE `deleted_at` IS NULL ORDER BY `name` " , " value " : " $id $ " , " class " : " unblockable " ]}
2020-08-25 10:07:46 +02:00
</ div >
2020-08-04 18:33:28 +02:00
< ? php
$tecnici_assegnati = $database -> fetchArray ( 'SELECT id_tecnico FROM in_interventi_tecnici_assegnati WHERE id_intervento = ' . prepare ( $id_record ));
$tecnici_assegnati = array_column ( $tecnici_assegnati , 'id_tecnico' );
echo '
< div class = " col-md-4 " >
2021-04-02 13:52:48 +02:00
{[ " type " : " select " , " label " : " '.tr('Tecnici assegnati').' " , " multiple " : " 1 " , " name " : " tecnici_assegnati[] " , " ajax-source " : " tecnici " , " value " : " '.implode(',', $tecnici_assegnati ).' " , " icon-after " : " add|'. $module_anagrafiche['id'] .'|tipoanagrafica=Tecnico&readonly_tipo=1 " ]}
2024-01-11 17:55:15 +01:00
</ div >
2020-08-25 10:07:46 +02:00
</ div >
2017-08-04 16:28:16 +02:00
2020-08-25 10:07:46 +02:00
<!-- RIGA 5 -->
< div class = " row " >
2024-01-11 17:55:15 +01:00
< div class = " col-lg-6 col-md-12 col-sm-12 col-xs-12 " > ' ;
2024-01-31 14:23:46 +01:00
echo input ([
'type' => 'ckeditor' ,
'label' => tr ( 'Richiesta' ),
'name' => 'richiesta' ,
'id' => 'richiesta_add' ,
'required' => 1 ,
'value' => $record [ 'richiesta' ],
'extra' => 'style=\'max-height:80px;\'' ,
]);
echo '
2020-08-25 10:07:46 +02:00
</ div >
2024-01-11 17:55:15 +01:00
< div class = " col-lg-6 col-md-12 col-sm-12 col-xs-12 " > ' ;
2024-01-31 14:23:46 +01:00
echo input ([
'type' => 'ckeditor' ,
'label' => tr ( 'Descrizione' ),
'name' => 'descrizione' ,
'id' => 'descrizione_add' ,
'value' => $record [ 'descrizione' ],
'extra' => 'style=\'max-height:80px;\'' ,
]);
echo '
2020-08-25 10:07:46 +02:00
</ div >
2024-01-11 17:55:15 +01:00
</ div > ' ;
2024-01-15 15:30:45 +01:00
// Nascondo le note interne ai clienti
if ( $user -> gruppo != 'Clienti' ) {
echo '
2024-01-19 15:19:27 +01:00
< div class = " row " >
< div class = " col-md-12 " >
{[ " type " : " textarea " , " label " : " '.tr('Note interne').' " , " name " : " informazioniaggiuntive " , " class " : " autosize " , " value " : " $informazioniaggiuntive $ " , " extra " : " rows= \ '5 \ ' " ]}
</ div >
</ div > ' ;
2024-01-15 15:30:45 +01:00
}
2023-02-17 10:59:50 +01:00
2024-01-15 15:30:45 +01:00
// Conteggio numero articoli intervento per eventuale blocco della sede di partenza
$articoli = $intervento -> articoli ;
echo '
2024-01-19 15:19:27 +01:00
< div class = " row " >
< div class = " col-md-4 " >
2024-01-11 18:55:24 +01:00
{[ " type " : " select " , " label " : " '.tr('Partenza merce').' " , " name " : " idsede_partenza " , " ajax-source " : " sedi_azienda " , " value " : " $idsede_partenza $ " , " readonly " : " '.(( $record['flag_completato'] || ! $articoli->isEmpty ()) ? 1 : 0).' " ]}
2024-01-19 15:19:27 +01:00
</ div >
2020-08-25 10:07:46 +02:00
</ div >
</ div >
2024-01-11 17:55:15 +01:00
</ div > ' ;
2020-08-25 10:07:46 +02:00
2024-01-15 15:30:45 +01:00
// Visualizzo solo se l'anagrafica cliente è un ente pubblico
if ( ! empty ( $record [ 'idcontratto' ])) {
$contratto = $dbo -> fetchOne ( 'SELECT num_item,codice_cig,codice_cup,id_documento_fe FROM co_contratti WHERE id = ' . prepare ( $record [ 'idcontratto' ]));
$record [ 'id_documento_fe' ] = $contratto [ 'id_documento_fe' ];
$record [ 'codice_cup' ] = $contratto [ 'codice_cup' ];
$record [ 'codice_cig' ] = $contratto [ 'codice_cig' ];
$record [ 'num_item' ] = $contratto [ 'num_item' ];
}
2019-01-10 18:41:25 +01:00
2024-01-15 15:30:45 +01:00
?>
2018-11-13 14:51:19 +01:00
<!-- Fatturazione Elettronica PA -->
2019-02-13 18:27:01 +01:00
< div class = " panel panel-primary <?php echo ( $record['tipo_anagrafica'] == 'Ente pubblico' || $record['tipo_anagrafica'] == 'Azienda') ? 'show' : 'hide'; ?> " >
2018-11-09 12:45:22 +01:00
< div class = " panel-heading " >
2019-01-10 18:41:25 +01:00
< h3 class = " panel-title " >< ? php echo tr ( 'Dati appalto' ); ?>
< ? php if ( ! empty ( $record [ 'idcontratto' ])) {
2024-01-15 15:30:45 +01:00
?>
2019-01-22 17:16:17 +01:00
< span class = " tip " title = " <?php echo tr('E \ ' possibile specificare i dati dell \ 'appalto solo se il cliente è di tipo \ 'Ente pubblico \ ' o \ 'Azienda \ ' e l \ 'attività non risulta già collegata ad un contratto.'); ?> " > < i class = " fa fa-question-circle-o " ></ i ></ span >
2019-01-10 18:41:25 +01:00
</ h3 >
< ? php
2024-01-15 15:30:45 +01:00
} ?>
2018-11-09 12:45:22 +01:00
</ div >
< div class = " panel-body " >
< div class = " row " >
2019-03-12 17:22:25 +01:00
< div class = " col-md-6 " >
{[ " type " : " <?php echo !empty( $record['idcontratto'] ) ? 'span' : 'text'; ?> " , " label " : " <?php echo tr('Identificatore Documento'); ?> " , " name " : " id_documento_fe " , " required " : 0 , " help " : " <?php echo tr('<span>Obbligatorio per valorizzare CIG/CUP. È possible inserire: </span><ul><li>N. determina</li><li>RDO</li><li>Ordine MEPA</li></ul>'); ?> " , " value " : " <?php echo $record['id_documento_fe'] ; ?> " , " maxlength " : 20 , " readonly " : " <?php echo $record['flag_completato'] ; ?> " , " extra " : " " ]}
2018-11-09 12:45:22 +01:00
</ div >
2019-03-12 17:22:25 +01:00
< div class = " col-md-6 " >
2019-02-26 21:37:37 +01:00
{[ " type " : " <?php echo !empty( $record['idcontratto'] ) ? 'span' : 'text'; ?> " , " label " : " <?php echo tr('Numero Riga'); ?> " , " name " : " num_item " , " required " : 0 , " value " : " <?php echo $record['num_item'] ; ?> " , " maxlength " : 15 , " readonly " : " <?php echo $record['flag_completato'] ; ?> " , " extra " : " " ]}
</ div >
2019-03-12 17:22:25 +01:00
</ div >
< div class = " row " >
< div class = " col-md-6 " >
2019-01-10 18:41:25 +01:00
{[ " type " : " <?php echo !empty( $record['idcontratto'] ) ? 'span' : 'text'; ?> " , " label " : " <?php echo tr('Codice CIG'); ?> " , " name " : " codice_cig " , " required " : 0 , " value " : " <?php echo $record['codice_cig'] ; ?> " , " maxlength " : 15 , " readonly " : " <?php echo $record['flag_completato'] ; ?> " , " extra " : " " ]}
2018-11-09 12:45:22 +01:00
</ div >
2019-03-12 17:22:25 +01:00
< div class = " col-md-6 " >
2019-01-10 18:41:25 +01:00
{[ " type " : " <?php echo !empty( $record['idcontratto'] ) ? 'span' : 'text'; ?> " , " label " : " <?php echo tr('Codice CUP'); ?> " , " name " : " codice_cup " , " required " : 0 , " value " : " <?php echo $record['codice_cup'] ; ?> " , " maxlength " : 15 , " readonly " : " <?php echo $record['flag_completato'] ; ?> " , " extra " : " " ]}
2018-11-09 12:45:22 +01:00
</ div >
</ div >
</ div >
</ div >
2023-02-17 10:59:50 +01:00
</ form >
2019-01-10 18:41:25 +01:00
2023-02-17 10:59:50 +01:00
<!-- ORE LAVORO -->
< div class = " panel panel-primary " >
< div class = " panel-heading " >
2024-01-18 20:40:52 +01:00
< h3 class = " panel-title " >< ? php echo tr ( 'Sessioni di lavoro' ); ?> </h3>
2023-02-17 10:59:50 +01:00
</ div >
2018-11-09 12:45:22 +01:00
2023-02-17 10:59:50 +01:00
< div class = " panel-body " >
< ? php
2024-01-15 15:30:45 +01:00
if ( $show_prezzi ) {
echo "
2023-02-17 10:59:50 +01:00
< div class = \ " pull-right \" >
< a class = 'btn btn-default btn-details' onclick = \ " $ ('.extra').removeClass('hide'); $ (this).addClass('hide'); $ ('#dontshowall_dettagli').removeClass('hide'); \" id='showall_dettagli'><i class='fa fa-square-o'></i> <?php echo tr('Visualizza dettaglio costi'); ?></a>
< a class = 'btn btn-info btn-details hide' onclick = \ " $ ('.extra').addClass('hide'); $ (this).addClass('hide'); $ ('#showall_dettagli').removeClass('hide'); \" id='dontshowall_dettagli'><i class='fa fa-check-square-o'></i> <?php echo tr('Visualizza dettaglio costi'); ?></a>
</ div >
< div class = \ " clearfix \" ></div>
< br > " ;
2024-01-15 15:30:45 +01:00
}
?>
2017-08-04 16:28:16 +02:00
2023-02-17 10:59:50 +01:00
< div class = " row " >
< div class = " col-md-12 " id = " tecnici " ></ div >
2017-08-04 16:28:16 +02:00
</ div >
2023-02-17 10:59:50 +01:00
</ div >
</ div >
2017-08-04 16:28:16 +02:00
2023-02-17 10:59:50 +01:00
<!-- RIGHE -->
< div class = " panel panel-primary " >
< div class = " panel-heading " >
< h3 class = " panel-title " >< ? php echo tr ( 'Righe' ); ?> </h3>
</ div >
< div class = " panel-body " >
< div class = " row " >
< div class = " col-md-12 " >
2019-07-12 17:35:14 +02:00
2019-03-29 12:46:17 +01:00
< ? php
2020-02-14 17:02:16 +01:00
if ( ! $block_edit ) {
2021-07-28 10:32:33 +02:00
// Lettura preventivi accettati, in attesa di conferma o in lavorazione
2024-02-26 10:50:43 +01:00
$prev_query = ' SELECT
COUNT ( * ) AS tot
FROM
`co_preventivi`
INNER JOIN `co_statipreventivi` ON `co_preventivi` . `idstato` = `co_statipreventivi` . `id`
INNER JOIN `co_righe_preventivi` ON `co_preventivi` . `id` = `co_righe_preventivi` . `idpreventivo`
WHERE
idanagrafica = '.prepare($record[' idanagrafica ']).' AND `co_statipreventivi` . `is_fatturabile` = 1 AND `default_revision` = 1 AND (( `co_righe_preventivi` . `qta` - `co_righe_preventivi` . `qta_evasa` ) > 0 ) ' ;
2021-07-28 10:32:33 +02:00
$preventivi = $dbo -> fetchArray ( $prev_query )[ 0 ][ 'tot' ];
// Lettura contratti accettati, in attesa di conferma o in lavorazione
2024-02-09 12:08:55 +01:00
$contr_query = 'SELECT COUNT(*) AS tot FROM `co_contratti` WHERE `idanagrafica`=' . prepare ( $record [ 'idanagrafica' ]) . ' AND `idstato` IN (SELECT `id` FROM `co_staticontratti` WHERE `is_fatturabile` = 1) AND `co_contratti`.`id` IN (SELECT `idcontratto` FROM `co_righe_contratti` WHERE `co_righe_contratti`.`idcontratto` = `co_contratti`.`id` AND (`qta` - `qta_evasa`) > 0)' ;
2021-07-28 10:32:33 +02:00
$contratti = $dbo -> fetchArray ( $contr_query )[ 0 ][ 'tot' ];
2020-09-25 11:14:50 +02:00
// Lettura ddt (entrata o uscita)
2024-02-27 11:10:40 +01:00
$ddt_query = ' SELECT
2024-02-27 12:55:27 +01:00
COUNT ( * ) AS tot
FROM
`dt_ddt`
LEFT JOIN `dt_causalet` ON `dt_causalet` . `id` = `dt_ddt` . `idcausalet`
INNER JOIN `dt_statiddt` ON `dt_statiddt` . `id` = `dt_ddt` . `idstatoddt`
LEFT JOIN `dt_statiddt_lang` ON ( `dt_statiddt_lang` . `id_record` = `dt_statiddt` . `id` AND `dt_statiddt_lang` . `id_lang` = '.prepare(setting(' Lingua ')).' )
2024-02-27 15:51:13 +01:00
INNER JOIN `dt_tipiddt` ON `dt_tipiddt` . `id` = `dt_ddt` . `idtipoddt`
2024-02-27 12:55:27 +01:00
INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt` . `idddt` = `dt_ddt` . `id`
WHERE
`idanagrafica` = '.prepare($record[' idanagrafica ']).'
AND `dt_statiddt_lang` . `name` IN ( " Evaso " , " Parzialmente evaso " , " Parzialmente fatturato " )
AND `dt_tipiddt` . `dir` = '.prepare($intervento->direzione).'
AND `dt_causalet` . `is_importabile` = 1
AND ( `dt_righe_ddt` . `qta` - `dt_righe_ddt` . `qta_evasa` ) > 0 ' ;
2020-09-25 11:14:50 +02:00
$ddt = $dbo -> fetchArray ( $ddt_query )[ 0 ][ 'tot' ];
2021-10-29 11:56:39 +02:00
2023-08-04 14:54:28 +02:00
// Form di inserimento riga documento
echo '
2023-02-17 10:59:50 +01:00
< form id = " link_form " action = " " method = " post " >
< input type = " hidden " name = " op " value = " add_articolo " >
< input type = " hidden " name = " backto " value = " record-edit " >
2019-03-29 12:46:17 +01:00
2023-02-17 10:59:50 +01:00
< div class = " row " >
< div class = " col-md-4 " >
{[ " type " : " text " , " label " : " '.tr('Aggiungi un articolo tramite barcode').' " , " name " : " barcode " , " extra " : " autocomplete= \" off \" " , " icon-before " : " <i class= \" fa fa-barcode \" ></i> " , " required " : 0 ]}
</ div >
2019-07-12 17:35:14 +02:00
2023-02-17 10:59:50 +01:00
< div class = " col-md-4 " >
2023-11-27 17:12:45 +01:00
{[ " type " : " select " , " label " : " '.tr('Articolo').' " , " name " : " id_articolo " , " value " : " " , " ajax-source " : " articoli " , " select-options " : '.json_encode([' idsede_partenza ' => $record[' idsede_partenza ']]).' , " icon-after " : " add|'.Modules::get('Articoli')['id'].' " ]}
2023-02-17 10:59:50 +01:00
</ div >
2020-08-03 12:43:30 +02:00
2023-02-17 10:59:50 +01:00
< div class = " col-md-4 " style = " margin-top: 25px " >
< button title = " '.tr('Aggiungi articolo alla vendita').' " class = " btn btn-primary tip " type = " button " onclick = " salvaArticolo() " >
< i class = " fa fa-plus " ></ i > '.tr(' Aggiungi ').'
</ button >
< a class = " btn btn-primary " onclick = " gestioneRiga(this) " data - title = " '.tr('Aggiungi riga').' " >
< i class = " fa fa-plus " ></ i > '.tr(' Riga ').'
</ a >
< div class = " btn-group tip " data - toggle = " tooltip " >
< button type = " button " class = " btn btn-primary dropdown-toggle " data - toggle = " dropdown " aria - haspopup = " true " aria - expanded = " true " >
< i class = " fa fa-list " ></ i > '.tr(' Altro ').'
< span class = " caret " ></ span >
</ button >
< ul class = " dropdown-menu dropdown-menu-right " > ' ;
2023-08-04 14:54:28 +02:00
/*< li >
< a style = " cursor:pointer " onclick = " gestioneDescrizione(this) " data - title = " '.tr('Aggiungi descrizione').' " >
< i class = " fa fa-plus " ></ i > '.tr(' Descrizione ').'
</ a >
</ li >*/
echo '
2023-02-17 10:59:50 +01:00
< li >
< a style = " cursor:pointer " onclick = " gestioneSconto(this) " data - title = " '.tr('Aggiungi sconto/maggiorazione').' " >
< i class = " fa fa-plus " ></ i > '.tr(' Sconto / maggiorazione ').'
</ a >
</ li >
< li title = " '.tr( " L 'aggiunta del documento secondo questa procedura non associa l' attività al relativo consuntivo del documento : utilizzare i campi soprastanti a questo fine " ).'. " >
2023-03-30 16:36:24 +02:00
< a class = " '.(!empty( $preventivi ) ? '' : ' disabled').' " style = " cursor:pointer " data - href = " '. $structure->fileurl ('add_preventivo.php').'?id_module='. $id_module .'&id_record='. $id_record .' " data - toggle = " modal " data - title = " '.tr('Aggiungi Preventivo').' " onclick = " saveForm() " >
2023-02-17 10:59:50 +01:00
< i class = " fa fa-plus " ></ i > '.tr(' Preventivo ').'
</ a >
</ li >
< li title = " '.tr( " L 'aggiunta del documento secondo questa procedura non associa l' attività al relativo consuntivo del documento : utilizzare i campi soprastanti a questo fine " ).'. " >
2023-03-30 16:36:24 +02:00
< a class = " '.(!empty( $contratti ) ? '' : ' disabled').' " style = " cursor:pointer " data - href = " '. $structure->fileurl ('add_contratto.php').'?id_module='. $id_module .'&id_record='. $id_record .' " data - toggle = " modal " data - title = " '.tr('Aggiungi Contratto').' " onclick = " saveForm() " >
2023-02-17 10:59:50 +01:00
< i class = " fa fa-plus " ></ i > '.tr(' Contratto ').'
</ a >
</ li >
< li title = " '.tr('DDT in uscita per il Cliente che si trovano nello stato di Evaso o Parzialmente Evaso con una Causale importabile').'. '.tr( " L 'aggiunta del documento secondo questa procedura non associa l' attività al relativo consuntivo del documento : utilizzare i campi soprastanti a questo fine " ).'. " >
2023-03-30 16:36:24 +02:00
< a class = " '.(!empty( $ddt ) ? '' : ' disabled').' " style = " cursor:pointer " data - href = " '. $structure->fileurl ('add_ddt.php').'?id_module='. $id_module .'&id_record='. $id_record .' " data - toggle = " modal " data - title = " '.tr('Aggiungi Ddt').' " onclick = " saveForm() " >
2023-02-17 10:59:50 +01:00
< i class = " fa fa-plus " ></ i > '.tr(' Ddt ').'
</ a >
</ li >
</ ul >
</ div >
</ div >
</ div >
</ form > ' ;
2019-03-29 12:46:17 +01:00
}
?>
2019-07-12 17:35:14 +02:00
</ div >
2023-02-17 10:59:50 +01:00
</ div >
2019-03-29 12:46:17 +01:00
2023-02-17 10:59:50 +01:00
< div class = " row " >
< div class = " col-md-12 " id = " righe " ></ div >
2017-08-04 16:28:16 +02:00
</ div >
</ div >
2023-02-17 10:59:50 +01:00
</ div >
2017-08-04 16:28:16 +02:00
2023-02-17 10:59:50 +01:00
<!-- COSTI TOTALI -->
< div class = " panel panel-primary " >
< div class = " panel-heading " >
< h3 class = " panel-title " >< ? php echo tr ( 'Costi totali' ); ?> </h3>
</ div >
2017-08-04 16:28:16 +02:00
2023-02-17 10:59:50 +01:00
< div class = " panel-body " >
< div class = " row " >
< div class = " col-md-12 " id = " costi " ></ div >
</ div >
</ div >
</ div >
2017-08-04 16:28:16 +02:00
2018-09-28 16:17:10 +02:00
{( " name " : " filelist_and_upload " , " id_module " : " $id_module $ " , " id_record " : " $id_record $ " , < ? php echo ( $record [ 'flag_completato' ]) ? '"readonly": 1' : '"readonly": 0' ; ?> )}
2017-08-04 16:28:16 +02:00
<!-- EVENTUALE FIRMA GIA ' EFFETTUATA -->
2018-11-21 00:21:09 +01:00
< div class = " text-center row " >
< div class = " col-md-12 " >
< ? php
2018-11-30 16:10:15 +01:00
if ( $record [ 'firma_file' ] == '' ) {
echo '
2018-11-21 00:21:09 +01:00
< div class = " alert alert-warning " >< i class = " fa fa-warning " ></ i > '.tr(' Questo intervento non è ancora stato firmato dal cliente ').' .</ div > ' ;
2018-11-30 16:10:15 +01:00
} else {
echo '
2020-09-23 17:53:19 +02:00
< img src = " '.base_path().'/files/interventi/'. $record['firma_file'] .' " class = " img-thumbnail " >< div >& nbsp ; </ div >
2018-11-21 00:21:09 +01:00
< div class = " col-md-6 col-md-offset-3 alert alert-success " >< i class = " fa fa-check " ></ i > '.tr(' Firmato il _DATE_ alle _TIME_ da _PERSON_ ' , [
2018-11-30 16:10:15 +01:00
'_DATE_' => Translator :: dateToLocale ( $record [ 'firma_data' ]),
'_TIME_' => Translator :: timeToLocale ( $record [ 'firma_data' ]),
2023-08-04 14:54:28 +02:00
'_PERSON_' => ( ! empty ( $record [ 'firma_nome' ]) ? $record [ 'firma_nome' ] : $intervento -> anagrafica -> ragione_sociale ),
2018-11-30 16:10:15 +01:00
]) . '</div>' ;
}
2020-08-03 12:43:30 +02:00
2024-01-31 14:23:46 +01:00
echo '
2018-11-21 00:21:09 +01:00
</ div >
2017-08-04 16:28:16 +02:00
</ div >
2020-08-03 12:43:30 +02:00
{( " name " : " log_email " , " id_module " : " $id_module $ " , " id_record " : " $id_record $ " )}
2017-08-04 16:28:16 +02:00
< script >
2023-03-30 16:36:24 +02:00
async function saveForm () {
// Salvataggio via AJAX
await salvaForm ( " #edit-form " );
2020-08-03 12:43:30 +02:00
}
2020-07-31 14:25:50 +02:00
2020-08-03 12:43:30 +02:00
function gestioneSconto ( button ) {
gestioneRiga ( button , " is_sconto " );
}
2018-02-20 17:57:16 +01:00
2020-08-03 12:43:30 +02:00
function gestioneDescrizione ( button ) {
gestioneRiga ( button , " is_descrizione " );
}
2020-07-31 14:25:50 +02:00
2020-08-03 12:43:30 +02:00
async function gestioneRiga ( button , options ) {
// Salvataggio via AJAX
2021-03-29 18:31:23 +02:00
await salvaForm ( " #edit-form " , {}, button );
// Lettura titolo e chiusura tooltip
2023-02-17 10:59:50 +01:00
let title = $ ( button ) . attr ( " data-title " );
2020-07-31 14:25:50 +02:00
2020-08-03 12:43:30 +02:00
// Apertura modal
2021-03-29 18:31:23 +02:00
options = options ? options : " is_riga " ;
openModal ( title , " '. $structure->fileurl ('row-add.php').'?id_module='. $id_module .'&id_record='. $id_record .'& " + options );
2020-08-03 12:43:30 +02:00
}
2020-09-14 10:49:23 +02:00
/**
* Funzione dedicata al caricamento dinamico via AJAX delle righe del documento .
*/
2023-02-17 10:59:50 +01:00
function caricaRighe ( id_riga ) {
2020-09-14 10:49:23 +02:00
let container = $ ( " #righe " );
localLoading ( container , true );
2020-09-14 11:06:35 +02:00
return $ . get ( " '. $structure->fileurl ('row-list.php').'?id_module='. $id_module .'&id_record='. $id_record .' " , function ( data ) {
container . html ( data );
2020-09-14 10:49:23 +02:00
localLoading ( container , false );
2023-02-17 10:59:50 +01:00
if ( id_riga != null ) {
$ ( " tr[data-id= " + id_riga + " ] " ) . effect ( " highlight " , 1000 );
}
2020-09-14 10:49:23 +02:00
});
}
/**
* Funzione dedicata al caricamento dinamico via AJAX delle sessioni dei tecnici per l\ ' Attività .
*/
function caricaTecnici () {
let container = $ ( " #tecnici " );
localLoading ( container , true );
2020-09-14 11:06:35 +02:00
return $ . get ( " '. $structure->fileurl ('ajax_tecnici.php').'?id_module='. $id_module .'&id_record='. $id_record .' " , function ( data ) {
2023-02-17 10:59:50 +01:00
caricaRighe ( null );
2020-09-14 11:06:35 +02:00
container . html ( data );
2020-09-14 10:49:23 +02:00
localLoading ( container , false );
});
}
/**
* Funzione dedicata al caricamento dinamico via AJAX delle sessioni dei tecnici per l\ ' Attività .
*/
function caricaCosti () {
let container = $ ( " #costi " );
localLoading ( container , true );
2020-09-14 11:06:35 +02:00
return $ . get ( " '. $structure->fileurl ('ajax_costi.php').'?id_module='. $id_module .'&id_record='. $id_record .' " , function ( data ) {
container . html ( data );
2020-09-14 10:49:23 +02:00
localLoading ( container , false );
});
}
$ ( document ) . ready ( function () {
2023-02-17 10:59:50 +01:00
caricaRighe ( null );
2020-09-14 10:49:23 +02:00
caricaTecnici ();
caricaCosti ();
2023-02-17 10:59:50 +01:00
$ ( " #id_articolo " ) . on ( " change " , function ( e ) {
if ( $ ( this ) . val ()) {
var data = $ ( this ) . selectData ();
if ( data . barcode ) {
$ ( " #barcode " ) . val ( data . barcode );
} else {
$ ( " #barcode " ) . val ( " " );
}
}
e . preventDefault ();
setTimeout ( function (){
$ ( " #barcode " ) . focus ();
}, 100 );
});
$ ( " #barcode " ) . focus ();
2020-09-14 10:49:23 +02:00
});
2021-03-01 16:32:08 +01:00
var anagrafica = input ( " idanagrafica " );
var sede = input ( " idsede_destinazione " );
var contratto = input ( " idcontratto " );
var preventivo = input ( " idpreventivo " );
var ordine = input ( " idordine " );
2021-06-22 17:31:10 +02:00
var cliente_finale = input ( " idclientefinale " );
var referente = input ( " idreferente " );
2021-03-01 16:32:08 +01:00
// Gestione della modifica dell\'anagrafica
anagrafica . change ( function () {
updateSelectOption ( " idanagrafica " , $ ( this ) . val ());
session_set ( " superselect,idanagrafica " , $ ( this ) . val (), 0 );
let value = ! $ ( this ) . val ();
let placeholder = value ? " '.tr('Seleziona prima un cliente').' " : " '.tr( " Seleziona un 'opzione").' " ;
2021-06-22 17:31:10 +02:00
referente . getElement ()
. selectReset ( placeholder );
2021-03-01 16:32:08 +01:00
sede . setDisabled ( value )
. getElement () . selectReset ( placeholder );
preventivo . setDisabled ( value )
. getElement () . selectReset ( placeholder );
contratto . setDisabled ( value )
. getElement () . selectReset ( placeholder );
ordine . setDisabled ( value )
. getElement () . selectReset ( placeholder );
input ( " idimpianti " ) . setDisabled ( value );
let data = anagrafica . getData ();
if ( data ) {
input ( " idzona " ) . set ( data . idzona ? data . idzona : " " );
// session_set("superselect,idzona", $(this).selectData().idzona, 0);
// Impostazione del tipo intervento da anagrafica
2021-07-14 17:13:24 +02:00
if ( data . idtipointervento ) {
2021-07-14 17:21:41 +02:00
input ( " idtipointervento " ) . getElement ()
2021-07-14 17:13:24 +02:00
. selectSet ( data . idtipointervento );
2021-07-14 17:21:41 +02:00
}
2021-03-01 16:32:08 +01:00
}
2021-06-22 17:31:10 +02:00
});
2021-07-14 17:13:24 +02:00
2021-06-22 17:31:10 +02:00
//gestione del cliente finale
cliente_finale . change ( function () {
updateSelectOption ( " idclientefinale " , $ ( this ) . val ());
session_set ( " superselect,idclientefinale " , $ ( this ) . val (), 0 );
referente . getElement ()
. selectReset ( " '.tr( " Seleziona un 'opzione").' " );
});
2021-03-01 16:32:08 +01:00
// Gestione della modifica della sede selezionato
sede . change ( function () {
updateSelectOption ( " idsede_destinazione " , $ ( this ) . val ());
session_set ( " superselect,idsede_destinazione " , $ ( this ) . val (), 0 );
input ( " idimpianti " ) . getElement () . selectReset ();
2023-01-13 10:02:43 +01:00
input ( " idreferente " ) . getElement () . selectReset ();
2021-03-01 16:32:08 +01:00
let data = sede . getData ();
if ( data ) {
input ( " idzona " ) . set ( data . idzona ? data . idzona : " " );
// session_set("superselect,idzona", $(this).selectData().idzona, 0);
}
});
// Gestione della modifica dell\'ordine selezionato
ordine . change ( function () {
if ( ordine . get ()) {
contratto . getElement () . selectReset ();
preventivo . getElement () . selectReset ();
}
});
2020-08-03 12:43:30 +02:00
2021-03-01 16:32:08 +01:00
// Gestione della modifica del preventivo selezionato
preventivo . change ( function () {
if ( preventivo . get ()){
contratto . getElement () . selectReset ();
ordine . getElement () . selectReset ();
2020-08-03 12:43:30 +02:00
2021-07-14 17:13:24 +02:00
// Impostazione del tipo intervento da preventivo
2021-08-06 15:27:36 +02:00
var data = $ ( this ) . selectData ()
2021-07-14 17:13:24 +02:00
if ( data . idtipointervento ) {
2021-07-14 17:21:41 +02:00
input ( " idtipointervento " ) . getElement ()
2021-07-14 17:13:24 +02:00
. selectSet ( data . idtipointervento );
2021-07-14 17:21:41 +02:00
}
2020-07-31 14:25:50 +02:00
}
2021-03-01 16:32:08 +01:00
});
2020-08-03 12:43:30 +02:00
2021-03-01 16:32:08 +01:00
// Gestione della modifica del contratto selezionato
contratto . change ( function () {
if ( contratto . get ()){
preventivo . getElement () . selectReset ();
ordine . getElement () . selectReset ();
2020-08-03 12:43:30 +02:00
2021-03-01 16:32:08 +01:00
$ ( " input[name=idcontratto_riga] " ) . val ( " " );
}
});
2020-08-03 12:43:30 +02:00
2021-03-01 16:32:08 +01:00
// Gestione delle modifiche agli impianti selezionati
input ( " idimpianti " ) . change ( function () {
updateSelectOption ( " matricola " , $ ( this ) . val ());
session_set ( " superselect,matricola " , $ ( this ) . val (), 0 );
input ( " componenti " ) . setDisabled ( ! $ ( this ) . val ())
. getElement () . selectReset ();
});
2020-07-31 14:25:50 +02:00
2021-03-01 16:32:08 +01:00
$ ( " #codice_cig, #codice_cup " ) . bind ( " keyup change " , function ( e ) {
if ( $ ( " #codice_cig " ) . val () == " " && $ ( " #codice_cup " ) . val () == " " ) {
$ ( " #id_documento_fe " ) . prop ( " required " , false );
2020-07-31 14:25:50 +02:00
} else {
2021-03-01 16:32:08 +01:00
$ ( " #id_documento_fe " ) . prop ( " required " , true );
2020-07-31 14:25:50 +02:00
}
2021-03-01 16:32:08 +01:00
});
2023-02-17 10:59:50 +01:00
2023-03-30 16:36:24 +02:00
async function salvaArticolo () {
// Salvataggio via AJAX
await salvaForm ( " #edit-form " );
2023-02-17 10:59:50 +01:00
$ ( " #link_form " ) . ajaxSubmit ({
url : globals . rootdir + " /actions.php " ,
data : {
id_module : globals . id_module ,
id_record : globals . id_record ,
ajax : true ,
},
type : " post " ,
beforeSubmit : function ( arr , $form , options ) {
return $form . parsley () . validate ();
},
success : function ( response ){
renderMessages ();
if ( response . length > 0 ){
response = JSON . parse ( response );
swal ({
type : " error " ,
title : " '.tr('Errore').' " ,
text : response . error ,
});
}
$ ( " #barcode " ) . val ( " " );
$ ( " #id_articolo " ) . selectReset ();
2023-04-06 13:11:38 +02:00
content_was_modified = false ;
2023-02-17 10:59:50 +01:00
caricaRighe ( null );
2023-03-14 17:24:57 +01:00
caricaCosti ();
2023-02-17 10:59:50 +01:00
}
});
}
2023-02-27 12:09:59 +01:00
$ ( " #link_form " ) . bind ( " keypress " , function ( e ) {
2023-02-17 10:59:50 +01:00
if ( e . keyCode == 13 ) {
e . preventDefault ();
salvaArticolo ();
return false ;
}
});
2020-08-03 12:43:30 +02:00
</ script > ' ;
2018-09-28 16:17:10 +02:00
2018-09-05 10:05:23 +02:00
// Collegamenti diretti
2018-07-04 12:57:53 +02:00
// Fatture collegate a questo intervento
2024-02-26 15:53:39 +01:00
$elementi = $dbo -> fetchArray ( 'SELECT `co_documenti`.*, `co_tipidocumento_lang`.`name` AS tipo_documento, `co_statidocumento_lang`.`name` AS stato_documento, `co_tipidocumento`.`dir` FROM `co_documenti` INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`idtipodocumento` = `co_documenti`.`idtipodocumento` AND `co_tipidocumento_lang`.`lang` = "' . prepare ( setting ( 'Lingua' )) . '") INNER JOIN `co_statidocumento` ON `co_statidocumento`.`id` = `co_documenti`.`idstatodocumento` LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`idstatodocumento` = `co_documenti`.`idstatodocumento` AND `co_statidocumento_lang`.`lang` = "' . prepare ( setting ( 'Lingua' )) . '") WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idintervento` = ' . prepare ( $id_record ) . ') ORDER BY `data`' );
2017-11-16 18:55:03 +01:00
2018-09-05 10:05:23 +02:00
if ( ! empty ( $elementi )) {
2017-09-15 09:48:56 +02:00
echo '
2018-09-05 10:05:23 +02:00
< div class = " box box-warning collapsable collapsed-box " >
< div class = " box-header with-border " >
< h3 class = " box-title " >< i class = " fa fa-warning " ></ i > '.tr(' Documenti collegati : _NUM_ ' , [
2018-09-19 09:57:30 +02:00
'_NUM_' => count ( $elementi ),
2018-09-05 10:05:23 +02:00
]) . ' </ h3 >
< div class = " box-tools pull-right " >
< button type = " button " class = " btn btn-box-tool " data - widget = " collapse " >< i class = " fa fa-plus " ></ i ></ button >
</ div >
</ div >
< div class = " box-body " >
< ul > ' ;
foreach ( $elementi as $fattura ) {
2020-04-14 17:02:37 +02:00
$descrizione = tr ( '_DOC_ num. _NUM_ del _DATE_ [_STATE_]' , [
2017-09-15 09:48:56 +02:00
'_DOC_' => $fattura [ 'tipo_documento' ],
'_NUM_' => ! empty ( $fattura [ 'numero_esterno' ]) ? $fattura [ 'numero_esterno' ] : $fattura [ 'numero' ],
2020-04-20 10:09:40 +02:00
'_DATE_' => Translator :: dateToLocale ( $fattura [ 'data' ]),
'_STATE_' => $fattura [ 'stato_documento' ],
2017-09-15 09:48:56 +02:00
]);
$modulo = ( $fattura [ 'dir' ] == 'entrata' ) ? 'Fatture di vendita' : 'Fatture di acquisto' ;
$id = $fattura [ 'id' ];
echo '
2018-09-05 10:05:23 +02:00
< li > '.Modules::link($modulo, $id, $descrizione).' </ li > ' ;
2017-09-15 09:48:56 +02:00
}
echo '
</ ul >
2018-09-05 10:05:23 +02:00
</ div >
</ div > ' ;
}
if ( ! empty ( $elementi )) {
echo '
< div class = " alert alert-error " >
'.tr(' Eliminando questo documento si potrebbero verificare problemi nelle altre sezioni del gestionale ').' .
</ div > ' ;
2017-09-15 09:48:56 +02:00
}
2017-11-16 14:27:43 +01:00
?>
< a class = " btn btn-danger ask " data - backto = " record-list " >
2023-09-28 16:08:45 +02:00
< i id = " elimina " class = " fa fa-trash " ></ i > < ? php echo tr ( 'Elimina' ); ?>
2018-01-15 20:28:36 +01:00
</ a >