from __future__ import unicode_literals

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

import counter.fields


class Migration(migrations.Migration):
    dependencies = [
        ("subscription", "0001_initial"),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ("core", "0001_initial"),
        ("club", "0002_auto_20160824_2152"),
    ]

    operations = [
        migrations.CreateModel(
            name="Counter",
            fields=[
                (
                    "id",
                    models.AutoField(
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                        auto_created=True,
                    ),
                ),
                ("name", models.CharField(max_length=30, verbose_name="name")),
                (
                    "type",
                    models.CharField(
                        choices=[
                            ("BAR", "Bar"),
                            ("OFFICE", "Office"),
                            ("EBOUTIC", "Eboutic"),
                        ],
                        max_length=255,
                        verbose_name="counter type",
                    ),
                ),
                (
                    "club",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="club.Club",
                        related_name="counters",
                    ),
                ),
                (
                    "edit_groups",
                    models.ManyToManyField(
                        to="core.Group", blank=True, related_name="editable_counters"
                    ),
                ),
            ],
            options={"verbose_name": "counter"},
        ),
        migrations.CreateModel(
            name="Customer",
            fields=[
                (
                    "user",
                    models.OneToOneField(
                        on_delete=django.db.models.deletion.CASCADE,
                        primary_key=True,
                        serialize=False,
                        to=settings.AUTH_USER_MODEL,
                    ),
                ),
                (
                    "account_id",
                    models.CharField(
                        unique=True, max_length=10, verbose_name="account id"
                    ),
                ),
                (
                    "amount",
                    counter.fields.CurrencyField(
                        decimal_places=2, max_digits=12, verbose_name="amount"
                    ),
                ),
            ],
            options={
                "verbose_name": "customer",
                "ordering": ["account_id"],
                "verbose_name_plural": "customers",
            },
        ),
        migrations.CreateModel(
            name="Permanency",
            fields=[
                (
                    "id",
                    models.AutoField(
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                        auto_created=True,
                    ),
                ),
                ("start", models.DateTimeField(verbose_name="start date")),
                ("end", models.DateTimeField(verbose_name="end date")),
                (
                    "counter",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="counter.Counter",
                        related_name="permanencies",
                    ),
                ),
                (
                    "user",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to=settings.AUTH_USER_MODEL,
                        related_name="permanencies",
                    ),
                ),
            ],
            options={"verbose_name": "permanency"},
        ),
        migrations.CreateModel(
            name="Product",
            fields=[
                (
                    "id",
                    models.AutoField(
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                        auto_created=True,
                    ),
                ),
                ("name", models.CharField(max_length=64, verbose_name="name")),
                (
                    "description",
                    models.TextField(blank=True, verbose_name="description"),
                ),
                (
                    "code",
                    models.CharField(max_length=16, blank=True, verbose_name="code"),
                ),
                (
                    "purchase_price",
                    counter.fields.CurrencyField(
                        decimal_places=2, max_digits=12, verbose_name="purchase price"
                    ),
                ),
                (
                    "selling_price",
                    counter.fields.CurrencyField(
                        decimal_places=2, max_digits=12, verbose_name="selling price"
                    ),
                ),
                (
                    "special_selling_price",
                    counter.fields.CurrencyField(
                        decimal_places=2,
                        max_digits=12,
                        verbose_name="special selling price",
                    ),
                ),
                (
                    "icon",
                    models.ImageField(
                        upload_to="products", null=True, verbose_name="icon", blank=True
                    ),
                ),
                ("limit_age", models.IntegerField(default=0, verbose_name="limit age")),
                ("tray", models.BooleanField(verbose_name="tray price", default=False)),
                (
                    "buying_groups",
                    models.ManyToManyField(
                        related_name="products",
                        to="core.Group",
                        verbose_name="buying groups",
                    ),
                ),
                (
                    "club",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        verbose_name="club",
                        to="club.Club",
                        related_name="products",
                    ),
                ),
                (
                    "parent_product",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.SET_NULL,
                        null=True,
                        related_name="children_products",
                        verbose_name="parent product",
                        to="counter.Product",
                        blank=True,
                    ),
                ),
            ],
            options={"verbose_name": "product"},
        ),
        migrations.CreateModel(
            name="ProductType",
            fields=[
                (
                    "id",
                    models.AutoField(
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                        auto_created=True,
                    ),
                ),
                ("name", models.CharField(max_length=30, verbose_name="name")),
                (
                    "description",
                    models.TextField(null=True, verbose_name="description", blank=True),
                ),
                (
                    "icon",
                    models.ImageField(upload_to="products", null=True, blank=True),
                ),
            ],
            options={"verbose_name": "product type"},
        ),
        migrations.CreateModel(
            name="Refilling",
            fields=[
                (
                    "id",
                    models.AutoField(
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                        auto_created=True,
                    ),
                ),
                (
                    "amount",
                    counter.fields.CurrencyField(
                        decimal_places=2, max_digits=12, verbose_name="amount"
                    ),
                ),
                ("date", models.DateTimeField(verbose_name="date")),
                (
                    "payment_method",
                    models.CharField(
                        choices=[
                            ("CHECK", "Check"),
                            ("CASH", "Cash"),
                            ("CARD", "Credit card"),
                        ],
                        max_length=255,
                        default="CASH",
                        verbose_name="payment method",
                    ),
                ),
                (
                    "bank",
                    models.CharField(
                        choices=[
                            ("OTHER", "Autre"),
                            ("SOCIETE-GENERALE", "Société générale"),
                            ("BANQUE-POPULAIRE", "Banque populaire"),
                            ("BNP", "BNP"),
                            ("CAISSE-EPARGNE", "Caisse d'épargne"),
                            ("CIC", "CIC"),
                            ("CREDIT-AGRICOLE", "Crédit Agricole"),
                            ("CREDIT-MUTUEL", "Credit Mutuel"),
                            ("CREDIT-LYONNAIS", "Credit Lyonnais"),
                            ("LA-POSTE", "La Poste"),
                        ],
                        max_length=255,
                        default="OTHER",
                        verbose_name="bank",
                    ),
                ),
                (
                    "is_validated",
                    models.BooleanField(verbose_name="is validated", default=False),
                ),
                (
                    "counter",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="counter.Counter",
                        related_name="refillings",
                    ),
                ),
                (
                    "customer",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="counter.Customer",
                        related_name="refillings",
                    ),
                ),
                (
                    "operator",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to=settings.AUTH_USER_MODEL,
                        related_name="refillings_as_operator",
                    ),
                ),
            ],
            options={"verbose_name": "refilling"},
        ),
        migrations.CreateModel(
            name="Selling",
            fields=[
                (
                    "id",
                    models.AutoField(
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                        auto_created=True,
                    ),
                ),
                ("label", models.CharField(max_length=64, verbose_name="label")),
                (
                    "unit_price",
                    counter.fields.CurrencyField(
                        decimal_places=2, max_digits=12, verbose_name="unit price"
                    ),
                ),
                ("quantity", models.IntegerField(verbose_name="quantity")),
                ("date", models.DateTimeField(verbose_name="date")),
                (
                    "payment_method",
                    models.CharField(
                        choices=[
                            ("SITH_ACCOUNT", "Sith account"),
                            ("CARD", "Credit card"),
                        ],
                        max_length=255,
                        default="SITH_ACCOUNT",
                        verbose_name="payment method",
                    ),
                ),
                (
                    "is_validated",
                    models.BooleanField(verbose_name="is validated", default=False),
                ),
                (
                    "club",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.SET_NULL,
                        null=True,
                        to="club.Club",
                        related_name="sellings",
                    ),
                ),
                (
                    "counter",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.SET_NULL,
                        null=True,
                        to="counter.Counter",
                        related_name="sellings",
                    ),
                ),
                (
                    "customer",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.SET_NULL,
                        null=True,
                        to="counter.Customer",
                        related_name="buyings",
                    ),
                ),
                (
                    "product",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.SET_NULL,
                        null=True,
                        to="counter.Product",
                        related_name="sellings",
                        blank=True,
                    ),
                ),
                (
                    "seller",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.SET_NULL,
                        null=True,
                        to=settings.AUTH_USER_MODEL,
                        related_name="sellings_as_operator",
                    ),
                ),
            ],
            options={"verbose_name": "selling"},
        ),
        migrations.AddField(
            model_name="product",
            name="product_type",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.SET_NULL,
                null=True,
                related_name="products",
                verbose_name="product type",
                to="counter.ProductType",
                blank=True,
            ),
        ),
        migrations.AddField(
            model_name="counter",
            name="products",
            field=models.ManyToManyField(
                to="counter.Product", blank=True, related_name="counters"
            ),
        ),
        migrations.AddField(
            model_name="counter",
            name="sellers",
            field=models.ManyToManyField(
                related_name="counters",
                to="core.User",
                blank=True,
                verbose_name="sellers",
            ),
        ),
        migrations.AddField(
            model_name="counter",
            name="view_groups",
            field=models.ManyToManyField(
                to="core.Group", blank=True, related_name="viewable_counters"
            ),
        ),
    ]
