diff --git a/app/Http/Controllers/ImportRuleController.php b/app/Http/Controllers/ImportRuleController.php index a8830ee..b6eac23 100644 --- a/app/Http/Controllers/ImportRuleController.php +++ b/app/Http/Controllers/ImportRuleController.php @@ -44,7 +44,15 @@ class ImportRuleController extends Controller 'is_active' => 'boolean', 'created_by' => 'nullable|string|max:255', ]); - ImportRule::create($request->all()); + ImportRule::create( + [ + 'category_id'=>$request->category_id, + 'pattern'=>$request->pattern, + 'description'=>$request->description, + 'is_active'=>1, + ] + + ); return redirect()->route('import_rules.index'); // Redirect to the index after storing the rule } diff --git a/app/Http/Controllers/MovimentiController.php b/app/Http/Controllers/MovimentiController.php index b05486f..d00a44e 100644 --- a/app/Http/Controllers/MovimentiController.php +++ b/app/Http/Controllers/MovimentiController.php @@ -381,7 +381,7 @@ class MovimentiController extends Controller 'mov_descrizione' => $line[$this->map['mov_descrizione']], 'mov_importo_dare' => $line[$this->map['mov_importo_dare']], 'mov_importo_avere' => $line[$this->map['mov_importo_avere']], - 'mov_fk_categoria' => '1', + 'mov_fk_categoria' => Movimenti::setCategoriesFromCsv($line[$this->map['mov_descrizione']]), 'mov_fk_tags' => 1, 'mov_inserito_da' => Auth::id(), 'conto_id_da' => 1 diff --git a/app/Models/ImportRule.php b/app/Models/ImportRule.php index e29c640..e83c528 100644 --- a/app/Models/ImportRule.php +++ b/app/Models/ImportRule.php @@ -8,7 +8,13 @@ use Illuminate\Database\Eloquent\Model; class ImportRule extends Model { use HasFactory; - + protected $fillable = [ + 'category_id', + 'pattern', + 'description', + 'is_active', + 'created_by', + ]; // In MovimentiController o direttamente nel model Movimenti diff --git a/app/Models/Movimenti.php b/app/Models/Movimenti.php index d2be652..4e691c2 100644 --- a/app/Models/Movimenti.php +++ b/app/Models/Movimenti.php @@ -379,9 +379,23 @@ JOIN categories as c ON a.mov_fk_categoria=c.id'; public static function getSuggestedCategory($descrizione) { $rule = ImportRule::whereRaw('? LIKE CONCAT("%", pattern, "%")', [$descrizione])->first(); - return $rule ? $rule->category_id : null; + return $rule ? $rule->category_id : 1; } + public static function setCategoriesFromCsv($descrizione) + { + $rules = \App\Models\ImportRule::all(); + $categoria = 1; // Default category + + foreach ($rules as $rule) { + if (preg_match("/$rule->pattern/i", $descrizione)) { + $categoria = $rule->category_id; + break; + } + } + + return $categoria; + } diff --git a/database/seeders/CategorieSeeder.php b/database/seeders/CategorieSeeder.php index 049cd6a..61f6afc 100644 --- a/database/seeders/CategorieSeeder.php +++ b/database/seeders/CategorieSeeder.php @@ -17,9 +17,9 @@ class CategorieSeeder extends Seeder // Inserisce le categorie necessarie DB::table('categories')->insert( [ - 'cat_name'=>'Automobili', + 'cat_name'=>'Da Selezionare', 'cat_uscita'=>1, - 'cat_entrata'=>0, + 'cat_entrata'=>1, ] ); DB::table('categories')->insert( @@ -30,9 +30,23 @@ class CategorieSeeder extends Seeder ); DB::table('categories')->insert( [ - 'cat_name'=>'Utenze', + 'cat_name'=>'Automobili', 'cat_uscita'=>1, 'cat_entrata'=>0] ); + DB::table('categories')->insert( + [ + 'cat_name'=>'Alimentari', + 'cat_uscita'=>1, + 'cat_entrata'=>0, + ] + ); + DB::table('categories')->insert( + [ + 'cat_name'=>'Utenze', + 'cat_uscita'=>1, + 'cat_entrata'=>0, + ] + ); } } diff --git a/routes/web.php b/routes/web.php index 5763da6..66b9339 100644 --- a/routes/web.php +++ b/routes/web.php @@ -98,15 +98,23 @@ Route::middleware([ Route::get('admin/movimenti/importgen', [MovimentiController::class,'importFileGen'])->name('importGen'); Route::post('admin/movimenti/importgen', [MovimentiController::class,'importGenericCsv']); Route::post('admin/movimenti/importmapped', [MovimentiController::class,'importmappedCsv'])->name('conti.map.store'); - Route::get('/admin/movimenti/giroconto', [MovimentiController::class,'giroconto'])->name('giroconto'); - Route::post('/admin/movimenti/giroconto', [MovimentiController::class,'girocontoPost']); + Route::get('/admin/movimenti/import_rules', [ImportRuleController::class, 'index'])->name('import_rules.index'); Route::get('/admin/movimenti/import_rules/create', [ImportRuleController::class, 'create'])->name('import_rules.create'); Route::post('/admin/movimenti/import_rules', [ImportRuleController::class, 'store'])->name('import_rules.store'); + Route::get('/admin/movimenti/import_rules/{import_rule}', [ImportRuleController::class, 'show'])->name('import_rules.show'); + Route::get('/admin/movimenti/import_rules/{import_rule}/edit', [ImportRuleController::class, 'edit'])->name('import_rules.edit'); + Route::put('/admin/movimenti/import_rules/{import_rule}', [ImportRuleController::class, 'update'])->name('import_rules.update'); + Route::delete('/admin/movimenti/import_rules/{import_rule}', [ImportRuleController::class, 'destroy'])->name('import_rules.destroy'); + + Route::resource('admin/conti', ContoController::class); + Route::get('/admin/movimenti/giroconto', [MovimentiController::class,'giroconto'])->name('giroconto'); + Route::post('/admin/movimenti/giroconto', [MovimentiController::class,'girocontoPost']); + // CATEGORIE Route::get('admin/categorie', [CategorieController::class,'listCategorie'])->name('categorie'); Route::post('admin/categorie', [CategorieController::class,'insCategorie']);