This commit is contained in:
MatteoPistorello 2023-01-27 17:48:36 +01:00
commit 0dd88e347b
10 changed files with 243 additions and 117 deletions

View File

@ -22,15 +22,15 @@
@font-face {
font-family: 'Source Sans Pro';
src: local('Source Sans Pro'),
url('../fonts/sourcesanspro-regular-webfont.eot') format('embedded-opentype'),
url('../fonts/sourcesanspro-regular-webfont.woff') format('woff'),
url('../fonts/sourcesanspro-regular-webfont.woff2') format('woff2'),
url('../fonts/sourcesanspro-regular-webfont.ttf') format('truetype'),
url('../fonts/sourcesanspro-regular-webfont.svg') format('svg');
src: local('Source Sans Pro'),
url('../fonts/sourcesanspro-regular-webfont.eot') format('embedded-opentype'),
url('../fonts/sourcesanspro-regular-webfont.woff') format('woff'),
url('../fonts/sourcesanspro-regular-webfont.woff2') format('woff2'),
url('../fonts/sourcesanspro-regular-webfont.ttf') format('truetype'),
url('../fonts/sourcesanspro-regular-webfont.svg') format('svg');
}
html{
html {
font-size: 13px;
height: 100%;
}
@ -88,7 +88,8 @@ input[type=file] {
position: fixed;
}
.autocomplete, .ui-autocomplete {
.autocomplete,
.ui-autocomplete {
background: white;
z-index: 10000;
min-width: 160px;
@ -102,12 +103,13 @@ input[type=file] {
border-radius: 5px;
}
.autocomplete .group, .ui-autocomplete-category {
.autocomplete .group,
.ui-autocomplete-category {
font-size: 1.5em;
background: inherit;
}
.autocomplete > div {
.autocomplete>div {
padding: 5px;
}
@ -115,8 +117,8 @@ input[type=file] {
background: #FFFF66;
}
.autocomplete > div:hover:not(.group),
.autocomplete > div.selected {
.autocomplete>div:hover:not(.group),
.autocomplete>div.selected {
background: #F5F5F5;
cursor: pointer;
}
@ -144,8 +146,10 @@ input[type=file] {
.navbar a:hover,
.logo:hover,
.alert a, .alert a:hover,
a:hover, a:focus {
.alert a,
.alert a:hover,
a:hover,
a:focus {
text-decoration: none;
}
@ -191,13 +195,13 @@ a:hover, a:focus {
filter: alpha(opacity=90);
}
#main_loading > div {
#main_loading>div {
position: relative;
top: 50%;
color: #333;
}
#main_loading > div > i {
#main_loading>div>i {
font-size: 300px;
margin-top: -150px;
color: #e24e1e;
@ -213,7 +217,7 @@ a:hover, a:focus {
background: rgba(0, 0, 0, 0.15);
}
#mini-loader > div {
#mini-loader>div {
position: absolute;
bottom: 50%;
left: 50%;
@ -244,9 +248,9 @@ body .header .logo {
border-color: rgba(0, 0, 0, 0.2) !important;
}
.navbar-custom-menu > ul > li > a:hover,
.navbar-custom-menu > ul > li > a:focus,
.navbar-custom-menu > ul > li > a:active {
.navbar-custom-menu>ul>li>a:hover,
.navbar-custom-menu>ul>li>a:focus,
.navbar-custom-menu>ul>li>a:active {
filter: brightness(75%);
}
@ -289,7 +293,7 @@ span.form-control {
padding: 5px 8px;
}
.dropdown.col-md-3 > .dropdown-menu {
.dropdown.col-md-3>.dropdown-menu {
width: 91.5%;
left: 15px;
padding: 5px;
@ -318,6 +322,7 @@ span.form-control {
.widget li {
margin-left: 0;
list-style-type: none;
height: 106px;
}
.widget {
@ -364,18 +369,18 @@ span.form-control {
font-size: 11px;
}
.nav-tabs-custom > .nav-tabs.pull-right > li > a.back-btn {
.nav-tabs-custom>.nav-tabs.pull-right>li>a.back-btn {
font-size: 12px;
color: #FFFFFF;
}
.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a,
.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a,
.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a {
.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a,
.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a,
.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a {
white-space: normal;
}
.nav-tabs-custom > .nav-tabs.pull-right > li > a.back-btn:hover {
.nav-tabs-custom>.nav-tabs.pull-right>li>a.back-btn:hover {
cursor: pointer;
color: #72AFD2;
}
@ -531,7 +536,7 @@ span.form-control {
border: 0px;
}
.input-group-addon.no-padding > * {
.input-group-addon.no-padding>* {
border-radius: 0px;
}
@ -557,7 +562,7 @@ input.small-width {
}
@media (max-width: 480px) {
#main_loading > div > i {
#main_loading>div>i {
font-size: 160px;
margin-top: -80px;
}
@ -594,12 +599,13 @@ input.small-width {
}
@media screen and (max-width: 992px) {
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
.table-bordered>thead>tr>th,
.table-bordered>tbody>tr>th,
.table-bordered>tfoot>tr>th,
.table-bordered>thead>tr>td,
.table-bordered>tbody>tr>td,
.table-bordered>tfoot>tr>td {
word-break: break-all;
}
}
@ -656,7 +662,7 @@ input.small-width {
top: -10000px;
}
.box-info ul > li > :last-child {
.box-info ul>li> :last-child {
margin-bottom: 5px;
}
@ -686,7 +692,7 @@ input.small-width {
background: #fff;
}
.component-loader > div {
.component-loader>div {
position: relative;
top: 50%;
color: #333;
@ -715,8 +721,14 @@ input.small-width {
cursor: pointer;
}
.fc-event {
border-top-width: 10px;
.fc-event.fc-h-event,
.fc-event.fc-v-event {
border-top-width: 10px !important;
border-style: solid;
}
.fc-daygrid-dot-event {
padding: 0 !important;
}
.fc-event-primary {
@ -732,21 +744,21 @@ input.small-width {
/* Fix per tabs editor */
.nav-tabs-custom > .nav-tabs > li {
.nav-tabs-custom>.nav-tabs>li {
border-top: 3px solid #ddd;
}
.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a {
.nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type.active>a {
border-right-color: #f4f4f4;
border-right-width: 1px;
border-left-width: 0px;
}
.nav-tabs-custom > .nav-tabs > li.header {
.nav-tabs-custom>.nav-tabs>li.header {
padding: 0px;
}
.nav-tabs-custom > .nav-tabs > li {
.nav-tabs-custom>.nav-tabs>li {
margin-bottom: -1px;
margin-right: 0px;
}
@ -787,32 +799,32 @@ input.small-width {
margin-left: -4.5px;
}
.timeline > li {
.timeline>li {
margin-bottom: 20px;
position: relative;
}
.timeline > li:before,
.timeline > li:after {
.timeline>li:before,
.timeline>li:after {
content: " ";
display: table;
}
.timeline > li:after {
.timeline>li:after {
clear: both;
}
.timeline > li:before,
.timeline > li:after {
.timeline>li:before,
.timeline>li:after {
content: " ";
display: table;
}
.timeline > li:after {
.timeline>li:after {
clear: both;
}
.timeline > li > .timeline-panel {
.timeline>li>.timeline-panel {
width: 50%;
float: left;
border: 1px solid #d4d4d4;
@ -823,20 +835,20 @@ input.small-width {
box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175);
}
.timeline > li.timeline-inverted + li:not(.timeline-inverted),
.timeline > li:not(.timeline-inverted) + li.timeline-inverted {
.timeline>li.timeline-inverted+li:not(.timeline-inverted),
.timeline>li:not(.timeline-inverted)+li.timeline-inverted {
margin-top: -60px;
}
.timeline > li:not(.timeline-inverted) {
.timeline>li:not(.timeline-inverted) {
padding-right: 90px;
}
.timeline > li.timeline-inverted {
.timeline>li.timeline-inverted {
padding-left: 90px;
}
.timeline > li > .timeline-panel:before {
.timeline>li>.timeline-panel:before {
position: absolute;
top: 26px;
right: -15px;
@ -848,7 +860,7 @@ input.small-width {
content: " ";
}
.timeline > li > .timeline-panel:after {
.timeline>li>.timeline-panel:after {
position: absolute;
top: 27px;
right: -14px;
@ -860,7 +872,7 @@ input.small-width {
content: " ";
}
.timeline > li > .timeline-badge {
.timeline>li>.timeline-badge {
color: #fff;
width: 50px;
height: 50px;
@ -879,18 +891,18 @@ input.small-width {
border-bottom-left-radius: 50%;
}
.timeline > li.timeline-inverted > .timeline-panel {
.timeline>li.timeline-inverted>.timeline-panel {
float: right;
}
.timeline > li.timeline-inverted > .timeline-panel:before {
.timeline>li.timeline-inverted>.timeline-panel:before {
border-left-width: 0;
border-right-width: 15px;
left: -15px;
right: auto;
}
.timeline > li.timeline-inverted > .timeline-panel:after {
.timeline>li.timeline-inverted>.timeline-panel:after {
border-left-width: 0;
border-right-width: 14px;
left: -14px;
@ -922,12 +934,12 @@ input.small-width {
color: inherit;
}
.timeline-body > p,
.timeline-body > ul {
.timeline-body>p,
.timeline-body>ul {
margin-bottom: 0;
}
.timeline-body > p + p {
.timeline-body>p+p {
margin-top: 5px;
}
@ -1000,33 +1012,33 @@ div.tip {
display: none;
}
.checkbox-group input[type="checkbox"] + .btn-group > label span {
.checkbox-group input[type="checkbox"]+.btn-group>label span {
/*width: 20px;*/
}
.checkbox-group input[type="checkbox"] + .btn-group {
.checkbox-group input[type="checkbox"]+.btn-group {
width: 100%;
display: flex;
overflow: auto;
}
.checkbox-group input[type="checkbox"] + .btn-group label:last-child {
.checkbox-group input[type="checkbox"]+.btn-group label:last-child {
flex-grow: 100;
}
.checkbox-group input[type="checkbox"] + .btn-group > label span:first-child {
.checkbox-group input[type="checkbox"]+.btn-group>label span:first-child {
display: none;
}
.checkbox-group input[type="checkbox"] + .btn-group > label span:last-child {
.checkbox-group input[type="checkbox"]+.btn-group>label span:last-child {
display: inline-block;
}
.checkbox-group input[type="checkbox"]:checked + .btn-group > label span:first-child {
.checkbox-group input[type="checkbox"]:checked+.btn-group>label span:first-child {
display: inline-block;
}
.checkbox-group input[type="checkbox"]:checked + .btn-group > label span:last-child {
.checkbox-group input[type="checkbox"]:checked+.btn-group>label span:last-child {
display: none;
}
@ -1049,7 +1061,7 @@ div.tip {
}
.control-sidebar.control-sidebar-open,
.control-sidebar.control-sidebar-open + .control-sidebar-bg {
.control-sidebar.control-sidebar-open+.control-sidebar-bg {
right: 0;
}
@ -1078,7 +1090,7 @@ div.tip {
height: 0
}
.local-loader > div {
.local-loader>div {
position: absolute;
top: 100px;
z-index: 2;
@ -1091,7 +1103,8 @@ div.tip {
}
/* Stile Fullcalendar per weekend */
.fc-sat, .fc-sun {
.fc-sat,
.fc-sun {
background-color: rgba(255, 99, 71, 0.6) !important;
}
@ -1107,12 +1120,12 @@ div.tip {
user-select: none;
}
.table-extra-condensed > thead > tr > th,
.table-extra-condensed > tbody > tr > th,
.table-extra-condensed > tfoot > tr > th,
.table-extra-condensed > thead > tr > td,
.table-extra-condensed > tbody > tr > td,
.table-extra-condensed > tfoot > tr > td {
.table-extra-condensed>thead>tr>th,
.table-extra-condensed>tbody>tr>th,
.table-extra-condensed>tfoot>tr>th,
.table-extra-condensed>thead>tr>td,
.table-extra-condensed>tbody>tr>td,
.table-extra-condensed>tfoot>tr>td {
padding: 2px;
}
@ -1127,14 +1140,16 @@ div.tip {
@media (min-width: 768px) {
.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > a > span:not(.pull-right),
.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > .treeview-menu {
.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>a>span:not(.pull-right),
.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>.treeview-menu {
width: 220px;
}
.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container {
.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>a>.pull-right-container {
left: 220px !important;
}
html body.sidebar-mini.sidebar-mini.sidebar-collapse i.fa.fa-user-circle-o.fa-3x.pull-left{
html body.sidebar-mini.sidebar-mini.sidebar-collapse i.fa.fa-user-circle-o.fa-3x.pull-left {
font-size: 2.4em;
}
}

View File

@ -260,6 +260,7 @@ function getDatatablesButtons(table) {
// Pulsante di esportazione in formato PDF
{
extend: 'pdf',
orientation: 'landscape',
footer: true,
exportOptions: {
modifier: {

View File

@ -32,7 +32,7 @@ switch ($resource) {
an_anagrafiche.lat,
an_anagrafiche.lng,
is_bloccata,
CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(an_anagrafiche.deleted_at IS NULL, '', ' (".tr('eliminata').")'), IF(is_bloccata = 1, CONCAT(' (', an_relazioni.descrizione, ')'), '') ) AS descrizione,
CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(an_anagrafiche.deleted_at IS NULL, '', ' (".tr('eliminata').")'), IF(is_bloccata = 1, CONCAT(' (', an_relazioni.descrizione, ')'), ''),' - ', an_anagrafiche.codice ) AS descrizione,
idtipointervento_default AS idtipointervento,
in_tipiintervento.descrizione AS idtipointervento_descrizione,
an_anagrafiche.idzona,
@ -81,6 +81,7 @@ switch ($resource) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%');
}
$data = AJAX::selectResults($query, $where, $filter, $search_fields, $limit, $custom);
@ -105,7 +106,7 @@ switch ($resource) {
case 'fornitori':
$id_azienda = setting('Azienda predefinita');
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(an_anagrafiche.deleted_at IS NULL, '', ' (".tr('eliminata').")')) AS descrizione, idtipointervento_default AS idtipointervento, co_pagamenti.id AS id_pagamento, co_pagamenti.descrizione AS desc_pagamento, banca_acquisti.id AS id_banca_acquisti, CONCAT(banca_acquisti.nome, ' - ', banca_acquisti.iban) AS descrizione_banca_acquisti FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica LEFT JOIN co_pagamenti ON an_anagrafiche.idpagamento_acquisti=co_pagamenti.id LEFT JOIN co_banche banca_acquisti ON co_pagamenti.idconto_acquisti = banca_acquisti.id_pianodeiconti3 AND banca_acquisti.id_anagrafica = ".prepare($id_azienda)." AND banca_acquisti.deleted_at IS NULL AND banca_acquisti.predefined = 1 |where| ORDER BY ragione_sociale";
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(an_anagrafiche.deleted_at IS NULL, '', ' (".tr('eliminata').")'),' - ', an_anagrafiche.codice) AS descrizione, idtipointervento_default AS idtipointervento, co_pagamenti.id AS id_pagamento, co_pagamenti.descrizione AS desc_pagamento, banca_acquisti.id AS id_banca_acquisti, CONCAT(banca_acquisti.nome, ' - ', banca_acquisti.iban) AS descrizione_banca_acquisti FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica LEFT JOIN co_pagamenti ON an_anagrafiche.idpagamento_acquisti=co_pagamenti.id LEFT JOIN co_banche banca_acquisti ON co_pagamenti.idconto_acquisti = banca_acquisti.id_pianodeiconti3 AND banca_acquisti.id_anagrafica = ".prepare($id_azienda)." AND banca_acquisti.deleted_at IS NULL AND banca_acquisti.predefined = 1 |where| ORDER BY ragione_sociale";
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
@ -120,12 +121,13 @@ switch ($resource) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%');
}
break;
case 'vettori':
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(deleted_at IS NULL, '', ' (".tr('eliminata').")')) AS descrizione, idtipointervento_default AS idtipointervento FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(deleted_at IS NULL, '', ' (".tr('eliminata').")'),' - ', an_anagrafiche.codice) AS descrizione, idtipointervento_default AS idtipointervento FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
@ -140,6 +142,7 @@ switch ($resource) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%');
}
break;
@ -149,7 +152,7 @@ switch ($resource) {
* - idanagrafica
*/
case 'agenti':
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(deleted_at IS NULL, '', ' (".tr('eliminata').")')) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(deleted_at IS NULL, '', ' (".tr('eliminata').")'),' - ', an_anagrafiche.codice) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
@ -164,6 +167,7 @@ switch ($resource) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%');
}
$results = AJAX::selectResults($query, $where, $filter, $search, $limit, $custom);
@ -184,7 +188,7 @@ switch ($resource) {
break;
case 'tecnici':
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(deleted_at IS NULL, '', ' (".tr('eliminata').")')) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(deleted_at IS NULL, '', ' (".tr('eliminata').")'),' - ', an_anagrafiche.codice) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
@ -208,12 +212,13 @@ switch ($resource) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%');
}
break;
case 'clienti_fornitori':
$query = "SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT_WS('', ragione_sociale, IF(citta !='' OR provincia != '', CONCAT(' (', citta, IF(provincia!='', CONCAT(' ', provincia), ''), ')'), ''), IF(deleted_at IS NULL, '', ' (".tr('eliminata').")')) AS descrizione, `an_tipianagrafiche`.`descrizione` AS optgroup, idtipointervento_default, an_tipianagrafiche.idtipoanagrafica FROM `an_tipianagrafiche` INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` |where| ORDER BY `optgroup` ASC, ragione_sociale ASC";
$query = "SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT_WS('', ragione_sociale, IF(citta !='' OR provincia != '', CONCAT(' (', citta, IF(provincia!='', CONCAT(' ', provincia), ''), ')'), ''), IF(deleted_at IS NULL, '', ' (".tr('eliminata').")'),' - ', an_anagrafiche.codice) AS descrizione, `an_tipianagrafiche`.`descrizione` AS optgroup, idtipointervento_default, an_tipianagrafiche.idtipoanagrafica FROM `an_tipianagrafiche` INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` |where| ORDER BY `optgroup` ASC, ragione_sociale ASC";
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
@ -229,6 +234,7 @@ switch ($resource) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%');
}
// Aggiunta filtri di ricerca
@ -260,7 +266,7 @@ switch ($resource) {
// Nota Bene: nel campo id viene specificato idtipoanagrafica-idanagrafica -> modulo Utenti e permessi, creazione nuovo utente
case 'anagrafiche':
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT_WS('', ragione_sociale, IF(citta !='' OR provincia != '', CONCAT(' (', citta, IF(provincia!='', CONCAT(' ', provincia), ''), ')'), ''), IF(deleted_at IS NULL, '', ' (".tr('eliminata').")')) AS descrizione, `an_tipianagrafiche`.`descrizione` AS optgroup FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY `optgroup` ASC, ragione_sociale ASC";
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT_WS('', ragione_sociale, IF(citta !='' OR provincia != '', CONCAT(' (', citta, IF(provincia!='', CONCAT(' ', provincia), ''), ')'), ''), IF(deleted_at IS NULL, '', ' (".tr('eliminata').")'),' - ', an_anagrafiche.codice) AS descrizione, `an_tipianagrafiche`.`descrizione` AS optgroup FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY `optgroup` ASC, ragione_sociale ASC";
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
@ -274,6 +280,7 @@ switch ($resource) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%');
}
// Aggiunta filtri di ricerca

View File

@ -331,9 +331,9 @@ $vista = setting('Vista dashboard');
if ($vista == 'mese') {
$def = 'dayGridMonth';
} elseif ($vista == 'giorno') {
$def = 'timeGridWeek';
$def = 'resourceTimeGridDay';
} elseif ($vista == 'settimana') {
$def = 'listWeek';
$def = 'timeGridWeek';
} else {
$def = 'listWeek';
}
@ -415,10 +415,9 @@ globals.dashboard = {
$("#elenco-promemoria").html(data);
$("#external-events .fc-event").each(function () {
new Draggable( document.getElementById( $(this).attr("id") ), {
zIndex: 999,
new Draggable( this, {
create: false,
revert: true,
revertDuration: 0,
eventData: {
title: $.trim($(this).text()),
stick: false
@ -515,15 +514,16 @@ globals.dashboard = {
headerToolbar: {
left: "prev,next today",
center: "title",
right: "dayGridMonth,timeGridWeek,listWeek"
right: "dayGridMonth,timeGridWeek,resourceTimeGridDay,listWeek"
},
eventDisplay: "block",
timeFormat: globals.dashboard.timeFormat,
slotLabelFormat: globals.dashboard.timeFormat,
slotDuration: "00:15:00",
snapDuration: globals.snapDuration,
initialView: "dayGridMonth",
minTime: globals.dashboard.start_time,
maxTime: globals.dashboard.end_time,
initialView: globals.dashboard.style,
slotMinTime: globals.dashboard.start_time,
slotMaxTime: globals.dashboard.end_time,
lazyFetching: true,
selectMirror: true,
eventLimit: false, // allow "more" link when too many events
@ -531,7 +531,7 @@ globals.dashboard = {
loading: function (isLoading, view) {
if (isLoading) {
$("#tiny-loader").fadeIn();
$("#tiny-loader").show();
} else {
$("#tiny-loader").hide();
}
@ -555,7 +555,6 @@ globals.dashboard = {
openModal(globals.dashboard.drop.title, globals.dashboard.drop.url + "&data=" + data + "&orario_inizio=" + ora_dal + "&orario_fine=" + ora_al + "&ref=dashboard&idcontratto=" + info.draggedEl.dataset.idcontratto + "&" + name + "=" + info.draggedEl.dataset.id + "&id_tecnico=" + info.draggedEl.dataset.id_tecnico);
// Ricaricamento dei dati alla chiusura del modal
$(this).remove();
$("#modals > div").on("hidden.bs.modal", function () {
globals.dashboard.calendar.refetchEvents();
@ -563,6 +562,9 @@ globals.dashboard = {
carica_interventi_da_pianificare(mese);
});
},
eventReceive: function(info){
info.revert();
},
selectable: globals.dashboard.write_permission,
select: function (info) { // info
@ -669,7 +671,7 @@ if(isMobile() && setting('Utilizzare i tooltip sul calendario')){
echo '
eventContent: function (info) {
return { html: "<div style=\"width:100%; background:" + info.event.backgroundColor + ";\">" + info.event.title + "</div>" };
return { html: info.event.title };
},
eventDidMount: function(info){

View File

@ -690,8 +690,7 @@ echo '
$("#modals > div").modal("hide");
// Aggiornamento elenco interventi da pianificare
$("#calendar").fullCalendar("refetchEvents");
$("#calendar").fullCalendar("render");
globals.dashboard.calendar.refetchEvents();
}
// Se l\'aggiunta intervento proviene dai contratti, faccio il submit via ajax e ricarico la tabella dei contratti

View File

@ -24,6 +24,7 @@ use Models\Cache;
use Models\Module;
use Models\Plugin;
use Util\FileSystem;
use Carbon\Carbon;
$id = post('id');
@ -267,6 +268,20 @@ switch (filter('op')) {
break;
case 'svuota-cache-hooks':
// Svuota cache hooks
$database->table('zz_cache')
->update(['expire_at' => Carbon::now()->subMinutes(1)]);
// Messaggio informativo
flash()->info(tr('Cache hooks svuotata!', []));
echo json_encode([]);
break;
case 'disabilita-hook':
$id = filter('id');

View File

@ -89,14 +89,57 @@ foreach ($gruppi as $modulo => $hooks) {
</tr>';
}
echo '
</tbody>';
}
echo '<tr><td colspan="3"><p>&nbsp;</p><button type="button" class="btn btn-danger btn-xs pull-right" onclick="svuotaCacheHooks(this)">
<i class="fa fa-trash" title="'.tr('Svuota cache degli hooks').'"></i> '.tr('Svuota cache').'</button>
</td></tr>';
echo '
</tbody>';
echo '
</table>
<script>
function svuotaCacheHooks(button){
swal({
title: "'.tr('Svuota la cache degli hooks', []).'",
html: "'.tr('Sei sicuro di voler svuotare la cache degli hooks?', []).'",
type: "warning",
showCancelButton: true,
confirmButtonText: "'.tr('Continua').'"
}).then(function (result) {
let restore = buttonLoading(button);
$.ajax({
url: globals.rootdir + "/actions.php",
type: "POST",
dataType: "JSON",
data: {
id_module: globals.id_module,
op: "svuota-cache-hooks",
},
success: function (response) {
buttonRestore(button, restore);
renderMessages();
},
error: function() {
buttonRestore(button, restore);
swal({
type: "error",
title: globals.translations.ajax.error.title,
text: globals.translations.ajax.error.text,
});
}
});
})
}
function disabilitaHook(button){
const riga = $(button).closest("tr");
const id = riga.data("id");
@ -105,10 +148,10 @@ function disabilitaHook(button){
const nome_tipo = "hook";
swal({
title: "'.tr('Disabilitare il _TYPE_?', [
title: "'.tr('Disabilita _TYPE_', [
'_TYPE_' => '" + nome_tipo + "',
]).'",
html: "'.tr('Sei sicuro di voler disabilitare il _TYPE_ _NAME_?', [
html: "'.tr('Sei sicuro di voler disabilitare l\'_TYPE_ _NAME_?', [
'_TYPE_' => '" + nome_tipo + "',
'_NAME_' => '" + nome + "',
]).'",
@ -152,10 +195,10 @@ function abilitaHook(button) {
const nome_tipo = "hook";
swal({
title: "'.tr('Abilitare il _TYPE_?', [
title: "'.tr('Abilita _TYPE_', [
'_TYPE_' => '" + nome_tipo + "',
]).'",
html: "'.tr('Sei sicuro di voler abilitare il _TYPE_ _NAME_?', [
html: "'.tr('Sei sicuro di voler abilitare l\'_TYPE_ _NAME_?', [
'_TYPE_' => '" + nome_tipo + "',
'_NAME_' => '" + nome + "',
]).'",

View File

@ -245,11 +245,11 @@ class WidgetManager implements ManagerInterface
// Generazione del codice HTML
if (!empty($widgets)) {
$row_max = count($widgets);
if ($row_max > 4) {
$row_max = 4;
} elseif ($row_max < 2) {
$row_max = 2;
$row_max = setting('Numero massimo Widget per riga');
if ($row_max > 6) {
$row_max = 6;
} elseif ($row_max < 1) {
$row_max = 1;
}
$result = '

View File

@ -226,7 +226,7 @@ class Update
}
/**
* Esegue una precisa sezione dell'aggiornamento fa fare, partendo dalle query e passando poi allo script relativo.
* Esegue una precisa sezione dell'aggiornamento da fare, partendo dalle query e passando poi allo script relativo.
* Prima dell'esecuzione dello script viene inoltre eseguita un'operazione di normalizzazione dei campi delle tabelle del database finalizzata a generalizzare la gestione delle informazioni per l'API: vengono quindi aggiunti i campi <b>created_at</b> e, se permesso dalla versione di MySQL, <b>updated_at</b> ad ogni tabella registrata del software.
*
* @param int $rate Numero di singole query da eseguire dell'aggiornamento corrente

View File

@ -105,4 +105,48 @@ ALTER TABLE `an_mansioni` CHANGE `created_at` `created_at` TIMESTAMP NULL DEFAUL
ALTER TABLE `an_mansioni` CHANGE `updated_at` `updated_at` TIMESTAMP on update CURRENT_TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP;
ALTER TABLE `em_mansioni_template` CHANGE `created_at` `created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP;
ALTER TABLE `em_mansioni_template` CHANGE `updated_at` `updated_at` TIMESTAMP on update CURRENT_TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP;
ALTER TABLE `em_mansioni_template` CHANGE `updated_at` `updated_at` TIMESTAMP on update CURRENT_TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP;
-- Fix query vista Pagamenti
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`pagamenti`.`tipo`' WHERE `zz_modules`.`name` = 'Pagamenti' AND `zz_views`.`name` = 'Codice pagamento';
UPDATE `zz_modules` SET `options` = "SELECT
|select|
FROM
`co_pagamenti`
LEFT JOIN(SELECT `fe_modalita_pagamento`.`codice`, CONCAT(`fe_modalita_pagamento`.`codice`, ' - ', `fe_modalita_pagamento`.`descrizione`) AS tipo FROM `fe_modalita_pagamento`) AS pagamenti ON `pagamenti`.`codice` = `co_pagamenti`.`codice_modalita_pagamento_fe`
WHERE
1=1
GROUP BY
`descrizione`
HAVING
2=2" WHERE `name` = 'Pagamenti';
-- Aggiunta impostazione Numero massimo widget per colonna
INSERT INTO zz_settings(nome, valore, tipo, editable, sezione) VALUES ('Numero massimo Widget per riga','6','list[1,2,3,4,6]','1','Generali');
-- Modifica widget Magazzino
UPDATE `zz_widgets` SET `query` = 'SELECT REPLACE(REPLACE(REPLACE(FORMAT(SUM(qta),2), ",", "#"), ".", ","), "#", ".") AS dato FROM mg_articoli WHERE qta>0 AND deleted_at IS NULL AND servizio=0 AND 1=1' WHERE `zz_widgets`.`name` = 'Articoli in magazzino';
UPDATE `zz_widgets` SET `text` = 'Unità' WHERE `zz_widgets`.`name` = 'Articoli in magazzino';
UPDATE `zz_widgets` SET `text` = 'Valore' WHERE `zz_widgets`.`name` = 'Valore magazzino';
-- Aggiunta colonna Banca azienda in Scadenzario
INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `html_format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES ('18', 'Banca azienda', '`banca`.`nome`', '18', '1', '0', '0', '0', NULL, NULL, '0', '0', '0');
UPDATE `zz_modules` SET `options` = "
SELECT
|select|
FROM
`co_scadenziario`
LEFT JOIN `co_documenti` ON `co_scadenziario`.`iddocumento` = `co_documenti`.`id`
LEFT JOIN (SELECT `co_banche`.`nome`AS nome, `co_banche`.`id` FROM `co_banche` INNER JOIN `co_documenti` ON `co_documenti`.`id_banca_azienda` = `co_banche`.`id`)AS banca ON `co_scadenziario`.`iddocumento` = `co_documenti`.`id`
LEFT JOIN `an_anagrafiche` ON `co_scadenziario`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id`
LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`
LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`
LEFT JOIN (SELECT `zz_operations`.`id_email`, `zz_operations`.`id_record` FROM `zz_operations` INNER JOIN `em_emails` ON `zz_operations`.`id_email` = `em_emails`.`id` INNER JOIN `em_templates` ON `em_emails`.`id_template` = `em_templates`.`id` INNER JOIN `zz_modules` ON `zz_operations`.`id_module` = `zz_modules`.`id` WHERE `zz_modules`.`name` = 'Scadenzario' AND `zz_operations`.`op` = 'send-email' GROUP BY `zz_operations`.`id_record`) AS `email` ON `email`.`id_record` = `co_scadenziario`.`id`
WHERE
1=1 AND (`co_statidocumento`.`descrizione` IS NULL OR `co_statidocumento`.`descrizione` IN('Emessa','Parzialmente pagato','Pagato'))
HAVING
2=2
ORDER BY
`scadenza` ASC" WHERE `name` = 'Scadenzario';