Ver Fonte

Fix sort order and add more store codes

Daniel Sheffield há 3 anos atrás
pai
commit
19a1e5c56f
1 ficheiros alterados com 23 adições e 11 exclusões
  1. 23 11
      reconcile.py

+ 23 - 11
reconcile.py

@@ -16,6 +16,19 @@ from psycopg2.sql import (
     Placeholder,
     Composed,
 )
+
+STORE_CODES = {
+    'countdown': 'CD',
+    'pak n save': 'PnS',
+    'SEAFOOD BAZAAR': 'SB',
+    'THE ORGANIC FOOD SHOP HAMILTON': 'TOFS',
+    'WHATAWHATA BERRY FARM': 'Farm',
+    'TAUPIRI DAIRY TAUPIRI': 'TD',
+    'THE FARM SHOP': 'GFS',
+    'Dreamview Cre': 'DV',
+    'new world': 'NW',
+}
+
 user = os.getenv('USER')
 conn = psycopg2.connect(f"host=***REMOVED*** dbname=das user={user} password='***REMOVED***'")
 cur = conn.cursor()
@@ -33,14 +46,13 @@ def cursor_as_dict(cur):
         #print(row)
         yield row
 
-def get_store_code(store, user_data=dict()):
-    if 'countdown' in store.lower():
-        return 'CD'
-    if 'pak n save' in store.lower():
-        return 'PnS'
-    
+def get_store_code(store, value, user_data=dict()):
+    for k, v in STORE_CODES.items():
+        if k.lower() in store.lower():
+            return v
+
     if store not in user_data:
-        user_data[store] = input(f"Enter code for {store}: ")
+        user_data[store] = input(f"Enter code for {store} ({int(value)/100:>6.2f}): ")
     return user_data[store]
 
 select = {
@@ -172,14 +184,14 @@ if __name__ == '__main__':
         ] for i in range(_from, _to, _interval)
     ])
     tot = dict()
-    for p,n,value,desc,d in sorted(_iter(session.book.get_root_account(), blacklist, whitelist, _from, _to)):
+    for p,n,value,desc,d in sorted(_iter(session.book.get_root_account(), blacklist, whitelist, _from, _to), key=lambda x: x[0]):
         account_name = ':'.join([*p, n])
         f = next(( f for (f, t) in ranges.items() if f <= d < t ))
         tot.update({
             f: value if f not in tot else value+tot[f]
         })
         ts = d
-        store = get_store_code(desc)
+        store = get_store_code(desc, value)
         book = None
         while ts > d - timedelta(days=3):
             book = get_record_from_database(ts, store)
@@ -188,8 +200,8 @@ if __name__ == '__main__':
                 break;
             ts = ts - timedelta(days=1)
             book = get_record_from_database(ts, store)
-        dbentry = f'{book/100:>06.2f} : {store:5s}' if book == int(value) else ''
-        print(f'{d} {desc:35s} : {value/100:>06.2f} | {dbentry}')
+        dbentry = f'{ts} {store:5s}' if book == int(value) else ''
+        print(f'{d} {desc:35s} : {value/100:>6.2f} | {dbentry}')
         
   finally:
     session.end()