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