# Generated by Django 5.1 on 2025-11-05 09:00

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


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('products', '0006_alter_sku_same_day_delivery'),
        ('shops', '0002_alter_shop_delivery_mode_alter_shop_status'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='CustomCouponSettings',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('coupon_name', models.CharField(blank=True, max_length=255, null=True)),
                ('coupon_description', models.TextField(blank=True, null=True)),
                ('lower_limit_price', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True)),
                ('higher_limit_price', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True)),
                ('discount_amount', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True)),
            ],
        ),
        migrations.CreateModel(
            name='DeliveryDiscount',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('min_order_value', models.DecimalField(decimal_places=2, max_digits=10)),
                ('discount_percent', models.DecimalField(decimal_places=2, max_digits=5)),
            ],
        ),
        migrations.CreateModel(
            name='DeliverySettings',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('base_fee', models.DecimalField(decimal_places=2, default=Decimal('20.0'), max_digits=10)),
                ('base_km', models.DecimalField(decimal_places=2, default=Decimal('3.0'), max_digits=5)),
                ('per_km_fee', models.DecimalField(decimal_places=2, default=Decimal('5.0'), max_digits=10)),
                ('free_delivery_min_order_value', models.DecimalField(decimal_places=2, default=Decimal('0.0'), max_digits=10)),
                ('free_delivery_max_distance', models.DecimalField(decimal_places=2, default=Decimal('0.0'), max_digits=5)),
            ],
        ),
        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)),
                ('custom_coupon', models.CharField(blank=True, max_length=50, null=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='CartItemCustomization',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('custom_note', models.TextField(blank=True, null=True)),
                ('custom_image', models.ImageField(blank=True, null=True, upload_to='custom_images/')),
                ('custom_image_id', models.TextField(blank=True, null=True)),
                ('cart_item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='customizations', to='orders.cartitem')),
            ],
        ),
        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.CASCADE, to='orders.coupons'),
        ),
        migrations.CreateModel(
            name='CustomCoupon',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('coupon_code', models.CharField(blank=True, max_length=50, null=True)),
                ('created_date', models.DateTimeField(auto_now_add=True)),
                ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
                ('coupon', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='orders.customcouponsettings')),
            ],
        ),
        migrations.CreateModel(
            name='DeletedOrders',
            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)),
                ('grand_total', models.FloatField(blank=True, null=True)),
                ('order_status', models.CharField(choices=[('New Order', 'New Order'), ('Enquiry', 'Enquiry'), ('Confirmed', 'Confirmed'), ('Viewed', 'Viewed'), ('Order Packed', 'Order Packed'), ('Delivery Assigned', 'Delivery Assigned'), ('Despatched', 'Despatched'), ('Contacted', 'Contacted'), ('Bill Created', 'Bill Created'), ('Delivered', 'Delivered'), ('Failed', 'Failed')], max_length=50)),
                ('order_assigntime', models.DateTimeField(blank=True, null=True)),
                ('order_delivered_time', models.DateTimeField(blank=True, null=True)),
                ('created_date', models.DateTimeField()),
                ('description', models.TextField(blank=True, null=True)),
                ('message', models.CharField(blank=True, null=True)),
                ('custom_product', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='products.customproduct')),
                ('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')),
            ],
        ),
        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, unique=True)),
                ('email', models.EmailField(blank=True, max_length=255, null=True, unique=True, verbose_name='email address')),
                ('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)),
                ('shop', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='shops.shop')),
            ],
        ),
        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, unique=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)),
                ('StandardImage', models.ImageField(blank=True, null=True, upload_to='standard_images/')),
                ('BannerImage', models.ImageField(blank=True, null=True, upload_to='banners/')),
                ('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='Ads',
            fields=[
                ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
                ('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', 'Coupon'), ('Product', '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/')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('Product', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='products.products')),
                ('Coupon', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='orders.coupons')),
                ('Discount', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='orders.discount')),
            ],
        ),
        migrations.CreateModel(
            name='Message',
            fields=[
                ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('message_type', models.CharField(choices=[('Email', 'Email'), ('Sms', 'SMS'), ('Whatsapp', 'WhatsApp')], max_length=20)),
                ('message', models.TextField(blank=True, null=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('ads', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='orders.ads')),
            ],
        ),
        migrations.CreateModel(
            name='Communication',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('is_send', models.BooleanField(default=False)),
                ('user', models.ForeignKey(limit_choices_to={'user_type': 'Customer'}, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
                ('message', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='orders.message')),
            ],
        ),
        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'), ('Enquiry', 'Enquiry'), ('Confirmed', 'Confirmed'), ('Viewed', 'Viewed'), ('Order Packed', 'Order Packed'), ('Delivery Assigned', 'Delivery Assigned'), ('Despatched', 'Despatched'), ('Contacted', 'Contacted'), ('Bill Created', 'Bill Created'), ('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=[('White', 'White'), ('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)),
                ('description', models.TextField(blank=True, null=True)),
                ('message', models.CharField(blank=True, null=True)),
                ('platform', models.CharField(choices=[('Andriod', 'Andriod'), ('IOS', 'IOS'), ('Web', 'Web'), ('Other', 'Other')], max_length=50, null=True)),
                ('custom_product', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='products.customproduct')),
                ('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.CASCADE, 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.CASCADE, to='orders.deliveryboys')),
                ('order', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, 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)),
                ('Description', models.CharField(blank=True, max_length=1000, null=True)),
                ('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')),
                ('bill_desk_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)),
                ('surcharge', models.CharField(blank=True, max_length=255, null=True)),
                ('payment_method_type', models.CharField(blank=True, max_length=255, null=True)),
                ('amount', models.CharField(blank=True, max_length=255, null=True)),
                ('transaction_error_type', models.CharField(blank=True, max_length=255, null=True)),
                ('payment_category', models.CharField(blank=True, max_length=255, null=True)),
                ('bank_ref_no', models.CharField(blank=True, max_length=255, null=True)),
                ('transactionid', models.CharField(blank=True, max_length=255, null=True)),
                ('txn_process_type', models.CharField(blank=True, max_length=255, null=True)),
                ('bankid', models.CharField(blank=True, max_length=255, null=True)),
                ('itemcode', models.CharField(blank=True, max_length=255, null=True)),
                ('transaction_error_code', models.CharField(blank=True, max_length=255, null=True)),
                ('currency', models.CharField(blank=True, max_length=255, null=True)),
                ('auth_status', models.CharField(blank=True, max_length=255, null=True)),
                ('transaction_error_desc', models.CharField(blank=True, max_length=255, null=True)),
                ('charge_amount', models.CharField(blank=True, max_length=255, null=True)),
                ('payment_date', models.DateTimeField(auto_now_add=True)),
                ('order', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='orders.orders')),
            ],
        ),
        migrations.CreateModel(
            name='SomeOneElse',
            fields=[
                ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('name', models.CharField(max_length=200)),
                ('phone_number', models.CharField(max_length=100)),
                ('message', models.CharField(blank=True, max_length=400, null=True)),
                ('cart', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='orders.cart')),
                ('orders', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='some_one_else_order', to='orders.orders')),
            ],
        ),
    ]
