Introduzione gruppi scadenze
This commit is contained in:
parent
475a194234
commit
d35654b73c
|
@ -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) {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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']));
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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'];
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
|
|
@ -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'));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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');
|
||||||
|
}
|
||||||
|
}
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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'));
|
||||||
|
|
||||||
|
|
|
@ -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));
|
||||||
|
|
|
@ -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 = '';
|
||||||
|
|
|
@ -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'],
|
||||||
|
|
|
@ -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 "
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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');
|
|
@ -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',
|
||||||
|
|
Loading…
Reference in New Issue