public function SyncWithDimension($sender, $param)
 {
     $cleanmodul = '';
     $SQL = "SELECT * FROM " . $this->Tedsend_tabelle->Text . " WHERE parent_id" . $this->Tedsend_tabelle->Text . " = " . $this->Tedsend_id->Text;
     $cleanmodul = preg_replace("/(^t[a-z]\\_)/", "", $this->Tedsend_tabelle->Text);
     preg_match("/(_[a-z])/", $cleanmodul, $matches);
     if (count($matches) >= 1) {
         $cleanmodul = preg_replace("/(_[a-z])/", ucfirst(substr($matches[1], 1, 1)), $cleanmodul);
     }
     $finderclass = ucfirst($cleanmodul) . "Record";
     $AllRecordsToWrite = TActiveRecord::finder($finderclass)->findAllBySql($SQL);
     $fieldToTransfer = $this->Tedsend_field->Text;
     if (count($AllRecordsToWrite) > 0) {
         foreach ($AllRecordsToWrite as $SingleRecord) {
             $criteria = new TActiveRecordCriteria();
             $criteria->Condition = 'idta_stammdaten_group = :stammdaten_group AND stammdaten_key_extern = :key_extern';
             $criteria->Parameters[':stammdaten_group'] = $this->Tedidta_stammdaten_group->Text;
             $criteria->Parameters[':key_extern'] = $this->Tedsend_tabelle->Text . $SingleRecord->{'id' . $this->Tedsend_tabelle->Text};
             $RecordToChange = StammdatenRecord::finder()->find($criteria);
             if (count($RecordToChange) == 0) {
                 $RecordToChange = new StammdatenRecord();
             }
             $RecordToChange->idta_stammdaten_group = $this->Tedidta_stammdaten_group->Text;
             $RecordToChange->stammdaten_key_extern = $this->Tedsend_tabelle->Text . $SingleRecord->{'id' . $this->Tedsend_tabelle->Text};
             $RecordToChange->stammdaten_name = $SingleRecord->{$fieldToTransfer};
             $RecordToChange->save();
             unset($RecordToChange);
         }
     }
 }
Example #2
0
 public function onInit($param)
 {
     parent::onInit($param);
     //Globale definition f�r dieses Dokument
     $this->finder = StrukturRecord::finder();
     $this->MASTERRECORD = new StrukturRecord();
     if (!$this->isPostBack && !$this->isCallback) {
         switch ($this->Request['modus']) {
             case 0:
                 $sql = "SELECT idta_struktur_type, struktur_type_name FROM ta_struktur_type";
                 $data = PFH::convertdbObjectArray(StrukturTypeRecord::finder()->findAllBySql($sql), array("idta_struktur_type", "struktur_type_name"));
                 $this->idta_struktur_type->DataSource = $data;
                 $this->idta_struktur_type->dataBind();
                 $HRKEYTest = new PFHierarchyPullDown();
                 $HRKEYTest->setStructureTable("tm_struktur");
                 $HRKEYTest->setRecordClass(StrukturRecord::finder());
                 $HRKEYTest->setPKField("idtm_struktur");
                 $HRKEYTest->setField("struktur_name");
                 $HRKEYTest->letsrun();
                 $this->parent_idtm_struktur->DataSource = $HRKEYTest->myTree;
                 $this->parent_idtm_struktur->dataBind();
                 $this->idtm_stammdaten->DataSource = PFH::build_SQLPullDown(StammdatenRecord::finder(), "tm_stammdaten", array("idtm_stammdaten", "stammdaten_name"));
                 $this->idtm_stammdaten->dataBind();
                 break;
             case 1:
                 $sql = "SELECT idta_struktur_type, struktur_type_name FROM ta_struktur_type";
                 $data = PFH::convertdbObjectArray(StrukturTypeRecord::finder()->findAllBySql($sql), array("idta_struktur_type", "struktur_type_name"));
                 $this->edidta_struktur_type->DataSource = $data;
                 $this->edidta_struktur_type->dataBind();
                 if ($this->Request[$this->primarykey] != 1) {
                     $HRKEYTest = new PFHierarchyPullDown();
                     $HRKEYTest->setStructureTable("tm_struktur");
                     $HRKEYTest->setRecordClass(StrukturRecord::finder());
                     $HRKEYTest->setPKField("idtm_struktur");
                     $HRKEYTest->setField("struktur_name");
                     $HRKEYTest->letsrun();
                     $data = $HRKEYTest->myTree;
                 } else {
                     $data = array();
                     $data[0] = "START";
                 }
                 $this->edparent_idtm_struktur->DataSource = $data;
                 $this->edparent_idtm_struktur->dataBind();
                 $this->fillValues($this->getSelected($this->Request[$this->primarykey]));
                 $this->edidtm_stammdaten->DataSource = PFH::build_SQLPullDown(StammdatenRecord::finder(), "tm_stammdaten", array("idtm_stammdaten", "stammdaten_name"));
                 $this->edidtm_stammdaten->dataBind();
                 $Usersql = "SELECT idtm_user, user_name FROM tm_user";
                 $Userdata = PFH::convertdbObjectArray(UserRecord::finder()->findAllBySql($Usersql), array("idtm_user", "user_name"));
                 $this->idtm_user->DataSource = $Userdata;
                 $this->idtm_user->dataBind();
                 $this->loadBerechtigung();
                 break;
             default:
                 break;
         }
         $this->viewPanel->ActiveViewIndex = $this->Request['modus'];
         $this->StrukturStammdatenGroupContainer->RCedidtm_struktur->Text = $this->Request[$this->primarykey];
     }
 }
 public function onPreInit($param)
 {
     parent::onPreInit($param);
     $docname = "tempXML";
     $ext = "xml";
     $header = "application/xml";
     $doc = new TXmlDocument('1.0', 'ISO-8859-1');
     $doc->TagName = 'menu';
     $doc->setAttribute('id', "0");
     $QVFile = new TXmlElement('item');
     $QVFile->setAttribute('id', "new_Element");
     $QVFile->setAttribute('img', "plus5.gif");
     $QVFile->setAttribute('text', "new element");
     $StrukturElements = StrukturTypeRecord::finder()->findAll();
     foreach ($StrukturElements as $Strukturtype) {
         $ST = new TXmlElement('item');
         $ST->setAttribute('id', 'idta_struktur_type_' . $Strukturtype->idta_struktur_type);
         $ST->setAttribute('img', 's' . $Strukturtype->idta_struktur_type . ".gif");
         $ST->setAttribute('text', $Strukturtype->struktur_type_name);
         //hier muss die logik fuer die basiswerte aus den dimensionen hin...
         //hier hole ich mir die Dimensionsgruppen
         $fstsql = "SELECT stammdaten_group_name, (ta_stammdaten_group.idta_stammdaten_group) AS parent_idta_stammdaten_group FROM ta_stammdaten_group INNER JOIN tm_stammdaten ON tm_stammdaten.idta_stammdaten_group = ta_stammdaten_group.idta_stammdaten_group WHERE idta_struktur_type = " . $Strukturtype->idta_struktur_type . " GROUP BY stammdaten_group_name, parent_idta_stammdaten_group";
         $BaseGroupElements = StammdatenGroupRecord::finder()->findAllBySQL($fstsql);
         foreach ($BaseGroupElements as $BaseGroupElement) {
             $BGE = new TXmlElement('item');
             $BGE->setAttribute('id', 'idta_stammdaten_group_' . $BaseGroupElement->parent_idta_stammdaten_group);
             $BGE->setAttribute('img', 's' . $Strukturtype->idta_struktur_type . ".gif");
             $BGE->setAttribute('text', $BaseGroupElement->stammdaten_group_name);
             //zuerst hole ich alle Basiselement, die den aktuellen Strukturtypen haben
             $sql = "SELECT idtm_stammdaten,stammdaten_name, tm_stammdaten.idta_stammdaten_group FROM tm_stammdaten INNER JOIN ta_stammdaten_group ON tm_stammdaten.idta_stammdaten_group = ta_stammdaten_group.idta_stammdaten_group WHERE idta_struktur_type = " . $Strukturtype->idta_struktur_type . " AND ta_stammdaten_group.idta_stammdaten_group = " . $BaseGroupElement->parent_idta_stammdaten_group . " ORDER BY idta_stammdaten_group";
             $BaseElements = StammdatenRecord::finder()->findAllBySQL($sql);
             foreach ($BaseElements as $BaseElement) {
                 $BE = new TXmlElement('item');
                 $BE->setAttribute('id', 'idtm_stammdaten_' . $BaseElement->idtm_stammdaten);
                 $BE->setAttribute('img', 'str' . $Strukturtype->idta_struktur_type . ".gif");
                 $BE->setAttribute('text', $BaseElement->stammdaten_name);
                 $BGE->Elements[] = $BE;
             }
             $ST->Elements[] = $BGE;
         }
         $QVFile->Elements[] = $ST;
     }
     $doc->Elements[] = $QVFile;
     $CMdelete = new TXmlElement('item');
     $CMdelete->setAttribute('id', "delete_Element");
     $CMdelete->setAttribute('img', "minus.gif");
     $CMdelete->setAttribute('text', "delete element");
     $doc->Elements[] = $CMdelete;
     $docName = "temp";
     $this->getResponse()->appendHeader("Content-Type:" . $header);
     $this->getResponse()->appendHeader("Content-Disposition:inline;filename=" . $docName . '.' . $ext);
     $doc->saveToFile('php://output');
     exit;
 }
 public function onPreInit($param)
 {
     //error_reporting(E_ALL ^ E_NOTICE);
     $request_user = $_GET['user'];
     $request_password = $_GET['pass'];
     $authManager = $this->Application->getModule('auth');
     if (!$authManager->login($request_user, $request_password)) {
         exit;
     }
     $this->getResponse()->appendHeader("Content-Type:" . $this->header);
     echo '<?xml version="1.0" ?><tm_stammdaten>';
     $SQL = "SELECT * FROM tm_stammdaten";
     $Results = StammdatenRecord::finder()->findAllBySQL($SQL);
     foreach ($Results as $Result) {
         echo "<row idtm_stammdaten='" . $Result->idtm_stammdaten . "'>";
         echo "<stammdaten_name>" . $Result->stammdaten_name . "</stammdaten_name>";
         echo "<idta_stammdaten_group>" . $Result->idta_stammdaten_group . "</idta_stammdaten_group>";
         echo "</row>";
     }
     echo '</tm_stammdaten>';
     exit;
 }
 public function get_PivotChildren($Node)
 {
     $SQL = "SELECT * FROM tm_stammdaten WHERE idta_stammdaten_group = '" . $Node->idta_stammdaten_group . "'";
     $Result = count(StammdatenRecord::finder()->findAllBySQL($SQL));
     $SSQL = "SELECT * FROM tm_stammdaten WHERE ";
     $counter = 0;
     if ($Result >= 1) {
         foreach (StammdatenRecord::finder()->findAllBySQL($SQL) as $Results) {
             $counter == 0 ? $SSQL .= "idtm_stammdaten = '" . $Results->idtm_stammdaten . "'" : ($SSQL .= " OR idtm_stammdaten = '" . $Results->idtm_stammdaten . "'");
             $counter++;
         }
     } else {
         $SSQL .= "idtm_stammdaten = '0'";
     }
     return StammdatenRecord::finder()->findAllBySQL($SSQL);
 }
 public function buildStrukturBerichtZeilenPullDown()
 {
     $this->SBZedidta_feldfunktion->DataSource = PFH::build_SQLPullDown(FeldfunktionRecord::finder(), "ta_feldfunktion", array("idta_feldfunktion", "ff_name"));
     $this->SBZedidta_feldfunktion->DataBind();
     $this->SBZedidtm_stammdaten->DataSource = PFH::build_SQLPullDown(StammdatenRecord::finder(), "tm_stammdaten", array("idtm_stammdaten", "stammdaten_name"));
     $this->SBZedidtm_stammdaten->DataBind();
     $data = array('0' => "Liste", "1" => "Dimension", "3" => "Berechnung", "4" => "Graph");
     $this->SBZedsbz_type->DataSource = $data;
     $this->SBZedsbz_type->DataBind();
 }
Example #7
0
 public static function initStrukturLink()
 {
     //als erstes holen wir uns die Definitionen aus ta_stammdaten_link
     $StammdatenLinks = StammdatenLinkRecord::finder()->findAll();
     foreach ($StammdatenLinks as $StammdatenLink) {
         //als nächstes hole ich mit die Werte der Dimensionsgruppe in der gesucht werden soll, diese gilt dann als suchkriterium...
         $StammdatenGroups = StammdatenRecord::finder()->findAllByidta_stammdaten_group($StammdatenLink->idta_stammdaten_group);
         foreach ($StammdatenGroups as $StammdatenGroup) {
             //als nächstes muss ich in der Struktur suchen, welcher Bereich für die jeweiligen Kennungen gilt...
             $StrukturWechselKnoten = StrukturRecord::finder()->findByidtm_stammdaten($StammdatenGroup->idtm_stammdaten);
             if (is_object($StrukturWechselKnoten)) {
                 //da lft und rgt jetzt bekannt sind, kann ich mit dem folgenden SQL die entsprechenden Elemente fuer idtm_str_from und idtm_str_to finden
                 $SQL = "SELECT idtm_struktur FROM tm_struktur WHERE (struktur_lft BETWEEN " . $StrukturWechselKnoten->struktur_lft . " AND " . $StrukturWechselKnoten->struktur_rgt . ") AND idtm_stammdaten='" . $StammdatenLink->idtm_stammdaten_from . "'";
                 $idtm_struktur_from = StrukturRecord::finder()->findBySql($SQL)->idtm_struktur;
                 $SQL = "SELECT idtm_struktur FROM tm_struktur WHERE (struktur_lft BETWEEN " . $StrukturWechselKnoten->struktur_lft . " AND " . $StrukturWechselKnoten->struktur_rgt . ") AND idtm_stammdaten='" . $StammdatenLink->idtm_stammdaten_to . "'";
                 $idtm_struktur_to = StrukturRecord::finder()->findBySql($SQL)->idtm_struktur;
                 //jetzt haben wir alle informationen um den Datensatz zu schreiben
                 $TestRecord = StrukturStrukturRecord::finder()->count("idtm_struktur_from = ? AND idtm_struktur_to = ? AND idta_feldfunktion = ?", $idtm_struktur_from, $idtm_struktur_to, $StammdatenLink->idta_feldfunktion_from);
                 if ($TestRecord == 1) {
                     $ChangeRecord = StrukturStrukturRecord::finder()->find("idtm_struktur_from = ? AND idtm_struktur_to = ? AND idta_feldfunktion = ?", $idtm_struktur_from, $idtm_struktur_to, $StammdatenLink->idta_feldfunktion_from);
                 } else {
                     $ChangeRecord = new StrukturStrukturRecord();
                 }
                 $ChangeRecord->idtm_struktur_from = $idtm_struktur_from;
                 $ChangeRecord->idtm_struktur_to = $idtm_struktur_to;
                 $ChangeRecord->idta_feldfunktion = $StammdatenLink->idta_feldfunktion_from;
                 $ChangeRecord->save();
                 unset($TestRecord);
                 unset($ChangeRecord);
             }
         }
         unset($StammdatenGroups);
     }
 }
 public function RCDeleteButtonClicked($sender, $param)
 {
     $tempus = 'RCed' . $this->RCprimarykey;
     if ($this->RCedstammdaten_group_edit_status->Text == '1') {
         StammdatenRecord::finder()->deleteByidta_stammdaten_group($this->{$tempus}->Text);
         $StammdatenRecord = StammdatenRecord::finder()->findAllByidta_stammdaten_group($this->{$tempus}->Text);
         if (count($StammdatenRecord) >= 1) {
             foreach ($StammdatenRecord as $StammRecord) {
                 $TTStammdatenRecords = TTStammdatenRecord::finder()->findAllByidtm_stammdaten($StammRecord->idtm_stammdaten);
                 foreach ($TTStammdatenRecords as $TTStammdatenRecord) {
                     TTStammdatenRecord::finder()->delteByidtm_stammdaten($TTStammdatenRecord->idtt_stammdaten);
                 }
                 TTStammdatenStammdatenRecord::finder()->deleteByidtm_stammdaten_group($StammRecord->idtm_stammdaten);
             }
         }
         $RCEditRecord = StammdatenGroupRecord::finder()->findByPK($this->{$tempus}->Text);
         $RCEditRecord->delete();
     }
     $this->buildStammdatenGroupPullDown();
     $this->bindListStammdatenGroupValue();
 }
Example #9
0
 public function transferCSVFile($sender, $param)
 {
     //check ob dimension schon besteht
     if ($sender->Id == "CSVUploadFile") {
         $idta_stammdaten_group = StammdatenGroupRecord::finder()->findBy_parent_idta_stammdaten_group($this->dim_idta_stammdaten_group->Text)->idta_stammdaten_group;
     } else {
         $idta_stammdaten_group = StammdatenGroupRecord::finder()->findBy_idta_stammdaten_group($this->dim_idta_stammdaten_group->Text)->idta_stammdaten_group;
     }
     //laden des Wertearrays
     foreach ($this->ImportedValues as $row) {
         foreach ($row as $key => $value) {
             $MyCheckRecord = StammdatenRecord::finder()->findAll('stammdaten_name = ? AND idta_stammdaten_group = ?', $value, $idta_stammdaten_group);
             if (count($MyCheckRecord) == 0) {
                 $NewStammdatenRecord = new StammdatenRecord();
                 $NewStammdatenRecord->idta_stammdaten_group = $idta_stammdaten_group;
                 $NewStammdatenRecord->stammdaten_name = $value;
                 $NewStammdatenRecord->stammdaten_key_extern = $value;
                 $NewStammdatenRecord->save();
             }
         }
     }
     $this->linkStammdaten($sender, $param);
 }
 public function saveSplashingValue($sender, $param)
 {
     //holen der perioden
     $Taschenrechner = new PFCalculator();
     $Taschenrechner->setStartPeriod($this->DWH_idta_perioden->Text);
     $MyRecords = StammdatenRecord::finder()->findAllByidta_stammdaten_group($this->to_idta_stammdaten_group->Text);
     foreach ($Taschenrechner->Perioden as $Periode) {
         $PerMonat = $Periode[0];
         $PerJahr = $Taschenrechner->getYearByMonth($Periode[0]);
         foreach ($MyRecords as $StammdatenRC) {
             $TTWerteRecord = TTSplasherRecord::finder()->find('spl_jahr = ? AND spl_monat=? AND idta_variante = ? AND idta_feldfunktion = ? AND idtm_stammdaten = ? AND to_idtm_stammdaten = ?', $PerJahr, $PerMonat, $this->DWH_idta_variante->Text, $this->to_idta_feldfunktion->Text, $this->From_idtm_stammdaten->Text, $StammdatenRC->idtm_stammdaten);
             $UniqueID = 'xxx' . $PerJahr . 'xxx' . $PerMonat . 'xxx' . $this->From_idtm_stammdaten->Text . 'xxx' . $StammdatenRC->idtm_stammdaten;
             if (count($TTWerteRecord) == 1) {
                 $TTWerteRecord->spl_faktor = number_format($this->page->ACTPanel->FindControl($UniqueID)->Text, 2, '.', '');
                 $TTWerteRecord->save();
                 $this->RAMRecord[$UniqueID] = number_format($TTWerteRecord->spl_faktor, 2, '.', '');
             }
         }
     }
     $sender->Text = "saved";
 }
 public function createDimension($sender, $param)
 {
     $NewDimension = new StammdatenRecord();
     $NewDimension->idta_stammdaten_group = $this->idta_stammdaten_group->Text;
     $NewDimension->stammdaten_name = AutoMappingRecord::finder()->findByPK($sender->CommandParameter)->ti_label;
     $NewDimension->save();
     $this->bindListStammdatenValue();
 }
 public function bindList_StammdatenLink($sender, $param)
 {
     $idtm_stammdaten = $this->RCedidtm_stammdaten->Text;
     $this->RCedstammdatenlink_edit_status->Text = 0;
     $this->StammdatenLinkListe->DataSource = StammdatenLinkRecord::finder()->findAllByidtm_stammdaten_from($idtm_stammdaten);
     $this->StammdatenLinkListe->dataBind();
     $this->RCTDedidtm_stammdaten_from->Text = $idtm_stammdaten;
     $this->RCTDedidtm_stammdaten_from_label->Text = StammdatenRecord::finder()->findByidtm_stammdaten($idtm_stammdaten)->stammdaten_name;
 }
 public function create_StammdatenAll($sender, $param)
 {
     $StammdatenGroupRecord = StammdatenGroupRecord::finder()->findByidta_stammdaten_group($this->RCedidta_stammdaten_group->Text);
     $AllStammdatenRecord = StammdatenRecord::finder()->findAllByidta_stammdaten_group($this->RCedidta_stammdaten_group->Text);
     foreach ($AllStammdatenRecord as $SRecord) {
         $StammdatenRecord = StammdatenRecord::finder()->findByidtm_stammdaten($SRecord->idtm_stammdaten);
         if (count(StrukturRecord::finder()->find("idtm_stammdaten = ? AND parent_idtm_struktur = ?", $StammdatenRecord->idtm_stammdaten, $this->RCedidtm_struktur->Text)) < 1) {
             $StrukturRecord = new StrukturRecord();
             $StrukturRecord->idta_struktur_type = $StammdatenGroupRecord->idta_struktur_type;
             $StrukturRecord->idtm_stammdaten = $StammdatenRecord->idtm_stammdaten;
             $StrukturRecord->struktur_name = $StammdatenRecord->stammdaten_name;
             $StrukturRecord->parent_idtm_struktur = $this->RCedidtm_struktur->Text;
             $StrukturRecord->struktur_lft = 2;
             $StrukturRecord->struktur_rgt = 2;
             $StrukturRecord->save();
         }
     }
     $this->bindListStammdatenValue($this->RCedidta_stammdaten_group->Text);
 }
 private function calc_splasher($local_ff, $local_monat, $local_jahr, $local_id, $newValue)
 {
     //die eingabe erfolgt auf monatsebene
     //Holen der Stammdateninfo
     $StrukturWechselKnoten = StrukturRecord::finder()->findByPK($local_id);
     $StammdatenID = $StrukturWechselKnoten->idtm_stammdaten;
     //Ermitteln des Gesamtwertes der entsprechenden Verteilung
     $sql = "SELECT spl_monat, sum(spl_faktor) AS spl_faktor FROM tt_splasher WHERE idta_variante = '" . $this->GLOBALVARIANTE . "' AND idtm_stammdaten='" . $StammdatenID . "' AND spl_monat='" . $local_monat . "'";
     $Gesamtwert = TTSplasherRecord::finder()->findBySql($sql)->spl_faktor;
     //Ermitteln der Faktoren für die Verteilung, dabei holen wir auch die Zieldimension
     $sql = "SELECT to_idtm_stammdaten,spl_monat,idta_feldfunktion, sum(spl_faktor) AS spl_faktor FROM tt_splasher WHERE idta_variante = " . $this->GLOBALVARIANTE . " AND idtm_stammdaten=" . $StammdatenID . " AND spl_monat=" . $local_monat . " GROUP BY to_idtm_stammdaten,spl_monat,idta_feldfunktion";
     $Einzelwerte = TTSplasherRecord::finder()->findAllBySql($sql);
     //wenn wir einen treffer haben, koennen wir nach der standardverteilung arbeiten
     if (is_array($Einzelwerte) and $Gesamtwert != 0) {
         foreach ($Einzelwerte as $Einzelwert) {
             $sql = "SELECT idtm_struktur FROM tm_struktur WHERE idtm_stammdaten = '" . $Einzelwert->to_idtm_stammdaten . "'";
             $sql .= " AND (struktur_lft BETWEEN " . $StrukturWechselKnoten->struktur_lft . " AND " . $StrukturWechselKnoten->struktur_rgt . ")";
             $UpdateStrukturId = StrukturRecord::finder()->findBySQL($sql)->idtm_struktur;
             $Einzelfaktor = $Einzelwert->spl_faktor;
             $td_startvalue = $Einzelfaktor / $Gesamtwert * $newValue;
             //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($Einzelwert->spl_monat);
             $PFBackCalculator->setStartNode($UpdateStrukturId);
             //vorbereiten des Wertearrays, damit die bestehenden Werte in der Datenbank, mit den neuen Uerberschrieben werden koennen
             //jetzt laden wir die einzelnen Werte
             $w_wert[$Einzelwert->idta_feldfunktion] = $td_startvalue;
             $PFBackCalculator->setNewValues($w_wert);
             $PFBackCalculator->setVariante($this->GLOBALVARIANTE);
             $PFBackCalculator->run();
             unset($PFBackCalculator);
             unset($UpdateStrukturId);
         }
     } else {
         unset($EinzelWerte);
         //zuerst muss ich die Anzahl der Knoten ermitteln, die in der Zieldimensionsgruppe vorhanden sind...
         $idta_stammdaten_group = StammdatenRecord::finder()->findByPK($StammdatenID)->idta_stammdaten_group;
         $SplasherInfo = SplasherRecord::finder()->find('from_idta_stammdaten_group = ? AND from_idta_feldfunktion = ?', $idta_stammdaten_group, $local_ff);
         $to_idta_stammdaten_group = $SplasherInfo->to_idta_stammdaten_group;
         $to_idta_feldfunktion = $SplasherInfo->to_idta_feldfunktion;
         //hier ermitteln wir die anzahl der zielwerte
         $AnzahlZielWerte = StammdatenRecord::finder()->count('idta_stammdaten_group = ?', $to_idta_stammdaten_group);
         $sql = "SELECT idtm_stammdaten FROM tm_stammdaten WHERE idta_stammdaten_group = '" . $to_idta_stammdaten_group . "'";
         $Einzelwerte = StammdatenRecord::finder()->findAllBySql($sql);
         if (is_array($Einzelwerte)) {
             foreach ($Einzelwerte as $Einzelwert) {
                 $sql = "SELECT idtm_struktur FROM tm_struktur WHERE idtm_stammdaten = '" . $Einzelwert->idtm_stammdaten . "'";
                 $sql .= " AND (struktur_lft BETWEEN " . $StrukturWechselKnoten->struktur_lft . " AND " . $StrukturWechselKnoten->struktur_rgt . ")";
                 $UpdateStrukturId = StrukturRecord::finder()->findBySQL($sql)->idtm_struktur;
                 $Einzelfaktor = 1 / $AnzahlZielWerte;
                 $td_startvalue = $Einzelfaktor * $newValue;
                 //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($local_monat);
                 $PFBackCalculator->setStartNode($UpdateStrukturId);
                 //vorbereiten des Wertearrays, damit die bestehenden Werte in der Datenbank, mit den neuen Uerberschrieben werden koennen
                 //jetzt laden wir die einzelnen Werte
                 $w_wert[$to_idta_feldfunktion] = $td_startvalue;
                 $PFBackCalculator->setNewValues($w_wert);
                 $PFBackCalculator->setVariante($this->GLOBALVARIANTE);
                 $PFBackCalculator->run();
                 unset($PFBackCalculator);
                 unset($UpdateStrukturId);
             }
         }
     }
 }
 public function initPullDowns($sender, $param)
 {
     $this->idta_variante->DataSource = VarianteRecord::finder()->findAll();
     $this->idta_variante->dataBind();
     $this->idta_perioden->DataSource = PeriodenRecord::finder()->findAll();
     $this->idta_perioden->dataBind();
     $this->idta_feldfunktion->DataSource = FeldfunktionRecord::finder()->findAll();
     $this->idta_feldfunktion->dataBind();
     $this->cuf_numberformat->DataSource = array("0" => "Ganzzahl", "1" => "Prozent", "2" => "Zahl");
     $this->cuf_numberformat->dataBind();
     $criteria = new TActiveRecordCriteria();
     $criteria->OrdersBy['idta_stammdaten_group'] = 'desc';
     $this->idtm_stammdaten->DataSource = StammdatenRecord::finder()->findAll($criteria);
     $this->idtm_stammdaten->dataBind();
 }
 public function PFStrukturGenerator($OnlyNested = 0, $planungssicht = 1)
 {
     //als erstes suchen wir die ebenen der obersten ebene
     //das parent elment ist NULL
     if ($OnlyNested == 0) {
         $rootsql = "SELECT * FROM vv_stammdaten_group WHERE parent_idta_stammdaten_group = 0 AND stammdaten_group_original = 0 AND idta_stammdatensicht = " . $planungssicht . " AND sts_stammdaten_group_use = 1";
         $BaseGroupElements = StammdatenGroupView::finder()->findAllBySQL($rootsql);
         foreach ($BaseGroupElements as $RootElement) {
             $LevelOne = StammdatenRecord::finder()->findAllByidta_stammdaten_group($RootElement->idta_stammdaten_group);
             foreach ($LevelOne as $LOElement) {
                 //check, ob der knoten schon existiert, wenn ja, wird er automatisch umgeordnet
                 $new_parent_idtm_struktur = $this->ifNodeExists($LOElement->idtm_stammdaten, $LOElement->stammdaten_name, 0, $RootElement->idta_struktur_type, 1, $planungssicht);
                 //jetzt schauen wir, ob bei den Kindern Informationen aus der Zuordnung existieren...
                 $this->addChildElmenents($LOElement, $new_parent_idtm_struktur, $planungssicht);
             }
         }
     }
     $this->rebuild_NestedInformation(0, 1);
 }