Files
luos/workflow/engine/classes/class.report.php

856 lines
36 KiB
PHP
Raw Normal View History

2010-12-02 23:34:41 +00:00
<?php
2012-10-09 13:19:43 -04:00
2010-12-02 23:34:41 +00:00
/**
* class.report.php
2012-10-09 13:19:43 -04:00
*
2011-02-01 12:49:40 +00:00
* @package workflow.engine.ProcessMaker
2010-12-02 23:34:41 +00:00
*
* ProcessMaker Open Source Edition
2011-02-01 12:49:40 +00:00
* Copyright (C) 2004 - 2011 Colosa Inc.
2010-12-02 23:34:41 +00:00
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
2012-10-09 13:19:43 -04:00
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2010-12-02 23:34:41 +00:00
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
2012-10-09 13:19:43 -04:00
* along with this program. If not, see <http://www.gnu.org/licenses/>.
2010-12-02 23:34:41 +00:00
*
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*
*/
/**
* Report - Report class
2012-10-09 13:19:43 -04:00
*
2011-02-01 12:49:40 +00:00
* @package workflow.engine.ProcessMaker
2010-12-02 23:34:41 +00:00
* @author Everth S. Berrios Morales
* @copyright 2008 COLOSA
*/
2012-10-09 13:19:43 -04:00
class Report
{
/**
* This function does a sql statment to a report
*
*
* @name generatedReport1
*
* param
* @return object
*/
public function generatedReport1 ()
2010-12-02 23:34:41 +00:00
{
2012-10-09 13:19:43 -04:00
$this->reportsPatch();
require_once 'classes/model/AppDelegation.php';
require_once 'classes/model/Application.php';
$oCriteria = new Criteria( 'workflow' );
$oCriteria->addSelectColumn( AppDelegationPeer::PRO_UID );
2016-07-18 14:13:01 -04:00
$oCriteria->addSelectColumn(ProcessPeer::PRO_TITLE);
2012-10-09 13:19:43 -04:00
$oCriteria->addAsColumn( "MIN", "MIN(" . AppDelegationPeer::DEL_DURATION . ")" );
$oCriteria->addAsColumn( "MAX", "MAX(" . AppDelegationPeer::DEL_DURATION . ")" );
$oCriteria->addAsColumn( "TOTALDUR", "SUM(" . AppDelegationPeer::DEL_DURATION . ")" );
$oCriteria->addAsColumn( "PROMEDIO", "AVG(" . AppDelegationPeer::DEL_DURATION . ")" );
2016-07-18 14:13:01 -04:00
$oCriteria->addJoin(AppDelegationPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN);
2012-10-09 13:19:43 -04:00
$oCriteria->addGroupByColumn( AppDelegationPeer::PRO_UID );
2016-07-18 14:13:01 -04:00
$oCriteria->addGroupByColumn(ProcessPeer::PRO_TITLE);
2012-10-09 13:19:43 -04:00
$oDataset = AppDelegationPeer::doSelectRS( $oCriteria );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset->next();
$aProcess[] = array ('PRO_UID' => 'char','PRO_TITLE' => 'char','CANTCASES' => 'integer','MIN' => 'float','MAX' => 'float','TOTALDUR' => 'float','PROMEDIO' => 'float'
);
while ($aRow = $oDataset->getRow()) {
$oCriteria = new Criteria( 'workflow' );
$oCriteria->addSelectColumn( ApplicationPeer::PRO_UID );
$oCriteria->add( ApplicationPeer::PRO_UID, $aRow['PRO_UID'] );
$aProcess[] = array ('PRO_UID' => $aRow['PRO_UID'],'PRO_TITLE' => $aRow['PRO_TITLE'],'CANTCASES' => ApplicationPeer::doCount( $oCriteria ),'MIN' => number_format( $aRow['MIN'], 2 ),'MAX' => number_format( $aRow['MAX'], 2 ),'TOTALDUR' => number_format( $aRow['TOTALDUR'], 2 ),'PROMEDIO' => number_format( $aRow['PROMEDIO'], 2 )
);
$oDataset->next();
}
global $_DBArray;
$_DBArray['reports'] = $aProcess;
$_SESSION['_DBArray'] = $_DBArray;
$oCriteria = new Criteria( 'dbarray' );
$oCriteria->setDBArrayTable( 'reports' );
return $oCriteria;
}
2010-12-02 23:34:41 +00:00
2012-10-09 13:19:43 -04:00
/**
* This function does a sql statment to a report wiht a condition
* or maybe when you're looking for some specials cases
*
* @name generatedReport1_filter
*
* @param string $from
* @param string $to
* @param string $startedby
* @return object
*/
public function generatedReport1_filter ($from, $to, $startedby)
{
$this->reportsPatch();
require_once 'classes/model/AppDelegation.php';
require_once 'classes/model/Application.php';
require_once 'classes/model/Users.php';
$oCriteria = new Criteria( 'workflow' );
$del = DBAdapter::getStringDelimiter();
$oCriteria->addSelectColumn( UsersPeer::USR_UID );
$oCriteria->addSelectColumn( AppDelegationPeer::PRO_UID );
2016-07-18 14:13:01 -04:00
$oCriteria->addSelectColumn(ProcessPeer::PRO_TITLE);
2012-10-09 13:19:43 -04:00
$oCriteria->addAsColumn( "MIN", "MIN(" . AppDelegationPeer::DEL_DURATION . ")" );
$oCriteria->addAsColumn( "MAX", "MAX(" . AppDelegationPeer::DEL_DURATION . ")" );
$oCriteria->addAsColumn( "TOTALDUR", "SUM(" . AppDelegationPeer::DEL_DURATION . ")" );
$oCriteria->addAsColumn( "PROMEDIO", "AVG(" . AppDelegationPeer::DEL_DURATION . ")" );
2016-07-18 14:13:01 -04:00
$oCriteria->addJoin (AppDelegationPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN);
2012-10-09 13:19:43 -04:00
$oCriteria->addJoin( AppDelegationPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN );
//$oCriteria->add(AppDelegationPeer::DEL_DURATION, $from, Criteria::GREATER_EQUAL);
//$oCriteria->add(AppDelegationPeer::DEL_DURATION, $to, Criteria::LESS_EQUAL);
//$aAux1 = explode('-', $from); date('Y-m-d H:i:s', mktime(0, 0, 0, $aAux1[1], $aAux1[2], $aAux1[0]))
$oCriteria->add( $oCriteria->getNewCriterion( AppDelegationPeer::DEL_INIT_DATE, $from . ' 00:00:00', Criteria::GREATER_EQUAL )->addAnd( $oCriteria->getNewCriterion( AppDelegationPeer::DEL_INIT_DATE, $to . ' 23:59:59', Criteria::LESS_EQUAL ) ) );
if ($startedby != '') {
2012-10-09 13:19:43 -04:00
$oCriteria->add( ApplicationPeer::APP_INIT_USER, $startedby );
}
2012-10-09 13:19:43 -04:00
$oCriteria->addGroupByColumn( AppDelegationPeer::PRO_UID );
2016-07-18 14:13:01 -04:00
$oCriteria->addGroupByColumn(ProcessPeer::PRO_TITLE);
2012-10-09 13:19:43 -04:00
$oDataset = AppDelegationPeer::doSelectRS( $oCriteria );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
2010-12-02 23:34:41 +00:00
$oDataset->next();
2012-10-09 13:19:43 -04:00
$aProcess[] = array ('PRO_UID' => 'char','PRO_TITLE' => 'char','CANTCASES' => 'integer','MIN' => 'float','MAX' => 'float','TOTALDUR' => 'float','PROMEDIO' => 'float'
);
while ($aRow = $oDataset->getRow()) {
$oCriteria = new Criteria( 'workflow' );
$oCriteria->addSelectColumn( ApplicationPeer::PRO_UID );
$oCriteria->add( ApplicationPeer::PRO_UID, $aRow['PRO_UID'] );
if ($startedby != '') {
2012-10-09 13:19:43 -04:00
$oCriteria->add( ApplicationPeer::APP_INIT_USER, $startedby );
}
2012-10-09 13:19:43 -04:00
$aProcess[] = array ('PRO_UID' => $aRow['PRO_UID'],'PRO_TITLE' => $aRow['PRO_TITLE'],'CANTCASES' => ApplicationPeer::doCount( $oCriteria ),'MIN' => number_format( $aRow['MIN'], 2 ),'MAX' => number_format( $aRow['MAX'], 2 ),'TOTALDUR' => number_format( $aRow['TOTALDUR'], 2 ),'PROMEDIO' => number_format( $aRow['PROMEDIO'], 2 ));
2012-10-09 13:19:43 -04:00
$oDataset->next();
}
global $_DBArray;
$_DBArray['reports'] = $aProcess;
$_SESSION['_DBArray'] = $_DBArray;
$oCriteria = new Criteria( 'dbarray' );
$oCriteria->setDBArrayTable( 'reports' );
return $oCriteria;
}
/**
* This function gets info about a report
*
*
* @name descriptionReport1
*
* @param string $PRO_UID
* @return object
*/
public function descriptionReport1 ($PRO_UID)
{
$this->reportsPatch();
require_once 'classes/model/AppDelegation.php';
require_once 'classes/model/Task.php';
require_once 'classes/model/Content.php';
$oCriteria = new Criteria( 'workflow' );
$del = DBAdapter::getStringDelimiter();
$oCriteria->addSelectColumn( AppDelegationPeer::PRO_UID );
$oCriteria->addSelectColumn( TaskPeer::TAS_TITLE );
2012-10-09 13:19:43 -04:00
$oCriteria->addAsColumn( "MIN", "MIN(" . AppDelegationPeer::DEL_DURATION . ")" );
$oCriteria->addAsColumn( "MAX", "MAX(" . AppDelegationPeer::DEL_DURATION . ")" );
$oCriteria->addAsColumn( "TOTALDUR", "SUM(" . AppDelegationPeer::DEL_DURATION . ")" );
$oCriteria->addAsColumn( "PROMEDIO", "AVG(" . AppDelegationPeer::DEL_DURATION . ")" );
$oCriteria->addJoin( AppDelegationPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN );
$oCriteria->add( AppDelegationPeer::PRO_UID, $PRO_UID );
$oCriteria->addGroupByColumn( AppDelegationPeer::PRO_UID );
$oCriteria->addGroupByColumn( TaskPeer::TAS_TITLE );
2012-10-09 13:19:43 -04:00
$oDataset = AppDelegationPeer::doSelectRS( $oCriteria );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
2010-12-02 23:34:41 +00:00
$oDataset->next();
2012-10-09 13:19:43 -04:00
$aProcess[] = array ('TAS_TITLE' => 'char','MIN' => 'float','MAX' => 'float','TOTALDUR' => 'float','PROMEDIO' => 'float'
);
while ($aRow = $oDataset->getRow()) {
$aProcess[] = array ('TAS_TITLE' => $aRow['TAS_TITLE'],'MIN' => number_format( $aRow['MIN'], 2 ),'MAX' => number_format( $aRow['MAX'], 2 ),'TOTALDUR' => number_format( $aRow['TOTALDUR'], 2 ),'PROMEDIO' => number_format( $aRow['PROMEDIO'], 2 )
);
$oDataset->next();
}
global $_DBArray;
$_DBArray['reports'] = $aProcess;
$_SESSION['_DBArray'] = $_DBArray;
$oCriteria = new Criteria( 'dbarray' );
$oCriteria->setDBArrayTable( 'reports' );
return $oCriteria;
}
/**
* This function generates a other kind of report
*
*
* @name generatedReport2
*
* param
* @return object
*/
public function generatedReport2 ()
{
$this->reportsPatch();
require_once 'classes/model/AppDelegation.php';
require_once 'classes/model/Application.php';
$oCriteria = new Criteria( 'workflow' );
$del = DBAdapter::getStringDelimiter();
$oCriteria->addSelectColumn( AppDelegationPeer::PRO_UID );
2016-07-18 14:13:01 -04:00
$oCriteria->addSelectColumn(ProcessPeer::PRO_TITLE);
2012-10-09 13:19:43 -04:00
$oCriteria->addAsColumn( "MIN", "MIN(" . AppDelegationPeer::DEL_DURATION . ")" );
$oCriteria->addAsColumn( "MAX", "MAX(" . AppDelegationPeer::DEL_DURATION . ")" );
2016-07-18 14:13:01 -04:00
$oCriteria->addJoin (AppDelegationPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN);
2012-10-09 13:19:43 -04:00
$oCriteria->addGroupByColumn( AppDelegationPeer::PRO_UID );
$oDataset = AppDelegationPeer::doSelectRS( $oCriteria );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
2010-12-02 23:34:41 +00:00
$oDataset->next();
2012-10-09 13:19:43 -04:00
$month = date( 'Y-m-d', mktime( 0, 0, 0, date( "m" ) - 1, date( "d" ), date( "Y" ) ) );
$lastmonth = date( 'Y-m-d', mktime( 0, 0, 0, date( "m" ) - 2, date( "d" ), date( "Y" ) ) );
$day = mktime( 0, 0, 0, date( "m" ), date( "d" ) - 1, date( "Y" ) );
$lastday = mktime( 0, 0, 0, date( "m" ), date( "d" ) - 2, date( "Y" ) );
$aProcess[] = array ('PRO_UID' => 'char','PRO_TITLE' => 'char','CANTCASES' => 'integer','MIN' => 'float','MAX' => 'float','CASELASTMONTH' => 'integer','CASELASTDAY' => 'integer'
);
while ($aRow = $oDataset->getRow()) {
$oCriteria2 = new Criteria( 'workflow' );
$oCriteria2->addSelectColumn( ApplicationPeer::PRO_UID );
$oCriteria2->addAsColumn( "CANTCASES", "COUNT(*)" );
$oCriteria2->add( ApplicationPeer::PRO_UID, $aRow['PRO_UID'] );
$oCriteria2->addGroupByColumn( ApplicationPeer::PRO_UID );
$oDataset2 = AppDelegationPeer::doSelectRS( $oCriteria2 );
$oDataset2->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset2->next();
$aRow2 = $oDataset2->getRow();
$cant = $aRow2['CANTCASES'];
$oCriteria2 = new Criteria( 'workflow' );
$oCriteria2->addSelectColumn( ApplicationPeer::PRO_UID );
$oCriteria2->addAsColumn( "CANTCASES", "COUNT(*)" );
$oCriteria2->add( ApplicationPeer::PRO_UID, $aRow['PRO_UID'] );
$oCriteria2->add( ApplicationPeer::APP_INIT_DATE, $lastmonth, Criteria::GREATER_EQUAL );
$oCriteria2->add( ApplicationPeer::APP_INIT_DATE, $month, Criteria::LESS_EQUAL );
$oCriteria2->addGroupByColumn( ApplicationPeer::PRO_UID );
$oDataset2 = AppDelegationPeer::doSelectRS( $oCriteria2 );
$oDataset2->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset2->next();
$aRow2 = $oDataset2->getRow();
$cant1 = $aRow2['CANTCASES'];
$oCriteria2 = new Criteria( 'workflow' );
$oCriteria2->addSelectColumn( ApplicationPeer::PRO_UID );
$oCriteria2->addAsColumn( "CANTCASES", "COUNT(*)" );
$oCriteria2->add( ApplicationPeer::PRO_UID, $aRow['PRO_UID'] );
$oCriteria2->add( ApplicationPeer::APP_INIT_DATE, $lastday, Criteria::GREATER_EQUAL );
$oCriteria2->add( ApplicationPeer::APP_INIT_DATE, $day, Criteria::LESS_EQUAL );
$oCriteria2->addGroupByColumn( ApplicationPeer::PRO_UID );
$oDataset2 = AppDelegationPeer::doSelectRS( $oCriteria2 );
$oDataset2->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset2->next();
$aRow2 = $oDataset2->getRow();
$cant2 = $aRow2['CANTCASES'];
$aProcess[] = array ('PRO_UID' => $aRow['PRO_UID'],'PRO_TITLE' => $aRow['PRO_TITLE'],'CANTCASES' => $cant,'MIN' => number_format( $aRow['MIN'], 2 ),'MAX' => number_format( $aRow['MAX'], 2 ),'CASELASTMONTH' => number_format( $cant1, 2 ),'CASELASTDAY' => number_format( $cant2, 2 )
);
$oDataset->next();
}
global $_DBArray;
$_DBArray['reports'] = $aProcess;
$_SESSION['_DBArray'] = $_DBArray;
$oCriteria = new Criteria( 'dbarray' );
$oCriteria->setDBArrayTable( 'reports' );
return $oCriteria;
}
/**
* This function generates the description about a report
*
*
* @name reports_Description_filter
*
* @param string $from
* @param string $to
* @param string $startedby
* @param string $PRO_UID
* @return object
*/
public function reports_Description_filter ($from, $to, $startedby, $PRO_UID)
{
$this->reportsPatch();
require_once 'classes/model/AppDelegation.php';
require_once 'classes/model/Task.php';
require_once 'classes/model/Content.php';
require_once 'classes/model/Users.php';
$oCriteria = new Criteria( 'workflow' );
$del = DBAdapter::getStringDelimiter();
$oCriteria->addSelectColumn( AppDelegationPeer::PRO_UID );
$oCriteria->addSelectColumn( TaskPeer::TAS_TITLE );
2012-10-09 13:19:43 -04:00
$oCriteria->addAsColumn( "MIN", "MIN(" . AppDelegationPeer::DEL_DURATION . ")" );
$oCriteria->addAsColumn( "MAX", "MAX(" . AppDelegationPeer::DEL_DURATION . ")" );
$oCriteria->addAsColumn( "TOTALDUR", "SUM(" . AppDelegationPeer::DEL_DURATION . ")" );
$oCriteria->addAsColumn( "PROMEDIO", "AVG(" . AppDelegationPeer::DEL_DURATION . ")" );
$oCriteria->addJoin( AppDelegationPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN );
$oCriteria->add( $oCriteria->getNewCriterion( AppDelegationPeer::DEL_INIT_DATE, $from . ' 00:00:00', Criteria::GREATER_EQUAL )->addAnd( $oCriteria->getNewCriterion( AppDelegationPeer::DEL_INIT_DATE, $to . ' 23:59:59', Criteria::LESS_EQUAL ) ) );
if ($startedby != '') {
2012-10-09 13:19:43 -04:00
$oCriteria->add( AppDelegationPeer::USR_UID, $startedby );
}
2012-10-09 13:19:43 -04:00
$oCriteria->add( AppDelegationPeer::PRO_UID, $PRO_UID );
$oCriteria->addGroupByColumn( AppDelegationPeer::PRO_UID );
$oCriteria->addGroupByColumn( TaskPeer::TAS_TITLE );
2012-10-09 13:19:43 -04:00
return $oCriteria;
}
/**
* This function looks for an special case it has a condition
*
*
* @name generatedReport2_filter
*
* @param string $from
* @param string $to
* @param string $startedby
* @return object
*/
public function generatedReport2_filter ($from, $to, $startedby)
{
$this->reportsPatch();
require_once 'classes/model/AppDelegation.php';
require_once 'classes/model/Application.php';
require_once 'classes/model/Users.php';
$oCriteria = new Criteria( 'workflow' );
$del = DBAdapter::getStringDelimiter();
$oCriteria->addSelectColumn( AppDelegationPeer::PRO_UID );
2016-07-18 14:13:01 -04:00
$oCriteria->addSelectColumn(ProcessPeer::PRO_TITLE);
2012-10-09 13:19:43 -04:00
$oCriteria->addAsColumn( "MIN", "MIN(" . AppDelegationPeer::DEL_DURATION . ")" );
$oCriteria->addAsColumn( "MAX", "MAX(" . AppDelegationPeer::DEL_DURATION . ")" );
2016-07-18 14:13:01 -04:00
$oCriteria->addJoin(AppDelegationPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN);
2012-10-09 13:19:43 -04:00
$oCriteria->addGroupByColumn( AppDelegationPeer::PRO_UID );
2016-07-18 14:13:01 -04:00
$oCriteria->addGroupByColumn(ProcessPeer::PRO_TITLE);
2012-10-09 13:19:43 -04:00
$oCriteria->add( $oCriteria->getNewCriterion( AppDelegationPeer::DEL_INIT_DATE, $from . ' 00:00:00', Criteria::GREATER_EQUAL )->addAnd( $oCriteria->getNewCriterion( AppDelegationPeer::DEL_INIT_DATE, $to . ' 23:59:59', Criteria::LESS_EQUAL ) ) );
if ($startedby != '') {
2012-10-09 13:19:43 -04:00
$oCriteria->add( AppDelegationPeer::USR_UID, $startedby );
}
2012-10-09 13:19:43 -04:00
$oDataset = AppDelegationPeer::doSelectRS( $oCriteria );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
2010-12-02 23:34:41 +00:00
$oDataset->next();
2012-10-09 13:19:43 -04:00
$month = date( 'Y-m-d', mktime( 0, 0, 0, date( "m" ) - 1, date( "d" ), date( "Y" ) ) );
$lastmonth = date( 'Y-m-d', mktime( 0, 0, 0, date( "m" ) - 2, date( "d" ), date( "Y" ) ) );
$day = mktime( 0, 0, 0, date( "m" ), date( "d" ) - 1, date( "Y" ) );
$lastday = mktime( 0, 0, 0, date( "m" ), date( "d" ) - 2, date( "Y" ) );
$aProcess[] = array ('PRO_UID' => 'char','PRO_TITLE' => 'char','CANTCASES' => 'integer','MIN' => 'float','MAX' => 'float','CASELASTMONTH' => 'integer','CASELASTDAY' => 'integer');
2012-10-09 13:19:43 -04:00
while ($aRow = $oDataset->getRow()) {
$oCriteria2 = new Criteria( 'workflow' );
$oCriteria2->addSelectColumn( ApplicationPeer::PRO_UID );
$oCriteria2->addAsColumn( "CANTCASES", "COUNT(*)" );
$oCriteria2->add( ApplicationPeer::PRO_UID, $aRow['PRO_UID'] );
if ($startedby != '') {
2012-10-09 13:19:43 -04:00
$oCriteria2->add( ApplicationPeer::APP_INIT_USER, $startedby );
}
2012-10-09 13:19:43 -04:00
$oCriteria2->addGroupByColumn( ApplicationPeer::PRO_UID );
$oDataset2 = AppDelegationPeer::doSelectRS( $oCriteria2 );
$oDataset2->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset2->next();
$aRow2 = $oDataset2->getRow();
$cant = $aRow2['CANTCASES'];
$oCriteria2 = new Criteria( 'workflow' );
$oCriteria2->addSelectColumn( ApplicationPeer::PRO_UID );
$oCriteria2->addAsColumn( "CANTCASES", "COUNT(*)" );
$oCriteria2->add( ApplicationPeer::PRO_UID, $aRow['PRO_UID'] );
$oCriteria2->add( ApplicationPeer::APP_INIT_DATE, $lastmonth, Criteria::GREATER_EQUAL );
$oCriteria2->add( ApplicationPeer::APP_INIT_DATE, $month, Criteria::LESS_EQUAL );
if ($startedby != '') {
2012-10-09 13:19:43 -04:00
$oCriteria2->add( ApplicationPeer::APP_INIT_USER, $startedby );
}
2012-10-09 13:19:43 -04:00
$oCriteria2->addGroupByColumn( ApplicationPeer::PRO_UID );
$oDataset2 = AppDelegationPeer::doSelectRS( $oCriteria2 );
$oDataset2->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset2->next();
$aRow2 = $oDataset2->getRow();
$cant1 = $aRow2['CANTCASES'];
$oCriteria2 = new Criteria( 'workflow' );
$oCriteria2->addSelectColumn( ApplicationPeer::PRO_UID );
$oCriteria2->addAsColumn( "CANTCASES", "COUNT(*)" );
$oCriteria2->add( ApplicationPeer::PRO_UID, $aRow['PRO_UID'] );
$oCriteria2->add( ApplicationPeer::APP_INIT_DATE, $lastday, Criteria::GREATER_EQUAL );
$oCriteria2->add( ApplicationPeer::APP_INIT_DATE, $day, Criteria::LESS_EQUAL );
if ($startedby != '') {
2012-10-09 13:19:43 -04:00
$oCriteria2->add( ApplicationPeer::APP_INIT_USER, $startedby );
}
2012-10-09 13:19:43 -04:00
$oCriteria2->addGroupByColumn( ApplicationPeer::PRO_UID );
$oDataset2 = AppDelegationPeer::doSelectRS( $oCriteria2 );
$oDataset2->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset2->next();
$aRow2 = $oDataset2->getRow();
$cant2 = $aRow2['CANTCASES'];
/*$aProcess[] = array('PRO_UID' => $aRow['PRO_UID'],
2010-12-02 23:34:41 +00:00
'PRO_TITLE' => $aRow['PRO_TITLE'],
'CANTCASES' => $cant,
'CASELASTMONTH' => $cant1,
'CASELASTDAY' => $cant2
);*/
$aProcess[] = array ('PRO_UID' => $aRow['PRO_UID'],'PRO_TITLE' => $aRow['PRO_TITLE'],'CANTCASES' => $cant,'MIN' => number_format( $aRow['MIN'], 2 ),'MAX' => number_format( $aRow['MAX'], 2 ),'CASELASTMONTH' => number_format( $cant1, 2 ),'CASELASTDAY' => number_format( $cant2, 2 ));
2012-10-09 13:19:43 -04:00
$oDataset->next();
}
global $_DBArray;
$_DBArray['reports'] = $aProcess;
$_SESSION['_DBArray'] = $_DBArray;
$oCriteria = new Criteria( 'dbarray' );
$oCriteria->setDBArrayTable( 'reports' );
return $oCriteria;
}
/**
* This function looks for an special case it has a condition
*
*
* @name generatedReport2_filter
*
* @param string $from
* @param string $to
* @param string $startedby
* @return object
*/
public function generatedReport3 ()
{
$this->reportsPatch();
require_once 'classes/model/AppDelegation.php';
require_once 'classes/model/Application.php';
$oCriteria = new Criteria( 'workflow' );
$del = DBAdapter::getStringDelimiter();
$sql = "SELECT CONCAT(SUBSTRING(AD.DEL_INIT_DATE,6,2),'-', SUBSTRING(AD.DEL_INIT_DATE,1,4)) AS FECHA,
2010-12-02 23:34:41 +00:00
COUNT(DISTINCT(AD.APP_UID)) AS CANTCASES,
MIN(AD.DEL_DURATION) AS MIN,
MAX(AD.DEL_DURATION) AS MAX,
SUM(AD.DEL_DURATION) AS TOTALDUR,
AVG(AD.DEL_DURATION) AS PROMEDIO
FROM APP_DELEGATION AS AD
LEFT JOIN PROCESS AS P ON (P.PRO_UID = AD.PRO_UID)
WHERE AD.APP_UID<>'' AND P.PRO_STATUS<>'DISABLED'
GROUP BY FECHA";
2012-10-09 13:19:43 -04:00
$con = Propel::getConnection( "workflow" );
$stmt = $con->prepareStatement( $sql );
$rs = $stmt->executeQuery();
$ROW[] = array ('FECHA' => 'char','CANTCASES' => 'integer','MIN' => 'float','MAX' => 'float','TOTALDUR' => 'float','PROMEDIO' => 'float');
2012-10-09 13:19:43 -04:00
while ($rs->next()) {
$ROW[] = array ('FECHA' => $rs->getString( 'FECHA' ),'CANTCASES' => $rs->getString( 'CANTCASES' ),'MIN' => number_format( $rs->getString( 'MIN' ), 2 ),'MAX' => number_format( $rs->getString( 'MAX' ), 2 ),'TOTALDUR' => number_format( $rs->getString( 'TOTALDUR' ), 2 ),'PROMEDIO' => number_format( $rs->getString( 'PROMEDIO' ), 2 ));
2012-10-09 13:19:43 -04:00
}
global $_DBArray;
$_DBArray['reports'] = $ROW;
$_SESSION['_DBArray'] = $_DBArray;
$oCriteria = new Criteria( 'dbarray' );
$oCriteria->setDBArrayTable( 'reports' );
return $oCriteria;
2010-12-02 23:34:41 +00:00
}
2012-10-09 13:19:43 -04:00
/**
* This function looks for an special case it has a condition
*
*
* @name generatedReport3_filter
*
* @param string $process
* @param string $task
* @return object
*/
public function generatedReport3_filter ($process, $task)
2010-12-02 23:34:41 +00:00
{
2012-10-09 13:19:43 -04:00
$this->reportsPatch();
require_once 'classes/model/AppDelegation.php';
require_once 'classes/model/Application.php';
$oCriteria = new Criteria( 'workflow' );
$del = DBAdapter::getStringDelimiter();
if ($process == '') {
$var = " WHERE P.PRO_STATUS<>'DISABLED'";
} else {
if ($task == '') {
$var = " LEFT JOIN TASK AS T ON (AD.TAS_UID = T.TAS_UID)
WHERE P.PRO_STATUS<>'DISABLED' AND AD.PRO_UID='" . $process . "'";
} else {
$var = " LEFT JOIN TASK AS T ON (AD.TAS_UID = T.TAS_UID)
WHERE P.PRO_STATUS<>'DISABLED' AND AD.PRO_UID='" . $process . "' AND AD.TAS_UID='" . $task . "' ";
}
}
$sql = "SELECT CONCAT(SUBSTRING(AD.DEL_INIT_DATE,6,2),'-', SUBSTRING(AD.DEL_INIT_DATE,1,4)) AS FECHA,
2010-12-02 23:34:41 +00:00
COUNT(DISTINCT(AD.APP_UID)) AS CANTCASES,
MIN(AD.DEL_DURATION) AS MIN,
MAX(AD.DEL_DURATION) AS MAX,
SUM(AD.DEL_DURATION) AS TOTALDUR,
AVG(AD.DEL_DURATION) AS PROMEDIO
FROM APP_DELEGATION AS AD
LEFT JOIN PROCESS AS P ON (P.PRO_UID = AD.PRO_UID)
2012-10-09 13:19:43 -04:00
" . $var . "
2010-12-02 23:34:41 +00:00
GROUP BY FECHA";
2012-10-09 13:19:43 -04:00
$con = Propel::getConnection( "workflow" );
$stmt = $con->prepareStatement( $sql );
$rs = $stmt->executeQuery();
$ROW[] = array ('FECHA' => 'char','CANTCASES' => 'integer','MIN' => 'float','MAX' => 'float','TOTALDUR' => 'float','PROMEDIO' => 'float');
2012-10-09 13:19:43 -04:00
while ($rs->next()) {
$ROW[] = array ('FECHA' => $rs->getString( 'FECHA' ),'CANTCASES' => $rs->getString( 'CANTCASES' ),'MIN' => number_format( $rs->getString( 'MIN' ), 2 ),'MAX' => number_format( $rs->getString( 'MAX' ), 2 ),'TOTALDUR' => number_format( $rs->getString( 'TOTALDUR' ), 2 ),'PROMEDIO' => number_format( $rs->getString( 'PROMEDIO' ), 2 ));
2012-10-09 13:19:43 -04:00
}
global $_DBArray;
$_DBArray['reports'] = $ROW;
$_SESSION['_DBArray'] = $_DBArray;
$oCriteria = new Criteria( 'dbarray' );
$oCriteria->setDBArrayTable( 'reports' );
return $oCriteria;
}
/**
* This function generates a report
*
*
* @name generatedReport4
*
* param
* @return object
*/
public function generatedReport4 ()
{
$this->reportsPatch();
require_once 'classes/model/AppDelegation.php';
require_once 'classes/model/Application.php';
require_once 'classes/model/Process.php';
require_once 'classes/model/Users.php';
$oCriteria = new Criteria( 'workflow' );
$del = DBAdapter::getStringDelimiter();
$sql = "SELECT CONCAT(U.USR_LASTNAME,' ',USR_FIRSTNAME) AS USER,
2010-12-02 23:34:41 +00:00
COUNT(*) AS CANTCASES,
MIN(AD.DEL_DURATION) AS MIN,
MAX(AD.DEL_DURATION) AS MAX,
SUM(AD.DEL_DURATION) AS TOTALDUR,
AVG(AD.DEL_DURATION) AS PROMEDIO
FROM APPLICATION AS A
LEFT JOIN APP_DELEGATION AS AD ON(A.APP_UID = AD.APP_UID AND AD.DEL_INDEX=1)
LEFT JOIN USERS AS U ON(U.USR_UID = A.APP_INIT_USER)
WHERE A.APP_UID<>''
GROUP BY USER";
2012-10-09 13:19:43 -04:00
// AND P.PRO_STATUS<>'DISABLED' that hapens when it is created to new version it exists at the moment to import
$con = Propel::getConnection( "workflow" );
$stmt = $con->prepareStatement( $sql );
$rs = $stmt->executeQuery();
$ROW[] = array ('USER' => 'char','CANTCASES' => 'integer','MIN' => 'float','MAX' => 'float','TOTALDUR' => 'float','PROMEDIO' => 'float'
);
while ($rs->next()) {
$ROW[] = array ('USER' => $rs->getString( 'USER' ),'CANTCASES' => $rs->getString( 'CANTCASES' ),'MIN' => number_format( $rs->getString( 'MIN' ), 2 ),'MAX' => number_format( $rs->getString( 'MAX' ), 2 ),'TOTALDUR' => number_format( $rs->getString( 'TOTALDUR' ), 2 ),'PROMEDIO' => number_format( $rs->getString( 'PROMEDIO' ), 2 )
);
}
global $_DBArray;
$_DBArray['reports'] = $ROW;
$_SESSION['_DBArray'] = $_DBArray;
$oCriteria = new Criteria( 'dbarray' );
$oCriteria->setDBArrayTable( 'reports' );
return $oCriteria;
2010-12-02 23:34:41 +00:00
}
2012-10-09 13:19:43 -04:00
/**
* This function generates a filter to report 4
*
*
* @name generatedReport4_filter
*
* @param string process
* @param string task
* @return object
*/
public function generatedReport4_filter ($process, $task)
{
$this->reportsPatch();
require_once 'classes/model/AppDelegation.php';
require_once 'classes/model/Application.php';
require_once 'classes/model/Process.php';
require_once 'classes/model/Users.php';
$oCriteria = new Criteria( 'workflow' );
$del = DBAdapter::getStringDelimiter();
if ($process == '') {
$var = " ";
} else {
if ($task == '') {
$var = " LEFT JOIN TASK AS T ON (AD.TAS_UID = T.TAS_UID)
WHERE AD.PRO_UID='" . $process . "'";
} else {
$var = " LEFT JOIN TASK AS T ON (AD.TAS_UID = T.TAS_UID)
WHERE AD.PRO_UID='" . $process . "' AND AD.TAS_UID='" . $task . "' ";
}
}
$sql = "SELECT CONCAT(U.USR_LASTNAME,' ',USR_FIRSTNAME) AS USER,
2010-12-02 23:34:41 +00:00
COUNT(*) AS CANTCASES,
MIN(AD.DEL_DURATION) AS MIN,
MAX(AD.DEL_DURATION) AS MAX,
SUM(AD.DEL_DURATION) AS TOTALDUR,
AVG(AD.DEL_DURATION) AS PROMEDIO
FROM APPLICATION AS A
LEFT JOIN APP_DELEGATION AS AD ON(A.APP_UID = AD.APP_UID AND AD.DEL_INDEX=1)
LEFT JOIN USERS AS U ON(U.USR_UID = A.APP_INIT_USER)
2012-10-09 13:19:43 -04:00
" . $var . "
2010-12-02 23:34:41 +00:00
GROUP BY USER";
2012-10-09 13:19:43 -04:00
$con = Propel::getConnection( "workflow" );
$stmt = $con->prepareStatement( $sql );
$rs = $stmt->executeQuery();
$ROW[] = array ('USER' => 'char','CANTCASES' => 'integer','MIN' => 'float','MAX' => 'float','TOTALDUR' => 'float','PROMEDIO' => 'float'
);
while ($rs->next()) {
$ROW[] = array ('USER' => $rs->getString( 'USER' ),'CANTCASES' => $rs->getString( 'CANTCASES' ),'MIN' => number_format( $rs->getString( 'MIN' ), 2 ),'MAX' => number_format( $rs->getString( 'MAX' ), 2 ),'TOTALDUR' => number_format( $rs->getString( 'TOTALDUR' ), 2 ),'PROMEDIO' => number_format( $rs->getString( 'PROMEDIO' ), 2 )
);
}
global $_DBArray;
$_DBArray['reports'] = $ROW;
$_SESSION['_DBArray'] = $_DBArray;
$oCriteria = new Criteria( 'dbarray' );
$oCriteria->setDBArrayTable( 'reports' );
return $oCriteria;
}
/**
* This function generates a Report
*
*
* @name generatedReport4_filter
*
* @param string process
* @param string task
* @return object
*/
public function generatedReport5 ()
{
$this->reportsPatch();
require_once 'classes/model/AppDelegation.php';
require_once 'classes/model/Application.php';
require_once 'classes/model/Process.php';
require_once 'classes/model/Users.php';
$oCriteria = new Criteria( 'workflow' );
$del = DBAdapter::getStringDelimiter();
$sql = "SELECT CONCAT(U.USR_LASTNAME,' ',USR_FIRSTNAME) AS USER,
2010-12-02 23:34:41 +00:00
COUNT(*) AS CANTCASES,
MIN(AD.DEL_DURATION) AS MIN,
MAX(AD.DEL_DURATION) AS MAX,
SUM(AD.DEL_DURATION) AS TOTALDUR,
AVG(AD.DEL_DURATION) AS PROMEDIO
FROM APP_DELEGATION AS AD
LEFT JOIN PROCESS AS P ON (P.PRO_UID = AD.PRO_UID)
LEFT JOIN USERS AS U ON(U.USR_UID = AD.USR_UID)
WHERE AD.APP_UID<>'' AND AD.DEL_FINISH_DATE IS NULL
GROUP BY USER";
2012-10-09 13:19:43 -04:00
$con = Propel::getConnection( "workflow" );
$stmt = $con->prepareStatement( $sql );
$rs = $stmt->executeQuery();
$ROW[] = array ('USER' => 'char','CANTCASES' => 'integer','MIN' => 'float','MAX' => 'float','TOTALDUR' => 'float','PROMEDIO' => 'float'
);
while ($rs->next()) {
$ROW[] = array ('USER' => $rs->getString( 'USER' ),'CANTCASES' => $rs->getString( 'CANTCASES' ),'MIN' => number_format( $rs->getString( 'MIN' ), 2 ),'MAX' => number_format( $rs->getString( 'MAX' ), 2 ),'TOTALDUR' => number_format( $rs->getString( 'TOTALDUR' ), 2 ),'PROMEDIO' => number_format( $rs->getString( 'PROMEDIO' ), 2 )
);
}
global $_DBArray;
$_DBArray['reports'] = $ROW;
$_SESSION['_DBArray'] = $_DBArray;
$oCriteria = new Criteria( 'dbarray' );
$oCriteria->setDBArrayTable( 'reports' );
return $oCriteria;
2010-12-02 23:34:41 +00:00
}
2012-10-09 13:19:43 -04:00
/**
* This function generates a filter to report 5
*
*
* @name generatedReport5_filter
*
* @param string process
* @param string task
* @return object
*/
public function generatedReport5_filter ($process, $task)
2010-12-02 23:34:41 +00:00
{
2012-10-09 13:19:43 -04:00
$this->reportsPatch();
require_once 'classes/model/AppDelegation.php';
require_once 'classes/model/Application.php';
require_once 'classes/model/Process.php';
require_once 'classes/model/Users.php';
$oCriteria = new Criteria( 'workflow' );
$del = DBAdapter::getStringDelimiter();
if ($process == '') {
$var = " WHERE AD.DEL_FINISH_DATE IS NULL";
} else {
if ($task == '') {
$var = " LEFT JOIN TASK AS T ON (AD.TAS_UID = T.TAS_UID)
WHERE AD.PRO_UID='" . $process . "' AND AD.DEL_FINISH_DATE IS NULL";
} else {
$var = " LEFT JOIN TASK AS T ON (AD.TAS_UID = T.TAS_UID)
WHERE AD.PRO_UID='" . $process . "' AND AD.TAS_UID='" . $task . "' ";
}
}
$sql = "SELECT CONCAT(U.USR_LASTNAME,' ',USR_FIRSTNAME) AS USER,
2010-12-02 23:34:41 +00:00
COUNT(*) AS CANTCASES,
MIN(AD.DEL_DURATION) AS MIN,
MAX(AD.DEL_DURATION) AS MAX,
SUM(AD.DEL_DURATION) AS TOTALDUR,
AVG(AD.DEL_DURATION) AS PROMEDIO
FROM APP_DELEGATION AS AD
LEFT JOIN PROCESS AS P ON (P.PRO_UID = AD.PRO_UID)
LEFT JOIN USERS AS U ON(U.USR_UID = AD.USR_UID)
2012-10-09 13:19:43 -04:00
" . $var . "
2010-12-02 23:34:41 +00:00
GROUP BY USER";
2012-10-09 13:19:43 -04:00
$con = Propel::getConnection( "workflow" );
$stmt = $con->prepareStatement( $sql );
$rs = $stmt->executeQuery();
$ROW[] = array ('USER' => 'char','CANTCASES' => 'integer','MIN' => 'float','MAX' => 'float','TOTALDUR' => 'float','PROMEDIO' => 'float'
);
while ($rs->next()) {
$ROW[] = array ('USER' => $rs->getString( 'USER' ),'CANTCASES' => $rs->getString( 'CANTCASES' ),'MIN' => number_format( $rs->getString( 'MIN' ), 2 ),'MAX' => number_format( $rs->getString( 'MAX' ), 2 ),'TOTALDUR' => number_format( $rs->getString( 'TOTALDUR' ), 2 ),'PROMEDIO' => number_format( $rs->getString( 'PROMEDIO' ), 2 )
);
}
global $_DBArray;
$_DBArray['reports'] = $ROW;
$_SESSION['_DBArray'] = $_DBArray;
$oCriteria = new Criteria( 'dbarray' );
$oCriteria->setDBArrayTable( 'reports' );
return $oCriteria;
2010-12-02 23:34:41 +00:00
}
2012-10-09 13:19:43 -04:00
/**
* This function returns an array, it has the reports' names
*
*
* @name getAvailableReports
*
* param
* @return array
*/
public function getAvailableReports ()
{
return array ('ID_REPORT1','ID_REPORT2','ID_REPORT3','ID_REPORT4','ID_REPORT5'
);
}
2010-12-02 23:34:41 +00:00
2012-10-09 13:19:43 -04:00
/**
* Patch for reports by The Answer (17-10-2k8)
*
*
* @name reportsPatch
*
* param
* @return void
*/
public function reportsPatch ()
{
require_once 'classes/model/AppDelegation.php';
$oCriteria = new Criteria( 'workflow' );
$del = DBAdapter::getStringDelimiter();
$oCriteria->addSelectColumn( AppDelegationPeer::APP_UID );
$oCriteria->addSelectColumn( AppDelegationPeer::DEL_INDEX );
$oCriteria->addSelectColumn( AppDelegationPeer::TAS_UID );
$oCriteria->addSelectColumn( AppDelegationPeer::DEL_DELEGATE_DATE );
$oCriteria->addSelectColumn( AppDelegationPeer::DEL_INIT_DATE );
$oCriteria->addSelectColumn( AppDelegationPeer::DEL_FINISH_DATE );
$oCriteria->addSelectColumn( AppDelegationPeer::DEL_DURATION );
$oDataset = AppDelegationPeer::doSelectRS( $oCriteria );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
$oAppDelegation = new AppDelegation();
$aData['APP_UID'] = $aRow['APP_UID'];
$aData['DEL_INDEX'] = $aRow['DEL_INDEX'];
$aData['DEL_DELEGATE_DATE'] = $aRow['DEL_DELEGATE_DATE'];
if ($aRow['DEL_INIT_DATE'] == null) {
2012-10-09 13:19:43 -04:00
$aData['DEL_INIT_DATE'] = $aRow['DEL_DELEGATE_DATE'];
} else {
2012-10-09 13:19:43 -04:00
$aData['DEL_INIT_DATE'] = $aRow['DEL_INIT_DATE'];
}
2012-10-09 13:19:43 -04:00
//$aData['DEL_FINISH_DATE']=$aRow['DEL_FINISH_DATE'];
if ($aRow['DEL_DURATION'] != 0) {
$oDates = new dates();
$aData['DEL_DURATION'] = $oDates->calculateDuration( $aData['DEL_INIT_DATE'], $aRow['DEL_FINISH_DATE'], null, null, $aRow['TAS_UID'] );
}
$oAppDelegation->update( $aData );
$oDataset->next();
}
return;
}
}
2010-12-02 23:34:41 +00:00