Update fournisseur
This commit is contained in:
parent
ba79354386
commit
a5dd81ddfb
2 changed files with 84 additions and 0 deletions
67
api.py
67
api.py
|
|
@ -244,6 +244,28 @@ class FournisseurCreateAPIRequest(BaseModel):
|
|||
}
|
||||
}
|
||||
|
||||
class FournisseurUpdateRequest(BaseModel):
|
||||
"""Modèle pour modification d'un fournisseur existant"""
|
||||
intitule: Optional[str] = Field(None, min_length=1, max_length=69)
|
||||
adresse: Optional[str] = Field(None, max_length=35)
|
||||
code_postal: Optional[str] = Field(None, max_length=9)
|
||||
ville: Optional[str] = Field(None, max_length=35)
|
||||
pays: Optional[str] = Field(None, max_length=35)
|
||||
email: Optional[EmailStr] = None
|
||||
telephone: Optional[str] = Field(None, max_length=21)
|
||||
siret: Optional[str] = Field(None, max_length=14)
|
||||
tva_intra: Optional[str] = Field(None, max_length=25)
|
||||
|
||||
class Config:
|
||||
json_schema_extra = {
|
||||
"example": {
|
||||
"intitule": "ACME SUPPLIES MODIFIÉ",
|
||||
"email": "nouveau@acme.fr",
|
||||
"telephone": "0198765432"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# =====================================================
|
||||
# SERVICES EXTERNES (Universign)
|
||||
# =====================================================
|
||||
|
|
@ -1896,6 +1918,51 @@ async def ajouter_fournisseur(
|
|||
logger.error(f"❌ Erreur technique création fournisseur: {e}")
|
||||
raise HTTPException(500, str(e))
|
||||
|
||||
@app.put("/fournisseurs/{code}", tags=["Fournisseurs"])
|
||||
async def modifier_fournisseur(
|
||||
code: str,
|
||||
fournisseur_update: FournisseurUpdateRequest,
|
||||
session: AsyncSession = Depends(get_session)
|
||||
):
|
||||
"""
|
||||
✏️ Modification d'un fournisseur existant
|
||||
|
||||
Args:
|
||||
code: Code du fournisseur à modifier
|
||||
fournisseur_update: Champs à mettre à jour (seuls les champs fournis seront modifiés)
|
||||
|
||||
Returns:
|
||||
Fournisseur modifié avec ses nouvelles valeurs
|
||||
|
||||
Example:
|
||||
PUT /fournisseurs/DUPONT
|
||||
{
|
||||
"email": "nouveau@email.fr",
|
||||
"telephone": "0198765432"
|
||||
}
|
||||
"""
|
||||
try:
|
||||
# Appel à la gateway Windows
|
||||
resultat = sage_client.modifier_fournisseur(code, fournisseur_update.dict(exclude_none=True))
|
||||
|
||||
logger.info(f"✅ Fournisseur {code} modifié avec succès")
|
||||
|
||||
return {
|
||||
"success": True,
|
||||
"message": f"Fournisseur {code} modifié avec succès",
|
||||
"fournisseur": resultat
|
||||
}
|
||||
|
||||
except ValueError as e:
|
||||
# Erreur métier (fournisseur introuvable, etc.)
|
||||
logger.warning(f"Erreur métier modification fournisseur {code}: {e}")
|
||||
raise HTTPException(404, str(e))
|
||||
except Exception as e:
|
||||
# Erreur technique
|
||||
logger.error(f"Erreur technique modification fournisseur {code}: {e}")
|
||||
raise HTTPException(500, str(e))
|
||||
|
||||
|
||||
@app.get("/fournisseurs/{code}", tags=["Fournisseurs"])
|
||||
async def lire_fournisseur(code: str):
|
||||
"""📄 Lecture d'un fournisseur par code"""
|
||||
|
|
|
|||
|
|
@ -287,6 +287,23 @@ class SageGatewayClient:
|
|||
"""
|
||||
return self._post("/sage/fournisseurs/create", fournisseur_data).get("data", {})
|
||||
|
||||
def modifier_fournisseur(self, code: str, fournisseur_data: Dict) -> Dict:
|
||||
"""
|
||||
✏️ Modification d'un fournisseur existant
|
||||
|
||||
Args:
|
||||
code: Code du fournisseur à modifier
|
||||
fournisseur_data: Dictionnaire contenant les champs à modifier
|
||||
(seuls les champs présents seront mis à jour)
|
||||
|
||||
Returns:
|
||||
Fournisseur modifié
|
||||
"""
|
||||
return self._post("/sage/fournisseurs/update", {
|
||||
"code": code,
|
||||
"fournisseur_data": fournisseur_data
|
||||
}).get("data", {})
|
||||
|
||||
# =====================================================
|
||||
# AVOIRS
|
||||
# =====================================================
|
||||
|
|
|
|||
Loading…
Reference in a new issue