This commit is contained in:
loviuz 2020-08-06 11:36:45 +02:00
commit c923196524
28 changed files with 244 additions and 4432 deletions

View File

@ -1,396 +0,0 @@
/*
* The MIT License
* Copyright (c) 2012 Matias Meno <m@tias.me>
*/
@-webkit-keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@-moz-keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@-webkit-keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@-moz-keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@-webkit-keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
@-moz-keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
@keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
.dropzone, .dropzone * {
box-sizing: border-box; }
.dropzone {
min-height: 150px;
border: 2px solid rgba(0, 0, 0, 0.3);
background: white;
padding: 20px 20px; }
.dropzone.dz-clickable {
cursor: pointer; }
.dropzone.dz-clickable * {
cursor: default; }
.dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * {
cursor: pointer; }
.dropzone.dz-started .dz-message {
display: none; }
.dropzone.dz-drag-hover {
border-style: solid; }
.dropzone.dz-drag-hover .dz-message {
opacity: 0.5; }
.dropzone .dz-message {
text-align: center;
margin: 2em 0; }
.dropzone .dz-message .dz-button {
background: none;
color: inherit;
border: none;
padding: 0;
font: inherit;
cursor: pointer;
outline: inherit; }
.dropzone .dz-preview {
position: relative;
display: inline-block;
vertical-align: top;
margin: 16px;
min-height: 100px; }
.dropzone .dz-preview:hover {
z-index: 1000; }
.dropzone .dz-preview:hover .dz-details {
opacity: 1; }
.dropzone .dz-preview.dz-file-preview .dz-image {
border-radius: 20px;
background: #999;
background: linear-gradient(to bottom, #eee, #ddd); }
.dropzone .dz-preview.dz-file-preview .dz-details {
opacity: 1; }
.dropzone .dz-preview.dz-image-preview {
background: white; }
.dropzone .dz-preview.dz-image-preview .dz-details {
-webkit-transition: opacity 0.2s linear;
-moz-transition: opacity 0.2s linear;
-ms-transition: opacity 0.2s linear;
-o-transition: opacity 0.2s linear;
transition: opacity 0.2s linear; }
.dropzone .dz-preview .dz-remove {
font-size: 14px;
text-align: center;
display: block;
cursor: pointer;
border: none; }
.dropzone .dz-preview .dz-remove:hover {
text-decoration: underline; }
.dropzone .dz-preview:hover .dz-details {
opacity: 1; }
.dropzone .dz-preview .dz-details {
z-index: 20;
position: absolute;
top: 0;
left: 0;
opacity: 0;
font-size: 13px;
min-width: 100%;
max-width: 100%;
padding: 2em 1em;
text-align: center;
color: rgba(0, 0, 0, 0.9);
line-height: 150%; }
.dropzone .dz-preview .dz-details .dz-size {
margin-bottom: 1em;
font-size: 16px; }
.dropzone .dz-preview .dz-details .dz-filename {
white-space: nowrap; }
.dropzone .dz-preview .dz-details .dz-filename:hover span {
border: 1px solid rgba(200, 200, 200, 0.8);
background-color: rgba(255, 255, 255, 0.8); }
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) {
overflow: hidden;
text-overflow: ellipsis; }
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {
border: 1px solid transparent; }
.dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {
background-color: rgba(255, 255, 255, 0.4);
padding: 0 0.4em;
border-radius: 3px; }
.dropzone .dz-preview:hover .dz-image img {
-webkit-transform: scale(1.05, 1.05);
-moz-transform: scale(1.05, 1.05);
-ms-transform: scale(1.05, 1.05);
-o-transform: scale(1.05, 1.05);
transform: scale(1.05, 1.05);
-webkit-filter: blur(8px);
filter: blur(8px); }
.dropzone .dz-preview .dz-image {
border-radius: 20px;
overflow: hidden;
width: 120px;
height: 120px;
position: relative;
display: block;
z-index: 10; }
.dropzone .dz-preview .dz-image img {
display: block; }
.dropzone .dz-preview.dz-success .dz-success-mark {
-webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }
.dropzone .dz-preview.dz-error .dz-error-mark {
opacity: 1;
-webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }
.dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {
pointer-events: none;
opacity: 0;
z-index: 500;
position: absolute;
display: block;
top: 50%;
left: 50%;
margin-left: -27px;
margin-top: -27px; }
.dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg {
display: block;
width: 54px;
height: 54px; }
.dropzone .dz-preview.dz-processing .dz-progress {
opacity: 1;
-webkit-transition: all 0.2s linear;
-moz-transition: all 0.2s linear;
-ms-transition: all 0.2s linear;
-o-transition: all 0.2s linear;
transition: all 0.2s linear; }
.dropzone .dz-preview.dz-complete .dz-progress {
opacity: 0;
-webkit-transition: opacity 0.4s ease-in;
-moz-transition: opacity 0.4s ease-in;
-ms-transition: opacity 0.4s ease-in;
-o-transition: opacity 0.4s ease-in;
transition: opacity 0.4s ease-in; }
.dropzone .dz-preview:not(.dz-processing) .dz-progress {
-webkit-animation: pulse 6s ease infinite;
-moz-animation: pulse 6s ease infinite;
-ms-animation: pulse 6s ease infinite;
-o-animation: pulse 6s ease infinite;
animation: pulse 6s ease infinite; }
.dropzone .dz-preview .dz-progress {
opacity: 1;
z-index: 1000;
pointer-events: none;
position: absolute;
height: 16px;
left: 50%;
top: 50%;
margin-top: -8px;
width: 80px;
margin-left: -40px;
background: rgba(255, 255, 255, 0.9);
-webkit-transform: scale(1);
border-radius: 8px;
overflow: hidden; }
.dropzone .dz-preview .dz-progress .dz-upload {
background: #333;
background: linear-gradient(to bottom, #666, #444);
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 0;
-webkit-transition: width 300ms ease-in-out;
-moz-transition: width 300ms ease-in-out;
-ms-transition: width 300ms ease-in-out;
-o-transition: width 300ms ease-in-out;
transition: width 300ms ease-in-out; }
.dropzone .dz-preview.dz-error .dz-error-message {
display: block; }
.dropzone .dz-preview.dz-error:hover .dz-error-message {
opacity: 1;
pointer-events: auto; }
.dropzone .dz-preview .dz-error-message {
pointer-events: none;
z-index: 1000;
position: absolute;
display: block;
display: none;
opacity: 0;
-webkit-transition: opacity 0.3s ease;
-moz-transition: opacity 0.3s ease;
-ms-transition: opacity 0.3s ease;
-o-transition: opacity 0.3s ease;
transition: opacity 0.3s ease;
border-radius: 8px;
font-size: 13px;
top: 130px;
left: -10px;
width: 140px;
background: #be2626;
background: linear-gradient(to bottom, #be2626, #a92222);
padding: 0.5em 1.2em;
color: white; }
.dropzone .dz-preview .dz-error-message:after {
content: '';
position: absolute;
top: -6px;
left: 64px;
width: 0;
height: 0;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #be2626; }

File diff suppressed because it is too large Load Diff

View File

@ -36,11 +36,10 @@ $(document).ready(function () {
$('.nav-tabs a').click(function (e) {
$(this).tab('show');
var scrollmem = $('body').scrollTop() || $('html').scrollTop();
let scroll = $('body').scrollTop() || $('html').scrollTop();
window.location.hash = this.hash;
$('html,body').scrollTop(scrollmem);
$('html,body').scrollTop(scroll);
});
// Fix per la visualizzazione di Datatables all'interno dei tab Bootstrap

View File

@ -26,7 +26,7 @@ $(document).ready(function () {
cursor: 'move',
stop: function (event, ui) {
var order = $(this).sortable('toArray').toString();
let order = $(this).sortable('toArray').toString();
$.post(globals.rootdir + "/actions.php?id_module=" + globals.order_manager_id, {
op: 'sort_modules',

View File

@ -1,40 +1,40 @@
// Librerie NPM richieste per l'esecuzione
var gulp = require('gulp');
var merge = require('merge-stream');
var del = require('del');
var debug = require('gulp-debug');
const gulp = require('gulp');
const merge = require('merge-stream');
const del = require('del');
const debug = require('gulp-debug');
var mainBowerFiles = require('main-bower-files');
var gulpIf = require('gulp-if');
const mainBowerFiles = require('main-bower-files');
const gulpIf = require('gulp-if');
// Minificatori
var minifyJS = require('gulp-uglify');
var minifyCSS = require('gulp-clean-css');
var minifyJSON = require('gulp-json-minify');
const minifyJS = require('gulp-uglify');
const minifyCSS = require('gulp-clean-css');
const minifyJSON = require('gulp-json-minify');
// Interpretatori CSS
var sass = require('gulp-sass');
var less = require('gulp-less');
var stylus = require('gulp-stylus');
var autoprefixer = require('gulp-autoprefixer');
const sass = require('gulp-sass');
const less = require('gulp-less');
const stylus = require('gulp-stylus');
const autoprefixer = require('gulp-autoprefixer');
// Concatenatore
var concat = require('gulp-concat');
const concat = require('gulp-concat');
// Altro
var flatten = require('gulp-flatten');
var rename = require('gulp-rename');
const flatten = require('gulp-flatten');
const rename = require('gulp-rename');
// Release
var glob = require('globby');
var md5File = require('md5-file')
var fs = require('fs');
var archiver = require('archiver');
var shell = require('shelljs');
var inquirer = require('inquirer');
const glob = require('globby');
const md5File = require('md5-file')
const fs = require('fs');
const archiver = require('archiver');
const shell = require('shelljs');
const inquirer = require('inquirer');
// Configurazione
var config = {
const config = {
production: 'assets/dist', // Cartella di destinazione
development: 'assets/src', // Cartella dei file di personalizzazione
debug: false,
@ -63,14 +63,14 @@ const JS = gulp.parallel(() => {
// Elaborazione e minificazione di JS personalizzati
function srcJS() {
var js = gulp.src([
const js = gulp.src([
config.development + '/' + config.paths.js + '/*.js',
])
.pipe(concat('custom.min.js'))
.pipe(minifyJS())
//.pipe(minifyJS())
.pipe(gulp.dest(config.production + '/' + config.paths.js));
var indip = gulp.src([
const indip = gulp.src([
config.development + '/' + config.paths.js + '/functions/*.js',
])
.pipe(concat('functions.min.js'))
@ -80,7 +80,6 @@ function srcJS() {
return merge(js, indip);
}
// Elaborazione e minificazione di CSS
const CSS = gulp.parallel(() => {
return gulp.src(mainBowerFiles('**/*.{css,scss,less,styl}', {
@ -99,7 +98,7 @@ const CSS = gulp.parallel(() => {
// Elaborazione e minificazione di CSS personalizzati
function srcCSS() {
var css = gulp.src([
const css = gulp.src([
config.development + '/' + config.paths.css + '/*.{css,scss,less,styl}',
])
.pipe(gulpIf('*.scss', sass(), gulpIf('*.less', less(), gulpIf('*.styl', stylus()))))
@ -111,7 +110,7 @@ function srcCSS() {
.pipe(flatten())
.pipe(gulp.dest(config.production + '/' + config.paths.css));
var print = gulp.src([
const print = gulp.src([
config.development + '/' + config.paths.css + '/print/*.{css,scss,less,styl}',
config.bowerDirectory + '/fullcalendar/fullcalendar.print.css',
], {
@ -126,7 +125,7 @@ function srcCSS() {
.pipe(flatten())
.pipe(gulp.dest(config.production + '/' + config.paths.css));
var themes = gulp.src([
const themes = gulp.src([
config.development + '/' + config.paths.css + '/themes/*.{css,scss,less,styl}',
config.main.bowerDirectory + '/admin-lte/dist/css/skins/_all-skins.min.css',
])
@ -147,7 +146,7 @@ function srcCSS() {
const images = srcImages;
/*
gulp.parallel(() => {*/
//var src = mainBowerFiles('**/*.{jpg,png,jpeg,gif}', {
//const src = mainBowerFiles('**/*.{jpg,png,jpeg,gif}', {
/*
paths: config.main,
debugging: config.debug,
@ -191,8 +190,8 @@ function srcFonts() {
function ckeditor() {
return gulp.src([
config.main.bowerDirectory + '/ckeditor/{adapters,lang,skins,plugins}/**/*.{js,json,css,png}',
config.main.bowerDirectory + '/ckeditor/*.{js,css}',
config.main.bowerDirectory + '/ckeditor4/{adapters,lang,skins,plugins}/**/*.{js,json,css,png}',
config.main.bowerDirectory + '/ckeditor4/*.{js,css}',
])
.pipe(gulp.dest(config.production + '/' + config.paths.js + '/ckeditor'));
}
@ -239,7 +238,7 @@ function csrf() {
}
function pdfjs() {
var web = gulp.src([
const web = gulp.src([
config.main.bowerDirectory + '/pdf/web/**/*',
'!' + config.main.bowerDirectory + '/pdf/web/cmaps/*',
'!' + config.main.bowerDirectory + '/pdf/web/*.map',
@ -247,7 +246,7 @@ function pdfjs() {
])
.pipe(gulp.dest(config.production + '/pdfjs/web'));
var build = gulp.src([
const build = gulp.src([
config.main.bowerDirectory + '/pdf/build/*',
'!' + config.main.bowerDirectory + '/pdf/build/*.map',
])
@ -262,7 +261,7 @@ function i18n() {
config.main.bowerDirectory + '/**/{i18n,lang,locale,locales}/*.{js,json}',
config.development + '/' + config.paths.js + '/i18n/**/*.{js,json}',
'!' + config.main.bowerDirectory + '/**/{src,plugins}/**',
'!' + config.main.bowerDirectory + '/ckeditor/**',
'!' + config.main.bowerDirectory + '/ckeditor4/**',
'!' + config.main.bowerDirectory + '/summernote/**',
'!' + config.main.bowerDirectory + '/jquery-ui/**',
])

View File

@ -55,12 +55,10 @@ switch (post('op')) {
break;
case 'update_position':
$ids = explode(',', $_POST['order']);
$order = 0;
$order = explode(',', post('order', true));
foreach ($ids as $id) {
$dbo->query('UPDATE `zz_checklist_items` SET `order` = '.prepare($order).' WHERE id = '.prepare($id));
++$order;
foreach ($order as $i => $id_riga) {
$dbo->query('UPDATE `zz_checklist_items` SET `order` = '.prepare($i).' WHERE id='.prepare($id_riga));
}
break;

View File

@ -282,12 +282,10 @@ $riga = $contratto->getRiga($type, $id_riga);
break;
case 'update_position':
$orders = explode(',', $_POST['order']);
$order = 0;
$order = explode(',', post('order', true));
foreach ($orders as $idriga) {
$dbo->query('UPDATE `co_righe_contratti` SET `order`='.prepare($order).' WHERE id='.prepare($idriga));
++$order;
foreach ($order as $i => $id_riga) {
$dbo->query('UPDATE `co_righe_contratti` SET `order` = '.prepare($i).' WHERE id='.prepare($id_riga));
}
break;

View File

@ -25,7 +25,7 @@ foreach ($righe as $riga) {
echo '
<tr data-id="'.$riga->id.'" data-type="'.get_class($riga).'">
<td class="text-center">
'.(($riga->order) + 1).'
'.($riga->order + 1).'
</td>';
// Descrizione
@ -252,18 +252,14 @@ $(document).ready(function() {
dropOnEmpty: true,
scroll: true,
update: function(event, ui) {
var order = "";
$(".table tr[data-id]").each( function() {
order += ","+$(this).data("id");
});
order = order.replace(/^,/, "");
let order = $(".table tr[data-id]").toArray().map(a => $(a).data("id"))
$.post("'.$rootdir.'/actions.php", {
$.post(globals.rootdir + "/actions.php", {
id: ui.item.data("id"),
id_module: '.$id_module.',
id_record: '.$id_record.',
op: "update_position",
order: order,
order: order.join(","),
});
}
});

View File

@ -386,12 +386,10 @@ switch (post('op')) {
break;
case 'update_position':
$orders = explode(',', $_POST['order']);
$order = 0;
$order = explode(',', post('order', true));
foreach ($orders as $idriga) {
$dbo->query('UPDATE `dt_righe_ddt` SET `order`='.prepare($order).' WHERE id='.prepare($idriga));
++$order;
foreach ($order as $i => $id_riga) {
$dbo->query('UPDATE `dt_righe_ddt` SET `order` = '.prepare($i).' WHERE id='.prepare($id_riga));
}
break;

View File

@ -40,7 +40,7 @@ foreach ($righe as $riga) {
echo '
<tr data-id="'.$riga->id.'" data-type="'.get_class($riga).'" '.$extra.'>
<td class="text-center">
'.(($riga->order) + 1).'
'.($riga->order + 1).'
</td>
<td>';
@ -330,18 +330,14 @@ $(document).ready(function() {
dropOnEmpty: true,
scroll: true,
update: function(event, ui) {
var order = "";
$(".table tr[data-id]").each( function() {
order += ","+$(this).data("id");
});
order = order.replace(/^,/, "");
let order = $(".table tr[data-id]").toArray().map(a => $(a).data("id"))
$.post("'.$rootdir.'/actions.php", {
$.post(globals.rootdir + "/actions.php", {
id: ui.item.data("id"),
id_module: '.$id_module.',
id_record: '.$id_record.',
op: "update_position",
order: order,
order: order.join(","),
});
}
});

View File

@ -626,12 +626,10 @@ switch (post('op')) {
break;
case 'update_position':
$orders = explode(',', $_POST['order']);
$order = 0;
$order = explode(',', post('order', true));
foreach ($orders as $idriga) {
$dbo->query('UPDATE `co_righe_documenti` SET `order`='.prepare($order).' WHERE id='.prepare($idriga));
++$order;
foreach ($order as $i => $id_riga) {
$dbo->query('UPDATE `co_righe_documenti` SET `order` = '.prepare($i).' WHERE id='.prepare($id_riga));
}
break;

View File

@ -71,7 +71,7 @@ foreach ($righe as $riga) {
echo '
<tr data-id="'.$riga->id.'" data-type="'.get_class($riga).'" '.$extra.'>
<td class="text-center">
'.(($riga->order) + 1).'
'.($riga->order + 1).'
</td>
<td>';
@ -429,18 +429,14 @@ $(document).ready(function() {
dropOnEmpty: true,
scroll: true,
update: function(event, ui) {
var order = "";
$(".table tr[data-id]").each( function() {
order += ","+$(this).data("id");
});
order = order.replace(/^,/, "");
let order = $(".table tr[data-id]").toArray().map(a => $(a).data("id"))
$.post("'.$rootdir.'/actions.php", {
$.post(globals.rootdir + "/actions.php", {
id: ui.item.data("id"),
id_module: '.$id_module.',
id_record: '.$id_record.',
op: "update_position",
order: order,
order: order.join(","),
});
}
});

View File

@ -303,12 +303,10 @@ switch (post('op')) {
break;
case 'update_position':
$orders = explode(',', $_POST['order']);
$order = 0;
$order = explode(',', post('order', true));
foreach ($orders as $idriga) {
$dbo->query('UPDATE `or_righe_ordini` SET `order`='.prepare($order).' WHERE id='.prepare($idriga));
++$order;
foreach ($order as $i => $id_riga) {
$dbo->query('UPDATE `or_righe_ordini` SET `order` = '.prepare($i).' WHERE id='.prepare($id_riga));
}
break;

View File

@ -43,7 +43,7 @@ foreach ($righe as $riga) {
echo '
<tr data-id="'.$riga->id.'" data-type="'.get_class($riga).'" '.$extra.'>
<td class="text-center">
'.(($riga->order) + 1).'
'.($riga->order + 1).'
</td>
<td>';
@ -338,18 +338,14 @@ $(document).ready(function() {
dropOnEmpty: true,
scroll: true,
update: function(event, ui) {
var order = "";
$(".table tr[data-id]").each( function() {
order += ","+$(this).data("id");
});
order = order.replace(/^,/, "");
let order = $(".table tr[data-id]").toArray().map(a => $(a).data("id"))
$.post("'.$rootdir.'/actions.php", {
$.post(globals.rootdir + "/actions.php", {
id: ui.item.data("id"),
id_module: '.$id_module.',
id_record: '.$id_record.',
op: "update_position",
order: order,
order: order.join(","),
});
}
});

View File

@ -182,4 +182,17 @@ switch (post('op')) {
flash()->info(tr('Chiusura bilancio completata!'));
break;
case 'aggiorna_reddito':
$start = post('start');
$end = post('end');
$id_conto = post('id_conto');
$dbo->query('UPDATE co_movimenti
INNER JOIN co_pianodeiconti3 ON co_pianodeiconti3.id = co_movimenti.idconto
SET co_movimenti.totale_reddito = (co_movimenti.totale * co_pianodeiconti3.percentuale_deducibile / 100)
WHERE co_pianodeiconti3.id = '.prepare($id_conto).' AND
co_movimenti.data BETWEEN '.prepare($start).' AND '.prepare($end));
break;
}

View File

@ -2,13 +2,13 @@
include_once __DIR__.'/../../core.php';
$idconto = get('id');
$id_conto_lvl2 = get('id');
?><form action="<?php echo $rootdir; ?>/editor.php?id_module=<?php echo Modules::get('Piano dei conti')['id']; ?>" method="post">
<input type="hidden" name="op" value="add">
<input type="hidden" name="backto" value="record-list">
<input type="hidden" name="idpianodeiconti2" value="<?php echo $idconto; ?>">
<input type="hidden" name="idpianodeiconti2" value="<?php echo $id_conto_lvl2; ?>">
<div class="row">

View File

@ -0,0 +1,39 @@
<?php
include_once __DIR__.'/../../core.php';
$id_conto = get('id');
// Informazioni sul conto
$query = 'SELECT *, idpianodeiconti2 AS idpianodeiconti FROM co_pianodeiconti3 WHERE id='.prepare($id_conto);
$conto = $dbo->fetchOne($query);
echo '
<p>'.tr('Seleziona il periodo temporale per cui aggiornare il totale reddito del Conto "_DESC_" secondo la percentuale deducibile _PERC_%',[
'_DESC_' => $conto['descrizione'],
'_PERC_' => numberFormat($conto['percentuale_deducibile']),
]).'.</p>
<form action="" method="post">
<input type="hidden" name="op" value="aggiorna_reddito">
<input type="hidden" name="backto" value="record-list">
<input type="hidden" name="id_conto" value="'.$conto['id'].'">
<div class="row">
<div class="col-md-6">
{[ "type": "date", "label": "'.tr('Inizio del periodo').'", "name": "start", "required": 1, "value": "'.$_SESSION['period_start'].'" ]}
</div>
<div class="col-md-6">
{[ "type": "date", "label": "'.tr('Fine del periodo').'", "name": "end", "required": 1, "value": "'.$_SESSION['period_end'].'" ]}
</div>
</div>
<div class="pull-right">
<button type="submit" class="btn btn-primary">
<i class="fa fa-refresh"></i> '.tr('Aggiorna').'
</button>
</div>
<div class="clearfix"></div>
</form>
<script>$(document).ready(init)</script>';

View File

@ -12,17 +12,17 @@ if ($bilancio_gia_aperto) {
$msg .= ' '.tr('I movimenti di apertura già esistenti verranno annullati e ricreati').'.';
$btn_class = 'btn-default';
}
?>
echo '
<div class="text-right">
<button type="button" class="btn btn-lg <?php echo $btn_class; ?>" data-op="apri-bilancio" data-title="<?php echo tr('Apertura bilancio'); ?>" data-backto="record-list" data-msg="<?php echo $msg; ?>" data-button="<?php echo tr('Riprendi saldi'); ?>" data-class="btn btn-lg btn-warning" onclick="message( this );"><i class="fa fa-folder-open"></i> <?php echo tr('Apertura bilancio'); ?></button>
</div>
<button type="button" class="btn btn-lg '.$btn_class.'" data-op="apri-bilancio" data-title="'.tr('Apertura bilancio').'" data-backto="record-list" data-msg="'.$msg.'" data-button="'.tr('Riprendi saldi').'" data-class="btn btn-lg btn-warning" onclick="message( this );">
<i class="fa fa-folder-open"></i> '.tr('Apertura bilancio').'
</button>
</div>';
<?php
// Livello 1
$query1 = 'SELECT * FROM `co_pianodeiconti1` ORDER BY id ASC';
$primo_livello = $dbo->fetchArray($query1);
foreach ($primo_livello as $conto_primo) {
$totale_attivita = [];
$totale_passivita = [];
@ -68,7 +68,7 @@ foreach ($primo_livello as $conto_primo) {
foreach ($terzo_livello as $conto_terzo) {
// Se il conto non ha documenti collegati posso eliminarlo
$movimenti = $conto_terzo['numero_movimenti'];
$numero_movimenti = $conto_terzo['numero_movimenti'];
$totale_conto = $conto_terzo['totale'];
$totale_conto = ($conto_primo['descrizione'] == 'Patrimoniale') ? $totale_conto : -$totale_conto;
@ -93,56 +93,60 @@ foreach ($primo_livello as $conto_primo) {
<td>';
// Possibilità di esplodere i movimenti del conto
if (!empty($movimenti)) {
if (!empty($numero_movimenti)) {
echo '
<a href="javascript:;" class="btn btn-primary btn-xs plus-btn"><i class="fa fa-plus"></i></a>';
<a href="javascript:;" class="btn btn-primary btn-xs plus-btn"><i class="fa fa-plus"></i></a>';
}
// Span con i pulsanti
echo '
<span class="hide tools pull-right">';
<span class="hide tools pull-right">';
// Possibilità di visionare l'anagrafica
$id_anagrafica = $conto_terzo['idanagrafica'];
$anagrafica_deleted = $conto_terzo['deleted_at'];
echo isset($id_anagrafica) ? Modules::link('Anagrafiche', $id_anagrafica, ' <i title="'.(isset($anagrafica_deleted) ? 'Anagrafica eliminata' : 'Visualizza anagrafica').'" class="btn btn-'.(isset($anagrafica_deleted) ? 'danger' : 'primary').' btn-xs fa fa-user" ></i>', null) : '';
// Stampa mastrino
if (!empty($movimenti)) {
echo '
'.Prints::getLink('Mastrino', $conto_terzo['id'], 'btn-info btn-xs', '', null, 'lev=3');
if (isset($id_anagrafica)) {
echo Modules::link('Anagrafiche', $id_anagrafica, ' <i title="'.(isset($anagrafica_deleted) ? 'Anagrafica eliminata' : 'Visualizza anagrafica').'" class="btn btn-'.(isset($anagrafica_deleted) ? 'danger' : 'primary').' btn-xs fa fa-user" ></i>');
}
// Possibilità di modificare il nome del conto livello3
// Stampa mastrino
if (!empty($numero_movimenti)) {
echo '
'.Prints::getLink('Mastrino', $conto_terzo['id'], 'btn-info btn-xs', '', null, 'lev=3');
}
// Pulsante per aggiornare il totale reddito del conto di livello 3
echo '
<button type="button" class="btn btn-warning btn-xs" data-toggle="tooltip" title="Modifica questo conto..." onclick="launch_modal(\'Modifica conto\', \''.$structure->fileurl('edit_conto.php').'?id='.$conto_terzo['id'].'\');">
<i class="fa fa-edit"></i>
</button>';
<button type="button" class="btn btn-info btn-xs" onclick="aggiornaReddito('.$conto_terzo['id'].')">
<i class="fa fa-refresh"></i>
</button>';
// Pulsante per modificare il nome del conto di livello 3
echo '
<button type="button" class="btn btn-warning btn-xs" data-toggle="tooltip" title="Modifica questo conto..." onclick="launch_modal(\'Modifica conto\', \''.$structure->fileurl('edit_conto.php').'?id='.$conto_terzo['id'].'\');">
<i class="fa fa-edit"></i>
</button>';
// Possibilità di eliminare il conto se non ci sono movimenti collegati
if ($numero_movimenti <= 0) {
echo '
<a class="btn btn-danger btn-xs ask" data-toggle="tooltip" title="'.tr('Elimina').'" data-backto="record-list" data-op="del" data-idconto="'.$conto_terzo['id'].'">
<i class="fa fa-trash"></i>
</a>';
<a class="btn btn-danger btn-xs ask" data-toggle="tooltip" title="'.tr('Elimina').'" data-backto="record-list" data-op="del" data-idconto="'.$conto_terzo['id'].'">
<i class="fa fa-trash"></i>
</a>';
}
echo ' </span>';
echo '
</span>';
// Span con info del conto
echo '
<span style="'.(!empty($movimenti) ? '' : 'opacity: 0.5;').'" class="clickable" id="movimenti-'.$conto_terzo['id'].'">';
echo '
&nbsp;'.$conto_secondo['numero'].'.'.$conto_terzo['numero'].' '.$conto_terzo['descrizione'];
echo ' </span>';
echo '
<span style="'.(!empty($numero_movimenti) ? '' : 'opacity: 0.5;').'" class="clickable" id="movimenti-'.$conto_terzo['id'].'">
&nbsp;'.$conto_secondo['numero'].'.'.$conto_terzo['numero'].' '.$conto_terzo['descrizione'].'
</span>
<div id="conto_'.$conto_terzo['id'].'" style="display:none;"></div>
</td>
<td width="100" class="text-right" valign="top" style="'.(!empty($movimenti) ? '' : 'opacity: 0.5;').'">
<td width="100" class="text-right" valign="top" style="'.(!empty($numero_movimenti) ? '' : 'opacity: 0.5;').'">
'.moneyFormat(sum($totale_conto), 2).'
</td>
</tr>';
@ -153,7 +157,7 @@ foreach ($primo_livello as $conto_primo) {
// Possibilità di inserire un nuovo conto
echo '
<button type="button" class="btn btn-xs btn-primary" data-toggle="tooltip" title="'.tr('Aggiungi un nuovo conto...').'" onclick="add_conto('.$conto_secondo['id'].')">
<button type="button" class="btn btn-xs btn-primary" data-toggle="tooltip" title="'.tr('Aggiungi un nuovo conto...').'" onclick="aggiungiConto('.$conto_secondo['id'].')">
<i class="fa fa-plus-circle"></i>
</button>
@ -291,62 +295,67 @@ if ($bilancio_gia_chiuso) {
$msg .= ' '.tr('I movimenti di apertura già esistenti verranno annullati e ricreati').'.';
$btn_class = 'btn-default';
}
?>
echo '
<div class="text-right">
<button type="button" class="btn btn-lg <?php echo $btn_class; ?>" data-op="chiudi-bilancio" data-title="<?php echo tr('Chiusura bilancio'); ?>" data-backto="record-list" data-msg="<?php echo $msg; ?>" data-button="<?php echo tr('Chiudi bilancio'); ?>" data-class="btn btn-lg btn-primary" onclick="message( this );"><i class="fa fa-folder"></i> <?php echo tr('Chiusura bilancio'); ?></button>
<button type="button" class="btn btn-lg '.$btn_class.'" data-op="chiudi-bilancio" data-title="'.tr('Chiusura bilancio').'" data-backto="record-list" data-msg="'.$msg.'" data-button="'.tr('Chiudi bilancio').'" data-class="btn btn-lg btn-primary" onclick="message( this );">
<i class="fa fa-folder"></i> '.tr('Chiusura bilancio').'
</button>
</div>
<script>
var tr = '';
$(document).ready(function() {
$("tr").each(function() {
$(this).on("mouseover", function() {
$(this).find(".tools").removeClass("hide");
$(document).ready(function() {
$("tr").each(function() {
$(this).on("mouseover", function() {
$(this).find(".tools").removeClass("hide");
});
$(this).on("mouseleave", function() {
$(this).find(".tools").addClass("hide");
});
});
$(this).on("mouseleave", function() {
$(this).find(".tools").addClass("hide");
});
$("span[id^=movimenti-]").each(function() {
$(this).on("click", function() {
let movimenti = $(this).parent().find("div[id^=conto_]");
if(!movimenti.html()) {
let id_conto = $(this).attr("id").split("-").pop();
caricaMovimenti(movimenti.attr("id"), id_conto);
} else {
movimenti.slideToggle();
}
$(this).find(".plus-btn i").toggleClass("fa-plus").toggleClass("fa-minus");
});
})
});
$("span[id^=movimenti-]").each(function() {
$(this).on("click", function() {
var movimenti = $(this).parent().find("div[id^=conto_]");
function aggiungiConto(id_conto_lvl2) {
openModal("'.tr('Nuovo conto').'", "'.$structure->fileurl('add_conto.php').'?id=" + id_conto_lvl2);
}
if(!movimenti.html()) {
var id_conto = $(this).attr("id").split("-").pop();
function caricaMovimenti(selector, id_conto) {
$("#main_loading").show();
load_movimenti(movimenti.attr("id"), id_conto);
} else {
movimenti.slideToggle();
$.ajax({
url: "'.$structure->fileurl('dettagli_conto.php').'",
type: "get",
data: {
id_module: globals.id_module,
id_conto: id_conto,
},
success: function(data){
$("#" + selector).html(data)
.slideToggle();
$("#main_loading").fadeOut();
}
$(this).find(".plus-btn i").toggleClass("fa-plus").toggleClass("fa-minus");
});
})
});
}
function add_conto(id) {
launch_modal("<?php echo tr('Nuovo conto'); ?>", "<?php echo $structure->fileurl('add_conto.php'); ?>?id=" + id);
}
function load_movimenti(selector, id_conto) {
$("#main_loading").show();
$.ajax({
url: "<?php echo $structure->fileurl('dettagli_conto.php'); ?>",
type: "get",
data: {
id_module: globals.id_module,
id_conto: id_conto,
},
success: function(data){
$("#" + selector).html(data);
$("#" + selector).slideToggle();
$("#main_loading").fadeOut();
}
});
}
</script>
function aggiornaReddito(id_conto){
openModal("'.tr('Aggiorna totale reddito').'", "'.$structure->fileurl('aggiorna_reddito.php').'?id=" + id_conto)
}
</script>';

View File

@ -327,12 +327,10 @@ switch (post('op')) {
break;
case 'update_position':
$orders = explode(',', $_POST['order']);
$order = 0;
$order = explode(',', post('order', true));
foreach ($orders as $idriga) {
$dbo->query('UPDATE `co_righe_preventivi` SET `order`='.prepare($order).' WHERE id='.prepare($idriga));
++$order;
foreach ($order as $i => $id_riga) {
$dbo->query('UPDATE `co_righe_preventivi` SET `order` = '.prepare($i).' WHERE id='.prepare($id_riga));
}
break;

View File

@ -24,7 +24,7 @@ foreach ($righe as $riga) {
echo '
<tr data-id="'.$riga->id.'" data-type="'.get_class($riga).'">
<td class="text-center">
'.(($riga->order) + 1).'
'.($riga->order + 1).'
</td>';
// Descrizione
@ -278,18 +278,14 @@ $(document).ready(function() {
dropOnEmpty: true,
scroll: true,
update: function(event, ui) {
var order = "";
$(".table tr[data-id]").each( function() {
order += ","+$(this).data("id");
});
order = order.replace(/^,/, "");
let order = $(".table tr[data-id]").toArray().map(a => $(a).data("id"))
$.post("'.$rootdir.'/actions.php", {
$.post(globals.rootdir + "/actions.php", {
id: ui.item.data("id"),
id_module: '.$id_module.',
id_record: '.$id_record.',
op: "update_position",
order: order,
order: order.join(","),
});
}
});

View File

@ -150,13 +150,10 @@ switch (filter('op')) {
break;
case 'update_position':
$order = explode(',', post('order', true));
$orders = explode(',', $_POST['order']);
$order = 0;
foreach ($orders as $idriga) {
$dbo->query('UPDATE `zz_views` SET `order`='.prepare($order).' WHERE id='.prepare($idriga));
++$order;
foreach ($order as $i => $id_riga) {
$dbo->query('UPDATE `zz_views` SET `order` = '.prepare($i).' WHERE id='.prepare($id_riga));
}
break;

View File

@ -242,7 +242,7 @@ echo '
order = order.replace(/^,/, "");
$.post("'.$rootdir.'/actions.php", {
$.post(globals.rootdir + "/actions.php", {
id: ui.item.data("id"),
id_module: '.$id_module.',
id_record: '.$id_record.',

View File

@ -8,13 +8,14 @@
"bootstrap-colorpicker": "2.5.1",
"bootstrap-daterangepicker": "^2.1.25",
"chart.js": "^2.7.0",
"ckeditor": "git://github.com/ckeditor/ckeditor-releases.git#full/latest",
"ckeditor4": "^4.14.1",
"components-jqueryui": "^1.12.1",
"core-js": "^2.5.1",
"datatables.net-bs": "^1.10.15",
"datatables.net-buttons-bs": "^1.3.1",
"datatables.net-scroller-bs": "^1.4.2",
"datatables.net-select-bs": "^1.2.2",
"dropzone": "^5.7.2",
"eonasdan-bootstrap-datetimepicker": "^4.17.47",
"font-awesome": "^4.7.0",
"fullcalendar": "^3.4.0",
@ -77,7 +78,7 @@
"almond": {
"ignore": true
},
"ckeditor": {
"ckeditor4": {
"ignore": true
},
"chart.js": {
@ -136,6 +137,12 @@
"datatables.net-select-bs": {
"main": "css/select.bootstrap.css"
},
"dropzone": {
"main": [
"dist/dropzone.css",
"dist/dropzone.js"
]
},
"font-awesome": {
"main": [
"css/font-awesome.min.css",

View File

@ -818,11 +818,11 @@ class FatturaElettronica
}
// Bollo (2.1.1.6)
$bollo = $documento->getBollo();
if (!empty($bollo)) {
$riga_bollo = $documento->rigaBollo;
if (!empty($riga_bollo)) {
$result['DatiBollo'] = [
'BolloVirtuale' => 'SI',
'ImportoBollo' => $bollo,
'ImportoBollo' => $riga_bollo->totale,
];
}

View File

@ -615,7 +615,14 @@ class Validator
"'" => '&apos;',
'<' => '&lt;',
'>' => '&gt;',
// Caratteri personalizzati
'€' => 'euro',
'—' => '-',
'…' => '...',
]);
$output = preg_replace('/[[:^print:]]/', ' ', $output);
}
// Riduzione delle dimensioni

View File

@ -19,7 +19,7 @@ class Clienti extends AppResource
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica
WHERE an_tipianagrafiche.descrizione = 'Cliente' AND an_anagrafiche.deleted_at IS NULL";
$sincronizza_lavorati = setting('Sincronizza Clienti per cui il Tecnico ha lavorato in passato');
$sincronizza_lavorati = setting('Sincronizza solo i Clienti per cui il Tecnico ha lavorato in passato');
if (!empty($sincronizza_lavorati)) {
$query .= '
AND an_anagrafiche.idanagrafica IN (

View File

@ -147,7 +147,7 @@ INSERT INTO `zz_api_resources` (`id`, `version`, `type`, `resource`, `class`, `e
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES
(NULL, 'Google Maps API key', '', 'string', '1', 'Applicazione', 1, ''),
(NULL, 'Mostra prezzi', '1', 'boolean', '1', 'Applicazione', 2, ''),
(NULL, 'Sincronizza Clienti per cui il Tecnico ha lavorato in passato', '1', 'boolean', '1', 'Applicazione', 3, ''),
(NULL, 'Sincronizza solo i Clienti per cui il Tecnico ha lavorato in passato', '1', 'boolean', '1', 'Applicazione', 3, ''),
(NULL, 'Mesi per lo storico delle Attività', '6', 'integer', '1', 'Applicazione', 3, '');
-- Impostazioni relative gli stati delle Attività