Aggiunto controllo sugli importi FE da modulo

This commit is contained in:
Thomas Zilio 2019-03-15 12:16:20 +01:00
parent 27b365dccb
commit 7b35637979
4 changed files with 67 additions and 8 deletions

View File

@ -151,6 +151,24 @@ switch (post('op')) {
break;
// Ricalcolo scadenze
case 'controlla_totali':
try {
$xml = \Util\XML::read($fattura->getXML());
$dati_generali = $xml['FatturaElettronicaBody']['DatiGenerali']['DatiGeneraliDocumento'];
$totale_documento = $dati_generali['ImportoTotaleDocumento'] ?: null;
} catch (Exception $e) {
$totale_documento = null;
}
echo json_encode([
'stored' => $totale_documento,
'calculated' => $fattura->totale,
]);
break;
// eliminazione documento
case 'delete':
$rs = $dbo->fetchArray('SELECT id FROM co_righe_documenti WHERE iddocumento='.prepare($id_record));

View File

@ -113,7 +113,7 @@ if (empty($record['is_fiscale'])) {
<?php
if ($dir == 'entrata') {
?>
{[ "type": "select", "label": "<?php echo tr('Stato FE'); ?>", "name": "codice_stato_fe", "required": 0, "values": "query=SELECT codice as id, CONCAT_WS(' - ',codice,descrizione) as text FROM fe_stati_documento", "value": "$codice_stato_fe$", "disabled": <?php echo intval(Plugins\ExportFE\Connection::isEnabled()); ?>, "class": "unblockable", "help": "<?php echo ((!empty($record['data_stato_fe'])) ? Translator::timestampToLocale($record['data_stato_fe']) : '' ); ?>" ]}
{[ "type": "select", "label": "<?php echo tr('Stato FE'); ?>", "name": "codice_stato_fe", "required": 0, "values": "query=SELECT codice as id, CONCAT_WS(' - ',codice,descrizione) as text FROM fe_stati_documento", "value": "$codice_stato_fe$", "disabled": <?php echo intval(Plugins\ExportFE\Connection::isEnabled()); ?>, "class": "unblockable", "help": "<?php echo (!empty($record['data_stato_fe'])) ? Translator::timestampToLocale($record['data_stato_fe']) : ''; ?>" ]}
<?php
}
?>
@ -142,13 +142,15 @@ if (empty($record['is_fiscale'])) {
{[ "type": "select", "label": "<?php echo tr('Riferimento sede'); ?>", "name": "idsede", "ajax-source": "sedi", "placeholder": "Sede legale", "value": "$idsede$" ]}
</div>
<?php if ($dir == 'uscita') { ?>
<?php if ($dir == 'uscita') {
?>
<div class="col-md-3">
{[ "type": "date", "label": "<?php echo tr('Data ricezione'); ?>", "name": "data_ricezione", "required": 0, "value": "$data_ricezione$" ]}
</div>
<?php } ?>
<?php
} ?>
<?php if ($dir == 'entrata') {
?>
@ -531,12 +533,51 @@ include $docroot.'/modules/fatture/row-list.php';
</div>
</div>
<?php
if ($dir == 'uscita' && $fattura->isFE()) {
echo '
<div class="alert alert-info text-center" id="controlla_totali"><i class="fa fa-spinner fa-spin"></i> '.tr('Controllo sui totali del documento e della fattura elettronica in corso').'...</div>
<script>
$(document).ready(function() {
$.ajax({
url: globals.rootdir + "/actions.php",
type: "post",
data: {
id_module: globals.id_module,
id_record: globals.id_record,
op: "controlla_totali",
},
success: function(data){
data = JSON.parse(data);
var div = $("#controlla_totali");
div.removeClass("alert-info");
console.log(data);
if (data.stored == null) {
div.addClass("alert-info").html("'.tr("Il file XML non contiene il nodo ''ImportoTotaleDocumento'': controllo sui totali impossibile").'.")
} else if (data.stored == data.calculated){
div.addClass("alert-success").html("'.tr('Il totale del file XML corrisponde a quello calcolato dal gestionale').'.")
} else {
div.addClass("alert-warning").html("'.tr('Il totale del file XML non corrisponde a quello calcolato dal gestionale: previsto _XML_, calcolato _CALC_', [
'_XML_' => '" + data.stored + "&euro;',
'_CALC_' => '" + data.calculated + "&euro;',
]).'.")
}
}
});
})
</script>';
}
?>
{( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "$id_record$" )}
<?php
if ($dir == 'entrata') {
echo '
<div class="alert alert-info text-center">'.tr('Per allegare un documento alla fattura elettronica caricare il file PDF specificando come categoria "Fattura Elettronica"').'.</div>';
<div class="alert alert-info text-center">'.tr('Per allegare un documento alla fattura elettronica caricare il file PDF specificando come categoria "Fattura Elettronica"').'.</div>';
}
echo '

View File

@ -248,7 +248,7 @@ class Fattura extends Document
public function getXML()
{
if (empty($this->progressivo_invio)) {
if (empty($this->progressivo_invio) && $this->module == 'Fatture di acquisto') {
$fe = new FatturaElettronica($this->id);
return $fe->toXML();
@ -261,7 +261,7 @@ class Fattura extends Document
public function isFE()
{
return !empty($this->progressivo_invio) && $this->module == 'Fatture di acquisto';
return !empty($this->progressivo_invio);
}
/**
@ -340,7 +340,7 @@ class Fattura extends Document
{
$this->rimuoviScadenze();
if (!$ignora_fe && $this->isFE()) {
if (!$ignora_fe && $this->module == 'Fatture di acquisto' && $this->isFE()) {
$scadenze_fe = $this->registraScadenzeFE($is_pagato);
}

View File

@ -279,7 +279,7 @@ class FatturaElettronica
$totale_righe = sum($totali_righe);
$dati_generali = $this->getBody()['DatiGenerali']['DatiGeneraliDocumento'];
$totale_documento = isset($dati_generali['ImportoTotaleDocumento']) ? $dati_generali['ImportoTotaleDocumento'] : sum($totali);
$totale_documento = $dati_generali['ImportoTotaleDocumento'];
$diff = $totale_documento ? $totale_documento - $fattura->totale : $totale_righe - $fattura->imponibile_scontato;
if (!empty($diff)) {