feat: Add stock management features including stock reservations and updates to cart and checkout processes

This commit is contained in:
2026-04-09 10:03:57 +02:00
parent 618c65accb
commit cbcdb823db
25 changed files with 279 additions and 25 deletions
@@ -0,0 +1,45 @@
# Generated by Django 6.0.1 on 2026-04-09 06:55
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('tienda', '0003_order_transaction_code'),
]
operations = [
migrations.AddField(
model_name='product',
name='stock',
field=models.PositiveIntegerField(default=0),
),
migrations.CreateModel(
name='StockReservation',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('session_key', models.CharField(blank=True, max_length=40, null=True)),
('status', models.CharField(choices=[('active', 'Activa'), ('completed', 'Completada'), ('cancelled', 'Cancelada'), ('expired', 'Expirada')], default='active', max_length=20)),
('payment_method', models.CharField(choices=[('stripe', 'Stripe'), ('paypal', 'PayPal')], max_length=20)),
('expires_at', models.DateTimeField(db_index=True)),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='stock_reservations', to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='StockReservationItem',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('quantity', models.PositiveIntegerField(default=1)),
('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='stock_reservation_items', to='tienda.product')),
('reservation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='items', to='tienda.stockreservation')),
],
options={
'unique_together': {('reservation', 'product')},
},
),
]