Compare commits
6 Commits
ad3b4d9647
...
e84fb0d6d9
Author | SHA1 | Date |
---|---|---|
Beppe | e84fb0d6d9 | |
Beppe | a97c2615de | |
valentina | cdda9cf5c9 | |
valentina | 1694f094a7 | |
valentina | 50e9e08065 | |
Beppe | 40bf2a9cac |
|
@ -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;
|
||||
|
|
22
mail.php
22
mail.php
|
@ -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() {
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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">
|
||||
|
|
|
@ -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++) {
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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', '');
|
Loading…
Reference in New Issue