Class GDMController

java.lang.Object
com.modulink.Controller.ModuloController
com.modulink.Controller.UserModules.GDM.GDMController

@Controller public class GDMController extends ModuloController
Controller per il modulo GDM (Gestione Magazzino).

Questo componente gestisce tutte le operazioni relative all'inventario prodotti all'interno del contesto multi-tenant. Fornisce funzionalità per il caricamento iniziale dei prodotti, l'aggiornamento delle giacenze (acquisti/vendite) e la categorizzazione degli articoli.

Estende ModuloController (ID Modulo: 6) per garantire che solo le aziende con il modulo attivo e gli utenti con i permessi necessari possano accedere alle risorse.

Since:
1.3.0
Version:
2.4.0
Author:
Modulink Team
  • Field Details

  • Constructor Details

    • GDMController

      public GDMController(ProdottoService prodottoService, CustomUserDetailsService customUserDetailsService, ModuloService moduloService)
      Costruttore per l'iniezione delle dipendenze.
      Parameters:
      prodottoService - Servizio per la manipolazione dell'entità Prodotto.
      customUserDetailsService - Servizio per il recupero dell'utente loggato.
      moduloService - Servizio base per la gestione dei moduli.
      Since:
      1.3.0
  • Method Details

    • dashboardDispatcher

      @GetMapping({"/dashboard/gdm","/dashboard/gdm/"}) public String dashboardDispatcher(Principal principal, org.springframework.ui.Model model)
      Visualizza la pagina principale di gestione prodotti.

      Carica l'elenco completo dei prodotti appartenenti esclusivamente all'azienda dell'utente corrente.

      Parameters:
      principal - Identità dell'utente.
      model - Modello UI per il passaggio dei prodotti alla vista.
      Returns:
      Nome della vista "moduli/gdm/GestioneProdotti" o redirect.
      Since:
      1.3.0
    • getCategories

      @PostMapping({"/dashboard/gdm/get-categories","/dashboard/gdm/get-categories/"}) public Object getCategories(Principal principal)
      Recupera l'elenco univoco delle categorie prodotti utilizzate dall'azienda.
      Parameters:
      principal - Identità dell'utente.
      Returns:
      Lista di stringhe rappresentanti le categorie o redirect.
      Since:
      1.3.5
    • addProduct

      @PostMapping({"/dashboard/gdm/add-product","/dashboard/gdm/add-product/"}) public String addProduct(Principal principal, org.springframework.ui.Model model, @Valid @ModelAttribute("newProdottoForm") @Valid NewProdottoForm newProdottoForm, org.springframework.validation.BindingResult bindingResult)
      Aggiunge un nuovo prodotto al magazzino aziendale.

      Esegue validazioni di integrità sui campi numerici (quantità e prezzo devono essere positivi) prima di persistere l'entità.

      Parameters:
      principal - Identità dell'utente.
      model - Modello UI.
      newProdottoForm - DTO con i dati del nuovo prodotto.
      bindingResult - Risultati della validazione.
      Returns:
      Redirect alla dashboard GDM con feedback di successo o errore.
      Since:
      1.3.0
    • removeProduct

      @PostMapping({"/dashboard/gdm/remove-product","/dashboard/gdm/remove-product/"}) public String removeProduct(Principal principal, org.springframework.ui.Model model, @RequestParam("id_prodotto") int id_prodotto)
      Rimuove un prodotto dal magazzino.
      Parameters:
      principal - Identità dell'utente.
      model - Modello UI.
      id_prodotto - Identificativo del prodotto da eliminare.
      Returns:
      Redirect alla dashboard GDM.
      Since:
      1.3.0
    • updateProduct

      @PostMapping({"/dashboard/gdm/update-product","/dashboard/gdm/update-product/"}) public String updateProduct(Principal principal, org.springframework.ui.Model model, @Valid @ModelAttribute("updateProdottoForm") @Valid UpdateProdottoForm updateProdottoForm, org.springframework.validation.BindingResult bindingResult)
      Aggiorna i dati anagrafici e tecnici di un prodotto esistente.
      Parameters:
      principal - Identità dell'utente.
      model - Modello UI.
      updateProdottoForm - DTO con i dati aggiornati del prodotto.
      bindingResult - Risultati della validazione.
      Returns:
      Redirect alla dashboard GDM.
      Since:
      1.3.0
    • acquista

      @PostMapping({"/dashboard/gdm/buy","/dashboard/gdm/buy/"}) public String acquista(Principal principal, @RequestParam int idProdotto, @RequestParam int quantita)
      Incrementa la giacenza di un prodotto (operazione di carico/acquisto).
      Parameters:
      principal - Identità dell'utente.
      idProdotto - Identificativo del prodotto.
      quantita - Numero di unità da aggiungere.
      Returns:
      Redirect alla dashboard GDM con riepilogo valore acquisto.
      Since:
      1.4.0
    • vendita

      @PostMapping({"/dashboard/gdm/sell","/dashboard/gdm/sell/"}) public String vendita(Principal principal, @RequestParam int idProdotto, @RequestParam int quantita)
      Decrementa la giacenza di un prodotto (operazione di scarico/vendita).

      Verifica preventivamente che la quantità disponibile sia sufficiente per coprire la vendita.

      Parameters:
      principal - Identità dell'utente.
      idProdotto - Identificativo del prodotto.
      quantita - Numero di unità da rimuovere.
      Returns:
      Redirect alla dashboard GDM con riepilogo valore vendita.
      Since:
      1.4.0
    • disinstallaModulo

      public void disinstallaModulo(AziendaEntity azienda)
      Gestisce la pulizia dei dati in caso di disinstallazione del modulo GDM. Rimuove tutti i record della tabella Prodotti associati all'azienda specificata.
      Specified by:
      disinstallaModulo in class ModuloController
      Parameters:
      azienda - L'azienda che disinstalla il modulo.
      Since:
      1.3.0