private void Cal_ClaimShares_ADRS_pos(Dictionary <int, BD_Dividend> dic) { this.statusInfo.status = "Calculate ClaimShares_ADR positions"; foreach (BD_Dividend dvd in dic.Values) { DTCPositionModelNumber_Mapping dm = DTC_model_master.GetMapping_modelNum(dvd.DTCPosition_ModelNumber); if (dm == null) { continue; } dm.Create_headers(); List <DTC_Position_Headers> exempt_headerList = dm.Get_headersList("Exempt", null); List <DTC_Position_Headers> favorable_headerList = dm.Get_headersList("Favorable", null); List <DTC_Position_Headers> chargeBack_headerList = dm.Get_headersList("CHARGEBACK", "'NON-DISCLOSED"); foreach (BD_DTC_Position bdp in dvd.bdp_dic.Values) { bdp.ExemptPosition = bdp.GetSum_by_list(exempt_headerList); bdp.FavorablePosition = bdp.GetSum_by_list(favorable_headerList); bdp.ChargeBackPosition = bdp.GetSum_by_list(chargeBack_headerList); bdp.RemainingTotalADRS = bdp.Total_RecDate_Position - bdp.ClaimShares_ADRS_SUM; ++this.statusInfo.recordNum; } } }
public DTCPositionModelNumber_Mapping Get_DTCpos_model() { DTCPositionModelNumber_Mapping posMod = DTC_model_master.GetMapping_modelNum(this.DTCPosition_ModelNumber.Value); if (posMod != null) { posMod.Create_headers(); } return(posMod); }
/*--------------------------------------------------------------------------------------------------------------------------*/ public void Calculate(int custodianID) { this.dvdCust = new DividendCustodian(custodianID); if (!this.dvdCust.Init_from_DB()) { return; } Dividend dvd = new Dividend(this.dvdCust.DividendIndex.Value); if (!dvd.Init_from_DB(DividendTable_option.Dividend_Control_Approved)) { return; } this.dvdCus_dic_all = dvd.Get_dvdCust_dic(null); this.dvdCus_dic_custodianType = dvd.Get_dvdCust_dic("Custodian"); //Get WithHolding Rate Set DTCPositionModelNumber_Mapping posMod = dvd.Get_DTCpos_model(); if (posMod == null) { return; } Dictionary <decimal, List <DTC_Position_Headers> > whr_map = posMod.Get_WHRcol_mapping(); HashSet <decimal> WHrate_hs = new HashSet <decimal>(); foreach (decimal whr in whr_map.Keys) { WHrate_hs.Add(whr); } this.Cal_initAttr_eventInfo(dvd); //Init name attributes this.Cal_initAttr_collections(WHrate_hs, dvd); //Init all levels based on WithHolding Rate //Special 4 Countries HashSet <string> country_hs = new HashSet <string>(StringComparer.OrdinalIgnoreCase); country_hs.Add("Finland"); country_hs.Add("Ireland"); country_hs.Add("Norway"); country_hs.Add("France"); if (country_hs.Contains(dvd.Country.Value)) { this.Calculate_special_from_DTCposition(whr_map, dvd); } else { this.Calculate_commen_from_Detail(WHrate_hs, dvd); } }
/// <summary> /// Insert DTC Position using dataSet read from DES document /// </summary> public void Insert_DTC_position(DataSet ds, bool createNew_flag = true) { if (ds == null || ds.Tables.Count < 1) { return; } if (createNew_flag) { this.Delete_DTC_position(); } DataTable dt = ds.Tables[0]; HashSet <string> colName_hs = new HashSet <string>(); foreach (DataColumn col in dt.Columns) { colName_hs.Add(col.ColumnName); } DTCPositionModelNumber_Mapping posMod = this.Get_DTCpos_model(); if (posMod == null) { return; } Dictionary <int, List <string> > mapping = posMod.Get_colHeader_mapping(colName_hs); Bulk_DBcmd buk_ins = new Bulk_DBcmd(); foreach (DataRow row in dt.Rows) { Position dtcPos = new Position(); dtcPos.DividendIndex = this.DividendIndex; dtcPos.DTC_Number = row["DTC Participant No."].ToString(); if (string.IsNullOrEmpty(dtcPos.DTC_Number)) { continue; } dtcPos.Company_Name = row["DTC Participant Name"].ToString(); decimal tempDecimal = -1; if (decimal.TryParse(row["R/D Position"].ToString(), out tempDecimal)) { dtcPos.Total_RecDate_Position = tempDecimal; } foreach (KeyValuePair <int, List <string> > pair in mapping) { List <string> lst = pair.Value; if (lst.Count > 0) { dtcPos.RatePositions.Set_rateValue(pair.Key, row[lst[0]].ToString()); } if (lst.Count > 1) { dtcPos.Rate_Chargebacks.Set_rateValue(pair.Key, row[lst[1]].ToString()); } } buk_ins.Add_DBcmd(dtcPos.Get_DBinsert()); } int count = buk_ins.SaveToDB(Utility.Get_DRWIN_hDB()); }