package org.salamanca.commands.pago;
import org.salamanca.commands.ICommand;
import javax.jdo.PersistenceManager;
import org.salamanca.broker.BrokerServer;
import org.salamanca.commands.MessageException;
import org.salamanca.domain.*;
import java.util.Iterator;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class InsertarPago implements ICommand {
Pago pago;
Alumno alumno;
CuotaBasica cuotaBasica;
public InsertarPago(Pago pago, Alumno alumno, CuotaBasica cuotaBasica) {
this.pago = pago;
this.alumno = alumno;
this.cuotaBasica = cuotaBasica;
}
/**
* execute
*/
public void execute() throws MessageException {
if (cuotaYaPagada()) { // no se permite pagar dos veces la misma cuota al mismo alumno
throw new MessageException(
"La cuota en cuestion ya se encontraba pagada");
}
PersistenceManager pm = BrokerServer.instance().getPMF().
getPersistenceManager();
pm.currentTransaction().begin();
CuotaBasica cuotaBasicaPM = (CuotaBasica) pm.getObjectById(javax.jdo.
JDOHelper.
getObjectId(cuotaBasica),true);
Alumno alumnoPM = (Alumno) pm.getObjectById(javax.jdo.
JDOHelper.
getObjectId(alumno),true);
pago.setAlumno(alumnoPM);
pago.setCuotaPagada(cuotaBasicaPM);
pm.makePersistent(pago);
pm.currentTransaction().commit();
}
private boolean cuotaYaPagada() {
Iterator iter = alumno.getSetPagos().iterator();
while (iter.hasNext()) {
Pago itemPago = (Pago) iter.next();
if (!itemPago.isAnulado() &&
javax.jdo.JDOHelper.getObjectId(itemPago.getCuotaPagada()).
equals(javax.jdo.JDOHelper.getObjectId(cuotaBasica))) {
return true; //si alguno de sus pagos era sobre la cuota en cuestion
//y no fue anulada
}
}
return false;
}
//v.size() == 0 ||
/**
* getCommandName
*
* @return String
*/
public String getCommandName() {
return this.getClass().getName();
}
/**
* getBarDelimitedParameters
*
* @return String
*/
public String getBarDelimitedParameters() {
return cuotaBasica.getConcepto() + "|" +
cuotaBasica.getCurso().getNombre() + "|" + alumno.getDocumento() +
"|" +
pago.getNombreDescuento() + "|" + pago.getImportePagado();
}
}