private function verificar_insert_data($tree)
 {
     $tree = new TreeSc();
     $tree->getPeriodoId();
     //cada 15 dias
     $criterio = new Criteria();
     $criterio->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE);
     $criterio->add(IndicatorsScPeer::TREE_ID, $tree->getId());
     $indicador = IndicatorsScPeer::doSelectOne($criterio);
     $criterio->clear();
     $criterio->add(DataIndicadoresPeer::INDICADOR_ID, $indicador->getId());
     $criterio->addDescendingOrderByColumn(DataIndicadoresPeer::CREATE_AT);
     $data = DataIndicadoresPeer::doSelectOne($criterio);
     $criterio = new Criteria();
     $criterio->add(DataIndicadoresPeer::INDICADOR_ID, 24);
     $criterio->addDescendingOrderByColumn(DataIndicadoresPeer::CREATE_AT);
     $data = DataIndicadoresPeer::doSelectOne($criterio);
     $ultima_de_fecha_registro = new DateTime($data->getCreateAt());
     $ultima_de_fecha_registro = $ultima_de_fecha_registro->format('Y-m-d');
     $array = explode('-', $ultima_de_fecha_registro);
     $fecha_actual = mktime(0, 0, 0, date('m'), date("d"), date('Y'));
     $fecha_actual = date('Y-m-d', $fecha_actual);
     /* if($fecha_proyectada<=$fecha_actual){}*/
     //semanal
     if ($tree->getPeriodoId() == 1) {
         $fecha_proyectada = mktime(0, 0, 0, $array[1], $array[2] + 7, $array[0]);
         $fecha_proyectada = date('Y-m-d', $fecha_proyectada);
         //cada quincena
     } elseif ($tree->getPeriodoId() == 2) {
         //si el dia de ultimo registro en menos a quince
         //busco el 15 de ese mes
         if ($array[2] < 15) {
             //la fecha programada es:
             $fecha_proyectada = $this->obtener_fecha_por_dia(15);
         } else {
             $fecha_proyectada = $this->obtener_fecha_por_dia(1);
         }
         //cada bimestre
     } elseif ($tree->getPeriodoId() == 3) {
         $fecha_proyectada = mktime(0, 0, 0, $array[1], $array[2] + 0, $array[0]);
         $fecha_proyectada = date('Y-m-d', $fecha_proyectada);
         //cada trimestre
     } else {
         $fecha_proyectada = mktime(0, 0, 0, $array[1], $array[2] + 0, $array[0]);
         $fecha_proyectada = date('Y-m-d', $fecha_proyectada);
     }
 }
 public function executeAjax_mostrar_tree(sfWebRequest $request)
 {
     $user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user'), null);
     $id_tree = $request->getParameter('tree');
     if ($user != null) {
         $criterio = new Criteria();
         $criterio->add(TreeScPeer::USER_ID, $user->getId());
         $criterio->add(TreeScPeer::PRODUCCION, '%production%', Criteria::LIKE);
         $criterio->add(TreeScPeer::ID, $id_tree);
         $tree = TreeScPeer::doSelectOne($criterio);
         $criterio->clear();
         if (is_object($tree)) {
             $criterio->add(IndicatorsScPeer::TREE_ID, $tree->getId());
             $criterio->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE);
             $criterio->addAscendingOrderByColumn(IndicatorsScPeer::PREVIOUS_ID);
             $list_indicadores = IndicatorsScPeer::doSelect($criterio);
             $this->lista_indicadores = $list_indicadores;
             $this->tree = $tree;
             /* con esto obtengo la fecha de proyeccion actual 
              */
             $criteria = new Criteria();
             $criteria->add(IndicatorsScPeer::TREE_ID, $tree->getId());
             $criteria->addJoin(IndicatorsScPeer::ID, DataIndicadoresPeer::INDICADOR_ID);
             $criteria->addDescendingOrderByColumn(DataIndicadoresPeer::CREATE_AT);
             $proyeccion = DataIndicadoresPeer::doSelectOne($criteria);
             $this->fechaProyeccion = $proyeccion->getCreateAt();
         } else {
             return sfView::ERROR;
         }
         return sfView::SUCCESS;
     } else {
         return sfView::ERROR;
     }
 }
 private function actualizarNodosPorPeriodo($periodo_id)
 {
     $c = new Criteria();
     $c->add(TreeScPeer::PERIODO_ID, $periodo_id);
     $c->add(TreeScPeer::PRODUCCION, 'production');
     $c->add(IndicatorsScPeer::ULTIMO_NODO, 1);
     $c->add(IndicatorsScPeer::FLAG, 'habilitado');
     $c->addJoin(TreeScPeer::ID, IndicatorsScPeer::TREE_ID);
     $nodos = IndicatorsScPeer::doSelect($c);
     if (count($nodos) > 0) {
         $group_data_indicadores = new GroupDataIndicadores();
         $group_data_indicadores->setCreateAt(time());
         $group_data_indicadores->setTreeId($nodos[0]->getTreeId());
         $group_data_indicadores->save();
         //$nodos es sòlo los ultimos nodos de un arbol
         foreach ($nodos as $row) {
             $data_indicadores = new DataIndicadores();
             $data_indicadores->setIndicadorId($row->getId());
             $data_indicadores->setUserId($row->getResponsableId());
             $c = new Criteria();
             $c->add(DataIndicadoresPeer::INDICADOR_ID, $row->getId());
             $c->addDescendingOrderByColumn(DataIndicadoresPeer::CREATE_AT);
             $c->setLimit(1);
             $data_anterior_indicador = DataIndicadoresPeer::doSelectOne($c);
             if ($row->getDetNetworkAttributeId() == null) {
                 /* si es null, es conector interno (manualmente) */
                 $data_indicadores->setData(0);
                 $row->setValorActualEntregado(0);
                 $row->save();
             } else {
                 $data_indicadores->setData($this->getIndicatorScData($row->getId()));
                 $row->setValorActualEntregado($this->getIndicatorScData($row->getId()));
                 $row->save();
             }
             $data_indicadores->setGroupData($group_data_indicadores->getId());
             $data_indicadores->setCreateAt(time());
             $data_indicadores->setUpdateAt(time());
             $data_indicadores->save();
         }
         $ultima_fecha_del_array = $data_indicadores->getCreateAt();
         if (count($nodos) > 0) {
             /*
              * Obtengo los indicadores que tienen indicadores hijos ( ultimos indicadores )
              * o comienzo a recacular todos los valores Actuales de todos los indicadores
              */
             $criterio = new Criteria();
             $criterio->add(IndicatorsScPeer::TREE_ID, $nodos[0]->getTreeId());
             $criterio->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE);
             $criterio->add(IndicatorsScPeer::ULTIMO_NODO, 1);
             $criterio->addAscendingOrderByColumn(IndicatorsScPeer::PREVIOUS_ID);
             $list_indicadores = IndicatorsScPeer::doSelect($criterio);
             foreach ($list_indicadores as $row) {
                 if ($row->getPreviousId() != 0) {
                     $var = $this->recalcular($row, $ultima_fecha_del_array);
                 }
             }
         }
     }
 }