package gcom.cobranca.bean;
import gcom.cobranca.parcelamento.Parcelamento;
import gcom.faturamento.credito.CreditoARealizar;
import gcom.faturamento.debito.DebitoACobrar;
import java.math.BigDecimal;
import java.util.Collection;
/**
* [UC0630] - Solicitar Emiss�o do Extrato de D�bitos
* @author Vivianne Sousa
* @since 21/08/2007
*/
public class DebitoCreditoParcelamentoHelper {
private Parcelamento parcelamento;
/**
* Cole��o de Debitos a Cobrar do Parcelamento
*/
private Collection<DebitoACobrar> colecaoDebitoACobrarParcelamento;
/**
* Cole��o de Creditos a Realizar do Parcelamento
*/
private Collection<CreditoARealizar> colecaoCreditoARealizarParcelamento;
private BigDecimal valorTotalDebito;
private BigDecimal valorTotalCredito;
private Short numeroPrestacaoCobradas;
private boolean antecipacaoParcela;
private Integer quantidadeAntecipacaoParcelas;
public Collection<CreditoARealizar> getColecaoCreditoARealizarParcelamento() {
return colecaoCreditoARealizarParcelamento;
}
public void setColecaoCreditoARealizarParcelamento(
Collection<CreditoARealizar> colecaoCreditoARealizarParcelamento) {
this.colecaoCreditoARealizarParcelamento = colecaoCreditoARealizarParcelamento;
}
public Collection<DebitoACobrar> getColecaoDebitoACobrarParcelamento() {
return colecaoDebitoACobrarParcelamento;
}
public void setColecaoDebitoACobrarParcelamento(
Collection<DebitoACobrar> colecaoDebitoACobrarParcelamento) {
this.colecaoDebitoACobrarParcelamento = colecaoDebitoACobrarParcelamento;
}
public Parcelamento getParcelamento() {
return parcelamento;
}
public void setParcelamento(Parcelamento parcelamento) {
this.parcelamento = parcelamento;
}
public BigDecimal getValorTotalCredito() {
return valorTotalCredito;
}
public void setValorTotalCredito(BigDecimal valorTotalCredito) {
this.valorTotalCredito = valorTotalCredito;
}
public BigDecimal getValorTotalDebito() {
return valorTotalDebito;
}
public void setValorTotalDebito(BigDecimal valorTotalDebito) {
this.valorTotalDebito = valorTotalDebito;
}
public BigDecimal getValorTotal() {
BigDecimal valorTotal = BigDecimal.ZERO;
BigDecimal valorTotalDebito = BigDecimal.ZERO;
BigDecimal valorTotalCredito = BigDecimal.ZERO;
if(this.valorTotalDebito != null){
valorTotalDebito = this.valorTotalDebito;
}
if(this.valorTotalCredito != null){
valorTotalCredito = this.valorTotalCredito;
}
valorTotal = valorTotalDebito.subtract(valorTotalCredito);
return valorTotal;
}
public Short getNumeroPrestacaoCobradas() {
return numeroPrestacaoCobradas;
}
public void setNumeroPrestacaoCobradas(Short numeroPrestacaoCobradas) {
this.numeroPrestacaoCobradas = numeroPrestacaoCobradas;
}
public String getPrestacaoFormatada(){
String prestacaoFormatada = "";
if(getParcelamento() != null && getNumeroPrestacaoCobradas() != null){
prestacaoFormatada = getNumeroPrestacaoCobradas() + " / "
+ getParcelamento().getNumeroPrestacoes().toString();
}
return prestacaoFormatada ;
}
public short getNumeroPrestacaoRestante() {
short retorno = getParcelamento().getNumeroPrestacoes();
if (getNumeroPrestacaoCobradas() != null){
retorno = Short.parseShort(""+ (retorno - getNumeroPrestacaoCobradas().shortValue()));
}
return retorno;
}
public boolean isAntecipacaoParcela() {
return antecipacaoParcela;
}
public void setAntecipacaoParcela(boolean antecipacaoParcela) {
this.antecipacaoParcela = antecipacaoParcela;
}
public Integer getQuantidadeAntecipacaoParcelas() {
return quantidadeAntecipacaoParcelas;
}
public void setQuantidadeAntecipacaoParcelas(
Integer quantidadeAntecipacaoParcelas) {
this.quantidadeAntecipacaoParcelas = quantidadeAntecipacaoParcelas;
}
public BigDecimal getValorAntecipacaoParcela(){
BigDecimal valorAntecipacaoParcela = BigDecimal.ZERO;
if (this.getParcelamento() != null && this.getQuantidadeAntecipacaoParcelas() != null){
BigDecimal valorJaPago = BigDecimal.ZERO;
if (this.getNumeroPrestacaoCobradas() != null && this.getNumeroPrestacaoCobradas().intValue() > 0){
valorJaPago = this.getParcelamento().getValorPrestacao().multiply(BigDecimal.valueOf(this.getNumeroPrestacaoCobradas()));
}
BigDecimal valorNaoPagoComJuros = this.getParcelamento().getValorParcelado().subtract(valorJaPago);
BigDecimal valorJurosPorParcela = this.getParcelamento().getValorJurosParcelamento().divide(
BigDecimal.valueOf(this.getParcelamento().getNumeroPrestacoes()),2,BigDecimal.ROUND_DOWN);
int qtdPrestacoesRestantes = this.getParcelamento().getNumeroPrestacoes().intValue() - this.getNumeroPrestacaoCobradas().intValue();
BigDecimal valorJurosNaoPago = valorJurosPorParcela.multiply(BigDecimal.valueOf(qtdPrestacoesRestantes));
BigDecimal valorRestanteParcelamentoSemJuros = valorNaoPagoComJuros.subtract(valorJurosNaoPago);
BigDecimal valorParcelaSemJuros = valorRestanteParcelamentoSemJuros.divide(new BigDecimal(qtdPrestacoesRestantes),2,BigDecimal.ROUND_DOWN);
valorAntecipacaoParcela = valorParcelaSemJuros.multiply(new BigDecimal(this.getQuantidadeAntecipacaoParcelas().intValue()));
}
return valorAntecipacaoParcela;
}
}