Correzioni per gestione totale a zero di Fattura
This commit is contained in:
parent
74f2179b8f
commit
36afe8dc0e
|
@ -210,34 +210,37 @@ switch (post('op')) {
|
|||
|
||||
// Ricalcolo scadenze
|
||||
case 'controlla_totali':
|
||||
$totale_documento = null;
|
||||
|
||||
try {
|
||||
$xml = XML::read($fattura->getXML());
|
||||
|
||||
// Totale basato sul campo ImportoTotaleDocumento
|
||||
$dati_generali = $xml['FatturaElettronicaBody']['DatiGenerali']['DatiGeneraliDocumento'];
|
||||
$totale_documento_indicato = abs(floatval($dati_generali['ImportoTotaleDocumento']));
|
||||
if (isset($dati_generali['ImportoTotaleDocumento'])) {
|
||||
$totale_documento_indicato = abs(floatval($dati_generali['ImportoTotaleDocumento']));
|
||||
|
||||
// Calcolo del totale basato sui DatiRiepilogo
|
||||
if (empty($totale_documento) && empty($dati_generali['ScontoMaggiorazione'])) {
|
||||
$totale_documento = 0;
|
||||
// Calcolo del totale basato sui DatiRiepilogo
|
||||
if (empty($totale_documento) && empty($dati_generali['ScontoMaggiorazione'])) {
|
||||
$totale_documento = 0;
|
||||
|
||||
$riepiloghi = $xml['FatturaElettronicaBody']['DatiBeniServizi']['DatiRiepilogo'];
|
||||
if (!empty($riepiloghi) && !isset($riepiloghi[0])) {
|
||||
$riepiloghi = [$riepiloghi];
|
||||
$riepiloghi = $xml['FatturaElettronicaBody']['DatiBeniServizi']['DatiRiepilogo'];
|
||||
if (!empty($riepiloghi) && !isset($riepiloghi[0])) {
|
||||
$riepiloghi = [$riepiloghi];
|
||||
}
|
||||
|
||||
foreach ($riepiloghi as $riepilogo) {
|
||||
$totale_documento = sum([$totale_documento, $riepilogo['ImponibileImporto'], $riepilogo['Imposta']]);
|
||||
}
|
||||
|
||||
$totale_documento = abs($totale_documento);
|
||||
} else {
|
||||
$totale_documento = $totale_documento_indicato;
|
||||
}
|
||||
|
||||
foreach ($riepiloghi as $riepilogo) {
|
||||
$totale_documento = sum([$totale_documento, $riepilogo['ImponibileImporto'], $riepilogo['Imposta']]);
|
||||
}
|
||||
|
||||
$totale_documento = abs($totale_documento);
|
||||
} else {
|
||||
$totale_documento = $totale_documento_indicato;
|
||||
$totale_documento = $fattura->isNota() ? -$totale_documento : $totale_documento;
|
||||
}
|
||||
|
||||
$totale_documento = $fattura->isNota() ? -$totale_documento : $totale_documento;
|
||||
} catch (Exception $e) {
|
||||
$totale_documento = null;
|
||||
}
|
||||
|
||||
echo json_encode([
|
||||
|
|
|
@ -64,30 +64,38 @@ if (empty($record['is_fiscale'])) {
|
|||
}
|
||||
|
||||
$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));
|
||||
if (!empty($record['is_fiscale'])) {
|
||||
// Aggiunta insoluto
|
||||
$registrazione_insoluto = 1;
|
||||
$registrazione_insoluto = 0;
|
||||
if (!empty($record['riba']) && $dir == 'entrata' && in_array($record['stato'], ['Emessa', 'Parzialmente pagato', 'Pagato'])) {
|
||||
$registrazione_insoluto = 1;
|
||||
}
|
||||
|
||||
if (floatval($totale_scadenze['da_pagare']) == 0) {
|
||||
$registrazione_insoluto = 0;
|
||||
}
|
||||
|
||||
echo '
|
||||
<a class="btn btn-primary '.(!empty($modulo_prima_nota) && empty($registrazione_insoluto) ? '' : 'disabled').'" data-href="'.base_path().'/add.php?id_module='.$modulo_prima_nota['id'].'&id_documenti='.$id_record.'&single=1&is_insoluto=1" data-title="'.tr('Registra insoluto').'">
|
||||
<a class="btn btn-primary '.(!empty($modulo_prima_nota) && !empty($registrazione_insoluto) ? '' : 'disabled').'" data-href="'.base_path().'/add.php?id_module='.$modulo_prima_nota['id'].'&id_documenti='.$id_record.'&single=1&is_insoluto=1" data-title="'.tr('Registra insoluto').'">
|
||||
<i class="fa fa-ban fa-inverse"></i> '.tr('Registra insoluto').'
|
||||
</a>';
|
||||
|
||||
// Aggiunta prima nota solo se non c'è già, se non si è in bozza o se il pagamento non è completo
|
||||
$prima_nota_presente = $dbo->fetchNum('SELECT id FROM co_movimenti WHERE iddocumento = '.prepare($id_record).' AND primanota = 1');
|
||||
|
||||
$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));
|
||||
$differenza = isset($totale_scadenze) ? $totale_scadenze['differenza'] : 0;
|
||||
$registrazione_contabile = 1;
|
||||
$registrazione_contabile = 0;
|
||||
if ($differenza != 0 || (!$prima_nota_presente && $record['stato'] == 'Emessa')) {
|
||||
$registrazione_contabile = 1;
|
||||
}
|
||||
|
||||
if (floatval($totale_scadenze['da_pagare']) == 0) {
|
||||
$registrazione_contabile = 0;
|
||||
}
|
||||
|
||||
echo '
|
||||
<a class="btn btn-primary '.(!empty($modulo_prima_nota) && empty($registrazione_contabile) ? '' : 'disabled').'" data-href="'.base_path().'/add.php?id_module='.$modulo_prima_nota['id'].'&id_documenti='.$id_record.'&single=1" data-title="'.tr('Registra contabile').'">
|
||||
<a class="btn btn-primary '.(!empty($modulo_prima_nota) && !empty($registrazione_contabile) ? '' : 'disabled').'" data-href="'.base_path().'/add.php?id_module='.$modulo_prima_nota['id'].'&id_documenti='.$id_record.'&single=1" data-title="'.tr('Registra contabile').'">
|
||||
<i class="fa fa-euro"></i> '.tr('Registra contabile').'
|
||||
</a>';
|
||||
|
||||
|
|
|
@ -296,7 +296,7 @@ elseif ($record['stato'] == 'Bozza') {
|
|||
<div class="clearfix"></div>';
|
||||
|
||||
foreach ($scadenze as $scadenza) {
|
||||
$pagamento_iniziato = !empty(floatval($scadenza->pagato));
|
||||
$pagamento_iniziato = !empty(floatval($scadenza->pagato)) || $scadenza->da_pagare == 0;
|
||||
|
||||
echo '
|
||||
<p>'.dateFormat($scadenza['scadenza']).': ';
|
||||
|
|
|
@ -157,19 +157,23 @@ echo '
|
|||
<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>';
|
||||
</tfoot>
|
||||
</table>';
|
||||
|
||||
?>
|
||||
|
||||
</table>
|
||||
|
||||
<div class='pull-right'>
|
||||
<a onclick="launch_modal( 'Registra contabile pagamento', '<?php echo base_path(); ?>/add.php?id_module=<?php echo Modules::get('Prima nota')['id']; ?>&<?php echo !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> <?php echo tr('Registra contabile pagamento...'); ?></a>
|
||||
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>
|
||||
<br>';
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="alert alert-error hide" id="totale"><?php echo tr('Il totale da pagare deve essere pari a _MONEY_', [
|
||||
'_MONEY_' => '<b>'.moneyFormat($totale_da_pagare).'</b>',
|
||||
|
|
|
@ -112,8 +112,6 @@ class FatturaSemplificata extends FatturaElettronica
|
|||
$prezzo = $importo / (1 + $imposta_percentuale);
|
||||
}
|
||||
|
||||
$riga['Importo'] = $prezzo;
|
||||
|
||||
if (!empty($articolo)) {
|
||||
$obj = Articolo::build($fattura, $articolo);
|
||||
|
||||
|
@ -128,7 +126,6 @@ class FatturaSemplificata extends FatturaElettronica
|
|||
|
||||
// Nel caso il prezzo sia negativo viene gestito attraverso l'inversione della quantità (come per le note di credito)
|
||||
// TODO: per migliorare la visualizzazione, sarebbe da lasciare negativo il prezzo e invertire gli sconti.
|
||||
$prezzo = $riga['Importo'];
|
||||
$prezzo = $prezzo < 0 ? -$prezzo : $prezzo;
|
||||
$qta = 1;
|
||||
$qta = $riga['Importo'] < 0 ? -$qta : $qta;
|
||||
|
|
Loading…
Reference in New Issue