Skip to content

Commit

Permalink
Merge pull request #638 from nilsonLazarin/gabriel
Browse files Browse the repository at this point in the history
Correção do módulo de saúde e Implementação da emissão de boletos
  • Loading branch information
nilsonLazarin authored Jul 19, 2024
2 parents ed1913a + 436ecbc commit be8abce
Show file tree
Hide file tree
Showing 19 changed files with 849 additions and 274 deletions.
2 changes: 1 addition & 1 deletion BD/wegia001.sql
Original file line number Diff line number Diff line change
Expand Up @@ -1564,7 +1564,7 @@ ENGINE = InnoDB;
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `wegia`.`saude_medicamento_administracao` (
`idsaude_medicamento_administracao` INT NOT NULL AUTO_INCREMENT,
`aplicação` DATETIME NOT NULL,
`aplicacao` DATETIME NOT NULL,
`saude_medicacao_id_medicacao` INT NOT NULL,
`pessoa_id_pessoa` INT(11) NOT NULL,
`funcionario_id_funcionario` INT(11) NOT NULL,
Expand Down
442 changes: 442 additions & 0 deletions html/contribuicao/doacao/index.php

Large diffs are not rendered by default.

203 changes: 203 additions & 0 deletions html/contribuicao/doacao/model/emitirBoleto.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
<?php
//Posteriormente mudar o paradigma para orientação a objetos.
//Recuperar Info BD

require_once("../../php/conexao.php");

$cpf = $_POST['dcpf'];
$cpfSemMascara = preg_replace('/\D/', '', $cpf);

$banco = new Conexao;
$stmt = $banco->pdo;

try {

$req = $stmt->prepare("SELECT pessoa.id_pessoa, pessoa.nome, pessoa.telefone, pessoa.cep, pessoa.estado, pessoa.cidade, pessoa.bairro, pessoa.complemento, pessoa.numero_endereco, socio.id_pessoa, socio.email FROM pessoa, socio WHERE pessoa.id_pessoa = socio.id_pessoa AND pessoa.cpf=:cpf;");
$req->bindParam(":cpf", $cpf);
$req->execute();
$arrayBd = $req->fetch(PDO::FETCH_ASSOC);
//Verificação para validar se o banco de dados retornou algo ou se a resposta está vazia.
if (!empty($arrayBd)) {
$nome = $arrayBd['nome'];
$telefone = $arrayBd['telefone'];
$email = $arrayBd['email'];
$estado = $arrayBd['estado'];
$cidade = $arrayBd['cidade'];
$bairro = $arrayBd['bairro'];
$complemento = $arrayBd['complemento'];
$cep = $arrayBd['cep'];
$n_ender = $arrayBd['numero_endereco'];
} else {
http_response_code(400);
exit('Não foi possível encontrar um sócio cadastrado com o CPF/CNPJ informado, por favor tente novamente.');
}
} catch (PDOException $e) {
die("Erro: Não foi possível buscar o sócio no BD" . $e->getMessage() . ".");
}

$idBoleto = rand(0, 9) . "" . rand(0, 9) . "" . rand(0, 9) . "" . rand(0, 9) . "" . rand(0, 9) . "" . rand(0, 9) . "" . rand(0, 9) . "" . rand(0, 9) . "" . rand(0, 9) . "" . rand(0, 9) . "" . rand(0, 9) . "" . rand(0, 9) . "" . rand(0, 9) . "" . rand(0, 9) . "" . rand(0, 9) . "" . rand(0, 9);
$idBoleto = intval($idBoleto);

$type = "DM";

//Requisição Boleto

//Validação do valor de um boleto
$value = intval($_POST["valor"]);

$regras = $stmt->query("SELECT dbr.min_boleto_uni FROM doacao_boleto_regras AS dbr JOIN doacao_boleto_info AS dbi ON (dbr.id = dbi.id_regras)");
$regras = $regras->fetch(PDO::FETCH_ASSOC);

if($value < $regras['min_boleto_uni']){
echo json_encode('O valor para uma doação está abaixo do mínimo requerido.');
exit();
}

//parcelar
$qtd_p = 1;

$ano = date('Y');
$mes = date('m');
$dia = date('d') + 7;

$aux = 0;

$datas_de_vencimento = array(); // Inicializa o array de datas de vencimento

for ($i = 0; $i <= $qtd_p; $i++) {
if ($mes == 12) {
// Se o mês for 12, ajusta o ano e o mês
$datas_de_vencimento[$i] = ($ano + 1) . "/" . (01) . "/" . ($dia); // Janeiro do próximo ano
} else {
// Incrementa o mês e ajusta para não ultrapassar 12 meses no ano
$mes_atual = $mes + $i;
$ano_atual = $ano + floor(($mes_atual - 1) / 12); // Ajusta o ano conforme o número de meses
$mes_atual = ($mes_atual % 12 == 0) ? 12 : ($mes_atual % 12); // Ajusta o mês dentro do limite de 1 a 12

$datas_de_vencimento[$i] = $ano_atual . "/" . str_pad($mes_atual, 2, '0', STR_PAD_LEFT) . "/" . $dia;
}
}

// Definição inicial da primeira data
$datas_de_vencimento[0] = $ano . "/" . $mes . "/" . $dia;

try {
$req = $stmt->prepare("SELECT doacao_boleto_info.api, doacao_boleto_info.token_api FROM doacao_boleto_info WHERE 1;");
$req->execute();
$arrayBd = $req->fetchAll(PDO::FETCH_ASSOC)[0];
$apikey = $arrayBd['token_api'];
$url = $arrayBd['api'];
} catch (PDOException $e) {
die("Erro: Não foi possível buscar a venda no BD" . $e->getMessage() . ".");
}

$headers = [
'Authorization: Basic ' . base64_encode($apikey . ':'),
'Content-Type: application/json;charset=utf-8',
];

try {
$req = $stmt->prepare("SELECT * FROM `doacao_boleto_regras` WHERE 1;");
$req->execute();
$arrayBd = $req->fetchAll(PDO::FETCH_ASSOC)[0];
$msg = $arrayBd['agradecimento'];
} catch (PDOException $e) {
die("Erro: Não foi possível buscar a venda no BD" . $e->getMessage() . ".");
}

//Boleto
$boleto = [
"items" => [
[
"amount" => $value * 100,
"description" => "Donation",
"quantity" => 1
]
],
"customer" => [
"name" => $nome,
"email" => $email,
"document_type" => "CPF",
"document" => $cpfSemMascara,
"type" => "Individual",
"address" => [
"line_1" => $n_ender . "," . $bairro . "," . $cidade,
"line_2" => $complemento,
"zip_code" => $cep,
"city" => $cidade,
"state" => $estado,
"country" => "BR"
],
],
"payments" => [
[
"payment_method" => "boleto",
"boleto" => [
"instructions" => $msg,
"document_number" => $idBoleto,
"due_at" => $ano . "/" . $mes . "/" . $dia,
"type" => $type
]
]
]
];

$pdf_links = [];
$arquivos = [];

//Transforma o boleto em um objeto JSON
for ($i = 0; $i < $qtd_p; $i++) {
// Atualizar a data de vencimento para cada boleto
$boleto['payments'][0]['boleto']['due_at'] = $datas_de_vencimento[$i];

// Transformar o boleto em JSON
$boleto_json = json_encode($boleto);

// Iniciar a requisição cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $boleto_json);

// Executar a requisição cURL
$response = curl_exec($ch);

// Lidar com a resposta da API (mesmo código de tratamento que você já possui)

// Verifica por erros no cURL
if (curl_errno($ch)) {
echo 'Erro na requisição: ' . curl_error($ch);
curl_close($ch);
exit;
}

// Obtém o código de status HTTP
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

// Fecha a conexão cURL
curl_close($ch);


// Verifica o código de status HTTP
if ($httpCode === 200 || $httpCode === 201) {
$responseData = json_decode($response, true);
$pdf_links[] = $responseData['charges'][0]['last_transaction']['pdf'];
$arquivos[] = $responseData['charges'][0]['last_transaction']['pdf'];
} else {
echo json_encode('Erro: A API retornou o código de status HTTP ' . $httpCode . '<br>');
// Verifica se há mensagens de erro na resposta JSON
$responseData = json_decode($response, true);
if (isset($responseData['errors'])) {
//echo 'Detalhes do erro:';
foreach ($responseData['errors'] as $error) {
//echo '<br> ' . htmlspecialchars($error['message']);
}
}
}
}

foreach ($pdf_links as $pdf_link) {
echo json_encode(['boletoLink' => $pdf_link]);
}
31 changes: 22 additions & 9 deletions html/contribuicao/js/cadastroSocio.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ function socio_cadastrado(doc)
{
var doc = doc;
doc = formata_cpf_cnpj(doc);
$.post("./php/socioCadastrado.php", {'doc':doc}).done(function(data){
$.post("../php/socioCadastrado.php", {'doc':doc}).done(function(data){
console.log("Data agora: ", typeof(data));
if(data == 0 || data.includes("false"))
{
Expand Down Expand Up @@ -62,9 +62,9 @@ function socio_cadastrado(doc)
$("#pag2").hide();
$("#pag3").hide();
$("#form2").fadeIn();
$("#form2").html('<h3>Obrigado por contribuir mais uma vez, '+dados.nome+'!</h3><br><br><div class="container-contact100-form-btn"><span class="contact100-form-btn" id = "gerar_boleto"><i style="margin-right: 15px; " class="fa fa-long-arrow-right m-l-7"aria-hidden="true"></i>GERAR BOLETO</span></div><div style="display: none" class="container-contact100-form-btn"><span class="contact100-form-btn" id = "editar_infos"><i style="margin-right: 15px; " class="fa fa-long-arrow-left m-l-7"aria-hidden="true"></i>EDITAR DADOS CADASTRADOS</span></div><div class="container-contact100-form-btn"><span class="contact100-form-btn"><i style="margin-right: 15px; " aria-hidden="true"></i><a class= "botao" href="../contribuicao/index.php">VOLTAR A PÁGINA INICIAL</a></span></div>');
$("#form2").html('<h3>Obrigado por contribuir mais uma vez, '+dados.nome+'!</h3><br><br><div class="container-contact100-form-btn"><span class="contact100-form-btn" id = "gerar_boleto"><i style="margin-right: 15px; " class="fa fa-long-arrow-right m-l-7"aria-hidden="true"></i>GERAR BOLETO</span></div><div style="display: none" class="container-contact100-form-btn"><span class="contact100-form-btn" id = "editar_infos"><i style="margin-right: 15px; " class="fa fa-long-arrow-left m-l-7"aria-hidden="true"></i>EDITAR DADOS CADASTRADOS</span></div><div class="container-contact100-form-btn"><span class="contact100-form-btn"><i style="margin-right: 15px; " aria-hidden="true"></i><a class= "botao" href="../doacao/index.php">VOLTAR A PÁGINA INICIAL</a></span></div>');

$("#gerar_boleto").click(function(){geraBoleto();});
$("#gerar_boleto").click(function(){geraBoletoNovo();});
$("#editar_infos").click(function(){

$("#form2").hide();
Expand Down Expand Up @@ -106,7 +106,7 @@ function editar_informacoes()
$("#form2").html('<h3> Dados atualizados com sucesso!</h3><br><br><div class="container-contact100-form-btn"><span class="contact100-form-btn" id = "dados_atualizados"><i style="margin-right: 15px; " class="fa fa-long-arrow m-l-7"aria-hidden="true"></i>OK</span></div>')
$("#pag3").hide();
$("#dados_atualizados").click(function(){$("#form2").html('<h3>Obrigado por contribuir mais uma vez, '+nome+'!</h3><br><br><div class="container-contact100-form-btn"><span class="contact100-form-btn" id = "gerar_boleto"><i style="margin-right: 15px; " class="fa fa-long-arrow-right m-l-7"aria-hidden="true"></i>GERAR BOLETO</span></div><div style="display: none" class="container-contact100-form-btn"><span class="contact100-form-btn" id = "editar_infos"><i style="margin-right: 15px; " class="fa fa-long-arrow-left m-l-7"aria-hidden="true"></i>EDITAR DADOS CADASTRADOS</span></div><div class="container-contact100-form-btn"><span class="contact100-form-btn"><i style="margin-right: 15px; " aria-hidden="true"></i><a class= "botao" href="../contribuicao/index.php">VOLTAR A PÁGINA INICIAL</a></span></div>');
$("#gerar_boleto").click(function(){geraBoleto();});
$("#gerar_boleto").click(function(){geraBoletoNovo();});
$("#editar_infos").click(function(){

$("#form2").hide();
Expand All @@ -123,7 +123,7 @@ function editar_informacoes()
function cadastra_socio()
{

var id_sociotipo = tipo_socio();
var id_sociotipo = tipoSocioNovo();

var horadata = new Date();
var horaAtual = horadata.getHours();
Expand Down Expand Up @@ -165,8 +165,8 @@ function cadastra_socio()
doc = formata_cpf_cnpj(doc);
var dataN = ano.concat("-",mes,"-",dia);

$.post("./php/cadastrarSocio.php", {'tipo':fisjur, 'nome':nome, 'sobrenome': sobrenome, 'telefone':telefone, 'cep':cep, 'log':log, 'comp':comp, 'bairro':bairro, 'cidade':cidade, 'uf':uf, 'numero': num, 'doc':doc,'datanascimento':dataN, 'hora':hora, 'sistema':sistema, 'contato':email, 'id_sociotipo': id_sociotipo, 'status': status, 'datavencimento':data_vencimento, 'valor_doacao':valor_contribuicao}).done(function(data){console.log(data)
geraBoleto();
$.post("../php/cadastrarSocio.php", {'tipo':fisjur, 'nome':nome, 'sobrenome': sobrenome, 'telefone':telefone, 'cep':cep, 'log':log, 'comp':comp, 'bairro':bairro, 'cidade':cidade, 'uf':uf, 'numero': num, 'doc':doc,'datanascimento':dataN, 'hora':hora, 'sistema':sistema, 'contato':email, 'id_sociotipo': id_sociotipo, 'status': status, 'datavencimento':data_vencimento, 'valor_doacao':valor_contribuicao}).done(function(data){console.log(data)
geraBoletoNovo();
});


Expand All @@ -180,8 +180,8 @@ function cadastra_socio()
doc = formata_cpf_cnpj(doc);
dataN = "0000-00-00"

$.post("./php/cadastrarSocio.php", {'tipo':fisjur, 'nome':nome, 'sobrenome':sobrenome, 'telefone':telefone, 'cep':cep, 'log':log, 'comp':comp, 'bairro':bairro, 'cidade':cidade, 'uf':uf, 'numero': num, 'doc':doc,'datanascimento':dataN, 'hora':hora, 'sistema':sistema, 'contato':email, 'id_sociotipo': id_sociotipo, 'status': status, 'datavencimento':data_vencimento, 'valor_doacao':valor_contribuicao}).done(function(data){console.log(data);
geraBoleto();
$.post("../php/cadastrarSocio.php", {'tipo':fisjur, 'nome':nome, 'sobrenome':sobrenome, 'telefone':telefone, 'cep':cep, 'log':log, 'comp':comp, 'bairro':bairro, 'cidade':cidade, 'uf':uf, 'numero': num, 'doc':doc,'datanascimento':dataN, 'hora':hora, 'sistema':sistema, 'contato':email, 'id_sociotipo': id_sociotipo, 'status': status, 'datavencimento':data_vencimento, 'valor_doacao':valor_contribuicao}).done(function(data){console.log(data);
geraBoletoNovo();
});


Expand Down Expand Up @@ -268,3 +268,16 @@ function tipo_socio(){

return tipo_doacao;
}

function tipoSocioNovo(){

let tipoDoacao;

if($("#op_cpf").prop('checked')){
tipoDoacao = '0';
}else if($("#op_cnpj").prop('checked')){
tipoDoacao = '1';
}

return tipoDoacao;
}
36 changes: 36 additions & 0 deletions html/contribuicao/js/geraboleto.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,42 @@ function CadastraCobrancas(carneBoletos, id,valor){

}

function geraBoletoNovo(){
console.log('Nova geração de boleto.');
//Enviar um post para ./model/emitirBoleto.php com as informações do CPF e do valor da doação

let cpfCnpj;

if($("#op_cpf").prop('checked')){
cpfCnpj = document.getElementById("dcpf").value;
}else if($("#op_cnpj").prop('checked')){
cpfCnpj = document.getElementById("dcnpj").value;
}

const valor = document.getElementById("v").value;
//const cpfCnpj = document.getElementById("dcpf").value;

console.log("Valor doação: "+valor);
console.log("CPF/CNPJ: "+cpfCnpj);

$.post("./model/emitirBoleto.php", {
"dcpf": cpfCnpj,
"valor": valor
}).done(function(r){
const resposta = JSON.parse(r);
if(resposta.boletoLink){
console.log(resposta.boletoLink);
// Redirecionar o usuário para o link do boleto em uma nova aba
window.open(resposta.boletoLink, '_blank');
// Desativar o clique no span
$('#gerar_boleto').addClass('disabled');
$('#avanca3').addClass('disabled');
}else{
alert("Ops! Ocorreu um problema na geração do seu boleto, tente novamente, se o erro persistir contate o suporte.");
}
});
}

function geraBoleto()
{
$.post("./php/infoBoletoFacil.php").done(function(data)
Expand Down
9 changes: 8 additions & 1 deletion html/contribuicao/js/transicoes.js
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ function transicoes()
$("#tipo_cartao").hide();
$("#cartao_mensal").hide();
$("#cartao_unica").hide();
$("#input").hide();
//$("#input").hide();
$("#pag2").hide();
$("#pag3").hide();
$("#cnpj").hide();
Expand Down Expand Up @@ -249,6 +249,13 @@ function transicoes()

});

$("#avanca-novo").click(function()
{
console.log('Avança novo');
verificarNovo();

});

$("#avanca2").click(function()
{
verifica2();
Expand Down
34 changes: 34 additions & 0 deletions html/contribuicao/js/verificar.js
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,40 @@ function verificar()
}
}
}

//verificarNovo
function verificarNovo(){
var valor = $("#v").val();
var val_min = $("#valunic").val(); //vem do bd
val_min = val_min.split('.');
valor = valor.split('.');
val_min = parseInt(val_min);
valor = parseInt(valor);

if(isNaN(valor) || valor[0] == 0)
{
$("#avisa_valor").html("Digite um valor para doação");

}
else
{
if(valor < val_min)
{

$("#avisa_valor").html("O valor mínimo para doação é <i>R$"+val_min+"</i>");

}else{

$("#avisa_valor").html("");
$("#verifica_socio").fadeIn();
$("#pag1").hide();
}

}
}



function verifica2()
{
if($("#op_cpf").prop('checked'))
Expand Down
Loading

0 comments on commit be8abce

Please sign in to comment.