Ejemplo n.º 1
0
 public static function obtener_adeudos_alumno($data)
 {
     $commond = new Common_functions();
     // Actualiza el status_adeudo si tiene beca del 100%
     $commond->actualiza_status_adeudos($data['id_persona'], $data['periodo']);
     #var_dump($data);die();
     if (isset($data['id'])) {
         $query = Adeudos::join('sub_conceptos as sc', 'sc.id', '=', 'adeudos.sub_concepto_id')->orderBy('locker_manager', 'desc')->orderBy('fecha_limite', 'asc')->where("adeudos.id", "=", $data['id'])->select('adeudos.*', DB::raw("period_diff(date_format(now(), '%Y%m'), date_format(`fecha_limite`, '%Y%m')) as meses_retraso"), 'adeudos.aplica_beca', 'sc.sub_concepto')->get();
         // Se obtienen los adeudos de una persona en el periodo solicitado
         $now = strtotime($data['fecha_pago']);
         // Se obtiene la fecha actual
     } else {
         $query = Adeudos::join('sub_conceptos as sc', 'sc.id', '=', 'adeudos.sub_concepto_id')->orderBy('locker_manager', 'desc')->orderBy('fecha_limite', 'asc')->where("adeudos.id_persona", "=", $data['id_persona'])->where("adeudos.periodo", "=", $data['periodo'])->select('adeudos.*', DB::raw("period_diff(date_format(now(), '%Y%m'), date_format(`fecha_limite`, '%Y%m')) as meses_retraso"), 'adeudos.aplica_beca', 'sc.sub_concepto')->get();
         // Se obtienen los adeudos de una persona en el periodo solicitado
         $now = strtotime('now');
         // Se obtiene la fecha actual
     }
     $tiene_beca = Becas::AlumnoBeca_Persona_Periodo($data);
     // Consulta beca
     $daynow = date('d', $now);
     // Dia actual
     $sub_cont = array();
     // Contador de adeudos
     $lock = false;
     foreach ($query as $key => $adeudo) {
         // Se genera la informacion para el Edo. de cuenta del alumno
         $query[$key]['tipos_pago'] = Adeudos_tipopago::where('adeudos_id', '=', $adeudo['id'])->get();
         $query[$key]['importe_inicial'] = $query[$key]['importe'];
         if (isset($sub_cont[$adeudo['sub_concepto_id']])) {
             $sub_cont[$adeudo['sub_concepto_id']] += 1;
         } else {
             $sub_cont[$adeudo['sub_concepto_id']] = 0;
         }
         $query[$key]['contador'] = $sub_cont[$adeudo['sub_concepto_id']];
         $tiene_desceunto = Descuentos::obtenerDescuentoPorAdeudo($adeudo['id']);
         // Limitando a solo un descuento por adeudo
         $descuentos_limitado = array();
         if (isset($tiene_desceunto[0])) {
             $descuentos_limitado[0] = $tiene_desceunto[0];
         }
         $fecha_limite = strtotime($adeudo['fecha_limite']);
         $day = date('d', $fecha_limite);
         $descuento = 0;
         $descuento_recargo = 0;
         $descuento_id = null;
         $descuento_officio = null;
         foreach ($descuentos_limitado as $key_d => $descuentodata) {
             $descuento_tmp = $commond->calcular_importe_por_tipo($adeudo['importe'], $descuentodata['importe'], $descuentodata['tipo_importe_id']);
             $descuento_recargo_temp = $commond->calcular_importe_por_tipo($adeudo['importe'], $descuentodata['importe_recargo'], $descuentodata['tipo_importe_id']);
             $query[$key]['tiene_desceunto'] = 1;
             $descuento_recargo = $descuento_recargo + $descuento_recargo_temp;
             $descuento = $descuento + $descuento_tmp;
             $descuento_id = $descuentodata['id'];
             $descuento_officio = $descuentodata['no_officio'];
         }
         $query[$key]['descuento_id'] = $descuento_id;
         $query[$key]['descuento'] = $descuento;
         $query[$key]['descuento_recargo'] = $descuento_recargo;
         $query[$key]['descuento_officio'] = $descuento_officio;
         if (!$tiene_beca) {
             $query[$key]['beca'] = 'N/A';
         }
         if ($adeudo['status_adeudo'] == 0) {
             if ($daynow > $day) {
                 $query[$key]['meses_retraso'] = $adeudo['meses_retraso'] + 1;
             }
             if ($query[$key]['meses_retraso'] <= 0) {
                 $query[$key]['recargo_total'] = 0;
             }
             if ($query[$key]['meses_retraso'] > 0) {
                 if ($adeudo['locker_manager'] == 1) {
                     $lock = true;
                 }
                 $query[$key]['beca'] = 'N/A';
                 if ($tiene_beca) {
                     $databeca = array("id_persona" => $data['id_persona'], "periodo" => $data['periodo'], "status" => 0);
                     Becas::update_status_beca_alumno($databeca);
                     $tiene_beca = FALSE;
                 }
                 if ($adeudo['aplica_recargo'] == 1) {
                     $recargo = $commond->calcular_importe_por_tipo($adeudo['importe'], $adeudo['recargo'], $adeudo['tipo_recargo']);
                 } else {
                     $recargo = 0;
                 }
                 if ($adeudo['recargo_acumulado'] == 1) {
                     $recargo *= $query[$key]['meses_retraso'];
                 }
                 $query[$key]['recargo_no_descuento'] = $recargo;
                 $query[$key]['recargo_total'] = $recargo - $descuento_recargo;
                 #$query[$key]['recargo_total'] = $query[$key]['recargo_total']
                 $query[$key]['importe'] += $query[$key]['recargo_total'] - $descuento;
             } elseif ($tiene_beca && $adeudo['aplica_beca'] == 1) {
                 $beca = $commond->calcular_importe_por_tipo($adeudo['importe'], $tiene_beca['importe'], $tiene_beca['tipo_importe_id']);
                 $query[$key]['importe'] -= $beca;
                 $query[$key]['importe'] -= $descuento;
                 $query[$key]['beca'] = $beca;
             }
             if ($lock == true) {
                 $query[$key]['lock'] = 1;
             } else {
                 $query[$key]['lock'] = 0;
             }
         } else {
             $pago = strtotime($adeudo['fecha_pago']);
             $fecha_pago = date('d', $pago);
             $query[$key]['lock'] = 0;
             if ($fecha_pago > $day) {
                 $query[$key]['meses_retraso'] = $adeudo['meses_retraso'] + 1;
             }
             if ($query[$key]['meses_retraso'] <= 0) {
                 $query[$key]['recargo_total'] = 0;
             }
             if ($query[$key]['meses_retraso'] > 0) {
                 $query[$key]['beca'] = 'N/A';
                 if ($adeudo['aplica_recargo'] == 1) {
                     $recargo = $commond->calcular_importe_por_tipo($adeudo['importe'], $adeudo['recargo'], $adeudo['tipo_recargo']);
                 } else {
                     $recargo = 0;
                 }
                 $query[$key]['recargo_no_descuento'] = null;
                 if ($adeudo['recargo_acumulado'] == 1) {
                     $recargo *= $query[$key]['meses_retraso'];
                 }
                 $query[$key]['recargo_total'] = $adeudo['recargo_pago'];
                 if (intval($adeudo['beca_pago']) == 0) {
                     $query[$key]['beca'] = 'N/A';
                 } else {
                     $query[$key]['beca'] = $adeudo['beca_pago'];
                 }
                 $query[$key]['importe'] = $adeudo['importe_pago'];
             } elseif ($tiene_beca && $adeudo['aplica_beca'] == 1) {
                 $beca = $commond->calcular_importe_por_tipo($adeudo['importe'], $tiene_beca['importe'], $tiene_beca['tipo_importe_id']);
                 #$query[$key]['importe']-=$beca;
                 $query[$key]['beca'] = $adeudo['beca_pago'];
             }
         }
     }
     return $query;
 }
Ejemplo n.º 2
0
 public function create_alumno_file()
 {
     ini_set('memory_limit', '1000M');
     ini_set('post_max_size', '10M');
     ini_set('upload_max_filesize', '150M');
     $commond = new Common_functions();
     $file = Request::file('becas_file');
     $config = Config::get('app');
     $meses = $config['meses_periodo'];
     if (isset($file)) {
         $root = $file->getRealPath();
         $data = array();
         $info_excel = Excel::load($root, function ($archivo) {
         })->get();
         $res['data'] = array();
         foreach ($info_excel as $key => $value) {
             /// #-----
             $meses[] = $value->mes_1;
             $meses[] = $value->mes_2;
             $meses[] = $value->mes_3;
             $meses[] = $value->mes_4;
             /// ------ # Obtiene los meses a los que se le asiganara la beca
             $beca = Becas::where('abreviatura', '=', $value->clave)->first();
             // Se obtiene la infotmacion de la beca con respecto a la clave dada
             if ($beca) {
                 // Si existe la beca empieza el proceso de asignacion
                 $periodo_actual = $commond->periodo_actual();
                 $data = $commond->obtener_alumno_matricula(array(array('periodo' => $periodo_actual['idperiodo'], 'matricula' => $value->matricula, 'idbeca' => $beca['id'], 'status' => 1)));
                 if (isset($data[0])) {
                     $data = $data[0];
                     $beca_existe = Becas::AlumnoBeca_Persona_Periodo(array('id_persona' => $data['id_persona'], 'periodo' => $data['periodo']));
                     // Consulta beca
                     if ($beca_existe == false) {
                         // si el alumno no tiene beca asignada en ese periodo realiza proceso
                         $adeudos = Adeudos::obtener_adeudos_alumno(array('periodo' => $data['periodo'], 'id_persona' => $data['id_persona']));
                         // Se obtienen los Adeudos del alumno en el periodo
                         $adeudos_no_inscripcion = array();
                         $lock_adeudos = 0;
                         // Variable para no aplicar beca por retraso de pago en la inscripcion
                         foreach ($adeudos as $key => $adeudo) {
                             // Obtenemos los adedudos que no sean inscripcion y los seperamos
                             if (intval($adeudo['lock']) != 1) {
                                 if (intval($adeudo['locker_manager']) == 0) {
                                     $adeudos_no_inscripcion[] = $adeudo;
                                 }
                             } else {
                                 $lock_adeudos = 1;
                                 break;
                             }
                         }
                         if (count($adeudos_no_inscripcion) > 0 && $lock_adeudos == 0) {
                             foreach ($adeudos_no_inscripcion as $key => $adeudo) {
                                 foreach ($meses as $key => $mes) {
                                     if (intval($mes) == intval(date('m', strtotime($adeudo['fecha_limite'])))) {
                                         #$ids_update_beca[]=array('ids'=>$adeudo['id'],'mes'=>$mes);
                                         Adeudos::where('id', '=', $adeudo['id'])->update(array('aplica_beca' => 0));
                                         break;
                                     }
                                 }
                             }
                             Becas::create_beca_alumno($data);
                             $data['matricula'] = $value->matricula;
                             $res['data']['created'][] = $data;
                         } else {
                             if ($lock_adeudos == 0) {
                                 Becas::create_beca_alumno($data);
                                 $data['matricula'] = $value->matricula;
                                 $res['data']['created'][] = $data;
                             } else {
                                 $res['data']['nocreado'][] = array('matricula' => $value->matricula, 'motivo' => 'No pago inscripcion a tiempo');
                             }
                         }
                     } else {
                         $data['matricula'] = $value->matricula;
                         $res['data']['existente'][] = $data;
                     }
                 } else {
                     $res['data']['nocreado'][] = array('matricula' => $value->matricula, 'motivo' => 'Alumno no encontrado o inactico');
                 }
             } else {
                 $res['data']['nocreado'][] = array('matricula' => $value->matricula, 'motivo' => 'La clave de la beca es incorrecta');
             }
             $data = array();
             $meses = array();
         }
         #echo json_encode($res);
         $respuesta = json_encode(array('error' => false, 'mensaje' => '', 'respuesta' => $res));
     } else {
         $respuesta = json_encode(array('error' => true, 'mensaje' => 'No hay archivo o tiene errores.', 'respuesta' => ''));
     }
     $final_response = Response::make($respuesta, 200);
     $final_response->header('Content-Type', "application/json; charset=utf-8");
     return $final_response;
 }
Ejemplo n.º 3
0
 public function parseAdeudos_addAdeudoInfo($data, $sub_adeudo, $adeudo)
 {
     $recargo_total = 0;
     $descuento = 0;
     $descuento_recargo = 0;
     $descuentos = Descuentos::obtenerDescuentoPorAdeudo($sub_adeudo['id']);
     $descuento_officio = "";
     foreach ($descuentos as $key_d => $descuentodata) {
         $descuento_tmp = $this->calcular_importe_por_tipo($sub_adeudo['importe'], $descuentodata['importe'], $descuentodata['tipo_importe_id']);
         $descuento_recargo_temp = $this->calcular_importe_por_tipo($sub_adeudo['importe'], $descuentodata['importe_recargo'], $descuentodata['tipo_importe_id']);
         $descuento_recargo = $descuento_recargo + $descuento_recargo_temp;
         $descuento = $descuento + $descuento_tmp;
         $descuento_officio = $descuentodata['no_officio'];
     }
     $now = strtotime('now');
     // Se obtiene la fecha actual
     $daynow = date('d', $now);
     // Dia actual
     $fecha_limite = strtotime($sub_adeudo['fecha_limite']);
     $day = date('d', $fecha_limite);
     if ($daynow > $day) {
         $sub_adeudo['meses_retraso'] = $sub_adeudo['meses_retraso'] + 1;
     }
     //verifica si tiene beca
     $tiene_beca = Becas::AlumnoBeca_Persona_Periodo(array('id_persona' => $adeudo['id_persona'], 'periodo' => $sub_adeudo['periodo']));
     // Consulta beca
     if ($tiene_beca) {
         if ($sub_adeudo['aplica_beca'] == 1) {
             // Verifica si al adeudo le aplica beca
             //Si aplica beca la calcula, ya que puede ser por pocentaje o importe fijo
             $beca = $this->calcular_importe_por_tipo($sub_adeudo['importe'], $tiene_beca['importe'], $tiene_beca['tipo_importe_id']);
         } else {
             $beca = 0;
         }
     } else {
         $beca = 0;
     }
     if ($sub_adeudo['meses_retraso'] <= 0) {
         // si no se atrazo respeta beca y no genera adeudo
         $recargo_total = 0;
         $recargo_total_no_descuento = 0;
     }
     if ($sub_adeudo['meses_retraso'] > 0) {
         // Si se atrazo con un pago genera adeudo y quitara beca
         if ($sub_adeudo['aplica_recargo'] == 1) {
             //Si aplica recago lo calcula, ya que puede ser por pocentaje o importe fijo y lo muliplica por No. de meses rerasado
             $recargo = $this->calcular_importe_por_tipo($sub_adeudo['importe'], $sub_adeudo['recargo'], $sub_adeudo['tipo_recargo']);
             if ($sub_adeudo['recargo_acumulado'] == 1) {
                 $recargo_total = $recargo * $sub_adeudo['meses_retraso'];
             } else {
                 $recargo_total = $recargo;
             }
             $recargo_total_no_descuento = $recargo_total;
             $recargo_total = $recargo_total - $descuento_recargo;
         } else {
             $recargo_total = 0;
         }
         Becas::update_status_beca_alumno(array('id_persona' => $adeudo['id_persona'], 'periodo' => $sub_adeudo['periodo'], 'status' => 0));
         // Cancelar Beca en periodo
         $beca = 0;
     }
     $total_adeudo = $sub_adeudo['importe'] + $recargo_total - $descuento - $beca;
     foreach ($data['periodos'] as $key_p => $periodo) {
         foreach ($periodo['subconceptos'] as $key_s => $sc) {
             if (intval($sub_adeudo['periodo']) == intval($periodo['periodo'])) {
                 #echo "<pre>" ;var_dump($sub_adeudo);echo "</pre>";die();
                 if (intval($sub_adeudo['sub_concepto_id']) == intval($sc['sub_concepto_id'])) {
                     if ($sub_adeudo['status_adeudo'] == 1) {
                         #var_dump(floatval($sub_adeudo['recargo_pago']));die();
                         $data['periodos'][$key_p]['subconceptos'][$key_s]['adeudo_info'][] = array('clave' => $adeudo['id_persona'], 'matricula' => $adeudo['matricula'], 'nombre' => $adeudo['nom'], 'apellido paterno' => $adeudo['appat'], 'apellido materno' => $adeudo['apmat'], 'fecha_limite' => $sub_adeudo['fecha_limite'], 'fecha_pago' => $sub_adeudo['fecha_pago'], 'carrera' => $adeudo['carrera'], 'importe' => $sub_adeudo['importe'], 'nivel' => $adeudo['nivel'], 'nombre_nivel' => $adeudo['nombre_nivel'], 'recargo' => floatval($sub_adeudo['recargo_pago']), 'beca' => floatval($sub_adeudo['beca_pago']), 'descuento' => floatval($descuento), 'descuento_recargo' => floatval($descuento_recargo), 'total' => floatval($sub_adeudo['importe_pago']), 'descuento_officio' => $descuento_officio, 'concepto' => $sub_adeudo['concepto'], 'descripcion_concepto' => $sub_adeudo['descripcion_concepto']);
                     } else {
                         $data['periodos'][$key_p]['subconceptos'][$key_s]['adeudo_info'][] = array('clave' => $adeudo['id_persona'], 'matricula' => $adeudo['matricula'], 'nombre' => $adeudo['nom'], 'apellido paterno' => $adeudo['appat'], 'apellido materno' => $adeudo['apmat'], 'fecha_limite' => $sub_adeudo['fecha_limite'], 'carrera' => $adeudo['carrera'], 'importe' => floatval($sub_adeudo['importe']), 'nivel' => $adeudo['nivel'], 'nombre_nivel' => $adeudo['nombre_nivel'], 'recargo' => floatval($recargo_total), 'recargo_no_descuento' => floatval($recargo_total_no_descuento), 'beca' => floatval($beca), 'descuento' => floatval($descuento), 'descuento_recargo' => floatval($descuento_recargo), 'total' => floatval($total_adeudo), 'descuento_officio' => $descuento_officio, 'concepto' => $sub_adeudo['concepto'], 'descripcion_concepto' => $sub_adeudo['descripcion_concepto']);
                     }
                 }
             }
         }
     }
     return $data;
 }