function index($fecha = null)
 {
     if ($fecha == null) {
         $fecha = date("d-m-Y");
     }
     $fecha = DateHelper::dateFormat($fecha, 'd-m-Y Y-m-d');
     $this->set('fecha', $fecha);
     $this->set('datos', $this->Reporte->reporteHorasDia($fecha));
 }
 function graficoActividad($id_usuario = null, $id_actividad, $ini, $fin)
 {
     $actividad = $this->Actividad->find('list', array('conditions' => "Actividad.id_actividad={$id_actividad}"));
     $tit = "Promedio de " . current($actividad) . " entre {$ini} y {$fin}";
     $ini = DateHelper::dateFormat($ini, 'd-m-Y Y-m-d');
     $fin = DateHelper::dateFormat($fin, 'd-m-Y Y-m-d');
     $dataUsuario = $this->Reporte->promedioActividadesPorDia($id_usuario, $id_actividad, $ini, $fin);
     $dataPromedio = $this->Reporte->promedioActividadesPorDia(null, $id_actividad, $ini, $fin);
     #Grafica
     $this->Jpgraph->newGraph(700, 300);
     $dataY = $this->dataGrafico($dataPromedio, 'promedio');
     //if(count($dataY)<=0) exit;
     $this->Jpgraph->Line($dataY, 'Promedio por Hora', 'red');
     #Trabajador
     $dataY = $this->dataGrafico($dataUsuario, 'promedio', $dataPromedio);
     $this->Jpgraph->Line($dataY, 'Producción/hora', 'navy', 3);
     $dataX = $this->dataGrafico($dataPromedio, 'fecha');
     if (count($dataPromedio) > 0) {
         $this->Jpgraph->present($dataX, $tit);
     }
 }
Exemple #3
0
 function buscarLabor($id_usuario, $ini, $fin)
 {
     include HELPERS . 'date.php';
     $usuario = $this->Usuario->generateList2("Usuario.id_usuario={$id_usuario}");
     $this->set('usuario', current($usuario));
     $this->set('ini', $ini);
     $this->set('fin', $fin);
     $ini = DateHelper::dateFormat($ini);
     $fin = DateHelper::dateFormat($fin);
     $labores = $this->Tarea->buscarLabores($id_usuario, $ini, $fin);
     $this->set('labores', $labores);
 }
 /**
  * 表示用日付フォーマットを取得
  *
  * @param string $dateTime date time
  * @return array
  */
 public function getDisplayDateFormat($dateTime)
 {
     App::import('Helper', 'NetCommons.Date');
     $dateHelper = new DateHelper(new View());
     return $dateHelper->dateFormat($dateTime);
 }
 /**
  *@desc Adicion, Edicion y Borrado de presupuestos. Esta tabla no tiene Maestro pero se agrupasegun el mes
  *@param fecha mes y Año
  */
 function edit($fecha = null)
 {
     #El Maestro es el Mes y Año
     if ($fecha == null) {
         $fecha = $this->data['P']['fecha'];
     } elseif (preg_match('/^\\d{2}$/', $fecha)) {
         $year = date("Y");
         if ($fecha < date("m")) {
             $year++;
         }
         $fecha = '01-' . $fecha . '-' . $year;
     } elseif (preg_match('/^\\d{2}-\\d{4}$/', $fecha)) {
         $fecha = '01-' . $fecha;
     }
     #Fecha en el formato de la base de dats
     $fec = DateHelper::dateFormat($fecha, 'd-m-Y Y-m-d');
     /*SALVAR*/
     if (!empty($this->data)) {
         $save = true;
         $this->Presupuesto->begin();
         #Detalle
         $errors = array();
         #Errores de detalle
         $count = 0;
         $idsDetalle = array();
         #Lista de registros detalle antes de la edicion
         $ids = $this->Presupuesto->generateList("Presupuesto.fecha='{$fec}'");
         if (is_array($ids)) {
             $ids = array_keys($ids);
         } else {
             $ids = array();
         }
         $detalle = 'Presupuesto';
         #Iteracion a traves del detalle
         foreach ($this->data[$detalle] as $v) {
             $this->{$detalle}->id = null;
             $v['fecha'] = $fecha;
             if (!$this->{$detalle}->save($v)) {
                 $save = false;
                 $errors[$count] = $this->{$detalle}->validationErrors;
             }
             #Detalle id
             if (isset($v['id_presupuesto'])) {
                 $idsDetalle[] = $v['id_presupuesto'];
             }
             $count++;
         }
         #Comprobando si existe diferencias para borrar los registros detalle
         $ids = array_diff($ids, $idsDetalle);
         $msj = '';
         #Borrado de los registros detalle
         foreach ($ids as $va) {
             if (!$this->{$detalle}->del($va)) {
                 $save = false;
                 $msj = 'Dependencias';
             }
         }
         #Fin de la transaccion
         if ($save) {
             $this->Presupuesto->commit();
             $this->Session->setFlash("Se salvo correctamente El Presupuesto");
             $redir = Inflector::underscore($this->name);
             $this->redirect("/{$redir}/");
             exit;
         } else {
             $this->Presupuesto->rollback();
             $this->Session->setFlash("<div class=\"error_message\">Error: Corrija los Errores</div>");
         }
         $this->set('errors', $errors);
     } else {
         #Para que no busque todos los modelos que hay en hasMany
         $this->Presupuesto->unbindModel(array('belongsTo' => array('Cuenta')));
         $data = $this->Presupuesto->findAll("Presupuesto.fecha = '{$fec}' ");
         $i = 0;
         foreach ($data as $v) {
             $this->data['Presupuesto'][$i] = $v['Presupuesto'];
             $i++;
         }
     }
     $this->set('fecha', $fecha);
     $name = 'Cuenta';
     $lista = $this->{$name}->generateList(null, "Cuenta.nombre asc");
     $this->set('cuentas', $lista);
 }
 /**
  *Grafico de Gastos e Ingresos
  *@param date $ini
  *@param date $fin
  *@param bool $mes Indica si debe presentar Nombre de mes, caso contrario solo presenta el rango de Fechas
  */
 function graficoIngresosGastos($ini, $fin, $mes = true)
 {
     $mes = (bool) $mes;
     $titulo = "Ingresos y Gastos ";
     #Presentacon de mes o rango de fechas
     if ($mes) {
         list($d, $m, $a) = explode("-", $ini);
         $titulo .= "de {$GLOBALS['months'][$m]}";
     } else {
         $titulo .= "entre {$ini} y {$fin}";
     }
     #Preparacion de datos para la presentacion de el grafico
     $model = "ReporteSueldo";
     list($day, $month, $year) = explode("-", $fin);
     $dayFin = (int) $day;
     if ((int) $year >= (int) date("Y")) {
         if ((int) $month >= (int) date("m")) {
             $day = (int) date("d");
         }
     }
     $ini = DateHelper::dateFormat($ini, 'd-m-Y Y-m-d');
     $fin = DateHelper::dateFormat($fin, 'd-m-Y Y-m-d');
     $presupuesto = $this->{$model}->presupuesto($ini);
     $datos[0] = round($presupuesto[0]['total'], 0);
     $saldo = $this->{$model}->saldo($ini, $fin);
     $proyGast = floatval((int) $dayFin * ($saldo[0]['gasto'] / $day));
     $datos[1] = round($proyGast, 0);
     $proyIng = floatval($saldo[0]['ingreso'] / $day * (int) $dayFin);
     $datos[2] = round($proyIng, 0);
     $gastos = floatval($saldo[0]['gasto']);
     $datos[3] = round($gastos, 0);
     $ingresos = floatval($saldo[0]['ingreso']);
     $datos[4] = round($ingresos, 0);
     $data = array();
     $legends = array("Presupuesto", "Gasto\nProyectado", "Ingreso\nProyectado", "Gasto\nEjecutado", "Ingreso\nEjecutado");
     $colors = array('#DF0000', '#FF0000', '#0000FF', '#FF0000', '#0000FF');
     $i = 0;
     foreach ($datos as $v) {
         for ($j = 0; $j < 5; $j++) {
             if ($i == $j) {
                 $data[$i][$j] = $v;
             } else {
                 $data[$i][$j] = 0;
             }
         }
         $i++;
     }
     #Grafica
     $this->Jpgraph->newGraph(700, 400);
     $this->Jpgraph->Bar($data[0], $legends[0], $colors[0]);
     $this->Jpgraph->Bar($data[1], $legends[1], $colors[1]);
     $this->Jpgraph->Bar($data[2], $legends[2], $colors[2]);
     $this->Jpgraph->Bar($data[3], $legends[3], $colors[3]);
     $this->Jpgraph->Bar($data[4], $legends[4], $colors[4]);
     $graph = $this->Jpgraph->get();
     $graph->xaxis->SetTickLabels($legends);
     //$graph->xaxis->SetLabelAngle(45);
     $graph->xaxis->SetFont(FF_ARIAL);
     $graph->SetMargin(40, 40, 20, 50);
     $graph->Stroke();
     exit;
 }
 /**
  *@desc Prepara la informacion y presenta un grafico de produccion diaria
  *@param int $id_usuario
  *@param date $ini Formato de presentacion, Cambiar a formato de BD
  *@param date $fin Formato de presentacion, Cambiar a formato de BD
  */
 function graficoProduccionDiaria($id_usuario = null, $ini, $fin)
 {
     $tit = "Producción de {$ini} a {$fin}";
     #Transformacion a formato de BD
     if (preg_match('/^\\d{2}-\\d{2}-\\d{4}$/', $ini)) {
         $ini = DateHelper::dateFormat($ini, 'd-m-Y Y-m-d');
         $fin = DateHelper::dateFormat($fin, 'd-m-Y Y-m-d');
     } else {
         $tit = "Producción de " . DateHelper::dateFormat($ini) . " a " . DateHelper::dateFormat($fin);
     }
     #Grafica
     $this->Jpgraph->newGraph(700, 300);
     #Promedio en caso de que sea Usuario
     if ($id_usuario != 0) {
         $this->Usuario->recursive = 0;
         $usuario = $this->Usuario->findByIdUsuario($id_usuario);
         $tit .= ' ' . $usuario['Usuario']['nombres'] . ' ' . $usuario['Usuario']['apellido_paterno'];
         $tit .= ' ' . $usuario['Usuario']['apellido_materno'];
         #Tipo Funcion Administratica o Taller
         $funcProm = 'produccionPromedio';
         $funcProd = 'produccionDiaria';
         $data = $this->Reporte->{$funcProm}($id_usuario, $ini, $fin);
         if (!is_array($data) || count($data) < 2) {
             echo "<h4>No existen datos suficientes para realizar la gráfica</h4>";
             exit;
         }
         $dataY = $this->dataGrafico($data, 'producido');
         $this->Jpgraph->Line($dataY, 'Promedio por Hora', 'red');
         #Trabajador
         $data2 = $this->Reporte->{$funcProd}($id_usuario, $ini, $fin);
         $dataY = $this->dataGrafico($data2, 'producido', $data);
         $this->Jpgraph->Line($dataY, 'Producción/hora', 'navy', 3);
     } else {
         $data = $this->Reporte->produccionDiaria(null, $ini, $fin);
         if (!is_array($data) || count($data) < 2) {
             echo "<h4>No existen datos suficientes para realizar la gráfica</h4>";
             exit;
         }
         $dataY = $this->dataGrafico($data, 'producido');
         $this->Jpgraph->Line($dataY, 'Producción', 'navy', 3);
     }
     $dataX = $this->dataGrafico($data, 'fecha');
     if (count($data) > 0) {
         $this->Jpgraph->present($dataX, $tit);
     }
 }