public OstoslistaKuitattu(
      int id,
      int listaid,
      String nimi,
      double summa,
      double paino,
      Timestamp paivays,
      Kauppa kauppa,
      int kayttajaId,
      Maksutapa maksutapa,
      Bonus bonus)
      throws Exception {
    this.id = id;
    this.listaid = listaid;
    this.nimi = nimi;
    this.summa = haeSumma(id, kauppa.getId());
    this.paino = haePaino(id);
    this.paivays = paivays;
    this.kauppa = kauppa;
    this.kayttajaId = kayttajaId;
    this.maksutapa = maksutapa;
    this.bonus = bonus;

    this.tuotteet = TuoteLista.haeTuotteetListalle(id);
  }
 /**
  * Metodilla haetaan ostoslistalla olevien tuotteiden kokonaispaino.
  *
  * @param lista ostoslistan id tietokannassa.
  * @throws SQLException
  * @throws NamingException
  * @throws Exception
  * @return palauttaa painon.
  */
 public static double haePaino(int lista) throws NamingException, SQLException, Exception {
   double kokPaino = 0;
   int listaid = haeOstoslistalleOstoslistaTallennettuId(lista);
   HashMap<Tuote, Integer> tuotteet = TuoteLista.haeTuotteetListalle(listaid);
   for (Tuote tuote : tuotteet.keySet()) {
     for (int i = 0; i < tuotteet.get(tuote); i++) {
       kokPaino += tuote.getPaino();
     }
   }
   return Math.round(kokPaino * 100) / 100.000d;
 }
 /**
  * Metodilla haetaan ostoslistalla olevien tuotteiden kokonaissumma.
  *
  * @param lista ostoslistan id tietokannassa.
  * @param kauppaid ostoslistaan linkitetyn kaupan id tietokannassa.
  * @throws Exception
  * @return palauttaa summan.
  */
 public static double haeSumma(int lista, int kauppaid) throws Exception {
   double sum = 0;
   int listaid = haeOstoslistalleOstoslistaTallennettuId(lista);
   HashMap<Tuote, Integer> tuotteet = TuoteLista.haeTuotteetListalle(listaid);
   for (Tuote tuote : tuotteet.keySet()) {
     for (int i = 0; i < tuotteet.get(tuote); i++) {
       sum += TuoteHinta.haeHintaTuotteelleKaupassa(tuote.getId(), kauppaid);
     }
   }
   return Math.round(sum * 100) / 100.00d;
 }