/// <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; } } }