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)
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]: