diff --git a/python/report.py b/python/report.py index 89930fd..905ad13 100644 --- a/python/report.py +++ b/python/report.py @@ -14,6 +14,7 @@ parser.add_argument('-f', '--filename') parser.add_argument('-n', '--nexp') parser.add_argument('-l', '--lang') +parser.add_argument('-t', '--period') args = parser.parse_args() # localize @@ -37,60 +38,67 @@ f'Sum of incoming for every user']} -# load CSV -df = pd.read_csv(args.filename) -df['dt'] = pd.to_datetime(df['Time']) -df['FloatValue'] = df[['Value']].astype(float) +def whole_report(df, startDate): + # latest N expenses + print('{0} {1}:\n'.format( + sentences[args.lang][0], + startDate)) -recent = df.sort_values(by='dt', ascending=False) -startdate = recent.dt.iloc[-1].date() + print( + df[['ID', 'Time', 'Value', 'User', 'Notes']] + .head(int(args.nexp)) # only print latest args.nexp expenses + .to_string(index=False)) -# latest N expenses -print('{0} {1}:\n'.format( - sentences[args.lang][0], - startdate)) + # balance + ntot = df.FloatValue.sum() -print( - recent[['ID', 'Time', 'Value', 'User', 'Notes']] - .head(int(args.nexp)) # only print latest args.nexp expenses - .to_string(index=False)) + print('\n{0}:\n{1:.2f} euro'.format( + sentences[args.lang][1], + ntot)) -# balance -ntot = recent.FloatValue.sum() + usertot = pd.DataFrame(df[['User','FloatValue']].groupby('User', group_keys=True).sum()) -print('\n{0}:\n{1:.2f} euro'.format( - sentences[args.lang][1], - ntot)) + print('\n{0}:'.format(sentences[args.lang][2])) -usertot = pd.DataFrame(recent[['User','FloatValue']].groupby('User', group_keys=True).sum()) + for user,value in usertot.iterrows(): + print('{0}: {1:.2f} euro'.format(user,abs(value.values[0]))) -print('\n{0}:'.format(sentences[args.lang][2])) + # outgoing + outgoing = df.loc[df['FloatValue'] < 0].FloatValue.sum() + userOut = pd.DataFrame(df[['User','FloatValue']].loc[df['FloatValue'] < 0].groupby('User', group_keys=True).sum()) -for user,value in usertot.iterrows(): - print('{0}: {1:.2f} euro'.format(user,abs(value.values[0]))) + print('\n{0}:\n{1:.2f} euro'.format( + sentences[args.lang][3], + abs(outgoing))) -# 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}:'.format(sentences[args.lang][4])) -print('\n{0}:\n{1:.2f} euro'.format( - sentences[args.lang][3], - abs(outgoing))) + for user,value in userOut.iterrows(): + print('{0}: {1:.2f} euro'.format(user,abs(value.values[0]))) -print('\n{0}:'.format(sentences[args.lang][4])) + # incoming + incoming = df.loc[df['FloatValue'] >= 0].FloatValue.sum() + userIn = pd.DataFrame(df[['User','FloatValue']].loc[df['FloatValue'] >= 0].groupby('User', group_keys=True).sum()) -for user,value in userOut.iterrows(): - print('{0}: {1:.2f} euro'.format(user,abs(value.values[0]))) + print('\n{0}:\n{1:.2f} euro'.format( + sentences[args.lang][5], + abs(incoming))) -# 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}:'.format(sentences[args.lang][6])) -print('\n{0}:\n{1:.2f} euro'.format( - sentences[args.lang][5], - abs(incoming))) + for user,value in userIn.iterrows(): + print('{0}: {1:.2f} euro'.format(user,abs(value.values[0]))) -print('\n{0}:'.format(sentences[args.lang][6])) +if __name__ == '__main__': + # load CSV + input = pd.read_csv(args.filename) + input['dt'] = pd.to_datetime(input['Time']) + input['FloatValue'] = input[['Value']].astype(float) -for user,value in userIn.iterrows(): - print('{0}: {1:.2f} euro'.format(user,abs(value.values[0]))) + df = input.sort_values(by='dt', ascending=False) + startDate = df.dt.iloc[-1].date() + + if not args.period: + whole_report(df, startDate) + else: + print(args.period) diff --git a/python/report.sh b/python/report.sh index 21103ef..0a5254a 100755 --- a/python/report.sh +++ b/python/report.sh @@ -1,11 +1,23 @@ #!/bin/bash -if [[ "$#" -ne 3 ]]; then - echo "Usage: ./report.sh " +function print_usage() { + echo "Usage: ./report.sh " +} + +if [[ "$#" -lt 3 ]]; then + print_usage exit 1 fi DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) source ${DIR}/bin/activate -python3 ${DIR}/report.py -f $1 -n $2 -l $3 + +if [[ "$#" -eq 3 ]]; then + python3 ${DIR}/report.py -f $1 -n $2 -l $3 +elif [[ "$#" -eq 4 ]]; then + python3 ${DIR}/report.py -f $1 -n $2 -l $3 -t $4 +else + print_usage + exit 1 +fi