From 0169ec6acdfffd356c84699cd602d023d755e3ee Mon Sep 17 00:00:00 2001 From: Flavio Barachino Date: Tue, 5 Aug 2025 17:40:13 +0200 Subject: [PATCH] effettuato modifiche per mappatura campi [BUG] non trova il file --- app/Http/Controllers/MovimentiController.php | 23 +++++++++++++ app/Models/Movimenti.php | 34 +++++++++++++------ config/adminlte.php | 5 +++ resources/views/conti/importGen.blade.php | 27 +++++++++++++++ resources/views/conti/importGeneric.blade.php | 25 ++++++++++++++ routes/web.php | 5 ++- 6 files changed, 108 insertions(+), 11 deletions(-) create mode 100644 resources/views/conti/importGen.blade.php create mode 100644 resources/views/conti/importGeneric.blade.php diff --git a/app/Http/Controllers/MovimentiController.php b/app/Http/Controllers/MovimentiController.php index 28d2819..0dee858 100644 --- a/app/Http/Controllers/MovimentiController.php +++ b/app/Http/Controllers/MovimentiController.php @@ -335,6 +335,22 @@ class MovimentiController extends Controller } } + public function importGenericCsv(Request $request) + { + if ($request->hasFile('filename')) + { + $filename=$request->file('filename')->store(); + $csv_headers=Movimenti::retrieveHeaders($filename); + $db_fields=Movimenti::getDbFields(); + + return view('conti.importGeneric',['csv'=>$csv_headers,'db'=>$db_fields,'filename'=>$filename]); + } + + else { + return 'Nessun File trovato'; + } + } + public function importFile() { return view('conti.import'); @@ -345,6 +361,13 @@ class MovimentiController extends Controller return view('conti.importCR'); } + public function importFileGen() + { + return view('conti.importGen'); + } + + + /* public function test() { Movimenti::getYearsFromMovimenti(); diff --git a/app/Models/Movimenti.php b/app/Models/Movimenti.php index 2a43767..f95bc43 100644 --- a/app/Models/Movimenti.php +++ b/app/Models/Movimenti.php @@ -5,10 +5,12 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Storage; use Rap2hpoutre\FastExcel\FastExcel; use App\Models\Categorie; use App\Models\Conto; use App\Models\User; +//use Illuminate\Support\Facades\Schema; class Movimenti extends Model { @@ -45,7 +47,7 @@ JOIN categories as c ON a.mov_fk_categoria=c.id'; public function Tags() { - return $this->belongsTo(Tags::class); + return $this->belongsTo(tag::class); } public static function getList() { @@ -242,7 +244,7 @@ JOIN categories as c ON a.mov_fk_categoria=c.id'; public static function importEstrattoIng($filename) { - $inputPath='/var/www/html/gestionale_mt/public/storage/tenant'.tenant('id').'/'.$filename; + $inputPath='/var/www/html/gestionale2025/storage/app/public/'.$filename; // $outputPath='/var/www/html/gestionale_mt/public/tenant'.tenant('id').'/import/'.$filename.'.csv'; $outputPath = $inputPath.'.csv'; rename($inputPath,$outputPath); @@ -275,7 +277,7 @@ JOIN categories as c ON a.mov_fk_categoria=c.id'; public static function importEstrattoCR($filename) { - $inputPath='/var/www/html/gestionale_mt/public/storage/tenant'.tenant('id').'/'.$filename; + $inputPath='/var/www/html/gestionale2025/storage/app/public/'.$filename; // $outputPath='/var/www/html/gestionale_mt/public/'.tenant('id')."/app/".$filename; $outputPath = $inputPath.'.csv'; rename($inputPath,$outputPath); @@ -317,15 +319,27 @@ JOIN categories as c ON a.mov_fk_categoria=c.id'; } // Test filtri categoria - public function mapFieldByName($name) + public static function retrieveHeaders($filename) { - // definisce lo schema per rigenerare il file CSV secondo standard di importazione - $fields = Illuminate\Support\Facade\Schema::getColumnListing('movimentis')->mapFieldByName; - foreach ($fields as $field) - { - echo $column . "\n"; - } + $inputPath= Storage::path($filename); + $outputPath = $inputPath.'.csv'; + rename($inputPath,$outputPath); + $rows = (new FastExcel)->configureCsv(';')->import($outputPath); + $headers = array_keys($rows->first()); + return $headers; + } + + public static function getDbFields() + { + return [ + "Data movimento"=>"mov_data", + "Descrizione"=>"mov_descrizione", + "Importo"=>"mov_importo", + "Categoria"=>"mov_fk_categoria", + "Tag"=>"mov_fk_tags", + "Conto"=>"conto_id", + ]; } // Test applicazione regole diff --git a/config/adminlte.php b/config/adminlte.php index 27f2416..7c476a1 100644 --- a/config/adminlte.php +++ b/config/adminlte.php @@ -383,6 +383,11 @@ return [ 'text' => 'Importa Estratto conto Cassa Rurale', 'route' => 'importCR', ], + [ + 'text' => 'Importa Generic CSV', + 'route' => 'importGen', + ], + ], ], ], diff --git a/resources/views/conti/importGen.blade.php b/resources/views/conti/importGen.blade.php new file mode 100644 index 0000000..8c46167 --- /dev/null +++ b/resources/views/conti/importGen.blade.php @@ -0,0 +1,27 @@ +@extends('adminlte::page') + +@section('content_header') +

Importazione Estratto conto Generico

+@endsection + +@section('content') + +
+ +
+
+
+ @csrf +
+ + +
+
+ +
+
+
+
+
+ + @endsection diff --git a/resources/views/conti/importGeneric.blade.php b/resources/views/conti/importGeneric.blade.php new file mode 100644 index 0000000..1d072c6 --- /dev/null +++ b/resources/views/conti/importGeneric.blade.php @@ -0,0 +1,25 @@ +@extends('adminlte::page') + +@section('content_header') +

Mappa i campi

+@endsection + +@section('content') +
+@csrf + @foreach ($csv as $header) + + + @endforeach + + +
+@endsection diff --git a/routes/web.php b/routes/web.php index 56603e4..b5de6ac 100644 --- a/routes/web.php +++ b/routes/web.php @@ -94,6 +94,8 @@ Route::middleware([ Route::post('admin/movimenti/import', [MovimentiController::class,'importEC_ING']); Route::get('admin/movimenti/importcr', [MovimentiController::class,'importFileCR'])->name('importCR'); Route::post('admin/movimenti/importcr', [MovimentiController::class,'importEC_CR']); + Route::get('admin/movimenti/importgen', [MovimentiController::class,'importFileGen'])->name('importGen'); + Route::post('admin/movimenti/importgen', [MovimentiController::class,'importGenericCsv']); Route::get('/admin/movimenti/giroconto', [MovimentiController::class,'giroconto'])->name('giroconto'); Route::post('/admin/movimenti/giroconto', [MovimentiController::class,'girocontoPost']); @@ -262,5 +264,6 @@ Route::middleware('auth:sanctum')->group(function () { Route::delete('/api/conti/{id}', [ApiContoController::class, 'deleteConto']); + }); }); -}); +