Browse Source

修改提成算法

wangh 1 year ago
parent
commit
d9265405f6

+ 12 - 0
DAL/CreditCardPaymentService.cs

@@ -62,7 +62,19 @@ namespace DAL
             //调用获取单个对象的方法
             return excuteType(sql, new SqlParameter("@id", id));
         }
+        /// <summary>
+        /// 根据编号CId,Ctable查询对象信息
+        /// </summary>
+        /// <param name="id">对象编号</param>
+        /// <returns>返回空或者单个对象信息</returns>
+        public CreditCardPayment GetCreditCardPaymentByCid(int cid,int cTable)
+        {
+            string sql = "select * from CreditCardPayment where cid = @cid and cTable=" + cTable;
 
+            
+            //调用获取单个对象的方法
+            return excuteType(sql, new SqlParameter("@cid", cid));
+        }
         /// <summary>
         /// 根据ID集合查询数据
         /// </summary>

+ 2 - 1
DAL/DelegationInfoService.cs

@@ -477,7 +477,8 @@ namespace DAL
         /// <returns></returns>
         public List<DelegationInfo> GetByTime(string startDate, string endDate)
         {
-            return excuteSql("select * from DelegationInfo where IsSure=1 and  Isdel=0 and (VisitEndDate between '" + startDate + "' and '" + endDate + "') order by VisitEndDate");
+            //IsSure=1 and
+            return excuteSql("select * from DelegationInfo where   Isdel=0 and (VisitEndDate between '" + startDate + "' and '" + endDate + "') order by VisitEndDate");
         }
 
         /// <summary>

+ 1 - 1
OA2021/finance/Royalty.aspx

@@ -4,7 +4,7 @@
 
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head runat="server">
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <%--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />--%>
     <title></title>
     <%@ Register Src="../publicControls/pageControl.ascx" TagName="pageControl" TagPrefix="uc1" %>
     <link href="../css/all.css" rel="stylesheet" type="text/css" />

+ 183 - 170
OA2021/finance/Royalty.aspx.cs

@@ -97,63 +97,71 @@ namespace OA2021.finance
         /// </summary>
         void bindDetail()
         {
+            try
+            {
+                //起始日期
+                if (Request.QueryString["startDate"] != null && !string.IsNullOrEmpty(Request.QueryString["startDate"].ToString()))
+                    txtStartTime.Text = Request.QueryString["startDate"].ToString();
 
-            //起始日期
-            if (Request.QueryString["startDate"] != null && !string.IsNullOrEmpty(Request.QueryString["startDate"].ToString()))
-                txtStartTime.Text = Request.QueryString["startDate"].ToString();
+                //结束时
+                if (Request.QueryString["endDate"] != null && !string.IsNullOrEmpty(Request.QueryString["endDate"].ToString()))
+                    txtEndTime.Text = Request.QueryString["endDate"].ToString();
 
-            //结束时期
-            if (Request.QueryString["endDate"] != null && !string.IsNullOrEmpty(Request.QueryString["endDate"].ToString()))
-                txtEndTime.Text = Request.QueryString["endDate"].ToString();
 
+                //url传递参数设置
+                pageControl.Params = "&company=" + ddlCompany.SelectedValue + "&department=" + ddlDepartment.SelectedValue + "&personnel=" + ddlPersonnel.SelectedValue
+                                    + "&startDate=" + txtStartTime.Text + "&endDate=" + txtEndTime.Text
+                                    + "&yearmonth2=" + ddlYearMonth2.SelectedValue;
 
-            //url传递参数设置
-            pageControl.Params = "&company=" + ddlCompany.SelectedValue + "&department=" + ddlDepartment.SelectedValue + "&personnel=" + ddlPersonnel.SelectedValue
-                                + "&startDate=" + txtStartTime.Text + "&endDate=" + txtEndTime.Text
-                                + "&yearmonth2=" + ddlYearMonth2.SelectedValue;
+                //分页设置
+                int pageIndex = pageControl.getPageIndex();
 
-            //分页设置
-            int pageIndex = pageControl.getPageIndex();
+                //查询指定时间段内的提成表数据
+                DataTable listTable = new Fin_CommissionService().GetAll(Convert.ToInt32(ddlPersonnel.SelectedValue), txtStartTime.Text, txtEndTime.Text);
+                List<Fin_Commission> listCom = new List<Fin_Commission>();
+                if (listTable != null)
+                {
+                    listCom = listTable.ToList<Fin_Commission>();
+                }
+                //if (listCom == null)
+                //    import();
 
-            //查询指定时间段内的提成表数据
-            DataTable listTable = new Fin_CommissionService().GetAll(Convert.ToInt32(ddlPersonnel.SelectedValue), txtStartTime.Text, txtEndTime.Text);
-            List<Fin_Commission> listCom = new List<Fin_Commission>();
-            if (listTable != null)
-            {
-                listCom = listTable.ToList<Fin_Commission>();
-            }
-            //if (listCom == null)
-            //    import();
+                //repeater赋值
+                //listCom = new Fin_CommissionService().GetAllAndPage(pageIndex, out sumPage, out totalRecord, Convert.ToInt32(ddlPersonnel.SelectedValue),
+                //txtStartTime.Text, txtEndTime.Text, ddlYearMonth2.SelectedValue);
 
-            //repeater赋值
-            //listCom = new Fin_CommissionService().GetAllAndPage(pageIndex, out sumPage, out totalRecord, Convert.ToInt32(ddlPersonnel.SelectedValue),
-                                        //txtStartTime.Text, txtEndTime.Text, ddlYearMonth2.SelectedValue);
-           
-            totalRecord = listCom.Count;
-            sumPage=(int)Math.Ceiling((double)listCom.Count / 10);
-            float totalPage = (float)totalRecord / 10;//总页数
-            if (totalPage == 0) totalPage = 1;
-            else totalPage = (int)Math.Ceiling((double)totalPage);
+                totalRecord = listCom.Count;
+                sumPage = (int)Math.Ceiling((double)listCom.Count / 10);
+                float totalPage = (float)totalRecord / 10;//总页数
+                if (totalPage == 0) totalPage = 1;
+                else totalPage = (int)Math.Ceiling((double)totalPage);
 
-            List<Fin_Commission> Fin_Commission = new List<Fin_Commission>();
-            for (int i = 0; i < 10; i++)
-            {
-                var RowIndex = i + (pageIndex - 1) * 10;
-                if (RowIndex < listCom.Count)
-                {
-                    Fin_Commission.Add(listCom[RowIndex]);
-                }
-                else
+                List<Fin_Commission> Fin_Commission = new List<Fin_Commission>();
+                for (int i = 0; i < 10; i++)
                 {
-                    break;
+                    var RowIndex = i + (pageIndex - 1) * 10;
+                    if (RowIndex < listCom.Count)
+                    {
+                        Fin_Commission.Add(listCom[RowIndex]);
+                    }
+                    else
+                    {
+                        break;
+                    }
                 }
-            }
 
-            rpData.DataSource = Fin_Commission;
-            rpData.DataBind();
+                rpData.DataSource = Fin_Commission;
+                rpData.DataBind();
 
-            //绑定分页用户控件
-            pageControl.bind(pageIndex, sumPage, totalRecord, url);
+                //绑定分页用户控件
+                pageControl.bind(pageIndex, sumPage, totalRecord, url);
+            }
+            catch (Exception ex)
+            {
+
+                throw;
+            }
+            
 
         }
         /// <summary>
@@ -371,7 +379,11 @@ namespace OA2021.finance
                         cTemp.DeleteTime = "";
                         cTemp.Remark = "";
                         cTemp.IsDel = 0;
-                        new Fin_CommissionService().add(cTemp);
+                        //if (cTemp.Money!=0)
+                        {
+                            new Fin_CommissionService().add(cTemp);
+                        }
+                        
                     }
                 }
             }
@@ -394,39 +406,47 @@ namespace OA2021.finance
             float sumPr = 0;    //团组类型已收费用
             float reimburse = 0; //退款和其他费用
             float TeamMoney = 0; //团组类型成本费用                  1
-
-            //应收费用数据
-            ForeignReceivablesService frs = new ForeignReceivablesService();
-            List<ForeignReceivables> frList = frs.GetAllByDIId(dele.Id);
-            foreach (ForeignReceivables fr in frList)
+            try
             {
-                sumFr += fr.Price;
-            }
+                //应收费用数据
+                ForeignReceivablesService frs = new ForeignReceivablesService();
+                List<ForeignReceivables> frList = frs.GetAllByDIId(dele.Id);
+                foreach (ForeignReceivables fr in frList)
+                {
+                    sumFr += fr.Price;
+                }
 
-            //已收费用数据
-            ProceedsReceivedService prs = new ProceedsReceivedService();
-            List<ProceedsReceived> prList = prs.GetAllByDIId(dele.Id);
-            if (prList.Count != 0)
-            {
-                foreach (ProceedsReceived fr in prList)
+                //已收费用数据
+                ProceedsReceivedService prs = new ProceedsReceivedService();
+                List<ProceedsReceived> prList = prs.GetAllByDIId(dele.Id);
+                if (prList.Count != 0)
                 {
-                    sumPr += (float)fr.Price;
+                    foreach (ProceedsReceived fr in prList)
+                    {
+                        sumPr += (float)fr.Price;
+                    }
                 }
-            }
 
 
-            //收款退还费用数据
-            ViewOhterPriceOPService vopp = new ViewOhterPriceOPService();
-            List<ViewOtherPriceOP> opplist = vopp.GetByDIId(dele.Id);
-            foreach (ViewOtherPriceOP opp in opplist)
-            {
-                //退款和其他费用累计
-                reimburse += opp.Price;
-            }
+                //收款退还费用数据
+                ViewOhterPriceOPService vopp = new ViewOhterPriceOPService();
+                List<ViewOtherPriceOP> opplist = vopp.GetByDIId(dele.Id);
+                foreach (ViewOtherPriceOP opp in opplist)
+                {
+                    //退款和其他费用累计
+                    reimburse += opp.Price;
+                }
 
-            //实际的团组类型已收金额需除去退款 
-            sumPr = sumPr - reimburse;
+                //实际的团组类型已收金额需除去退款 
+                sumPr = sumPr - reimburse;
+
+            }
+            catch (Exception ex)
+            {
 
+                throw;
+            }
+            
             //团组与非团组产生的成本费用数据
             CreditCardPaymentService ccps = new CreditCardPaymentService();
             List<CreditCardPayment> creditCardPayments = ccps.GetByDIIDNotIsPay(dele.Id);
@@ -436,9 +456,7 @@ namespace OA2021.finance
                 foreach (CreditCardPayment item in creditCardPayments)
                 {
                     //对团组类型成本进行累计
-                    if (item.PayThenMoney != null && item.PayThenMoney != "" && item.PayThenMoney != "0")
-                        TeamMoney += float.Parse(item.PayThenMoney) * float.Parse(item.DayRate);
-                    else if (item.PayPercentage != null && item.PayPercentage != "" && item.PayPercentage != "0")
+                    //if (item.PayPercentage != null && item.PayPercentage != "" && item.PayPercentage != "0")
                     {
                         TeamMoney += item.PayMoney * float.Parse(item.PayPercentage) / 100 * float.Parse(item.DayRate);
                     }
@@ -476,7 +494,7 @@ namespace OA2021.finance
             List<CarTouristGuideGroundReservations> listOP = new CarTouristGuideGroundReservationsService().GetCarTouristGuideGroundReservationsByDIID(dele.Id);
             //签证
             List<Visa> listVisa = new VisaService().GetVisaByDIIDAndUserId(dele.Id, cTemp.Personnel);
-            if (Profitstr > 0)
+            //if (Profitstr > 0)
             {
                 cTemp.IsMakeLoss = 0;
                 cTemp.IsLoss = 0;
@@ -518,10 +536,17 @@ namespace OA2021.finance
                     {
                         //使用团组id取出所有的机票详情
 
+                        
                         float SunPrice = 0; //总金额
                         int AirSegment = 0; //航段数
                         foreach (var item in listAir)
                         {
+                            CreditCardPayment c = new CreditCardPaymentService().GetCreditCardPaymentByCid(item.Id, 85);
+                            if (c!=null)
+                            {
+                                if (c.IsAuditGM!=0 && c.IsAuditGM!=2)
+                                {
+
                             if (item.PassengerType == "客户")
                             {
                                 if (item.Price > 0)
@@ -801,6 +826,8 @@ namespace OA2021.finance
                             }
                         }
 
+                            }
+                        }
                         SunPrice = AirSegment * 10;
                         comMoney = SunPrice;
                         cTemp.Detail = "本团人数" + Convert.ToInt32(dele.VisitPNumber) + ",该人员" + OpUserName + "共订航段数" + AirSegment.ToString() + ",每程航班提成为10元," + OpUserName + "提成共" + SunPrice.ToString("#0.00");
@@ -811,87 +838,62 @@ namespace OA2021.finance
                 {
                     string OpUserName = new UsersService().GetUsersByID(Convert.ToInt32(personId)).CnName;
                     //标准团组:¥10/间/晚 * 实际订房间数 * 实际订房晚数;
-                    int days = 0, rooms = 0;
+                    //int days = 0, rooms = 0;
                     if (listHotel != null)
                     {
                         foreach (HotelReservations hotel in listHotel)
                         {
-                            if (hotel.GTId == 41 || hotel.GTId == 718)
+                            CreditCardPayment c = new CreditCardPaymentService().GetCreditCardPaymentByCid(hotel.Id, 76);
+                            if (c.IsAuditGM!=0 && c.IsAuditGM!=2)
                             {
-
-                                int s = 0;
-                                int d = 0;
-                                TimeSpan Tdays = Convert.ToDateTime(hotel.CheckOutDate) - Convert.ToDateTime(hotel.CheckInDate);
-                                if (hotel.SingleRoomPrice < 0)//表示退房
-                                {
-                                    rooms = rooms - hotel.SingleRoomCount;
-                                    s = -1;
-                                }
-                                else if (hotel.SingleRoomPrice != 0)
+                                if (hotel.GTId == 41 || hotel.GTId == 718)
                                 {
-                                    d = 1;
-                                    rooms = rooms + hotel.SingleRoomCount;
-                                }
 
-                                if (hotel.DoubleRoomPrice < 0)
-                                {
-                                    s = -1;
-                                    rooms = rooms - hotel.DoubleRoomCount;
-                                }
-                                else if (hotel.DoubleRoomPrice != 0)
-                                {
-                                    d = 1;
-                                    rooms = rooms + hotel.DoubleRoomCount;
-                                }
+                                    //int s = 0;
+                                    //int d = 0;
+                                    TimeSpan Tdays = Convert.ToDateTime(hotel.CheckOutDate) - Convert.ToDateTime(hotel.CheckInDate);
+                                    int days = Tdays.Days;
+                                    if (hotel.SingleRoomPrice < 0)//表示退房
+                                    {
+                                        //rooms = rooms - hotel.SingleRoomCount;
+                                        comMoney = comMoney - 10 * hotel.SingleRoomCount * days;
+                                    }
+                                    else if (hotel.SingleRoomPrice != 0)
+                                    {
+                                        comMoney = comMoney + 10 * hotel.SingleRoomCount * days;
+                                    }
 
-                                if (hotel.SuiteRoomPrice < 0)
-                                {
-                                    s = -1;
-                                    rooms = rooms - hotel.SuiteRoomCount;
-                                }
-                                else if (hotel.SuiteRoomPrice != 0)
-                                {
-                                    d = 1;
-                                    rooms = rooms + hotel.SuiteRoomCount;
-                                }
+                                    if (hotel.DoubleRoomPrice < 0)
+                                    {
+                                        comMoney = comMoney - 10 * hotel.DoubleRoomCount * days;
+                                    }
+                                    else if (hotel.DoubleRoomPrice != 0)
+                                    {
+                                        comMoney = comMoney + 10 * hotel.DoubleRoomCount * days;
+                                    }
 
-                                if (hotel.OtherRoomPrice < 0)
-                                {
-                                    s = -1;
-                                    rooms = rooms - hotel.OtherRoomCount;
-                                }
-                                else if (hotel.OtherRoomPrice != 0)
-                                {
-                                    d = 1;
-                                    rooms = rooms + hotel.OtherRoomCount;
-                                }
+                                    if (hotel.SuiteRoomPrice < 0)
+                                    {
+                                        comMoney = comMoney - 10 * hotel.SuiteRoomCount * days;
+                                    }
+                                    else if (hotel.SuiteRoomPrice != 0)
+                                    {
+                                        comMoney = comMoney + 10 * hotel.SuiteRoomCount * days;
+                                    }
 
-                                if (s == -1)
-                                {
-                                    if (rooms == 1)
+                                    if (hotel.OtherRoomPrice < 0)
                                     {
-                                        days = days - Tdays.Days;
+                                        comMoney = comMoney - 10 * hotel.OtherRoomCount * days;
                                     }
-                                }
-                                else
-                                {
-                                    if (d == 1)
+                                    else if (hotel.OtherRoomPrice != 0)
                                     {
-                                        days = days + Tdays.Days;
+                                        comMoney = comMoney + 10 * hotel.OtherRoomCount * days;
                                     }
                                 }
                             }
+                            
                         }
-
-                        comMoney = 10 * rooms * days;
-                        if (rooms != 0 && days != 0)
-                        {
-                            cTemp.Detail = "本团人数" + Convert.ToInt32(dele.VisitPNumber) + ",该人员" + OpUserName + "共订总房间数" + rooms + ",总住宿天数" + days + ",每间每晚提成10元," + OpUserName + "提成共" + comMoney.ToString("#0.00") + "元";
-                        }
-                        else
-                        {
-                            cTemp.Detail = "本团人数" + Convert.ToInt32(dele.VisitPNumber) + ",该人员" + OpUserName + "共订总房间数" + rooms + ",总住宿天数" + days + ",每间每晚提成10元," + OpUserName + "提成共" + comMoney.ToString("#0.00") + "元";
-                        }
+                        cTemp.Detail = "本团人数" + Convert.ToInt32(dele.VisitPNumber) + ",该人员" + OpUserName + "共操作酒店晚数" + comMoney / 10 + ",每间每晚提成10元," + OpUserName + "提成共" + comMoney.ToString("#0.00") + "元";
 
                     }
 
@@ -1020,6 +1022,9 @@ namespace OA2021.finance
                             }
                             if (!String.IsNullOrWhiteSpace(UserName))
                             {
+                                comMoney += 100;//基础提成100
+                                
+                                comMoney += 100;//额外100
                                 UserName = UserName.Substring(0, UserName.Length - 1);
                                 string name = new UsersService().GetUsersByID(Convert.ToInt32(personId)).CnName;
                                 cTemp.Detail += "本团为只发邀请的团组," + UserName + "操作了该邀请数据,提成共100,均分后" + name + "得提成" + 100 / UserId.Count;
@@ -1039,39 +1044,47 @@ namespace OA2021.finance
                     int count2 = 0;
                     foreach (Visa visa in listVisa)
                     {
-                        if (visa.IsThird == 0)
+                        CreditCardPayment c = new CreditCardPaymentService().GetCreditCardPaymentByCid(visa.Id, 80);
+                        if (c!=null)
                         {
-                            if (visa.PassengerType == "客人")
+                            if (c.IsAuditGM!=0 && c.IsAuditGM!=2)
                             {
-                                if (dele.VisitCountry.Contains("英国") || dele.VisitCountry.Contains("加拿大") || dele.VisitCountry.Contains("美国")) //1)办理英国、加拿大、美国签证¥50元 / 人 / 团;
+                                if (visa.IsThird == 0)
                                 {
-                                    if (visa.VisaPrice > 0)
+                                    if (visa.PassengerType == "客人")
                                     {
-                                        count1 += visa.VisaFreeNumber + visa.VisaNumber;
-                                        comMoney += 50 * (visa.VisaFreeNumber + visa.VisaNumber);
-                                    }
-                                    else
-                                    {
-                                        comMoney = comMoney - (visa.VisaNumber + visa.VisaFreeNumber) * 50;
-                                        count1 = count1 - visa.VisaFreeNumber - visa.VisaNumber;
-                                    }
+                                        if (dele.VisitCountry.Contains("英国") || dele.VisitCountry.Contains("加拿大") || dele.VisitCountry.Contains("美国")) //1)办理英国、加拿大、美国签证¥50元 / 人 / 团;
+                                        {
+                                            if (visa.VisaPrice > 0)
+                                            {
+                                                count1 += visa.VisaFreeNumber + visa.VisaNumber;
+                                                comMoney += 50 * (visa.VisaFreeNumber + visa.VisaNumber);
+                                            }
+                                            else
+                                            {
+                                                comMoney = comMoney - (visa.VisaNumber + visa.VisaFreeNumber) * 50;
+                                                count1 = count1 - visa.VisaFreeNumber - visa.VisaNumber;
+                                            }
 
-                                }
-                                else//2)申根国家及其他所有国家¥30元 / 人 / 团;
-                                {
-                                    if (visa.VisaPrice > 0)
-                                    {
-                                        count2 += visa.VisaFreeNumber + visa.VisaNumber;
-                                        comMoney += 30 * (visa.VisaFreeNumber + visa.VisaNumber);
-                                    }
-                                    else
-                                    {
-                                        comMoney = comMoney - (visa.VisaNumber + visa.VisaFreeNumber) * 30;
-                                        count2 = count2 - visa.VisaFreeNumber - visa.VisaNumber;
+                                        }
+                                        else//2)申根国家及其他所有国家¥30元 / 人 / 团;
+                                        {
+                                            if (visa.VisaPrice > 0)
+                                            {
+                                                count2 += visa.VisaFreeNumber + visa.VisaNumber;
+                                                comMoney += 30 * (visa.VisaFreeNumber + visa.VisaNumber);
+                                            }
+                                            else
+                                            {
+                                                comMoney = comMoney - (visa.VisaNumber + visa.VisaFreeNumber) * 30;
+                                                count2 = count2 - visa.VisaFreeNumber - visa.VisaNumber;
+                                            }
+                                        }
                                     }
                                 }
                             }
                         }
+                        
                     }
                     string UserName = new UsersService().GetUsersByID(Convert.ToInt32(personId)).CnName;
                     cTemp.Detail = "本团人数" + Convert.ToInt32(dele.VisitPNumber) + ",该人员" + UserName + "共办理英国、加拿大、美国签证" + count1 + "本护照(包含免签人员),申根国家及其他所有国家" + count2 + "本。" + UserName + "提成共" + comMoney.ToString("#0.00") + "元";
@@ -1140,13 +1153,13 @@ namespace OA2021.finance
 
                 }
             }
-            else
-            {
-                cTemp.IsLoss = 0;
-                cTemp.IsMakeLoss = 1;
-                comMoney = 0;
-                cTemp.Detail = "该团无利润,所以无提成";
-            }
+            //else
+            //{
+            //    cTemp.IsLoss = 0;
+            //    cTemp.IsMakeLoss = 1;
+            //    comMoney = 0;
+            //    cTemp.Detail = "该团无利润,所以无提成";
+            //}
 
 
             cTemp.Money = Convert.ToDecimal(comMoney);

+ 1 - 1
OA2021/groups/editVisa.aspx.cs

@@ -301,7 +301,7 @@ namespace OA2014.groups
                         return;
                     }
                 }
-                v.PassengerType = ddlCreditCardsTypes.SelectedValue;
+                v.PassengerType = ddlPassengerType.SelectedValue;
 
                 CreditCardPaymentService ccps = new CreditCardPaymentService();
                 CreditCardPayment ccp = ccps.GetCreditCardPaymentByCIDAndDIIDAndCTable(v.Id, Convert.ToInt32(ddlTourCode.SelectedValue), 80);