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']);
 }
 public function update(Request $request, $id)
 {
     $datos = DatosFacturacion::find($id);
     $datos->fill($request->all());
     $datos->save();
     $direccion = Address::find($datos->address->id);
     $direccion->fill($request->all());
     $direccion->save();
     Session::flash('message', 'Datos actualizada corréctamente');
     return Redirect::to('/facturacion');
 }
 public function traerAddress(Request $request)
 {
     $direccion = Address::find($request->address_id);
     $estado = $direccion->ciudad->estado->id;
     $pais = $direccion->ciudad->estado->pais->id;
     return response()->json(['direccion' => $direccion, 'estado' => $estado, 'pais' => $pais]);
 }