From 0a968bdc61e0598c65c68b3a2afe3aa205041830 Mon Sep 17 00:00:00 2001 From: Flavio Barachino Date: Thu, 25 Sep 2025 16:38:00 +0200 Subject: [PATCH] Effettuato modifica in importazione EC generic CSV per controllo inserimento senza duplicati --- app/Http/Controllers/MovimentiController.php | 3 ++- app/Models/Movimenti.php | 20 ++++++++++++++----- ...2_02_04_134245_create_movimentis_table.php | 1 + 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/MovimentiController.php b/app/Http/Controllers/MovimentiController.php index e550381..7d0a428 100644 --- a/app/Http/Controllers/MovimentiController.php +++ b/app/Http/Controllers/MovimentiController.php @@ -385,7 +385,8 @@ class MovimentiController extends Controller $data = $this->mapCsvLineToDb($line); // dd($data); if (isset($data['mov_data'])) { - Movimenti::create($data); + Movimenti::importNoDuplicate($data); + //Movimenti::create($data); } }); diff --git a/app/Models/Movimenti.php b/app/Models/Movimenti.php index 5f1d5d3..0dc3c7b 100644 --- a/app/Models/Movimenti.php +++ b/app/Models/Movimenti.php @@ -28,7 +28,8 @@ class Movimenti extends Model 'mov_inserito_da', 'mov_fk_tags', 'conto_id_da', - 'conto_id_a' + 'conto_id_a', + 'import_hash', ]; public static $query= 'SELECT @@ -241,24 +242,33 @@ public function ContoA() } - private function makeHash($data,$movimento_dare, $movimento_avere, $descrizione) + public static function makeHash($data,$movimento_dare, $movimento_avere, $descrizione) { // crea l'hash (serve per evitare duplicati nei movimenti) return md5($data.$movimento_dare.$movimento_avere.$descrizione); } - public function importHashExists($hash) + public static function importHashExists($hash) { return self::where('import_hash', $hash)->exists(); } - public function importNoDuplicate($data, $movimento_dare, $movimento_avere, $descrizione) + public static function importNoDuplicate($data) { - $hash = $this->makeHash($data, $movimento_dare, $movimento_avere, $descrizione); + $hash = Movimenti::makeHash($data['mov_data'], $data['mov_importo_dare'], $data['mov_importo_avere'], $data['mov_descrizione']); $exists = self::where('import_hash', $hash)->exists(); if (!$exists) { self::create([ // TODO: ...altri campi... + 'mov_data' => $data['mov_data'], + 'mov_fk_categoria' => $data['mov_fk_categoria'], + 'mov_descrizione' => $data['mov_descrizione'], + 'mov_importo_dare' => $data['mov_importo_dare'], + 'mov_importo_avere' => $data['mov_importo_avere'], + 'mov_inserito_da' => 1, + 'conto_id_da' => 1, + 'conto_id_a' => 1, + 'mov_fk_tags' => 1, 'import_hash' => $hash, ]); } diff --git a/database/migrations/2022_02_04_134245_create_movimentis_table.php b/database/migrations/2022_02_04_134245_create_movimentis_table.php index ec86736..9228e59 100644 --- a/database/migrations/2022_02_04_134245_create_movimentis_table.php +++ b/database/migrations/2022_02_04_134245_create_movimentis_table.php @@ -28,6 +28,7 @@ class CreateMovimentisTable extends Migration $table->foreign('mov_fk_tags')->references('id')->on('tags'); $table->foreignId('conto_id_da')->constrained('contos')->nullable(); $table->foreignId('conto_id_a')->constrained('contos')->nullable(); + $table->string('import_hash')->nullable()->index(); }); }