public function getTotaisTrabalhados(Profissional $pProf, Periodo $pPeriodo) { $oInicio = new DateTime($pPeriodo->getInicial()); $oFim = new DateTime($pPeriodo->getFinal()); $sql = "SELECT SUM(h_50) as Hex50, SUM(h_100) as Hex100, SUM(total) as total " . "FROM hor_frequencia " . "WHERE cod_prof_funcao = " . $pProf->getCodProfFuncao() . " AND data BETWEEN '" . $oInicio->format('Y-m-d') . "' AND '" . $oFim->format('Y-m-d') . "';"; $rs = parent::obterRecordSet($sql); $this->setExtra50($rs[0]["Hex50"]); $this->setExtra100($rs[0]["Hex100"]); $this->setTotal($rs[0]["total"]); }
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); }
function getBanco($pCodProfFuncao) { try { // horista não possui banco de horas $oProf = new Profissional($pCodProfFuncao); if ($oProf->getHorista()) { return false; } // retorna banco de horas $sql = "SELECT hb.periodo_ini, hb.hex_50, hb.hex_100,\n hb.total_trab as normais,\n (hb.total_trab + hb.hex_50 + hb.hex_100) as total_trab,\n IFNULL(hp.horas,0) as horas_pagas, IFNULL(ht.horas,'0') as horas_a_trabalhar\n FROM hor_banco as hb\n LEFT JOIN hor_pagas as hp\n ON (hb.cod_prof_funcao = hp.cod_prof_funcao AND hb.periodo_ini = hp.periodo_ini)\n LEFT JOIN hor_a_trabalhar as ht\n ON (hb.cod_prof_funcao = ht.cod_prof_funcao AND hb.periodo_ini = ht.periodo_ini)\n WHERE hb.cod_prof_funcao = " . $pCodProfFuncao . " ORDER BY hb.periodo_ini ASC;"; $rs = parent::obterRecordSet($sql); //$varAcumulado = 0; $ret = array(); foreach ($rs as $row) { $oPeriodo = new Periodo($row["periodo_ini"]); $vPeriodo = "de " . $oPeriodo->getInicial() . " a " . $oPeriodo->getFinal(); $oBanco = new Banco(); $oBanco->setPeriodo($vPeriodo); $oBanco->setHorhex50($row["hex_50"]); $oBanco->setHorhex100($row["hex_100"]); $oBanco->setHornormais($row["normais"]); $oBanco->setHortrabalhadas($row["total_trab"]); $oBanco->setHoratrabalhar($row["horas_a_trabalhar"]); $oBanco->setHorpagas($row["horas_pagas"]); $oBanco->setHorsaldo($row["total_trab"] - $row["horas_a_trabalhar"]); $varAcumulado += $row["total_trab"] - $row["horas_a_trabalhar"] - $row["horas_pagas"]; $oBanco->setHoracumuladas($varAcumulado); $ret[] = $oBanco; } return $ret; } catch (Exception $e) { throw new Exception($e->getTraceAsString()); } }