feat: shipping warehouse and cost

This commit is contained in:
2024-07-18 04:57:05 +03:00
parent ba73d5cb09
commit e7235021f9
18 changed files with 148 additions and 1298 deletions

View File

@@ -7,4 +7,6 @@ from .service import *
from .product import *
from .secondary import *
from .barcode import *
from .shipping_warehouse import *
configure_mappers()

View File

@@ -1,4 +1,9 @@
from sqlalchemy.orm import declarative_base
from sqlalchemy.ext.asyncio import AsyncAttrs
from sqlalchemy.orm import declarative_base, DeclarativeBase
BaseModel = declarative_base()
metadata = BaseModel.metadata
class BaseModel(DeclarativeBase, AsyncAttrs):
pass
metadata = BaseModel.metadata

View File

@@ -1,9 +1,10 @@
from enum import IntEnum, unique
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Boolean
from sqlalchemy.orm import relationship, backref
from sqlalchemy.orm import relationship, backref, Mapped, mapped_column
from models.base import BaseModel
from .shipping_warehouse import ShippingWarehouse
@unique
@@ -32,6 +33,9 @@ class Deal(BaseModel):
is_deleted = Column(Boolean, nullable=False, server_default='0', default=False, comment='Удалена')
is_completed = Column(Boolean, nullable=False, server_default='0', default=False, comment='Завершена')
shipping_warehouse_id: Mapped[int] = mapped_column(ForeignKey('shipping_warehouses.id'), nullable=True)
shipping_warehouse: Mapped["ShippingWarehouse"] = relationship()
services = relationship('DealService', back_populates='deal', cascade="all, delete-orphan")
products = relationship('DealProduct', back_populates='deal', cascade="all, delete-orphan")

View File

@@ -13,12 +13,22 @@ class Service(BaseModel):
category_id = Column(Integer, ForeignKey('service_categories.id'), nullable=False, comment='ID категории услуги')
category = relationship('ServiceCategory', lazy='joined')
price = Column(Double, nullable=False, comment='Стоимость услуги')
price = Column(
Double,
nullable=False,
comment='Стоимость услуги'
)
cost = Column(
Double,
nullable=False,
server_default='0',
comment='Себестоимость услуги'
)
service_type = Column(Integer,
server_default=f'{enums.service.ServiceType.DEAL_SERVICE}',
nullable=False,
comment='Тип услуги')
price_ranges = relationship('ServicePriceRange',
back_populates='service',
lazy='selectin',

View File

@@ -0,0 +1,9 @@
from sqlalchemy.orm import Mapped, mapped_column
from models import BaseModel
class ShippingWarehouse(BaseModel):
__tablename__ = 'shipping_warehouses'
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str] = mapped_column(nullable=False)