/// <summary> /// ปรับค่า bfrmf เฉพาะกองพิเศษ โดยที่เมื่อมีการโอนออกจากผู้โอน ที่ agent และ fund เดียวกัน /// จำนวนโอนออกคิดเป็นสัดส่วนเทียบกับค่า bf /// </summary> /// <param name="traferOutData">ข้อมูลการโอนออกทังหมด</param> /// <param name="feeDateBefore">fee วันก่อนหน้าของ กอง และ ตัวแทนเดียวกัน</param> public void ReBfValueFromTranOut(List <OPNTTRAN> traferOutData, FeeAgentDaily feeDateBefore) { if (this.OnDateAgentFee.SettingOwner.FundOwner.IsExtraFund) { // ต้องเป็นกองพิเศษ if (this.UNIT_TRANOUT > 0 & this.UNIT_BF > 0) { // หา mkt โอนออกมาให้ และ ต้องมีค่า bf var mktTranOuts = traferOutData.Where(q => q.FUND_CODE == this.OnDateAgentFee.FUND_ID) .Where(q => q.BR_CODE_OLD == this.OnDateAgentFee.AGENT_ID) .Where(q => q.TRAN_DATE == this.OnDateAgentFee.FEE_DATE) .Where(q => q.MKT_CODE_OLD == this.MKT) .Where(q => q.SHARE_UNIT > 0) .ToList(); decimal BfSum = 0; foreach (var itemTranOut in mktTranOuts) { var mktTranInCode = itemTranOut.MKT_CODE; var feeDailyBfFromMktTranIn = feeDateBefore.GetMarktingByCode(mktTranInCode); if (feeDailyBfFromMktTranIn != null) { BfSum = BfSum + ((decimal)itemTranOut.SHARE_UNIT / (decimal)this.TOTAL_UNIT_ONGO_BEFORE_DATE) * this.UNIT_BF_BEFORE_DATE; } } this.UNIT_BF = (this.UNIT_BF - BfSum) < 0 ? 0 : this.UNIT_BF - BfSum; } } }
/// <summary> /// ปรับค่า bfrmf เฉพาะกองพิเศษ โดยที่เมื่อมีการโอนเข้าจากผู้โอน ที่ agent และ fund เดียวกัน ถ้าผู้โอนมีค่า bfrmf ต้องนำมาบวกค่า bf ให้กับ marketing คนนี้ด้วย /// จำนวนโอนเข้าคิดเป็นสัดส่วนเทียบกับค่า bf /// </summary> /// <param name="traferInData">ข้อมูลการโอนเข้าทังหมด</param> /// <param name="feeDateBefore">fee วันก่อนหน้าของ กอง และ ตัวแทนเดียวกัน</param> public void ReBfValueFromTranIn(List <OPNTTRAN> traferInData, FeeAgentDaily feeDateBefore) { if (this.OnDateAgentFee.SettingOwner.FundOwner.IsExtraFund) { // ต้องเป็นกองพิเศษ if (this.UNIT_TRANIN > 0) { // หา mkt โอนออกมาให้ ต้องมีค่า bf var mktTranIns = traferInData.Where(q => q.FUND_CODE == this.OnDateAgentFee.FUND_ID) .Where(q => q.BR_CODE == this.OnDateAgentFee.AGENT_ID) .Where(q => q.TRAN_DATE == this.OnDateAgentFee.FEE_DATE) .Where(q => q.MKT_CODE == this.MKT) .Where(q => q.SHARE_UNIT > 0) .ToList(); decimal BfSum = 0; foreach (var itemTranIn in mktTranIns) { var mktTranOutCode = itemTranIn.MKT_CODE_OLD; var feeDailyBfFromMktTranOut = feeDateBefore.GetMarktingByCode(mktTranOutCode); if (feeDailyBfFromMktTranOut != null) { if (feeDailyBfFromMktTranOut.UNIT_BF > 0) { // คนโอนต้องมีค่า bf ถ้าไมมีก็ไม่จำเป็นต้องคำนวน BfSum = BfSum + ((decimal)itemTranIn.SHARE_UNIT / (decimal)feeDailyBfFromMktTranOut.TOTAL_UNIT_ONGO) * feeDailyBfFromMktTranOut.UNIT_BF; } } } this.UNIT_BF = this.UNIT_BF + BfSum; } } }
public decimal GetUnitOngoFromLastDailyFee() { FeeAgentDaily findFeeAgent = this.FeeDailyAgents.OrderByDescending(m => m.FEE_DATE) .FirstOrDefault() ?? new FeeAgentDaily(); return(findFeeAgent.TOTAL_UNIT_ONGO ?? 0); }
//public decimal GetMarketingBfValueByFundAndMkt(string fundCode, string mktCode) //{ // var bfValue = this.HaveBfValueWithMkt.SingleOrDefault(m => m.FUND_ID == fundCode & m.MKT == mktCode); // return bfValue == null ? 0 : bfValue.BF_VALUE; //} public FeeAgentDaily AddFeeDaily(string fundCode, DateTime feeDate, DateTime feeBeforeDate) { FeeAgentDaily newFeeDate = new FeeAgentDaily() { AGENT_ID = this.BR_CODE, FUND_ID = fundCode, FEE_DATE = feeDate, FEE_BEFORE_DATE = feeBeforeDate }; this.FeeDailys.Add(newFeeDate); return(newFeeDate); }
public FeeAgentDaily NewFeeDailyByDate(DateTime feeDate, DateTime feeBeforeDate) { FeeAgentDaily newItem = new FeeAgentDaily(); newItem.FES_ID = this.FES_ID; newItem.SettingOwner = this; newItem.FUND_ID = this.FUND_ID; newItem.AGENT_ID = this.AGENT_ID; newItem.FEE_DATE = feeDate; newItem.FEE_BEFORE_DATE = feeBeforeDate; this.FeeDailyAgents.Add(newItem); return(newItem); }