@@ -35,81 +35,8 @@ def fn5E0(conn, return_dict):
3535 ]
3636 """
3737 _r = False
38- _ExistData = []
39- try :
40- _ExistData = ejecutar_sql (conn , """--sql
41- SELECT DISTINCT
42- rae.Date, -- fecha completa de la clase
43- strftime('%Y-%m-%d', rae.Date) as 'fecha', -- rescata solo la fecha desde rae.Date
44- strftime('%H:%M', rae.Date, substr(rae.Date,length(rae.Date)-5,6)) as 'hora', -- rescata solo la hora desde rae.Date
45- CASE
46- WHEN strftime('%w', rae.Date) = '0' THEN 'Domingo'
47- WHEN strftime('%w', rae.Date) = '1' THEN 'Lunes'
48- WHEN strftime('%w', rae.Date) = '2' THEN 'Martes'
49- WHEN strftime('%w', rae.Date) = '3' THEN 'Miércoles'
50- WHEN strftime('%w', rae.Date) = '4' THEN 'Jueves'
51- WHEN strftime('%w', rae.Date) = '5' THEN 'Viernes'
52- WHEN strftime('%w', rae.Date) = '6' THEN 'Sabado'
53- END as 'diaSemana', -- rescata solo el dpia de la semana desde rae.Date
54- count(refattendancestatusid) as 'totalEstudiantes', -- Cantidad total de estudiantes
55- sum(CASE WHEN refattendancestatusid IN (1) THEN 1 ELSE 0 END) as 'estudiantesPresentes',
56- group_concat(CASE WHEN refattendancestatusid IN (1) THEN Identifier END) as 'estudiantesPresentesNumLista',
57- sum(CASE WHEN refattendancestatusid IN (2,3) THEN 1 ELSE 0 END) as 'estudiantesAusentes',
58- group_concat(CASE WHEN refattendancestatusid IN (2,3) THEN Identifier END) as 'estudiantesAusentesNumLista',
59- sum(CASE WHEN refattendancestatusid IN (4) THEN 1 ELSE 0 END) as 'estudiantesRetrasados',
60- group_concat(CASE WHEN refattendancestatusid IN (4) THEN Identifier END) as 'estudiantesRetrasadosNumLista',
61- count(rae.digitalRandomKey) as 'firmadoEnClases'
62- FROM Organization O
63- OUTER LEFT JOIN RefOrganizationType rot
64- ON O.RefOrganizationTypeId = rot.RefOrganizationTypeId
65- AND O.RefOrganizationTypeId IN (
66- SELECT RefOrganizationTypeId
67- FROM RefOrganizationType
68- WHERE Description IN ('Course Section')
69- )
70- OUTER LEFT JOIN OrganizationPersonRole opr
71- ON O.OrganizationId = opr.OrganizationId
72- AND opr.RecordEndDateTime IS NULL
73- OUTER LEFT JOIN RoleAttendanceEvent rae
74- ON opr.OrganizationPersonRoleId = rae.OrganizationPersonRoleId
75- AND rae.RecordEndDateTime IS NULL
76- OUTER LEFT JOIN PersonIdentifier pid
77- ON opr.personId = pid.personId
78- AND pid.refPersonIdentificationSystemId IN (
79- SELECT refPersonIdentificationSystemId
80- FROM refPersonIdentificationSystem
81- WHERE Code IN ('listNumber')
82- )
83- AND pid.RecordEndDateTime IS NULL
84- OUTER LEFT JOIN Role rol
85- ON opr.RoleId = rol.RoleId
86- AND opr.RoleId IN (
87- SELECT RoleId
88- FROM Role
89- WHERE Name IN ('Estudiante')
90- )
91- OUTER LEFT JOIN OrganizationCalendar oc
92- ON O.OrganizationId = oc.OrganizationId
93- AND oc.RecordEndDateTime IS NULL
94- OUTER LEFT JOIN OrganizationCalendarSession ocs
95- ON oc.OrganizationCalendarId = ocs.OrganizationCalendarId
96- AND ocs.RecordEndDateTime IS NULL
97- OUTER LEFT JOIN CourseSectionSchedule css
98- ON O.OrganizationId = css.OrganizationId
99- AND css.RecordEndDateTime IS NULL
100- WHERE
101- Date is not NULL
102- GROUP BY rae.Date
103- """ )
104- if (not _ExistData or len (_ExistData ) == 0 ):
105- raise Exception ("No hay registros de información" )
106- except Exception as e :
107- logger .info (f"S/Datos" )
108- _r = True
109- logger .info (f'Sin asistencia por bloque: { e } ' )
110- return_dict [getframeinfo (currentframe ()).function ] = True
111- return True
11238 try :
39+ logger .info (f"A ejecutar asistencia" )
11340 asistencia = ejecutar_sql (conn , """--sql
11441 /*
11542 6.2 Contenido mínimo, letra b.2 -> validar el registro de asistencia bloque a bloque
@@ -127,9 +54,9 @@ def fn5E0(conn, return_dict):
12754 */
12855 SELECT DISTINCT
12956 --group_concat(rae.Date),
130- rae.Date, -- fecha completa de la clase
131- strftime('%Y-%m-%d', rae.Date) as 'fecha', -- rescata solo la fecha desde rae.Date
132- strftime('%H:%M', rae.Date, substr(rae.Date,length(rae.Date)-5,6)) as 'hora', -- rescata solo la hora desde rae.Date
57+ rae.Date, -- 00 fecha completa de la clase
58+ DATE( rae.Date) as 'fecha', -- 01 rescata solo la fecha desde rae.Date
59+ strftime('%H:%M', rae.Date, substr(rae.Date,length(rae.Date)-5,6)) as 'hora', -- 02 rescata solo la hora desde rae.Date
13360 CASE
13461 WHEN strftime('%w', rae.Date) = '0' THEN 'Domingo'
13562 WHEN strftime('%w', rae.Date) = '1' THEN 'Lunes'
@@ -138,44 +65,43 @@ def fn5E0(conn, return_dict):
13865 WHEN strftime('%w', rae.Date) = '4' THEN 'Jueves'
13966 WHEN strftime('%w', rae.Date) = '5' THEN 'Viernes'
14067 WHEN strftime('%w', rae.Date) = '6' THEN 'Sabado'
141- END as 'diaSemana', -- rescata solo el dia de la semana desde rae.Date
142- count(refattendancestatusid) as 'totalEstudiantes', -- Cantidad total de estudiantes
143- sum(CASE WHEN refattendancestatusid IN (1) THEN 1 ELSE 0 END) as 'estudiantesPresentes',
144- group_concat(CASE WHEN refattendancestatusid IN (1) THEN Identifier END) as 'estudiantesPresentesNumLista',
145- sum(CASE WHEN refattendancestatusid IN (2,3) THEN 1 ELSE 0 END) as 'estudiantesAusentes',
146- group_concat(CASE WHEN refattendancestatusid IN (2,3) THEN Identifier END) as 'estudiantesAusentesNumLista',
147- sum(CASE WHEN refattendancestatusid IN (4) THEN 1 ELSE 0 END) as 'estudiantesRetrasados',
148- group_concat(CASE WHEN refattendancestatusid IN (4) THEN Identifier END) as 'estudiantesRetrasadosNumLista',
149- count(rae.digitalRandomKey) as 'firmadoEnClases'
68+ END as 'diaSemana', -- 03 rescata solo el dia de la semana desde rae.Date
69+ count(refattendancestatusid) as 'totalEstudiantes', -- 04 Cantidad total de estudiantes
70+ sum(CASE WHEN refattendancestatusid IN (1) THEN 1 ELSE 0 END) as 'estudiantesPresentes', -- 05
71+ -- group_concat(CASE WHEN refattendancestatusid IN (1) THEN Identifier END) as 'estudiantesPresentesNumLista',
72+ sum(CASE WHEN refattendancestatusid IN (2,3) THEN 1 ELSE 0 END) as 'estudiantesAusentes', -- 06
73+ -- group_concat(CASE WHEN refattendancestatusid IN (2,3) THEN Identifier END) as 'estudiantesAusentesNumLista',
74+ sum(CASE WHEN refattendancestatusid IN (4) THEN 1 ELSE 0 END) as 'estudiantesRetrasados', -- 07
75+ -- group_concat(CASE WHEN refattendancestatusid IN (4) THEN Identifier END) as 'estudiantesRetrasadosNumLista',
76+ count(rae.digitalRandomKey) as 'firmadoEnClases' -- 08
15077 FROM Organization O
15178 JOIN RefOrganizationType rot
15279 ON O.RefOrganizationTypeId = rot.RefOrganizationTypeId
153- AND O.RefOrganizationTypeId IN (
80+ AND O.RefOrganizationTypeId = (
15481 SELECT RefOrganizationTypeId
15582 FROM RefOrganizationType
156- WHERE Description IN ( 'Course Section')
83+ WHERE Description = 'Course Section'
15784 )
85+ AND O.RecordEndDateTime IS NULL
15886 JOIN OrganizationPersonRole opr
15987 ON O.OrganizationId = opr.OrganizationId
88+ AND opr.RoleId = (
89+ SELECT RoleId
90+ FROM Role
91+ WHERE Name = 'Estudiante'
92+ )
16093 AND opr.RecordEndDateTime IS NULL
16194 JOIN RoleAttendanceEvent rae
16295 ON opr.OrganizationPersonRoleId = rae.OrganizationPersonRoleId
16396 AND rae.RecordEndDateTime IS NULL
16497 JOIN PersonIdentifier pid
16598 ON opr.personId = pid.personId
166- AND pid.refPersonIdentificationSystemId IN (
99+ AND pid.refPersonIdentificationSystemId = (
167100 SELECT refPersonIdentificationSystemId
168101 FROM refPersonIdentificationSystem
169- WHERE Code IN ( 'listNumber')
102+ WHERE Code = 'listNumber'
170103 )
171104 AND pid.RecordEndDateTime IS NULL
172- JOIN Role rol
173- ON opr.RoleId = rol.RoleId
174- AND opr.RoleId IN (
175- SELECT RoleId
176- FROM Role
177- WHERE Name IN ('Estudiante')
178- )
179105 JOIN OrganizationCalendar oc
180106 ON O.OrganizationId = oc.OrganizationId
181107 AND oc.RecordEndDateTime IS NULL
@@ -197,7 +123,7 @@ def fn5E0(conn, return_dict):
197123 ocs.Description NOT NULL
198124 AND
199125 -- Verifica que el indicador sea True, ya que en estos casos corresponde la relación
200- ocs.AttendanceTermIndicator IN (1)
126+ ocs.AttendanceTermIndicator = 1
201127 AND
202128 -- Verifica que la firma se encuentre cargada en el sistema
203129 rae.digitalRandomKey NOT NULL
@@ -221,6 +147,7 @@ def fn5E0(conn, return_dict):
221147
222148 GROUP BY rae.Date
223149 """ )
150+ logger .info (f"Cantidad asistencia: { len (asistencia )} " )
224151 except Exception as e :
225152 logger .error (f'Rechazado' )
226153 _r = False
@@ -230,12 +157,14 @@ def fn5E0(conn, return_dict):
230157 return False
231158 try :
232159 if (len (asistencia )> 0 ):
160+ logger .info ("Entro al if asistencia>0" )
233161 totalEstudiantes = list ([m [4 ] for m in asistencia if m [4 ] is not None ])
234162 estudiantesPresentes = list ([m [5 ] for m in asistencia if m [5 ] is not None ])
235- estudiantesAusentes = list ([m [7 ] for m in asistencia if m [7 ] is not None ])
236- estudiantesRetrasados = list ([m [9 ] for m in asistencia if m [9 ] is not None ])
237- firmadoEnClases = list ([m [11 ] for m in asistencia if m [11 ] is not None ])
238-
163+ estudiantesAusentes = list ([m [6 ] for m in asistencia if m [6 ] is not None ])
164+ estudiantesRetrasados = list ([m [7 ] for m in asistencia if m [7 ] is not None ])
165+ firmadoEnClases = list ([m [8 ] for m in asistencia if m [8 ] is not None ])
166+ logger .info (f"Total estudiantes: { len (totalEstudiantes )} " )
167+
239168 for idx_ ,el_ in enumerate (totalEstudiantes ):
240169 if (el_ != (estudiantesPresentes [idx_ ]+ estudiantesAusentes [idx_ ]+ estudiantesRetrasados [idx_ ])):
241170 logger .error (f'Rechazado' )
@@ -259,7 +188,7 @@ def fn5E0(conn, return_dict):
259188 return _r
260189 else :
261190 logger .error (f'S/Datos' )
262- _r = False
191+ _r = True
263192 logger .error (f'No hay datos de asignatura' )
264193 return_dict [getframeinfo (currentframe ()).function ] = _r
265194 logger .info (f"{ current_process ().name } finalizando..." )
0 commit comments