[quote=fabiomazzo]Posta todo seu JSF e o Bean inteiro para conferir.
Abs[/quote]
Classe de controle
public class RecebimentoControle extends CrudControle {
private Os os;
private Servico servico;
private Recebimento recebimento;
private RecebimentoDAO dao;
private String numeroContrato;
private int numeroASC;
private String numeroOS;
private int numeroServico;
private HtmlDataTable table;
private boolean eRecebe = false;
private boolean eDevolve = false;
public RecebimentoControle() {
os = new Os();
servico = new Servico();
recebimento = new Recebimento();
dao = new RecebimentoDAO();
setDao(dao);
}
//Metodos get e set
public Recebimento pegaLinhaSelecionada() {
Recebimento recebimento1 = (Recebimento) table.getRowData();
return recebimento1;
}
public void editarRecebimentos() {
this.setServico(atualizaServico(servico.getCodigo_servico()));
this.setRecebimento(servico.getRecebedev());
chamaValidadcao();
}
public void editarRecebimento() {
Recebimento recebimento1 = pegaLinhaSelecionada();
this.setServico(atualizaServico(recebimento1.getFkNumServico()));
// setRecebimento(recebimento1);
}
public void alterarDescricao() {
Recebimento recebimento1 = pegaLinhaSelecionada();
setRecebimento(recebimento1);
}
/**
* Restaura uma OS padrão do controle
* limpando os dados da mesma.
*/
public void limparDados() {
os = new Os();
servico = new Servico();
setNumeroServico(0);
setNumeroContrato("");
setNumeroASC(0);
setNumeroOS("");
}
/**
* Atualiza um Recebimeto selecionada pela ComboBox.
*/
public void atualizarOsSelecionado() {
//cria um value object, configurando apenas o id do mesmo.
Os os1 = new Os();
os1.setNumero_os(numeroOS);
//através do VO, pesquisa o funcionário selecionado e configura a mesmo no controle.
abrirConexao();
Os osSelecionado = dao.pesquisar(numeroOS);
//através da numero da OS, pesquisa pesquiso a ultima alteração OS.
// Os osDataAnterior = dao.pesquisarUltimaData(numeroOS);
// osSelecionado.setDataRecebeAnterior(osDataAnterior.getDataRecebeAnterior());
fecharConexao();
this.setOs(osSelecionado);
}
public Servico atualizaServico(int numeroServico) {
//através do VO, pesquisa o funcionário selecionado e configura a mesmo no controle.
abrirConexao();
//através da numero do Servico, pesquiso a ultima alteração do Servico.
Servico servicoSelecionado = dao.pesquisarServicoSelecionado(numeroServico);
Recebimento ultimoRecebimentoDevolucao = dao.pesquisarUltimaDataRecebimentoServico(numeroServico);
fecharConexao();
servicoSelecionado.setRecebedev(ultimoRecebimentoDevolucao);
return servicoSelecionado;
}
/**
* Atualiza um Recebimeto do Servico selecionado pela ComboBox.
*/
public void atualizarServicoSelecionado() {
//cria um value object, configurando apenas o id do mesmo.
Servico servico1 = new Servico();
servico1.setCodigo_servico(numeroServico);
//através do VO, pesquisa o funcionário selecionado e configura a mesmo no controle.
abrirConexao();
//através da numero do Servico, pesquiso a ultima alteração do Servico.
Servico servicoSelecionado = dao.pesquisarServicoSelecionado(numeroServico);
Recebimento ultimoRecebimentoDevolucao = dao.pesquisarUltimaDataRecebimentoServico(numeroServico);
servicoSelecionado.setRecebedev(ultimoRecebimentoDevolucao);
fecharConexao();
this.setServico(servicoSelecionado);
}
/**
* Cadastra um Recebimento de um Servico no Banco de dados;
*
* @void
*/
public void inserirRecebimentoServico() {
boolean retorno;
boolean verificaData = verificaDatas();
System.out.println("VERIFICADATAS---->>>>:" + verificaData);
if (verificaData) {
abrirConexao();
retorno = dao.inserirRecebimentoServico(servico);
fecharConexao();
if (retorno) {
this.addMessage("servico", INF_ADICIONAR_SERVICO, FacesMessage.SEVERITY_INFO, "");
this.acao = PADRAO;
limparDados();
} else {
this.addMessage("servico", ERR_RECEBER_SERVICO, FacesMessage.SEVERITY_ERROR, "");
}
}
}
/**
* Cadastra um Recebimento de um Servico no Banco de dados;
*
* @void
*/
public void alterarDescricaoRecebimento() {
boolean retorno;
abrirConexao();
retorno = dao.alterarDescricaoRecebimento(recebimento);
fecharConexao();
if (retorno) {
this.addMessage("servico", INF_ADICIONAR_SERVICO, FacesMessage.SEVERITY_INFO, "");
this.acao = PADRAO;
limparDados();
} else {
this.addMessage("servico", ERR_RECEBER_SERVICO, FacesMessage.SEVERITY_ERROR, "");
}
}
/**
* Lista todas as ASC para a ComboBox
*
* @ListaAsc
*/
public List<SelectItem> getListarParaComboASC() {
abrirConexao();
List lista = dao.listarComboASC(numeroContrato);
fecharConexao();
ArrayList<SelectItem> listaAsc = new ArrayList<SelectItem>();
for (int i = 0; i < lista.size(); i++) {
SelectItem ascCombo = new SelectItem();
Asc e = (Asc) lista.get(i);
ascCombo.setValue(e.getCod_asc());
ascCombo.setLabel(e.getCod_asc() + "-" + e.getNome_sis());
listaAsc.add(ascCombo);
}
return listaAsc;
}
/**
* lista todos o numeros de ASC do Banco de dados que não possuem data de
* recebimento
*
* @return listaOS;
*/
public List<SelectItem> getListarParaComboOS() {
abrirConexao();
List lista = dao.listarComboOS(numeroASC);
fecharConexao();
ArrayList<SelectItem> listaOS = new ArrayList<SelectItem>();
for (int i = 0; i < lista.size(); i++) {
SelectItem osCombo = new SelectItem();
Os e = (Os) lista.get(i);
if (e.getStatus_os() == 0) {
osCombo.setValue(e.getNumero_os());
osCombo.setLabel(e.getNumero_os());
listaOS.add(osCombo);
}
}
return listaOS;
}
public List<SelectItem> getListarParaComboServico() {
abrirConexao();
List lista = dao.listarComboServico(numeroOS);
fecharConexao();
ArrayList<SelectItem> listaServico = new ArrayList<SelectItem>();
for (int i = 0; i < lista.size(); i++) {
SelectItem servCombo = new SelectItem();
Servico e = (Servico) lista.get(i);
servCombo.setValue(e.getCodigo_servico());
servCombo.setLabel(String.valueOf(e.getCodigo_servico()));
listaServico.add(servCombo);
}
return listaServico;
}
/**
* Lista todos os Recebimentos do Banco de Dados.
*
* @return lista;
*/
public List<Servico> getListar() {
abrirConexao();
List lista = dao.pesquisaRecebimentosServico(servico);
fecharConexao();
return lista;
}
/**
* Verifica se todas as Datas
*
* @return retorno
*/
public boolean verificaDatas() {
boolean retorno = false;
if (verificaDataRecebimentoServico() && verificaDataDeDevolucaoServico()
&& verificaDataUltimoRecebimentoServico() && verificaDataAtual()) {
retorno = true;
} else {
retorno = false;
}
return retorno;
}
public boolean verificaDataRecebimentoServico() {
boolean retorno = false;
if (servico.getRecebedev().getDataRecebe().before(servico.getData_abertura_servico())) {
this.addMessage("os", WARN_DATARECEBE_MENOR_ABERTURA, FacesMessage.SEVERITY_WARN, "");
retorno = false;
} else {
retorno = true;
}
return retorno;
}
/* Verifica se a Data de Devolução do Servico < Data de Recebimento do Servico
*
* @return retorno;
*/
public boolean verificaDataDeDevolucaoServico() {
boolean retorno = false;
abrirConexao();
Recebimento agoraRecebimento = servico.getRecebedev();
Recebimento uLtimoRecebimento = dao.pesquisarUltimaDataRecebimentoServico(servico.getCodigo_servico());
fecharConexao();
if (eDevolve == true && uLtimoRecebimento.getStatusServico() != null) {
if (agoraRecebimento.getDataRecebe().equals(uLtimoRecebimento.getDataDevolve()) || agoraRecebimento.getDataRecebe().after(uLtimoRecebimento.getDataDevolve())) {
retorno = true;
} else {
if (agoraRecebimento.getDataRecebe().before(uLtimoRecebimento.getDataDevolve())) {
this.addMessage("servico", WARN_DATADEVOLVE_MENOR_RECEBE_SERVICO, FacesMessage.SEVERITY_WARN, "");
retorno = false;
} else {
retorno = true;
}
}
} else {
retorno = true;
}
return retorno;
}
/**
* Verifica a se a Data de que está sendo informada < Ultima data de recebimento do Servico.
*
* @return retorno;
*/
public boolean verificaDataUltimoRecebimentoServico() {
boolean retorno = false;
abrirConexao();
Recebimento agoraRecebimento = servico.getRecebedev();
Recebimento uLtimoRecebimento = dao.pesquisarUltimaDataRecebimentoServico(servico.getCodigo_servico());
fecharConexao();
if (eRecebe == true && agoraRecebimento.getDataDevolve().before(uLtimoRecebimento.getDataRecebe())) {
this.addMessage("recebimento", WARN_DATARECEBE_MENOR_ULTIMO_RECEBIMENTO, FacesMessage.SEVERITY_WARN, "");
retorno = false;
} else {
retorno = true;
}
return retorno;
}
/**
* Verifica se da Data de Recebimento Servico < Data de Abertura do Servico
*
* @return retorno;
*/
public boolean verificaDataRecebimento() {
boolean retorno = false;
if (os.getDataRecebe().before(os.getData_abertura_os())) {
this.addMessage("servico", WARN_DATARECEBE_MENOR_ABERTURA, FacesMessage.SEVERITY_WARN, "");
retorno = false;
} else {
retorno = true;
}
return retorno;
}
/**
* Verifica se a Data de Devolução < Data de Recebimento
*
* @return retorno;
*/
public boolean verificaDataDeDevolucao() {
boolean retorno = false;
Date data = Calendario.stringToDate(Calendario.getDataAtual());
if (os.getDataDevolve() == null || os.getDataDevolve().equals(os.getDataRecebe())) {
retorno = true;
} else {
if (os.getDataDevolve().before(os.getDataRecebe()) || os.getDataDevolve().before(data)) {
this.addMessage("os", WARN_DATADEVOLVE_MENOR_RECEBE, FacesMessage.SEVERITY_WARN, "");
retorno = false;
} else {
retorno = true;
}
}
return retorno;
}
/**
/**
* Verifica a se a Data de que está sendo informada < Ultima data de recebimento da OS.
*
* @return retorno;
*/
public boolean verificaDataUltimoRecebimento() {
boolean retorno = false;
abrirConexao();
List lista = dao.verificaRecebimentosDaOS(os);
fecharConexao();
if (!lista.isEmpty()) {
for (int i = 0; i
< lista.size(); i++) {
Os os1 = (Os) lista.get(i);
if (os.getDataRecebe().before(os1.getDataRecebe())) {
this.addMessage("recebimento", WARN_DATARECEBE_MENOR_ULTIMO_RECEBIMENTO, FacesMessage.SEVERITY_WARN, "");
retorno = false;
break;
} else {
retorno = true;
}
}
} else {
retorno = true;
}
return retorno;
}
public boolean verificaDataAtual() {
boolean retorno = false;
Date data = Calendario.stringToDate(Calendario.getDataAtual());
abrirConexao();
Recebimento agoraRecebimento = servico.getRecebedev();
fecharConexao();
if (eDevolve = true && agoraRecebimento.getDataRecebe().after(data)) {
this.addMessage("recebimento", WARN_DATARECEBE_MAIOR_DATA_ATUAL, FacesMessage.SEVERITY_WARN, "");
retorno = false;
} else {
retorno = true;
}
return retorno;
}
public void chamaValidadcao() {
Date data = Calendario.stringToDate(Calendario.getDataAtual());
abrirConexao();
Recebimento uLtimoRecebimento = dao.pesquisarUltimaDataRecebimentoServico(servico.getCodigo_servico());
fecharConexao();
servico.setData_ultimo_recebimento_servico(servico.getRecebedev().getDataDevolve());
if (uLtimoRecebimento.getDataRecebe() == null) {
eDevolve = true;
eRecebe = false;
servico.getRecebedev().setDataRecebe(data);
servico.getRecebedev().setDataDevolve(null);
servico.setData_ultimo_recebimento_servico(uLtimoRecebimento.getDataDevolve());
servico.getRecebedev().setObservacoes("");
} else if (uLtimoRecebimento.getDataDevolve() == null) {
servico.getRecebedev().setDataDevolve(data);
eRecebe = true;
eDevolve = false;
servico.setData_ultimo_recebimento_servico(uLtimoRecebimento.getDataRecebe());
servico.getRecebedev().setObservacoes("");
} else {
eDevolve = true;
eRecebe = false;
servico.getRecebedev().setDataRecebe(data);
servico.getRecebedev().setDataDevolve(null);
servico.setData_ultimo_recebimento_servico(uLtimoRecebimento.getDataDevolve());
servico.getRecebedev().setObservacoes("");
}
}
public void validaRecebidoOK() {
Date data = Calendario.stringToDate(Calendario.getDataAtual());
abrirConexao();
Recebimento uLtimoRecebimento = dao.pesquisarUltimaDataRecebimentoServico(servico.getCodigo_servico());
fecharConexao();
if (uLtimoRecebimento.getDataRecebe() == null && servico.getRecebedev().getStatusServico().equals("4")) {
eDevolve = true;
eRecebe = false;
servico.getRecebedev().setDataRecebe(data);
servico.getRecebedev().setDataDevolve(null);
servico.setData_ultimo_recebimento_servico(uLtimoRecebimento.getDataDevolve());
servico.getRecebedev().setObservacoes("");
System.out.println("RCEBI:" + servico.getRecebedev().toString());
} else {
chamaValidadcao();
}
}
}
Classe Recebimento:
public class Recebimento {
private int numRecebe;
private Date dataRecebe;
private Date dataDevolve;
private String observacoes;
private int fkNumServico;
private String statusServico;
public Recebimento() {
}
//Metodos get e set
@Override
public String toString(){
return
"\n+++++++++++++++++++++++++++++++++++++++" +
"\nRecebimento numero= " + this.numRecebe +
"\nDataRecebimento= " + this.dataRecebe +
"\nDataDevolução= " + this.dataDevolve +
"\nObservações= " + this.observacoes +
"\nStatus= " + this.statusServico +
"\nFK_NUM_SERVICO= " + this.fkNumServico +
"\n+++++++++++++++++++++++++++++++++++++++" ;
}
}
Modal jsf só o conteúdo do body:
<body>
<ui:composition>
<f:subview id="subEditarRecebimento">
<a4j:form id="frmCrudEditarRecebimento">
<!-- Modal Painel panelNovoFeriado -->
<rich:modalPanel id="panelEditarRecebimento" autosized="false" keepVisualState="false" resizeable="false" width="600" height="500">
<!-- Cabeçalho do Modal -->
<f:facet name="header">
<h:outputText value="Editar Recebimento"/>
</f:facet>
<!--Mascara Data-->
<a4j:loadScript src="/scripts/jquery.maskedinput-1.1.4.js"/>
<rich:jQuery id="mskData" selector=".txtData" timing="onload" query="mask('99/99/9999',{placeholder:' '})" />
<!--Mascara Percentual-->
<rich:jQuery id="mskPercentual" selector=".txtPercentual" timing="onload" query="mask('9,99999',{placeholder:' '})" />
<f:facet name="controls" >
<h:graphicImage styleClass="close" value="/images/close.gif" onclick="Richfaces.hideModalPanel('panelEditarRecebimento')" />
</f:facet>
<fieldset class="fieldForm">
<rich:messages errorClass="alerta1" warnClass="alerta2" infoClass="alerta3" tooltip="true" showDetail="false"/>
<h:panelGrid columns="2" id="painelRecebimento">
<h:outputLabel for="teste" value="Serviço:"/>
<h:inputText id="teste" value="#{ManterRecebimento.servico.codigo_servico}" disabled="true" size="10">
<a4j:support event="onchange" reRender="frmCrudEditarRecebimento" ajaxSingle="true"/>
</h:inputText>
<h:outputLabel for="dataAberturaServico" value="Data de Abertura do Serviço:"/>
<h:inputText id="dataAberturaServico" value="#{ManterRecebimento.servico.data_abertura_servico}" size="10" disabled="true">
<f:convertDateTime pattern="dd/MM/yyyy"/>
</h:inputText>
<h:outputLabel for="inputDescServico" value="Descrição do Serviço:"/>
<h:inputTextarea id="inputDescServico" value="#{ManterRecebimento.servico.desc_servico}" disabled="true" cols="40"/>
<h:outputLabel for="dataRecebimento" value="Data de Recebimento/Devolução Anterior do Serviço:"/>
<h:inputText id="dataRecebimento" value="#{ManterRecebimento.servico.data_ultimo_recebimento_servico}" size="10" disabled="true">
<f:convertDateTime pattern="dd/MM/yyyy"/>
</h:inputText>
<h:outputLabel for="inputStatusAnterior" value="Situação Recebimento Anterior:"/>
<h:selectOneMenu id="inputStatusAnterior" value="#{ManterRecebimento.recebimento.statusServico}" disabled="true">
<f:selectItem itemValue="0" itemLabel="Contratado" />
<f:selectItem itemValue="1" itemLabel="Recebido para Avaliação" />
<f:selectItem itemValue="2" itemLabel="Devolvido para Correção" />
<f:selectItem itemValue="3" itemLabel="Rejeitado" />
<f:selectItem itemValue="4" itemLabel="Recebido OK" />
</h:selectOneMenu>
<a4j:outputPanel id="panelAtualizaRecebeOk">
<h:outputLabel for="inputStatus" value="Situação Recebimento:"/>
<h:selectOneMenu id="inputStatus" value="#{ManterRecebimento.recebimento.statusServico}" rendered="#{ManterRecebimento.recebimento.statusServico != 1}">
<f:selectItem itemValue="1" itemLabel="Recebido para Avaliação" />
</h:selectOneMenu>
<h:selectOneMenu id="inputStatus1" value="#{ManterRecebimento.recebimento.statusServico}" rendered="#{ManterRecebimento.recebimento.statusServico == 1}">
<f:selectItem itemValue="2" itemLabel="Devolvido para Correção" />
<f:selectItem itemValue="3" itemLabel="Rejeitado" />
<f:selectItem itemValue="4" itemLabel="Recebido OK" />
<a4j:support event="onchange" reRender="panelAtualizaRecebeOk" action="#{ManterRecebimento.validaRecebidoOK}" ajaxSingle="true"/>
</h:selectOneMenu>
<h:outputLabel for="inputDataRecebimento" value="Data de Recebimento do Serviço:" rendered="#{ManterRecebimento.recebimento.statusServico !='4'}"/>
<rich:calendar id="inputDataRecebimento" datePattern="dd/MM/yyyy" value="#{ManterRecebimento.recebimento.dataRecebe}"
disabled="#{ManterRecebimento.eRecebe}" required="true" requiredMessage="* 'DATA DE RECEBIMENTO' não informado."
inputClass="txtData" enableManualInput="true" direction="top-right" mode="client" />
<h:outputLabel for="inputDataDevolucao" value="Data Devolução do Serviço:"/>
<rich:calendar id="inputDataDevolucao" datePattern="dd/MM/yyyy" value="#{ManterRecebimento.recebimento.dataDevolve}"
disabled="#{ManterRecebimento.eDevolve}" inputClass="txtData" enableManualInput="true"
direction="top-right" mode="client" />
<h:outputLabel for="inputPercErros" value="Percentual de Erros do Serviço:"/>
<h:inputText id="inputPercErros" styleClass="txtPercentual" value="#{ManterRecebimento.servico.perc_erros_servico}" size="8" onkeypress="somenteNumero(event);">
<f:convertNumber pattern="#,##0.00000"/>
</h:inputText>
<h:outputLabel for="inputObsServico" value="Descrição do Recebimento/Devolução:"/>
<h:inputTextarea id="inputObsServico" value="#{ManterRecebimento.recebimento.observacoes}" cols="40"/>
</a4j:outputPanel>
</h:panelGrid>
<br/>
<a4j:outputPanel id="botoes" styleClass="formButton">
<a4j:commandButton styleClass="button" value="Inserir" action="#{ManterRecebimento.inserirRecebimentoServico}" onclick="javascript:Richfaces.hideModalPanel('panelEditarRecebimento')" reRender= "painel2,lstCrudRecebimentos, "/>
<a4j:commandButton styleClass="button" value="Cancelar" onclick="javascript:Richfaces.hideModalPanel('panelEditarRecebimento')" immediate="true"/>
</a4j:outputPanel>
</fieldset>
</rich:modalPanel>
</a4j:form>
</f:subview>
</ui:composition>
</body>