コード例 #1
0
 public function saveValues()
 {
     //if(count(WorkflowRecord::finder()->find("wfl_modul='idtm_struktur' AND wfl_id=? AND wfl_status=?",$this->STRcurrentID,$this->wfl_status->Text))==0){
     $WFRecord = new WorkflowRecord();
     $WFRecord->wfl_modul = "idtm_struktur";
     $WFRecord->wfl_id = $this->STRcurrentID;
     $WFRecord->wfl_status = $this->wfl_status->Text;
     $WFRecord->idtm_user = $this->User->GetUserId($this->User->Name);
     $WFRecord->idta_variante = $this->GLOBALVARIANTE;
     $WFRecord->idta_periode = $this->Periode;
     $WFRecord->save();
     //}
     $myDimKey = $this->build_DIMKEY($this->STRcurrentID);
     if ($this->SinglePeriode == 0 and count($this->Perioden) > 1) {
         $this->SaveButton->Text = "saved";
         $jahr = 0;
         $monat = 0;
         //hier werden jetzt die einzelnen Werte geladen
         foreach ($this->Perioden as $key => $value) {
             if (preg_match('/^\\d\\d\\d\\d/', $value)) {
                 $jahr = $key;
                 $monat = $key;
             } else {
                 $jahr = $this->getYearByMonth($key);
                 $monat = $key;
             }
             //jetzt laden wir die einzelnen Werte
             foreach ($this->FunktionsFelder as $funkID) {
                 $myUniquID = "RLIQ" . 'XXX' . $jahr . 'XXX' . $monat . 'XXX' . $this->piq_idta_struktur_type . 'XXX' . $funkID . 'XXX' . $this->STRcurrentID;
                 $NEWWerteRecord = WerteRecord::finder()->findBySql("SELECT * FROM tt_werte WHERE idtm_struktur = '" . $this->STRcurrentID . "' AND idta_feldfunktion = '" . $funkID . "' AND w_jahr = '" . $jahr . "' AND w_monat = '" . $monat . "' AND w_id_variante = '" . $this->GLOBALVARIANTE . "' LIMIT 1");
                 $NEWWerteRecord->w_wert = $this->page->ACTPanel->FindControl($myUniquID)->Text;
                 $NEWWerteRecord->w_id_variante = $this->GLOBALVARIANTE;
                 $NEWWerteRecord->w_dimkey = $myDimKey;
                 $NEWWerteRecord->save();
             }
         }
         foreach ($this->Perioden as $key => $value) {
             if (preg_match('/^\\d\\d\\d\\d/', $value)) {
                 //echo "Hier startet der Backcalculator";
                 $myRunner = new PFBackCalculator();
                 $myRunner->setVariante($this->GLOBALVARIANTE);
                 $myRunner->runStructureCollector($this->STRcurrentID, $key, $this->GLOBALVARIANTE);
             }
         }
     } else {
         foreach ($this->Perioden as $key => $value) {
             //hier laden wir die variablen, die wir benoetigen um die letzten Werte auszulesen
             if (preg_match('/^\\d\\d\\d\\d/', $value)) {
                 $jahr = $key;
                 $monat = $key;
             } else {
                 $jahr = $this->getYearByMonth($key);
                 $monat = $key;
             }
             //hier startet jetzt der Part, wo ich nur eine Periode habe -> entweder SubJahr oder Jahr...
             $PFBackCalculator = new PFBackCalculator();
             /* Folgende Parameter sind zur Berechnung der Werte notwendig...
              * @param idta_periode -> die interne Periodenbezeichnung -> 10001 für 1. Jahr oder 1 für 1 Monat (Bsp)
              * @param idtm_struktur -> die Struktur ID, auf der die Werte nachher gespreichert werden sollen
              * @param w_dimkey -> der Schlüssel, der angehängt werden soll...
              * @param assoc_array(feldbezug=>wert) -> array mit den Werten, die als "neu" betrachtet werden sollen...
              */
             $PFBackCalculator->setStartPeriod($monat);
             $PFBackCalculator->setStartNode($this->STRcurrentID);
             //vorbereiten des Wertearrays, damit die bestehenden Werte in der Datenbank, mit den neuen Uerberschrieben werden koennen
             //jetzt laden wir die einzelnen Werte
             foreach ($this->FunktionsFelder as $funkID) {
                 $myUniquID = "RLIQ" . 'XXX' . $jahr . 'XXX' . $monat . 'XXX' . $this->piq_idta_struktur_type . 'XXX' . $funkID . 'XXX' . $this->STRcurrentID;
                 $NEWWerteRecord = WerteRecord::finder()->findBySql("SELECT * FROM tt_werte WHERE idtm_struktur = '" . $this->STRcurrentID . "' AND idta_feldfunktion = '" . $funkID . "' AND w_jahr = '" . $jahr . "' AND w_monat = '" . $monat . "' AND w_id_variante = '" . $this->GLOBALVARIANTE . "' LIMIT 1");
                 if ($NEWWerteRecord->w_wert != $this->page->ACTPanel->FindControl($myUniquID)->Text) {
                     $w_wert[$funkID] = $this->page->ACTPanel->FindControl($myUniquID)->Text;
                 }
             }
             $PFBackCalculator->setNewValues($w_wert);
             $PFBackCalculator->setVariante($this->GLOBALVARIANTE);
             $PFBackCalculator->run();
             $this->SaveButton->Text = "saved";
         }
     }
 }
コード例 #2
0
 private function saveValues($options = "ALL")
 {
     $myDimKey = $this->build_DIMKEY($this->StartNode);
     $jahr = 0;
     $monat = 0;
     //hier werden jetzt die einzelnen Werte geladen
     foreach ($this->Perioden as $tmpPerioden) {
         if (preg_match('/^\\d\\d\\d\\d/', $tmpPerioden[1])) {
             $jahr = $tmpPerioden[0];
             $monat = $jahr;
         } else {
             $jahr = $this->getYearByMonth($tmpPerioden[0]);
             $monat = $tmpPerioden[0];
         }
         //jetzt laden wir die einzelnen Werte
         foreach ($this->FunktionsFelder as $funkID) {
             $myUniquID = $jahr . 'xxx' . $monat . 'xxx' . $funkID . 'xxx' . $this->StartNode;
             $NEWWerteRecord = WerteRecord::finder()->findBySql("SELECT * FROM tt_werte WHERE idtm_struktur = '" . $this->StartNode . "' AND idta_feldfunktion = '" . $funkID . "' AND w_jahr = '" . $jahr . "' AND w_monat = '" . $monat . "' AND w_id_variante = '" . $this->GLOBALVARIANTE . "' LIMIT 1");
             if (count($NEWWerteRecord) == 1) {
                 $NEWWerteRecord->w_wert = isset($this->TTWERTE[$myUniquID]) ? $this->TTWERTE[$myUniquID] : 0;
                 $NEWWerteRecord->w_id_variante = $this->GLOBALVARIANTE;
                 $NEWWerteRecord->w_dimkey = $myDimKey;
                 $NEWWerteRecord->save();
             } else {
                 $this->init_tt_werte($this->StartNode, $funkID, $jahr, $monat);
                 $NEWWerteRecord = WerteRecord::finder()->findBySql("SELECT * FROM tt_werte WHERE idtm_struktur = '" . $this->StartNode . "' AND idta_feldfunktion = '" . $funkID . "' AND w_jahr = '" . $jahr . "' AND w_monat = '" . $monat . "' AND w_id_variante = '" . $this->GLOBALVARIANTE . "' LIMIT 1");
                 $NEWWerteRecord->w_wert = isset($this->TTWERTE[$myUniquID]) ? $this->TTWERTE[$myUniquID] : 0;
                 $NEWWerteRecord->w_id_variante = $this->GLOBALVARIANTE;
                 $NEWWerteRecord->w_dimkey = $myDimKey;
                 $NEWWerteRecord->save();
             }
         }
         //echo "SAVER";
     }
     if ($options == "ALL") {
         foreach ($this->Perioden as $tmpPeriode) {
             if (preg_match('/^\\d\\d\\d\\d/', $tmpPeriode[0])) {
                 $myRunner = new PFBackCalculator();
                 $myRunner->GLOBALVARIANTE = $this->GLOBALVARIANTE;
                 $myRunner->runStructureCollector($this->StartNode, $tmpPeriode[0], $this->GLOBALVARIANTE);
             }
         }
     }
 }