feat: Aggiungi supporto per prezzi personalizzati nel listino e modifica la logica di importazione

This commit is contained in:
2026-10-19 17:01:18 +02:00
parent 1e352eb2ef
commit 863e6ca920
6 changed files with 117 additions and 8 deletions
@@ -57,7 +57,7 @@ class ImportaListiniAction
->schema([
Forms\Components\Placeholder::make('istruzioni')
->hiddenLabel()
->content('Per ogni tabella trovata nel file scegli il modello a cui assegnare il listino. Le tabelle senza modello non vengono importate; il listino dei modelli associati viene sostituito.'),
->content('Per ogni tabella trovata nel file scegli il modello a cui assegnare il listino. Le tabelle senza modello non vengono importate; i modelli non associati mantengono il listino attuale.'),
// Intestazione unica: le righe sotto sono senza etichette, in forma di tabella.
Forms\Components\Grid::make(5)
->extraAttributes(['class' => 'px-4 text-sm font-medium text-gray-950 dark:text-white'])
@@ -92,6 +92,13 @@ class ImportaListiniAction
->distinct()
->columnSpan(2),
]),
Forms\Components\Toggle::make('sovrascrivi_tutto')
->label('Sovrascrivi tutti i prezzi')
->helperText(fn (Get $get) => $get('sovrascrivi_tutto')
? 'L\'Excel è la fonte primaria: il listino dei modelli associati viene sostituito per intero, compresi i prezzi aggiunti a mano.'
: 'I prezzi aggiunti a mano (pulsante "Nuovo" nel listino del modello) vengono mantenuti e prevalgono sull\'Excel per la stessa misura.')
->default(true)
->live(),
]),
])
->action(function (array $data, Sistema $record) {
@@ -100,7 +107,7 @@ class ImportaListiniAction
->mapWithKeys(fn (array $a) => [$a['codice'] => $a['modello_id'] ?? null])
->all();
$aggiornati = ListinoImporter::importa($record, $blocchi, $associazioni);
$aggiornati = ListinoImporter::importa($record, $blocchi, $associazioni, preservaPersonalizzati: ! ($data['sovrascrivi_tutto'] ?? true));
Notification::make()
->title('Listini importati')