parroquia 1.1.13 → 1.1.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/lib/parroquia/catecismo/actualizar_alumno.rb +181 -0
  3. data/lib/parroquia/catecismo/alumno.rb +179 -0
  4. data/lib/parroquia/catecismo/catecismo.rb +119 -0
  5. data/lib/parroquia/catecismo/consulta.rb +177 -0
  6. data/lib/parroquia/catecismo/resultado.rb +230 -0
  7. data/lib/parroquia/main.rb +82 -91
  8. data/lib/parroquia/sacramentos/actualizar_bautismo.rb +313 -0
  9. data/lib/parroquia/sacramentos/actualizar_certificado_prebautismal.rb +184 -0
  10. data/lib/parroquia/sacramentos/actualizar_comunion.rb +239 -0
  11. data/lib/parroquia/sacramentos/actualizar_confirmacion.rb +239 -0
  12. data/lib/parroquia/sacramentos/actualizar_matrimonio.rb +298 -0
  13. data/lib/parroquia/sacramentos/actualizar_misa.rb +170 -0
  14. data/lib/parroquia/sacramentos/actualizar_permiso_prebautismal.rb +200 -0
  15. data/lib/parroquia/sacramentos/actualizar_permiso_prematrimonial.rb +205 -0
  16. data/lib/parroquia/sacramentos/actualizar_supletoria.rb +313 -0
  17. data/lib/parroquia/sacramentos/bautizo.rb +310 -0
  18. data/lib/parroquia/sacramentos/certificado_prebautismal.rb +195 -0
  19. data/lib/parroquia/sacramentos/comunion.rb +234 -0
  20. data/lib/parroquia/sacramentos/confirmacion.rb +239 -0
  21. data/lib/parroquia/sacramentos/consultas.rb +162 -0
  22. data/lib/parroquia/sacramentos/matrimonio.rb +297 -0
  23. data/lib/parroquia/sacramentos/misa.rb +171 -0
  24. data/lib/parroquia/sacramentos/permiso_bautismo.rb +207 -0
  25. data/lib/parroquia/sacramentos/permiso_prematrimonial.rb +219 -0
  26. data/lib/parroquia/sacramentos/resultados.rb +922 -0
  27. data/lib/parroquia/sacramentos/sacramentos.rb +182 -0
  28. data/lib/parroquia/sacramentos/supletoria.rb +309 -0
  29. metadata +30 -11
  30. data/lib/parroquia/actualizar_bautismo.rb +0 -245
  31. data/lib/parroquia/actualizar_confirmacion.rb +0 -194
  32. data/lib/parroquia/actualizar_matrimonio.rb +0 -235
  33. data/lib/parroquia/bautizo.rb +0 -239
  34. data/lib/parroquia/confirmacion.rb +0 -191
  35. data/lib/parroquia/consultas.rb +0 -144
  36. data/lib/parroquia/matrimonio.rb +0 -232
  37. data/lib/parroquia/resultados.rb +0 -414
@@ -0,0 +1,239 @@
1
+ require 'pg'
2
+ require 'fox16'
3
+ include Fox
4
+
5
+ class ActualizarComunion < 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, "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
+ # section libros
27
+ @lbl_tomo = FXLabel.new(self, 'Tomo', opts: LAYOUT_EXPLICIT, width: 50, height: 20, x: 50, y: 100)
28
+ @lbl_tomo.backColor = FXRGB(3, 187, 133)
29
+ # EL input tomoo debe tener el valor del campo "tomo" del registro
30
+ @input_tomo = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 50, height: 20, x: 110, y: 100)
31
+ @input_tomo.text = registro[15]
32
+
33
+ @lbl_page = FXLabel.new(self, 'Pagina', opts: LAYOUT_EXPLICIT, width: 50, height: 20, x: 170, y: 100)
34
+ @lbl_page.backColor = FXRGB(3, 187, 133)
35
+ @input_page = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 50, height: 20, x: 230, y: 100)
36
+ @input_page.text = registro[16]
37
+ @lbl_number = FXLabel.new(self, 'Numero', opts: LAYOUT_EXPLICIT, width: 50, height: 20, x: 290,
38
+ y: 100)
39
+ @lbl_number.backColor = FXRGB(3, 187, 133)
40
+ @input_number = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 50, height: 20, x: 350,
41
+ y: 100)
42
+ @input_number.text = registro[17]
43
+ # section datos
44
+ @lbl_fecha = FXLabel.new(self, 'Fecha de la 1ra comunión (AAAA/MM/DD): ', opts: LAYOUT_EXPLICIT, width: 250,
45
+ height: 20, x: 10, y: 150)
46
+ @lbl_fecha.backColor = FXRGB(3, 187, 133)
47
+ @input_fecha = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 340,
48
+ y: 150)
49
+ @input_fecha.text = @registro[2]
50
+ @lbl_sacramento = FXLabel.new(self, 'Sacramento: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20,
51
+ x: 680, y: 150)
52
+ @lbl_sacramento.backColor = FXRGB(3, 187, 133)
53
+ @input_sacramento = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 850,
54
+ y: 150)
55
+ @input_sacramento.text = @registro[1]
56
+ @input_sacramento.disable
57
+ @lbl_parroquia = FXLabel.new(self, 'Iglesia parroquial: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20,
58
+ x: 10, y: 180)
59
+ @lbl_parroquia.backColor = FXRGB(3, 187, 133)
60
+ @input_parroquia = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
61
+ y: 180)
62
+ @input_parroquia.text = @registro[25]
63
+ @lbl_sector = FXLabel.new(self, 'Sector: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 340,
64
+ y: 180)
65
+ @lbl_sector.backColor = FXRGB(3, 187, 133)
66
+ @input_sector = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 510,
67
+ y: 180)
68
+ @input_sector.text = @registro[26]
69
+ @lbl_parroco = FXLabel.new(self, 'Parroco: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 680,
70
+ y: 180)
71
+ @lbl_parroco.backColor = FXRGB(3, 187, 133)
72
+ @input_parroco = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 850,
73
+ y: 180)
74
+ @input_parroco.text = @registro[27]
75
+ @lbl_celebrante = FXLabel.new(self, 'Celebrante: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20,
76
+ x: 10, y: 210)
77
+ @lbl_celebrante.backColor = FXRGB(3, 187, 133)
78
+ @input_celebrante = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
79
+ y: 210)
80
+ @input_celebrante.text = @registro[3]
81
+ @lbl_name = FXLabel.new(self, 'Nombres: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 10,
82
+ y: 240)
83
+ @lbl_name.backColor = FXRGB(3, 187, 133)
84
+ @input_name = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
85
+ y: 240)
86
+ @input_name.text = @registro[19]
87
+ @lbl_apellidos = FXLabel.new(self, 'Apellidos: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 10,
88
+ y: 270)
89
+ @lbl_apellidos.backColor = FXRGB(3, 187, 133)
90
+ @input_apellidos = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
91
+ y: 270)
92
+ @input_apellidos.text = @registro[20]
93
+ @lbl_lugar_nacimiento = FXLabel.new(self, 'Lugar de nacimiento: ', opts: LAYOUT_EXPLICIT, width: 150,
94
+ height: 20, x: 10, y: 300)
95
+ @lbl_lugar_nacimiento.backColor = FXRGB(3, 187, 133)
96
+ @input_lugar_nacimiento = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20,
97
+ x: 170, y: 300)
98
+ @input_lugar_nacimiento.text = @registro[21]
99
+ @lbl_fecha_nacimiento = FXLabel.new(self, 'Fecha de nacimiento (AAAA/MM/DD): ', opts: LAYOUT_EXPLICIT,
100
+ width: 250, height: 20, x: 340, y: 300)
101
+ @lbl_fecha_nacimiento.backColor = FXRGB(3, 187, 133)
102
+ @input_fecha_nacimiento = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20,
103
+ x: 590, y: 300)
104
+ @input_fecha_nacimiento.text = @registro[22]
105
+ @lbl_cedula = FXLabel.new(self, 'Cédula: ', opts: LAYOUT_EXPLICIT, width: 80, height: 20, x: 750,
106
+ y: 300)
107
+ @lbl_cedula.backColor = FXRGB(3, 187, 133)
108
+ @input_cedula = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 850,
109
+ y: 300)
110
+ @input_cedula.text = @registro[23]
111
+ @lbl_padrino = FXLabel.new(self, 'Padrino: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 10,
112
+ y: 330)
113
+ @lbl_padrino.backColor = FXRGB(3, 187, 133)
114
+ @input_padrino = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
115
+ y: 330)
116
+ @input_padrino.text = @registro[5]
117
+ @lbl_certifica = FXLabel.new(self, 'Certifica: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 10,
118
+ y: 360)
119
+ @lbl_certifica.backColor = FXRGB(3, 187, 133)
120
+ @input_certifica = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
121
+ y: 360)
122
+ @input_certifica.text = @registro[4]
123
+ # create buttons
124
+ @btnupdate = FXButton.new(self, 'Actualizar', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 100, height: 30,
125
+ x: 790, y: 400)
126
+ @btncancel = FXButton.new(self, 'Cancelar', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 100, height: 30,
127
+ x: 900, y: 400)
128
+
129
+ # connect buttons
130
+ @btnupdate.connect(SEL_COMMAND) do
131
+ tomo = @input_tomo.text
132
+ page = @input_page.text
133
+ number = @input_number.text
134
+ fecha = @input_fecha.text
135
+ sacramento = @input_sacramento.text
136
+ parroquia = @input_parroquia.text
137
+ sector = @input_sector.text
138
+ parroco = @input_parroco.text
139
+ celebrante = @input_celebrante.text
140
+ name = @input_name.text
141
+ apellidos = @input_apellidos.text
142
+ lugar_nacimiento = @input_lugar_nacimiento.text
143
+ fecha_nacimiento = @input_fecha_nacimiento.text
144
+ cedula = @input_cedula.text.empty? ? nil : @input_cedula.text
145
+ padrino = @input_padrino.text.empty? ? nil : @input_padrino.text
146
+ certifica = @input_certifica.text
147
+
148
+ # tables
149
+ # tabla libros (id, tomo, pagina, numero)
150
+ # tabla creyentes (id, nombres, apellidos, lugar_nacimiento, fecha_nacimiento, cedula)
151
+ # tabla parroquias (id, nombre, sector, parroco)
152
+ # tabla sacramentos (id, nombre, fecha, celebrante, certifica, padrino, madrina, testigo_novio, testigo_novia, padre, madre, nombres_novia, apellidos_novia, cedula_novia, fk_creyentes, fk_parroquias, fk_registros_civiles, fk_libros)
153
+ # tabla registros_civiles (id, provincia_rc, canton_rc, parroquia_rc, anio_rc, tomo_rc, pagina_rc, acta_rc, fecha_rc)
154
+ # Iniciar una transacción
155
+ $conn.transaction do
156
+ # Actualizar la tabla libros
157
+ $conn.exec('UPDATE libros SET tomo = $1, pagina = $2, numero = $3 WHERE id = $4',
158
+ [tomo, page, number, registro[14]])
159
+
160
+ # Actualizar la tabla creyentes
161
+ $conn.exec(
162
+ 'UPDATE creyentes SET nombres = $1, apellidos = $2, lugar_nacimiento = $3, fecha_nacimiento = $4, cedula = $5 WHERE id = $6', [
163
+ name, apellidos, lugar_nacimiento, fecha_nacimiento, cedula, registro[18]
164
+ ]
165
+ )
166
+
167
+ # Actualizar la tabla parroquias
168
+ $conn.exec('UPDATE parroquias SET parroquia = $1, sector = $2, parroco = $3 WHERE id = $4',
169
+ [parroquia, sector, parroco, registro[24]])
170
+
171
+ # Actualizar la tabla registros civiles, si no existen datos se crea un registro nuevo con id que corresponda y se llena los demaás datos con nil
172
+ $conn.exec(
173
+ 'UPDATE registros_civiles SET provincia_rc = $1, canton_rc = $2, parroquia_rc = $3, anio_rc = $4, tomo_rc = $5, pagina_rc = $6, acta_rc = $7, fecha_rc = $8 WHERE id = $9', [
174
+ nil, nil, nil, nil, nil, nil, nil, nil, registro[28]
175
+ ]
176
+ )
177
+
178
+ # Actualizar la tabla sacramentos
179
+ $conn.exec(
180
+ 'UPDATE sacramentos SET sacramento = $1, fecha = $2, celebrante = $3, certifica = $4, padrino = $5 WHERE id = $6', [
181
+ sacramento, fecha, celebrante, certifica, padrino, registro[0]
182
+ ]
183
+ )
184
+
185
+
186
+ # ¿Desea guardar los cambios? SI: commit msg: datos actualizados correctamente, NO: rollback, close
187
+ if FXMessageBox.question(self, MBOX_YES_NO, 'Pregunta', '¿Desea guardar los cambios?') == MBOX_CLICKED_YES
188
+ # Confirmar la transacción
189
+ $conn.exec('COMMIT')
190
+ FXMessageBox.information(self, MBOX_OK, 'Información', 'Datos actualizados correctamente')
191
+ else
192
+ $conn.exec('ROLLBACK')
193
+ end
194
+ close
195
+ end
196
+ end
197
+
198
+ @btncancel.connect(SEL_COMMAND) do
199
+ FXMessageBox.warning(self, MBOX_OK, 'Advertencia', 'No se guardarán los cambios')
200
+ close
201
+ end
202
+ end
203
+
204
+ # Nombre del mes
205
+ def nombre_mes(mes)
206
+ meses = {
207
+ '01' => 'enero',
208
+ '02' => 'febrero',
209
+ '03' => 'marzo',
210
+ '04' => 'abril',
211
+ '05' => 'mayo',
212
+ '06' => 'junio',
213
+ '07' => 'julio',
214
+ '08' => 'agosto',
215
+ '09' => 'septiembre',
216
+ '10' => 'octubre',
217
+ '11' => 'noviembre',
218
+ '12' => 'diciembre'
219
+ }
220
+ meses[mes]
221
+ end
222
+
223
+ # Cambiar el formato de la fecha de YYYY-MM-DD a DD de nombre_mes de YYYY
224
+ def cambiar_formato_fecha(fecha)
225
+ # split "-" or "/"
226
+ fecha = fecha.split(%r{-|/})
227
+ # si el formato de fecha es YYYY-MM-DD o YYYY/MM/DD, sino si es DD-MM-YYYY o DD/MM/YYYY
228
+ if fecha[0].length == 4
229
+ "#{fecha[2]} de #{nombre_mes(fecha[1])} de #{fecha[0]}"
230
+ else
231
+ "#{fecha[0]} de #{nombre_mes(fecha[1])} de #{fecha[2]}"
232
+ end
233
+ end
234
+
235
+ def create
236
+ super
237
+ show(PLACEMENT_SCREEN)
238
+ end
239
+ end
@@ -0,0 +1,239 @@
1
+ require 'pg'
2
+ require 'fox16'
3
+ include Fox
4
+
5
+ class ActualizarConfirmacion < 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, "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
+ # section libros
27
+ @lbl_tomo = FXLabel.new(self, 'Tomo', opts: LAYOUT_EXPLICIT, width: 50, height: 20, x: 50, y: 100)
28
+ @lbl_tomo.backColor = FXRGB(3, 187, 133)
29
+ # EL input tomoo debe tener el valor del campo "tomo" del registro
30
+ @input_tomo = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 50, height: 20, x: 110, y: 100)
31
+ @input_tomo.text = registro[15]
32
+
33
+ @lbl_page = FXLabel.new(self, 'Pagina', opts: LAYOUT_EXPLICIT, width: 50, height: 20, x: 170, y: 100)
34
+ @lbl_page.backColor = FXRGB(3, 187, 133)
35
+ @input_page = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 50, height: 20, x: 230, y: 100)
36
+ @input_page.text = registro[16]
37
+ @lbl_number = FXLabel.new(self, 'Numero', opts: LAYOUT_EXPLICIT, width: 50, height: 20, x: 290,
38
+ y: 100)
39
+ @lbl_number.backColor = FXRGB(3, 187, 133)
40
+ @input_number = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 50, height: 20, x: 350,
41
+ y: 100)
42
+ @input_number.text = registro[17]
43
+ # section datos
44
+ @lbl_fecha = FXLabel.new(self, 'Fecha de confirmación (AAAA/MM/DD): ', opts: LAYOUT_EXPLICIT, width: 250,
45
+ height: 20, x: 10, y: 150)
46
+ @lbl_fecha.backColor = FXRGB(3, 187, 133)
47
+ @input_fecha = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 340,
48
+ y: 150)
49
+ @input_fecha.text = @registro[2]
50
+ @lbl_sacramento = FXLabel.new(self, 'Sacramento: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20,
51
+ x: 680, y: 150)
52
+ @lbl_sacramento.backColor = FXRGB(3, 187, 133)
53
+ @input_sacramento = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 850,
54
+ y: 150)
55
+ @input_sacramento.text = @registro[1]
56
+ @input_sacramento.disable
57
+ @lbl_parroquia = FXLabel.new(self, 'Iglesia parroquial: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20,
58
+ x: 10, y: 180)
59
+ @lbl_parroquia.backColor = FXRGB(3, 187, 133)
60
+ @input_parroquia = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
61
+ y: 180)
62
+ @input_parroquia.text = @registro[25]
63
+ @lbl_sector = FXLabel.new(self, 'Sector: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 340,
64
+ y: 180)
65
+ @lbl_sector.backColor = FXRGB(3, 187, 133)
66
+ @input_sector = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 510,
67
+ y: 180)
68
+ @input_sector.text = @registro[26]
69
+ @lbl_parroco = FXLabel.new(self, 'Parroco: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 680,
70
+ y: 180)
71
+ @lbl_parroco.backColor = FXRGB(3, 187, 133)
72
+ @input_parroco = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 850,
73
+ y: 180)
74
+ @input_parroco.text = @registro[27]
75
+ @lbl_celebrante = FXLabel.new(self, 'Celebrante: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20,
76
+ x: 10, y: 210)
77
+ @lbl_celebrante.backColor = FXRGB(3, 187, 133)
78
+ @input_celebrante = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
79
+ y: 210)
80
+ @input_celebrante.text = @registro[3]
81
+ @lbl_name = FXLabel.new(self, 'Nombres: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 10,
82
+ y: 240)
83
+ @lbl_name.backColor = FXRGB(3, 187, 133)
84
+ @input_name = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
85
+ y: 240)
86
+ @input_name.text = @registro[19]
87
+ @lbl_apellidos = FXLabel.new(self, 'Apellidos: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 10,
88
+ y: 270)
89
+ @lbl_apellidos.backColor = FXRGB(3, 187, 133)
90
+ @input_apellidos = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
91
+ y: 270)
92
+ @input_apellidos.text = @registro[20]
93
+ @lbl_lugar_nacimiento = FXLabel.new(self, 'Lugar de nacimiento: ', opts: LAYOUT_EXPLICIT, width: 150,
94
+ height: 20, x: 10, y: 300)
95
+ @lbl_lugar_nacimiento.backColor = FXRGB(3, 187, 133)
96
+ @input_lugar_nacimiento = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20,
97
+ x: 170, y: 300)
98
+ @input_lugar_nacimiento.text = @registro[21]
99
+ @lbl_fecha_nacimiento = FXLabel.new(self, 'Fecha de nacimiento (AAAA/MM/DD): ', opts: LAYOUT_EXPLICIT,
100
+ width: 250, height: 20, x: 340, y: 300)
101
+ @lbl_fecha_nacimiento.backColor = FXRGB(3, 187, 133)
102
+ @input_fecha_nacimiento = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20,
103
+ x: 590, y: 300)
104
+ @input_fecha_nacimiento.text = @registro[22]
105
+ @lbl_cedula = FXLabel.new(self, 'Cédula: ', opts: LAYOUT_EXPLICIT, width: 80, height: 20, x: 750,
106
+ y: 300)
107
+ @lbl_cedula.backColor = FXRGB(3, 187, 133)
108
+ @input_cedula = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 850,
109
+ y: 300)
110
+ @input_cedula.text = @registro[23]
111
+ @lbl_padrino = FXLabel.new(self, 'Padrino: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 10,
112
+ y: 330)
113
+ @lbl_padrino.backColor = FXRGB(3, 187, 133)
114
+ @input_padrino = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
115
+ y: 330)
116
+ @input_padrino.text = @registro[5]
117
+ @lbl_certifica = FXLabel.new(self, 'Certifica: ', opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 10,
118
+ y: 360)
119
+ @lbl_certifica.backColor = FXRGB(3, 187, 133)
120
+ @input_certifica = FXTextField.new(self, 10, opts: LAYOUT_EXPLICIT, width: 150, height: 20, x: 170,
121
+ y: 360)
122
+ @input_certifica.text = @registro[4]
123
+ # create buttons
124
+ @btnupdate = FXButton.new(self, 'Actualizar', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 100, height: 30,
125
+ x: 790, y: 400)
126
+ @btncancel = FXButton.new(self, 'Cancelar', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 100, height: 30,
127
+ x: 900, y: 400)
128
+
129
+ # connect buttons
130
+ @btnupdate.connect(SEL_COMMAND) do
131
+ tomo = @input_tomo.text
132
+ page = @input_page.text
133
+ number = @input_number.text
134
+ fecha = @input_fecha.text
135
+ sacramento = @input_sacramento.text
136
+ parroquia = @input_parroquia.text
137
+ sector = @input_sector.text
138
+ parroco = @input_parroco.text
139
+ celebrante = @input_celebrante.text
140
+ name = @input_name.text
141
+ apellidos = @input_apellidos.text
142
+ lugar_nacimiento = @input_lugar_nacimiento.text
143
+ fecha_nacimiento = @input_fecha_nacimiento.text
144
+ cedula = @input_cedula.text.empty? ? nil : @input_cedula.text
145
+ padrino = @input_padrino.text.empty? ? nil : @input_padrino.text
146
+ certifica = @input_certifica.text
147
+
148
+ # tables
149
+ # tabla libros (id, tomo, pagina, numero)
150
+ # tabla creyentes (id, nombres, apellidos, lugar_nacimiento, fecha_nacimiento, cedula)
151
+ # tabla parroquias (id, nombre, sector, parroco)
152
+ # tabla sacramentos (id, nombre, fecha, celebrante, certifica, padrino, madrina, testigo_novio, testigo_novia, padre, madre, nombres_novia, apellidos_novia, cedula_novia, fk_creyentes, fk_parroquias, fk_registros_civiles, fk_libros)
153
+ # tabla registros_civiles (id, provincia_rc, canton_rc, parroquia_rc, anio_rc, tomo_rc, pagina_rc, acta_rc, fecha_rc)
154
+ # Iniciar una transacción
155
+ $conn.transaction do
156
+ # Actualizar la tabla libros
157
+ $conn.exec('UPDATE libros SET tomo = $1, pagina = $2, numero = $3 WHERE id = $4',
158
+ [tomo, page, number, registro[14]])
159
+
160
+ # Actualizar la tabla creyentes
161
+ $conn.exec(
162
+ 'UPDATE creyentes SET nombres = $1, apellidos = $2, lugar_nacimiento = $3, fecha_nacimiento = $4, cedula = $5 WHERE id = $6', [
163
+ name, apellidos, lugar_nacimiento, fecha_nacimiento, cedula, registro[18]
164
+ ]
165
+ )
166
+
167
+ # Actualizar la tabla parroquias
168
+ $conn.exec('UPDATE parroquias SET parroquia = $1, sector = $2, parroco = $3 WHERE id = $4',
169
+ [parroquia, sector, parroco, registro[24]])
170
+
171
+ # Actualizar la tabla registros civiles, si no existen datos se crea un registro nuevo con id que corresponda y se llena los demaás datos con nil
172
+ $conn.exec(
173
+ 'UPDATE registros_civiles SET provincia_rc = $1, canton_rc = $2, parroquia_rc = $3, anio_rc = $4, tomo_rc = $5, pagina_rc = $6, acta_rc = $7, fecha_rc = $8 WHERE id = $9', [
174
+ nil, nil, nil, nil, nil, nil, nil, nil, registro[28]
175
+ ]
176
+ )
177
+
178
+ # Actualizar la tabla sacramentos
179
+ $conn.exec(
180
+ 'UPDATE sacramentos SET sacramento = $1, fecha = $2, celebrante = $3, certifica = $4, padrino = $5 WHERE id = $6', [
181
+ sacramento, fecha, celebrante, certifica, padrino, registro[0]
182
+ ]
183
+ )
184
+
185
+
186
+ # ¿Desea guardar los cambios? SI: commit msg: datos actualizados correctamente, NO: rollback, close
187
+ if FXMessageBox.question(self, MBOX_YES_NO, 'Pregunta', '¿Desea guardar los cambios?') == MBOX_CLICKED_YES
188
+ # Confirmar la transacción
189
+ $conn.exec('COMMIT')
190
+ FXMessageBox.information(self, MBOX_OK, 'Información', 'Datos actualizados correctamente')
191
+ else
192
+ $conn.exec('ROLLBACK')
193
+ end
194
+ close
195
+ end
196
+ end
197
+
198
+ @btncancel.connect(SEL_COMMAND) do
199
+ FXMessageBox.warning(self, MBOX_OK, 'Advertencia', 'No se guardarán los cambios')
200
+ close
201
+ end
202
+ end
203
+
204
+ # Nombre del mes
205
+ def nombre_mes(mes)
206
+ meses = {
207
+ '01' => 'enero',
208
+ '02' => 'febrero',
209
+ '03' => 'marzo',
210
+ '04' => 'abril',
211
+ '05' => 'mayo',
212
+ '06' => 'junio',
213
+ '07' => 'julio',
214
+ '08' => 'agosto',
215
+ '09' => 'septiembre',
216
+ '10' => 'octubre',
217
+ '11' => 'noviembre',
218
+ '12' => 'diciembre'
219
+ }
220
+ meses[mes]
221
+ end
222
+
223
+ # Cambiar el formato de la fecha de YYYY-MM-DD a DD de nombre_mes de YYYY
224
+ def cambiar_formato_fecha(fecha)
225
+ # split "-" or "/"
226
+ fecha = fecha.split(%r{-|/})
227
+ # si el formato de fecha es YYYY-MM-DD o YYYY/MM/DD, sino si es DD-MM-YYYY o DD/MM/YYYY
228
+ if fecha[0].length == 4
229
+ "#{fecha[2]} de #{nombre_mes(fecha[1])} de #{fecha[0]}"
230
+ else
231
+ "#{fecha[0]} de #{nombre_mes(fecha[1])} de #{fecha[2]}"
232
+ end
233
+ end
234
+
235
+ def create
236
+ super
237
+ show(PLACEMENT_SCREEN)
238
+ end
239
+ end