# Generated by Django 3.2.13 on 2022-05-18 19:20

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


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ('contenttypes', '0002_remove_content_type_name'),
    ]

    operations = [
        migrations.CreateModel(
            name='Card',
            fields=[
                ('id', models.CharField(max_length=255, primary_key=True, serialize=False)),
                ('livemode', models.BooleanField()),
                ('data', models.JSONField(blank=True, default=dict)),
                ('date_created', models.DateTimeField(auto_now_add=True)),
                ('date_updated', models.DateTimeField(auto_now=True)),
                ('uid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
                ('name', models.CharField(blank=True, max_length=255)),
                ('phone_number', models.CharField(blank=True, max_length=255)),
                ('postal_code', models.CharField(blank=True, max_length=255)),
                ('state', models.CharField(blank=True, max_length=255)),
                ('street1', models.CharField(blank=True, max_length=255)),
                ('street2', models.CharField(blank=True, max_length=255)),
                ('tokenization_method', models.CharField(blank=True, max_length=255)),
                ('first_digits', models.CharField(blank=True, max_length=6)),
                ('last_digits', models.CharField(max_length=4)),
                ('bank', models.CharField(blank=True, max_length=255)),
                ('brand', models.CharField(blank=True, max_length=255)),
                ('city', models.CharField(blank=True, max_length=255)),
                ('country', models.CharField(blank=True, max_length=255)),
                ('expiration_month', models.CharField(blank=True, max_length=2)),
                ('expiration_year', models.CharField(blank=True, max_length=4)),
                ('financing', models.CharField(blank=True, max_length=10)),
                ('deleted', models.BooleanField(default=False, help_text='Whethe this card was deleted.')),
            ],
            options={
                'ordering': ['-date_created'],
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='Source',
            fields=[
                ('id', models.CharField(max_length=255, primary_key=True, serialize=False)),
                ('livemode', models.BooleanField()),
                ('data', models.JSONField(blank=True, default=dict)),
                ('date_created', models.DateTimeField(auto_now_add=True)),
                ('date_updated', models.DateTimeField(auto_now=True)),
                ('uid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
                ('amount', models.IntegerField(help_text='Source amount in smallest unit of source currency')),
                ('bank', models.CharField(blank=True, max_length=255)),
                ('barcode', models.CharField(blank=True, help_text='Source amount in smallest unit of source currency', max_length=255)),
                ('charge_status', models.CharField(choices=[('failed', 'Failed'), ('expired', 'Expired'), ('pending', 'Pending'), ('reverse', 'Reversed'), ('successful', 'Successful'), ('unknown', 'Unknown')], help_text='Status of charge created using this source (if any)', max_length=10)),
                ('currency', models.CharField(choices=[('USD', 'United States Dollar'), ('THB', 'Thai Baht'), ('SGD', 'Singapore Dollar'), ('JPY', 'Japanese Yen'), ('GBP', 'Pound Sterling'), ('EUR', 'Euro'), ('CNY', 'Chinese Yuan'), ('AUD', 'Australian Dollar')], max_length=3)),
                ('email', models.CharField(blank=True, help_text="The payer's email", max_length=255)),
                ('flow', models.CharField(choices=[('redirect', 'Redirect'), ('offline', 'Offline'), ('app_redirect', 'App Redirect')], help_text='The payment flow payers need to go through to complete the payment. One of redirect, offline, or app_redirect', max_length=50)),
                ('installment_term', models.IntegerField(blank=True, help_text='Installment term in months', null=True)),
                ('mobile_number', models.CharField(blank=True, max_length=50)),
                ('name', models.CharField(blank=True, help_text="Payer's name", max_length=255)),
                ('phone_number', models.CharField(blank=True, max_length=50)),
                ('platform_type', models.CharField(blank=True, help_text='Platform from which payer is making a payment. One of WEB, IOS, or ANDROID', max_length=50)),
                ('receipt_amount', models.IntegerField(blank=True, null=True)),
                ('store_id', models.CharField(blank=True, max_length=255)),
                ('store_name', models.CharField(blank=True, max_length=255)),
                ('terminal_id', models.CharField(blank=True, max_length=255)),
                ('type', models.CharField(choices=[('truemoney', 'TrueMoney Wallet'), ('internet_banking_bay', 'Krungsri Bank'), ('internet_banking_bbl', 'Bangkok Bank'), ('internet_banking_ktb', 'Krungthai Bank'), ('internet_banking_scb', 'SCB Bank'), ('promptpay', 'Promptpay')], max_length=255)),
                ('zero_interest_installments', models.BooleanField(blank=True, null=True)),
            ],
            options={
                'ordering': ['-date_created'],
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='Event',
            fields=[
                ('id', models.CharField(max_length=255, primary_key=True, serialize=False)),
                ('livemode', models.BooleanField()),
                ('date_created', models.DateTimeField(auto_now_add=True)),
                ('date_updated', models.DateTimeField(auto_now=True)),
                ('uid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
                ('event_type', models.CharField(choices=[('card.destroy', 'CARD_DESTROY'), ('card.update', 'CARD_UPDATE'), ('charge.capture', 'CHARGE_CAPTURE'), ('charge.complete', 'CHARGE_COMPLETE'), ('charge.create', 'CHARGE_CREATE'), ('charge.expire', 'CHARGE_EXPIRE'), ('charge.reverse', 'CHARGE_REVERSE'), ('charge.update', 'CHARGE_UPDATE'), ('customer.create', 'CUSTOMER_CREATE'), ('customer.destroy', 'CUSTOMER_DESTROY'), ('customer.update', 'CUSTOMER_UPDATE'), ('customer.update.card', 'CUSTOMER_UPDATE_CARD'), ('dispute.accept', 'DISPUTE_ACCEPT'), ('dispute.close', 'DISPUTE_CLOSE'), ('dispute.create', 'DISPUTE_CREATE'), ('dispute.update', 'DISPUTE_UPDATE'), ('link.create', 'LINK_CREATE'), ('recipient.activate', 'RECIPIENT_ACTIVATE'), ('recipient.create', 'RECIPIENT_CREATE'), ('recipient.deactivate', 'RECIPIENT_DEACTIVATE'), ('recipient.destroy', 'RECIPIENT_DESTROY'), ('recipient.update', 'RECIPIENT_UPDATE'), ('recipient.verify', 'RECIPIENT_VERIFY'), ('refund.create', 'REFUND_CREATE'), ('schedule.create', 'SCHEDULE_CREATE'), ('schedule.destroy', 'SCHEDULE_DESTROY'), ('schedule.expire', 'SCHEDULE_EXPIRE'), ('schedule.expiring', 'SCHEDULE_EXPIRING'), ('schedule.suspend', 'SCHEDULE_SUSPEND'), ('transfer.create', 'TRANSFER_CREATE'), ('transfer.destroy', 'TRANSFER_DESTROY'), ('transfer.fail', 'TRANSFER_FAIL'), ('transfer.pay', 'TRANSFER_PAY'), ('transfer.send', 'TRANSFER_SEND'), ('transfer.update', 'TRANSFER_UPDATE')], max_length=50)),
                ('data', models.JSONField(default=dict)),
                ('object_id', models.CharField(blank=True, max_length=255, null=True)),
                ('content_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')),
            ],
        ),
        migrations.CreateModel(
            name='Customer',
            fields=[
                ('id', models.CharField(max_length=255, primary_key=True, serialize=False)),
                ('livemode', models.BooleanField()),
                ('data', models.JSONField(blank=True, default=dict)),
                ('date_created', models.DateTimeField(auto_now_add=True)),
                ('date_updated', models.DateTimeField(auto_now=True)),
                ('uid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
                ('deleted', models.BooleanField(default=False, help_text='Whether this customer was deleted.')),
                ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='omise_customers', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'ordering': ['-date_created'],
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='Charge',
            fields=[
                ('id', models.CharField(max_length=255, primary_key=True, serialize=False)),
                ('livemode', models.BooleanField()),
                ('data', models.JSONField(blank=True, default=dict)),
                ('date_created', models.DateTimeField(auto_now_add=True)),
                ('date_updated', models.DateTimeField(auto_now=True)),
                ('uid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
                ('status', models.CharField(choices=[('failed', 'Failed'), ('expired', 'Expired'), ('pending', 'Pending'), ('reverse', 'Reversed'), ('successful', 'Successful'), ('unknown', 'Unknown')], help_text='Status of this charge.', max_length=10)),
                ('amount', models.IntegerField(help_text='Charge amount in the smallest unit of charge currency')),
                ('authorize_uri', models.CharField(blank=True, help_text='URI for payment authorization (e.g. 3-D Secure).', max_length=255)),
                ('authorized', models.BooleanField(blank=True, help_text='Whether charge has been authorized.', null=True)),
                ('capturable', models.BooleanField(blank=True, help_text='Whether charge is able to be captured (paid).', null=True)),
                ('capture', models.BooleanField(blank=True, help_text='Whether charge is set to be automatically captured (paid).', null=True)),
                ('currency', models.CharField(choices=[('USD', 'United States Dollar'), ('THB', 'Thai Baht'), ('SGD', 'Singapore Dollar'), ('JPY', 'Japanese Yen'), ('GBP', 'Pound Sterling'), ('EUR', 'Euro'), ('CNY', 'Chinese Yuan'), ('AUD', 'Australian Dollar')], max_length=3)),
                ('description', models.TextField(blank=True)),
                ('disputable', models.BooleanField(blank=True, null=True)),
                ('expired', models.BooleanField(blank=True, help_text='Whether this charge has expired.', null=True)),
                ('expired_at', models.DateTimeField(blank=True, null=True)),
                ('expires_at', models.DateTimeField(blank=True, null=True)),
                ('failure_code', models.CharField(blank=True, max_length=255)),
                ('failure_message', models.TextField(blank=True)),
                ('fee', models.IntegerField()),
                ('fee_vat', models.IntegerField()),
                ('funding_amount', models.IntegerField(blank=True, help_text='For multi-currency charges, amount after exchange into account funding currency.', null=True)),
                ('funding_currency', models.CharField(choices=[('USD', 'United States Dollar'), ('THB', 'Thai Baht'), ('SGD', 'Singapore Dollar'), ('JPY', 'Japanese Yen'), ('GBP', 'Pound Sterling'), ('EUR', 'Euro'), ('CNY', 'Chinese Yuan'), ('AUD', 'Australian Dollar')], max_length=3)),
                ('interest', models.IntegerField(blank=True, help_text='Interest paid by customer or merchant over the course of an installment term.', null=True)),
                ('interest_vat', models.IntegerField(blank=True, help_text='Value-added Tax (VAT) applied to interest.', null=True)),
                ('ip', models.CharField(blank=True, help_text='IP address provided to Omise at charge creation. May be IPv4 or IPv6.', max_length=255)),
                ('metadata', models.JSONField(blank=True, default=dict, help_text='Custom metadata for this charge.')),
                ('net', models.IntegerField(help_text='funding_amount after fees, interest, and VAT deducted.')),
                ('paid', models.BooleanField(help_text='Whether charge has been captured (paid).')),
                ('paid_at', models.DateTimeField(blank=True, null=True)),
                ('refundable', models.BooleanField(help_text='Whether charge is able to be refunded.')),
                ('refunded_amount', models.IntegerField(blank=True, help_text='Refunded amount in smallest unit of currency.', null=True)),
                ('return_uri', models.TextField(blank=True, help_text='URI to which customer is redirected after 3-D Secure card authorization or other redirect-based authorization.')),
                ('reversed', models.BooleanField(blank=True, help_text='Whether charge authorization is able to be reversed.', null=True)),
                ('voided', models.BooleanField(blank=True, help_text='Whether, in the case of a refund, charge was voided instead. Charges are voided if refund is processed before settlement time.', null=True)),
                ('zero_interest_installments', models.BooleanField(blank=True, help_text='Whether merchant absorbs the interest for installment payments; must match value in associated source.', null=True)),
                ('card', models.ForeignKey(blank=True, help_text='Card that was charged (if card was charged).', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='charges', to='django_omise.card')),
                ('customer', models.ForeignKey(blank=True, help_text='Customer associated with charge.', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='charges', to='django_omise.customer')),
                ('source', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='charges', to='django_omise.source')),
            ],
            options={
                'ordering': ['-date_created'],
                'abstract': False,
            },
        ),
        migrations.AddField(
            model_name='card',
            name='customer',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='cards', to='django_omise.customer'),
        ),
        migrations.AddIndex(
            model_name='event',
            index=models.Index(fields=['content_type', 'object_id'], name='django_omis_content_80fefa_idx'),
        ),
    ]
