PageRenderTime 50ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/application/modules/reportes/controllers/Certificado_parcial.php

https://bitbucket.org/claudia_33/proyecto-divino
PHP | 214 lines | 188 code | 9 blank | 17 comment | 13 complexity | 24e8956d82eb04775454de5fee480d2a MD5 | raw file
Possible License(s): GPL-3.0, LGPL-3.0
  1. <?php
  2. require_once APPPATH.'/controllers/Panel.php';
  3. class Certificado_parcial extends Panel{
  4. function __construct() {
  5. parent::__construct();
  6. }
  7. /*
  8. * Esto es un script que reemplaza palabras por datos.
  9. * Para el caso de las tablas repetitivas como las notas se diseña la tabla en reportes
  10. * Los tr que se van a repetir en dicha tabla deben estar dentro de un tbody y los datos extras dentro de un thead o un tfooter
  11. * Luego cambiar el id de la tabla en $tbody = $tbody[2]; linea 56 la cual comienza desde 0 y su maximo valor la cantidad de tablas -1
  12. * El reporte debe estar diseñado para que los datos a mostrar corresponden al nombre dado en el select [plan_id] => valor_plan_id
  13. */
  14. function _reemplazar($texto,$id){
  15. $this->load->library('enletras');
  16. //Certificado
  17. $this->db->select(
  18. "
  19. user.nombre,
  20. user.apellido_paterno,
  21. user.apellido_materno,
  22. user.cedula,
  23. user.lugar_nacimiento,
  24. user.fecha_nacimiento,
  25. programacion_carreras.ciudad as Ciudad,
  26. programacion_carreras.direccion as Direccion,
  27. programacion_carreras.telefono as Telefono,
  28. programacion_carreras.departamento as Departamento,
  29. certificado_de_estudio.nro_folio as folio_nro,
  30. certificado_de_estudio.nro_registro as registro_nro,
  31. paises.pais_nombre,
  32. MIN(matriculas.anho_lectivo) as anho_lectivo,
  33. matriculas.id as matriculasid,
  34. carreras.carrera_nombre,
  35. carreras.titulo_a_expedir,
  36. modalidades.modalidad_nombre,
  37. sedes.sede_nombre,
  38. plan_estudio.id as planid,
  39. certificado_de_estudio.id as certificado_id,
  40. certificado_de_estudio.fecha_expedicion,
  41. facultades.banner,
  42. facultades.secretaria_gral,
  43. facultades.decano,
  44. facultades.encabezado_secretaria,
  45. facultades.encabezado_decano,
  46. facultades.nombre_real
  47. ");
  48. $this->db->join('estudiantes_carreras','estudiantes_carreras.id = certificado_de_estudio.estudiantes_carreras_id');
  49. $this->db->join('estudiantes','estudiantes.id = estudiantes_carreras.estudiantes_id');
  50. $this->db->join('user','user.id = estudiantes.user_id');
  51. $this->db->join('paises','paises.id = user.paises_id');
  52. //Matricula
  53. $this->db->join('matriculas','matriculas.estudiantes_id = estudiantes.id AND matriculas.programacion_carreras_id = estudiantes_carreras.programacion_carreras_id');
  54. $this->db->join('programacion_carreras','programacion_carreras.id = estudiantes_carreras.programacion_carreras_id');
  55. $this->db->join('carreras','carreras.id = programacion_carreras.carreras_id');
  56. $this->db->join('modalidades','modalidades.id = estudiantes_carreras.modalidades_id');
  57. $this->db->join('sedes','sedes.id = estudiantes_carreras.sedes_id');
  58. //plan de estudio
  59. $this->db->join('plan_estudio','plan_estudio.programacion_carreras_id = estudiantes_carreras.programacion_carreras_id');
  60. $this->db->join('facultades','facultades.id = plan_estudio.facultades_id');
  61. $certificado = $this->db->get_where('certificado_de_estudio',array('certificado_de_estudio.id'=>$id));
  62. //Materias
  63. if($certificado->num_rows()>0){
  64. $certificado = $certificado->row();
  65. foreach($certificado as $n=>$v){
  66. if(strstr($n,'fecha')){
  67. $v = date("d/m/Y",strtotime($v));
  68. }
  69. $texto = str_replace('['.$n.']',$v,$texto);
  70. }
  71. /************************** Repetir script en caso de tablas de datos *********************************/
  72. //Tener la tabla y dibujar la region donde será dibujada la nueva
  73. $tbody = fragmentar($texto,'<tbody>','</tbody>');
  74. $tbody = $tbody[2];
  75. $tfoot = fragmentar($tbody,'<tr>','</tr>');
  76. $tfoot = $tfoot[2];
  77. $texto = str_replace($tbody,'[datos]',$texto);
  78. //Reemplazo de la palabra data
  79. $trs = fragmentar($tbody,'<tr>','</tr>');
  80. $strbody = '';
  81. foreach($this->db->get('cursos')->result() as $c){
  82. $materias = $this->db->query("
  83. SELECT
  84. af.anho_lectivo,
  85. af.acta_doc_nro,
  86. af.fecha as acta_final_fecha,
  87. af.mesa_id,
  88. afd.calificacion as acta_final_calificacion,
  89. afd.incripcion_materias_id,
  90. im.id,
  91. mt.estudiantes_id,
  92. mt.id,
  93. mp.plan_estudio_id,
  94. mp.total_horas_reloj as carga_horaria,
  95. im.programacion_materias_plan_id,
  96. e.user_id,
  97. u.cedula,
  98. u.nombre,
  99. u.apellido_paterno,
  100. u.apellido_materno,
  101. cm.materias_plan_afines_id,
  102. cm.fecha,
  103. cm.calificacion,
  104. cm.acta_nro,
  105. m.materia_nombre,
  106. mp.id,
  107. cu.curso_nombre,
  108. cu.id as cursos_id,
  109. e.id,
  110. ec.id,
  111. ce.id,
  112. me.periodo_id,
  113. me.denominacion,
  114. pe.denominacion as periodo
  115. FROM certificado_de_estudio ce
  116. INNER JOIN estudiantes_carreras as ec ON ec.id = ce.estudiantes_carreras_id
  117. INNER JOIN programacion_carreras as pc ON ec.programacion_carreras_id = pc.id
  118. INNER JOIN acta_final as af ON af.programacion_carreras_id = pc.id
  119. INNER JOIN acta_final_detalle as afd ON afd.acta_final_id = af.id
  120. INNER JOIN inscripcion_materias as im ON im.id = afd.incripcion_materias_id
  121. INNER JOIN programacion_materias_plan as pmp ON pmp.id = im.programacion_materias_plan_id
  122. INNER JOIN materias_plan as mp ON mp.id = pmp.materias_plan_id
  123. INNER JOIN materias as m ON m.id = mp.materias_id
  124. LEFT JOIN estudiante_traslado et ON et.estudiantes_id = ec.estudiantes_id
  125. LEFT JOIN convalidacion_materias cm ON cm.estudiante_traslado_id = et.id AND cm.materias_plan_afines_id = mp.id
  126. INNER JOIN estudiantes e ON e.id = ec.estudiantes_id
  127. INNER JOIN user u ON u.id = e.user_id
  128. INNER JOIN matriculas mt ON mt.id = im.matriculas_id AND mt.estudiantes_id = ec.estudiantes_id
  129. INNER JOIN cursos as cu ON cu.id = mp.cursos_id
  130. INNER JOIN mesa as me ON me.id = af.mesa_id
  131. INNER JOIN periodo as pe ON pe.id = me.periodo_id
  132. WHERE ce.id = $id
  133. AND mp.cursos_id = $c->id
  134. AND afd.calificacion > 0
  135. ORDER BY af.fecha, af.acta_doc_nro ASC
  136. ");
  137. if($materias->num_rows()>0){
  138. $strbody.= '<tr>'.str_replace('[curso_nombre]',$c->curso_nombre,$trs[0]).'</tr>';
  139. //Imprimir filas
  140. //Notas
  141. $promedio = 0;
  142. $mat = 0;
  143. $carga = 0;
  144. $aprobadas = 0;
  145. foreach($materias->result() as $m){
  146. $tr = '<tr>'.$trs[1].'</tr>';
  147. foreach($m as $n=>$v){
  148. if($n=='acta_final_calificacion'){
  149. $v = $m->calificacion==null?$v:$m->calificacion;
  150. $promedio+= $v;
  151. $mat++;
  152. if($v>1){
  153. $aprobadas++;
  154. }
  155. }
  156. if($n=='acta_doc_nro'){
  157. $v = $m->acta_nro==null?$v:$m->acta_nro;
  158. }
  159. if($n=='acta_final_fecha'){
  160. $v = $m->fecha==null?$v:$m->fecha;
  161. $v = date("d-m-Y",strtotime($v));
  162. }
  163. if($n=='carga_horaria'){
  164. if($m->calificacion>1 || $m->acta_final_calificacion>1){
  165. $carga+= $v;
  166. }
  167. }
  168. if($n=='acta_final_calificacion'){
  169. $tr = str_replace('[letra]',$this->enletras->valorEnLetras($v,''),$tr);
  170. }
  171. $tr = str_replace('['.$n.']',$v,$tr);
  172. $tfoot = str_replace('['.$n.']',$v,$tfoot);
  173. }
  174. $strbody.= $tr;
  175. }
  176. $foot = $tfoot;
  177. $promedio = round($promedio/$mat,2);
  178. $foot = str_replace('[promedio]',$promedio,$foot);
  179. $foot = str_replace('[convertir_letra_promedio]',$this->enletras->ValorEnLetras($promedio,''),$foot);
  180. $foot = str_replace('[suma_carga_horaria]',$carga,$foot);
  181. $planificacion = $this->db->get_where('materias_plan',array('plan_estudio_id'=>$materias->row()->plan_estudio_id,'cursos_id'=>$materias->row()->cursos_id))->num_rows();
  182. $tipo = $planificacion==$aprobadas?'Completo':'Incompleto';
  183. $foot = str_replace('[evaluar_cantidad]',$tipo,$foot);
  184. $strbody.= $foot;
  185. }
  186. }
  187. $texto = str_replace('[datos]',$strbody,$texto);
  188. $texto = str_replace('[banners]','<img alt="" src="'.base_url('img/fotos_facultades/'.$certificado->banner).'" width="615" height="93">',$texto);
  189. /************************** FIN Repetir script en caso de tablas de datos *********************************/
  190. }
  191. return $texto;
  192. }
  193. function draw($id){
  194. if(is_numeric($id)){
  195. $reporte = $this->db->get_where('reportes',array('identificador'=>'cparcial'));
  196. if($reporte->num_rows()>0){
  197. echo '<htm><head><meta charset="utf8">';
  198. echo '</head><body>';
  199. echo $this->_reemplazar($reporte->row()->contenido,$id);
  200. echo '</body></html>';
  201. }
  202. }
  203. }
  204. }
  205. ?>