Creato funzione di filtraggio e assegnazione categoria in importazione in base alle regole di assegnazione

This commit is contained in:
Amministratore 2025-08-07 08:26:43 +02:00
parent 652f9a7e76
commit f82f65a0c5
6 changed files with 59 additions and 9 deletions

View File

@ -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
}

View File

@ -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

View File

@ -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

View File

@ -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;
}

View File

@ -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,
]
);
}
}

View File

@ -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']);