''' Script d'import des données de facturation depuis la base de données ASTRE-GF vers les tables de la base Factures du Parc Départemental d'Erstein @author: olivier.massot, juin 2017 ''' from datetime import datetime import logging from path import Path # @UnusedImport from core import logconf from core.pde import FacturesDb from core.webservice import GfWebservice logger = logging.getLogger("gf2factures") logconf.start("gf2factures", logging.INFO) # # POUR TESTER, décommenter les lignes suivantes ##----------------------------------------------- # GfWebservice._url = r"http://webservices-t.bas-rhin.fr/CG67.AstreGF.WebServices/public/WsPDE.asmx" # FacturesDb._path = Path(r"\\h2o\local\4-transversal\BDD\mdb_test\Facture_data.mdb") # logger.handlers = [h for h in logger.handlers if (type(h) == logging.StreamHandler)] # logger.warning("<<<<<<<<<<<<<< Mode TEST >>>>>>>>>>>>>>>>>") ##----------------------------------------------- def main(): 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 logger.info("Mise à jour de FacturesDb") for titre in ws: if not titre: continue analysed += 1 strfilter = "[lngDocId]={} AND [bytTypeDocumentId]=50".format(titre["docId"]) record = factures_db.first("SELECT memobsinterne FROM tblPieceEntete WHERE {}".format(strfilter)) if not record: logger.warning("(!) no record found where '{}'".format(strfilter)) continue memobs = record.memobsinterne if record.memobsinterne else "" if "Titre n° : {}".format(titre["titreId"]) in memobs: # already imported continue logger.info("Mise à jour de : {}".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("{} lines analysées, {} mises à jour".format(analysed, updated)) if __name__ == "__main__": main() logger.info("-- Fin --")