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)
|
# SERVICES EXTERNES (Universign)
|
||||||
# =====================================================
|
# =====================================================
|
||||||
|
|
@ -1896,6 +1918,51 @@ async def ajouter_fournisseur(
|
||||||
logger.error(f"❌ Erreur technique création fournisseur: {e}")
|
logger.error(f"❌ Erreur technique création fournisseur: {e}")
|
||||||
raise HTTPException(500, str(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"])
|
@app.get("/fournisseurs/{code}", tags=["Fournisseurs"])
|
||||||
async def lire_fournisseur(code: str):
|
async def lire_fournisseur(code: str):
|
||||||
"""📄 Lecture d'un fournisseur par code"""
|
"""📄 Lecture d'un fournisseur par code"""
|
||||||
|
|
|
||||||
|
|
@ -287,6 +287,23 @@ class SageGatewayClient:
|
||||||
"""
|
"""
|
||||||
return self._post("/sage/fournisseurs/create", fournisseur_data).get("data", {})
|
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
|
# AVOIRS
|
||||||
# =====================================================
|
# =====================================================
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue