package br.com.ec.controller;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import org.primefaces.model.file.UploadedFile;
import org.springframework.context.annotation.Scope;
import br.com.ec.core.exception.NegocioException;
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.ConciliacaoBancariaDTO;
import br.com.ec.domain.dto.ConciliacaoBancariaLancamentoDTO;
import br.com.ec.domain.dto.ConciliacaoBancariaRecebiveisDTO;
import br.com.ec.domain.dto.EmpresaDTO;
import br.com.ec.domain.dto.ExtratoBancarioArquivoDTO;
import br.com.ec.domain.dto.ParcelaDTO;
import br.com.ec.domain.model.tipos.TipoExtratoBancarioCsv;
import br.com.ec.domain.service.ConciliacaoBancariaService;
import br.com.ec.domain.service.ExtratoBancoService;
import br.com.ec.domain.shared.ConstantesSEC;
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 ConciliacaoBancariaBean
extends AbstractBean
<ConciliacaoBancariaDTO
> implements Serializable {
private static final long serialVersionUID = 1L
;
private List<EmpresaDTO
> empresasDTO
;
private ExtratoBancarioArquivoDTO arquivoExtratoBancarioDTO
;
private ConciliacaoBancariaService conciliacaoBancariaService
;
private ExtratoBancoService extratoBancoService
;
@Inject
public ConciliacaoBancariaBean
(ConciliacaoBancariaService conciliacaoBancariaService, ExtratoBancoService extratoBancoService
) {
this.
conciliacaoBancariaService = conciliacaoBancariaService
;
this.
extratoBancoService = extratoBancoService
;
}
@
Override
public GenericService
<ConciliacaoBancariaDTO
> getService
() {
return null;
}
@
Override
public ConciliacaoBancariaDTO getId
() {
return null;
}
@
Override
public void preCarregamento
() {
limparEntidade
();
}
@
Override
public void limparEntidade
() {
setEntidade
(new ConciliacaoBancariaDTO
());
setArquivoExtratoBancarioDTO
(new ExtratoBancarioArquivoDTO
());
}
public TipoExtratoBancarioCsv
[] getTiposExtratosBancariosCsv
() {
return TipoExtratoBancarioCsv.
values();
}
public ExtratoBancarioArquivoDTO getArquivoExtratoBancarioDTO
() {
return arquivoExtratoBancarioDTO
;
}
public void setArquivoExtratoBancarioDTO
(ExtratoBancarioArquivoDTO arquivoExtratoBancarioDTO
) {
this.
arquivoExtratoBancarioDTO = arquivoExtratoBancarioDTO
;
}
public List<EmpresaDTO
> getEmpresasDTO
() {
if (VerificadorUtil.
isListaNulaOuVazia(empresasDTO
)) {
List<EmpresaDTO
> empresasDTO =
new ArrayList<EmpresaDTO
>();
empresasDTO.
add(new EmpresaDTO
(ConstantesSEC.
Empresa.
CODIGO_EMPRESA_ESPACO_CASE_1, ConstantesSEC.
Empresa.
DESCRICAO_EMPRESA_ESPACO_CASE));
empresasDTO.
add(new EmpresaDTO
(ConstantesSEC.
Empresa.
CODIGO_EMPRESA_CASA_DAS_CAPAS_4, ConstantesSEC.
Empresa.
DESCRICAO_EMPRESA_CASA_DAS_CAPAS));
setEmpresasDTO
(empresasDTO
);
}
return empresasDTO
;
}
public void setEmpresasDTO
(List<EmpresaDTO
> empresasDTO
) {
this.
empresasDTO = empresasDTO
;
}
/*******************************************/
public void consultarConciliacaoBancaria
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
if (VerificadorUtil.
estaNulo(getEntidade
().
getVigenciaDTO())) {
throw new NegocioException
("SELECIONE A VIGÊNCIA");
}
setEntidade
(conciliacaoBancariaService.
preencherValores(getEntidade
()));
}
});
}
public void conciliar
(final ConciliacaoBancariaLancamentoDTO conciliacaoBancariaLancamentoDTO
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
conciliacaoBancariaService.
realizarConciliacao(conciliacaoBancariaLancamentoDTO
);
consultarConciliacaoBancaria
();
LancadorMensagem.
lancarSucesso("CONCILIAÇÃO REALIZADA COM SUCESSO");
}
});
}
public void conciliarExtratosComArquivos
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
if (VerificadorUtil.
estaNulo(getEntidade
().
getVigenciaDTO())) {
throw new NegocioException
("SELECIONE A VIGÊNCIA");
}
extratoBancoService.
conciliarExtratosComArquivos(getEntidade
().
getLancamentosDTO());
consultarConciliacaoBancaria
();
LancadorMensagem.
lancarSucesso("EXTRATOS ATUALIZADOS COM SUCESSO");
}
});
}
public void conciliarExtratosComArquivos
(final ConciliacaoBancariaLancamentoDTO conciliacaoBancariaLancamentoDTO
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
if (VerificadorUtil.
estaNulo(getEntidade
().
getVigenciaDTO())) {
throw new NegocioException
("SELECIONE A VIGÊNCIA");
}
List<ConciliacaoBancariaLancamentoDTO
> conciliacoes =
new ArrayList<ConciliacaoBancariaLancamentoDTO
>();
conciliacoes.
add(conciliacaoBancariaLancamentoDTO
);
extratoBancoService.
conciliarExtratosComArquivos(conciliacoes
);
consultarConciliacaoBancaria
();
LancadorMensagem.
lancarSucesso("EXTRATOS ATUALIZADOS COM SUCESSO");
}
});
}
public void uploadArquivoExtratoBancario
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
ExtratoBancarioArquivoDTO extratoBancarioArquivoDTO = conciliacaoBancariaService.
uploadArquivoExtratoBancario(getArquivoExtratoBancarioDTO
());
getEntidade
().
getArquivosExtratoBancarioDTO().
add(extratoBancarioArquivoDTO
);
setArquivoExtratoBancarioDTO
(new ExtratoBancarioArquivoDTO
());
LancadorMensagem.
lancarSucesso(extratoBancarioArquivoDTO.
getArquivoExtratoBancario().
getFileName() +
" FOI ADICIONADO COM SUCESSO!");
}
});
}
public void removerArquivoExtratoBancarioAnexado
(final ExtratoBancarioArquivoDTO conciliacaoBancariaArquivoExtratoDTO
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
getEntidade
().
getArquivosExtratoBancarioDTO().
remove(conciliacaoBancariaArquivoExtratoDTO
);
LancadorMensagem.
lancarSucesso("ARQUIVO REMOVIDO COM SUCESSO");
}
});
}
public List<String> extrairLinhasArquivo
(UploadedFile arquivo
) {
BufferedReader reader =
null;
List<String> linhas =
new ArrayList<String>();
try {
reader =
new BufferedReader(new InputStreamReader(arquivo.
getInputStream()));
String linha = reader.
readLine();
linha = reader.
readLine();
linha = reader.
readLine();
while ((linha = reader.
readLine()) !=
null) {
linhas.
add(linha
);
}
} catch (Exception ex
) {
ex.
printStackTrace();
} finally {
try {
reader.
close();
} catch (IOException exc
) {
exc.
printStackTrace();
}
}
return linhas
;
}
public void consultarConciliacaoBancariaTeste
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
if (VerificadorUtil.
estaNulo(getEntidade
().
getVigenciaDTO())) {
throw new NegocioException
("SELECIONE A VIGÊNCIA");
}
adicionarValoresTeste
();
}
});
}
public void adicionarValoresTeste
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
ConciliacaoBancariaDTO conciliacaoCompleta =
new ConciliacaoBancariaDTO
();
conciliacaoCompleta.
setVigenciaDTO(getEntidade
().
getVigenciaDTO());
conciliacaoCompleta.
setArquivosExtratoBancarioDTO(getEntidade
().
getArquivosExtratoBancarioDTO());
List<ConciliacaoBancariaLancamentoDTO
> lancamentos =
new ArrayList<ConciliacaoBancariaLancamentoDTO
>();
ConciliacaoBancariaLancamentoDTO lancamento =
new ConciliacaoBancariaLancamentoDTO
();
lancamento.
setDataConciliacao(DataUtils.
converterStringParaData("01/07/2021"));
lancamento.
setValorDebitoBanco(4139.36);
lancamento.
setValorDebitoSistema(4139.49);
lancamento.
setValorCreditoBanco(4884.52);
lancamento.
setValorCreditoSistema(4844.68);
List<ConciliacaoBancariaRecebiveisDTO
> recebiveisDebitos =
new ArrayList<ConciliacaoBancariaRecebiveisDTO
>();
// BRADESCO: DÉBITOS ESPAÇO CASE
ConciliacaoBancariaRecebiveisDTO recebivelDEC =
new ConciliacaoBancariaRecebiveisDTO
();
recebivelDEC.
setObservacao("BRADESCO: DÉBITOS ESPAÇO CASE");
ParcelaDTO parcela1 =
new ParcelaDTO
();
parcela1.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcela1.
setObservacao("REDE MASTER DÉBITO REDECARD S A");
parcela1.
setValor(1331.58);
recebivelDEC.
getParcelasExtratoParaConciliar().
add(parcela1
);
ParcelaDTO parcela2 =
new ParcelaDTO
();
parcela2.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcela2.
setObservacao("REDE HIPER DÉBITO REDECARD S A");
parcela2.
setValor(97.95);
recebivelDEC.
getParcelasExtratoParaConciliar().
add(parcela2
);
ParcelaDTO parcela3 =
new ParcelaDTO
();
parcela3.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcela3.
setObservacao("DÉBITO DA VENDA 241629");
parcela3.
setValor(1331.52);
recebivelDEC.
getParcelasSistema().
add(parcela3
);
ParcelaDTO parcela4 =
new ParcelaDTO
();
parcela4.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcela4.
setObservacao("DÉBITO DA VENDA 214511");
parcela4.
setValor(97.90);
recebivelDEC.
getParcelasSistema().
add(parcela4
);
recebiveisDebitos.
add(recebivelDEC
);
// BRADESCO: DÉBITOS CASA DAS CAPAS
ConciliacaoBancariaRecebiveisDTO recebivelDCC =
new ConciliacaoBancariaRecebiveisDTO
();
recebivelDCC.
setObservacao("BRADESCO: DÉBITOS CASA DAS CAPAS");
ParcelaDTO parcela5 =
new ParcelaDTO
();
parcela5.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcela5.
setObservacao("REDE MASTER DÉBITO REDECARD S A");
parcela5.
setValor(31.00);
recebivelDCC.
getParcelasExtratoParaConciliar().
add(parcela5
);
ParcelaDTO parcela6 =
new ParcelaDTO
();
parcela6.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcela6.
setObservacao("REDE HIPER DÉBITO REDECARD S A");
parcela6.
setValor(7.95);
recebivelDCC.
getParcelasExtratoParaConciliar().
add(parcela6
);
ParcelaDTO parcela7 =
new ParcelaDTO
();
parcela7.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcela7.
setObservacao("DÉBITO DA VENDA 123124");
parcela7.
setValor(31.20);
recebivelDCC.
getParcelasSistema().
add(parcela7
);
ParcelaDTO parcela8 =
new ParcelaDTO
();
parcela8.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcela8.
setObservacao("DÉBITO DA VENDA 123132");
parcela8.
setValor(7.05);
recebivelDCC.
getParcelasSistema().
add(parcela8
);
recebiveisDebitos.
add(recebivelDCC
);
lancamento.
setParcelasRecebiveisDebitos(recebiveisDebitos
);
List<ConciliacaoBancariaRecebiveisDTO
> recebiveisCreditos =
new ArrayList<ConciliacaoBancariaRecebiveisDTO
>();
ConciliacaoBancariaRecebiveisDTO recebivelCEC =
new ConciliacaoBancariaRecebiveisDTO
();
// BRADESCO: CRÉDITOS ESPAÇO CASE
recebivelCEC.
setObservacao("BRADESCO: CRÉDITOS ESPAÇO CASE");
ParcelaDTO parcela9 =
new ParcelaDTO
();
parcela9.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcela9.
setObservacao("REDE MASTER CRÉDITO REDECARD S A");
parcela9.
setValor(2331.58);
recebivelCEC.
getParcelasExtratoParaConciliar().
add(parcela9
);
ParcelaDTO parcela10 =
new ParcelaDTO
();
parcela10.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcela10.
setObservacao("REDE HIPER CRÉDITO REDECARD S A");
parcela10.
setValor(107.95);
recebivelCEC.
getParcelasExtratoParaConciliar().
add(parcela10
);
ParcelaDTO parcela11 =
new ParcelaDTO
();
parcela11.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcela11.
setObservacao("CRÉDITO 6/6 DA VENDA 241629");
parcela11.
setValor(1831.02);
recebivelCEC.
getParcelasSistema().
add(parcela11
);
ParcelaDTO parcela12 =
new ParcelaDTO
();
parcela12.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcela12.
setObservacao("CRÉDITO 1/1 DA VENDA 214511");
parcela12.
setValor(2007.00);
recebivelCEC.
getParcelasSistema().
add(parcela12
);
recebiveisCreditos.
add(recebivelCEC
);
// BRADESCO: DÉBITOS CASA DAS CAPAS
ConciliacaoBancariaRecebiveisDTO recebivelCCC =
new ConciliacaoBancariaRecebiveisDTO
();
recebivelCCC.
setObservacao("BRADESCO: CRÉDITOS CASA DAS CAPAS");
ParcelaDTO parcela13 =
new ParcelaDTO
();
parcela13.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcela13.
setObservacao("REDE MASTER CRÉDITO REDECARD S A");
parcela13.
setValor(310.00);
recebivelCCC.
getParcelasExtratoParaConciliar().
add(parcela13
);
ParcelaDTO parcela14 =
new ParcelaDTO
();
parcela14.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcela14.
setObservacao("REDE HIPER CRÉDITO REDECARD S A");
parcela14.
setValor(70.25);
recebivelCCC.
getParcelasExtratoParaConciliar().
add(parcela14
);
ParcelaDTO parcela15 =
new ParcelaDTO
();
parcela15.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcela15.
setObservacao("CRÉDITO 1/1 DA VENDA 123124");
parcela15.
setValor(33.20);
recebivelCCC.
getParcelasSistema().
add(parcela15
);
ParcelaDTO parcela16 =
new ParcelaDTO
();
parcela16.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcela16.
setObservacao("CRÉDITO 2/3 DA VENDA 123132");
parcela16.
setValor(70.15);
recebivelCCC.
getParcelasSistema().
add(parcela16
);
recebiveisCreditos.
add(recebivelCCC
);
lancamento.
setParcelasRecebiveisCreditos(recebiveisCreditos
);
ParcelaDTO parcela =
new ParcelaDTO
();
parcela.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcela.
setObservacao("PARCELA OPERACAO CREDITO");
parcela.
setValor(8164.70);
lancamento.
getParcelasPagamentosBanco().
add(parcela
);
ParcelaDTO parcelaa =
new ParcelaDTO
();
parcelaa.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcelaa.
setObservacao("PAGTO ELETRON COBRANCA");
parcelaa.
setValor(1504.80);
lancamento.
getParcelasPagamentosBanco().
add(parcelaa
);
ParcelaDTO parcelaPagamento =
new ParcelaDTO
();
parcelaPagamento.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcelaPagamento.
setObservacao("BNDES");
parcelaPagamento.
setValor(8164.70);
lancamento.
getParcelasPagamentos().
add(parcelaPagamento
);
ParcelaDTO parcelaPagamento2 =
new ParcelaDTO
();
parcelaPagamento2.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcelaPagamento2.
setObservacao("CUSTAS");
parcelaPagamento2.
setValor(1504.80);
lancamento.
getParcelasPagamentos().
add(parcelaPagamento2
);
List<ParcelaDTO
> parcelasConciliacoesPagamentos =
new ArrayList<ParcelaDTO
>();
ParcelaDTO parcelaConciliacao =
new ParcelaDTO
();
parcelaConciliacao.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcelaConciliacao.
setObservacao("MAQUINETA REDE");
parcelaConciliacao.
setValor(350.0);
parcelasConciliacoesPagamentos.
add(parcelaConciliacao
);
lancamento.
setParcelasPagamentosConciliacoes(parcelasConciliacoesPagamentos
);
List<ParcelaDTO
> parcelasConciliacoesRecebimentos =
new ArrayList<ParcelaDTO
>();
ParcelaDTO parcelaConciliacao2 =
new ParcelaDTO
();
parcelaConciliacao2.
setDataPagamento(DataUtils.
converterStringParaData("01/07/2021"));
parcelaConciliacao2.
setObservacao("CONCILIAÇÃO");
parcelaConciliacao2.
setValor(40.0);
parcelasConciliacoesRecebimentos.
add(parcelaConciliacao2
);
lancamento.
setParcelasRecebimentosConciliacoes(parcelasConciliacoesRecebimentos
);
lancamentos.
add(lancamento
);
lancamento =
new ConciliacaoBancariaLancamentoDTO
();
lancamento.
setDataConciliacao(DataUtils.
converterStringParaData("02/07/2021"));
lancamento.
setValorDebitoBanco(4708.98);
lancamento.
setValorDebitoSistema(4708.98);
lancamento.
setValorCreditoBanco(3846.88);
lancamento.
setValorCreditoSistema(3854.27);
lancamentos.
add(lancamento
);
conciliacaoCompleta.
setLancamentosDTO(lancamentos
);
setEntidade
(conciliacaoCompleta
);
}
});
}
}