作者 陈志颖

fix:分红预算取消错误

@@ -237,7 +237,11 @@ func (dividendsEstimateService *DividendsEstimateService) CancelDividendsEstimat @@ -237,7 +237,11 @@ func (dividendsEstimateService *DividendsEstimateService) CancelDividendsEstimat
237 237
238 // 校验是否能够取消 238 // 校验是否能够取消
239 if dividendsEstimate.DividendsType == domain.ORDER_DIVIDENDS || dividendsEstimate.DividendsType == domain.RETURN_WRITE_OFF { // 订单分红、退货冲销 239 if dividendsEstimate.DividendsType == domain.ORDER_DIVIDENDS || dividendsEstimate.DividendsType == domain.RETURN_WRITE_OFF { // 订单分红、退货冲销
240 - if count, dividendsEstimatesRelative, err2 := dividendsEstimateRepository.Find(map[string]interface{}{"orderOrReturnedOrderNum": dividendsEstimate.OrderOrReturnedOrderNum}); err2 != nil { 240 + if count, dividendsEstimatesRelative, err2 := dividendsEstimateRepository.Find(map[string]interface{}{
  241 + "orderOrReturnedOrderNum": dividendsEstimate.OrderOrReturnedOrderNum,
  242 + "companyId": dividendsEstimate.Company.CompanyId,
  243 + "orgId": dividendsEstimate.Org.OrgId,
  244 + }); err2 != nil {
241 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err2.Error()) 245 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err2.Error())
242 } else { 246 } else {
243 if count > 0 { 247 if count > 0 {
@@ -249,7 +253,11 @@ func (dividendsEstimateService *DividendsEstimateService) CancelDividendsEstimat @@ -249,7 +253,11 @@ func (dividendsEstimateService *DividendsEstimateService) CancelDividendsEstimat
249 } 253 }
250 } 254 }
251 } else if dividendsEstimate.DividendsType == domain.MONEY_INCENTIVES { // 金额激励分红 255 } else if dividendsEstimate.DividendsType == domain.MONEY_INCENTIVES { // 金额激励分红
252 - if count, dividendsEstimatesRelative, err3 := dividendsEstimateRepository.Find(map[string]interface{}{"cooperationContractNumber": dividendsEstimate.CooperationContractNumber}); err3 != nil { 256 + if count, dividendsEstimatesRelative, err3 := dividendsEstimateRepository.Find(map[string]interface{}{
  257 + "cooperationContractNumber": dividendsEstimate.CooperationContractNumber,
  258 + "companyId": dividendsEstimate.Company.CompanyId,
  259 + "orgId": dividendsEstimate.Org.OrgId,
  260 + }); err3 != nil {
253 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err3.Error()) 261 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err3.Error())
254 } else { 262 } else {
255 if count > 0 { 263 if count > 0 {
@@ -347,10 +355,14 @@ func (dividendsEstimateService *DividendsEstimateService) BatchCancelDividendsEs @@ -347,10 +355,14 @@ func (dividendsEstimateService *DividendsEstimateService) BatchCancelDividendsEs
347 355
348 // 校验是否能够取消 356 // 校验是否能够取消
349 if dividendsEstimate.DividendsType == domain.ORDER_DIVIDENDS || dividendsEstimate.DividendsType == domain.RETURN_WRITE_OFF { // 订单分红、退货冲销 357 if dividendsEstimate.DividendsType == domain.ORDER_DIVIDENDS || dividendsEstimate.DividendsType == domain.RETURN_WRITE_OFF { // 订单分红、退货冲销
350 - if count, dividendsEstimatesRelative, err2 := dividendsEstimateRepository.Find(map[string]interface{}{"orderOrReturnedOrderNum": dividendsEstimate.OrderOrReturnedOrderNum}); err2 != nil { 358 + if countRelativeDividendsEstimates, dividendsEstimatesRelative, err2 := dividendsEstimateRepository.Find(map[string]interface{}{
  359 + "orderOrReturnedOrderNum": dividendsEstimate.OrderOrReturnedOrderNum,
  360 + "companyId": dividendsEstimate.Company.CompanyId,
  361 + "orgId": dividendsEstimate.Org.OrgId,
  362 + }); err2 != nil {
351 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err2.Error()) 363 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err2.Error())
352 } else { 364 } else {
353 - if count > 0 { 365 + if countRelativeDividendsEstimates > 0 {
354 for _, dividendsEstimateRelative := range dividendsEstimatesRelative { 366 for _, dividendsEstimateRelative := range dividendsEstimatesRelative {
355 if dividendsEstimateRelative.DividendsAccountStatus == domain.ACCOUNTED { 367 if dividendsEstimateRelative.DividendsAccountStatus == domain.ACCOUNTED {
356 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "已有相关分红预算单已结算,无法取消") 368 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "已有相关分红预算单已结算,无法取消")
@@ -359,10 +371,14 @@ func (dividendsEstimateService *DividendsEstimateService) BatchCancelDividendsEs @@ -359,10 +371,14 @@ func (dividendsEstimateService *DividendsEstimateService) BatchCancelDividendsEs
359 } 371 }
360 } 372 }
361 } else if dividendsEstimate.DividendsType == domain.MONEY_INCENTIVES { // 金额激励分红 373 } else if dividendsEstimate.DividendsType == domain.MONEY_INCENTIVES { // 金额激励分红
362 - if count, dividendsEstimatesRelative, err3 := dividendsEstimateRepository.Find(map[string]interface{}{"cooperationContractNumber": dividendsEstimate.CooperationContractNumber}); err3 != nil { 374 + if countRelativeDividendsEstimates, dividendsEstimatesRelative, err3 := dividendsEstimateRepository.Find(map[string]interface{}{
  375 + "cooperationContractNumber": dividendsEstimate.CooperationContractNumber,
  376 + "companyId": dividendsEstimate.Company.CompanyId,
  377 + "orgId": dividendsEstimate.Org.OrgId,
  378 + }); err3 != nil {
363 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err3.Error()) 379 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err3.Error())
364 } else { 380 } else {
365 - if count > 0 { 381 + if countRelativeDividendsEstimates > 0 {
366 for _, dividendsEstimateRelative := range dividendsEstimatesRelative { 382 for _, dividendsEstimateRelative := range dividendsEstimatesRelative {
367 if dividendsEstimateRelative.DividendsAccountStatus == domain.ACCOUNTED { 383 if dividendsEstimateRelative.DividendsAccountStatus == domain.ACCOUNTED {
368 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "已有相关分红预算单已结算,无法取消") 384 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "已有相关分红预算单已结算,无法取消")
@@ -117,21 +117,6 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo @@ -117,21 +117,6 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo
117 continue 117 continue
118 } 118 }
119 119
120 - // 校验合约关联的项目是否已结束  
121 - //if cooperationProject.Status == 2 {  
122 - // dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{  
123 - // DividendsUser: nil,  
124 - // DividendsParticipateType: 0,  
125 - // DividendsStage: 0,  
126 - // DividendsAmount: 0,  
127 - // OrderOrReturnedOrderNumber: orderGood.DividendsOrderNumber,  
128 - // IsSuccessfully: false,  
129 - // Reason: "共创项目" + orderGood.CooperationContractNumber + "已结束",  
130 - // })  
131 - // continue  
132 - // //return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("共创项目%s已结束", cooperationContract.CooperationProjectNumber))  
133 - //}  
134 -  
135 if orderGood.DividendsOrderNumber != "" { // 获取分红订单 120 if orderGood.DividendsOrderNumber != "" { // 获取分红订单
136 // 获取分红订单 121 // 获取分红订单
137 dividendsOrder, err2 := dividendsOrderRepository.FindOne(map[string]interface{}{ 122 dividendsOrder, err2 := dividendsOrderRepository.FindOne(map[string]interface{}{
@@ -190,6 +175,7 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo @@ -190,6 +175,7 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo
190 if dividendsIncentivesRuleMatched != nil { 175 if dividendsIncentivesRuleMatched != nil {
191 for _, undertaker := range cooperationContract.Undertakers { 176 for _, undertaker := range cooperationContract.Undertakers {
192 // 添加承接人分红预算信息详情 177 // 添加承接人分红预算信息详情
  178 + if dividendsIncentivesRuleMatched.DividendsIncentivesPercentage > 0 {
193 undertakerDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.DividendsIncentivesPercentage).Div(decimal.NewFromFloat(100))).Float64() 179 undertakerDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.DividendsIncentivesPercentage).Div(decimal.NewFromFloat(100))).Float64()
194 dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ 180 dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{
195 DividendsUser: &domain.User{ 181 DividendsUser: &domain.User{
@@ -212,8 +198,11 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo @@ -212,8 +198,11 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo
212 OrderOrReturnedOrderNumber: dividendsOrder.DividendsOrderNumber, 198 OrderOrReturnedOrderNumber: dividendsOrder.DividendsOrderNumber,
213 IsSuccessfully: true, 199 IsSuccessfully: true,
214 }) 200 })
  201 + }
  202 +
215 // 添加推荐人分红预算信息详情 203 // 添加推荐人分红预算信息详情
216 if undertaker.Referrer != nil { 204 if undertaker.Referrer != nil {
  205 + if dividendsIncentivesRuleMatched.ReferrerPercentage > 0 {
217 referrerDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.ReferrerPercentage).Div(decimal.NewFromFloat(100))).Float64() 206 referrerDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.ReferrerPercentage).Div(decimal.NewFromFloat(100))).Float64()
218 dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ 207 dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{
219 DividendsUser: &domain.User{ 208 DividendsUser: &domain.User{
@@ -236,8 +225,10 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo @@ -236,8 +225,10 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo
236 IsSuccessfully: true, 225 IsSuccessfully: true,
237 }) 226 })
238 } 227 }
  228 + }
239 // 添加关联业务员分红预算信息详情 229 // 添加关联业务员分红预算信息详情
240 if undertaker.Salesman != nil { 230 if undertaker.Salesman != nil {
  231 + if dividendsIncentivesRuleMatched.SalesmanPercentage > 0 {
241 salesmanDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.SalesmanPercentage).Div(decimal.NewFromFloat(100))).Float64() 232 salesmanDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.SalesmanPercentage).Div(decimal.NewFromFloat(100))).Float64()
242 dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ 233 dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{
243 DividendsUser: &domain.User{ 234 DividendsUser: &domain.User{
@@ -262,6 +253,7 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo @@ -262,6 +253,7 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo
262 } 253 }
263 } 254 }
264 } 255 }
  256 + }
265 } else if orderGood.DividendsReturnedOrderNumber != "" { // 获取退货单 257 } else if orderGood.DividendsReturnedOrderNumber != "" { // 获取退货单
266 dividendsReturnedOrder, err3 := dividendsReturnedOrderRepository.FindOne(map[string]interface{}{ 258 dividendsReturnedOrder, err3 := dividendsReturnedOrderRepository.FindOne(map[string]interface{}{
267 "dividendsReturnedOrderNumber": orderGood.DividendsReturnedOrderNumber, 259 "dividendsReturnedOrderNumber": orderGood.DividendsReturnedOrderNumber,
@@ -304,6 +296,7 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo @@ -304,6 +296,7 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo
304 // 计算分红 296 // 计算分红
305 for _, undertaker := range cooperationContract.Undertakers { 297 for _, undertaker := range cooperationContract.Undertakers {
306 // 添加承接人分红退货预算信息详情 298 // 添加承接人分红退货预算信息详情
  299 + if dividendsIncentivesRuleMatched.DividendsIncentivesPercentage > 0 {
307 undertakerDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.DividendsIncentivesPercentage).Div(decimal.NewFromFloat(100))).Float64() 300 undertakerDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.DividendsIncentivesPercentage).Div(decimal.NewFromFloat(100))).Float64()
308 dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ 301 dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{
309 DividendsUser: &domain.User{ 302 DividendsUser: &domain.User{
@@ -326,8 +319,11 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo @@ -326,8 +319,11 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo
326 OrderOrReturnedOrderNumber: dividendsReturnedOrder.DividendsOrderNumber, 319 OrderOrReturnedOrderNumber: dividendsReturnedOrder.DividendsOrderNumber,
327 IsSuccessfully: true, 320 IsSuccessfully: true,
328 }) 321 })
  322 + }
  323 +
329 // 添加推荐人分红退货预算信息详情 324 // 添加推荐人分红退货预算信息详情
330 if undertaker.Referrer != nil { 325 if undertaker.Referrer != nil {
  326 + if dividendsIncentivesRuleMatched.ReferrerPercentage > 0 {
331 referrerDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.ReferrerPercentage).Div(decimal.NewFromFloat(100))).Float64() 327 referrerDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.ReferrerPercentage).Div(decimal.NewFromFloat(100))).Float64()
332 dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ 328 dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{
333 DividendsUser: &domain.User{ 329 DividendsUser: &domain.User{
@@ -350,8 +346,11 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo @@ -350,8 +346,11 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo
350 IsSuccessfully: true, 346 IsSuccessfully: true,
351 }) 347 })
352 } 348 }
  349 + }
  350 +
353 // 添加关联业务员分红退货预算信息详情 351 // 添加关联业务员分红退货预算信息详情
354 if undertaker.Salesman != nil { 352 if undertaker.Salesman != nil {
  353 + if dividendsIncentivesRuleMatched.SalesmanPercentage > 0 {
355 salesmanDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.SalesmanPercentage).Div(decimal.NewFromFloat(100))).Float64() 354 salesmanDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.SalesmanPercentage).Div(decimal.NewFromFloat(100))).Float64()
356 dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ 355 dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{
357 DividendsUser: &domain.User{ 356 DividendsUser: &domain.User{
@@ -374,6 +373,8 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo @@ -374,6 +373,8 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo
374 IsSuccessfully: true, 373 IsSuccessfully: true,
375 }) 374 })
376 } 375 }
  376 +
  377 + }
377 } 378 }
378 } 379 }
379 } 380 }