/**
  * Toteuttaa kokonaisuuden muokkauksen tallentamisen. Erityisesti käyttäjän
  * tekemät muutokset kokonaisuuteen kulkevat aina tämän metodin kautta, 
  * lukuunottamatta näkyvyyttä ja lukitusta.
  * 
  * Huomaa, ettei lukitusta tai käyttöoikeuksia tarkisteta täällä. Ne
  * tarkistetaan Kayttajakontrolleri-luokan metodeilla kokonaisuuden
  * tulostuksen (ruudulle) yhteydessä, jolloin vain asianmukaisille
  * käyttäjille annetaan painikkeet muokkausta tai poistoa varten.
  * 
  * Joitakin ominaisuuksia ei voi muuttaa täällä:
  *   luomishetki_sek - ei muuteta
  *   ed_muutos_sek - automaattinen
  *   näkyvyys - arvoja ei aseteta täällä (oma metodi Kokonaisuusoliossa)
  *   on_lapsia - arvoja ei aseteta täällä (oma metodi Kokonaisuusoliossa)
  *   lukitus - arvoja ei aseteta täällä (oma metodi Kokonaisuusoliossa)
  *   jarjestysluku - arvoja ei aseteta täällä (oma metodi Kokonaisuuskontrollerissa)
  *   kieli_id - arvoa ei aseteta täällä.
  *   taso - ei muuteta
  *   oppiaine - ei muuteta.
  * 
  * Lukitus poistetaan oliolta onnistuneen operaation päätteeksi.
  * 
  * @param Palaute $palauteolio
  */
 function toteuta_tallenna_muokkaus(&$palauteolio)
 {
     $parametriolio = $this->get_parametriolio();
     $ilmoitus = "";
     // Tarkistuksessa putsataan vain riskimerkit.
     $parametriolio->set_uusi(false);
     $omaid = $parametriolio->get_omaid();
     $otsikko_kokon = $parametriolio->get_otsikko_kokon();
     $tiivis_kokon = $parametriolio->get_tiivis_kokon();
     $selitys_kokon = $parametriolio->get_selitys_kokon();
     $laajennetun_id_kokon = $parametriolio->get_laajennetun_id_kokon();
     $ylakokonaisuuden_id_kokon = $parametriolio->get_ylakokonaisuuden_id_kokon();
     $nakyvyys_kokon = $parametriolio->nakyvyys_kokon;
     $muutettavan_kokon_id = $parametriolio->id_kokon;
     $virhekoodi = Palaute::$VIRHEKOODI_KAIKKI_OK;
     // Haetaan kokonaisuuden omistaja, jotta voidaan tarkistaa:
     $vanha_kokon = $this->get_olio();
     if ($vanha_kokon instanceof Kokonaisuusolio && $vanha_kokon->olio_loytyi_tietokannasta) {
         $muutettavan_kokon_luojan_id = $vanha_kokon->getHenkiloId();
     } else {
         $muutettavan_kokon_luojan_id = Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY;
     }
     //============== Tarkistetaan, onko käyttäjä vielä oikeasti online
     // ja valtuudet kunnossa: ======
     $kohdeoikeudet = Henkilo::hae_kayttajan_kohdeoikeudet($muutettavan_kokon_luojan_id, $omaid, Oliotyyppi::$KOKONAISUUS, $muutettavan_kokon_id, $this->get_tietokantaolio());
     /*====================================================================*/
     //======================================================================
     // Muokattava aolio:
     $muokattava = new Kokonaisuusolio($muutettavan_kokon_id, $this->get_tietokantaolio());
     if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) {
         if ($muokattava->olio_loytyi_tietokannasta) {
             $palauteolio->set_virhekoodi($virhekoodi);
             // Lisätään kokonaisuudelle saadut mahdollisesti muutettavat parametrit
             // (vain ne, joita ylipäätään voidaan muuttaa):
             $muokattava->set_arvo($otsikko_kokon, Kokonaisuusolio::$sarakenimi_otsikko);
             $muokattava->set_arvo($tiivis_kokon, Kokonaisuusolio::$sarakenimi_tiivis);
             $muokattava->set_arvo($selitys_kokon, Kokonaisuusolio::$sarakenimi_selitys);
             $muokattava->set_arvo($laajennetun_id_kokon, Kokonaisuusolio::$sarakenimi_laajennetun_id);
             $muokattava->set_arvo($ylakokonaisuuden_id_kokon, Kokonaisuusolio::$sarakenimi_ylakokonaisuuden_id);
             $muokattava->set_arvo($nakyvyys_kokon, Kokonaisuusolio::$sarakenimi_nakyvyys);
             // Tallennus tietokantaan:
             $palaute = $muokattava->tallenna_muutokset();
             // Jos tiedoissa on vikaa, esim. tyhjä otsikko:
             if ($palaute != Kokonaisuusolio::$OPERAATIO_ONNISTUI) {
                 $this->get_parametriolio()->set_ilmoitus_kokon($muokattava->tulosta_virheilmoitukset());
                 $this->lisaa_virheilmoitus($muokattava->tulosta_virheilmoitukset());
                 $this->toteuta_nayta_kokonaisuuslomake($palauteolio);
                 $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_YLEINEN);
                 $ilmoitus .= Tekstit::$ilm_kokon_muokkaustallennus_eiok;
             } else {
                 // Kaikki kunnossa.
                 $ilmoitus = " ";
                 /* Poistetaan kokonaisuuden lukitus: */
                 $lukon_tila = Kokonaisuusolio::$LUKITUS_OFF;
                 $lukituksen_avaus = $muokattava->aseta_kokonaisuuden_lukitus($parametriolio->get_omaid(), $lukon_tila);
                 /* Ilmoitus, ellei lukitus jostakin syystä onnistunut: */
                 if ($lukituksen_avaus != Kokonaisuusolio::$OPERAATIO_ONNISTUI) {
                     $ilmoitus .= " " . Tekstit::$virheilm_kokonaisuuden_lukituksen_avaus_eiok . $muokattava->tulosta_virheilmoitukset();
                     $virhekoodi = Palaute::$VIRHEKOODI_LUKITUS_KOKONAISUUDET;
                 } else {
                     $ilmoitus = Tekstit::$ilm_kokon_muokkaustallennus_ok;
                     //Aktiivisuusmerkintä:
                     $aktiivisuuspalaute = paivita_aktiivisuus($omaid, $this->get_tietokantaolio(), time(), Aktiivisuus::$KOKONAISUUDEN_MUUTOSTEN_TALLENNUS);
                     if (!$aktiivisuuspalaute) {
                         $this->lisaa_virheilmoitus(Tekstit::$virheilm_aktiivisuuden_tallennus_eiok);
                     } else {
                         $onnistuminen = Palaute::$VIRHEKOODI_KAIKKI_OK;
                     }
                 }
                 // Huom: täällä hämäävästi käyttöön tulee uusi palauteolio, jolloin
                 // esim aiemmat virhekoodin asetukset eivät voimassa.
                 if ($parametriolio->tallennuskesken) {
                     $parametriolio->uusi = false;
                     $this->toteuta_nayta_kokonaisuuslomake($palauteolio);
                 } else {
                     // Otetaan selville, tuleekö käyttäjä koosteesta vai
                     // kokonaisuuksista ja näytetään vastaava juttu:
                     $parametriolio = $this->get_parametriolio();
                     $elem_id = $parametriolio->elementti_id;
                     $elemryhma_id = $parametriolio->elemryhma_id;
                     // Tarkistetaan, mistä ollaan tulossa ja minne menossa:
                     $koostekontrolleri = new Koostekontrolleri($this->get_tietokantaolio(), $parametriolio);
                     if ($elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) {
                         $koostekontrolleri->toteuta_nayta_elementtiryhma($palauteolio);
                         $palauteolio->set_muokatun_id($elem_id);
                     } else {
                         if ($elem_id != Elementti::$MUUTTUJAA_EI_MAARITELTY) {
                             $koostekontrolleri->toteuta_nayta($palauteolio);
                             $palauteolio->set_muokatun_id($elem_id);
                         } else {
                             $this->toteuta_nayta($palauteolio);
                             $palauteolio->set_muokatun_id($muutettavan_kokon_id);
                         }
                     }
                 }
                 // Tämän pitää olla vasta täällä (ks. ylempi kommentti).
                 $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK);
                 // Lisätään mahdollinen lukitusvirhekoodi
                 if ($virhekoodi != Palaute::$VIRHEKOODI_KAIKKI_OK) {
                     $palauteolio->set_virhekoodi($virhekoodi);
                     $ilmoitus .= Tekstit::$ilm_kokon_muokkaustallennus_eiok . ": " . $virhekoodi;
                 }
             }
         } else {
             $this->lisaa_virheilmoitus(Tekstit::$ilm_kokon_ei_loytynyt);
         }
     } else {
         // Kun sessio loppunut tai muuten väärä muokkaaja:
         $this->lisaa_virheilmoitus(Tekstit::$virheilm_kokon_muok_ei_valtuuksia);
         $this->toteuta_nayta($palauteolio);
     }
     $palauteolio->set_ilmoitus($ilmoitus . "<br/>" . $this->tulosta_virheilmoitukset());
     return $palauteolio;
 }
 function testaa_toteuta_metodeita()
 {
     /*********** Testataan "toteuta"-kokonaisuustoiminnot tarkemmin  ************/
     $this->lisaa_lihava_kommentti("Testataan kaikki 'toteuta'-toiminnot, jotka liittyvät\n                    kokonaisuuksiin:");
     $tallennetun_id = Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY;
     if ($this->testihenkilo1 instanceof Henkilo) {
         $this->parametriolio->set_omaid($this->testihenkilo1->get_id());
     } else {
         $this->parametriolio->set_omaid(1);
         // Arvataan vain..
         $this->lisaa_kommentti("Testihenkiloa nro 1 ei loytynyt, omaid on 1," . " mikä voi onnistua tai sitten ei..");
     }
     $kokon2_id = Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY;
     $kokon3_id = Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY;
     $this->lisaa_lihava_kommentti("toteuta_uuden_kokon_tallennus:");
     // Järjestysluku on pantu -1:ksi, jotta korjauskin testataan. Asetetaan
     // nämä kokonaisuudet yllä luodun kokonaisuuden alle, jotta testausidea
     // toimii paremmin.
     if ($this->kokon1 instanceof Kokonaisuusolio) {
         //==========================
         $this->parametriolio->set_oppiaine_kokon(Oppiaineet::$FY);
         $this->parametriolio->set_otsikko_kokon("Kokon 1.1");
         $this->parametriolio->set_tiivis_kokon("Tämä on ihan uusi testitiivistelmä");
         $this->parametriolio->set_selitys_kokon(KokonTehtRatkTestaus::$testikokon_selitys);
         $this->parametriolio->set_taso_kokon(Koulutasot::$PERUSKOULU);
         $this->parametriolio->set_jarjestysnro_kokon(-1);
         $this->parametriolio->set_laajennetun_id_kokon(-1);
         $this->parametriolio->set_kieli_id(Kielet::$SUOMI);
         $this->parametriolio->set_ylakokonaisuuden_id_kokon($this->kokon1->get_id());
         $this->parametriolio->set_valtuudet(Valtuudet::$HALLINTA);
         //=========================
         $palauteolio = new Palaute();
         $this->kokonaisuuskontrolleri->toteuta_tallenna_uusi($palauteolio);
         if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
             $this->lisaa_virheilmoitus("Uuden kokon tallennus 1: VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus());
         } else {
             $this->lisaa_kommentti("Virheita ei havaittu!");
         }
         $kokon2_id = $palauteolio->get_muokatun_id();
         $tallennetun_id = $kokon2_id;
     } else {
         $this->lisaa_virheilmoitus("Virhe: kokon1 ei olio!");
     }
     /*============================= 2 ======================================*/
     if ($this->kokon1 instanceof Kokonaisuusolio) {
         $this->lisaa_kommentti("<b>Luodaan toinen uusi kokonaisuus\n                    (toteuta_uuden_kokon_tallennus):</b><br />");
         $this->parametriolio->set_otsikko_kokon("Ja taas uusi testikokonaisuus");
         $this->parametriolio->set_tiivis_kokon("Tämä on jotakin hassua!");
         $this->parametriolio->set_selitys_kokon(KokonTehtRatkTestaus::$testikokon_selitys);
         $this->kokonaisuuskontrolleri->toteuta_tallenna_uusi($palauteolio);
         if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
             $this->lisaa_virheilmoitus("Kohta 2: VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus());
         } else {
             $this->lisaa_kommentti("Virheita ei havaittu! Testikokonaisuudet:");
         }
         $kokon3_id = $palauteolio->get_muokatun_id();
         $this->lisaa_kommentti($this->nayta_testikokonaisuudet($tallennetun_id));
     } else {
         $this->lisaa_virheilmoitus("Virhe: kokon2 ei olio!");
     }
     /*=================================3===================================*/
     $this->lisaa_kommentti("<b>toteuta_korjaa_jarjestysnro:</b>");
     $this->kokonaisuuskontrolleri->toteuta_korjaa_jarjestysnro($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("Kohta 3: VIRHEKOODI (toteuta_korjaa_jarjestysnro)=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus());
     } else {
         $this->lisaa_kommentti("Virheita ei havaittu!");
     }
     /*=================================3===================================*/
     $this->lisaa_kommentti("<b>toteuta_nayta_selitys:</b><br />");
     $this->parametriolio->set_id_kokon($kokon2_id);
     $this->kokonaisuuskontrolleri->toteuta_nayta_selitys($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("VIRHEKOODI (toteuta_nayta_selitys)=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus());
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     /*=================================3===================================*/
     $this->lisaa_kommentti("<b>toteuta_sulje_selity:</b><br />");
     $this->kokonaisuuskontrolleri->toteuta_sulje_selitys($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("VIRHEKOODI (toteuta_sulje_selitys)=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus());
     } else {
         $this->lisaa_kommentti("Virheita ei havaittu!");
     }
     /*=================================3===================================*/
     $this->lisaa_kommentti("<b>toteuta_nayta_kokonaisuuslomake:</b><br />");
     $this->parametriolio->set_uusi(true);
     $this->kokonaisuuskontrolleri->toteuta_nayta_kokonaisuuslomake($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     /*=================================3===================================*/
     $this->lisaa_kommentti("<b>toteuta_peru_uuden_kokonaisuuden_tallennus:</b><br />");
     $this->kokonaisuuskontrolleri->toteuta_peru_uuden_kokonaisuuden_tallennus($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //$this->lisaa_kommentti($palauteolio->get_sisalto());
     /*=================================3===================================*/
     $this->lisaa_kommentti("<b>toteuta_nayta_kokonaisuuden_poistovarmistus:</b><br />");
     $this->kokonaisuuskontrolleri->toteuta_nayta_poistovarmistus($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //$this->lisaa_kommentti($palauteolio->get_sisalto());
     /*=================================3===================================*/
     $this->lisaa_kommentti("<b>toteuta_peru_kokonaisuuden_poisto:</b><br />");
     $this->kokonaisuuskontrolleri->toteuta_peru_kokonaisuuden_poisto($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     /*=================================3===================================*/
     // Luodaan poistettava kokonaisuus:
     $this->lisaa_kommentti("<b>Luodaan uusi kokonaisuus, joka sitten poistetaan:\n               :</b><br />");
     $this->parametriolio->set_otsikko_kokon("Poistettava testikokonaisuus");
     $this->parametriolio->set_tiivis_kokon("Puhdasta roskaa!");
     $this->kokonaisuuskontrolleri->toteuta_tallenna_uusi($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     $kokon4_id = $palauteolio->get_muokatun_id();
     /*=================================3===================================*/
     $this->lisaa_kommentti("<b>\$this->kokonaisuuskontrolleri->toteuta_kokon_poisto:</b><br />");
     $this->parametriolio->set_id_kokon($kokon4_id);
     $this->kokonaisuuskontrolleri->toteuta_poista($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //==========================================================================
     $this->lisaa_kommentti("<b>toteuta_nayta_kokonaisuuslomake (uusi kokon):</b><br />");
     $this->parametriolio->set_uusi(true);
     $this->kokonaisuuskontrolleri->toteuta_nayta_kokonaisuuslomake($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
         $this->lisaa_kommentti($palauteolio->get_sisalto());
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //=========================================================================
     // HUOM tämä suorittaa myös kokonaisuuden lukitsemisen muokkausta varten:
     $this->lisaa_kommentti("<b>toteuta_nayta_kokonaisuuslomake (muokkaus):</b>");
     $this->parametriolio->set_uusi(false);
     $this->kokonaisuuskontrolleri->toteuta_nayta_kokonaisuuslomake($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus());
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //=========================================================================
     $this->lisaa_kommentti("<b>toteuta_tallenna_kokonaisuuden_muokkaus:</b>");
     // Haetaan vanha selitys, jotta nähdään, muuttuuko:
     $kokon_alkup = new Kokonaisuusolio($tallennetun_id, $this->tietokantaolio);
     $tii_alkup = $kokon_alkup->getTiivis();
     $this->lisaa_kommentti("Tiivis alkup: " . $tii_alkup . ". Tarkoitus" . " on muuttaa muotoon 'Muutettu on tätä hieman!'");
     // Muutetaan vähän:
     $this->parametriolio->id_kokon = $tallennetun_id;
     $this->parametriolio->set_tiivis_kokon("Muutettu on tätä hieman!");
     $this->kokonaisuuskontrolleri->toteuta_tallenna_muokkaus($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("VIRHEKOODI (toteuta_tallenna_kokonaisuuden_muokkaus) =" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus());
         $this->lisaa_kommentti($this->nayta_testikokonaisuudet($tallennetun_id));
     } else {
         $this->lisaa_kommentti("Virheita ei havaittu!");
     }
     $kokon_muok = new Kokonaisuusolio($tallennetun_id, $this->tietokantaolio);
     $tii_muok = $kokon_muok->getTiivis();
     $this->lisaa_kommentti("Muokkauksen jälkeen tiivistelmä on seuraava: " . $tii_muok);
     //
     //=========================================================================§
     // Lukitaan kokonaisuus käsin muokkausta varten. Tämä tehdään oikeasti
     //lomakkeen näytön yhteydessä, mikä testattiin edellisessä kohdassa.
     $id_kokon = $this->parametriolio->get_id_kokon();
     $muokattava = new Kokonaisuusolio($id_kokon, $this->tietokantaolio);
     $lukon_tila = Kokonaisuusolio::$LUKITUS_ON;
     $lukitus = $muokattava->aseta_kokonaisuuden_lukitus($this->parametriolio->get_omaid(), $lukon_tila);
     //=========================================================================§
     $this->lisaa_kommentti("<b>toteuta_peru_kokon_muokkausten_tallennus:</b><br />");
     $this->kokonaisuuskontrolleri->toteuta_peru_kokon_muokkausten_tallennus($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("VIRHEKOODI (toteuta_peru_kokon_muokkausten_tallennus) =" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus());
         $this->lisaa_kommentti($this->nayta_testikokonaisuudet($tallennetun_id));
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //$this->lisaa_kommentti( $palauteolio->get_sisalto());
     //=========================================================================§
     $this->lisaa_kommentti("<b>toteuta_vaihda_kokonaisuuksien_jarjestys:</b><br />");
     $this->parametriolio->set_ed_id_kokon($kokon2_id);
     $this->parametriolio->set_id_kokon($kokon3_id);
     $this->kokonaisuuskontrolleri->toteuta_vaihda_kokonaisuuksien_jarjestys($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //=========================================================================§
     $this->lisaa_kommentti("<b>toteuta_nayta_kuvalomake_kokon_tiivistelma</b><br />");
     $this->kokonaisuuskontrolleri->toteuta_nayta_kuvalomake_kokon($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //$this->lisaa_kommentti( $palauteolio->get_sisalto());
     //=========================================================================§
     $this->lisaa_kommentti("<b>toteuta_nayta_kuvalomake_kokon_selitys:</b><br />");
     $this->kokonaisuuskontrolleri->toteuta_nayta_kuvalomake_kokon($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //$this->lisaa_kommentti( $palauteolio->get_sisalto());
     //=========================================================================§
     $this->lisaa_kommentti("<b>toteuta_nayta_kokonaisuudet:</b><br />");
     $this->kokonaisuuskontrolleri->toteuta_nayta($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //$this->lisaa_kommentti( $palauteolio->get_sisalto());
     //=========================================================================§
     $this->testaa_uloskirjaus();
     $this->lisaa_kommentti("<b>****************************TOTEUTA-METODIT LOPPU*********</b>");
 }