package br.com.caelum.stella.gateway.amex;
/**
*
* @author Alberto Souza
*
*/
public class AmexFormaPagamento {
private int numeroDeParcelas;
private AmexTipoTransacao tipoTransacao;
private AmexTipoCartao tipoCartao;
public AmexFormaPagamento(int numeroDeParcelas,
AmexTipoTransacao tipoTransacao, AmexTipoCartao tipoCartao) {
super();
this.numeroDeParcelas = numeroDeParcelas;
this.tipoTransacao = tipoTransacao;
this.tipoCartao = tipoCartao;
}
/**
* Construtor usado de forma controlada, quando não se tiver todas as
* informações necessárias sobre a forma de pagamento.
*
* @param tipoCartao
*/
AmexFormaPagamento(AmexTipoCartao tipoCartao) {
super();
this.numeroDeParcelas = 0;
this.tipoTransacao = null;
this.tipoCartao = tipoCartao;
}
public static AmexFormaPagamento newPagamentoAVista(AmexTipoCartao tipoCartao){
return new AmexFormaPagamento(0,AmexTipoTransacao.A_VISTA,tipoCartao);
}
public static AmexFormaPagamento newPagamentoParceladoJurosLojista(
int numeroDeParcelas,AmexTipoCartao tipoCartao) {
return new AmexFormaPagamento(
numeroDeParcelas,AmexTipoTransacao.PARCELADO_JUROS_LOJISTA,tipoCartao);
}
public static AmexFormaPagamento newPagamentoParceladoJurosEmissor(
int numeroDeParcelas,AmexTipoCartao tipoCartao) {
return new AmexFormaPagamento(
numeroDeParcelas,AmexTipoTransacao.PARCELADO_JUROS_EMISSOR,tipoCartao);
}
public int getNumeroDeParcelas() {
return numeroDeParcelas;
}
public AmexTipoTransacao getTipoTransacao() {
return tipoTransacao;
}
public AmexTipoCartao getTipoCartao() {
return tipoCartao;
}
public String getNumeroDeParcelasFormatado() {
return String.format("%02d", numeroDeParcelas);
}
}