/** * validação de numeros com casas decimais * * @param mixed $var numero a ser validado. * @return bool. * */ function isFloat($var){ $var = Formatacao::formatFloat($var); return ereg('^[\+-]{0,1}[0-9]+(\.[0-9]+){0,1}$', trim(strval($var))); }
/** * realiza descontos nos valoes dos exames deste convenio de acordo com outro convênio * * @param string $desconto * @param string $convenio_origem */ function descontaValores($desconto, $convenio_origem){ if (($convenio_origem != $this->get("con_id")) && ($convenio_origem != "") && (floatval(Formatacao::formatFloat($desconto)) > 0)){ $desconto = Formatacao::formatFloat($desconto); $sql = "select * from valor_exame where con_id = ".$this->get("con_id"); $rs = Db::sql($sql, "convenio::descontaValores() - busca todos os valores do convenio que sofrerá o desconto."); if (mysql_num_rows($rs)){ $exames_convenio_origem_equivalentes = "0"; //para cada valor existente, ele buscará o valor do mesmo exame no convenio de origem para aplicar o desconto while ($r = mysql_fetch_assoc($rs)){ $sql = "select * from valor_exame where con_id = ".$convenio_origem." and exa_id = ".$r["exa_id"]." and vex_valor_absoluto > 0 limit 1"; $rs2 = Db::sql($sql, "convenio::descontaValores() - busca o valor do convenio base para cada exame do convenio que sofrerá o desconto"); if (mysql_num_rows($rs2)){ $r2 = mysql_fetch_assoc($rs2); $sql = "update valor_exame set vex_valor_absoluto = ((".$r2["vex_valor_absoluto"].") - ((".$r2["vex_valor_absoluto"]." * ".$desconto.") / 100) ) where exa_id = ".$r["exa_id"]." and con_id = ".$this->get("con_id")." and vex_valor_absoluto > 0"; $upd = Db::sql($sql, "convenio::descontaValores() - aplica o desconto no convênio"); $exames_convenio_origem_equivalentes .= ",".$r2["vex_id"]; } } //depois de aplicar o desconto nos exames que existem nos dosi convênios, realiza uma busca nos exames existentes somente no convenio de origem, inserindo o valor com desconto para o convênio atual $sql = "select * from valor_exame where con_id = ".$convenio_origem." and vex_valor > 0 and vex_id not in (".$exames_convenio_origem_equivalentes.")"; $rs = Db::sql($sql, "convenio::descontaValores() - busca os valores de exames que so existem no convenio de origem"); while ($r = mysql_fetch_assoc($rs)){ $sql = "insert into valor_exame (vex_valor_absoluto, exa_id, con_id) values (((".$r["vex_valor_absoluto"].") - ((".$r["vex_valor_absoluto"]." * ".$desconto.") / 100) ),".$r["exa_id"].",".$this->get("con_id").")"; $upd = Db::sql($sql, "convenio::descontaValores() - aplica o desconto no convênio"); } } else { //esta rotina acontecerá caso o convenio alvo não possua nenhum valor de exame //busca todos o valores de exames do convenio de origem e insere no conveni alvo, aplicando o desconto. $sql = "select * from valor_exame where con_id = ".$convenio_origem." and vex_valor_absoluto > 0"; $rs = Db::sql($sql, "convenio::descontaValores() - busca os valores de exames do convenio de origem"); while ($r = mysql_fetch_assoc($rs)){ $sql = "insert into valor_exame (vex_valor_absoluto, exa_id, con_id) values (((".$r["vex_valor_absoluto"].") - ((".$r["vex_valor_absoluto"]." * ".$desconto.") / 100) ),".$r["exa_id"].",".$this->get("con_id").")"; $upd = Db::sql($sql, "convenio::descontaValores() - aplica o desconto no convênio"); } } } }