(feat): Added method and route to gather actual society informations
This commit is contained in:
parent
3fd3b7c45a
commit
2b15e7b3e2
2 changed files with 140 additions and 1 deletions
21
main.py
21
main.py
|
|
@ -91,7 +91,11 @@ def startup():
|
||||||
raise
|
raise
|
||||||
|
|
||||||
sage = SageConnector(
|
sage = SageConnector(
|
||||||
settings.chemin_base, settings.sql_server_name, settings.sql_server_database, settings.utilisateur, settings.mot_de_passe
|
settings.chemin_base,
|
||||||
|
settings.sql_server_name,
|
||||||
|
settings.sql_server_database,
|
||||||
|
settings.utilisateur,
|
||||||
|
settings.mot_de_passe,
|
||||||
)
|
)
|
||||||
|
|
||||||
if not sage.connecter():
|
if not sage.connecter():
|
||||||
|
|
@ -1412,6 +1416,21 @@ def collaborateur_update(req: CollaborateurUpdateRequest):
|
||||||
raise HTTPException(500, str(e))
|
raise HTTPException(500, str(e))
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/sage/societe/info", dependencies=[Depends(verify_token)])
|
||||||
|
def get_societe_info():
|
||||||
|
"""Retourne les informations de la société actuelle depuis P_DOSSIER"""
|
||||||
|
try:
|
||||||
|
societe_info = sage.lire_informations_societe()
|
||||||
|
if not societe_info:
|
||||||
|
raise HTTPException(404, "Informations société introuvables dans P_DOSSIER")
|
||||||
|
return {"success": True, "data": societe_info}
|
||||||
|
except HTTPException:
|
||||||
|
raise
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Erreur lecture info société: {e}")
|
||||||
|
raise HTTPException(500, str(e))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
uvicorn.run(
|
uvicorn.run(
|
||||||
"main:app",
|
"main:app",
|
||||||
|
|
|
||||||
|
|
@ -7792,3 +7792,123 @@ class SageConnector:
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"❌ Erreur modification collaborateur: {e}", exc_info=True)
|
logger.error(f"❌ Erreur modification collaborateur: {e}", exc_info=True)
|
||||||
raise RuntimeError(f"Échec modification collaborateur: {str(e)}")
|
raise RuntimeError(f"Échec modification collaborateur: {str(e)}")
|
||||||
|
|
||||||
|
def lire_informations_societe(self):
|
||||||
|
try:
|
||||||
|
with self._get_sql_connection() as conn:
|
||||||
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
# Requête pour récupérer toutes les colonnes importantes
|
||||||
|
query = """
|
||||||
|
SELECT
|
||||||
|
D_RaisonSoc, D_NumDoss, D_Siret, D_Ape, D_Identifiant,
|
||||||
|
D_Adresse, D_Complement, D_CodePostal, D_Ville,
|
||||||
|
D_CodeRegion, D_Pays,
|
||||||
|
D_Telephone, D_Telecopie, D_EMail, D_EMailSoc, D_Site,
|
||||||
|
D_Capital, D_FormeJuridique,
|
||||||
|
D_DebutExo01, D_FinExo01,
|
||||||
|
D_DebutExo02, D_FinExo02,
|
||||||
|
D_DebutExo03, D_FinExo03,
|
||||||
|
D_DebutExo04, D_FinExo04,
|
||||||
|
D_DebutExo05, D_FinExo05,
|
||||||
|
N_DeviseCompte, N_DeviseEquival,
|
||||||
|
D_LgCg, D_LgAn,
|
||||||
|
D_RegimeFEC,
|
||||||
|
BM_Intitule,
|
||||||
|
cbMarq
|
||||||
|
FROM P_DOSSIER
|
||||||
|
"""
|
||||||
|
|
||||||
|
cursor.execute(query)
|
||||||
|
row = cursor.fetchone()
|
||||||
|
|
||||||
|
if not row:
|
||||||
|
logger.warning("Aucune donnée dans P_DOSSIER")
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Mapping des données
|
||||||
|
societe = {
|
||||||
|
# Identification
|
||||||
|
"raison_sociale": row.D_RaisonSoc.strip()
|
||||||
|
if row.D_RaisonSoc
|
||||||
|
else "",
|
||||||
|
"numero_dossier": row.D_NumDoss.strip() if row.D_NumDoss else "",
|
||||||
|
"siret": row.D_Siret.strip() if row.D_Siret else "",
|
||||||
|
"code_ape": row.D_Ape.strip() if row.D_Ape else "",
|
||||||
|
"numero_tva": row.D_Identifiant.strip()
|
||||||
|
if row.D_Identifiant
|
||||||
|
else "",
|
||||||
|
# Adresse
|
||||||
|
"adresse": row.D_Adresse.strip() if row.D_Adresse else "",
|
||||||
|
"complement_adresse": row.D_Complement.strip()
|
||||||
|
if row.D_Complement
|
||||||
|
else "",
|
||||||
|
"code_postal": row.D_CodePostal.strip() if row.D_CodePostal else "",
|
||||||
|
"ville": row.D_Ville.strip() if row.D_Ville else "",
|
||||||
|
"code_region": row.D_CodeRegion.strip() if row.D_CodeRegion else "",
|
||||||
|
"pays": row.D_Pays.strip() if row.D_Pays else "",
|
||||||
|
# Contacts
|
||||||
|
"telephone": row.D_Telephone.strip() if row.D_Telephone else "",
|
||||||
|
"telecopie": row.D_Telecopie.strip() if row.D_Telecopie else "",
|
||||||
|
"email": row.D_EMail.strip() if row.D_EMail else "",
|
||||||
|
"email_societe": row.D_EMailSoc.strip() if row.D_EMailSoc else "",
|
||||||
|
"site_web": row.D_Site.strip() if row.D_Site else "",
|
||||||
|
# Informations juridiques
|
||||||
|
"capital": float(row.D_Capital) if row.D_Capital else 0.0,
|
||||||
|
"forme_juridique": row.D_FormeJuridique.strip()
|
||||||
|
if row.D_FormeJuridique
|
||||||
|
else "",
|
||||||
|
# Exercices comptables (filtrer les exercices vides)
|
||||||
|
"exercices": [],
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ajouter uniquement les exercices valides (année > 1753)
|
||||||
|
exercices_potentiels = [
|
||||||
|
(1, row.D_DebutExo01, row.D_FinExo01),
|
||||||
|
(2, row.D_DebutExo02, row.D_FinExo02),
|
||||||
|
(3, row.D_DebutExo03, row.D_FinExo03),
|
||||||
|
(4, row.D_DebutExo04, row.D_FinExo04),
|
||||||
|
(5, row.D_DebutExo05, row.D_FinExo05),
|
||||||
|
]
|
||||||
|
|
||||||
|
for numero, debut, fin in exercices_potentiels:
|
||||||
|
if debut and debut.year > 1753:
|
||||||
|
societe["exercices"].append(
|
||||||
|
{
|
||||||
|
"numero": numero,
|
||||||
|
"debut": debut.isoformat(),
|
||||||
|
"fin": fin.isoformat()
|
||||||
|
if fin and fin.year > 1753
|
||||||
|
else None,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Compléter les champs manquants
|
||||||
|
societe.update(
|
||||||
|
{
|
||||||
|
# Configuration
|
||||||
|
"devise_compte": row.N_DeviseCompte
|
||||||
|
if row.N_DeviseCompte
|
||||||
|
else 0,
|
||||||
|
"devise_equivalent": row.N_DeviseEquival
|
||||||
|
if row.N_DeviseEquival
|
||||||
|
else 0,
|
||||||
|
"longueur_compte_general": row.D_LgCg if row.D_LgCg else 0,
|
||||||
|
"longueur_compte_analytique": row.D_LgAn if row.D_LgAn else 0,
|
||||||
|
"regime_fec": row.D_RegimeFEC if row.D_RegimeFEC else 0,
|
||||||
|
# Autres
|
||||||
|
"base_modele": row.BM_Intitule.strip()
|
||||||
|
if row.BM_Intitule
|
||||||
|
else "",
|
||||||
|
"marqueur": row.cbMarq if row.cbMarq else 0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
logger.info(
|
||||||
|
f"✓ SQL: Informations société '{societe['raison_sociale']}' lues"
|
||||||
|
)
|
||||||
|
return societe
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"✗ Erreur SQL lecture P_DOSSIER: {e}", exc_info=True)
|
||||||
|
raise RuntimeError(f"Erreur lecture informations société: {str(e)}")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue