@@ -24,16 +24,15 @@ def fn6B0(conn, return_dict):
2424 ]
2525 """
2626 _r = False
27- _rightList = []
27+ asistencias_tachadas = []
2828 try :
29- _rightList = ejecutar_sql (conn , """--sql
30- WITH RECURSIVE cte_Attendance (RoleAttendanceEventId, OrganizationPersonRoleId, RUN, Fecha, RecordEndDateTime) AS (
31- SELECT
29+ asistencias_tachadas = ejecutar_sql (conn , """--sql
30+ SELECT
3231 rae.RoleAttendanceEventId
3332 ,rae.OrganizationPersonRoleId
3433 ,pid.Identifier as 'RUN'
3534 ,rae.Date
36- ,rae.RecordEndDateTime
35+ ,rae.RecordEndDateTime,*
3736 FROM RoleAttendanceEvent rae
3837 JOIN OrganizationPersonRole opr
3938 on rae.OrganizationPersonRoleId = opr.OrganizationPersonRoleId
@@ -49,93 +48,29 @@ def fn6B0(conn, return_dict):
4948 ON opr.RoleId = rol_e.RoleId
5049 AND rol_e.Name IN ('Estudiante')
5150 WHERE
52- rae.RecordEndDateTime IS NOT NULL
53- AND
54- rae.RecordStartDateTime IS NOT NULL
55- AND
56- rae.oprIdRatificador IS NULL
57- AND
58- rae.firmaRatificador IS NULL
59- AND
60- rae.fechaRatificador IS NULL
61- AND
62- -- Agrega a la lista todos los registros que cumplen con la expresión regular
63- rae.Date REGEXP '^(19|2[0-9])[0-9]{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])([T ])(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?((\+|\-)(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]))$'
64- AND
65- -- Agrega a la lista todos los registros que cumplen con la expresión regular
66- rae.digitalRandomKeyDate REGEXP '^(19|2[0-9])[0-9]{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])([T ])(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?((\+|\-)(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]))$'
67-
68- UNION ALL
69-
70- SELECT
71- rae.RoleAttendanceEventId
72- ,rae.OrganizationPersonRoleId
73- ,pid.Identifier as 'RUN'
74- ,rae.Date, rae.RecordEndDateTime
75- FROM RoleAttendanceEvent rae
76- JOIN cte_Attendance cte
77- ON cte.RecordEndDateTime = rae.Date
78- AND cte.OrganizationPersonRoleId = rae.OrganizationPersonRoleId
51+ rae.RecordEndDateTime IS NOT NULL
7952 AND rae.RecordStartDateTime IS NOT NULL
80- JOIN OrganizationPersonRole opr
81- on rae.OrganizationPersonRoleId = opr.OrganizationPersonRoleId
82- JOIN RefAttendanceEventType raet
83- ON rae.RefAttendanceEventTypeId = raet.RefAttendanceEventTypeId
84- AND raet.Code IN ('DailyAttendance','ClassSectionAttendance')
85- JOIN PersonIdentifier pid
86- ON opr.personid = pid.personid
87- JOIN RefPersonIdentificationSystem rpis
88- ON pid.RefPersonIdentificationSystemId = rpis.RefPersonIdentificationSystemId
89- AND rpis.Code IN ('RUN')
90- JOIN role rol_e
91- ON opr.RoleId = rol_e.RoleId
92- AND rol_e.Name IN ('Estudiante')
93- JOIN OrganizationPersonRole opr_ratificador
94- ON rae.oprIdRatificador = opr_ratificador.OrganizationPersonRoleId
95- JOIN role rol_ratificador
96- ON opr_ratificador.RoleId = rol_ratificador.RoleId
97- AND rol_ratificador.Name IN ('Encargado de la asistencia','Director(a)')
98- WHERE
99- -- Agrega a la lista todos los registros que cumplen con la expresión regular
100- rae.Date REGEXP '^(19|2[0-9])[0-9]{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])([T ])(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?((\+|\-)(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]))$'
101- AND
102- -- Agrega a la lista todos los registros que cumplen con la expresión regular
103- rae.digitalRandomKeyDate REGEXP '^(19|2[0-9])[0-9]{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])([T ])(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?((\+|\-)(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]))$'
104- AND
105- -- Agrega a la lista todos los registros que cumplen con la expresión regular
106- rae.fechaRatificador REGEXP '^(19|2[0-9])[0-9]{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])([T ])(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?((\+|\-)(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]))$'
107- AND
108- -- Agrega a la lista todos los registros que no cumplan con la expresión regular
109- rae.digitalRandomKey REGEXP '^[0-9]{6}([-]{1}[0-9kK]{1})?$'
110- AND
111- -- Agrega a la lista todos los registros que no cumplan con la expresión regular
112- rae.firmaRatificador REGEXP '^[0-9]{6}([-]{1}[0-9kK]{1})?$'
113-
114- )
115- SELECT
116- group_concat(RoleAttendanceEventId) as 'roleAttendanceEventIds'
117- ,OrganizationPersonRoleId
118- ,RUN
119- ,min(Fecha) as 'PRIMERA_FECHA_REGISTRADA'
120- ,max(fecha) as 'ULTIMA_FECHA_REGISTRADA'
121- FROM cte_Attendance
12253 """ )
123- except :
124- logger .info (f"Resultado: { _rightList } -> { str (e )} " )
125-
126- _errorsList = []
54+ except Exception as e :
55+ logger .info (f"S/Datos" )
56+ return_dict [getframeinfo (currentframe ()).function ] = True
57+ logger .info (f"{ current_process ().name } finalizando..." )
58+ logger .info (f"Resultado: { asistencias_tachadas } -> { str (e )} " )
59+ return True
60+ if len (asistencias_tachadas ) == 0 :
61+ logger .info (f"S/Datos" )
62+ return_dict [getframeinfo (currentframe ()).function ] = True
63+ logger .info (f"{ current_process ().name } finalizando..." )
64+ return True
65+ asistencias_correctamente_corregidas = []
12766 try :
128- _errorsList = ejecutar_sql (conn , """--sql
129- SELECT *
130- FROM RoleAttendanceEvent rae
131- JOIN (
132- WITH RECURSIVE cte_Attendance (RoleAttendanceEventId, OrganizationPersonRoleId, RUN, Fecha, RecordEndDateTime) AS (
133- SELECT
67+ asistencias_correctamente_corregidas = ejecutar_sql (conn , """--sql
68+ SELECT
13469 rae.RoleAttendanceEventId
13570 ,rae.OrganizationPersonRoleId
13671 ,pid.Identifier as 'RUN'
13772 ,rae.Date
138- ,rae.RecordEndDateTime
73+ ,rae.RecordEndDateTime,*
13974 FROM RoleAttendanceEvent rae
14075 JOIN OrganizationPersonRole opr
14176 on rae.OrganizationPersonRoleId = opr.OrganizationPersonRoleId
@@ -150,123 +85,67 @@ def fn6B0(conn, return_dict):
15085 JOIN role rol_e
15186 ON opr.RoleId = rol_e.RoleId
15287 AND rol_e.Name IN ('Estudiante')
88+ JOIN RoleAttendanceEvent raeReal
89+ ON raeReal.Date = rae.RecordEndDateTime --para conectar la asistencia errada con la real
90+ JOIN OrganizationPersonRole opr_ratificador
91+ ON rae.oprIdRatificador = opr_ratificador.OrganizationPersonRoleId
92+ JOIN role rol_ratificador
93+ ON opr_ratificador.RoleId = rol_ratificador.RoleId
94+ AND rol_ratificador.Name IN ('Encargado de la asistencia','Director(a)')
15395 WHERE
15496 rae.RecordEndDateTime IS NOT NULL
155- AND
156- rae.RecordStartDateTime IS NOT NULL
157- AND
158- rae.oprIdRatificador IS NULL
159- AND
160- rae.firmaRatificador IS NULL
161- AND
162- rae.fechaRatificador IS NULL
97+ AND rae.RecordStartDateTime IS NOT NULL
98+ AND rae.oprIdRatificador IS NOT NULL
99+ AND rae.firmaRatificador IS NOT NULL
100+ AND rae.fechaRatificador IS NOT NULL
163101 AND
164102 -- Agrega a la lista todos los registros que cumplen con la expresión regular
165103 rae.Date REGEXP '^(19|2[0-9])[0-9]{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])([T ])(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?((\+|\-)(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]))$'
166104 AND
167105 -- Agrega a la lista todos los registros que cumplen con la expresión regular
168106 rae.digitalRandomKeyDate REGEXP '^(19|2[0-9])[0-9]{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])([T ])(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?((\+|\-)(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]))$'
169-
170- UNION ALL
171-
172- SELECT
173- rae.RoleAttendanceEventId
174- ,rae.OrganizationPersonRoleId
175- ,pid.Identifier as 'RUN'
176- ,rae.Date, rae.RecordEndDateTime
177- FROM RoleAttendanceEvent rae
178- JOIN cte_Attendance cte
179- ON cte.RecordEndDateTime = rae.Date
180- AND cte.OrganizationPersonRoleId = rae.OrganizationPersonRoleId
181- AND rae.RecordStartDateTime IS NOT NULL
182- JOIN OrganizationPersonRole opr
183- on rae.OrganizationPersonRoleId = opr.OrganizationPersonRoleId
184- JOIN RefAttendanceEventType raet
185- ON rae.RefAttendanceEventTypeId = raet.RefAttendanceEventTypeId
186- AND raet.Code IN ('DailyAttendance','ClassSectionAttendance')
187- JOIN PersonIdentifier pid
188- ON opr.personid = pid.personid
189- JOIN RefPersonIdentificationSystem rpis
190- ON pid.RefPersonIdentificationSystemId = rpis.RefPersonIdentificationSystemId
191- AND rpis.Code IN ('RUN')
192- JOIN role rol_e
193- ON opr.RoleId = rol_e.RoleId
194- AND rol_e.Name IN ('Estudiante')
195- JOIN OrganizationPersonRole opr_ratificador
196- ON rae.oprIdRatificador = opr_ratificador.OrganizationPersonRoleId
197- JOIN role rol_ratificador
198- ON opr_ratificador.RoleId = rol_ratificador.RoleId
199- AND rol_ratificador.Name IN ('Encargado de la asistencia','Director(a)')
200- WHERE
201- -- Agrega a la lista todos los registros que cumplen con la expresión regular
202- rae.Date REGEXP '^(19|2[0-9])[0-9]{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])([T ])(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?((\+|\-)(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]))$'
203107 AND
204- -- Agrega a la lista todos los registros que cumplen con la expresión regular
205- rae.digitalRandomKeyDate REGEXP '^(19|2[0-9])[0-9]{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])([T ])(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?((\+|\-)(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]))$'
206- AND
207108 -- Agrega a la lista todos los registros que cumplen con la expresión regular
208109 rae.fechaRatificador REGEXP '^(19|2[0-9])[0-9]{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])([T ])(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?((\+|\-)(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]))$'
209110 AND
210111 -- Agrega a la lista todos los registros que no cumplan con la expresión regular
211112 rae.digitalRandomKey REGEXP '^[0-9]{6}([-]{1}[0-9kK]{1})?$'
212113 AND
213114 -- Agrega a la lista todos los registros que no cumplan con la expresión regular
214- rae.firmaRatificador REGEXP '^[0-9]{6}([-]{1}[0-9kK]{1})?$'
215-
216- )
217- SELECT
218- group_concat(RoleAttendanceEventId) as 'roleAttendanceEventIds'
219- ,OrganizationPersonRoleId
220- ,RUN
221- ,min(Fecha) as 'PRIMERA_FECHA_REGISTRADA'
222- ,max(fecha) as 'ULTIMA_FECHA_REGISTRADA'
223- FROM cte_Attendance
224- ) result ON (result.roleAttendanceEventIds) NOT LIKE '%' || rae.RoleAttendanceEventId || '%'
225- LEFT JOIN OrganizationPersonRole opr
226- on rae.OrganizationPersonRoleId = opr.OrganizationPersonRoleId
227- LEFT JOIN RefAttendanceEventType raet
228- ON rae.RefAttendanceEventTypeId = raet.RefAttendanceEventTypeId
229- AND raet.Code IN ('DailyAttendance','ClassSectionAttendance')
230- LEFT JOIN role rol_e
231- ON opr.RoleId = rol_e.RoleId
232- AND rol_e.Name IN ('Estudiante')
233- WHERE
234- rae.RecordEndDateTime IS NOT NULL
235- OR
236- rae.oprIdRatificador IS NOT NULL
237- OR
238- rae.firmaRatificador IS NOT NULL
239- OR
240- rae.fechaRatificador IS NOT NULL
241- OR
242- rae.RecordStartDateTime != Date
243- """ )
115+ rae.firmaRatificador REGEXP '^[0-9]{6}([-]{1}[0-9kK]{1})?$'
116+ """ )
244117 except :
245- logger .info (f"Resultado: { _errorsList } -> { str (e )} " )
118+ logger .error (f"NO se pudo ejecutar la consulta de entrega de informaciÓn: { str (e )} " )
119+ logger .error (f"Rechazado" )
120+ return_dict [getframeinfo (currentframe ()).function ] = False
121+ logger .info (f"{ current_process ().name } finalizando..." )
122+ return False
246123
247124 try :
248- _ids = (list ([m [0 ] for m in _rightList if m [0 ] is not None ]))
249- if (not _errorsList and not _ids ):
250- logger .info (f"S/Datos" )
251- return_dict [getframeinfo (currentframe ()).function ] = True
252- logger .info (f"{ current_process ().name } finalizando..." )
253- return True
254-
255- if (not _errorsList and _ids ):
256- logger .info (f"APROBADO" )
257- return_dict [getframeinfo (currentframe ()).function ] = True
258- logger .info (f"{ current_process ().name } finalizando..." )
259- return True
125+ if len (asistencias_tachadas ) == len (asistencias_correctamente_corregidas ):
126+ logger .info (f"Aprobado" )
127+ return_dict [getframeinfo (currentframe ()).function ] = True
128+ logger .info (f"{ current_process ().name } finalizando..." )
129+ return True
130+ else :
131+ _ids_correctos = (list ([m [0 ] for m in asistencias_correctamente_corregidas if m [0 ] is not None ]))
132+ _ids_incorrectos = (list ([m [0 ] for m in asistencias_tachadas if m [0 ] is not None and m [0 ] not in _ids_correctos ]))
133+ if len (_ids_incorrectos ) > 0 :
134+ logger .error (f"Los siguientes roleAttendanceEvent Ids estan con problemas: { str (_ids_incorrectos )} " )
135+ logger .error (f"Rechazado" )
136+ return_dict [getframeinfo (currentframe ()).function ] = False
137+ logger .info (f"{ current_process ().name } finalizando..." )
138+ return False
139+ else :
140+ logger .error (f"Algo extraño sucedió, favor reportar al foro" )
141+ logger .error (f"Rechazado" )
142+ return_dict [getframeinfo (currentframe ()).function ] = False
143+ logger .info (f"{ current_process ().name } finalizando..." )
144+ return False
260145
261- roleAttendanceEventIds = (list ([m [0 ] for m in _errorsList if m [0 ] is not None ]))
262- logger .error (f"Los siguientes roleAttendanceEvent Ids estan con problemas: { str (roleAttendanceEventIds )} " )
263- logger .error (f"Rechazado" )
264- return_dict [getframeinfo (currentframe ()).function ] = False
265- logger .info (f"{ current_process ().name } finalizando..." )
266- return False
267146 except Exception as e :
268- logger .error (f"NO se pudo ejecutar la consulta de entrega de informaciÓn: { str (e )} " )
269- logger .error (f"Rechazado" )
270- return_dict [getframeinfo (currentframe ()).function ] = False
271- logger .info (f"{ current_process ().name } finalizando..." )
272- return False
147+ logger .error (f"NO se pudo ejecutar la consulta de entrega de informaciÓn: { str (e )} " )
148+ logger .error (f"Rechazado" )
149+ return_dict [getframeinfo (currentframe ()).function ] = False
150+ logger .info (f"{ current_process ().name } finalizando..." )
151+ return False
0 commit comments