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); } }
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; }
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]); }
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)); }