aboutsummaryrefslogtreecommitdiffstats
path: root/python/innocap_bond_setts.py
blob: 6a5b6281b88743740c34710265b6d3987ef25dfa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import datetime
from serenitas.utils.db import dbconn
from report_ops.utils import PaymentSettlement, next_business_days
from serenitas.analytics.dates import prev_business_day


def get_cash_balance(account_number, date, conn):
    with conn.cursor() as c:
        sql_str = "SELECT balance, currency_code from cash_balances WHERE account_number=%s AND date=%s"
        c.execute(sql_str, (account_number, date))
        return {row.currency_code: row.balance for row in c}


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()
    conn = dbconn("dawndb")
    sql_str = "SELECT currency, sum(payment_amount) as payment_amount FROM payment_settlements ps2 WHERE fund=%s AND asset_class in ('BOND', 'SPOT') AND settle_date BETWEEN %s AND %s AND currency=%s group by currency;"
    cash_balances = get_cash_balance("ISOS01", prev_business_day(args.date), conn)
    with conn.cursor() as c:
        for fund in ("ISOSEL",):
            for date in (
                args.date,
                next_business_days(args.date, 1),
                next_business_days(args.date, 2),
            ):
                for currency in ("USD", "EUR"):
                    params = (fund, args.date, date, currency)
                    c.execute(sql_str, params)
                    PaymentSettlement.stage_payment(c, date)
            PaymentSettlement.email_innocap(args.date, cash_balances)