Aggiunta header.php in ddt
This commit is contained in:
parent
e8f93d0620
commit
8a94a728a6
|
@ -119,8 +119,8 @@ echo '
|
|||
|
||||
<p style="margin:3px 0;"><i class="fa '.(count($interventi_programmati) == 0 ? 'fa-clock-o text-success' : 'fa-clock-o text-warning').'"></i> '.(count($interventi_programmati) == 0 ? tr('Non sono presenti attività programmate') : 'Attività aperte:');
|
||||
if (count($interventi_programmati) != 0) {
|
||||
foreach ($interventi_programmati as $contratto_programmato) {
|
||||
echo ' <a class="btn btn-default btn-xs" href="'.base_path().'/editor.php?id_module='.Modules::get('Interventi')['id'].'&id_record='.$contratto_programmato->id.'" target="_blank">'.$contratto_programmato->codice.' ('.(new Carbon($contratto_programmato->data_richiesta))->diffForHumans().')</a>';
|
||||
foreach ($interventi_programmati as $intervento_programmato) {
|
||||
echo ' <a class="btn btn-default btn-xs" href="'.base_path().'/editor.php?id_module='.Modules::get('Interventi')['id'].'&id_record='.$intervento_programmato->id.'" target="_blank">'.$intervento_programmato->codice.' ('.(new Carbon($intervento_programmato->data_richiesta))->diffForHumans().')</a>';
|
||||
}
|
||||
}
|
||||
echo '
|
||||
|
|
|
@ -79,125 +79,7 @@ if ($righe_vuote) {
|
|||
</div>';
|
||||
}
|
||||
|
||||
?>
|
||||
<form action="" method="post" id="edit-form">
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
<input type="hidden" name="op" value="update">
|
||||
<input type="hidden" name="id_record" value="<?php echo $id_record; ?>">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<!-- INTESTAZIONE -->
|
||||
<div class="card card-primary">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title"><?php echo tr('Intestazione'); ?></h3>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<?php
|
||||
if ($dir == 'uscita') {
|
||||
echo '
|
||||
<div class="col-md-6">
|
||||
{[ "type": "span", "label": "'.tr('Numero ddt').'", "class": "text-center", "value": "$numero$" ]}
|
||||
</div>';
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "text", "label": "<?php echo tr('Numero secondario'); ?>", "name": "numero_esterno", "class": "text-center", "value": "$numero_esterno$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "date", "label": "<?php echo tr('Data'); ?>", "name": "data", "required": 1, "value": "$data$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<?php
|
||||
if (setting('Cambia automaticamente stato ddt fatturati')) {
|
||||
$id_stato_fatt = (new Stato())->getByField('title', 'Fatturato', Models\Locale::getPredefined()->id);
|
||||
$id_stato_parz_fatt = (new Stato())->getByField('title', 'Parzialmente fatturato', Models\Locale::getPredefined()->id);
|
||||
|
||||
if ($ordine->stato->id == $id_stato_fatt || $ordine->stato->id == $id_stato_parz_fatt) {
|
||||
?>
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatoddt", "required": 1, "values": "query=SELECT `dt_statiddt`.*, `dt_statiddt_lang`.`title` as descrizione, `colore` AS _bgcolor_ FROM `dt_statiddt` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang`= <?php echo prepare(Models\Locale::getDefault()->id); ?>) ORDER BY `title`", "value": "$idstatoddt$", "extra": "readonly", "class": "unblockable" ]}
|
||||
<?php
|
||||
} else {
|
||||
$id_stato_bozza = (new Stato())->getByField('title', 'Bozza', Models\Locale::getPredefined()->id);
|
||||
$id_stato_evaso = (new Stato())->getByField('title', 'Evaso', Models\Locale::getPredefined()->id);
|
||||
$id_stato_parz_evaso = (new Stato())->getByField('title', 'Parzialmente evaso', Models\Locale::getPredefined()->id);
|
||||
?>
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatoddt", "required": 1, "values": "query=SELECT `dt_statiddt`.*, `dt_statiddt_lang`.`title` as descrizione, `colore` AS _bgcolor_ FROM `dt_statiddt` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang`= <?php echo prepare(Models\Locale::getDefault()->id); ?>) WHERE `dt_statiddt`.`id` IN (<?php echo implode(',', [$id_stato_bozza, $id_stato_evaso, $id_stato_parz_evaso]); ?>) ORDER BY `title`", "value": "$idstatoddt$", "class": "unblockable" ]}
|
||||
<?php
|
||||
}
|
||||
} else {
|
||||
?>
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatoddt", "required": 1, "values": "query=SELECT `dt_statiddt`.*, `colore` AS _bgcolor_, `dt_statiddt_lang`.`title` as descrizione FROM `dt_statiddt` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang`= <?php echo prepare(Models\Locale::getDefault()->id); ?>) ORDER BY `title`", "value": "$idstatoddt$", "class": "unblockable" ]}
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
if ($dir == 'entrata') {
|
||||
echo '
|
||||
<div class="col-md-6">';
|
||||
if ($record['idagente'] != 0) {
|
||||
echo Modules::link('Anagrafiche', $record['idagente'], null, null, 'class="pull-right"');
|
||||
}
|
||||
echo '
|
||||
{[ "type": "select", "label": "'.tr('Agente').'", "name": "idagente", "ajax-source": "agenti", "select-options": {"idanagrafica": '.$record['idanagrafica'].'}, "value": "$idagente$" ]}
|
||||
</div>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<?php echo Modules::link('Anagrafiche', $record['idanagrafica'], null, null, 'class="pull-right"'); ?>
|
||||
{[ "type": "select", "label": "<?php echo ($dir == 'uscita') ? tr('Mittente') : tr('Destinatario'); ?>", "name": "idanagrafica", "required": 1, "value": "$idanagrafica$", "ajax-source": "clienti_fornitori" ]}
|
||||
</div>
|
||||
<?php
|
||||
echo '
|
||||
<div class="col-md-6">';
|
||||
if (!empty($record['idreferente'])) {
|
||||
echo Plugins::link('Referenti', $record['idanagrafica'], null, null, 'class="pull-right"');
|
||||
}
|
||||
echo '
|
||||
{[ "type": "select", "label": "'.tr('Referente').'", "name": "idreferente", "value": "$idreferente$", "ajax-source": "referenti", "select-options": {"idanagrafica": '.$record['idanagrafica'].', "idsede_destinazione": '.$record['idsede_destinazione'].'} ]}
|
||||
</div>';
|
||||
|
||||
// Conteggio numero articoli ddt in uscita
|
||||
$articolo = $dbo->fetchArray('SELECT `mg_articoli`.`id` FROM ((`mg_articoli` INNER JOIN `dt_righe_ddt` ON `mg_articoli`.`id`=`dt_righe_ddt`.`idarticolo`) INNER JOIN `dt_ddt` ON `dt_ddt`.`id`=`dt_righe_ddt`.`idddt`) WHERE `dt_ddt`.`id`='.prepare($id_record));
|
||||
$id_modulo_anagrafiche = (new Module())->getByField('title', 'Anagrafiche', Models\Locale::getPredefined()->id);
|
||||
$id_plugin_sedi = (new Plugin())->getByField('title', 'Sedi', Models\Locale::getPredefined()->id);
|
||||
if ($dir == 'entrata') {
|
||||
echo '
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "'.tr('Partenza merce').'", "name": "idsede_partenza", "ajax-source": "sedi_azienda", "value": "$idsede_partenza$", "help": "'.tr("Sedi di partenza dell'azienda").'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "'.tr('Destinazione merce').'", "name": "idsede_destinazione", "ajax-source": "sedi", "select-options": {"idanagrafica": '.$record['idanagrafica'].'}, "value": "$idsede_destinazione$", "help": "'.tr('Sedi del destinatario').'", "icon-after": "add|'.$id_modulo_anagrafiche.'|id_plugin='.$id_plugin_sedi.'&id_parent='.$record['idanagrafica'].'||'.(intval($block_edit) ? 'disabled' : '').'" ]}
|
||||
</div>';
|
||||
} else {
|
||||
echo '
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "'.tr('Partenza merce').'", "name": "idsede_partenza", "ajax-source": "sedi", "select-options": {"idanagrafica": '.$record['idanagrafica'].'}, "value": "$idsede_partenza$", "help": "'.tr('Sedi del mittente').'", "icon-after": "add|'.$id_modulo_anagrafiche.'|id_plugin='.$id_plugin_sedi.'&id_parent='.$record['idanagrafica'].'||'.(intval($block_edit) ? 'disabled' : '').'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "'.tr('Destinazione merce').'", "name": "idsede_destinazione", "ajax-source": "sedi_azienda", "value": "$idsede_destinazione$", "help": "'.tr("Sedi di arrivo dell'azienda").'" ]}
|
||||
</div>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<?php
|
||||
$sede_anagrafica = $ddt->anagrafica->sedeLegale;
|
||||
$sede_anagrafica = $ddt->anagrafica->sedeLegale;
|
||||
$id_sede_anagrafica = $dir == 'entrata' ? $ddt->idsede_destinazione : $ddt->idsede_partenza;
|
||||
if (!empty($id_sede_anagrafica)) {
|
||||
$sede_anagrafica = Sede::find($id_sede_anagrafica);
|
||||
|
@ -209,134 +91,142 @@ $id_sede_azienda = $dir == 'entrata' ? $ddt->idsede_partenza : $ddt->idsede_dest
|
|||
if (!empty($id_sede_azienda)) {
|
||||
$sede_azienda = Sede::find($id_sede_azienda);
|
||||
}
|
||||
?>
|
||||
|
||||
<!-- GEOLOCALIZZAZIONE -->
|
||||
<div class="card card-primary">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title"><i class="fa fa-map"></i> <?php echo tr('Geolocalizzazione'); ?></h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<?php
|
||||
if (!empty($sede_anagrafica->gaddress) || (!empty($sede_anagrafica->lat) && !empty($sede_anagrafica->lng))) {
|
||||
echo '
|
||||
<div id="map-edit" style="width: 100%;"></div>
|
||||
echo'
|
||||
<form action="" method="post" id="edit-form">
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
<input type="hidden" name="op" value="update">
|
||||
<input type="hidden" name="id_record" value="'.$id_record.'">
|
||||
|
||||
<div class="clearfix"></div>
|
||||
<br>';
|
||||
<div class="row">
|
||||
<div class="col-md-2 offset-md-10">';
|
||||
if (setting('Cambia automaticamente stato ddt fatturati')) {
|
||||
$id_stato_fatt = (new Stato())->getByField('title', 'Fatturato', Models\Locale::getPredefined()->id);
|
||||
$id_stato_parz_fatt = (new Stato())->getByField('title', 'Parzialmente fatturato', Models\Locale::getPredefined()->id);
|
||||
|
||||
// Navigazione diretta verso l'indirizzo
|
||||
echo '
|
||||
<a class="btn btn-info btn-block" onclick="$(\'#map-edit\').height(235); caricaMappa(); $(this).hide();">
|
||||
<i class="fa fa-compass"></i> '.tr('Carica mappa').'
|
||||
</a>';
|
||||
|
||||
// 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>';
|
||||
if ($ordine->stato->id == $id_stato_fatt || $ordine->stato->id == $id_stato_parz_fatt) {
|
||||
echo'
|
||||
{[ "type": "select", "label": "'.tr('Stato').'", "name": "idstatoddt", "required": 1, "values": "query=SELECT `dt_statiddt`.*, `dt_statiddt_lang`.`title` as descrizione, `colore` AS _bgcolor_ FROM `dt_statiddt` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang`= '.prepare(Models\Locale::getDefault()->id).') ORDER BY `title`", "value": "$idstatoddt$", "extra": "readonly", "class": "unblockable" ]}';
|
||||
} else {
|
||||
$id_stato_bozza = (new Stato())->getByField('title', 'Bozza', Models\Locale::getPredefined()->id);
|
||||
$id_stato_evaso = (new Stato())->getByField('title', 'Evaso', Models\Locale::getPredefined()->id);
|
||||
$id_stato_parz_evaso = (new Stato())->getByField('title', 'Parzialmente evaso', Models\Locale::getPredefined()->id);
|
||||
echo'
|
||||
{[ "type": "select", "label": "'.tr('Stato').'", "name": "idstatoddt", "required": 1, "values": "query=SELECT `dt_statiddt`.*, `dt_statiddt_lang`.`title` as descrizione, `colore` AS _bgcolor_ FROM `dt_statiddt` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang`= '.prepare(Models\Locale::getDefault()->id).') WHERE `dt_statiddt`.`id` IN ('.implode(',', [$id_stato_bozza, $id_stato_evaso, $id_stato_parz_evaso]).') ORDER BY `title`", "value": "$idstatoddt$", "class": "unblockable" ]}';
|
||||
}
|
||||
} 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>';
|
||||
|
||||
// Ricerca diretta su Mappa
|
||||
echo '
|
||||
<a class="btn btn-info btn-block" onclick="cercaOpenStreetMap()">
|
||||
<i class="fa fa-map-marker"></i> '.tr('Cerca su Mappa').'
|
||||
'.((!empty($sede_anagrafica->lat)) ? tr(' (GPS)') : '').'
|
||||
</a>';
|
||||
echo'
|
||||
{[ "type": "select", "label": "'.tr('Stato').'", "name": "idstatoddt", "required": 1, "values": "query=SELECT `dt_statiddt`.*, `colore` AS _bgcolor_, `dt_statiddt_lang`.`title` as descrizione FROM `dt_statiddt` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt`.`id` = `dt_statiddt_lang`.`id_record` AND `dt_statiddt_lang`.`id_lang`= '.prepare(Models\Locale::getDefault()->id).') ORDER BY `title`", "value": "$idstatoddt$", "class": "unblockable" ]}';
|
||||
}
|
||||
|
||||
echo '
|
||||
echo'
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- DATI INTESTAZIONE -->
|
||||
<div class="card card-primary collapsable '.(empty($espandi_dettagli) ? 'collapsed-card' : '').'">
|
||||
<div class="card-header with-border">
|
||||
<h3 class="card-title">'.tr('Dati cliente').'</h3>
|
||||
<div class="card-tools pull-right">
|
||||
<button type="button" class="btn btn-card-tool" data-card-widget="collapse">
|
||||
<i class="fa fa-'.(empty($espandi_dettagli) ? 'plus' : 'minus').'"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="card-body">
|
||||
<!-- RIGA 1 -->
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
'.Modules::link('Anagrafiche', $record['idanagrafica'], null, null, 'class="pull-right"').'
|
||||
{[ "type": "select", "label": "'.($dir == 'uscita' ? tr('Mittente') : tr('Destinatario')).'", "name": "idanagrafica", "required": 1, "value": "$idanagrafica$", "ajax-source": "clienti_fornitori" ]}
|
||||
</div>';
|
||||
if ($dir == 'entrata') {
|
||||
echo '
|
||||
<div class="col-md-3">';
|
||||
if ($record['idagente'] != 0) {
|
||||
echo Modules::link('Anagrafiche', $record['idagente'], null, null, 'class="pull-right"');
|
||||
}
|
||||
echo '
|
||||
{[ "type": "select", "label": "'.tr('Agente').'", "name": "idagente", "ajax-source": "agenti", "select-options": {"idanagrafica": '.$record['idanagrafica'].'}, "value": "$idagente$" ]}
|
||||
</div>';
|
||||
}
|
||||
echo'
|
||||
<div class="col-md-3">';
|
||||
if (!empty($record['idreferente'])) {
|
||||
echo Plugins::link('Referenti', $record['idanagrafica'], null, null, 'class="pull-right"');
|
||||
}
|
||||
echo '
|
||||
{[ "type": "select", "label": "'.tr('Referente').'", "name": "idreferente", "value": "$idreferente$", "ajax-source": "referenti", "select-options": {"idanagrafica": '.$record['idanagrafica'].', "idsede_destinazione": '.$record['idsede_destinazione'].'} ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function modificaPosizione() {
|
||||
openModal("'.tr('Modifica posizione').'", "'.$module->fileurl('modals/posizione.php').'?id_module='.$id_module.'&id_record='.$id_record.'");
|
||||
}
|
||||
|
||||
function cercaOpenStreetMap() {
|
||||
const indirizzo = getIndirizzoAnagrafica();
|
||||
if (indirizzo[0] && indirizzo[1]) {
|
||||
window.open("https://www.openstreetmap.org/?mlat=" + indirizzo[0] + "&mlon=" + indirizzo[1] + "#map=12/" + indirizzo[0] + "/" + indirizzo[1]);
|
||||
} else {
|
||||
window.open("https://www.openstreetmap.org/search?query=" + indirizzo[2]);
|
||||
}
|
||||
}
|
||||
|
||||
function calcolaPercorso() {
|
||||
const indirizzo_partenza = getIndirizzoAzienda();
|
||||
const indirizzo_destinazione = getIndirizzoAnagrafica();
|
||||
window.open("https://www.openstreetmap.org/directions?engine=fossgis_osrm_car&route=" + indirizzo_partenza + ";" + indirizzo_destinazione[0] + "," + indirizzo_destinazione[1]);
|
||||
}
|
||||
|
||||
function getIndirizzoAzienda() {
|
||||
const indirizzo = "'.$sede_azienda->indirizzo.'";
|
||||
const citta = "'.$sede_azienda->citta.'";
|
||||
|
||||
const lat = parseFloat("'.$sede_azienda->lat.'");
|
||||
const lng = parseFloat("'.$sede_azienda->lng.'");
|
||||
|
||||
return lat + "," + lng;
|
||||
}
|
||||
|
||||
function getIndirizzoAnagrafica() {
|
||||
const indirizzo = "'.$sede_anagrafica->indirizzo.'";
|
||||
const citta = "'.$sede_anagrafica->citta.'";
|
||||
|
||||
const lat = parseFloat("'.$sede_anagrafica->lat.'");
|
||||
const lng = parseFloat("'.$sede_anagrafica->lng.'");
|
||||
|
||||
const indirizzo_default = encodeURI(indirizzo) + "," + encodeURI(citta);
|
||||
|
||||
return [lat, lng, indirizzo_default];
|
||||
}
|
||||
|
||||
var map = null;
|
||||
function caricaMappa() {
|
||||
const lat = parseFloat("'.$sede_anagrafica->lat.'");
|
||||
const lng = parseFloat("'.$sede_anagrafica->lng.'");
|
||||
|
||||
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
|
||||
});
|
||||
|
||||
L.tileLayer("'.setting('Tile server OpenStreetMap').'", {
|
||||
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);
|
||||
}
|
||||
</script>';
|
||||
</div>
|
||||
</div>';
|
||||
?>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<!-- INTESTAZIONE -->
|
||||
<div class="card card-primary">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title"><?php echo tr('Intestazione'); ?></h3>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<?php
|
||||
if ($dir == 'uscita') {
|
||||
echo '
|
||||
<div class="col-md-2">
|
||||
{[ "type": "span", "label": "'.tr('Numero ddt').'", "class": "text-center", "value": "$numero$" ]}
|
||||
</div>';
|
||||
}
|
||||
?>
|
||||
<div class="col-md-2">
|
||||
{[ "type": "text", "label": "<?php echo tr('Numero secondario'); ?>", "name": "numero_esterno", "class": "text-center", "value": "$numero_esterno$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
{[ "type": "date", "label": "<?php echo tr('Data'); ?>", "name": "data", "required": 1, "value": "$data$" ]}
|
||||
</div>
|
||||
<?php
|
||||
|
||||
// Conteggio numero articoli ddt in uscita
|
||||
$articolo = $dbo->fetchArray('SELECT `mg_articoli`.`id` FROM ((`mg_articoli` INNER JOIN `dt_righe_ddt` ON `mg_articoli`.`id`=`dt_righe_ddt`.`idarticolo`) INNER JOIN `dt_ddt` ON `dt_ddt`.`id`=`dt_righe_ddt`.`idddt`) WHERE `dt_ddt`.`id`='.prepare($id_record));
|
||||
$id_modulo_anagrafiche = (new Module())->getByField('title', 'Anagrafiche', Models\Locale::getPredefined()->id);
|
||||
$id_plugin_sedi = (new Plugin())->getByField('title', 'Sedi', Models\Locale::getPredefined()->id);
|
||||
if ($dir == 'entrata') {
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Partenza merce').'", "name": "idsede_partenza", "ajax-source": "sedi_azienda", "value": "$idsede_partenza$", "help": "'.tr("Sedi di partenza dell'azienda").'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Destinazione merce').'", "name": "idsede_destinazione", "ajax-source": "sedi", "select-options": {"idanagrafica": '.$record['idanagrafica'].'}, "value": "$idsede_destinazione$", "help": "'.tr('Sedi del destinatario').'", "icon-after": "add|'.$id_modulo_anagrafiche.'|id_plugin='.$id_plugin_sedi.'&id_parent='.$record['idanagrafica'].'||'.(intval($block_edit) ? 'disabled' : '').'" ]}
|
||||
</div>';
|
||||
} else {
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Partenza merce').'", "name": "idsede_partenza", "ajax-source": "sedi", "select-options": {"idanagrafica": '.$record['idanagrafica'].'}, "value": "$idsede_partenza$", "help": "'.tr('Sedi del mittente').'", "icon-after": "add|'.$id_modulo_anagrafiche.'|id_plugin='.$id_plugin_sedi.'&id_parent='.$record['idanagrafica'].'||'.(intval($block_edit) ? 'disabled' : '').'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Destinazione merce').'", "name": "idsede_destinazione", "ajax-source": "sedi_azienda", "value": "$idsede_destinazione$", "help": "'.tr("Sedi di arrivo dell'azienda").'" ]}
|
||||
</div>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "<?php echo tr('Pagamento'); ?>", "name": "idpagamento", "ajax-source": "pagamenti", "value": "$idpagamento$" ]}
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
{[ "type": "number", "label": "Sconto in fattura", "name": "sconto_finale", "value": "'.($ddt->sconto_finale_percentuale ?: $ddt->sconto_finale).'", "icon-after": "choice|untprc|'.(empty($ddt->sconto_finale) ? 'PRC' : 'UNT').'", "help": "'.tr('Sconto in fattura, utilizzabile per applicare sconti sul netto a pagare del documento').'." ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -371,9 +261,6 @@ echo '
|
|||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "<?php echo tr('Pagamento'); ?>", "name": "idpagamento", "ajax-source": "pagamenti", "value": "$idpagamento$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "<?php echo tr('Porto'); ?>", "name": "idporto", "placeholder": "-", "help": "<?php echo tr('<ul><li>Franco: pagamento del trasporto a carico del mittente</li> <li>Assegnato: pagamento del trasporto a carico del destinatario</li> </ul>'); ?>", "values": "query=SELECT `dt_porto`.`id`, `dt_porto_lang`.`title` as descrizione FROM `dt_porto` LEFT JOIN `dt_porto_lang` ON (`dt_porto`.`id` = `dt_porto_lang`.`id_record` AND `dt_porto_lang`.`id_lang` = <?php echo prepare(Models\Locale::getDefault()->id); ?>) ORDER BY `title` ASC", "value": "$idporto$" ]}
|
||||
|
@ -388,7 +275,7 @@ $esterno = $dbo->selectOne('dt_spedizione', 'esterno', [
|
|||
'id' => $record['idspedizione'],
|
||||
])['esterno'];
|
||||
?>
|
||||
{[ "type": "select", "label": "<?php echo tr('Vettore'); ?>", "name": "idvettore", "ajax-source": "vettori", "value": "$idvettore$", "disabled": <?php echo empty($esterno) || (!empty($esterno) && !empty($record['idvettore'])) ? 1 : 0; ?>, "required": <?php echo !empty($esterno) ?: 0; ?>, "icon-after": "add|<?php echo (new Module())->getByField('title', 'Anagrafiche', Models\Locale::getPredefined()->id); ?>|tipoanagrafica=Vettore&readonly_tipo=1|btn_idvettore|<?php echo ($esterno and (intval(!$record['flag_completato']) || empty($record['idvettore']))) ? '' : 'disabled'; ?>", "class": "<?php echo empty($record['idvettore']) ? 'unblockable' : ''; ?>" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Vettore'); ?>", "name": "idvettore", "ajax-source": "vettori", "value": "$idvettore$", "disabled": <?php echo empty($esterno) || (!empty($esterno) && !empty($record['idvettore'])) ? 1 : 0; ?>, "required": <?php echo !empty($esterno) ?: 0; ?>, "icon-": "add|<?php echo (new Module())->getByField('title', 'Anagrafiche', Models\Locale::getPredefined()->id); ?>|tipoanagrafica=Vettore&readonly_tipo=1|btn_idvettore|<?php echo ($esterno and (intval(!$record['flag_completato']) || empty($record['idvettore']))) ? '' : 'disabled'; ?>", "class": "<?php echo empty($record['idvettore']) ? 'unblockable' : ''; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
|
@ -436,31 +323,25 @@ $esterno = $dbo->selectOne('dt_spedizione', 'esterno', [
|
|||
|
||||
if ($dir == 'entrata') {
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "number", "label": "'.tr('Peso').'", "name": "peso", "value": "$peso$", "readonly": "'.intval(empty($record['peso_manuale'])).'", "help": "'.tr('Il valore del campo Peso viene calcolato in automatico sulla base degli articoli inseriti nel documento, a meno dell\'impostazione di un valore manuale in questo punto').'" ]}
|
||||
<input type="hidden" id="peso_calcolato" name="peso_calcolato" value="'.$ddt->peso_calcolato.'">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "number", "label": "'.tr('Peso').'", "name": "peso", "value": "$peso$", "readonly": "'.intval(empty($record['peso_manuale'])).'", "help": "'.tr('Il valore del campo Peso viene calcolato in automatico sulla base degli articoli inseriti nel documento, a meno dell\'impostazione di un valore manuale in questo punto').'" ]}
|
||||
<input type="hidden" id="peso_calcolato" name="peso_calcolato" value="'.$ddt->peso_calcolato.'">
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "checkbox", "label": "'.tr('Modifica peso').'", "name": "peso_manuale", "value":"$peso_manuale$", "help": "'.tr('Seleziona per modificare manualmente il campo Peso').'", "placeholder": "'.tr('Modifica peso').'" ]}
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
{[ "type": "checkbox", "label": "'.tr('Modifica peso').'", "name": "peso_manuale", "value":"$peso_manuale$", "help": "'.tr('Seleziona per modificare manualmente il campo Peso').'", "placeholder": "'.tr('Modifica peso').'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "number", "label": "'.tr('Volume').'", "name": "volume", "value": "$volume$", "readonly": "'.intval(empty($record['volume_manuale'])).'", "help": "'.tr('Il valore del campo volume viene calcolato in automatico sulla base degli articoli inseriti nel documento, a meno dell\'impostazione di un valore manuale in questo punto').'" ]}
|
||||
<input type="hidden" id="volume_calcolato" name="volume_calcolato" value="'.$ddt->volume_calcolato.'">
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
{[ "type": "number", "label": "'.tr('Volume').'", "name": "volume", "value": "$volume$", "readonly": "'.intval(empty($record['volume_manuale'])).'", "help": "'.tr('Il valore del campo volume viene calcolato in automatico sulla base degli articoli inseriti nel documento, a meno dell\'impostazione di un valore manuale in questo punto').'" ]}
|
||||
<input type="hidden" id="volume_calcolato" name="volume_calcolato" value="'.$ddt->volume_calcolato.'">
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "checkbox", "label": "'.tr('Modifica volume').'", "name": "volume_manuale", "value":"$volume_manuale$", "help": "'.tr('Seleziona per modificare manualmente il campo volume').'", "placeholder": "'.tr('Modifica volume').'" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "number", "label": "Sconto in fattura", "name": "sconto_finale", "value": "'.($ddt->sconto_finale_percentuale ?: $ddt->sconto_finale).'", "icon-after": "choice|untprc|'.(empty($ddt->sconto_finale) ? 'PRC' : 'UNT').'", "help": "'.tr('Sconto in fattura, utilizzabile per applicare sconti sul netto a pagare del documento').'." ]}
|
||||
</div>
|
||||
</div>';
|
||||
<div class="col-md-3">
|
||||
{[ "type": "checkbox", "label": "'.tr('Modifica volume').'", "name": "volume_manuale", "value":"$volume_manuale$", "help": "'.tr('Seleziona per modificare manualmente il campo volume').'", "placeholder": "'.tr('Modifica volume').'" ]}
|
||||
</div>
|
||||
</div>';
|
||||
}
|
||||
|
||||
?>
|
||||
|
@ -500,20 +381,20 @@ if ($dir == 'entrata') {
|
|||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "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": "$id_documento_fe$", "maxlength": 20 ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "text", "label": "<?php echo tr('Numero Riga'); ?>", "name": "num_item", "required": 0, "value": "$num_item$", "maxlength": 15 ]}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "text", "label": "<?php echo tr('Codice CIG'); ?>", "name": "codice_cig", "required": 0, "value": "$codice_cig$", "maxlength": 15 ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "text", "label": "<?php echo tr('Codice CUP'); ?>", "name": "codice_cup", "required": 0, "value": "$codice_cup$", "maxlength": 15 ]}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,333 @@
|
|||
<?php
|
||||
/*
|
||||
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
|
||||
* Copyright (C) DevCode s.r.l.
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Models\Module;
|
||||
use Models\Upload;
|
||||
use Modules\Anagrafiche\Anagrafica;
|
||||
use Modules\Anagrafiche\Sede;
|
||||
use Modules\Contratti\Contratto;
|
||||
use Modules\Interventi\Intervento;
|
||||
use Modules\Ordini\Ordine;
|
||||
use Modules\Preventivi\Preventivo;
|
||||
use Modules\Scadenzario\Scadenza;
|
||||
|
||||
// Anagrafica
|
||||
$anagrafica = $ddt->anagrafica;
|
||||
|
||||
// Sede
|
||||
if ($ddt->idsede_destinazione) {
|
||||
$sede = $dbo->selectOne('an_sedi', '*', ['id' => $ddt->idsede_destinazione]);
|
||||
} else {
|
||||
$sede = $anagrafica->toArray();
|
||||
}
|
||||
|
||||
// Referente
|
||||
$referente = null;
|
||||
if ($ddt->idreferente) {
|
||||
$referente = $dbo->selectOne('an_referenti', '*', ['id' => $ddt->idreferente]);
|
||||
}
|
||||
|
||||
// Contratto
|
||||
$contratto = null;
|
||||
$ore_erogate = 0;
|
||||
$ore_previste = 0;
|
||||
$perc_ore = 0;
|
||||
$color = 'danger';
|
||||
if ($ddt->id_contratto) {
|
||||
$contratto = Contratto::find($ddt->id_contratto);
|
||||
$ore_erogate = $contratto->interventi->sum('ore_totali');
|
||||
$ore_previste = $contratto->getRighe()->where('um', 'ore')->sum('qta');
|
||||
$perc_ore = $ore_previste != 0 ? ($ore_erogate * 100) / $ore_previste : 0;
|
||||
if ($perc_ore < 75) {
|
||||
$color = 'success';
|
||||
} elseif ($perc_ore <= 100) {
|
||||
$color = 'warning';
|
||||
}
|
||||
}
|
||||
|
||||
// Preventivo
|
||||
$preventivo = null;
|
||||
if ($ddt->id_preventivo) {
|
||||
$preventivo = Preventivo::find($ddt->id_preventivo);
|
||||
}
|
||||
|
||||
// Ordine
|
||||
$ordine = null;
|
||||
if ($ddt->id_ordine) {
|
||||
$ordine = Ordine::find($ddt->id_ordine);
|
||||
}
|
||||
|
||||
// Insoluti
|
||||
$insoluti = Scadenza::where('idanagrafica', $ddt->idanagrafica)
|
||||
->whereRaw('co_scadenziario.da_pagare > co_scadenziario.pagato')
|
||||
->whereRaw('co_scadenziario.scadenza < NOW()')
|
||||
->count();
|
||||
|
||||
// Logo
|
||||
$logo = Upload::where('id_module', (new Module())->getByField('title', 'Anagrafiche'))->where('id_record', $ddt->idanagrafica)->where('name', 'Logo azienda')->first()->filename;
|
||||
|
||||
$logo = $logo ? base_path().'/files/anagrafiche/'.$logo : App::getPaths()['img'].'/logo_header.png';
|
||||
|
||||
echo '
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-md-1">
|
||||
<img src="'.$logo.'" class="img-fluid">
|
||||
</div>';
|
||||
|
||||
// Cliente
|
||||
echo '
|
||||
<div class="col-md-3">
|
||||
<h4 style="margin:4px 0;"><b>'.$anagrafica->ragione_sociale.'</b></h4>
|
||||
|
||||
<p style="margin:3px 0;">
|
||||
'.($sede['nomesede'] ? $sede['nomesede'].'<br>' : '').'
|
||||
'.$sede['indirizzo'].'<br>
|
||||
'.$sede['cap'].' - '.$sede['citta'].' ('.$sede['provincia'].')
|
||||
</p>
|
||||
|
||||
<p style="margin:3px 0;">
|
||||
'.($sede['telefono'] ? '<a class="btn btn-default btn-xs" href="tel:'.$sede['telefono'].'" target="_blank"><i class="fa fa-phone text-maroon"></i> '.$sede['telefono'].'</a>' : '').'
|
||||
'.($sede['email'] ? '<a class="btn btn-default btn-xs" href="mailto:'.$sede['email'].'"><i class="fa fa-envelope text-maroon"></i> '.$sede['email'].'</a>' : '').'
|
||||
'.($referente['nome'] ? '<p></p><i class="fa fa-user-o text-muted"></i> '.$referente['nome'].'<br>' : '').'
|
||||
'.($referente['telefono'] ? '<a class="btn btn-default btn-xs" href="tel:'.$referente['telefono'].'" target="_blank"><i class="fa fa-phone text-maroon"></i> '.$referente['telefono'].'</a>' : '').'
|
||||
'.($referente['email'] ? '<a class="btn btn-default btn-xs" href="mailto:'.$referente['email'].'"><i class="fa fa-envelope text-maroon"></i> '.$referente['email'].'</a>' : '').'
|
||||
</p>
|
||||
</div>';
|
||||
|
||||
// Panoramica
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
<div class="card card-info">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title"><i class="fa fa-map"></i> '.tr('Panoramica ddt num. ').$ddt->codice.'</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
<p style="margin:3px 0;"><i class="fa fa-'.($insoluti ? 'warning text-danger' : 'check text-success').'"></i>
|
||||
'.($insoluti ? tr('Sono presenti insoluti') : tr('Non sono presenti insoluti')).'
|
||||
</p>';
|
||||
|
||||
// Contratto
|
||||
if ($contratto) {
|
||||
echo '
|
||||
<p style="margin:3px 0;"><i class="fa fa-book text-info"></i>
|
||||
'.Modules::link('Contratti', $contratto->id, tr('Contratto num. _NUM_ del _DATA_', ['_NUM_' => $contratto->numero, '_DATA_' => Translator::dateToLocale($contratto->data_bozza)]));
|
||||
if ($ore_previste > 0) {
|
||||
echo '
|
||||
- '.$ore_erogate.'/'.$ore_previste.' '.tr('ore').'<br>
|
||||
|
||||
<div class="progress" style="margin:0; height:8px;">
|
||||
<div class="progress-bar progress-bar-'.$color.'" style="width:'.$perc_ore.'%"></div>
|
||||
</div>';
|
||||
}
|
||||
echo '
|
||||
</p>';
|
||||
}
|
||||
|
||||
// Preventivo
|
||||
if ($preventivo) {
|
||||
echo '
|
||||
<p style="margin:3px 0;"><i class="fa fa-book text-info"></i>
|
||||
'.Modules::link('Preventivi', $preventivo->id, tr('Preventivo num. _NUM_ del _DATA_', ['_NUM_' => $preventivo->numero, '_DATA_' => Translator::dateToLocale($preventivo->data_bozza)])).'
|
||||
</p>';
|
||||
}
|
||||
|
||||
// Ordine
|
||||
if ($ordine) {
|
||||
echo '
|
||||
<p style="margin:3px 0;"><i class="fa fa-book text-info"></i>
|
||||
'.Modules::link('Ordini cliente', $ordine->id, tr('Ordine num. _NUM_ del _DATA_', ['_NUM_' => $ordine->numero, '_DATA_' => Translator::dateToLocale($ordine->data)])).'
|
||||
</p>';
|
||||
}
|
||||
echo '
|
||||
</div>
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
// Geolocalizzazione
|
||||
$anagrafica_cliente = $ddt->anagrafica;
|
||||
$sede_cliente = $anagrafica_cliente->sedeLegale;
|
||||
if (!empty($ddt->idsede_destinazione)) {
|
||||
$sede_cliente = Sede::find($ddt->idsede_destinazione);
|
||||
}
|
||||
|
||||
$anagrafica_azienda = Anagrafica::find(setting('Azienda predefinita'));
|
||||
$sede_azienda = $anagrafica_azienda->sedeLegale;
|
||||
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
<div class="card card-info">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title"><i class="fa fa-map"></i> '.tr('Geolocalizzazione').'</h3>
|
||||
</div>
|
||||
<div class="card-body">';
|
||||
|
||||
if (!empty($sede_cliente->gaddress) || (!empty($sede_cliente->lat) && !empty($sede_cliente->lng))) {
|
||||
echo '
|
||||
<div id="map-edit" style="width: 100%;"></div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
<br>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">';
|
||||
// Navigazione diretta verso l'indirizzo
|
||||
echo '
|
||||
<a class="btn btn-xs btn-default btn-block" onclick="$(\'#map-edit\').height(180); caricaMappa(); $(this).hide();">
|
||||
<i class="fa fa-compass"></i> '.tr('Carica mappa').'
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">';
|
||||
// Navigazione diretta verso l'indirizzo
|
||||
echo '
|
||||
<a class="btn btn-xs btn-default btn-block" onclick="calcolaPercorso()">
|
||||
<i class="fa fa-map-signs"></i> '.tr('Calcola percorso').'
|
||||
</a>
|
||||
</div>
|
||||
</div>';
|
||||
} else {
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-6">';
|
||||
// Navigazione diretta verso l'indirizzo
|
||||
echo '
|
||||
<a class="btn btn-xs btn-default btn-block" onclick="calcolaPercorso()">
|
||||
<i class="fa fa-map-signs"></i> '.tr('Calcola percorso').'
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">';
|
||||
// Ricerca diretta su Mappa
|
||||
echo '
|
||||
<a class="btn btn-xs btn-default btn-block" onclick="cercaOpenStreetMap()">
|
||||
<i class="fa fa-map-marker"></i> '.tr('Cerca su Mappa').'
|
||||
</a>
|
||||
</div>
|
||||
</div>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function modificaPosizione() {
|
||||
openModal("'.tr('Modifica posizione').'", "'.$module->fileurl('modals/posizione.php').'?id_module='.$id_module.'&id_record='.$id_record.'");
|
||||
}
|
||||
|
||||
function cercaOpenStreetMap() {
|
||||
const indirizzo = getIndirizzoAnagrafica();
|
||||
|
||||
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]);
|
||||
} else {
|
||||
window.open("https://www.openstreetmap.org/search?query=" + indirizzo[2] + "#map=12");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function calcolaPercorso() {
|
||||
const indirizzo_partenza = getIndirizzoAzienda();
|
||||
const indirizzo_destinazione = getIndirizzoAnagrafica();
|
||||
|
||||
const destinazione = (!isNaN(indirizzo_destinazione[0]) && !isNaN(indirizzo_destinazione[1])) ? indirizzo_destinazione[0] + ","+ indirizzo_destinazione[1] : indirizzo_destinazione[2];
|
||||
|
||||
if (isMobile.any) {
|
||||
window.open("geo:" + destinazione + "?z=16&q=" + destinazione);
|
||||
} else {
|
||||
window.open("https://www.openstreetmap.org/directions?engine=fossgis_osrm_car&route=" + indirizzo_partenza + ";" + destinazione);
|
||||
}
|
||||
}
|
||||
|
||||
function getIndirizzoAzienda() {
|
||||
const indirizzo = "'.$sede_azienda->indirizzo.'";
|
||||
const citta = "'.$sede_azienda->citta.'";
|
||||
|
||||
const lat = parseFloat("'.$sede_azienda->lat.'");
|
||||
const lng = parseFloat("'.$sede_azienda->lng.'");
|
||||
|
||||
if (lat && lng){
|
||||
return lat + ","+ lng;
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
return [lat, lng, indirizzo_default];
|
||||
}
|
||||
|
||||
var map = null;
|
||||
function caricaMappa() {
|
||||
const lat = parseFloat("'.$sede_cliente->lat.'");
|
||||
const lng = parseFloat("'.$sede_cliente->lng.'");
|
||||
|
||||
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
|
||||
});
|
||||
|
||||
L.tileLayer("'.setting('Tile server OpenStreetMap').'", {
|
||||
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);
|
||||
}
|
||||
</script>';
|
|
@ -138,8 +138,8 @@ echo '
|
|||
|
||||
<p style="margin:3px 0;"><i class="fa '.(count($interventi_programmati) == 0 ? 'fa-clock-o text-success' : 'fa-clock-o text-warning').'"></i> '.(count($interventi_programmati) == 0 ? tr('Non sono presenti attività programmate') : 'Attività aperte:');
|
||||
if (count($interventi_programmati) != 0) {
|
||||
foreach ($interventi_programmati as $fattura_programmato) {
|
||||
echo ' <a class="btn btn-default btn-xs" href="'.base_path().'/editor.php?id_module='.Modules::get('Interventi')['id'].'&id_record='.$fattura_programmato->id.'" target="_blank">'.$fattura_programmato->codice.' ('.(new Carbon($fattura_programmato->data_richiesta))->diffForHumans().')</a>';
|
||||
foreach ($interventi_programmati as $intervento_programmato) {
|
||||
echo ' <a class="btn btn-default btn-xs" href="'.base_path().'/editor.php?id_module='.Modules::get('Interventi')['id'].'&id_record='.$intervento_programmato->id.'" target="_blank">'.$intervento_programmato->codice.' ('.(new Carbon($intervento_programmato->data_richiesta))->diffForHumans().')</a>';
|
||||
}
|
||||
}
|
||||
echo '
|
||||
|
|
|
@ -167,106 +167,6 @@ if (!empty($intervento->idsede_destinazione)) {
|
|||
$anagrafica_azienda = Anagrafica::find(setting('Azienda predefinita'));
|
||||
$sede_azienda = $anagrafica_azienda->sedeLegale;
|
||||
|
||||
echo '
|
||||
<script>
|
||||
function modificaPosizione() {
|
||||
openModal("'.tr('Modifica posizione').'", "'.$module->fileurl('modals/posizione.php').'?id_module='.$id_module.'&id_record='.$id_record.'");
|
||||
}
|
||||
|
||||
function cercaOpenStreetMap() {
|
||||
const indirizzo = getIndirizzoAnagrafica();
|
||||
|
||||
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]);
|
||||
} else {
|
||||
window.open("https://www.openstreetmap.org/search?query=" + indirizzo[2] + "#map=12");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function calcolaPercorso() {
|
||||
const indirizzo_partenza = getIndirizzoAzienda();
|
||||
const indirizzo_destinazione = getIndirizzoAnagrafica();
|
||||
|
||||
const destinazione = (!isNaN(indirizzo_destinazione[0]) && !isNaN(indirizzo_destinazione[1])) ? indirizzo_destinazione[0] + ","+ indirizzo_destinazione[1] : indirizzo_destinazione[2];
|
||||
|
||||
if (isMobile.any) {
|
||||
window.open("geo:" + destinazione + "?z=16&q=" + destinazione);
|
||||
} else {
|
||||
window.open("https://www.openstreetmap.org/directions?engine=fossgis_osrm_car&route=" + indirizzo_partenza + ";" + destinazione);
|
||||
}
|
||||
}
|
||||
|
||||
function getIndirizzoAzienda() {
|
||||
const indirizzo = "'.$sede_azienda->indirizzo.'";
|
||||
const citta = "'.$sede_azienda->citta.'";
|
||||
|
||||
const lat = parseFloat("'.$sede_azienda->lat.'");
|
||||
const lng = parseFloat("'.$sede_azienda->lng.'");
|
||||
|
||||
if (lat && lng){
|
||||
return lat + ","+ lng;
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
return [lat, lng, indirizzo_default];
|
||||
}
|
||||
|
||||
var map = null;
|
||||
function caricaMappa() {
|
||||
const lat = parseFloat("'.$sede_cliente->lat.'");
|
||||
const lng = parseFloat("'.$sede_cliente->lng.'");
|
||||
|
||||
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
|
||||
});
|
||||
|
||||
L.tileLayer("'.setting('Tile server OpenStreetMap').'", {
|
||||
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);
|
||||
}
|
||||
</script>';
|
||||
|
||||
?>
|
||||
<!-- DATI INTERVENTO -->
|
||||
<div class="card card-primary">
|
||||
|
|
|
@ -131,8 +131,8 @@ echo '
|
|||
|
||||
<p style="margin:3px 0;"><i class="fa '.(count($interventi_programmati) == 0 ? 'fa-clock-o text-success' : 'fa-clock-o text-warning').'"></i> '.(count($interventi_programmati) == 0 ? tr('Non sono presenti attività programmate') : 'Attività aperte:');
|
||||
if (count($interventi_programmati) != 0) {
|
||||
foreach ($interventi_programmati as $ordine_programmato) {
|
||||
echo ' <a class="btn btn-default btn-xs" href="'.base_path().'/editor.php?id_module='.Modules::get('Interventi')['id'].'&id_record='.$ordine_programmato->id.'" target="_blank">'.$ordine_programmato->codice.' ('.(new Carbon($ordine_programmato->data_richiesta))->diffForHumans().')</a>';
|
||||
foreach ($interventi_programmati as $intervento_programmato) {
|
||||
echo ' <a class="btn btn-default btn-xs" href="'.base_path().'/editor.php?id_module='.Modules::get('Interventi')['id'].'&id_record='.$intervento_programmato->id.'" target="_blank">'.$intervento_programmato->codice.' ('.(new Carbon($intervento_programmato->data_richiesta))->diffForHumans().')</a>';
|
||||
}
|
||||
}
|
||||
echo '
|
||||
|
|
|
@ -131,8 +131,8 @@ echo '
|
|||
|
||||
<p style="margin:3px 0;"><i class="fa '.(count($interventi_programmati) == 0 ? 'fa-clock-o text-success' : 'fa-clock-o text-warning').'"></i> '.(count($interventi_programmati) == 0 ? tr('Non sono presenti attività programmate') : 'Attività aperte:');
|
||||
if (count($interventi_programmati) != 0) {
|
||||
foreach ($interventi_programmati as $preventivo_programmato) {
|
||||
echo ' <a class="btn btn-default btn-xs" href="'.base_path().'/editor.php?id_module='.Modules::get('Interventi')['id'].'&id_record='.$preventivo_programmato->id.'" target="_blank">'.$preventivo_programmato->codice.' ('.(new Carbon($preventivo_programmato->data_richiesta))->diffForHumans().')</a>';
|
||||
foreach ($interventi_programmati as $intervento_programmato) {
|
||||
echo ' <a class="btn btn-default btn-xs" href="'.base_path().'/editor.php?id_module='.Modules::get('Interventi')['id'].'&id_record='.$intervento_programmato->id.'" target="_blank">'.$intervento_programmato->codice.' ('.(new Carbon($intervento_programmato->data_richiesta))->diffForHumans().')</a>';
|
||||
}
|
||||
}
|
||||
echo '
|
||||
|
|
Loading…
Reference in New Issue