parroquia 1.1.13 → 1.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/parroquia/catecismo/actualizar_alumno.rb +181 -0
- data/lib/parroquia/catecismo/alumno.rb +179 -0
- data/lib/parroquia/catecismo/catecismo.rb +119 -0
- data/lib/parroquia/catecismo/consulta.rb +177 -0
- data/lib/parroquia/catecismo/resultado.rb +230 -0
- data/lib/parroquia/main.rb +82 -91
- data/lib/parroquia/sacramentos/actualizar_bautismo.rb +313 -0
- data/lib/parroquia/sacramentos/actualizar_certificado_prebautismal.rb +184 -0
- data/lib/parroquia/sacramentos/actualizar_comunion.rb +239 -0
- data/lib/parroquia/sacramentos/actualizar_confirmacion.rb +239 -0
- data/lib/parroquia/sacramentos/actualizar_matrimonio.rb +298 -0
- data/lib/parroquia/sacramentos/actualizar_misa.rb +170 -0
- data/lib/parroquia/sacramentos/actualizar_permiso_prebautismal.rb +200 -0
- data/lib/parroquia/sacramentos/actualizar_permiso_prematrimonial.rb +205 -0
- data/lib/parroquia/sacramentos/actualizar_supletoria.rb +313 -0
- data/lib/parroquia/sacramentos/bautizo.rb +310 -0
- data/lib/parroquia/sacramentos/certificado_prebautismal.rb +195 -0
- data/lib/parroquia/sacramentos/comunion.rb +234 -0
- data/lib/parroquia/sacramentos/confirmacion.rb +239 -0
- data/lib/parroquia/sacramentos/consultas.rb +162 -0
- data/lib/parroquia/sacramentos/matrimonio.rb +297 -0
- data/lib/parroquia/sacramentos/misa.rb +171 -0
- data/lib/parroquia/sacramentos/permiso_bautismo.rb +207 -0
- data/lib/parroquia/sacramentos/permiso_prematrimonial.rb +219 -0
- data/lib/parroquia/sacramentos/resultados.rb +931 -0
- data/lib/parroquia/sacramentos/sacramentos.rb +182 -0
- data/lib/parroquia/sacramentos/supletoria.rb +309 -0
- metadata +30 -11
- data/lib/parroquia/actualizar_bautismo.rb +0 -245
- data/lib/parroquia/actualizar_confirmacion.rb +0 -194
- data/lib/parroquia/actualizar_matrimonio.rb +0 -235
- data/lib/parroquia/bautizo.rb +0 -239
- data/lib/parroquia/confirmacion.rb +0 -191
- data/lib/parroquia/consultas.rb +0 -144
- data/lib/parroquia/matrimonio.rb +0 -232
- data/lib/parroquia/resultados.rb +0 -414
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27ba9bf8f3bd27b83aeec98e391337cc91bb586972c66b6c693b520a0108a3d9
|
4
|
+
data.tar.gz: 4c1c50dfdbaf6ff3a70d21b340902c15661143ce7bc8c1f5905f15ef4b2476a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f45b4d8942ccb68aa2f842382b57b3723d43d0df393dbd283404414fdce4da6754a21e1bda1337402e5db8afe27750905972ba49f0b7d143eebb8d6104a8311
|
7
|
+
data.tar.gz: dec141c1d166a09463bc373332b62f580a412b22e6d3e3f7edf9862761d8c4e00238c66dbe964e31f0cc56a8f3c2b96274678f931d6934b5955656622a112e3d
|
@@ -0,0 +1,181 @@
|
|
1
|
+
require 'pg'
|
2
|
+
require 'fox16'
|
3
|
+
include Fox
|
4
|
+
|
5
|
+
class ActualizarAlumno < FXMainWindow
|
6
|
+
def initialize(app, registro)
|
7
|
+
@registro = registro
|
8
|
+
super(app, 'Parroquia San Judas Tadeo', width: 1050, height: 450)
|
9
|
+
self.backColor = FXRGB(3, 187, 133)
|
10
|
+
# Title
|
11
|
+
@lbltitle = FXLabel.new(self, 'Bienvenido a la Parroquia San Judas Tadeo',
|
12
|
+
opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 1050, height: 20, x: 0, y: 20)
|
13
|
+
@lbltitle.font = FXFont.new(app, 'Geneva', 16, FONTWEIGHT_BOLD)
|
14
|
+
@lbltitle.backColor = FXRGB(3, 187, 133)
|
15
|
+
# Subtitle
|
16
|
+
@lblsubtitle = FXLabel.new(self, 'ARQUIDIOSESIS DE QUITO - SERVICIO PARROQUIAL DE SAN JUDAS TADEO',
|
17
|
+
opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 1050, height: 20, x: 0, y: 40)
|
18
|
+
@lblsubtitle.font = FXFont.new(app, 'Geneva', 10, FONTWEIGHT_BOLD)
|
19
|
+
@lblsubtitle.backColor = FXRGB(3, 187, 133)
|
20
|
+
# Date
|
21
|
+
@date = Time.now.strftime('%d/%m/%Y')
|
22
|
+
@lbldate = FXLabel.new(self, "anio_lectivo: #{cambiar_formato_anio_lectivo(@date)}", opts: LAYOUT_EXPLICIT | JUSTIFY_RIGHT,
|
23
|
+
width: 1050, height: 20, x: 0, y: 60, padRight: 20)
|
24
|
+
@lbldate.font = FXFont.new(app, 'Geneva', 12, FONTWEIGHT_BOLD)
|
25
|
+
@lbldate.backColor = FXRGB(3, 187, 133)
|
26
|
+
|
27
|
+
# section datos
|
28
|
+
@lbl_anio_lectivo = FXLabel.new(self, 'Año lectivo', opts: LAYOUT_EXPLICIT, width: 250,
|
29
|
+
height: 20, x: 10, y: 150)
|
30
|
+
@lbl_anio_lectivo.backColor = FXRGB(3, 187, 133)
|
31
|
+
@input_anio_lectivo = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 340,
|
32
|
+
y: 150)
|
33
|
+
@input_anio_lectivo.text = @registro[12]
|
34
|
+
@lbl_nivel = FXLabel.new(self, 'Nivel: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20,
|
35
|
+
x: 680, y: 150)
|
36
|
+
@lbl_nivel.backColor = FXRGB(3, 187, 133)
|
37
|
+
@input_nivel = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 850,
|
38
|
+
y: 150)
|
39
|
+
@input_nivel.text = @registro[10]
|
40
|
+
@lbl_sector = FXLabel.new(self, 'Sector: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 340,
|
41
|
+
y: 180)
|
42
|
+
@lbl_sector.backColor = FXRGB(3, 187, 133)
|
43
|
+
@input_sector = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 510,
|
44
|
+
y: 180)
|
45
|
+
@input_sector.text = @registro[11]
|
46
|
+
@lbl_name = FXLabel.new(self, 'Nombres: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 10,
|
47
|
+
y: 240)
|
48
|
+
@lbl_name.backColor = FXRGB(3, 187, 133)
|
49
|
+
@input_name = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
|
50
|
+
y: 240)
|
51
|
+
@input_name.text = @registro[1]
|
52
|
+
@lbl_apellidos = FXLabel.new(self, 'Apellidos: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 10,
|
53
|
+
y: 270)
|
54
|
+
@lbl_apellidos.backColor = FXRGB(3, 187, 133)
|
55
|
+
@input_apellidos = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
|
56
|
+
y: 270)
|
57
|
+
@input_apellidos.text = @registro[2]
|
58
|
+
@lbl_lugar_nacimiento = FXLabel.new(self, 'Lugar de nacimiento: ', opts: LAYOUT_EXPLICIT, width: 150,
|
59
|
+
height: 20, x: 10, y: 300)
|
60
|
+
@lbl_lugar_nacimiento.backColor = FXRGB(3, 187, 133)
|
61
|
+
@input_lugar_nacimiento = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20,
|
62
|
+
x: 170, y: 300)
|
63
|
+
@input_lugar_nacimiento.text = @registro[3]
|
64
|
+
@lbl_fecha_nacimiento = FXLabel.new(self, 'Fecha de nacimiento (AAAA/MM/DD): ', opts: LAYOUT_EXPLICIT,
|
65
|
+
width: 250, height: 20, x: 340, y: 300)
|
66
|
+
@lbl_fecha_nacimiento.backColor = FXRGB(3, 187, 133)
|
67
|
+
@input_fecha_nacimiento = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20,
|
68
|
+
x: 590, y: 300)
|
69
|
+
@input_fecha_nacimiento.text = @registro[4]
|
70
|
+
@lbl_cedula = FXLabel.new(self, 'Cédula: ', opts: LAYOUT_EXPLICIT, width: 80, height: 20, x: 750,
|
71
|
+
y: 300)
|
72
|
+
@lbl_cedula.backColor = FXRGB(3, 187, 133)
|
73
|
+
@input_cedula = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 850,
|
74
|
+
y: 300)
|
75
|
+
@input_cedula.text = @registro[5]
|
76
|
+
@lbl_nombres_catequista = FXLabel.new(self, 'Nombres Catequista: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 10,
|
77
|
+
y: 330)
|
78
|
+
@lbl_nombres_catequista.backColor = FXRGB(3, 187, 133)
|
79
|
+
@input_nombres_catequista = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
|
80
|
+
y: 330)
|
81
|
+
@input_nombres_catequista.text = @registro[7]
|
82
|
+
@lbl_apellidos_catequista = FXLabel.new(self, 'Apellidos catequista: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 10,
|
83
|
+
y: 360)
|
84
|
+
@lbl_apellidos_catequista.backColor = FXRGB(3, 187, 133)
|
85
|
+
@input_apellidos_catequista = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
|
86
|
+
y: 360)
|
87
|
+
@input_apellidos_catequista.text = @registro[8]
|
88
|
+
# create buttons
|
89
|
+
@btnupdate = FXButton.new(self, 'Actualizar', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 100, height: 30,
|
90
|
+
x: 790, y: 400)
|
91
|
+
@btncancel = FXButton.new(self, 'Cancelar', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 100, height: 30,
|
92
|
+
x: 900, y: 400)
|
93
|
+
|
94
|
+
# connect buttons
|
95
|
+
@btnupdate.connect(SEL_COMMAND) do
|
96
|
+
anio_lectivo = @input_anio_lectivo.text.empty? ? nil : @input_anio_lectivo.text
|
97
|
+
nivel = @input_nivel.text.empty? ? nil : @input_nivel.text
|
98
|
+
sector = @input_sector.text.empty? ? nil : @input_sector.text
|
99
|
+
name = @input_name.text.empty? ? nil : @input_name.text
|
100
|
+
apellidos = @input_apellidos.text.empty? ? nil : @input_apellidos.text
|
101
|
+
lugar_nacimiento = @input_lugar_nacimiento.text.empty? ? nil : @input_lugar_nacimiento.text
|
102
|
+
fecha_nacimiento = @input_fecha_nacimiento.text.empty? ? nil : @input_fecha_nacimiento.text
|
103
|
+
cedula = @input_cedula.text.empty? ? nil : @input_cedula.text
|
104
|
+
nombres_catequista = @input_nombres_catequista.text.empty? ? nil : @input_nombres_catequista.text
|
105
|
+
apellidos_catequista = @input_apellidos_catequista.text.empty? ? nil : @input_apellidos_catequista.text
|
106
|
+
|
107
|
+
# tables
|
108
|
+
# tabla catequistas (id, nombres, apellidos, fecha de nacimiento, lugar de nacimiento, cedula)
|
109
|
+
# tabla alumnos (id, nombres, apellidos, lugar_nacimiento, fecha_nacimiento, cedula, fk_catequistas, fk_niveles)
|
110
|
+
# tabla niveles (id, nivel, sector, anio_lectivo)
|
111
|
+
# Iniciar una transacción
|
112
|
+
$conn.transaction do
|
113
|
+
# Actualizar la tabla catequistas
|
114
|
+
$conn.exec('UPDATE catequistas SET nombres = $1, apellidos = $2 WHERE id = $3',
|
115
|
+
[nombres_catequista, apellidos_catequista, registro[6]])
|
116
|
+
|
117
|
+
# Actualizar la tabla niveles
|
118
|
+
$conn.exec(
|
119
|
+
'UPDATE niveles SET anio_lectivo = $1, nivel = $2, sector = $3 WHERE id = $4', [
|
120
|
+
anio_lectivo, nivel, sector, registro[9]
|
121
|
+
]
|
122
|
+
)
|
123
|
+
|
124
|
+
# Actualizar la tabla alumnos
|
125
|
+
$conn.exec('UPDATE alumnos SET nombres = $1, apellidos = $2, lugar_nacimiento = $3, fecha_nacimiento = $4, cedula = $5 WHERE id = $6',
|
126
|
+
[name, apellidos, lugar_nacimiento, fecha_nacimiento, cedula, registro[0]])
|
127
|
+
|
128
|
+
# ¿Desea guardar los cambios? SI: commit msg: datos actualizados correctamente, NO: rollback, close
|
129
|
+
if FXMessageBox.question(self, MBOX_YES_NO, 'Pregunta', '¿Desea guardar los cambios?') == MBOX_CLICKED_YES
|
130
|
+
# Confirmar la transacción
|
131
|
+
$conn.exec('COMMIT')
|
132
|
+
FXMessageBox.information(self, MBOX_OK, 'Información', 'Datos actualizados correctamente')
|
133
|
+
else
|
134
|
+
$conn.exec('ROLLBACK')
|
135
|
+
end
|
136
|
+
close
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
@btncancel.connect(SEL_COMMAND) do
|
141
|
+
FXMessageBox.warning(self, MBOX_OK, 'Advertencia', 'No se guardarán los cambios')
|
142
|
+
close
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
# Nombre del mes
|
147
|
+
def nombre_mes(mes)
|
148
|
+
meses = {
|
149
|
+
'01' => 'enero',
|
150
|
+
'02' => 'febrero',
|
151
|
+
'03' => 'marzo',
|
152
|
+
'04' => 'abril',
|
153
|
+
'05' => 'mayo',
|
154
|
+
'06' => 'junio',
|
155
|
+
'07' => 'julio',
|
156
|
+
'08' => 'agosto',
|
157
|
+
'09' => 'septiembre',
|
158
|
+
'10' => 'octubre',
|
159
|
+
'11' => 'noviembre',
|
160
|
+
'12' => 'diciembre'
|
161
|
+
}
|
162
|
+
meses[mes]
|
163
|
+
end
|
164
|
+
|
165
|
+
# Cambiar el formato de la anio_lectivo de YYYY-MM-DD a DD de nombre_mes de YYYY
|
166
|
+
def cambiar_formato_anio_lectivo(anio_lectivo)
|
167
|
+
# split "-" or "/"
|
168
|
+
anio_lectivo = anio_lectivo.split(%r{-|/})
|
169
|
+
# si el formato de anio_lectivo es YYYY-MM-DD o YYYY/MM/DD, sino si es DD-MM-YYYY o DD/MM/YYYY
|
170
|
+
if anio_lectivo[0].length == 4
|
171
|
+
"#{anio_lectivo[2]} de #{nombre_mes(anio_lectivo[1])} de #{anio_lectivo[0]}"
|
172
|
+
else
|
173
|
+
"#{anio_lectivo[0]} de #{nombre_mes(anio_lectivo[1])} de #{anio_lectivo[2]}"
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
def create
|
178
|
+
super
|
179
|
+
show(PLACEMENT_SCREEN)
|
180
|
+
end
|
181
|
+
end
|
@@ -0,0 +1,179 @@
|
|
1
|
+
require 'pg'
|
2
|
+
require 'fox16'
|
3
|
+
include Fox
|
4
|
+
|
5
|
+
class Alumno < FXMainWindow
|
6
|
+
def initialize(app)
|
7
|
+
@app = app
|
8
|
+
super(app, 'Parroquia San Judas Tadeo', width: 1050, height: 330)
|
9
|
+
self.backColor = FXRGB(3, 187, 133)
|
10
|
+
# Title
|
11
|
+
@lbltitle = FXLabel.new(self, 'Bienvenido a la Parroquia San Judas Tadeo',
|
12
|
+
opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 1050, height: 20, x: 0, y: 20)
|
13
|
+
@lbltitle.font = FXFont.new(app, 'Geneva', 16, FONTWEIGHT_BOLD)
|
14
|
+
@lbltitle.backColor = FXRGB(3, 187, 133)
|
15
|
+
# Subtitle
|
16
|
+
@lblsubtitle = FXLabel.new(self, 'ARQUIDIOSESIS DE QUITO - SERVICIO PARROQUIAL DE SAN JUDAS TADEO',
|
17
|
+
opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 1050, height: 20, x: 0, y: 40)
|
18
|
+
@lblsubtitle.font = FXFont.new(app, 'Geneva', 10, FONTWEIGHT_BOLD)
|
19
|
+
@lblsubtitle.backColor = FXRGB(3, 187, 133)
|
20
|
+
# Date
|
21
|
+
@date = Time.now.strftime('%d/%m/%Y')
|
22
|
+
@lbldate = FXLabel.new(self, "Fecha: #{cambiar_formato_fecha(@date)}", opts: LAYOUT_EXPLICIT | JUSTIFY_RIGHT,
|
23
|
+
width: 1050, height: 20, x: 0, y: 60, padRight: 20)
|
24
|
+
@lbldate.font = FXFont.new(app, 'Geneva', 12, FONTWEIGHT_BOLD)
|
25
|
+
@lbldate.backColor = FXRGB(3, 187, 133)
|
26
|
+
|
27
|
+
# section datos
|
28
|
+
@lbl_anio_lectivo = FXLabel.new(self, 'Año lectivo: ', opts: LAYOUT_EXPLICIT, width: 150,
|
29
|
+
height: 20, x: 10, y: 150)
|
30
|
+
@lbl_anio_lectivo.backColor = FXRGB(3, 187, 133)
|
31
|
+
@input_anio_lectivo = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
|
32
|
+
y: 150)
|
33
|
+
@lbl_nivel = FXLabel.new(self, 'Nivel: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20,
|
34
|
+
x: 330, y: 150)
|
35
|
+
@lbl_nivel.backColor = FXRGB(3, 187, 133)
|
36
|
+
@input_nivel = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 490,
|
37
|
+
y: 150)
|
38
|
+
@lbl_sector = FXLabel.new(self, 'Sector: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 650,
|
39
|
+
y: 150)
|
40
|
+
@lbl_sector.backColor = FXRGB(3, 187, 133)
|
41
|
+
@input_sector = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 810,
|
42
|
+
y: 150)
|
43
|
+
@lbl_name = FXLabel.new(self, 'Nombres: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 10,
|
44
|
+
y: 180)
|
45
|
+
@lbl_name.backColor = FXRGB(3, 187, 133)
|
46
|
+
@input_name = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
|
47
|
+
y: 180)
|
48
|
+
@lbl_apellidos = FXLabel.new(self, 'Apellidos: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 330,
|
49
|
+
y: 180)
|
50
|
+
@lbl_apellidos.backColor = FXRGB(3, 187, 133)
|
51
|
+
@input_apellidos = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 490,
|
52
|
+
y: 180)
|
53
|
+
@lbl_lugar_nacimiento = FXLabel.new(self, 'Lugar de nacimiento: ', opts: LAYOUT_EXPLICIT, width: 150,
|
54
|
+
height: 20, x: 10, y: 210)
|
55
|
+
@lbl_lugar_nacimiento.backColor = FXRGB(3, 187, 133)
|
56
|
+
@input_lugar_nacimiento = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20,
|
57
|
+
x: 170, y: 210)
|
58
|
+
@lbl_fecha_nacimiento = FXLabel.new(self, 'Fecha de nacimiento (AAAA/MM/DD): ', opts: LAYOUT_EXPLICIT,
|
59
|
+
width: 250, height: 20, x: 340, y: 210)
|
60
|
+
@lbl_fecha_nacimiento.backColor = FXRGB(3, 187, 133)
|
61
|
+
@input_fecha_nacimiento = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20,
|
62
|
+
x: 590, y: 210)
|
63
|
+
@lbl_cedula = FXLabel.new(self, 'Cédula: ', opts: LAYOUT_EXPLICIT, width: 80, height: 20, x: 750,
|
64
|
+
y: 210)
|
65
|
+
@lbl_cedula.backColor = FXRGB(3, 187, 133)
|
66
|
+
@input_cedula = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 850,
|
67
|
+
y: 210)
|
68
|
+
@lbl_nombre_catequista = FXLabel.new(self, 'Nombre del catequista: ', opts: LAYOUT_EXPLICIT, width: 150,
|
69
|
+
height: 20, x: 10, y: 240)
|
70
|
+
@lbl_nombre_catequista.backColor = FXRGB(3, 187, 133)
|
71
|
+
@input_nombre_catequista = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20,
|
72
|
+
x: 170, y: 240)
|
73
|
+
@lbl_apellidos_catequista = FXLabel.new(self, 'Apellidos del catequista: ', opts: LAYOUT_EXPLICIT, width: 150,
|
74
|
+
height: 20, x: 340, y: 240)
|
75
|
+
@lbl_apellidos_catequista.backColor = FXRGB(3, 187, 133)
|
76
|
+
@input_apellidos_catequista = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20,
|
77
|
+
x: 510, y: 240)
|
78
|
+
# create buttons
|
79
|
+
@btnsave = FXButton.new(self, 'Guardar', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 100, height: 30,
|
80
|
+
x: 790, y: 270)
|
81
|
+
@btncancel = FXButton.new(self, 'Cancelar', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 100, height: 30,
|
82
|
+
x: 900, y: 270)
|
83
|
+
|
84
|
+
# connect buttons
|
85
|
+
@btnsave.connect(SEL_COMMAND) do
|
86
|
+
anio_lectivo = @input_anio_lectivo.text.empty? ? nil : @input_anio_lectivo.text
|
87
|
+
nivel = @input_nivel.text.empty? ? nil : @input_nivel.text
|
88
|
+
sector = @input_sector.text.empty? ? nil : @input_sector.text
|
89
|
+
name = @input_name.text.empty? ? nil : @input_name.text
|
90
|
+
apellidos = @input_apellidos.text.empty? ? nil : @input_apellidos.text
|
91
|
+
lugar_nacimiento = @input_lugar_nacimiento.text.empty? ? nil : @input_lugar_nacimiento.text
|
92
|
+
fecha_nacimiento = @input_fecha_nacimiento.text.empty? ? nil : @input_fecha_nacimiento.text
|
93
|
+
cedula = @input_cedula.text.empty? ? nil : @input_cedula.text
|
94
|
+
nombres_catequista = @input_nombre_catequista.text.empty? ? nil : @input_nombre_catequista.text
|
95
|
+
apellidos_catequista = @input_apellidos_catequista.text.empty? ? nil : @input_apellidos_catequista.text
|
96
|
+
|
97
|
+
|
98
|
+
# tables
|
99
|
+
# tabla catequistas (id, nombres, apellidos, fecha de nacimiento, lugar de nacimiento, cedula)
|
100
|
+
# tabla alumnos (id, nombres, apellidos, lugar_nacimiento, fecha_nacimiento, cedula, fk_catequistas, fk_niveles)
|
101
|
+
# tabla niveles (id, nivel, sector, anio_lectivo)
|
102
|
+
$conn.transaction do
|
103
|
+
# Insertar en la tabla catequistas
|
104
|
+
@registro_catequistas = $conn.exec('INSERT INTO catequistas (nombres, apellidos) VALUES ($1, $2)',
|
105
|
+
[nombres_catequista, apellidos_catequista])
|
106
|
+
# Insertar en la tabla niveles
|
107
|
+
@registro_parroquias = $conn.exec('INSERT INTO niveles (anio_lectivo, nivel, sector) VALUES ($1, $2, $3)',
|
108
|
+
[anio_lectivo, nivel, sector])
|
109
|
+
# Insertar en la tabla alumnos
|
110
|
+
@registro_creyentes = $conn.exec(
|
111
|
+
'INSERT INTO alumnos (nombres, apellidos, lugar_nacimiento, fecha_nacimiento, cedula) VALUES ($1, $2, $3, $4, $5)', [
|
112
|
+
name, apellidos, lugar_nacimiento, fecha_nacimiento, cedula
|
113
|
+
]
|
114
|
+
)
|
115
|
+
puts @registro_creyentes
|
116
|
+
puts @registro_parroquias
|
117
|
+
puts @registro_catequistas
|
118
|
+
|
119
|
+
# Confirmar la transacción
|
120
|
+
$conn.exec('COMMIT')
|
121
|
+
FXMessageBox.information(self, MBOX_OK, 'Información', 'Datos guardados correctamente')
|
122
|
+
clear_input_fields
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
@btncancel.connect(SEL_COMMAND) do
|
127
|
+
clear_input_fields
|
128
|
+
end
|
129
|
+
|
130
|
+
def clear_input_fields
|
131
|
+
@input_anio_lectivo.text = ''
|
132
|
+
@input_nivel.text = ''
|
133
|
+
@input_sector.text = ''
|
134
|
+
@input_name.text = ''
|
135
|
+
@input_apellidos.text = ''
|
136
|
+
@input_lugar_nacimiento.text = ''
|
137
|
+
@input_fecha_nacimiento.text = ''
|
138
|
+
@input_cedula.text = ''
|
139
|
+
@input_nombre_catequista.text = ''
|
140
|
+
@input_apellidos_catequista.text = ''
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
# Nombre del mes
|
145
|
+
def nombre_mes(mes)
|
146
|
+
meses = {
|
147
|
+
'01' => 'enero',
|
148
|
+
'02' => 'febrero',
|
149
|
+
'03' => 'marzo',
|
150
|
+
'04' => 'abril',
|
151
|
+
'05' => 'mayo',
|
152
|
+
'06' => 'junio',
|
153
|
+
'07' => 'julio',
|
154
|
+
'08' => 'agosto',
|
155
|
+
'09' => 'septiembre',
|
156
|
+
'10' => 'octubre',
|
157
|
+
'11' => 'noviembre',
|
158
|
+
'12' => 'diciembre'
|
159
|
+
}
|
160
|
+
meses[mes]
|
161
|
+
end
|
162
|
+
|
163
|
+
# Cambiar el formato de la fecha de YYYY-MM-DD a DD de nombre_mes de YYYY
|
164
|
+
def cambiar_formato_fecha(fecha)
|
165
|
+
# split "-" or "/"
|
166
|
+
fecha = fecha.split(%r{-|/})
|
167
|
+
# si el formato de fecha es YYYY-MM-DD o YYYY/MM/DD, sino si es DD-MM-YYYY o DD/MM/YYYY
|
168
|
+
if fecha[0].length == 4
|
169
|
+
"#{fecha[2]} de #{nombre_mes(fecha[1])} de #{fecha[0]}"
|
170
|
+
else
|
171
|
+
"#{fecha[0]} de #{nombre_mes(fecha[1])} de #{fecha[2]}"
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
def create
|
176
|
+
super
|
177
|
+
show(PLACEMENT_SCREEN)
|
178
|
+
end
|
179
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
require 'pg'
|
2
|
+
require 'fox16'
|
3
|
+
include Fox
|
4
|
+
|
5
|
+
class Catecismo < FXMainWindow
|
6
|
+
def initialize(app)
|
7
|
+
super(app, 'Parroquia San Judas Tadeo', width: 700, height: 500)
|
8
|
+
@app = app
|
9
|
+
self.backColor = FXRGB(3, 187, 133)
|
10
|
+
|
11
|
+
# Font
|
12
|
+
@font = FXFont.new(app, 'Geneva', 12, FONTWEIGHT_BOLD)
|
13
|
+
|
14
|
+
# Inserar imagen del logo
|
15
|
+
@image = File.join(File.dirname(__FILE__), '../assets/images/Logo-SJT.png')
|
16
|
+
@image = File.open(@image, 'rb')
|
17
|
+
@image = FXPNGIcon.new(app, @image.read)
|
18
|
+
@logo = FXImageFrame.new(self, @image, opts: LAYOUT_EXPLICIT | LAYOUT_CENTER_X | LAYOUT_CENTER_Y, width: 400,
|
19
|
+
height: 250, x: 10, y: 100)
|
20
|
+
# Color de fondo de image frame es el mismo que el de la ventana
|
21
|
+
@logo.backColor = FXRGB(3, 187, 133)
|
22
|
+
# Escalar imagen
|
23
|
+
@image.scale(400, 250)
|
24
|
+
|
25
|
+
# Title
|
26
|
+
@lbltitle = FXLabel.new(self, 'Bienvenido a la Parroquia San Judas Tadeo',
|
27
|
+
opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 700, height: 20, x: 0, y: 20)
|
28
|
+
@lbltitle.font = FXFont.new(app, 'Geneva', 16, FONTWEIGHT_BOLD)
|
29
|
+
@lbltitle.backColor = FXRGB(3, 187, 133)
|
30
|
+
# Subtitle
|
31
|
+
@lblsubtitle = FXLabel.new(self, 'ARQUIDIOSESIS DE QUITO - SERVICIO PARROQUIAL DE SAN JUDAS TADEO',
|
32
|
+
opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 700, height: 20, x: 0, y: 40)
|
33
|
+
@lblsubtitle.font = FXFont.new(app, 'Geneva', 10, FONTWEIGHT_BOLD)
|
34
|
+
@lblsubtitle.backColor = FXRGB(3, 187, 133)
|
35
|
+
# Date
|
36
|
+
@date = Time.now.strftime('%d/%m/%Y')
|
37
|
+
@lbldate = FXLabel.new(self, "Fecha: #{cambiar_formato_fecha(@date)}", opts: LAYOUT_EXPLICIT | JUSTIFY_RIGHT,
|
38
|
+
width: 700, height: 20, x: 0, y: 60, padRight: 20)
|
39
|
+
@lbldate.font = FXFont.new(app, 'Geneva', 12, FONTWEIGHT_BOLD)
|
40
|
+
@lbldate.backColor = FXRGB(3, 187, 133)
|
41
|
+
|
42
|
+
# section lista
|
43
|
+
@btnalumno = FXButton.new(self, 'Ingresar Alumno', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 150,
|
44
|
+
height: 30, x: 460, y: 150)
|
45
|
+
@btnconsulta = FXButton.new(self, 'Consultar', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 150,
|
46
|
+
height: 30, x: 460, y: 190)
|
47
|
+
|
48
|
+
# Footer
|
49
|
+
@lblfooter = FXLabel.new(self, 'WebMinds Studio - 2023', opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 700,
|
50
|
+
height: 20, x: 0, y: 400)
|
51
|
+
@lblfooter.font = FXFont.new(app, 'Geneva', 10)
|
52
|
+
@lblfooter.backColor = FXRGB(3, 187, 133)
|
53
|
+
@lblauthor = FXLabel.new(self, 'Desarrollado por Ing. Francisco J. Borja L.',
|
54
|
+
opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 700, height: 20, x: 0, y: 420)
|
55
|
+
@lblauthor.font = FXFont.new(app, 'Geneva', 10)
|
56
|
+
@lblauthor.backColor = FXRGB(3, 187, 133)
|
57
|
+
@lblweb = FXLabel.new(self, 'www.webmindsstudio.com', opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 700,
|
58
|
+
height: 20, x: 0, y: 440)
|
59
|
+
@lblweb.font = FXFont.new(app, 'Geneva', 10)
|
60
|
+
@lblweb.backColor = FXRGB(3, 187, 133)
|
61
|
+
@lbllicence = FXLabel.new(self, 'MIT License', opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 700,
|
62
|
+
height: 20, x: 0, y: 460)
|
63
|
+
@lbllicence.font = FXFont.new(app, 'Geneva', 10)
|
64
|
+
@lbllicence.backColor = FXRGB(3, 187, 133)
|
65
|
+
# section buttons executions
|
66
|
+
@btnalumno.connect(SEL_COMMAND) do
|
67
|
+
require_relative 'alumno'
|
68
|
+
vtnalumno = Alumno.new(@app)
|
69
|
+
vtnalumno.create
|
70
|
+
vtnalumno.show(PLACEMENT_SCREEN)
|
71
|
+
end
|
72
|
+
@btnconsulta.connect(SEL_COMMAND) do
|
73
|
+
require_relative 'consulta'
|
74
|
+
vtnconsulta = Consulta.new(@app)
|
75
|
+
vtnconsulta.create
|
76
|
+
vtnconsulta.show(PLACEMENT_SCREEN)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
# Nombre del mes
|
81
|
+
def nombre_mes(mes)
|
82
|
+
meses = {
|
83
|
+
'01' => 'enero',
|
84
|
+
'02' => 'febrero',
|
85
|
+
'03' => 'marzo',
|
86
|
+
'04' => 'abril',
|
87
|
+
'05' => 'mayo',
|
88
|
+
'06' => 'junio',
|
89
|
+
'07' => 'julio',
|
90
|
+
'08' => 'agosto',
|
91
|
+
'09' => 'septiembre',
|
92
|
+
'10' => 'octubre',
|
93
|
+
'11' => 'noviembre',
|
94
|
+
'12' => 'diciembre'
|
95
|
+
}
|
96
|
+
meses[mes]
|
97
|
+
end
|
98
|
+
|
99
|
+
# Cambiar el formato de la fecha de YYYY-MM-DD a DD de nombre_mes de YYYY
|
100
|
+
def cambiar_formato_fecha(fecha)
|
101
|
+
# split "-" or "/"
|
102
|
+
fecha = fecha.split(%r{-|/})
|
103
|
+
# si el formato de fecha es YYYY-MM-DD o YYYY/MM/DD, sino si es DD-MM-YYYY o DD/MM/YYYY
|
104
|
+
if fecha[0].length == 4
|
105
|
+
"#{fecha[2]} de #{nombre_mes(fecha[1])} de #{fecha[0]}"
|
106
|
+
else
|
107
|
+
"#{fecha[0]} de #{nombre_mes(fecha[1])} de #{fecha[2]}"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
def create
|
112
|
+
super
|
113
|
+
show(PLACEMENT_SCREEN)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
$conn = PG.connect(host: 'localhost', port: '5432', dbname: 'catecismo', user: 'postgres', password: 'postgres')
|
118
|
+
# Comprobar conexión con la base de datos
|
119
|
+
exit if $conn.status != PG::CONNECTION_OK
|
@@ -0,0 +1,177 @@
|
|
1
|
+
require 'pg'
|
2
|
+
require 'fox16'
|
3
|
+
include Fox
|
4
|
+
|
5
|
+
class Consulta < FXMainWindow
|
6
|
+
def initialize(app)
|
7
|
+
super(app, 'Parroquia San Judas Tadeo', width: 700, height: 380)
|
8
|
+
@app = app
|
9
|
+
self.backColor = FXRGB(3, 187, 133)
|
10
|
+
|
11
|
+
# seccion encabezado
|
12
|
+
# create label
|
13
|
+
@lbltitle = FXLabel.new(self, 'Bienvenido a la Parroquia San Judas Tadeo',
|
14
|
+
opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 700, height: 20, x: 0, y: 20)
|
15
|
+
@lbltitle.font = FXFont.new(app, 'Geneva', 16, FONTWEIGHT_BOLD)
|
16
|
+
@lbltitle.backColor = FXRGB(3, 187, 133)
|
17
|
+
# create label
|
18
|
+
@lblsubtitle = FXLabel.new(self, 'ARQUIDIOSESIS DE QUITO - VICARIA NORTE SERVICIO PARROQUIAL DE SAN JUDAS TADEO',
|
19
|
+
opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 700, height: 20, x: 0, y: 40)
|
20
|
+
@lblsubtitle.font = FXFont.new(app, 'Geneva', 10, FONTWEIGHT_BOLD)
|
21
|
+
@lblsubtitle.backColor = FXRGB(3, 187, 133)
|
22
|
+
# create label
|
23
|
+
@date = Time.now.strftime('%d/%m/%Y')
|
24
|
+
@lbldate = FXLabel.new(self, "Fecha: #{cambiar_formato_fecha(@date)} ", opts: LAYOUT_EXPLICIT | JUSTIFY_RIGHT,
|
25
|
+
width: 680, height: 20, x: 0, y: 60)
|
26
|
+
@lbldate.font = FXFont.new(app, 'Geneva', 12, FONTWEIGHT_BOLD)
|
27
|
+
@lbldate.backColor = FXRGB(3, 187, 133)
|
28
|
+
# seccioan consulta
|
29
|
+
@lbl_consulta = FXLabel.new(self, 'Consultar por: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20,
|
30
|
+
x: 10, y: 150)
|
31
|
+
@lbl_consulta.backColor = FXRGB(3, 187, 133)
|
32
|
+
@lbl_apellidos = FXLabel.new(self, 'Apellidos del alumno: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 10,
|
33
|
+
y: 180)
|
34
|
+
@lbl_apellidos.backColor = FXRGB(3, 187, 133)
|
35
|
+
@input_apellidos = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
|
36
|
+
y: 180)
|
37
|
+
@lbl_nombres = FXLabel.new(self, 'Nombres del alumno: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 340,
|
38
|
+
y: 180)
|
39
|
+
@lbl_nombres.backColor = FXRGB(3, 187, 133)
|
40
|
+
@input_nombres = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 510,
|
41
|
+
y: 180)
|
42
|
+
@lbl_cedula = FXLabel.new(self, 'Cédula del alumno: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 10,
|
43
|
+
y: 210)
|
44
|
+
@lbl_cedula.backColor = FXRGB(3, 187, 133)
|
45
|
+
@input_cedula = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
|
46
|
+
y: 210)
|
47
|
+
@lbl_anio_lectivo = FXLabel.new(self, 'Año lectivo: ', opts: LAYOUT_EXPLICIT, width: 150,
|
48
|
+
height: 20, x: 10, y: 240)
|
49
|
+
@lbl_anio_lectivo.backColor = FXRGB(3, 187, 133)
|
50
|
+
@input_anio_lectivo = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
|
51
|
+
y: 240)
|
52
|
+
@lbl_nivel = FXLabel.new(self, 'Nivel: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20,
|
53
|
+
x: 330, y: 240)
|
54
|
+
@lbl_nivel.backColor = FXRGB(3, 187, 133)
|
55
|
+
@input_nivel = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 490,
|
56
|
+
y: 240)
|
57
|
+
@lbl_sector = FXLabel.new(self, 'Sector: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20,
|
58
|
+
x: 10, y: 270)
|
59
|
+
@lbl_sector.backColor = FXRGB(3, 187, 133)
|
60
|
+
@input_sector = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
|
61
|
+
y: 270)
|
62
|
+
@lbl_nombres_catequista = FXLabel.new(self, 'Nombres catequista: ', opts: LAYOUT_EXPLICIT, width: 150,
|
63
|
+
height: 20, x: 10, y: 300)
|
64
|
+
@lbl_nombres_catequista.backColor = FXRGB(3, 187, 133)
|
65
|
+
@input_nombres_catequista = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
|
66
|
+
y: 300)
|
67
|
+
@lbl_apellidos_catequista = FXLabel.new(self, 'Apellidos catequista: ', opts: LAYOUT_EXPLICIT, width: 150,
|
68
|
+
height: 20, x: 330, y: 300)
|
69
|
+
@lbl_apellidos_catequista.backColor = FXRGB(3, 187, 133)
|
70
|
+
@input_apellidos_catequista = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 490,
|
71
|
+
y: 300)
|
72
|
+
|
73
|
+
# create buttons
|
74
|
+
@btnsearch = FXButton.new(self, 'Buscar', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 100, height: 30,
|
75
|
+
x: 450, y: 330)
|
76
|
+
@btncancel = FXButton.new(self, 'Cancelar', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 100, height: 30,
|
77
|
+
x: 560, y: 330)
|
78
|
+
|
79
|
+
# connect buttons
|
80
|
+
@btnsearch.connect(SEL_COMMAND) do
|
81
|
+
apellidos = @input_apellidos.text
|
82
|
+
nombres = @input_nombres.text
|
83
|
+
cedula = @input_cedula.text
|
84
|
+
anio_lectivo = @input_anio_lectivo.text
|
85
|
+
nivel = @input_nivel.text
|
86
|
+
sector = @input_sector.text
|
87
|
+
nombres_catequista = @input_nombres_catequista.text
|
88
|
+
apellidos_catequista = @input_apellidos_catequista.text
|
89
|
+
|
90
|
+
if apellidos.empty? && nombres.empty? && cedula.empty? && anio_lectivo.empty? && nivel.empty? && nombres_catequista.empty? && apellidos_catequista.empty? && sector.empty?
|
91
|
+
FXMessageBox.warning(self, MBOX_OK, 'Advertencia', 'Debe ingresar al menos un criterio de búsqueda')
|
92
|
+
else
|
93
|
+
# conectar a la base de datos
|
94
|
+
# tables
|
95
|
+
# tabla catequistas (id, nombres, apellidos, fecha de nacimiento, lugar de nacimiento, cedula)
|
96
|
+
# tabla alumnos (id, nombres, apellidos, lugar_nacimiento, fecha_nacimiento, cedula, fk_catequistas, fk_niveles)
|
97
|
+
# tabla niveles (id, nivel, sector, anio_lectivo)
|
98
|
+
sql = 'SELECT * FROM alumnos INNER JOIN niveles ON alumnos.id = niveles.id INNER JOIN catequistas ON alumnos.id = catequistas.id'
|
99
|
+
sql += " WHERE alumnos.apellidos LIKE '%#{apellidos}%'" unless apellidos.empty?
|
100
|
+
sql += " AND alumnos.nombres LIKE '%#{nombres}%'" unless nombres.empty?
|
101
|
+
sql += " AND alumnos.cedula = '#{cedula}'" unless cedula.empty?
|
102
|
+
sql += " AND niveles.anio_lectivo = '#{anio_lectivo}'" unless anio_lectivo.empty?
|
103
|
+
sql += " AND niveles.nivel = '#{nivel}'" unless nivel.empty?
|
104
|
+
sql += " AND catequistas.nombres LIKE '%#{nombres_catequista}%'" unless nombres_catequista.empty?
|
105
|
+
sql += " AND catequistas.apellidos LIKE '%#{apellidos_catequista}%'" unless apellidos_catequista.empty?
|
106
|
+
# Se escoge año lectivo, sector, catequista y nivel
|
107
|
+
unless anio_lectivo.empty? || nivel.empty? || nombres_catequista.empty? || apellidos_catequista.empty?
|
108
|
+
sql += " AND niveles.anio_lectivo = '#{anio_lectivo}' AND niveles.nivel = '#{nivel}' AND catequistas.nombres LIKE '%#{nombres_catequista}%' AND catequistas.apellidos LIKE '%#{apellidos_catequista}%'"
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
$conn.exec(sql) do |result|
|
113
|
+
if result.values.empty?
|
114
|
+
FXMessageBox.information(self, MBOX_OK, 'Información', 'No se encontraron registros')
|
115
|
+
else
|
116
|
+
# mostrar resultados
|
117
|
+
FXMessageBox.information(self, MBOX_OK, 'Información', "Se encontraron #{result.values.length} registros")
|
118
|
+
require_relative 'resultado'
|
119
|
+
vtnresultados = ResultadosConsulta.new(@app, result.values)
|
120
|
+
vtnresultados.create
|
121
|
+
vtnresultados.show(PLACEMENT_SCREEN)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
@btncancel.connect(SEL_COMMAND) do
|
128
|
+
clear_input_fields
|
129
|
+
end
|
130
|
+
|
131
|
+
def clear_input_fields
|
132
|
+
@input_apellidos.text = ''
|
133
|
+
@input_nombres.text = ''
|
134
|
+
@input_cedula.text = ''
|
135
|
+
@input_anio_lectivo.text = ''
|
136
|
+
@input_nivel.text = ''
|
137
|
+
@input_nombres_catequista.text = ''
|
138
|
+
@input_apellidos_catequista.text = ''
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
# Nombre del mes
|
143
|
+
def nombre_mes(mes)
|
144
|
+
meses = {
|
145
|
+
'01' => 'enero',
|
146
|
+
'02' => 'febrero',
|
147
|
+
'03' => 'marzo',
|
148
|
+
'04' => 'abril',
|
149
|
+
'05' => 'mayo',
|
150
|
+
'06' => 'junio',
|
151
|
+
'07' => 'julio',
|
152
|
+
'08' => 'agosto',
|
153
|
+
'09' => 'septiembre',
|
154
|
+
'10' => 'octubre',
|
155
|
+
'11' => 'noviembre',
|
156
|
+
'12' => 'diciembre'
|
157
|
+
}
|
158
|
+
meses[mes]
|
159
|
+
end
|
160
|
+
|
161
|
+
# Cambiar el formato de la fecha de YYYY-MM-DD a DD de nombre_mes de YYYY
|
162
|
+
def cambiar_formato_fecha(fecha)
|
163
|
+
# split "-" or "/"
|
164
|
+
fecha = fecha.split(%r{-|/})
|
165
|
+
# si el formato de fecha es YYYY-MM-DD o YYYY/MM/DD, sino si es DD-MM-YYYY o DD/MM/YYYY
|
166
|
+
if fecha[0].length == 4
|
167
|
+
"#{fecha[2]} de #{nombre_mes(fecha[1])} de #{fecha[0]}"
|
168
|
+
else
|
169
|
+
"#{fecha[0]} de #{nombre_mes(fecha[1])} de #{fecha[2]}"
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
def create
|
174
|
+
super
|
175
|
+
show(PLACEMENT_SCREEN)
|
176
|
+
end
|
177
|
+
end
|