Files
api/app/migrations/0001_initial.py
anhduy-tech f76cd880e1 changes
2026-03-19 11:57:52 +07:00

2589 lines
139 KiB
Python

# 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')},
),
]