18 def post(self, request, producto_id):
20 producto = Producto.objects.get(pk=producto_id)
21 cantidad = int(request.data.get(
'cantidad'))
22 id_usuario = request.user.id_usuario
23 direccion = request.data.get(
'direccion')
25 current_time = datetime.now().time()
26 pedido, created = Pedido.objects.get_or_create(id_usuario_id=id_usuario, estado=
"Pendiente")
30 request.user.direccion = direccion
34 DetallePedido.objects.filter(id_pedido=pedido).update(direccion_entrega=direccion)
36 elif request.user.direccion:
37 direccion = request.user.direccion
40 direccion =
'Sin especificar'
42 if cantidad > producto.stock:
43 return Response({
'error':
'Stock insuficiente'}, status=400)
46 pedido.direccion_entrega = direccion
49 DetallePedido.objects.filter(id_pedido=pedido).update(direccion_entrega=direccion)
52 pedido.hora_pedido = current_time
53 pedido.fecha_pedido = date.today()
56 carrito, carritoCreated = Carrito.objects.get_or_create(producto_id=producto.id_producto, usuario_id=id_usuario, id_pedido_id=pedido.id_pedidos)
58 carrito.cantidad = cantidad
61 carrito.cantidad += cantidad
64 detallePedido, detalleCreated = DetallePedido.objects.get_or_create(
65 precio_producto=producto.precio, id_pedido_id=pedido.id_pedidos, id_producto_id=producto.id_producto)
68 detallePedido.cantidad_productos = cantidad
69 detallePedido.subtotal = detallePedido.cantidad_productos * detallePedido.precio_producto
72 detallePedido.cantidad_productos += cantidad
73 detallePedido.subtotal = detallePedido.cantidad_productos * detallePedido.precio_producto
77 DetallePedido.objects.filter(id_pedido=pedido).update(direccion_entrega=pedido.direccion_entrega)
79 producto.stock -= cantidad
81 return Response({
'message':
'Producto agregado al carrito'})