protected function makeSqlQueryForRowTotals()
 {
     $selectQueryAdapter = new RedBeanModelSelectQueryAdapter();
     $moduleClassName = $this->report->getModuleClassName();
     $modelClassName = $moduleClassName::getPrimaryModelName();
     $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter($modelClassName);
     $builder = new DisplayAttributesReportQueryBuilder($joinTablesAdapter, $selectQueryAdapter, $this->report->getCurrencyConversionType());
     $builder->makeQueryContent($this->getDisplayAttributesForGrandTotals());
     $where = $this->makeFiltersContent($joinTablesAdapter);
     $orderBy = null;
     $builder = new GroupBysReportQueryBuilder($joinTablesAdapter);
     $groupBy = $builder->makeQueryContent($this->getYAxisGroupBys());
     $offset = null;
     $limit = null;
     return SQLQueryUtil::makeQuery($modelClassName::getTableName($modelClassName), $selectQueryAdapter, $joinTablesAdapter, $offset, $limit, $where, $orderBy, $groupBy);
 }
 /**
  * @param RedBeanModelJoinTablesQueryAdapter $joinTablesAdapter
  * @return null|string
  */
 protected function makeGroupBysContent(RedBeanModelJoinTablesQueryAdapter $joinTablesAdapter)
 {
     $builder = new GroupBysReportQueryBuilder($joinTablesAdapter);
     return $builder->makeQueryContent($this->resolveGroupBys());
 }
 public function testHasManyForHasManyBelongsToOnCastedUpModel()
 {
     $q = DatabaseCompatibilityUtil::getQuote();
     $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('ReportModelTestItem9');
     $builder = new GroupBysReportQueryBuilder($joinTablesAdapter);
     $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem9', Report::TYPE_SUMMATION);
     $groupBy->attributeIndexOrDerivedType = 'reportModelTestItem9s___owner__User';
     $content = $builder->makeQueryContent(array($groupBy));
     $compareContent = "{$q}_user{$q}.{$q}id{$q}";
     $this->assertEquals($compareContent, $content);
     $leftTablesAndAliases = $joinTablesAdapter->getLeftTablesAndAliases();
     $fromTablesAndAliases = $joinTablesAdapter->getFromTablesAndAliases();
     $this->assertEquals(0, $joinTablesAdapter->getFromTableJoinCount());
     $this->assertEquals(3, $joinTablesAdapter->getLeftTableJoinCount());
     $this->assertEquals('reportmodeltestitem91', $leftTablesAndAliases[0]['tableAliasName']);
     $this->assertEquals('reportmodeltestitem9', $leftTablesAndAliases[0]['onTableAliasName']);
     $this->assertEquals('ownedsecurableitem', $leftTablesAndAliases[1]['tableAliasName']);
     $this->assertEquals('reportmodeltestitem91', $leftTablesAndAliases[1]['onTableAliasName']);
     $this->assertEquals('id', $leftTablesAndAliases[1]['tableJoinIdName']);
     $this->assertEquals('_user', $leftTablesAndAliases[2]['tableAliasName']);
     $this->assertEquals('ownedsecurableitem', $leftTablesAndAliases[2]['onTableAliasName']);
 }