diff --git a/.gitignore b/.gitignore index 037d1ff3..d74f1823 100755 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ config.php BD/.idea/ html/contribuicao/pdfs/ +html/socio/sistema/tabelas/ diff --git a/html/contribuicao/controller/ContribuicaoLogController.php b/html/contribuicao/controller/ContribuicaoLogController.php index 15b8e83c..7bb44cbe 100755 --- a/html/contribuicao/controller/ContribuicaoLogController.php +++ b/html/contribuicao/controller/ContribuicaoLogController.php @@ -452,7 +452,11 @@ public function criarQRCode() caso o serviço de pagamento tenha sido executado*/ $this->pdo->beginTransaction(); $contribuicaoLogDao = new ContribuicaoLogDAO($this->pdo); - $contribuicaoLogDao->criar($contribuicaoLog); + $contribuicaoLog = $contribuicaoLogDao->criar($contribuicaoLog); + + //Adicionar mensagem de agradecimento + $agradecimento = $contribuicaoLogDao->getAgradecimento(); + $contribuicaoLog->setAgradecimento($agradecimento); //Registrar na tabela de socio_log $mensagem = "Pix gerado recentemente"; diff --git a/html/contribuicao/service/PagarMePixService.php b/html/contribuicao/service/PagarMePixService.php index e524b87e..4c2e4b40 100644 --- a/html/contribuicao/service/PagarMePixService.php +++ b/html/contribuicao/service/PagarMePixService.php @@ -18,7 +18,7 @@ public function gerarQrCode(ContribuicaoLog $contribuicaoLog) } // Configuração dos dados para a API - $description = 'Doação'; + $description = $contribuicaoLog->getAgradecimento(); $expires_in = 3600; $headers = [ @@ -63,8 +63,8 @@ public function gerarQrCode(ContribuicaoLog $contribuicaoLog) 'expires_in' => $expires_in, 'additional_information' => [ [ - 'name' => 'Teste', - 'value' => '1' + 'name' => "Doação via pix", + 'value' => "{$contribuicaoLog->getValor()}" ] ] ] diff --git a/html/funcionario/pre_cadastro_funcionario.php b/html/funcionario/pre_cadastro_funcionario.php index 3cdb7af4..d21169b3 100644 --- a/html/funcionario/pre_cadastro_funcionario.php +++ b/html/funcionario/pre_cadastro_funcionario.php @@ -242,14 +242,14 @@
- '. $msg .' + '. htmlspecialchars($msg) .' '); }else if(isset($_GET['msg_e'])){ - $msg = $_GET['msg_e']; + $msg = filter_input(INPUT_GET, 'msg_e', FILTER_SANITIZE_STRING); echo(''); } ?> diff --git a/html/geral/listar_permissoes.php b/html/geral/listar_permissoes.php index 6014a796..9b991ac4 100755 --- a/html/geral/listar_permissoes.php +++ b/html/geral/listar_permissoes.php @@ -161,14 +161,14 @@
- '. $msg .' + '. htmlspecialchars($msg) .'
'); }else if(isset($_GET['msg_e'])){ - $msg = $_GET['msg_e']; + $msg = trim(filter_input(INPUT_GET, 'msg_e', FILTER_SANITIZE_STRING)); echo(''); } ?> diff --git a/html/geral/modulos_visiveis.php b/html/geral/modulos_visiveis.php index a11f1818..dbcf3c30 100644 --- a/html/geral/modulos_visiveis.php +++ b/html/geral/modulos_visiveis.php @@ -176,13 +176,13 @@
- '. $msg .' + '. htmlspecialchars($msg) .' '); } if($permissao == 1){ - echo($msg." - ".$permissao); + echo(htmlspecialchars($msg)." - ".$permissao); }else{ ?>
diff --git a/html/relatorio_geracao.php b/html/relatorio_geracao.php index 11779bd4..89d3927f 100755 --- a/html/relatorio_geracao.php +++ b/html/relatorio_geracao.php @@ -317,11 +317,12 @@ function quickQuery($query, $column) Quantidade Descrição Data de Registro'); echo ('Valor Unitário'); } else { echo ('Preço Médio'); } ?> - Total + Total diff --git a/html/relatorios/Relatorio_item.php b/html/relatorios/Relatorio_item.php index 74b5eaf3..bd7183d2 100755 --- a/html/relatorios/Relatorio_item.php +++ b/html/relatorios/Relatorio_item.php @@ -1,5 +1,6 @@ setQuery(" SELECT - SUM(ientrada.qtd) as qtd_total, produto.descricao, SUM(ientrada.qtd*ientrada.valor_unitario) as valor_total, ientrada.valor_unitario + SUM(ientrada.qtd) as qtd_total, produto.descricao, SUM(ientrada.qtd*ientrada.valor_unitario) as valor_total, ientrada.valor_unitario, entrada.data as data FROM ientrada LEFT JOIN produto ON produto.id_produto = ientrada.id_produto LEFT JOIN entrada ON entrada.id_entrada = ientrada.id_entrada @@ -96,9 +97,10 @@ private function entrada(){ }else{ $this->setQuery(" SELECT - SUM(ientrada.qtd) as qtd_total, produto.descricao, SUM(ientrada.qtd*ientrada.valor_unitario) as valor_total, ientrada.valor_unitario + SUM(ientrada.qtd) as qtd_total, produto.descricao, SUM(ientrada.qtd*ientrada.valor_unitario) as valor_total, ientrada.valor_unitario, entrada.data as data FROM ientrada LEFT JOIN produto ON produto.id_produto = ientrada.id_produto + LEFT JOIN entrada ON entrada.id_entrada = ientrada.id_entrada WHERE ientrada.qtd > 0 AND ientrada.oculto = false GROUP BY concat(ientrada.id_produto,ientrada.valor_unitario) ORDER BY produto.descricao @@ -138,7 +140,7 @@ private function saida(){ $this->setQuery(" SELECT - SUM(isaida.qtd) as qtd_total, produto.descricao, SUM(isaida.qtd*isaida.valor_unitario) as valor_total, isaida.valor_unitario + SUM(isaida.qtd) as qtd_total, produto.descricao, SUM(isaida.qtd*isaida.valor_unitario) as valor_total, isaida.valor_unitario, saida.data as data FROM isaida LEFT JOIN produto ON produto.id_produto = isaida.id_produto LEFT JOIN saida ON saida.id_saida = isaida.id_saida @@ -154,9 +156,10 @@ private function saida(){ }else{ $this->setQuery(" SELECT - SUM(isaida.qtd) as qtd_total, produto.descricao, SUM(isaida.qtd*isaida.valor_unitario) as valor_total, isaida.valor_unitario + SUM(isaida.qtd) as qtd_total, produto.descricao, SUM(isaida.qtd*isaida.valor_unitario) as valor_total, isaida.valor_unitario, saida.data as data FROM isaida LEFT JOIN produto ON produto.id_produto = isaida.id_produto + LEFT JOIN saida ON saida.id_saida = isaida.id_saida WHERE isaida.qtd > 0 AND isaida.oculto = false GROUP BY concat(isaida.id_produto,isaida.valor_unitario) ORDER BY produto.descricao @@ -285,10 +288,12 @@ public function display(){ '); }else{ + $util = new Util(); echo(' '.$item['qtd_total'].' '.$item['descricao'].' + '.$util->formatoDataDMY($item['data']).' R$ '.number_format($item['valor_unitario'],2).' R$ '.number_format($item['valor_total'],2).' diff --git a/html/socio/sistema/controller/.htaccess b/html/socio/sistema/controller/.htaccess new file mode 100644 index 00000000..1087b673 --- /dev/null +++ b/html/socio/sistema/controller/.htaccess @@ -0,0 +1,5 @@ + + SetHandler none + SetHandler default-handler + Options -ExecCGI + \ No newline at end of file diff --git a/html/socio/sistema/controller/CobrancaController.php b/html/socio/sistema/controller/CobrancaController.php index f38ce761..cdb1be5e 100644 --- a/html/socio/sistema/controller/CobrancaController.php +++ b/html/socio/sistema/controller/CobrancaController.php @@ -12,9 +12,52 @@ /**Extrai os dados do formulário, instancia os objetos necessários e chama o método de inserirCobranca() do CobrancaDAO */ function cadastrarCobranca() { - extract($_REQUEST); - //print_r($_REQUEST); - //adicionar uma forma de gerar um código + + $socio_id = trim(filter_input(INPUT_POST, 'socio_id', FILTER_VALIDATE_INT)); + $local_recepcao = trim(filter_input(INPUT_POST, 'local_recepcao', FILTER_SANITIZE_STRING)); + $valor_cobranca = trim(filter_input(INPUT_POST, 'valor_cobranca', FILTER_SANITIZE_NUMBER_INT)); + $forma_doacao = trim(filter_input(INPUT_POST, 'forma_doacao', FILTER_SANITIZE_STRING)); + $data_doacao = trim(filter_input(INPUT_POST, 'data_doacao', FILTER_SANITIZE_STRING)); + $receptor = trim(filter_input(INPUT_POST, 'receptor', FILTER_SANITIZE_STRING)); + + if (!$socio_id || $socio_id < 1) { + http_response_code(400); + echo json_encode(['erro' => 'O id de um sócio deve ser um inteiro positivo maior ou igual a 1.']); + exit(); + } + + if (!$local_recepcao || strlen($local_recepcao) < 1) { + http_response_code(400); + echo json_encode(['erro' => 'Informe um local de recpção válido']); + exit(); + } + + if (!$valor_cobranca || $valor_cobranca < 0) { + http_response_code(400); + echo json_encode(['erro' => 'O valor de uma cobrança não pode ser negativo']); + exit(); + } + + if (!$forma_doacao || strlen($forma_doacao) < 1) { + http_response_code(400); + echo json_encode(['erro' => 'Informe uma forma de doação válida']); + exit(); + } + + $dataArray = explode('-', $data_doacao); + + if (!$data_doacao || !checkdate(intval($dataArray[1]), intval(($dataArray[2])), intval($dataArray[0]))) { + http_response_code(400); + echo json_encode(['erro' => 'A data de doação informada não é válida']); + exit(); + } + + if (!$receptor || strlen($receptor) < 1) { + http_response_code(400); + echo json_encode(['erro' => 'O receptor informado não possuí um documento válido']); + exit(); + } + $cobranca = new Cobranca(); $cobranca->setIdSocio($socio_id); $cobranca->setLocalRecepcao($local_recepcao); @@ -24,10 +67,12 @@ function cadastrarCobranca() $cobranca->setReceptor($receptor); $cobrancaDAO = new CobrancaDAO(); - try{ + try { $cobrancaDAO->inserirCobranca($cobranca); header('Location: ../cobrancas.php'); - }catch(PDOException $e){ - $e->getMessage(); - } + } catch (PDOException $e) { + http_response_code(500); + echo json_encode(['erro' => 'Erro no servidor ao registrar cobrança']); + exit(); + } } diff --git a/html/socio/sistema/controller/controla_xlsx.php b/html/socio/sistema/controller/controla_xlsx.php index f54daf49..0de5564e 100755 --- a/html/socio/sistema/controller/controla_xlsx.php +++ b/html/socio/sistema/controller/controla_xlsx.php @@ -1,30 +1,101 @@ 'Acesso não autorizado, usuário não está logado.']); + exit(); +} + +permissao($_SESSION['id_pessoa'], 4, 3); + + // Inicializa a resposta padrão $r = array( - "resultado"=> false, - "url"=> null + "resultado" => false, + "mensagem" => "Ocorreu um erro ao processar o arquivo." ); - if(!is_dir("../tabelas/")){ - if(mkdir("../tabelas")){ - mkdir("../tabelas/cobrancas/"); + + // Diretório seguro para armazenamento de arquivos + $diretorio = "../tabelas/"; + + // Cria os diretórios necessários, se não existirem + if (!is_dir($diretorio)) { + if (!mkdir($diretorio, 0755, true)) { + $r['mensagem'] = "Erro ao criar diretório de upload."; + echo json_encode($r); + exit; } } - if(!empty($_FILES['arquivo']['name'])){ - $bloqueados = array('php', 'exe', 'sh', 'bat', 'js', 'html', 'htm'); - $extensao = strtolower(pathinfo($_FILES['arquivo']['name'], PATHINFO_EXTENSION)); - if (!in_array($extensao, $bloqueados)) { + if (!empty($_FILES['arquivo']['name'])) { + // Lista de extensões e tipos MIME permitidos + $extensoesPermitidas = array('jpg', 'jpeg', 'png', 'gif'); + $tiposMimePermitidos = array('image/jpeg', 'image/png', 'image/gif'); + + // Obtém o nome e extensão do arquivo + $file_name_original = basename($_FILES['arquivo']['name']); + $extensao = strtolower(pathinfo($file_name_original, PATHINFO_EXTENSION)); + + if (in_array($extensao, $permitidos)) { $file_name = preg_replace("/[^a-zA-Z0-9\._-]/", "_", basename($_FILES['arquivo']['name'])); - if (move_uploaded_file($_FILES['arquivo']['tmp_name'], "../tabelas/".$file_name)) { + if (move_uploaded_file($_FILES['arquivo']['tmp_name'], "../tabelas/" . $file_name)) { $r['resultado'] = true; - $r['url'] = "./tabelas/".htmlspecialchars($file_name, ENT_QUOTES, 'UTF-8'); + $r['url'] = "./tabelas/" . htmlspecialchars($file_name, ENT_QUOTES, 'UTF-8'); } else { - $r['url'] = "Erro ao mover o arquivo."; + $r['url'] = "Erro ao mover o arquivo."; } } else { - $r['url'] = "Tipo de arquivo não permitido."; + $r['url'] = "Tipo de arquivo não permitido."; } } + // Verifica se a extensão é permitida + if (!in_array($extensao, $extensoesPermitidas)) { + $r['mensagem'] = "Extensão de arquivo não permitida."; + echo json_encode($r); + exit; + } + + // Obtém o tipo MIME do arquivo + $finfo = finfo_open(FILEINFO_MIME_TYPE); + $tipoMime = finfo_file($finfo, $_FILES['arquivo']['tmp_name']); + finfo_close($finfo); + + // Verifica se o tipo MIME é permitido + if (!in_array($tipoMime, $tiposMimePermitidos)) { + $r['mensagem'] = "Tipo de arquivo inválido."; + echo json_encode($r); + exit; + } + + // Sanitiza e gera um nome de arquivo único + $file_name_sanitized = preg_replace("/[^a-zA-Z0-9\._-]/", "_", pathinfo($file_name_original, PATHINFO_FILENAME)); + $file_name = uniqid() . "_" . $file_name_sanitized . '.' . $extensao; + + // Verifica se o arquivo já existe (mesmo com nomes únicos, esta é uma garantia extra) + $destino = $diretorio . $file_name; + if (file_exists($destino)) { + $r['mensagem'] = "Um arquivo com o mesmo nome já existe."; + echo json_encode($r); + exit; + } + + // Verifica se o arquivo é realmente uma imagem válida + if (!getimagesize($_FILES['arquivo']['tmp_name'])) { + $r['mensagem'] = "O arquivo enviado não é uma imagem válida."; + echo json_encode($r); + exit; + } + + // Move o arquivo para o diretório seguro + if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $destino)) { + $r['resultado'] = true; + $r['mensagem'] = "Upload realizado com sucesso."; + $r['url'] = "./tabelas/" . urlencode($file_name); // Codifica a URL para evitar problemas + } else { + $r['mensagem'] = "Erro ao mover o arquivo para o diretório de destino."; + } - echo(json_encode($r)) -?> \ No newline at end of file +echo (json_encode($r)); diff --git a/html/socio/sistema/controller/controla_xlsx_cobranca.php b/html/socio/sistema/controller/controla_xlsx_cobranca.php index a6510b1c..1a056e34 100755 --- a/html/socio/sistema/controller/controla_xlsx_cobranca.php +++ b/html/socio/sistema/controller/controla_xlsx_cobranca.php @@ -1,7 +1,19 @@ 'Acesso não autorizado, usuário não está logado.']); + exit(); +} + +permissao($_SESSION['id_pessoa'], 4, 3); + $r = array( - "resultado"=> false, - "url"=> null + "resultado" => false, + "url" => null ); if (!is_dir("../tabelas/")) { @@ -11,15 +23,15 @@ } if (!empty($_FILES['arquivo']['name'])) { - $bloqueados = array('php', 'exe', 'sh', 'bat', 'js', 'html', 'htm'); + $permitidos = array('xlsx'); $extensao = strtolower(pathinfo($_FILES['arquivo']['name'], PATHINFO_EXTENSION)); - if (!in_array($extensao, $bloqueados)) { + if (in_array($extensao, $permitidos)) { $file_name = preg_replace("/[^a-zA-Z0-9\._-]/", "_", basename($_FILES['arquivo']['name'])); - if (move_uploaded_file($_FILES['arquivo']['tmp_name'], "../tabelas/cobrancas/".$file_name)) { + if (move_uploaded_file($_FILES['arquivo']['tmp_name'], "../tabelas/cobrancas/" . $file_name)) { $r['resultado'] = true; - $r['url'] = "./tabelas/cobrancas/".$file_name; + $r['url'] = "./tabelas/cobrancas/" . htmlspecialchars($file_name); } else { $r['url'] = "Erro ao mover o arquivo."; } @@ -29,4 +41,3 @@ } echo json_encode($r); -?> diff --git a/html/socio/sistema/controller/import_conteudo_editarsocios.php b/html/socio/sistema/controller/import_conteudo_editarsocios.php index 8e898e8d..42a525da 100755 --- a/html/socio/sistema/controller/import_conteudo_editarsocios.php +++ b/html/socio/sistema/controller/import_conteudo_editarsocios.php @@ -1,295 +1,320 @@ + +
- - - -
- - - + + + +
+ + + -
- +
+ - -
+ +
-
-

Editar sócio

-
-
+
+

Editar sócio

+
+
- - -
-
+ +
+
- + +
+
+ + +
+
+
+ + +
+ + +
-
- - -
-
-
- - -
- - -
-
-
-
- - -
-
- - -
-
- -
-
- - +
+
+ + +
+
+ +
+
+ + -
-
- - +
+
+ + -
-
- - -
- - -
- - -
-
-
-
- - -
-
- - -
-
-
-
- - +
+
+ + +
+ + +
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+ + -
-
-
-
- - - - - -
-
- -
-
-

Endereço

-
-
-
-
- -
- - + +
-
+
+
+ + + + + +
-
-
-
- - + +
+
+

Endereço

+
+
+
+
+ +
+ + +
+
-
- - -
-
-
-
- - +
+
+
+ +
-
- - -
-
-
-
- - +
+ + +
+
+
+
+ + +
+
+ +
-
- - +
+
+
+ + +
+
+ + +
+
+
+ Cancelar + +
+
+
-
-
- Cancelar - -
-
- +
- -
-
- -
-
-
+
+ +
+ + + if (sociotipo >= 0 && sociotipo <= 13) { + console.log("boleto"); + } else if (sociotipo >= 10 && sociotipo <= 31) { + $("#tipo_contribuicao").val("2"); + console.log("cartão"); + } else { + $("#tipo_contribuicao").val("3"); + console.log("outro"); + } + \ No newline at end of file diff --git a/html/socio/sistema/editar_socio.php b/html/socio/sistema/editar_socio.php index 3065da63..23d0d7f6 100755 --- a/html/socio/sistema/editar_socio.php +++ b/html/socio/sistema/editar_socio.php @@ -1,159 +1,171 @@ + - - - Sócios - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - + + + + - - + + - - + + - + - + - + - - + + - - - - - - - - + + + + + + + + - - + + - - + + - - + + - + - - - - - + + + + + + - + + \ No newline at end of file diff --git a/html/socio/sistema/relatorios_socios.php b/html/socio/sistema/relatorios_socios.php index dd519dba..9dd2b8f1 100644 --- a/html/socio/sistema/relatorios_socios.php +++ b/html/socio/sistema/relatorios_socios.php @@ -1,6 +1,5 @@