import logging logger = logging.getLogger(__name__) def _extraire_article(article_obj): try: data = { "reference": getattr(article_obj, "AR_Ref", "").strip(), "designation": getattr(article_obj, "AR_Design", "").strip(), } data["code_ean"] = "" data["code_barre"] = "" try: code_barre = getattr(article_obj, "AR_CodeBarre", "").strip() if code_barre: data["code_ean"] = code_barre data["code_barre"] = code_barre if not data["code_ean"]: code_barre1 = getattr(article_obj, "AR_CodeBarre1", "").strip() if code_barre1: data["code_ean"] = code_barre1 data["code_barre"] = code_barre1 except: pass try: data["prix_vente"] = float(getattr(article_obj, "AR_PrixVen", 0.0)) except: data["prix_vente"] = 0.0 try: data["prix_achat"] = float(getattr(article_obj, "AR_PrixAch", 0.0)) except: data["prix_achat"] = 0.0 try: data["prix_revient"] = float( getattr(article_obj, "AR_PrixRevient", 0.0) ) except: data["prix_revient"] = 0.0 try: data["stock_reel"] = float(getattr(article_obj, "AR_Stock", 0.0)) except: data["stock_reel"] = 0.0 try: data["stock_mini"] = float(getattr(article_obj, "AR_StockMini", 0.0)) except: data["stock_mini"] = 0.0 try: data["stock_maxi"] = float(getattr(article_obj, "AR_StockMaxi", 0.0)) except: data["stock_maxi"] = 0.0 try: data["stock_reserve"] = float(getattr(article_obj, "AR_QteCom", 0.0)) except: data["stock_reserve"] = 0.0 try: data["stock_commande"] = float( getattr(article_obj, "AR_QteComFou", 0.0) ) except: data["stock_commande"] = 0.0 try: data["stock_disponible"] = data["stock_reel"] - data["stock_reserve"] except: data["stock_disponible"] = data["stock_reel"] try: commentaire = getattr(article_obj, "AR_Commentaire", "").strip() data["description"] = commentaire except: data["description"] = "" try: design2 = getattr(article_obj, "AR_Design2", "").strip() data["designation_complementaire"] = design2 except: data["designation_complementaire"] = "" try: type_art = getattr(article_obj, "AR_Type", 0) data["type_article"] = type_art data["type_article_libelle"] = { 0: "Article", 1: "Prestation", 2: "Divers", }.get(type_art, "Inconnu") except: data["type_article"] = 0 data["type_article_libelle"] = "Article" try: famille_code = getattr(article_obj, "FA_CodeFamille", "").strip() data["famille_code"] = famille_code if famille_code: try: famille_obj = getattr(article_obj, "Famille", None) if famille_obj: famille_obj.Read() data["famille_libelle"] = getattr( famille_obj, "FA_Intitule", "" ).strip() else: data["famille_libelle"] = "" except: data["famille_libelle"] = "" else: data["famille_libelle"] = "" except: data["famille_code"] = "" data["famille_libelle"] = "" try: fournisseur_code = getattr(article_obj, "CT_Num", "").strip() data["fournisseur_principal"] = fournisseur_code if fournisseur_code: try: fourn_obj = getattr(article_obj, "Fournisseur", None) if fourn_obj: fourn_obj.Read() data["fournisseur_nom"] = getattr( fourn_obj, "CT_Intitule", "" ).strip() else: data["fournisseur_nom"] = "" except: data["fournisseur_nom"] = "" else: data["fournisseur_nom"] = "" except: data["fournisseur_principal"] = "" data["fournisseur_nom"] = "" try: data["unite_vente"] = getattr(article_obj, "AR_UniteVen", "").strip() except: data["unite_vente"] = "" try: data["unite_achat"] = getattr(article_obj, "AR_UniteAch", "").strip() except: data["unite_achat"] = "" try: data["poids"] = float(getattr(article_obj, "AR_Poids", 0.0)) except: data["poids"] = 0.0 try: data["volume"] = float(getattr(article_obj, "AR_Volume", 0.0)) except: data["volume"] = 0.0 try: sommeil = getattr(article_obj, "AR_Sommeil", 0) data["est_actif"] = sommeil == 0 data["en_sommeil"] = sommeil == 1 except: data["est_actif"] = True data["en_sommeil"] = False try: tva_code = getattr(article_obj, "TA_Code", "").strip() data["tva_code"] = tva_code try: tva_obj = getattr(article_obj, "Taxe1", None) if tva_obj: tva_obj.Read() data["tva_taux"] = float(getattr(tva_obj, "TA_Taux", 20.0)) else: data["tva_taux"] = 20.0 except: data["tva_taux"] = 20.0 except: data["tva_code"] = "" data["tva_taux"] = 20.0 try: date_creation = getattr(article_obj, "AR_DateCreate", None) data["date_creation"] = str(date_creation) if date_creation else "" except: data["date_creation"] = "" try: date_modif = getattr(article_obj, "AR_DateModif", None) data["date_modification"] = str(date_modif) if date_modif else "" except: data["date_modification"] = "" return data except Exception as e: logger.error(f" Erreur extraction article: {e}", exc_info=True) return { "reference": getattr(article_obj, "AR_Ref", "").strip(), "designation": getattr(article_obj, "AR_Design", "").strip(), "prix_vente": 0.0, "stock_reel": 0.0, "code_ean": "", "description": "", "designation_complementaire": "", "prix_achat": 0.0, "prix_revient": 0.0, "stock_mini": 0.0, "stock_maxi": 0.0, "stock_reserve": 0.0, "stock_commande": 0.0, "stock_disponible": 0.0, "code_barre": "", "type_article": 0, "type_article_libelle": "Article", "famille_code": "", "famille_libelle": "", "fournisseur_principal": "", "fournisseur_nom": "", "unite_vente": "", "unite_achat": "", "poids": 0.0, "volume": 0.0, "est_actif": True, "en_sommeil": False, "tva_code": "", "tva_taux": 20.0, "date_creation": "", "date_modification": "", } __all__ = [ "_extraire_article", ]