Parcourir la source

Incomplete month detection.

pitchum il y a 8 ans
Parent
commit
9b837569c5
1 fichiers modifiés avec 11 ajouts et 4 suppressions
  1. 11 4
      ccoop_resplit.py

+ 11 - 4
ccoop_resplit.py

@@ -92,8 +92,6 @@ class CsvStatementParser(object):
             return
         curmonth = firstmonth
         def __openfile__(curmonth):
-            dt = datetime.strptime(str(curmonth), '%Y%m')
-            # fname = "releve_{0}__{1:_<5}_{2}.csv".format(curmonth, dt.strftime('%b'), dt.strftime('%Y'))
             fname = "releve_{0}.csv".format(curmonth)
             outfile = open(os.path.join(outputdir, fname), 'w')
             writer = csv.DictWriter(outfile, self.fieldnames, delimiter=';')
@@ -109,7 +107,11 @@ class CsvStatementParser(object):
             if month > curmonth:
                 outfile.close()
                 curmonth = month
-                outfile, writer = __openfile__(curmonth)
+                if month in self.badmonths:
+                    outfile, writer = __openfile__(str(curmonth) + "_potentiellement_incomplet")
+                else:
+                    outfile, writer = __openfile__(curmonth)
+                
             writer.writerow(line[1])
         outfile.close()
         print("Relevés mensuels générés dans le dossier %s" % os.path.abspath(outputdir))
@@ -120,6 +122,7 @@ class CsvStatementParser(object):
         Helps finding possible missing operations if exported CSV files
         are not "contiguous".
         """
+        self.badmonths = set()
         print("\nRecherche de chevauchements (les chevauchements de fichiers CSV c'est bien, ça rassure)...")
         for filename, first_op in self.first_ops.items():
             if first_op in self.overlap_detector:
@@ -131,6 +134,7 @@ class CsvStatementParser(object):
                         if self.first_ops[candidate] == first_op:
                             otherfiles.remove(candidate)
                 if len(otherfiles) == 0:
+                    self.badmonths.add(int(first_op[0:7].replace('-', '')))
                     print("Attention. Il y a peut-être des écritures manquantes avant le %s (fichier %s)." % (first_op[0:10], os.path.basename(filename)))
         
         for filename, last_op in self.last_ops.items():
@@ -143,6 +147,7 @@ class CsvStatementParser(object):
                         if self.last_ops[candidate] == last_op:
                             otherfiles.remove(candidate)
                 if len(otherfiles) == 0:
+                    self.badmonths.add(int(last_op[0:7].replace('-', '')))
                     print("Attention. Il y a peut-être des écritures manquantes après le %s (fichier %s)." % (last_op[0:10], os.path.basename(filename)))
         print("")
 
@@ -163,7 +168,9 @@ def start_cli(dirpath):
         os.makedirs(outputdir)
     
     # Générer un relevé intégral et des relevés mensuels
-    p.dump_full(os.path.join(outputdir, "integral.csv"))
+    suffix = "_{0:%Y-%m-%d}__{1:%Y-%m-%d}".format(p.daterange[0], p.daterange[1])
+    if len(p.badmonths): suffix += "_avec_des_trous"
+    p.dump_full(os.path.join(outputdir, "integral%s.csv" % suffix))
     p.dump_monthly_reports(outputdir)
 
 if __name__ == '__main__':