Files
api/app/migrations/0001_initial.py
anhduy-tech 3ece124848 changes
2026-03-06 09:51:53 +07:00

2641 lines
139 KiB
Python

# Generated by Django 5.1.7 on 2026-02-27 08:08
import django.db.models.deletion
import uuid
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='Contract_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)),
('update_time', models.DateTimeField(auto_now=True, null=True)),
],
options={
'db_table': 'contract_status',
},
),
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='Dealer',
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=100)),
('phone', models.CharField(db_index=True, max_length=20, null=True)),
('email', models.CharField(max_length=50, null=True)),
('address', models.CharField(max_length=255, null=True)),
('sale_amount', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('pay_sale', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('commission_amount', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('pay_commission', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('commission_remain', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('batch_date', models.DateTimeField(null=True)),
('count_sale', 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': 'dealer',
},
),
migrations.CreateModel(
name='Direction',
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': 'direction',
},
),
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='Duration',
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.TextField()),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(auto_now=True, null=True)),
],
options={
'db_table': 'duration',
},
),
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='Gift',
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.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': 'gift',
},
),
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='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='Investor',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255)),
('tax_code', models.CharField(max_length=20)),
('address', models.TextField()),
('phone', models.CharField(max_length=15, null=True)),
('email', models.CharField(max_length=50, null=True)),
('bank_account', models.CharField(max_length=20, null=True)),
('bank_name', models.CharField(max_length=100, null=True)),
('representative', models.CharField(max_length=100, null=True)),
('website', models.URLField(null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(auto_now=True, null=True)),
],
options={
'db_table': 'investor',
},
),
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='Land_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': 'land_type',
},
),
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='Ownership_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': 'ownership_type',
},
),
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_Schedule',
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)),
('from_date', models.DateField()),
('to_date', models.DateField()),
('amount', models.DecimalField(decimal_places=2, max_digits=35)),
('paid_amount', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('amount_remain', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('remain_amount', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('cycle', models.IntegerField()),
('cycle_days', models.IntegerField()),
('entry', models.JSONField(null=True)),
('detail', models.JSONField(null=True)),
('batch_date', models.DateField(null=True)),
('ovd_days', models.IntegerField(null=True)),
('penalty_amount', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('penalty_paid', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('penalty_remain', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('penalty_reduce', models.DecimalField(decimal_places=2, max_digits=35, 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_schedule',
},
),
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='Product_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)),
('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)),
('update_time', models.DateTimeField(auto_now=True, null=True)),
],
options={
'db_table': 'product_status',
},
),
migrations.CreateModel(
name='Product_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': 'product_type',
},
),
migrations.CreateModel(
name='Project_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)),
('update_time', models.DateTimeField(auto_now=True, null=True)),
],
options={
'db_table': 'project_status',
},
),
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='Sale_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)),
('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)),
('update_time', models.DateTimeField(auto_now=True, null=True)),
],
options={
'db_table': 'sale_status',
},
),
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='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, help_text="Model chính, e.g., 'app.Transaction'", 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={
'verbose_name': 'Step/Action',
'verbose_name_plural': 'Steps/Actions',
'db_table': 'step_action',
'ordering': ['order'],
},
),
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='Transaction_Phase',
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)),
('color', models.IntegerField(null=True)),
('index', models.IntegerField(default=1, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'transaction_phase',
},
),
migrations.CreateModel(
name='Transaction_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)),
('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': 'transaction_status',
},
),
migrations.CreateModel(
name='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)),
('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': 'transaction_type',
},
),
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, help_text="e.g., 'app.email.send_email'", 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={
'verbose_name': 'Utility',
'verbose_name_plural': 'Utilities',
'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='Zone_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': 'zone_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')),
('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.customer_type')),
('dealer', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.dealer')),
('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='Cart',
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=255)),
('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)),
('dealer', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.dealer')),
],
options={
'db_table': 'cart',
},
),
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.Transaction_Detail', 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='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='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='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)),
('payment', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='invoice', to='app.payment_schedule')),
],
options={
'db_table': 'invoice',
},
),
migrations.AddField(
model_name='payment_schedule',
name='status',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.payment_status'),
),
migrations.AddField(
model_name='payment_schedule',
name='type',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.payment_type'),
),
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='Project',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=20, unique=True)),
('name', models.CharField(max_length=255)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(auto_now=True, null=True)),
('investor', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.investor')),
('status', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.project_status')),
],
options={
'db_table': 'project',
},
),
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='Sale_Policy',
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)),
('deposit', models.DecimalField(decimal_places=2, max_digits=35)),
('enable', models.BooleanField(default=True)),
('contract_allocation_percentage', models.IntegerField(blank=True, default=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)),
('method', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.payment_method')),
],
options={
'db_table': 'sale_policy',
},
),
migrations.CreateModel(
name='Product',
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)),
('land_lot_code', models.CharField(max_length=255)),
('zone_code', models.CharField(max_length=255)),
('trade_code', models.CharField(max_length=20, null=True)),
('lot_area', models.DecimalField(decimal_places=2, max_digits=35)),
('building_area', models.DecimalField(decimal_places=2, max_digits=35)),
('total_built_area', models.DecimalField(decimal_places=2, max_digits=35)),
('number_of_floors', models.IntegerField()),
('land_lot_size', models.CharField(max_length=255)),
('villa_model', models.CharField(max_length=255, null=True)),
('note', models.TextField(null=True)),
('origin_price', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('price_excluding_vat', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('product_type', models.CharField(max_length=255, null=True)),
('template_name', models.CharField(max_length=255, null=True)),
('link', models.UUIDField(default=uuid.uuid4, editable=False, null=True, unique=True)),
('locked_until', models.DateTimeField(null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(auto_now=True, null=True)),
('cart', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='prdcart', to='app.cart')),
('dealer', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.dealer')),
('direction', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.direction')),
('status', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.product_status')),
('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.product_type')),
('project', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.project')),
('policy', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.sale_policy')),
('zone_type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.zone_type')),
],
options={
'db_table': 'product',
},
),
migrations.AddField(
model_name='product_status',
name='sale_status',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.sale_status'),
),
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='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='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='Transaction',
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)),
('date', models.DateField()),
('origin_price', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('discount_amount', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('sale_price', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('deposit_amount', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('deposit_received', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('deposit_remaining', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('amount_received', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('amount_remain', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('penalty_amount', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('early_discount_amount', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('payment_plan', models.JSONField(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='txncust', to='app.customer')),
('policy', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='txnplc', to='app.sale_policy')),
('product', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='txnprd', to='app.product')),
('phase', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.transaction_phase')),
],
options={
'db_table': 'transaction',
},
),
migrations.CreateModel(
name='Transaction_Detail',
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)),
('date', models.DateField()),
('amount', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('amount_remaining', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('amount_received', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('due_date', models.DateField(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)),
('customer_new', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.customer')),
('customer_old', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.customer')),
('transaction', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='resvtxn', to='app.transaction')),
('phase', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.transaction_phase')),
('status', models.ForeignKey(default=1, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.transaction_status')),
],
options={
'db_table': 'transaction_detail',
},
),
migrations.AddField(
model_name='payment_schedule',
name='txn_detail',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='psh', to='app.transaction_detail'),
),
migrations.CreateModel(
name='Transaction_Gift',
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)),
('gift', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.gift')),
('transaction', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='txngift', to='app.transaction')),
],
options={
'db_table': 'transaction_gift',
},
),
migrations.CreateModel(
name='Phase_Doctype',
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)),
('doctype', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.document_type')),
('phase', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='phasedoc', to='app.transaction_phase')),
],
options={
'db_table': 'phase_doctype',
},
),
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.AddField(
model_name='transaction_detail',
name='approver',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'),
),
migrations.AddField(
model_name='transaction_detail',
name='creator',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.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='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')),
('creator', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
('updater', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
],
options={
'db_table': 'staff',
},
),
migrations.CreateModel(
name='Product_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='prdnote', to='app.product')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
],
options={
'db_table': 'product_note',
},
),
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.AddField(
model_name='payment_schedule',
name='updater',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'),
),
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.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')),
('product', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.product')),
('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='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.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')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
],
options={
'db_table': 'file',
},
),
migrations.AddField(
model_name='dealer',
name='user',
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dealer_profile', 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.CreateModel(
name='Contract',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('link', models.UUIDField(default=uuid.uuid4, editable=False, null=True)),
('document', 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(default=1, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.contract_status')),
('signature', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.file')),
('transaction', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.transaction')),
('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
],
options={
'db_table': 'contract',
},
),
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='Transaction_Discount',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('value', models.DecimalField(decimal_places=2, max_digits=35, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(auto_now=True, null=True)),
('discount', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.discount_type')),
('transaction', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='txndiscount', to='app.transaction')),
('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.value_type')),
],
options={
'db_table': 'transaction_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='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={
'verbose_name': 'Workflow',
'verbose_name_plural': 'Workflows',
'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='Product_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')),
('product', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='prdfile', to='app.product')),
],
options={
'db_table': 'product_file',
'unique_together': {('product', 'file')},
},
),
migrations.CreateModel(
name='Project_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')),
('project', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='prjfile', to='app.project')),
],
options={
'db_table': 'project_file',
'unique_together': {('project', 'file')},
},
),
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='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='Product_Booked',
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)),
('product', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, related_name='prdbk', to='app.product')),
('transaction', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='transbk', to='app.transaction')),
],
options={
'db_table': 'product_booked',
'unique_together': {('product', 'transaction')},
},
),
migrations.CreateModel(
name='Co_Ownership',
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)),
('people', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.people')),
('transaction', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='co_op', to='app.transaction')),
],
options={
'db_table': 'co_ownership',
'unique_together': {('transaction', 'people')},
},
),
migrations.CreateModel(
name='Transaction_Current',
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)),
('transaction', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, related_name='txncurrent', to='app.transaction')),
('detail', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.transaction_detail')),
],
options={
'db_table': 'transaction_current',
'unique_together': {('transaction', 'detail')},
},
),
migrations.CreateModel(
name='Transaction_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')),
('txn_detail', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='txnfile', to='app.transaction_detail')),
],
options={
'db_table': 'transaction_file',
'unique_together': {('txn_detail', '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={
'verbose_name': 'Rule',
'verbose_name_plural': 'Rules',
'db_table': 'rule',
'unique_together': {('step_action', 'rule_code')},
},
),
migrations.CreateModel(
name='Payment_Plan',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('cycle', models.IntegerField()),
('value', models.IntegerField()),
('days', models.IntegerField()),
('payment_note', models.TextField()),
('due_note', models.TextField()),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(auto_now=True, null=True)),
('policy', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.sale_policy')),
('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.value_type')),
],
options={
'db_table': 'payment_plan',
'unique_together': {('policy', 'cycle')},
},
),
migrations.AlterUniqueTogether(
name='stepaction',
unique_together={('workflow', 'step_code')},
),
]