|
@@ -1,17 +1,800 @@
|
|
|
-using System;
|
|
|
+using DAL;
|
|
|
+using Models;
|
|
|
+using OA2014.data;
|
|
|
+using OA2014.publicCode;
|
|
|
+using OA2014.WechatNeed;
|
|
|
+using System;
|
|
|
+using System.Collections;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
+using System.Text.RegularExpressions;
|
|
|
using System.Web;
|
|
|
using System.Web.UI;
|
|
|
using System.Web.UI.WebControls;
|
|
|
+using static OA2014.finance.CommissionWeb;
|
|
|
|
|
|
namespace OA2021.finance
|
|
|
{
|
|
|
- public partial class Royalty : System.Web.UI.Page
|
|
|
+ public partial class Royalty : SessionCode
|
|
|
{
|
|
|
+ //团组数据服务类
|
|
|
+ DelegationInfoService dis = new DelegationInfoService();
|
|
|
+ //提成数据服务类
|
|
|
+ CommissionService cms = new CommissionService();
|
|
|
+ //OA系统数据服务类
|
|
|
+ SetDataService sds = new SetDataService();
|
|
|
+ //员工数据库服务类
|
|
|
+ UsersService _us = new UsersService();
|
|
|
+ //公司成都泛美商务有限公司114、四川泛美交流有限公司115、成都纽茵教育科技有限公司327
|
|
|
+ string[] companyArray = { "114", "115", "327" };
|
|
|
+ //国交部 Did=4;销售部 Did=6;会展部 Did=335
|
|
|
+ int[] depArray = { 4, 6, 335 };
|
|
|
+
|
|
|
+ //OP:151汪越090;198潘娟932
|
|
|
+ string[] OP = { "151", "198" };
|
|
|
+ //机票:145蒋平092;169刘亚敏909
|
|
|
+ string[] AirTicket = { "145", "169" };
|
|
|
+ //酒店:暂无
|
|
|
+ string[] Hotel = { "226" };
|
|
|
+ //商务邀请:暂无(149 王鸽097 之前是商邀)
|
|
|
+ string[] Invitation = { "149", "241" };
|
|
|
+ //签证操作:192李敏929
|
|
|
+ string[] Visa = { "192" };
|
|
|
+ //主管职位:51徐茜095;180董果918
|
|
|
+ string[] Manager = { "51", "180" };
|
|
|
+
|
|
|
+
|
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
|
{
|
|
|
+ if (!IsPostBack)
|
|
|
+ {
|
|
|
+ bindDDL();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 页面下拉框赋值
|
|
|
+ /// </summary>
|
|
|
+ void bindDDL()
|
|
|
+ {
|
|
|
+ //公司下拉框
|
|
|
+ ddlCompany.DataSource = sds.GetAll(22);
|
|
|
+ ddlCompany.DataTextField = "Name";
|
|
|
+ ddlCompany.DataValueField = "Id";
|
|
|
+ ddlCompany.DataBind();
|
|
|
+
|
|
|
+ if (Request.QueryString["company"] != null && !string.IsNullOrEmpty(Request.QueryString["company"].ToString()))
|
|
|
+ ddlCompany.Items.FindByValue(Request.QueryString["company"].ToString()).Selected = true;
|
|
|
+
|
|
|
+ //部门下拉框
|
|
|
+ //若选择这三个公司成都泛美商务有限公司114、四川泛美交流有限公司115、成都纽茵教育科技有限公司327
|
|
|
+ //则显示的下辖部门为国交部4、市场销售部6、会议会展策划部335
|
|
|
+ if (companyArray.Contains(ddlCompany.SelectedValue))
|
|
|
+ ddlDepartment.DataSource = sds.GetAll(1).FindAll(dep => depArray.Contains(dep.Id));
|
|
|
+ else//若有其它公司,再根据条件显示部门
|
|
|
+ ddlDepartment.DataSource = sds.GetAll(1);
|
|
|
+
|
|
|
+ ddlDepartment.DataTextField = "Name";
|
|
|
+ ddlDepartment.DataValueField = "Id";
|
|
|
+ ddlDepartment.DataBind();
|
|
|
+
|
|
|
+ if (Request.QueryString["department"] != null && !string.IsNullOrEmpty(Request.QueryString["department"].ToString()))
|
|
|
+ ddlDepartment.Items.FindByValue(Request.QueryString["department"].ToString()).Selected = true;
|
|
|
+
|
|
|
+ //根据部门ID显示员工数据
|
|
|
+ ddlPersonnel.DataSource = _us.GetAll(Convert.ToInt32(ddlDepartment.SelectedValue));
|
|
|
+ ddlPersonnel.DataTextField = "CnName";
|
|
|
+ ddlPersonnel.DataValueField = "Id";
|
|
|
+ ddlPersonnel.DataBind();
|
|
|
+
|
|
|
+ if (Request.QueryString["personnel"] != null && !string.IsNullOrEmpty(Request.QueryString["personnel"].ToString()))
|
|
|
+ ddlPersonnel.Items.FindByValue(Request.QueryString["personnel"].ToString()).Selected = true;
|
|
|
+
|
|
|
+ #region 月份下拉框 20210924 贾文滔
|
|
|
+
|
|
|
+ //假定起始年为2019年(可修改),结束年为现在年份加1
|
|
|
+ int startYear = 2019, endYear = DateTime.Now.Year + 1;
|
|
|
+ List<SeasonAndYearMonth> seasonList = new List<SeasonAndYearMonth>();
|
|
|
+ SeasonAndYearMonth seaon = null;
|
|
|
+
|
|
|
+ while (startYear < endYear)
|
|
|
+ {
|
|
|
+ seaon = new SeasonAndYearMonth();
|
|
|
+ seaon.season = startYear + "-1季度";
|
|
|
+ seaon.YearMonth = startYear + "-04";
|
|
|
+ seasonList.Add(seaon);
|
|
|
+ seaon = new SeasonAndYearMonth();
|
|
|
+ seaon.season = startYear + "-2季度";
|
|
|
+ seaon.YearMonth = startYear + "-07";
|
|
|
+ seasonList.Add(seaon);
|
|
|
+ seaon = new SeasonAndYearMonth();
|
|
|
+ seaon.season = startYear + "-3季度";
|
|
|
+ seaon.YearMonth = startYear + "-10";
|
|
|
+ seasonList.Add(seaon);
|
|
|
+ seaon = new SeasonAndYearMonth();
|
|
|
+ seaon.season = startYear + "-4季度";
|
|
|
+ seaon.YearMonth = (startYear + 1) + "-01";
|
|
|
+ seasonList.Add(seaon);
|
|
|
+
|
|
|
+ startYear = startYear + 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ seasonList = seasonList.OrderByDescending(s => s.YearMonth).ToList();
|
|
|
+
|
|
|
+ ddlYearMonth.DataSource = seasonList;
|
|
|
+ ddlYearMonth.DataTextField = "season";
|
|
|
+ ddlYearMonth.DataValueField = "YearMonth";
|
|
|
+ ddlYearMonth.DataBind();
|
|
|
+
|
|
|
+ if (Request.QueryString["yearmonth"] != null && !string.IsNullOrEmpty(Request.QueryString["yearmonth"].ToString()))
|
|
|
+ ddlYearMonth.Items.FindByValue(Request.QueryString["yearmonth"].ToString()).Selected = true;
|
|
|
+
|
|
|
+ seasonList.Insert(0, new SeasonAndYearMonth() { season = "全部月份", YearMonth = "全部月份" });
|
|
|
+
|
|
|
+ ddlYearMonth2.DataSource = seasonList;
|
|
|
+ ddlYearMonth2.DataTextField = "season";
|
|
|
+ ddlYearMonth2.DataValueField = "YearMonth";
|
|
|
+ ddlYearMonth2.DataBind();
|
|
|
+
|
|
|
+ if (Request.QueryString["yearmonth2"] != null && !string.IsNullOrEmpty(Request.QueryString["yearmonth2"].ToString()))
|
|
|
+ ddlYearMonth2.Items.FindByValue(Request.QueryString["yearmonth2"].ToString()).Selected = true;
|
|
|
+ #endregion
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 部门下拉框值改变事件
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="sender"></param>
|
|
|
+ /// <param name="e"></param>
|
|
|
+ protected void ddlDepartment_TextChanged(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ Response.Redirect("Royalty.aspx?company=" + ddlCompany.SelectedValue + "&department=" + ddlDepartment.SelectedValue
|
|
|
+ + "&startDate=" + null + "&endDate=" + null
|
|
|
+ + "&yearmonth2=" + null + "&yearmonth=" + null);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 发放统计下拉框值改变事件
|
|
|
+ /// 20210924 贾文滔
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="sender"></param>
|
|
|
+ /// <param name="e"></param>
|
|
|
+ protected void ddlYearMonth2_TextChanged(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ //Response.Redirect("CommissionWeb.aspx?company=" + ddlCompany.SelectedValue + "&department=" + ddlDepartment.SelectedValue + "&personnel=" + ddlPersonnel.SelectedValue
|
|
|
+ // + "&startDate=" + txtStartTime.Text + "&endDate=" + txtEndTime.Text
|
|
|
+ // + "&yearmonth2=" + ddlYearMonth2.SelectedValue + "&yearmonth=" + null);
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void btnSelect_Click(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ import();
|
|
|
+ }
|
|
|
+ void import()
|
|
|
+ {
|
|
|
+ #region 根据团组表,按提成标准分类生成提成表的数据
|
|
|
+ //查询指定时间段内的团组,团组类型:非团组ID 248;公关传媒部ID 302;会务活动ID 691
|
|
|
+ List<DelegationInfo> listDele = dis.GetByTime(txtStartTime.Text, txtEndTime.Text);
|
|
|
+
|
|
|
+ //查询指定时间段内的提成表数据
|
|
|
+ List<Commission> listCom = cms.GetAll(Convert.ToInt32(ddlPersonnel.SelectedValue), txtStartTime.Text, txtEndTime.Text);
|
|
|
+
|
|
|
+ //当前选中员工
|
|
|
+ string personId = ddlPersonnel.SelectedValue;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ //遍历该时间段的团,没有数据就添加到提成表
|
|
|
+ foreach (DelegationInfo dele in listDele)
|
|
|
+ {
|
|
|
+
|
|
|
+ if (listCom == null || listCom.Find(com => com.Personnel == Convert.ToInt32(personId) && com.Diid == dele.Id) == null)
|
|
|
+ {
|
|
|
+ Commission cTemp = new Commission();
|
|
|
+ cTemp.Personnel = Convert.ToInt32(ddlPersonnel.SelectedValue);
|
|
|
+ cTemp.Diid = dele.Id;
|
|
|
+ cTemp.GroupDate = dele.VisitEndDate;
|
|
|
+ cTemp.GroupLvl = dele.TeamLev;
|
|
|
+
|
|
|
+ CommissionCount(dele, personId, cTemp);
|
|
|
+ if (cTemp.Money != "0.00")
|
|
|
+ {
|
|
|
+ //根据团组完成时期,自动生成月份 20210924 贾文滔
|
|
|
+ DateTime EndDate = Convert.ToDateTime(dele.VisitEndDate);
|
|
|
+ int year = EndDate.Year;
|
|
|
+ int month = EndDate.Month;
|
|
|
+
|
|
|
+ if (month > 1 && month <= 3)
|
|
|
+ cTemp.WageYearMonth = year + "-04";
|
|
|
+ else if (month > 4 && month <= 6)
|
|
|
+ cTemp.WageYearMonth = year + "-07";
|
|
|
+ else if (month > 7 && month <= 9)
|
|
|
+ cTemp.WageYearMonth = year + "-10";
|
|
|
+ else
|
|
|
+ cTemp.WageYearMonth = (year + 1) + "-01";
|
|
|
+ }
|
|
|
+ else
|
|
|
+
|
|
|
+ cTemp.WageYearMonth = "";
|
|
|
+
|
|
|
+ cTemp.IsMakeLoss = 0;
|
|
|
+ cTemp.IsLoss = 0;
|
|
|
+ cTemp.OPer = UserId;
|
|
|
+ cTemp.OPDate = PublicCode.GetBeijingTime().ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
+ cTemp.IsDel = 0;
|
|
|
+
|
|
|
+ cms.ADD(cTemp);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Response.Write(ex.Message.ToString());
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 计算提成
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ void CommissionCount(DelegationInfo dele, string personId, Commission cTemp)
|
|
|
+ {
|
|
|
+ #region 团组利润计算
|
|
|
+
|
|
|
+ decimal sumFr = 0; //团组类型应收费用
|
|
|
+ float sumPr = 0; //团组类型已收费用
|
|
|
+ float reimburse = 0; //退款和其他费用
|
|
|
+ float TeamMoney = 0; //团组类型成本费用
|
|
|
+
|
|
|
+ //应收费用数据
|
|
|
+ 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)
|
|
|
+ {
|
|
|
+ sumPr += (float)fr.Price;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //收款退还费用数据
|
|
|
+ ViewOhterPriceOPService vopp = new ViewOhterPriceOPService();
|
|
|
+ List<ViewOtherPriceOP> opplist = vopp.GetByDIId(dele.Id);
|
|
|
+ foreach (ViewOtherPriceOP opp in opplist)
|
|
|
+ {
|
|
|
+ //退款和其他费用累计
|
|
|
+ reimburse += opp.Price;
|
|
|
+ }
|
|
|
+
|
|
|
+ //实际的团组类型已收金额需除去退款
|
|
|
+ sumPr = sumPr - reimburse;
|
|
|
+
|
|
|
+ //团组与非团组产生的成本费用数据
|
|
|
+ CreditCardPaymentService ccps = new CreditCardPaymentService();
|
|
|
+ List<CreditCardPayment> creditCardPayments = ccps.GetByDIIDNotIsPay(dele.Id);
|
|
|
+
|
|
|
+ if (creditCardPayments != null && creditCardPayments.Count > 0)
|
|
|
+ {
|
|
|
+ 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")
|
|
|
+ {
|
|
|
+ TeamMoney += item.PayMoney * float.Parse(item.PayPercentage) / 100 * float.Parse(item.DayRate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //实际的团组成本需除去退款
|
|
|
+ TeamMoney = TeamMoney - reimburse;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //整理已收数据
|
|
|
+ int num = sumPr.ToString("#0.000").IndexOf('.');
|
|
|
+ string sumPrstr = sumPr.ToString("#0.000").Substring(0, num + 3);
|
|
|
+ //整理成本数据
|
|
|
+ num = TeamMoney.ToString("#0.000").IndexOf('.');
|
|
|
+ string TeamMoneystr = TeamMoney.ToString("#0.000").Substring(0, num + 3);
|
|
|
+
|
|
|
+ //团组净利润=已收金额-成本
|
|
|
+ string Profitstr = (float.Parse(sumPrstr) - float.Parse(TeamMoneystr)).ToString("#0.00");
|
|
|
+ cTemp.NetProfit = Profitstr;
|
|
|
+
|
|
|
+ //团组尾款
|
|
|
+ int numsumFr = sumFr.ToString("#0.000").IndexOf('.');
|
|
|
+ string sumFrstr = sumFr.ToString("#0.000").Substring(0, numsumFr + 3);
|
|
|
+ string BalanceStr = (float.Parse(sumFrstr) - float.Parse(sumPrstr)).ToString("#0.00");
|
|
|
+ cTemp.Balance = BalanceStr;
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 提成按规则核算,生成基础的提成
|
|
|
+
|
|
|
+ //提成
|
|
|
+ float comMoney = 0;
|
|
|
+ //投诉
|
|
|
+ string compalin = "";
|
|
|
+
|
|
|
+ //机票
|
|
|
+ List<AirTicketReservations> listAir = new AirTicketReservationsService().GetAirTicketReservationsByDIID(dele.Id);
|
|
|
+ //酒店
|
|
|
+ List<HotelReservations> listHotel = new HotelReservationsService().GetByDIId(dele.Id);
|
|
|
+ //地接
|
|
|
+ List<CarTouristGuideGroundReservations> listOP = new CarTouristGuideGroundReservationsService().GetCarTouristGuideGroundReservationsByDIID(dele.Id);
|
|
|
+ //公务
|
|
|
+ List<InvitationOfficialActivities> listOA = new InvitationOfficialActivitiesService().GetIByDiid(dele.Id);
|
|
|
+ //签证
|
|
|
+ List<Visa> listVisa = new VisaService().GetVisaByDIID(dele.Id);
|
|
|
+
|
|
|
+ //OP
|
|
|
+ if (((IList)OP).Contains(personId))
|
|
|
+ {
|
|
|
+ //投诉标识
|
|
|
+ if (dele.OPComplain == 0)
|
|
|
+ {
|
|
|
+ //确认操作人数
|
|
|
+ string op = "";
|
|
|
+ for (int i = 0; i < listOP.Count; i++)
|
|
|
+ {
|
|
|
+ if (op.Contains(listOP[i].Operators.ToString()))
|
|
|
+ op = op + ";" + listOP[i].Operators.ToString();
|
|
|
+ }
|
|
|
+ op.TrimStart(';');
|
|
|
+ List<Users> opUsers = new List<Users>();
|
|
|
+ string name = "";
|
|
|
+ foreach (string uid in op.Split(';'))
|
|
|
+ {
|
|
|
+ name = name + "," + new UsersService().GetUsersByID(Convert.ToInt32(uid)).CnName;
|
|
|
+ opUsers.Add(new UsersService().GetUsersByID(Convert.ToInt32(uid)));
|
|
|
+ }
|
|
|
+ name.TrimStart(',');
|
|
|
+
|
|
|
+ //首先判定等级:VVIP及VIP
|
|
|
+ if (dele.TeamLev == "VVIP")//VVIP团组¥1000
|
|
|
+ {
|
|
|
+ comMoney = 1000;
|
|
|
+ cTemp.Detail = "本团为VVIP团组,提成共1000,操作人员为" + name + ",均分后" + ddlPersonnel.SelectedItem.Text + "提成为" + comMoney / opUsers.Count;
|
|
|
+ }
|
|
|
+ else if (dele.TeamLev == "VIP")//VIP团组¥500
|
|
|
+ {
|
|
|
+ comMoney = 500;
|
|
|
+ cTemp.Detail = "本团为VIP团组,提成共500,操作人员为" + name + ",均分后" + ddlPersonnel.SelectedItem.Text + "提成为" + comMoney / opUsers.Count;
|
|
|
+ }
|
|
|
+ else if (dele.TeamLev == null || dele.TeamLev == "暂未定级")
|
|
|
+ {
|
|
|
+ //其次判定普通标准团组:人数大于6和天数大于6,机票、酒店和地接有数据
|
|
|
+ if (dele.VisitPNumber >= 6 && dele.VisitDays >= 6 && listAir.Count() > 0 && listHotel.Count() > 0 && listOP.Count() > 0)//普通标准团组¥300
|
|
|
+ {
|
|
|
+ comMoney = 300;
|
|
|
+ cTemp.Detail = "本团为普通标准团,提成共300,操作人员为" + name + ",均分后" + ddlPersonnel.SelectedItem.Text + "提成为" + comMoney / opUsers.Count;
|
|
|
+ }
|
|
|
+ else //非普通标准团组或非全程接待统一为¥100
|
|
|
+ {
|
|
|
+ comMoney = 100;
|
|
|
+ cTemp.Detail = "本团为非普通标准团,提成共100,操作人员为" + name + ",均分后" + ddlPersonnel.SelectedItem.Text + "提成为" + comMoney / opUsers.Count;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ comMoney = 0;
|
|
|
+ cTemp.Detail = "本团OP业务收到投诉,无提成";
|
|
|
+ compalin = "OP业务";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //机票
|
|
|
+ else if (((IList)AirTicket).Contains(personId))
|
|
|
+ {
|
|
|
+ //投诉标识
|
|
|
+ if (dele.AirComplain == 0)
|
|
|
+ {
|
|
|
+ //确认操作人数
|
|
|
+ string op = "";
|
|
|
+ List<Users> opUsers = new List<Users>();
|
|
|
+ string name = "";
|
|
|
+
|
|
|
+ for (int i = 0; i < listAir.Count; i++)
|
|
|
+ {
|
|
|
+ if (op.Contains(listAir[i].Operators.ToString()) == false)
|
|
|
+ op = op + ";" + listAir[i].Operators.ToString();
|
|
|
+ }
|
|
|
+ if (op != "" && op[0].ToString() != "")
|
|
|
+ {
|
|
|
+ op.TrimStart(';');
|
|
|
+
|
|
|
+
|
|
|
+ foreach (string uid in op.Split(';'))
|
|
|
+ {
|
|
|
+ if (uid != "")
|
|
|
+ {
|
|
|
+ name = name + "," + new UsersService().GetUsersByID(Convert.ToInt32(uid)).CnName;
|
|
|
+ opUsers.Add(new UsersService().GetUsersByID(Convert.ToInt32(uid)));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ name.TrimStart(',');
|
|
|
+ }
|
|
|
+
|
|
|
+ //提成方式:¥10/人×人数×段数(每个组团涉及的换机次数)
|
|
|
+ //段数获取:2020年之前的团从机票费用录入获取、2020年及之后的团从机票黑屏代码里提取
|
|
|
+ AirTicketBlackCode AirTTemp = new AirTicketBlackCodeService().getByDiid(dele.Id);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if (listAir != null && listAir.Count > 0)
|
|
|
+ {
|
|
|
+ //string[] CodeList = Regex.Split(AirTTemp.BlackCode, "\\d+\\.", RegexOptions.IgnoreCase);
|
|
|
+ //去除多余空格,方法一Linq扩展方法
|
|
|
+ //CodeList = CodeList.Where(str => str != "").ToArray();
|
|
|
+ //CodeList = CodeList.Where(str => str != " ").ToArray();
|
|
|
+
|
|
|
+ //使用团组id取出所有的机票详情
|
|
|
+ AirTicketReservationsService service = new AirTicketReservationsService();
|
|
|
+ var ResultArr = service.GetAirTicketReservationsByDIID(dele.Id);
|
|
|
+ float SunPrice = 0; //总金额
|
|
|
+ int AirSegment = 0; //航段数
|
|
|
+
|
|
|
+ foreach (var item in ResultArr.Where(x => x.Price >= 0).ToList())
|
|
|
+ {
|
|
|
+ string flishCode = item.FlightsCode;
|
|
|
+ var AirCodeArr = flishCode.Split('/').Where(x => !string.IsNullOrEmpty(x)).ToArray();
|
|
|
+ AirSegment += AirCodeArr.Length * item.ClientNum;
|
|
|
+ }
|
|
|
+
|
|
|
+ SunPrice = AirSegment * 10;
|
|
|
+ comMoney = SunPrice;
|
|
|
+ cTemp.Detail = "本团人数" + Convert.ToInt32(dele.VisitPNumber) + ",航段数" + AirSegment.ToString() + ",每人10元,提成共" + SunPrice.ToString()
|
|
|
+ + ",操作人员为" + name + ",均分后" + ddlPersonnel.SelectedItem.Text + "提成为" + (SunPrice / opUsers.Count).ToString("#0.00");
|
|
|
+ }
|
|
|
+ else if (listAir.Count > 0)
|
|
|
+ {
|
|
|
+ List<string> listStr = new List<string>();
|
|
|
+ foreach (AirTicketReservations air in listAir)
|
|
|
+ {
|
|
|
+ string[] CodeList = Regex.Split(air.FlightsDescription, "\\d+\\.", RegexOptions.IgnoreCase);
|
|
|
+ //去除多余空格,方法一Linq扩展方法
|
|
|
+ CodeList = CodeList.Where(str => str != "").ToArray();
|
|
|
+ CodeList = CodeList.Where(str => str != " ").ToArray();
|
|
|
+
|
|
|
+ foreach (string code in CodeList)
|
|
|
+ listStr.Add(code);
|
|
|
+ }
|
|
|
+ comMoney = 10 * Convert.ToInt32(dele.VisitPNumber) * listStr.Count();
|
|
|
+ cTemp.Detail = "本团人数" + Convert.ToInt32(dele.VisitPNumber) + ",航段数" + listStr.Count() + ",每人10元,提成共" + comMoney
|
|
|
+ + ",操作人员为" + name + ",均分后" + ddlPersonnel.SelectedItem.Text + "提成为" + comMoney / opUsers.Count;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ comMoney = 0;
|
|
|
+ cTemp.Detail = "本团机票业务收到投诉,无提成";
|
|
|
+ compalin = compalin + "、机票业务";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //酒店
|
|
|
+ else if (((IList)Hotel).Contains(personId))
|
|
|
+ {
|
|
|
+ //投诉标识
|
|
|
+
|
|
|
+ //确认操作人数
|
|
|
+ string op = "";
|
|
|
+ if (listHotel.Count!=0 && listHotel!=null)
|
|
|
+ {
|
|
|
+ for (int i = 0; i < listHotel.Count; i++)
|
|
|
+ {
|
|
|
+ if (!op.Contains(listHotel[i].Operators.ToString()))
|
|
|
+ op += listHotel[i].Operators.ToString() + ";";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ op.TrimEnd(';');
|
|
|
+ List<Users> opUsers = new List<Users>();
|
|
|
+ string name = "";
|
|
|
+ foreach (string uid in op.Split(';'))
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrWhiteSpace(uid) && uid!="0")
|
|
|
+ {
|
|
|
+ name += new UsersService().GetUsersByID(Convert.ToInt32(uid)).CnName + ",";
|
|
|
+ opUsers.Add(new UsersService().GetUsersByID(Convert.ToInt32(uid)));
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ name.TrimEnd(',');
|
|
|
+
|
|
|
+ //标准团组:¥10/间/晚 * 实际订房间数 * 实际订房晚数;
|
|
|
+ int days = 0, rooms = 0;
|
|
|
+ if (listHotel != null)
|
|
|
+ {
|
|
|
+ foreach (HotelReservations hotel in listHotel)
|
|
|
+ {
|
|
|
+ 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)
|
|
|
+ {
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (hotel.SuiteRoomPrice < 0)
|
|
|
+ {
|
|
|
+ s = -1;
|
|
|
+ rooms = rooms - hotel.SuiteRoomCount;
|
|
|
+ }
|
|
|
+ else if (hotel.SuiteRoomPrice != 0)
|
|
|
+ {
|
|
|
+ d = 1;
|
|
|
+ rooms = rooms + hotel.SuiteRoomCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (hotel.OtherRoomPrice < 0)
|
|
|
+ {
|
|
|
+ s = -1;
|
|
|
+ rooms = rooms - hotel.OtherRoomCount;
|
|
|
+ }
|
|
|
+ else if (hotel.OtherRoomPrice != 0)
|
|
|
+ {
|
|
|
+ d = 1;
|
|
|
+ rooms = rooms + hotel.OtherRoomCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (s == -1)
|
|
|
+ {
|
|
|
+ if (rooms == 1)
|
|
|
+ {
|
|
|
+ days = days - Tdays.Days;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (d==1)
|
|
|
+ {
|
|
|
+ days = days + Tdays.Days;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ comMoney = 10 * rooms * days;
|
|
|
+ if (rooms != 0 && days != 0)
|
|
|
+ {
|
|
|
+ if (dele.HotelComplain==0)
|
|
|
+ {
|
|
|
+ cTemp.Detail = "本团人数" + Convert.ToInt32(dele.VisitPNumber) + ",总房间数" + rooms + ",总住宿天数" + days + ",每人10元,提成共" + comMoney
|
|
|
+ + ",操作人员为" + name + ",总提成为" + comMoney;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ cTemp.Detail = "本团人数" + Convert.ToInt32(dele.VisitPNumber) + ",总房间数" + rooms + ",总住宿天数" + days + ",每人10元,提成共" + comMoney
|
|
|
+ + ",操作人员为" + name + ",总提成为" + comMoney+ ",本团商邀/公务业务收到投诉,扣50,剩提成"+(comMoney-50);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ cTemp.Detail = "本团人数" + Convert.ToInt32(dele.VisitPNumber) + ",总房间数" + rooms + ",总住宿天数" + days + ",每人10元,提成共" + comMoney
|
|
|
+ + ",操作人员为" + name + ",总提成为" + 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ //商邀
|
|
|
+ else if (((IList)Invitation).Contains(personId))
|
|
|
+ {
|
|
|
+ //投诉标识
|
|
|
+ if (dele.OAComplain == 0)
|
|
|
+ {
|
|
|
+ //2)付费公务活动部分:¥50 / 团;
|
|
|
+ //4)不付费公务活动部分(自己联络)额外奖励:¥200 / 团(若公务活动方与邀请方为同一机构,奖励金额为¥100 / 团);
|
|
|
+ //5)只发邀请的团组不付费邀请额外奖励:¥100 / 团;
|
|
|
+ //邀请方已授权我司签发的邀请仍按照:¥100 / 团,无额外奖励。
|
|
|
+ if (listOA != null && listOA.Count() > 0)
|
|
|
+ {
|
|
|
+ foreach (InvitationOfficialActivities oa in listOA)
|
|
|
+ {
|
|
|
+ if (oa.InviteCosts > 0) //1)公司付费邀请函部分: ¥100 / 团;
|
|
|
+ {
|
|
|
+ comMoney = 100;
|
|
|
+ cTemp.Detail = "本团包含公司付费邀请函部分," + ddlPersonnel.SelectedItem.Text + "提成共" + comMoney;
|
|
|
+ }
|
|
|
+ else// 3)公司不付费邀请函部分(自己联络)额外奖励:¥300 / 团;
|
|
|
+ {
|
|
|
+ comMoney = 300;
|
|
|
+ cTemp.Detail = "本团不包含公司付费邀请函部分," + ddlPersonnel.SelectedItem.Text + "提成共" + comMoney;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ comMoney = 0;
|
|
|
+ cTemp.Detail = "本团商邀/公务业务收到投诉,无提成";
|
|
|
+ compalin = compalin + "、商邀/公务业务";
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ //签证
|
|
|
+ else if (((IList)Visa).Contains(personId))
|
|
|
+ {
|
|
|
+ //投诉标识
|
|
|
+ if (dele.VisaComplain == 0)
|
|
|
+ {
|
|
|
+ //优先且如果为第三方办理签证,则无提成
|
|
|
+ //再查看办理签证的客户是否是本公司员工,如果是则不计算该人数提成
|
|
|
+ List<Users> listuser = new UsersService().GetAll();
|
|
|
+ List<Users> visauser = new List<Users>();
|
|
|
+ int visanum = 0;
|
|
|
+ bool isthird = false;//第三方代办标识
|
|
|
+ foreach (Visa visa in listVisa)
|
|
|
+ {
|
|
|
+ if (visa.IsThird == 1)
|
|
|
+ isthird = true;
|
|
|
+
|
|
|
+ visauser = listuser.FindAll(u => u.CnName == visa.VisaClient);
|
|
|
+ visanum = visanum + visauser.Count;
|
|
|
+ }
|
|
|
+ //第三方代办标识
|
|
|
+ if (isthird == false)
|
|
|
+ {
|
|
|
+
|
|
|
+ //确认操作人数
|
|
|
+ string op = "";
|
|
|
+ for (int i = 0; i < listVisa.Count; i++)
|
|
|
+ {
|
|
|
+ if (op.Contains(listVisa[i].Operators.ToString()))
|
|
|
+ op = op + ";" + listVisa[i].Operators.ToString();
|
|
|
+ }
|
|
|
+ op.TrimStart(';');
|
|
|
+ List<Users> opUsers = new List<Users>();
|
|
|
+ string name = "";
|
|
|
+ foreach (string uid in op.Split(';'))
|
|
|
+ {
|
|
|
+ name = name + "," + new UsersService().GetUsersByID(Convert.ToInt32(uid)).CnName;
|
|
|
+ opUsers.Add(new UsersService().GetUsersByID(Convert.ToInt32(uid)));
|
|
|
+ }
|
|
|
+ name.TrimStart(',');
|
|
|
+
|
|
|
+ if (dele.VisitCountry.Contains("英国") || dele.VisitCountry.Contains("加拿大") || dele.VisitCountry.Contains("美国")) //1)办理英国、加拿大、美国签证¥50元 / 人 / 团;
|
|
|
+ {
|
|
|
+ comMoney = 50 * (Convert.ToInt32(dele.VisitPNumber) - visanum);
|
|
|
+ cTemp.Detail = "本团人数" + Convert.ToInt32(dele.VisitPNumber) + ",其中公司同事人数为" + visanum + ",办理英国、加拿大、美国签证每人50元,提成共" + comMoney
|
|
|
+ + ",操作人员为" + name + ",均分后" + ddlPersonnel.SelectedItem.Text + "提成为" + comMoney / opUsers.Count;
|
|
|
+ }
|
|
|
+ else//2)申根国家及其他所有国家¥30元 / 人 / 团;
|
|
|
+ {
|
|
|
+ comMoney = 30 * (Convert.ToInt32(dele.VisitPNumber) - visanum);
|
|
|
+ cTemp.Detail = "本团人数" + Convert.ToInt32(dele.VisitPNumber) + ",其中公司同事人数为" + visanum + ",办理申根国家及其他所有国家每人30元,提成共" + comMoney
|
|
|
+ + ",操作人员为" + name + ",均分后" + ddlPersonnel.SelectedItem.Text + "提成为" + comMoney / opUsers.Count;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ comMoney = 0;
|
|
|
+ cTemp.Detail = "本团由第三方代办签证,故" + ddlPersonnel.SelectedItem.Text + "无提成";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ comMoney = 0;
|
|
|
+ cTemp.Detail = "本团签证业务收到投诉,无提成";
|
|
|
+ compalin = compalin + "、签证业务";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //主管经理
|
|
|
+ else if (((IList)Manager).Contains(personId))
|
|
|
+ {
|
|
|
+ //投诉标识
|
|
|
+ if (dele.HotelComplain == 0 && dele.OPComplain == 0 && dele.VisaComplain == 0 && dele.OAComplain == 0 && dele.AirComplain == 0)
|
|
|
+ {
|
|
|
+ if (dele.VisitPNumber >= 6 && dele.VisitDays >= 6 && listAir.Count() > 0 && listHotel.Count() > 0 && listOP.Count() > 0)//普通标准团组¥300
|
|
|
+ {
|
|
|
+ comMoney = 100;
|
|
|
+ cTemp.Detail = "本团为普通标准团组,提成共100,徐茜和董果均分后" + ddlPersonnel.SelectedItem.Text + "提成为50";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ comMoney = 0;
|
|
|
+ cTemp.Detail = "本团为非普通标准团组,无提成";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ comMoney = 0;
|
|
|
+ compalin.TrimStart('、');
|
|
|
+ cTemp.Detail = "本团" + compalin + "收到客户投诉,故" + ddlPersonnel.SelectedItem.Text + "无提成";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //销售部
|
|
|
+ else if (ddlDepartment.SelectedValue == "6")
|
|
|
+ {
|
|
|
+ //判定尾款是否收完
|
|
|
+ if (float.Parse(BalanceStr) <= 0)
|
|
|
+ {
|
|
|
+ //团组成单人判定
|
|
|
+ if (dele.Director.ToString() == ddlPersonnel.SelectedValue)
|
|
|
+ {
|
|
|
+
|
|
|
+ //提成金额 = 净利润 * 7% = (销售额 - 成本 -( 销售额 * 20% ))* 7%
|
|
|
+ comMoney = (float.Parse(sumPrstr) - float.Parse(TeamMoneystr) - float.Parse(sumPrstr) / 5) * 7 / 100;
|
|
|
+ cTemp.Detail = "本团销售额" + sumPrstr + ",支出" + TeamMoneystr + ",费用和税金按销售额的20%计算,为" + float.Parse(sumPrstr) / 5 + ",再乘7%," + ddlPersonnel.SelectedItem.Text + "提成共" + comMoney;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ comMoney = 0;
|
|
|
+ cTemp.Detail = "本团由" + new UsersService().GetUsersByID(dele.Director).CnName + "负责,故" + ddlPersonnel.SelectedItem.Text + "无提成";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ comMoney = 0;
|
|
|
+ cTemp.Detail = "本团收款未完成,尾款" + BalanceStr + ",无提成";
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //会展会务部
|
|
|
+ else if (ddlDepartment.SelectedValue == "335")
|
|
|
+ {
|
|
|
+ //判定尾款是否收完
|
|
|
+ if (float.Parse(BalanceStr) <= 0)
|
|
|
+ {
|
|
|
+ //成单人判定
|
|
|
+ if (dele.Director.ToString() == ddlPersonnel.SelectedValue)
|
|
|
+ {
|
|
|
+ bool t = true;
|
|
|
+ if (t)
|
|
|
+ {
|
|
|
+ comMoney = (float.Parse(sumPrstr) - float.Parse(TeamMoneystr) - float.Parse(sumPrstr) / 5) * 5 / 1000;
|
|
|
+ cTemp.Detail = "本团销售额" + sumPrstr + ",支出" + TeamMoneystr + ",费用和税金按销售额的20%计算,为" + float.Parse(sumPrstr) / 5 + ",再乘5‰," + ddlPersonnel.SelectedItem.Text + "提成共" + comMoney;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ { //自行签订会展会提的提成金额 = 净利润 * 7% = (销售额 - 成本 -( 销售额 * 20% ))* 7%
|
|
|
+ comMoney = (float.Parse(sumPrstr) - float.Parse(TeamMoneystr) - float.Parse(sumPrstr) / 5) * 7 / 100;
|
|
|
+ cTemp.Detail = "本团销售额" + sumPrstr + ",支出" + TeamMoneystr + ",费用和税金按销售额的20%计算,为" + float.Parse(sumPrstr) / 5 + ",再乘7%," + ddlPersonnel.SelectedItem.Text + "提成共" + comMoney;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ comMoney = 0;
|
|
|
+ cTemp.Detail = "本团由" + new UsersService().GetUsersByID(dele.Director).CnName + "负责,故" + ddlPersonnel.SelectedItem.Text + "无提成";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ comMoney = 0;
|
|
|
+ cTemp.Detail = "本团收款未完成,尾款" + BalanceStr + ",无提成";
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ cTemp.Money = comMoney.ToString("#0.00");
|
|
|
+ #endregion
|
|
|
}
|
|
|
}
|
|
|
}
|