# Generated by Django 5.1.7 on 2026-03-19 04:48 import django.db.models.deletion from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ] operations = [ migrations.CreateModel( name='Account_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'account_type', }, ), migrations.CreateModel( name='Alert_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'alert_type', }, ), migrations.CreateModel( name='Approve_Status', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('color', models.CharField(max_length=20, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'approve_status', }, ), migrations.CreateModel( name='Apps', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('logo', models.CharField(max_length=500, null=True)), ('link', models.CharField(max_length=500, null=True)), ('active', models.BooleanField(default=True)), ('detail', models.TextField(null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'apps', }, ), migrations.CreateModel( name='Auth_Method', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'auth_method', }, ), migrations.CreateModel( name='Auth_Status', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'auth_status', }, ), migrations.CreateModel( name='Bank', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'bank', }, ), migrations.CreateModel( name='Block_Reason', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'block_reason', }, ), migrations.CreateModel( name='Branch_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'branch_type', }, ), migrations.CreateModel( name='Category', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'category', }, ), migrations.CreateModel( name='Color_Choice', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('detail', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'color_choice', }, ), migrations.CreateModel( name='Color_Scheme', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('detail', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'color_scheme', }, ), migrations.CreateModel( name='Company_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'company_type', }, ), migrations.CreateModel( name='Country', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'country', }, ), migrations.CreateModel( name='Currency', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('rate', models.FloatField()), ('decimal', models.IntegerField(default=0)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'currency', }, ), migrations.CreateModel( name='Customer_Segment', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'customer_segment', }, ), migrations.CreateModel( name='Customer_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'customer_type', }, ), migrations.CreateModel( name='Cycle_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'cycle_type', }, ), migrations.CreateModel( name='Data_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'data_type', }, ), migrations.CreateModel( name='Discount_Method', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'discount_method', }, ), migrations.CreateModel( name='Display_Status', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'display_status', }, ), migrations.CreateModel( name='Document_Audit', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'document_audit', }, ), migrations.CreateModel( name='Document_Configuration', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=200)), ('template_path', models.CharField(max_length=200)), ('mappings', models.JSONField(default=list)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'document_configuration', }, ), migrations.CreateModel( name='Document_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'document_type', }, ), migrations.CreateModel( name='Email_List', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=200, unique=True)), ('email', models.TextField()), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(null=True)), ], options={ 'db_table': 'email_list', }, ), migrations.CreateModel( name='Email_Setup', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('email', models.CharField(max_length=100, unique=True)), ('password', models.CharField(max_length=30)), ('smtp', models.CharField(max_length=100)), ('port', models.IntegerField()), ('display_name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'email_setup', }, ), migrations.CreateModel( name='Email_Template', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=200, unique=True)), ('content', models.JSONField()), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(null=True)), ], options={ 'db_table': 'email_template', }, ), migrations.CreateModel( name='Entry_Category', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'entry_category', }, ), migrations.CreateModel( name='Entry_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'entry_type', }, ), migrations.CreateModel( name='Fee_Method', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'fee_method', }, ), migrations.CreateModel( name='File_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'file_type', }, ), migrations.CreateModel( name='Filter_Choice', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('detail', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'filter_choice', }, ), migrations.CreateModel( name='Filter_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'filter_type', }, ), migrations.CreateModel( name='Import_Setting', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('detail', models.JSONField()), ('note', models.TextField(null=True)), ('template', models.TextField(null=True)), ('api', models.CharField(max_length=100)), ('call_api', models.CharField(max_length=100, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'import_setting', }, ), migrations.CreateModel( name='Instance_Status', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('color', models.CharField(max_length=20, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'instance_status', }, ), migrations.CreateModel( name='Interest_Base', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=200, null=True)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('detail', models.TextField()), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'interest_base', }, ), migrations.CreateModel( name='Issued_Place', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, null=True, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'issued_place', }, ), migrations.CreateModel( name='Lang_Choice', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('detail', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'lang_choice', }, ), migrations.CreateModel( name='Legal_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'legal_type', }, ), migrations.CreateModel( name='Menu_Choice', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'menu_choice', }, ), migrations.CreateModel( name='Message_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('title', models.CharField(max_length=200, null=True)), ('title_en', models.CharField(max_length=200, null=True)), ('content', models.TextField()), ('content_en', models.TextField()), ('category', models.CharField(max_length=50)), ('link', models.TextField(null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'message_type', }, ), migrations.CreateModel( name='Money_Unit', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('detail', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'money_unit', }, ), migrations.CreateModel( name='Noti_Theme', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.TextField(null=True)), ('content', models.TextField(null=True)), ('image', models.CharField(max_length=200, null=True)), ('link', models.TextField(null=True)), ('receiver', models.JSONField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(null=True)), ], options={ 'db_table': 'noti_theme', }, ), migrations.CreateModel( name='Notification_Status', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'notification_status', }, ), migrations.CreateModel( name='Payment_Method', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'payment_method', }, ), migrations.CreateModel( name='Payment_Status', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'payment_status', }, ), migrations.CreateModel( name='Payment_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'payment_type', }, ), migrations.CreateModel( name='Placement', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('detail', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'placement', }, ), migrations.CreateModel( name='Pricing_Tier', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('months', models.IntegerField()), ('discount_percent', models.DecimalField(decimal_places=2, default=0, max_digits=5)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'pricing_tier', }, ), migrations.CreateModel( name='Provider', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('website', models.URLField(null=True)), ('api_endpoint', models.CharField(max_length=200, null=True)), ('partner_id', models.CharField(max_length=100, null=True)), ('contact_email', models.CharField(max_length=100, null=True)), ('note', models.TextField(null=True)), ('active', models.BooleanField(default=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'provider', }, ), migrations.CreateModel( name='Register_Method', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'register_method', }, ), migrations.CreateModel( name='Relation', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'relation', }, ), migrations.CreateModel( name='Schedule_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'schedule_type', }, ), migrations.CreateModel( name='Script_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'script_type', }, ), migrations.CreateModel( name='Send_Status', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'send_status', }, ), migrations.CreateModel( name='Service_Category', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('icon', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'service_category', }, ), migrations.CreateModel( name='Setting_Choice', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'setting_choice', }, ), migrations.CreateModel( name='Setting_Class', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'setting_class', }, ), migrations.CreateModel( name='Setting_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'setting_type', }, ), migrations.CreateModel( name='Sex', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'sex', }, ), migrations.CreateModel( name='Share_Choice', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'share_choice', }, ), migrations.CreateModel( name='Sms', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('session_id', models.CharField(max_length=300)), ('request_id', models.CharField(max_length=300)), ('brandname', models.CharField(max_length=20)), ('phone', models.CharField(max_length=11)), ('message', models.CharField(max_length=300)), ('type', models.CharField(max_length=30)), ('agent', models.CharField(max_length=30)), ('telco', models.CharField(max_length=30)), ('status', models.CharField(max_length=30)), ('price', models.IntegerField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'sms', }, ), migrations.CreateModel( name='Sort_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'sort_type', }, ), migrations.CreateModel( name='Ssh', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=300)), ('host', models.CharField(max_length=30)), ('port', models.IntegerField()), ('username', models.CharField(max_length=50)), ('password', models.CharField(max_length=50)), ('path', models.CharField(max_length=300)), ('deleted', models.BooleanField(default=False)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(null=True)), ], options={ 'db_table': 'ssh', }, ), migrations.CreateModel( name='Staff_Status', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'staff_status', }, ), migrations.CreateModel( name='StepAction', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('step_code', models.CharField(max_length=50, unique=True)), ('name', models.CharField(max_length=200)), ('description', models.TextField(blank=True)), ('order', models.PositiveIntegerField(default=0)), ('trigger_event', models.CharField(choices=[('create', 'Create'), ('update', 'Update'), ('approve', 'Approve'), ('advance', 'Advance'), ('confirm', 'Confirm'), ('custom', 'Custom')], max_length=50)), ('target_model', models.CharField(blank=True, max_length=100)), ('actions', models.JSONField(blank=True, default=list)), ('config', models.JSONField(blank=True, default=dict)), ('is_active', models.BooleanField(default=True)), ('create_time', models.DateTimeField(auto_now_add=True)), ('update_time', models.DateTimeField(auto_now=True)), ], options={ 'db_table': 'step_action', 'ordering': ['order'], }, ), migrations.CreateModel( name='Subscription_Status', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('color', models.CharField(max_length=20, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'subscription_status', }, ), migrations.CreateModel( name='Table_Setting', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('detail', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'table_setting', }, ), migrations.CreateModel( name='Task_Category', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'task_category', }, ), migrations.CreateModel( name='Task_Result', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'task_result', }, ), migrations.CreateModel( name='Task_Status', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'task_status', }, ), migrations.CreateModel( name='Text_Align', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'text_align', }, ), migrations.CreateModel( name='Text_Color', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('detail', models.CharField(max_length=100)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'text_color', }, ), migrations.CreateModel( name='Ticket_Priority', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('color', models.CharField(max_length=20, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'ticket_priority', }, ), migrations.CreateModel( name='Ticket_Status', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('color', models.CharField(max_length=20, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'ticket_status', }, ), migrations.CreateModel( name='User_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'user_type', }, ), migrations.CreateModel( name='Utility', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50, unique=True)), ('name', models.CharField(max_length=200)), ('description', models.TextField(blank=True)), ('utility_type', models.CharField(choices=[('email', 'Email API'), ('crud', 'Data CRUD'), ('payment', 'Payment API'), ('document', 'Document Gen'), ('notification', 'Notification'), ('custom', 'Custom')], max_length=50)), ('api_config', models.JSONField(blank=True, default=dict)), ('params_template', models.JSONField(blank=True, default=dict)), ('integration_module', models.CharField(blank=True, max_length=100)), ('is_active', models.BooleanField(default=True)), ('create_time', models.DateTimeField(auto_now_add=True)), ('update_time', models.DateTimeField(auto_now=True)), ], options={ 'db_table': 'utility', }, ), migrations.CreateModel( name='Value_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ], options={ 'db_table': 'value_type', }, ), migrations.CreateModel( name='Wallet_Transaction_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('en', models.CharField(max_length=100, null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'wallet_transaction_type', }, ), migrations.CreateModel( name='Account_Setting', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('category', models.CharField(max_length=100)), ('classify', models.CharField(max_length=100)), ('code', models.CharField(max_length=100)), ('vi', models.TextField()), ('en', models.TextField(null=True)), ('image', models.TextField(null=True)), ('icon', models.TextField(null=True)), ('link', models.TextField(null=True)), ('detail', models.JSONField(null=True)), ('detail_en', models.JSONField(null=True)), ('index', models.IntegerField(default=0, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'account_setting', 'unique_together': {('category', 'classify', 'code')}, }, ), migrations.CreateModel( name='Biz_Setting', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('category', models.CharField(max_length=100)), ('classify', models.CharField(max_length=100)), ('code', models.CharField(max_length=100)), ('vi', models.TextField()), ('en', models.TextField(null=True)), ('image', models.TextField(null=True)), ('icon', models.TextField(null=True)), ('link', models.TextField(null=True)), ('detail', models.JSONField(null=True)), ('detail_en', models.JSONField(null=True)), ('index', models.IntegerField(default=0, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'biz_setting', 'unique_together': {('category', 'classify', 'code')}, }, ), migrations.CreateModel( name='Branch', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('address', models.CharField(max_length=300)), ('logo', models.CharField(max_length=300, null=True)), ('phone', models.CharField(max_length=20)), ('email', models.CharField(max_length=100, null=True)), ('note', models.TextField(null=True)), ('start_date', models.DateField(null=True)), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.branch_type')), ], options={ 'db_table': 'branch', }, ), migrations.CreateModel( name='Common', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('category', models.CharField(max_length=100)), ('classify', models.CharField(max_length=100)), ('code', models.CharField(max_length=100)), ('vi', models.TextField()), ('en', models.TextField(null=True)), ('image', models.TextField(null=True)), ('icon', models.TextField(null=True)), ('link', models.TextField(null=True)), ('detail', models.JSONField(null=True)), ('index', models.IntegerField(default=0, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'common', 'unique_together': {('category', 'classify', 'code')}, }, ), migrations.CreateModel( name='Company', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(db_index=True, max_length=20, null=True, unique=True)), ('tax_code', models.CharField(max_length=20, null=True, unique=True)), ('fullname', models.CharField(db_index=True, max_length=300)), ('shortname', models.CharField(db_index=True, max_length=50, null=True)), ('phone', models.CharField(db_index=True, max_length=20, null=True)), ('email', models.CharField(max_length=50, null=True)), ('website', models.CharField(max_length=100, null=True)), ('address', models.CharField(max_length=200, null=True)), ('contact_address', models.CharField(max_length=200, null=True)), ('note', models.TextField(null=True)), ('deleted', models.BooleanField(db_index=True, default=False)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('country', models.ForeignKey(default=1, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.country')), ], options={ 'db_table': 'company', }, ), migrations.CreateModel( name='Customer', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(db_index=True, max_length=20, null=True, unique=True)), ('fullname', models.CharField(db_index=True, max_length=200)), ('phone', models.CharField(db_index=True, max_length=20, unique=True)), ('email', models.CharField(max_length=50, null=True, unique=True)), ('legal_code', models.CharField(max_length=20, null=True, unique=True)), ('issued_date', models.DateField(null=True)), ('address', models.CharField(max_length=200, null=True)), ('contact_address', models.CharField(max_length=200, null=True)), ('note', models.TextField(null=True)), ('deleted', models.BooleanField(db_index=True, default=False)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('country', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.country')), ('segment', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.customer_segment')), ('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.customer_type')), ('issued_place', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.issued_place')), ('legal_type', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.legal_type')), ], options={ 'db_table': 'customer', }, ), migrations.CreateModel( name='Customer_Wallet', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('billing_mode', models.CharField(choices=[('PREPAID', 'Prepaid — Nạp trước'), ('POSTPAID', 'Postpaid — Trả sau cuối tháng')], default='PREPAID', max_length=20)), ('balance', models.DecimalField(decimal_places=2, default=0, max_digits=20)), ('low_balance_threshold', models.DecimalField(decimal_places=2, max_digits=20, null=True)), ('credit_limit', models.DecimalField(decimal_places=2, max_digits=20, null=True)), ('billing_day', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('currency', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.currency')), ('customer', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, related_name='wallet', to='app.customer')), ], options={ 'db_table': 'customer_wallet', }, ), migrations.CreateModel( name='Datacenter', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('region', models.CharField(max_length=100, null=True)), ('provider_location_id', models.CharField(max_length=50, null=True)), ('active', models.BooleanField(default=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('country', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.country')), ('provider', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='datacenters', to='app.provider')), ], options={ 'db_table': 'datacenter', }, ), migrations.CreateModel( name='Cloud_Instance', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(db_index=True, max_length=20, null=True, unique=True)), ('provider_instance_id', models.CharField(db_index=True, max_length=100, null=True)), ('provider_instance_name', models.CharField(max_length=200, null=True)), ('ip_address', models.GenericIPAddressField(null=True)), ('ipv6_address', models.CharField(max_length=50, null=True)), ('hostname', models.CharField(max_length=200, null=True)), ('cpu', models.IntegerField(null=True)), ('ram_gb', models.IntegerField(null=True)), ('disk_gb', models.IntegerField(null=True)), ('provisioned_at', models.DateTimeField(null=True)), ('terminated_at', models.DateTimeField(null=True)), ('root_password', models.CharField(max_length=300, null=True)), ('ssh_key', models.TextField(null=True)), ('note', models.TextField(null=True)), ('extra_info', models.JSONField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('datacenter', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.datacenter')), ('status', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.instance_status')), ('provider', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.provider')), ], options={ 'db_table': 'cloud_instance', }, ), migrations.CreateModel( name='Dealer_Setting', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('category', models.CharField(max_length=100)), ('classify', models.CharField(max_length=100)), ('code', models.CharField(max_length=100)), ('vi', models.TextField()), ('en', models.TextField(null=True)), ('image', models.TextField(null=True)), ('icon', models.TextField(null=True)), ('link', models.TextField(null=True)), ('detail', models.JSONField(null=True)), ('detail_en', models.JSONField(null=True)), ('index', models.IntegerField(default=0, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'dealer_setting', 'unique_together': {('category', 'classify', 'code')}, }, ), migrations.CreateModel( name='Discount_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('value', models.IntegerField()), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('method', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.discount_method')), ('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.value_type')), ], options={ 'db_table': 'discount_type', }, ), migrations.CreateModel( name='Email_Job', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=200)), ('model_name', models.CharField(help_text='e.g., app.Subscription', max_length=100)), ('trigger_on_create', models.BooleanField(default=False)), ('trigger_on_update', models.BooleanField(default=False)), ('active', models.BooleanField(default=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('template', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.email_template')), ], options={ 'db_table': 'email_job', }, ), migrations.CreateModel( name='File', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=20, null=True, unique=True)), ('name', models.CharField(max_length=200)), ('file', models.CharField(max_length=200)), ('hashtag', models.CharField(max_length=200, null=True)), ('size', models.IntegerField()), ('caption', models.CharField(max_length=200, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(null=True)), ('doc_type', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.document_type')), ('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.file_type')), ], options={ 'db_table': 'file', }, ), migrations.CreateModel( name='Info_Setting', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('category', models.CharField(max_length=100)), ('classify', models.CharField(max_length=100)), ('code', models.CharField(max_length=100)), ('vi', models.TextField()), ('en', models.TextField(null=True)), ('image', models.TextField(null=True)), ('icon', models.TextField(null=True)), ('link', models.TextField(null=True)), ('detail', models.JSONField(null=True)), ('detail_en', models.JSONField(null=True)), ('index', models.IntegerField(default=0, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'info_setting', 'unique_together': {('category', 'classify', 'code')}, }, ), migrations.CreateModel( name='Internal_Account', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('balance', models.FloatField()), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('branch', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.branch')), ('currency', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.currency')), ('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.account_type')), ], options={ 'db_table': 'internal_account', 'unique_together': {('branch', 'type', 'currency')}, }, ), migrations.CreateModel( name='Invoice', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('link', models.CharField(max_length=100, null=True)), ('ref_code', models.CharField(max_length=30)), ('amount', models.DecimalField(decimal_places=2, max_digits=35)), ('note', models.CharField(max_length=100, null=True)), ('issue_date', models.DateField(null=True)), ('due_date', models.DateField(null=True)), ('paid_amount', models.DecimalField(decimal_places=2, default=0, max_digits=20, null=True)), ('remain_amount', models.DecimalField(decimal_places=2, max_digits=20, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('currency', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.currency')), ('customer', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='invoices', to='app.customer')), ('payment_method', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.payment_method')), ('status', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.payment_status')), ], options={ 'db_table': 'invoice', }, ), migrations.CreateModel( name='Message', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('ref_code', models.CharField(max_length=20)), ('title', models.CharField(max_length=200, null=True)), ('title_en', models.CharField(max_length=200, null=True)), ('content', models.TextField()), ('content_en', models.TextField()), ('link', models.TextField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.message_type')), ], options={ 'db_table': 'message', }, ), migrations.CreateModel( name='Organization', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('shortname', models.CharField(max_length=50, null=True)), ('established_date', models.DateField(null=True)), ('website', models.CharField(max_length=200, null=True)), ('bank_account', models.CharField(max_length=50, null=True)), ('bank_name', models.CharField(max_length=100, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('customer', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='orgncust', to='app.customer')), ('type', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.company_type')), ], options={ 'db_table': 'organization', }, ), migrations.CreateModel( name='People', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(db_index=True, max_length=20, null=True, unique=True)), ('fullname', models.CharField(max_length=50)), ('phone', models.CharField(max_length=20)), ('email', models.CharField(max_length=100, null=True)), ('dob', models.DateField(null=True)), ('legal_code', models.CharField(max_length=20, null=True)), ('issued_date', models.DateField(null=True)), ('address', models.CharField(max_length=200, null=True)), ('contact_address', models.CharField(max_length=200, null=True)), ('taxcode', models.CharField(max_length=100, null=True)), ('note', models.TextField(null=True)), ('deleted', models.BooleanField(default=False)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('company', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.company')), ('country', models.ForeignKey(default=1, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.country')), ('issued_place', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.issued_place')), ('legal_type', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.legal_type')), ('sex', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.sex')), ], options={ 'db_table': 'people', }, ), migrations.AddField( model_name='branch', name='manager', field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.people'), ), migrations.AddField( model_name='branch', name='signature', field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.people'), ), migrations.CreateModel( name='Provider_Credential', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('label', models.CharField(max_length=100)), ('api_key', models.CharField(max_length=500)), ('api_secret', models.CharField(max_length=500, null=True)), ('active', models.BooleanField(default=True)), ('note', models.TextField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('provider', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='credentials', to='app.provider')), ], options={ 'db_table': 'provider_credential', }, ), migrations.CreateModel( name='Provider_Invoice', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=20, null=True, unique=True)), ('period_from', models.DateField()), ('period_to', models.DateField()), ('total_amount', models.DecimalField(decimal_places=2, max_digits=20)), ('note', models.TextField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('currency', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.currency')), ('document', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.file')), ('provider', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='provider_invoices', to='app.provider')), ('status', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.payment_status')), ], options={ 'db_table': 'provider_invoice', }, ), migrations.CreateModel( name='Provider_Invoice_Line', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.CharField(max_length=300)), ('amount', models.DecimalField(decimal_places=2, max_digits=20)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('instance', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.cloud_instance')), ('provider_invoice', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='lines', to='app.provider_invoice')), ], options={ 'db_table': 'provider_invoice_line', }, ), migrations.CreateModel( name='Legal_Rep', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('organization', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='orgrep', to='app.organization')), ('people', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.people')), ('relation', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.relation')), ], options={ 'db_table': 'legal_rep', }, ), migrations.CreateModel( name='Email_Sent', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('receiver', models.TextField()), ('subject', models.TextField()), ('content', models.TextField()), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(null=True)), ('status', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.send_status')), ], options={ 'db_table': 'email_sent', }, ), migrations.CreateModel( name='Service_Plan', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=200)), ('billing_type', models.CharField(choices=[('SUBSCRIPTION', 'Subscription'), ('PAYG', 'Pay-as-you-go'), ('BOTH', 'Cả hai')], default='SUBSCRIPTION', max_length=20)), ('cpu', models.IntegerField(null=True)), ('ram_gb', models.IntegerField(null=True)), ('disk_gb', models.IntegerField(null=True)), ('bandwidth_tb', models.DecimalField(decimal_places=2, max_digits=8, null=True)), ('storage_gb', models.IntegerField(null=True)), ('extra_specs', models.JSONField(null=True)), ('provider_price', models.DecimalField(decimal_places=4, max_digits=20)), ('provider_plan_id', models.CharField(max_length=100, null=True)), ('sell_price', models.DecimalField(decimal_places=2, max_digits=20)), ('sell_price_hourly', models.DecimalField(decimal_places=6, max_digits=20, null=True)), ('active', models.BooleanField(default=True)), ('index', models.IntegerField(default=1, null=True)), ('note', models.TextField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('category', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='plans', to='app.service_category')), ('provider', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='plans', to='app.provider')), ('provider_currency', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.currency')), ('sell_currency', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.currency')), ], options={ 'db_table': 'service_plan', }, ), migrations.CreateModel( name='Individual', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('dob', models.DateField(null=True)), ('zalo', models.CharField(max_length=20, null=True)), ('facebook', models.CharField(max_length=200, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('company', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.company')), ('customer', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='indvcust', to='app.customer')), ('sex', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.sex')), ], options={ 'db_table': 'individual', }, ), migrations.CreateModel( name='Staff', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(db_index=True, max_length=20, unique=True)), ('fullname', models.CharField(db_index=True, max_length=50)), ('phone', models.CharField(db_index=True, max_length=20, unique=True)), ('email', models.CharField(max_length=50, null=True, unique=True)), ('dob', models.DateField(null=True)), ('legal_code', models.CharField(max_length=20, null=True, unique=True)), ('issued_place', models.CharField(max_length=200, null=True)), ('issued_date', models.DateField(null=True)), ('province', models.CharField(max_length=200, null=True)), ('district', models.CharField(max_length=200, null=True)), ('address', models.CharField(max_length=200, null=True)), ('note', models.TextField(null=True)), ('zalo', models.CharField(max_length=20, null=True)), ('facebook', models.CharField(max_length=100, null=True)), ('deleted', models.BooleanField(db_index=True, default=False)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('branch', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.branch')), ('country', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.country')), ('legal_type', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.legal_type')), ('sex', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.sex')), ('status', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.staff_status')), ], options={ 'db_table': 'staff', }, ), migrations.AddField( model_name='customer', name='sale_staff', field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.staff'), ), migrations.CreateModel( name='Subscription', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(db_index=True, max_length=20, null=True, unique=True)), ('billing_type', models.CharField(choices=[('SUBSCRIPTION', 'Subscription'), ('PAYG', 'Pay-as-you-go')], default='SUBSCRIPTION', max_length=20)), ('unit_price', models.DecimalField(decimal_places=2, max_digits=20, null=True)), ('unit_price_hourly', models.DecimalField(decimal_places=6, max_digits=20, null=True)), ('discount_amount', models.DecimalField(decimal_places=2, default=0, max_digits=20, null=True)), ('final_price', models.DecimalField(decimal_places=2, max_digits=20, null=True)), ('start_date', models.DateField()), ('end_date', models.DateField(null=True)), ('next_billing_date', models.DateField(null=True)), ('auto_renew', models.BooleanField(default=True)), ('note', models.TextField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('currency', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.currency')), ('customer', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='subscriptions', to='app.customer')), ('datacenter', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.datacenter')), ('payment_method', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.payment_method')), ('plan', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='subscriptions', to='app.service_plan')), ('pricing_tier', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.pricing_tier')), ('status', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.subscription_status')), ], options={ 'db_table': 'subscription', }, ), migrations.CreateModel( name='Invoice_Line', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.CharField(max_length=300)), ('period_from', models.DateField()), ('period_to', models.DateField()), ('unit_price', models.DecimalField(decimal_places=2, max_digits=20)), ('quantity', models.DecimalField(decimal_places=2, default=1, max_digits=10)), ('discount_amount', models.DecimalField(decimal_places=2, default=0, max_digits=20, null=True)), ('line_total', models.DecimalField(decimal_places=2, max_digits=20)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('invoice', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='lines', to='app.invoice')), ('subscription', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='invoice_lines', to='app.subscription')), ], options={ 'db_table': 'invoice_line', }, ), migrations.AddField( model_name='cloud_instance', name='subscription', field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='instances', to='app.subscription'), ), migrations.CreateModel( name='System_Setting', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('category', models.CharField(max_length=100)), ('classify', models.CharField(max_length=100)), ('code', models.CharField(max_length=100)), ('vi', models.TextField()), ('en', models.TextField(null=True)), ('image', models.TextField(null=True)), ('icon', models.TextField(null=True)), ('link', models.TextField(null=True)), ('detail', models.JSONField(null=True)), ('detail_en', models.JSONField(null=True)), ('index', models.IntegerField(default=0, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ], options={ 'db_table': 'system_setting', 'unique_together': {('category', 'classify', 'code')}, }, ), migrations.CreateModel( name='Phone_Otp', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('phone', models.CharField(max_length=10)), ('otp', models.CharField(max_length=10)), ('valid_to', models.DateTimeField(null=True)), ('expiry', models.BooleanField(default=False)), ('sms_content', models.TextField(null=True)), ('sms_fee', models.IntegerField(null=True)), ('sms_info', models.JSONField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('status', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.auth_status')), ('result', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.task_result')), ], options={ 'db_table': 'phone_otp', }, ), migrations.CreateModel( name='Batch_Log', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('system_date', models.DateField()), ('start_time', models.DateTimeField()), ('end_time', models.DateTimeField(null=True)), ('duration', models.IntegerField(null=True)), ('log', models.JSONField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('status', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.task_status')), ], options={ 'db_table': 'batch_log', }, ), migrations.CreateModel( name='Backup', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=200)), ('file', models.CharField(max_length=200, null=True)), ('note', models.TextField(null=True)), ('start_time', models.DateTimeField(null=True)), ('end_time', models.DateTimeField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('status', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.task_status')), ], options={ 'db_table': 'backup', }, ), migrations.CreateModel( name='Support_Ticket', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(db_index=True, max_length=20, null=True, unique=True)), ('title', models.CharField(max_length=300)), ('description', models.TextField()), ('resolved_at', models.DateTimeField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('assignee', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.staff')), ('customer', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='tickets', to='app.customer')), ('instance', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='tickets', to='app.cloud_instance')), ('subscription', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='tickets', to='app.subscription')), ('priority', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.ticket_priority')), ('status', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.ticket_status')), ], options={ 'db_table': 'support_ticket', }, ), migrations.CreateModel( name='User', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('username', models.CharField(max_length=50, unique=True)), ('password', models.CharField(max_length=100)), ('email', models.CharField(max_length=100, null=True, unique=True)), ('avatar', models.CharField(max_length=100, null=True)), ('fullname', models.CharField(max_length=50)), ('display_name', models.CharField(max_length=50, null=True)), ('blocked', models.BooleanField(default=False)), ('blocked_by', models.PositiveIntegerField(null=True)), ('last_login', models.DateTimeField(null=True)), ('pin', models.CharField(max_length=100, null=True)), ('is_admin', models.BooleanField(default=False, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('auth_method', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.auth_method')), ('auth_status', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.auth_status')), ('block_reason', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.block_reason')), ('register_method', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.register_method')), ('type', models.ForeignKey(default=1, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user_type')), ], options={ 'db_table': 'user', }, ), migrations.CreateModel( name='Token', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('token', models.CharField(max_length=100, unique=True)), ('fcmtoken', models.CharField(max_length=200, null=True)), ('browser', models.TextField()), ('browser_version', models.CharField(max_length=100)), ('os', models.CharField(max_length=100)), ('ip', models.CharField(max_length=100)), ('platform', models.CharField(max_length=100)), ('expiry', models.BooleanField(default=False)), ('city', models.CharField(max_length=100, null=True)), ('region', models.CharField(max_length=100, null=True)), ('country', models.CharField(max_length=100, null=True)), ('loc', models.CharField(max_length=100, null=True)), ('org', models.CharField(max_length=100, null=True)), ('postal', models.CharField(max_length=100, null=True)), ('timezone', models.CharField(max_length=100, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ], options={ 'db_table': 'token', }, ), migrations.CreateModel( name='Ticket_Reply', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('content', models.TextField()), ('is_internal', models.BooleanField(default=False)), ('files', models.JSONField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('ticket', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='replies', to='app.support_ticket')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ], options={ 'db_table': 'ticket_reply', }, ), migrations.CreateModel( name='Subscription_Note', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('detail', models.TextField()), ('files', models.JSONField(null=True)), ('deleted', models.BooleanField(default=False, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('ref', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='subnote', to='app.subscription')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ], options={ 'db_table': 'subscription_note', }, ), migrations.AddField( model_name='subscription', name='creator', field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'), ), migrations.AddField( model_name='subscription', name='updater', field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'), ), migrations.AddField( model_name='staff', name='creator', field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'), ), migrations.AddField( model_name='staff', name='updater', field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'), ), migrations.AddField( model_name='staff', name='user', field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'), ), migrations.AddField( model_name='people', name='creator', field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'), ), migrations.AddField( model_name='people', name='updater', field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'), ), migrations.CreateModel( name='Payment_Receipt', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(db_index=True, max_length=20, null=True, unique=True)), ('amount', models.DecimalField(decimal_places=2, max_digits=20)), ('payment_date', models.DateField()), ('ref_code', models.CharField(max_length=100, null=True)), ('note', models.TextField(null=True)), ('approve_time', models.DateTimeField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('currency', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.currency')), ('customer', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='receipts', to='app.customer')), ('invoice', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='receipts', to='app.invoice')), ('payment_method', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.payment_method')), ('status', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.payment_status')), ('approver', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ('creator', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ], options={ 'db_table': 'payment_receipt', }, ), migrations.CreateModel( name='News', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=200)), ('subtitle', models.CharField(max_length=500)), ('image', models.CharField(max_length=300)), ('header', models.JSONField(null=True)), ('content', models.JSONField(null=True)), ('link', models.CharField(max_length=200, null=True)), ('canonical', models.CharField(max_length=200, null=True)), ('valid_from', models.DateTimeField(null=True)), ('valid_to', models.DateTimeField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('category', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.category')), ('language', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.lang_choice')), ('status', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.display_status')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ], options={ 'db_table': 'news', }, ), migrations.CreateModel( name='Layer_Setting', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=20, null=True, unique=True)), ('name', models.CharField(max_length=200)), ('detail', models.JSONField()), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ], options={ 'db_table': 'layer_setting', }, ), migrations.AddField( model_name='invoice', name='creator', field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'), ), migrations.CreateModel( name='Internal_Entry', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(db_index=True, max_length=30, null=True, unique=True)), ('content', models.TextField()), ('amount', models.FloatField()), ('balance_before', models.FloatField(null=True)), ('balance_after', models.FloatField()), ('date', models.DateField()), ('ref', models.CharField(max_length=30, null=True, unique=True)), ('allocation_amount', models.DecimalField(decimal_places=2, max_digits=35, null=True)), ('allocation_remain', models.DecimalField(decimal_places=2, max_digits=35, null=True)), ('allocation_detail', models.JSONField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('account', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.internal_account')), ('category', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='entrycate', to='app.entry_category')), ('customer', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='entrycus', to='app.customer')), ('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.entry_type')), ('invoice', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.invoice')), ('provider_invoice', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.provider_invoice')), ('subscription', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.subscription')), ('approver', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ('inputer', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ], options={ 'db_table': 'internal_entry', }, ), migrations.CreateModel( name='Instance_Log', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('action', models.CharField(max_length=50)), ('status', models.CharField(max_length=30)), ('detail', models.JSONField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('instance', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='logs', to='app.cloud_instance')), ('performed_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ], options={ 'db_table': 'instance_log', }, ), migrations.CreateModel( name='Group', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ('note', models.TextField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('creator', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ], options={ 'db_table': 'group', 'unique_together': {('creator', 'name')}, }, ), migrations.AddField( model_name='file', name='user', field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'), ), migrations.CreateModel( name='Customer_Sms', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('ref', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='custsms', to='app.customer')), ('sms', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.sms')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ], options={ 'db_table': 'customer_sms', }, ), migrations.CreateModel( name='Customer_Note', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('detail', models.JSONField()), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('ref', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='custnote', to='app.customer')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ], options={ 'db_table': 'customer_note', }, ), migrations.AddField( model_name='customer', name='creator', field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'), ), migrations.AddField( model_name='customer', name='updater', field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'), ), migrations.AddField( model_name='customer', name='user', field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='customer_profile', to='app.user'), ), migrations.AddField( model_name='company', name='creator', field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'), ), migrations.AddField( model_name='company', name='updater', field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'), ), migrations.CreateModel( name='Account_Recovery', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('expiry', models.BooleanField(default=False)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ], options={ 'db_table': 'account_recovery', }, ), migrations.CreateModel( name='User_Auth', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('expiry', models.BooleanField(default=False)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(null=True)), ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ], options={ 'db_table': 'user_auth', }, ), migrations.CreateModel( name='User_Session', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('session', models.BigIntegerField()), ('start_time', models.DateTimeField()), ('end_time', models.DateTimeField(null=True)), ('duration', models.IntegerField(null=True)), ('click_count', models.IntegerField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('token', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='userlog', to='app.token')), ], options={ 'db_table': 'user_session', }, ), migrations.CreateModel( name='User_Log', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('link', models.TextField()), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('session', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user_session')), ], options={ 'db_table': 'user_log', }, ), migrations.CreateModel( name='User_Setting', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=200, unique=True)), ('detail', models.JSONField()), ('note', models.TextField(null=True)), ('default', models.BooleanField(default=False)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('view', models.PositiveIntegerField(null=True)), ('like', models.PositiveIntegerField(null=True)), ('share', models.PositiveIntegerField(null=True)), ('on_menu', models.BooleanField(default=False)), ('my_menu', models.BooleanField(default=False)), ('deleted', models.BooleanField(default=False)), ('classify', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.setting_class')), ('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.setting_type')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ], options={ 'db_table': 'user_setting', }, ), migrations.CreateModel( name='Subscription_Discount', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('value', models.DecimalField(decimal_places=2, max_digits=20, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('discount', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.discount_type')), ('subscription', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='discounts', to='app.subscription')), ('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.value_type')), ], options={ 'db_table': 'subscription_discount', }, ), migrations.CreateModel( name='Fee_Type', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=30, unique=True)), ('name', models.CharField(max_length=100)), ('value', models.FloatField()), ('index', models.IntegerField(default=1, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('method', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.fee_method')), ('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.value_type')), ], options={ 'db_table': 'fee_type', }, ), migrations.CreateModel( name='Wallet_Transaction', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(db_index=True, max_length=20, null=True, unique=True)), ('amount', models.DecimalField(decimal_places=2, max_digits=20)), ('balance_before', models.DecimalField(decimal_places=2, max_digits=20)), ('balance_after', models.DecimalField(decimal_places=2, max_digits=20)), ('description', models.CharField(max_length=300)), ('ref_code', models.CharField(max_length=100, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('invoice', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='wallet_txns', to='app.invoice')), ('performed_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ('subscription', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='wallet_txns', to='app.subscription')), ('wallet', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='transactions', to='app.customer_wallet')), ('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.wallet_transaction_type')), ], options={ 'db_table': 'wallet_transaction', }, ), migrations.CreateModel( name='Workflow', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50, unique=True)), ('name', models.CharField(max_length=200)), ('description', models.TextField(blank=True)), ('is_active', models.BooleanField(default=True)), ('create_time', models.DateTimeField(auto_now_add=True)), ('update_time', models.DateTimeField(auto_now=True)), ('initial_step', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='initial_workflows', to='app.stepaction')), ], options={ 'db_table': 'workflow', }, ), migrations.AddField( model_name='stepaction', name='workflow', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='steps', to='app.workflow'), ), migrations.CreateModel( name='Customer_File', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('ref', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='custfile', to='app.customer')), ('file', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.file')), ], options={ 'db_table': 'customer_file', 'unique_together': {('ref', 'file')}, }, ), migrations.CreateModel( name='Account_Book', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('system_date', models.DateField()), ('current_date', models.DateField()), ('start_balance', models.FloatField(null=True)), ('end_balance', models.FloatField(null=True)), ('credit', models.FloatField(null=True)), ('debit', models.FloatField(null=True)), ('number_credit', models.IntegerField(null=True)), ('number_debit', models.IntegerField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('account', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.internal_account')), ], options={ 'db_table': 'account_book', 'unique_together': {('system_date', 'account')}, }, ), migrations.CreateModel( name='Entry_File', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('file', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.file')), ('ref', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='entryfile', to='app.internal_entry')), ], options={ 'db_table': 'entry_file', 'unique_together': {('ref', 'file')}, }, ), migrations.CreateModel( name='People_File', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('file', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.file')), ('ref', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.people')), ], options={ 'db_table': 'people_file', 'unique_together': {('ref', 'file')}, }, ), migrations.CreateModel( name='Postpaid_Billing_Cycle', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(db_index=True, max_length=20, null=True, unique=True)), ('period_from', models.DateField()), ('period_to', models.DateField()), ('total_usage_amount', models.DecimalField(decimal_places=2, max_digits=20, null=True)), ('status', models.CharField(choices=[('OPEN', 'Đang tích lũy usage'), ('INVOICED', 'Đã xuất Invoice'), ('PAID', 'Đã thanh toán')], default='OPEN', max_length=20)), ('closed_at', models.DateTimeField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('currency', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.currency')), ('customer', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='billing_cycles', to='app.customer')), ('invoice', models.OneToOneField(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='billing_cycle', to='app.invoice')), ], options={ 'db_table': 'postpaid_billing_cycle', 'unique_together': {('customer', 'period_from')}, }, ), migrations.CreateModel( name='Customer_People', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('customer', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='custpeople', to='app.customer')), ('people', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.people')), ('relation', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.relation')), ], options={ 'db_table': 'customer_people', 'unique_together': {('customer', 'people')}, }, ), migrations.CreateModel( name='Plan_Datacenter', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('datacenter', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.datacenter')), ('plan', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='plan_dcs', to='app.service_plan')), ], options={ 'db_table': 'plan_datacenter', 'unique_together': {('plan', 'datacenter')}, }, ), migrations.CreateModel( name='Staff_File', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('file', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.file')), ('ref', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='stafffile', to='app.staff')), ], options={ 'db_table': 'staff_file', 'unique_together': {('ref', 'file')}, }, ), migrations.CreateModel( name='Subscription_File', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('file', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.file')), ('ref', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='subfile', to='app.subscription')), ], options={ 'db_table': 'subscription_file', 'unique_together': {('ref', 'file')}, }, ), migrations.CreateModel( name='Message_Receiver', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('seen', models.BooleanField(default=False)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('message', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='msgrecv', to='app.message')), ('status', models.ForeignKey(default=1, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.notification_status')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ], options={ 'db_table': 'message_receiver', 'unique_together': {('message', 'user')}, }, ), migrations.CreateModel( name='Dealer_Rights', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('setting', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.dealer_setting')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ], options={ 'db_table': 'dealer_rights', 'unique_together': {('setting', 'user')}, }, ), migrations.CreateModel( name='Biz_Rights', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('setting', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.biz_setting')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')), ], options={ 'db_table': 'biz_rights', 'unique_together': {('setting', 'user')}, }, ), migrations.CreateModel( name='User_Apps', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('apps', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.apps')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='userapps', to='app.user')), ], options={ 'db_table': 'user_apps', 'unique_together': {('apps', 'user')}, }, ), migrations.CreateModel( name='User_Group', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('deleted', models.BooleanField(default=False)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('update_time', models.DateTimeField(auto_now=True, null=True)), ('group', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='grus', to='app.group')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='usgr', to='app.user')), ], options={ 'db_table': 'user_group', 'unique_together': {('group', 'user')}, }, ), migrations.CreateModel( name='Group_Rights', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('is_edit', models.BooleanField(default=False, null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('setting', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.biz_setting')), ('group', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user_type')), ], options={ 'db_table': 'group_rights', 'unique_together': {('setting', 'group')}, }, ), migrations.CreateModel( name='Rule', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('rule_code', models.CharField(max_length=50, unique=True)), ('name', models.CharField(max_length=200)), ('description', models.TextField(blank=True)), ('conditions', models.JSONField(blank=True, default=list)), ('constraints', models.JSONField(blank=True, default=list)), ('is_active', models.BooleanField(default=True)), ('create_time', models.DateTimeField(auto_now_add=True)), ('update_time', models.DateTimeField(auto_now=True)), ('step_action', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rules', to='app.stepaction')), ('utility', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rules', to='app.utility')), ], options={ 'db_table': 'rule', 'unique_together': {('step_action', 'rule_code')}, }, ), migrations.CreateModel( name='Usage_Record', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('period_from', models.DateTimeField()), ('period_to', models.DateTimeField()), ('hours', models.DecimalField(decimal_places=4, max_digits=10)), ('unit_price_hourly', models.DecimalField(decimal_places=6, max_digits=20)), ('amount', models.DecimalField(decimal_places=4, max_digits=20)), ('charged', models.BooleanField(default=False)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), ('currency', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.currency')), ('instance', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='usage_records', to='app.cloud_instance')), ('postpaid_invoice', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='usage_records', to='app.invoice')), ('subscription', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='usage_records', to='app.subscription')), ('wallet_transaction', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='usage_records', to='app.wallet_transaction')), ], options={ 'db_table': 'usage_record', 'indexes': [models.Index(fields=['subscription', 'period_from'], name='usage_recor_subscri_b0fb0c_idx')], }, ), migrations.AlterUniqueTogether( name='stepaction', unique_together={('workflow', 'step_code')}, ), ]