Example #1
0
 public function getHorasTrabalharNoPeriodo(Periodo $pPeriodo)
 {
     // checa se o profissional � horista,
     // horistas n�o possuem limite de horas a trabalhar
     if ($this->getHorista()) {
         return 0;
     }
     //Prepara períodos
     $pInicio = new DateTime($pPeriodo->getInicial());
     $pFim = new DateTime($pPeriodo->getFinal());
     // checa se j� existe registro na tabela de horas a trabalhar
     $sql = "SELECT horas " . "FROM hor_a_trabalhar " . "WHERE cod_prof_funcao =  " . $this->getCodProfFuncao() . " AND periodo_ini = '" . $pInicio->format("Y-m-d") . "';";
     $cont = parent::executarScalar($sql);
     if ($cont > 0) {
         return $cont;
     }
     // obtem a carga hor�ria do profissional, converte para numero
     $varCargaHoraria = $this->getCargaHoraria();
     // calcula a quantidade de horas a
     // trabalhar no per�odo entre duas datas
     //$oTipoDia = new Data();
     while ($pInicio <= $pFim) {
         $varTipoDia = Data::getTipoDia($pInicio);
         if (!($varTipoDia == "Sábado" || $varTipoDia == "Domingo")) {
             if ($varCargaHoraria == 8.5) {
                 if ($varTipoDia == "Sexta-Feira") {
                     $varTotal += 8;
                 } else {
                     $varTotal += $varCargaHoraria;
                 }
             } else {
                 $varTotal += $varCargaHoraria;
             }
         } else {
             // Trata feriado
             // Há feriados que só desconta um turno, por exemplo
             $oFeriado = new Feriado();
             if ($oFeriado->isFeriado($pInicio)) {
                 $varDesconto += $oFeriado->getHoras();
                 // Se o feriado cair dia de sábado
                 // Desconta 2h da carga horária referente a este dia
                 if (Data::getDiaSemana($pInicio) == "Sábado") {
                     $varDesconto += 2;
                 }
             }
         }
         // Incrementa dia
         $pInicio->modify("+1 day");
     }
     $varTotal -= $varDesconto;
     return number_format($varTotal, 2);
 }