Introduzione gruppi scadenze

This commit is contained in:
Dasc3er 2021-09-17 09:42:52 +02:00 committed by Thomas Zilio
parent 475a194234
commit d35654b73c
22 changed files with 221 additions and 52 deletions

View File

@ -56,6 +56,8 @@ if (preg_match('/[`]*([a-z0-9_]*)[`]*[\.]*([`]*deleted_at[`]* IS NULL)/i', $quer
$query = str_replace($condition, '', $query); $query = str_replace($condition, '', $query);
} }
$query = null;
$has_access = !empty($query) ? $dbo->fetchNum($query) !== 0 : true; $has_access = !empty($query) ? $dbo->fetchNum($query) !== 0 : true;
if ($has_access) { if ($has_access) {

View File

@ -280,10 +280,10 @@ switch (post('op')) {
->select('*', 'co_documenti.id AS id', 'co_documenti.data AS data') ->select('*', 'co_documenti.id AS id', 'co_documenti.data AS data')
->where('idanagrafica', $id_anagrafica) ->where('idanagrafica', $id_anagrafica)
->whereIn('idstatodocumento', [$stato1->id, $stato2->id]) ->whereIn('idstatodocumento', [$stato1->id, $stato2->id])
->join('co_scadenziario', 'co_documenti.id', '=', 'co_scadenziario.iddocumento') ->join('co_scadenze', 'co_documenti.id', '=', 'co_scadenze.iddocumento')
->where('co_scadenziario.da_pagare', '>', 'co_scadenziario.pagato') ->where('co_scadenze.da_pagare', '>', 'co_scadenze.pagato')
->whereRaw('co_scadenziario.scadenza < NOW()') ->whereRaw('co_scadenze.scadenza < NOW()')
->groupBy('co_scadenziario.iddocumento') ->groupBy('co_scadenze.iddocumento')
->get(); ->get();
$results = []; $results = [];
@ -300,7 +300,7 @@ switch (post('op')) {
try { try {
$fattura->delete(); $fattura->delete();
$dbo->query('DELETE FROM co_scadenziario WHERE iddocumento='.prepare($id_record)); $dbo->query('DELETE FROM co_scadenze WHERE iddocumento='.prepare($id_record));
$dbo->query('DELETE FROM co_movimenti WHERE iddocumento='.prepare($id_record)); $dbo->query('DELETE FROM co_movimenti WHERE iddocumento='.prepare($id_record));
// Azzeramento collegamento della rata contrattuale alla pianificazione // Azzeramento collegamento della rata contrattuale alla pianificazione

View File

@ -64,7 +64,7 @@ if (empty($record['is_fiscale'])) {
} }
$modulo_prima_nota = Modules::get('Prima nota'); $modulo_prima_nota = Modules::get('Prima nota');
$totale_scadenze = $dbo->fetchOne('SELECT SUM(da_pagare - pagato) AS differenza, SUM(da_pagare) AS da_pagare FROM co_scadenziario WHERE iddocumento = '.prepare($id_record)); $totale_scadenze = $dbo->fetchOne('SELECT SUM(da_pagare - pagato) AS differenza, SUM(da_pagare) AS da_pagare FROM co_scadenze WHERE iddocumento = '.prepare($id_record));
if (!empty($record['is_fiscale'])) { if (!empty($record['is_fiscale'])) {
// Aggiunta insoluto // Aggiunta insoluto
$registrazione_insoluto = 0; $registrazione_insoluto = 0;

View File

@ -34,6 +34,7 @@ use Modules\Fatture\Gestori\Scadenze as GestoreScadenze;
use Modules\Pagamenti\Pagamento; use Modules\Pagamenti\Pagamento;
use Modules\PrimaNota\Movimento; use Modules\PrimaNota\Movimento;
use Modules\RitenuteContributi\RitenutaContributi; use Modules\RitenuteContributi\RitenutaContributi;
use Modules\Scadenzario\Gruppo;
use Modules\Scadenzario\Scadenza; use Modules\Scadenzario\Scadenza;
use Plugins\DichiarazioniIntento\Dichiarazione; use Plugins\DichiarazioniIntento\Dichiarazione;
use Plugins\ExportFE\FatturaElettronica; use Plugins\ExportFE\FatturaElettronica;
@ -440,9 +441,15 @@ class Fattura extends Document
return $this->hasOne(Components\Riga::class, 'iddocumento')->where('id', $this->id_riga_bollo); return $this->hasOne(Components\Riga::class, 'iddocumento')->where('id', $this->id_riga_bollo);
} }
public function gruppoScadenze()
{
return $this->hasOne(Gruppo::class, 'id_documento');
}
public function scadenze() public function scadenze()
{ {
return $this->hasMany(Scadenza::class, 'iddocumento')->orderBy('scadenza'); return $this->gruppoScadenze->scadenze()
->orderBy('scadenza');
} }
public function movimentiContabili() public function movimentiContabili()

View File

@ -86,7 +86,7 @@ class Scadenze
*/ */
public function rimuovi() public function rimuovi()
{ {
database()->delete('co_scadenziario', ['iddocumento' => $this->fattura->id]); database()->delete('co_scadenze', ['iddocumento' => $this->fattura->id]);
} }
/** /**
@ -102,9 +102,10 @@ class Scadenze
$numero = $fattura->numero_esterno ?: $fattura->numero; $numero = $fattura->numero_esterno ?: $fattura->numero;
$descrizione = $fattura->tipo->descrizione.' numero '.$numero; $descrizione = $fattura->tipo->descrizione.' numero '.$numero;
$scadenza = Scadenza::build($descrizione, $importo, $data_scadenza, $type, $is_pagato); // TODO $descrizione Gruppo
$scadenza = Scadenza::build($importo, $data_scadenza, $type, $is_pagato);
$scadenza->documento()->associate($fattura); $scadenza->fattura()->associate($fattura);
$scadenza->data_emissione = $fattura->data; $scadenza->data_emissione = $fattura->data;
$scadenza->save(); $scadenza->save();

View File

@ -67,7 +67,7 @@ $permetti_modelli = (count($id_documenti) + count($id_scadenze)) <= 1;
// Scadenze // Scadenze
foreach ($id_scadenze as $id_scadenza) { foreach ($id_scadenze as $id_scadenza) {
$scadenza = $database->fetchOne('SELECT *, SUM(da_pagare - pagato) AS rata FROM co_scadenziario WHERE id='.prepare($id_scadenza)); $scadenza = $database->fetchOne('SELECT *, SUM(da_pagare - pagato) AS rata FROM co_scadenze WHERE id='.prepare($id_scadenza));
if (!empty($scadenza['iddocumento'])) { if (!empty($scadenza['iddocumento'])) {
$id_documenti[] = $scadenza['iddocumento']; $id_documenti[] = $scadenza['iddocumento'];
continue; continue;
@ -148,9 +148,9 @@ foreach ($id_documenti as $id_documento) {
// Se sto registrando un insoluto, leggo l'ultima scadenza pagata altrimenti leggo la scadenza della fattura // Se sto registrando un insoluto, leggo l'ultima scadenza pagata altrimenti leggo la scadenza della fattura
if ($is_insoluto) { if ($is_insoluto) {
$scadenze = $database->fetchArray('SELECT id, ABS(da_pagare) AS rata, iddocumento FROM co_scadenziario WHERE iddocumento='.prepare($id_documento).' AND ABS(da_pagare) = ABS(pagato) ORDER BY updated_at DESC LIMIT 0, 1'); $scadenze = $database->fetchArray('SELECT id, ABS(da_pagare) AS rata, iddocumento FROM co_scadenze WHERE iddocumento='.prepare($id_documento).' AND ABS(da_pagare) = ABS(pagato) ORDER BY updated_at DESC LIMIT 0, 1');
} else { } else {
$scadenze = $database->fetchArray('SELECT id, ABS(da_pagare - pagato) AS rata, iddocumento FROM co_scadenziario WHERE iddocumento='.prepare($id_documento).' AND ABS(da_pagare) > ABS(pagato)'.(!empty($id_scadenze) ? 'AND id IN('.implode(',', $id_scadenze).')' : '').' ORDER BY YEAR(scadenza) ASC, MONTH(scadenza) ASC'); $scadenze = $database->fetchArray('SELECT id, ABS(da_pagare - pagato) AS rata, iddocumento FROM co_scadenze WHERE iddocumento='.prepare($id_documento).' AND ABS(da_pagare) > ABS(pagato)'.(!empty($id_scadenze) ? 'AND id IN('.implode(',', $id_scadenze).')' : '').' ORDER BY YEAR(scadenza) ASC, MONTH(scadenza) ASC');
} }
// Selezione prima scadenza // Selezione prima scadenza

View File

@ -143,7 +143,7 @@ class Mastrino extends Model
$database = database(); $database = database();
foreach ($documenti as $id_documento) { foreach ($documenti as $id_documento) {
// Verifico se la fattura è stata pagata tutta, così imposto lo stato a "Pagato" // Verifico se la fattura è stata pagata tutta, così imposto lo stato a "Pagato"
$totali = $database->fetchOne('SELECT SUM(pagato) AS tot_pagato, SUM(da_pagare) AS tot_da_pagare FROM co_scadenziario WHERE iddocumento='.prepare($id_documento)); $totali = $database->fetchOne('SELECT SUM(pagato) AS tot_pagato, SUM(da_pagare) AS tot_da_pagare FROM co_scadenze WHERE iddocumento='.prepare($id_documento));
$totale_pagato = abs(floatval($totali['tot_pagato'])); $totale_pagato = abs(floatval($totali['tot_pagato']));
$totale_da_pagare = abs(floatval($totali['tot_da_pagare'])); $totale_da_pagare = abs(floatval($totali['tot_da_pagare']));

View File

@ -17,17 +17,24 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
use Modules\Scadenzario\Gruppo;
use Modules\Scadenzario\Scadenza;
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
switch (post('op')) { switch (post('op')) {
case 'add': case 'add':
// Creazione nuovo Gruppo Scadenze
$descrizione = post('descrizione');
$gruppo = Gruppo::build($descrizione);
// Creazione Scadenza associata al gruppo
$data = post('data'); $data = post('data');
$tipo = post('tipo'); $tipo = post('tipo');
$da_pagare = post('da_pagare'); $da_pagare = post('da_pagare');
$descrizione = post('descrizione'); $scadenza = Scadenza::build($gruppo, $da_pagare, $data, $tipo);
$dbo->query('INSERT INTO co_scadenziario(descrizione, tipo, data_emissione, scadenza, da_pagare, pagato) VALUES('.prepare($descrizione).', '.prepare($tipo).', CURDATE(), '.prepare($data).', '.prepare($da_pagare).", '0')"); $id_record = $scadenza->id;
$id_record = $dbo->lastInsertedID();
flash()->info(tr('Scadenza inserita!')); flash()->info(tr('Scadenza inserita!'));
break; break;
@ -77,7 +84,7 @@ switch (post('op')) {
$id_scadenza = post('id_scadenza')[$id]; $id_scadenza = post('id_scadenza')[$id];
if (!empty($id_scadenza)) { if (!empty($id_scadenza)) {
$database->update('co_scadenziario', [ $database->update('co_scadenze', [
'descrizione' => $descrizione, 'descrizione' => $descrizione,
'da_pagare' => $da_pagare, 'da_pagare' => $da_pagare,
'pagato' => $pagato, 'pagato' => $pagato,
@ -88,10 +95,10 @@ switch (post('op')) {
], ['id' => $id_scadenza]); ], ['id' => $id_scadenza]);
if ($da_pagare == 0) { if ($da_pagare == 0) {
$database->delete('co_scadenziario', ['id' => $id]); $database->delete('co_scadenze', ['id' => $id]);
} }
} else { } else {
$database->insert('co_scadenziario', [ $database->insert('co_scadenze', [
'descrizione' => $descrizione, 'descrizione' => $descrizione,
'tipo' => $tipo, 'tipo' => $tipo,
'iddocumento' => $iddocumento, 'iddocumento' => $iddocumento,
@ -116,7 +123,8 @@ switch (post('op')) {
break; break;
case 'delete': case 'delete':
$dbo->query("DELETE FROM co_scadenziario WHERE id='".$id_record."'"); $gruppo->delete();
flash()->info(tr('Scadenza eliminata!')); flash()->info(tr('Scadenza eliminata!'));
break; break;
} }

View File

@ -19,7 +19,7 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
if (empty($dbo->fetchArray('SELECT * FROM co_scadenziario'))) { if (empty($dbo->fetchArray('SELECT * FROM co_scadenze'))) {
$class = 'muted'; $class = 'muted';
$disabled = 'disabled'; $disabled = 'disabled';
} else { } else {

View File

@ -106,7 +106,7 @@ if (!empty($documento)) {
'.Modules::link($documento->module, $record['iddocumento'], '<i class="fa fa-folder-open"></i> '.tr('Apri documento'), null, 'class="btn btn-primary"'); '.Modules::link($documento->module, $record['iddocumento'], '<i class="fa fa-folder-open"></i> '.tr('Apri documento'), null, 'class="btn btn-primary"');
} else { } else {
$scadenza = $dbo->fetchOne('SELECT * FROM co_scadenziario WHERE id = '.prepare($id_record)); $scadenza = $dbo->fetchOne('SELECT * FROM co_scadenze WHERE id = '.prepare($id_record));
echo input([ echo input([
'type' => 'textarea', 'type' => 'textarea',
@ -219,7 +219,7 @@ $id_scadenza = $id_record;
// Forzatura per allegare file sempre al primo record // Forzatura per allegare file sempre al primo record
if (!empty($documento)) { if (!empty($documento)) {
$id_scadenza = $dbo->fetchOne('SELECT id FROM co_scadenziario WHERE iddocumento='.prepare($documento->id).' ORDER BY id')['id']; $id_scadenza = $dbo->fetchOne('SELECT id FROM co_scadenze WHERE iddocumento='.prepare($documento->id).' ORDER BY id')['id'];
} }
?> ?>

View File

@ -17,20 +17,21 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
use Modules\Fatture\Fattura; use Modules\Scadenzario\Gruppo;
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
if (isset($id_record)) { if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT * FROM co_scadenziario WHERE id = '.prepare($id_record)); $gruppo = Gruppo::find($id_record);
$documento = Fattura::find($record['iddocumento']); $documento = $gruppo->fattura;
$scadenze = $gruppo->scadenze;
$record = $gruppo->toArray();
// Scelgo la query in base alla scadenza // Scelgo la query in base alla scadenza
if (!empty($documento)) { if (!empty($documento)) {
$scadenze = $dbo->fetchArray('SELECT * FROM co_scadenziario WHERE iddocumento = '.prepare($documento->id).' ORDER BY scadenza ASC');
$totale_da_pagare = $documento->netto; $totale_da_pagare = $documento->netto;
} else { } else {
$scadenze = $dbo->fetchArray('SELECT * FROM co_scadenziario WHERE id = '.prepare($id_record).' ORDER BY scadenza ASC'); $totale_da_pagare = sum(array_column($scadenze->toArray(), 'da_pagare'));
$totale_da_pagare = sum(array_column($scadenze, 'da_pagare'));
} }
} }

View File

@ -0,0 +1,66 @@
<?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/>.
*/
namespace Modules\Scadenzario;
use Carbon\Carbon;
use Common\SimpleModelTrait;
use Illuminate\Database\Eloquent\Model;
use Modules\Fatture\Fattura;
class Gruppo extends Model
{
use SimpleModelTrait;
protected $table = 'co_gruppi_scadenze';
protected $dates = [
'data_emissione',
];
public static function build($descrizione, Fattura $fattura = null)
{
$model = new static();
$model->descrizione = $descrizione;
if (!empty($fattura)) {
$model->fattura()->associate($fattura);
$model->data_emissione = $fattura->data;
} else {
$model->data_emissione = new Carbon();
}
$model->save();
return $model;
}
// Relazioni Eloquent
public function fattura()
{
return $this->belongsTo(Fattura::class, 'id_documento');
}
public function scadenze()
{
return $this->hasMany(Scadenza::class, 'id_gruppo');
}
}

View File

@ -27,21 +27,22 @@ class Scadenza extends Model
{ {
use SimpleModelTrait; use SimpleModelTrait;
protected $table = 'co_scadenziario'; protected $table = 'co_scadenze';
protected $dates = [ protected $dates = [
'scadenza', 'scadenza',
'data_pagamento', 'data_pagamento',
]; ];
public static function build($descrizione, $importo, $data_scadenza, $type = 'fattura', $is_pagato = false) public static function build(Gruppo $gruppo, $importo, $data_scadenza, $tipo = 'fattura', $is_pagato = false)
{ {
$model = new static(); $model = new static();
$model->descrizione = $descrizione; $model->gruppo()->associate($gruppo);
$model->scadenza = $data_scadenza; $model->scadenza = $data_scadenza;
$model->da_pagare = $importo; $model->da_pagare = $importo;
$model->tipo = $type; $model->tipo = $tipo;
$model->pagato = $is_pagato ? $importo : 0; $model->pagato = $is_pagato ? $importo : 0;
$model->data_pagamento = $is_pagato ? $data_scadenza : null; $model->data_pagamento = $is_pagato ? $data_scadenza : null;
@ -51,8 +52,25 @@ class Scadenza extends Model
return $model; return $model;
} }
public function documento() public function save(array $options = [])
{ {
return $this->belongsTo(Fattura::class, 'iddocumento'); $result = parent::save($options);
// Trigger per il gruppo al cambiamento della scadenza
$this->gruppo->triggerScadenza($this);
return $result;
}
// Relazioni Eloquent
public function gruppo()
{
return $this->belongsTo(Gruppo::class, 'id_gruppo');
}
public function fattura()
{
return $this->gruppo->fattura();
} }
} }

View File

@ -17,17 +17,17 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
$r = $dbo->fetchOne('SELECT co_scadenziario.*, co_documenti.*, $r = $dbo->fetchOne('SELECT co_scadenze.*, co_documenti.*,
an_anagrafiche.email, an_anagrafiche.email,
an_anagrafiche.pec, an_anagrafiche.pec,
an_anagrafiche.ragione_sociale, an_anagrafiche.ragione_sociale,
co_scadenziario.da_pagare - co_scadenziario.pagato AS totale, co_scadenze.da_pagare - co_scadenze.pagato AS totale,
(SELECT pec FROM em_accounts WHERE em_accounts.id='.prepare($template['id_account']).') AS is_pec, (SELECT pec FROM em_accounts WHERE em_accounts.id='.prepare($template['id_account']).') AS is_pec,
(SELECT descrizione FROM co_pagamenti WHERE co_pagamenti.id = co_documenti.idpagamento) AS pagamento (SELECT descrizione FROM co_pagamenti WHERE co_pagamenti.id = co_documenti.idpagamento) AS pagamento
FROM co_scadenziario FROM co_scadenze
INNER JOIN co_documenti ON co_documenti.id = co_scadenziario.iddocumento INNER JOIN co_documenti ON co_documenti.id = co_scadenze.iddocumento
INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica
WHERE co_scadenziario.pagato != co_scadenziario.da_pagare AND co_scadenziario.iddocumento = (SELECT iddocumento FROM co_scadenziario s WHERE id='.prepare($id_record).')'); WHERE co_scadenze.pagato != co_scadenze.da_pagare AND co_scadenze.iddocumento = (SELECT iddocumento FROM co_scadenze s WHERE id='.prepare($id_record).')');
$logo_azienda = str_replace(base_dir(), base_path(), App::filepath('templates/base|custom|/logo_azienda.jpg')); $logo_azienda = str_replace(base_dir(), base_path(), App::filepath('templates/base|custom|/logo_azienda.jpg'));

View File

@ -37,10 +37,9 @@ switch (filter('op')) {
//aggiorno anche il segmento //aggiorno anche il segmento
$dbo->update('zz_segments', [ $dbo->update('zz_segments', [
'clause' => 'co_scadenziario.tipo="'.$nome.'"', 'clause' => 'co_gruppi_scadenze.tipo="'.$nome.'"',
'name' => 'Scadenzario '.$nome, 'name' => 'Scadenzario '.$nome,
], [ ], [
'clause' => 'co_scadenziario.tipo="'.$nome_prev.'"',
'name' => 'Scadenzario '.$nome_prev, 'name' => 'Scadenzario '.$nome_prev,
'id_module' => Modules::get('Scadenzario')['id'], 'id_module' => Modules::get('Scadenzario')['id'],
]); ]);
@ -75,7 +74,7 @@ switch (filter('op')) {
$dbo->insert('zz_segments', [ $dbo->insert('zz_segments', [
'id_module' => Modules::get('Scadenzario')['id'], 'id_module' => Modules::get('Scadenzario')['id'],
'name' => 'Scadenzario '.$nome, 'name' => 'Scadenzario '.$nome,
'clause' => 'co_scadenziario.tipo="'.$nome.'"', 'clause' => 'co_scadenze.tipo="'.$nome.'"',
'position' => 'WHR', 'position' => 'WHR',
]); ]);
@ -99,7 +98,7 @@ switch (filter('op')) {
break; break;
case 'delete': case 'delete':
$documenti = $dbo->fetchNum('SELECT id FROM co_scadenziario WHERE tipo = (SELECT nome FROM co_tipi_scadenze WHERE id = '.prepare($id_record).')'); $documenti = $dbo->fetchNum('SELECT id FROM co_scadenze WHERE tipo = (SELECT nome FROM co_tipi_scadenze WHERE id = '.prepare($id_record).')');
if (isset($id_record) && empty($documenti)) { if (isset($id_record) && empty($documenti)) {
$dbo->query('DELETE FROM `co_tipi_scadenze` WHERE `can_delete` = 1 AND `id`='.prepare($id_record)); $dbo->query('DELETE FROM `co_tipi_scadenze` WHERE `can_delete` = 1 AND `id`='.prepare($id_record));

View File

@ -20,7 +20,7 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
// Collegamenti con scadenzaio (numerici) // Collegamenti con scadenzaio (numerici)
$scadenze = $dbo->fetchNum('SELECT id FROM co_scadenziario WHERE tipo = '.prepare($record['nome'])); $scadenze = $dbo->fetchNum('SELECT id FROM co_scadenze WHERE tipo = '.prepare($record['nome']));
if ($record['can_delete'] and empty($scadenze)) { if ($record['can_delete'] and empty($scadenze)) {
$attr = ''; $attr = '';

View File

@ -1580,8 +1580,8 @@ class FatturaElettronica
'CondizioniPagamento' => ($co_pagamenti['prc'] == 100) ? 'TP02' : 'TP01', 'CondizioniPagamento' => ($co_pagamenti['prc'] == 100) ? 'TP02' : 'TP01',
]; ];
$co_scadenziario = $database->fetchArray('SELECT * FROM `co_scadenziario` WHERE `iddocumento` = '.prepare($documento['id'])); $co_scadenze = $database->fetchArray('SELECT * FROM `co_scadenze` WHERE `iddocumento` = '.prepare($documento['id']));
foreach ($co_scadenziario as $scadenza) { foreach ($co_scadenze as $scadenza) {
$pagamento = [ $pagamento = [
'ModalitaPagamento' => $co_pagamenti['codice_modalita_pagamento_fe'], 'ModalitaPagamento' => $co_pagamenti['codice_modalita_pagamento_fe'],
'DataScadenzaPagamento' => $scadenza['scadenza'], 'DataScadenzaPagamento' => $scadenza['scadenza'],

View File

@ -70,7 +70,7 @@ echo "
</tr>'; </tr>';
// Elenco scadenze // Elenco scadenze
$rs2 = $dbo->fetchArray('SELECT * FROM co_scadenziario WHERE iddocumento='.prepare($id_record).' ORDER BY `data_emissione` ASC'); $rs2 = $dbo->fetchArray('SELECT * FROM co_scadenze WHERE iddocumento='.prepare($id_record).' ORDER BY `data_emissione` ASC');
if (!empty($rs2)) { if (!empty($rs2)) {
for ($i = 0; $i < sizeof($rs2); ++$i) { for ($i = 0; $i < sizeof($rs2); ++$i) {
echo " echo "

View File

@ -47,7 +47,7 @@ if (!empty($search_filters)) {
$module_query = str_replace('2=2', '2=2 AND ('.implode(' AND ', $search_filters).') ', $module_query); $module_query = str_replace('2=2', '2=2 AND ('.implode(' AND ', $search_filters).') ', $module_query);
} }
$module_query = str_replace('1=1', '1=1 AND ABS(`co_scadenziario`.`pagato`) < ABS(`co_scadenziario`.`da_pagare`) ', $module_query); $module_query = str_replace('1=1', '1=1 AND ABS(`co_scadenze`.`pagato`) < ABS(`co_scadenze`.`da_pagare`) ', $module_query);
// Filtri derivanti dai permessi (eventuali) // Filtri derivanti dai permessi (eventuali)
$module_query = Modules::replaceAdditionals($id_module, $module_query); $module_query = Modules::replaceAdditionals($id_module, $module_query);

View File

@ -129,4 +129,4 @@ ALTER TABLE `em_accounts` ADD `id_oauth2` INT(11) DEFAULT NULL,
-- Aggiunta opt-out Newsletter per Referenti e Sedi -- Aggiunta opt-out Newsletter per Referenti e Sedi
ALTER TABLE `an_referenti` ADD `enable_newsletter` BOOLEAN DEFAULT TRUE; ALTER TABLE `an_referenti` ADD `enable_newsletter` BOOLEAN DEFAULT TRUE;
ALTER TABLE `an_sedi` ADD `enable_newsletter` BOOLEAN DEFAULT TRUE; ALTER TABLE `an_sedi` ADD `enable_newsletter` BOOLEAN DEFAULT TRUE;

66
update/scadenze.sql Normal file
View File

@ -0,0 +1,66 @@
-- Aggiunto nuovo sistema di gestione Scadenze
CREATE TABLE IF NOT EXISTS `co_gruppi_scadenze` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_documento` int(11) DEFAULT NULL,
`descrizione` varchar(255) NOT NULL,
`data_emissione` date NOT NULL,
`totale_pagato` decimal(12, 6) NOT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY(`id`),
FOREIGN KEY (`id_documento`) REFERENCES `co_documenti`(`id`)
) ENGINE=InnoDB;
ALTER TABLE `co_scadenze` RENAME TO `co_scadenze`;
ALTER TABLE `co_scadenze` ADD `id_gruppo` INT(11), ADD FOREIGN KEY (`id_gruppo`) REFERENCES `co_gruppi_scadenze`(`id`);
ALTER TABLE `co_gruppi_scadenze` ADD `id_scadenza_origine` INT(11);
-- Inserimento gruppi per Documenti
INSERT INTO `co_gruppi_scadenze` (`id_scadenza_origine`, `id_documento`, `descrizione`, `data_emissione`, `totale_pagato`) SELECT `id`, `iddocumento`, `descrizione`, `data_emissione`, SUM(`pagato`) FROM `co_scadenze` WHERE `iddocumento` != 0 GROUP BY `iddocumento`;
UPDATE `co_scadenze` INNER JOIN `co_gruppi_scadenze` ON `co_scadenze`.`iddocumento` = `co_gruppi_scadenze`.`id_documento` SET `co_scadenze`.`id_gruppo` = `co_gruppi_scadenze`.`id`;
-- Inserimento gruppi per Scadenze indipendenti
INSERT INTO `co_gruppi_scadenze` (`id_scadenza_origine`, `id_documento`, `descrizione`, `data_emissione`, `totale_pagato`) SELECT `id`, `iddocumento`, `descrizione`, `data_emissione`, `pagato` FROM `co_scadenze` WHERE `iddocumento` = 0;
UPDATE `co_scadenze` INNER JOIN `co_gruppi_scadenze` ON `co_scadenze`.`id` = `co_gruppi_scadenze`.`id_scadenza_origine` SET `co_scadenze`.`id_gruppo` = `co_gruppi_scadenze`.`id`;
-- ALTER TABLE `co_gruppi_scadenze` DROP `id_scadenza_origine`;
-- Correzioni per il modulo Scadenzario
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_scadenze`
INNER JOIN `co_gruppi_scadenze` ON `co_gruppi_scadenze`.`id` = `co_scadenze`.`id_gruppo`
LEFT JOIN `co_documenti` ON `co_gruppi_scadenze`.`id_documento` = `co_documenti`.`id`
LEFT JOIN `an_anagrafiche` ON `co_documenti`.`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`
WHERE 1=1 AND
(`co_statidocumento`.`descrizione` IS NULL OR `co_statidocumento`.`descrizione` IN(''Emessa'',''Parzialmente pagato'',''Pagato''))
HAVING 2=2
ORDER BY `co_scadenze`.`scadenza` ASC' WHERE `zz_modules`.`name` = 'Scadenzario';
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `visible`, `format`) VALUES
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Scadenzario'), '_link_record_', 'co_gruppi_scadenze.id', 0, 0, 0),
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Scadenzario'), '_link_hash_', 'CONCAT(''scadenza_'', co_scadenze.id)', 0, 0, 0);
UPDATE `zz_views` SET `query` = 'co_scadenze.scadenza' WHERE `name` = 'Data scadenza' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE name = 'Scadenzario');
UPDATE `zz_views` SET `query` = 'co_scadenze.id' WHERE `name` = 'id' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE name = 'Scadenzario');
UPDATE `zz_views` SET `query` = 'co_gruppi_scadenze.data_emissione' WHERE `name` = 'Data emissione' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE name = 'Scadenzario');
UPDATE `zz_views` SET `query` = 'co_scadenze.da_pagare' WHERE `name` = 'Importo' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE name = 'Scadenzario');
UPDATE `zz_views` SET `query` = 'co_scadenze.pagato' WHERE `name` = 'Pagato' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE name = 'Scadenzario');
UPDATE `zz_views` SET `query` = 'co_gruppi_scadenze.descrizione' WHERE `name` = 'Descrizione scadenza' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE name = 'Scadenzario');
UPDATE `zz_views` SET `query` = 'IF(an_anagrafiche.ragione_sociale IS NULL, co_gruppi_scadenze.descrizione, an_anagrafiche.ragione_sociale)' WHERE `name` = 'Anagrafica' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE name = 'Scadenzario');
UPDATE `zz_views` SET `query` = 'co_scadenze.note' WHERE `name` = 'Note' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE name = 'Scadenzario');
UPDATE `zz_widgets` SET `query` = REPLACE(`query`, 'co_scadenziario', 'co_scadenze');
UPDATE `zz_segments` SET `clause` = REPLACE(`clause`, 'co_scadenziario', 'co_scadenze');

View File

@ -34,7 +34,8 @@ return [
'co_ritenutaacconto', 'co_ritenutaacconto',
'co_ritenuta_contributi', 'co_ritenuta_contributi',
'co_rivalse', 'co_rivalse',
'co_scadenziario', 'co_gruppi_scadenze',
'co_scadenze',
'co_staticontratti', 'co_staticontratti',
'co_statidocumento', 'co_statidocumento',
'co_statipreventivi', 'co_statipreventivi',