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