package br.com.ec.domain.dto;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.Transient;
import br.com.ec.domain.model.FormaPagamento;
import br.edu.cesmac.core.util.VerificadorUtil;
public class CartaoResumoDTO
{
private Date dataResumo
;
private List<CartaoBandeiraDTO
> cartoesPorBandeira
;
private Boolean indicadorConciliado
;
private Double valorTotalBrutoCartoes
;
private Double valorTotalBrutoCartoesDebito
;
private Double valorTotalBrutoCartoesCredito1x
;
private Double valorTotalBrutoCartoesCreditoParcelado
;
private Double valorTotalBrutoImportadoCartoes
;
private Double valorTotalBrutoImportadoCartoesDebito
;
private Double valorTotalBrutoImportadoCartoesCredito1x
;
private Double valorTotalBrutoImportadoCartoesCreditoParcelado
;
private Double valorTotalLiquidoCartoesGerados
;
private Double valorTotalLiquidoCartoesGeradosDebito
;
private Double valorTotalLiquidoCartoesGeradosCredito1x
;
private Double valorTotalLiquidoCartoesGeradosCreditoParcelado
;
public CartaoResumoDTO
() {
setCartoesPorBandeira
(new ArrayList<CartaoBandeiraDTO
>());
setIndicadorConciliado
(false);
setValorTotalBrutoCartoes
(new Double(0.0));
setValorTotalBrutoCartoesDebito
(new Double(0.0));
setValorTotalBrutoCartoesCredito1x
(new Double(0.0));
setValorTotalBrutoCartoesCreditoParcelado
(new Double(0.0));
setValorTotalBrutoImportadoCartoes
(new Double(0.0));
setValorTotalBrutoImportadoCartoesDebito
(new Double(0.0));
setValorTotalBrutoImportadoCartoesCredito1x
(new Double(0.0));
setValorTotalBrutoImportadoCartoesCreditoParcelado
(new Double(0.0));
setValorTotalLiquidoCartoesGerados
(new Double(0.0));
setValorTotalLiquidoCartoesGeradosDebito
(new Double(0.0));
setValorTotalLiquidoCartoesGeradosCredito1x
(new Double(0.0));
setValorTotalLiquidoCartoesGeradosCreditoParcelado
(new Double(0.0));
}
public Date getDataResumo
() {
return dataResumo
;
}
public void setDataResumo
(Date dataResumo
) {
this.
dataResumo = dataResumo
;
}
public void setCartoesPorBandeira
(List<CartaoBandeiraDTO
> cartoesPorBandeira
) {
this.
cartoesPorBandeira = cartoesPorBandeira
;
}
public List<CartaoBandeiraDTO
> getCartoesPorBandeira
() {
return cartoesPorBandeira
;
}
public Boolean getIndicadorConciliado
() {
return indicadorConciliado
;
}
public void setIndicadorConciliado
(Boolean indicadorConciliado
) {
this.
indicadorConciliado = indicadorConciliado
;
}
public Double getValorTotalBrutoCartoes
() {
return valorTotalBrutoCartoes
;
}
public void setValorTotalBrutoCartoes
(Double valorTotalBrutoCartoes
) {
this.
valorTotalBrutoCartoes = valorTotalBrutoCartoes
;
}
public Double getValorTotalBrutoCartoesDebito
() {
return valorTotalBrutoCartoesDebito
;
}
public void setValorTotalBrutoCartoesDebito
(Double valorTotalBrutoCartoesDebito
) {
this.
valorTotalBrutoCartoesDebito = valorTotalBrutoCartoesDebito
;
}
public Double getValorTotalBrutoCartoesCredito
() {
return getValorTotalBrutoCartoesCredito1x
() + getValorTotalBrutoCartoesCreditoParcelado
();
}
public Double getValorTotalBrutoImportadoCartoesCredito
() {
return getValorTotalBrutoImportadoCartoesCredito1x
() + getValorTotalBrutoImportadoCartoesCreditoParcelado
();
}
public String getCorValoresConciliadosCartoesCredito
() {
return getValorTotalBrutoCartoesCredito
().
equals(getValorTotalBrutoImportadoCartoesCredito
())? "green" :
"red";
}
public Double getValorTotalBrutoCartoesCredito1x
() {
return valorTotalBrutoCartoesCredito1x
;
}
public void setValorTotalBrutoCartoesCredito1x
(Double valorTotalBrutoCartoesCredito1x
) {
this.
valorTotalBrutoCartoesCredito1x = valorTotalBrutoCartoesCredito1x
;
}
public Double getValorTotalBrutoCartoesCreditoParcelado
() {
return valorTotalBrutoCartoesCreditoParcelado
;
}
public void setValorTotalBrutoCartoesCreditoParcelado
(Double valorTotalBrutoCartoesCreditoParcelado
) {
this.
valorTotalBrutoCartoesCreditoParcelado = valorTotalBrutoCartoesCreditoParcelado
;
}
public Double getValorTotalBrutoImportadoCartoes
() {
return valorTotalBrutoImportadoCartoes
;
}
public void setValorTotalBrutoImportadoCartoes
(Double valorTotalBrutoImportadoCartoes
) {
this.
valorTotalBrutoImportadoCartoes = valorTotalBrutoImportadoCartoes
;
}
public Double getValorTotalBrutoImportadoCartoesDebito
() {
return valorTotalBrutoImportadoCartoesDebito
;
}
public void setValorTotalBrutoImportadoCartoesDebito
(Double valorTotalBrutoImportadoCartoesDebito
) {
this.
valorTotalBrutoImportadoCartoesDebito = valorTotalBrutoImportadoCartoesDebito
;
}
public String getCorValoresConciliadosCartoesDebito
() {
return getValorTotalBrutoCartoesDebito
().
equals(getValorTotalBrutoImportadoCartoesDebito
())? "green" :
"red";
}
public Double getValorTotalBrutoImportadoCartoesCredito1x
() {
return valorTotalBrutoImportadoCartoesCredito1x
;
}
public void setValorTotalBrutoImportadoCartoesCredito1x
(Double valorTotalBrutoImportadoCartoesCredito1x
) {
this.
valorTotalBrutoImportadoCartoesCredito1x = valorTotalBrutoImportadoCartoesCredito1x
;
}
public String getCorValoresConciliadosCartoesCredito1x
() {
return getValorTotalBrutoCartoesCredito1x
().
equals(getValorTotalBrutoImportadoCartoesCredito1x
())? "green" :
"red";
}
public Double getValorTotalBrutoImportadoCartoesCreditoParcelado
() {
return valorTotalBrutoImportadoCartoesCreditoParcelado
;
}
public void setValorTotalBrutoImportadoCartoesCreditoParcelado
(Double valorTotalBrutoImportadoCartoesCreditoParcelado
) {
this.
valorTotalBrutoImportadoCartoesCreditoParcelado = valorTotalBrutoImportadoCartoesCreditoParcelado
;
}
public String getCorValoresConciliadosCartoesCreditoParcelado
() {
return getValorTotalBrutoCartoesCreditoParcelado
().
equals(getValorTotalBrutoImportadoCartoesCreditoParcelado
())? "green" :
"red";
}
public Double getValorTotalLiquidoCartoesGerados
() {
return valorTotalLiquidoCartoesGerados
;
}
public void setValorTotalLiquidoCartoesGerados
(Double valorTotalLiquidoCartoesGerados
) {
this.
valorTotalLiquidoCartoesGerados = valorTotalLiquidoCartoesGerados
;
}
public Double getValorTotalLiquidoCartoesGeradosDebito
() {
return valorTotalLiquidoCartoesGeradosDebito
;
}
public void setValorTotalLiquidoCartoesGeradosDebito
(Double valorTotalLiquidoCartoesGeradosDebito
) {
this.
valorTotalLiquidoCartoesGeradosDebito = valorTotalLiquidoCartoesGeradosDebito
;
}
public Double getValorTotalLiquidoCartoesGeradosCredito
() {
return getValorTotalLiquidoCartoesGeradosCredito1x
() + getValorTotalLiquidoCartoesGeradosCreditoParcelado
();
}
public Double getValorTotalLiquidoCartoesGeradosCredito1x
() {
return valorTotalLiquidoCartoesGeradosCredito1x
;
}
public void setValorTotalLiquidoCartoesGeradosCredito1x
(Double valorTotalLiquidoCartoesGeradosCredito1x
) {
this.
valorTotalLiquidoCartoesGeradosCredito1x = valorTotalLiquidoCartoesGeradosCredito1x
;
}
public Double getValorTotalLiquidoCartoesGeradosCreditoParcelado
() {
return valorTotalLiquidoCartoesGeradosCreditoParcelado
;
}
public void setValorTotalLiquidoCartoesGeradosCreditoParcelado
(Double valorTotalLiquidoCartoesGeradosCreditoParcelado
) {
this.
valorTotalLiquidoCartoesGeradosCreditoParcelado = valorTotalLiquidoCartoesGeradosCreditoParcelado
;
}
@Transient
public String getCorValoresConciliados
() {
return getIndicadorConciliado
()? "green" :
"red";
}
/*************************************************************************/
public void adicionarPagamento
(CartaoBandeiraDTO cartaoBandeira
) {
int index = getCartoesPorBandeira
().
indexOf(cartaoBandeira
);
if (index
>=
0) {
CartaoBandeiraDTO cartaoAdicionado = getCartoesPorBandeira
().
get(index
);
cartaoAdicionado.
setBruto(cartaoAdicionado.
getBruto() + cartaoBandeira.
getBruto());
cartaoAdicionado.
setQuantidade(cartaoAdicionado.
getQuantidade() +
1);
cartaoAdicionado.
setFormaPagamento(cartaoBandeira.
getFormaPagamento());
} else {
cartaoBandeira.
setQuantidade(1);
getCartoesPorBandeira
().
add(cartaoBandeira
);
}
somarValoresBruto
(cartaoBandeira.
getBruto(), cartaoBandeira.
getFormaPagamento());
}
public void adicionarPagamentoImportado
(CartaoBandeiraDTO cartaoBandeira
) {
int index = getCartoesPorBandeira
().
indexOf(cartaoBandeira
);
if (index
>=
0) {
CartaoBandeiraDTO cartaoAdicionado = getCartoesPorBandeira
().
get(index
);
cartaoAdicionado.
setBrutoImportado(cartaoAdicionado.
getBrutoImportado() + cartaoBandeira.
getBrutoImportado());
cartaoAdicionado.
setQuantidadeImportado(cartaoAdicionado.
getQuantidadeImportado() +
1);
cartaoAdicionado.
setFormaPagamento(cartaoBandeira.
getFormaPagamento());
} else {
cartaoBandeira.
setQuantidadeImportado(1);
getCartoesPorBandeira
().
add(cartaoBandeira
);
}
somarValoresBrutoImportado
(cartaoBandeira.
getBrutoImportado(), cartaoBandeira.
getFormaPagamento());
}
public List<CartaoBandeiraDTO
> getCartoesPorBandeiraDebito
() {
List<CartaoBandeiraDTO
> cartoesDebito =
new ArrayList<CartaoBandeiraDTO
>();
for (CartaoBandeiraDTO cartaoBandeira : getCartoesPorBandeira
()) {
if (cartaoBandeira.
getFormaPagamento().
formaPagamentoEhDebito()) {
cartoesDebito.
add(cartaoBandeira
);
}
}
return cartoesDebito
;
}
public List<CartaoBandeiraDTO
> getCartoesPorBandeiraCredito
() throws CloneNotSupportedException {
List<CartaoBandeiraDTO
> cartoesCredito =
new ArrayList<CartaoBandeiraDTO
>();
for (CartaoBandeiraDTO cartaoBandeira : getCartoesPorBandeira
()) {
if (cartaoBandeira.
getFormaPagamento().
formaPagamentoEhCredito()) {
CartaoBandeiraDTO cartao = cartaoBandeira.
clone();
cartao.
setFormaPagamento(null);
int index = cartoesCredito.
indexOf(cartao
);
if (index
>=
0) {
CartaoBandeiraDTO cartaoAdicionado = cartoesCredito.
get(index
);
cartaoAdicionado.
setBrutoImportado(cartaoAdicionado.
getBrutoImportado() + cartao.
getBrutoImportado());
cartaoAdicionado.
setBruto(cartaoAdicionado.
getBruto() + cartao.
getBruto());
cartaoAdicionado.
setQuantidadeImportado(cartaoAdicionado.
getQuantidadeImportado() + cartao.
getQuantidadeImportado());
cartaoAdicionado.
setQuantidade(cartaoAdicionado.
getQuantidade() + cartao.
getQuantidade());
cartaoAdicionado.
setFormaPagamento(cartao.
getFormaPagamento());
} else {
cartoesCredito.
add(cartao
);
}
}
}
return cartoesCredito
;
}
public List<CartaoBandeiraDTO
> getCartoesPorBandeiraCredito1x
() {
List<CartaoBandeiraDTO
> cartoesCredito =
new ArrayList<CartaoBandeiraDTO
>();
for (CartaoBandeiraDTO cartaoBandeira : getCartoesPorBandeira
()) {
if (cartaoBandeira.
getFormaPagamento().
formaPagamentoEhCredito() && cartaoBandeira.
getFormaPagamento().
formaPagamentoEh1x()) {
cartoesCredito.
add(cartaoBandeira
);
}
}
return cartoesCredito
;
}
public List<CartaoBandeiraDTO
> getCartoesPorBandeiraCreditoParcelado
() {
List<CartaoBandeiraDTO
> cartoesCredito =
new ArrayList<CartaoBandeiraDTO
>();
for (CartaoBandeiraDTO cartaoBandeira : getCartoesPorBandeira
()) {
if (cartaoBandeira.
getFormaPagamento().
formaPagamentoEhCredito() && !cartaoBandeira.
getFormaPagamento().
formaPagamentoEh1x()) {
cartoesCredito.
add(cartaoBandeira
);
}
}
return cartoesCredito
;
}
public List<CartaoBandeiraDTO
> getCartoesPorBandeiraCreditoParceladoAgrupado
() {
List<CartaoBandeiraDTO
> cartoesCredito =
new ArrayList<CartaoBandeiraDTO
>();
for (CartaoBandeiraDTO cartaoBandeira : getCartoesPorBandeiraCreditoParcelado
()) {
CartaoBandeiraDTO cartao = cartaoBandeira.
clone();
cartao.
setFormaPagamento(null);
int index = cartoesCredito.
indexOf(cartao
);
if (index
>=
0) {
CartaoBandeiraDTO cartaoAdicionado = cartoesCredito.
get(index
);
cartaoAdicionado.
setBrutoImportado(cartaoAdicionado.
getBrutoImportado() + cartao.
getBrutoImportado());
cartaoAdicionado.
setBruto(cartaoAdicionado.
getBruto() + cartao.
getBruto());
cartaoAdicionado.
setQuantidadeImportado(cartaoAdicionado.
getQuantidadeImportado() + cartao.
getQuantidadeImportado());
cartaoAdicionado.
setQuantidade(cartaoAdicionado.
getQuantidade() + cartao.
getQuantidade());
} else {
cartoesCredito.
add(cartao
);
}
}
return cartoesCredito
;
}
public void somarValoresBruto
(Double valor, FormaPagamento formaDePagamento
) {
valorTotalBrutoCartoes = valorTotalBrutoCartoes + valor
;
if (formaDePagamento.
formaPagamentoEhDebito()) {
valorTotalBrutoCartoesDebito = valorTotalBrutoCartoesDebito + valor
;
}
if (formaDePagamento.
formaPagamentoEhCredito()) {
if (formaDePagamento.
formaPagamentoEh1x()) {
valorTotalBrutoCartoesCredito1x = valorTotalBrutoCartoesCredito1x + valor
;
} else {
valorTotalBrutoCartoesCreditoParcelado = valorTotalBrutoCartoesCreditoParcelado + valor
;
}
}
}
public void somarValoresBrutoImportado
(Double valor, FormaPagamento formaDePagamento
) {
valorTotalBrutoImportadoCartoes = valorTotalBrutoImportadoCartoes + valor
;
if (formaDePagamento.
formaPagamentoEhDebito()) {
valorTotalBrutoImportadoCartoesDebito = valorTotalBrutoImportadoCartoesDebito + valor
;
}
if (formaDePagamento.
formaPagamentoEhCredito()) {
if (formaDePagamento.
formaPagamentoEh1x()) {
valorTotalBrutoImportadoCartoesCredito1x = valorTotalBrutoImportadoCartoesCredito1x + valor
;
} else {
valorTotalBrutoImportadoCartoesCreditoParcelado = valorTotalBrutoImportadoCartoesCreditoParcelado + valor
;
}
}
}
public void somarValoresLiquido
(List<CartaoDTO
> cartoesGerados
) {
for (CartaoDTO cartaoGerado : cartoesGerados
) {
valorTotalLiquidoCartoesGerados = valorTotalLiquidoCartoesGerados + cartaoGerado.
getParcela().
getValor();
if (VerificadorUtil.
naoEstaNulo(cartaoGerado.
getFormaDePagamento())) {
if (cartaoGerado.
getFormaDePagamento().
formaPagamentoEhDebito()) {
valorTotalLiquidoCartoesGeradosDebito = valorTotalLiquidoCartoesGeradosDebito + cartaoGerado.
getParcela().
getValor();
}
if (cartaoGerado.
getFormaDePagamento().
formaPagamentoEhCredito()) {
if (cartaoGerado.
getFormaDePagamento().
formaPagamentoEh1x()) {
valorTotalLiquidoCartoesGeradosCredito1x = valorTotalLiquidoCartoesGeradosCredito1x + cartaoGerado.
getParcela().
getValor();
} else {
valorTotalLiquidoCartoesGeradosCreditoParcelado = valorTotalLiquidoCartoesGeradosCreditoParcelado + cartaoGerado.
getParcela().
getValor();
}
}
}
}
}
public void somarValores
() {
setIndicadorConciliado
(true);
for (CartaoBandeiraDTO bandeira : getCartoesPorBandeira
()) {
if (!bandeira.
getBruto().
equals(bandeira.
getBrutoImportado())) {
setIndicadorConciliado
(false);
}
somarValoresBruto
(bandeira.
getBruto(), bandeira.
getFormaPagamento());
somarValoresBrutoImportado
(bandeira.
getBrutoImportado(), bandeira.
getFormaPagamento());
}
}
}