Added create client logics

This commit is contained in:
Fanilo-Nantenaina 2025-12-05 19:11:36 +03:00
parent 77dcb21e4a
commit 2f9b2fc1a9
2 changed files with 45 additions and 1 deletions

38
api.py
View file

@ -148,7 +148,19 @@ class BaremeRemiseResponse(BaseModel):
message: str
# À ajouter dans api.py après les imports et avant les endpoints existants
class ClientCreateAPIRequest(BaseModel):
intitule: str = Field(..., min_length=1, description="Raison sociale ou Nom")
compte_collectif: str = Field("411000", description="Compte Comptable (ex: 411000)")
num: Optional[str] = Field(None, description="Code client souhaité (optionnel)")
adresse: Optional[str] = None
code_postal: Optional[str] = None
ville: Optional[str] = None
pays: Optional[str] = None
email: Optional[EmailStr] = None
telephone: Optional[str] = None
siret: Optional[str] = None
tva_intra: Optional[str] = None
from pydantic import BaseModel
from typing import List, Optional
@ -356,6 +368,30 @@ async def rechercher_clients(query: Optional[str] = Query(None)):
logger.error(f"Erreur recherche clients: {e}")
raise HTTPException(500, str(e))
@app.post("/clients", status_code=201, tags=["US-A8"])
async def ajouter_client(
client: ClientCreateAPIRequest,
session: AsyncSession = Depends(get_session)
):
"""
Création d'un nouveau client dans Sage 100c
"""
try:
nouveau_client = sage_client.creer_client(client.dict())
logger.info(f"✅ Client créé via API: {nouveau_client.get('numero')}")
return {
"success": True,
"message": "Client créé avec succès",
"client": nouveau_client
}
except Exception as e:
logger.error(f"Erreur lors de la création du client: {e}")
# On renvoie une 400 si c'est une erreur métier (ex: doublon), sinon 500
status = 400 if "existe déjà" in str(e) else 500
raise HTTPException(status, str(e))
@app.get("/articles", response_model=List[ArticleResponse], tags=["US-A1"])
async def rechercher_articles(query: Optional[str] = Query(None)):

View file

@ -332,6 +332,14 @@ class SageGatewayClient:
except:
return {"status": "down"}
def creer_client(self, client_data: Dict) -> Dict:
"""
Envoie la requête de création de client à la gateway Windows.
:param client_data: Dict contenant intitule, compte_collectif, etc.
"""
# On appelle la route définie dans main.py
return self._post("/sage/clients/create", client_data).get("data", {})
# Instance globale
sage_client = SageGatewayClient()