Removed non-ASCII characters
This commit is contained in:
parent
31dec46226
commit
3dd863accf
5 changed files with 137 additions and 137 deletions
12
main.py
12
main.py
|
|
@ -86,7 +86,7 @@ sage: Optional[SageConnector] = None
|
|||
def startup():
|
||||
global sage
|
||||
|
||||
logger.info("🚀 Démarrage Sage Gateway Windows...")
|
||||
logger.info(" Démarrage Sage Gateway Windows...")
|
||||
|
||||
try:
|
||||
validate_settings()
|
||||
|
|
@ -113,7 +113,7 @@ def startup():
|
|||
def shutdown():
|
||||
if sage:
|
||||
sage.deconnecter()
|
||||
logger.info("👋 Sage Gateway arrêté")
|
||||
logger.info(" Sage Gateway arrêté")
|
||||
|
||||
|
||||
@app.get("/health")
|
||||
|
|
@ -323,7 +323,7 @@ def transformer_document(
|
|||
):
|
||||
try:
|
||||
logger.info(
|
||||
f"🔄 Transformation demandée: {numero_source} "
|
||||
f" Transformation demandée: {numero_source} "
|
||||
f"(type {type_source}) → type {type_cible}"
|
||||
)
|
||||
|
||||
|
|
@ -796,7 +796,7 @@ def creer_avoir_endpoint(req: AvoirCreate):
|
|||
@app.post("/sage/avoirs/update", dependencies=[Depends(verify_token)])
|
||||
def modifier_avoir_endpoint(req: AvoirUpdate):
|
||||
"""
|
||||
✏️ Modification d'un avoir dans Sage
|
||||
️ Modification d'un avoir dans Sage
|
||||
"""
|
||||
try:
|
||||
resultat = sage.modifier_avoir(req.numero, req.avoir_data)
|
||||
|
|
@ -1182,7 +1182,7 @@ def lister_depots():
|
|||
def creer_entree_stock(req: EntreeStock):
|
||||
try:
|
||||
logger.info(
|
||||
f"📦 [ENTREE STOCK] Création bon d'entrée : {len(req.lignes)} ligne(s)"
|
||||
f" [ENTREE STOCK] Création bon d'entrée : {len(req.lignes)} ligne(s)"
|
||||
)
|
||||
|
||||
entree_data = {
|
||||
|
|
@ -1212,7 +1212,7 @@ def creer_entree_stock(req: EntreeStock):
|
|||
def creer_sortie_stock(req: SortieStock):
|
||||
try:
|
||||
logger.info(
|
||||
f"📤 [SORTIE STOCK] Création bon de sortie : {len(req.lignes)} ligne(s)"
|
||||
f" [SORTIE STOCK] Création bon de sortie : {len(req.lignes)} ligne(s)"
|
||||
)
|
||||
|
||||
sortie_data = {
|
||||
|
|
|
|||
|
|
@ -262,12 +262,12 @@ class SageConnector:
|
|||
fournisseurs.append(fournisseur)
|
||||
|
||||
logger.info(
|
||||
f"✓ SQL: {len(fournisseurs)} fournisseurs avec {len(fournisseur)} champs"
|
||||
f" SQL: {len(fournisseurs)} fournisseurs avec {len(fournisseur)} champs"
|
||||
)
|
||||
return fournisseurs
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"✗ Erreur SQL fournisseurs: {e}")
|
||||
logger.error(f" Erreur SQL fournisseurs: {e}")
|
||||
raise RuntimeError(f"Erreur lecture fournisseurs: {str(e)}")
|
||||
|
||||
def lire_fournisseur(self, code_fournisseur):
|
||||
|
|
@ -293,12 +293,12 @@ class SageConnector:
|
|||
fournisseur["contacts"] = _get_contacts(row.CT_Num, conn)
|
||||
|
||||
logger.info(
|
||||
f"✓ SQL: Fournisseur {code_fournisseur} avec {len(fournisseur)} champs"
|
||||
f" SQL: Fournisseur {code_fournisseur} avec {len(fournisseur)} champs"
|
||||
)
|
||||
return fournisseur
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"✗ Erreur SQL fournisseur {code_fournisseur}: {e}")
|
||||
logger.error(f" Erreur SQL fournisseur {code_fournisseur}: {e}")
|
||||
return None
|
||||
|
||||
def creer_fournisseur(self, fournisseur_data: Dict) -> Dict:
|
||||
|
|
@ -775,11 +775,11 @@ class SageConnector:
|
|||
client["contacts"] = _get_contacts(row.CT_Num, conn)
|
||||
clients.append(client)
|
||||
|
||||
logger.info(f"✓ SQL: {len(clients)} clients avec {len(client)} champs")
|
||||
logger.info(f" SQL: {len(clients)} clients avec {len(client)} champs")
|
||||
return clients
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"✗ Erreur SQL clients: {e}")
|
||||
logger.error(f" Erreur SQL clients: {e}")
|
||||
raise RuntimeError(f"Erreur lecture clients: {str(e)}")
|
||||
|
||||
def lire_client(self, code_client):
|
||||
|
|
@ -804,11 +804,11 @@ class SageConnector:
|
|||
client = tiers_to_dict(row)
|
||||
client["contacts"] = _get_contacts(row.CT_Num, conn)
|
||||
|
||||
logger.info(f"✓ SQL: Client {code_client} avec {len(client)} champs")
|
||||
logger.info(f" SQL: Client {code_client} avec {len(client)} champs")
|
||||
return client
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"✗ Erreur SQL client {code_client}: {e}")
|
||||
logger.error(f" Erreur SQL client {code_client}: {e}")
|
||||
return None
|
||||
|
||||
def lister_tous_articles(self, filtre=""):
|
||||
|
|
@ -1147,11 +1147,11 @@ class SageConnector:
|
|||
articles = enrichir_prix_gammes(articles, cursor)
|
||||
articles = enrichir_conditionnements(articles, cursor)
|
||||
|
||||
logger.info(f"✓ Article {reference} lu avec tous les enrichissements")
|
||||
logger.info(f" Article {reference} lu avec tous les enrichissements")
|
||||
return articles[0]
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"✗ Erreur SQL article {reference}: {e}", exc_info=True)
|
||||
logger.error(f" Erreur SQL article {reference}: {e}", exc_info=True)
|
||||
return None
|
||||
|
||||
def obtenir_contact(self, numero: str, contact_numero: int) -> Optional[Dict]:
|
||||
|
|
@ -1440,7 +1440,7 @@ class SageConnector:
|
|||
if nb_lignes_source == 0:
|
||||
raise ValueError(f"Document {numero_source} vide (0 lignes)")
|
||||
|
||||
logger.info("[TRANSFORM] 🔧 Création du transformer...")
|
||||
logger.info("[TRANSFORM] Création du transformer...")
|
||||
|
||||
transformation = getattr(self.cial, "Transformation", None)
|
||||
if not transformation:
|
||||
|
|
@ -1874,7 +1874,7 @@ class SageConnector:
|
|||
persist_tiers = factory_client.ReadNumero(numero_client)
|
||||
if persist_tiers:
|
||||
type_tiers = "Client"
|
||||
logger.info(" ✓ Trouvé comme Client")
|
||||
logger.info(" Trouvé comme Client")
|
||||
except Exception as e:
|
||||
logger.debug(f" Pas trouvé comme Client: {e}")
|
||||
|
||||
|
|
@ -1884,7 +1884,7 @@ class SageConnector:
|
|||
persist_tiers = factory_fournisseur.ReadNumero(numero_client)
|
||||
if persist_tiers:
|
||||
type_tiers = "Fournisseur"
|
||||
logger.info(" ✓ Trouvé comme Fournisseur")
|
||||
logger.info(" Trouvé comme Fournisseur")
|
||||
except Exception as e:
|
||||
logger.debug(f" Pas trouvé comme Fournisseur: {e}")
|
||||
|
||||
|
|
@ -2082,7 +2082,7 @@ class SageConnector:
|
|||
|
||||
if not contact_no:
|
||||
logger.info(
|
||||
" 🔍 CT_No non disponible via COM - Recherche en base..."
|
||||
" CT_No non disponible via COM - Recherche en base..."
|
||||
)
|
||||
import time
|
||||
|
||||
|
|
@ -2113,7 +2113,7 @@ class SageConnector:
|
|||
or "already exists" in erreur_com.lower()
|
||||
):
|
||||
logger.info(
|
||||
" 🔍 Erreur 'existe déjà' détectée - Vérification en base..."
|
||||
" Erreur 'existe déjà' détectée - Vérification en base..."
|
||||
)
|
||||
|
||||
import time
|
||||
|
|
@ -2342,7 +2342,7 @@ class SageConnector:
|
|||
persist_tiers = factory_client.ReadNumero(numero)
|
||||
if persist_tiers:
|
||||
type_tiers = "Client"
|
||||
logger.info(" ✓ Trouvé comme Client")
|
||||
logger.info(" Trouvé comme Client")
|
||||
except Exception as e:
|
||||
logger.debug(f" Pas trouvé comme Client: {e}")
|
||||
|
||||
|
|
@ -2352,7 +2352,7 @@ class SageConnector:
|
|||
persist_tiers = factory_fournisseur.ReadNumero(numero)
|
||||
if persist_tiers:
|
||||
type_tiers = "Fournisseur"
|
||||
logger.info(" ✓ Trouvé comme Fournisseur")
|
||||
logger.info(" Trouvé comme Fournisseur")
|
||||
except Exception as e:
|
||||
logger.debug(f" Pas trouvé comme Fournisseur: {e}")
|
||||
|
||||
|
|
@ -4720,7 +4720,7 @@ class SageConnector:
|
|||
article.AR_PrixVen = float(article_data["prix_vente"])
|
||||
champs_appliques.append("prix_vente")
|
||||
logger.info(
|
||||
f" ✓ prix_vente = {article_data['prix_vente']}"
|
||||
f" prix_vente = {article_data['prix_vente']}"
|
||||
)
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"prix_vente: {e}")
|
||||
|
|
@ -4730,7 +4730,7 @@ class SageConnector:
|
|||
article.AR_PrixAchat = float(article_data["prix_achat"])
|
||||
champs_appliques.append("prix_achat")
|
||||
logger.info(
|
||||
f" ✓ prix_achat = {article_data['prix_achat']}"
|
||||
f" prix_achat = {article_data['prix_achat']}"
|
||||
)
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"prix_achat: {e}")
|
||||
|
|
@ -4739,7 +4739,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_Coef = float(article_data["coef"])
|
||||
champs_appliques.append("coef")
|
||||
logger.info(f" ✓ coef = {article_data['coef']}")
|
||||
logger.info(f" coef = {article_data['coef']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"coef: {e}")
|
||||
|
||||
|
|
@ -4747,7 +4747,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_CodeBarre = str(article_data["code_ean"])
|
||||
champs_appliques.append("code_ean")
|
||||
logger.info(f" ✓ code_ean = {article_data['code_ean']}")
|
||||
logger.info(f" code_ean = {article_data['code_ean']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"code_ean: {e}")
|
||||
|
||||
|
|
@ -4755,7 +4755,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_Langue1 = str(article_data["description"])[:255]
|
||||
champs_appliques.append("description")
|
||||
logger.info(" ✓ description définie (AR_Langue1)")
|
||||
logger.info(" description définie (AR_Langue1)")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"description: {e}")
|
||||
|
||||
|
|
@ -4763,7 +4763,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_Pays = str(article_data["pays"])[:3].upper()
|
||||
champs_appliques.append("pays")
|
||||
logger.info(f" ✓ pays = {article_data['pays']}")
|
||||
logger.info(f" pays = {article_data['pays']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"pays: {e}")
|
||||
|
||||
|
|
@ -4771,7 +4771,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_Garantie = int(article_data["garantie"])
|
||||
champs_appliques.append("garantie")
|
||||
logger.info(f" ✓ garantie = {article_data['garantie']}")
|
||||
logger.info(f" garantie = {article_data['garantie']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"garantie: {e}")
|
||||
|
||||
|
|
@ -4779,7 +4779,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_Delai = int(article_data["delai"])
|
||||
champs_appliques.append("delai")
|
||||
logger.info(f" ✓ delai = {article_data['delai']}")
|
||||
logger.info(f" delai = {article_data['delai']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"delai: {e}")
|
||||
|
||||
|
|
@ -4787,7 +4787,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_PoidsNet = float(article_data["poids_net"])
|
||||
champs_appliques.append("poids_net")
|
||||
logger.info(f" ✓ poids_net = {article_data['poids_net']}")
|
||||
logger.info(f" poids_net = {article_data['poids_net']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"poids_net: {e}")
|
||||
|
||||
|
|
@ -4796,7 +4796,7 @@ class SageConnector:
|
|||
article.AR_PoidsBrut = float(article_data["poids_brut"])
|
||||
champs_appliques.append("poids_brut")
|
||||
logger.info(
|
||||
f" ✓ poids_brut = {article_data['poids_brut']}"
|
||||
f" poids_brut = {article_data['poids_brut']}"
|
||||
)
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"poids_brut: {e}")
|
||||
|
|
@ -4808,7 +4808,7 @@ class SageConnector:
|
|||
]
|
||||
champs_appliques.append("code_fiscal")
|
||||
logger.info(
|
||||
f" ✓ code_fiscal = {article_data['code_fiscal']}"
|
||||
f" code_fiscal = {article_data['code_fiscal']}"
|
||||
)
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"code_fiscal: {e}")
|
||||
|
|
@ -4820,7 +4820,7 @@ class SageConnector:
|
|||
)
|
||||
champs_appliques.append("soumis_escompte")
|
||||
logger.info(
|
||||
f" ✓ soumis_escompte = {article_data['soumis_escompte']}"
|
||||
f" soumis_escompte = {article_data['soumis_escompte']}"
|
||||
)
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"soumis_escompte: {e}")
|
||||
|
|
@ -4829,7 +4829,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_Publie = 1 if article_data["publie"] else 0
|
||||
champs_appliques.append("publie")
|
||||
logger.info(f" ✓ publie = {article_data['publie']}")
|
||||
logger.info(f" publie = {article_data['publie']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"publie: {e}")
|
||||
|
||||
|
|
@ -4838,7 +4838,7 @@ class SageConnector:
|
|||
article.AR_Sommeil = 1 if article_data["en_sommeil"] else 0
|
||||
champs_appliques.append("en_sommeil")
|
||||
logger.info(
|
||||
f" ✓ en_sommeil = {article_data['en_sommeil']}"
|
||||
f" en_sommeil = {article_data['en_sommeil']}"
|
||||
)
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"en_sommeil: {e}")
|
||||
|
|
@ -4880,13 +4880,13 @@ class SageConnector:
|
|||
try:
|
||||
for index, value in stats_a_definir:
|
||||
article.AR_Stat(index, value)
|
||||
logger.info(f" ✓ stat_0{index + 1} = {value}")
|
||||
logger.info(f" stat_0{index + 1} = {value}")
|
||||
champs_appliques.append(f"stat_0{index + 1}")
|
||||
|
||||
article.Write()
|
||||
logger.info(" [OK] Statistiques sauvegardées")
|
||||
except Exception as e:
|
||||
logger.warning(f" ⚠ Statistiques : {e}")
|
||||
logger.warning(f" Statistiques : {e}")
|
||||
|
||||
if transaction_active:
|
||||
try:
|
||||
|
|
@ -5314,7 +5314,7 @@ class SageConnector:
|
|||
designation = str(article_data["designation"])[:69].strip()
|
||||
article.AR_Design = designation
|
||||
champs_modifies.append("designation")
|
||||
logger.info(f" ✓ designation = {designation}")
|
||||
logger.info(f" designation = {designation}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"designation: {e}")
|
||||
|
||||
|
|
@ -5322,7 +5322,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_PrixVen = float(article_data["prix_vente"])
|
||||
champs_modifies.append("prix_vente")
|
||||
logger.info(f" ✓ prix_vente = {article_data['prix_vente']}")
|
||||
logger.info(f" prix_vente = {article_data['prix_vente']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"prix_vente: {e}")
|
||||
|
||||
|
|
@ -5330,7 +5330,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_PrixAchat = float(article_data["prix_achat"])
|
||||
champs_modifies.append("prix_achat")
|
||||
logger.info(f" ✓ prix_achat = {article_data['prix_achat']}")
|
||||
logger.info(f" prix_achat = {article_data['prix_achat']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"prix_achat: {e}")
|
||||
|
||||
|
|
@ -5338,7 +5338,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_Coef = float(article_data["coef"])
|
||||
champs_modifies.append("coef")
|
||||
logger.info(f" ✓ coef = {article_data['coef']}")
|
||||
logger.info(f" coef = {article_data['coef']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"coef: {e}")
|
||||
|
||||
|
|
@ -5348,7 +5348,7 @@ class SageConnector:
|
|||
:13
|
||||
].strip()
|
||||
champs_modifies.append("code_ean")
|
||||
logger.info(f" ✓ code_ean = {article_data['code_ean']}")
|
||||
logger.info(f" code_ean = {article_data['code_ean']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"code_ean: {e}")
|
||||
|
||||
|
|
@ -5358,7 +5358,7 @@ class SageConnector:
|
|||
:255
|
||||
].strip()
|
||||
champs_modifies.append("description")
|
||||
logger.info(" ✓ description définie (AR_Langue1)")
|
||||
logger.info(" description définie (AR_Langue1)")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"description: {e}")
|
||||
|
||||
|
|
@ -5366,7 +5366,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_Pays = str(article_data["pays"])[:3].upper()
|
||||
champs_modifies.append("pays")
|
||||
logger.info(f" ✓ pays = {article_data['pays']}")
|
||||
logger.info(f" pays = {article_data['pays']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"pays: {e}")
|
||||
|
||||
|
|
@ -5374,7 +5374,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_Garantie = int(article_data["garantie"])
|
||||
champs_modifies.append("garantie")
|
||||
logger.info(f" ✓ garantie = {article_data['garantie']}")
|
||||
logger.info(f" garantie = {article_data['garantie']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"garantie: {e}")
|
||||
|
||||
|
|
@ -5382,7 +5382,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_Delai = int(article_data["delai"])
|
||||
champs_modifies.append("delai")
|
||||
logger.info(f" ✓ delai = {article_data['delai']}")
|
||||
logger.info(f" delai = {article_data['delai']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"delai: {e}")
|
||||
|
||||
|
|
@ -5390,7 +5390,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_PoidsNet = float(article_data["poids_net"])
|
||||
champs_modifies.append("poids_net")
|
||||
logger.info(f" ✓ poids_net = {article_data['poids_net']}")
|
||||
logger.info(f" poids_net = {article_data['poids_net']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"poids_net: {e}")
|
||||
|
||||
|
|
@ -5398,7 +5398,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_PoidsBrut = float(article_data["poids_brut"])
|
||||
champs_modifies.append("poids_brut")
|
||||
logger.info(f" ✓ poids_brut = {article_data['poids_brut']}")
|
||||
logger.info(f" poids_brut = {article_data['poids_brut']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"poids_brut: {e}")
|
||||
|
||||
|
|
@ -5406,7 +5406,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_CodeFiscal = str(article_data["code_fiscal"])[:10]
|
||||
champs_modifies.append("code_fiscal")
|
||||
logger.info(f" ✓ code_fiscal = {article_data['code_fiscal']}")
|
||||
logger.info(f" code_fiscal = {article_data['code_fiscal']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"code_fiscal: {e}")
|
||||
|
||||
|
|
@ -5417,7 +5417,7 @@ class SageConnector:
|
|||
)
|
||||
champs_modifies.append("soumis_escompte")
|
||||
logger.info(
|
||||
f" ✓ soumis_escompte = {article_data['soumis_escompte']}"
|
||||
f" soumis_escompte = {article_data['soumis_escompte']}"
|
||||
)
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"soumis_escompte: {e}")
|
||||
|
|
@ -5426,7 +5426,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_Publie = 1 if article_data["publie"] else 0
|
||||
champs_modifies.append("publie")
|
||||
logger.info(f" ✓ publie = {article_data['publie']}")
|
||||
logger.info(f" publie = {article_data['publie']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"publie: {e}")
|
||||
|
||||
|
|
@ -5434,7 +5434,7 @@ class SageConnector:
|
|||
try:
|
||||
article.AR_Sommeil = 1 if article_data["en_sommeil"] else 0
|
||||
champs_modifies.append("en_sommeil")
|
||||
logger.info(f" ✓ en_sommeil = {article_data['en_sommeil']}")
|
||||
logger.info(f" en_sommeil = {article_data['en_sommeil']}")
|
||||
except Exception as e:
|
||||
champs_echoues.append(f"en_sommeil: {e}")
|
||||
|
||||
|
|
@ -5484,13 +5484,13 @@ class SageConnector:
|
|||
try:
|
||||
for index, value in stats_a_modifier:
|
||||
article.AR_Stat(index, value)
|
||||
logger.info(f" ✓ stat_0{index + 1} = {value}")
|
||||
logger.info(f" stat_0{index + 1} = {value}")
|
||||
champs_modifies.append(f"stat_0{index + 1}")
|
||||
|
||||
article.Write()
|
||||
logger.info(" [OK] Statistiques sauvegardées")
|
||||
except Exception as e:
|
||||
logger.warning(f" ⚠ Statistiques : {e}")
|
||||
logger.warning(f" Statistiques : {e}")
|
||||
|
||||
if "stock_mini" in article_data or "stock_maxi" in article_data:
|
||||
try:
|
||||
|
|
@ -7357,12 +7357,12 @@ class SageConnector:
|
|||
tiers_list.append(tiers)
|
||||
|
||||
logger.info(
|
||||
f"✓ SQL: {len(tiers_list)} tiers retournés (type={type_tiers}, filtre={filtre})"
|
||||
f" SQL: {len(tiers_list)} tiers retournés (type={type_tiers}, filtre={filtre})"
|
||||
)
|
||||
return tiers_list
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"✗ Erreur SQL tiers: {e}")
|
||||
logger.error(f" Erreur SQL tiers: {e}")
|
||||
raise RuntimeError(f"Erreur lecture tiers: {str(e)}")
|
||||
|
||||
def lire_tiers(self, code: str) -> Optional[Dict]:
|
||||
|
|
@ -7387,11 +7387,11 @@ class SageConnector:
|
|||
tiers = tiers_to_dict(row)
|
||||
tiers["contacts"] = _get_contacts(row.CT_Num, conn)
|
||||
|
||||
logger.info(f"✓ SQL: Tiers {code} lu avec succès")
|
||||
logger.info(f" SQL: Tiers {code} lu avec succès")
|
||||
return tiers
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"✗ Erreur SQL tiers {code}: {e}")
|
||||
logger.error(f" Erreur SQL tiers {code}: {e}")
|
||||
return None
|
||||
|
||||
def lister_tous_collaborateurs(self, filtre="", actifs_seulement=True):
|
||||
|
|
@ -7429,11 +7429,11 @@ class SageConnector:
|
|||
|
||||
collaborateurs = [collaborators_to_dict(row) for row in rows]
|
||||
|
||||
logger.info(f"✓ SQL: {len(collaborateurs)} collaborateurs")
|
||||
logger.info(f" SQL: {len(collaborateurs)} collaborateurs")
|
||||
return collaborateurs
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"✗ Erreur SQL collaborateurs: {e}")
|
||||
logger.error(f" Erreur SQL collaborateurs: {e}")
|
||||
raise RuntimeError(f"Erreur lecture collaborateurs: {str(e)}")
|
||||
|
||||
def lire_collaborateur(self, numero):
|
||||
|
|
@ -7464,12 +7464,12 @@ class SageConnector:
|
|||
collaborateur = collaborators_to_dict(row)
|
||||
|
||||
logger.info(
|
||||
f"✓ SQL: Collaborateur {numero} avec {len(collaborateur)} champs"
|
||||
f" SQL: Collaborateur {numero} avec {len(collaborateur)} champs"
|
||||
)
|
||||
return collaborateur
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"✗ Erreur SQL collaborateur {numero}: {e}")
|
||||
logger.error(f" Erreur SQL collaborateur {numero}: {e}")
|
||||
return None
|
||||
|
||||
def creer_collaborateur(self, data: dict) -> dict:
|
||||
|
|
@ -7484,12 +7484,12 @@ class SageConnector:
|
|||
prenom = str(data.get("prenom", "")).strip()[:35] if data.get("prenom") else ""
|
||||
|
||||
logger.info(f"\n{'=' * 70}")
|
||||
logger.info(f"📝 CRÉATION COLLABORATEUR: {nom_upper} {prenom}")
|
||||
logger.info(f" CRÉATION COLLABORATEUR: {nom_upper} {prenom}")
|
||||
logger.info(f"{'=' * 70}")
|
||||
|
||||
try:
|
||||
with self._com_context(), self._lock_com:
|
||||
logger.info("🔍 Vérification doublon...")
|
||||
logger.info(" Vérification doublon...")
|
||||
with self._get_sql_connection() as conn:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute(
|
||||
|
|
@ -7501,7 +7501,7 @@ class SageConnector:
|
|||
raise ValueError(
|
||||
f"Le collaborateur '{nom_upper} {prenom}' existe déjà (N°{existing[0]})"
|
||||
)
|
||||
logger.info("✓ Pas de doublon")
|
||||
logger.info(" Pas de doublon")
|
||||
|
||||
try:
|
||||
factory = self.cial.FactoryCollaborateur
|
||||
|
|
@ -7518,7 +7518,7 @@ class SageConnector:
|
|||
]:
|
||||
try:
|
||||
collab = win32com.client.CastTo(persist, iface)
|
||||
logger.info(f"✓ Cast vers {iface}")
|
||||
logger.info(f" Cast vers {iface}")
|
||||
break
|
||||
except Exception:
|
||||
pass
|
||||
|
|
@ -7527,7 +7527,7 @@ class SageConnector:
|
|||
|
||||
try:
|
||||
collab.SetDefault()
|
||||
logger.info("✓ SetDefault()")
|
||||
logger.info(" SetDefault()")
|
||||
except Exception as e:
|
||||
logger.warning(f"SetDefault() ignoré: {e}")
|
||||
|
||||
|
|
@ -7540,13 +7540,13 @@ class SageConnector:
|
|||
if max_len:
|
||||
val = val[:max_len]
|
||||
setattr(obj, attr, val)
|
||||
logger.debug(f" ✓ {attr} = '{val}'")
|
||||
logger.debug(f" {attr} = '{val}'")
|
||||
return True
|
||||
except Exception as e:
|
||||
logger.warning(f" ✗ {attr}: {e}")
|
||||
logger.warning(f" {attr}: {e}")
|
||||
return False
|
||||
|
||||
logger.info("📝 Champs directs...")
|
||||
logger.info(" Champs directs...")
|
||||
|
||||
safe_set(collab, "Nom", nom_upper, 35)
|
||||
|
||||
|
|
@ -7558,7 +7558,7 @@ class SageConnector:
|
|||
safe_set(collab, "LinkedIn", data.get("linkedin"), 35)
|
||||
safe_set(collab, "Skype", data.get("skype"), 35)
|
||||
|
||||
logger.info("📍 Adresse...")
|
||||
logger.info(" Adresse...")
|
||||
try:
|
||||
adresse_obj = collab.Adresse
|
||||
safe_set(adresse_obj, "Adresse", data.get("adresse"), 35)
|
||||
|
|
@ -7568,9 +7568,9 @@ class SageConnector:
|
|||
safe_set(adresse_obj, "CodeRegion", data.get("code_region"), 25)
|
||||
safe_set(adresse_obj, "Pays", data.get("pays"), 35)
|
||||
except Exception as e:
|
||||
logger.warning(f"⚠️ Erreur Adresse: {e}")
|
||||
logger.warning(f"️ Erreur Adresse: {e}")
|
||||
|
||||
logger.info("📞 Telecom...")
|
||||
logger.info(" Telecom...")
|
||||
try:
|
||||
telecom_obj = collab.Telecom
|
||||
safe_set(telecom_obj, "Telephone", data.get("telephone"), 21)
|
||||
|
|
@ -7578,13 +7578,13 @@ class SageConnector:
|
|||
safe_set(telecom_obj, "EMail", data.get("email"), 69)
|
||||
safe_set(telecom_obj, "Portable", data.get("tel_portable"), 21)
|
||||
except Exception as e:
|
||||
logger.warning(f"⚠️ Erreur Telecom: {e}")
|
||||
logger.warning(f"️ Erreur Telecom: {e}")
|
||||
|
||||
logger.info("🔘 Booléens...")
|
||||
logger.info(" Booléens...")
|
||||
if data.get("vendeur") is True:
|
||||
try:
|
||||
collab.Vendeur = True
|
||||
logger.debug(" ✓ Vendeur = True")
|
||||
logger.debug(" Vendeur = True")
|
||||
except Exception:
|
||||
pass
|
||||
if data.get("caissier") is True:
|
||||
|
|
@ -7608,7 +7608,7 @@ class SageConnector:
|
|||
except Exception:
|
||||
pass
|
||||
|
||||
logger.info("💾 Write()...")
|
||||
logger.info(" Write()...")
|
||||
try:
|
||||
collab.Write()
|
||||
logger.info(" Write() RÉUSSI!")
|
||||
|
|
@ -7657,7 +7657,7 @@ class SageConnector:
|
|||
return {"nom": nom_upper, "prenom": prenom, "status": "créé"}
|
||||
|
||||
except ValueError as e:
|
||||
logger.warning(f"⚠️ Validation: {e}")
|
||||
logger.warning(f"️ Validation: {e}")
|
||||
raise
|
||||
except Exception as e:
|
||||
logger.error(f" Erreur création collaborateur: {e}", exc_info=True)
|
||||
|
|
@ -7669,7 +7669,7 @@ class SageConnector:
|
|||
raise RuntimeError("Connexion Sage non établie")
|
||||
|
||||
logger.info(f"\n{'=' * 70}")
|
||||
logger.info(f"📝 MODIFICATION COLLABORATEUR N°{numero}")
|
||||
logger.info(f" MODIFICATION COLLABORATEUR N°{numero}")
|
||||
logger.info(f"{'=' * 70}")
|
||||
|
||||
try:
|
||||
|
|
@ -7695,7 +7695,7 @@ class SageConnector:
|
|||
]:
|
||||
try:
|
||||
collab = win32com.client.CastTo(persist, iface)
|
||||
logger.info(f"✓ Cast vers {iface}")
|
||||
logger.info(f" Cast vers {iface}")
|
||||
break
|
||||
except Exception:
|
||||
pass
|
||||
|
|
@ -7704,7 +7704,7 @@ class SageConnector:
|
|||
|
||||
try:
|
||||
collab.Read()
|
||||
logger.info(f"✓ Collaborateur {numero} chargé")
|
||||
logger.info(f" Collaborateur {numero} chargé")
|
||||
except Exception as e:
|
||||
logger.warning(f"Read() ignoré: {e}")
|
||||
|
||||
|
|
@ -7717,15 +7717,15 @@ class SageConnector:
|
|||
if max_len and isinstance(val, str):
|
||||
val = val[:max_len]
|
||||
setattr(obj, attr, val)
|
||||
logger.debug(f" ✓ {attr} = '{val}'")
|
||||
logger.debug(f" {attr} = '{val}'")
|
||||
return True
|
||||
except Exception as e:
|
||||
logger.warning(f" ✗ {attr}: {e}")
|
||||
logger.warning(f" {attr}: {e}")
|
||||
return False
|
||||
|
||||
champs_modifies = []
|
||||
|
||||
logger.info("📝 Champs directs...")
|
||||
logger.info(" Champs directs...")
|
||||
|
||||
champs_directs = {
|
||||
"nom": ("Nom", 35),
|
||||
|
|
@ -7746,7 +7746,7 @@ class SageConnector:
|
|||
if safe_set(collab, sage_attr, val, max_len):
|
||||
champs_modifies.append(sage_attr)
|
||||
|
||||
logger.info("📍 Adresse...")
|
||||
logger.info(" Adresse...")
|
||||
try:
|
||||
adresse_obj = collab.Adresse
|
||||
|
||||
|
|
@ -7767,9 +7767,9 @@ class SageConnector:
|
|||
champs_modifies.append(f"Adresse.{sage_attr}")
|
||||
|
||||
except Exception as e:
|
||||
logger.warning(f"⚠️ Erreur accès Adresse: {e}")
|
||||
logger.warning(f"️ Erreur accès Adresse: {e}")
|
||||
|
||||
logger.info("📞 Telecom...")
|
||||
logger.info(" Telecom...")
|
||||
try:
|
||||
telecom_obj = collab.Telecom
|
||||
|
||||
|
|
@ -7788,9 +7788,9 @@ class SageConnector:
|
|||
champs_modifies.append(f"Telecom.{sage_attr}")
|
||||
|
||||
except Exception as e:
|
||||
logger.warning(f"⚠️ Erreur accès Telecom: {e}")
|
||||
logger.warning(f"️ Erreur accès Telecom: {e}")
|
||||
|
||||
logger.info("🔘 Booléens...")
|
||||
logger.info(" Booléens...")
|
||||
|
||||
champs_bool = {
|
||||
"vendeur": "Vendeur",
|
||||
|
|
@ -7806,19 +7806,19 @@ class SageConnector:
|
|||
val = bool(data[py_field])
|
||||
setattr(collab, sage_attr, val)
|
||||
champs_modifies.append(sage_attr)
|
||||
logger.debug(f" ✓ {sage_attr} = {val}")
|
||||
logger.debug(f" {sage_attr} = {val}")
|
||||
except Exception as e:
|
||||
logger.warning(f" ✗ {sage_attr}: {e}")
|
||||
logger.warning(f" {sage_attr}: {e}")
|
||||
|
||||
if not champs_modifies:
|
||||
logger.info("ℹ️ Aucun champ à modifier")
|
||||
return self.lire_collaborateur(numero)
|
||||
|
||||
logger.info(
|
||||
f"📋 {len(champs_modifies)} champ(s) à modifier: {champs_modifies}"
|
||||
f" {len(champs_modifies)} champ(s) à modifier: {champs_modifies}"
|
||||
)
|
||||
|
||||
logger.info("💾 Write()...")
|
||||
logger.info(" Write()...")
|
||||
try:
|
||||
collab.Write()
|
||||
logger.info(" Write() RÉUSSI!")
|
||||
|
|
@ -7833,7 +7833,7 @@ class SageConnector:
|
|||
return self.lire_collaborateur(numero)
|
||||
|
||||
except ValueError as e:
|
||||
logger.warning(f"⚠️ Validation: {e}")
|
||||
logger.warning(f"️ Validation: {e}")
|
||||
raise
|
||||
except Exception as e:
|
||||
logger.error(f" Erreur modification collaborateur: {e}", exc_info=True)
|
||||
|
|
@ -7861,12 +7861,12 @@ class SageConnector:
|
|||
societe.update(logo_com)
|
||||
|
||||
logger.info(
|
||||
f"✓ Informations société '{societe['raison_sociale']}' lues"
|
||||
f" Informations société '{societe['raison_sociale']}' lues"
|
||||
)
|
||||
return societe
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"✗ Erreur lecture P_DOSSIER: {e}", exc_info=True)
|
||||
logger.error(f" Erreur lecture P_DOSSIER: {e}", exc_info=True)
|
||||
raise RuntimeError(f"Erreur lecture informations société: {str(e)}")
|
||||
|
||||
def regler_facture(
|
||||
|
|
|
|||
|
|
@ -1185,7 +1185,7 @@ def enrichir_fournisseurs_articles(articles: List[Dict], cursor) -> List[Dict]:
|
|||
)
|
||||
|
||||
if not nums_fournisseurs:
|
||||
logger.warning(" ⚠ Aucun numéro de fournisseur trouvé dans les articles")
|
||||
logger.warning(" Aucun numéro de fournisseur trouvé dans les articles")
|
||||
for article in articles:
|
||||
article["fournisseur_nom"] = None
|
||||
return articles
|
||||
|
|
@ -1211,7 +1211,7 @@ def enrichir_fournisseurs_articles(articles: List[Dict], cursor) -> List[Dict]:
|
|||
|
||||
if len(fournisseur_rows) == 0:
|
||||
logger.warning(
|
||||
f" ⚠ Aucun fournisseur trouvé pour CT_Type=1 et CT_Num IN {nums_fournisseurs[:5]}"
|
||||
f" Aucun fournisseur trouvé pour CT_Type=1 et CT_Num IN {nums_fournisseurs[:5]}"
|
||||
)
|
||||
cursor.execute(
|
||||
f"SELECT CT_Num, CT_Type FROM F_COMPTET WHERE CT_Num IN ({placeholders})",
|
||||
|
|
@ -1273,7 +1273,7 @@ def enrichir_familles_articles(articles: List[Dict], cursor) -> List[Dict]:
|
|||
)
|
||||
|
||||
if not codes_familles:
|
||||
logger.warning(" ⚠ Aucun code famille trouvé dans les articles")
|
||||
logger.warning(" Aucun code famille trouvé dans les articles")
|
||||
for article in articles:
|
||||
_init_champs_famille_vides(article)
|
||||
return articles
|
||||
|
|
|
|||
|
|
@ -357,7 +357,7 @@ def devalider_facture(connector, numero_facture: str) -> Dict:
|
|||
except ValueError:
|
||||
raise
|
||||
except Exception as e:
|
||||
logger.error(f"❌ Erreur COM dévalidation {numero_facture}: {e}", exc_info=True)
|
||||
logger.error(f" Erreur COM dévalidation {numero_facture}: {e}", exc_info=True)
|
||||
raise RuntimeError(f"Échec dévalidation: {str(e)}")
|
||||
|
||||
info_apres = _get_facture_info_sql(connector, numero_facture)
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ def creer_document_vente(
|
|||
|
||||
config = ConfigDocument(type_document)
|
||||
logger.info(
|
||||
f"📝 Début création {config.nom_document} pour client {doc_data['client']['code']}"
|
||||
f" Début création {config.nom_document} pour client {doc_data['client']['code']}"
|
||||
)
|
||||
|
||||
try:
|
||||
|
|
@ -30,7 +30,7 @@ def creer_document_vente(
|
|||
try:
|
||||
self.cial.CptaApplication.BeginTrans()
|
||||
transaction_active = True
|
||||
logger.debug("✓ Transaction Sage démarrée")
|
||||
logger.debug(" Transaction Sage démarrée")
|
||||
except Exception as e:
|
||||
logger.warning(f"BeginTrans échoué (non critique): {e}")
|
||||
|
||||
|
|
@ -42,7 +42,7 @@ def creer_document_vente(
|
|||
except Exception:
|
||||
pass
|
||||
|
||||
logger.info(f"✓ Document {config.nom_document} créé")
|
||||
logger.info(f" Document {config.nom_document} créé")
|
||||
|
||||
date_principale = normaliser_date(
|
||||
doc_data.get(config.champ_date_principale)
|
||||
|
|
@ -64,7 +64,7 @@ def creer_document_vente(
|
|||
normaliser_date(doc_data[config.champ_date_secondaire])
|
||||
)
|
||||
logger.info(
|
||||
f"✓ {config.champ_date_secondaire}: {doc_data[config.champ_date_secondaire]}"
|
||||
f" {config.champ_date_secondaire}: {doc_data[config.champ_date_secondaire]}"
|
||||
)
|
||||
|
||||
factory_client = self.cial.CptaApplication.FactoryClient
|
||||
|
|
@ -79,12 +79,12 @@ def creer_document_vente(
|
|||
|
||||
doc.SetDefaultClient(client_obj)
|
||||
doc.Write()
|
||||
logger.info(f"✓ Client {doc_data['client']['code']} associé")
|
||||
logger.info(f" Client {doc_data['client']['code']} associé")
|
||||
|
||||
if doc_data.get("reference"):
|
||||
try:
|
||||
doc.DO_Ref = doc_data["reference"]
|
||||
logger.info(f"✓ Référence: {doc_data['reference']}")
|
||||
logger.info(f" Référence: {doc_data['reference']}")
|
||||
except Exception as e:
|
||||
logger.warning(f"Référence non définie: {e}")
|
||||
|
||||
|
|
@ -98,7 +98,7 @@ def creer_document_vente(
|
|||
|
||||
factory_article = self.cial.FactoryArticle
|
||||
|
||||
logger.info(f"📦 Ajout de {len(doc_data['lignes'])} lignes...")
|
||||
logger.info(f" Ajout de {len(doc_data['lignes'])} lignes...")
|
||||
|
||||
for idx, ligne_data in enumerate(doc_data["lignes"], 1):
|
||||
_ajouter_ligne_document(
|
||||
|
|
@ -110,7 +110,7 @@ def creer_document_vente(
|
|||
doc=doc,
|
||||
)
|
||||
|
||||
logger.info("💾 Validation du document...")
|
||||
logger.info(" Validation du document...")
|
||||
|
||||
if type_document == TypeDocumentVente.FACTURE:
|
||||
try:
|
||||
|
|
@ -126,18 +126,18 @@ def creer_document_vente(
|
|||
|
||||
if type_document != TypeDocumentVente.DEVIS:
|
||||
process.Process()
|
||||
logger.info("✓ Process() appelé")
|
||||
logger.info(" Process() appelé")
|
||||
else:
|
||||
try:
|
||||
process.Process()
|
||||
logger.info("✓ Process() appelé (devis)")
|
||||
logger.info(" Process() appelé (devis)")
|
||||
except Exception:
|
||||
logger.debug(" ↳ Process() ignoré pour devis brouillon")
|
||||
|
||||
if transaction_active:
|
||||
try:
|
||||
self.cial.CptaApplication.CommitTrans()
|
||||
logger.info("✓ Transaction committée")
|
||||
logger.info(" Transaction committée")
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
|
@ -150,7 +150,7 @@ def creer_document_vente(
|
|||
f"Numéro {config.nom_document} vide après création"
|
||||
)
|
||||
|
||||
logger.info(f"📄 Numéro: {numero_document}")
|
||||
logger.info(f" Numéro: {numero_document}")
|
||||
|
||||
doc_final_data = _relire_document_final(
|
||||
self,
|
||||
|
|
@ -252,21 +252,21 @@ def _ajouter_ligne_document(
|
|||
ligne_obj.DL_PrixUnitaire = float(prix_sage)
|
||||
|
||||
prix_final = float(getattr(ligne_obj, "DL_PrixUnitaire", 0))
|
||||
logger.info(f" 💰 Prix: {prix_final}€")
|
||||
logger.info(f" Prix: {prix_final}€")
|
||||
|
||||
ligne_obj.Write()
|
||||
|
||||
remise = ligne_data.get("remise_pourcentage", 0)
|
||||
if remise and remise > 0:
|
||||
logger.info(f" 🎯 Application remise {remise}%...")
|
||||
logger.info(f" Application remise {remise}%...")
|
||||
_appliquer_remise_ligne(ligne_obj, remise)
|
||||
|
||||
logger.info(f" ✓ Ligne {idx} terminée")
|
||||
logger.info(f" Ligne {idx} terminée")
|
||||
|
||||
|
||||
def _configurer_facture(self, doc) -> None:
|
||||
"""Configuration spécifique pour les factures"""
|
||||
logger.info(" 🔧 Configuration spécifique facture...")
|
||||
logger.info(" Configuration spécifique facture...")
|
||||
|
||||
try:
|
||||
if hasattr(doc, "DO_CodeJournal"):
|
||||
|
|
@ -274,24 +274,24 @@ def _configurer_facture(self, doc) -> None:
|
|||
param_societe = self.cial.CptaApplication.ParametreSociete
|
||||
journal_defaut = getattr(param_societe, "P_CodeJournalVte", "VTE")
|
||||
doc.DO_CodeJournal = journal_defaut
|
||||
logger.debug(f" ✓ Code journal: {journal_defaut}")
|
||||
logger.debug(f" Code journal: {journal_defaut}")
|
||||
except Exception:
|
||||
doc.DO_CodeJournal = "VTE"
|
||||
logger.debug(" ✓ Code journal: VTE (défaut)")
|
||||
logger.debug(" Code journal: VTE (défaut)")
|
||||
except Exception as e:
|
||||
logger.debug(f" Code journal: {e}")
|
||||
|
||||
try:
|
||||
if hasattr(doc, "DO_Souche"):
|
||||
doc.DO_Souche = 0
|
||||
logger.debug(" ✓ Souche: 0")
|
||||
logger.debug(" Souche: 0")
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
try:
|
||||
if hasattr(doc, "DO_Regime"):
|
||||
doc.DO_Regime = 0
|
||||
logger.debug(" ✓ Régime: 0")
|
||||
logger.debug(" Régime: 0")
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
|
@ -390,11 +390,11 @@ def modifier_document_vente(
|
|||
raise RuntimeError("Connexion Sage non établie")
|
||||
|
||||
config = ConfigDocument(type_document)
|
||||
logger.info(f"📝 === MODIFICATION {config.nom_document.upper()} {numero} ===")
|
||||
logger.info(f" === MODIFICATION {config.nom_document.upper()} {numero} ===")
|
||||
|
||||
try:
|
||||
with self._com_context(), self._lock_com:
|
||||
logger.info("📂 Chargement document...")
|
||||
logger.info(" Chargement document...")
|
||||
factory = self.cial.FactoryDocumentVente
|
||||
persist = None
|
||||
|
||||
|
|
@ -403,7 +403,7 @@ def modifier_document_vente(
|
|||
persist_test = factory.ReadPiece(type_test, numero)
|
||||
if persist_test:
|
||||
persist = persist_test
|
||||
logger.info(f" ✓ Document trouvé (type={type_test})")
|
||||
logger.info(f" Document trouvé (type={type_test})")
|
||||
break
|
||||
except Exception:
|
||||
continue
|
||||
|
|
@ -466,7 +466,7 @@ def modifier_document_vente(
|
|||
modif_ref = "reference" in doc_data
|
||||
modif_lignes = "lignes" in doc_data and doc_data["lignes"] is not None
|
||||
|
||||
logger.info("📋 Modifications demandées:")
|
||||
logger.info(" Modifications demandées:")
|
||||
logger.info(f" {config.champ_date_principale}: {modif_date}")
|
||||
if config.champ_date_secondaire:
|
||||
logger.info(f" {config.champ_date_secondaire}: {modif_date_sec}")
|
||||
|
|
@ -486,11 +486,11 @@ def modifier_document_vente(
|
|||
statut_a_modifier = doc_data_temp.pop("statut")
|
||||
modif_statut = False
|
||||
|
||||
logger.info("🔍 Test Write() basique...")
|
||||
logger.info(" Test Write() basique...")
|
||||
try:
|
||||
doc.Write()
|
||||
doc.Read()
|
||||
logger.info(" ✓ Write() basique OK")
|
||||
logger.info(" Write() basique OK")
|
||||
except Exception as e:
|
||||
logger.error(f" Document verrouillé: {e}")
|
||||
raise ValueError(f"Document verrouillé: {e}")
|
||||
|
|
@ -498,7 +498,7 @@ def modifier_document_vente(
|
|||
if not modif_lignes and (
|
||||
modif_date or modif_date_sec or modif_statut or modif_ref
|
||||
):
|
||||
logger.info("📝 Modifications simples...")
|
||||
logger.info(" Modifications simples...")
|
||||
|
||||
if modif_date:
|
||||
date_principale = normaliser_date(
|
||||
|
|
@ -529,10 +529,10 @@ def modifier_document_vente(
|
|||
_configurer_facture(self, doc)
|
||||
|
||||
doc.Write()
|
||||
logger.info(" ✓ Modifications appliquées")
|
||||
logger.info(" Modifications appliquées")
|
||||
|
||||
elif modif_lignes:
|
||||
logger.info("🔄 REMPLACEMENT COMPLET DES LIGNES...")
|
||||
logger.info(" REMPLACEMENT COMPLET DES LIGNES...")
|
||||
|
||||
if modif_date:
|
||||
doc.DO_Date = pywintypes.Time(
|
||||
|
|
@ -562,7 +562,7 @@ def modifier_document_vente(
|
|||
factory_article = self.cial.FactoryArticle
|
||||
|
||||
if nb_lignes_initial > 0:
|
||||
logger.info(f" 🗑️ Suppression {nb_lignes_initial} lignes...")
|
||||
logger.info(f" ️ Suppression {nb_lignes_initial} lignes...")
|
||||
for idx in range(nb_lignes_initial, 0, -1):
|
||||
try:
|
||||
ligne_p = factory_lignes.List(idx)
|
||||
|
|
@ -574,9 +574,9 @@ def modifier_document_vente(
|
|||
ligne.Remove()
|
||||
except Exception as e:
|
||||
logger.warning(f" Ligne {idx}: {e}")
|
||||
logger.info(" ✓ Lignes supprimées")
|
||||
logger.info(" Lignes supprimées")
|
||||
|
||||
logger.info(f" ➕ Ajout {nb_nouvelles} lignes...")
|
||||
logger.info(f" Ajout {nb_nouvelles} lignes...")
|
||||
for idx, ligne_data in enumerate(nouvelles_lignes, 1):
|
||||
_ajouter_ligne_document(
|
||||
cial=self.cial,
|
||||
|
|
@ -587,7 +587,7 @@ def modifier_document_vente(
|
|||
doc=doc,
|
||||
)
|
||||
|
||||
logger.info(" ✓ Nouvelles lignes ajoutées avec remises")
|
||||
logger.info(" Nouvelles lignes ajoutées avec remises")
|
||||
|
||||
doc.Write()
|
||||
time.sleep(0.5)
|
||||
|
|
@ -598,7 +598,7 @@ def modifier_document_vente(
|
|||
if reference_a_modifier is not None:
|
||||
try:
|
||||
logger.info(
|
||||
f" 📝 Modification référence: '{reference_a_modifier}'"
|
||||
f" Modification référence: '{reference_a_modifier}'"
|
||||
)
|
||||
doc.DO_Ref = (
|
||||
str(reference_a_modifier) if reference_a_modifier else ""
|
||||
|
|
@ -612,7 +612,7 @@ def modifier_document_vente(
|
|||
|
||||
if statut_a_modifier is not None:
|
||||
try:
|
||||
logger.info(f" 📝 Modification statut: {statut_a_modifier}")
|
||||
logger.info(f" Modification statut: {statut_a_modifier}")
|
||||
doc.DO_Statut = int(statut_a_modifier)
|
||||
doc.Write()
|
||||
time.sleep(0.5)
|
||||
|
|
|
|||
Loading…
Reference in a new issue