Inizio revisione modulo Scadenzario

This commit is contained in:
Dasc3er 2021-09-17 17:54:35 +02:00 committed by Thomas Zilio
parent d9aec773d5
commit 2f8f472fe8
6 changed files with 139 additions and 123 deletions

View File

@ -334,7 +334,7 @@ elseif ($record['stato'] == 'Bozza') {
<p class="pull-left"><strong>'.tr('Scadenze').'</strong></p>
<div class="btn-group pull-right">
'.Modules::link('Scadenzario', $fattura->gruppoScadenze->id, tr('<i class="fa fa-edit tip" title="'.tr('Modifica scadenze').'"></i>'), '', 'class="btn btn-xs btn-primary"');
'.Modules::link('Scadenzario', $fattura->getGruppoScadenze()->id, tr('<i class="fa fa-edit tip" title="'.tr('Modifica scadenze').'"></i>'), '', 'class="btn btn-xs btn-primary"');
// Ricalcola scadenze disponibile solo per fatture di acquisto
if ($fattura->isFE() && $ricalcola && $module['name'] == 'Fatture di acquisto') {

View File

@ -444,14 +444,15 @@ class Fattura extends Document
return $this->hasOne(Components\Riga::class, 'iddocumento')->where('id', $this->id_riga_bollo);
}
public function gruppoScadenze()
public function getGruppoScadenze()
{
return $this->hasOne(Gruppo::class, 'id_documento');
return $this->gestoreScadenze->getGruppo();
}
public function scadenze()
{
return $this->gruppoScadenze->scadenze()
return $this->getGruppoScadenze()
->scadenze()
->orderBy('scadenza');
}
@ -608,7 +609,7 @@ class Fattura extends Document
|| $options[0] == 'forza_emissione'
) {
// Correzione descrizione per Gruppo Scadenze di riferimento
$gruppo = $this->gruppoScadenze;
$gruppo = $this->gestoreScadenze->getGruppo();
$gruppo->descrizione = $this->getReference();
$gruppo->save();

View File

@ -32,20 +32,35 @@ use Util\XML;
*/
class Scadenze
{
/**
* @var Fattura
*/
private $fattura;
/**
* @var Gruppo
*/
private $gruppo;
public function __construct(Fattura $fattura)
{
$this->fattura = $fattura;
}
public function getGruppo(){
// Generazione Gruppo Scadenze di riferimento
if (empty($this->fattura->gruppoScadenze)) {
$gruppo = Gruppo::build($this->fattura->getReference(), $this->fattura);
if (isset($this->gruppo)){
return $this->gruppo;
}
return $this->fattura->gruppoScadenze;
// Ricerca Gruppo Scadenza associato alla Fattura
$this->gruppo = Gruppo::where('id_documento', '=', $this->fattura->id)->first();
// Generazione Gruppo Scadenza associato alla Fattura
if (empty($this->gruppo)){
$this->gruppo = Gruppo::build($this->fattura->getReference(), $this->fattura);
}
return $this->gruppo;
}
/**
@ -87,7 +102,7 @@ class Scadenze
$importo = -$ritenuta_acconto;
self::registraScadenza($this->fattura, $importo, $scadenza, $is_pagato, 'ritenutaacconto');
$this->registraScadenza($importo, $scadenza, $is_pagato, 'ritenutaacconto');
}
}
@ -107,9 +122,9 @@ class Scadenze
* @param bool $is_pagato
* @param string $tipo
*/
protected static function registraScadenza(Fattura $fattura, $importo, $data_scadenza, $is_pagato, $tipo = 'fattura')
protected function registraScadenza($importo, $data_scadenza, $is_pagato, $tipo = 'fattura')
{
return Scadenza::build($fattura->getGruppo(), $importo, $data_scadenza, $tipo, $is_pagato);
return Scadenza::build($this->getGruppo(), $importo, $data_scadenza, $tipo, $is_pagato);
}
/**
@ -140,7 +155,7 @@ class Scadenze
$scadenza = !empty($rata['DataScadenzaPagamento']) ? FatturaElettronicaImport::parseDate($rata['DataScadenzaPagamento']) : $this->fattura->data;
$importo = $this->fattura->isNota() ? $rata['ImportoPagamento'] : -$rata['ImportoPagamento'];
self::registraScadenza($this->fattura, $importo, $scadenza, $is_pagato);
$this->registraScadenza($importo, $scadenza, $is_pagato);
}
}
@ -166,7 +181,7 @@ class Scadenze
$scadenza = $rata['scadenza'];
$importo = $direzione == 'uscita' ? -$rata['importo'] : $rata['importo'];
self::registraScadenza($this->fattura, $importo, $scadenza, $is_pagato);
$this->registraScadenza($importo, $scadenza, $is_pagato);
}
}
}

View File

@ -35,55 +35,50 @@ echo '
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">
'.tr('Dettagli scadenza').'
<button type="button" class="btn btn-xs btn-info pull-right tip '.(empty($documento) ? 'disabled' : '').'" id="add-scadenza" '.(empty($documento) ? 'disabled' : '').' title="'.tr('È possibile aggiungere scadenze solo se è presente il collegamento a un documento, in caso contrario è consigliato creare più scadenze con la stessa descrizione').'">
<i class="fa fa-plus"></i> '.tr('Aggiungi scadenza').'
</button>
'.tr('Gruppo Scadenze').'
</h3>
</div>
<div class="panel-body">
<div class="row">
<!-- Info scadenza -->
<div class="col-md-6">';
<div class="panel-body">';
if (!empty($documento)) {
echo '
<table class="table table-striped table-hover table-condensed table-bordered">
<tr>
<th width="120">'.($dir == 'entrata' ? tr('Cliente') : tr('Fornitore')).':</th>
<td>
'.Modules::link('Anagrafiche', $documento->anagrafica->id, $documento->anagrafica->ragione_sociale).'
</td>
</tr>
<div class="row">
<div class="col-md-4">
<h4>' . tr('Documento') . '</h4>
' . Modules::link($documento->getModule(), $documento->id, $documento->getReference()) . '
</div>
<tr>
<th>'.tr('Documento').':</th>
<td>'.$documento->tipo->descrizione.'</td>
</tr>
<div class="col-md-4">
<h4>' . ($documento->direzione == 'entrata' ? tr('Cliente') : tr('Fornitore')) . '</h4>
' . Modules::link('Anagrafiche', $documento->anagrafica->id, $documento->anagrafica->ragione_sociale) . '
</div>
<tr>
<th>'.tr('Numero').':</th>
<td>'.$numero.'</td>
</tr>
<div class="col-md-4">
<h4>' . tr('Netto a pagare') . '</h4>
' . moneyFormat($documento->netto) . '
</div>
</div>
<tr>
<th>'.tr('Data').':</th>
<td>'.Translator::dateToLocale($documento->data).'</td>
</tr>
<div class="clearfix"></div>
<br>';
}
echo '
<div class="row">
<div class="col-md-8">
{[ "type": "text", "label": "'.tr('Descrizione').'", "name": "descrizione", "value": "'.$gruppo['descrizione'].'" ]}
</div>
<tr>
<th>'.tr('Netto a pagare').':</th>
<td>'.moneyFormat($documento->netto).'</td>
</tr>
<div class="col-md-4">
{[ "type": "date", "label": "'.tr('Data di emissione').'", "name": "data_emissione", "value": "'.$gruppo['data_emissione'].'" ]}
</div>
</div>
<tr>
<th>'.tr('Note').':</th>
<td>
{[ "type": "textarea", "name": "note", "value": "'.$record['note'].'" ]}
</td>
</tr>
<div class="row">
<div class="col-md-12">
{[ "type": "ckeditor", "label": "'.tr('Note').'", "name": "note", "value": "'.$gruppo['note'].'" ]}
</div>
</div>';
<tr>
<th>'.tr('Distinta').':</th>
@ -125,96 +120,96 @@ if (!empty($documento)) {
}
echo '
</div>
</div>
</div>
<!-- Elenco scadenze -->
<div class="col-md-6">
<table class="table table-hover table-condensed table-bordered">
<thead>
<tr>
<th width="150">'.tr('Data').'</th>
<th width="150">'.tr('Importo').'</th>
<th width="150">'.tr('Pagato').'</th>
<th width="150">'.tr('Data concordata').'</th>
</tr>
</thead>
<!-- Elenco scadenze -->
<div class="box box-primary">
<div class="box-header">
<h3 class="box-title">'.tr('Elenco scadenza').'</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-xs btn-info tip '.(empty($documento) ? 'disabled' : '').'" id="add-scadenza" '.(empty($documento) ? 'disabled' : '').' title="'.tr('È possibile aggiungere scadenze solo se è presente il collegamento a un documento, in caso contrario è consigliato creare più scadenze con la stessa descrizione').'">
<i class="fa fa-plus"></i> '.tr('Aggiungi scadenza').'
</button>
</div>
</div>
<tbody id="scadenze">';
<div class="box-body">
<table class="table table-hover table-condensed table-bordered">
<thead>
<tr>
<th class="text-center" width="150">'.tr('Data').'</th>
<th class="text-center" width="150">'.tr('Importo').'</th>
<th class="text-center" width="150">'.tr('Pagato').'</th>
<th class="text-center" width="150">'.tr('Data concordata').'</th>
<th class="text-center" width="150">'.tr('Note').'</th>
</tr>
</thead>
foreach ($scadenze as $i => $scadenza) {
<tbody id="scadenze">';
foreach ($scadenze as $i => $scadenza) {
if ($scadenza['da_pagare'] == $scadenza['pagato']) {
$class = 'success';
$class = 'success';
} elseif (abs($scadenza['pagato']) == 0) {
$class = 'danger';
$class = 'danger';
} elseif (abs($scadenza['pagato']) <= abs($scadenza['da_pagare'])) {
$class = 'warning';
$class = 'warning';
} else {
$class = 'danger';
$class = 'danger';
}
echo '
<tr class="'.$class.'">
<input type="hidden" name="id_scadenza['.$i.']" value="'.$scadenza['id'].'">
<tr class="'.$class.'">
<input type="hidden" name="id_scadenza['.$i.']" value="'.$scadenza['id'].'">
<td align="center">
{[ "type": "date", "name": "scadenza['.$i.']", "value": "'.$scadenza['scadenza'].'" ]}
</td>
<td class="text-center">
{[ "type": "date", "name": "scadenza['.$i.']", "value": "'.$scadenza['scadenza'].'" ]}
</td>
<td class="text-right">
{[ "type": "number", "name": "da_pagare['.$i.']", "decimals": 2, "value": "'.numberFormat($scadenza['da_pagare'], 2).'", "onchange": "controlloTotale()" ]}
</td>
<td class="text-right">
{[ "type": "number", "name": "da_pagare['.$i.']", "decimals": 2, "value": "'.numberFormat($scadenza['da_pagare'], 2).'", "onchange": "controlloTotale()" ]}
</td>
<td class="text-right">
{[ "type": "number", "name": "pagato['.$i.']", "decimals": 2, "value": "'.numberFormat($scadenza['pagato']).'" ]}
</td>
<td class="text-right">
{[ "type": "number", "name": "pagato['.$i.']", "decimals": 2, "value": "'.numberFormat($scadenza['pagato']).'" ]}
</td>
<td align="center">
{[ "type": "date", "name": "data_concordata['.$i.']", "value": "'.$scadenza['data_concordata'].'" ]}
</td>
</tr>';
}
<td class="text-center">
{[ "type": "date", "name": "data_concordata['.$i.']", "value": "'.$scadenza['data_concordata'].'" ]}
</td>
echo '
</tbody>
<tfoot>
<tr>
<td class="text-right"><b>'.tr('Totale').'</b></td>
<td class="text-right" id="totale_utente">'.numberFormat($totale_da_pagare).'</td>
<td class="text-right"></td>
<td class="text-right"></td>
</tr>
</tfoot>
</table>';
<td>
{[ "type": "textarea", "name": "note['.$i.']", "value": "'.$scadenza['note'].'" ]}
</td>
</tr>';
}
if ($totale_da_pagare != 0) {
echo '
<div class="pull-right">
<a onclick="launch_modal(\''.tr('Registra contabile pagamento').'\', \''.base_path().'/add.php?id_module='.Modules::get('Prima nota')['id'].'&'.(!empty($record['iddocumento']) ? 'id_documenti='.$record['iddocumento'].'&single=1' : 'id_scadenze='.$id_record).'\');" class="btn btn-sm btn-primary">
<i class="fa fa-euro"></i> '.tr('Registra contabile pagamento...').'
</a>
</div>
</tbody>
<tfoot>
<tr>
<td class="text-right"><b>'.tr('Totale').'</b></td>
<td class="text-right" id="totale_utente">'.numberFormat($totale_da_pagare).'</td>
<td class="text-right"></td>
<td class="text-right"></td>
</tr>
</tfoot>
</table>
<div class="clearfix"></div>
<br>';
}
?>
<div class="alert alert-warning hide" id="totale">'.tr('Il totale da pagare non corrisponde con il totale della fattura che è pari a _MONEY_', [
'_MONEY_' => '<b>'.moneyFormat($totale_da_pagare).'</b>',
]); ?>.<br><?php echo tr('Differenza di _TOT_ _CURRENCY_', [
'_TOT_' => '<span id="diff"></span>',
'_CURRENCY_' => currency(),
]).'.
</div>
<div class="alert alert-warning hide" id="totale"><?php echo tr('Il totale da pagare non corrisponde con il totale della fattura che è pari a _MONEY_', [
'_MONEY_' => '<b>'.moneyFormat($totale_da_pagare).'</b>',
]); ?>.<br><?php echo tr('Differenza di _TOT_ _CURRENCY_', [
'_TOT_' => '<span id="diff"></span>',
'_CURRENCY_' => currency(),
]); ?>.
</div>
<input type="hidden" id="totale_da_pagare" value="<?php echo round($totale_da_pagare, 2); ?>">
</div>
</div>
<input type="hidden" id="totale_da_pagare" value="'.round($totale_da_pagare, 2).'">
</div>
</div>
</form>
</form>';
<?php
$id_scadenza = $id_record;
// Forzatura per allegare file sempre al primo record
@ -241,7 +236,7 @@ echo '
<tr class="danger">
<input type="hidden" name="id_scadenza[-id-]" value="">
<td align="center">
<td class="text-center">
{[ "type": "date", "name": "scadenza[-id-]" ]}
</td>
@ -253,9 +248,13 @@ echo '
{[ "type": "number", "name": "pagato[-id-]", "decimals": 2 ]}
</td>
<td align="center">
<td class="text-center">
{[ "type": "date", "name": "data_concordata[-id-]" ]}
</td>
<td>
{[ "type": "textarea", "name": "note[-id-]" ]}
</td>
</tr>
</tbody>
</table>

View File

@ -66,7 +66,7 @@ class Gruppo extends Model
* Da utilizzare per le Fatture.
*/
public function rimuoviScadenze() {
$this->scadenze->delete();
$this->scadenze()->delete();
}
public function delete()

View File

@ -4,6 +4,7 @@ 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,
`note` TEXT,
`data_emissione` date DEFAULT NULL,
`totale_pagato` decimal(12, 6) NOT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,