Aggiunta tipo di pagamento e banca accredito e addebito in scadenza

This commit is contained in:
Pek5892 2023-11-24 13:20:00 +01:00
parent d58052df2e
commit 2e7f11d2c5
9 changed files with 220 additions and 124 deletions

View File

@ -371,10 +371,38 @@ $query .= ' ORDER BY descrizione';
echo Modules::link('Banche', $record['id_banca_azienda'], null, null, 'class="pull-right"');
}
?>
{[ "type": "select", "label": "<?php echo tr('Banca azienda'); ?>", "name": "id_banca_azienda", "ajax-source": "banche", "select-options": <?php echo json_encode(['id_anagrafica' => $anagrafica_azienda->id]); ?>, "value": "$id_banca_azienda$", "icon-after": "add|<?php echo Modules::get('Banche')['id']; ?>|id_anagrafica=<?php echo $anagrafica_azienda->id; ?>", "extra": " <?php echo (intval($block_edit)) ? 'disabled' : ''; ?> " ]}
{[ "type": "select", "label": "<?php echo $dir == 'entrata' ? tr('Banca accredito') : tr('Banca addebito'); ?>", "name": "id_banca_azienda", "ajax-source": "banche", "select-options": <?php echo json_encode(['id_anagrafica' => $anagrafica_azienda->id]); ?>, "value": "$id_banca_azienda$", "icon-after": "add|<?php echo Modules::get('Banche')['id']; ?>|id_anagrafica=<?php echo $anagrafica_azienda->id; ?>", "extra": " <?php echo (intval($block_edit)) ? 'disabled' : ''; ?> " ]}
</div>
<div class="col-md-3">
<?php if ($record['id_banca_azienda'] != 0) {
echo Modules::link('Banche', $record['id_banca_azienda'], null, null, 'class="pull-right"');
}
?>
{[ "type": "select", "label": "<?php echo $dir == 'entrata' ? tr('Banca addebito') : tr('Banca accredito'); ?>", "name": "id_banca_controparte", "ajax-source": "banche", "select-options": <?php echo json_encode(['id_anagrafica' => $record['idanagrafica']]); ?>, "value": "$id_banca_controparte$", "icon-after": "add|<?php echo Modules::get('Banche')['id']; ?>|idanagrafica=<?php echo $record['idanagrafica']; ?>", "extra": " <?php echo (intval($block_edit)) ? 'disabled' : ''; ?> " ]}
</div>
</div>
<!-- Split payment + Fattura per conto terzi (solo uscita) + Sconto in fattura (solo uscita) -->
<div class="row">
<div class="col-md-3">
{[ "type": "checkbox", "label": "<?php echo tr('Split payment'); ?>", "name": "split_payment", "value": "$split_payment$", "help": "<?php echo tr('Abilita lo split payment per questo documento. Le aliquote iva con natura N6.X (reverse charge) non saranno disponibili.'); ?>", "placeholder": "<?php echo tr('Split payment'); ?>" ]}
</div>
<?php
// TODO: Fattura per conto del fornitore (es. cooperative agricole che emettono la fattura per conto dei propri soci produttori agricoli conferenti)
if ($dir == 'entrata') {
?>
<div class="col-md-3">
{[ "type": "checkbox", "label": "<?php echo tr('Fattura per conto terzi'); ?>", "name": "is_fattura_conto_terzi", "value": "$is_fattura_conto_terzi$", "help": "<?php echo tr('Nell\'XML della Fattura Elettronica sarà indicato il fornitore ('.stripslashes($database->fetchOne('SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica = '.prepare(setting('Azienda predefinita')))['ragione_sociale']).') come cessionario e il cliente come cedente/prestatore.'); ?>", "placeholder": "<?php echo tr('Fattura per conto terzi'); ?>" ]}
</div>
<?php
echo '<div class="col-md-3">
{[ "type": "number", "label": "'.tr('Sconto in fattura').'", "name": "sconto_finale", "value": "'.($fattura->sconto_finale_percentuale ?: $fattura->sconto_finale).'", "icon-after": "choice|untprc|'.(empty($fattura->sconto_finale) ? 'PRC' : 'UNT').'", "help": "'.tr('Sconto in fattura, utilizzabile per applicare sconti sul Netto a pagare del documento e le relative scadenze').'. '.tr('Per utilizzarlo in relazione a una riga della Fattura Elettronica, inserire il tipo di dato in \'\'Attributi avanzati\'\' -> \'\'Altri Dati Gestionali\'\' -> \'\'TipoDato\'\' e il testo di descrizione in \'\'Attributi avanzati\'\' -> \'\'Altri Dati Gestionali\'\' -> \'\'RiferimentoTesto\'\' della specifica riga').'. '.tr('Nota: lo sconto in fattura non influenza i movimenti contabili').'." ]}
</div>';
}
<?php
if ($record['stato'] != 'Bozza' && $record['stato'] != 'Annullata') {
$scadenze = $fattura->scadenze;
@ -431,29 +459,6 @@ $query .= ' ORDER BY descrizione';
</div>';
}
?>
</div>
<!-- Split payment + Fattura per conto terzi (solo uscita) + Sconto in fattura (solo uscita) -->
<div class="row">
<div class="col-md-3">
{[ "type": "checkbox", "label": "<?php echo tr('Split payment'); ?>", "name": "split_payment", "value": "$split_payment$", "help": "<?php echo tr('Abilita lo split payment per questo documento. Le aliquote iva con natura N6.X (reverse charge) non saranno disponibili.'); ?>", "placeholder": "<?php echo tr('Split payment'); ?>" ]}
</div>
<?php
// TODO: Fattura per conto del fornitore (es. cooperative agricole che emettono la fattura per conto dei propri soci produttori agricoli conferenti)
if ($dir == 'entrata') {
?>
<div class="col-md-3">
{[ "type": "checkbox", "label": "<?php echo tr('Fattura per conto terzi'); ?>", "name": "is_fattura_conto_terzi", "value": "$is_fattura_conto_terzi$", "help": "<?php echo tr('Nell\'XML della Fattura Elettronica sarà indicato il fornitore ('.stripslashes($database->fetchOne('SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica = '.prepare(setting('Azienda predefinita')))['ragione_sociale']).') come cessionario e il cliente come cedente/prestatore.'); ?>", "placeholder": "<?php echo tr('Fattura per conto terzi'); ?>" ]}
</div>
<?php
echo '<div class="col-md-3">
{[ "type": "number", "label": "'.tr('Sconto in fattura').'", "name": "sconto_finale", "value": "'.($fattura->sconto_finale_percentuale ?: $fattura->sconto_finale).'", "icon-after": "choice|untprc|'.(empty($fattura->sconto_finale) ? 'PRC' : 'UNT').'", "help": "'.tr('Sconto in fattura, utilizzabile per applicare sconti sul Netto a pagare del documento e le relative scadenze').'. '.tr('Per utilizzarlo in relazione a una riga della Fattura Elettronica, inserire il tipo di dato in \'\'Attributi avanzati\'\' -> \'\'Altri Dati Gestionali\'\' -> \'\'TipoDato\'\' e il testo di descrizione in \'\'Attributi avanzati\'\' -> \'\'Altri Dati Gestionali\'\' -> \'\'RiferimentoTesto\'\' della specifica riga').'. '.tr('Nota: lo sconto in fattura non influenza i movimenti contabili').'." ]}
</div>';
}
?>
</div>
<div class="row">

View File

@ -97,13 +97,13 @@ class Scadenze
* @param bool $is_pagato
* @param string $type
*/
protected function registraScadenza(Fattura $fattura, $importo, $data_scadenza, $is_pagato, $type = 'fattura')
protected function registraScadenza(Fattura $fattura, $importo, $data_scadenza, $is_pagato, $tipo_pagamento, $id_banca_azienda, $id_banca_controparte, $type = 'fattura')
{
$numero = $fattura->numero_esterno ?: $fattura->numero;
$descrizione = $fattura->tipo->descrizione.' numero '.$numero;
$idanagrafica = $fattura->idanagrafica;
$scadenza = Scadenza::build($idanagrafica, $descrizione, $importo, $data_scadenza, $type, $is_pagato);
$scadenza = Scadenza::build($idanagrafica, $descrizione, $importo, $data_scadenza, $tipo_pagamento, $id_banca_azienda, $id_banca_controparte, $type, $is_pagato);
$scadenza->documento()->associate($fattura);
$scadenza->data_emissione = $fattura->data;
@ -164,8 +164,11 @@ class Scadenze
foreach ($rate as $rata) {
$scadenza = $rata['scadenza'];
$importo = $direzione == 'uscita' ? -$rata['importo'] : $rata['importo'];
$tipo_pagamento = $this->fattura->idpagamento;
$id_banca_azienda = $this->fattura->id_banca_azienda;
$id_banca_controparte = $this->fattura->id_banca_controparte;
self::registraScadenza($this->fattura, $importo, $scadenza, $is_pagato);
self::registraScadenza($this->fattura, $importo, $scadenza, $is_pagato, $tipo_pagamento, $id_banca_azienda, $id_banca_controparte);
}
}
}

View File

@ -192,8 +192,27 @@ class Mastrino extends Model
$is_nota = false;
$documento = $documento ?: $scadenza->documento;
if ($scadenza && empty($documento)) {
$scadenze = [$scadenza];
$dir = $movimento->totale < 0 ? 'uscita' : 'entrata';
$totale_da_distribuire = Movimento::where('id_scadenza', '=', $scadenza->id)
->where('totale', '>', 0)
->sum('totale');
}
else if ($scadenza) {
$scadenze = [$scadenza];
$dir = $documento->direzione;
$totale_da_distribuire = Movimento::where('id_scadenza', '=', $scadenza->id)
->where('totale', '>', 0)
->sum('totale');
}
// Gestione delle scadenze di un documento
if ($documento) {
else if ($documento) {
$dir = $documento->direzione;
$scadenze = $documento->scadenze->sortBy('scadenza');
@ -213,20 +232,11 @@ class Mastrino extends Model
$is_nota = $documento->isNota();
}
// Gestione di una singola scadenza
else {
$scadenze = [$scadenza];
$dir = $movimento->totale < 0 ? 'uscita' : 'entrata';
$totale_da_distribuire = Movimento::where('id_scadenza', '=', $scadenza->id)
->where('totale', '>', 0)
->sum('totale');
}
$totale_da_distribuire = abs($totale_da_distribuire);
// Ciclo tra le rate dei pagamenti per inserire su `pagato` l'importo effettivamente pagato
// Nel caso il pagamento superi la rata, devo distribuirlo sulle rate successive
foreach ($scadenze as $scadenza) {
$scadenza_da_pagare = abs($scadenza['da_pagare']);
@ -248,7 +258,7 @@ class Mastrino extends Model
}
// Inversione di segno per la direzione del movimento contabile
$pagato = $dir == 'uscita' ? -$pagato : $pagato;
$pagato = ($dir == 'uscita' ? -$pagato : $pagato);
$pagato = $is_nota ? -$pagato : $pagato; // Inversione di segno per le note
// Salvataggio delle informazioni

View File

@ -40,16 +40,17 @@ switch (post('op')) {
$tipo = post('tipo');
$descrizione = post('descrizione');
$iddocumento = post('iddocumento') ?: 0;
$scadenze = Scadenza::where('iddocumento', $iddocumento)->get();
$totale_pagato = 0;
$id_scadenza_non_completa = null;
foreach (post('da_pagare') as $id => $da_pagare) {
foreach ($scadenze as $id => $scadenza) {
$pagato = post('pagato')[$id];
$scadenza = post('scadenza')[$id];
$data_concordata = post('data_concordata')[$id];
$pagato = floatval($pagato);
$da_pagare = floatval($da_pagare);
$da_pagare = post('da_pagare')[$id];
if (!empty($iddocumento)) {
$id_tipo = $dbo->selectOne('co_documenti', 'idtipodocumento', ['id' => $iddocumento])['idtipodocumento'];
@ -78,6 +79,9 @@ switch (post('op')) {
}
$totale_pagato = sum($totale_pagato, $pagato);
$tipo_pagamento = post('tipo_pagamento')[$id];
$id_banca_azienda = post('id_banca_azienda')[$id];
$id_banca_controparte = post('id_banca_controparte')[$id];
$id_scadenza = post('id_scadenza')[$id];
if (!empty($id_scadenza)) {
@ -88,6 +92,9 @@ switch (post('op')) {
'pagato' => $pagato,
'scadenza' => $scadenza,
'data_concordata' => $data_concordata,
'tipo_pagamento' => $tipo_pagamento,
'id_banca_azienda' => $id_banca_azienda,
'id_banca_controparte' => $id_banca_controparte,
'note' => post('note'),
'distinta' => post('distinta') ?: null,
], ['id' => $id_scadenza]);

View File

@ -27,26 +27,32 @@ include_once __DIR__.'/../../core.php';
<input type="hidden" name="dir" value="<?php echo $dir; ?>">
<div class="row">
<div class="col-md-4">
<div class="col-md-6">
{[ "type": "select", "label": "<?php echo tr('Anagrafica'); ?>", "name": "idanagrafica", "required": 1, "ajax-source": "anagrafiche" ]}
</div>
<div class="col-md-4">
<div class="col-md-6">
{[ "type": "select", "label": "<?php echo tr('Tipo'); ?>", "name": "tipo", "required": 1, "ajax-source": "tipi_scadenze", "icon-after": "add|<?php echo Modules::get('Tipi scadenze')['id']; ?>" ]}
</div>
<div class="col-md-2">
</div>
<div class="row">
<div class="col-md-6">
{[ "type": "date", "label": "<?php echo tr('Data scadenza'); ?>", "name": "data", "required": 1, "value": "-now-" ]}
</div>
<div class="col-md-2">
<div class="col-md-6">
{[ "type": "number", "label": "<?php echo tr('Importo'); ?>", "name": "da_pagare", "required": 1, "value": "", "help": "Le scadenze inserite con importo positivo indicano un credito da un cliente, le scadenze inserite con importo negativo indicano un debito verso un fornitore" ]}
</div>
</div>
<div class='row'>
<div class='col-md-12'>
{[ "type": "textarea", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "" ]}
<?php echo input([
'type' => 'ckeditor',
'label' => tr('Descrizione'),
'name' => 'descrizione',
'required' => 1,
'value' => "",
]); ?>
</div>
</div>

View File

@ -37,8 +37,6 @@ echo '
<div class="panel-heading">
<h3 class="panel-title">
'.tr('Dettagli scadenza').'
<button type="button" class="btn btn-xs btn-info pull-right tip" 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>
</h3>
</div>
@ -66,7 +64,9 @@ if (!empty($documento)) {
<th>'.tr('Numero').':</th>
<td>'.$numero.'</td>
</tr>
</table>
<table class="table table-striped table-hover table-condensed table-bordered">
<tr>
<th>'.tr('Data').':</th>
<td>'.Translator::dateToLocale($documento->data).'</td>
@ -75,31 +75,53 @@ if (!empty($documento)) {
<tr>
<th>'.tr('Netto a pagare').':</th>
<td>'.moneyFormat($documento->netto).'</td>
</tr>';
} else {
$scadenza = $dbo->fetchOne('SELECT * FROM co_scadenziario WHERE id = '.prepare($id_record));
echo '
<tr>
<th>'.tr('Descrizione').':</th>
<td>
{[ "type": "textarea", "name": "descrizione", "value": "'.$record['descrizione'].'" ]}
</td>
</tr>';
}
echo '
<tr>
<th>'.tr('Note').':</th>
<td>
{[ "type": "textarea", "name": "note", "value": "'.$record['note'].'" ]}
</td>
</tr>
<tr>
<th>'.tr('Info distinta').' <span class="tip" title="'.tr('Informazioni/Note sulla distinta associata alla scadenza (es. numero)').'" ><i class="fa fa-question-circle-o" ></i></span>:</th>
<td>
{[ "type": "text", "name": "distinta", "value": "'.$record['distinta'].'" ]}
</td>
</tr>
</table>
'.Modules::link($documento->module, $record['iddocumento'], '<i class="fa fa-folder-open"></i> '.tr('Apri documento'), null, 'class="btn btn-primary"').'
</div>';
} else {
$scadenza = $dbo->fetchOne('SELECT * FROM co_scadenziario WHERE id = '.prepare($id_record));
echo '
</table>
<table class="table table-striped table-hover table-condensed table-bordered">
<tr>
<td>';
echo input([
'type' => 'ckeditor',
'label' => tr('descrizione'),
'name' => 'descrizione',
'required' => 1,
'extra' => 'rows="2"',
'value' => $record['descrizione'],
]);
echo '
</td>
</tr>
</table>
</div>';
}
echo '
<div class="col-md-6">
<table class="table table-striped table-hover table-condensed table-bordered">
<tr>
<td>';
echo input([
'type' => 'ckeditor',
'label' => tr('Note'),
'name' => 'note',
'extra' => 'rows="2"',
'value' =>$record['note'],
]);
echo '
</td>
</tr>';
if (!empty($record['presentazioni_exported_at'])) {
@ -112,25 +134,40 @@ echo '
echo '
</table>';
if (!empty($documento)) {
echo Modules::link($documento->module, $record['iddocumento'], '<i class="fa fa-folder-open"></i> '.tr('Apri documento'), null, 'class="btn btn-primary"');
}
echo '
</div>
</div>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">
'.tr('Rate scadenza').'
<button type="button" class="btn btn-xs btn-info pull-right tip" 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>
</h3>
</div>
<div class="panel panel-primary">
<div class="panel-body">
<div class="row">
<div class="col-md-12">
<table class="table table-hover table-condensed table-bordered">
<thead>
<tr>
<th style="width:3%;">'.tr('Rata').'</th>
<th style="width:7%;">'.tr('Data').'</th>
<th style="width:10%;">'.tr('Importo').'</th>
<th style="width:10%;">'.tr('Pagato').'</th>
<th style="width:7%;">'.tr('Data concordata').'</th>
<th style="width:15%;">'.tr('Banca accredito').'</th>
<th style="width:15%;">'.tr('Banca addebito').'</th>
<th style="width:10%;">'.tr('Tipologia').'</th>
</tr>
</thead>
<!-- 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>
<tbody id="scadenze">';
<tbody id="scadenze">';
foreach ($scadenze as $i => $scadenza) {
if ($scadenza['da_pagare'] == $scadenza['pagato']) {
@ -144,50 +181,67 @@ foreach ($scadenze as $i => $scadenza) {
}
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 align="center">
<a onclick="launch_modal(\''.tr('Registra contabile pagamento').'\', \''.base_path().'/add.php?id_module='.Modules::get('Prima nota')['id'].'&id_scadenze='.$scadenza['id'].'\');" class="btn btn-sm btn-primary">
<i class="fa fa-euro"></i> '.($scadenza['da_pagare'] > 0 ? tr('Incassa') : tr('Paga')).'
</a>
</td>
<td class="text-right">
{[ "type": "number", "name": "da_pagare['.$i.']", "decimals": 2, "value": "'.numberFormat($scadenza['da_pagare'], 2).'", "onchange": "controlloTotale()" ]}
</td>
<td align="center">
{[ "type": "date", "name": "scadenza['.$i.']", "value": "'.$scadenza['scadenza'].'" ]}
</td>
<td class="text-right">
{[ "type": "number", "name": "pagato['.$i.']", "decimals": 2, "value": "'.numberFormat($scadenza['pagato']).'" ]}
</td>
<td class="text-right">
{[ "type": "number", "name": "da_pagare['.$i.']", "decimals": 2, "value": "'.numberFormat($scadenza['da_pagare'], 2).'", "onchange": "controlloTotale()" ]}
</td>
<td align="center">
{[ "type": "date", "name": "data_concordata['.$i.']", "value": "'.$scadenza['data_concordata'].'" ]}
</td>
</tr>';
}
<td class="text-right">
{[ "type": "number", "name": "pagato['.$i.']", "decimals": 2, "value": "'.numberFormat($scadenza['pagato']).'" ]}
</td>
echo '
<td align="center">
{[ "type": "date", "name": "data_concordata['.$i.']", "value": "'.$scadenza['data_concordata'].'" ]}
</td>
<td align="center">
'.($scadenza['da_pagare'] > 0 ?
'{[ "type": "select", "name": "id_banca_azienda['.$i.']", "ajax-source": "banche", "select-options": '. json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "value": "'.$scadenza['id_banca_azienda'].'", "icon-after": "add|'.Modules::get('Banche')['id'].'|id_anagrafica='.$anagrafica_azienda->id.'" ]}'
:
'{[ "type": "select", "name": "id_banca_controparte['.$i.']", "ajax-source": "banche", "select-options":'.json_encode(['id_anagrafica' => $documento->idanagrafica]).', "value": "'.$scadenza['id_banca_controparte'].'", "icon-after": "add|'. Modules::get('Banche')['id'].'|idanagrafica='. $record['idanagrafica'].'"]}
').'
</td>
<td align="center">
'.($scadenza['da_pagare'] > 0 ?
'{[ "type": "select", "name": "id_banca_controparte['.$i.']", "ajax-source": "banche", "select-options":'.json_encode(['id_anagrafica' => $documento->idanagrafica]).', "value": "'.$scadenza['id_banca_controparte'].'", "icon-after": "add|'. Modules::get('Banche')['id'].'|idanagrafica='. $record['idanagrafica'].'"]}'
:
'{[ "type": "select", "name": "id_banca_azienda['.$i.']", "ajax-source": "banche", "select-options": '. json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "value": "'.$scadenza['id_banca_azienda'].'", "icon-after": "add|'.Modules::get('Banche')['id'].'|id_anagrafica='.$anagrafica_azienda->id.'" ]}'
).'
</td>
<td>
{[ "type": "select", "name": "tipo_pagamento['.$i.']", "ajax-source": "pagamenti", "select-options": '. json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "value": "'.$scadenza['tipo_pagamento'].'" ]}
</td>
</tr>';
}
echo '
</tbody>
<tfoot>
<tr>
<td class="text-right"></td>
<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>
<td class="text-right"></td>
<td class="text-right"></td>
</tr>
</tfoot>
</table>';
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>
<div class="clearfix"></div>
<br>';
}
?>
<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_', [

View File

@ -35,7 +35,7 @@ class Scadenza extends Model
'data_pagamento',
];
public static function build($idanagrafica, $descrizione, $importo, $data_scadenza, $type = 'fattura', $is_pagato = false)
public static function build($idanagrafica, $descrizione, $importo, $data_scadenza, $tipo_pagamento, $id_banca_azienda, $id_banca_controparte, $type = 'fattura', $is_pagato = false)
{
$model = new static();
@ -44,7 +44,10 @@ class Scadenza extends Model
$model->scadenza = $data_scadenza;
$model->da_pagare = $importo;
$model->tipo = $type;
$model->tipo_pagamento = $tipo_pagamento;
$model->id_banca_azienda = $id_banca_azienda;
$model->id_banca_controparte = $id_banca_controparte;
$model->pagato = $is_pagato ? $importo : 0;
$model->data_pagamento = $is_pagato ? $data_scadenza : null;

View File

@ -61,10 +61,10 @@ echo "
<tr>
<td style='width:10mm;'>&nbsp;</td>
<td style='width:45mm;'>
<td style='width:80mm;'>
<table class='border-bottom'>
<tr>
<td colspan='3'>
<td colspan='4'>
<p class='small-bold'>".tr('Scadenze pagamenti', [], ['upper' => true]).'</p>
</td>
</tr>';
@ -73,17 +73,21 @@ echo "
$rs2 = $dbo->fetchArray('SELECT * FROM co_scadenziario WHERE iddocumento='.prepare($id_record).' ORDER BY `scadenza` ASC');
if (!empty($rs2)) {
for ($i = 0; $i < sizeof($rs2); ++$i) {
$pagamento = $dbo->fetchOne('SELECT descrizione FROM co_pagamenti WHERE id='.$rs2[$i]['tipo_pagamento'])['descrizione'];
echo '
<tr>
<td>
<td style=\'width:15%;\'>
<small>'.Translator::dateToLocale($rs2[$i]['scadenza'])."</small>
</td>
<td style='width:25%;' class='text-right'>
<td style='width:15%;' class='text-right'>
".(($rs2[$i]['pagato'] == $rs2[$i]['da_pagare']) ? '<small>PAGATO</small>' : '')."
</td>
<td style='width:35%;' class='text-right'>
<td style='width:15%;' class='text-right'>
<small>".moneyFormat($rs2[$i]['da_pagare'], 2).'</small>
</td>
<td style=\'width:15%;\'>
<small>'.$pagamento.'</small>
</td>
</tr>';
}
}

View File

@ -35,4 +35,8 @@ ALTER TABLE `mg_prodotti` ADD FOREIGN KEY (`id_riga_contratto`) REFERENCES `co_r
INSERT INTO `zz_prints` (`id_module`, `is_record`, `name`, `title`, `filename`, `directory`, `previous`, `options`, `icon`, `version`, `compatibility`, `order`, `predefined`, `default`, `enabled`, `available_options`) VALUES ((SELECT `id` FROM `zz_modules` WHERE `name` = 'Preventivi'), '1', 'Preventivo(solo totale imponibile)', 'Preventivo (solo totale imponibile)', 'Preventivo num. {numero} del {data} rev {revisione}', 'preventivi', 'idpreventivo', '{\"pricing\": false, \"last-page-footer\": true, \"images\": true, \"no-iva\":true, \"show-only-total\":true }', 'fa fa-print', '', '', '0', '0', '1', '1', '{\"pricing\":\"Visualizzare i prezzi\", \"hide-total\": \"Nascondere i totali delle righe\", \"show-only-total\": \"Visualizzare solo i totali del documento\", \"hide-header\": \"Nascondere intestazione\", \"hide-footer\": \"Nascondere footer\", \"last-page-footer\": \"Visualizzare footer solo su ultima pagina\", \"hide-item-number\": \"Nascondere i codici degli articoli\"}');
-- Aggiunta indice per ricerca su files più rapida
ALTER TABLE `zz_files` ADD INDEX(`id_record`);
ALTER TABLE `zz_files` ADD INDEX(`id_record`);
ALTER TABLE `co_scadenziario` ADD `tipo_pagamento` INT NOT NULL;
ALTER TABLE `co_scadenziario` ADD `id_banca_azienda` INT NULL;
ALTER TABLE `co_scadenziario` ADD `id_banca_controparte` INT NULL;