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) 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}'