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' ;
2023-10-06 12:44:54 +02:00
$referenti = $dbo -> select ( 'an_referenti' , 'id' , [], [ 'idsede' => $id_record , 'idanagrafica' => $id_parent ]);
$referenti = implode ( ',' , array_column ( $referenti , 'id' ));
2017-08-04 16:28:16 +02:00
echo '
2018-07-09 12:57:55 +02:00
< form action = " " method = " post " role = " form " id = " form_sedi " >
< input type = " hidden " name = " id_plugin " value = " '. $id_plugin .' " >
< input type = " hidden " name = " id_parent " value = " '. $id_parent .' " >
2020-03-06 16:27:02 +01:00
< input type = " hidden " name = " id_record " value = " '. $record['id'] .' " >
2017-08-04 16:28:16 +02:00
< input type = " hidden " name = " backto " value = " record-edit " >
< input type = " hidden " name = " op " value = " updatesede " >
< div class = " row " >
2018-02-20 16:46:23 +01:00
< div class = " col-md-12 " >
2017-09-04 12:02:29 +02:00
{[ " type " : " text " , " label " : " '.tr('Nome sede').' " , " name " : " nomesede " , " required " : 1 , " value " : " $nomesede $ " ]}
2017-08-04 16:28:16 +02:00
</ div >
</ div >
< div class = " row " >
2018-02-20 16:46:23 +01:00
< div class = " col-md-6 " >
2019-03-20 10:16:14 +01:00
{[ " type " : " text " , " label " : " '.tr('Indirizzo').' " , " name " : " indirizzo " , " id " : " indirizzo_ " , " required " : 0 , " value " : " $indirizzo $ " ]}
2017-08-04 16:28:16 +02:00
</ div >
2018-02-20 16:46:23 +01:00
< div class = " col-md-6 " >
2021-08-23 18:03:08 +02:00
{[ " type " : " text " , " label " : " '.( $record['tipo_anagrafica'] == 'Ente pubblico' ? tr('Codice unico ufficio') : tr('Codice destinatario')).' " , " name " : " codice_destinatario " , " required " : 0 , " class " : " text-center text-uppercase alphanumeric-mask " , " value " : " $codice_destinatario $ " , " maxlength " : '.($record[' tipo_anagrafica '] == ' Ente pubblico ' ? ' 6 ' : ' 7 ').' , " help " : " '.tr('<b>Attenzione</b>: per impostare il codice specificare prima \ 'Tipologia \ ' e \ 'Nazione \ ' dell \ 'anagrafica:<br><ul><li>Ente pubblico (B2G/PA) - Codice Univoco Ufficio (www.indicepa.gov.it), 6 caratteri</li><li>Azienda (B2B) - Codice Destinatario, 7 caratteri</li><li>Privato (B2C) - viene utilizzato il Codice Fiscale</li></ul>').' " , " readonly " : " '.intval( $record['iso2'] ? $record['iso2'] != 'IT' : 0).' " ]}
2018-12-07 12:50:42 +01:00
</ div >
2017-08-04 16:28:16 +02:00
</ div >
< div class = " row " >
2018-08-28 17:10:23 +02:00
< div class = " col-md-6 " >
2020-01-14 17:20:19 +01:00
{[ " type " : " text " , " label " : " '.tr('Città').' " , " name " : " citta " , " id " : " citta_ " , " value " : " $citta $ " , " required " : 1 ]}
2017-08-04 16:28:16 +02:00
</ div >
2018-08-28 17:10:23 +02:00
< div class = " col-md-2 " >
2017-09-04 12:02:29 +02:00
{[ " type " : " text " , " label " : " '.tr('C.A.P.').' " , " name " : " cap " , " value " : " $cap $ " ]}
2017-08-04 16:28:16 +02:00
</ div >
2018-08-28 17:10:23 +02:00
< div class = " col-md-2 " >
2020-04-30 16:21:53 +02:00
{[ " type " : " text " , " label " : " '.tr('Provincia').' " , " name " : " provincia " , " value " : " $provincia $ " , " maxlength " : 2 , " class " : " text-center provincia-mask text-uppercase " , " extra " : " onkeyup= \" this.value = this.value.toUpperCase(); \" " ]}
2017-08-04 16:28:16 +02:00
</ div >
2018-08-28 17:10:23 +02:00
< div class = " col-md-2 " >
2017-09-04 12:02:29 +02:00
{[ " type " : " number " , " label " : " '.tr('Km').' " , " name " : " km " , " value " : " $km $ " ]}
2017-08-04 16:28:16 +02:00
</ div >
</ div >
< div class = " row " >
2018-02-20 16:46:23 +01:00
< div class = " col-md-6 " >
2023-08-11 14:53:43 +02:00
{[ " type " : " select " , " label " : " '.tr('Nazione').' " , " name " : " id_nazione " , " value " : " $id_nazione $ " , " ajax-source " : " nazioni " , " required " : 1 ]}
2017-08-04 16:28:16 +02:00
</ div >
2018-02-20 16:46:23 +01:00
< div class = " col-md-6 " >
2023-10-06 12:44:54 +02:00
{[ " type " : " telefono " , " label " : " '.tr('Telefono').' " , " name " : " telefono " , " value " : " $telefono $ " ]}
2017-08-04 16:28:16 +02:00
</ div >
</ div >
< div class = " row " >
2018-02-20 16:46:23 +01:00
< div class = " col-md-6 " >
2017-09-04 12:02:29 +02:00
{[ " type " : " text " , " label " : " '.tr('Fax').' " , " name " : " fax " , " value " : " $fax $ " ]}
2017-08-04 16:28:16 +02:00
</ div >
2018-02-20 16:46:23 +01:00
< div class = " col-md-6 " >
2023-10-06 12:44:54 +02:00
{[ " type " : " telefono " , " label " : " '.tr('Cellulare').' " , " name " : " cellulare " , " value " : " $cellulare $ " ]}
2017-08-04 16:28:16 +02:00
</ div >
</ div >
< div class = " row " >
2018-02-20 16:46:23 +01:00
< div class = " col-md-6 " >
2021-11-22 11:35:20 +01:00
{[ " type " : " text " , " label " : " '.tr('Indirizzo email').' " , " name " : " email " , " value " : " $email $ " , " class " : " email-mask " , " validation " : " email " ]}
2017-08-04 16:28:16 +02:00
</ div >
2021-09-23 17:55:58 +02:00
< div class = " col-md-3 " >
2022-03-08 15:44:13 +01:00
{[ " type " : " checkbox " , " label " : " '.tr('Opt-out per newsletter').' " , " name " : " disable_newsletter " , " id " : " disable_newsletter_m " , " value " : " '.empty( $record['enable_newsletter'] ).' " , " help " : " '.tr( " Blocco per l 'invio delle email.").' " ]}
2021-09-23 17:55:58 +02:00
</ div >
< div class = " col-md-3 " >
2019-11-20 10:24:56 +01:00
{[ " type " : " select " , " label " : " '.tr('Zona').' " , " name " : " idzona " , " ajax-source " : " zone " , " value " : " $idzona $ " , " placeholder " : " '.tr('Nessuna zona').' " , " icon-after " : " add|'.Modules::get('Zone')['id'].' " ]}
2017-08-04 16:28:16 +02:00
</ div >
2019-11-20 00:21:58 +01:00
</ div >
2021-09-23 17:55:58 +02:00
2023-10-06 12:44:54 +02:00
< div class = " row " >
< div class = " col-md-12 " >
{[ " type " : " select " , " multiple " : " 1 " , " label " : " '.tr('Referenti').' " , " name " : " id_referenti[] " , " value " : " '. $referenti .' " , " ajax-source " : " referenti " , " select-options " : { " idanagrafica " : '.$id_parent.' }, " icon-after " : " add|'.Modules::get('Anagrafiche')['id'].'|id_plugin='.Plugins::get('Referenti')['id'].'&id_parent='. $id_parent .' " ]}
</ div >
</ div >
2019-11-20 00:21:58 +01:00
< div class = " row " >
< div class = " col-md-12 " >
{[ " type " : " textarea " , " label " : " '.tr('Note').' " , " name " : " note " , " value " : " $note $ " ]}
</ div >
2023-06-15 14:09:04 +02:00
</ div >
2017-09-18 15:57:37 +02:00
2017-12-20 14:05:14 +01:00
< div class = " row " >
2023-10-06 12:44:54 +02:00
< div class = " col-md-5 " id = " geocomplete " >
2023-06-29 09:49:21 +02:00
{[ " type " : " text " , " label " : " '.tr('Indirizzo Mappa').' " , " name " : " gaddress " , " value " : " $gaddress $ " , " extra " : " data-geo= \ 'formatted_address \ ' " ]}
2017-12-20 14:05:14 +01:00
</ div >
2023-08-03 18:15:54 +02:00
2023-10-06 12:44:54 +02:00
< div class = " col-md-1 " >
2023-08-03 18:15:54 +02:00
< label >& nbsp ; </ label >
< br >< button type = " button " class = " btn btn-primary " onclick = " initGeocomplete(); " >< i class = " fa fa-search " ></ i > '.tr(' Cerca ').' </ button >
</ div >
2017-12-20 14:05:14 +01:00
< div class = " col-md-2 " >
2023-08-04 14:54:28 +02:00
{[ " type " : " text " , " label " : " '.tr('Latitudine').' " , " name " : " lat " , " id " : " lat_ " , " value " : " $lat $ " , " extra " : " data-geo= \ 'lat \ ' " , " class " : " text-right " , " readonly " : true ]}
2023-06-29 09:49:21 +02:00
</ div >
2023-08-03 18:15:54 +02:00
2023-06-29 09:49:21 +02:00
< div class = " col-md-2 " >
2023-08-04 14:54:28 +02:00
{[ " type " : " text " , " label " : " '.tr('Longitudine').' " , " name " : " lng " , " id " : " lng_ " , " value " : " $lng $ " , " extra " : " data-geo= \ 'lng \ ' " , " class " : " text-right " , " readonly " : true ]}
2023-08-03 18:15:54 +02:00
</ div > ' ;
2017-12-20 14:05:14 +01:00
2023-10-06 12:44:54 +02:00
if ( ! empty ( $record [ 'indirizzo' ]) || ( empty ( $record [ 'citta' ]))) {
echo '
< div class = " col-md-2 " >
2023-06-15 14:09:04 +02:00
< label >& nbsp ; </ label >< br >
2023-06-29 09:49:21 +02:00
< a class = " btn btn-info " title = " '.tr('Mostra la sede su Mappa').' " onclick = " cercaOpenStreetMap(); " >& nbsp ; < i class = " fa fa-map-marker " >& nbsp ; </ i ></ a >
2018-02-18 19:53:23 +01:00
2023-08-04 14:54:28 +02:00
< a title = " '.tr('Calcola percorso da sede legale a questa sede').' " class = " btn btn-primary " onclick = " calcolaPercorso(); " >< i class = " fa fa-car " ></ i ></ a >
2023-10-06 12:44:54 +02:00
</ div >
< div class = " clearfix " ></ div >< br > ' ;
}
2017-09-18 15:57:37 +02:00
2023-06-15 14:09:04 +02:00
echo '
2023-10-06 12:44:54 +02:00
</ div > ' ;
2017-09-18 15:57:37 +02:00
2023-06-15 14:09:04 +02:00
if ( ! empty ( $record [ 'gaddress' ]) || ( ! empty ( $record [ 'lat' ]) && ! empty ( $record [ 'lng' ]))) {
2023-08-04 14:54:28 +02:00
echo '
2023-10-06 12:44:54 +02:00
< div id = " map " style = " height:400px; width:100% " ></ div >< br > ' ;
2017-09-18 15:57:37 +02:00
}
2017-08-04 16:28:16 +02:00
2019-11-20 00:21:58 +01:00
// Permetto eliminazione tipo sede solo se non è utilizzata da nessun'altra parte nel gestionale
2022-04-15 17:37:29 +02:00
$elementi = $dbo -> fetchArray ( 'SELECT `zz_users`.`idgruppo` AS `id`, "Utente" AS tipo, NULL AS dir FROM `zz_user_sedi` INNER JOIN `zz_users` ON `zz_user_sedi`.`id_user`=`zz_users`.`id` WHERE `zz_user_sedi`.`idsede` = ' . prepare ( $id_record ) . '
2019-11-20 00:21:58 +01:00
UNION
2022-04-15 17:37:29 +02:00
SELECT `an_referenti` . `id` AS `id` , " Referente " AS tipo , NULL AS dir FROM `an_referenti` WHERE `an_referenti` . `idsede` = '.prepare($id_record).'
2020-09-29 22:50:22 +02:00
UNION
2022-04-15 17:37:29 +02:00
SELECT `co_documenti` . `id` AS `id` , " Fattura " AS tipo , `co_tipidocumento` . `dir` AS dir FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento` . `id` = `co_documenti` . `idtipodocumento` WHERE `co_documenti` . `idsede_destinazione` = '.prepare($id_record).'
2019-11-20 00:21:58 +01:00
ORDER BY `id` ' );
if ( ! empty ( $elementi )) {
echo '
2022-04-15 17:37:29 +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(' Campi collegati : _NUM_ ' , [
2023-08-04 14:54:28 +02:00
'_NUM_' => count ( $elementi ),
]) . ' </ h3 >
2022-04-15 17:37:29 +02:00
< 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 > ' ;
2023-08-04 14:54:28 +02:00
foreach ( $elementi as $elemento ) {
$descrizione = $elemento [ 'tipo' ];
$id = $elemento [ 'id' ];
if ( in_array ( $elemento [ 'tipo' ], [ 'Fattura' ])) {
$modulo = ( $elemento [ 'dir' ] == 'entrata' ) ? 'Fatture di vendita' : 'Fatture di acquisto' ;
$link = Modules :: link ( $modulo , $id , $descrizione );
} elseif ( in_array ( $elemento [ 'tipo' ], [ 'Referente' ])) {
$link = Plugins :: link ( 'Referenti' , $id_parent , $descrizione );
} else {
$link = Modules :: link ( 'Utenti e permessi' , $id , $descrizione );
}
2022-04-15 17:37:29 +02:00
2023-08-04 14:54:28 +02:00
echo '
2022-04-15 17:37:29 +02:00
< li > '.$link.' </ li > ' ;
2023-08-04 14:54:28 +02:00
}
2022-04-15 17:37:29 +02:00
2023-08-04 14:54:28 +02:00
echo '
2022-04-15 17:37:29 +02:00
</ ul >
</ div >
2019-11-20 00:21:58 +01:00
</ div > ' ;
2019-11-22 16:28:03 +01:00
$disabled = 'disabled' ;
2019-11-20 00:21:58 +01:00
}
2017-09-18 15:57:37 +02:00
echo '
2017-08-04 16:28:16 +02:00
<!-- PULSANTI -->
< div class = " row " >
< div class = " col-md-12 " >
2020-09-30 12:40:57 +02:00
< button type = " button " class = " btn btn-danger '. $disabled .' " onclick = " rimuoviSede(this) " >
2017-09-04 12:02:29 +02:00
< i class = " fa fa-trash " ></ i > '.tr(' Elimina ').'
2020-08-31 14:59:07 +02:00
</ button >
2017-08-04 16:28:16 +02:00
2019-11-20 00:21:58 +01:00
< button type = " submit " class = " btn btn-primary pull-right " >< i class = " fa fa-edit " ></ i > '.tr(' Modifica ').' </ button >
2017-08-04 16:28:16 +02:00
</ div >
</ div >
2017-09-18 15:57:37 +02:00
</ form > ' ;
2017-08-04 16:28:16 +02:00
2017-09-18 15:57:37 +02:00
echo '
2022-10-13 15:36:35 +02:00
< script > $ ( document ) . ready ( init ) </ script >
2017-09-18 15:57:37 +02:00
< script >
2023-06-29 09:49:21 +02:00
$ ( " #modals > div " ) . on ( " shown.bs.modal " , function () {
if ( input ( " lat " ) . get () && input ( " lng " ) . get ()) {
caricaMappaSede ();
}
});
2022-10-13 15:36:35 +02:00
function initGeocomplete () {
2023-06-29 09:49:21 +02:00
$ . ajax ({
url : " https://nominatim.openstreetmap.org/search.php?q= " + encodeURI ( input ( " gaddress " ) . get ()) + " &format=jsonv2 " ,
type : " GET " ,
dataType : " JSON " ,
success : function ( data ){
input ( " lat " ) . set ( data [ 0 ] . lat );
input ( " lng " ) . set ( data [ 0 ] . lon );
input ( " gaddress " ) . set ( data [ 0 ] . display_name );
caricaMappaSede ();
}
2022-10-13 15:36:35 +02:00
});
}
2023-06-29 09:49:21 +02:00
var map = null ;
function caricaMappaSede () {
const lat = parseFloat ( input ( " lat " ) . get ());
const lng = parseFloat ( input ( " lng " ) . get ());
var container = L . DomUtil . get ( " map " );
if ( container . _leaflet_id != null ){
map . eachLayer ( function ( layer ) {
if ( layer instanceof L . Marker ) {
map . removeLayer ( layer );
}
});
} else {
map = L . map ( " map " , {
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 );
}
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 );
map . setView ([ lat , lng ], 10 );
}
2020-09-30 12:40:57 +02:00
function rimuoviSede ( button ) {
let hash = window . location . href . split ( " # " )[ 1 ];
confirmDelete ( button ) . then ( function () {
redirect ( globals . rootdir + " /editor.php " , {
backto : " record-edit " ,
hash : hash ,
op : " deletesede " ,
id : " '. $record['id'] .' " ,
id_plugin : " '. $id_plugin .' " ,
id_module : " '. $id_module .' " ,
id_parent : " '. $id_parent .' " ,
});
}) . catch ( swal . noop );
}
2019-11-22 16:28:03 +01:00
</ script > ' ;