gf2factures.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. '''
  2. Script d'import des données de facturation depuis la base de données ASTRE-GF
  3. vers les tables de la base Analytique du Parc Départemental d'Erstein
  4. @author: olivier.massot, juin 2017
  5. '''
  6. from datetime import datetime
  7. import logging
  8. from core import logconf
  9. from core.pde import FacturesDb
  10. from core.webservice import GfWebservice
  11. logger = logging.getLogger("gf2factures")
  12. logconf.start("gf2factures", logging.INFO)
  13. logger.info("Initialization")
  14. # Connect to factures.mdb
  15. factures_db = FacturesDb(autocommit=True)
  16. # Connect to the astre gf webservice
  17. ws = GfWebservice("GetPDETitres")
  18. analysed = 0
  19. updated = 0
  20. for titre in ws:
  21. if not titre:
  22. continue
  23. analysed += 1
  24. strfilter = "[lngDocId]={} AND [bytTypeDocumentId]=50".format(titre["docId"])
  25. record = factures_db.first("SELECT memobsinterne FROM tblPieceEntete WHERE {}".format(strfilter))
  26. if not record:
  27. logger.warning("(!) no record found where '{}'".format(strfilter))
  28. continue
  29. memobs = record.memobsinterne if record.memobsinterne else ""
  30. if "Titre n° : {}".format(titre["titreId"]) in memobs:
  31. # already imported
  32. continue
  33. logger.info("import: {}".format(titre["docId"]))
  34. if memobs:
  35. memobs += "\r\n"
  36. dt = datetime.strptime(titre["dateTitre"][:10], "%Y-%m-%d").strftime("%d/%m/%Y")
  37. memobs += r"Titre n° : {} le {}".format(titre["titreId"], dt)
  38. factures_db.execute("UPDATE tblPieceEntete SET [memObsInterne]='{}' WHERE {}".format(memobs, strfilter))
  39. updated += 1
  40. logger.info("Operation ended: {} lines analysed, {} updated".format(analysed, updated))