/** * Elimina cuadro comparativo, cotizaciones y relación articulo_cotizacion * * @param int $id * @return Response */ public function destroy($id) { $cuadro = Cuadro::findOrFail($id); $req_id = $cuadro->req_id; $cotizaciones = Cotizacion::whereReqId($cuadro->req_id)->with('articulos')->get(); foreach ($cotizaciones as $cotizacion) { $cotizacion->articulos()->detach(); $cotizacion->delete(); } /** * @todo Enviar correo a Jefe de la Unidad de Presupuesto * @todo Eliminar archivos cargados */ $ocs = Oc::whereReqId($req_id)->lists('id'); if (count($ocs) > 0) { Articulo::whereIn('oc_id', $ocs)->update(['oc_id' => 0]); foreach ($ocs as $oc_id) { $oc = Oc::find($oc_id)->delete(); } } $cuadro->delete(); return redirect()->action('RequisicionController@show', array($req_id))->with(['message' => 'Cuadro Comparativo cancelado con éxito', 'alert-class' => 'alert-success']); }
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); }
/** * Update the specified resource in storage. * * @param int $id * @return Response */ public function update($id, ReqFormRequest $request) { $req = Req::findOrFail($id); //Actualización de estatus $accion = $request->input('accion'); if (isset($accion)) { switch ($accion) { case 'Enviar': $estatus = 'Enviada'; break; case 'Recuperar': case 'Regresar': $estatus = ''; break; case 'Autorizar': $estatus = 'Autorizada'; break; case 'Desautorizar': $estatus = 'Cotizada'; break; } if ($accion == 'Asignar') { $user_id_responsable = $request->input('user_id'); if (empty($user_id_responsable)) { return redirect()->action('RequisicionController@show', array($req->id))->with(['message' => 'No se seleccionó ningún usuario a asignar']); } $estatus = 'Asignada'; //Solo para efectos del registro $req->user_id = $user_id_responsable; $nombre = User::whereId($user_id_responsable)->pluck('nombre'); $mensaje_exito = 'La requisición ' . $req->req . ' ha sido asignada a ' . $nombre; } elseif ($accion == 'Desautorizar') { $articulos = Articulo::whereReqId($id)->get(); foreach ($articulos as $articulo) { if ($articulo->rms->count() > 0) { foreach ($articulo->rms as $articulo_rm) { $articulo->rms()->updateExistingPivot($articulo_rm->id, ['rm_id' => 0, 'monto' => 0]); } } } $req->estatus = $estatus; } else { $req->estatus = $estatus; } $req->save(); if ($accion == 'Regresar') { $cuadro = Cuadro::whereReqId($id)->first(); if (!empty($cuadro)) { $cuadro->delete(); } $cotizaciones = Cotizacion::whereReqId($id)->with('articulos')->get(); if (count($cotizaciones) > 0) { foreach ($cotizaciones as $cotizacion) { $cotizacion->articulos()->detach(); $cotizacion->delete(); } } /** * @todo Enviar correo a Jefe de la Unidad de Presupuesto * @todo Eliminar archivos cargados */ $ocs = Oc::whereReqId($id)->lists('id'); if (count($ocs) > 0) { Articulo::whereIn('oc_id', $ocs)->update(['oc_id' => 0]); foreach ($ocs as $oc_id) { Oc::find($oc_id)->delete(); } } $mensaje_exito = 'La requisición ha sido regresada con éxito'; } //Creación de registro $fecha_hora = Carbon::now(); $registro = new Registro(['user_id' => Auth::user()->id, 'estatus' => $estatus, 'fecha_hora' => $fecha_hora]); $req->registros()->save($registro); //Edición de información } else { $req->urg_id = $request->input('urg_id'); $req->proyecto_id = $request->input('proyecto_id'); $req->etiqueta = $request->input('etiqueta'); $req->lugar_entrega = $request->input('lugar_entrega'); $req->obs = $request->input('obs'); $req->autoriza = FirmasSolRec::getUserAutoriza($request->input('proyecto_id')); $req->vobo = $request->input('vobo'); $req->save(); } if ($accion == 'Regresar' || $accion == 'Asignar') { return redirect()->action('RequisicionController@index', 'suministros')->with(['message' => $mensaje_exito, 'alert-class' => 'alert-success']); } return redirect()->action('RequisicionController@show', array($req->id)); }