# Generated by Django 5.1 on 2025-01-23 05:14

import django.db.models.deletion
import uuid
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('products', '0001_initial'),
        ('shops', '0001_initial'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='Ads',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('AdTitle', models.CharField(blank=True, max_length=50, null=True)),
                ('AdDescription', models.CharField(blank=True, max_length=250, null=True)),
                ('AdPlacement', models.TextField(blank=True, max_length=100, null=True)),
                ('AdType', models.CharField(choices=[('Discount', 'Discount'), ('Coupon Code', 'Coupon Code'), ('New Product', 'New Product')], max_length=20)),
                ('StandardImage', models.ImageField(blank=True, null=True, upload_to='standard_images/')),
                ('BannerImage', models.ImageField(blank=True, null=True, upload_to='banners/')),
                ('AdLink', models.URLField()),
                ('AdCommunication', models.CharField(choices=[('Email', 'Email'), ('Whatsapp', 'Whatsapp'), ('SMS', 'SMS'), ('System', 'System'), ('App', 'App')], max_length=20)),
                ('AdSchedule', models.DateTimeField()),
                ('created_at', models.DateTimeField(auto_now_add=True)),
            ],
        ),
        migrations.CreateModel(
            name='DeliveryBoys',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('team_member_name', models.CharField(blank=True, max_length=20, null=True)),
                ('phone_number', models.CharField(blank=True, max_length=14, null=True)),
                ('delivery_boy_status', models.CharField(choices=[('assigned', 'assigned'), ('not assigned', 'not assigned')], default='not assigned', max_length=100)),
                ('status', models.CharField(choices=[('not verified', 'not verified'), ('verified', 'verified')], default='not verified', max_length=100)),
                ('created_date', models.DateTimeField(auto_now_add=True, null=True)),
                ('updated_date', models.DateTimeField(auto_now=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name='DeliverySlot',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('start_time', models.TimeField()),
                ('end_time', models.TimeField()),
                ('is_available', models.BooleanField(default=True)),
                ('status', models.CharField(choices=[('active', 'Active'), ('inactive', 'Inactive')], default='active', max_length=20)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
            ],
        ),
        migrations.CreateModel(
            name='Dropaddress',
            fields=[
                ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
                ('name', models.CharField(max_length=200)),
                ('house_number_or_name', models.CharField(max_length=200)),
                ('street', models.CharField(max_length=100)),
                ('land_mark', models.CharField(blank=True, max_length=250, null=True)),
                ('city', models.CharField(max_length=100)),
                ('district', models.CharField(blank=True, max_length=50, null=True)),
                ('state_or_province', models.CharField(max_length=100)),
                ('pin_code', models.IntegerField()),
                ('latitude', models.FloatField()),
                ('longitude', models.FloatField()),
                ('address_type', models.CharField(choices=[('home', 'home'), ('work', 'work'), ('others', 'others')], max_length=100)),
                ('contact_number', models.CharField(max_length=20)),
            ],
        ),
        migrations.CreateModel(
            name='Cart',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('anonymous_id', models.CharField(blank=True, max_length=50, null=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('user', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
            ],
        ),
        migrations.CreateModel(
            name='CartItem',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('quantity', models.PositiveIntegerField(default=1)),
                ('cart', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='items', to='orders.cart')),
                ('sku', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='products.sku')),
            ],
        ),
        migrations.CreateModel(
            name='Coupons',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('CouponName', models.CharField(blank=True, max_length=50, null=True)),
                ('CouponCode', models.CharField(blank=True, max_length=50, null=True)),
                ('CouponDescription', models.CharField(blank=True, max_length=250, null=True)),
                ('Icon', models.ImageField(blank=True, null=True, upload_to='icons/')),
                ('CouponOn', models.CharField(choices=[('Category', 'Category'), ('SubCategory', 'SubCategory'), ('Product', 'Product'), ('Sku', 'Sku')], max_length=40)),
                ('TotalBillAmount', models.FloatField(blank=True, max_length=20, null=True)),
                ('DiscountAmount', models.IntegerField(blank=True, null=True)),
                ('DiscountPercentage', models.IntegerField(blank=True, null=True)),
                ('CouponType', models.CharField(choices=[('amount', 'amount'), ('percentage', 'percentage')], max_length=20)),
                ('MaxNumberofUsers', models.IntegerField()),
                ('Validity_start_date', models.DateTimeField()),
                ('validity_end_date', models.DateTimeField()),
                ('TermsAndConditions', models.CharField(blank=True, max_length=400, null=True)),
                ('NotificationSchedule', models.DateTimeField(blank=True, null=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('MaxDiscountAmountForPercentage', models.FloatField(blank=True, help_text='Maximum discount amount when percentage is selected', null=True)),
                ('ApplicableCategory', models.ManyToManyField(blank=True, to='products.productcategory')),
                ('ApplicableProduct', models.ManyToManyField(blank=True, to='products.products')),
                ('ApplicableSku', models.ManyToManyField(blank=True, to='products.sku')),
                ('ApplicableSubCategory', models.ManyToManyField(blank=True, to='products.productsubcategory')),
                ('CouponUsed', models.ManyToManyField(blank=True, null=True, to=settings.AUTH_USER_MODEL)),
            ],
        ),
        migrations.AddField(
            model_name='cart',
            name='coupon',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='orders.coupons'),
        ),
        migrations.CreateModel(
            name='Discount',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('DiscountName', models.CharField(blank=True, max_length=50, null=True)),
                ('DiscountCode', models.CharField(blank=True, max_length=50, null=True)),
                ('DiscountDescription', models.CharField(blank=True, max_length=250, null=True)),
                ('DiscountOn', models.CharField(choices=[('Category', 'Category'), ('SubCategory', 'SubCategory'), ('Product', 'Product'), ('Sku', 'Sku')], max_length=40)),
                ('DiscountPercentage', models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('ApplicableCategory', models.ManyToManyField(blank=True, to='products.productcategory')),
                ('ApplicableProduct', models.ManyToManyField(blank=True, to='products.products')),
                ('ApplicableSku', models.ManyToManyField(blank=True, to='products.sku')),
                ('ApplicableSubCategory', models.ManyToManyField(blank=True, to='products.productsubcategory')),
            ],
        ),
        migrations.CreateModel(
            name='Orders',
            fields=[
                ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
                ('order_ID', models.CharField(blank=True, max_length=255, null=True)),
                ('order_type', models.CharField(choices=[('Local Orders', 'Local Orders'), ('Long Distance Orders', 'Long Distance Orders'), ('Custom Orders', 'Custom Orders'), ('Pick Up', 'Pick Up')], max_length=50)),
                ('sub_total', models.FloatField(blank=True, null=True)),
                ('taxes_and_charges', models.FloatField(blank=True, null=True)),
                ('delivery_charges', models.FloatField(blank=True, null=True)),
                ('grand_total', models.FloatField(blank=True, null=True)),
                ('order_status', models.CharField(choices=[('New Order', 'New Order'), ('Viewed', 'Viewed'), ('Order Packed', 'Order Packed'), ('Delivery Assigned', 'Delivery Assigned'), ('Delivered', 'Delivered'), ('Failed', 'Failed')], max_length=50)),
                ('delivery_boy', models.CharField(blank=True, max_length=255, null=True)),
                ('delivery_instruction', models.TextField(blank=True, null=True)),
                ('cooking_instruction', models.TextField(blank=True, null=True)),
                ('order_assigntime', models.DateTimeField(blank=True, null=True)),
                ('order_delivered_time', models.DateTimeField(blank=True, null=True)),
                ('delivery_slot_date', models.DateField(blank=True, null=True)),
                ('delivery_slot_time', models.TimeField(blank=True, null=True)),
                ('color_status', models.CharField(choices=[('Yellow', 'Yellow'), ('Orange', 'Orange'), ('Red', 'Red'), ('Dark Red', 'Dark  Red')], max_length=50, null=True)),
                ('color_status_updation_time', models.DateTimeField(auto_now_add=True)),
                ('created_date', models.DateTimeField(auto_now_add=True)),
                ('updated_date', models.DateTimeField(auto_now=True)),
                ('total_savings', models.FloatField(blank=True, null=True)),
                ('coupon_savings', models.FloatField(blank=True, null=True)),
                ('discount', models.FloatField(blank=True, null=True)),
                ('drop_address', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='orders.dropaddress')),
                ('pu_uuid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='shops.productionunit')),
                ('store_uuid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='shops.shop')),
                ('user_uuid', models.ForeignKey(limit_choices_to={'user_type': 'Customer'}, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
            ],
        ),
        migrations.CreateModel(
            name='OrderProducts',
            fields=[
                ('order_product_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
                ('product_name', models.CharField(blank=True, max_length=255, null=True)),
                ('quantity', models.CharField(blank=True, max_length=255, null=True)),
                ('price', models.FloatField(blank=True, null=True)),
                ('sku', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='sku', to='products.sku')),
                ('order', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='order_data', to='orders.orders')),
            ],
        ),
        migrations.CreateModel(
            name='OrderDelivery',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('delivery_type', models.CharField(choices=[('Own Delivery', 'Own Delivery'), ('Courier Delivery', 'Courier Delivery'), ('Pick Up', 'Pick Up')], max_length=50)),
                ('courier_service_name', models.CharField(blank=True, max_length=255, null=True)),
                ('package_number', models.CharField(blank=True, max_length=255, null=True)),
                ('expected_date_of_delivery', models.DateField(blank=True, null=True)),
                ('tracking_link', models.URLField(blank=True, null=True)),
                ('delivery_boy', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='orders.deliveryboys')),
                ('order', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='orders.orders')),
            ],
        ),
        migrations.CreateModel(
            name='NotificationStat',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('Sendmsg', models.CharField(max_length=100)),
                ('created_date', models.DateTimeField(auto_now_add=True)),
                ('updated_date', models.DateTimeField(auto_now=True)),
                ('sendTo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
                ('OrderID', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='orders.orders')),
            ],
        ),
        migrations.CreateModel(
            name='Payment',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('razorpay_payment_id', models.CharField(blank=True, max_length=255, null=True)),
                ('razorpay_order_id', models.CharField(blank=True, max_length=255, null=True)),
                ('payment_status', models.CharField(choices=[('pending', 'Pending'), ('paid', 'Paid'), ('failed', 'Failed')], default='pending', max_length=50)),
                ('payment_date', models.DateTimeField(auto_now_add=True)),
                ('order', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='orders.orders')),
            ],
        ),
    ]
