from django.db import models


class category_table(models.Model): 
    company_id          = models.IntegerField(default=0,null=True)
    name                = models.CharField(max_length=50,null=True)
    description         = models.CharField(max_length=150,null=True)
    sort_no             = models.IntegerField(default=1,null=True)
    is_active           = models.IntegerField(default=1,null=True)
    status              = models.IntegerField(default=1,null=True)
    created_on          = models.DateTimeField(null=True)
    updated_on          = models.DateTimeField(null=True)
    created_by          = models.IntegerField(null=True)
    updated_by          = models.IntegerField(null=True)
    class Meta:
        db_table="category"

    def save(self, *args, **kwargs):
        if self.name:
            self.name = self.name.strip().title()       
        super(category_table, self).save(*args, **kwargs)



class sub_category_table(models.Model):    
    company_id          = models.IntegerField(default=0,null=True)
    category_id         = models.IntegerField(default=0,null=True)
    category_name       = models.CharField(max_length=50,null=True)
    name                = models.CharField(max_length=50,null=True)
    description         = models.CharField(max_length=150,null=True)
    is_active           = models.IntegerField(default=1,null=True)
    status              = models.IntegerField(default=1,null=True)
    created_on          = models.DateTimeField(null=True)
    updated_on          = models.DateTimeField(null=True)
    created_by          = models.IntegerField(null=True)
    updated_by          = models.IntegerField(null=True)
    class Meta:
        db_table="sub_category"

    def save(self, *args, **kwargs):
        if self.name:
            self.name = self.name.strip().title()       
        super(sub_category_table, self).save(*args, **kwargs)




class brand_table(models.Model): 
    company_id          = models.IntegerField(default=0,null=True)
    maintenance_value   = models.FloatField(default=0,null=True)
    name                = models.CharField(max_length=50,null=True)
    description         = models.CharField(max_length=150,null=True)
    sort_no             = models.IntegerField(default=1,null=True)
    is_active           = models.IntegerField(default=1,null=True)
    status              = models.IntegerField(default=1,null=True)
    created_on          = models.DateTimeField(null=True)
    updated_on          = models.DateTimeField(null=True)
    created_by          = models.IntegerField(null=True)
    updated_by          = models.IntegerField(null=True)
    class Meta:
        db_table="brands"
    
    def save(self, *args, **kwargs):
        if self.name:
            self.name = self.name.strip().title()       
        super(brand_table, self).save(*args, **kwargs)




class model_table(models.Model): 
    company_id          = models.IntegerField(default=0,null=True)    
    brand_id            = models.IntegerField(default=0,null=True)    
    name                = models.CharField(max_length=50,null=True)
    description         = models.CharField(max_length=150,null=True)
    is_active           = models.IntegerField(default=1,null=True)
    status              = models.IntegerField(default=1,null=True)
    created_on          = models.DateTimeField(null=True)
    updated_on          = models.DateTimeField(null=True)
    created_by          = models.IntegerField(null=True)
    updated_by          = models.IntegerField(null=True)
    class Meta:
        db_table="model"


class variant_table(models.Model): 
    company_id          = models.IntegerField(default=0,null=True)
    brand_id            = models.IntegerField(default=0,null=True)
    model_id            = models.IntegerField(default=0,null=True)
    name                = models.CharField(max_length=50,null=True)
    description         = models.CharField(max_length=150,null=True)
    is_active           = models.IntegerField(default=1,null=True)
    status              = models.IntegerField(default=1,null=True)
    created_on          = models.DateTimeField(null=True)
    updated_on          = models.DateTimeField(null=True)
    created_by          = models.IntegerField(null=True)
    updated_by          = models.IntegerField(null=True)
    class Meta:
        db_table="variants"



class color_table(models.Model): 
    company_id          = models.IntegerField(default=0,null=True)
    brand_id            = models.IntegerField(default=0,null=True)
    model_id            = models.IntegerField(default=0,null=True)
    variant_id          = models.IntegerField(default=0,null=True)
    name                = models.CharField(max_length=50,null=True)
    description         = models.CharField(max_length=150,null=True)
    is_active           = models.IntegerField(default=1,null=True)
    status              = models.IntegerField(default=1,null=True)
    created_on          = models.DateTimeField(null=True)
    updated_on          = models.DateTimeField(null=True)
    created_by          = models.IntegerField(null=True)
    updated_by          = models.IntegerField(null=True)
    class Meta:
        db_table="colors"


class uom_table(models.Model): 
    company_id          = models.IntegerField(default=0,null=True)
    name                = models.CharField(max_length=50,null=True)
    description         = models.CharField(max_length=150,null=True)
    is_active           = models.IntegerField(default=1,null=True)
    status              = models.IntegerField(default=1,null=True)
    created_on          = models.DateTimeField(null=True)
    updated_on          = models.DateTimeField(null=True)
    created_by          = models.IntegerField(null=True)
    updated_by          = models.IntegerField(null=True)
    class Meta:
        db_table="uom"




class tax_table(models.Model): 
    company_id          = models.IntegerField(default=0,null=True)
    name                = models.CharField(max_length=50,null=True)
    percentage          = models.FloatField(default=0,null=True)
    description         = models.CharField(max_length=150,null=True)
    is_active           = models.IntegerField(default=1,null=True)
    status              = models.IntegerField(default=1,null=True)
    created_on          = models.DateTimeField(null=True)
    updated_on          = models.DateTimeField(null=True)
    created_by          = models.IntegerField(null=True)
    updated_by          = models.IntegerField(null=True)
    class Meta:
        db_table="tax"



class item_table(models.Model):
    company_id          = models.IntegerField(default=0,null=True)
    category_id         = models.IntegerField(default=0,null=True)
    sub_category_id     = models.IntegerField(default=0,null=True)
    brand_id            = models.IntegerField(default=0,null=True)
    tax_id              = models.IntegerField(default=0,null=True)
    variant_id          = models.IntegerField(default=0,null=True)
    model_id            = models.IntegerField(default=0,null=True)
    color_id            = models.IntegerField(default=0,null=True)
    uom_id              = models.IntegerField(default=0,null=True)
    sku                 = models.CharField(max_length=50)
    ean                 = models.CharField(max_length=50, blank=True, null=True)
    hsn_code            = models.CharField(max_length=50, blank=True, null=True)
    cell_life           = models.CharField(max_length=50, blank=True, null=True)    
    image               = models.ImageField(upload_to='items/', max_length=100)
    db_price            = models.DecimalField(max_digits=10, decimal_places=2, null=True)
    wholesale_price     = models.DecimalField(max_digits=10, decimal_places=2, null=True)
    wholesale_amount    = models.DecimalField(max_digits=10, decimal_places=2, null=True)
    franchise_price     = models.DecimalField(max_digits=10, decimal_places=2, null=True)
    franchise_amount    = models.DecimalField(max_digits=10, decimal_places=2, null=True)
    mop_price           = models.DecimalField(max_digits=10, decimal_places=2, null=True)
    bop_price           = models.DecimalField(max_digits=10, decimal_places=2, null=True)
    mrp                 = models.DecimalField(max_digits=10, decimal_places=2, null=True)
    description         = models.CharField(max_length=150)
    sku_text            = models.TextField(null=True)
    is_active           = models.IntegerField(default=1,null=True)
    status              = models.IntegerField(default=1,null=True)
    created_on          = models.DateTimeField(null=True)
    updated_on          = models.DateTimeField(null=True)
    created_by          = models.IntegerField(null=True)
    updated_by          = models.IntegerField(null=True)
    class Meta:
        db_table="m_items"
    







class finance_table(models.Model):    
    company_id          = models.IntegerField(default=0,null=True)
    name                = models.CharField(max_length=50, blank=True, null=True)
    code                = models.CharField(max_length=30, null=True, blank=True)
    receivable          = models.DecimalField(max_digits=10, decimal_places=2, default=0,null=True)
    payable             = models.DecimalField(max_digits=10, decimal_places=2, default=0,null=True)
    f_type              = models.CharField(max_length=30, null=True, blank=True)
    description         = models.CharField(max_length=150, blank=True, null=True)
    is_active           = models.IntegerField(default=1,null=True)
    status              = models.IntegerField(default=1,null=True)
    created_on          = models.DateTimeField(null=True)
    updated_on          = models.DateTimeField(null=True)
    created_by          = models.IntegerField(null=True) 
    updated_by          = models.IntegerField(null=True)
    class Meta:
        db_table="finance"
        
    def save(self, *args, **kwargs):
        if self.name:
            self.name = self.name.strip().title()       
        super(finance_table, self).save(*args, **kwargs)




class bank_table(models.Model):    
    company_id          = models.IntegerField(default=0,null=True)
    date                = models.DateField(null=True)
    time                = models.TimeField(null=True)
    name                = models.CharField(max_length=150, blank=True, null=True)
    opening               = models.DecimalField(max_digits=10, decimal_places=2, default=0,null=True)
    
    code                = models.CharField(max_length=15, null=True, blank=True)    
    account_number      = models.CharField(max_length=150, null=True, blank=True)    
    description         = models.CharField(max_length=150, blank=True, null=True)
    is_default          = models.IntegerField(default=0,null=True)
    is_active           = models.IntegerField(default=1,null=True)
    status              = models.IntegerField(default=1,null=True)
    created_on          = models.DateTimeField(null=True)
    updated_on          = models.DateTimeField(null=True)
    created_by          = models.IntegerField(null=True) 
    updated_by          = models.IntegerField(null=True)
    class Meta:
        db_table="bank"

    def save(self, *args, **kwargs):
        if self.name:
            self.name = self.name.strip().upper()       
        super(bank_table, self).save(*args, **kwargs)


class qr_table(models.Model): 
    company_id          = models.IntegerField(default=0,null=True)
    bank_id             = models.IntegerField(default=0,null=True)
    name                = models.CharField(max_length=50,null=True)
    description         = models.CharField(max_length=150,null=True)
    is_active           = models.IntegerField(default=1,null=True)
    status              = models.IntegerField(default=1,null=True)
    created_on          = models.DateTimeField(null=True)
    updated_on          = models.DateTimeField(null=True)
    created_by          = models.IntegerField(null=True)
    updated_by          = models.IntegerField(null=True)
    class Meta:
        db_table="bank_qr_code"
