/* * Created on Jun 24, 2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Generation - Code and Comments */ package mx.edu.um.mateo.inscripciones.model.ccobro; import mx.edu.um.mateo.inscripciones.model.ccobro.afe.Convenio; import java.sql.Connection; import java.text.SimpleDateFormat; import java.util.Iterator; import java.util.Locale; import java.util.Map; import java.util.TreeMap; import java.util.Vector; import mx.edu.um.mateo.inscripciones.model.ccobro.utils.Currency; import mx.edu.um.mateo.inscripciones.model.ccobro.estudiantes.Aviso; import mx.edu.um.mateo.inscripciones.model.ccobro.tFinanciera.TFinanciera; import mx.edu.um.mateo.inscripciones.model.ccobro.dinscribir.Carga; import mx.edu.um.mateo.inscripciones.model.ccobro.common.Conexion; import mx.edu.um.mateo.inscripciones.model.ccobro.paquete.PaqueteAlumno; import java.math.BigDecimal; import java.math.RoundingMode; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.Enumeration; import java.util.GregorianCalendar; import java.util.List; import javax.sql.DataSource; import mx.edu.um.mateo.inscripciones.model.ccobro.utils.DateUtil; //import mx.edu.um.mateo.inscripciones.model.ccobro.afe.BecaAdicionalVO; import mx.edu.um.mateo.inscripciones.model.ccobro.afe.TipoOtraBecaEnum; import mx.edu.um.mateo.inscripciones.model.ccobro.exception.UMException; import mx.edu.um.mateo.inscripciones.model.ccobro.financiero.TipoOperacionCaja; import mx.edu.um.mateo.inscripciones.model.ccobro.utils.ValueObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author osoto * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Generation - Code and Comments */ public class CCobro implements Constant { private Alumno alumno; private Materia materia; private Double semanasInternado; private Double factorInternado; private Double matricula; private Double ensenanza; private Double internado; private TFinanciera tFinanciera; private Double cobroClima; private Date fechaInicial; private Date fechaFinal; /*Maps Generales*/ private Map mTParametros; private Map mDMaterias; private Map mProrrogas; private Map mBecas; private Map mAEmpleados; private Map mPaquetes; /*Bloques en los cuales el alumno inscribira materias*/ private Map mBloques; //Maps que guardaran los movimientos de acuerdo a su categoria //Movimientos para calcular el costo del bloque private Map mMovimientosCB; //Movimientos para calcula la cuota de inscripcion private Map mMovimientosCI; //Movimientos varios (otros movimientos) private Map mMovimientosOT; private Map mComedor; /*Se utiliza un vector porque puede darse el caso de que un alumno tenga mas de un descuento activo*/ private Vector vDAlumnos; /*Los pagares no tienen una llave unica, ademas que no requieren estarse consultado vez tras vez*/ /*Asi que se implementan mediante un vector*/ private Vector mPagares; /*Maps Calculo Cobro*/ private Map mMaterias; private Map mMovimientos; private Connection conn; private Connection conn_noe; private Connection conn_enoc; private Map mCobrosClima; private BigDecimal importeBonificaciones; //Colportaje private BigDecimal importeBecaBasica; //Talleres private BigDecimal importeBecaAdicional; //Beca adicional private BigDecimal importeExcedente; //Beca excedente private Boolean tipoAlumnoInstitucional; private Boolean alumnoPrecontratado; private Boolean online = false; private Boolean convenioEntregado = false; // private BecaAdicionalVO beca; private Double mPagare = 0.00; private DataSource ds; //Se utiliza para cargar los datos de reimpresion e inscripcion definitiva private Contrato contrato; //Usuario actual del sistema Long user; private final Logger log = LoggerFactory.getLogger(this.getClass()); public CCobro(DataSource ds) throws Exception { this(); log.info("Creando calculo de cobro con Datasource "); log.info("{}",ds); this.ds = ds; } /** * */ public CCobro() throws Exception { mBloques = new TreeMap(); mProrrogas = new TreeMap(); this.cobroClima = new Double(0); this.factorInternado = new Double(1); this.semanasInternado = new Double(-1); this.fechaInicial = new Date(); this.fechaFinal = new Date(); /*Inicializar valores*/ this.alumno = new Alumno(); log.info("CCobro 1 "); log.info("{}",this.alumno); this.materia = new Materia(); log.info("CCobro 2"); /*Subir descuentos de materia a la memoria*/ mDMaterias = new DMateria().getDMateria(); log.info("CCobro 3"); /*Subir descuentos de alumno a la memoria*/ vDAlumnos = new DAlumno().getDAlumno(); log.info("CCobro 4"); /*Subir prorrogas a la memoria*/ mProrrogas = new Prorroga().getProrrogas(); log.info("CCobro 5"); /*Subir becas a la memoria*/ mBecas = new Beca().getBecas(); log.info("CCobro 6"); /*Subir autorizaciones de estudio para los empleados a la memoria*/ mAEmpleados = new Empleado().getAutorizacionEmp(); log.info("CCobro 7"); /*Subir paquetes*/ mPaquetes = new PaqueteAlumno().getPaquetes(); /** * 04/06/2011 - El Sr. Randeles indico que ya no se utiliza el cobro de clima */ //mCobrosClima = new CobroClima().getCobrosClima(); mCobrosClima = new TreeMap(); /*Inicializar maps de calculo de cobro*/ mMaterias = new TreeMap(); mMovimientos = new TreeMap(); mPagares = new Vector(); importeBonificaciones = new BigDecimal("0"); importeBecaBasica = new BigDecimal("0"); importeBecaAdicional = new BigDecimal("0"); this.tipoAlumnoInstitucional = false; this.alumnoPrecontratado = false; // beca = null; } // public void calculaCobro(String matricula, String formaPago, Boolean inscrito, BecaAdicionalVO beca, DataSource ds) throws Exception { // if (beca != null) { // this.importeBonificaciones = beca.getBonificacionGema().add(beca.getBonificacionUM()); // //Se descuenta el diezmo a la beca basica // this.importeBecaBasica = beca.getBecaBasica(); // this.importeBecaAdicional = beca.getBecaAdicional(); // this.importeExcedente = beca.getExcedente(); // // if (beca.hasContrato()) { // this.tipoAlumnoInstitucional = beca.getContrato().isIndustrial(); // this.alumnoPrecontratado = beca.getContrato().estaPrecontratado(); // formaPago = "P"; // } // this.beca = beca; // // log.info("Bonificaciones {} ",this.importeBonificaciones); // log.info("BecaBasica {}",this.getImporteBecaBasica()); // log.info("BecaAdicional {}", this.getImporteBecaAdicional()); // log.info("Excedente {}", this.getImporteExcedente()); // log.info("tipoAlumnoInstitucional {}", this.tipoAlumnoInstitucional); // log.info("alumnoPrecontratado {}", this.alumnoPrecontratado); // log.info("formaPago {}", formaPago); // // } // // this.ds = ds; // this.calculaCobro(matricula, formaPago, inscrito); // } // public void calculaCobro(String matricula, String formaPago, Boolean inscrito, BecaAdicionalVO beca, DataSource ds, Long user) throws Exception { // if (beca != null) { // this.importeBonificaciones = beca.getBonificacionGema().add(beca.getBonificacionUM()); // this.importeBecaBasica = beca.getBecaBasica(); // this.importeBecaAdicional = beca.getBecaAdicional(); // this.importeExcedente = beca.getExcedente(); // // if (beca.hasContrato()) { // this.tipoAlumnoInstitucional = beca.getContrato().isIndustrial(); // this.alumnoPrecontratado = beca.getContrato().estaPrecontratado(); // formaPago = "P"; // } // this.beca = beca; // // } // log.info("Bonificaciones {}", this.importeBonificaciones); // log.info("BecaBasica {}", this.getImporteBecaBasica()); // log.info("BecaAdicional {}", this.getImporteBecaAdicional()); // log.info("Excedente {}", this.getImporteExcedente()); // log.info("tipoAlumnoInstitucional {}", this.tipoAlumnoInstitucional); // log.info("alumnoPrecontratado {}", this.alumnoPrecontratado); // log.info("formaPago {}", formaPago); // // // this.ds = ds; // this.user = user; // // this.calculaCobro(matricula, formaPago, inscrito); // } // public void calculaCobro(String matricula, String formaPago, Boolean inscrito, BecaAdicionalVO beca, DataSource ds, Long user, Boolean online) throws Exception { // if (beca != null) { // this.importeBonificaciones = beca.getBonificacionGema().add(beca.getBonificacionUM()); // this.importeBecaBasica = beca.getBecaBasica(); // this.importeBecaAdicional = beca.getBecaAdicional(); // this.importeExcedente = beca.getExcedente(); // // if (beca.hasContrato()) { // this.tipoAlumnoInstitucional = beca.getContrato().isIndustrial(); // this.alumnoPrecontratado = beca.getContrato().estaPrecontratado(); // formaPago = "P"; // } // this.beca = beca; // } // // // log.info("Bonificaciones {}", this.importeBonificaciones); // log.info("BecaBasica {}", this.getImporteBecaBasica()); // log.info("BecaAdicional {}", this.getImporteBecaAdicional()); // log.info("Excedente {}", this.getImporteExcedente()); // log.info("tipoAlumnoInstitucional {}", this.tipoAlumnoInstitucional); // log.info("alumnoPrecontratado {}", this.alumnoPrecontratado); // log.info("formaPago {}", formaPago); // // // this.ds = ds; // this.user = user; // this.online = online; // // this.calculaCobro(matricula, formaPago, inscrito); // } public void calculaCobro(String matricula, String formaPago, Boolean inscrito) throws Exception { if (this.alumnoPrecontratado) { throw new UMException("El alumno " + matricula + " no est\u00e1 contratado, sino precontratado. " + "<br>Debe pasar al departamento donde labora para que actualicen su estatus de PRECONTRATADO a CONTRATADO"); } log.info("calculaCobro / default ...."); log.info("calculaCobro {}", matricula); this.alumno.setMatricula(matricula); log.info("CCobro 8"); this.alumno.setFormaPago(formaPago); log.info("CCobro 9"); this.alumno.getContabilidad(); log.info("CCobro 10"); this.alumno.setFactorInternado(this.factorInternado); log.info("CCobro 11"); /*Obtener los datos del alumno*/ alumno.getAlumno(); log.info("CCobro 12"); // //Si la bandera 'inscrito' esta prendida, validar candado de firma de convenio AFE // if (this.beca.hasContrato()) { // if (!Contrato.estaConvenioFirmado(matricula, alumno, ds.getConnection())) { // convenioEntregado = false; // if (inscrito) { // throw new UMException("Convenio no ha sido firmado aun. <br> El alumno debe ir personalmente a Autofinanciamiento para firmar su convenio de servicio becario."); // } // } else { // convenioEntregado = true; // } // log.info("Convenio entregado {}", convenioEntregado); // } // else{ // convenioEntregado = true; //Para que no mande la leyenda en el action // } if (this.tipoAlumnoInstitucional) { this.alumno.setTAlumno_id(Constant.ccfintTInstitucional); //20-08/12 El CP Alverto Maldonado solicito que todos los institucionales se les cobrara en pagares this.alumno.setFormaPago("P"); //Los alumnos institucionales solo se inscriben de contado } /*Obtener la carga y el bloque de estudio*/ alumno.getCargaIDBloque(); //log.info("CCobro 13 - Carga " + this.alumno.getCarga_id() + ", " + this.alumno.getBloque()); mComedor = new AutorizaComida().getComidas(this.alumno.getCarga_id()); log.info("CCobro 14"); if (this.alumno.isInscrito().booleanValue()) { throw new UMException("El alumno " + matricula + " ya esta inscrito en la carga " + alumno.getCarga_id()); } /*Obtener datos persistentes del CCobro*/ alumno.getDatosCCobro(); log.info("Datos persistentes - Semanas Internado {}, {}",alumno.getSemanasInternado(),this.semanasInternado); /*Subir tabla financiera a la memoria*/ tFinanciera = new TFinanciera().getTFinanciera(alumno.getCarga_id()); log.info("CCobro 15"); /*Subir tabla de parametros a la memoria*/ mTParametros = new TParametros().getTParametros(alumno.getCarga_id()); log.info("CCobro 16"); /*Subir materias del alumno a la memoria*/ mMaterias = new Materia().getMaterias(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), tFinanciera, mDMaterias, mAEmpleados, mComedor, mMovimientos, this.alumno, mBloques); log.info("CCobro 17"); if (mMaterias.isEmpty()) { throw new UMException("El alumno " + matricula + " no tiene materias asignadas en la carga " + alumno.getCarga_id()); } /*Acumular costo de materias para obtener total de ensenanza*/ this.ensenanza = new Materia().getTotalEnsenanza(mMaterias); log.info("CCobro 18"); /** * TODO Obtiene ensenanza del paquete * Si el alumno se encuentra en paquetes, entonces el costo de la ensenanza sera el del paquete * Siempre y cuando el valor de la ensenanza no sea -1 * */ if (mPaquetes.containsKey(matricula)) { PaqueteAlumno paquete = (PaqueteAlumno) mPaquetes.get(matricula); if (paquete.getPaquete().getEnsenanza().compareTo(new Double(0)) >= 0) { this.ensenanza = paquete.getPaquete().getEnsenanza(); } } /*Insertar movimiento de ensenanza*/ Movimiento movimiento = new Movimiento(matricula, alumno.getCarga_id(), alumno.getBloque(), ccfstrEnsenanzaID, ccfstrEnsenanza, this.ensenanza, "D", "S", "-", alumno.getId_ccosto()); mMovimientos.put(matricula + alumno.getCarga_id() + alumno.getBloque() + ccfstrEnsenanzaID, movimiento); movimiento = null; log.info("CCobro 19"); /*Obtener importe de matricula e internado*/ if (!tFinanciera.getDetalles().containsKey(alumno.getCarrera_id() + alumno.getModalidad_id())) { throw new UMException( "Los costos financieros no estan capturados para la carrera " + alumno.getCarrera() + " en la modalidad " + alumno.getModalidad()); } this.matricula = tFinanciera.getMatricula(alumno.getCarrera_id(), alumno.getModalidad_id()); this.internado = tFinanciera.getInternado(alumno.getCarrera_id(), alumno.getModalidad_id()); log.info("CCobro 20"); this.calculaMatricula(tFinanciera); log.info("CCobro 21"); this.calculaInternado(); log.info("CCobro 22"); this.calculaBecaAdicional(); /** * Evaluar tipo de alumno */ //Alumno hijo de empleado alumno.becado(mBecas, mMovimientos, this.matricula, this.ensenanza, this.internado); log.info("CCobro 122"); /*Evaluar cobros por clima en dormitorio*/ //this.getCobrosClima(); log.info("CCobro 23"); alumno.hijoObrero(mTParametros, mMovimientos, this.matricula, this.ensenanza, this.internado, ds.getConnection()); log.info("CCobro 24"); alumno.Obrero(mMovimientos, this.ensenanza); log.info("CCobro 25"); /*Determinar descuentos Mat. Ext.*/ this.getDescuentos(); log.info("CCobro 26"); /*Determinar bonificaciones por colportaje*/ this.getColportaje(); log.info("CCobro 35"); /*Evaluar si hay prorrogas de pago*/ this.getProrrogas(); log.info("CCobro 27"); /*Determinar si es pago de contado o por pagares*/ this.pagoContado(); log.info("CCobro 28"); this.getPagoMinimo(); log.info("CCobro 29"); this.getManejoPagare(); log.info("CCobro 30"); /*Evaluar si es un alumno institucional*/ this.getInstitucional(); log.info("CCobro 27.institucional"); this.getPagares(); log.info("CCobro 31"); this.alumno.getSaldoAnterior(mMovimientos, mPagares); //Se pasan los pagares, ya que el saldo anterior se almacena como uno log.info("CCobro 32"); this.getMatriculaExtemporanea(); log.info("CCobro 33"); this.grabaDatos(inscrito); log.info("CCobro 34"); } private void calculaMatricula(TFinanciera tFinanciera) throws Exception { /*Validar si el alumno debe pagar matricula*/ /*En el caso que sea empleado UM no paga matricula*/ log.info("Costo de matricula de " + alumno.getMatricula() + "," + alumno.getCarrera_id() + "," + alumno.getModalidad_id() + "," + this.matricula); log.info("Valor boolean de isMatricula {}",alumno.isMatricula()); log.info("Valor de Tipo Alumno {}",alumno.getTAlumno_id()); if (alumno.isMatricula().booleanValue()) { /*Si el alumno es extranjero, anadir los gastos */ if (alumno.getNacionalidad().equals("EXT")) { this.matricula = tFinanciera.getTLegales( alumno.getCarrera_id(), alumno.getModalidad_id().toString()); log.info("Tramites legales " + this.matricula); this.matricula = new Double(this.matricula.doubleValue() + tFinanciera.getMatricula(alumno.getCarrera_id(), alumno.getModalidad_id()).doubleValue()); log.info("Matricula + TLegales " + this.matricula); } log.info("Costo de matricula de " + alumno.getMatricula() + "," + alumno.getCarrera_id() + "," + alumno.getModalidad_id() + "," + this.matricula); /** * TODO Obtiene matricula el paquete * Si el alumno se encuentra en paquetes, entonces el costo de la matricula sera el del paquete * Siempre y cuando el valor de la matricula sea mayor que -1 * */ if (mPaquetes.containsKey(alumno.getMatricula())) { PaqueteAlumno paquete = (PaqueteAlumno) mPaquetes.get(alumno.getMatricula()); if (paquete.getPaquete().getMatricula().compareTo(new Double(0)) >= 0) { this.matricula = paquete.getPaquete().getMatricula(); } } /** * 09-Agosto-2010 El CP Joel Sebastian solicito que a los alumnos universitarios de primer ingreso se les cobre $234.00 * 11-Agosto-2010 El CP Joel Sebastian solicito que se cancelara este cobro. */ // if(alumno.isUniversitario() && alumno.isPrimerIngreso()){ // this.matricula += 234.00; // } } else{ this.matricula = new Double(0); } if(alumno.getTAlumno_id().compareTo(ccfintTEmpleado) == 0) { /** * 04-Jun-2012 --El CP Raul Randeles, indico que no se debe cobrar la matricula a los empleados */ this.matricula = new Double(0); } /*Generar movimiento de cobro de matricula*/ if(this.matricula.compareTo(new Double(0)) > 0){ Movimiento movimiento = new Movimiento(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), ccfstrMatriculaID, ccfstrMatricula, this.matricula, "D", "S", "-", alumno.getId_ccosto()); mMovimientos.put(matricula + alumno.getCarga_id() + alumno.getBloque() + ccfstrMatriculaID, movimiento); movimiento = null; } log.info("Costo de matricula de " + alumno.getMatricula() + "," + alumno.getCarrera_id() + "," + alumno.getModalidad_id() + "," + this.matricula); } /*Verificar el numero de comidas que el alumno tiene registradas*/ /*para afectar el valor del internado a cobrar*/ private void calculaInternado(Map mBloques) throws Exception { /*Si el alumno es externo, no cobrar internado*/ if (alumno.getResidencia().equals("E")) { this.internado = new Double(0); } else { //Calcular total de internado //El 30% del valor del internado corresponde a vivienda //El 70% del valor del internado corresponde a comidas Double dblVivienda = Currency.getRound(new Double( this.internado.doubleValue() * 0.30), new Integer(2)); Double dblComidas = Currency.getRound(new Double( this.internado.doubleValue() * 0.70), new Integer(2)); log.info("Calcula Internado 1, Internado " + this.internado); Integer intNumComidas = new Integer(0); //Multiplicar el costo de la vivienda por el numero de bloques a inscribir if (mBloques.size() == 0) { throw new UMException("El alumno " + alumno.getMatricula() + " no tiene bloques registrados para inscribir, por lo que no se puede calcular el costo del internado"); } log.info("Calcula Internado 7, numBloques " + mBloques.size()); dblVivienda = Currency.getRound(new Double(dblVivienda.doubleValue() * mBloques.size()), new Integer(2)); Map mTmp = new TreeMap(); Iterator iMaterias = mMaterias.keySet().iterator(); while (iMaterias.hasNext()) { Materia materia = (Materia) mMaterias.get(iMaterias.next()); log.info("Calcula Internado 2"); //Obtener el numero de comidas registradas para este alumno log.info("Calcula internado " + alumno.getMatricula() + alumno.getCarga_id() + materia.getBloque_curso() + materia.getCurso_id()); if (!mComedor.containsKey(alumno.getMatricula() + alumno.getCarga_id() + materia.getBloque_curso())) { throw new UMException( "Error al obtener numero de comidas del alumno " + alumno.getMatricula() + ",en la carga " + alumno.getCarga_id() + ", y bloque " + materia.getBloque_curso()); } if (!mTmp.containsKey(materia.getBloque_curso())) { mTmp.put(materia.getBloque_curso(), materia.getBloque_curso()); log.info("Calcula Internado 3"); AutorizaComida autorizaComida = (AutorizaComida) mComedor.get(alumno.getMatricula() + alumno.getCarga_id() + materia.getBloque_curso()); log.info("Calcula Internado 4"); intNumComidas = new Integer(intNumComidas.intValue() + autorizaComida.getComidas().intValue()); } log.info(alumno.getMatricula() + "@" + intNumComidas); } log.info("Calcula Internado 5"); //Calcular valor del internado //Importe de comidas a pagar = (Internado)(70%)(Num.Comidas)(100/3) //Simplificando (Internado)(NumComidas)(0.233333) this.internado = Currency.getRound(new Double(dblVivienda.doubleValue() + (this.internado.doubleValue() * Currency.getRound( new Double(intNumComidas.doubleValue() * 0.23333), new Integer(2)).doubleValue())), new Integer(2)); log.info("Calcula Internado 6, Internado " + this.internado); //Si el numero el factor de internado es mayor que cero, multiplicar if (this.factorInternado.compareTo(new Double(0)) > 0) { this.internado = Currency.getRound(new Double(this.factorInternado.doubleValue() * this.internado.doubleValue()), new Integer(2)); } /** * TODO Obtiene el internado del paquete * Si el alumno se encuentra en paquetes, entonces el costo del internado sera el del paquete * Siempre y cuando el valor del internado sea mayor que -1 */ if (mPaquetes.containsKey(alumno.getMatricula())) { PaqueteAlumno paquete = (PaqueteAlumno) mPaquetes.get(alumno.getMatricula()); if (paquete.getPaquete().getInternado().compareTo(new Double(0)) >= 0) { this.internado = paquete.getPaquete().getInternado(); } } //Insertar en la tabla, el importe del Internado log.info("Calcula Internado 8"); Movimiento movimiento = new Movimiento(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), ccfstrInternadoID, ccfstrInternado, this.internado, "D", "S", "-", alumno.getId_ccosto()); mMovimientos.put(alumno.getMatricula() + alumno.getCarga_id() + alumno.getBloque() + ccfstrInternadoID, movimiento); movimiento = null; } } /** * Verificar el numero de comidas que el alumno tiene registradas * para afectar el valor del internado a cobrarv<br> * Este metodo utiliza el <b>numero de semanas de internado</b> para el calculo correspondiente */ private void calculaInternado() throws Exception { /*Si el alumno es externo o institucional, no cobrar internado*/ if (alumno.getResidencia().equals("E")) { this.internado = new Double(0); } else { //Calcular total de internado //El 30% del valor del internado corresponde a vivienda //El 70% del valor del internado corresponde a comidas //23-Nov-2010 - El CP Eliezer Castellanos solicito que se dividiera el internado en 34% dormitorio //y el 66% vivienda y ya no se tomara en cuenta el cobro de clima Double dblVivienda = Currency.getRound(new Double( this.internado.doubleValue() * 0.34), new Integer(2)); Double dblComidas = Currency.getRound(new Double( this.internado.doubleValue() * 0.66), new Integer(2)); log.info("Vivienda "+dblVivienda); log.info("Comidas "+dblComidas); log.info("Internado "+this.internado); Materia materia = null; ValueObject vo = null; List<ValueObject> periodos = new ArrayList<ValueObject>(); Iterator iMaterias = mMaterias.keySet().iterator(); Integer numBloques = 0; Integer lastBloque = 0; Integer items = 0; //Recorrer materias para obtener los periodos de tiempo que cada una va a durar... while (iMaterias.hasNext()) { materia = (Materia) mMaterias.get(iMaterias.next()); if (lastBloque.compareTo(materia.getBloque_curso()) != 0) { numBloques++; lastBloque = materia.getBloque_curso(); } log.info("CalculaInternado - bloques " + numBloques); //Se guardan las fechas en valueObject... vo = new ValueObject(); vo.setValueOne(materia.getFechaInicio()); vo.setValueTwo(materia.getFechaFinal()); log.info("CalculaInternado - rangos " + materia.getFechaInicio() + " -> " + materia.getFechaFinal()); //Se agregan a una lista... periodos.add(vo); } //Obtener el numero de comidas totales del alumno Integer numComidas = 0; List<AutorizaComida> comidas = null; if (mComedor.containsKey(alumno.getMatricula())) { comidas = (List) mComedor.get(alumno.getMatricula()); } else { comidas = new ArrayList<AutorizaComida>(); mComedor.put(alumno.getMatricula(), comidas); } log.info("Comidas "+comidas); for (AutorizaComida comida : comidas) { log.info("Comida "+comida.getComidas()); numComidas += comida.getComidas(); } //Para finalmente evaluar todos los periodos y obtener rangos continuos de tiempo de internado List<ValueObject> rangos = DateUtil.getRangosFechas(periodos); //Recuperar registros de comedor AutorizaComida comida = null; Double totalDias = 0.0; Integer cont = 0; for (ValueObject v : rangos) { log.info("CalculaInternado - rango[" + cont + "] " + v); try { log.info("CalculaInternado - list " + comidas); comida = comidas.get(cont); log.info("Comida "+comida); } catch (IndexOutOfBoundsException e) { comida = new AutorizaComida(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), (Date) v.getValueOne(), (Date) v.getValueTwo()); log.info("CalculaInternado -try:catch " + comida + ", "+ comida.getComidas()); //Nuevo rango de entrada al comedor, por lo tanto se incluyen las comidas numComidas += comida.getComidas(); log.info("Num Comidas " + numComidas); comidas.add(comida); } comida.setFechaInicio((Date) v.getValueOne()); comida.setFechaFinal((Date) v.getValueTwo()); cont++; //Obtener cantidad total en dias para el internado, //siempre y cuando la carga actual sea de verano totalDias += DateUtil.getDiffInDays((Date) v.getValueOne(), (Date) v.getValueTwo()); log.info("CalculaInternado - Dias de internado " + DateUtil.getDiffInDays((Date) v.getValueOne(), (Date) v.getValueTwo())); } if (Carga.isVerano(alumno.getCarga_id())) { numComidas /= cont; items = totalDias.intValue(); log.info("Carga isVerano, con totalDias " + items); } else { //Si es alumno de posgrado if(this.alumno.getNivelId().equals(3) || this.alumno.getNivelId().equals(4)){ //numComidas /= numBloques; items = numBloques; log.info("Carga NO isVerano, es de posgrado " + items); } else{ //numComidas /= numBloques; //Solo es un bloque items = 1; log.info("Carga NO isVerano, es de licenciatura" + items); } } if(items.compareTo(new Integer(0)) <= 0){ throw new UMException("Imposible calcular el internado... <br>Valor negativo de numero de dias/bloques. <br>"+items); } //--- No deberia ser dblComidas????--- log.info("Formula (" + dblVivienda + "+(" + dblComidas + "/ 3) * " + numComidas + ")*" + items); log.info("Valor de Internado " + this.internado + ", Valor de dblComidas " + dblComidas + ", Valor de Vivienda " + dblVivienda); //Calcular valor del internado //Importe de comidas a pagar = (dblComidas)(Num.Comidas)/(3) this.internado = Currency.getRound(new Double((dblVivienda + (Currency.getRound((dblComidas / 3) * numComidas.doubleValue(), 2))) * items), 2); log.info("Calcula Internado 6, Internado " + this.internado); //Si el numero el factor de internado es mayor que cero, multiplicar if (this.factorInternado.compareTo(new Double(0)) > 0) { this.internado = Currency.getRound(new Double(this.factorInternado.doubleValue() * this.internado.doubleValue()), new Integer(2)); } /** * TODO Obtiene el internado del paquete * Si el alumno se encuentra en paquetes, entonces el costo del internado sera el del paquete * Siempre y cuando el valor del internado sea mayor que -1 */ if (mPaquetes.containsKey(alumno.getMatricula())) { PaqueteAlumno paquete = (PaqueteAlumno) mPaquetes.get(alumno.getMatricula()); if (paquete.getPaquete().getInternado().compareTo(new Double(0)) >= 0) { this.internado = paquete.getPaquete().getInternado(); } } //Se acumula el cobro del clima en internado this.internado += this.cobroClima; //Insertar en la tabla, el importe del Internado log.info("Calcula Internado 8"); Movimiento movimiento = new Movimiento(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), ccfstrInternadoID, ccfstrInternado, this.internado, "D", "S", "-", alumno.getId_ccosto()); mMovimientos.put(alumno.getMatricula() + alumno.getCarga_id() + alumno.getBloque() + ccfstrInternadoID, movimiento); movimiento = null; } } public void calculaBecaAdicional() throws Exception { log.info("Calcula beca adicional " + this.getImporteBecaAdicional()); if (this.getImporteBecaAdicional().compareTo(new BigDecimal(0)) > 0) { log.info("Calcula beca adicional 1"); /** * 18/Ene/2011 El CP Raul Randeles solicito que la beca adicional no afecte a la cuota de inscripcion. * Por lo tanto, a la constante de pctBecaAdicional se le asigno 0 */ BigDecimal pctBecaAdicional = this.getImporteBecaAdicional().multiply(new BigDecimal(ccfPctBecaAdicional)); Movimiento movimiento = new Movimiento(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), ccfstrBecaAdicionalID, ccfstrBecaAdicional, pctBecaAdicional.doubleValue(), "C", "N", "T", alumno.getId_ccosto()); mMovimientos.put(alumno.getMatricula() + alumno.getCarga_id() + alumno.getBloque() + ccfstrBecaAdicionalID, movimiento); movimiento = null; } } public Double calculaSemanasInternado(Alumno alumno) throws Exception { Double semanas = 1.0; Locale local = new java.util.Locale("es", "MX", "Traditional_WIN"); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy", local); Map<String, Carga> mCargas = Carga.getCargas(sdf.format(new Date())); Carga carga = mCargas.get(alumno.getCarga_id()); if (carga != null) { this.fechaInicial = sdf.parse(carga.getFInicio()); this.fechaFinal = sdf.parse(carga.getFFinal()); log.info("calculaSemanasInternado " + carga.getCargaId() + ", " + carga.getFInicio() + ", " + carga.getFFinal()); semanas = CCobro.calculaSemanas(sdf.parse(carga.getFInicio()), sdf.parse(carga.getFFinal())); log.info("calculaSemanasInternado " + semanas); } return semanas; } public static Double calculaSemanas(Date fechaI, Date fechaF) throws Exception { Locale local = new java.util.Locale("es", "MX", "Traditional_WIN"); Calendar fInicial = new GregorianCalendar(local); Calendar fFinal = new GregorianCalendar(local); fInicial.setTime(fechaI); fFinal.setTime(fechaF); Long diff = fFinal.getTimeInMillis() - fInicial.getTimeInMillis(); //diff * (1/1000ms) * (1/60s) * (1/60m) * (1/24h) * (1/7d) => semanas Double op1 = new Double(diff.toString()); Double op2 = new Double("604800000"); Double semanas = op1 / op2; return semanas; } /*Obtener otros descuentos del alumno*/ private void getDescuentos() throws Exception { Enumeration eDAlumnos = vDAlumnos.elements(); while (eDAlumnos.hasMoreElements()) { DAlumno dAlumno = (DAlumno) eDAlumnos.nextElement(); if (dAlumno.getMatricula().equals(alumno.getMatricula())) { /*Insertar en la tabla, descuentos*/ Movimiento movimiento = new Movimiento(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), dAlumno.getTipo_descuento_id(), dAlumno.getTipo_descuento(), dAlumno.getImporte(), "C", dAlumno.getContabiliza().booleanValue() ? "S" : "N", dAlumno.getAplica_en(), alumno.getId_ccosto()); mMovimientos.put(alumno.getMatricula() + alumno.getCarga_id() + alumno.getBloque() + ccfstrDesctoMExtID, movimiento); movimiento = null; } } } /*Determinar abonos por colportaje*/ private void getColportaje() throws Exception { // if(mColportores.containsKey (alumno.getMatricula ())) // { // Colportor clp = (Colportor)mColportores.get (alumno.getMatricula ()); // // /*Validar la fecha del registro con el rango de fechas de la carga*/ // // Movimiento movimiento = new Movimiento ( // alumno.getMatricula (), // alumno.getCarga_id (), alumno.getBloque (), // ccfstrColportajeID, // ccfstrColportaje, clp.getImporte (), "C", // "N", // "T", // alumno.getId_ccosto ()); // // mMovimientos.put (alumno.getMatricula () + alumno.getCarga_id () + // alumno.getBloque () + ccfstrColportajeID, movimiento); // movimiento = null; // } if (this.importeBonificaciones.compareTo(new BigDecimal("0")) > 0) { log.info("Obtiene bonificaciones de colportaje "); Movimiento movimiento = new Movimiento( alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), ccfstrColportajeID, ccfstrColportaje, this.importeBonificaciones.doubleValue(), "C", "N", "T", alumno.getId_ccosto()); mMovimientos.put(alumno.getMatricula() + alumno.getCarga_id() + alumno.getBloque() + ccfstrColportajeID, movimiento); movimiento = null; } } /** * 24/Enero/2010 - El CP Raul Randeles, solicito que al alumno institucional se le descuente el cobro de clima y el manejo de pagare. * 23/Agosto/2010 - El CP Arturo Sebastian, indico que los alumnos institucionales DEBEN pagar matricula, diezmo y manejo de pagare * @throws Exception */ public void getInstitucional() throws Exception { if (this.alumno.getTAlumno_id().compareTo(Constant.ccfintTInstitucional) == 0) { //Insertar descuento log.info("Descuento institucional {}",this.ensenanza + ", " + this.internado + ", " + this.cobroClima + ", " + this.mPagare); Movimiento movimiento = new Movimiento(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), ccfstrDesctoInstitucionalID, ccfstrDesctoInstitucional, this.ensenanza + this.internado, "C", "S", "T", alumno.getId_ccosto()); mMovimientos.put(alumno.getMatricula() + alumno.getCarga_id() + alumno.getBloque() + ccfstrDesctoInstitucionalID + "T", movimiento); // this.beca.setBecaInstitucional((new BigDecimal(String.valueOf(this.ensenanza + this.internado))).subtract(this.beca.getContrato().getImporteAPagar())); // log.info("Beca institucional {}",this.beca.getBecaInstitucional()); //Registar la beca excedente del alumno // Contrato.registraBecaExcedenteInstitucional(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), // this.beca.getBecaInstitucional(), user, ds.getConnection()); /*****************************************************************************/ //Crear movimiento de diezmo, no debe contabilizar // movimiento = new Movimiento(alumno.getMatricula(), // alumno.getCarga_id(), alumno.getBloque(), // ccfstrDiezmoBecaInstitucionalID, ccfstrDiezmoBecaInstitucional, // this.beca.getContrato().getDiezmo().doubleValue(), "D", "N", "T", alumno.getId_ccosto()); mMovimientos.put(alumno.getMatricula() + alumno.getCarga_id() + alumno.getBloque() + ccfstrDiezmoBecaInstitucionalID + "T", movimiento); // log.info("Diezmo beca Institucional "+ this.beca.getContrato().getDiezmo()); } } // Obtiene pr?rrogas de pago public void getProrrogas() throws Exception { if (mProrrogas.containsKey(alumno.getMatricula())) { Prorroga prorroga = (Prorroga) mProrrogas.get(alumno.getMatricula()); /*Inserta movimiento*/ Movimiento movimiento = new Movimiento(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), ccfstrProrrogasID, ccfstrProrrogas, prorroga.getSaldo(), "C", "N", "T", alumno.getId_ccosto()); mMovimientos.put(alumno.getMatricula() + alumno.getCarga_id() + alumno.getBloque() + ccfstrProrrogasID, movimiento); movimiento = null; /*Inserta prorroga en pagares*/ Pagare pagare = new Pagare(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), prorroga.getFecha(), prorroga.getSaldo(), "P"); mPagares.add(pagare); } } /** * Agosto 13, 2008. El C.P. Raul Randeles solicito que por default a todo alumno interno se le cobrara el clima * a excepcion de aquellos que se registraran en cobrosClima. * * 04/06/2011 - El Sr. Randeles indico que ya no se utiliza el cobro de clima * */ // public void getCobrosClima() throws Exception { // if (this.alumno.getResidencia().equals("I") && !mCobrosClima.containsKey(alumno.getMatricula())) { // //CobroClima cClima = (CobroClima) mCobrosClima.get(alumno.getMatricula()); // // TParametros tParametros = (TParametros) mTParametros.get("CCL" + alumno.getCarga_id() + "I"); // log.info(alumno.getMatricula() + "," + alumno.getCarga_id() + "," + tParametros.getValor()); // this.cobroClima = new Double(tParametros.getValor()); // // /*Inserta movimiento*/ //// Movimiento movimiento = new Movimiento(alumno.getMatricula(), //// alumno.getCarga_id(), alumno.getBloque(), //// ccfstrCobroClimaID, ccfstrCobroClima, this.cobroClima, //// "D", "S", "-", alumno.getId_ccosto()); // //// mMovimientos.put(alumno.getMatricula() + alumno.getCarga_id() + //// alumno.getBloque() + ccfstrCobroClimaID, movimiento); //// movimiento = null; // } // } /*Calcular pago de contado*/ public void pagoContado() throws Exception { //Si la forma de pago es de contado if (alumno.getFormaPago().equals("C")) { Double dblPagoMinimo = new Double(0); //Si el tipo de alumno es normal /** * Agosto 13, 2008. El C.P. Raul Randeles solicito que a los hijos de obrero que pagaran de contado su parte * correspondiente de ensenanza e internado, se le aplicara el descuento de pago de contado */ if (alumno.getTAlumno_id().compareTo(ccfintTANormal) == 0 || alumno.getTAlumno_id().compareTo(ccfintTHObrero) == 0) { Double dblDctoMatricula = new Double(0); Double dblDctoEnsenanza = new Double(0); Double dblDctoInternado = new Double(0); Double dctoHOEnsenanza = new Double(1); Double dctoHOInternado = new Double(1); //Si alumno es hijo de obrero, obtener porcentajes de ayuda if (alumno.getTAlumno_id().compareTo(ccfintTHObrero) == 0) { dctoHOEnsenanza = new Double(1); dctoHOInternado = new Double(1); TParametros tParametros = (TParametros) mTParametros.get("HO" + this.alumno.getCarga_id() + "E"); try{ dctoHOEnsenanza = new Double(1.0 - new Double(tParametros.getValor()).doubleValue()); }catch(Exception e){ dctoHOEnsenanza = new Double(0.0); } tParametros = (TParametros) mTParametros.get("HO" + this.alumno.getCarga_id() + "I"); try{ dctoHOInternado = new Double(1.0 - new Double(tParametros.getValor()).doubleValue()); }catch(Exception e){ dctoHOInternado = new Double(0.0); } //log.info("PagoContado - Dcto Contado HO - Ensenanza " + dctoHOEnsenanza + ", Internado " + dctoHOInternado); } //Obtener descuento de contado nacional if (alumno.getNacionalidad().equals("MEX")) { /*Obtener descuento de contado en matricula para alumnos nacionales*/ if (mTParametros.containsKey("PCN" + alumno.getCarga_id() + "M")) { TParametros tParametros = (TParametros) mTParametros.get( "PCN" + alumno.getCarga_id() + "M"); dblDctoMatricula = new Double(this.matricula.doubleValue() * new Double( tParametros.getValor()).doubleValue()); } /*Obtener descuento de contado en ensenanza para alumnos nacionales*/ if (mTParametros.containsKey("PCN" + alumno.getCarga_id() + "E")) { TParametros tParametros = (TParametros) mTParametros.get( "PCN" + alumno.getCarga_id() + "E"); //log.info("Dcto. HO Ensenanza " + this.ensenanza + "*" + dctoHOEnsenanza + "*" + tParametros.getValor()); dblDctoEnsenanza = new Double(this.ensenanza.doubleValue() * dctoHOEnsenanza * new Double( tParametros.getValor()).doubleValue()); } /*Obtener descuento de contado en internado para alumnos nacionales*/ if (mTParametros.containsKey("PCN" + alumno.getCarga_id() + "I")) { TParametros tParametros = (TParametros) mTParametros.get( "PCN" + alumno.getCarga_id() + "I"); //log.info("Dcto. HO Ensenanza " + this.internado + "*" + dctoHOInternado + "*" + tParametros.getValor()); dblDctoInternado = new Double(this.internado.doubleValue() * dctoHOInternado * new Double( tParametros.getValor()).doubleValue()); } } else if (alumno.getNacionalidad().equals("EXT")) { /*Obtener descuento de contado en matricula para alumnos no nacionales*/ if (mTParametros.containsKey("PCE" + alumno.getCarga_id() + "M")) { TParametros tParametros = (TParametros) mTParametros.get( "PCE" + alumno.getCarga_id() + "M"); dblDctoMatricula = new Double(this.matricula.doubleValue() * new Double( tParametros.getValor()).doubleValue()); } /*Obtener descuento de contado en ensenanza para alumnos no nacionales*/ if (mTParametros.containsKey("PCE" + alumno.getCarga_id() + "E")) { TParametros tParametros = (TParametros) mTParametros.get( "PCE" + alumno.getCarga_id() + "E"); dblDctoEnsenanza = new Double(this.ensenanza.doubleValue() * dctoHOEnsenanza * new Double( tParametros.getValor()).doubleValue()); } /*Obtener descuento de contado en internado para alumnos no nacionales*/ if (mTParametros.containsKey("PCE" + alumno.getCarga_id() + "I")) { TParametros tParametros = (TParametros) mTParametros.get( "PCE" + alumno.getCarga_id() + "I"); dblDctoInternado = new Double(this.internado.doubleValue() * dctoHOInternado * new Double( tParametros.getValor()).doubleValue()); } } /*Insertar en la tabla el descuento de contado sobre la matricula*/ Movimiento movimiento = new Movimiento(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), ccfstrDesctoContadoID, ccfstrDesctoContado, dblDctoMatricula, "C", "S", "M", alumno.getId_ccosto()); mMovimientos.put(alumno.getMatricula() + alumno.getCarga_id() + alumno.getBloque() + ccfstrDesctoContadoID + "M", movimiento); movimiento = null; /*Insertar en la tabla el descuento de contado sobre la ensenanza*/ movimiento = new Movimiento(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), ccfstrDesctoContadoID, ccfstrDesctoContado, dblDctoEnsenanza, "C", "S", "E", alumno.getId_ccosto()); mMovimientos.put(alumno.getMatricula() + alumno.getCarga_id() + alumno.getBloque() + ccfstrDesctoContadoID + "E", movimiento); movimiento = null; /*Insertar en la tabla el descuento de contado sobre la internado*/ movimiento = new Movimiento(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), ccfstrDesctoContadoID, ccfstrDesctoContado, dblDctoInternado, "C", "S", "I", alumno.getId_ccosto()); mMovimientos.put(alumno.getMatricula() + alumno.getCarga_id() + alumno.getBloque() + ccfstrDesctoContadoID + "I", movimiento); movimiento = null; } //Calcular pago minimo, que es en realidad el costo del bloque dblPagoMinimo = new Movimiento().getCostoBloque(mMovimientos); if (dblPagoMinimo.compareTo(new Double(0)) < 0) { dblPagoMinimo = new Double(dblPagoMinimo.doubleValue() * (-1)); } /*Insertar en la tabla el pago minimo*/ Movimiento movimiento = new Movimiento(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), ccfstrCuotaInscripcionID, ccfstrCuotaInscripcion, dblPagoMinimo, "D", "N", "T", alumno.getId_ccosto()); mMovimientos.put(alumno.getMatricula() + alumno.getCarga_id() + alumno.getBloque() + ccfstrDesctoContadoID, movimiento); movimiento = null; //Registro del folio del pago minimo de contado Pagare pagare = new Pagare(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), "", dblPagoMinimo, ccfpstrCuotaInscripcion); mPagares.add(pagare); } } private void getPagoMinimo() throws Exception { if (alumno.getFormaPago().equals("P")) { //Calcular el pago m?nimo Double dblTotalPagoMinimo = new Double(0); Double dblPMMatricula = new Double(0); Double dblPMEnsenanza = new Double(0); Double dblPMInternado = new Double(0); /*Obtener porcentaje minimo a pagar por concepto de matricula*/ if (mTParametros.containsKey("PMI" + alumno.getCarga_id() + "M")) { TParametros tParametros = (TParametros) mTParametros.get("PMI" + alumno.getCarga_id() + "M"); dblPMMatricula = new Double(tParametros.getValor()); } /*Obtener porcentaje minimo a pagar por concepto de ensenanza*/ if (mTParametros.containsKey("PMI" + alumno.getCarga_id() + "E")) { TParametros tParametros = (TParametros) mTParametros.get("PMI" + alumno.getCarga_id() + "E"); dblPMEnsenanza = new Double(tParametros.getValor()); } /*Obtener porcentaje minimo a pagar por concepto de internado*/ if (mTParametros.containsKey("PMI" + alumno.getCarga_id() + "I")) { TParametros tParametros = (TParametros) mTParametros.get("PMI" + alumno.getCarga_id() + "I"); dblPMInternado = new Double(tParametros.getValor()); } /*Obtener total de descuentos y becas al concepto de matricula*/ Map mTipoMov = new TreeMap(); /*Indicar los descuentos que queremos obtener*/ mTipoMov.put(ccfstrDesctoContadoID, ccfstrDesctoContadoID); mTipoMov.put(ccfstrDesctoHObreroID, ccfstrDesctoHObreroID); mTipoMov.put(ccfstrDesctoObreroID, ccfstrDesctoObreroID); mTipoMov.put(ccfstrBecasID, ccfstrBecasID); mTipoMov.put(ccfstrEnsenanzaExcentaID, ccfstrEnsenanzaExcentaID); mTipoMov.put(ccfstrDesctoInstitucionalID, ccfstrDesctoInstitucionalID); Double dMatricula = new Movimiento().getImporte(mMovimientos, mTipoMov, "M", "C"); Double dEnsenanza = new Movimiento().getImporte(mMovimientos, mTipoMov, "E", "C"); Double dInternado = new Movimiento().getImporte(mMovimientos, mTipoMov, "I", "C"); /*Obtener Pago Minimo*/ dblTotalPagoMinimo = new Double((dblPMMatricula.doubleValue() * (this.matricula.doubleValue() - dMatricula.doubleValue())) + (dblPMEnsenanza.doubleValue() * (this.ensenanza.doubleValue() - dEnsenanza.doubleValue())) + (dblPMInternado.doubleValue() * ((this.internado.doubleValue()) - dInternado.doubleValue()))); //log.info("Pago minimo " + dblPMMatricula + "*(" + this.matricula + "-" + dMatricula + ")+" // + dblPMEnsenanza + "*(" + this.ensenanza + "-" + dEnsenanza + ")+" // + dblPMInternado + "*(" + this.internado + "-" + dInternado + ")+" // + "*" + dblPMEnsenanza); /*Insertar en la tabla el pago minimo*/ Movimiento movimiento = new Movimiento(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), ccfstrCuotaInscripcionID, ccfstrCuotaInscripcion, dblTotalPagoMinimo, "D", "N", "T", alumno.getId_ccosto()); mMovimientos.put(alumno.getMatricula() + alumno.getCarga_id() + alumno.getBloque() + ccfstrCuotaInscripcionID, movimiento); movimiento = null; //Registro del folio del pago minimo de contado Pagare pagare = new Pagare(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), "", dblTotalPagoMinimo, ccfpstrCuotaInscripcion); mPagares.add(pagare); } } /*Obtener saldo por manejo de pagare*/ public void getManejoPagare() throws Exception { if (alumno.getFormaPago().equals("P")) { //Double mPagare = new Double(0); /*Si el alumno es nacional*/ if (alumno.getNacionalidad().equals("MEX")) { /*Obtener manejo de pagare a estudiantes nacionales*/ if (mTParametros.containsKey("MPN" + alumno.getCarga_id() + "Z")) { TParametros tParametros = (TParametros) mTParametros.get( "MPN" + alumno.getCarga_id() + "Z"); mPagare = new Double(tParametros.getValor()); tParametros = null; } } else if (alumno.getNacionalidad().equals("EXT")) { /*Obtener manejo de pagare a estudiantes extranjeros*/ if (mTParametros.containsKey("MPE" + alumno.getCarga_id() + "Z")) { TParametros tParametros = (TParametros) mTParametros.get( "MPE" + alumno.getCarga_id() + "Z"); mPagare = new Double(tParametros.getValor()); tParametros = null; } } /*Insertar en la tabla el manejo de pagare*/ Movimiento movimiento = new Movimiento(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), ccfstrManejoPagareID, ccfstrManejoPagare, mPagare, "D", "S", "-", alumno.getId_ccosto()); mMovimientos.put(alumno.getMatricula() + alumno.getCarga_id() + alumno.getBloque() + ccfstrManejoPagareID, movimiento); movimiento = null; } } /*Obtener pagares y calcular su importe*/ private void getPagares() throws Exception { if (alumno.getFormaPago().equals("P")) { Integer nPagares = new Integer(0); /*Obtener numero de pagares*/ if (mTParametros.containsKey("NP" + alumno.getCarga_id() + "Z")) { TParametros tParametros = (TParametros) mTParametros.get("NP" + alumno.getCarga_id() + "Z"); nPagares = new Integer(tParametros.getValor()); tParametros = null; } /*Porcentajes de pago minimo*/ Double pMMatricula = new Double(0); Double pMEnsenanza = new Double(0); Double pMInternado = new Double(0); /*Obtener porcentaje minimo a pagar por concepto de matricula*/ if (mTParametros.containsKey("PMI" + alumno.getCarga_id() + "M")) { TParametros tParametros = (TParametros) mTParametros.get("PMI" + alumno.getCarga_id() + "M"); pMMatricula = new Double(tParametros.getValor()); } /*Obtener porcentaje minimo a pagar por concepto de ensenanza*/ if (mTParametros.containsKey("PMI" + alumno.getCarga_id() + "E")) { TParametros tParametros = (TParametros) mTParametros.get("PMI" + alumno.getCarga_id() + "E"); pMEnsenanza = new Double(tParametros.getValor()); } /*Obtener porcentaje minimo a pagar por concepto de internado*/ if (mTParametros.containsKey("PMI" + alumno.getCarga_id() + "I")) { TParametros tParametros = (TParametros) mTParametros.get("PMI" + alumno.getCarga_id() + "I"); pMInternado = new Double(tParametros.getValor()); } /*Obtener total de descuentos y becas al concepto de matricula*/ Map mTipoMov = new TreeMap(); /*Indicar los descuentos que queremos obtener*/ mTipoMov.put(ccfstrDesctoContadoID, ccfstrDesctoContadoID); mTipoMov.put(ccfstrDesctoHObreroID, ccfstrDesctoHObreroID); mTipoMov.put(ccfstrDesctoObreroID, ccfstrDesctoObreroID); mTipoMov.put(ccfstrBecasID, ccfstrBecasID); mTipoMov.put(ccfstrEnsenanzaExcentaID, ccfstrEnsenanzaExcentaID); Double dMatricula = new Movimiento().getImporte(mMovimientos, mTipoMov, "M", "C"); Double dEnsenanza = new Movimiento().getImporte(mMovimientos, mTipoMov, "E", "C"); Double dInternado = new Movimiento().getImporte(mMovimientos, mTipoMov, "I", "C"); if (this.alumno.getTAlumno_id().compareTo(Constant.ccfintTInstitucional) == 0) { dEnsenanza = this.ensenanza; dInternado = this.internado; } //Calcular importe de cada concepto Double dblMatricula = Currency.getRound(new Double( ((this.matricula.doubleValue() - dMatricula.doubleValue()) * (1 - pMMatricula.doubleValue())) / nPagares.doubleValue()), new Integer(4)); Double dblEnsenanza = Currency.getRound(new Double( ((this.ensenanza.doubleValue() - dEnsenanza.doubleValue()) * (1 - pMEnsenanza.doubleValue())) / nPagares.doubleValue()), new Integer(4)); Double dblInternado = Currency.getRound(new Double( (((this.internado.doubleValue()) - dInternado.doubleValue()) * (1 - pMInternado.doubleValue())) / nPagares.doubleValue()), new Integer(4)); //Obtener manejo de pagare entre los pagares mTipoMov = new TreeMap(); mTipoMov.put(ccfstrManejoPagareID, ccfstrManejoPagareID); Double mPagare = new Double(0); if (alumno.getNacionalidad().equals("MEX")) { if (mTParametros.containsKey("MPN" + alumno.getCarga_id() + "Z")) { TParametros tParametros = (TParametros) mTParametros.get( "MPN" + alumno.getCarga_id() + "Z"); mPagare = new Double(tParametros.getValor()); } } else { if (mTParametros.containsKey("MPE" + alumno.getCarga_id() + "Z")) { TParametros tParametros = (TParametros) mTParametros.get( "MPE" + alumno.getCarga_id() + "Z"); mPagare = new Double(tParametros.getValor()); } } mPagare = Currency.getRound(new Double( mPagare.doubleValue() / nPagares.doubleValue()), new Integer(4)); //Calcular importe de cada pagare Double iPagare = Currency.getRound(new Double(dblMatricula.doubleValue() + dblEnsenanza.doubleValue() + dblInternado.doubleValue() + mPagare.doubleValue()), new Integer(2)); //log.info("Pagare " + dblMatricula + "+" + dblEnsenanza + "+" + dblInternado + "+" + mPagare); /*Obtener pagares*/ for (Integer temp = new Integer(1); temp.compareTo(nPagares) <= 0; temp = new Integer(temp.intValue() + 1)) { if (mTParametros.containsKey("PGR" + temp + alumno.getCarga_id() + "Z")) { TParametros tParametros = (TParametros) mTParametros.get( "PGR" + temp + alumno.getCarga_id() + "Z"); Locale local = new Locale("es", "MX", "Traditional_WIN"); SimpleDateFormat sdFormat = new SimpleDateFormat("dd-MMM-yyyy", local); SimpleDateFormat sdFormat2 = new SimpleDateFormat("dd-MM-yyyy", local); /*Validar la fecha que devuelve*/ try { sdFormat2.parse(tParametros.getValor()); } catch (Exception e) { throw new UMException("La fecha " + tParametros.getValor() + " del pagare " + temp + " es invalida."); } /*Inserta pagare*/ Pagare pagare = new Pagare(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), tParametros.getValor(), iPagare, ccfpstrPagare); mPagares.add(pagare); /** * TODO 27-Enero-2006 Prof. Collins y CP Raul Randeles solicitaron que se validara si * el alumno modifico su carga despues de haber solicitado un convenio; de ser asi * se borrara el convenio actual, para realizar un nuevo convenio. * Para detectar dicho cambio, se comparara el total de ensenanza grabado en el convenio * contra el actual del ccobro. * Inserta importe totalConvenios * */ // if (mConvenios.containsKey(alumno.getMatricula() + alumno.getCarga_id() + alumno.getBloque())) { // if (totalConvenio.compareTo(new Double(0)) > 0) { // if (!isConvenio.booleanValue()) { // /** // * TODO 16/Ago/2006 El C.P. Raul Randeles y C.P. Salatiel, solicitaron que el 35% // * del convenio se descuente de la cuota de inscripcion, y el resto se divida en // * pagares // */ // pagare = new Pagare(alumno.getMatricula(), // alumno.getCarga_id(), alumno.getBloque(), // tParametros.getValor(), // new Double((totalConvenio.doubleValue() * (1 - ccfPctConvenio.doubleValue())) / nPagares.doubleValue()), "C"); // isConvenio = new Boolean(true); // mPagares.add(pagare); // } // } // } try { /** * TODO * 04/Ago/2009 El C.P. Raul Randeles y el C.P. Joel Sebastian, solicitaron que el 20% * de la beca adicional se descuente de la cuota de inscripcion, y el resto se divida en * pagares. * * 18/Ene/2011 El CP Raul Randeles solicito que la beca adicional no afecte a la cuota de inscripcion. * Por lo tanto, a la constante de pctBecaAdicional se le asigno 0 * */ pagare = new Pagare(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), tParametros.getValor(), new Double((this.getImporteBecaAdicional().doubleValue() * (1 - ccfPctBecaAdicional.doubleValue())) / nPagares.doubleValue()), ccfpstrBecaAdicional); mPagares.add(pagare); /** *** * 26-Enero-2011 - El CP Joel Sebastian solicito que las otras becas no descuenten diezmo * * Ademas, acordaron que el total de la beca basica sea descontada de los pagares. * Para todas las otras becas no se descuenta el diezmo */ BigDecimal importeBeca = BigDecimal.ZERO; try{ log.info("CCobro - ImporteBecaBasica {}",this.getImporteBecaBasica()); importeBeca = this.getImporteBecaBasica(); log.info("CCobro - ImporteExcedente {}",this.getImporteExcedente()); importeBeca = importeBeca.add(this.getImporteExcedente()); log.info("CCobro - ImporteBecaTotal {}",importeBeca); // if (!(beca.getContrato().getPlaza().isTipoOtraBeca(TipoOtraBecaEnum.PLAN_PROMOCIONAL_EDUCACION) // || beca.getContrato().getPlaza().isTipoOtraBeca(TipoOtraBecaEnum.BECAS_MUNICIPALES) // || beca.getContrato().getPlaza().isTipoOtraBeca(TipoOtraBecaEnum.BECAS_ESPECIALES_VRF) // || beca.getContrato().getPlaza().isTipoOtraBeca(TipoOtraBecaEnum.BECAS_EDUCATIVAS_HOSPITAL) // || beca.getContrato().getPlaza().isTipoOtraBeca(TipoOtraBecaEnum.BECA_RECTORIA) // || beca.getContrato().getPlaza().isTipoOtraBeca(TipoOtraBecaEnum.COMEDOR) // || beca.getContrato().getPlaza().isTipoOtraBeca(TipoOtraBecaEnum.BECAS_ESPECIALES) // || beca.getContrato().getPlaza().isTipoOtraBeca(TipoOtraBecaEnum.PLANES_ESPECIALES_UNIONES))) { // //importeBeca = this.getImporteBecaBasica().subtract(this.getImporteBecaBasica().movePointLeft(1)); // importeBeca = this.beca.getBecaBasicaNeto().add(this.getImporteExcedente()); // log.info("CCobro - ImporteBecaNeto {}",importeBeca); // } }catch(Exception e){ System.out.print("Error al evaluar si descontar diezmo o no "); e.printStackTrace(); // } //log.info(importeBeca+", "+importeBeca.doubleValue() / nPagares.doubleValue()); pagare = new Pagare(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), tParametros.getValor(), new Double(importeBeca.doubleValue() / nPagares.doubleValue()), ccfpstrBecaBasica); mPagares.add(pagare); }catch(Exception ex){ ex.printStackTrace(); //El alumno no tiene beca... } } } } } /*Calcula el cargo por matricula extemporanea*/ public void getMatriculaExtemporanea() throws Exception { //Calcular matricula extemporanea //MEB - Es lo que se cobra el primer dia //MED - Es lo que se cobra por cada dia que pasa //DIA - Si dia es (uno) indica que es dia habil // Si dia es (cero) indica que es dia inhabil //NDIAS - Numero de dias que hay de diferencia entre la fecha de hoy // y la fecha de inicio de cobro de matricula extemporanea //FME - Fecha de inicio de cobro de matricula extemporanea Double dblTMExtemporanea = new Double(0); PreparedStatement pstmt = null; ResultSet rset = null; try { if ((conn == null) || conn.isClosed()) { conn = new Conexion().getConexionMateo(new Boolean(false)); } if ((conn_noe == null) || conn_noe.isClosed()) { conn_noe = new Conexion().getConexionNoe(new Boolean(false)); } String COMANDO = " SELECT TO_NUMBER(P2.VALOR, '99999') AS MEB, "; COMANDO += " TO_NUMBER(P1.VALOR, '99999') AS MED, "; COMANDO += " TO_DATE(SYSDATE, 'DD/MM/YY') - TO_DATE(P3.VALOR, 'DD/MM/YY') AS NDIAS "; COMANDO += " FROM noe.FES_PARAMGRALDET P1, noe.FES_PARAMGRALDET P2, noe.FES_PARAMGRALDET P3 "; COMANDO += " WHERE P1.CLAVE = 'SMED' "; COMANDO += " AND P1.CONCEPTO = 'Z' "; COMANDO = COMANDO + " AND P1.CARGA_ID = ? "; COMANDO += " AND P2.CLAVE = 'SMEB' "; COMANDO += " AND P2.CONCEPTO = 'Z' "; COMANDO = COMANDO + " AND P2.CARGA_ID = ? "; COMANDO += " AND P3.CLAVE = 'FME' "; COMANDO += " AND P3.CONCEPTO = 'Z' "; COMANDO = COMANDO + " AND P3.CARGA_ID = ? "; pstmt = conn_noe.prepareStatement(COMANDO); pstmt.setString(1, alumno.getCarga_id()); pstmt.setString(2, alumno.getCarga_id()); pstmt.setString(3, alumno.getCarga_id()); rset = pstmt.executeQuery(); if (rset.next()) { int intConta = 0; //Lo utilizamos para controlar el ciclo de dias int intNDias = rset.getInt("NDias"); Double dblMEBase = new Double(rset.getDouble("MEB")); Double dblMEDia = new Double(rset.getDouble("MED")); //Si la cantidad de dias es mayor que cero indica que ya se debe comenzar a cobrar //matricula extemporanea if (intNDias >= 0) { dblTMExtemporanea = dblMEBase; //Sumamos un dia, que seria el primer dia en que se cobra matricual extemporanea intConta = 1; PreparedStatement pstmt2 = null; ResultSet rset2 = null; while (intConta <= intNDias) { //Si el dia actual comienza con S, indica que es Sunday o Saturday, dias inhabiles COMANDO = " SELECT CASE SUBSTR(TO_CHAR(SYSDATE-?, 'DY'),0,1) WHEN 'S' THEN 0 ELSE 1 END AS DIA "; COMANDO += " FROM noe.FES_PARAMGRALDET "; COMANDO += " WHERE CLAVE = 'FME' "; COMANDO += " AND CONCEPTO = 'Z' "; COMANDO = COMANDO + " AND CARGA_ID = ? "; pstmt2 = conn_noe.prepareStatement(COMANDO); pstmt2.setInt(1, intConta); pstmt2.setString(2, alumno.getCarga_id()); rset2 = pstmt2.executeQuery(); if (rset2.next()) { if (rset2.getInt("Dia") == 1) { dblTMExtemporanea = new Double(dblTMExtemporanea.doubleValue() + dblMEDia.doubleValue()); } } intConta++; pstmt2.close(); rset2.close(); } } } pstmt.close(); rset.close(); if (dblTMExtemporanea.compareTo(new Double(0)) != 0) { /*Insertar movimiento de matricula extemporanea*/ Movimiento movimiento = new Movimiento(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), ccfstrMExtemporaneaID, ccfstrMExtemporanea, dblTMExtemporanea, "D", "S", "T", alumno.getId_ccosto()); mMovimientos.put(alumno.getMatricula() + alumno.getCarga_id() + alumno.getBloque() + ccfstrMExtemporaneaID, movimiento); movimiento = null; } } catch (Exception e) { throw new UMException( "Error al obtener el importe de matricula extemporanea del alumno " + alumno.getMatricula() + " " + e); } finally { if (pstmt != null) { pstmt.close(); pstmt = null; } if (rset != null) { rset.close(); rset = null; } if (!conn.isClosed()) { conn.close(); conn = null; } if (!conn_noe.isClosed()) { conn_noe.close(); conn_noe = null; } } } /*Si la ejecucion del programa ha llegado hasta este punto, indica que no ha habido errores*/ /*por lo que se procede a guardar los datos en la base de datos de las colecciones */ /*movimientos, pagares, materias, comedor y de la clase alumno*/ /*Para ello tenemos que prender una conexion a la base de datos con transaccion*/ private void grabaDatos(Boolean inscrito) throws Exception { PreparedStatement pstmt = null; ResultSet rset = null; try { log.info("Datasource definido "); log.info("{}",ds); conn = ds.getConnection(); if ((conn == null) || conn.isClosed()) { throw new UMException("La conexion esta invalida"); } conn.setAutoCommit(false); /*Limpiar datos de tablas de calculo de cobro*/ /*Es necesario limpiar primero las tablas de movimientos, pagares y materias*/ /*Y finalizar con la de ccobro*/ Movimiento.limpiaTabla(conn, alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque()); Pagare.limpiaTabla(conn, alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque()); Materia.limpiaTabla(conn, alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque()); Alumno.limpiaTabla(conn, alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque()); //No se puede limpiar la tabla de comedor ya que se borrarian las modificaciones de las comidas que //FEST haga al alumno AutorizaComida.limpiaTabla(conn, alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque()); //Borra las operaciones de caja registradas de este alumno OperacionCajaCC.limpiaTabla(ds, alumno.getMatricula(), TipoOperacionCaja.CALCULO_COBRO); //Borrar informacion AFE Contrato.limpiaTabla(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), conn); //alumno.borraStatus(conn_enoc); /*Grabar datos de calculo de cobro*/ log.info("Graba Tabla Alumno"); alumno.grabaTabla(conn, inscrito, online); log.info("Graba Tabla Movimiento"); Movimiento.grabaTabla(conn, mMovimientos, alumno); /*Al insertar las materias del calculo de cobro, tambien se modificara el status de las materias */ /*en el calculo de cobro*/ log.info("Graba Tabla Materia"); Materia.grabaTabla(conn, mMaterias, alumno, inscrito); log.info("Graba Tabla Pagare"); Pagare.grabaTabla(conn, mPagares, alumno); log.info("Graba Tabla AutorizacionComida"); AutorizaComida.grabaTabla(conn, (List) mComedor.get(alumno.getMatricula()), alumno.getMatricula(), alumno.getCarga_id()); //Insertar operacion de caja OperacionCajaCC.grabaTabla(ds, alumno.getMatricula(), TipoOperacionCaja.CALCULO_COBRO, Movimiento.getCuotaInscripcion(conn, alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque()), alumno.getId(), user); //Insertar contrato log.info("Evalua si el alumno tiene beca"); // if (beca != null && beca.hasContrato()) { // //Evaluar si la beca adicional esta en base a porcentaje, entonces calcular importe // if(beca.getContrato().getPorcentaje()){ // beca.getContrato().setTotalBecaAdic((beca.getContrato().getImporte().movePointLeft(2)).multiply(new BigDecimal(this.ensenanza.toString()))); // } // else{ // beca.getContrato().setTotalBecaAdic(beca.getContrato().getImporte()); // } // log.info("Grabando contrato"); // Contrato.grabaTabla(this.alumno.getMatricula(), this.alumno.getCarga_id(), this.alumno.getBloque(), getBeca(), conn); // } /*Si es el calculo de cobro definitivo, validar los avisos de alumnos pasivos/incobrables*/ if (inscrito.booleanValue()) { log.info("Aviso"); new Aviso().mavi_SetActivaAlumno(alumno.getMatricula(), "CCOBRO", conn); /*Desactivar prorrogas, descuentos, becas, autorizaciones y paquetes de empleados*/ log.info("Prorrogas"); new Prorroga().desactivarProrrogas(alumno.getMatricula(), conn); log.info("Descuentos"); new DAlumno().desactivarDescuentos(alumno.getMatricula(), conn); log.info("Autorizacion"); new Empleado().desactivaAutorizacion(alumno.getMatricula(), conn); new PaqueteAlumno().desactivaPaquete(alumno.getMatricula(), conn); log.info("Hijo de empleado"); new Beca().desactivaBeca(alumno.getMatricula(), conn); // log.info("Beca Basica - Contrato"); // if (beca != null && beca.hasContrato()) { // Convenio.desactivaContrato(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), conn); // log.info("Beca Adicional"); // Beca.desactivaBecaAdicional(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), conn); // if (beca.isColportor()) { // log.info("Documentos de Colportor"); // Colportor.desactivaDocumentosColportor(alumno.getMatricula(), alumno.getCarga_id(), alumno.getBloque(), conn); // } // } AutorizaComida.setInscrito(conn, (List) mComedor.get(alumno.getMatricula()), alumno.getMatricula(), alumno.getCarga_id(), this.fechaInicial, this.fechaFinal); /** * 04/06/2011 - El Sr. Randeles indico que ya no se utiliza el cobro de clima */ // if (mCobrosClima.containsKey(this.alumno.getMatricula())) { // CobroClima cClima = new CobroClima(); // cClima.changeStatus(conn, this.alumno.getMatricula()); // } //modificar status de hijo de obrero alumno.modificaHOStatus(conn); InstitucionHObrero.savePorcentajeInstituciones(this.alumno.getMatricula(), conn); /*Insertar registro de alumno inscrito*/ log.info("Status"); alumno.modificaStatus(conn); } conn.commit(); } catch (Exception e) { conn.rollback(); e.printStackTrace(); throw new UMException( "Error al grabar los datos del calculo de cobro del alumno " + alumno.getMatricula() + " " + e); } finally { if (!conn.isClosed()) { conn.close(); conn = null; } } } public void getDatosGenerales(String matricula) throws Exception { //Obtener carga y bloque Alumno alumno = new Alumno(); alumno.setMatricula(matricula); alumno.getCargaIDBloque(); log.info("Se obtuvo la carga y bloque del alumno"); String carga_id = alumno.getCarga_id(); Integer bloque = alumno.getBloque(); //log.info(carga_id + ", " + bloque); alumno = null; //Obtener datos del alumno log.info("{}",this); log.info("{}",this.alumno); if (this.alumno == null) { this.alumno = new Alumno(); } this.alumno.getAlumnoCC(matricula, carga_id, bloque); log.info("Obtuvo el alumno del CC"); Alumno tmp = new Alumno(); tmp.setMatricula(this.alumno.getMatricula()); tmp.getAlumno(); this.alumno.setHOStatus(tmp.getHOStatus()); //log.info(tmp.getMatricula() + ", " + tmp.getHOStatus()); tmp = null; } public void getMovimientos(String matricula, String carga_id, Integer bloque) throws Exception { //Obtener movimientos Movimiento movimiento = new Movimiento(); //Movimientos del costo del bloque this.mMovimientosCB = movimiento.getMovimientosCC(matricula, carga_id, bloque, "CB"); //Movimientos de la cuota de inscripcion this.mMovimientosCI = movimiento.getMovimientosCC(matricula, carga_id, bloque, "CI"); //Otros movimientos this.mMovimientosOT = movimiento.getMovimientosCC(matricula, carga_id, bloque, "OT"); //Todos los movimientos this.mMovimientos = movimiento.getMovimientosCC(matricula, carga_id, bloque, "TODOS"); } public void getMaterias(String matricula, String carga_id, Integer bloque) throws Exception { //Obtener materias Materia materia = new Materia(); this.mMaterias = materia.getMateriasCC(matricula, carga_id, bloque); } public void getPagares(String matricula, String carga_id, Integer bloque) throws Exception { //Obtener pagares Pagare pagare = new Pagare(); this.mPagares = pagare.getPagaresCC(matricula, carga_id, bloque); } public void getBecaBasicaAdicional(String matricula, String carga_id, Integer bloque) throws Exception { this.contrato = Contrato.getContratoInscrito(matricula, carga_id, bloque, alumno, this.ds.getConnection()); } public void getDatosGenerales(String matricula, String carga_id, Integer bloque) throws Exception { //Obtener datos del alumno this.alumno.getAlumnoCC(matricula, carga_id, bloque); Alumno tmp = new Alumno(); tmp.setMatricula(this.alumno.getMatricula()); tmp.getAlumno(); this.alumno.setHOStatus(tmp.getHOStatus()); //log.info(tmp.getMatricula() + ", " + tmp.getHOStatus()); //Obtener movimientos Movimiento movimiento = new Movimiento(); //Movimientos del costo del bloque this.mMovimientosCB = movimiento.getMovimientosCC(matricula, carga_id, bloque, "CB"); //Movimientos de la cuota de inscripcion this.mMovimientosCI = movimiento.getMovimientosCC(matricula, carga_id, bloque, "CI"); //Otros movimientos this.mMovimientosOT = movimiento.getMovimientosCC(matricula, carga_id, bloque, "OT"); //Todos los movimientos this.mMovimientos = movimiento.getMovimientosCC(matricula, carga_id, bloque, "TODOS"); //Obtener materias Materia materia = new Materia(); this.mMaterias = materia.getMateriasCC(matricula, carga_id, bloque); //Obtener pagares Pagare pagare = new Pagare(); this.mPagares = pagare.getPagaresCC(matricula, carga_id, bloque); } /** * @return Returns the mMaterias. */ public Map getMMaterias() { return mMaterias; } /** * @return Returns the mMovimientosCB. */ public Map getMMovimientosCB() { return mMovimientosCB; } /** * @return Returns the mMovimientosCI. */ public Map getMMovimientosCI() { return mMovimientosCI; } /** * @return Returns the mMovimientosOT. */ public Map getMMovimientosOT() { return mMovimientosOT; } /** * @return Returns the mPagares. */ public Vector getMPagares() { return mPagares; } /** * @return Returns the alumno. */ public Alumno getAlumno() { return alumno; } /** * @return Returns the mMovimientos. */ public Map getMMovimientos() { return mMovimientos; } public Map getCCobrosNoInscritos(Carga carga, Map mConCCobros) throws Exception { PreparedStatement pstmt = null; ResultSet rset = null; try { if ((conn == null) || conn.isClosed()) { conn = new Conexion().getConexionMateo(new Boolean(false)); } String COMANDO = "SELECT MATRICULA "; COMANDO += "FROM mateo.FES_CCOBRO "; COMANDO += "WHERE CARGA_ID = ? "; pstmt = conn.prepareStatement(COMANDO); pstmt.setString(1, carga.getCargaId()); rset = pstmt.executeQuery(); while (rset.next()) { mConCCobros.put(rset.getString("Matricula"), null); } pstmt.close(); rset.close(); } catch (Exception e) { throw new UMException( "Error al obtener los alumnos no inscritos en la carga " + carga.getCargaId() + " " + e); } finally { if (pstmt != null) { pstmt.close(); pstmt = null; } if (rset != null) { rset.close(); rset = null; } if (!conn.isClosed()) { conn.close(); conn = null; } } return mConCCobros; } public Map getCCobrosInscritos(Carga carga, Map mInscritos) throws Exception { PreparedStatement pstmt = null; ResultSet rset = null; try { if ((conn == null) || conn.isClosed()) { conn = new Conexion().getConexionMateo(new Boolean(false)); } String COMANDO = "SELECT MATRICULA "; COMANDO += "FROM mateo.FES_CCOBRO "; COMANDO += "WHERE CARGA_ID = ? "; COMANDO += "AND INSCRITO = 'S' "; pstmt = conn.prepareStatement(COMANDO); pstmt.setString(1, carga.getCargaId()); rset = pstmt.executeQuery(); while (rset.next()) { mInscritos.put(rset.getString("Matricula"), null); } pstmt.close(); rset.close(); } catch (Exception e) { throw new UMException( "Error al obtener los alumnos inscritos en la carga " + carga.getCargaId() + " " + e); } finally { if (pstmt != null) { pstmt.close(); pstmt = null; } if (rset != null) { rset.close(); rset = null; } if (!conn.isClosed()) { conn.close(); conn = null; } } return mInscritos; } public List getCCobrosAlumnoInscrito(String matricula) throws Exception { PreparedStatement pstmt = null; ResultSet rset = null; List inscripciones = new ArrayList(); try { if ((conn == null) || conn.isClosed()) { conn = new Conexion().getConexionMateo(new Boolean(false)); } String COMANDO = "SELECT MATRICULA, CARGA_ID, BLOQUE, NOMBRE, TO_CHAR(FECHA,'DD/MM/YYYY') FECHA, FACULTAD, CARRERA, NOMBRE_PLAN "; COMANDO += "FROM mateo.FES_CCOBRO "; COMANDO += "WHERE MATRICULA = ? "; COMANDO += "AND INSCRITO = 'S' "; pstmt = conn.prepareStatement(COMANDO); pstmt.setString(1, matricula); rset = pstmt.executeQuery(); while (rset.next()) { Alumno alumno = new Alumno(); alumno.setMatricula(rset.getString("Matricula")); alumno.setCarga_id(rset.getString("Carga_id")); alumno.setBloque(new Integer(rset.getInt("Bloque"))); alumno.setNombre(rset.getString("Nombre")); alumno.setFecha(rset.getString("Fecha")); alumno.setFacultad(rset.getString("Facultad")); alumno.setCarrera(rset.getString("Carrera")); alumno.setNombre_plan(rset.getString("Nombre_Plan")); inscripciones.add(alumno); } pstmt.close(); rset.close(); } catch (Exception e) { throw new UMException( "Error al obtener las inscripciones del alumno " + matricula + " " + e); } finally { if (pstmt != null) { pstmt.close(); pstmt = null; } if (rset != null) { rset.close(); rset = null; } if (!conn.isClosed()) { conn.close(); conn = null; } } return inscripciones; } /** * @return the contrato */ public Contrato getContrato() { return contrato; } /** * @return the importeBecaBasica */ public BigDecimal getImporteBecaBasica() { return importeBecaBasica; } /** * @return the importeBecaAdicional */ public BigDecimal getImporteBecaAdicional() { return importeBecaAdicional; } /** * @return the importeExcedente */ public BigDecimal getImporteExcedente() { return importeExcedente; } /** * @return the beca */ // public BecaAdicionalVO getBeca() { // return beca; // } /** * Regresa el importe de cuota de inscripcion * @return * @throws Exception */ public BigDecimal getCuotaInscripcion() throws Exception { this.getMovimientos(this.alumno.getMatricula(), this.alumno.getCarga_id(), this.alumno.getBloque()); return new BigDecimal(new Movimiento().getImporte(this.getMMovimientos(), "T", new Boolean(false)).toString()); } public Boolean getConvenioEntregado(){ return this.convenioEntregado; } public Boolean getTipoAlumnoInstitucional() { return this.tipoAlumnoInstitucional; } }