作者 陈志颖

fix:调整取消预算单范围

... ... @@ -354,7 +354,7 @@ func (dividendsEstimateService *DividendsEstimateService) BatchCancelDividendsEs
}
// 校验是否能够取消
if dividendsEstimate.DividendsType == domain.ORDER_DIVIDENDS || dividendsEstimate.DividendsType == domain.RETURN_WRITE_OFF { // 订单分红退货冲销
if dividendsEstimate.DividendsType == domain.ORDER_DIVIDENDS || dividendsEstimate.DividendsType == domain.RETURN_WRITE_OFF { // 订单分红/退货冲销
if countRelativeDividendsEstimates, dividendsEstimatesRelative, err2 := dividendsEstimateRepository.Find(map[string]interface{}{
"orderOrReturnedOrderNum": dividendsEstimate.OrderOrReturnedOrderNum,
"companyId": dividendsEstimate.Company.CompanyId,
... ... @@ -389,11 +389,11 @@ func (dividendsEstimateService *DividendsEstimateService) BatchCancelDividendsEs
}
}
// 批量取消分红预算单
if dividendsEstimatesCanceled, err := cancelDividendsEstimateService.CancelEstimate(dividendsEstimateIds, operator); err != nil {
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
if dividendsEstimatesCanceled, errCancel := cancelDividendsEstimateService.CancelEstimate(dividendsEstimateIds, operator); errCancel != nil {
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, errCancel.Error())
} else {
if err := transactionContext.CommitTransaction(); err != nil {
return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
if errTx := transactionContext.CommitTransaction(); errTx != nil {
return nil, application.ThrowError(application.TRANSACTION_ERROR, errTx.Error())
}
return dividendsEstimatesCanceled, nil
}
... ...
... ... @@ -40,7 +40,6 @@ func (domainService *CancelDividendsEstimateService) CancelEstimate(dividendsEst
return nil, err
} else {
dividendsReturnedOrderRepository = repo
}
// 订单产品仓储初始化
... ... @@ -60,14 +59,45 @@ func (domainService *CancelDividendsEstimateService) CancelEstimate(dividendsEst
var dividendsEstimatesCanceled []*domain.DividendsEstimate
var orderOrReturnOrderNums []string
for _, dividendsEstimate := range dividendsEstimates {
if dividendsEstimate.DividendsType != 3 { // 非金额激励分红预算单处理
if dividendsEstimate.DividendsType == 1 || dividendsEstimate.DividendsType == 2 { // 1.订单分红 2.退货冲销
// 自定义查询
queryOptions := make(map[string]interface{})
//参与分红类型,1承接人,2推荐人,3关联业务员
if dividendsEstimate.DividendsParticipateType == 1 { // 当前取消的是承接人的分红预算单
queryOptions = map[string]interface{}{
"companyId": dividendsEstimate.Company.CompanyId,
"orgId": dividendsEstimate.Org.OrgId,
"orderOrReturnedOrderNum": dividendsEstimate.OrderOrReturnedOrderNum,
"dividendsParticipateTypes": []int32{2, 3},
"offsetLimit": false,
"dividendsStage": dividendsEstimate.DividendsStage,
"dividendsTypes": []int32{1, 2},
}
} else if dividendsEstimate.DividendsParticipateType == 2 { // 当前取消的是推荐人的分红预算单
queryOptions = map[string]interface{}{
"companyId": dividendsEstimate.Company.CompanyId,
"orgId": dividendsEstimate.Org.OrgId,
"orderOrReturnedOrderNum": dividendsEstimate.OrderOrReturnedOrderNum,
"dividendsParticipateTypes": []int32{1, 3},
"offsetLimit": false,
"dividendsStage": dividendsEstimate.DividendsStage,
"dividendsTypes": []int32{1, 2},
}
} else if dividendsEstimate.DividendsParticipateType == 3 { // 当前取消的是关联业务员的分红预算单
queryOptions = map[string]interface{}{
"companyId": dividendsEstimate.Company.CompanyId,
"orgId": dividendsEstimate.Org.OrgId,
"orderOrReturnedOrderNum": dividendsEstimate.OrderOrReturnedOrderNum,
"dividendsParticipateTypes": []int32{1, 2},
"offsetLimit": false,
"dividendsStage": dividendsEstimate.DividendsStage,
"dividendsTypes": []int32{1, 2},
}
}
// 根据当前分红预算单的分红订单号或退货单号获取相关的分红预算单
if countRelative, dividendsEstimatesRelative, err2 := dividendsEstimateRepository.Find(map[string]interface{}{
"companyId": dividendsEstimate.Company.CompanyId,
"orgId": dividendsEstimate.Org.OrgId,
"orderOrReturnedOrderNum": dividendsEstimate.OrderOrReturnedOrderNum,
"offsetLimit": false,
}); err2 != nil {
if countRelative, dividendsEstimatesRelative, err2 := dividendsEstimateRepository.Find(queryOptions); err2 != nil {
return nil, err2
} else {
if countRelative > 0 {
... ... @@ -84,15 +114,44 @@ func (domainService *CancelDividendsEstimateService) CancelEstimate(dividendsEst
dividendsEstimatesCanceled = append(dividendsEstimatesCanceled, dividendsEstimatesRelativeCanceled...)
}
}
} else if dividendsEstimate.DividendsType == 3 {
} else if dividendsEstimate.DividendsType == 3 { // 3.金额激励
// 自定义查询
queryOptions := make(map[string]interface{})
//参与分红类型,1承接人,2推荐人,3关联业务员
if dividendsEstimate.DividendsParticipateType == 1 { // 当前取消的是承接人的分红预算单
queryOptions = map[string]interface{}{
"companyId": dividendsEstimate.Company.CompanyId,
"orgId": dividendsEstimate.Org.OrgId,
"cooperationContractNumber": dividendsEstimate.CooperationContractNumber,
"dividendsParticipateTypes": []int32{2, 3},
"offsetLimit": false,
"dividendsStage": dividendsEstimate.DividendsStage,
"dividendsType": int32(3),
}
} else if dividendsEstimate.DividendsParticipateType == 2 { // 当前取消的是推荐人的分红预算单
queryOptions = map[string]interface{}{
"companyId": dividendsEstimate.Company.CompanyId,
"orgId": dividendsEstimate.Org.OrgId,
"cooperationContractNumber": dividendsEstimate.CooperationContractNumber,
"dividendsParticipateTypes": []int32{1, 3},
"offsetLimit": false,
"dividendsStage": dividendsEstimate.DividendsStage,
"dividendsType": int32(3),
}
} else if dividendsEstimate.DividendsParticipateType == 3 { // 当前取消的是关联业务员的分红预算单
queryOptions = map[string]interface{}{
"companyId": dividendsEstimate.Company.CompanyId,
"orgId": dividendsEstimate.Org.OrgId,
"cooperationContractNumber": dividendsEstimate.CooperationContractNumber,
"dividendsParticipateTypes": []int32{1, 2},
"offsetLimit": false,
"dividendsStage": dividendsEstimate.DividendsStage,
"dividendsType": int32(3),
}
}
// 根据当前分红预算单的分红订单号或退货单号获取相关的分红预算单
if countRelative, dividendsEstimatesRelative, err2 := dividendsEstimateRepository.Find(map[string]interface{}{
"companyId": dividendsEstimate.Company.CompanyId,
"orgId": dividendsEstimate.Org.OrgId,
"cooperationContractNumber": dividendsEstimate.CooperationContractNumber,
"dividendsType": int32(3),
"offsetLimit": false,
}); err2 != nil {
if countRelative, dividendsEstimatesRelative, err2 := dividendsEstimateRepository.Find(queryOptions); err2 != nil {
return nil, err2
} else {
if countRelative > 0 {
... ... @@ -110,18 +169,24 @@ func (domainService *CancelDividendsEstimateService) CancelEstimate(dividendsEst
}
}
// 分红订单或分红退货单状态变更
// 分红订单
var orderNums []string
// 分红退货单
var returnedOrderNums []string
if len(orderOrReturnOrderNums) > 0 {
// 订单/退货单号数组去重
orderOrReturnOrderNumsWithoutDup := utils.RemoveDuplication(orderOrReturnOrderNums)
// 分离订单和退货单
for _, orderNullNum := range orderOrReturnOrderNumsWithoutDup {
if orderNullNum[:2] == "RE" { // 分红退后单
returnedOrderNums = append(returnedOrderNums, orderNullNum)
} else if orderNullNum[:2] == "SL" { // 分红订单
orderNums = append(orderNums, orderNullNum)
if len(orderNullNum) > 0 {
if orderNullNum[:2] == "RE" { // 分红退后单
returnedOrderNums = append(returnedOrderNums, orderNullNum)
} else if orderNullNum[:2] == "SL" { // 分红订单
orderNums = append(orderNums, orderNullNum)
}
}
}
... ...
... ... @@ -307,6 +307,9 @@ func (repository *DividendsEstimateRepository) Find(queryOptions map[string]inte
if dividendsType, ok := queryOptions["dividendsType"]; ok && dividendsType.(int32) != 0 {
query.Where("dividends_type = ?", dividendsType)
}
if dividendsTypes, ok := queryOptions["dividendsTypes"]; ok && len(dividendsTypes.([]int32)) > 0 {
query.Where("dividends_type in (?)", pg.In(dividendsTypes.([]int32)))
}
if dividendsEstimateOrderNumber, ok := queryOptions["dividendsEstimateOrderNumber"]; ok && dividendsEstimateOrderNumber != "" {
query.Where("dividends_estimate_order_number ilike ?", fmt.Sprintf("%%%s%%", dividendsEstimateOrderNumber))
}
... ... @@ -325,6 +328,12 @@ func (repository *DividendsEstimateRepository) Find(queryOptions map[string]inte
if dividendsParticipateType, ok := queryOptions["dividendsParticipateType"]; ok && dividendsParticipateType.(int32) != 0 {
query.Where("dividends_participate_type = ?", dividendsParticipateType)
}
if dividendsParticipateTypes, ok := queryOptions["dividendsParticipateTypes"]; ok && len(dividendsParticipateTypes.([]int32)) > 0 {
query.Where("dividends_participate_type in (?)", pg.In(dividendsParticipateTypes.([]int32)))
}
if dividendsStage, ok := queryOptions["dividendsStage"]; ok && dividendsStage.(int32) > 0 {
query.Where("dividends_stage = ?", dividendsStage)
}
if cooperationContractNumber, ok := queryOptions["cooperationContractNumber"]; ok && cooperationContractNumber != "" {
query.Where("cooperation_contract_number = ?", cooperationContractNumber)
}
... ...