/**
 * Lot composé d'un certain nombre d'un même article
 */

import java.io.*;

public class Lot extends Article {
  private Article article; // article qui compose ce lot
  protected float quantite;  // quantité d'articles qui composent ce lot

  /**
   * Construit un lot de reference "reference"
   * composé de "quantite" articles de reference "refArticleBase"
   * Le prix est calculé automatiquement (10 % réduction)
   */
  public Lot(String uneReference, String refArticle, float uneQuantite)
      throws RefDoubleException, RefExistePasException {
    super(uneReference, "", "", 0); // valeurs par défaut. Vraies valeurs ci-dessous
    article = getArticle(refArticle);
    quantite = uneQuantite;
    setNom("Lot de " + quantite + " " + article.decritToi());
    setMarque(article.getMarque());
    super.setPu(calculePu());
  }

  public void setArticle(String uneRefArticle)
       throws RefExistePasException {
    article = getArticle(uneRefArticle);
    setArticle(article);
  }

  public void setArticle(Article unArticle) {
    article = unArticle;
    // Ne pas oublier de recalculer le prix du lot
    super.setPu(calculePu());
  }

  public void setQuantite(float uneQuantite) {
    quantite = uneQuantite;
    // Ne pas oublier de recalculer le prix du lot
    super.setPu(calculePu());
  }

  /** Ne devrait jamais être appelé !! */
  public void setPu(float unPu) {
    super.setPu(calculePu());
  }

  /** Met un prix spécial non calculé */
  public void setPrixSpecial(float unPu) {
    super.setPu(unPu);
  }

  private float calculePu() {
    return article.getPu() * quantite * 0.9f;
  }

  public String decritToi() { // Comme toString en + agréable (mais - complet)
    return getNom();
  }
}
