Browse Source

no message

xingzai 1 year ago
parent
commit
f1d6eb8973

+ 58 - 1
controllers/company_apply_v2.go

@@ -79,7 +79,7 @@ func (this *CompanyApplyController) ApplyServiceUpdate() {
 	}
 	mapPermissionIdUpgrade := make(map[int]int, 0)
 	mapPermissionIdExpensive := make(map[int]int, 0)
-
+	var raicontractType string
 	if productId == 2 {
 		// CRM13.3改-是否为权益内部人员, 非权益内部人员只能勾选行业不能勾选单独的主客观, 勾选行业(即勾选主观的ID需要加入客观的权限ID)
 		isRai, e := services.CheckRaiAdmin(sysUser.AdminId)
@@ -97,6 +97,23 @@ func (this *CompanyApplyController) ApplyServiceUpdate() {
 			return
 		}
 		req.PermissionIds = permissionIdsNew
+
+		//权益的新签合同重新定义,如果合同起始时间在新签合同起始日期 1年之内的,仍为新签合同。
+		raicontractType = req.ContractType
+		if raicontractType != "新签合同" {
+			startDateTime, _ := time.Parse(utils.FormatDate, req.StartDate)
+			startDateTime = startDateTime.AddDate(-1, 0, 0)
+			totalLastYear, err := company.GetCompanyContractCountRaiByLastYear(req.CompanyId, startDateTime.Format(utils.FormatDate))
+			if err != nil {
+				br.Msg = "获取合同信息失败"
+				br.ErrMsg = "获取合同信息失败,Err:" + err.Error()
+				return
+			}
+			if totalLastYear > 0 {
+				raicontractType = "新签合同"
+			}
+		}
+
 	} else {
 		permissionStr, err := company.GetPermissionIdById(req.PermissionIds)
 		if err != nil {
@@ -217,6 +234,7 @@ func (this *CompanyApplyController) ApplyServiceUpdate() {
 		contract.ProductName = companyProduct.ProductName
 		contract.CompanyProductId = companyProduct.CompanyProductId
 		contract.ContractType = req.ContractType
+		contract.RaiContractType = raicontractType
 		contract.ContractCode = contractCode
 		contract.StartDate = req.StartDate
 		contract.EndDate = req.EndDate
@@ -568,6 +586,7 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 
 	// 合同类型
 	contractType := req.ContractType
+	var raicontractType string // 权益合同类型
 	{
 		if contractType == "" {
 			contractType = "新签合同"
@@ -588,6 +607,24 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 			contractType = "续约合同"
 		}
 
+		if productId == 2 {
+			//权益的新签合同重新定义,如果合同起始时间在新签合同起始日期 1年之内的,仍为新签合同。
+			raicontractType = contractType
+			if raicontractType != "新签合同" {
+				startDateTime, _ := time.Parse(utils.FormatDate, req.StartDate)
+				startDateTime = startDateTime.AddDate(-1, 0, 0)
+				totalLastYear, err := company.GetCompanyContractCountRaiByLastYear(req.CompanyId, startDateTime.Format(utils.FormatDate))
+				if err != nil {
+					br.Msg = "获取合同信息失败"
+					br.ErrMsg = "获取合同信息失败,Err:" + err.Error()
+					return
+				}
+				if totalLastYear > 0 {
+					raicontractType = "新签合同"
+				}
+			}
+		}
+
 		// 若上面的判断不是续约合同, 则继续查询是否存在正式转试用的记录,如果存在,那么合同类型是续约合同
 		if contractType != "续约合同" {
 			total, e := company.GetCompanyProductOperationRecordCount(companyProduct.CompanyId, companyProduct.ProductId)
@@ -634,6 +671,7 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 		contract.CompanyId = req.CompanyId
 		contract.ProductId = productId
 		contract.ContractType = contractType
+		contract.RaiContractType = raicontractType
 		contract.ProductName = companyProduct.ProductName
 		contract.CompanyProductId = companyProduct.CompanyProductId
 		contract.ContractCode = contractCode
@@ -1081,6 +1119,24 @@ func (this *CompanyApplyController) ApplyBySystemContract() {
 		}
 	}
 
+	var raicontractType string
+	if productId == 2 {
+		//权益的新签合同重新定义,如果合同起始时间在新签合同起始日期 1年之内的,仍为新签合同。
+		raicontractType = contractType
+		if raicontractType != "新签合同" {
+			startDateTime := contractDetail.StartDate.AddDate(-1, 0, 0)
+			totalLastYear, err := company.GetCompanyContractCountRaiByLastYear(req.CompanyId, startDateTime.Format(utils.FormatDate))
+			if err != nil {
+				br.Msg = "获取合同信息失败"
+				br.ErrMsg = "获取合同信息失败,Err:" + err.Error()
+				return
+			}
+			if totalLastYear > 0 {
+				raicontractType = "新签合同"
+			}
+		}
+	}
+
 	var companyApprovalId int
 	if req.CompanyApprovalId <= 0 {
 		//当前是否存在待审批的单子
@@ -1105,6 +1161,7 @@ func (this *CompanyApplyController) ApplyBySystemContract() {
 			CompanyId:        req.CompanyId,
 			ProductId:        contractDetail.ProductId,
 			ContractType:     contractType,
+			RaiContractType:  raicontractType,
 			ProductName:      companyProduct.ProductName,
 			CompanyProductId: companyProduct.CompanyProductId,
 			ContractCode:     contractDetail.ContractCode,

+ 2 - 2
controllers/statistic_company_merge.go

@@ -204,7 +204,7 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 		pars1 := pars
 		condition1 += ` AND a.start_date >= ? AND a.start_date <= ?  `
 		pars1 = append(pars1, startDate, endDate)
-		condition1 += ` AND a.contract_type = ? `
+		condition1 += ` AND a.rai_contract_type = ? `
 		pars1 = append(pars1, "新签合同")
 		newCompanyTotal, err = company.GetIncrementalNewCompanyProductMergeCount(condition1, pars1)
 		if err != nil && err.Error() != utils.ErrNoRow() {
@@ -240,7 +240,7 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 		pars1 := pars
 		condition1 += ` AND a.start_date >= ? AND a.start_date <= ? `
 		pars1 = append(pars1, startDate, endDate)
-		condition1 += ` AND a.contract_type = ? `
+		condition1 += ` AND a.rai_contract_type = ? `
 		pars1 = append(pars1, "续约合同")
 		////额外条件(续约合同的起始日期包含在所选时间段内且不包含在新签合同存续期内的客户)
 		//pars1 = append(pars1, endDate)

+ 9 - 0
models/company/company_contract.go

@@ -26,6 +26,7 @@ type CompanyContract struct {
 	Source            string    `description:"合同来源,枚举值:上传附件、系统合同,默认上传附件"`
 	PackageType       int       `description:"套餐类型,0:无,1:大套餐,2:小套餐"`
 	RaiPackageType    int       `description:"权益套餐类型: 0-无; 1-70w大套餐; 2-45w大套餐"`
+	RaiContractType   string    `description:"权益合同类型:枚举值:'新签合同','续约合同','补充协议'"`
 }
 
 // 新增客户合同
@@ -305,3 +306,11 @@ func GetLastContractListByEndDate(companyId, productId int, endDate string) (ite
 
 	return
 }
+
+// 获取权益近一年是否有新签合同
+func GetCompanyContractCountRaiByLastYear(companyId int, startDate string) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(1) AS total FROM company_contract AS a WHERE  product_id = 2  AND   contract_type = '新签合同'  AND  company_id = ?  AND start_date >= ? `
+	err = o.Raw(sql, companyId, startDate).QueryRow(&count)
+	return
+}