Skip to content

Commit 7402d43

Browse files
committed
fix: importazione fatture con tipo documento e data registrazione mancanti in xml
1 parent 13bab90 commit 7402d43

3 files changed

Lines changed: 55 additions & 27 deletions

File tree

plugins/importFE/generate.php

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -284,28 +284,37 @@ function cleanup(){
284284
$query = $query_tipo;
285285
}
286286

287-
$id_tipodocumento = $database->fetchOne($query_tipo)['id'];
287+
$tipo_doc = $database->fetchOne($query_tipo);
288+
$id_tipodocumento = $tipo_doc['id'] ?? null;
288289

289290
echo '
290291
<div class="row">
291292
<div class="col-md-3">
292-
{[ "type": "select", "label": "'.tr('Tipo fattura').'", "name": "id_tipo", "required": 1, "values": "query='.$query.'", "value": "'.($numero_tipo != 1 ? $id_tipodocumento : '').'" ]}
293+
{[ "type": "select", "label": "'.tr('Tipo fattura').'", "name": "id_tipo", "required": 1, "values": "query='.$query.'", "value": "'.($numero_tipo != 1 && !empty($id_tipodocumento) ? $id_tipodocumento : '').'" ]}
293294
</div>';
294295

295296
// Sezionale
296-
$id_segment = $database->table('co_tipidocumento')->where('id', '=', $id_tipodocumento)->value('id_segment');
297+
$id_segment = null;
298+
if (!empty($id_tipodocumento)) {
299+
$id_segment = $database->table('co_tipidocumento')->where('id', '=', $id_tipodocumento)->value('id_segment');
300+
}
297301

298302
echo '
299303
<div class="col-md-3">
300-
{[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(['id_module' => $id_module, 'is_fiscale' => 1, 'is_sezionale' => 1, 'for_fe' => 1]).', "value": "'.$id_segment.'" ]}
304+
{[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(['id_module' => $id_module, 'is_fiscale' => 1, 'is_sezionale' => 1, 'for_fe' => 1]).', "value": "'.($id_segment ?: '').'" ]}
301305
</div>';
302306

303307
// Data di registrazione
304308
$data_registrazione = get('data_registrazione');
305-
$data_registrazione = new Carbon($data_registrazione);
309+
if (!empty($data_registrazione)) {
310+
$data_registrazione = new Carbon($data_registrazione);
311+
} else {
312+
$data_registrazione = null;
313+
}
314+
$data_registrazione_value = !empty($data_registrazione) ? $data_registrazione->format('Y-m-d') : $dati_generali['Data'];
306315
echo '
307316
<div class="col-md-3">
308-
{[ "type": "date", "label": "'.tr('Data di registrazione').'", "name": "data_registrazione", "required": 1, "value": "'.($data_registrazione ?: $dati_generali['Data']).'", "max-date": "-now-", "min-date": "'.$dati_generali['Data'].'" ]}
317+
{[ "type": "date", "label": "'.tr('Data di registrazione').'", "name": "data_registrazione", "required": 1, "value": "'.$data_registrazione_value.'", "max-date": "-now-", "min-date": "'.$dati_generali['Data'].'" ]}
309318
</div>';
310319

311320
if (!empty($anagrafica)) {
@@ -514,16 +523,20 @@ function cleanup(){
514523
$codice_principale = $codici[0]['CodiceValore'];
515524
if (!empty($codice_principale)) {
516525
if (!empty($anagrafica) && empty($id_articolo)) {
517-
$id_articolo = $database->fetchOne('SELECT `id_articolo` AS id FROM `mg_fornitore_articolo` WHERE `codice_fornitore` = '.prepare($codice_principale).' AND id_fornitore = '.prepare($anagrafica->id))['id'];
526+
$result = $database->fetchOne('SELECT `id_articolo` AS id FROM `mg_fornitore_articolo` WHERE `codice_fornitore` = '.prepare($codice_principale).' AND id_fornitore = '.prepare($anagrafica->id));
527+
$id_articolo = $result['id'] ?? null;
518528
if (empty($id_articolo)) {
519-
$id_articolo = $database->fetchOne('SELECT `id_articolo` AS id FROM `mg_fornitore_articolo` WHERE REPLACE(`codice_fornitore`, " ", "") = '.prepare($codice_principale).' AND `id_fornitore` = '.prepare($anagrafica->id))['id'];
529+
$result = $database->fetchOne('SELECT `id_articolo` AS id FROM `mg_fornitore_articolo` WHERE REPLACE(`codice_fornitore`, " ", "") = '.prepare($codice_principale).' AND `id_fornitore` = '.prepare($anagrafica->id));
530+
$id_articolo = $result['id'] ?? null;
520531
}
521532
}
522533

523534
if (empty($id_articolo)) {
524-
$id_articolo = $database->fetchOne('SELECT `id` FROM `mg_articoli` WHERE `codice` = '.prepare($codice_principale))['id'];
535+
$result = $database->fetchOne('SELECT `id` FROM `mg_articoli` WHERE `codice` = '.prepare($codice_principale));
536+
$id_articolo = $result['id'] ?? null;
525537
if (empty($id_articolo)) {
526-
$id_articolo = $database->fetchOne('SELECT `id` FROM `mg_articoli` WHERE REPLACE(`codice`, " ", "") = '.prepare($codice_principale))['id'];
538+
$result = $database->fetchOne('SELECT `id` FROM `mg_articoli` WHERE REPLACE(`codice`, " ", "") = '.prepare($codice_principale));
539+
$id_articolo = $result['id'] ?? null;
527540
}
528541
}
529542

plugins/importFE/src/FatturaElettronica.php

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,15 @@ public static function getImportDirectory($name = null, $plugin = null)
103103
{
104104
$module = Module::where('name', $name ?: 'Fatture di acquisto')->first();
105105

106-
$plugins = $module->plugins;
107-
if (!empty($plugins)) {
108-
$plugin = $plugins->first(fn ($value, $key) => $value->getTranslation('title') == ($plugin ?: 'Fatturazione Elettronica'));
106+
if (!empty($module)) {
107+
$plugins = $module->plugins;
108+
if (!empty($plugins)) {
109+
$plugin = $plugins->first(fn ($value, $key) => $value->getTranslation('title') == ($plugin ?: 'Fatturazione Elettronica'));
109110

110-
self::$directory = base_dir().'/'.$plugin->upload_directory;
111+
if (!empty($plugin)) {
112+
self::$directory = base_dir().'/'.$plugin->upload_directory;
113+
}
114+
}
111115
}
112116

113117
return self::$directory;
@@ -134,6 +138,11 @@ public static function isValid($name, $directory = null, $plugin = null)
134138
$file = static::getImportDirectory($directory ?: 'Fatture di acquisto').'/'.$name;
135139
delete($file);
136140

141+
return false;
142+
} catch (\Exception) {
143+
$file = static::getImportDirectory($directory ?: 'Fatture di acquisto').'/'.$name;
144+
delete($file);
145+
137146
return false;
138147
}
139148
}

plugins/importFE/src/Interaction.php

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,11 @@ public static function getInvoiceList($directory = null, $plugin = null)
4343
$result = self::getFileList($list, $directory, $plugin);
4444

4545
// Aggiornamento cache hook
46-
Cache::where('name', 'Fatture Elettroniche')->first()->set($result);
46+
$cache = Cache::where('name', 'Fatture Elettroniche')->first();
47+
if (empty($cache)) {
48+
$cache = Cache::build('Fatture Elettroniche');
49+
}
50+
$cache->set($result);
4751

4852
return $result;
4953
}
@@ -73,18 +77,20 @@ public static function getFileList($list = [], $directory = null, $plugin = null
7377
$directory = FatturaElettronica::getImportDirectory($directory, $plugin);
7478

7579
$files = glob($directory.'/*.xml*');
76-
foreach ($files as $id => $file) {
77-
$name = basename($file);
78-
$pos = array_search($name, $names);
79-
80-
if ($pos === false) {
81-
$list[] = [
82-
'id' => $id,
83-
'name' => $name,
84-
'file' => true,
85-
];
86-
} else {
87-
$list[$pos]['id'] = $id;
80+
if (!empty($files) && is_array($files)) {
81+
foreach ($files as $id => $file) {
82+
$name = basename($file);
83+
$pos = array_search($name, $names);
84+
85+
if ($pos === false) {
86+
$list[] = [
87+
'id' => $id,
88+
'name' => $name,
89+
'file' => true,
90+
];
91+
} else {
92+
$list[$pos]['id'] = $id;
93+
}
8894
}
8995
}
9096

0 commit comments

Comments
 (0)