Merge branch 'master' into 2.4
This commit is contained in:
commit
655532c241
17
.htaccess
17
.htaccess
|
@ -1,10 +1,17 @@
|
|||
# Remove autoindex
|
||||
IndexIgnore *
|
||||
## Options -Indexes
|
||||
<IfModule mod_autoindex.c>
|
||||
IndexIgnore */*
|
||||
</IfModule>
|
||||
|
||||
# Try to set PHP settings
|
||||
php_value upload_max_filesize 20M
|
||||
php_value post_max_size 20M
|
||||
<IfModule mod_php5.c>
|
||||
php_value upload_max_filesize 20M
|
||||
php_value post_max_size 20M
|
||||
</IfModule>
|
||||
<IfModule mod_php7.c>
|
||||
php_value upload_max_filesize 20M
|
||||
php_value post_max_size 20M
|
||||
</IfModule>
|
||||
|
||||
# Deny access to files starting with dot
|
||||
<FilesMatch "^\.">
|
||||
|
@ -24,7 +31,7 @@ php_value post_max_size 20M
|
|||
Deny from all
|
||||
</Files>
|
||||
|
||||
# Disable OSM indexing of php, html, htm, pdf files
|
||||
# Disable indexing of php, html, htm, pdf files
|
||||
<IfModule mod_headers.c>
|
||||
<FilesMatch "\.(php|html|htm|pdf|log)$">
|
||||
Header set X-Robots-Tag: "noindex"
|
||||
|
|
52
CHANGELOG.md
52
CHANGELOG.md
|
@ -4,13 +4,20 @@ Tutti i maggiori cambiamenti di questo progetto saranno documentati in questo fi
|
|||
|
||||
Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://keepachangelog.com/), e il progetto segue il [Semantic Versioning](http://semver.org/) per definire le versioni delle release.
|
||||
|
||||
<!-- TOC depthFrom:2 depthTo:2 orderedList:false updateOnSave:true withLinks:true -->
|
||||
|
||||
- [2.3 (In sviluppo)](#23-in-sviluppo)
|
||||
- [Aggiunto (Added)](#aggiunto-added)
|
||||
- [Modificato (Changed)](#modificato-changed)
|
||||
- [Deprecato (Deprecated)](#deprecato-deprecated)
|
||||
- [Rimosso (Removed)](#rimosso-removed)
|
||||
- [Fixed](#fixed)
|
||||
- [Sicurezza (Security)](#sicurezza-security)
|
||||
- [2.2 (2016-11-10)](#22-2016-11-10)
|
||||
- [Aggiunto (Added)](#aggiunto-added)
|
||||
- [Fixed](#fixed)
|
||||
- [2.1 (2015-04-02)](#21-2015-04-02)
|
||||
|
||||
<!-- /TOC -->
|
||||
- [Aggiunto (Added)](#aggiunto-added)
|
||||
- [Modificato (Changed)](#modificato-changed)
|
||||
- [Fixed](#fixed)
|
||||
|
||||
## 2.3 (In sviluppo)
|
||||
|
||||
|
@ -91,27 +98,28 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
|
|||
### Rimosso (Removed)
|
||||
|
||||
- Funzioni PHP non utilizzate (`lib/functions.php`)
|
||||
- coolDate
|
||||
- cut_text
|
||||
- data_italiana
|
||||
- dateadd
|
||||
- full_html_entity_decode
|
||||
- gestione_sessioni
|
||||
- get_module_name
|
||||
- get_module_name_by_id
|
||||
- get_text_around
|
||||
- get_user_browser
|
||||
- getAvailableModules
|
||||
- getLastPathSegment
|
||||
- getSistemaOperativo
|
||||
- getVersion
|
||||
- is_id_ok
|
||||
- mytruncate
|
||||
- read_file
|
||||
- RemoveNonASCIICharacters
|
||||
- show_error_messages
|
||||
- show_info_messages
|
||||
- write_error
|
||||
- write_ok
|
||||
- getAvailableModules
|
||||
- read_file
|
||||
- dateadd
|
||||
- show_info_messages
|
||||
- show_error_messages
|
||||
- get_module_name
|
||||
- mytruncate
|
||||
- get_user_browser
|
||||
- RemoveNonASCIICharacters
|
||||
- full_html_entity_decode
|
||||
- data_italiana
|
||||
- gestione_sessioni
|
||||
- get_text_around
|
||||
- coolDate
|
||||
- get_module_name_by_id
|
||||
- cut_text
|
||||
- getLastPathSegment
|
||||
- cut_text
|
||||
- Funzioni JS non utilizzate (`lib/functionsjs.php`)
|
||||
- Cartelle e file non più utilizzati (`lib/jscripts`, `widgets`, `share`, `lib/dbo.class.php`, `lib/widgets.class.php`, ...)
|
||||
|
||||
|
|
|
@ -88,7 +88,7 @@ Se siete inoltre interessati a supporto e assistenza professionali, li potete ri
|
|||
|
||||
### Github
|
||||
|
||||
Nel caso si stia utilizzando la versione direttamente ottenuta dalla repository di Github, è necessario eseguire i seguenti comandi da linea di comando per completare le dipendenze PHP (tramite [Composer](https://getcomposer.org)) e gli asssets (tramite [Yarn](https://yarnpkg.com)) del progetto.
|
||||
Nel caso si stia utilizzando la versione direttamente ottenuta dalla repository di Github, è necessario eseguire i seguenti comandi da linea di comando per completare le dipendenze PHP (tramite [Composer](https://getcomposer.org)) e gli assets (tramite [Yarn](https://yarnpkg.com)) del progetto.
|
||||
|
||||
```bash
|
||||
php composer.phar install
|
||||
|
|
|
@ -237,8 +237,8 @@ switch ($op) {
|
|||
}
|
||||
|
||||
if (!empty($search)) {
|
||||
$search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%');
|
||||
$search_fields[] = 'codice LIKE '.prepare('%'.$search.'%');
|
||||
$search_fields[] = 'mg_articoli.descrizione LIKE '.prepare('%'.$search.'%');
|
||||
$search_fields[] = 'mg_articoli.codice LIKE '.prepare('%'.$search.'%');
|
||||
}
|
||||
|
||||
$wh = '';
|
||||
|
@ -259,8 +259,12 @@ switch ($op) {
|
|||
$rs = $dbo->fetchArray($query);
|
||||
foreach ($rs as $r) {
|
||||
if ($prev != $r['id_sottocategoria']) {
|
||||
$categoria = $dbo->fetchArray('SELECT `nome` FROM `mg_categorie` WHERE `id`='.prepare($r['id_categoria']))[0]['nome'];
|
||||
|
||||
$sottocategoria = $dbo->fetchArray('SELECT `nome` FROM `mg_categorie` WHERE `id`='.prepare($r['id_sottocategoria']))[0]['nome'];
|
||||
|
||||
$prev = $r['id_sottocategoria'];
|
||||
$results[] = ['text' => $dbo->fetchArray('SELECT `nome` FROM `mg_categorie` WHERE `id`='.prepare($r['id_categoria']))[0]['nome'], 'children' => []];
|
||||
$results[] = ['text' => $categoria.' ('.(!empty($r['id_sottocategoria']) ? $sottocategoria : '-').')', 'children' => []];
|
||||
}
|
||||
|
||||
if (empty($r['idiva_vendita'])) {
|
||||
|
|
2
core.php
2
core.php
|
@ -127,7 +127,7 @@ $dbo = Database::getConnection();
|
|||
// Controllo sulla presenza dei permessi di accesso basilari
|
||||
$continue = $dbo->isInstalled() && !Update::isUpdateAvailable() && (Auth::check() || API::isAPIRequest());
|
||||
|
||||
if (!$continue && slashes($_SERVER['SCRIPT_FILENAME']) != slashes(DOCROOT.'/index.php')) {
|
||||
if (!$continue && getURLPath() != slashes(ROOTDIR.'/index.php')) {
|
||||
if (Auth::check()) {
|
||||
Auth::logout();
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ Se siete inoltre interessati a supporto e assistenza professionali, li potete ri
|
|||
|
||||
### Github
|
||||
|
||||
Nel caso si stia utilizzando la versione direttamente ottenuta dalla repository di Github, è necessario eseguire i seguenti comandi da linea di comando per completare le dipendenze PHP (tramite [Composer](https://getcomposer.org)) e gli asssets (tramite [Yarn](https://yarnpkg.com)) del progetto.
|
||||
Nel caso si stia utilizzando la versione direttamente ottenuta dalla repository di Github, è necessario eseguire i seguenti comandi da linea di comando per completare le dipendenze PHP (tramite [Composer](https://getcomposer.org)) e gli assets (tramite [Yarn](https://yarnpkg.com)) del progetto.
|
||||
|
||||
```bash
|
||||
php composer.phar install
|
||||
|
|
|
@ -4,14 +4,23 @@ currentMenu: stampe
|
|||
|
||||
# Stampe
|
||||
|
||||
<!-- TOC depthFrom:2 depthTo:6 orderedList:false updateOnSave:true withLinks:true -->
|
||||
- [MPDF](#mpdf)
|
||||
- [HTML2PDF](#html2pdf)
|
||||
- [Struttura](#struttura)
|
||||
- [pdfgen.php](#pdfgenphp)
|
||||
- [pdfgen_variables.php (INCLUDE)](#pdfgenvariablesphp-include)
|
||||
- [Struttura interna](#struttura-interna)
|
||||
|
||||
- [Struttura](#struttura)
|
||||
- [pdfgen.php](#pdfgenphp)
|
||||
- [pdfgen_variables.php (INCLUDE)](#pdfgen_variablesphp-include)
|
||||
- [Struttura interna](#struttura-interna)
|
||||
|
||||
<!-- /TOC -->
|
||||
## MPDF
|
||||
|
||||
**Attenzione**: come indicato nel secondo punto in http://mpdf.github.io/tables/auto-layout-algorithm.html, MPDF effettua un resizing del font nel caso il contenuto di una cella superi l'altezza totale di una pagina.
|
||||
Fino a quel punto, il rendering funziona perfettamente.
|
||||
|
||||
Nel caso fosse per esempio aumentare le dimensioni del font, si consiglia di effettuare alcuni test per controllare se le tabelle vengono renderizzate nel modo corretto e previsto.
|
||||
|
||||
|
||||
## HTML2PDF
|
||||
|
||||
### Struttura
|
||||
|
||||
|
@ -31,7 +40,7 @@ La cartella _templates_ contiene tutti i template per la creazione dei PDF relat
|
|||
|
||||
.
|
||||
└── contratti
|
||||
├── contratto_body.html (OPEN) - Struttura di base del PDF
|
||||
├── contratto.html (OPEN) - Contenitore personalizzato della struttura del PDF
|
||||
├── logo_azienda.jpg (HTML) - Logo dell'azienda specifico per il PDF
|
||||
└── pdfgen.contratti.php (INCLUDE) - Individuazione delle informazioni da visualizzare e generazione della loro struttura
|
||||
├── contratto_body.html - Struttura di base del PDF
|
||||
├── contratto.html - Contenitore personalizzato della struttura del PDF
|
||||
├── logo_azienda.jpg - Logo dell'azienda specifico per il PDF
|
||||
└── pdfgen.contratti.php - Individuazione delle informazioni da visualizzare e generazione della loro struttura
|
||||
|
|
43
gulpfile.js
43
gulpfile.js
|
@ -25,6 +25,7 @@ var concat = require('gulp-concat');
|
|||
// Altro
|
||||
var flatten = require('gulp-flatten');
|
||||
var rename = require('gulp-rename');
|
||||
var inquirer = require('inquirer');
|
||||
|
||||
// Configurazione
|
||||
var config = {
|
||||
|
@ -208,8 +209,8 @@ gulp.task('chartjs', function () {
|
|||
|
||||
gulp.task('viewerjs', function () {
|
||||
gulp.src([
|
||||
config.main.bowerDirectory + '/viewerjs/ViewerJS/**/*',
|
||||
'!' + config.main.bowerDirectory + '/viewerjs/ViewerJS/example.local.css',
|
||||
config.main.bowerDirectory + '/ViewerJS_release/ViewerJS/**/*',
|
||||
'!' + config.main.bowerDirectory + '/ViewerJS_release/ViewerJS/example.local.css',
|
||||
])
|
||||
.pipe(gulp.dest(config.production + '/viewerjs'));
|
||||
});
|
||||
|
@ -248,8 +249,7 @@ gulp.task('release', function () {
|
|||
var archiver = require('archiver');
|
||||
var fs = require('fs');
|
||||
|
||||
shell.exec('git rev-parse --short HEAD > REVISION');
|
||||
|
||||
// Rimozione file indesiderati
|
||||
del([
|
||||
'./vendor/tecnickcom/tcpdf/fonts/*',
|
||||
'!./vendor/tecnickcom/tcpdf/fonts/*helvetica*',
|
||||
|
@ -259,6 +259,7 @@ gulp.task('release', function () {
|
|||
'./vendor/maximebf/debugbar/src/DebugBar/Resources/vendor/*',
|
||||
]);
|
||||
|
||||
// Impostazione dello zip
|
||||
var output = fs.createWriteStream('./release.zip');
|
||||
var archive = archiver('zip');
|
||||
|
||||
|
@ -272,6 +273,7 @@ gulp.task('release', function () {
|
|||
|
||||
archive.pipe(output);
|
||||
|
||||
// Aggiunta dei file
|
||||
archive.glob('**/*', {
|
||||
dot: true,
|
||||
ignore: [
|
||||
|
@ -290,12 +292,43 @@ gulp.task('release', function () {
|
|||
]
|
||||
});
|
||||
|
||||
// Eccezioni
|
||||
archive.file('backup/.htaccess');
|
||||
archive.file('files/.htaccess');
|
||||
archive.file('files/my_impianti/componente.ini');
|
||||
archive.file('logs/.htaccess');
|
||||
|
||||
archive.finalize();
|
||||
// Aggiunta del commit corrente nel file REVISION
|
||||
archive.append(shell.exec('git rev-parse --short HEAD', {
|
||||
silent: true
|
||||
}).stdout, {
|
||||
name: 'REVISION'
|
||||
});
|
||||
|
||||
// Opzioni sulla release
|
||||
inquirer.prompt([{
|
||||
type: 'input',
|
||||
name: 'version',
|
||||
message: 'Numero di versione:',
|
||||
}, {
|
||||
type: 'confirm',
|
||||
name: 'beta',
|
||||
message: 'Versione beta?',
|
||||
default: false,
|
||||
}]).then(function (result) {
|
||||
version = result.version;
|
||||
|
||||
if (result.beta) {
|
||||
version += 'beta';
|
||||
}
|
||||
|
||||
archive.append(version, {
|
||||
name: 'VERSION'
|
||||
});
|
||||
|
||||
// Completamento dello zip
|
||||
archive.finalize();
|
||||
});;
|
||||
});
|
||||
|
||||
// Pulizia
|
||||
|
|
|
@ -106,7 +106,7 @@ if (filter('action') == 'do_update') {
|
|||
|
||||
if (isset($_SESSION['osm_email'])) {
|
||||
if (!empty($_SESSION['osm_email'])) {
|
||||
$dbo->query('UPDATE `zz_users` SET `email`='.preare($_SESSION['osm_email'])." WHERE `username`='admin' ");
|
||||
$dbo->query('UPDATE `zz_users` SET `email`='.prepare($_SESSION['osm_email'])." WHERE `username`='admin' ");
|
||||
}
|
||||
unset($_SESSION['osm_email']);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
// trigger_error('Funzione deprecata!', E_USER_DEPRECATED);
|
||||
// trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
|
||||
|
||||
/**
|
||||
* Sostituisce ", < e > per evitare hacking del database e risolvere vari problemi.
|
||||
|
@ -1033,7 +1033,7 @@ function filelist_and_upload($id_module, $id_record, $label = 'Nuovo allegato:',
|
|||
*/
|
||||
function deltree($path)
|
||||
{
|
||||
trigger_error('Funzione deprecata!', E_USER_DEPRECATED);
|
||||
trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
|
||||
|
||||
$path = realpath($path);
|
||||
|
||||
|
@ -1054,3 +1054,46 @@ function deltree($path)
|
|||
return unlink($path);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Carica gli script JavaScript inclusi nell'array indicato.
|
||||
*
|
||||
* @param array $jscript_modules_array
|
||||
*/
|
||||
function loadJscriptModules($array)
|
||||
{
|
||||
trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
|
||||
|
||||
$result = '';
|
||||
|
||||
foreach ($array as $js) {
|
||||
$result .= '
|
||||
<script type="text/javascript" charset="utf-8" src="'.$js.'"></script>';
|
||||
}
|
||||
|
||||
echo $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Carica i file di stile CSS inclusi nell'array indicato.
|
||||
*
|
||||
* @param array $css_modules_array
|
||||
*/
|
||||
function loadCSSModules($array)
|
||||
{
|
||||
trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
|
||||
|
||||
$result = '';
|
||||
|
||||
foreach ($array as $css) {
|
||||
if (is_array($css)) {
|
||||
$result .= '
|
||||
<link rel="stylesheet" type="text/css" media="'.$css['media'].'" href="'.$css['dir'].'"/>';
|
||||
} else {
|
||||
$result .= '
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="'.$css.'"/>';
|
||||
}
|
||||
}
|
||||
|
||||
echo $result;
|
||||
}
|
||||
|
|
|
@ -871,10 +871,28 @@ function getConfig()
|
|||
}
|
||||
|
||||
/**
|
||||
* Restituisce se l'user-agent (browser web) è una versione mobile
|
||||
* Restituisce se l'user-agent (browser web) è una versione mobile.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
function isMobile() {
|
||||
return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
|
||||
function isMobile()
|
||||
{
|
||||
return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER['HTTP_USER_AGENT']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce il percorso derivante dal file in esecuzione.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function getURLPath()
|
||||
{
|
||||
$path = $_SERVER['SCRIPT_FILENAME'];
|
||||
$prefix = $_SERVER['DOCUMENT_ROOT'];
|
||||
|
||||
if (substr($path, 0, strlen($prefix)) == $prefix) {
|
||||
$path = substr($path, strlen($prefix));
|
||||
}
|
||||
|
||||
return slashes($path);
|
||||
}
|
||||
|
|
|
@ -207,7 +207,7 @@ if ($fornitore) {
|
|||
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "<?php echo tr('Indirizzo di fatturazione'); ?>", "name": "idsede_fatturazione", "values": "query=SELECT id, CONCAT_WS(', ', nomesede, citta) AS descrizione FROM an_sedi WHERE idanagrafica='$id_record' UNION SELECT '0' AS id, 'Sede legale' AS descrizione ORDER BY descrizione", "value": "$idsede_fatturazione$" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Indirizzo di fatturazione'); ?>", "name": "idsede_fatturazione", "values": "query=SELECT id, IF(citta = '', nomesede, CONCAT_WS(', ', nomesede, citta)) AS descrizione FROM an_sedi WHERE idanagrafica='<?php echo $id_record; ?>' UNION SELECT '0' AS id, 'Sede legale' AS descrizione ORDER BY descrizione", "value": "$idsede_fatturazione$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
|
|
|
@ -22,7 +22,7 @@ unset($_SESSION['superselect']['id_categoria']);
|
|||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "<?php echo tr('Inserisci la subcategoria:'); ?>", "name": "subcategoria", "value": "", "ajax-source": "sottocategorie", "icon-after": "add|<?php echo Modules::get('Categorie')['id']; ?>||hide" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Inserisci la subcategoria:'); ?>", "name": "subcategoria", "id": "subcategoria_add", "value": "", "ajax-source": "sottocategorie", "icon-after": "add|<?php echo Modules::get('Categorie')['id']; ?>||hide" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -36,7 +36,7 @@ unset($_SESSION['superselect']['id_categoria']);
|
|||
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
var sub = $('#add_form').find('#subcategoria');
|
||||
var sub = $('#add_form').find('#subcategoria_add');
|
||||
var original = sub.parent().find(".input-group-addon button").data("href");
|
||||
|
||||
$('#add_form').find('#categoria').change( function(){
|
||||
|
|
|
@ -324,7 +324,7 @@ switch (post('op')) {
|
|||
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot - $diritto_chiamata).', '.prepare($sconto).', '.prepare($sconto).", 'UNT', 'ore', ".prepare($ore).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))';
|
||||
$dbo->query($query);
|
||||
|
||||
//Aggiunta diritto di chiamata se >0
|
||||
// Aggiunta diritto di chiamata se >0
|
||||
if ($diritto_chiamata > 0) {
|
||||
// Calcolo iva
|
||||
$query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva);
|
||||
|
@ -389,16 +389,16 @@ switch (post('op')) {
|
|||
}
|
||||
|
||||
// Collego in fattura eventuali articoli collegati all'intervento
|
||||
$rs2 = $dbo->fetchArray('SELECT mg_articoli_interventi.*, idarticolo FROM mg_articoli_interventi INNER JOIN mg_articoli ON mg_articoli_interventi.idarticolo=mg_articoli.id WHERE idintervento='.prepare($idintervento).' AND ( idintervento NOT IN(SELECT idintervento FROM co_righe_preventivi WHERE idpreventivo IN(SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) AND idintervento NOT IN(SELECT idintervento FROM co_righe_contratti WHERE idcontratto IN(SELECT idcontratto FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) )');
|
||||
$rs2 = $dbo->fetchArray('SELECT mg_articoli_interventi.*, idarticolo FROM mg_articoli_interventi INNER JOIN mg_articoli ON mg_articoli_interventi.idarticolo=mg_articoli.id WHERE idintervento='.prepare($idintervento).' AND (idintervento NOT IN(SELECT idintervento FROM co_righe_preventivi WHERE idpreventivo IN(SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) AND idintervento NOT IN(SELECT idintervento FROM co_righe_contratti WHERE idcontratto IN(SELECT idcontratto FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) )');
|
||||
for ($i = 0; $i < sizeof($rs2); ++$i) {
|
||||
$riga = add_articolo_infattura($id_record, $rs2[$i]['idarticolo'], $rs2[$i]['descrizione'], $idiva, $rs2[$i]['qta'], $rs2[$i]['prezzo_vendita'] * $rs2[$i]['qta'], $rs2[$i]['sconto'], $rs2[$i]['sconto_unitario'], $rs2[$i]['tipo_sconto'], $idintervento);
|
||||
$riga = add_articolo_infattura($id_record, $rs2[$i]['idarticolo'], $rs2[$i]['descrizione'], $idiva, $rs2[$i]['qta'], $rs2[$i]['prezzo_vendita'] * $rs2[$i]['qta'], $rs2[$i]['sconto'], $rs2[$i]['sconto_unitario'], $rs2[$i]['tipo_sconto'], $idintervento, 0, $rs2[$i]['um']);
|
||||
|
||||
// Lettura lotto, serial, altro dalla riga dell'ordine
|
||||
$dbo->query('INSERT INTO mg_prodotti (id_riga_documento, id_articolo, dir, serial, lotto, altro) SELECT '.prepare($riga).', '.prepare($rs2[$i]['idarticolo']).', '.prepare($dir).', serial, lotto, altro FROM mg_prodotti AS t WHERE id_riga_intervento='.prepare($rs2[$i]['id']));
|
||||
}
|
||||
|
||||
// Aggiunta spese aggiuntive come righe generiche
|
||||
$query = 'SELECT * FROM in_righe_interventi WHERE idintervento='.prepare($idintervento).' AND ( idintervento NOT IN(SELECT idintervento FROM co_righe_preventivi WHERE idpreventivo IN(SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) AND idintervento NOT IN(SELECT idintervento FROM co_righe_contratti WHERE idcontratto IN(SELECT idcontratto FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) )';
|
||||
$query = 'SELECT * FROM in_righe_interventi WHERE idintervento='.prepare($idintervento).' AND (idintervento NOT IN(SELECT idintervento FROM co_righe_preventivi WHERE idpreventivo IN(SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) AND idintervento NOT IN(SELECT idintervento FROM co_righe_contratti WHERE idcontratto IN(SELECT idcontratto FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) )';
|
||||
$rsr = $dbo->fetchArray($query);
|
||||
if (sizeof($rsr) > 0) {
|
||||
for ($i = 0; $i < sizeof($rsr); ++$i) {
|
||||
|
|
|
@ -44,13 +44,14 @@ echo '
|
|||
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-6">
|
||||
{[ "type": "textarea", "label": "'.tr('Query di default').'", "name": "options", "value": "'.str_replace(']}', '] }', $record['options']).'", "readonly": "1", "class": "autosize" ]}
|
||||
{[ "type": "textarea", "label": "'.tr('Query di default').'", "name": "options", "value": '.json_encode(str_replace(']}', '] }', $record['options'])).', "readonly": "1", "class": "autosize" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-xs-12 col-md-6">
|
||||
{[ "type": "textarea", "label": "'.tr('Query personalizzata').'", "name": "options2", "value": "'.str_replace(']}', '] }', $record['options2']).'", "class": "autosize", "help": "'.tr('La query in sostituzione a quella di default: custom, menu oppure SQL').'" ]}
|
||||
{[ "type": "textarea", "label": "'.tr('Query personalizzata').'", "name": "options2", "value": '.json_encode(str_replace(']}', '] }', $record['options2'])).', "class": "autosize", "help": "'.tr('La query in sostituzione a quella di default: custom, menu oppure SQL').'" ]}
|
||||
</div>
|
||||
</div>';
|
||||
</div>';
|
||||
|
||||
if ($options != '' && $options != 'menu' && $options != 'custom') {
|
||||
$total = Modules::getQuery($id_record);
|
||||
$module_query = $total['query'];
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
},
|
||||
"main": "gulpfile.js",
|
||||
"dependencies": {
|
||||
"ViewerJS_release": "git://github.com/kogmbh/ViewerJS_release.git",
|
||||
"admin-lte": "~2.3.11",
|
||||
"autosize": "^3.0.21",
|
||||
"bootstrap": "^3.3.7",
|
||||
|
@ -79,6 +80,7 @@
|
|||
"gulp-stylus": "^2.6.0",
|
||||
"gulp-uglify": "^1.5.3",
|
||||
"gulp-util": "^3.0.8",
|
||||
"inquirer": "^4.0.1",
|
||||
"main-bower-files": "^2.13.1",
|
||||
"shelljs": "^0.7.7"
|
||||
},
|
||||
|
|
|
@ -339,7 +339,7 @@ class API extends \Util\Singleton
|
|||
*/
|
||||
public static function isAPIRequest()
|
||||
{
|
||||
return slashes($_SERVER['SCRIPT_FILENAME']) == slashes(DOCROOT.'/api/index.php');
|
||||
return getURLPath() == slashes(ROOTDIR.'/api/index.php');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -67,7 +67,7 @@ class Permissions
|
|||
$result = true;
|
||||
|
||||
if (!self::getSkip()) {
|
||||
if (!Auth::check() && slashes($_SERVER['SCRIPT_FILENAME']) == slashes(DOCROOT.'/index.php')) {
|
||||
if (!Auth::check() && getURLPath() == slashes(ROOTDIR.'/index.php')) {
|
||||
redirect(ROOTDIR.'/index.php');
|
||||
exit();
|
||||
$result = false;
|
||||
|
|
|
@ -202,7 +202,13 @@ class Update
|
|||
*/
|
||||
public static function getVersion()
|
||||
{
|
||||
return self::getFile('VERSION');
|
||||
$result = self::getFile('VERSION');
|
||||
|
||||
if (empty($result)) {
|
||||
$result = self::getDatabaseVersion();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -162,8 +162,10 @@ foreach ($righe as $r) {
|
|||
$iva[] = $r['iva'];
|
||||
$sconto[] = $r['sconto'];
|
||||
|
||||
$v_iva[$r['desc_iva']] += $r['iva'];
|
||||
$v_totale[$r['desc_iva']] += $r['subtotale'] - $r['sconto'];
|
||||
$v_iva[$r['desc_iva']] = sum($v_iva[$r['desc_iva']], $r['iva']);
|
||||
$v_totale[$r['desc_iva']] = sum($v_totale[$r['desc_iva']], [
|
||||
$r['subtotale'], -$r['sconto'],
|
||||
]);
|
||||
}
|
||||
|
||||
echo '
|
||||
|
|
Loading…
Reference in New Issue