analytique2facture.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. '''
  2. Génère des factures dans la base Factures à partir des données de Tarification de Analytique
  3. @author: olivier.massot, févr. 2018
  4. '''
  5. import logging
  6. import sys
  7. from path import Path
  8. from core import logconf
  9. from core.pde import FacturesDb, AnalytiqueDb, CommunDb
  10. logger = logging.getLogger("analytique2facture")
  11. logconf.start("analytique2facture", logging.DEBUG)
  12. # # POUR TESTER, décommenter les lignes suivantes
  13. ##-----------------------------------------------
  14. logger.warning("<<<<<<<<<<<<<< Mode TEST >>>>>>>>>>>>>>>>>")
  15. AnalytiqueDb._path = Path(r"\\h2o\local\4-transversal\BDD\mdb_test\Db_analytique.mdb")
  16. FacturesDb._path = Path(r"\\h2o\local\4-transversal\BDD\mdb_test\Facture_data.mdb")
  17. CommunDb._path = Path(r"\\h2o\local\4-transversal\BDD\mdb_test\Commun_Data.mdb")
  18. ##-----------------------------------------------
  19. # Connexion à Analytique
  20. analytique_db = AnalytiqueDb(autocommit=False)
  21. # Connexion à Controles
  22. facture_db = FacturesDb(autocommit=False)
  23. # Connexion à CommunDb
  24. commun_db = CommunDb(autocommit=False)
  25. mois_facturation = input("Veuillez renseigner le mois de facturation ('q' pour quitter): ") # Format: voir avec jacky
  26. if mois_facturation == 'q':
  27. sys.exit(1)
  28. sql = """SELECT * FROM tbl_Tarification
  29. WHERE strStatut='A facturer'
  30. ORDER BY DblAffaireId, DblTarifId DESC;
  31. """
  32. if not analytique_db.exists(sql):
  33. logger.info("Aucune facture à créer - Opération annulée")
  34. sys.exit(1)
  35. # On va créer une facture commune à toutes les interventions 'à facturer' d'une même affaire (cad qui ont un numéro de pièce commun)
  36. # > Pour chaque facture, on va ajouter une ligne dans tblPieceEntete, et une ligne par intervention dans tblPieceLigne
  37. # > NB: On ne touche pas aux interventions de cette affaire qui ont déja été facturées
  38. for tarif in analytique_db.read(sql):
  39. pass