private function registrarPagoSolicitud($pago_sol_legacy)
 {
     //Encontrar solicitud_id
     $solicitud_id = Solicitud::where('obs', 'LIKE', '% #SIGI: ' . $pago_sol_legacy->solicitud_id)->pluck('id');
     if (!empty($solicitud_id)) {
         //Enconrar egreso_id
         $cuenta_bancaria_id = $this->getCuentaBancariaId($pago_sol_legacy->cta_b);
         if (!empty($cuenta_bancaria_id)) {
             $egreso = Egreso::where('cuenta_bancaria_id', '=', $cuenta_bancaria_id);
             if ($pago_sol_legacy->tipo == 'ch') {
                 $egreso->where('cheque', '=', $pago_sol_legacy->poliza);
             } else {
                 $egreso->where('poliza', '=', $pago_sol_legacy->poliza);
             }
             $egreso = $egreso->first();
             if (empty($egreso->id)) {
                 dd('Egreso no encontrado ' . $pago_sol_legacy->poliza);
             }
             //Crear Relación
             $egreso->solicitudes()->attach($solicitud_id);
         }
     } else {
         dd('No se encontró la Solicitud ' . $pago_sol_legacy->solicitud_id);
     }
 }
Example #2
0
 public function getEjercicioRm($rm)
 {
     $ejercicio_rm = collect(['rm' => $rm->rm]);
     $ejercicio_rm->put('objetivo', $rm->objetivo->objetivo);
     $ejercicio_rm->put('cog', $rm->cog->cog);
     $ejercicio_rm->put('d_cog', $rm->cog->d_cog);
     $ejercicio_rm->put('presupuestado', $rm->monto);
     $compensado_origen = CompensaOrigen::where('rm_id', $rm->id)->sum('monto');
     $compensado_destino = CompensaDestino::where('rm_id', $rm->id)->sum('monto');
     $compensado = round($compensado_destino, 2) - round($compensado_origen, 2);
     $ejercicio_rm->put('compensado', $compensado);
     $rm_objeto = Rm::find($rm->id);
     $ejercido = $this->getMontoEjercido($rm_objeto);
     $ejercicio_rm->put('ejercido', $ejercido);
     $reintegros_df = $this->getMontoReintegrosDF($rm_objeto);
     $ejercicio_rm->put('reintegros_df', $reintegros_df);
     //-- Reservado --//
     $reqs_id = Req::where('proyecto_id', $rm->proyecto_id)->where('estatus', 'Autorizada')->lists('id')->all();
     $reservado_reqs = round($rm_objeto->articulos()->whereIn('req_id', $reqs_id)->sum('articulo_rm.monto'), 2);
     $solicitudes_id = Solicitud::where('proyecto_id', $rm->proyecto_id)->where('estatus', 'Autorizada')->lists('id')->all();
     $reservado_solicitudes = round($rm_objeto->solicitudes()->whereIn('solicitud_id', $solicitudes_id)->sum('rm_solicitud.monto'), 2);
     $reservado = $reservado_reqs + $reservado_solicitudes;
     $ejercicio_rm->put('reservado', $reservado);
     $saldo = $ejercicio_rm->get('presupuestado') + $ejercicio_rm->get('compensado') - $ejercicio_rm->get('ejercido') - $ejercicio_rm->get('reservado');
     $ejercicio_rm->put('saldo', round($saldo, 2));
     return $ejercicio_rm;
 }
Example #3
0
 public function cancelarPago(Egreso $egreso)
 {
     if (count($egreso->solicitudes) > 0) {
         $estatus = 'Autorizada';
         //Verifica si existen más de un egreso de  la solicitud, para en su caso el estatus sea "Pago Parcial"
         foreach ($egreso->solicitudes as $solicitud) {
             $sol_verifica = Solicitud::find($solicitud->id)->load('egresos');
             if (count($sol_verifica->egresos) > 1) {
                 $estatus = 'Pago Parcial';
             } else {
                 $estatus = 'Autorizada';
             }
         }
         $egreso->solicitudes()->update(['estatus' => $estatus]);
     } elseif (count($egreso->ocs) > 0) {
         $estatus = '';
         //Verifica si existe más de un egreso de la Oc, para en su caso el estatus sea "Pago Parcial;
         foreach ($egreso->ocs as $oc) {
             $oc_verifica = Oc::find($oc->id)->load('egresos');
             if (coun($oc_verifica->egresos) > 1) {
                 $estatus = 'Pago Parcial';
             } else {
                 $estatus = '';
             }
         }
         $egreso->ocs()->update(['estatus' => $estatus]);
         $this->actualizarEstatusReq($egreso->ocs[0]->req_id);
     }
 }
 /**
  * Show the form for creating a new resource.
  *
  * @return \Illuminate\Http\Response
  */
 public function create($doc_id, $doc_type)
 {
     $data['doc_id'] = $doc_id;
     $data['doc_type'] = $doc_type;
     if ($doc_type == 'Solicitud') {
         $solicitud = Solicitud::find($doc_id);
     }
     $rms = Rm::whereProyectoId($solicitud->proyecto_id)->get();
     $data['rms'] = $rms;
     return view('retencion.formRetencion')->with($data);
 }
 public function recibirSol(RecibirRequest $request)
 {
     foreach ($request->input('arr_sol_id') as $sol_id) {
         $solicitud = Solicitud::find($sol_id);
         $solicitud->estatus = $request->input('estatus');
         $solicitud->user_id = \Auth::user()->id;
         $solicitud->save();
         //Creación de registro
         $fecha_hora = Carbon::now();
         $registro = new Registro(['user_id' => \Auth::user()->id, 'estatus' => $request->input('estatus'), 'fecha_hora' => $fecha_hora]);
         $solicitud->registros()->save($registro);
     }
     return redirect()->action('RecibirController@seleccionarSol')->with(['message' => 'Solicitudes recibidas', 'alert-class' => 'alert-success']);
 }
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     $sol_id = $request->route()->getParameter('solicitud');
     $sol = \Guia\Models\Solicitud::whereId($sol_id)->get(['solicita', 'estatus']);
     $user = \Auth::user();
     $arr_roles = $user->roles()->lists('role_name')->all();
     //Valida que el usuario sea el dueño de la req y que la req no esté enviada
     if (array_search('Presupuesto', $arr_roles) !== false || array_search('Comprobacion', $arr_roles) !== false || array_search('Contabilidad', $arr_roles) !== false) {
         return $next($request);
     }
     //dd(array_search('Presupuedsto', $arr_roles));
     if (\Auth::user()->id != $sol[0]->solicita || $sol[0]->estatus != '') {
         return redirect()->action('SolicitudController@show', array($sol_id))->with(['alert-class' => 'alert-warning', 'message' => 'No puede modificar esta solicitud']);
     }
     return $next($request);
 }
 /**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store(Request $request)
 {
     $soldep_doc = new SolDepositosDoc();
     $soldep_doc->sol_deposito_id = $request->input('sol_deposito_id');
     $soldep_doc->monto = $request->input('monto');
     $soldep_doc->save();
     if ($request->input('doc_type') == 'Solicitud') {
         $doc = Solicitud::find($request->input('doc_id'));
         $ocultar_id = 'sol-' . $request->input('doc_id');
         $message = "Solicitud " . $request->input('doc_id') . " agregada";
     }
     if ($request->input('doc_type') == 'Oc') {
         $doc = Oc::find($request->input('doc_id'));
         $ocultar_id = 'oc-' . $request->input('doc_id');
         $message = "Orden de Compra " . $doc->oc . " agregada";
     }
     $doc->solDepositosDocs()->save($soldep_doc);
     if ($request->ajax()) {
         return response()->json(['message' => $message, 'ocultar' => $ocultar_id]);
     }
     //return redirect()->action('SolDepositoDocsController@create', $request->input('sol_deposito_id'));
 }
 public function formatoPdf($id)
 {
     $solicitud = Solicitud::find($id);
     $solicitud_pdf = new SolicitudPdf($solicitud);
     return response($solicitud_pdf->crearPdf()->header('Content-Type', 'application/pdf'));
 }
 /**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store(Requests\EgresoFormRequest $request)
 {
     $transferencia_bancaria = $request->input('transferencia');
     if (!isset($transferencia_bancaria)) {
         $cheque = $request->input('cheque');
         $poliza = 0;
     } else {
         $poliza = \Consecutivo::nextPolizaEgreso($request->input('cuenta_bancaria_id'));
         $cheque = 0;
     }
     $egreso = new Egreso();
     $egreso->cuenta_bancaria_id = $request->input('cuenta_bancaria_id');
     $egreso->poliza = $poliza;
     $egreso->cheque = $cheque;
     $egreso->fecha = $request->input('fecha');
     $egreso->benef_id = $request->input('benef_id');
     $egreso->cuenta_id = $request->input('cuenta_id');
     $egreso->concepto = $request->input('concepto');
     $egreso->monto = $request->input('monto');
     $egreso->user_id = \Auth::user()->id;
     $egreso->save();
     //Registro del pago del documento generador (Solicitud||Oc)
     $doc_type = $request->input('doc_type');
     $doc_id = $request->input('doc_id');
     if (!empty($doc_type) && !empty($doc_id)) {
         $documento = '';
         if ($doc_type == 'Solicitud') {
             $documento = Solicitud::find($doc_id);
         } elseif ($doc_type == 'Oc') {
             $documento = Oc::find($doc_id)->load('req');
         }
         $tipo_pago = $request->input('tipo_pago');
         if (empty($tipo_pago)) {
             $tipo_pago = 'Total';
         }
         $pago = new PagoDocumento($documento, $doc_type);
         $pago->pagarDocumento($egreso, $tipo_pago);
     }
     //Registro de monto por RM(s)
     if (count($request->input('rm_id')) > 0) {
         $i = 0;
         $monto_total = 0;
         foreach ($request->input('rm_id') as $rm_id) {
             $monto_rm = $request->input('monto_rm')[$i];
             if ($monto_rm > 0) {
                 $monto_total += $monto_rm;
                 //Insertar en egreso_rm
                 $egreso->rms()->attach($rm_id, ['monto' => $monto_rm]);
             }
             $i++;
         }
         if ($monto_total > 0) {
             $egreso->monto = $monto_total;
             $egreso->save();
         }
         $egreso_helper = new EgresoHelper($egreso);
         $egreso_helper->creaSumaPorProyecto();
     } else {
         //Fallback para solicitudes sin asignación de RM(s)
         if ($doc_type == 'Solicitud' && isset($documento)) {
             $egreso->proyectos()->attach($documento->proyecto_id, ['monto' => $request->input('monto')]);
         }
     }
     return redirect()->action('EgresosController@show', [$egreso->id]);
 }
Example #10
0
 private function getMontoReservado(Proyecto $proyecto)
 {
     $reqs_id = Req::where('proyecto_id', $proyecto->id)->where('estatus', 'Autorizada')->lists('id')->all();
     $articulos = Articulo::whereIn('req_id', $reqs_id)->with('rms')->get();
     $reservado_reqs = $articulos->sum('articulo_rm.monto');
     //$reservado_reqs = round($rm_objeto->articulos()->whereIn('req_id', $reqs_id)->sum('articulo_rm.monto'),2);
     $reservado_solicitudes = round(Solicitud::where('proyecto_id', $proyecto->id)->where('estatus', 'Autorizada')->sum('monto'), 2);
     $montoReservado = $reservado_reqs + $reservado_solicitudes;
     return round($montoReservado, 2);
 }
 public function importarSolicitudes()
 {
     $solicitudes_legacy = $this->consultarSolicitudesLegacy();
     foreach ($solicitudes_legacy as $sol_legacy) {
         $benef = \DB::connection('legacy_benef')->table('tbl_benef')->where('benef_id', '=', $sol_legacy->benef_id)->value('benef');
         $benef_id = Benef::whereBenef($benef)->pluck('id');
         $proyecto = Proyecto::whereProyecto($sol_legacy->proy)->first(['id', 'urg_id']);
         //Determinar el ID del usuario solicitante
         $solicita_id = User::whereLegacyUsername($sol_legacy->solicita)->pluck('id');
         //Determinar el usuario responsable
         if ($sol_legacy->responsable == 'Presupuesto') {
             $usuario = \InfoDirectivos::getResponsable('PRESU');
             $user_id = $usuario->id;
         } elseif ($sol_legacy->responsable == 'Contabilidad') {
             $usuario = \InfoDirectivos::getResponsable('CONTA');
             $user_id = $usuario->id;
         } elseif ($sol_legacy->responsable == 'Recepcion') {
             //Buscar primer usuario con rol recepcion
             $user_id = 2;
         } else {
             $user_id = User::whereLegacyUsername($sol_legacy->responsable)->pluck('id');
         }
         if (empty($sol_legacy->inventariable)) {
             $inventariable = 0;
         } else {
             $inventariable = 1;
         }
         $sol_nueva = new Solicitud();
         $sol_nueva->fecha = $sol_legacy->fecha;
         $sol_nueva->benef_id = $benef_id;
         $sol_nueva->tipo_solicitud = $sol_legacy->tipo_solicitud;
         $sol_nueva->urg_id = $proyecto->urg_id;
         $sol_nueva->proyecto_id = $proyecto->id;
         $sol_nueva->concepto = $sol_legacy->concepto;
         $sol_nueva->obs = $sol_legacy->obs . ' #SIGI: ' . $sol_legacy->solicitud_id;
         $sol_nueva->no_documento = $sol_legacy->no_documento;
         $sol_nueva->no_afin = $sol_legacy->id_afin;
         $sol_nueva->monto = $sol_legacy->monto;
         $sol_nueva->solicita = $solicita_id;
         $sol_nueva->estatus = $sol_legacy->estatus;
         $sol_nueva->user_id = $user_id;
         //responsable
         $sol_nueva->monto_pagado = $sol_legacy->monto_pagado;
         $sol_nueva->viaticos = $sol_legacy->viaticos;
         $sol_nueva->inventariable = $inventariable;
         $sol_nueva->save();
         if ($sol_nueva->estatus != 'Cancelada') {
             if ($sol_legacy->tipo_solicitud != 'Vale') {
                 $rms_solicitud = $this->consutlarRMs($sol_legacy->solicitud_id);
                 foreach ($rms_solicitud as $rm_legacy) {
                     $rm_id = Rm::whereRm($rm_legacy->rm)->value('id');
                     $sol_nueva->rms()->attach($rm_id, ['monto' => $rm_legacy->monto]);
                 }
             } else {
                 //Buscar si tiene capturado el objetivo
                 $objs_solicitud = $this->consultarObjetivos($sol_legacy->solicitud_id);
                 if (count($objs_solicitud) > 0) {
                     foreach ($objs_solicitud as $obj_legacy) {
                         $objetivo_id = Objetivo::whereObjetivo($obj_legacy->objetivo)->pluck('id');
                         if (empty($obj_legacy)) {
                             dd($obj_legacy);
                         }
                         $sol_nueva->objetivos()->attach($objetivo_id, ['monto' => $obj_legacy->monto]);
                     }
                 } else {
                     //Si no, asigna primer objetivo que encuentre en el proyecto
                     $objetivo_id = Rm::whereProyectoId($sol_nueva->proyecto_id)->pluck('objetivo_id');
                     if (empty($objetivo_id->objetivo_id)) {
                         $objetivo_id = 1;
                     }
                     $sol_nueva->objetivos()->attach($objetivo_id, ['monto' => $sol_nueva->monto]);
                 }
             }
         }
     }
 }
 /**
  * Genera egreso para pago total de una solicitud u orden de compra.
  *
  * @return Response
  */
 public function store(Request $request)
 {
     if ($request->input('doc_type') == 'Solicitud') {
         $doc = Solicitud::findOrFail($request->input('doc_id'));
         $benef_id = $doc->benef_id;
         $concepto = $doc->concepto;
         $monto = $doc->monto;
         $ocultar_id = 'sol-' . $request->input('doc_id');
         $message = "Solicitud " . $request->input('doc_id') . " agregada";
     }
     if ($request->input('doc_type') == 'Oc') {
         $doc = Oc::findOrFail($request->input('doc_id'));
         $doc->load('articulos.rms');
         $benef_id = $doc->benef_id;
         $concepto = '';
         /**
          * @todo Determinar Monto de OC
          */
         $monto = 0;
         $ocultar_id = 'oc-' . $request->input('doc_id');
         $message = "Orden de Compra " . $doc->oc . " agregada";
     }
     $tipo_egreso = $request->input('tipo_egreso');
     if ($tipo_egreso == 'cheque') {
         $cheque = $request->input('cheque');
         if (empty($cheque)) {
             $cheque = \Consecutivo::nextCheque($request->input('cuenta_bancaria_id'));
         }
         $poliza = 0;
     } else {
         $poliza = \Consecutivo::nextPolizaEgreso($request->input('cuenta_bancaria_id'));
         $cheque = 0;
     }
     $egreso = new Egreso();
     $egreso->cuenta_bancaria_id = $request->input('cuenta_bancaria_id');
     $egreso->poliza = $poliza;
     $egreso->cheque = $cheque;
     $egreso->fecha = $request->input('fecha');
     $egreso->benef_id = $benef_id;
     $egreso->cuenta_id = 1;
     //Presupuesto
     $egreso->concepto = $concepto;
     $egreso->monto = $monto;
     $egreso->user_id = \Auth::user()->id;
     $egreso->save();
     if ($request->input('doc_type') == 'Solicitud') {
         $rms = $doc->rms;
         foreach ($rms as $rm) {
             $monto_rm = $rm->pivot->monto;
             $egreso->rms()->attach($rm->id, ['monto' => $monto_rm]);
         }
     } else {
         $sum_monto = 0;
         //Creación de Arreglo
         foreach ($doc->articulos as $articulo) {
             foreach ($articulo->rms as $rm) {
                 $arr_rms[$rm->id] = 0;
             }
         }
         //Suma por Rm
         foreach ($doc->articulos as $articulo) {
             foreach ($articulo->rms as $rm) {
                 $arr_rms[$rm->id] += round($rm->pivot->monto, 2);
             }
         }
         //Crea Registro
         foreach ($arr_rms as $rm_id => $monto_rm) {
             $sum_monto += $monto_rm;
             $egreso->rms()->attach($rm_id, ['monto' => $monto_rm]);
         }
         $egreso->monto = $sum_monto;
         $egreso->save();
     }
     $pago = new PagoDocumento($doc, $request->input('doc_type'));
     $pago->pagarDocumento($egreso, 'Total');
     //Inserta suma por proyecto en tabla egreso_proyecto
     $egreso_rms = $egreso->rms()->get();
     $egreso_rms = $egreso_rms->groupBy('proyecto_id');
     $egreso_rms->each(function ($item, $key) use($egreso) {
         $egreso->proyectos()->attach($key, ['monto' => $egreso->rms()->where('proyecto_id', '=', $key)->sum('egreso_rm.monto')]);
     });
     return redirect(action('GenerarEgresoController@index'))->with(['message' => 'Cheque ' . $cheque . ' Generado']);
     //        if($request->ajax()) {
     //            return response()->json([
     //                'message' => $message,
     //                'ocultar' => $ocultar_id
     //            ]);
     //        }
 }
 public function validarOperacion()
 {
     $operacion = true;
     $hoy = \Carbon\Carbon::today()->toDateString();
     if (!$this->proyecto_id) {
         if ($this->modelo == 'Req') {
             $this->proyecto_id = Req::where('id', $this->documento_id)->pluck('proyecto_id');
         } elseif ($this->modelo == 'Solicitud') {
             $this->proyecto_id = Solicitud::where('id', $this->documento_id)->pluck('proyecto_id');
         }
     }
     $proyecto = Proyecto::find($this->proyecto_id);
     if (empty($proyecto)) {
         return false;
     }
     $op_restrigindas = OpRestringida::where('aaaa', $proyecto->aaaa)->where('modelo', $this->modelo)->whereNested(function ($query) use($hoy) {
         $query->where('inicio', '<=', $hoy);
         //                $query->where('fin', '>=', $hoy);
     })->whereNested(function ($query) use($proyecto) {
         $query->orWhere(function ($q) use($proyecto) {
             $q->where('aplica_type', 'Guia\\Models\\TipoProyecto');
             $q->where('aplica_id', $proyecto->tipo_proyecto_id);
         });
         $query->orWhere(function ($q) use($proyecto) {
             $q->where('aplica_type', 'Guia\\Models\\Urg');
             $q->where('aplica_id', $proyecto->urg_id);
         });
         $query->orWhere(function ($q) use($proyecto) {
             $q->where('aplica_type', 'Guia\\Models\\Proyecto');
             $q->where('aplica_id', $proyecto->id);
         });
     })->get();
     if (count($op_restrigindas) > 0) {
         $operacion = false;
         $this->op_restringida = $op_restrigindas[0];
         foreach ($op_restrigindas as $restriccion) {
             $excepcion = OpExcepcion::where('op_restringida_id', $restriccion->id)->whereNested(function ($query) use($hoy) {
                 $query->where('inicio', '<=', $hoy);
                 $query->where('fin', '>=', $hoy);
             })->whereNested(function ($query) use($proyecto) {
                 $query->orWhere(function ($q) use($proyecto) {
                     $q->where('aplica_type', 'Guia\\Models\\TipoProyecto');
                     $q->where('aplica_id', $proyecto->tipo_proyecto_id);
                 });
                 $query->orWhere(function ($q) use($proyecto) {
                     $q->where('aplica_type', 'Guia\\Models\\Urg');
                     $q->where('aplica_id', $proyecto->urg_id);
                 });
                 $query->orWhere(function ($q) use($proyecto) {
                     $q->where('aplica_type', 'Guia\\Models\\Proyecto');
                     $q->where('aplica_id', $proyecto->id);
                 });
                 $query->orWhere(function ($q) {
                     $q->where('aplica_type', 'Guia\\User');
                     $q->where('aplica_id', \Auth::user()->id);
                 });
             })->get();
             if (count($excepcion) > 0) {
                 $operacion = true;
             }
         }
     }
     return $operacion;
 }
 /**
  * Update the specified resource in storage.
  *
  * @param  int  $id
  * @return Response
  */
 public function update($id, Request $request)
 {
     $rel_interna = RelInterna::findOrFail($id);
     $rel_interna->fecha_revision = Carbon::today()->toDateString();
     $rel_interna->recibe = \Auth::user()->id;
     $rel_interna->estatus = 'Recibida';
     $rel_interna->save();
     foreach ($request->input('docs') as $doc_id) {
         if ($rel_interna->tipo_documentos == 'Egresos') {
             $documento = Egreso::find($doc_id);
         }
         if ($rel_interna->tipo_documentos == 'Solicitudes') {
             $documento = Solicitud::find($doc_id);
         }
         $documento->user_id = \Auth::user()->id;
         $documento->save();
         $documento_rel_interna = $documento->relacionInternaDocs()->where('rel_interna_id', $id)->first();
         $documento_rel_interna->validacion = 'Aceptada';
         $documento_rel_interna->save();
     }
     $rel_interna->load('relInternaDocs');
     foreach ($rel_interna->relInternaDocs as $doc) {
         if (empty($doc->validacion)) {
             RelInternaDoc::find($doc->id)->update(['validacion' => 'Rechazada']);
         }
     }
     $message = 'Relación ' . $rel_interna->id . ' recibida con éxito';
     return redirect()->action('RelacionInternaController@index')->with(['message' => $message]);
 }
 /**
  * Remove the specified resource from storage.
  *
  * @param  int  $id
  * @return Response
  */
 public function destroy($solicitud_id, $recurso_id)
 {
     $solicitud = Solicitud::findOrFail($solicitud_id);
     if (count($solicitud->objetivos) > 0) {
         $solicitud->objetivos()->detach($recurso_id);
     } else {
         $solicitud->rms()->detach($recurso_id);
     }
     $solicitud->monto = $this->getMontoTotal($solicitud);
     $solicitud->save();
     return redirect()->action('SolicitudController@show', array($solicitud->id));
 }