Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

davilimao93

Sistema de orçamento de Planos

Recommended Posts

Olá,

 

Gostaria de tirar uma dúvida. Sou iniciante em PHP e gostaria de desenvolver um sistema de orçamento de planos, sendo que existem 3 tipos de planos e preços distintos para diferentes tipos de idade.

 

Preço para titular:

 

Ex: Plan1 + Idade até 17  = R$15 
      Plan1 + idade maior que 18 e menor que 48 = R$16

      Plan1 + idade maior que 48 = R$17

 

      Plan2 + Idade até 17 = R$18
      Plan2 + idade maior que 18 e menor que 48 = R$19

      Plan2 + idade maior que 48 = R$20

 

      Plan3 + Idade até 17 = R$21
      Plan3 + idade maior que 18 e menor que 48 = R$22

      Plan3 + idade maior que 48= R$23

 

Porém, cada titular pode adicionar até 3 dependentes no planos, e o valor também varia de acordo com a idade do dependente  e o plano do titular.

 

Ex: Plan1 + Idade do dependente até 17  = Adiciona R$4 ao valor total do plano.
      Plan1 + idade do dependente maior que 18 e menor que 48 = Adiciona R$5 ao valor total do plano.

      Plan1 + idade do dependente maior que 48 = Adiciona R$6 ao valor total do plano.

 

      Plan2 + Idade do dependente até 17  = Adiciona R$7 ao valor total do plano.
      Plan2 + idade do dependente maior que 18 e menor que 48 = Adiciona R$8 ao valor total do plano.

      Plan2 + idade do dependente maior que 48 = Adiciona R$9 ao valor total do plano.

      

      Plan3 + Idade do dependente até 17  = Adiciona R$10 ao valor total do plano.
      Plan3 + idade do dependente maior que 18 e menor que 48 = Adiciona R$11 ao valor total do plano.

      Plan3 + idade do dependente maior que 48 = Adiciona R$12 ao valor total do plano.

 

 Já quebrei a cabeça usando IF, SWICTH e outros, meti a cara em apostilas, porém, não consigo desenvolver esse sistema com essa tamanha complexidade (para mim), gostaria de saber sobre o que preciso estudar em especifico para conseguir desenvolver esse sistema. Fico grato a todos que puderem colaborar.
     

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faço ideia por onde começar, porém acredito que haja forma bem melhor e mais eficiente do que a minha. Olha como estou tentando elaborar, não fiz um banco de dados ainda, pois quero ver se vai funcionar, por enquanto um array está atendendo.

 

Fiz um form, onde o cliente irá informar a idade, o plano, quantidade de dependentes e idade de cada um ( para facilitar nesse item coloquei checkbox informando a idade e ele apenas seleciona e coloca a quantidade de pessoas nessa idade)

 

<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
    <title></title>
</head>
<body>
<form method="POST" action="calc_plano.php">
<label>Idade do Titular</label><br>
<input type="text" name="idadetitular" placeholder="Insira a idade do titular."><br><br>
<label> Selecione o Plano desejado</label>
<select name="planos">
<option>Básico</option>
<option>Semi-Luxo</option>
<option>Luxo</option>
</select>
<br>
<label>Calculo Dependentes</label>
<br>
<input type="checkbox" name="idade1">Até 17 anos </input><input type="text" name="qntdependente1" placeholder=""><br> 
<input type="checkbox" name="idade2">18 à 49 anos </input><input type="text" name="qntdependente2" placeholder=""><br>
<input type="checkbox" name="idade3">50 à 59 anos </input><input type="text" name="qntdependente3" placeholder=""><br>
<input type="checkbox" name="idade4">60 à 69 anos </input><input type="text" name="qntdependente4" placeholder=""><br> 
<input type="checkbox" name="idade5">70 à 79 anos </input><input type="text" name="qntdependente5" placeholder=""><br>
<input type="checkbox" name="idade6">80 à 100 anos </input><input type="text" name="qntdependente6" placeholder=""><br>

<input type="submit" name="calcular" value="Calcular">


</form>
</body>
</html>

 

Agora vem o código.

 

<?php

$idadetitular = $_POST['idadetitular'];

$planos = $_POST['planos'];

$idade1 = isset($_POST['idade1']);
$idade2 = isset($_POST['idade2']);
$idade3 = isset($_POST['idade3']);
$idade4 = isset($_POST['idade4']);
$idade5 = isset($_POST['idade5']);
$idade6 = isset($_POST['idade6']);


$qntdependente1 = isset($_POST['qntdependente1']);
$qntdependente2 = isset($_POST['qntdependente2']);
$qntdependente3 = isset($_POST['qntdependente3']);
$qntdependente4 = isset($_POST['qntdependente4']);
$qntdependente5 = isset($_POST['qntdependente5']);
$qntdependente6 = isset($_POST['qntdependente6']);

$basico = array('15', '20', '30', '40', '5', '10', '15', '20', '30', '40');
$semiluxo = array('30', '40', '50', '60', '15', '20', '25', '30', '40', '50');
$luxo = array('40', '50', '60', '70', '25', '30', '45', '50', '60', '70');


//verifica se $planos foi selecionada
if(isset($planos)){

//calculo titular
//calculo titular menor ou igual 49
if ($idadetitular <= 49 && $planos == 'Básico') {
    echo $basico[0];
}
elseif ($idadetitular <= 49 && $planos == 'Semi-Luxo') {
    echo $semiluxo[0];
}
elseif ($idadetitular <= 49 && $planos == 'Luxo') {
    echo $luxo[0];
}
//calculo titular maior ou igual a 50 e menor ou igual 69
elseif ($idadetitular >= 50 && $idadetitular <= 69 && $planos == 'Básico') {
    echo $basico[1];
}
elseif ($idadetitular  >= 50 && $idadetitular <= 69 && $planos == 'Semi-Luxo') {
    echo $semiluxo[1];
}
elseif ($idadetitular  >= 50 && $idadetitular <= 69 && $planos == 'Luxo') {
    echo $luxo[1];
}

//calculo titular maior ou igual a 70 e menor ou igual 79
elseif ($idadetitular >= 70 && $idadetitular  <= 79 && $planos == 'Básico') {
    echo $basico[2];
}
elseif ($idadetitular >= 70 && $idadetitular <= 79 && $planos == 'Semi-Luxo') {
    echo $semiluxo[2];
}
elseif ($idadetitular >= 70 && $idadetitular <= 79 && $planos == 'Luxo') {
    echo $luxo[2];
}
//calculo titular maior ou igual a 80 e menor ou igual 100
elseif ($idadetitular >= 80 && $idadetitular <= 100 && $planos == 'Básico') {
    echo $basico[3];
}
elseif ($idadetitular >= 80 && $idadetitular <= 100 && $planos == 'Semi-Luxo') {
    echo $semiluxo[3];
}
elseif ($idadetitular >= 80 && $idadetitular <= 100 && $planos == 'Luxo') {
    echo $luxo[3];
}

//calculo dependentes

//calculo titular menor ou igual 49 // dependentes idade 1 a 17 anos
elseif ($idadetitular <= 49 && $planos == 'Básico' && $idade1) {
    echo $basico[0] + ($qntdependente1 * $basico[4]);
}
elseif ($idadetitular <= 49 && $planos == 'Semi-Luxo' && $idade1) {
    echo $semiluxo[0] + ($qntdependente1 * $semiluxo[4]);
}
elseif ($idadetitular <= 49 && $planos == 'Luxo') {
    echo $luxo[0] + ($qntdependente1 * $luxo[4]);
}

//calculo titular menor ou igual 49 // dependentes idade 18 a 49 anos
elseif ($idadetitular <= 49 && $planos == 'Básico' && $idade2) {
    echo $basico[0] + ($quantidade2 * $basico[5]);
}
elseif ($idadetitular <= 49 && $planos == 'Semi-Luxo' && $idade2) {
    echo $semiluxo[0] + ($quantidade2 * $semiluxo[5]);
}
elseif ($idadetitular <= 49 && $planos == 'Luxo' && $idade2) {
    echo $luxo[0] + ($quantidade2 * $luxo[5]);
}

//calculo titular menor ou igual 49 // dependentes idade 50 à 59 anos
elseif ($idadetitular <= 49 && $planos == 'Básico' && $idade3) {
    echo $basico[0] + ($quantidade3 * $basico[6]);
}
elseif ($idadetitular <= 49 && $planos == 'Semi-Luxo' && $idade3) {
    echo $semiluxo[0] + ($quantidade3 * $semiluxo[6]);
}
elseif ($idadetitular <= 49 && $planos == 'Luxo' && $idade3) {
    echo $luxo[0] + ($quantidade3 * $luxo[6]);
}

//calculo titular menor ou igual 49 // dependentes idade 60 a 69 anos
elseif ($idadetitular <= 49 && $planos == 'Básico' && $idade4) {
    echo $basico[0] + ($quantidade4 * $basico[7]);
}
elseif ($idadetitular <= 49 && $planos == 'Semi-Luxo' && $idade4) {
    echo $semiluxo[0] + ($quantidade4 * $semiluxo[7]);
}
elseif ($idadetitular <= 49 && $planos == 'Luxo' && $idade4) {
    echo $luxo[0] + ($quantidade4 * $luxo[7]);
}

//calculo titular menor ou igual 49 // dependentes idade 70 a 79 anos
elseif ($idadetitular <= 49 && $planos == 'Básico' && $idade5) {
    echo $basico[0] + ($quantidade5 * $basico[8]);
}
elseif ($idadetitular <= 49 && $planos == 'Semi-Luxo' && $idade5) {
    echo $semiluxo[0] + ($quantidade5 * $semiluxo[8]);
}
elseif ($idadetitular <= 49 && $planos == 'Luxo' && $idade5) {
    echo $luxo[0] + ($quantidade5 * $luxo[8]);
}

//calculo titular menor ou igual 49 // dependentes idade 80 a 100

elseif ($idadetitular <= 49 && $planos == 'Básico' && $idade6) {
    echo $basico[0] + ($quantidade6 * $basico[9]);
}
elseif ($idadetitular <= 49 && $planos == 'Semi-Luxo' && $idade6) {
    echo $semiluxo[0] + ($quantidade6 * $semiluxo[9]);
}
elseif ($idadetitular <= 49 && $planos == 'Luxo' && $idade6) {
    echo $luxo[0] + ($quantidade6 * $luxo[9]);
}
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por asacap1000
      Olá galera estou quebrando a cabeça aqui e não sei mais o que fazer. Estamos migrando nossa intranet que estava desatualizada demais e estamos colocando toda ela em php7.3.
      Dentro desse sistema temos varias consultas que são realizadas no Oracle. As consultas estão ocorrendo 100% mas ao chegar na plataforma de relatórios travou tudo. Não consegui acertar o meio de consultar por período, já utilizei "to_date, to_char, trunc" e nada. Interessante que no PLSQL o to_date funciona certo
      SELECT DISTINCT TO_DATE(IO.TIME_ARRIVAL)
        FROM IN_OUT IO
       WHERE TO_DATE(IO.TIME_ARRIVAL) BETWEEN '01/11/2021' AND '23/11/2021'
       
      1    04/11/2021
      2    18/11/2021
      3    17/11/2021
      4    14/11/2021
      5    22/11/2021
      6    08/11/2021
      7    11/11/2021
      8    13/11/2021
      9    09/11/2021
      10    10/11/2021
      11    05/11/2021
      12    19/11/2021
      13    15/11/2021
      14    03/11/2021
      15    06/11/2021
      16    23/11/2021
      17    01/11/2021
      18    02/11/2021
      19    16/11/2021
      20    20/11/2021
      21    12/11/2021
      22    21/11/2021
       
      Se eu utilizar ele ignora a data que estabeleci para a consulta
       TO_CHAR(IO.TIME_ARRIVAL,'DD/MM/YYYY') BETWEEN '01/11/2021' AND '23/11/2021'
       
      1    03/07/2013
      2    05/07/2013
      3    18/06/2013
      4    21/05/2013
      5    20/05/2013
      6    12/08/2013
      7    21/08/2013
      8    23/08/2013
      9    02/09/2013
      10    12/09/2013
       
      Isso no PLSQL, no caso do PHP o to_date não funciona nem gera o relatório, e no to_char funciona mas ignorando as datas apontadas.
       
      O que dá pra  fazer pra resolver isso, tenho que finalizar essa migração até final de Dezembro e estou começando a ficar preocupado com o tempo
       
      Agradeço qualquer ajuda que vier
    • Por leticiiaa
      Estou tentando fazer a seguinte inserção de dados no Banco utilizando uma procedure e o erro é:
      #1064 - Você tem um erro de sintaxe no seu SQL próximo a 'VALUES ('Funcionário', 'Luciana', 'Soares', '1', '1900-01-1', 'casa tal', 'DF',' na linha 1
      use db_studiotopfit; call create_user(type_user,nome, sobrenome, sexo, data_nascimento,endereco, uf, cidade, bairro, cpf, rg, email, username, senha, cargo, salario)VALUES ('Funcionário', 'Luciana', 'Soares', '1', '1900-01-1', 'casa tal', 'DF', 'Brasília', 'jnidas', '89076543', '94984984', 'teste@hotmail.com', 'Letícia de', '123', 'dibsadh', '1000') Esta é a definição da minha procedure:
      -- ----------------------------------------------------- -- Procedure `db_studiotopfit`.`create_user` -- ----------------------------------------------------- DELIMITER $$ CREATE PROCEDURE create_user( IN type_user VARCHAR(25), IN cpf BIGINT(11), IN nome VARCHAR(15), IN sobrenome VARCHAR(45), IN sexo TINYINT(1), IN data_nascimento DATE, IN endereco VARCHAR(80), IN uf VARCHAR(2), IN cidade VARCHAR(15), IN bairro VARCHAR(25), IN rg VARCHAR(20), IN email VARCHAR(100), IN username VARCHAR(15), IN password VARCHAR(45), IN cargo VARCHAR(30), IN salario DECIMAL(7, 2)) BEGIN DECLARE user_type INT(4) DEFAULT 0; DECLARE id_matricula INT(4) DEFAULT 0; DECLARE errno INT; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET CURRENT DIAGNOSTICS CONDITION 1 @P1 = MYSQL_ERRNO, @P2 = MESSAGE_TEXT; SELECT @P1 AS 'Código', @P2 AS 'Mensagem'; ROLLBACK; END; START TRANSACTION; SELECT idperfil INTO user_type FROM `perfil` WHERE perfil=type_user ORDER BY idperfil DESC LIMIT 1; INSERT INTO `tb_pessoa` (cpf, nome, sobrenome, sexo, data_nascimento, endereco, uf, cidade, bairro, rg, email) VALUES (cpf, nome, sobrenome, sexo, data_nascimento, endereco, uf, cidade, bairro, rg, email); INSERT INTO `usuario` (id_pessoa_cpf, perfil_idperfil, senha, usuario) VALUES (cpf, user_type, MD5(password), username); CASE type_user WHEN 'Aluno' THEN INSERT INTO `tb_aluno` (id_pessoa_cpf) VALUES (cpf); WHEN 'Funcionário' THEN BEGIN INSERT INTO `tb_funcionario` (id_pessoa_cpf, cargo, salario) VALUES (cpf, cargo, salario); SELECT LAST_INSERT_ID() INTO id_matricula; CASE cargo WHEN 'Professor' THEN INSERT INTO tb_professor (tb_funcionario_id_matricula) VALUES (id_matricula); ELSE BEGIN END; END CASE; END; ELSE BEGIN END; END CASE; COMMIT; END $$ DELIMITER ;  
    • Por Lonn
      Hi
      I need help creating some .exe or .bat that would completely delete some specific files from my computer.
      An app that scans and deletes all files and traces by name + format
      example:
      delete.cfg
      As the specific directory would vary from computer to computer, I would like help to create one that excludes only using the file name and format
      Hope to get answers, thanks!
    • Por TkCode
      Estou tentando desenvolver um código para calcular o valor final de custas de imoveis.
      Exemplo: Entro com um valor de R$50.000,00. Tem o ITBI que é 2% sob os R$50.000,00 + o valor de custas que é o valor de uma tabela (essa tabela tem valores que de R$0,01 até R$17.800,90 é uma valor, e assim sucessivamente)
       
      Então teria que calcular os 2% (do valor informado) + o valor da tabela, dando um resultado final com o valor total (2%+ValorTabela).
       
      Alguem teria como me dar uma dica de como resolver isso?
      Desde já agradeço!
    • Por Sapinn
      Opa galera tudo firmesa? Então, tenho um codigo que faz uma barra aparecer toda vez que eu role a pagina até um certo ponto e tudo funciona normal. Eu gostaria de saber se tem como fazer uma transição nessa barra para ele ir aparecendo devagarzinho com a opacidade em 0 e vai subindo até chegar a 1 coisa de um 0.8s. Não sei como fazer ou se tem como fazer preciso de ajuda.
       
      Codigo js 
       
      window.onscroll = function(){
          var top = window.pageXOffset || document.documentElement.scrollTop
          var barra = document.querySelector(".barra");
          if(top > 900){
              barra.style.display = 'flex';
      //aqui tentei adicionar uma class direto do css para fazer o efeito transition mas sem sucesso.
              barra.classList.add('transition');
          }else{
             barra.style.display = 'none';
          }
      }
       
       
      Codigo css
      .barra{
          width: 100%;
          height: 70px;
          background-color: #090b13;
          display: none;
          justify-content: space-between;
          position: fixed;
          opacity: 0;
      }
      .transition{
          transition: 1s;
          opacity: 0.7;
          
      }
       
      codigo HTML
       
      <div class="barra" >
              <img src="assets/images/logo-nopad.svg" alt="">
              <button class="botao-assinatura-header">Assine Agora</button>
        </div>
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.