91 lines
3.6 KiB
Python
91 lines
3.6 KiB
Python
from django.db import models
|
|
from utils.base_model import BaseModel
|
|
from apps.workspace.models import Workspace as WorkspaceModel
|
|
from apps.cuser.models import CuserRole as CuserRoleModel
|
|
from apps.customer.models import ResponsibleGroup as ResponsibleGroupModel, Customer as CustomerModel
|
|
# Create your models here.
|
|
|
|
|
|
class ProductType(BaseModel):
|
|
name = models.CharField(max_length=100)
|
|
sys_ws = models.ForeignKey(WorkspaceModel, on_delete=models.CASCADE, null=False, blank=False)
|
|
|
|
def __str__(self):
|
|
return f'{self.name}'
|
|
|
|
|
|
class ProductCategory(BaseModel):
|
|
name = models.CharField(max_length=60, null=False, blank=False)
|
|
parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)
|
|
image = models.ImageField(null=True, blank=True, default=None, upload_to='product-cat/')
|
|
order_cat = models.PositiveIntegerField(null=True, blank=True, default=None)
|
|
sys_ws = models.ForeignKey(WorkspaceModel, on_delete=models.CASCADE, null=False, blank=False)
|
|
|
|
def __str__(self):
|
|
return f'{self.name}'
|
|
|
|
|
|
class Product(BaseModel):
|
|
name = models.CharField(max_length=200, null=False, blank=False)
|
|
price = models.PositiveBigIntegerField(null=False, blank=False)
|
|
category = models.ForeignKey(ProductCategory, on_delete=models.CASCADE, null=False, blank=False)
|
|
acc_code = models.CharField(null=True, blank=True)
|
|
order_prd = models.PositiveIntegerField(null=True, blank=True, default=None)
|
|
attr = models.JSONField(null=True, blank=True)
|
|
view_only = models.BooleanField(null=True, blank=True, default=False)
|
|
|
|
sys_ws = models.ForeignKey(WorkspaceModel, on_delete=models.CASCADE, null=False, blank=False)
|
|
|
|
def __str__(self):
|
|
return f'{self.name}'
|
|
|
|
|
|
class Cart(BaseModel):
|
|
cuser_role = models.ForeignKey(CuserRoleModel, on_delete=models.CASCADE, null=False, blank=False)
|
|
product = models.ForeignKey(Product, on_delete=models.CASCADE, null=False, blank=False)
|
|
quantity = models.IntegerField(null=False, blank=False)
|
|
|
|
sys_ws = models.ForeignKey(WorkspaceModel, on_delete=models.CASCADE, null=False, blank=False)
|
|
|
|
def __str__(self):
|
|
return f'{self.cuser_role}'
|
|
|
|
|
|
class Order(BaseModel):
|
|
|
|
FACTOR_TYPE_CHOICE = [
|
|
(1, 'pish_factor'),
|
|
(2, 'factor'),
|
|
]
|
|
|
|
FACTOR_STATUS_CHOICE = [
|
|
(1, 'unknown'),
|
|
(2, 'ok'),
|
|
(3, 'cancel'),
|
|
]
|
|
|
|
responsible_group = models.ForeignKey(ResponsibleGroupModel, on_delete=models.SET_NULL, null=True, blank=True)
|
|
customer = models.ForeignKey(CustomerModel, on_delete=models.CASCADE, null=False, blank=False)
|
|
total_price = models.PositiveIntegerField(null=False, blank=False)
|
|
factor_type = models.PositiveSmallIntegerField(choices=FACTOR_TYPE_CHOICE, null=False, blank=False)
|
|
factor_status = models.PositiveSmallIntegerField(choices=FACTOR_STATUS_CHOICE, null=True, blank=True)
|
|
sys_ws = models.ForeignKey(WorkspaceModel, on_delete=models.CASCADE, null=False, blank=False)
|
|
view_at = models.DateTimeField(null=True, blank=True, default=None)
|
|
|
|
def __str__(self):
|
|
return f'{self.customer}'
|
|
|
|
|
|
class OrderItem(BaseModel):
|
|
order = models.ForeignKey(Order, on_delete=models.CASCADE, null=False, blank=False, related_name='order_item')
|
|
product = models.ForeignKey(Product, on_delete=models.CASCADE, null=False, blank=False)
|
|
product_name = models.CharField(max_length=150, null=False, blank=False)
|
|
price = models.DecimalField(max_digits=12, decimal_places=2, null=False, blank=False)
|
|
amount = models.PositiveIntegerField(null=False, blank=False)
|
|
|
|
def __str__(self):
|
|
return f'{self.order} {self.order.id}'
|
|
|
|
|
|
|