public function store(Request $request)
 {
     $almacen = Almacen::find($request->almacen);
     if (!$almacen->verificaCapacidad($request->cantidad)) {
         Session::flash('message', 'No existe espacio suficiente en el almacen, intenta con otro.');
         return Redirect::to('compra');
     }
     $almacen->actualizaStock($request->cantidad);
     $inventario = new Inventario();
     $inventario->fechacosecha = $request->fechacosecha;
     $inventario->cantidad = $request->cantidad;
     $pais = Pais::find($request->pais);
     if (strcmp($pais->pais, 'México') !== 0) {
         $inventario->status = 0;
     } else {
         $inventario->status = 4;
     }
     $inventario->id_producto = $request->producto;
     $inventario->id_almacen = $request->almacen;
     $inventario->save();
     $compra = new Compra();
     $compra->precio = $request->costo;
     $compra->proveedor = $request->proveedor;
     $compra->id_ciudad = $request->id_ciudad;
     $compra->id_inventario = $inventario->id;
     $compra->cantidad = $request->cantidad;
     $compra->save();
     Session::flash('message', 'Acción completada con éxito');
     return Redirect::to('compra');
 }
 public function destroy($id)
 {
     //
     Almacen::destroy($id);
     Session::flash('message', 'Almacen Eliminado');
     return Redirect::to('/almacen');
 }
 public function store(Request $request)
 {
     $almacen = Almacen::find($request->almacen);
     if (!$almacen->verificaCapacidad($request->cantidad)) {
         Session::flash('message', 'No hay suficiente espacio en el almacen.');
         return view('produccion');
     }
     $almacen->actualizaStock($request->cantidad);
     $inventario = new Inventario();
     $inventario->fechacosecha = $request->fechacosecha;
     $inventario->cantidad = $request->cantidad;
     $inventario->status = 4;
     $inventario->id_producto = $request->producto;
     $inventario->id_almacen = $request->almacen;
     $inventario->save();
     $produccion = new Produccion();
     $produccion->precio = $request->costo;
     $produccion->caracteristicas = $request->caracteristicas;
     $produccion->dificultades = $request->dificultades;
     $produccion->id_ciudad = $request->id_ciudad;
     $produccion->id_inventario = $inventario->id;
     $produccion->cantidad = $request->cantidad;
     $produccion->save();
     Session::flash('message', 'Acción completada con éxito');
     return Redirect::to('produccion');
 }
 public function createVenta(Request $request)
 {
     DB::beginTransaction();
     $venta = new Venta();
     //Ingreso nueva dirección?
     if ($request->direccion == 0) {
         $address = new Address();
         $address->user_id = Auth::user()->id;
         $address->id_ciudad = $request->ciudad;
         $address->colonia = $request->colonia;
         $address->calle = $request->calle;
         $address->cp = $request->cp;
         $address->save();
         $venta->address_id = $address->id;
     } else {
         $venta->address_id = $request->direccion;
     }
     $venta->user_id = Auth::user()->id;
     if (strcmp($venta->address->ciudad->estado->pais->pais, 'México') == 0) {
         $venta->pedimento = "mx";
     } else {
         $venta->pedimento = "pendiente";
     }
     $venta->save();
     //Se graba la instancia de venta
     $card = Auth::user()->tarjeta;
     $card->user_id = Auth::user()->id;
     $card->nombre = $request->nomCard;
     $card->apellido = $request->apCard;
     $card->numero = $request->numCard;
     $card->fecha = $request->fechaCard;
     $card->anio = $request->anioCard;
     $card->codigo = $request->codigoCard;
     $card->save();
     //Se guarda la forma de pago
     //Se bloquean del inventario las tuplas que coincidan en producto con lo que quiere comprar el usuario
     foreach (Auth::user()->carrito->lineasCarrito as $i => $linea) {
         DB::table('inventarios')->where('id_producto', $linea->producto->id)->lockForUpdate()->get();
     }
     //Recorremos las lineas de carrito
     foreach (Auth::user()->carrito->lineasCarrito as $i => $linea) {
         //Función PEPS
         $this->PEPS($linea);
         //actualizamos almacen
         $almacen = Almacen::find($linea->producto->inventario->almacen->id);
         $almacen->stock = $almacen->stock - $linea->cantidad;
         $almacen->save();
         //para cada linea de carrito se registra la linea de venta
         $lineaVenta = new LineaDeVenta();
         $lineaVenta->id_venta = $venta->id;
         $lineaVenta->id_producto = $linea->producto->id;
         $lineaVenta->cantidad = $linea->cantidad;
         $lineaVenta->save();
     }
     DB::commit();
     return response()->json(['mensaje' => 'Venta grabada']);
 }