From cc56821c7031edfe12cb28a927cee22a79e45222 Mon Sep 17 00:00:00 2001 From: Fanilo-Nantenaina Date: Fri, 5 Dec 2025 14:44:36 +0300 Subject: [PATCH] feat(sage_connector): enhance document reading with client and article details --- sage_connector.py | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/sage_connector.py b/sage_connector.py index 433df7b..76d2452 100644 --- a/sage_connector.py +++ b/sage_connector.py @@ -963,10 +963,7 @@ class SageConnector: return None def lire_document(self, numero, type_doc): - """Lecture générique document (pour PDF)""" - if type_doc == 0: - return self.lire_devis(numero) - + """Lecture générique document (pour PDF et lecture commandes/factures)""" try: with self._com_context(), self._lock_com: factory = self.cial.FactoryDocumentVente @@ -978,6 +975,19 @@ class SageConnector: doc = win32com.client.CastTo(persist, "IBODocumentVente3") doc.Read() + # ✅ Charger client via .Client + client_code = "" + client_intitule = "" + + try: + client_obj = getattr(doc, "Client", None) + if client_obj: + client_obj.Read() + client_code = getattr(client_obj, "CT_Num", "").strip() + client_intitule = getattr(client_obj, "CT_Intitule", "").strip() + except Exception as e: + logger.debug(f"Erreur chargement client: {e}") + # Lire lignes lignes = [] try: @@ -995,8 +1005,21 @@ class SageConnector: ligne = win32com.client.CastTo(ligne_p, "IBODocumentLigne3") ligne.Read() + # ✅ Charger article via .Article + article_ref = "" + try: + article_ref = getattr(ligne, "AR_Ref", "").strip() + if not article_ref: + article_obj = getattr(ligne, "Article", None) + if article_obj: + article_obj.Read() + article_ref = getattr(article_obj, "AR_Ref", "").strip() + except: + pass + lignes.append( { + "article": article_ref, # ✅ Ajout référence article "designation": getattr(ligne, "DL_Design", ""), "quantite": getattr(ligne, "DL_Qte", 0.0), "prix_unitaire": getattr(ligne, "DL_PrixUnitaire", 0.0), @@ -1010,15 +1033,17 @@ class SageConnector: return { "numero": getattr(doc, "DO_Piece", ""), + "reference": getattr(doc, "DO_Ref", ""), # ✅ Ajout référence "date": str(getattr(doc, "DO_Date", "")), - "client_code": getattr(doc, "CT_Num", ""), - "client_intitule": getattr(doc, "CT_Intitule", ""), + "client_code": client_code, + "client_intitule": client_intitule, "total_ht": getattr(doc, "DO_TotalHT", 0.0), "total_ttc": getattr(doc, "DO_TotalTTC", 0.0), + "statut": getattr(doc, "DO_Statut", 0), # ✅ Ajout statut "lignes": lignes, } except Exception as e: - logger.error(f" Erreur lecture document: {e}") + logger.error(f"❌ Erreur lecture document: {e}") return None # =========================================================================