Interest allocation 总结
好,不着急,慢慢写,当作是回顾,加上总结。
interest allocation, 其实是一个SR,什么是SR, service request, 这个finance项目,总的来说有三类tickets:
1是PM: problem mangement, 当users碰到urgent的问题,需要及时处理,就会rise一个PM,需要及时处理,拖不得,最好是马上或者当天就能解决。
2是CS: customer service, 一般有些什么data downing 等等,或者是对系统想要有些什么改动,会log 成一个CS ,牵涉到系统改动的CS, 一般会变成一个Impact Analysis(IA),如果这些CS被approved, 或者users想要了,就会变成SR.
凡是扯到系统修改,是要收钱的,于是,interest allocation, 会需要 100 过个manday。一般一些小的SR,也就几个或者10几个manday,所以这个,应该来说是个大的SR。
废话不多说。
背景:
现目前来说,财务部会有很多和他合作的公司等,简称SB,他们会放钱在财务部(简称AGD),于是AGD负责帮他们保管,在大多数时候,AGD 会把他们存在银行,不管是Fixed Deposit 也好,还是活期, 这些钱都会产生一定的利息,于是乎,这些利息,会需要还给这些SB.
现目前,AGD 是manual 算这个利息,其实我觉得,这样的东西,直接自己算就好了嘛,干嘛要花那么多钱算,可是,没想到这个interest allocation 相关模块Treaury(fully customized)是AGD 老大很喜欢的模块,然后正好遇到那个负责算这个interest 的人离职了。于是,这个SR就被approved。
需求阶段:
好, 要把利息还给SB,根据什么来还,怎么样得到他们的interest? 其实最基本的,是根据SB们在银行里面有多少钱来决定的,谁到知道嘛,钱多的利息自然会多一点。 目前,和AGD合作的银行有 DBS, UOB,CITI,OCBC,HSBC,AGD 在这些银行里面都有一个main account ,SB们的钱都会被放在这些main account,当然,SB们在各个银行也会有很多自己的account。于是乎,SB要往AGD 放钱或者拿回钱的时候,自然就是在自己的帐号和main account 之前转账(同一个银行),被叫做,sweep in/out。
因为SB们的钱,都按银行放在AGD 的main account里,于是,每个银行的main account 里的钱,就会有一个SB proportion的概念,当分利息的时候,就是按照这样的proportion去分。
当然,main account 之间 肯定会有钱转来转去,叫做fund transfer,不过这样的钱转,不会影像SB们的proportion,只有当SB们往AGD存钱(sweep in)或者取钱(sweep out)的时候,才会改变这个proportion。
钱在main account之间转来转去的原因只是因为,每个银行的活期存款和定期存款的利率不一样,其实,现在,只有UOB的活期存款有利息,其他的银行只有存Fix Deposit 才有利息。
当然为了避免哪一天AGD会有新的合作银行,或者哪个银行突然之间会有活期存款利率,我们会尽可能的避免所有的hard code, 于是会有一个configration table, 和一个page, 供users config。
其实刚才说的所谓sweep in/out,fund transfer, 都是属于interest 产生的一种transaction, 还有其他的transaction,包括,
1. fixed deposit, 定期存款,肯定会有interest产生,当然利率也是最高的,不过,和fund transfer 一样, 都要注意一个问题,比如,fund transfer,UOB 转了500块钱 到DBS,那我们要很清楚的记录,这个transaction,因为这500块钱是属于UOB的,所以这500块钱在DBS 产生的interest 要还给UOB. fixed deposit 也是一样的,很有可能 UOB 拿500块钱到DBS存一个死期,于是乎,这500块钱也是属于UOB.
2. 银行把利息还给AGD, 然后AGD在把利息分给SB,一般来说,银行会在每个月的第一天把利息还给AGD, AGD 会在当天把利息还给SB们。 但也有可能出于某种原因,没有在当天及时还,在这样的情况下,这些interest 会在AGD 的main account里再次产生利息,这就是传说中的利滚利,怎么说着说着高利贷就要出来了。所以,这样的transaction一定要记录下来,这样的transaction不会影像SB 在银行的proportion。
3. 有一种特殊情况,是因为毕竟AGD是政府部门嘛,所以,每年SB们都会给他们一点所谓的红利,但是也有一些SB们会说,不愿意给这个红利,怎么办哎,于是他们会说,我借点钱给你们,不管你是搞投资也好,干什么也好,我不管,我也不要利息,你们想干嘛就干嘛,到时候本金还给我就是了,这样的transaction, 会以普通的sweep进来,但是,不会改变SB proportion(因为这些钱产生的利息不会还给SB)
4.如果AGD 把SB拿进来的钱存了一个Fixed Deposit, 这个时候,有个SB说,啊,遭了,我现在急需钱,你快把我的钱还给我,这个时候,AGD 没有那么多钱还给SB怎么办,难道真的要terminate 这个FD吗? 这样的话,这个FD产生的所有存款会被清0,啊,怎么办,难道AGD真的一点办法都没有,眼睁睁的看着快要煮熟的鸭子飞了?当然AGD没有笨到这样的程度,这个时候,government出场了,AGD会向government借钱,来维持这个FD,当然,government也不是白借,从government 开始借钱给AGD那天起,该FD所产生的interest都要给government,这之前的interest才能还给SB, 而这一天,被叫做liquidation date。我们有一个新的page去caputer 这个date。
以上基本上就是interest allocation 所需要处理的transaction。但是我们又是怎样得到这样的transaction,或者说知道呢? 一般来说,银行会把transaction当做以interface file的方式 拿过来,然后lode进我们的系统,但是并不是所有的transaction type都会在interface file里面,于是经过协商,因为所有的transaction都会成为journal, 不在interface file里面的transaction,也会以users手动 create journal 的方式进到系统,于是,我们只需要到journal header 和line table里面去拿 想要的transaction,根据transaction交易的时间,把相对应的journal 的数据按transaction type 归类,改变成我们想要的format,按照transaction date 来记录,会有一张表,专门用来记录agd main account balance,模式类似 source bank to destination bank,这样就可以记录transfer 的钱来自哪个银行。还有一个表用来记录 SB 在某个银行内的balance,用来算proportion的。
当然,也有可能出现journal 的posted date很晚(我们只会获取posted date 为P[posted]的journal),而journal date(transaction date)会在当前日期的很多天前,于是处理这样的transaction,从那天到今天的balance,都会要改变。
每天都会有个opening balance,这个balance,其实就是昨天的balance,处理transaction是在这样的balance的基础上得到今天的balance。
当然,也许journal数据出错还是怎么样,有可能会rerun job 以得到新的 amount,所以,会有一个逻辑,是,指定一个日期,从那天起到今天,所有的数据都会重新生成。
所有的程序用SQR 来实现,其中包括,一个daily job ,用来计算AGD main account 的数据,一个monthly 的job ,计算每个SB应得的数据(按天计算,每天都有), 还有两个nVision report, users 根据这个report 来还interest 给SB。
说到SQR,因为没有data set 的概念,所以,基本自己create temp table,也会担心会有performance的问题,因为会很频繁的交互数据库, 本来想到说每次处理的时候先把值赋给一个变量,然后反复处理这个变量,然后在最后update 数据库,或者用array,但是后来想到,可能每天的transaction 不会是很多,于是就将就了。。
可能说得很不清楚,还有很多没有写到,其实主要是写给自己看,用来总结这次做Interest Allocation 的收获,虽然现在还在UAT,不过,这次做这个SR,暴露我很多问题,比如,考虑问题不全面,还有,解释问题居然解释不清楚,这是我第一次听到这样的评价,然后是没有自信,然后是粗心,等等等等。
工作时间不长,以后还有很长的路要走,要想让自己有一番作为,要想改变自己的命运,必须要很努力的前进,弥补自己的不足,不过做什么,都要做到做事有大局观,很有目的,考虑事情要很全面,还有要很细心,还有, 要沉着冷静,充满自信。
与想通过自己的努力改变自己未来的朋友们共勉。。