Beispiel #1
0
        /// <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;
                }
            }
        }
Beispiel #2
0
        /// <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;
                }
            }
        }
Beispiel #3
0
        public decimal GetUnitOngoFromLastDailyFee()
        {
            FeeAgentDaily findFeeAgent = this.FeeDailyAgents.OrderByDescending(m => m.FEE_DATE)
                                         .FirstOrDefault() ?? new FeeAgentDaily();

            return(findFeeAgent.TOTAL_UNIT_ONGO ?? 0);
        }
Beispiel #4
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);
        }
Beispiel #5
0
        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);
        }