private function build_difference_zwischenergebnisse($idta_struktur_bericht_zeilen, $label = "TTResult")
 {
     $tempResult = array();
     //the inital result-array, that is used for further calculations
     $ttResults = SBZCollectorRecord::finder()->findAllByidta_struktur_bericht_zeilen($idta_struktur_bericht_zeilen);
     if (count($ttResults) >= 2) {
         //this makes only sence, if we have more than one value...
         foreach ($ttResults as $tResult) {
             $myCalcField = StrukturBerichtZeilenRecord::finder()->findByPK($tResult->row_idta_struktur_bericht_zeilen);
             if (isset($this->zwischenergebnisse[$myCalcField->sbz_label])) {
                 $counter = count($this->zwischenergebnisse[$myCalcField->sbz_label]);
                 for ($ii = 0; $ii < $counter; $ii++) {
                     if (!isset($tempResult[$ii])) {
                         $tempResult[$ii] = 0;
                     }
                     $PreFaktor = 0;
                     $PreFaktor = isset($this->zwischenergebnisse[$myCalcField->sbz_label][$ii]) ? $this->zwischenergebnisse[$myCalcField->sbz_label][$ii] : 0;
                     switch ($tResult->sbz_collector_operator) {
                         case '+':
                             $tempResult[$ii] += $PreFaktor;
                             break;
                         case '-':
                             $tempResult[$ii] -= $PreFaktor;
                             break;
                         case '*':
                             $tempResult[$ii] *= $PreFaktor;
                             break;
                         case '/':
                             $tempResult[$ii] /= $PreFaktor;
                             break;
                         default:
                             $tempResult[$ii] = $PreFaktor;
                             break;
                     }
                 }
             }
         }
         $FirstRow = new TActiveTableRow();
         //after the calculation is done, we need to draw it
         $FirstRow->setID("R" . $this->sheetrow . "G");
         //new for grouping
         $this->resulttable->Rows[] = $FirstRow;
         $ControlListCell = array();
         //clean the children
         $cell = new TActiveTableCell();
         $cell->setID("R" . $this->sheetrow . "C1");
         $cell->Text = $label;
         $cell->EnableViewState = true;
         $ControlListCell[] = array("class" => "TActiveTableCell", "id" => "R" . $this->sheetrow . "C1", "OnCallback" => "", "CommandParameter" => "", "children" => "");
         $FirstRow->Cells[] = $cell;
         $counter = count($tempResult);
         for ($ii = 0; $ii < $counter; $ii++) {
             $cell = new TActiveTableCell();
             $cell->setID("R" . $this->sheetrow . "C" . ($ii + 2));
             $cell->Text = number_format($tempResult[$ii], 0, ',', '.');
             $cell->EnableViewState = true;
             $tempResult[$ii] < 0 ? $cell->setCssClass('negativecell') : '';
             $FirstRow->Cells[] = $cell;
             $ControlListCell[] = array("class" => "TActiveTableCell", "id" => "R" . $this->sheetrow . "C" . ($ii + 2), "OnCallback" => "", "CommandParameter" => "", "children" => "");
         }
         $FirstRow->setCssClass('calculated');
         $this->dynamicControlList[] = array("class" => "TActiveTableRow", "id" => "R" . $this->sheetrow . "G", "OnCallback" => "", "CommandParameter" => "", "children" => $ControlListCell);
         $this->zwischenergebnisse[$label] = $tempResult;
     }
     $this->sheetrow++;
     //now all cells are fixed, so i can count the row up
 }
 public function buildSBZCollectorPullDown()
 {
     $this->SBZCOLedrow_idta_struktur_bericht_zeilen->DataSource = PFH::build_SQLPullDown(StrukturBerichtZeilenRecord::finder(), "ta_struktur_bericht_zeilen", array("idta_struktur_bericht_zeilen", "sbz_label"), "idta_struktur_bericht = " . $this->SBedidta_struktur_bericht->Text);
     $this->SBZCOLedrow_idta_struktur_bericht_zeilen->DataBind();
     $data = array('+' => "+", "-" => "-", "/" => "/", "*" => "*");
     $this->SBZCOLedsbz_collector_operator->DataSource = $data;
     $this->SBZCOLedsbz_collector_operator->DataBind();
 }
 private function build_difference_zwischenergebnisse($idta_struktur_bericht_zeilen, $label = "TTResult")
 {
     $tempResult = array();
     //the inital result-array, that is used for further calculations
     $ttResults = SBZCollectorRecord::finder()->findAllByidta_struktur_bericht_zeilen($idta_struktur_bericht_zeilen);
     if (count($ttResults) >= 2) {
         //this makes only sence, if we have more than one value...
         foreach ($ttResults as $tResult) {
             $myCalcField = StrukturBerichtZeilenRecord::finder()->findByPK($tResult->row_idta_struktur_bericht_zeilen);
             if (isset($this->zwischenergebnisse[$myCalcField->sbz_label])) {
                 $counter = count($this->zwischenergebnisse[$myCalcField->sbz_label]);
                 for ($ii = 0; $ii < $counter; $ii++) {
                     if (!isset($tempResult[$ii])) {
                         $tempResult[$ii] = 0;
                     }
                     $PreFaktor = 0;
                     $PreFaktor = isset($this->zwischenergebnisse[$myCalcField->sbz_label][$ii]) ? $this->zwischenergebnisse[$myCalcField->sbz_label][$ii] : 0;
                     switch ($tResult->sbz_collector_operator) {
                         case '+':
                             $tempResult[$ii] += $PreFaktor;
                             break;
                         case '-':
                             $tempResult[$ii] -= $PreFaktor;
                             break;
                         case '*':
                             $tempResult[$ii] *= $PreFaktor;
                             break;
                         case '/':
                             $tempResult[$ii] /= $PreFaktor;
                             break;
                         default:
                             $tempResult[$ii] = $PreFaktor;
                             break;
                     }
                 }
             }
         }
         $local_column = $this->sheetleftgap;
         $local_cell = '';
         $local_cell = $this->ColumnArray[$local_column] . $this->sheetrow;
         $local_column++;
         $this->sheet->setCellValue($local_cell, $label);
         $this->sheet->getStyle($local_cell)->getNumberFormat()->setFormatCode("_-* #.##0_-;-* #.##0_-;_-* " - "_-;_-@_-");
         $this->workbook->getActiveSheet()->getStyle($local_cell)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
         $this->workbook->getActiveSheet()->getStyle($local_cell)->getFill()->getStartColor()->setRGB('898989');
         $this->workbook->getActiveSheet()->getStyle($local_cell)->getFont()->setSize(10);
         $this->workbook->getActiveSheet()->getStyle($local_cell)->getFont()->getColor()->setRGB('ffffff');
         $counter = count($tempResult);
         //$counter += $local_column; //hier kann es auch verkehrt sein... evtl minus eins
         for ($ii = 0; $ii < $counter; $ii++) {
             $local_cell = $this->ColumnArray[$local_column] . $this->sheetrow;
             $local_column++;
             $this->sheet->setCellValue($local_cell, number_format($tempResult[$ii], 0, '.', ''));
             $this->sheet->getStyle($local_cell)->getNumberFormat()->setFormatCode("_-* #.##0_-;-* #.##0_-;_-* " - "_-;_-@_-");
             $this->workbook->getActiveSheet()->getStyle($local_cell)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
             $tempResult[$ii] < 0 ? $this->workbook->getActiveSheet()->getStyle($local_cell)->getFill()->getStartColor()->setRGB('ff4444') : $this->workbook->getActiveSheet()->getStyle($local_cell)->getFill()->getStartColor()->setRGB('898989');
             $this->workbook->getActiveSheet()->getStyle($local_cell)->getFont()->setSize(10);
             $this->workbook->getActiveSheet()->getStyle($local_cell)->getFont()->getColor()->setRGB('ffffff');
         }
         //$FirstRow->setCssClass('calculated');
         $this->sheetrow++;
         $this->zwischenergebnisse[$label] = $tempResult;
     }
 }