diff --git a/python/report.py b/python/report.py index 427f89e..b2710ab 100644 --- a/python/report.py +++ b/python/report.py @@ -19,13 +19,18 @@ # localize sentences = { 'it': - [f'Ciao, ecco le ultime {args.nexp} spese:', - f'Totale speso dal', - f'Totale per ogni utente dal'], + [f'Ciao, ecco le ultime {args.nexp} spese dal', + f'Bilancio', + f'Bilancio per ogni utente', + f'Uscite', + f'Uscite per ogni utente', + f'Entrate', + f'Entrate per ogni utente' + ], 'en': - [f'Hi, here\'s the latest {args.nexp} expenses:', - f'Total sum of expenses since', - f'Sum of expenses for every user since']} + [f'Hi, here\'s the latest {args.nexp} expenses since', + f'Total balance since', + f'Balance for every user since']} # load CSV @@ -34,29 +39,54 @@ df['FloatValue'] = df[['Value']].astype(float) recent = df.sort_values(by='dt', ascending=False) +startdate = recent.dt.iloc[-1].date() # latest N expenses -print(sentences[args.lang][0] + '\n') +print('{0} {1}:\n'.format( + sentences[args.lang][0], + startdate)) print( recent[['ID', 'Time', 'Value', 'User', 'Notes']] .head(int(args.nexp)) # only print latest args.nexp expenses .to_string(index=False)) -# totals of whole -startdate = recent.dt.iloc[-1].date() +# balance ntot = recent.FloatValue.sum() -print('\n{0} {1}:\n{2:.2f} euro'.format( +print('\n{0}:\n{1:.2f} euro'.format( sentences[args.lang][1], - startdate, abs(ntot))) usertot = pd.DataFrame(recent[['User','FloatValue']].groupby('User', group_keys=True).sum()) -print('\n{0} {1}:'.format( - sentences[args.lang][2], - startdate)) +print('\n{0}:'.format(sentences[args.lang][2])) for user,value in usertot.iterrows(): print('{0}: {1:.2f} euro'.format(user,abs(value.values[0]))) + +# outgoing +outgoing = recent.loc[recent['FloatValue'] < 0].FloatValue.sum() +userOut = pd.DataFrame(recent[['User','FloatValue']].loc[recent['FloatValue'] < 0].groupby('User', group_keys=True).sum()) + +print('\n{0}:\n{1:.2f} euro'.format( + sentences[args.lang][3], + abs(outgoing))) + +print('\n{0}:'.format(sentences[args.lang][4])) + +for user,value in userOut.iterrows(): + print('{0}: {1:.2f} euro'.format(user,abs(value.values[0]))) + +# incoming +incoming = recent.loc[recent['FloatValue'] >= 0].FloatValue.sum() +userIn = pd.DataFrame(recent[['User','FloatValue']].loc[recent['FloatValue'] >= 0].groupby('User', group_keys=True).sum()) + +print('\n{0}:\n{1:.2f} euro'.format( + sentences[args.lang][5], + abs(incoming))) + +print('\n{0}:'.format(sentences[args.lang][6])) + +for user,value in userIn.iterrows(): + print('{0}: {1:.2f} euro'.format(user,abs(value.values[0])))