public void salvarTratamento() {
    FacesMessage message = new FacesMessage();
    String msg = "TRATAMENTO CADASTRADO COM SUCESSO!";
    message.setSeverity(FacesMessage.SEVERITY_INFO);

    if (this.tratamento.getId() != null) {
      if (this.pacienteSelecionado != null) {
        this.carregarDentista();
        this.tratamento.setPaciente(pacienteSelecionado);
        this.tratamento.setDentista(dentista);
        if (!this.tratamento.getServicosPrestados().isEmpty()) {
          double total = 0;
          for (ServicoPrestado servicoPrestado : this.tratamento.getServicosPrestados()) {
            total = total + servicoPrestado.getValor().doubleValue();
          }
          this.tratamento.getPagamento().setValorTotal(new BigDecimal(total));
        }
        Tratamento t = this.daoGenerico.atualizar(this.tratamento);
        this.tratamento = new Tratamento();
        this.pacienteSelecionado = null;
        this.tratamentoTodos = this.daoGenerico.tratamentoPorDentista(this.dentista);
        if (t == null) {
          msg = "ERRO AO CADASTRAR TRATAMENTO!";
          message.setSeverity(FacesMessage.SEVERITY_ERROR);
        }
      } else {
        msg = "TRATAMENTO CADASTRADO COM SUCESSO!";
        message.setSeverity(FacesMessage.SEVERITY_ERROR);
      }
    } else {
      if (this.pacienteSelecionado != null) {
        this.carregarDentista();
        this.tratamento.setPaciente(pacienteSelecionado);
        this.tratamento.setStatus("ANDAMENTO");
        this.tratamento.getPagamento().setStatusPagamento("ABERTO");
        this.tratamento.setDentista(dentista);
        if (!this.tratamento.getServicosPrestados().isEmpty()) {
          double total = 0;
          for (ServicoPrestado servicoPrestado : this.tratamento.getServicosPrestados()) {
            total = total + servicoPrestado.getValor().doubleValue();
          }
          this.tratamento.getPagamento().setValorTotal(new BigDecimal(total));
        }
        boolean certo = this.daoGenerico.salvar(this.tratamento);
        this.tratamento = new Tratamento();
        this.pacienteSelecionado = null;
        this.tratamentoTodos = this.daoGenerico.tratamentoPorDentista(this.dentista);
        if (!certo) {
          msg = "ERRO AO CADASTRAR TRATAMENTO!";
          message.setSeverity(FacesMessage.SEVERITY_ERROR);
        }
      } else {
        msg = "TRATAMENTO CADASTRADO COM SUCESSO!";
        message.setSeverity(FacesMessage.SEVERITY_ERROR);
      }
    }

    message.setSummary(msg);
    FacesContext.getCurrentInstance().addMessage(null, message);
  }
 public void excluirServicoPrestado(ServicoPrestado sp) {
   List<ServicoPrestado> prestados = this.tratamento.getServicosPrestados();
   for (Iterator<ServicoPrestado> it = prestados.iterator(); it.hasNext(); ) {
     ServicoPrestado servicoPrestado = it.next();
     if (servicoPrestado.equals(sp)) {
       it.remove();
       break;
     }
   }
   this.tratamento.setServicosPrestados(prestados);
 }
  public void gerarOrcamento() {
    FacesMessage message = new FacesMessage();
    String msg = "ORÇAMENTO EMITIDO COM SUCESSO!";
    message.setSeverity(FacesMessage.SEVERITY_INFO);

    if (pacienteSelecionado == null) {
      msg = "SELECIONE UM PACIENTE!";
      message.setSeverity(FacesMessage.SEVERITY_INFO);
    } else if (this.tratamento.getServicosPrestados() == null
        || this.tratamento.getServicosPrestados().isEmpty()) {
      msg = "SELECIONE OS SERVIÇOS À REALIZAR!";
      message.setSeverity(FacesMessage.SEVERITY_INFO);
    } else {
      this.carregarClinica();
      Double total = new Double(0);
      for (ServicoPrestado servicoPrestado : this.tratamento.getServicosPrestados()) {
        total = total + servicoPrestado.getValor().doubleValue();
      }
      HashMap<String, Object> parameterMap = new HashMap<String, Object>();
      String nomepaciente =
          this.pacienteSelecionado.getNome() + " " + this.pacienteSelecionado.getSobrenome();
      String enderecoClinica =
          this.clinica.getEndereco().getLogradouro()
              + ", "
              + this.clinica.getEndereco().getNumero()
              + " - "
              + this.clinica.getEndereco().getBairro()
              + ", "
              + this.clinica.getEndereco().getCidade()
              + "-"
              + this.clinica.getEndereco().getUf();
      String logo =
          FacesContext.getCurrentInstance()
              .getExternalContext()
              .getRealPath("/resources/clinica/" + this.clinica.getLogo());
      parameterMap.put("NOME_PACIENTE", nomepaciente);
      parameterMap.put("CLINICA_LOGO", logo);
      parameterMap.put("CLINICA_ENDERECO", enderecoClinica);
      parameterMap.put("CLINICA_EMAIL", this.clinica.getContato().getEmail());
      parameterMap.put("CLINICA_TELEFONE", this.clinica.getContato().getTelefone());
      parameterMap.put("CLINICA_CELULAR", this.clinica.getContato().getCelular());
      parameterMap.put("TOTAL", total);

      String relatorio = "orcamento.jasper";
      RelatorioUtil.gerarRelatorio(relatorio, parameterMap, this.tratamento.getServicosPrestados());
    }

    message.setSummary(msg);
    FacesContext.getCurrentInstance().addMessage(null, message);
  }
  public void adcionarServicoPrestado() {
    ServicoPrestado sp = null;
    boolean tem = false;
    for (ServicoPrestado servicoPrestado : this.tratamento.getServicosPrestados()) {
      if (servicoPrestado.getServico().equals(this.servicoSelecionado)) {
        tem = true;
        sp = servicoPrestado;
      }
    }

    if (tem) {
      BigDecimal valorAnt = sp.getValor();
      Long novaQuant = sp.getQuantidade() + quantidadeServico;
      sp.setQuantidade(novaQuant);
      BigDecimal novoValor = valorSelecionado.multiply(BigDecimal.valueOf(quantidadeServico));
      BigDecimal valorTotal = valorAnt.add(novoValor);
      sp.setValor(valorTotal);
    } else {
      ServicoPrestado servicoPrestado = new ServicoPrestado();
      servicoPrestado.setQuantidade(quantidadeServico);
      BigDecimal valorTotal = valorSelecionado.multiply(BigDecimal.valueOf(quantidadeServico));
      servicoPrestado.setValor(valorTotal);
      servicoPrestado.setServico(servicoSelecionado);
      List<ServicoPrestado> prestados = this.tratamento.getServicosPrestados();
      prestados.add(servicoPrestado);
      this.tratamento.setServicosPrestados(prestados);
    }

    servicoSelecionado = new Servico();
    quantidadeServico = null;
    valorSelecionado = null;
  }