package gcom.faturamento.controladores;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.ejb.CreateException;
import gcom.arrecadacao.repositorio.RepositorioPagamento;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.faturamento.debito.DebitoACobrar;
import gcom.faturamento.repositorio.RepositorioDebitoACobrar;
import gcom.util.ControladorComum;
import gcom.util.ControladorException;
import gcom.util.ErroRepositorioException;
public class ControladorDebitoACobrar extends ControladorComum{
private static final long serialVersionUID = -6230958913028633457L;
private RepositorioDebitoACobrar debitoCobrarRepositorio;
private RepositorioPagamento repositorioPagamento;
public void ejbCreate() throws CreateException {
repositorioPagamento = RepositorioPagamento.getInstancia();
debitoCobrarRepositorio = RepositorioDebitoACobrar.getInstancia();
}
public Collection<DebitoACobrar> debitosCobrarVigentes(Integer idImovel) throws ControladorException{
Collection<DebitoACobrar> debitos = new ArrayList<DebitoACobrar>();
try {
SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema();
Collection<DebitoACobrar> lista = debitoCobrarRepositorio.debitosCobrarPorImovelComPendenciaESemRevisao(idImovel);
Integer anoMesFaturamento = sistemaParametro.getAnoMesFaturamento();
for (DebitoACobrar debito : lista) {
if (!(debito.pertenceParcelamento(anoMesFaturamento))){
debitos.add(debito);
}
}
} catch (ErroRepositorioException e) {
throw new ControladorException("Erro ao pesquisar debitos a cobrar vigentes", e);
}
return debitos;
}
public Collection<DebitoACobrar> debitosCobrarSemPagamentos(Integer idImovel) throws ControladorException {
Collection<DebitoACobrar> debitos = new ArrayList<DebitoACobrar>();
try {
SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema();
Integer anoMesFaturamento = sistemaParametro.getAnoMesFaturamento();
Collection<DebitoACobrar> lista = debitoCobrarRepositorio.debitosCobrarPorImovelComPendenciaESemRevisao(idImovel);
for (DebitoACobrar debito : lista) {
if (!debito.pertenceParcelamento(anoMesFaturamento) && repositorioPagamento.debitoSemPagamento(debito.getId())){
debitos.add(debito);
}
}
} catch (ErroRepositorioException e) {
throw new ControladorException("Erro ao pesquisar debitos a cobrar sem pagamentos", e);
}
return debitos;
}
public void atualizarDebitoCobrar(List<DebitoACobrar> debitosCobrar) throws ErroRepositorioException{
debitoCobrarRepositorio.atualizarDebitoCobrar(debitosCobrar);
}
}