package br.com.ec.domain.dto;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.httpclient.util.DateUtil;
import org.primefaces.model.file.UploadedFile;
import br.com.ec.core.exception.NegocioException;
import br.com.ec.core.util.StringUtil;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.web.util.DataUtil;
public class ExtratoAntecipacaoArquivoDTO
{
private Date dataRecebimento
;
private ContaBancariaDTO contaBancariaDTO
;
private UploadedFile arquivoAntecipacao
;
private List<String> linhasArquivo
;
private String sqlConsultaParcelas
;
private String sqlAtualizacaoParcelas
;
private List<ExtratoAntecipacaoDTO
> dadosExtratoAntecipacaoDTO
;
private List<ExtratoAntecipacaoDTO
> dadosExtratoAntecipacaoDTOConciliados
;
private List<ExtratoAntecipacaoDTO
> dadosExtratoAntecipacaoDTOSemConciliacao
;
public ExtratoAntecipacaoArquivoDTO
() {
this.
dadosExtratoAntecipacaoDTO =
new ArrayList<ExtratoAntecipacaoDTO
>();
}
public ExtratoAntecipacaoArquivoDTO
(UploadedFile arquivoAntecipacao
) {
super();
this.
arquivoAntecipacao = arquivoAntecipacao
;
}
public Date getDataRecebimento
() {
return dataRecebimento
;
}
public void setDataRecebimento
(Date dataRecebimento
) {
this.
dataRecebimento = dataRecebimento
;
}
public ContaBancariaDTO getContaBancariaDTO
() {
return contaBancariaDTO
;
}
public void setContaBancariaDTO
(ContaBancariaDTO contaBancariaDTO
) {
this.
contaBancariaDTO = contaBancariaDTO
;
}
public UploadedFile getArquivoAntecipacao
() {
return arquivoAntecipacao
;
}
public void setArquivoAntecipacao
(UploadedFile arquivoAntecipacao
) {
this.
arquivoAntecipacao = arquivoAntecipacao
;
}
public List<String> getLinhasArquivo
() {
return linhasArquivo
;
}
public void setLinhasArquivo
(List<String> linhasArquivo
) {
this.
linhasArquivo = linhasArquivo
;
}
public String getSqlConsultaParcelas
() {
return sqlConsultaParcelas
;
}
public void setSqlConsultaParcelas
(String sqlConsultaParcelas
) {
this.
sqlConsultaParcelas = sqlConsultaParcelas
;
}
public String getSqlAtualizacaoParcelas
() {
return sqlAtualizacaoParcelas
;
}
public void setSqlAtualizacaoParcelas
(String sqlAtualizacaoParcelas
) {
this.
sqlAtualizacaoParcelas = sqlAtualizacaoParcelas
;
}
public List<ExtratoAntecipacaoDTO
> getDadosExtratoAntecipacaoDTO
() {
return dadosExtratoAntecipacaoDTO
;
}
public void setDadosExtratoAntecipacaoDTO
(List<ExtratoAntecipacaoDTO
> dadosExtratoAntecipacaoDTO
) {
this.
dadosExtratoAntecipacaoDTO = dadosExtratoAntecipacaoDTO
;
}
public List<ExtratoAntecipacaoDTO
> getDadosExtratoAntecipacaoDTOConciliados
() {
return dadosExtratoAntecipacaoDTOConciliados
;
}
public void setDadosExtratoAntecipacaoDTOConciliados
(List<ExtratoAntecipacaoDTO
> dadosExtratoAntecipacaoDTOConciliados
) {
this.
dadosExtratoAntecipacaoDTOConciliados = dadosExtratoAntecipacaoDTOConciliados
;
}
public List<ExtratoAntecipacaoDTO
> getDadosExtratoAntecipacaoDTOSemConciliacao
() {
return dadosExtratoAntecipacaoDTOSemConciliacao
;
}
public void setDadosExtratoAntecipacaoDTOSemConciliacao
(List<ExtratoAntecipacaoDTO
> dadosExtratoAntecipacaoDTOSemConciliacao
) {
this.
dadosExtratoAntecipacaoDTOSemConciliacao = dadosExtratoAntecipacaoDTOSemConciliacao
;
}
/**************************************/
public Double valorTotalConciliado
() {
Double valorTotal =
0.0;
if (VerificadorUtil.
naoEstaNuloOuVazio(getDadosExtratoAntecipacaoDTOConciliados
())) {
for (ExtratoAntecipacaoDTO extratoAntecipacaoDTO : getDadosExtratoAntecipacaoDTOConciliados
()) {
valorTotal += extratoAntecipacaoDTO.
getValorLiquido();
}
}
return valorTotal
;
}
public Double valorTotalNaoConciliado
() {
Double valorTotal =
0.0;
if (VerificadorUtil.
naoEstaNuloOuVazio(getDadosExtratoAntecipacaoDTOSemConciliacao
())) {
for (ExtratoAntecipacaoDTO extratoAntecipacaoDTO : getDadosExtratoAntecipacaoDTOSemConciliacao
()) {
valorTotal += extratoAntecipacaoDTO.
getValorLiquido();
}
}
return valorTotal
;
}
/**************************************/
/*
public Boolean todoExtratoConciliado() {
if (!VerificadorUtil.isListaNulaOuVazia(getDadosExtratoBancoDTO())) {
for (ExtratoBancoDTO extratoBancoDTO : getDadosExtratoBancoDTO()) {
if (!extratoBancoDTO.getIndicadorConciliado()) {
return false;
}
}
}
return true;
}
*/
public void extrairDadosArquivo
(Date dataAntecipacao
) {
List<ExtratoAntecipacaoDTO
> extratoAntecipacaoDTOs =
new ArrayList<ExtratoAntecipacaoDTO
>();
Long sequencial =
new Long(1);
for (String linha :
this.
getLinhasArquivo()) {
String[] dadosSeparados = linha.
split(";");
if (dadosSeparados.
length >=
29) {
if (VerificadorUtil.
naoEstaNuloOuVazio(dadosSeparados
[2])) {
if (dadosSeparados
[29].
contains("antecipada")) {
ExtratoAntecipacaoDTO extratoAntecipacaoDTO =
new ExtratoAntecipacaoDTO
();
extratoAntecipacaoDTO.
setSequencial(sequencial
);
sequencial++
;
extratoAntecipacaoDTO.
setDataRecebimento(DataUtil.
retornarDataApartirString("dd/MM/yyyy", dadosSeparados
[0]));
extratoAntecipacaoDTO.
setDataVenda(DataUtil.
retornarDataApartirString("dd/MM/yyyy", dadosSeparados
[1]));
extratoAntecipacaoDTO.
setDataVencimento(DataUtil.
retornarDataApartirString("dd/MM/yyyy", dadosSeparados
[2]));
Double valor =
0.0;
if (VerificadorUtil.
naoEstaNuloOuVazio(dadosSeparados
[7])) {
String valorLinha = dadosSeparados
[7].
replace("R$",
"").
trim();
valor =
new Double(valorLinha.
replace(".",
"").
replace(",",
"."));
}
String bandeira = StringUtil.
setarUpperCaseComTrim(dadosSeparados
[21]);
if (bandeira.
equals("AMEX")) {
bandeira =
"AMERICAN EXPRESS";
}
extratoAntecipacaoDTO.
setBandeira(bandeira
);
extratoAntecipacaoDTO.
setValorLiquido(valor
);
extratoAntecipacaoDTO.
setQuantidadeParcelas(new Integer(dadosSeparados
[22]));
extratoAntecipacaoDTO.
setNumeroDaParcela(new Integer(dadosSeparados
[23]));
extratoAntecipacaoDTOs.
add(extratoAntecipacaoDTO
);
}
}
}
}
StringBuilder sqlConsulta =
new StringBuilder();
sqlConsulta.
append("SELECT new br.com.ec.domain.dto.ParcelaDTO(");
sqlConsulta.
append(ParcelaDTO.
CONSULTA_SEM_CATEGORIA_DTO);
sqlConsulta.
append(") FROM Parcela e ");
sqlConsulta.
append("WHERE e.indicadorAtivo IS TRUE AND e.dataPagamento IS NULL AND (");
if (VerificadorUtil.
isListaNulaOuVazia(extratoAntecipacaoDTOs
)) {
throw new NegocioException
("PLANILHA SEM ANTECIPAÇÃO ENCONTRADA");
}
for (ExtratoAntecipacaoDTO extratoAntecipacaoDTO : extratoAntecipacaoDTOs
) {
Double valorInicial = extratoAntecipacaoDTO.
getValorLiquido() -
0.10;
Double valorFinal = extratoAntecipacaoDTO.
getValorLiquido() +
0.10;
sqlConsulta.
append("(");
sqlConsulta.
append("(e.dataVencimento = '" + DateUtil.
formatDate(extratoAntecipacaoDTO.
getDataVencimento(),
"yyyy-MM-dd") +
"' OR ");
sqlConsulta.
append("e.dataVencimento = '" + DateUtil.
formatDate(dataAntecipacao,
"yyyy-MM-dd") +
"'");
sqlConsulta.
append(") AND ");
sqlConsulta.
append("e.valor >= " + valorInicial +
" AND e.valor <= " + valorFinal +
" AND ");
sqlConsulta.
append("e.observacao LIKE 'CRÉDITO " + extratoAntecipacaoDTO.
getNumeroDaParcela() +
"/" + extratoAntecipacaoDTO.
getQuantidadeParcelas() +
"%" + extratoAntecipacaoDTO.
getBandeira() +
"%') ");
sqlConsulta.
append("OR ");
}
sqlConsulta.
append(")");
setDadosExtratoAntecipacaoDTOSemConciliacao
(extratoAntecipacaoDTOs
);
setSqlConsultaParcelas
(sqlConsulta.
toString().
replace("OR )",
")"));
}
public static void main
(String[] args
) {
String valor =
"SISPAG PAG TIT BANCO 00";
System.
out.
println(!valor.
contains("SISPAG PAG"));
}
}