Sage100-ws/utils/documents/devis/devis_check.py

61 lines
No EOL
1.6 KiB
Python

import win32com.client
import logging
logger = logging.getLogger(__name__)
def _rechercher_devis_dans_liste(numero_devis, factory_doc):
"""Recherche un devis dans les 100 premiers éléments de la liste."""
index = 1
while index < 100:
try:
persist_test = factory_doc.List(index)
if persist_test is None:
break
doc_test = win32com.client.CastTo(persist_test, "IBODocumentVente3")
doc_test.Read()
if (
getattr(doc_test, "DO_Type", -1) == 0
and getattr(doc_test, "DO_Piece", "") == numero_devis
):
logger.info(f" Document trouvé à l'index {index}")
return persist_test
index += 1
except:
index += 1
return None
def _recuperer_numero_devis(process, doc):
"""Récupère le numéro du devis créé via plusieurs méthodes."""
numero_devis = None
try:
doc_result = process.DocumentResult
if doc_result:
doc_result = win32com.client.CastTo(doc_result, "IBODocumentVente3")
doc_result.Read()
numero_devis = getattr(doc_result, "DO_Piece", "")
except:
pass
if not numero_devis:
numero_devis = getattr(doc, "DO_Piece", "")
if not numero_devis:
try:
doc.SetDefaultNumPiece()
doc.Write()
doc.Read()
numero_devis = getattr(doc, "DO_Piece", "")
except:
pass
return numero_devis
__all__ = [
"_recuperer_numero_devis",
"_rechercher_devis_dans_liste"
]