diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/monthend_interest_recon.py | 95 |
1 files changed, 44 insertions, 51 deletions
diff --git a/python/monthend_interest_recon.py b/python/monthend_interest_recon.py index 93844d14..429511a5 100644 --- a/python/monthend_interest_recon.py +++ b/python/monthend_interest_recon.py @@ -19,29 +19,25 @@ from dateutil.relativedelta import relativedelta logger = logging.getLogger(__name__) -def download_messages(em, counterparty, start, end, recon=False): +def get_fpath(counterparty, save=False): + if not save: + return DAILY_DIR / "Serenitas" / "MonthlyInterest" / f"{counterparty}_reports" + elif counterparty == "CITI": + return DAILY_DIR / f"{counterparty}_reports" / "Interest Statements" + elif counterparty == "BAML": + return DAILY_DIR / "Serenitas" / f"BoA_reports" / "Interest Statements" + else: + return ( + DAILY_DIR / "Serenitas" / f"{counterparty}_reports" / "Interest Statements" + ) + + +def download_messages(em, counterparty, start, end, save=False): for msg in em.get_msgs( 20, path=["Interest", counterparty], ): - if recon: - base_dir = ( - DAILY_DIR / "Serenitas" / "MonthlyInterest" / f"{counterparty}_reports" - ) - else: - if counterparty == "CITI": - base_dir = DAILY_DIR / f"{counterparty}_reports" / "Interest Statements" - elif counterparty == "BAML": - base_dir = ( - DAILY_DIR / "Serenitas" / f"BoA_reports" / "Interest Statements" - ) - else: - base_dir = ( - DAILY_DIR - / "Serenitas" - / f"{counterparty}_reports" - / "Interest Statements" - ) + base_dir = get_fpath(counterparty, save) if (msg.datetime_sent.date() >= datetime.date.fromisoformat(start)) and ( msg.datetime_sent.date() <= datetime.date.fromisoformat(end) ): @@ -71,8 +67,10 @@ def download_messages(em, counterparty, start, end, recon=False): def get_CS(g): - for e in g: + for e in list(g)[-1]: if "This interest, margin" in e.text: + if value == "No Accruals to Report": + return 0 return float(value) value = e.text @@ -139,16 +137,9 @@ def get_interest(counterparties, save=False): for file in Path( f"/home/serenitas/Daily/Serenitas/MonthlyInterest/{cp}_reports" ).glob("*.pdf"): - g = iter(load_pdf(file)) + g = iter(load_pdf(file, pages=True if cp == "CS" else False)) amount = func(g) interest_amounts[cp] = interest_amounts[cp] + amount - if not save: - try: - shutil.rmtree( - f"/home/serenitas/Daily/Serenitas/MonthlyInterest/{cp}_reports" - ) - except FileNotFoundError: - pass return pd.DataFrame(interest_amounts, index=[0]).T.rename( index={"BAML": "BAML_ISDA"}, columns={0: "monthly_statement"} ) @@ -159,14 +150,10 @@ def main(): counterparties = ["BNP", "CITI", "CS", "GS", "MS", "BAML", "JPM"] parser = argparse.ArgumentParser(description="determine sender destination") - parser.add_argument("start") - parser.add_argument("end", default=datetime.date.today()) parser.add_argument( - "--recon", - action="store_true", - default=False, - help="for automation or for monthly", + "start", default=(datetime.date(2021, datetime.date.today().month, 1)) ) + parser.add_argument("end", default=datetime.date.today()) parser.add_argument( "--save", action="store_true", @@ -176,24 +163,30 @@ def main(): args = parser.parse_args() for cp in counterparties: - download_messages(em, cp, args.start, args.end, recon=args.recon) + download_messages(em, cp, args.start, args.end, args.save) - if args.recon: - df = get_interest(counterparties, save=args.save) - start, end = start_end( - datetime.datetime.today().year, datetime.datetime.today().month - 1 - ) - global interest_recon - interest_recon = pd.merge( - export_data(start, end).groupby("broker").sum(), - df, - how="outer", - left_index=True, - right_index=True, - ) - interest_recon["difference"] = ( - interest_recon["amount"] - interest_recon["monthly_statement"] - ) + df = get_interest(counterparties, save=args.save) + start, end = start_end( + datetime.datetime.today().year, datetime.datetime.today().month - 1 + ) + global interest_recon + interest_recon = pd.merge( + export_data(start, end).groupby("broker").sum(), + df, + how="outer", + left_index=True, + right_index=True, + ) + interest_recon["difference"] = ( + interest_recon["amount"] - interest_recon["monthly_statement"] + ) + print(interest_recon) + accept = input() + if accept: + df = export_data(start, end) + for k, v in interest_recon["difference"].items(): + df.loc[k].loc["CSH_CASH"] -= v + df.to_csv("/home/serenitas/flint/interest_recon.csv") if __name__ == "__main__": |
