lavkach3

Форк
0
47 строк · 3.1 Кб
1
import uuid
2
from typing import Optional
3

4
from sqlalchemy import Sequence, Uuid, ForeignKey, text
5
from sqlalchemy.orm import mapped_column, Mapped
6

7
from app.inventory.location.enums import LocationClass, PutawayStrategy
8
from app.inventory.mixins import LocationMixin
9
from core.db import Base
10
from core.db.mixins import AllMixin
11
from core.db.types import ids
12

13

14
class LocationType(Base, AllMixin, LocationMixin):
15
    """
16
    **Типы местоположения** -  Обозначают набор свойств местоположения, например Паллет, или ячейка, или ящик, или зона
17
    """
18
    __tablename__ = "location_type"
19
    lsn_seq = Sequence(f'location_type_lsn_seq')
20
    title: Mapped[str] = mapped_column(index=True)
21
    store_id: Mapped[Optional[uuid.UUID]] = mapped_column(Uuid, index=True, nullable=True)
22
    allowed_package_ids: Mapped[Optional[ids]] = mapped_column(index=True)  # Разрешенные типы упаковок
23
    exclude_package_ids: Mapped[Optional[ids]] = mapped_column(index=True)  # Исключение типы упаковок
24
    is_homogeneity: Mapped[Optional[bool]] = mapped_column(default=False, index=True)  # Запрет на 1KU 2х разных партий
25
    strategy: Mapped[Optional['PutawayStrategy']] = mapped_column(default=PutawayStrategy.FEFO)  # Стратегия комплектования
26
    is_can_negative: Mapped[Optional[bool]] = mapped_column(server_default=text('false'),index=True)  # Может иметь отрицательный остаток
27

28

29
class Location(Base, AllMixin, LocationMixin):
30
    """
31
    **Местоположение** -  это обьект хранящий в себе кванты, а так же другие локации
32
    Местоположение может быть статичная или динамическая определяется типом:
33
    - shelve - статичная ячейка хранения в магазине
34
    - rack - статичная стеллаж
35
    - package - динамический тип местоположение, например Паллет
36
    """
37
    __tablename__ = "location"
38
    lsn_seq = Sequence(f'location_lsn_seq')
39
    title: Mapped[str] = mapped_column(index=True)
40
    store_id: Mapped[Optional[uuid.UUID]] = mapped_column(Uuid, index=True, nullable=True)
41
    location_class: Mapped[LocationClass] = mapped_column(index=True)
42
    location_type_id: Mapped[uuid.UUID] = mapped_column(ForeignKey('location_type.id'), index=True)
43
    location_id: Mapped[Optional[uuid.UUID]] = mapped_column(ForeignKey("location.id"), index=True)
44
    is_active: Mapped[Optional[bool]] = mapped_column(default=True)
45
    allowed_package_ids: Mapped[Optional[ids]] = mapped_column(index=True)  # Разрешенные типы упаковок
46
    exclude_package_ids: Mapped[Optional[ids]] = mapped_column(index=True)  # Исключение типы упаковок
47
    is_can_negative: Mapped[Optional[bool]] = mapped_column(server_default=text('false'), index=True)  # Может иметь отрицательный остаток
48

49

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.