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); } } } } }