51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
from django.db import models
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
|
|
class Sale(models.Model):
|
|
|
|
customer = models.CharField(max_length=100)
|
|
date = models.DateField("Date")
|
|
phone = models.CharField(max_length=13, null=True, blank=True)
|
|
description = models.CharField(max_length=255, null=True, blank=True)
|
|
|
|
def __str__(self):
|
|
return f"{self.date} {self.customer}"
|
|
|
|
|
|
class SaleLine(models.Model):
|
|
|
|
sale = models.ForeignKey(Sale, on_delete=models.CASCADE)
|
|
product = models.CharField(max_length=100)
|
|
quantity = models.IntegerField(null=True)
|
|
unit_price = models.DecimalField(max_digits=9, decimal_places=2)
|
|
description = models.CharField(max_length=255, null=True, blank=True)
|
|
|
|
def __str__(self):
|
|
return f"{self.sale} - {self.product}"
|
|
|
|
|
|
class MeasuringUnits(models.TextChoices):
|
|
UNIT = 'UNIT', _('Unit')
|
|
|
|
|
|
class ProductCategory(models.Model):
|
|
name = models.CharField(max_length=100, unique=True)
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
|
|
class Product(models.Model):
|
|
name = models.CharField(max_length=100, unique=True)
|
|
price = models.DecimalField(max_digits=9, decimal_places=2)
|
|
measuring_unit = models.CharField(
|
|
max_length=20,
|
|
choices=MeasuringUnits.choices,
|
|
default=MeasuringUnits.UNIT
|
|
)
|
|
categories = models.ManyToManyField(ProductCategory)
|
|
|
|
def __str__(self):
|
|
return self.name
|