Compare commits

...

6 Commits

Author SHA1 Message Date
Beppe e84fb0d6d9 Impostazione visualizzazione mappa satellite 2024-09-09 17:05:50 +02:00
Beppe a97c2615de Aggiunta vista satellite su mappe 2024-09-09 16:16:02 +02:00
valentina cdda9cf5c9 Fix importazione anagrafica 2024-09-09 14:50:45 +02:00
valentina 1694f094a7 Revert "Fix timeout esecuzione cron"
This reverts commit 50e9e08065.
2024-09-09 14:49:21 +02:00
valentina 50e9e08065 Fix timeout esecuzione cron 2024-09-09 14:20:57 +02:00
Beppe 40bf2a9cac Gestione tipi destinatari e autocompletamenti destinatari nelle mail in uscita 2024-09-09 12:54:54 +02:00
9 changed files with 162 additions and 12 deletions

View File

@ -1630,6 +1630,10 @@ body:not(.sidebar-collapse) .sidebar .nav-treeview .nav-treeview .nav-link {
background-image: url('../img/leaflet/icon-fullscreen.svg');
}
.leaflet-control-layers-toggle {
background-image: url('../img/leaflet/layers.png');
}
/** Rimozione avviso CKEditor temporanea **/
.cke_notification_warning{
display:none !important;

View File

@ -118,14 +118,14 @@ $idx = 0;
foreach ($emails as $email) {
echo '
<div class="col-md-12">
{[ "type": "email", "name": "destinatari['.$idx++.']", "value": "'.$email.'", "icon-before": "choice|email", "extra": "onkeyup=\'aggiungiDestinatario();\'", "class": "destinatari", "required": 0 ]}
{[ "type": "email", "name": "destinatari['.$idx++.']", "value": "'.$email.'", "icon-before": "choice|email|'.$template['type'].'", "extra": "onkeyup=\'aggiungiDestinatario();\'", "class": "destinatari", "required": 0 ]}
</div>';
}
if (empty($emails)) {
echo '
<div class="col-md-12">
{[ "type": "email", "name": "destinatari['.$idx++.']", "value": "", "icon-before": "choice|email", "extra": "onkeyup=\'aggiungiDestinatario();\'", "class": "destinatari", "required": 0 ]}
{[ "type": "email", "name": "destinatari['.$idx++.']", "value": "", "icon-before": "choice|email|'.$template['type'].'", "extra": "onkeyup=\'aggiungiDestinatario();\'", "class": "destinatari", "required": 0 ]}
</div>';
}
echo '
@ -197,7 +197,7 @@ echo '
echo '
<div class="hidden" id="template-destinatario">
<div class="col-md-12">
{[ "type": "email", "name": "destinatari[-id-]", "icon-before": "choice|email", "extra": "onkeyup=\'aggiungiDestinatario();\'", "class": "destinatari" ]}
{[ "type": "email", "name": "destinatari[-id-]", "icon-before": "choice|email|'.$template['type'].'", "extra": "onkeyup=\'aggiungiDestinatario();\'", "class": "destinatari" ]}
</div>
</div>';
@ -226,7 +226,23 @@ echo '
aggiungiDestinatario();
});
}';
if (!empty($template['indirizzi_proposti'])) {
echo '
$(document).load(globals.rootdir + "/modules/emails/ajax/complete.php?op=get_email&indirizzi_proposti='.$template['indirizzi_proposti'].'", function(response) {
emails = JSON.parse(response);
console.log(emails);
$(".destinatari").each(function(){
addAutoComplete(this);
});
aggiungiDestinatario();
});';
}
echo '
});
function inviaEmail() {

View File

@ -56,6 +56,8 @@ switch (post('op')) {
$template->note_aggiuntive = post('note_aggiuntive');
$template->setTranslation('subject', post('subject'));
$template->setTranslation('body', post('body'));
$template->type = post('type');
$template->indirizzi_proposti = post('indirizzi_proposti');
$template->save();
$prints[] = post('prints');

View File

@ -0,0 +1,75 @@
<?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';
$resource = ($resource ? $resource : $_GET['op']);
switch ($resource) {
// Elenco e-mail
case 'get_email':
$indirizzi_proposti = $_GET['indirizzi_proposti'];
$where = "";
if( $indirizzi_proposti==1 ) {
$where .= 'AND an_tipianagrafiche_lang.title = "Cliente"';
}elseif( $indirizzi_proposti==2 ) {
$where .= 'AND an_tipianagrafiche_lang.title = "Fornitore"';
}
$results = [];
// Tutte le anagrafiche
$q = "SELECT DISTINCT(an_anagrafiche.email), an_anagrafiche.idanagrafica, an_anagrafiche.ragione_sociale FROM an_anagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica=an_anagrafiche.idanagrafica INNER JOIN an_tipianagrafiche ON an_tipianagrafiche.id=an_tipianagrafiche_anagrafiche.idtipoanagrafica INNER JOIN an_tipianagrafiche_lang ON (an_tipianagrafiche_lang.id_lang=1 AND an_tipianagrafiche_lang.id_record=an_tipianagrafiche.id) WHERE email != '' ".$where." ORDER BY ragione_sociale";
$rs = $dbo->fetchArray($q);
foreach ($rs as $r) {
if( !empty($r['email']) ){
$results[] = [
'value' => $r['email'],
'label' => $r['ragione_sociale'].' <'.$r['email'].'>',
];
}
}
$q = "SELECT DISTINCT(an_sedi.email), an_sedi.idanagrafica, nomesede AS ragione_sociale FROM an_sedi INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica=an_sedi.idanagrafica INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica=an_anagrafiche.idanagrafica INNER JOIN an_tipianagrafiche ON an_tipianagrafiche.id=an_tipianagrafiche_anagrafiche.idtipoanagrafica INNER JOIN an_tipianagrafiche_lang ON (an_tipianagrafiche_lang.id_lang=1 AND an_tipianagrafiche_lang.id_record=an_tipianagrafiche.id) WHERE an_sedi.email != '' ".$where." ORDER BY ragione_sociale";
$sedi = $dbo->fetchArray($q);
foreach ($sedi as $sede) {
$results[] = [
'value' => $sede['email'],
'label' => $sede['ragione_sociale'].' <'.$sede['email'].'>',
];
}
$q = "SELECT DISTINCT(an_referenti.email), an_referenti.idanagrafica, an_referenti.nome AS ragione_sociale FROM an_referenti INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica=an_referenti.idanagrafica INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica=an_anagrafiche.idanagrafica INNER JOIN an_tipianagrafiche ON an_tipianagrafiche.id=an_tipianagrafiche_anagrafiche.idtipoanagrafica INNER JOIN an_tipianagrafiche_lang ON (an_tipianagrafiche_lang.id_lang=1 AND an_tipianagrafiche_lang.id_record=an_tipianagrafiche.id) WHERE an_referenti.email != '' ".$where." ORDER BY ragione_sociale";
$referenti = $dbo->fetchArray($q);
foreach ($referenti as $referente) {
$results[] = [
'value' => $referente['email'],
'label' => $referente['ragione_sociale'].' <'.$referente['email'].'>',
];
}
echo json_encode($results);
break;
}

View File

@ -60,9 +60,15 @@ if (!$record['predefined']) {
</div>
<div class="row">
<div class="col-md-12">
<div class="col-md-6">
{[ "type": "text", "label": "<?php echo tr('Oggetto'); ?>", "name": "subject", "value": "$subject$" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Proponi destinatari'); ?>", "name": "indirizzi_proposti", "value": "$indirizzi_proposti$", "values":"list=\"0\":\"<?php echo tr('Nessuno');?>\", \"1\":\"<?php echo tr('Clienti');?>\", \"2\":\"<?php echo tr('Fornitori');?>\", \"3\":\"<?php echo tr('Tutti');?>\" " ]}
</div>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Tipologia destinatari'); ?>", "name": "type", "value": "$type$", "values":"list=\"a\":\"<?php echo tr('A');?>\", \"cc\":\"<?php echo tr('CC');?>\", \"bcc\":\"<?php echo tr('CCN');?>\" ", "required":1 ]}
</div>
</div>
<div class="row">

View File

@ -122,6 +122,8 @@ if (get('op') == 'getmappa') {
const lt = "41.706";
const ln = "13.228";
var container = L.DomUtil.get("mappa");
var esri_url = '<?php echo setting('Tile server satellite');?>';
var esri_attribution = "© Esri © OpenStreetMap Contributors";
if(container._leaflet_id != null){
map.eachLayer(function (layer) {
@ -139,8 +141,22 @@ if (get('op') == 'getmappa') {
L.tileLayer("<?php echo setting('Tile server OpenStreetMap'); ?>", {
maxZoom: 17,
attribution: "© OpenStreetMap"
});
var street = L.tileLayer('<?php echo setting('Tile server OpenStreetMap');?>', {
maxZoom: 17,
attribution: "© OpenStreetMap",
}).addTo(map);
var satellite = L.tileLayer(esri_url, {id: "mappa", maxZoom: 17, tileSize: 512, zoomOffset: -1, attribution: esri_attribution});
var baseLayers = {
"Strade": street,
"Satellite": satellite
};
L.control.layers(baseLayers).addTo(map);
var markerArray = [];
if( document.getElementById('mappa') ){
for (let i = 0; i < lng.length; i++) {

View File

@ -94,6 +94,8 @@ foreach ($rs_stati as $stato) {
var coords = [];
var circle = "";
var ROOTDIR = '<?php echo $rootdir; ?>';
var esri_url = '<?php echo setting('Tile server satellite');?>';
var esri_attribution = "© Esri © OpenStreetMap Contributors";
function caricaMappa() {
const lat = "41.706";
@ -108,7 +110,21 @@ foreach ($rs_stati as $stato) {
L.tileLayer("<?php echo setting('Tile server OpenStreetMap'); ?>", {
maxZoom: 17,
attribution: "© OpenStreetMap"
});
var street = L.tileLayer('<?php echo setting('Tile server OpenStreetMap');?>', {
maxZoom: 17,
attribution: "© OpenStreetMap",
}).addTo(map);
var satellite = L.tileLayer(esri_url, {id: "mappa", maxZoom: 17, tileSize: 512, zoomOffset: -1, attribution: esri_attribution});
var baseLayers = {
"Strade": street,
"Satellite": satellite
};
L.control.layers(baseLayers).addTo(map);
}
function initGeocomplete() {

View File

@ -214,15 +214,17 @@ class FatturaElettronica
} elseif (!empty($info['partita_iva'])) {
$anagrafica = Anagrafica::where('piva', '=', $info['partita_iva']);
}
if (!empty($anagrafica)) {
$anagrafica = $anagrafica->get()->first();
$anagrafica = $anagrafica->get()->first();
$is_fornitore = $anagrafica->isTipo('Fornitore');
$is_cliente = $anagrafica->isTipo('Cliente');
$is_fornitore = $anagrafica->isTipo('Fornitore');
$is_cliente = $anagrafica->isTipo('Cliente');
if ($is_fornitore || $is_cliente) {
return $anagrafica;
}
if ($is_fornitore || $is_cliente) {
return $anagrafica;
}
}
}
/**

View File

@ -24,4 +24,17 @@ INSERT INTO `zz_settings_lang` (`id`, `id_lang`, `id_record`, `title`, `help`) V
INSERT INTO `zz_settings_lang` (`id`, `id_lang`, `id_record`, `title`, `help`) VALUES (NULL, '1', (SELECT `zz_settings`.`id` FROM `zz_settings` WHERE `zz_settings`.`nome` = 'Gestore mappa'), 'Gestore mappa', '');
-- Fix widget statistiche
UPDATE `zz_widgets` SET `class` = 'col-md-6' WHERE `zz_widgets`.`name` = "Spazio utilizzato";
UPDATE `zz_widgets` SET `class` = 'col-md-6' WHERE `zz_widgets`.`name` = "Spazio utilizzato";
-- Gestione tipi destinatari e autocompletamenti destinatari nelle mail in uscita
ALTER TABLE `em_templates`
ADD `type` varchar(5) NOT NULL DEFAULT 'a' AFTER `note_aggiuntive`,
ADD `indirizzi_proposti` TINYINT NOT NULL DEFAULT '0' AFTER `type`;
-- Aggiunta visualizzazione satellite in mappa
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`) VALUES
(NULL, 'Tile server satellite', 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', 'string', '1', 'Generali');
INSERT INTO `zz_settings_lang` (`id`, `id_lang`, `id_record`, `title`, `help`) VALUES
(NULL, '1', (SELECT `zz_settings`.`id` FROM `zz_settings` WHERE `zz_settings`.`nome` = 'Tile server satellite'), 'Tile server satellite', ''),
(NULL, '2', (SELECT `zz_settings`.`id` FROM `zz_settings` WHERE `zz_settings`.`nome` = 'Tile server satellite'), 'Satellite tile server', '');