JSF2.1 + primefaces Rc2

Ola sou novo aqui, pesquisei e não consegui achar uma solução para o meu problema.

O problema é o seguinte!

Estou tentando editar um funcionário em DIALOG, mais só funciona quando eu dou um refresh na página, sem o refresh ele não edita.

DIALOG

<p:dialog header=“Editar Usuario” widgetVar=“editDialog” closable=“true” position=“center” width=“700”
showEffect=“slide” hideEffect=“fold” modal=“true” visible=“false” >

            <p:outputPanel id="dadosAEditar" rendered="true">
                <h:panelGrid columns="2" >
                    <h:outputText value="Nome" />
                    <h:inputText value="#{apontamentoMB.funcSelected.nome}" />

                    <h:outputText value="Cod. Microsiga" />
                        <h:inputText value="#{apontamentoMB.funcSelected.codMicrosiga}" />

                    <h:outputText value="Centro Custo" />
                        <h:inputText value="#{apontamentoMB.funcSelected.ccusto}" />
                    
                    <h:outputText value="MOD" />
                        <h:inputText value="#{apontamentoMB.funcSelected.funMod}" />
                    
                     <h:outputText value="Responsavel Setor" />
                     <h:selectOneMenu value="#{apontamentoMB.funcSelected.responsavelSetor}">
                         <f:selectItems value="#{apontamentoMB.listSN}"  />
                    </h:selectOneMenu>
                     
                    <h:outputText value="Apontar N vezes" />
                    <h:selectOneMenu value="#{apontamentoMB.funcSelected.apontarNvezes}">
                        <f:selectItems value="#{apontamentoMB.listSN}" />
                    </h:selectOneMenu>

                    
                    <h:outputText value="Empresa" />
                    <h:inputText value="#{apontamentoMB.funcSelected.empresa}" />

                    <h:outputText value="Filial" />
                    <h:inputText value="#{apontamentoMB.funcSelected.filial}"  />
                    
            <p:commandButton  actionListener="#{apontamentoMB.atualizarFuncionario}" value="Atualizar"  update="dadosAEditar,paramTblFunc,msgs"/>      
            <p:commandButton oncomplete="editDialog.hide();" value="Fechar"/>  

                </h:panelGrid>
            </p:outputPanel>

        </p:dialog>

Função chamada

 public void atualizarFuncionario(ActionEvent e) {
        msg("Atualizar funcionario", funcSelected.getEmpresa(), 3);
    
    String message = dao.atualizarFuncionario(funcSelected);
    
    if (message.startsWith("Falha")) {
        msg("Atualizar funcionario", message, 3);
    } else {
        msg("Atualizar funcionario", message, 1);    
    }
}

Obrigado desde ja
Abraços

Coloca um ajax=“false” no seu commandButton e testa.

opa amigo continuou a mesmo coisa so funciona se dar um f5 na pagina

Envolve com um <h:form> o seu dialog que acredito que funcione

outra coisa que testaria seria colocar ajax=“false” em cada <h:inputText />

não funciona tambem

com o h:form nem dando o refrash funciona

Coloca o código dentro ta tag [code] blz… :smiley:

o seu apontamentoMB está como session ou request ?

tenta assim…


<p:dialog header="Editar Usuario" widgetVar="editDialog" closable="true" position="center" width="700"
showEffect="slide" hideEffect="fold" modal="true" visible="false" >

<h:form id="formulario">
<p:outputPanel id="dadosAEditar" rendered="true">
<h:panelGrid columns="2" >
<h:outputText value="Nome" />
<h:inputText value="#{apontamentoMB.funcSelected.nome}" />

<h:outputText value="Cod. Microsiga" />
<h:inputText value="#{apontamentoMB.funcSelected.codMicrosiga}" />

<h:outputText value="Centro Custo" />
<h:inputText value="#{apontamentoMB.funcSelected.ccusto}" />

<h:outputText value="MOD" />
<h:inputText value="#{apontamentoMB.funcSelected.funMod}" />

<h:outputText value="Responsavel Setor" />
<h:selectOneMenu value="#{apontamentoMB.funcSelected.responsavelSetor}">
<f:selectItems value="#{apontamentoMB.listSN}" />
</h:selectOneMenu>

<h:outputText value="Apontar N vezes" />
<h:selectOneMenu value="#{apontamentoMB.funcSelected.apontarNvezes}">
<f:selectItems value="#{apontamentoMB.listSN}" />
</h:selectOneMenu>


<h:outputText value="Empresa" />
<h:inputText value="#{apontamentoMB.funcSelected.empresa}" />

<h:outputText value="Filial" />
<h:inputText value="#{apontamentoMB.funcSelected.filial}" />

<p:commandButton actionListener="#{apontamentoMB.atualizarFuncionario}" value="Atualizar" update="formulario"/>
<p:commandButton oncomplete="editDialog.hide();" value="Fechar"/>

</h:panelGrid>
</p:outputPanel>
</h:form>
</p:dialog> 

opa nenhuma alteração funcionou
valew ai galera pela a ajuda

opa nenhuma alteração funcionou
valew ai galera pela a ajuda

Ai vai o codigo completo

ApontamentoMB

package beans;

import dao.ApontamentoDAO;
import dao.MicrosigaDAO;
import java.io.IOException;
import java.io.Serializable;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;

import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.AjaxBehaviorEvent;

import util.Parametro;
import vo.Apontamento;
import vo.Funcionario;
import vo.Intervalo;

/**
*

  • @author Romulo
    */
    @ManagedBean(name = “apontamentoMB”, eager = false)
    @SessionScoped
    public class ApontamentoMB implements Serializable {

    private String dataHoraTela;
    private Apontamento selected;
    private ArrayList list;
    private String ordem;
    private String codfunc;
    private String operacao;
    private String recurso;
    private float quantidade;
    private String motivo;
    private String tempoOP;
    private String ccusto;
    private String funMod;
    private String empresa;
    private String filial;
    private boolean apontamentoOK;
    private boolean configOK;
    private boolean funcionarioOK;
    private boolean iniciando;
    private Apontamento apo;
    private ApontamentoDAO dao;
    private String telaAtual;
    private boolean initilized = false;
    private Funcionario funcSelected;
    private Funcionario funcCadastro;
    private ArrayList listFunc;
    private ArrayList listSN;
    private Parametro param;
    private String apontaNvezes;
    private Intervalo intervalos;
    private MicrosigaDAO daoMicrosiga;

    public ApontamentoMB() {
    if (!initilized) {
    initializeApp();
    initilized = true;
    }
    }

    @PostConstruct
    private void initializeApp() {
    setTelaAtual(“f5”);

     //Conectar com banco de dados
     dao = ApontamentoDAO.getInstance();
    
     //Carregar parametros
     param = dao.loadParameters();
    
     //Trabalhar intervalos
     intervalos = new Intervalo(param);
     intervalos.montarIntervalos();
    
     daoMicrosiga = MicrosigaDAO.getInstance(param.getDriverBanco(), param.getOdbc_microsiga(), param.getUserBD(), param.getSenhaBD());
    
     //Mostrar data
     SimpleDateFormat formato = new SimpleDateFormat("dd MMM yyyy HH:mm:ss");
     setDataHoraTela(formato.format(new Date(System.currentTimeMillis())));
     list = dao.loadApontamentos(dataHoraTela, true);
    
     funcCadastro = new Funcionario();
     funcSelected = new Funcionario();
    
     apontamentoOK = false;
     configOK = false;
     funcionarioOK = false;
     iniciando = true;
    
     setTelaAtual("principal");
    

// updateScreen();

}

public void msg(String summary, String detail, int tipo) {

    FacesContext fc = FacesContext.getCurrentInstance();
    if (tipo == 1) {
        fc.addMessage("", new FacesMessage(FacesMessage.SEVERITY_INFO, summary, detail));
    } else if (tipo == 2) {
        fc.addMessage("", new FacesMessage(FacesMessage.SEVERITY_WARN, summary, detail));
    } else if (tipo == 3) {
        fc.addMessage("", new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, detail));
    } else if (tipo == 4) {
        fc.addMessage("", new FacesMessage(FacesMessage.SEVERITY_FATAL, summary, detail));
    }

    fc.renderResponse();

}

public String incluirApto() {

    String tpoApto = telaAtual.startsWith("f5") ? "P" : "I";

    if (!validarFunc()) {
        codfunc = "";
        return "/faces/index.xhtml";
    }
    if (getMotivo().equals("")){
        if (!validarOperacao()) {
         operacao = "";
         return "faces/index.xhtml";
        }
    
        if (!validarRecurso()) {
            recurso = "";
            return "faces/index.xhtml";
        }
    }

    if (telaAtual.startsWith("f5")) {
        inserirApontamento(getCodfunc(), getOrdem(), getOperacao(), getRecurso(), tpoApto);
    } else if (telaAtual.startsWith("f7")) {
        inserirApontamento(codfunc, ordem, operacao, recurso, motivo, tpoApto);
    }

    FacesContext fc = FacesContext.getCurrentInstance();
    fc.renderResponse();
    return "/faces/index.xhtml";
    
}

public void inserirApontamento(String codFunc, String codOrdem,String codOpe, String codRec, String tpoCategoria) {
    String tpoApto = (tpoCategoria.startsWith("P") ? "Produção" : "Improdutivo");

    if (codOrdem.isEmpty() || codFunc.isEmpty() || operacao.isEmpty() || recurso.isEmpty()) {
        msg("Apontamento " + tpoApto, "Preencher campos", 3);
        return;
    }

    Funcionario func = dao.getFuncionario(codFunc);

    if (func == null) {
        msg("Apontamento " + tpoApto, "Funcionário não encontrado com o código " + codFunc, 3);
        return;
    }

    if (!daoMicrosiga.getOP(codOrdem, param.getTbl_op(), param.getFld_op())) {
        msg("Apontamento " + tpoApto, "Não foi encontrada nenhuma Ordem de produção com o código " + codOrdem + " no ERP", 3);
        return;
    }

    Apontamento apoLocal;
    if (!func.permiteApontarNVezes()) {
        apoLocal = dao.getApontamento(func.getId(), false);
        if (apoLocal != null) {
            if (apoLocal.getTpoCategoria().startsWith("P")) {
                msg("Apontamento " + tpoApto, "Apontamento já registrado com a Ordem de Produção: " + apoLocal.getCodOrdem(), 3);
            } else {
                msg("Apontamento " + tpoApto, "Apontamento de Hora Improdutiva aberto para Ordem de Produção: " + apoLocal.getCodOrdem() + ". Encerra-lo antes de prosseguir", 3);
            }

// updateScreen();
return;
}
}

    apoLocal = new Apontamento();
    apoLocal.setCodOrdem(codOrdem);
    apoLocal.setTpoCategoria(tpoCategoria);
    apoLocal.setOperacao(codOpe);
    apoLocal.setRecurso(codRec);
    apoLocal.setFunId(func.getId());
    apoLocal.setFunNome(func.getNome());
    apoLocal.setEmp(func.getEmpresa());
    apoLocal.setFil(func.getFilial());
    apoLocal.setMotivo("");
    apoLocal.setCcusto(func.getCcusto());
    apoLocal.setMod(func.getFunMod());

    String msg = dao.inserirApontamento(apoLocal);

    if (msg.startsWith("Falha")) {
        msg("Apontamento " + tpoApto, msg + " Codigo Ordem: " + codOrdem + " Funcionario: " + codFunc, 3);
    } else {
        msg("Apontamento " + tpoApto, msg, 1);
    }

    codfunc = "";
    ordem = "";
    motivo = "";
    operacao = "";
    recurso = "";
    telaAtual = "principal";



    return;
}

public void updateScreen() {

    FacesContext faces = FacesContext.getCurrentInstance();
    ExternalContext context = faces.getExternalContext();
    try {


        context.redirect("/Aponte_fitz/");

// context.dispatch("/");
// context.responseFlushBuffer();

    } catch (IOException ex) {
        Logger.getLogger(ApontamentoMB.class.getName()).log(Level.SEVERE, null, ex);
    }
}

public void inserirApontamento(String codFunc, String codOrdem, String operacao, String recurso, String mot, String tpoCategoria) {
    String tpoApto = (tpoCategoria.startsWith("P") ? "Produção" : "Improdutivo");

    if (tpoCategoria.startsWith("P")) {
        if (codOrdem.isEmpty() || codFunc.isEmpty() || mot.isEmpty()) {
            msg("Apontamento " + tpoApto, "Preencher campos", 3);
            return;
        }
    } else {
        if (codFunc.isEmpty() || mot.isEmpty()) {
            msg("Apontamento " + tpoApto, "Preencher campos", 3);
            return;
        }

    }

    if (!daoMicrosiga.getMotivo(mot, param.getSx5tbl())) {
        msg("Apontamento " + tpoApto, "Motivo inválido", 3);
        return;
    }

    Funcionario func = dao.getFuncionario(codFunc);

    if (func == null) {
        msg("Apontamento " + tpoApto, "Funcionário não encontrado com o código " + codFunc, 3);
        return;
    }

    Apontamento apoLocal;
    apoLocal = dao.getApontamento(func.getId(), true);

    if (apoLocal != null) {
        msg("Apontamento " + tpoApto, "Apontamento já registrado com a Ordem de Produção: " + apoLocal.getCodOrdem() + " Motivo: " + apoLocal.getMotivo(), 3);
        return;
    }

    apoLocal = dao.getApontamento(func.getId(), false);
    if (apoLocal != null) {
        apoLocal.setEncerramento(new Timestamp(System.currentTimeMillis()));
        String tempoTotal = calcularTempo(apoLocal.getAbertura(), apoLocal.getEncerramento());
        apoLocal.setTempoTotal(tempoTotal);
        dao.updateApontamento(apoLocal);
        msg("Apontamento " + tpoApto, "Existia apontamento de produção para a OP: " + apoLocal.getCodOrdem() + " e foi encerrado", 2);
    }


    apoLocal = new Apontamento();
    apoLocal.setCodOrdem(codOrdem);
    apoLocal.setOperacao(operacao);
    apoLocal.setRecurso(recurso);
    apoLocal.setTpoCategoria(tpoCategoria);
    apoLocal.setFunId(func.getId());
    apoLocal.setFunNome(func.getNome());
    apoLocal.setMotivo(mot);
    apoLocal.setEmp(func.getEmpresa());
    apoLocal.setFil(func.getFilial());
    apoLocal.setCcusto(func.getCcusto());
    apoLocal.setMod(func.getFunMod());
    String msg = dao.inserirApontamento(apoLocal);

// updateScreen();

    if (msg.startsWith("Falha")) {
        msg("Apontamento " + tpoApto, msg + " Codigo Ordem: " + codOrdem + " Funcionario: " + codFunc + " Motivo: " + mot, 3);
    } else {
        msg("Apontamento " + tpoApto, msg, 1);
    }

    FacesContext fc = FacesContext.getCurrentInstance();
    codfunc = "";
    ordem = "";
    motivo = "";

    telaAtual = "principal";

// fc.renderResponse();

}

public void configParams() {
    
     Funcionario func = dao.getFuncionario(codfunc);

    if (func == null) {
        configOK = false;
        funcionarioOK = false;
        msg("Configuração do Sistema", "Você não está habilitado para configurar o sistema", 4);
        return;
    }

    if (func.getResponsavelSetor().startsWith("S")) {
        configOK = true;
        if(!funcionarioOK){
        msg("Configuração do Sistema", "Ajuste as configurações do sistema", 1);
        funcionarioOK = true;
        codfunc = "";
        }
    } else {
        configOK = false;
        funcionarioOK = false;
        msg("Configuração do Sistema", "Você não está habilitado para configurar o sistema", 4);
    }
}


public void defineTelaAtual(ActionEvent e) {


    iniciando = false;

    setTelaAtual(e.getComponent().getId().toString().toLowerCase());

    setCodfunc("");
    setOrdem("");
    setMotivo("");

    funcionarioOK = false;
    configOK = false;
    apontamentoOK = false;

    if (getTelaAtual().startsWith("f4")) {
        listFunc = dao.getFuncionarios();
    }

    if (getTelaAtual().startsWith("f11")) {
        loadApontamentos();
    }

    updateScreen();
}

public void encerrarApontamentos(AjaxBehaviorEvent e) {
    Funcionario func = dao.getFuncionario(codfunc);
    String msg = "";

    if (func == null) {
        msg("Encerrar apontamentos", "Você não está habilitado para executar esta funcionalidade no sistema", 4);
        return;
    }

    if (func.getResponsavelSetor().startsWith("S")) {
        msg = dao.finalizarApontamentos(intervalos);
        loadApontamentos();
        msg("Encerrar apontamentos", msg, 1);
    } else {
        msg("Encerrar apontamentos", "Você não está habilitado para executar esta funcionalidade no sistema", 4);
        return;
    }
}

public void localizaApontamento() {
    if (this.getTelaAtual().startsWith("f6")) {
        this.localizaApontamento(codfunc, quantidade, ordem, operacao, "P");
    } else if (this.getTelaAtual().startsWith("f8")) {
        this.localizaApontamento(codfunc, "I");
    }
}

public void localizaApontamento(String codfunc, float quantidade, String codOrdem, String codOperacao, String tpoCategoria) {


    String tpoApto = tpoCategoria.startsWith("P") ? "de Produção" : "Improdutivo";
    Timestamp tFinal = new Timestamp(System.currentTimeMillis());


    if (codfunc.isEmpty()) {
        msg("Apontamento " + tpoApto, "Preencha os campos " + codfunc, 3);
        return;
    }

    Funcionario func = dao.getFuncionario(codfunc);
    if (func == null) {
        msg("Apontamento " + tpoApto, "Funcionário não encontrado com o código " + codfunc, 2);
        return;
    }

    apo = dao.getApontamento(func.getId(), codOrdem, codOperacao,  tpoCategoria);

    if (apo != null) {
        apo.setEncerramento(tFinal);
        apo.setTempoTotal(calcularTempo(apo.getAbertura(), apo.getEncerramento()));
    } else {
        msg("Apontamento " + tpoApto, "Nenhum apontamento " + tpoApto + " foi aberto para o funcionário " + codfunc, 2);
        return;
    }

    confirmaEncerramento();
    this.quantidade = 0;
    operacao = "";
    ordem = "";
    apontamentoOK = true;

}

public void localizaApontamento(String codfunc, String tpoCategoria) {


    String tpoApto = tpoCategoria.startsWith("P") ? "de Produção" : "Improdutivo";
    Timestamp tFinal = new Timestamp(System.currentTimeMillis());


    if (codfunc.isEmpty()) {
        return;
    }

    Funcionario func = dao.getFuncionario(codfunc);
    if (func == null) {
        msg("Apontamento " + tpoApto, "Funcionário não encontrado com o código " + codfunc, 2);
        return;
    }

    apo = dao.getApontamento(func.getId(), tpoCategoria);

    if (apo != null) {
        apo.setEncerramento(tFinal);
        apo.setTempoTotal(calcularTempo(apo.getAbertura(), apo.getEncerramento()));
    } else {
        msg("Apontamento " + tpoApto, "Nenhum apontamento " + tpoApto + " foi aberto para o funcionário " + codfunc, 2);
        return;
    }

    confirmaEncerramento();

    apontamentoOK = true;

}

public String confirmaEncerramento() {
    if (this.getTelaAtual().startsWith("f6")) {
        this.confirmaEncerramento(getCodfunc(), getQuantidade(), "P");
        setCodfunc("");
    } else if (this.getTelaAtual().startsWith("f8")) {
        this.confirmaEncerramento(getCodfunc(), "I");
        setCodfunc("");
    }

    return "";
}

public void cancelaEncerramento(ActionEvent e) {
    if (this.getTelaAtual().startsWith("f6")) {
        this.setCodfunc("");
    }
}

public boolean validarOperacao(){

    if (operacao.isEmpty()) {
        msg("Funcionário", "Passe o código de operacao", 3);
        return false;
    }
    
    if(!daoMicrosiga.getOperacao(operacao)){
        msg("Funcionário", "Código de operação não existe em nosso sistema", 3);
        return false;
        
    }
    return true;
}

public boolean validarRecurso(){

    if (operacao.isEmpty()) {
        msg("Funcionário", "Passe o código do recurso", 3);
        return false;
    }
    
    if(!daoMicrosiga.getRecurso(recurso)){
        msg("Funcionário", "Recurso não existe em nosso sistema", 3);
        return false;
        
    }
    return true;
}

public boolean validarFunc() {

    if (codfunc.isEmpty()) {
        msg("Funcionário", "Passe o código de barras do seu crachá", 3);
        return false;
    }

    funcSelected = dao.getFuncionario(codfunc);
    if (funcSelected == null) {
        msg("Funcionário", "Número de crachá não encontrado no sistema", 3);
        return false;
    }
    
    if (dao.existeApontamentoAberto(funcSelected.getId(), getOperacao(), getOrdem())) {
            msg("Apontamento produção", "Existe um Apontamento identico aberto. Fechar antes de prosseguir", 2);
        return false;
        }
    
    return true;
}

public boolean validarCodigoMicrosiga(){
    
    return dao.getCogidoMicrosiga(ordem);
}

public boolean validarCodigoMicrosiga(Funcionario funcSel){
    
    return dao.getCogidoMicrosiga(funcSel);
}

public void atualizarTbl(ActionEvent e) {
    loadApontamentos();
}

public void atualizarParams(ActionEvent e) {
    String msg = dao.updateParams(param);
    if (msg.startsWith("Falha")) {
        msg("Atualização de parametro", msg, 4);
    } else {
        msg("Atualização de parametro", msg, 1);
    }

    setTelaAtual("principal");
    configOK = false;
}

public void confirmaEncerramento(String codFunc, String tpoCategoria) {
    String tpoApto = tpoCategoria.startsWith("P") ? "de Produção" : "Improdutivo";

    if (codFunc.isEmpty()) {
        return;
    }

    Funcionario func = dao.getFuncionario(codFunc);
    if (func == null) {
        msg("Apontamento " + tpoApto, "Funcionário não encontrado com o código " + codFunc, 3);
        return;
    }

    apo = dao.getApontamento(func.getId(), tpoCategoria);
    Timestamp t = new Timestamp(System.currentTimeMillis());
    apo.setEncerramento(t);
    String tempoTotal = calcularTempo(apo.getAbertura(), apo.getEncerramento());
    apo.setTempoTotal(tempoTotal);

    dao.updateApontamento(apo);
    msg("Apontamento " + tpoApto, "Apontamento " + tpoApto + " encerrado com sucesso", 1);

    apontamentoOK = false;
    telaAtual = "principal";
}

public void confirmaEncerramento(String codFunc, float quantidade, String tpoCategoria) {
    String tpoApto = tpoCategoria.startsWith("P") ? "de Produção" : "Improdutivo";

    if (codFunc.isEmpty()) {
        return;
    }

    Funcionario func = dao.getFuncionario(codFunc);
    if (func == null) {
        msg("Apontamento " + tpoApto, "Funcionário não encontrado com o código " + codFunc, 3);
        return;
    }

    apo = dao.getApontamento(func.getId(), tpoCategoria);
    Timestamp t = new Timestamp(System.currentTimeMillis());
    apo.setEncerramento(t);
    String tempoTotal = calcularTempo(apo.getAbertura(), apo.getEncerramento());
    apo.setTempoTotal(tempoTotal);
    apo.setQuantidade(quantidade);

    dao.updateApontamento(apo);
    msg("Apontamento " + tpoApto, "Apontamento " + tpoApto + " encerrado com sucesso", 1);

    apontamentoOK = false;
    telaAtual = "principal";
}

public void verificarIntervalos(Timestamp aberta, Timestamp encerra) {
}

public void cadastrarFuncionario(ActionEvent e) {

    String msg = "Falha";
    
    if(validarCodigoMicrosiga()){
        msg("Adicionar funcionário", "Código Microsiga ja está cadastrado", 3);
        return;
    }
    
    if (motivo.isEmpty() || codfunc.isEmpty() || ordem.isEmpty()) {
        msg("Adicionar funcionário", "Preencha os campos", 3);
        return;
    }

    funcCadastro.setAtivo("S");
    funcCadastro.setCodMicrosiga(ordem);
    funcCadastro.setNome(codfunc);
    funcCadastro.setResponsavelSetor(motivo);
    funcCadastro.setApontarNvezes(getApontaNvezes());
    funcCadastro.setCcusto(ccusto);
    funcCadastro.setEmpresa(param.empresa);
    funcCadastro.setFilial(param.filial);
    funcCadastro.setFunMod(funMod);

    msg = dao.adicionarFuncionario(funcCadastro);

    if (msg.startsWith("Falha")) {
        msg("Adicionar funcionário", msg, 3);
    } else {
        msg("Adicionar funcionário", msg, 1);
    }
    this.codfunc = "";
    this.ordem = "";
    this.motivo = "";
    this.empresa = "";
    this.filial = "";
    this.ccusto = "";
    this.funMod = "";
    this.param.empresa = "";
    this.param.filial = "";

    listFunc = dao.getFuncionarios();
}

public void atualizarFuncionario(ActionEvent e) {
    
    if(validarCodigoMicrosiga(funcSelected)){
        msg("Atualizar funcionário", "Código Microsiga ja está cadastrado", 3);
        return;
    }
    
    String message = dao.atualizarFuncionario(funcSelected);
    
    if (message.startsWith("Falha")) {
        msg("Atualizar funcionario", message, 3);
    } else {
        msg("Atualizar funcionario", message, 1);    
    }
}

public String getDataHoraTela() {
    SimpleDateFormat formato = new SimpleDateFormat("dd MMM yyyy HH:mm:ss");
    dataHoraTela = formato.format(new Date(System.currentTimeMillis()));
    return dataHoraTela;
}

public void setDataHoraTela(String dataHoraTela) {
    this.dataHoraTela = dataHoraTela;
}

public String loadApontamentos() {
    list = dao.loadApontamentos(dataHoraTela, true);
    return "";
}

public ArrayList<Apontamento> getList() {

// loadApontamentos();
return list;
}

public void setList(ArrayList<Apontamento> list) {
    this.list = list;
}

public Apontamento getSelected() {
    return selected;
}

public void setSelected(Apontamento selected) {
    this.selected = selected;
}

public Apontamento getApo() {
    return apo;
}

public void setApo(Apontamento apo) {
    this.apo = apo;
}

public boolean isApontamentoOK() {
    return apontamentoOK;
}

public void setApontamentoOK(boolean apontamentoOK) {
    this.apontamentoOK = apontamentoOK;
}

public Funcionario getFuncSelected() {
    return funcSelected;
}

public void setFuncSelected(Funcionario funcSelected) {
    this.funcSelected = funcSelected;
}

public ArrayList<Funcionario> getListFunc() {
    return listFunc;
}

public void setListFunc(ArrayList<Funcionario> listFunc) {
    this.listFunc = listFunc;
}

private void loadFuncionarios() {
    listFunc = dao.getFuncionarios();
}

public void loadFuncionarios(ActionEvent e) {
    loadFuncionarios();
}

public Funcionario getFuncCadastro() {
    return funcCadastro;
}

public void setFuncCadastro(Funcionario funcCadastro) {
    this.funcCadastro = funcCadastro;
}

public ArrayList getListSN() {
    listSN = new ArrayList();
    listSN.add("S");
    listSN.add("N");
    return listSN;
}

public void setListSN(ArrayList listSN) {
    this.listSN = listSN;
}

public String getTelaAtual() {
    return telaAtual.toLowerCase();
}

public void setTelaAtual(String telaAtual) {
    this.telaAtual = telaAtual;
}

public String getOrdem() {
    return ordem;
}

public void setOrdem(String ordem) {
    this.ordem = ordem;
}

public String getRecurso() {
    return recurso;
}

public void setRecurso(String recurso) {
    this.recurso = recurso;
}

public String getCodfunc() {
    return codfunc;
}

public void setCodfunc(String codfunc) {
    this.codfunc = codfunc;
}

public String getOperacao() {
    return operacao;
}

public void setOperacao(String operacao) {
    this.operacao = operacao;
}

public String getEmpresa() {
    return empresa;
}

public void setEmpresa(String empresa) {
    this.empresa = empresa;
}

public String getFilial() {
    return filial;
}

public void setFilial(String filial) {
    this.filial = filial;
}

public float getQuantidade() {
    return quantidade;
}

public void setQuantidade(float quantidade) {
    this.quantidade = quantidade;
}

public String getMotivo() {
    return motivo;
}

public void setMotivo(String motivo) {
    this.motivo = motivo;
}

public Parametro getParam() {
    return param;
}

public void setParam(Parametro param) {
    this.param = param;
}

public boolean isConfigOK() {
    return configOK;
}

public void setConfigOK(boolean configOK) {
    this.configOK = configOK;
}

public boolean isFuncionarioOK() {
    return funcionarioOK;
}

public void setFuncionarioOK(boolean funcionarioOK) {
    this.funcionarioOK = funcionarioOK;
}

public String getApontaNvezes() {
    return apontaNvezes;
}

public void setApontaNvezes(String apontaNvezes) {
    this.apontaNvezes = apontaNvezes;
}

public String getTempoOP() {
    return tempoOP;
}

public void setTempoOP(String tempoOP) {
    this.tempoOP = tempoOP;
}

private String calcularTempo(Timestamp t1, Timestamp t2) {
    try {

        //Verifica a hora DO CAFE - Que absurdo isso poderia estar em um SQL no Banco
        SimpleDateFormat dfx = new SimpleDateFormat("kk:mm");
        String abertura = dfx.format(t1);
        String encerrar = dfx.format(t2);
        Date dateAbertura;
        Date dateEncerra;

        dateAbertura = dfx.parse(abertura);
        dateEncerra = dfx.parse(encerrar);

        if ((dateAbertura.getTime() > intervalos.getIntervalo1I().getTime()) && (dateAbertura.getTime() < intervalos.getIntervalo1F().getTime())) {
            t2.setMinutes(t2.getMinutes() - 10);
        }

        if ((dateAbertura.getTime() > intervalos.getIntervalo2I().getTime()) && (dateAbertura.getTime() < intervalos.getIntervalo2F().getTime())) {
            //descontar 1 hora
            t2.setHours(t2.getHours() - 1);
        }

        Timestamp tResult = new Timestamp(t2.getTime() - t1.getTime());
        double tD = (double) tResult.getTime() / (24 * 60 * 60 * 1000);
        double tH = tD * 24;
        double tM = ((tD * 24) - (int) tH) * 60;
        double tS = (tM - (int) tM) * 60;

        int tH1 = (int) tH;
        int tM1 = (int) tM;
        int tS1 = (int) tS;

        String result = "";

        if (tH1 > 9) {
            result = tH1 + ":";
        } else {
            result = "0" + tH1 + ":";
        }


        if (tM1 > 9) {
            result = result + tM1 + ":";
        } else {
            result = result + "0" + tM1 + ":";
        }

        if (tS1 > 9) {
            result = result + tS1;
        } else {
            result = result + "0" + tS1;
        }


        return result;
    } catch (ParseException ex) {
        System.out.println("Falha ao calcular tempo: " + ex.getMessage());
        return "00:00:00";
    }
}

public boolean isIniciando() {
    return iniciando;
}

public void setIniciando(boolean iniciando) {
    this.iniciando = iniciando;
}

public String getCcusto() {
    return ccusto;
}

public void setCcusto(String ccusto) {
    this.ccusto = ccusto;
}

public String getFunMod() {
    return funMod;
}

public void setFunMod(String funMod) {
    this.funMod = funMod;
}

}

config.xhtml

<?xml version='1.0' encoding='UTF-8' ?>

<ui:composition xmlns=“http://www.w3.org/1999/xhtml
xmlns:h=“http://java.sun.com/jsf/html
xmlns:f=“http://java.sun.com/jsf/core
xmlns:ui=“http://java.sun.com/jsf/facelets
xmlns:p=“http://primefaces.prime.com.tr/ui
xmlns:c=“http://java.sun.com/jsp/jstl/core
xmlns:mj=“http://mojarra.dev.java.net/mojarra_ext”>
<ui:include src="./newTemplate.xhtml"/>

<h:form id="frmAponte" >
    <p:growl id="msgs" life="8000" showDetail="true" showSummary="true"  />
    <p:panel id="pnl" widgetVar="pnl"
             style="
             background-color: transparent;
             background-image: url(images/f2.png);
             background-repeat: no-repeat;
             background-position: center;
             position:relative;
             margin:auto;
             margin-top: 0px;
             width: 800px;
             height: 600px;" >

        <c:if test="#{not apontamentoMB.funcionarioOK}" >
            <h:panelGrid rendered="#{not apontamentoMB.funcionarioOK}" style="position:relative;margin:auto;margin-top: 80px;text-align: center;">
                <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
                <h3 align="center"><p></p>Passe o código de barras do seu crachá no leitor</h3>
               <p align="center">
                    <p:focus for="tf4_codfunc"/>
                    <h:inputText id="tf4_codfunc" value="#{apontamentoMB.codfunc}" size="50" disabled="#{apontamentoMB.funcionarioOK}" rendered="#{not apontamentoMB.funcionarioOK}" styleClass="input3"/>
                </p>

                <p align="center">
                    <p:commandButton immediate="false"
                                     action="#{apontamentoMB.configParams}"
                                     value=" OK "
                                     update="frmAponte,msgs" rendered="#{not apontamentoMB.funcionarioOK}" />
                </p>
            </h:panelGrid>
        </c:if>
        <p:outputPanel id="tf4editaruser">
        <p:panel header="Funcionários" rendered="#{apontamentoMB.funcionarioOK}" id="pnlfunc" widgetVar="pnlfunc"
                 style="position:relative;
                 margin:auto;
                 margin-top: -10px;
                 margin-left: -30px;
                 width: 820px;
                 height: 600px;">

            <h:panelGrid>
                <h:panelGrid columns="2">
                    <h:outputText value="Nome" />
                    <h:inputText id="funcNome" value="#{apontamentoMB.codfunc}" size="30" />
                    <h:outputText value="Cod. Microsiga" />
                    <h:inputText id="funcCodMic" value="#{apontamentoMB.ordem}"  size="30"/>
                    <h:outputText value="Centro de Custo" />
                    <h:inputText id="funcCCusto" value="#{apontamentoMB.ccusto}"  size="30"/>
                    <h:outputText value="MOD" />
                    <h:inputText id="funcMod" value="#{apontamentoMB.funMod}"  size="30"/>
                    <h:outputText value="Responsavel Setor" />
                    <h:selectOneMenu id="funcResp" value="#{apontamentoMB.motivo}">
                        <f:selectItems value="#{apontamentoMB.listSN}" />
                    </h:selectOneMenu>
                    <h:outputText value="Apontar N vezes" />
                    <h:selectOneMenu id="funcAponta" value="#{apontamentoMB.apontaNvezes}">
                        <f:selectItems value="#{apontamentoMB.listSN}" />
                    </h:selectOneMenu>
                    <h:outputText value="Empresa" />
                    <h:inputText id="funcEmpresa" value="#{apontamentoMB.param.empresa}"  size="30"/>
                    <h:outputText value="Filial" />
                    <h:inputText id="funFilial" value="#{apontamentoMB.param.filial}"  size="30"/>
                    <p:commandButton id="cmdConfirmaCadFunc" value="Confirmar" immediate="false" actionListener="#{apontamentoMB.cadastrarFuncionario}" update="pnl,paramTblFunc,msgs"/>
                    <p:commandButton id="cmdFecharCadFunc" value="Fechar" action="#" update="pnl" oncomplete="voltar();"/>
                </h:panelGrid>
                <h:panelGrid>
                    <p:dataTable  var="funcionario" id="paramTblFunc" widgetVar="paramTblFunc" value="#{apontamentoMB.listFunc}"
                                 selection="#{apontamentoMB.funcSelected}" selectionMode="single" firstPageLinkLabel="Primeiro"
                                 lastPageLinkLabel="Último" onselectComplete="editDialog.show();" rows="14" paginatorAlwaysVisible="false"
                                 update="dadosAEditar" paginator="true" paginatorPosition="top" 
                                 height="600" width="510" dynamic="true"  style="font-family: Arial;font-size: 10px;">

                        <p:column >
                            <f:facet name="header">
                                <h:outputText value="Id" />
                            </f:facet>
                            <h:outputText value="#{funcionario.id}" />
                        </p:column>
                        <p:column filterBy="#{funcionario.codMicrosiga}" >
                            <f:facet name="header">
                                <h:outputText value="Cod.Microsiga" />
                            </f:facet>
                            <h:outputText value="#{funcionario.codMicrosiga}" />
                        </p:column>
                        <p:column filterBy="#{funcionario.nome}" >
                            <f:facet name="header">
                                <h:outputText value="Nome" />
                            </f:facet>
                            <h:outputText value="#{funcionario.nome}" />
                        </p:column>

                        <p:column  >
                            <f:facet name="header">
                                <h:outputText value="Resp. Setor" />
                            </f:facet>
                            <h:outputText value="#{funcionario.responsavelSetor}" />
                        </p:column>

                        <p:column  >
                            <f:facet name="header">
                                <h:outputText value="Ap. N vezes" />
                            </f:facet>
                            <h:outputText value="#{funcionario.apontarNvezes}" />
                        </p:column>

                        <p:column  >
                            <f:facet name="header">
                                <h:outputText value="CCusto" />
                            </f:facet>
                            <h:outputText value="#{funcionario.ccusto}" />
                        </p:column>
                        <p:column  >
                            <f:facet name="header">
                                <h:outputText value="MOD" />
                            </f:facet>
                            <h:outputText value="#{funcionario.funMod}" />
                        </p:column>
                        <p:column  >
                            <f:facet name="header">
                                <h:outputText value="Empresa" />
                            </f:facet>
                            <h:outputText value="#{funcionario.empresa}" />
                        </p:column>
                        <p:column  >
                            <f:facet name="header">
                                <h:outputText value="Filial" />
                            </f:facet>
                            <h:outputText value="#{funcionario.filial}" />
                        </p:column>

                    </p:dataTable>

                    <f:facet name="footer">
                        <p:commandButton id="paramRefreshTbl"  value="Atualizar" actionListener="#{apontamentoMB.loadFuncionarios}"
                                         update="paramTblFunc"/>
                    </f:facet>
                </h:panelGrid>
            </h:panelGrid>
        </p:panel>
        
        
            <p:dialog header="Editar Usuario" widgetVar="editDialog" closable="true" position="center" width="700" 
                      showEffect="slide" hideEffect="fold" modal="true"  visible="false" > 
                    
            
            
            <p:outputPanel id="dadosAEditar" rendered="true">
                <h:panelGrid columns="2" >
                   
                    
                    <h:outputText value="Nome" />
                    <h:inputText value="#{apontamentoMB.funcSelected.nome}" />

                    <h:outputText value="Cod. Microsiga" />
                        <h:inputText value="#{apontamentoMB.funcSelected.codMicrosiga}" />

                    <h:outputText value="Centro Custo" />
                        <h:inputText value="#{apontamentoMB.funcSelected.ccusto}" />
                    
                    <h:outputText value="MOD" />
                        <h:inputText value="#{apontamentoMB.funcSelected.funMod}" />
                    
                     <h:outputText value="Responsavel Setor" />
                     <h:selectOneMenu value="#{apontamentoMB.funcSelected.responsavelSetor}">
                         <f:selectItems value="#{apontamentoMB.listSN}"  />
                    </h:selectOneMenu>
                     
                    <h:outputText value="Apontar N vezes" />
                    <h:selectOneMenu value="#{apontamentoMB.funcSelected.apontarNvezes}">
                        <f:selectItems value="#{apontamentoMB.listSN}" />
                    </h:selectOneMenu>

                    
                    <h:outputText value="Empresa" />
                    <h:inputText value="#{apontamentoMB.funcSelected.empresa}" />

                    <h:outputText value="Filial" />
                    <h:inputText value="#{apontamentoMB.funcSelected.filial}"  />
                    
                    <p:commandButton  actionListener="#{apontamentoMB.atualizarFuncionario}"  value="Atualizar" update="dadosAEditar,msgs" />      
                    <p:commandButton oncomplete="editDialog.hide();" actionListener="#{apontamentoMB.loadFuncionarios}" value="Fechar" update="paramTblFunc" />  
                
            
                </h:panelGrid>
            </p:outputPanel>
           
        </p:dialog>
            
        </p:outputPanel>
    </p:panel>
    <p:hotkey bind="F5" immediate="false"  id="f5" actionListener="#{apontamentoMB.defineTelaAtual}" update="pnl" process="@form"/>
    <p:hotkey bind="F6" immediate="false"  id="f6" actionListener="#{apontamentoMB.defineTelaAtual}" update="pnl" process="@form"/>
    <p:hotkey bind="F7" immediate="false"  id="f7" actionListener="#{apontamentoMB.defineTelaAtual}" update="pnl" process="@form"  />
    <p:hotkey bind="F8" immediate="false"  id="f8" actionListener="#{apontamentoMB.defineTelaAtual}" update="pnl" process="@form" />
    <p:hotkey bind="F11" immediate="false" id="f11" actionListener="#{apontamentoMB.defineTelaAtual}" oncomplete="f11();" />
    <p:hotkey bind="F12" immediate="false" id="f12" actionListener="#{apontamentoMB.defineTelaAtual}" update="pnl" process="@form" />
    <p:hotkey bind="F2" immediate="false"  id="f2" oncomplete="configParams();" />
    <p:hotkey bind="F4" immediate="false"  id="f4" oncomplete="config();" />
</h:form>

</ui:composition>

quem puder me ajudar

abraços

coloca o código entra a tag [code] pq assim fica ruim pra galera te ajudar…

ps: vai em editar…

a blz desculpas

config.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:p="http://primefaces.prime.com.tr/ui"
                xmlns:c="http://java.sun.com/jsp/jstl/core"
                xmlns:mj="http://mojarra.dev.java.net/mojarra_ext">
    <ui:include src="./newTemplate.xhtml"/>

    <h:form id="frmAponte" >
        <p:growl id="msgs" life="8000" showDetail="true" showSummary="true"  />
        <p:panel id="pnl" widgetVar="pnl"
                 style="
                 background-color: transparent;
                 background-image: url(images/f2.png);
                 background-repeat: no-repeat;
                 background-position: center;
                 position:relative;
                 margin:auto;
                 margin-top: 0px;
                 width: 800px;
                 height: 600px;" >

            <c:if test="#{not apontamentoMB.funcionarioOK}" >
                <h:panelGrid rendered="#{not apontamentoMB.funcionarioOK}" style="position:relative;margin:auto;margin-top: 80px;text-align: center;">
                    <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
                    <h3 align="center"><p></p>Passe o código de barras do seu crachá no leitor</h3>
                   <p align="center">
                        <p:focus for="tf4_codfunc"/>
                        <h:inputText id="tf4_codfunc" value="#{apontamentoMB.codfunc}" size="50" disabled="#{apontamentoMB.funcionarioOK}" rendered="#{not apontamentoMB.funcionarioOK}" styleClass="input3"/>
                    </p>

                    <p align="center">
                        <p:commandButton immediate="false"
                                         action="#{apontamentoMB.configParams}"
                                         value=" OK "
                                         update="frmAponte,msgs" rendered="#{not apontamentoMB.funcionarioOK}" />
                    </p>
                </h:panelGrid>
            </c:if>
            <p:outputPanel id="tf4editaruser">
            <p:panel header="Funcionários" rendered="#{apontamentoMB.funcionarioOK}" id="pnlfunc" widgetVar="pnlfunc"
                     style="position:relative;
                     margin:auto;
                     margin-top: -10px;
                     margin-left: -30px;
                     width: 820px;
                     height: 600px;">

                <h:panelGrid>
                    <h:panelGrid columns="2">
                        <h:outputText value="Nome" />
                        <h:inputText id="funcNome" value="#{apontamentoMB.codfunc}" size="30" />
                        <h:outputText value="Cod. Microsiga" />
                        <h:inputText id="funcCodMic" value="#{apontamentoMB.ordem}"  size="30"/>
                        <h:outputText value="Centro de Custo" />
                        <h:inputText id="funcCCusto" value="#{apontamentoMB.ccusto}"  size="30"/>
                        <h:outputText value="MOD" />
                        <h:inputText id="funcMod" value="#{apontamentoMB.funMod}"  size="30"/>
                        <h:outputText value="Responsavel Setor" />
                        <h:selectOneMenu id="funcResp" value="#{apontamentoMB.motivo}">
                            <f:selectItems value="#{apontamentoMB.listSN}" />
                        </h:selectOneMenu>
                        <h:outputText value="Apontar N vezes" />
                        <h:selectOneMenu id="funcAponta" value="#{apontamentoMB.apontaNvezes}">
                            <f:selectItems value="#{apontamentoMB.listSN}" />
                        </h:selectOneMenu>
                        <h:outputText value="Empresa" />
                        <h:inputText id="funcEmpresa" value="#{apontamentoMB.param.empresa}"  size="30"/>
                        <h:outputText value="Filial" />
                        <h:inputText id="funFilial" value="#{apontamentoMB.param.filial}"  size="30"/>
                        <p:commandButton id="cmdConfirmaCadFunc" value="Confirmar" immediate="false" actionListener="#{apontamentoMB.cadastrarFuncionario}" update="pnl,paramTblFunc,msgs"/>
                        <p:commandButton id="cmdFecharCadFunc" value="Fechar" action="#" update="pnl" oncomplete="voltar();"/>
                    </h:panelGrid>
                    <h:panelGrid>
                        <p:dataTable  var="funcionario" id="paramTblFunc" widgetVar="paramTblFunc" value="#{apontamentoMB.listFunc}"
                                     selection="#{apontamentoMB.funcSelected}" selectionMode="single" firstPageLinkLabel="Primeiro"
                                     lastPageLinkLabel="Último" onselectComplete="editDialog.show();" rows="14" paginatorAlwaysVisible="false"
                                     update="dadosAEditar" paginator="true" paginatorPosition="top" 
                                     height="600" width="510" dynamic="true"  style="font-family: Arial;font-size: 10px;">

                            <p:column >
                                <f:facet name="header">
                                    <h:outputText value="Id" />
                                </f:facet>
                                <h:outputText value="#{funcionario.id}" />
                            </p:column>
                            <p:column filterBy="#{funcionario.codMicrosiga}" >
                                <f:facet name="header">
                                    <h:outputText value="Cod.Microsiga" />
                                </f:facet>
                                <h:outputText value="#{funcionario.codMicrosiga}" />
                            </p:column>
                            <p:column filterBy="#{funcionario.nome}" >
                                <f:facet name="header">
                                    <h:outputText value="Nome" />
                                </f:facet>
                                <h:outputText value="#{funcionario.nome}" />
                            </p:column>

                            <p:column  >
                                <f:facet name="header">
                                    <h:outputText value="Resp. Setor" />
                                </f:facet>
                                <h:outputText value="#{funcionario.responsavelSetor}" />
                            </p:column>

                            <p:column  >
                                <f:facet name="header">
                                    <h:outputText value="Ap. N vezes" />
                                </f:facet>
                                <h:outputText value="#{funcionario.apontarNvezes}" />
                            </p:column>

                            <p:column  >
                                <f:facet name="header">
                                    <h:outputText value="CCusto" />
                                </f:facet>
                                <h:outputText value="#{funcionario.ccusto}" />
                            </p:column>
                            <p:column  >
                                <f:facet name="header">
                                    <h:outputText value="MOD" />
                                </f:facet>
                                <h:outputText value="#{funcionario.funMod}" />
                            </p:column>
                            <p:column  >
                                <f:facet name="header">
                                    <h:outputText value="Empresa" />
                                </f:facet>
                                <h:outputText value="#{funcionario.empresa}" />
                            </p:column>
                            <p:column  >
                                <f:facet name="header">
                                    <h:outputText value="Filial" />
                                </f:facet>
                                <h:outputText value="#{funcionario.filial}" />
                            </p:column>

                        </p:dataTable>

                        <f:facet name="footer">
                            <p:commandButton id="paramRefreshTbl"  value="Atualizar" actionListener="#{apontamentoMB.loadFuncionarios}"
                                             update="paramTblFunc"/>
                        </f:facet>
                    </h:panelGrid>
                </h:panelGrid>
            </p:panel>
            
            
                <p:dialog header="Editar Usuario" widgetVar="editDialog" closable="true" position="center" width="700" 
                          showEffect="slide" hideEffect="fold" modal="true"  visible="false" > 
                        
                
                
                <p:outputPanel id="dadosAEditar" rendered="true">
                    <h:panelGrid columns="2" >
                       
                        
                        <h:outputText value="Nome" />
                        <h:inputText value="#{apontamentoMB.funcSelected.nome}" />

                        <h:outputText value="Cod. Microsiga" />
                            <h:inputText value="#{apontamentoMB.funcSelected.codMicrosiga}" />

                        <h:outputText value="Centro Custo" />
                            <h:inputText value="#{apontamentoMB.funcSelected.ccusto}" />
                        
                        <h:outputText value="MOD" />
                            <h:inputText value="#{apontamentoMB.funcSelected.funMod}" />
                        
                         <h:outputText value="Responsavel Setor" />
                         <h:selectOneMenu value="#{apontamentoMB.funcSelected.responsavelSetor}">
                             <f:selectItems value="#{apontamentoMB.listSN}"  />
                        </h:selectOneMenu>
                         
                        <h:outputText value="Apontar N vezes" />
                        <h:selectOneMenu value="#{apontamentoMB.funcSelected.apontarNvezes}">
                            <f:selectItems value="#{apontamentoMB.listSN}" />
                        </h:selectOneMenu>

                        
                        <h:outputText value="Empresa" />
                        <h:inputText value="#{apontamentoMB.funcSelected.empresa}" />

                        <h:outputText value="Filial" />
                        <h:inputText value="#{apontamentoMB.funcSelected.filial}"  />
                        
                        <p:commandButton  actionListener="#{apontamentoMB.atualizarFuncionario}"  value="Atualizar" update="dadosAEditar,msgs" />      
                        <p:commandButton oncomplete="editDialog.hide();" actionListener="#{apontamentoMB.loadFuncionarios}" value="Fechar" update="paramTblFunc" />  
                    
                
                    </h:panelGrid>
                </p:outputPanel>
               
            </p:dialog>
                
            </p:outputPanel>
        </p:panel>
        <p:hotkey bind="F5" immediate="false"  id="f5" actionListener="#{apontamentoMB.defineTelaAtual}" update="pnl" process="@form"/>
        <p:hotkey bind="F6" immediate="false"  id="f6" actionListener="#{apontamentoMB.defineTelaAtual}" update="pnl" process="@form"/>
        <p:hotkey bind="F7" immediate="false"  id="f7" actionListener="#{apontamentoMB.defineTelaAtual}" update="pnl" process="@form"  />
        <p:hotkey bind="F8" immediate="false"  id="f8" actionListener="#{apontamentoMB.defineTelaAtual}" update="pnl" process="@form" />
        <p:hotkey bind="F11" immediate="false" id="f11" actionListener="#{apontamentoMB.defineTelaAtual}" oncomplete="f11();" />
        <p:hotkey bind="F12" immediate="false" id="f12" actionListener="#{apontamentoMB.defineTelaAtual}" update="pnl" process="@form" />
        <p:hotkey bind="F2" immediate="false"  id="f2" oncomplete="configParams();" />
        <p:hotkey bind="F4" immediate="false"  id="f4" oncomplete="config();" />
    </h:form>
</ui:composition>

ApontamentoMB

/*
 * alteração dia = 05/01/2012
 * Variaveis criadas
	String operacao
	String recurso
	flot quantidade
 
 * funções criadas
	setOperacao(String)
	(String) getOperacao
	setRecurso(String)
	(String) getRecurso
	setQuantidade(float)
	(float) getQuantidade
	inserirApontamento(String , String, String, String, String)
	localizaApontamento(String , float, String)
	(boolean)validarOperacao
	confirmaEncerramento(String , float, String)

 * funções alteradas
	(String)confirmaEncerramento
 * 
 * 06/01/2012
 
 * funções criadas
 *     (boolean)validarOperacao
 *     (boolean)validarRecruso
 */
package beans;

import dao.ApontamentoDAO;
import dao.MicrosigaDAO;
import java.io.IOException;
import java.io.Serializable;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;

import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.AjaxBehaviorEvent;

import util.Parametro;
import vo.Apontamento;
import vo.Funcionario;
import vo.Intervalo;

/**
 *
 * @author Romulo
 */
@ManagedBean(name = "apontamentoMB", eager = false)
@SessionScoped
public class ApontamentoMB implements Serializable {

    private String dataHoraTela;
    private Apontamento selected;
    private ArrayList<Apontamento> list;
    private String ordem;
    private String codfunc;
    private String operacao;
    private String recurso;
    private float quantidade;
    private String motivo;
    private String tempoOP;
    private String ccusto;
    private String funMod;
    private String empresa;
    private String filial;
    private boolean apontamentoOK;
    private boolean configOK;
    private boolean funcionarioOK;
    private boolean iniciando;
    private Apontamento apo;
    private ApontamentoDAO dao;
    private String telaAtual;
    private boolean initilized = false;
    private Funcionario funcSelected;
    private Funcionario funcCadastro;
    private ArrayList<Funcionario> listFunc;
    private ArrayList listSN;
    private Parametro param;
    private String apontaNvezes;
    private Intervalo intervalos;
    private MicrosigaDAO daoMicrosiga;

    public ApontamentoMB() {
        if (!initilized) {
            initializeApp();
            initilized = true;
        }
    }

    @PostConstruct
    private void initializeApp() {
        setTelaAtual("f5");

        //Conectar com banco de dados
        dao = ApontamentoDAO.getInstance();

        //Carregar parametros
        param = dao.loadParameters();

        //Trabalhar intervalos
        intervalos = new Intervalo(param);
        intervalos.montarIntervalos();

        daoMicrosiga = MicrosigaDAO.getInstance(param.getDriverBanco(), param.getOdbc_microsiga(), param.getUserBD(), param.getSenhaBD());

        //Mostrar data
        SimpleDateFormat formato = new SimpleDateFormat("dd MMM yyyy HH:mm:ss");
        setDataHoraTela(formato.format(new Date(System.currentTimeMillis())));
        list = dao.loadApontamentos(dataHoraTela, true);

        funcCadastro = new Funcionario();
        funcSelected = new Funcionario();

        apontamentoOK = false;
        configOK = false;
        funcionarioOK = false;
        iniciando = true;

        setTelaAtual("principal");
//        updateScreen();

    }

    public void msg(String summary, String detail, int tipo) {

        FacesContext fc = FacesContext.getCurrentInstance();
        if (tipo == 1) {
            fc.addMessage("", new FacesMessage(FacesMessage.SEVERITY_INFO, summary, detail));
        } else if (tipo == 2) {
            fc.addMessage("", new FacesMessage(FacesMessage.SEVERITY_WARN, summary, detail));
        } else if (tipo == 3) {
            fc.addMessage("", new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, detail));
        } else if (tipo == 4) {
            fc.addMessage("", new FacesMessage(FacesMessage.SEVERITY_FATAL, summary, detail));
        }

        fc.renderResponse();

    }
    
    public String incluirApto() {

        String tpoApto = telaAtual.startsWith("f5") ? "P" : "I";

        if (!validarFunc()) {
            codfunc = "";
            return "/faces/index.xhtml";
        }
        if (getMotivo().equals("")){
            if (!validarOperacao()) {
             operacao = "";
             return "faces/index.xhtml";
            }
        
            if (!validarRecurso()) {
                recurso = "";
                return "faces/index.xhtml";
            }
        }

        if (telaAtual.startsWith("f5")) {
            inserirApontamento(getCodfunc(), getOrdem(), getOperacao(), getRecurso(), tpoApto);
        } else if (telaAtual.startsWith("f7")) {
            inserirApontamento(codfunc, ordem, operacao, recurso, motivo, tpoApto);
        }

        FacesContext fc = FacesContext.getCurrentInstance();
        fc.renderResponse();
        return "/faces/index.xhtml";
        
    }

    public void inserirApontamento(String codFunc, String codOrdem,String codOpe, String codRec, String tpoCategoria) {
        String tpoApto = (tpoCategoria.startsWith("P") ? "Produção" : "Improdutivo");

        if (codOrdem.isEmpty() || codFunc.isEmpty() || operacao.isEmpty() || recurso.isEmpty()) {
            msg("Apontamento " + tpoApto, "Preencher campos", 3);
            return;
        }

        Funcionario func = dao.getFuncionario(codFunc);

        if (func == null) {
            msg("Apontamento " + tpoApto, "Funcionário não encontrado com o código " + codFunc, 3);
            return;
        }

        if (!daoMicrosiga.getOP(codOrdem, param.getTbl_op(), param.getFld_op())) {
            msg("Apontamento " + tpoApto, "Não foi encontrada nenhuma Ordem de produção com o código " + codOrdem + " no ERP", 3);
            return;
        }

        Apontamento apoLocal;
        if (!func.permiteApontarNVezes()) {
            apoLocal = dao.getApontamento(func.getId(), false);
            if (apoLocal != null) {
                if (apoLocal.getTpoCategoria().startsWith("P")) {
                    msg("Apontamento " + tpoApto, "Apontamento já registrado com a Ordem de Produção: " + apoLocal.getCodOrdem(), 3);
                } else {
                    msg("Apontamento " + tpoApto, "Apontamento de Hora Improdutiva aberto para Ordem de Produção: " + apoLocal.getCodOrdem() + ". Encerra-lo antes de prosseguir", 3);
                }

//                updateScreen();
                return;
            }
        }

        apoLocal = new Apontamento();
        apoLocal.setCodOrdem(codOrdem);
        apoLocal.setTpoCategoria(tpoCategoria);
        apoLocal.setOperacao(codOpe);
        apoLocal.setRecurso(codRec);
        apoLocal.setFunId(func.getId());
        apoLocal.setFunNome(func.getNome());
        apoLocal.setEmp(func.getEmpresa());
        apoLocal.setFil(func.getFilial());
        apoLocal.setMotivo("");
        apoLocal.setCcusto(func.getCcusto());
        apoLocal.setMod(func.getFunMod());

        String msg = dao.inserirApontamento(apoLocal);

        if (msg.startsWith("Falha")) {
            msg("Apontamento " + tpoApto, msg + " Codigo Ordem: " + codOrdem + " Funcionario: " + codFunc, 3);
        } else {
            msg("Apontamento " + tpoApto, msg, 1);
        }

        codfunc = "";
        ordem = "";
        motivo = "";
        operacao = "";
        recurso = "";
        telaAtual = "principal";



        return;
    }

    public void updateScreen() {

        FacesContext faces = FacesContext.getCurrentInstance();
        ExternalContext context = faces.getExternalContext();
        try {


            context.redirect("/Aponte_fitz/");
//            context.dispatch("/");
//            context.responseFlushBuffer();

        } catch (IOException ex) {
            Logger.getLogger(ApontamentoMB.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void inserirApontamento(String codFunc, String codOrdem, String operacao, String recurso, String mot, String tpoCategoria) {
        String tpoApto = (tpoCategoria.startsWith("P") ? "Produção" : "Improdutivo");

        if (tpoCategoria.startsWith("P")) {
            if (codOrdem.isEmpty() || codFunc.isEmpty() || mot.isEmpty()) {
                msg("Apontamento " + tpoApto, "Preencher campos", 3);
                return;
            }
        } else {
            if (codFunc.isEmpty() || mot.isEmpty()) {
                msg("Apontamento " + tpoApto, "Preencher campos", 3);
                return;
            }

        }

        if (!daoMicrosiga.getMotivo(mot, param.getSx5tbl())) {
            msg("Apontamento " + tpoApto, "Motivo inválido", 3);
            return;
        }

        Funcionario func = dao.getFuncionario(codFunc);

        if (func == null) {
            msg("Apontamento " + tpoApto, "Funcionário não encontrado com o código " + codFunc, 3);
            return;
        }

        Apontamento apoLocal;
        apoLocal = dao.getApontamento(func.getId(), true);

        if (apoLocal != null) {
            msg("Apontamento " + tpoApto, "Apontamento já registrado com a Ordem de Produção: " + apoLocal.getCodOrdem() + " Motivo: " + apoLocal.getMotivo(), 3);
            return;
        }

        apoLocal = dao.getApontamento(func.getId(), false);
        if (apoLocal != null) {
            apoLocal.setEncerramento(new Timestamp(System.currentTimeMillis()));
            String tempoTotal = calcularTempo(apoLocal.getAbertura(), apoLocal.getEncerramento());
            apoLocal.setTempoTotal(tempoTotal);
            dao.updateApontamento(apoLocal);
            msg("Apontamento " + tpoApto, "Existia apontamento de produção para a OP: " + apoLocal.getCodOrdem() + " e foi encerrado", 2);
        }


        apoLocal = new Apontamento();
        apoLocal.setCodOrdem(codOrdem);
        apoLocal.setOperacao(operacao);
        apoLocal.setRecurso(recurso);
        apoLocal.setTpoCategoria(tpoCategoria);
        apoLocal.setFunId(func.getId());
        apoLocal.setFunNome(func.getNome());
        apoLocal.setMotivo(mot);
        apoLocal.setEmp(func.getEmpresa());
        apoLocal.setFil(func.getFilial());
        apoLocal.setCcusto(func.getCcusto());
        apoLocal.setMod(func.getFunMod());
        String msg = dao.inserirApontamento(apoLocal);

//        updateScreen();

        if (msg.startsWith("Falha")) {
            msg("Apontamento " + tpoApto, msg + " Codigo Ordem: " + codOrdem + " Funcionario: " + codFunc + " Motivo: " + mot, 3);
        } else {
            msg("Apontamento " + tpoApto, msg, 1);
        }

        FacesContext fc = FacesContext.getCurrentInstance();
        codfunc = "";
        ordem = "";
        motivo = "";

        telaAtual = "principal";
//        fc.renderResponse();

    }

    public void configParams() {
        
         Funcionario func = dao.getFuncionario(codfunc);

        if (func == null) {
            configOK = false;
            funcionarioOK = false;
            msg("Configuração do Sistema", "Você não está habilitado para configurar o sistema", 4);
            return;
        }

        if (func.getResponsavelSetor().startsWith("S")) {
            configOK = true;
            if(!funcionarioOK){
            msg("Configuração do Sistema", "Ajuste as configurações do sistema", 1);
            funcionarioOK = true;
            codfunc = "";
            }
        } else {
            configOK = false;
            funcionarioOK = false;
            msg("Configuração do Sistema", "Você não está habilitado para configurar o sistema", 4);
        }
    }

    
    public void defineTelaAtual(ActionEvent e) {


        iniciando = false;

        setTelaAtual(e.getComponent().getId().toString().toLowerCase());

        setCodfunc("");
        setOrdem("");
        setMotivo("");

        funcionarioOK = false;
        configOK = false;
        apontamentoOK = false;

        if (getTelaAtual().startsWith("f4")) {
            listFunc = dao.getFuncionarios();
        }

        if (getTelaAtual().startsWith("f11")) {
            loadApontamentos();
        }

        updateScreen();
    }

    public void encerrarApontamentos(AjaxBehaviorEvent e) {
        Funcionario func = dao.getFuncionario(codfunc);
        String msg = "";

        if (func == null) {
            msg("Encerrar apontamentos", "Você não está habilitado para executar esta funcionalidade no sistema", 4);
            return;
        }

        if (func.getResponsavelSetor().startsWith("S")) {
            msg = dao.finalizarApontamentos(intervalos);
            loadApontamentos();
            msg("Encerrar apontamentos", msg, 1);
        } else {
            msg("Encerrar apontamentos", "Você não está habilitado para executar esta funcionalidade no sistema", 4);
            return;
        }
    }

    public void localizaApontamento() {
        if (this.getTelaAtual().startsWith("f6")) {
            this.localizaApontamento(codfunc, quantidade, ordem, operacao, "P");
        } else if (this.getTelaAtual().startsWith("f8")) {
            this.localizaApontamento(codfunc, "I");
        }
    }
    
    public void localizaApontamento(String codfunc, float quantidade, String codOrdem, String codOperacao, String tpoCategoria) {


        String tpoApto = tpoCategoria.startsWith("P") ? "de Produção" : "Improdutivo";
        Timestamp tFinal = new Timestamp(System.currentTimeMillis());


        if (codfunc.isEmpty()) {
            msg("Apontamento " + tpoApto, "Preencha os campos " + codfunc, 3);
            return;
        }

        Funcionario func = dao.getFuncionario(codfunc);
        if (func == null) {
            msg("Apontamento " + tpoApto, "Funcionário não encontrado com o código " + codfunc, 2);
            return;
        }

        apo = dao.getApontamento(func.getId(), codOrdem, codOperacao,  tpoCategoria);

        if (apo != null) {
            apo.setEncerramento(tFinal);
            apo.setTempoTotal(calcularTempo(apo.getAbertura(), apo.getEncerramento()));
        } else {
            msg("Apontamento " + tpoApto, "Nenhum apontamento " + tpoApto + " foi aberto para o funcionário " + codfunc, 2);
            return;
        }

        confirmaEncerramento();
        this.quantidade = 0;
        operacao = "";
        ordem = "";
        apontamentoOK = true;

    }
    
    public void localizaApontamento(String codfunc, String tpoCategoria) {


        String tpoApto = tpoCategoria.startsWith("P") ? "de Produção" : "Improdutivo";
        Timestamp tFinal = new Timestamp(System.currentTimeMillis());


        if (codfunc.isEmpty()) {
            return;
        }

        Funcionario func = dao.getFuncionario(codfunc);
        if (func == null) {
            msg("Apontamento " + tpoApto, "Funcionário não encontrado com o código " + codfunc, 2);
            return;
        }

        apo = dao.getApontamento(func.getId(), tpoCategoria);

        if (apo != null) {
            apo.setEncerramento(tFinal);
            apo.setTempoTotal(calcularTempo(apo.getAbertura(), apo.getEncerramento()));
        } else {
            msg("Apontamento " + tpoApto, "Nenhum apontamento " + tpoApto + " foi aberto para o funcionário " + codfunc, 2);
            return;
        }

        confirmaEncerramento();

        apontamentoOK = true;

    }

    public String confirmaEncerramento() {
        if (this.getTelaAtual().startsWith("f6")) {
            this.confirmaEncerramento(getCodfunc(), getQuantidade(), "P");
            setCodfunc("");
        } else if (this.getTelaAtual().startsWith("f8")) {
            this.confirmaEncerramento(getCodfunc(), "I");
            setCodfunc("");
        }

        return "";
    }

    public void cancelaEncerramento(ActionEvent e) {
        if (this.getTelaAtual().startsWith("f6")) {
            this.setCodfunc("");
        }
    }
    
    public boolean validarOperacao(){
    
        if (operacao.isEmpty()) {
            msg("Funcionário", "Passe o código de operacao", 3);
            return false;
        }
        
        if(!daoMicrosiga.getOperacao(operacao)){
            msg("Funcionário", "Código de operação não existe em nosso sistema", 3);
            return false;
            
        }
        return true;
    }
    
    public boolean validarRecurso(){
    
        if (operacao.isEmpty()) {
            msg("Funcionário", "Passe o código do recurso", 3);
            return false;
        }
        
        if(!daoMicrosiga.getRecurso(recurso)){
            msg("Funcionário", "Recurso não existe em nosso sistema", 3);
            return false;
            
        }
        return true;
    }
    
    public boolean validarFunc() {

        if (codfunc.isEmpty()) {
            msg("Funcionário", "Passe o código de barras do seu crachá", 3);
            return false;
        }

        funcSelected = dao.getFuncionario(codfunc);
        if (funcSelected == null) {
            msg("Funcionário", "Número de crachá não encontrado no sistema", 3);
            return false;
        }
        
        if (dao.existeApontamentoAberto(funcSelected.getId(), getOperacao(), getOrdem())) {
                msg("Apontamento produção", "Existe um Apontamento identico aberto. Fechar antes de prosseguir", 2);
            return false;
            }
        
        return true;
    }
    
    public boolean validarCodigoMicrosiga(){
        
        return dao.getCogidoMicrosiga(ordem);
    }
    
    public boolean validarCodigoMicrosiga(Funcionario funcSel){
        
        return dao.getCogidoMicrosiga(funcSel);
    }

    public void atualizarTbl(ActionEvent e) {
        loadApontamentos();
    }

    public void atualizarParams(ActionEvent e) {
        String msg = dao.updateParams(param);
        if (msg.startsWith("Falha")) {
            msg("Atualização de parametro", msg, 4);
        } else {
            msg("Atualização de parametro", msg, 1);
        }

        setTelaAtual("principal");
        configOK = false;
    }

    public void confirmaEncerramento(String codFunc, String tpoCategoria) {
        String tpoApto = tpoCategoria.startsWith("P") ? "de Produção" : "Improdutivo";

        if (codFunc.isEmpty()) {
            return;
        }

        Funcionario func = dao.getFuncionario(codFunc);
        if (func == null) {
            msg("Apontamento " + tpoApto, "Funcionário não encontrado com o código " + codFunc, 3);
            return;
        }

        apo = dao.getApontamento(func.getId(), tpoCategoria);
        Timestamp t = new Timestamp(System.currentTimeMillis());
        apo.setEncerramento(t);
        String tempoTotal = calcularTempo(apo.getAbertura(), apo.getEncerramento());
        apo.setTempoTotal(tempoTotal);

        dao.updateApontamento(apo);
        msg("Apontamento " + tpoApto, "Apontamento " + tpoApto + " encerrado com sucesso", 1);

        apontamentoOK = false;
        telaAtual = "principal";
    }
    
    public void confirmaEncerramento(String codFunc, float quantidade, String tpoCategoria) {
        String tpoApto = tpoCategoria.startsWith("P") ? "de Produção" : "Improdutivo";

        if (codFunc.isEmpty()) {
            return;
        }

        Funcionario func = dao.getFuncionario(codFunc);
        if (func == null) {
            msg("Apontamento " + tpoApto, "Funcionário não encontrado com o código " + codFunc, 3);
            return;
        }

        apo = dao.getApontamento(func.getId(), tpoCategoria);
        Timestamp t = new Timestamp(System.currentTimeMillis());
        apo.setEncerramento(t);
        String tempoTotal = calcularTempo(apo.getAbertura(), apo.getEncerramento());
        apo.setTempoTotal(tempoTotal);
        apo.setQuantidade(quantidade);

        dao.updateApontamento(apo);
        msg("Apontamento " + tpoApto, "Apontamento " + tpoApto + " encerrado com sucesso", 1);

        apontamentoOK = false;
        telaAtual = "principal";
    }

    public void verificarIntervalos(Timestamp aberta, Timestamp encerra) {
    }

    public void cadastrarFuncionario(ActionEvent e) {

        String msg = "Falha";
        
        if(validarCodigoMicrosiga()){
            msg("Adicionar funcionário", "Código Microsiga ja está cadastrado", 3);
            return;
        }
        
        if (motivo.isEmpty() || codfunc.isEmpty() || ordem.isEmpty()) {
            msg("Adicionar funcionário", "Preencha os campos", 3);
            return;
        }

        funcCadastro.setAtivo("S");
        funcCadastro.setCodMicrosiga(ordem);
        funcCadastro.setNome(codfunc);
        funcCadastro.setResponsavelSetor(motivo);
        funcCadastro.setApontarNvezes(getApontaNvezes());
        funcCadastro.setCcusto(ccusto);
        funcCadastro.setEmpresa(param.empresa);
        funcCadastro.setFilial(param.filial);
        funcCadastro.setFunMod(funMod);

        msg = dao.adicionarFuncionario(funcCadastro);

        if (msg.startsWith("Falha")) {
            msg("Adicionar funcionário", msg, 3);
        } else {
            msg("Adicionar funcionário", msg, 1);
        }
        this.codfunc = "";
        this.ordem = "";
        this.motivo = "";
        this.empresa = "";
        this.filial = "";
        this.ccusto = "";
        this.funMod = "";
        this.param.empresa = "";
        this.param.filial = "";

        listFunc = dao.getFuncionarios();
    }

    public void atualizarFuncionario(ActionEvent e) {
        
        if(validarCodigoMicrosiga(funcSelected)){
            msg("Atualizar funcionário", "Código Microsiga ja está cadastrado", 3);
            return;
        }
        
        String message = dao.atualizarFuncionario(funcSelected);
        
        if (message.startsWith("Falha")) {
            msg("Atualizar funcionario", message, 3);
        } else {
            msg("Atualizar funcionario", message, 1);    
        }
    }

    public String getDataHoraTela() {
        SimpleDateFormat formato = new SimpleDateFormat("dd MMM yyyy HH:mm:ss");
        dataHoraTela = formato.format(new Date(System.currentTimeMillis()));
        return dataHoraTela;
    }

    public void setDataHoraTela(String dataHoraTela) {
        this.dataHoraTela = dataHoraTela;
    }

    public String loadApontamentos() {
        list = dao.loadApontamentos(dataHoraTela, true);
        return "";
    }

    public ArrayList<Apontamento> getList() {
//        loadApontamentos();
        return list;
    }

    public void setList(ArrayList<Apontamento> list) {
        this.list = list;
    }

    public Apontamento getSelected() {
        return selected;
    }

    public void setSelected(Apontamento selected) {
        this.selected = selected;
    }

    public Apontamento getApo() {
        return apo;
    }

    public void setApo(Apontamento apo) {
        this.apo = apo;
    }

    public boolean isApontamentoOK() {
        return apontamentoOK;
    }

    public void setApontamentoOK(boolean apontamentoOK) {
        this.apontamentoOK = apontamentoOK;
    }

    public Funcionario getFuncSelected() {
        return funcSelected;
    }

    public void setFuncSelected(Funcionario funcSelected) {
        this.funcSelected = funcSelected;
    }

    public ArrayList<Funcionario> getListFunc() {
        return listFunc;
    }

    public void setListFunc(ArrayList<Funcionario> listFunc) {
        this.listFunc = listFunc;
    }

    private void loadFuncionarios() {
        listFunc = dao.getFuncionarios();
    }

    public void loadFuncionarios(ActionEvent e) {
        loadFuncionarios();
    }

    public Funcionario getFuncCadastro() {
        return funcCadastro;
    }

    public void setFuncCadastro(Funcionario funcCadastro) {
        this.funcCadastro = funcCadastro;
    }

    public ArrayList getListSN() {
        listSN = new ArrayList();
        listSN.add("S");
        listSN.add("N");
        return listSN;
    }

    public void setListSN(ArrayList listSN) {
        this.listSN = listSN;
    }

    public String getTelaAtual() {
        return telaAtual.toLowerCase();
    }

    public void setTelaAtual(String telaAtual) {
        this.telaAtual = telaAtual;
    }

    public String getOrdem() {
        return ordem;
    }

    public void setOrdem(String ordem) {
        this.ordem = ordem;
    }

    public String getRecurso() {
        return recurso;
    }

    public void setRecurso(String recurso) {
        this.recurso = recurso;
    }

    public String getCodfunc() {
        return codfunc;
    }

    public void setCodfunc(String codfunc) {
        this.codfunc = codfunc;
    }

    public String getOperacao() {
        return operacao;
    }

    public void setOperacao(String operacao) {
        this.operacao = operacao;
    }

    public String getEmpresa() {
        return empresa;
    }

    public void setEmpresa(String empresa) {
        this.empresa = empresa;
    }

    public String getFilial() {
        return filial;
    }

    public void setFilial(String filial) {
        this.filial = filial;
    }

    public float getQuantidade() {
        return quantidade;
    }

    public void setQuantidade(float quantidade) {
        this.quantidade = quantidade;
    }

    public String getMotivo() {
        return motivo;
    }

    public void setMotivo(String motivo) {
        this.motivo = motivo;
    }

    public Parametro getParam() {
        return param;
    }

    public void setParam(Parametro param) {
        this.param = param;
    }

    public boolean isConfigOK() {
        return configOK;
    }

    public void setConfigOK(boolean configOK) {
        this.configOK = configOK;
    }

    public boolean isFuncionarioOK() {
        return funcionarioOK;
    }

    public void setFuncionarioOK(boolean funcionarioOK) {
        this.funcionarioOK = funcionarioOK;
    }

    public String getApontaNvezes() {
        return apontaNvezes;
    }

    public void setApontaNvezes(String apontaNvezes) {
        this.apontaNvezes = apontaNvezes;
    }

    public String getTempoOP() {
        return tempoOP;
    }

    public void setTempoOP(String tempoOP) {
        this.tempoOP = tempoOP;
    }

    private String calcularTempo(Timestamp t1, Timestamp t2) {
        try {

            //Verifica a hora DO CAFE - Que absurdo isso poderia estar em um SQL no Banco
            SimpleDateFormat dfx = new SimpleDateFormat("kk:mm");
            String abertura = dfx.format(t1);
            String encerrar = dfx.format(t2);
            Date dateAbertura;
            Date dateEncerra;

            dateAbertura = dfx.parse(abertura);
            dateEncerra = dfx.parse(encerrar);

            if ((dateAbertura.getTime() > intervalos.getIntervalo1I().getTime()) && (dateAbertura.getTime() < intervalos.getIntervalo1F().getTime())) {
                t2.setMinutes(t2.getMinutes() - 10);
            }

            if ((dateAbertura.getTime() > intervalos.getIntervalo2I().getTime()) && (dateAbertura.getTime() < intervalos.getIntervalo2F().getTime())) {
                //descontar 1 hora
                t2.setHours(t2.getHours() - 1);
            }

            Timestamp tResult = new Timestamp(t2.getTime() - t1.getTime());
            double tD = (double) tResult.getTime() / (24 * 60 * 60 * 1000);
            double tH = tD * 24;
            double tM = ((tD * 24) - (int) tH) * 60;
            double tS = (tM - (int) tM) * 60;

            int tH1 = (int) tH;
            int tM1 = (int) tM;
            int tS1 = (int) tS;

            String result = "";

            if (tH1 > 9) {
                result = tH1 + ":";
            } else {
                result = "0" + tH1 + ":";
            }


            if (tM1 > 9) {
                result = result + tM1 + ":";
            } else {
                result = result + "0" + tM1 + ":";
            }

            if (tS1 > 9) {
                result = result + tS1;
            } else {
                result = result + "0" + tS1;
            }


            return result;
        } catch (ParseException ex) {
            System.out.println("Falha ao calcular tempo: " + ex.getMessage());
            return "00:00:00";
        }
    }

    public boolean isIniciando() {
        return iniciando;
    }

    public void setIniciando(boolean iniciando) {
        this.iniciando = iniciando;
    }

    public String getCcusto() {
        return ccusto;
    }

    public void setCcusto(String ccusto) {
        this.ccusto = ccusto;
    }

    public String getFunMod() {
        return funMod;
    }

    public void setFunMod(String funMod) {
        this.funMod = funMod;
    }

}