示例#1
0
 public function getByRange(Profissional $pProf, Periodo $pPeriodo)
 {
     try {
         $ObjInicio = new DateTime($pPeriodo->getInicial());
         $ObjFim = new DateTime($pPeriodo->getFinal());
         $sql = "SELECT hf.data, DAYNAME(hf.data) as dia, hf.entrada, hf.almoco,\n                    hf.retorno, hf.saida, hf.total, hf.h_50, hf.h_100\n                    FROM hor_frequencia hf INNER JOIN profs_funcoes pf\n                    ON (hf.cod_prof_funcao = pf.codigo)\n                    WHERE pf.codigo = " . $pProf->getCodProfFuncao() . " AND hf.data BETWEEN '" . $ObjInicio->format('Y-m-d') . "'\n                    AND '" . $ObjFim->format('Y-m-d') . "';";
         $row = parent::obterRecordSet($sql);
         // insere os dias de falta, finais de semana
         // feriados e ocorr�ncias na frequencia
         //**$ObjTd = new Data();
         $j = 0;
         while ($ObjInicio <= $ObjFim) {
             $oReg = new Registro();
             $oData = new DateTime($row[$j]["data"]);
             $oReg->setData($oData->format("d-m-Y"));
             if ($oData->format('d/m/Y') == $ObjInicio->format('d/m/Y')) {
                 //$reg->setDiaDaSemana($row[$j][dia]);
                 $oReg->setDiaDaSemana(Data::getTipoDia($oData));
                 $oReg->setEntradaManha($row[$j]["entrada"]);
                 $oReg->setSaidaManha($row[$j]["almoco"]);
                 $oReg->setEntradaTarde($row[$j]["retorno"]);
                 $oReg->setSaidaTarde($row[$j]["saida"]);
                 $oReg->setEntradaNoite('-');
                 $oReg->setSaidaNoite('-');
                 $oReg->setTotal($row[$j]["total"]);
                 $oReg->setExtra50($row[$j]["h_50"]);
                 $oReg->setExtra100($row[$j]["h_100"]);
                 if ($j < count($row) - 1) {
                     $j++;
                 }
             } else {
                 // checa o motivo da falta de registro,
                 // pode ser final de semana, feriado,
                 // ou alguma outra ocorrencia como
                 // atestado, licen�a etc, etc.
                 $oReg->setData($ObjInicio->format('d-m-Y'));
                 $oReg->setDiaDaSemana(Data::getTipoDia($ObjInicio));
                 $oReg->setEntradaManha('-');
                 $oReg->setSaidaManha('-');
                 $oReg->setEntradaTarde('-');
                 $oReg->setSaidaTarde('-');
                 $oReg->setEntradaNoite('-');
                 $oReg->setSaidaNoite('-');
                 $oReg->setTotal(0);
                 $oReg->setExtra50(0);
                 $oReg->setExtra100(0);
             }
             $ObjInicio->modify("+1 day");
             $ret[] = $oReg;
         }
         return $ret;
     } catch (Exception $e) {
         throw new Exception($e->getTraceAsString());
     }
 }