Ejemplo n.º 1
0
 protected function _initParams(RM_Total_Object $object)
 {
     $params = array();
     $params['table_name'] = $object->tableName();
     $params['detail_level'] = $object->detailLevel()->getTableSuffix();
     $params['detail_level_id'] = $object->detailLevel()->getFieldNameWithId();
     $params['period'] = $object->period()->getTableSuffix();
     $params['category'] = $object->category()->categoryId();
     $params['datail_level_unique'] = $object->detailLevel()->uniqSequence();
     $params['datail_level_unique_names'] = $object->detailLevel()->uniqSequence(TRUE);
     $sumVariabes = $variables = array();
     foreach (M('ReportValue')->getCountableValuesList()->filter('disabled is null') as $item) {
         $sum = 'sum(' . $item->getVarname() . ')';
         $variables[] = $item->getVarname();
         $sumVariabes[] = $item->noAggregate() ? 'if(' . $object->detailLevel()->getFieldNameWithId() . '=0, NULL , ' . $sum . ')' : $sum;
     }
     if (!count($variables)) {
         $res = M('Base')->error('no_variable_choosed');
         throw new RM_Base_Exception_Result($res);
     }
     $params['param_names'] = join(',', $variables);
     $params['sum_params'] = join(',', $sumVariabes);
     return $params;
 }
Ejemplo n.º 2
0
 protected function _applyGroupsForData(RM_Total_Object $object)
 {
     M('Db')->setCurrentConnection('storage');
     $q = M('Db')->createQuery($object->tableName(), 'update');
     M('Db')->setCurrentConnection('default');
     $lastGroup = NULL;
     foreach ($object->other() as $id => $group) {
         if ($lastGroup != $group) {
             $detailLevel = $object->detailLevel();
             $q->set()->reset();
             do {
                 $obGroup = M('ReportGroup')->loadById($group);
                 $q->set($detailLevel->getFieldNameWithId(), $obGroup->reportId())->set($detailLevel->getFieldNameWithName(), $obGroup->name());
             } while (!isNull($detailLevel = $detailLevel->getUpperLevel()));
             $lastGroup = $group;
         }
         $q->where()->reset();
         $q->where($object->detailLevel()->getFieldNameWithId() . '=?', $id);
         $q->execute();
     }
 }