public function estatusReq($estatus)
 {
     $req = Req::find($this->req->id);
     $req->estatus = $estatus;
     $req->save();
     //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);
 }
 /**
  * Show the form for creating a new resource.
  *
  * @return Response
  */
 public function create($req_id)
 {
     $req = Req::find($req_id);
     $unidades = Unidad::all();
     $data['req'] = $req;
     $solicita = User::find($req->solicita);
     $data['solicita'] = $solicita;
     foreach ($unidades as $unidad) {
         $arr_unidades[$unidad->tipo][$unidad->unidad] = $unidad->unidad;
     }
     $data['unidades'] = $arr_unidades;
     return view('reqs.formArticulo')->with($data);
 }
 public function recibirReq(RecibirRequest $request)
 {
     foreach ($request->input('arr_req_id') as $req_id) {
         $requisicion = Req::find($req_id);
         $requisicion->estatus = $request->input('estatus');
         $requisicion->user_id = \Auth::user()->id;
         $requisicion->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]);
         $requisicion->registros()->save($registro);
     }
     return redirect()->action('RecibirController@seleccionarReq')->with(['message' => 'Requisiciones recibidas', 'alert-class' => 'alert-success']);
 }
 /**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store(InvitacionRequest $request)
 {
     //Si existe un cuadro para la requisición, agrega la referencia del ID del cuadro
     $verifica_cuadro = Cuadro::whereReqId($request->input('req_id'))->first();
     if (!empty($verifica_cuadro)) {
         $request->merge(array('cuadro_id' => $verifica_cuadro->id));
     }
     //Verifica si es la primer invitación
     $cotizaciones_existentes = Cotizacion::whereReqId($request->input('req_id'))->count();
     //Si es la primera, se crea registro en requisición y se actualiza su estatus
     if ($cotizaciones_existentes == 0) {
         $req = Req::find($request->input('req_id'));
         $estatus_req = 'Cotizando';
         $req->save();
         $fecha_hora = Carbon::now();
         $registro = new Registro(['user_id' => \Auth::user()->id, 'estatus' => $estatus_req, 'fecha_hora' => $fecha_hora]);
         $req->registros()->save($registro);
     }
     $request->merge(array('fecha_invitacion' => Carbon::now()->toDateString()));
     $invitacion = Cotizacion::create($request->all());
     return redirect()->action('InvitacionController@index', array($invitacion->req_id));
 }
 /**
  * Muestra formulario para autorizar requisición.
  *
  * @return Response
  */
 public function formAutorizar($id)
 {
     $req = Req::find($id);
     $articulos = Articulo::whereReqId($id)->with('cotizaciones')->with('rms.cog')->get();
     $articulos_helper = new ArticulosHelper($articulos, $id);
     $articulos_helper->setArticulosSinRms();
     $articulos_helper->setRmsArticulos();
     $arr_rms = Rm::whereProyectoId($req->proyecto_id)->get()->lists('cog_rm_saldo', 'id')->all();
     $data['req'] = $req;
     $data['articulos'] = $articulos;
     $data['articulos_sin_rms'] = $articulos_helper->articulos_sin_rms;
     $data['rms_articulos'] = $articulos_helper->rms_articulos;
     $data['arr_rms'] = $arr_rms;
     $rms_asignados = true;
     foreach ($articulos as $articulo) {
         if ($articulo->rms->count() == 0) {
             $rms_asignados = false;
         }
     }
     $data['rms_asignados'] = $rms_asignados;
     $solicita = User::find($req->solicita);
     $data['solicita'] = $solicita;
     return view('reqs.formAutorizarReq')->with($data);
 }
 /**
  * Actualiza cuadro comparativo
  *
  * @param  int  $id
  * @return Response
  */
 public function update($id, MatrizCuadroRequest $request)
 {
     /**
      * @todo Validar que no se seleccione una cotización de un artículo con costo == 0
      */
     $cuadro = Cuadro::find($id);
     $arr_articulos_id = Articulo::whereReqId($cuadro->req_id)->lists('id')->all();
     $arr_cotizaciones_id = Cotizacion::whereReqId($cuadro->req_id)->lists('id')->all();
     foreach ($arr_articulos_id as $articulo_id) {
         $articulo = Articulo::find($articulo_id);
         $sel_value = $request->input('sel_' . $articulo_id);
         $no_cotizado = $request->input('no_cotizado_' . $articulo_id);
         if (empty($no_cotizado)) {
             $no_cotizado = 0;
         }
         foreach ($arr_cotizaciones_id as $cotizacion_id) {
             $costo_nuevo = $request->input('costo_' . $articulo_id . '_' . $cotizacion_id);
             if (isset($costo_nuevo)) {
                 $sel_value == $cotizacion_id && $costo_nuevo > 0 && empty($no_cotizado) ? $sel = 1 : ($sel = 0);
                 //Verifica existencia de pivote
                 if ($articulo->cotizaciones()->get()->contains($cotizacion_id)) {
                     $costo_actual = $articulo->cotizaciones()->whereCotizacionId($cotizacion_id)->first()->pivot->costo;
                     $sel_actual = $articulo->cotizaciones()->whereCotizacionId($cotizacion_id)->first()->pivot->sel;
                     if ($costo_actual != $costo_nuevo || $sel_actual != $sel) {
                         $articulo->cotizaciones()->updateExistingPivot($cotizacion_id, ['costo' => round($costo_nuevo, 2), 'sel' => $sel]);
                     }
                 } else {
                     //Crea un nuevo registro en pivote articulo_cotizacion
                     $articulo->cotizaciones()->attach([$cotizacion_id => ['costo' => round($costo_nuevo, 2), 'sel' => $sel]]);
                 }
             }
         }
         //Actualizar impuesto en articulos
         $articulo->impuesto = $request->input('impuesto_' . $articulo_id);
         $articulo->no_cotizado = $no_cotizado;
         $articulo->save();
     }
     //Actualiza información de vigencia y garantía @cotizaciones
     foreach ($arr_cotizaciones_id as $cotizacion_id) {
         $cotizacion = Cotizacion::find($cotizacion_id);
         $cotizacion->vigencia = $request->input('vigencia_' . $cotizacion_id);
         $cotizacion->garantia = $request->input('garantia_' . $cotizacion_id);
         $cotizacion->imprimir = true;
         $cotizacion->save();
     }
     //Actualizar Tipo de Cambio en @reqs
     $tipo_cambio = $request->input('tipo_cambio');
     $moneda = $request->input('moneda');
     $req = Req::find($cuadro->req_id);
     if ($req->tipo_cambio != $tipo_cambio || $req->moneda != $moneda) {
         $req->tipo_cambio = $tipo_cambio;
         $req->moneda = $moneda;
         $req->save();
     }
     return redirect()->action('MatrizCuadroController@show', array($cuadro->req_id));
 }
 public function formatoPdf($id)
 {
     $req = Req::find($id);
     $articulos = Articulo::whereReqId($id)->get();
     $req_pdf = new Requisicion($req, $articulos);
     return response($req_pdf->crearPdf()->header('Content-Type', 'application/pdf'));
 }
 private function actualizarEstatusReq($req_id)
 {
     $ocs = Oc::where('req_id', $req_id)->get();
     $estatus_req = 'Pagada';
     foreach ($ocs as $oc) {
         if ($oc->estatus != 'Pagada') {
             $estatus_req = 'Autorizada';
         }
     }
     $req = Req::find($req_id);
     if ($req->estatus != $estatus_req) {
         $req->estatus = $estatus_req;
         $req->save();
     }
 }