Exemple #1
0
        /// <summary>
        /// Initialize all collection attributes using DTC Model Number
        /// </summary>
        private void Cal_initAttr_collections(HashSet <decimal> whr_hs, Dividend dvd)
        {
            int optNum = 0;

            foreach (decimal wh_rate in whr_hs)
            {
                Election_item item1 = new Election_item(optNum, wh_rate, "DTC_PARTICIPANT_ELECTION");
                this.DTC_participant_dic[wh_rate] = item1;

                Election_item item2 = new Election_item(optNum, wh_rate, "RSH_ELECTION");
                this.RSH_dic[wh_rate] = item2;

                Election_item item3 = new Election_item(optNum, wh_rate, "TOTAL_ELECTION");
                this.summary.totalEle_dic[wh_rate] = item3;

                ++optNum;
            }

            int cEle_ID = 0;

            foreach (KeyValuePair <int, DividendCustodian> pair in this.dvdCus_dic_custodianType)//<CUSTODIAN_DETAILS>
            {
                int custodianID           = pair.Key;
                DividendCustodian dvdCust = pair.Value;
                if (!dvdCust.Depositary.Value.Equals(this.dvdCust.Depositary.Value, StringComparison.OrdinalIgnoreCase))
                {
                    continue;
                }

                Custodian_ele ce = new Custodian_ele();
                this.custodianEle_dic[custodianID] = ce;

                ce.ID                  = ++cEle_ID;
                ce.CUSTODIAN_NAME      = dvdCust.Get_custodian_fullName();
                ce.CUSTODIAN_REFERENCE = dvdCust.Custodian_Number.Value.ToString();

                optNum = 0;
                foreach (decimal wh_rate in whr_hs)
                {
                    Election_item item1 = new Election_item(optNum, wh_rate, "CUSTODIAN_ELECTION_OPTION");
                    ce.cust_dic[wh_rate] = item1;

                    ++optNum;
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Calculate the difference between sum of values in [Dividend_Detail] and [Dividend_Custodian]
        /// </summary>
        private void SubCal_diff_from_dvdCust(Dividend dvd)
        {
            if (dvd == null)
            {
                return;
            }

            Dictionary <int, decimal> diff_dic = new Dictionary <int, decimal>();  //[Custodian_Number] as key

            foreach (DividendCustodian dc in this.dvdCus_dic_custodianType.Values) //get total from [Dividend_Custodian]
            {
                if (!dc.Depositary.Value.Equals(this.dvdCust.Depositary.Value, StringComparison.OrdinalIgnoreCase))
                {
                    continue;
                }
                diff_dic[dc.CustodianID] = dc.Custodian_Reported.Value;
            }

            decimal statutoryRate = dvd.StatutoryRate.Value * 100;//convert to percentage

            foreach (KeyValuePair <int, Custodian_ele> pair in this.custodianEle_dic)
            {
                Custodian_ele cele        = pair.Value;
                int           custodianID = pair.Key;
                decimal       sum         = 0;

                foreach (Election_item ele in cele.cust_dic.Values)
                {
                    sum += ele.ADRQuantity;   //sum of detail
                }
                diff_dic[custodianID] -= sum; //find differrence from detail

                if (cele.cust_dic.ContainsKey(statutoryRate))
                {
                    decimal unfavour_shares = diff_dic[custodianID];
                    if (unfavour_shares < 0)
                    {
                        MessageBox.Show("ElectionDocument Info 0: Details' RecordDatePosition total greater than Custodian(" + custodianID + ") Reported");
                    }
                    else
                    {
                        cele.cust_dic[statutoryRate].ADRQuantity += unfavour_shares;
                    }
                }
            }

            decimal diff_custodianReported = 0;

            foreach (decimal diff in diff_dic.Values)
            {
                diff_custodianReported += diff;
            }
            if (this.DTC_participant_dic.ContainsKey(statutoryRate))
            {
                this.DTC_participant_dic[statutoryRate].ADRQuantity += diff_custodianReported;
            }
            if (this.summary.totalEle_dic.ContainsKey(statutoryRate))
            {
                this.summary.totalEle_dic[statutoryRate].ADRQuantity += diff_custodianReported;
            }
        }