parroquia 0.0.1

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.
@@ -0,0 +1,174 @@
1
+ require 'fox16'
2
+ include Fox
3
+
4
+ class Matrimonio < FXMainWindow
5
+ def initialize(app)
6
+ super(app, "Parroquia San Judas Tadeo", :width => 1050, :height => 530)
7
+ # create label
8
+ @lbltitle = FXLabel.new(self, "Bienvenido a la Parroquia San Judas Tadeo", :opts => LAYOUT_EXPLICIT|JUSTIFY_CENTER_X, :width => 1050, :height => 20, :x => 0, :y => 20)
9
+ # create label
10
+ @lblsubtitle = FXLabel.new(self, "ARQUIDIOSESIS DE QUITO - VICARIA NORTE SERVICIO PARROQUIAL DE SAN JUDAS TADEO", :opts => LAYOUT_EXPLICIT|JUSTIFY_CENTER_X, :width => 1050, :height => 20, :x => 0, :y => 40)
11
+
12
+ #create label
13
+ @date = Time.now.strftime("%d/%m/%Y %H:%M:%S")
14
+ @lbldate = FXLabel.new(self, "Fecha: #{@date}", :opts => LAYOUT_EXPLICIT|JUSTIFY_RIGHT, :width => 1000, :height => 20, :x => 0, :y => 60)
15
+ #section libros
16
+ @lbl_tomo = FXLabel.new(self, "Tomo", :opts => LAYOUT_EXPLICIT, :width => 50, :height => 20, :x => 50, :y => 100)
17
+ @input_tomo = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 50, :height => 20, :x => 110, :y => 100)
18
+ @lbl_page = FXLabel.new(self, "Pagina", :opts => LAYOUT_EXPLICIT, :width => 50, :height => 20, :x => 170, :y => 100)
19
+ @input_page = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 50, :height => 20, :x => 230, :y => 100)
20
+ @lbl_number = FXLabel.new(self, "Numero", :opts => LAYOUT_EXPLICIT, :width => 50, :height => 20, :x => 290, :y => 100)
21
+ @input_number = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 50, :height => 20, :x => 350, :y => 100)
22
+
23
+ #section datos
24
+ @lbl_fecha = FXLabel.new(self, "Fecha de matrimonio (AAAA/MM/DD): ", :opts => LAYOUT_EXPLICIT, :width => 250, :height => 20, :x => 10, :y => 150)
25
+ @input_fecha = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 340, :y => 150)
26
+ @lbl_sacramento = FXLabel.new(self, "Sacramento: ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 680, :y => 150)
27
+ @input_sacramento = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 850, :y => 150)
28
+ @lbl_parroquia = FXLabel.new(self, "Iglesia parroquial: ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 10, :y => 180)
29
+ @input_parroquia = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 170, :y => 180)
30
+ @lbl_sector = FXLabel.new(self, "Sector: ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 340, :y => 180)
31
+ @input_sector = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 510, :y => 180)
32
+ @lbl_parroco = FXLabel.new(self, "Parroco: ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 680, :y => 180)
33
+ @input_parroco = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 850, :y => 180)
34
+ @lbl_celebrante = FXLabel.new(self, "Celebrante: ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 10, :y => 210)
35
+ @input_celebrante = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 170, :y => 210)
36
+ @lbl_name_novio = FXLabel.new(self, "Nombres del novio: ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 10, :y => 240)
37
+ @input_name_novio = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 170, :y => 240)
38
+ @lbl_apellido_novio = FXLabel.new(self, "Apellidos del novio: ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 340, :y => 240)
39
+ @input_apellido_novio = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 510, :y => 240)
40
+ @lbl_cedula_novio = FXLabel.new(self, "Cédula del novio: ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 680, :y => 240)
41
+ @input_cedula_novio = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 850, :y => 240)
42
+ @lbl_name_novia = FXLabel.new(self, "Nombres de la novia: ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 10, :y => 270)
43
+ @input_name_novia = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 170, :y => 270)
44
+ @lbl_apellido_novia = FXLabel.new(self, "Apellidos de la novia: ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 340, :y => 270)
45
+ @input_apellido_novia = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 510, :y => 270)
46
+ @lbl_cedula_novia = FXLabel.new(self, "Cédula de la novia: ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 680, :y => 270)
47
+ @input_cedula_novia = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 850, :y => 270)
48
+ @lbl_testigo_novio = FXLabel.new(self, "Testigo del novio: ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 10, :y => 300)
49
+ @input_nombres_testigo_novio = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 170, :y => 300)
50
+ @lbl_testigo_novia = FXLabel.new(self, "Testigo novia: ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 340, :y => 300)
51
+ @input_nombres_testigo_novia = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 510, :y => 300)
52
+ @lbl_certifica = FXLabel.new(self, "Certifica: ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 680, :y => 300)
53
+ @input_certifica = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 850, :y => 300)
54
+
55
+ #section registro civil
56
+ @lbl_reg_civ = FXLabel.new(self, "------------------------------------ REGISTRO CIVIL ------------------------------------", :opts => LAYOUT_EXPLICIT|JUSTIFY_CENTER_X, :width => 1050, :height => 20, :x => 10, :y => 330)
57
+ @lbl_provincia_rc = FXLabel.new(self, "Provincia: ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 10, :y => 360)
58
+ @input_provincia_rc = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 170,:y => 360)
59
+ @lbl_canton_rc = FXLabel.new(self, "Cantón: ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 340, :y => 360)
60
+ @input_canton_rc = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 510, :y =>360)
61
+ @lbl_parroquia_rc = FXLabel.new(self, "Parroquia: ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 680, :y => 360)
62
+ @input_parroquia_rc = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 850,:y => 360)
63
+ @lbl_anio_rc = FXLabel.new(self, "Año: ", :opts => LAYOUT_EXPLICIT, :width => 50, :height => 20, :x => 50, :y => 390)
64
+ @input_anio_rc = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 50,:height => 20, :x => 110,:y => 390)
65
+ @lbl_tomo_rc = FXLabel.new(self, "Tomo: ", :opts => LAYOUT_EXPLICIT, :width => 50, :height => 20, :x => 170, :y => 390)
66
+ @input_tomo_rc = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 50,:height => 20, :x => 230,:y => 390)
67
+ @lbl_pag_rc = FXLabel.new(self, "Página: ", :opts => LAYOUT_EXPLICIT, :width => 50, :height => 20, :x => 290, :y => 390)
68
+ @input_pag_rc = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 50,:height => 20, :x => 350,:y => 390)
69
+ @lbl_acta_rc = FXLabel.new(self, "Acta: ", :opts => LAYOUT_EXPLICIT, :width => 50, :height => 20, :x => 410, :y => 390)
70
+ @input_acta_rc = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 50,:height => 20, :x => 470,:y => 390)
71
+ @lbl_date_rc = FXLabel.new(self, "Fecha (AAAA/MM/DD): ", :opts => LAYOUT_EXPLICIT, :width => 150, :height => 20, :x => 10, :y => 420)
72
+ @input_date_rc = FXTextField.new(self, 10, :opts => LAYOUT_EXPLICIT, :width => 150,:height => 20, :x => 170,:y => 420)
73
+
74
+
75
+ # create buttons
76
+ @btnsave = FXButton.new(self, "Guardar", :opts => LAYOUT_EXPLICIT|BUTTON_NORMAL, :width => 100, :height => 30, :x => 790, :y => 480)
77
+ @btncancel = FXButton.new(self, "Cancelar", :opts => LAYOUT_EXPLICIT|BUTTON_NORMAL, :width => 100, :height => 30, :x => 900, :y => 480)
78
+
79
+ # connect buttons
80
+ @btnsave.connect(SEL_COMMAND) do
81
+ tomo = @input_tomo.text
82
+ page = @input_page.text
83
+ number = @input_number.text
84
+ fecha = @input_fecha.text
85
+ sacramento = @input_sacramento.text
86
+ parroquia = @input_parroquia.text
87
+ sector = @input_sector.text
88
+ parroco = @input_parroco.text
89
+ celebrante = @input_celebrante.text
90
+ name_novio = @input_name_novio.text
91
+ apellido_novio = @input_apellido_novio.text
92
+ cedula_novio = @input_cedula_novio.text.empty? ? nil : @input_cedula_novio.text
93
+ nombres_novia = @input_name_novia.text.empty? ? nil : @input_name_novia.text
94
+ apellidos_novia = @input_apellido_novia.text.empty? ? nil : @input_apellido_novia.text
95
+ cedula_novia = @input_cedula_novia.text.empty? ? nil : @input_cedula_novia.text
96
+ testigo_novio = @input_nombres_testigo_novio.text.empty? ? nil : @input_nombres_testigo_novio.text
97
+ testigo_novia = @input_nombres_testigo_novia.text.empty? ? nil : @input_nombres_testigo_novia.text
98
+ certifica = @input_certifica.text
99
+ provincia_rc = @input_provincia_rc.text
100
+ canton_rc = @input_canton_rc.text
101
+ parroquia_rc = @input_parroquia_rc.text
102
+ anio_rc = @input_anio_rc.text
103
+ tomo_rc = @input_tomo_rc.text
104
+ pagina_rc = @input_pag_rc.text
105
+ acta_rc = @input_acta_rc.text
106
+ fecha_rc = @input_date_rc.text
107
+
108
+ begin
109
+ # tables
110
+ # tabla libros (id, tomo, pagina, numero)
111
+ # tabla creyentes (id, nombres, apellidos, lugar_nacimiento, fecha_nacimiento, cedula)
112
+ # tabla parroquias (id, nombre, sector, parroco)
113
+ # 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)
114
+ # tabla registros_civiles (id, provincia_rc, canton_rc, parroquia_rc, anio_rc, tomo_rc, pagina_rc, acta_rc, fecha_rc)
115
+ $conn.transaction do
116
+ $conn.exec('INSERT INTO libros (tomo, pagina, numero) VALUES ($1, $2, $3)', [tomo, page, number])
117
+ $conn.exec('INSERT INTO creyentes (nombres, apellidos, cedula) VALUES ($1, $2, $3)', [name_novio, apellido_novio, cedula_novio])
118
+ $conn.exec('INSERT INTO parroquias (parroquia, sector, parroco) VALUES ($1, $2, $3)', [parroquia, sector, parroco])
119
+ $conn.exec('INSERT INTO registros_civiles (provincia_rc, canton_rc, parroquia_rc, anio_rc, tomo_rc, pagina_rc, acta_rc, fecha_rc) VALUES ($1, $2, $3, $4, $5, $6, $7, $8)', [provincia_rc, canton_rc, parroquia_rc, anio_rc, tomo_rc, pagina_rc, acta_rc, fecha_rc])
120
+ $conn.exec('INSERT INTO sacramentos (sacramento, fecha, celebrante, certifica, testigo_novio, testigo_novia, nombres_novia, apellidos_novia, cedula_novia) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)', [sacramento, fecha, celebrante, certifica, testigo_novio, testigo_novia, nombres_novia, apellidos_novia, cedula_novia])
121
+ $conn.exec("COMMIT")
122
+ FXMessageBox.information(self, MBOX_OK, "Información", "Datos guardados correctamente")
123
+ clear_input_fields
124
+ end
125
+ rescue PG::Error => e
126
+ FXMessageBox.error(self, MBOX_OK, "Error", "Error al guardar los datos")
127
+ # Imprimir el error en la consola
128
+ puts e.message
129
+ # Imprimir detalles del error en la consola
130
+ puts e.backtrace.inspect
131
+ end
132
+ end
133
+
134
+ @btncancel.connect(SEL_COMMAND) do
135
+ clear_input_fields
136
+ end
137
+
138
+ def clear_input_fields
139
+ @input_tomo.text = ""
140
+ @input_page.text = ""
141
+ @input_number.text = ""
142
+ @input_fecha.text = ""
143
+ @input_sacramento.text = ""
144
+ @input_parroquia.text = ""
145
+ @input_sector.text = ""
146
+ @input_parroco.text = ""
147
+ @input_celebrante.text = ""
148
+ @input_name_novio.text = ""
149
+ @input_apellido_novio.text = ""
150
+ @input_cedula_novio.text = ""
151
+ @input_name_novia.text = ""
152
+ @input_apellido_novia.text = ""
153
+ @input_cedula_novia.text = ""
154
+ @input_nombres_testigo_novio.text = ""
155
+ @input_nombres_testigo_novia.text = ""
156
+ @input_certifica.text = ""
157
+ @input_provincia_rc.text = ""
158
+ @input_canton_rc.text = ""
159
+ @input_parroquia_rc.text = ""
160
+ @input_anio_rc.text = ""
161
+ @input_tomo_rc.text = ""
162
+ @input_pag_rc.text = ""
163
+ @input_acta_rc.text = ""
164
+ @input_date_rc.text = ""
165
+ end
166
+
167
+
168
+ end
169
+
170
+ def create
171
+ super
172
+ show(PLACEMENT_SCREEN)
173
+ end
174
+ end
@@ -0,0 +1,413 @@
1
+ require 'pg'
2
+ require 'prawn'
3
+ require 'fox16'
4
+ include Fox
5
+
6
+ class ResultadosConsulta < FXMainWindow
7
+ def initialize(app, result_data)
8
+ super(app, "Resultados de la Consulta", :width => 800, :height => 600)
9
+ @app = app
10
+
11
+ @result_data = result_data # Los datos de resultados que se pasan a esta clase
12
+
13
+ # Crea una tabla para mostrar los resultados
14
+ @tabla = FXTable.new(self, :opts => LAYOUT_EXPLICIT|TABLE_COL_SIZABLE|TABLE_ROW_SIZABLE, :width => 800, :height => 400, :x => 0, :y => 0)
15
+ @tabla.visibleRows = 10
16
+ @tabla.visibleColumns = 10
17
+ # El tamaño de la tabla depende del número de columnas nombrada en poner nombre a las columnas y las filas al numero de registros encontrados
18
+ @tabla.setTableSize(@result_data.length, 37)
19
+
20
+
21
+ # Llena la tabla con los datos de resultados
22
+ @result_data.each_with_index do |row, i|
23
+ row.each_with_index do |col, j|
24
+ @tabla.setItemText(i, j, col.to_s)
25
+ end
26
+ end
27
+
28
+ # Poner nombre a las columnas
29
+ @tabla.setColumnText(0, "ID Sacramentos")
30
+ @tabla.setColumnText(1, "Sacramento")
31
+ @tabla.setColumnText(2, "Fecha")
32
+ @tabla.setColumnText(3, "Celebrante")
33
+ @tabla.setColumnText(4, "Certifica")
34
+ @tabla.setColumnText(5, "Pdrino")
35
+ @tabla.setColumnText(6, "Madrina")
36
+ @tabla.setColumnText(7, "Testigo novio")
37
+ @tabla.setColumnText(8, "Testigo novia")
38
+ @tabla.setColumnText(9, "Padre")
39
+ @tabla.setColumnText(10, "Madre")
40
+ @tabla.setColumnText(11, "Nombres de la novia")
41
+ @tabla.setColumnText(12, "Apellidos de la novia")
42
+ @tabla.setColumnText(13, "Cédula de la novia")
43
+ @tabla.setColumnText(14, "ID Libros")
44
+ @tabla.setColumnText(15, "Tomo")
45
+ @tabla.setColumnText(16, "Página")
46
+ @tabla.setColumnText(17, "Número")
47
+ @tabla.setColumnText(18, "ID Creyentes")
48
+ @tabla.setColumnText(19, "Nombres")
49
+ @tabla.setColumnText(20, "Apellidos")
50
+ @tabla.setColumnText(21, "Lugar de nacimiento")
51
+ @tabla.setColumnText(22, "Fecha de nacimiento")
52
+ @tabla.setColumnText(23, "Cédula")
53
+ @tabla.setColumnText(24, "ID Parroquias")
54
+ @tabla.setColumnText(25, "Parroquia")
55
+ @tabla.setColumnText(26, "Sector")
56
+ @tabla.setColumnText(27, "Parroco")
57
+ @tabla.setColumnText(28, "ID Registros Civiles")
58
+ @tabla.setColumnText(29, "Provincia")
59
+ @tabla.setColumnText(30, "Cantón")
60
+ @tabla.setColumnText(31, "Parroquia")
61
+ @tabla.setColumnText(32, "Año")
62
+ @tabla.setColumnText(33, "Tomo")
63
+ @tabla.setColumnText(34, "Página")
64
+ @tabla.setColumnText(35, "Acta")
65
+ @tabla.setColumnText(36, "Fecha")
66
+
67
+ # Al hacer clic en una fila, se selecciona la fila completa para imprimir los datos
68
+ def seleccionar_fila
69
+ @tabla.each_row do |i|
70
+ if @tabla.isRowSelected(i.index)
71
+ @tabla.selectRow(i.index)
72
+ end
73
+ end
74
+ end
75
+
76
+ def registros_seleccionados
77
+ registros = []
78
+ (0...@tabla.numRows).each do |i|
79
+ if @tabla.isRowSelected(i)
80
+ registros << @result_data[i]
81
+ end
82
+ end
83
+ registros
84
+ end
85
+
86
+ # Cambiar el formato de la fecga de YYYY-MM-DD a DD de nombre_mes de YYYY
87
+ def cambiar_formato_fecha(fecha)
88
+ # split "-" or "/"
89
+ fecha = fecha.split(/-|\//)
90
+ # si el formato de fecha es YYYY-MM-DD o YYYY/MM/DD, sino si es DD-MM-YYYY o DD/MM/YYYY
91
+ if fecha[0].length == 4
92
+ "#{fecha[2]} de #{nombre_mes(fecha[1])} de #{fecha[0]}"
93
+ else
94
+ "#{fecha[0]} de #{nombre_mes(fecha[1])} de #{fecha[2]}"
95
+ end
96
+ end
97
+
98
+ # Nombre del mes
99
+ def nombre_mes(mes)
100
+ meses = {
101
+ "01" => "enero",
102
+ "02" => "febrero",
103
+ "03" => "marzo",
104
+ "04" => "abril",
105
+ "05" => "mayo",
106
+ "06" => "junio",
107
+ "07" => "julio",
108
+ "08" => "agosto",
109
+ "09" => "septiembre",
110
+ "10" => "octubre",
111
+ "11" => "noviembre",
112
+ "12" => "diciembre"
113
+ }
114
+ meses[mes]
115
+ end
116
+
117
+ # Nombre de las filas
118
+ @result_data.each_with_index do |row, i|
119
+ @tabla.setRowText(i, "Registro #{i+1}")
120
+ end
121
+
122
+ # create buttons
123
+ @btnprint = FXButton.new(self, "Imprimir", :opts => LAYOUT_EXPLICIT | BUTTON_NORMAL, :width => 100, :height => 30, :x => 10, :y => 430)
124
+ @btnedit = FXButton.new(self, "Editar", :opts => LAYOUT_EXPLICIT | BUTTON_NORMAL, :width => 100, :height => 30, :x => 120, :y => 430)
125
+ @btndelete = FXButton.new(self, "Eliminar", :opts => LAYOUT_EXPLICIT | BUTTON_NORMAL, :width => 100, :height => 30, :x => 230, :y => 430)
126
+ @btncancel = FXButton.new(self, "Cancelar", :opts => LAYOUT_EXPLICIT | BUTTON_NORMAL, :width => 100, :height => 30, :x => 340, :y => 430)
127
+
128
+ # connect buttons
129
+ @btnprint.connect(SEL_COMMAND) do
130
+ seleccionar_directorio
131
+ imprimir_pdf
132
+ end
133
+
134
+ def seleccionar_directorio
135
+ dialog = FXDirDialog.new(self, "Seleccionar directorio para guardar PDF")
136
+ if dialog.execute != 0
137
+ directorio = dialog.getDirectory
138
+ #El nombre del directorio son los apellidos y nombres del creyente seguido del sacramento
139
+ @archivo_pdf = "#{directorio}/#{registros_seleccionados[0][19]} #{registros_seleccionados[0][20]} - #{registros_seleccionados[0][1]}.pdf"
140
+ end
141
+ end
142
+
143
+ def imprimir_pdf
144
+ if registros_seleccionados.empty?
145
+ FXMessageBox.warning(self, MBOX_OK, "Advertencia", "Debe seleccionar al menos un registro")
146
+ else
147
+ # Genera el archivo PDF
148
+ Prawn::Document.generate(@archivo_pdf, :margin => [150, 100, 100, 100]) do |pdf|
149
+ pdf.font "Helvetica"
150
+ pdf.font_size 12
151
+ # Definir tres casos en los que se puede imprimir el certificado y los distintos formatos para bautismo, confirmación y matrimonio
152
+ # Bautismo
153
+
154
+ case registros_seleccionados[0][1]
155
+ when "Bautismo"
156
+ # Título del certificado en color rojo
157
+ pdf.text "CERTIFICADO DE BAUTISMO", :align => :center, :size => 20, :style => :bold, :color => "FF0000"
158
+ pdf.move_down 20
159
+ registros_seleccionados.each do |registro|
160
+ # Añadir márgenes izquierdo y derecho
161
+ # Fecha actual alineada a la derecha
162
+ pdf.text "Quito, #{cambiar_formato_fecha(Time.now.strftime("%d/%m/%Y"))}", :align => :right
163
+ pdf.move_down 20
164
+ # Tomo, página y número justificado
165
+ pdf.text "Yo, el infrascrito, certifico en legal forma a petición de la parte interesada que en el libro de bautismos de esta parroquia: Tomo #{registro[15]} - Página #{registro[16]} - Número #{registro[17]}, se halla inscrita la siguiente partida:", :align => :justify
166
+ pdf.move_down 10
167
+ # Fecha de bautismo
168
+ pdf.text "El día #{cambiar_formato_fecha(registro[2])}. En la parroquia de #{registro[25]} en el sector de #{registro[26]}.", :align => :justify
169
+ pdf.move_down 10
170
+ # Celebrante
171
+ pdf.text "El #{registro[3]} bautizó solemnemente a #{registro[19]} #{registro[20]}.", :align => :justify
172
+ pdf.move_down 10
173
+ # Fecha de nacimiento
174
+ pdf.text "Nacido/da en #{registro[21]} el #{cambiar_formato_fecha(registro[22])}.", :align => :justify
175
+ pdf.move_down 10
176
+ # Padres
177
+ pdf.text "Hijo/ja de #{registro[9]} y de #{registro[10]}.", :align => :justify
178
+ pdf.move_down 10
179
+ # Padrinos
180
+ pdf.text "Fueron sus padrinos: #{registro[5]} y #{registro[6]} a quienes se advirtió de sus obligaciones y parentezco espiritual.", :align => :justify
181
+ pdf.move_down 10
182
+ # Certifica
183
+ pdf.text "Lo certifica: #{registro[4]}.", :align => :justify
184
+ pdf.move_down 10
185
+ # Registro civil
186
+ pdf.text "REGISTRO CIVIL", :align => :center, :size => 16
187
+ pdf.move_down 10
188
+ pdf.text "Provincia: #{registro[29]}, Cantón: #{registro[30]}, Parroquia: #{registro[31]}", :align => :justify
189
+ pdf.text "Año: #{registro[32]}, Tomo: #{registro[33]}, Página: #{registro[34]}, Acta: #{registro[35]}", :align => :justify
190
+ pdf.text "Fecha: #{cambiar_formato_fecha(registro[36])}", :align => :justify
191
+ pdf.move_down 10
192
+ # Datos tomados fielmente de original
193
+ pdf.text "Datos tomados fielmente del original", :align => :center
194
+ pdf.move_down 40
195
+ # Firma del párroco
196
+ pdf.text "_______________________________", :align => :center
197
+ pdf.move_down 10
198
+ # Nombre del párroco
199
+ pdf.text "#{registro[27]}", :align => :center
200
+ pdf.move_down 10
201
+ # Parroco
202
+ pdf.text "Párroco", :align => :center
203
+ pdf.move_down 10
204
+ end
205
+ when "Confirmación"
206
+ pdf.text "CERTIFICADO DE CONFIRMACIÓN", :align => :center, :size => 20, :style => :bold, :color => "FF0000"
207
+ pdf.move_down 20
208
+ registros_seleccionados.each do |registro|
209
+ # Fecha actual alineada a la derecha
210
+ pdf.text "Quito, #{cambiar_formato_fecha(Time.now.strftime("%d/%m/%Y"))}", :align => :right
211
+ pdf.move_down 20
212
+ # Tomo, página y número justificado
213
+ pdf.text "Yo, el infrascrito, certifico en legal forma a petición de la parte interesada que en el libro de confirmaciones de esta parroquia: Tomo #{registro[15]} - Página #{registro[16]} - Número #{registro[17]}, se halla inscrita la siguiente partida:", :align => :justify
214
+ pdf.move_down 10
215
+ # Fecha de confirmación
216
+ pdf.text "El día #{cambiar_formato_fecha(registro[2])}. En la parroquia de #{registro[25]} en el sector de #{registro[26]}.", :align => :justify
217
+ pdf.move_down 10
218
+ # Celebrante
219
+ pdf.text "El #{registro[3]} confirmó en la fe critiana católica apostólica romana a #{registro[19]} #{registro[20]}.", :align => :justify
220
+ pdf.move_down 10
221
+ # Fecha de nacimiento
222
+ pdf.text "Nacido/da el #{registro[22]} en #{registro[21]}.", :align => :justify
223
+ pdf.move_down 10
224
+ # Padrinos
225
+ pdf.text "Fueron sus padrinos: #{registro[5]} y #{registro[6]} a quienes se advirtió de sus obligaciones y parentezco espiritual.", :align => :justify
226
+ pdf.move_down 10
227
+ # Certifica
228
+ pdf.text "Lo certifica: #{registro[4]}.", :align => :justify
229
+ pdf.move_down 10
230
+ # Datos tomados fielmente de original
231
+ pdf.text "Datos tomados fielmente del original", :align => :center
232
+ pdf.move_down 10
233
+ # Firma del párroco
234
+ pdf.text "_______________________________", :align => :center
235
+ pdf.move_down 10
236
+ # Nombre del párroco
237
+ pdf.text "#{registro[27]}", :align => :center
238
+ pdf.move_down 10
239
+ # Parroco
240
+ pdf.text "Párroco", :align => :center
241
+ pdf.move_down 10
242
+ end
243
+ when "Matrimonio"
244
+ pdf.text "CERTIFICADO DE MATRIMONIO", :align => :center, :size => 20, :style => :bold, :color => "FF0000"
245
+ pdf.move_down 20
246
+ registros_seleccionados.each do |registro|
247
+ # Fecha actual alineada a la derecha
248
+ pdf.text "Quito, #{cambiar_formato_fecha(Time.now.strftime("%d/%m/%Y"))}", :align => :right
249
+ pdf.move_down 20
250
+ # Tomo, página y número justificado
251
+ pdf.text "Yo, el infrascrito, certifico en legal forma a petición de la parte interesada que en el libro de matrimonios de esta parroquia: Tomo #{registro[15]} - Página #{registro[16]} - Número #{registro[17]}, se halla inscrita la siguiente partida:", :align => :justify
252
+ pdf.move_down 10
253
+ # Fecha de matrimonio
254
+ pdf.text "El día #{cambiar_formato_fecha(registro[2])} contrajeron matrimonio #{registro[19]} #{registro[20]} y #{registro[11]} #{registro[12]} en la parroquia de #{registro[25]} en el sector de #{registro[26]}.", :align => :justify
255
+ pdf.move_down 10
256
+ # Celebrante
257
+ pdf.text "Presenció y bendijo el matrimonio el #{registro[3]}.", :align => :justify
258
+ # Feligreses de la parroquia
259
+ pdf.text "Feligreses de la parroquia: #{registro[25]}.", :align => :justify
260
+ pdf.move_down 10
261
+ # Testigos
262
+ pdf.text "Fueron sus testigos: #{registro[7]} y #{registro[8]}.", :align => :justify
263
+ pdf.move_down 10
264
+ # Cerifica
265
+ pdf.text "Lo certifica: #{registro[4]}.", :align => :justify
266
+ pdf.move_down 10
267
+ # Registro civil
268
+ pdf.text "REGISTRO CIVIL", :align => :center, :size => 16
269
+ pdf.move_down 10
270
+ pdf.text "Provincia: #{registro[29]}, Cantón: #{registro[30]}, Parroquia: #{registro[31]}", :align => :justify
271
+ pdf.text "Año: #{registro[32]}, Tomo: #{registro[33]}, Página: #{registro[34]}, Acta: #{registro[35]}", :align => :justify
272
+ pdf.text "Fecha: #{cambiar_formato_fecha(registro[36])}", :align => :justify
273
+ pdf.move_down 10
274
+ # Datos tomados fielmente de original
275
+ pdf.text "Datos tomados fielmente del original", :align => :center
276
+ pdf.move_down 40
277
+ # Firma del párroco
278
+ pdf.text "_______________________________", :align => :center
279
+ pdf.move_down 10
280
+ # Nombre del párroco
281
+ pdf.text "#{registro[27]}", :align => :center
282
+ pdf.move_down 10
283
+ # Parroco
284
+ pdf.text "Párroco", :align => :center
285
+ pdf.move_down 10
286
+ end
287
+ end
288
+ end
289
+ # Abre el archivo PDF con el visor de PDF predeterminado del sistema
290
+ system("xdg-open '#{@archivo_pdf}'")
291
+ end
292
+ # Mensaje de confirmación
293
+ FXMessageBox.information(self, MBOX_OK, "Información", "El archivo PDF se ha generado correctamente")
294
+ end
295
+
296
+ @btnedit.connect(SEL_COMMAND) do
297
+ # Editar registros seleccionados y actualizar la basee de datos
298
+ registros_seleccionados.each do |registro|
299
+ case registros_seleccionados[0][1]
300
+ when "Bautismo"
301
+ # Obtenemos el registro de la base de datos
302
+ sql = "SELECT * FROM sacramentos INNER JOIN libros ON sacramentos.id = libros.id INNER JOIN creyentes ON sacramentos.id = creyentes.id INNER JOIN parroquias ON sacramentos.id = parroquias.id INNER JOIN registros_civiles ON sacramentos.id = registros_civiles.id WHERE sacramentos.id = #{registro[0]}"
303
+ $conn.exec(sql) do |result|
304
+ @registros = result.values[0]
305
+ # Abrimos la ventana de edición
306
+ require_relative 'actualizar_bautismo'
307
+ vtnactualizar_bautismo = ActualizarBautismo.new(@app, @registros)
308
+ vtnactualizar_bautismo.create
309
+ vtnactualizar_bautismo.show(PLACEMENT_SCREEN)
310
+ end
311
+ when "Confirmación"
312
+ # Obtenemos el registro de la base de datos
313
+ sql = "SELECT * FROM sacramentos INNER JOIN libros ON sacramentos.id = libros.id INNER JOIN creyentes ON sacramentos.id = creyentes.id INNER JOIN parroquias ON sacramentos.id = parroquias.id INNER JOIN registros_civiles ON sacramentos.id = registros_civiles.id WHERE sacramentos.id = #{registro[0]}"
314
+ $conn.exec(sql) do |result|
315
+ @registros = result.values[0]
316
+ # Abrimos la ventana de edición
317
+ require_relative 'actualizar_confirmacion'
318
+ vtnactualizar_confirmacion = ActualizarConfirmacion.new(@app, @registros)
319
+ vtnactualizar_confirmacion.create
320
+ vtnactualizar_confirmacion.show(PLACEMENT_SCREEN)
321
+ end
322
+ when "Matrimonio"
323
+ # Obtenemos el registro de la base de datos
324
+ sql = "SELECT * FROM sacramentos INNER JOIN libros ON sacramentos.id = libros.id INNER JOIN creyentes ON sacramentos.id = creyentes.id INNER JOIN parroquias ON sacramentos.id = parroquias.id INNER JOIN registros_civiles ON sacramentos.id = registros_civiles.id WHERE sacramentos.id = #{registro[0]}"
325
+ $conn.exec(sql) do |result|
326
+ @registros = result.values[0]
327
+ # Abrimos la ventana de edición
328
+ require_relative 'actualizar_matrimonio'
329
+ vtnactualizar_matrimonio = ActualizarMatrimonio.new(@app, @registros)
330
+ vtnactualizar_matrimonio.create
331
+ vtnactualizar_matrimonio.show(PLACEMENT_SCREEN)
332
+ end
333
+ end
334
+ end
335
+ end
336
+
337
+ @btndelete.connect(SEL_COMMAND) do
338
+ # eliminar registros seleccionados
339
+ if registros_seleccionados.empty?
340
+ FXMessageBox.warning(self, MBOX_OK, "Advertencia", "Debe seleccionar al menos un registro")
341
+ else
342
+ # Mensaje de confirmación
343
+ if FXMessageBox.question(self, MBOX_YES_NO, "Confirmación", "¿Está seguro de eliminar los registros seleccionados?") == MBOX_CLICKED_YES
344
+ registros_seleccionados.each do |registro|
345
+ # Eliminar registros de la base de datos
346
+ case registros_seleccionados[0][1]
347
+ when "Bautismo"
348
+ # Eliminar registros de la tabla sacramentos
349
+ sql = "DELETE FROM sacramentos WHERE id = #{registro[0]}"
350
+ $conn.exec(sql)
351
+ # Eliminar registros de la tabla libros
352
+ sql = "DELETE FROM libros WHERE id = #{registro[14]}"
353
+ $conn.exec(sql)
354
+ # Eliminar registros de la tabla creyentes
355
+ sql = "DELETE FROM creyentes WHERE id = #{registro[18]}"
356
+ $conn.exec(sql)
357
+ # Eliminar registros de la tabla parroquias
358
+ sql = "DELETE FROM parroquias WHERE id = #{registro[24]}"
359
+ $conn.exec(sql)
360
+ # Eliminar registros de la tabla registros_civiles
361
+ sql = "DELETE FROM registros_civiles WHERE id = #{registro[28]}"
362
+ $conn.exec(sql)
363
+ when "Confirmación"
364
+ # Eliminar registros de la tabla sacramentos
365
+ sql = "DELETE FROM sacramentos WHERE id = #{registro[0]}"
366
+ $conn.exec(sql)
367
+ # Eliminar registros de la tabla libros
368
+ sql = "DELETE FROM libros WHERE id = #{registro[14]}"
369
+ $conn.exec(sql)
370
+ # Eliminar registros de la tabla creyentes
371
+ sql = "DELETE FROM creyentes WHERE id = #{registro[18]}"
372
+ $conn.exec(sql)
373
+ # Eliminar registros de la tabla parroquias
374
+ sql = "DELETE FROM parroquias WHERE id = #{registro[24]}"
375
+ $conn.exec(sql)
376
+ # Eliminar registros de la tabla registros_civiles
377
+ sql = "DELETE FROM registros_civiles WHERE id = #{registro[28]}"
378
+ $conn.exec(sql)
379
+ when "Matrimonio"
380
+ # Eliminar registros de la tabla sacramentos
381
+ sql = "DELETE FROM sacramentos WHERE id = #{registro[0]}"
382
+ $conn.exec(sql)
383
+ # Eliminar registros de la tabla libros
384
+ sql = "DELETE FROM libros WHERE id = #{registro[14]}"
385
+ $conn.exec(sql)
386
+ # Eliminar registros de la tabla creyentes
387
+ sql = "DELETE FROM creyentes WHERE id = #{registro[18]}"
388
+ $conn.exec(sql)
389
+ # Eliminar registros de la tabla parroquias
390
+ sql = "DELETE FROM parroquias WHERE id = #{registro[24]}"
391
+ $conn.exec(sql)
392
+ # Eliminar registros de la tabla registros_civiles
393
+ sql = "DELETE FROM registros_civiles WHERE id = #{registro[28]}"
394
+ $conn.exec(sql)
395
+ end
396
+ # Mensaje de confirmación
397
+ FXMessageBox.information(self, MBOX_OK, "Información", "Los registros seleccionados se han eliminado correctamente")
398
+ end
399
+ end
400
+ end
401
+ end
402
+
403
+ @btncancel.connect(SEL_COMMAND) do
404
+ # cerrar ventana
405
+ close
406
+ end
407
+ end
408
+
409
+ def create
410
+ super
411
+ show(PLACEMENT_SCREEN)
412
+ end
413
+ end