Browse Source

ctrl2analytique: Corrections diverses

olivier.massot 7 years ago
parent
commit
aed7d1eddf
2 changed files with 65 additions and 28 deletions
  1. 31 28
      ctrl2analytique.py
  2. 34 0
      resources/test_ctrl2analytique.py

+ 31 - 28
ctrl2analytique.py

@@ -139,7 +139,7 @@ for data in controles_db.read(sql):
 
     compteur += 1
 
-logger.info("> {} affaires ajoutées à {}".format(compteur, affaires_file))
+logger.info("> {} affaires ajoutées au fichier".format(compteur))
 
 
 
@@ -174,17 +174,18 @@ def get_periode_validite(date_interv):
 compteur = 0
 
 sql = """SELECT tblCompactageIntervs.lngChantierId, tblCompactageIntervs.bytCommandeId, tblCompactageIntervs.bytIntervId, tblCompactageIntervs.strEquipeId,
-        tblCompactageEngins.strEnginId, tblCompactageIntervs.lngRapportId, tblCompactageBases.memTravaux, tblCompactageResultats.dtmEssai,
-        tblCompactageResultats.dtmDuree, tblCompactagePartChantiers.strTrcRegard, tblMateriaux.strMatériau,
-        tblCompactageResultats.bytPartChantierId, tblCompactageIntervs.sngIntervIdMos
+            tblCompactageEngins.strEnginId, tblCompactageIntervs.lngRapportId, tblCompactageBases.memTravaux, tblCompactageResultats.dtmEssai, tblCompactageResultats.dtmDuree,
+            tblCompactagePartChantiers.strTrcRegard, tblMateriaux.strMatériau AS str_materiau_remblai, tblMateriaux_1.strMatériau AS str_materiau_enrobage,
+            tblMateriaux_2.strMatériau AS str_materiau_lit, tblCompactageResultats.bytPartChantierId, tblCompactageIntervs.sngIntervIdMos
         FROM ((tblMateriaux RIGHT JOIN ((((tblCompactageIntervs LEFT JOIN tblCompactageEngins ON tblCompactageIntervs.strEquipeId = tblCompactageEngins.strEquipeId)
-        INNER JOIN tblCompactageResultats ON (tblCompactageIntervs.bytIntervId = tblCompactageResultats.bytIntervId)
-        AND (tblCompactageIntervs.lngChantierId = tblCompactageResultats.lngChantierId)) INNER JOIN tblCompactagePartChantiers
-        ON (tblCompactageResultats.bytPartChantierId = tblCompactagePartChantiers.bytPartChantierId)
-        AND (tblCompactageResultats.lngChantierId = tblCompactagePartChantiers.lngChantierId)) INNER JOIN tblCompactageBases
-        ON tblCompactageIntervs.lngChantierId = tblCompactageBases.lngChantierId) ON tblMateriaux.strMateriauId = tblCompactagePartChantiers.strMateriauRemblaiId)
-        LEFT JOIN tblMateriaux AS tblMateriaux_1 ON tblCompactagePartChantiers.strMateriauEnrobageId = tblMateriaux_1.strMateriauId)
-        LEFT JOIN tblMateriaux AS tblMateriaux_2 ON tblCompactagePartChantiers.strMateriauLitId = tblMateriaux_2.strMateriauId
+            INNER JOIN tblCompactageResultats ON (tblCompactageIntervs.lngChantierId = tblCompactageResultats.lngChantierId) AND
+            (tblCompactageIntervs.bytIntervId = tblCompactageResultats.bytIntervId)) INNER JOIN tblCompactagePartChantiers ON
+            (tblCompactageResultats.lngChantierId = tblCompactagePartChantiers.lngChantierId) AND
+            (tblCompactageResultats.bytPartChantierId = tblCompactagePartChantiers.bytPartChantierId))
+            INNER JOIN tblCompactageBases ON tblCompactageIntervs.lngChantierId = tblCompactageBases.lngChantierId)
+            ON tblMateriaux.strMateriauId = tblCompactagePartChantiers.strMateriauRemblaiId) LEFT JOIN tblMateriaux AS tblMateriaux_1
+            ON tblCompactagePartChantiers.strMateriauEnrobageId = tblMateriaux_1.strMateriauId) LEFT JOIN tblMateriaux AS tblMateriaux_2
+            ON tblCompactagePartChantiers.strMateriauLitId = tblMateriaux_2.strMateriauId
         WHERE (((tblCompactageIntervs.sngIntervIdMos)=0 Or (tblCompactageIntervs.sngIntervIdMos) Is Null))
       """
 
@@ -209,7 +210,7 @@ for data in controles_db.read(sql):
     interv.strRapportId = data.lngRapportId
     interv.strTypeInterventionId = get_type_compactage_interv(data.memTravaux)
     interv.strCatégorieInterventionId = "CC"
-    interv.dblquantite = 1
+    interv.dblquantite = 1.0
     interv.strunite = "u"
     interv.dtmIntervention = data.dtmEssai
     interv.dtmDureeIntervention = data.dtmDuree
@@ -217,10 +218,10 @@ for data in controles_db.read(sql):
     interv.strLiaisonControle = "{}/{}/{}".format(data.lngChantierId, data.bytCommandeId, data.bytIntervId)
     interv.strArticleId = data.strEnginId
     interv.intPeriode = get_periode_validite(data.dtmEssai)
-    interv.remarques = data.strTrcRegard
-    interv.strgrandeur1 = data.strMatériau
-    interv.strgrandeur2 = data.strMatériau
-    interv.strgrandeur3 = data.strMatériau
+    interv.remarques = data.strTrcRegard if data.strTrcRegard else "-"
+    interv.strgrandeur1 = data.str_materiau_remblai
+    interv.strgrandeur2 = data.str_materiau_lit
+    interv.strgrandeur3 = data.str_materiau_enrobage
     interv.strcaracteristique1 = "Matériau remblai"
     interv.strcaracteristique2 = "Matériau lit de pose"
     interv.strcaracteristique3 = "Matériau enrobage"
@@ -279,7 +280,7 @@ for data in controles_db.read(sql):
     interv.strRapportId = data.lngRapportId
     interv.strTypeInterventionId = "CE{}".format(data.bytTypeEssai)
     interv.strCatégorieInterventionId = "CE"
-    interv.dblquantite = int(data.intNbJoint)
+    interv.dblquantite = float(data.intNbJoint)
     interv.strunite = "u"
     interv.dtmIntervention = data.dtmEssai
     interv.dtmDureeIntervention = data.dtmDuree
@@ -287,7 +288,7 @@ for data in controles_db.read(sql):
     interv.strLiaisonControle = "{}/{}/{}".format(data.lngChantierId, data.bytCommandeId, data.bytIntervId)
     interv.strArticleId = interv.strEnginId
     interv.intPeriode = get_periode_validite(data.dtmEssai)
-    interv.remarques = data.strTrcRegard
+    interv.remarques = data.strTrcRegard if data.strTrcRegard else "-"
     interv.strgrandeur1 = data.strMatériau
     interv.strgrandeur2 = data.intDiametre
     interv.strgrandeur3 = data.sngLgHt
@@ -343,7 +344,7 @@ for data in controles_db.read(sql):
     interv.strRapportId = data.lngRapportId
     interv.strTypeInterventionId = "CI1" if data.strEntrepriseId != 195 else "CI2"
     interv.strCatégorieInterventionId = "CI"
-    interv.dblquantite = int(data.sngNbJourFact)
+    interv.dblquantite = float(data.sngNbJourFact)
     interv.strunite = "j"
     interv.dtmIntervention = data.dtmIntervDu
     interv.dtmDureeIntervention = data.dtmDuree
@@ -351,7 +352,7 @@ for data in controles_db.read(sql):
     interv.strLiaisonControle = "{}/{}/{}".format(data.lngChantierId, data.bytCommandeId, data.bytIntervId)
     interv.strArticleId = data.strEnginId
     interv.intPeriode = get_periode_validite(data.dtmIntervDu)
-    interv.remarques = data.memObservation
+    interv.remarques = data.memObservation if data.memObservation else "-"
     interv.strgrandeur1 = data.strmateriau
     interv.strgrandeur2 = data.diam
     interv.strgrandeur3 = data.lngTroncon
@@ -466,15 +467,16 @@ while errors:
         for msg in errors:
             logging.error(msg)
     else:
-        logging.info("Aucune erreur n'a été détéctée dans les données.")
+        logging.info("Aucune erreur n'a été détectée dans les données.")
         if no_prompt:
             break
 
-#     prompt = ""
-#     while prompt != "v":
-#         prompt = input(">> Veuillez contrôler les données, puis taper 'v' pour continuer, ou 'q' pour quitter...")
-#         if prompt == "q":
-#             sys.exit(1)
+    prompt = ""
+    while prompt != "v":
+        prompt = input(">> Veuillez contrôler les données, puis taper 'v' pour continuer, ou 'q' pour quitter...")
+        if prompt == "q":
+            logger.info("# Annulation de l'import")
+            sys.exit(1)
 
 
 
@@ -569,7 +571,7 @@ for strRapportId, strArticleId in set([(interv.strRapportId, interv.strArticleId
     tarif.DblAffaireId = tarif.intervs[0].dblAffaireId
     tarif.strRapportId = strRapportId
     tarif.strArticleId = strArticleId
-    tarif.dblQuantite = sum([int(interv.dblquantite) for interv in tarif.intervs])
+    tarif.dblQuantite = sum([float(interv.dblquantite) for interv in tarif.intervs])
     tarif.strUnite = tarif.intervs[0].strunite
     tarif.dtmDebut = min([interv.dtmIntervention for interv in tarif.intervs])
     tarif.dtmFin = max([interv.dtmIntervention for interv in tarif.intervs])
@@ -656,7 +658,8 @@ for interv in analytique_db.read(sql):
         tps_install = ((8 / 24) - interv.SD)
         sql = """UPDATE tbl_Intervention SET tbl_Intervention.dtmDureeInstallation = #{}#
                  WHERE (((tbl_Intervention.dblInterventionId)={}));""".format(tps_install, interv.dblInterventionId)
+        analytique_db.execute(sql)
         logger.debug("* Mise à jour du temps d'installation de l'intervention {}".format(interv.dblInterventionId))
-
+analytique_db.commit()
 
 logger.info("# Import terminé")

+ 34 - 0
resources/test_ctrl2analytique.py

@@ -0,0 +1,34 @@
+'''
+
+@author: olivier.massot
+'''
+from path import Path
+
+from core.pde import ControlesDb, AnalytiqueDb, CommunDb
+
+# reinitialise les données pour les tests de ctrl2analytique.py
+
+ControlesDb._path = Path(r"\\h2o\local\4-transversal\BDD\mdb_test\cg67Parc_data.mdb")
+AnalytiqueDb._path = Path(r"\\h2o\local\4-transversal\BDD\mdb_test\Db_analytique.mdb")
+CommunDb._path = Path(r"\\h2o\local\4-transversal\BDD\mdb_test\Commun_Data.mdb")
+
+analytique_db = AnalytiqueDb(autocommit=False)
+controles_db = ControlesDb(autocommit=False)
+commun_db = CommunDb(autocommit=False)
+
+for num_aff in ("175256", "175195"):
+    controles_db.execute("UPDATE tblCommandes SET sngAffaireIdMos = 0 WHERE [lngChantierId] = {} AND [bytCommandeId] = 1".format(num_aff))
+    controles_db.execute("UPDATE tblEtancheiteIntervs SET sngIntervIdMos = 0 WHERE [lngChantierId] = {} AND [bytCommandeId] = 1".format(num_aff))
+    controles_db.execute("UPDATE tblCompactageIntervs SET sngIntervIdMos = 0 WHERE [lngChantierId] = {} AND [bytCommandeId] = 1".format(num_aff))
+    controles_db.execute("UPDATE tblVideoIntervs SET sngIntervIdMos = 0 WHERE [lngChantierId] = {} AND [bytCommandeId] = 1".format(num_aff))
+    controles_db.commit()
+
+    affaire = analytique_db.first("SELECT DblAffaireId FROM tbl_Affaires WHERE strLiaisonControle='{}/1'".format(num_aff))
+    if affaire:
+        aff_id = affaire.DblAffaireId
+        analytique_db.execute("DELETE * FROM tbl_Intervention WHERE [DblAffaireId]={}".format(aff_id))
+        analytique_db.execute("DELETE * FROM tbl_Tarification WHERE [DblAffaireId]={}".format(aff_id))
+        analytique_db.execute("DELETE * FROM tbl_Affaires WHERE [DblAffaireId]={}".format(aff_id))
+        analytique_db.commit()
+
+