1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-16 11:30:55 +01:00
This commit is contained in:
MatteoPistorello 2023-05-18 16:13:24 +02:00
commit 330bec1e73
28 changed files with 251 additions and 355 deletions

View File

@ -4,6 +4,7 @@ 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.
- [2.4.45 (2023-05-12)](#2445-2023-05-12)
- [2.4.44 (2023-04-21)](#2444-2023-04-21)
- [2.4.43 (2023-03-31)](#2443-2023-03-31)
- [2.4.42 (2023-03-10)](#2442-2023-03-10)
@ -55,7 +56,29 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
- [2.2 (2016-11-10)](#22-2016-11-10)
- [2.1 (2015-04-02)](#21-2015-04-02)
## 2.4.45 (2023-05-12)
### Aggiunto (Added)
- Aggiunta l'importazione dei preventivi da CSV
- Aggiunta Confronta prezzo da azioni di gruppo sulle righe dei documenti
- Aggiunta stampa liquidazione provvigioni
- Aggiunta impostazione Visualizza solo promemoria assegnati
### Modificato (Changed)
- Allineati i nomi delle colonne dei totali nei documenti
- Migliorata la gestione dell'unità di misura secondaria degli articoli
- Migliorati i filtri = e != nelle tabelle
- Ripristinato l'aggiornamento ajax delle checklist dopo la spunta
- Corretta l'impostazione della partita IVA nella generazione degli XML
- Corretta la gestione delle quantità nelle righe degli ordini fornitori in base alla quantità minima da listino
### Fixed
- Corretta l'impostazione del prezzo articolo da listino in Contratti e Preventivi
- Corretta l'eliminazione dei range nei listini
- Corretta la conferma delle righe dei documenti
- Corretta l'impostazione dell'agente nella creazione di documenti
- Corretto il riferimento fattura nei Preventivi e Ordini
- Corrette le viste Attività e Fatture d'acquisto
- Corretta la visualizzazione della data registrazione nella lista di importazione fatture elettroniche
- Corretta l'esportazione delle scadenze dei bonifici
- Corretta l'impostazione degli sconti in pianificazione fatturazione da contratti
## 2.4.44 (2023-04-21)
### Aggiunto (Added)
- Aggiunto il cambio di stato dei preventivi da azioni di gruppo

View File

@ -29,7 +29,7 @@ const minifyCSS = require('gulp-clean-css');
const minifyJSON = require('gulp-json-minify');
// Interpretatori CSS
const sass = require('gulp-sass');
const sass = require('gulp-sass')(require('sass'));
const less = require('gulp-less');
const stylus = require('gulp-stylus');
const autoprefixer = require('gulp-autoprefixer');
@ -344,16 +344,16 @@ function csrf() {
function pdfjs() {
const web = gulp.src([
config.nodeDirectory + '/pdf.js/lib/dist/pdfjs/web/**/*',
'!' + config.nodeDirectory + '/pdf.js/lib/dist/pdfjs/web/cmaps/*',
'!' + config.nodeDirectory + '/pdf.js/lib/dist/pdfjs/web/*.map',
'!' + config.nodeDirectory + '/pdf.js/lib/dist/pdfjs/web/*.pdf',
config.nodeDirectory + '/pdf.js/demo/vue/public/pdfjs-prebuilt/web/**/*',
'!' + config.nodeDirectory + '/pdf.js/demo/vue/public/pdfjs-prebuilt/web/cmaps/*',
'!' + config.nodeDirectory + '/pdf.js/demo/vue/public/pdfjs-prebuilt/web/*.map',
'!' + config.nodeDirectory + '/pdf.js/demo/vue/public/pdfjs-prebuilt/web/*.pdf',
])
.pipe(gulp.dest(config.production + '/pdfjs/web'));
const build = gulp.src([
config.nodeDirectory + '/pdf.js/lib/dist/pdfjs/build/*',
'!' + config.nodeDirectory + '/pdf.js/lib/dist/pdfjs/build/*.map',
config.nodeDirectory + '/pdf.js/demo/vue/public/pdfjs-prebuilt/build/*',
'!' + config.nodeDirectory + '/pdf.js/demo/vue/public/pdfjs-prebuilt/build/*.map',
])
.pipe(gulp.dest(config.production + '/pdfjs/build'));

View File

@ -666,7 +666,7 @@ if ($free_space < ($space_limit * (1024 ** 3))) {
<p>'.tr('Lo spazio a disposizione del gestionale è in esaurimento: sono al momento disponibili _TOT_', [
'_TOT_' => FileSystem::formatBytes($free_space),
]).'.</p>
<p>'.tr('Questo può risultare un serio problema per la continuità di funzionamento del software, poichè le operazioni più espansive riguardanti lo spazio di archiviazione possono provocare malfunzionamento imprevedibili').'. '.tr('Operazioni di backup, caricamento di allegati o anche il semplice utilizzo del gestionale possono rendere i dati inaffidabili, provocando pertanto una perdita irreversibile delle informazioni salvate').'.</p>
<p>'.tr("Contatta gli amministratori di sistema oppure l'assistenza tecnica per risolvere al più presto il problema").'.</p>
<p>'.tr('Questo può risultare un serio problema per la continuità di funzionamento del software, poiché le operazioni più espansive che richiedono spazio di archiviazione possono causare malfunzionamenti imprevisti').'. '.tr('Ad esempio, le attività di backup, caricamento di allegati o anche l\'utilizzo normale del gestionale potrebbero rendere i dati inaffidabili, provocando pertanto una perdita delle informazioni salvate').'.</p>
<p>'.tr("Contatta gli amministratori di sistema per risolvere al più presto il problema").'.</p>
</div>';
}

View File

@ -167,7 +167,7 @@ echo '
});
id_nazione.change(function() {
if (id_nazione.getData().descrizione === 'IT - Italia'){
if ((id_nazione.getData().descrizione === 'IT - Italia') || (id_nazione.getData().descrizione === 'SM - San Marino')) {
input("codice_destinatario").enable();
}else{
input("codice_destinatario").disable();

View File

@ -74,10 +74,10 @@ if (in_array($id_cliente, $tipi_anagrafica) or in_array($id_fornitore, $tipi_ana
echo '
</ul>
</div>';
} else if (in_array($id_agente, $tipi_anagrafica)) {
}
if (in_array($id_agente, $tipi_anagrafica)) {
//Aggiunta liquidazione provvigioni per agente
echo'
<button type="button" class="btn btn-primary" data-title="'.tr('Liquida Provvigioni').'" data-href="'.base_path().'/modules/anagrafiche/liquida_provvigioni.php?nome_stampa=Provvigioni&id_record='.$id_record.'" ><i class="fa fa-print"></i>'.tr(' Liquida Provvigioni').'</button>
</div>';
<button type="button" class="btn btn-primary" data-title="'.tr('Liquida Provvigioni').'" data-href="'.base_path().'/modules/anagrafiche/liquida_provvigioni.php?nome_stampa=Provvigioni&id_record='.$id_record.'" ><i class="fa fa-print"></i>'.tr(' Liquida Provvigioni').'</button>';
}

View File

@ -150,7 +150,7 @@ if (sizeof($problemi_anagrafica) > 0) {
$help_codice_destinatario .= ' <b>'.tr("Non è necessario comunicare il proprio codice destinatario ai fornitori in quanto è sufficiente che questo sia registrato nel portale del Sistema Di Interscambio dell'Agenzia Entrate (SDI)").'.</b>';
}
?>
{[ "type": "text", "label": "<?php echo ($record['tipo'] == 'Ente pubblico') ? tr('Codice unico ufficio') : tr('Codice destinatario'); ?>", "name": "codice_destinatario", "required": 0, "class": "text-center text-uppercase alphanumeric-mask", "value": "$codice_destinatario$", "maxlength": <?php echo ($record['tipo'] == 'Ente pubblico') ? '6' : '7'; ?>, "help": "<?php echo tr($help_codice_destinatario); ?>", "readonly": "<?php echo intval($nazione_anagrafica ? $nazione_anagrafica->iso2 != 'IT' : 0); ?>" ]}
{[ "type": "text", "label": "<?php echo ($record['tipo'] == 'Ente pubblico') ? tr('Codice unico ufficio') : tr('Codice destinatario'); ?>", "name": "codice_destinatario", "required": 0, "class": "text-center text-uppercase alphanumeric-mask", "value": "$codice_destinatario$", "maxlength": <?php echo ($record['tipo'] == 'Ente pubblico') ? '6' : '7'; ?>, "help": "<?php echo tr($help_codice_destinatario); ?>", "readonly": "<?php echo intval($nazione_anagrafica ? !(($nazione_anagrafica->iso2 === 'IT') || ($nazione_anagrafica->iso2 === 'SM')) : 0); ?>" ]}
</div>
<div class="col-md-4">

View File

@ -254,7 +254,7 @@ class Anagrafica extends Model
public function setCodiceDestinatarioAttribute($value)
{
if (!empty($this->sedeLegale->nazione) && $this->sedeLegale->nazione->iso2 != 'IT') {
if (!empty($this->sedeLegale->nazione) && !(($this->sedeLegale->nazione->iso2 === 'IT') || ($this->sedeLegale->nazione->iso2 === 'SM'))) {
$value = '';
}

View File

@ -145,6 +145,7 @@ switch (filter('op')) {
$count = DDT::where('numero_esterno', $numero_esterno)
->where('id', '!=', $id_record)
->where('idanagrafica', '=', $id_anagrafica)
->whereRaw('DATE_FORMAT(data, "%Y")='.date('Y'))
->whereHas('tipo', function ($query) use ($direzione) {
$query->where('dir', '=', $direzione);
})->count();

View File

@ -41,7 +41,7 @@ switch ($resource) {
$query = 'SELECT my_impianti.id, CONCAT(my_impianti.matricola, " - ", my_impianti.nome) AS descrizione, my_impianti.idanagrafica, an_anagrafiche.ragione_sociale, my_impianti.idsede, IFNULL(an_sedi.nomesede, "Sede legale") AS nomesede FROM my_impianti LEFT JOIN an_anagrafiche ON my_impianti.idanagrafica=an_anagrafiche.idanagrafica LEFT JOIN an_sedi ON my_impianti.idsede=an_sedi.id |where| ORDER BY idsede';
foreach ($elements as $element) {
$filter[] = 'id='.prepare($element);
$filter[] = 'my_impianti.id='.prepare($element);
}
if (!empty($superselect['idanagrafica'])) {

View File

@ -238,7 +238,6 @@ echo '
'label' => tr('Descrizione'),
'name' => 'descrizione',
'id' => 'descrizione_add',
'required' => '1',
'value' => htmlentities($descrizione),
'extra' => 'style=\'max-height:80px;\'',
]);

View File

@ -129,7 +129,7 @@ class Sessione extends Model
}
}
public function getOreAttribute()
public function getOreCalcolateAttribute()
{
$inizio = new DateTime($this->orario_inizio);
$diff = $inizio->diff(new DateTime($this->orario_fine));
@ -146,7 +146,7 @@ class Sessione extends Model
*/
public function save(array $options = [])
{
$this->attributes['ore'] = $this->ore;
$this->attributes['ore'] = $this->ore_calcolate;
$this->attributes['prezzo_ore_consuntivo'] = $this->prezzo_manodopera + $this->prezzo_diritto_chiamata;
$this->attributes['prezzo_km_consuntivo'] = $this->prezzo_viaggio;

View File

@ -651,6 +651,12 @@ switch (post('op')) {
FROM mg_prezzi_articoli
WHERE id_articolo = '.prepare($id_articolo).' AND dir = '.prepare($dir).' AND id_anagrafica = '.prepare($id_anagrafica));
// Per gli ordini fornitore imposta la quantità minima richiesta dal fornitore invece di 1
if ($dir == 'uscita') {
$qta_minima_fornitore = $dbo->fetchOne('SELECT qta_minima FROM mg_fornitore_articolo WHERE id_articolo = '.prepare($id_articolo).' AND id_fornitore = '.prepare($id_anagrafica))['qta_minima'];
$articolo->qta = ($qta_minima_fornitore ?: 1);
}
if ($prezzi) {
foreach ($prezzi as $prezzo) {
if ($qta >= $prezzo['minimo'] && $qta <= $prezzo['massimo']) {

View File

@ -26,86 +26,85 @@ echo '
</div>
<div class="row">
<div class="col-md-4">
<div class="col-md-6 text-center">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">'.tr('Registri IVA').'</h3>
<br>
</div>
<div class="panel-body">
<button type="button" class="btn btn-primary col-md-3" data-toggle="modal" data-title="'.tr('Stampa registro IVA vendite').'" data-href="'.base_path().'/modules/stampe_contabili/stampe_contabili.php?dir=entrata&nome_stampa=Registro IVA&id_record='.$id_record.'" ><i class="fa fa-print fa-2x"></i><br>'.tr('Registro').'<br>'.tr('IVA vendite').'</button>
<button type="button" class="btn btn-primary col-md-3 col-md-push-1" data-toggle="modal" data-title="'.tr('Stampa registro IVA acquisti').'" data-href="'.base_path().'/modules/stampe_contabili/stampe_contabili.php?dir=uscita&nome_stampa=Registro IVA&id_record='.$id_record.'" ><i class="fa fa-print fa-2x"></i><br>'.tr('Registro').'<br>'.tr('IVA acquisti').'</button>
<button type="button" class="btn btn-primary col-md-4 col-md-push-2" data-toggle="modal" data-title="'.tr('Stampa liquidazione IVA').'" data-href="'.base_path().'/modules/stampe_contabili/stampe_contabili.php?nome_stampa=Liquidazione IVA&id_record='.$id_record.'" ><i class="fa fa-print fa-2x"></i><br>'.tr('Liquidazione').'<br>'.tr('IVA').'</button>
<div class="col-md-4">
<button type="button" class="btn btn-primary col-md-12" data-toggle="modal" data-title="'.tr('Stampa registro IVA vendite').'" data-href="'.base_path().'/modules/stampe_contabili/stampe_contabili.php?dir=entrata&nome_stampa=Registro IVA&id_record='.$id_record.'" ><i class="fa fa-print fa-2x"></i><br>'.tr('Registro').'<br>'.tr('IVA vendite').'</button>
</div>
<div class="col-md-4">
<button type="button" class="btn btn-primary col-md-12" data-toggle="modal" data-title="'.tr('Stampa registro IVA acquisti').'" data-href="'.base_path().'/modules/stampe_contabili/stampe_contabili.php?dir=uscita&nome_stampa=Registro IVA&id_record='.$id_record.'" ><i class="fa fa-print fa-2x"></i><br>'.tr('Registro').'<br>'.tr('IVA acquisti').'</button>
</div>
<div class="col-md-4">
<button type="button" class="btn btn-primary col-md-12" data-toggle="modal" data-title="'.tr('Stampa liquidazione IVA').'" data-href="'.base_path().'/modules/stampe_contabili/stampe_contabili.php?nome_stampa=Liquidazione IVA&id_record='.$id_record.'" ><i class="fa fa-print fa-2x"></i><br>'.tr('Liquidazione').'<br>'.tr('IVA').'</button>
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">'.tr('Comunicazione dati fatture (ex-spesometro)<br> dal _START_ al _END_', [
'_START_' => Translator::dateToLocale($_SESSION['period_start']),
'_END_' => Translator::dateToLocale($_SESSION['period_end']),
]).'</h3>
</div>
<div class="panel-body">
'.Prints::getLink('Spesometro', $id_record, 'btn-primary col-md-5', '<br>'.tr('Dati fatture').'<br>'.tr(' vendite e acquisti'), '|default| fa-2x', 'dir=uscita').'
</div>
</div>
</div>
<div class="col-md-4">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">'.tr('Dati economici<br> dal _START_ al _END_', [
'_START_' => Translator::dateToLocale($_SESSION['period_start']),
'_END_' => Translator::dateToLocale($_SESSION['period_end']),
]).'</h3>
</div>
<div class="panel-body">
'.Prints::getLink('Fatturato', $id_record, 'btn-primary col-md-5', '<br>'.tr('Stampa').'<br>'.tr('Fatturato'), '|default| fa-2x', 'dir=entrata').'
'.Prints::getLink('Fatturato', $id_record, 'btn-primary col-md-5 col-md-push-2', '<br>'.tr('Stampa').'<br>'.tr('Acquisti').'<br>', '|default| fa-2x', 'dir=uscita').'
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-4">
<div class="col-md-6 text-center">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">'.tr('Contabilità').'</h3>
</div>
<div class="panel-body">
<button type="button" class="btn btn-primary col-md-3" data-toggle="modal" data-title="'.tr('Stampa Bilancio').'" data-href="'.base_path().'/modules/stampe_contabili/stampa_bilancio.php" ><i class="fa fa-print fa-2x"></i> <br>'.tr('Stampa').'<br>'.tr('Bilancio').'<br></button>
'.Prints::getLink('Mastrino', 1, 'btn-primary col-md-3 col-md-push-1', '<br>'.tr('Situazione').'<br>'.tr('patrimoniale'), '|default| fa-2x', 'lev=1').'
<div class="col-md-4">
<button type="button" class="btn btn-primary col-md-12" data-toggle="modal" data-title="'.tr('Stampa Bilancio').'" data-href="'.base_path().'/modules/stampe_contabili/stampa_bilancio.php" ><i class="fa fa-print fa-2x"></i> <br>'.tr('Stampa').'<br>'.tr('Bilancio').'<br></button>
</div>
<div class="col-md-4">
'.Prints::getLink('Mastrino', 1, 'btn-primary col-md-12', '<br>'.tr('Situazione').'<br>'.tr('patrimoniale'), '|default| fa-2x', 'lev=1').'
</div>
<div class="col-md-4">
'.Prints::getLink('Mastrino', 2, 'btn-primary col-md-12', '<br>'.tr('Situazione').'<br>'.tr('economica'), '|default| fa-2x', 'lev=1').'
</div>
</div>
</div>
</div>
</div>
'.Prints::getLink('Mastrino', 2, 'btn-primary col-md-3 col-md-push-2', '<br>'.tr('Situazione').'<br>'.tr('economica'), '|default| fa-2x', 'lev=1').'
<div class="row">
<div class="col-md-4 text-center">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">'.tr('Dati economici dal _START_ al _END_', [
'_START_' => Translator::dateToLocale($_SESSION['period_start']),
'_END_' => Translator::dateToLocale($_SESSION['period_end']),
]).'</h3>
</div>
<div class="panel-body">
<div class="col-md-6">
'.Prints::getLink('Fatturato', $id_record, 'btn-primary col-md-12', '<br>'.tr('Stampa').'<br>'.tr('Fatturato'), '|default| fa-2x', 'dir=entrata').'
</div>
<div class="col-md-6">
'.Prints::getLink('Fatturato', $id_record, 'btn-primary col-md-12', '<br>'.tr('Stampa').'<br>'.tr('Acquisti').'<br>', '|default| fa-2x', 'dir=uscita').'
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="col-md-4 text-center">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">'.tr('Libro giornale').'</h3>
</div>
<div class="panel-body">
'.Prints::getLink('Libro giornale', 2, 'btn-primary col-md-4', '<br>'.tr('Libro').'<br>'.tr('giornale'), '|default| fa-2x').'
<div class="col-md-6">
'.Prints::getLink('Libro giornale', 2, 'btn-primary col-md-12', '<br>'.tr('Libro').'<br>'.tr('giornale'), '|default| fa-2x').'
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="col-md-4 text-center">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">'.tr('Scadenzario').'</h3>
@ -121,9 +120,12 @@ if (empty($dbo->fetchArray('SELECT * FROM co_scadenziario'))) {
$disabled = '';
}
echo ' <button type="button" '.$disabled.' class="btn btn-'.$class.' col-md-5" data-toggle="modal" data-title="'.tr('Stampa scadenzario').'" data-href="'.base_path().'/modules/stampe_contabili/stampa_scadenzario.php" >
<i class="fa fa-print fa-2x"></i><br>'.tr('Stampa<br>scadenzario').'
</button>';
echo '
<div class="col-md-6">
<button type="button" '.$disabled.' class="btn btn-'.$class.' col-md-12" data-toggle="modal" data-title="'.tr('Stampa scadenzario').'" data-href="'.base_path().'/modules/stampe_contabili/stampa_scadenzario.php" >
<i class="fa fa-print fa-2x"></i><br>'.tr('Stampa<br>scadenzario').'
</button>
</div>';
echo '
</div>

View File

@ -33,7 +33,7 @@
"moment": "^2.18.1",
"numeral": "^2.0.6",
"parsleyjs": "^2.7.2",
"pdf.js": "intbot/ng2-pdfjs-viewer",
"pdf.js": "alekswebnet/pdfjs-viewer-element",
"pwstrength-bootstrap": "^3.0.4",
"select2": "^4.0.3",
"select2-bootstrap-theme": "^0.1.0-beta.10",
@ -61,12 +61,13 @@
"gulp-json-minify": "^1.0.5",
"gulp-less": "^4.0.1",
"gulp-rename": "^1.4.0",
"gulp-sass": "^4.1.1",
"gulp-sass": "^5.1.0",
"gulp-stylus": "^2.6.0",
"gulp-uglify": "^3.0.2",
"inquirer": "^4.0.1",
"main-bower-files": "^2.13.1",
"md5-file": "^5.0.0",
"sass": "^1.62.1",
"shelljs": ">=0.8.5"
},
"scripts": {

View File

@ -625,8 +625,11 @@ class FatturaElettronica
// Se sto fatturando ad un ente pubblico il codice destinatario di default è 99999 (sei nove), in alternativa uso 0000000 (sette zeri)
$default_code = ($cliente['tipo'] == 'Ente pubblico') ? '999999' : '0000000';
// Se il mio cliente non ha sede in Italia il codice destinatario di default diventa (XXXXXXX) (sette X)
// Se il mio cliente non ha sede in Italia, il codice destinatario di default diventa (XXXXXXX) (sette X)
$default_code = ($cliente->nazione->iso2 != 'IT') ? 'XXXXXXX' : $default_code;
// Se il cliente ha sede a San Marino non ha nessun codice destinatario imposto quello dell'Ufficio tributario di San Marino
$default_code = (($cliente->nazione->iso2 == 'SM') && ($default_code == 'XXXXXXX')) ? '2R4GT08' : $default_code;
// Generazione dell'header
// Se all'Anagrafe Tributaria il trasmittente è censito con il codice fiscale, es. ditte individuali

View File

@ -118,7 +118,7 @@ switch ($operazione) {
if( $cadenza_fatturazione=='Fine' ){
$fine = Carbon\Carbon::parse($fine)->endOfMonth()->format("Y-m-d");
}
$prezzo_unitario = setting('Utilizza prezzi di vendita comprensivi di IVA') ? (($r->subtotale + $r->iva) / $r->qta) : ($r->subtotale / $r->qta);
$prezzo_unitario = setting('Utilizza prezzi di vendita comprensivi di IVA') ? (( ($r->subtotale-$r->sconto) + $r->iva) / $r->qta) : ( ($r->subtotale-$r->sconto) / $r->qta);
if (!empty($r->idarticolo)) {
$articolo = ArticoloOriginale::find($r->idarticolo);

View File

@ -120,9 +120,18 @@ echo '
</div>
<div class="row">
<div class="col-md-12">
{[ "type": "textarea", "label": "'.tr('Descrizione').'", "name": "richiesta", "id": "richiesta_", "readonly": '.intval($block_edit).', "value": "'.$record['richiesta'].'" ]}
</div>
<div class="col-md-12">';
echo input([
'type' => 'ckeditor',
'label' => tr('Richiesta'),
'name' => 'richiesta',
'required' => 1,
'readonly' => $record['flag_completato'],
'extra' => 'rows="5"',
'value' => $record['richiesta'],
]);
echo '
</div>
</div>
</div>
</div>';

View File

@ -49,8 +49,8 @@ echo '
<div class="row">
<div class="col-md-12 text-right">
<button type="button" class="btn btn-primary '.(!empty($banca_azienda) ? '' : 'disabled').'" onclick="esporta(this)">
<i class="fa fa-download"></i> '.tr('Esporta').'
<button type="button" class="btn btn-primary '.(!empty($banca_azienda) ? '' : 'disabled'). '" onclick="esporta(this)">
<i class="fa fa-arrow-right"></i> '.tr('Continua').'...
</button>
</div>
</div>

View File

@ -276,7 +276,7 @@ class Gestore
}
// Unifico ricevute per anagrafica
$identificativo_debitore = !empty($controparte->partita_iva) ? $controparte->partita_iva : $controparte->codice_fiscale;
$identificativo_debitore = !empty($controparte->partita_iva) ? $controparte->partita_iva : !empty($controparte->codice_fiscale) ? $controparte->codice_fiscale : $controparte->codice;
$ricevute = $this->bonifico->getRicevute();
foreach ($ricevute as $ric) {
if ($ric->identificativo_debitore == $identificativo_debitore) {

View File

@ -1944,9 +1944,6 @@
</xsl:when>
<xsl:when test="$TD=''">
</xsl:when>
<xsl:otherwise>
<span>(!!! codice non previsto !!!)</span>
</xsl:otherwise>
</xsl:choose>
</xsl:if>

View File

@ -62,7 +62,7 @@ foreach ($raggruppamenti as $raggruppamento) {
$imponibile = $raggruppamento['imponibile'];
$iva = $raggruppamento['iva'];
$totale = $raggruppamento['totale'];
$totale = $imponibile + $iva;
echo '
<tr>

View File

@ -24,20 +24,21 @@ $date_start = $_SESSION['period_start'];
$date_end = $_SESSION['period_end'];
// Raggruppamento
$query = "SELECT data,
DATE_FORMAT(data, '%m-%Y') AS periodo,
SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto)* IF(co_tipidocumento.reversed, -1, 1)) as imponibile,
SUM((iva)* IF(co_tipidocumento.reversed, -1, 1)) as iva,
SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto + iva)* IF(co_tipidocumento.reversed, -1, 1)) as totale
FROM co_documenti
INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento = co_tipidocumento.id
INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento = co_documenti.id
INNER JOIN co_statidocumento ON co_documenti.idstatodocumento = co_statidocumento.id
WHERE
(data >= ".prepare($date_start).' AND data <= '.prepare($date_end).')
AND dir = '.prepare($dir).'
AND co_statidocumento.descrizione!="Bozza"
'.$add_where.'
GROUP BY periodo
ORDER BY data ASC';
$raggruppamenti = $dbo->fetchArray($query);
$raggruppamenti = $dbo->fetchArray('
SELECT
data,
DATE_FORMAT(data_competenza, \'%m-%Y\') AS periodo,
SUM(round((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *(100-indetraibile)/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 )), 2)) AS iva,
SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto + co_righe_documenti.rivalsainps) *(IF(co_tipidocumento.reversed = 0,1,-1))) AS imponibile
FROM
co_iva
INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id
INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento
INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento
WHERE
co_tipidocumento.dir = '.prepare($dir).' AND co_righe_documenti.is_descrizione = 0 AND idstatodocumento NOT IN(SELECT id FROM co_statidocumento WHERE descrizione = "Bozza" OR descrizione = "Annullata") AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).'
GROUP BY
data, periodo
ORDER BY
data ASC');

View File

@ -1,196 +0,0 @@
<?php
/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
* Copyright (C) DevCode s.r.l.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
include_once __DIR__.'/../../core.php';
$date_start = $_SESSION['period_start'];
$date_end = $_SESSION['period_end'];
// Intestazione tabella per righe
echo "
<h3 class='text-bold'>".tr('Spesometro dal _START_ al _END_', [
'_START_' => Translator::dateToLocale($date_start),
'_END_' => Translator::dateToLocale($date_end),
], ['upper' => true])."</h3>
<table class='table table-bordered'>
<thead>
<tr>
<th class='text-center' style='width:10%'>".tr('Ragione sociale', [], ['upper' => true])."</th>
<th class='text-center' style='width:15%'>".tr('P.Iva', [], ['upper' => true])."</th>
<th class='text-center' style='width:25%'>".tr('Documento', [], ['upper' => true])."</th>
<th class='text-center' style='width:20%'>".tr('Aliquota', [], ['upper' => true])."</th>
<th class='text-center' style='width:10%'>".tr('Imponibile', [], ['upper' => true])."</th>
<th class='text-center' style='width:10%'>".tr('IVA', [], ['upper' => true])."</th>
<th class='text-center' style='width:10%'>".tr('Totale', [], ['upper' => true]).'</th>
</tr>
</thead>
<tbody>';
$imponibile = [];
$iva = [];
$totale = [];
$anagrafiche = $dbo->fetchArray('SELECT idanagrafica, piva, ragione_sociale FROM `an_anagrafiche` WHERE `idanagrafica` IN (SELECT DISTINCT `idanagrafica` FROM `co_documenti` WHERE co_documenti.data>='.prepare($date_start).' AND co_documenti.data<='.prepare($date_end).' AND `co_documenti`.`id` IN (SELECT `iddocumento` FROM co_movimenti WHERE primanota = 1)) ORDER BY `ragione_sociale`');
foreach ($anagrafiche as $i => $anagrafica) {
$fatture = $dbo->fetchArray('SELECT `co_documenti`.*, `co_tipidocumento`.`descrizione` AS tipo_documento, `co_tipidocumento`.`dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`idanagrafica` = '.prepare($anagrafica['idanagrafica']).' AND `co_documenti`.`id` IN (SELECT `iddocumento` FROM co_movimenti WHERE primanota = 1) AND co_documenti.data>='.prepare($date_start).' AND co_documenti.data<='.prepare($date_end).' ORDER BY `data`');
$num = 0;
foreach ($fatture as $key => $fattura) {
$righe = $dbo->fetchArray('SELECT `idiva`, `desc_iva`, SUM(subtotale) - SUM(sconto) AS imponibile, SUM(iva) AS iva, SUM(subtotale) - SUM(sconto) + SUM(iva) AS totale FROM `co_righe_documenti` WHERE iddocumento='.prepare($fattura['id']).' GROUP BY `idiva`, `desc_iva` ORDER BY `idiva`');
$fatture[$key]['righe'] = $righe;
$num += count($righe);
}
$extra = ($i % 2) != 0 ? ' class="row-bg"' : '';
if ($num > 0) {
echo '
<tr'.$extra.'>
<td rowspan="'.$num.'">
'.$anagrafica['ragione_sociale'].'
</td>';
// Partita IVA
echo '
<td rowspan="'.$num.'">
'.$anagrafica['piva'].'
</td>';
$count = 0;
foreach ($fatture as $fattura) {
$descrizione = tr('_DOC_ num. _NUM_ del _DATE_', [
'_DOC_' => $fattura['tipo_documento'],
'_NUM_' => !empty($fattura['numero_esterno']) ? $fattura['numero_esterno'] : $fattura['numero'],
'_DATE_' => Translator::dateToLocale($fattura['data']),
]);
// Documenti replicati per IVA
foreach ($fattura['righe'] as $riga) {
if ($count != 0) {
echo '
<tr'.$extra.'>';
}
++$count;
// Documento
echo '
<td>
'.$descrizione.'
</td>';
// Descrizione IVA
echo '
<td>
'.$riga['desc_iva'].'
</td>';
// Imponible
echo '
<td class="text-center">
'.moneyFormat($riga['imponibile'], 2).'
</td>';
// IVA
echo '
<td class="text-center">
'.moneyFormat($riga['iva'], 2).'
</td>';
// Totale
echo '
<td class="text-center">
'.moneyFormat($riga['totale'], 2).'
</td>
</tr>';
if (empty($iva[$riga['desc_iva']])) {
$iva[$riga['desc_iva']] = [];
}
$imponibile[] = $riga['imponibile'];
$iva[$riga['desc_iva']][] = $riga['iva'];
$totale[] = $riga['totale'];
}
}
}
}
echo '
</tbody>';
// Totale imponibile
echo '
<tr>
<td colspan="4" class="text-right">
<b>'.tr('Imponibile', [], ['upper' => true]).':</b>
</td>
<th colspan="3" class="text-center">
<b>'.moneyFormat(sum($imponibile), 2).'</b>
</th>
</tr>';
foreach ($iva as $desc => $values) {
$sum = sum($values);
// Totale IVA
echo '
<tr>
<td colspan="4" class="text-right">
<b>'.tr('IVA "_TYPE_"', [
'_TYPE_' => $desc,
], ['upper' => true]).':</b>
</td>
<th colspan="3" class="text-center">
<b>'.moneyFormat($sum, 2).'</b>
</th>
</tr>';
$totale_iva += $sum;
}
// Totale IVA
echo '
<tr>
<td colspan="4" class="text-right">
<b>'.tr('Totale IVA', [], ['upper' => true]).':</b>
</td>
<th colspan="3" class="text-center">
<b>'.moneyFormat($totale_iva, 2).'</b>
</th>
</tr>';
// TOTALE
echo '
<tr>
<td colspan="4" class="text-right">
<b>'.tr('Totale', [], ['upper' => true]).':</b>
</td>
<th colspan="3" class="text-center">
<b>'.moneyFormat(sum($totale), 2).'</b>
</th>
</tr>';
echo '
</table>';

View File

@ -1,31 +0,0 @@
<?php
/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
* Copyright (C) DevCode s.r.l.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
echo '
<!-- Intestazione fornitore -->
<div class="row">
<div class="col-xs-6">
<p><b>$f_ragionesociale$</b></p>
<p>$f_indirizzo$ $f_citta_full$</p>
<p>'.(!empty($f_piva) ? tr('P.Iva').': ' : '').'$f_piva$</p>
<p>'.(!empty($f_codicefiscale) ? tr('C.F.').': ' : '').'$f_codicefiscale$</p>
<p>'.(!empty($f_capsoc) ? tr('Cap.Soc.').': ' : '').'$f_capsoc$</p>
<p>'.(!empty($f_telefono) ? tr('Tel').': ' : '').'$f_telefono$</p>
</div>
</div>';

View File

@ -1,22 +0,0 @@
<?php
/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
* Copyright (C) DevCode s.r.l.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
return [
'orientation' => 'L',
];

View File

@ -6,6 +6,8 @@ UPDATE `zz_views` SET `name` = 'Totale documento' WHERE `name` = 'Totale ivato';
UPDATE `zz_views` SET `name` = 'Imponibile' WHERE `name` = 'Totale';
-- Fix query Preventivi
INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `visible`, `default`) VALUES((SELECT `id` FROM `zz_modules` WHERE `name` = 'Preventivi'), 'icon_Inviata', 'IF(emails IS NOT NULL, \'fa fa-envelope text-success\', \'\')', 16, 1, 0, 0, 1, 0);
INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `visible`, `default`) VALUES((SELECT `id` FROM `zz_modules` WHERE `name` = 'Preventivi'), 'icon_title_Inviata', 'IF(emails IS NOT NULL, \'Inviato via email\', \'\')', 17, 1, 0, 0, 0, 0);
UPDATE `zz_modules` SET `options` = "
SELECT
|select|
@ -16,6 +18,7 @@ FROM
LEFT JOIN (SELECT `idpreventivo`, SUM(`subtotale` - `sconto`) AS `totale_imponibile`, SUM(`subtotale` - `sconto` + `iva`) AS `totale` FROM `co_righe_preventivi` GROUP BY `idpreventivo`) AS righe ON `co_preventivi`.`id` = `righe`.`idpreventivo`
LEFT JOIN (SELECT `an_anagrafiche`.`idanagrafica`, `an_anagrafiche`.`ragione_sociale` AS nome FROM `an_anagrafiche`)AS agente ON `agente`.`idanagrafica`=`co_preventivi`.`idagente`
LEFT JOIN (SELECT GROUP_CONCAT(DISTINCT `co_documenti`.`numero_esterno` SEPARATOR ', ') AS `info`, `co_righe_documenti`.`original_document_id` AS `idpreventivo` FROM `co_documenti` INNER JOIN `co_righe_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` WHERE `original_document_type`='Modules\\\\Preventivi\\\\Preventivo' GROUP BY `idpreventivo`, `original_document_id`) AS `fattura` ON `fattura`.`idpreventivo` = `co_preventivi`.`id`
LEFT JOIN (SELECT COUNT(id) as emails, em_emails.id_record FROM em_emails INNER JOIN zz_operations ON zz_operations.id_email = em_emails.id WHERE id_module IN(SELECT id FROM zz_modules WHERE name = 'Preventivi') AND `zz_operations`.`op` = 'send-email' GROUP BY em_emails.id_record) AS `email` ON `email`.`id_record` = `co_preventivi`.`id`
WHERE
1=1 |segment(`co_preventivi`.`id_segment`)| |date_period(custom,'|period_start|' >= `data_bozza` AND '|period_start|' <= `data_conclusione`,'|period_end|' >= `data_bozza` AND '|period_end|' <= `data_conclusione`,`data_bozza` >= '|period_start|' AND `data_bozza` <= '|period_end|',`data_conclusione` >= '|period_start|' AND `data_conclusione` <= '|period_end|',`data_bozza` >= '|period_start|' AND `data_conclusione` = NULL)| AND `default_revision` = 1
GROUP BY
@ -26,6 +29,8 @@ ORDER BY
`co_preventivi`.`id` DESC" WHERE `name` = 'Preventivi';
-- Fix query vista Attività
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'IF(emails IS NOT NULL, \'fa fa-envelope text-success\', \'\')' WHERE `zz_modules`.`name` = 'Interventi' AND `zz_views`.`name` = 'icon_Inviata';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'IF(emails IS NOT NULL, \'Inviata via email\', \'\')' WHERE `zz_modules`.`name` = 'Interventi' AND `zz_views`.`name` = 'icon_title_Inviata';
UPDATE `zz_modules` SET `options` = "
SELECT
|select|
@ -41,7 +46,7 @@ FROM
LEFT JOIN (SELECT GROUP_CONCAT(DISTINCT `co_documenti`.`numero_esterno` SEPARATOR ', ') AS `info`, `co_righe_documenti`.`original_document_id` AS `idintervento` FROM `co_documenti` INNER JOIN `co_righe_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` WHERE `original_document_type` = 'Modules\\\\Interventi\\\\Intervento' GROUP BY `idintervento`, `original_document_id`) AS `fattura` ON `fattura`.`idintervento` = `in_interventi`.`id`
LEFT JOIN (SELECT `in_interventi_tecnici_assegnati`.`id_intervento`, GROUP_CONCAT( DISTINCT `ragione_sociale` SEPARATOR ', ') AS `nomi` FROM `an_anagrafiche` INNER JOIN `in_interventi_tecnici_assegnati` ON `in_interventi_tecnici_assegnati`.`id_tecnico` = `an_anagrafiche`.`idanagrafica` GROUP BY `id_intervento`) AS `tecnici_assegnati` ON `in_interventi`.`id` = `tecnici_assegnati`.`id_intervento`
LEFT JOIN (SELECT `in_interventi_tecnici`.`idintervento`, GROUP_CONCAT( DISTINCT `ragione_sociale` SEPARATOR ', ') AS `nomi` FROM `an_anagrafiche` INNER JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idtecnico` = `an_anagrafiche`.`idanagrafica` GROUP BY `idintervento`) AS `tecnici` ON `in_interventi`.`id` = `tecnici`.`idintervento`
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` = 'Interventi' AND `zz_operations`.`op` = 'send-email' GROUP BY `zz_operations`.`id_record`, `id_email`) AS `email` ON `email`.`id_record`=`in_interventi`.`id`
LEFT JOIN (SELECT COUNT(id) as emails, em_emails.id_record FROM em_emails INNER JOIN zz_operations ON zz_operations.id_email = em_emails.id WHERE id_module IN(SELECT id FROM zz_modules WHERE name = 'Interventi') AND `zz_operations`.`op` = 'send-email' GROUP BY em_emails.id_record) AS `email` ON `email`.`id_record` = `in_interventi`.`id`
LEFT JOIN (SELECT GROUP_CONCAT(CONCAT(`matricola`, IF(`nome` != '', CONCAT(' - ', `nome`), '')) SEPARATOR '<br />') AS `descrizione`, `my_impianti_interventi`.`idintervento` FROM `my_impianti` INNER JOIN `my_impianti_interventi` ON `my_impianti`.`id` = `my_impianti_interventi`.`idimpianto` GROUP BY `my_impianti_interventi`.`idintervento`) AS `impianti` ON `impianti`.`idintervento` = `in_interventi`.`id`
LEFT JOIN (SELECT `co_contratti`.`id`, CONCAT(`co_contratti`.`numero`, ' del ', DATE_FORMAT(`data_bozza`, '%d/%m/%Y')) AS `info` FROM `co_contratti`) AS `contratto` ON `contratto`.`id` = `in_interventi`.`id_contratto`
LEFT JOIN (SELECT `co_preventivi`.`id`, CONCAT(`co_preventivi`.`numero`, ' del ', DATE_FORMAT(`data_bozza`, '%d/%m/%Y')) AS `info` FROM `co_preventivi`) AS `preventivo` ON `preventivo`.`id` = `in_interventi`.`id_preventivo`
@ -57,6 +62,8 @@ ORDER BY
IFNULL(`orario_fine`, `data_richiesta`) DESC" WHERE `name` = 'Interventi';
-- Fix query Ordini cliente
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'IF(emails IS NOT NULL, \'fa fa-envelope text-success\', \'\')' WHERE `zz_modules`.`name` = 'Ordini cliente' AND `zz_views`.`name` = 'icon_Inviata';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`name` = 'icon_Inviato' WHERE `zz_modules`.`name` = 'Ordini cliente' AND `zz_views`.`name` = 'icon_Inviata';
UPDATE `zz_modules` SET `options` = "
SELECT
|select|
@ -68,7 +75,7 @@ FROM
LEFT JOIN (SELECT `idordine`, MIN(`data_evasione`) AS `data_evasione` FROM `or_righe_ordini` WHERE (`qta` - `qta_evasa`)>0 GROUP BY `idordine`) AS `righe_da_evadere` ON `righe`.`idordine`=`righe_da_evadere`.`idordine`
LEFT JOIN `or_statiordine` ON `or_statiordine`.`id` = `or_ordini`.`idstatoordine`
LEFT JOIN (SELECT GROUP_CONCAT(DISTINCT `co_documenti`.`numero_esterno` SEPARATOR ', ') AS `info`, `co_righe_documenti`.`original_document_id` AS `idordine` FROM `co_documenti` INNER JOIN `co_righe_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` WHERE `original_document_type`='Modules\\\\Ordini\\\\Ordine' GROUP BY `idordine`, `original_document_id`) AS `fattura` ON `fattura`.`idordine` = `or_ordini`.`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` = 'Ordini cliente' AND `zz_operations`.`op` = 'send-email' GROUP BY `zz_operations`.`id_record`, `id_email`) AS `email` ON `email`.`id_record` = `or_ordini`.`id`
LEFT JOIN (SELECT COUNT(id) as emails, em_emails.id_record FROM em_emails INNER JOIN zz_operations ON zz_operations.id_email = em_emails.id WHERE id_module IN(SELECT id FROM zz_modules WHERE name = 'Ordini cliente') AND `zz_operations`.`op` = 'send-email' GROUP BY em_emails.id_record) AS `email` ON `email`.`id_record` = `or_ordini`.`id`
WHERE
1=1 |segment(`or_ordini`.`id_segment`)| AND `dir` = 'entrata' |date_period(`or_ordini`.`data`)|
HAVING
@ -78,6 +85,8 @@ ORDER BY
CAST(`numero_esterno` AS UNSIGNED) DESC" WHERE `name` = 'Ordini cliente';
-- Fix query Ordini fornitore
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'IF(emails IS NOT NULL, \'fa fa-envelope text-success\', \'\')' WHERE `zz_modules`.`name` = 'Ordini fornitore' AND `zz_views`.`name` = 'icon_Inviata';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`name` = 'icon_Inviato' WHERE `zz_modules`.`name` = 'Ordini fornitore' AND `zz_views`.`name` = 'icon_Inviata';
UPDATE `zz_modules` SET `options` = "
SELECT
|select|
@ -89,7 +98,7 @@ FROM
LEFT JOIN (SELECT `idordine`, MIN(`data_evasione`) AS `data_evasione` FROM `or_righe_ordini` WHERE (`qta` - `qta_evasa`)>0 GROUP BY `idordine`) AS `righe_da_evadere` ON `righe`.`idordine`=`righe_da_evadere`.`idordine`
LEFT JOIN `or_statiordine` ON `or_statiordine`.`id` = `or_ordini`.`idstatoordine`
LEFT JOIN (SELECT GROUP_CONCAT(DISTINCT co_documenti.numero_esterno SEPARATOR ', ') AS info, co_righe_documenti.original_document_id AS idordine FROM co_documenti INNER JOIN co_righe_documenti ON co_documenti.id = co_righe_documenti.iddocumento WHERE original_document_type='Modules\\\\Ordini\\\\Ordine' GROUP BY idordine, original_document_id) AS fattura ON fattura.idordine = or_ordini.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` = 'Ordini fornitore' AND `zz_operations`.`op` = 'send-email' GROUP BY `zz_operations`.`id_record`, `id_email`) AS `email` ON `email`.`id_record` = `or_ordini`.`id`
LEFT JOIN (SELECT COUNT(id) as emails, em_emails.id_record FROM em_emails INNER JOIN zz_operations ON zz_operations.id_email = em_emails.id WHERE id_module IN(SELECT id FROM zz_modules WHERE name = 'Ordini fornitore') AND `zz_operations`.`op` = 'send-email' GROUP BY em_emails.id_record) AS `email` ON `email`.`id_record` = `or_ordini`.`id`
WHERE
1=1 |segment(`or_ordini`.`id_segment`)| AND `dir` = 'uscita' |date_period(`or_ordini`.`data`)|
HAVING
@ -108,4 +117,59 @@ INSERT INTO `zz_prints` (`id_module`, `is_record`, `name`, `title`, `filename`,
INSERT INTO `zz_settings` (`nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES ( "Visualizza solo promemoria assegnati", '0', 'boolean', '1', 'Applicazione', '7', 'Se abilitata permetti ai tecnici la visualizzazione dei soli promemoria in cui risultano come assegnati');
-- Aggiunta stampa ddt in entrata
INSERT INTO `zz_prints` (`id`, `id_module`, `is_record`, `name`, `title`, `filename`, `directory`, `previous`, `options`, `icon`, `version`, `compatibility`, `order`, `predefined`, `default`, `enabled`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Ddt di acquisto'), '1', 'Ddt di acquisto', 'Ddt in entrata', 'DDT num. {numero} del {data}', 'ddt', 'idddt', '{\"pricing\":true}', 'fa fa-print', '', '', '0', '1', '1', '1');
INSERT INTO `zz_prints` (`id`, `id_module`, `is_record`, `name`, `title`, `filename`, `directory`, `previous`, `options`, `icon`, `version`, `compatibility`, `order`, `predefined`, `default`, `enabled`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Ddt di acquisto'), '1', 'Ddt di acquisto', 'Ddt in entrata', 'DDT num. {numero} del {data}', 'ddt', 'idddt', '{\"pricing\":true}', 'fa fa-print', '', '', '0', '1', '1', '1');
-- Fix query Fatture di acquisto
UPDATE `zz_modules` SET `options` = "
SELECT
|select|
FROM
`co_documenti`
LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`
LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`
LEFT JOIN `co_ritenuta_contributi` ON `co_documenti`.`id_ritenuta_contributi` = `co_ritenuta_contributi`.`id`
LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id`
LEFT JOIN (SELECT `co_banche`.`id`, CONCAT(`nome`, ' - ', `iban`) AS `descrizione` FROM `co_banche`) AS `banche` ON `banche`.`id` = `co_documenti`.`id_banca_azienda`
LEFT JOIN (SELECT `iddocumento`, GROUP_CONCAT(`co_pianodeiconti3`.`descrizione`) AS `descrizione` FROM `co_righe_documenti` INNER JOIN `co_pianodeiconti3` ON `co_pianodeiconti3`.`id` = `co_righe_documenti`.`idconto` GROUP BY iddocumento) AS `conti` ON `conti`.`iddocumento` = `co_documenti`.`id`
LEFT JOIN (SELECT `iddocumento`, SUM(`subtotale` - `sconto`) AS `totale_imponibile`, SUM(`iva`) AS `iva` FROM `co_righe_documenti` GROUP BY `iddocumento`) AS `righe` ON `co_documenti`.`id` = `righe`.`iddocumento`
LEFT JOIN (SELECT COUNT(`d`.`id`) AS `conteggio`, IF(`d`.`numero_esterno` = '', `d`.`numero`, `d`.`numero_esterno`) AS `numero_documento`, `d`.`idanagrafica` AS `anagrafica`, `id_segment` FROM `co_documenti` AS `d`
LEFT JOIN `co_tipidocumento` AS `d_tipo` ON `d`.`idtipodocumento` = `d_tipo`.`id` WHERE 1=1 AND `d_tipo`.`dir` = 'uscita' AND('|period_start|' <= `d`.`data` AND '|period_end|' >= `d`.`data` OR '|period_start|' <= `d`.`data_competenza` AND '|period_end|' >= `d`.`data_competenza`) GROUP BY `id_segment`, `numero_documento`, `d`.`idanagrafica`) AS `d` ON (`d`.`numero_documento` = IF(`co_documenti`.`numero_esterno` = '',`co_documenti`.`numero`,`co_documenti`.`numero_esterno`) AND `d`.`anagrafica` = `co_documenti`.`idanagrafica` AND `d`.`id_segment` = `co_documenti`.`id_segment`)
WHERE
1=1
AND
`dir` = 'uscita' |segment(`co_documenti`.`id_segment`)| |date_period(custom, '|period_start|' <= `co_documenti`.`data` AND '|period_end|' >= `co_documenti`.`data`, '|period_start|' <= `co_documenti`.`data_competenza` AND '|period_end|' >= `co_documenti`.`data_competenza` )|
GROUP BY
`co_documenti`.`id`, `d`.`conteggio`
HAVING
2=2
ORDER BY
`co_documenti`.`data` DESC,
CAST(IF(`co_documenti`.`numero` = '', `co_documenti`.`numero_esterno`, `co_documenti`.`numero`) AS UNSIGNED) DESC" WHERE `name` = 'Fatture di acquisto';
-- Fix query vista Fatture di vendita
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'IF(emails IS NOT NULL, \'fa fa-envelope text-success\', \'\')' WHERE `zz_modules`.`name` = 'Fatture di vendita' AND `zz_views`.`name` = 'icon_Inviata';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'IF(emails IS NOT NULL, \'Inviata via email\', \'\')' WHERE `zz_modules`.`name` = 'Fatture di vendita' AND `zz_views`.`name` = 'icon_title_Inviata';
UPDATE `zz_modules` SET `options` = "
SELECT
|select|
FROM
`co_documenti`
LEFT JOIN (SELECT SUM(`totale`) AS `totale`, `iddocumento` FROM `co_movimenti` WHERE `totale` > 0 AND `primanota` = 1 GROUP BY `iddocumento`) AS `primanota` ON `primanota`.`iddocumento` = `co_documenti`.`id`
LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`
LEFT JOIN (SELECT `iddocumento`, SUM(`subtotale` - `sconto`) AS `totale_imponibile`, SUM(`iva`) AS `iva` FROM `co_righe_documenti` GROUP BY `iddocumento`) AS righe ON `co_documenti`.`id` = `righe`.`iddocumento`
LEFT JOIN (SELECT `co_banche`.`id`, CONCAT(`co_banche`.`nome`, ' - ', `co_banche`.`iban`) AS descrizione FROM `co_banche` GROUP BY `co_banche`.`id`) AS banche ON `banche`.`id` =`co_documenti`.`id_banca_azienda`
LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`
LEFT JOIN `fe_stati_documento` ON `co_documenti`.`codice_stato_fe` = `fe_stati_documento`.`codice`
LEFT JOIN `co_ritenuta_contributi` ON `co_documenti`.`id_ritenuta_contributi` = `co_ritenuta_contributi`.`id`
LEFT JOIN (SELECT COUNT(id) as emails, em_emails.id_record FROM em_emails INNER JOIN zz_operations ON zz_operations.id_email = em_emails.id WHERE id_module IN(SELECT id FROM zz_modules WHERE name = 'Fatture di vendita') AND `zz_operations`.`op` = 'send-email' GROUP BY em_emails.id_record) AS `email` ON `email`.`id_record` = `co_documenti`.`id`
LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id`
LEFT JOIN (SELECT `numero_esterno`, `id_segment`, `idtipodocumento`, `data` FROM `co_documenti` WHERE `co_documenti`.`idtipodocumento` IN( SELECT `id` FROM `co_tipidocumento` WHERE `dir` = 'entrata' |date_period(`co_documenti`.`data`)| ) AND `numero_esterno` != '' GROUP BY `id_segment`, `numero_esterno`, `idtipodocumento`, `data` HAVING COUNT(`numero_esterno`) > 1) dup ON `co_documenti`.`numero_esterno` = `dup`.`numero_esterno` AND `dup`.`id_segment` = `co_documenti`.`id_segment` AND `dup`.`idtipodocumento` = `co_documenti`.`idtipodocumento` AND `dup`.`data` = `co_documenti`.`data`
WHERE
1=1 AND `dir` = 'entrata' |segment(`co_documenti`.`id_segment`)| |date_period(`co_documenti`.`data`)|
HAVING
2=2
ORDER BY
`co_documenti`.`data` DESC,
CAST(`co_documenti`.`numero_esterno` AS UNSIGNED) DESC" WHERE `name` = 'Fatture di vendita';

14
update/2_4_46.php Normal file
View File

@ -0,0 +1,14 @@
<?php
// File e cartelle deprecate
$files = [
'templates/spesometro',
];
foreach ($files as $key => $value) {
$files[$key] = realpath(base_dir().'/'.$value);
}
delete($files);
?>

25
update/2_4_46.sql Normal file
View File

@ -0,0 +1,25 @@
-- Fix query Scadenzario
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'IF(emails IS NOT NULL, \'fa fa-envelope text-success\', \'\')' WHERE `zz_modules`.`name` = 'Scadenzario' AND `zz_views`.`name` = 'icon_Inviato';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'IF(emails IS NOT NULL, \'Inviata via email\', \'\')' WHERE `zz_modules`.`name` = 'Scadenzario' AND `zz_views`.`name` = 'icon_title_Inviato';
UPDATE `zz_modules` SET `options` = "
SELECT
|select|
FROM
`co_scadenziario`
LEFT JOIN `co_documenti` ON `co_scadenziario`.`iddocumento` = `co_documenti`.`id`
LEFT JOIN `co_banche` ON `co_banche`.`id` = `co_documenti`.`id_banca_azienda`
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 COUNT(id) as emails, em_emails.id_record FROM em_emails INNER JOIN zz_operations ON zz_operations.id_email = em_emails.id WHERE id_module IN(SELECT id FROM zz_modules WHERE name = 'Scadenzario') AND `zz_operations`.`op` = 'send-email' GROUP BY em_emails.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';
-- Rimozione stampa spesometro
DELETE FROM `zz_prints` WHERE `name` = 'Spesometro';