Class PackagePricingStrategy

java.lang.Object
it.unicam.cs.ids2425.FilieraAgricola.service.pricing.PackagePricingStrategy
All Implemented Interfaces:
PricingStrategy

@Service("packagePricingStrategy") public class PackagePricingStrategy extends Object implements PricingStrategy
Questa classe implementa l'interfaccia PricingStrategy e definisce la strategia di calcolo del prezzo per i pacchetti (contenitori di più articoli) presenti in una riga d'ordine.

Viene utilizzata quando una OrderLine si riferisce specificamente a un pacchetto promozionale o raggruppato, distinguendosi dalla vendita di articoli singoli.

  • Constructor Details

    • PackagePricingStrategy

      public PackagePricingStrategy()
  • Method Details

    • calculatePrice

      public BigDecimal calculatePrice(OrderLine line)
      Calcola il prezzo totale per la riga d'ordine passata come parametro, specifica per un pacchetto.

      Cosa succede: Il metodo verifica prima che la riga d'ordine contenga effettivamente un pacchetto. Successivamente, restituisce il valore del sottototale già calcolato e memorizzato nell'oggetto OrderLine.

      Perché viene fatto così: Il prezzo di un pacchetto è spesso forfettario o soggetto a promozioni specifiche. La logica che determina questo valore è "congelata" nell'entità `OrderLine` al momento della creazione dell'ordine. In questo modo, restituiamo semplicemente il valore storico, garantendo che le modifiche future al prezzo o alla composizione del pacchetto non alterino retroattivamente gli ordini già effettuati.

      Specified by:
      calculatePrice in interface PricingStrategy
      Parameters:
      line - La riga d'ordine di cui calcolare il prezzo. Deve contenere un riferimento valido a un pacchetto.
      Returns:
      Il prezzo totale per la riga (corrispondente al subtotale memorizzato).
      Throws:
      IllegalArgumentException - Se la riga d'ordine non contiene un pacchetto valido (è null).