package br.com.ec.controller.managedbean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.context.annotation.Scope;
import br.com.ec.controller.managedbean.consultademanda.ParcelaRecebiveisConsultaPorDemanda;
import br.com.ec.core.generic.GenericService;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.dto.ParametrosConsultaLancamentosDTO;
import br.com.ec.domain.model.Parcela;
import br.com.ec.domain.model.tipos.TipoCartao;
import br.com.ec.domain.service.parcela.ParcelaService;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.generic.AbstractBean;
import br.com.ec.web.message.LancadorMensagem;
@Named
@Scope
("view")
public class ReceberParcelasBean
extends AbstractBean
<Parcela
> implements Serializable {
private static final long serialVersionUID = 1L
;
private ParametrosConsultaLancamentosDTO parametrosConsultaLancamentos
;
private ParcelaRecebiveisConsultaPorDemanda lazyProgramadosRecebiveis
;
private List<Parcela
> parcelasSelecionadas
;
private Date dataRecebimento
;
private ParcelaService parcelaService
;
@Inject
public ReceberParcelasBean
(ParcelaRecebiveisConsultaPorDemanda lazyProgramadosRecebiveis, ParcelaService parcelaService
) {
this.
lazyProgramadosRecebiveis = lazyProgramadosRecebiveis
;
this.
parcelaService = parcelaService
;
}
@
Override
public void preCarregamento
() {
entidade =
new Parcela
();
parametrosConsultaLancamentos =
new ParametrosConsultaLancamentosDTO
();
parametrosConsultaLancamentos.
setEntidade(new Parcela
());
parametrosConsultaLancamentos.
setDataInicial(DataUtils.
getPrimeiroDiaDoMesAtual());
parametrosConsultaLancamentos.
setDataFinal(DataUtils.
getUltimoDiaDoMesAtual());
parcelasSelecionadas =
new ArrayList<Parcela
>();
}
@
Override
public void limparEntidade
() {
entidade =
new Parcela
();
}
@
Override
public GenericService
<Parcela
> getService
() {
return null;
}
@
Override
public Parcela getEntidade
() {
return entidade
;
}
@
Override
public Parcela getId
() {
return getEntidade
();
}
public ParametrosConsultaLancamentosDTO getParametrosConsultaLancamentos
() {
return parametrosConsultaLancamentos
;
}
public void setParametrosConsultaLancamentos
(ParametrosConsultaLancamentosDTO parametrosConsultaLancamentos
) {
this.
parametrosConsultaLancamentos = parametrosConsultaLancamentos
;
}
public ParcelaRecebiveisConsultaPorDemanda getLazyProgramadosRecebiveis
() {
prepararConsultaDemandaProgramadosRecebiveis
();
return lazyProgramadosRecebiveis
;
}
public void setLazyProgramadosRecebiveis
(ParcelaRecebiveisConsultaPorDemanda lazyProgramadosRecebiveis
) {
this.
lazyProgramadosRecebiveis = lazyProgramadosRecebiveis
;
}
public void prepararConsultaDemandaProgramadosRecebiveis
() {
getParametrosConsultaLancamentos
().
setPagamentoRealizado(false);
getParametrosConsultaLancamentos
().
setOrdenacao("e.dataVencimento");
getParametrosConsultaLancamentos
().
setTipoBusca("R");
lazyProgramadosRecebiveis.
setarParametrosConsulta(getParametrosConsultaLancamentos
());
}
public Date getDataRecebimento
() {
return dataRecebimento
;
}
public void setDataRecebimento
(Date dataRecebimento
) {
this.
dataRecebimento = dataRecebimento
;
}
public List<Parcela
> getParcelasSelecionadas
() {
return parcelasSelecionadas
;
}
public void setParcelasSelecionadas
(List<Parcela
> parcelasSelecionadas
) {
this.
parcelasSelecionadas = parcelasSelecionadas
;
}
public Double valorTotalParcelasSelecionadas
() {
Double total =
new Double(0.0);
if (VerificadorUtil.
naoEstaNulo(getParcelasSelecionadas
())) {
for (Parcela parcela : getParcelasSelecionadas
()) {
total = total + parcela.
getValor();
}
}
return total
;
}
public TipoCartao
[] getTiposCartoes
() {
return TipoCartao.
values();
}
/***************************************************************/
public void receberParcelas
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
parcelaService.
receberParcelas(getDataRecebimento
(), getParcelasSelecionadas
());
LancadorMensagem.
lancarSucesso("PARCELA(S) RECEBIDA(S) COM SUCESSO!");
}
});
}
}