Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Solicitação para merge da pre-release para a master #648

Merged
merged 11 commits into from
Jul 22, 2024
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