forked from seb_vallee/BillManager
45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
from datetime import date
|
|
from sqlalchemy.orm import Session
|
|
|
|
|
|
def generer_numero_facture(db: Session) -> str:
|
|
from models import Facture
|
|
annee = date.today().year
|
|
# Cherche le dernier numéro de l'année en cours
|
|
factures = db.query(Facture).filter(
|
|
Facture.numero.like(f"{annee}-%")
|
|
).all()
|
|
if not factures:
|
|
seq = 1
|
|
else:
|
|
sequences = []
|
|
for f in factures:
|
|
try:
|
|
sequences.append(int(f.numero.split("-")[-1]))
|
|
except (ValueError, IndexError):
|
|
pass
|
|
seq = max(sequences) + 1 if sequences else 1
|
|
return f"{annee}-{seq:04d}"
|
|
|
|
|
|
def generer_numero_devis(db: Session) -> str:
|
|
from models import Devis
|
|
from config import settings
|
|
annee = date.today().year
|
|
prefix = settings.devis_prefix
|
|
pattern = f"{prefix}-{annee}-%"
|
|
devis = db.query(Devis).filter(
|
|
Devis.numero.like(pattern)
|
|
).all()
|
|
if not devis:
|
|
seq = 1
|
|
else:
|
|
sequences = []
|
|
for d in devis:
|
|
try:
|
|
sequences.append(int(d.numero.split("-")[-1]))
|
|
except (ValueError, IndexError):
|
|
pass
|
|
seq = max(sequences) + 1 if sequences else 1
|
|
return f"{prefix}-{annee}-{seq:04d}"
|