Пример #1
0
    public function CalculaValorFaturaMenosImposto($Imposto, $idCr, $trans = false) {

	$ModelCr = new ModellancaCrBd();

	$Valor = $ValorFatura = $ModelCr->ValorReferenciaEncargos($idCr, $trans);

	return (float) number_format(($Valor - $Imposto), 2, '.', '');
    }
    public function FaturaLancamento() {

	$data = date("Y-m-d H:i:s");
	$Datas = new Data();
	$String = new CString();

	//Verifica se a data de vencimento da fatura é anterior ao dia atual

	$CodCr2 = isset($_POST['cod_cr2']) ? $_POST['cod_cr2'] : '';
	$vlrFaturado = isset($_POST['valor_faturado']) ? (float) $String->limpa_moeda($_POST['valor_faturado']) : '';
	$vencimento = isset($_POST['vencimento']) ? $Datas->convertDataSql($_POST['vencimento']) : '';
	$multaFatura = isset($_POST['multa_boleto']) ? (float) $String->limpa_moeda($_POST['multa_boleto']) : (float) '0.00';
	$moraFatura = isset($_POST['mora_boleto']) ? (float) $String->limpa_moeda($_POST['mora_boleto']) : (float) '0.00';
	$intru1 = isset($_POST['instru_1']) ? $_POST['instru_1'] : '';
	$imposto = isset($_POST['imposto']) ? (float) $String->limpa_moeda($_POST['imposto']) : (float) '0.00';
	$vlrDesconto = !empty($_POST['desconto_fatura']) ? (float) $String->limpa_moeda($_POST['desconto_fatura']) : (float) '0.00';
	$intru2 = "";
	$numBoleto = "0";
	$descricaoBoleto = $intru1 = isset($_POST['descricao_boleto']) ? $String->convertem($_POST['descricao_boleto'], 1) : '';
	$NumeroNF = !empty($_POST['numero_nf']) ? $_POST['numero_nf'] : '';

	//Verifica se a data de vencimento da fatura é anterior ao dia atual
	/* if (strtotime($vencimento) < strtotime(date('Y-m-d'))) {
	  echo "A data de vencimento deve ser igual ou superior a data atual";
	  exit();
	  } */

	if ($vlrFaturado <= 0) {
	    echo "Não é possível faturar valores negativos";
	    exit();
	}
	$faturaLancamento = new ModellancaCrBd();
	$codCr1 = $faturaLancamento->RecuperaCampo("F_LANCA_CR_ID", "F_LANCA_CR2", "F_LANCA_CR2_ID", $CodCr2);
	$ValorReferencial = (float) $faturaLancamento->ValorReferenciaEncargos($codCr1);

	//Validação dos dados em segunda camada, refaço o cálculo de multa e mora
	if (($multaFatura) > 0 OR ( $moraFatura > 0)) {
	    $CodCC = $faturaLancamento->RecuperaCampo("BANCO_ID", "F_LANCA_CR", "F_LANCA_CR_ID", $codCr1);
	    $VlrMora = (float) $faturaLancamento->RecuperaCampo("VALOR_JURO", "BANCO", "BANCO_ID", $CodCC);
	    $VlrMulta = (float) $faturaLancamento->RecuperaCampo("VALOR_MULTA", "BANCO", "BANCO_ID", $CodCC);
	}

	if ($moraFatura > 0) {
	    $DataReferencia = $faturaLancamento->DataReferenciaCalculoEncargos($codCr1);
	    $diasAtraso = $Datas->DiasEntreDatas($vencimento, $DataReferencia);
	    $moraFatura = (float) number_format($diasAtraso * (($VlrMora * $ValorReferencial / 100) / 30), 2, '.', '');
	}
	if ($multaFatura > 0) {
	    $multaFatura = (float) number_format(($VlrMulta * $ValorReferencial / 100), 2, '.', '');
	}
	$Calculo = (float) trim((($ValorReferencial - $imposto - $vlrDesconto) + ($multaFatura + $moraFatura)));
	if ($vlrFaturado != $Calculo) {
	    echo "Falha na verificação de integridade de valores, atualize a página e tente novamente";
	    exit();
	}

	$RealizaFaturamento = $faturaLancamento->FaturaLancamento($CodCr2, $vlrDesconto, $multaFatura, $moraFatura, $vlrFaturado, $numBoleto, $data, $vencimento, $intru1, $intru2, $_SESSION["id_usuario"], $descricaoBoleto, $multaFatura, $moraFatura, $imposto, $NumeroNF);

	if ($RealizaFaturamento) {
	    echo 1;
	} else {
	    echo $faturaLancamento->getMotivoErro();
	}
	exit();
    }