package com.fitbank.installment;

import java.math.BigDecimal;

import com.fitbank.common.helper.Constant;

/**
 * Clase que genera una tabla de interes y capital al vencimiento. 
 * @author BANTEC Inc.
 *
 */
public class InterestInstallment extends AbstractQuota{
	


  /* (non-Javadoc)
 * @see com.fitbank.installment.AbstractQuota#calculate(com.fitbank.installment.InstallmentTable)
 */
  public void calculate(InstallmentTable pQuotaTable) throws Exception {
	this.quotaTable = pQuotaTable;
	this.quotanumber = pQuotaTable.getBegincalculationperiod();
	super.reducedcapital = quotaTable.getAmount();
    boolean end = false;
    super.calculateTotalperiod(pQuotaTable);
    int size = quotaTable.getTotalperiod() ;
    size = size + quotaTable.getBegincalculationperiod()-1;    
    for (int i = this.quotaTable.getBegincalculationperiod(); i <= size; i++) {
      super.calculatePayDate(this.quotaTable);
      if(i == size ){
    	  end =true;
      }
      super.processByCategory(false);
      this.calculateCuota(end);
      this.quotanumber++;
      if(super.stop){
    	  break;
      }
    }//end for
  }
  

  
  /**
   * Calcula tabla de pago dado una cuota fija.
   * @throws Exception
   */
  protected void calculateCuota(boolean pEnd) throws Exception{	    	    

	    BigDecimal capital = Constant.BD_ZERO;
	    // Obtiene el valor de interes y comision de la cuota
	    // Si se trata de la ultima cuota
	    if(pEnd){
			// Carga todo el capital reducido al capital de la cuota
			capital = this.quotaTable.getAmount();
	    }
	    super.addQuota(this.quotanumber,this.quotaTable.getAmount(),capital,true);
  }
  
 
}
