Files
crmApi/apps/shop/models.py
T
2024-02-07 10:40:45 +03:30

92 lines
3.5 KiB
Python

from turtle import mode
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)
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}'