|
|
@@ -3,14 +3,62 @@ Created on 27 juin 2017
|
|
|
|
|
|
@author: olivier.massot
|
|
|
'''
|
|
|
-from _io import BytesIO
|
|
|
-import urllib.request
|
|
|
-from lxml import etree # @UnresolvedImport
|
|
|
+from datetime import datetime
|
|
|
+import logging
|
|
|
|
|
|
+from core.pde import FacturesDb
|
|
|
+from core.webservice import GfWebservice
|
|
|
+
|
|
|
+
|
|
|
+logger = logging.getLogger("factures")
|
|
|
+logging.basicConfig(filename=r'log\factures_{:%Y%m%d_%H%M}.log'.format(datetime.now()),
|
|
|
+ level=logging.INFO)
|
|
|
+
|
|
|
+
|
|
|
+logger.info("Initialization")
|
|
|
+
|
|
|
+# Connect to factures.mdb
|
|
|
+factures_db = FacturesDb(autocommit=True)
|
|
|
+
|
|
|
+# Connect to the astre gf webservice
|
|
|
+ws = GfWebservice("GetPDETitres")
|
|
|
+
|
|
|
+analysed = 0
|
|
|
+updated = 0
|
|
|
+
|
|
|
+for titre in ws:
|
|
|
+ if not titre:
|
|
|
+ continue
|
|
|
+
|
|
|
+ analysed += 1
|
|
|
+
|
|
|
+ strfilter = "[lngDocId]={} AND [bytTypeDocumentId]=50".format(titre["docId"])
|
|
|
+
|
|
|
+ record = factures_db.first("SELECT * FROM tblPieceEntete WHERE {}".format(strfilter))
|
|
|
+ if not record:
|
|
|
+ logger.warning("(!) no record found where '{}'".format(strfilter))
|
|
|
+ continue
|
|
|
+
|
|
|
+ memobs = record.get("memobsinterne", "")
|
|
|
+
|
|
|
+ if "Titre n° : {}".format(titre["titreId"]) in memobs:
|
|
|
+ # already imported
|
|
|
+ continue
|
|
|
+
|
|
|
+ logger.info("import: {}".format(titre["docId"]))
|
|
|
+
|
|
|
+ if memobs:
|
|
|
+ memobs += "\r\n"
|
|
|
+
|
|
|
+ dt = datetime.strptime(titre["dateTitre"][:10], "%Y-%m-%d").strftime("%d/%m/%Y")
|
|
|
+
|
|
|
+ memobs += r"Titre n° : {} le {}".format(titre["titreId"], dt)
|
|
|
+
|
|
|
+ factures_db.execute("UPDATE tblPieceEntete SET [memObsInterne]='{}' WHERE {}".format(memobs, strfilter))
|
|
|
+
|
|
|
+ updated += 1
|
|
|
+
|
|
|
+logger.info("Operation ended: {} lines analysed, {} updated".format(analysed, updated))
|
|
|
|
|
|
-URL = 'http://localhost:2890/public/WsPDE.asmx/GetPDETitres'
|
|
|
|
|
|
-data = urllib.request.urlopen(URL).read()
|
|
|
|
|
|
-for _, element in etree.iterparse(BytesIO(data)):
|
|
|
- print(element.attrib)
|