Completamento importazione ricevute fatture elettroniche
This commit is contained in:
parent
fafa068cca
commit
32eeb76e58
|
@ -31,6 +31,8 @@ switch (filter('op')) {
|
||||||
if ($result) {
|
if ($result) {
|
||||||
database()->update('co_documenti', [
|
database()->update('co_documenti', [
|
||||||
'codice_stato_fe' => 'WAIT',
|
'codice_stato_fe' => 'WAIT',
|
||||||
|
'descrizione_stato_fe' => 'Fattura in elaborazione...',
|
||||||
|
'data_stato_fe' => date('Y-m-d H:i:s'),
|
||||||
], ['id' => $id_record]);
|
], ['id' => $id_record]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -151,7 +151,8 @@ echo '
|
||||||
<i class="fa fa-eye"></i> '.tr('Visualizza').'
|
<i class="fa fa-eye"></i> '.tr('Visualizza').'
|
||||||
</a>';
|
</a>';
|
||||||
|
|
||||||
$send = Interaction::isEnabled() && $generated && $record['codice_stato_fe'] == 'GEN';
|
// Scelgo quando posso inviarla
|
||||||
|
$send = Interaction::isEnabled() && $generated && in_array( $record['codice_stato_fe'], array('GEN', 'ERVAL') );
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
|
|
||||||
|
@ -159,8 +160,34 @@ echo '
|
||||||
|
|
||||||
<button onclick="if( confirm(\''.tr('Inviare la fattura al SDI?').'\') ){ send(this); }" class="btn btn-success btn-lg '.($send ? '' : 'disabled').'" target="_blank" '.($send ? '' : 'disabled').'>
|
<button onclick="if( confirm(\''.tr('Inviare la fattura al SDI?').'\') ){ send(this); }" class="btn btn-success btn-lg '.($send ? '' : 'disabled').'" target="_blank" '.($send ? '' : 'disabled').'>
|
||||||
<i class="fa fa-paper-plane"></i> '.tr('Invia').'
|
<i class="fa fa-paper-plane"></i> '.tr('Invia').'
|
||||||
</button>
|
</button><br><br>';
|
||||||
|
|
||||||
|
// Messaggio esito invio
|
||||||
|
if ($record['codice_stato_fe'] == '') {
|
||||||
|
|
||||||
|
} elseif ($record['codice_stato_fe'] == 'GEN') {
|
||||||
|
echo '
|
||||||
|
<div class="alert alert-warning">'.tr('La fattura è stata generata ed è pronta per l\'invio.').'</div>
|
||||||
|
';
|
||||||
|
} else {
|
||||||
|
$stato_fe = database()->fetchOne('SELECT codice, descrizione, icon FROM fe_stati_documento WHERE codice='.prepare($record['codice_stato_fe']));
|
||||||
|
|
||||||
|
if (in_array($stato_fe['codice'], array('EC01', 'RC'))) {
|
||||||
|
$class = 'success';
|
||||||
|
} elseif (in_array($stato_fe['codice'], array('ERVAL', 'GEN', 'MC', 'WAIT'))) {
|
||||||
|
$class = 'warning';
|
||||||
|
} else {
|
||||||
|
$class = 'danger';
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<div class="alert text-left alert-'.$class.'"><big><i class="'.$stato_fe['icon'].'" style="color:#fff;"></i> <b>'.$record['codice_stato_fe'].'</b> - '.$record['descrizione_stato_fe'].'</big> <div class="pull-right"><i class="fa fa-clock-o"></i> '.date('d/m/Y H:i', strtotime($record['data_stato_fe'])).'</small></div>
|
||||||
|
';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
echo '
|
||||||
<script>
|
<script>
|
||||||
function send(btn) {
|
function send(btn) {
|
||||||
var restore = buttonLoading(btn);
|
var restore = buttonLoading(btn);
|
||||||
|
|
|
@ -32,7 +32,7 @@ switch (filter('op')) {
|
||||||
$result = [];
|
$result = [];
|
||||||
if (!empty($file)) {
|
if (!empty($file)) {
|
||||||
try {
|
try {
|
||||||
$receipt = new Ricevuta($file['content']);
|
$receipt = new Ricevuta($name, $file['content']);
|
||||||
|
|
||||||
$result = [
|
$result = [
|
||||||
'fattura' => $receipt->getFattura()->numero_esterno,
|
'fattura' => $receipt->getFattura()->numero_esterno,
|
||||||
|
|
|
@ -46,19 +46,26 @@ echo '
|
||||||
count = data.length;
|
count = data.length;
|
||||||
buttonRestore(btn, restore);
|
buttonRestore(btn, restore);
|
||||||
|
|
||||||
|
if( count == 0 ){
|
||||||
|
swal({
|
||||||
|
title: "'.tr('Non ci sono ricevute da importare').'",
|
||||||
|
showCancelButton: false,
|
||||||
|
confirmButtonText: "'.tr('OK').'",
|
||||||
|
type: "info",
|
||||||
|
});
|
||||||
|
} else {
|
||||||
swal({
|
swal({
|
||||||
title: "'.tr('Ricevute da importare: _COUNT_', [
|
title: "'.tr('Ricevute da importare: _COUNT_', [
|
||||||
'_COUNT_' => '" + count + "',
|
'_COUNT_' => '" + count + "',
|
||||||
]).'",
|
]).'",
|
||||||
html: "'.tr('Sono state individuate _COUNT_ ricevute da importare', [
|
html: "'.tr('Importando le ricevute, verranno aggiornati gli stati di invio fatture elettroniche. Continuare?').'",
|
||||||
'_COUNT_' => '" + count + "',
|
|
||||||
]).'.",
|
|
||||||
showCancelButton: true,
|
showCancelButton: true,
|
||||||
confirmButtonText: "'.tr('Procedi').'",
|
confirmButtonText: "'.tr('Procedi').'",
|
||||||
type: "info",
|
type: "info",
|
||||||
}).then(function (result) {
|
}).then(function (result) {
|
||||||
importAll(btn);
|
importAll(btn);
|
||||||
});
|
});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
error: function(data) {
|
error: function(data) {
|
||||||
alert("'.tr('Errore').': " + data);
|
alert("'.tr('Errore').': " + data);
|
||||||
|
|
|
@ -26,10 +26,6 @@ class Interaction extends Connection
|
||||||
]);
|
]);
|
||||||
$body = static::responseBody($response);
|
$body = static::responseBody($response);
|
||||||
|
|
||||||
if ($body['code'] != '200') {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $body;
|
return $body;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,14 +19,15 @@ class Ricevuta
|
||||||
/** @var array XML della fattura */
|
/** @var array XML della fattura */
|
||||||
protected $fattura = null;
|
protected $fattura = null;
|
||||||
|
|
||||||
public function __construct($content)
|
public function __construct($name, $content)
|
||||||
{
|
{
|
||||||
$this->xml = XML::read($content);
|
$this->xml = XML::read($content);
|
||||||
|
|
||||||
$nome = $this->xml['NomeFile'];
|
$nome = $this->xml['NomeFile'];
|
||||||
$pieces = explode('_', $nome);
|
$filename = explode('.', $nome)[0];
|
||||||
|
$pieces = explode('_', $filename);
|
||||||
|
|
||||||
$progressivo_invio = explode('.', $pieces[1])[0];
|
$progressivo_invio = $pieces[1];
|
||||||
|
|
||||||
$this->fattura = Fattura::where([
|
$this->fattura = Fattura::where([
|
||||||
'progressivo_invio' => $progressivo_invio,
|
'progressivo_invio' => $progressivo_invio,
|
||||||
|
@ -34,6 +35,20 @@ class Ricevuta
|
||||||
|
|
||||||
if (empty($this->fattura)) {
|
if (empty($this->fattura)) {
|
||||||
throw new UnexpectedValueException();
|
throw new UnexpectedValueException();
|
||||||
|
} else {
|
||||||
|
// Processo la ricevuta e salvo il codice e messaggio di errore
|
||||||
|
$filename = explode('.', $name)[0];
|
||||||
|
$pieces = explode('_', $filename);
|
||||||
|
$codice = $pieces[2];
|
||||||
|
$descrizione = $this->xml['Destinatario']['Descrizione'];
|
||||||
|
$data = $this->xml['DataOraRicezione'];
|
||||||
|
|
||||||
|
$this->fattura->codice_stato_fe = $codice;
|
||||||
|
$this->fattura->descrizione_stato_fe = $descrizione;
|
||||||
|
$this->fattura->data_stato_fe = date('Y-m-d H:i:s', strtotime($data));
|
||||||
|
$this->fattura->save();
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,5 +48,7 @@ UPDATE `zz_settings` SET `tipo` = 'query=SELECT codice AS id, CONCAT_WS(\' - \',
|
||||||
|
|
||||||
UPDATE `fe_stati_documento` SET `descrizione`='In elaborazione' WHERE `codice`='WAIT';
|
UPDATE `fe_stati_documento` SET `descrizione`='In elaborazione' WHERE `codice`='WAIT';
|
||||||
|
|
||||||
INSERT INTO `fe_stati_documento`( `codice`, `descrizione`, `icon` ) VALUES
|
INSERT INTO `fe_stati_documento`( `codice`, `descrizione`, `icon` ) VALUES( 'ERVAL', 'Errore di validazione', 'fa fa-edit text-danger' );
|
||||||
( 'ERVAL', 'Errore di validazione', 'fa fa-edit text-danger' );
|
|
||||||
|
ALTER TABLE `co_documenti` ADD `descrizione_stato_fe` TEXT NOT NULL AFTER `codice_stato_fe`;
|
||||||
|
ALTER TABLE `co_documenti` ADD `data_stato_fe` TIMESTAMP NOT NULL AFTER `descrizione_stato_fe`;
|
Loading…
Reference in New Issue