129 lines
3.2 KiB
Python
129 lines
3.2 KiB
Python
from enum import IntEnum
|
|
from typing import Optional
|
|
|
|
|
|
class SuiviStockType(IntEnum):
|
|
AUCUN = 0
|
|
CMUP = 1
|
|
FIFO_LIFO = 2
|
|
SERIALISE = 3
|
|
|
|
@classmethod
|
|
def get_label(cls, value: Optional[int]) -> Optional[str]:
|
|
labels = {0: "Aucun", 1: "CMUP", 2: "FIFO/LIFO", 3: "Sérialisé"}
|
|
return labels.get(value) if value is not None else None
|
|
|
|
|
|
class NomenclatureType(IntEnum):
|
|
NON = 0
|
|
FABRICATION = 1
|
|
COMMERCIALE = 2
|
|
|
|
@classmethod
|
|
def get_label(cls, value: Optional[int]) -> Optional[str]:
|
|
labels = {0: "Non", 1: "Fabrication", 2: "Commerciale/Composé"}
|
|
return labels.get(value) if value is not None else None
|
|
|
|
|
|
class TypeArticle(IntEnum):
|
|
ARTICLE = 0
|
|
PRESTATION = 1
|
|
DIVERS = 2
|
|
NOMENCLATURE = 3
|
|
|
|
@classmethod
|
|
def get_label(cls, value: Optional[int]) -> Optional[str]:
|
|
labels = {
|
|
0: "Article",
|
|
1: "Prestation de service",
|
|
2: "Divers / Frais",
|
|
3: "Nomenclature",
|
|
}
|
|
return labels.get(value) if value is not None else None
|
|
|
|
|
|
class TypeFamille(IntEnum):
|
|
DETAIL = 0
|
|
TOTAL = 1
|
|
|
|
@classmethod
|
|
def get_label(cls, value: Optional[int]) -> Optional[str]:
|
|
labels = {0: "Détail", 1: "Total"}
|
|
return labels.get(value) if value is not None else None
|
|
|
|
|
|
class TypeCompta(IntEnum):
|
|
VENTE = 0
|
|
ACHAT = 1
|
|
STOCK = 2
|
|
|
|
@classmethod
|
|
def get_label(cls, value: Optional[int]) -> Optional[str]:
|
|
labels = {0: "Vente", 1: "Achat", 2: "Stock"}
|
|
return labels.get(value) if value is not None else None
|
|
|
|
|
|
class TypeRessource(IntEnum):
|
|
MAIN_OEUVRE = 0
|
|
MACHINE = 1
|
|
SOUS_TRAITANCE = 2
|
|
|
|
@classmethod
|
|
def get_label(cls, value: Optional[int]) -> Optional[str]:
|
|
labels = {0: "Main d'œuvre", 1: "Machine", 2: "Sous-traitance"}
|
|
return labels.get(value) if value is not None else None
|
|
|
|
|
|
class TypeTiers(IntEnum):
|
|
CLIENT = 0
|
|
FOURNISSEUR = 1
|
|
SALARIE = 2
|
|
AUTRE = 3
|
|
|
|
@classmethod
|
|
def get_label(cls, value: Optional[int]) -> Optional[str]:
|
|
labels = {0: "Client", 1: "Fournisseur", 2: "Salarié", 3: "Autre"}
|
|
return labels.get(value) if value is not None else None
|
|
|
|
|
|
class TypeEmplacement(IntEnum):
|
|
NORMAL = 0
|
|
QUARANTAINE = 1
|
|
REBUT = 2
|
|
|
|
@classmethod
|
|
def get_label(cls, value: Optional[int]) -> Optional[str]:
|
|
labels = {0: "Normal", 1: "Quarantaine", 2: "Rebut"}
|
|
return labels.get(value) if value is not None else None
|
|
|
|
|
|
def normalize_enum_to_string(value, default="0") -> Optional[str]:
|
|
if value is None:
|
|
return None
|
|
if value == 0:
|
|
return None
|
|
return str(value)
|
|
|
|
|
|
def normalize_enum_to_int(value, default=0) -> Optional[int]:
|
|
if value is None:
|
|
return None
|
|
try:
|
|
return int(value)
|
|
except (ValueError, TypeError):
|
|
return default
|
|
|
|
|
|
def normalize_string_field(value) -> Optional[str]:
|
|
if value is None:
|
|
return None
|
|
if isinstance(value, int):
|
|
if value == 0:
|
|
return None
|
|
return str(value)
|
|
if isinstance(value, str):
|
|
stripped = value.strip()
|
|
if stripped in ("", "0"):
|
|
return None
|
|
return stripped
|
|
return str(value)
|