Ejemplo n.º 1
0
def pago():
    C = Storage()
    C.evento = db.evento(request.args(0))
    C.ano = db.ano_academico(C.evento.ano_academico_id)
    C.unidad = db.unidad_organica(C.ano.unidad_organica_id)
    C.escuela = db.escuela(C.unidad.escuela_id)
    C.persona = db.persona(request.args(1))
    C.estudiante = db.estudiante(persona_id=C.persona.id)

    if C.persona is None:
        raise HTTP(404)

    # buscar un tipo de pago que coincida en nombre con el tipo de evento
    concepto = db(
        db.tipo_pago.nombre == "MATRÍCULA E CONFIRMAÇÃO DE MATRÍCULA"
    ).select().first()
    if not concepto:
        raise HTTP(404)

    # breadcumbs
    u_link = Accion(C.unidad.abreviatura or C.unidad.nombre,
                    URL('unidad', 'index', args=[C.unidad.id]),
                    True)  # siempre dentro de esta funcion
    menu_migas.append(u_link)
    a_links = Accion(C.ano.nombre,
                     URL('unidad', 'index', args=[C.unidad.id]),
                     True)
    menu_migas.append(a_links)
    e_link = Accion(C.evento.nombre,
                    URL('index', args=[C.evento.id]),
                    True)
    menu_migas.append(e_link)
    menu_migas.append(T("Pago") + " de {}".format(concepto.nombre))

    campos = list()
    fld_cantidad = db.pago.get("cantidad")
    fld_cantidad.requires.append(
        IS_FLOAT_IN_RANGE(concepto.cantidad,
                          9999999999.99,
                          error_message=T("Debe ser mayor que {0}".format(concepto.cantidad))))
    campos.append(db.pago.get("forma_pago"))
    campos.append(fld_cantidad)
    campos.append(db.pago.get("numero_transaccion"))
    campos.append(db.pago.get("transaccion"))
    campos.append(db.pago.get("codigo_recivo"))
    campos.append(db.pago.get("fecha_recivo"))
    back = URL('index', args=[C.evento.id])
    manejo = SQLFORM.factory(*campos, submit_button=T('Guardar'))
    manejo.add_button(T("Cancel"), back)
    C.form = manejo
    C.titulo = "{} {} - {}".format(T("Pago"),
                         concepto.nombre,
                         C.persona.nombre_completo)
    if manejo.process().accepted:
        valores = manejo.vars
        valores.tipo_pago_id = concepto.id
        valores.persona_id = C.persona.id
        valores.evento_id = C.evento.id
        db.pago.insert(**db.pago._filter_fields(valores))

        # crear la matricula con los valores por defecto para nuevo ingreso
        mat_vals = Storage()
        mat_vals.estudiante_id = C.estudiante.id
        mat_vals.ano_academico_id = C.ano.id
        from agiscore.db.nivel_academico import _1RO
        nv = db.nivel_academico(nivel=_1RO, unidad_organica_id=C.unidad.id)
        mat_vals.nivel = nv.id
        mat_vals.situacion = '1'
        mat_vals.estado_uo = SIN_MATRICULAR
        cand = db.candidatura(estudiante_id=C.estudiante.id,
                              ano_academico_id=C.ano.id)
        mat_vals.regimen_id = cand.regimen_id
        a_carr = db.asignacion_carrera(candidatura_id=cand.id)
        mat_vals.carrera_id = a_carr.carrera_id
        db.matricula.insert(**db.matricula._filter_fields(mat_vals))

        session.flash = T('Pago registrado')
        redirect(back)

    return dict(C=C)
Ejemplo n.º 2
0
 est_data.pro_media = 0.0
 est_data.forma_acceso = '01'
 est_data.es_internado = False
 est_data.modalidad = '1'
 est_data.unidad_organica_id = 1
 est_data.codigo = result[37] # ver aquí si se puede calcular
 if result[37]:
     est_data.ano_ies = "20{}{}".format(est_data.codigo[4],
                                        est_data.codigo[5])
     est_data.ano_es = est_data.ano_ies
 tbl = current.db.estudiante
 estudiante_id = tbl.insert(**tbl._filter_fields(est_data))
 
 # matricula
 ma_data = Storage()
 ma_data.estudiante_id = estudiante_id
 ma_data.ano_academico_id = 1
 # obtener el nivel
 idEstudante = result[36]
 sub_q = """
 SELECT idnivel FROM espls.estudantes WHERE idEstudante = %s
 """
 c2 = dbespls.cursor()
 c2.execute(sub_q, idEstudante)
 niv = c2.fetchone()
 ma_data.nivel = niv[0] if niv[0] != 6 else 7
 c2.close()
 ma_data.situacion = '2'
 ma_data.estado_uo = '1'
 ma_data.regimen_id = 1 if result[57] in [1, 3] else 2
 if result[63] in [5, 6]: