import datetime from citco_ops.utils import BamlFcmNotify from serenitas.utils.db2 import dbconn from tabulate import tabulate if __name__ == "__main__": import argparse parser = argparse.ArgumentParser() parser.add_argument( "date", nargs="?", type=datetime.date.fromisoformat, default=datetime.date.today(), help="working date", ) args = parser.parse_args() sql_str = ( "SELECT settle_date, buy_currency, buy_amount, " "sell_currency, sell_amount, spot_rate FROM spots " "WHERE cash_account = 'V0NSCLMSPT' AND trade_date = %s" ) dawndb = dbconn("dawndb") with dawndb.cursor() as c: c.execute(sql_str, (args.date,)) rec = next(iter(c)) if rec: if rec.buy_currency == "EUR": data = [ "6MZ20049", "EUR", -rec.buy_amount, "USD", rec.spot_rate, rec.sell_amount, "Buy", rec.settle_date, ] else: data = [ "6MZ20049", "EUR", rec.sell_amount, "USD", rec.spot_rate, rec.buy_amount, "Sell", rec.settle_date, ] num_format = [("{0:,.2f}", 2), ("{0:.5f}", 4), ("{0:,.2f}", 5)] for f, i in num_format: data[i] = f.format(data[i]) t = tabulate( [data], headers=[ "account", "curr", "TotBal", "HomeCurrency", "fxRate", "convTotBal", "BuySell", "Value Date", ], tablefmt="unsafehtml", ) BamlFcmNotify.email_fcm(args.date, t)