作者 陈志颖

fix:分红订单计算

@@ -91,7 +91,11 @@ func (dividendsEstimateService *DividendsEstimateService) ListDividendsIncentive @@ -91,7 +91,11 @@ func (dividendsEstimateService *DividendsEstimateService) ListDividendsIncentive
91 } 91 }
92 dividendsIncentivesEstimateDtos = append(dividendsIncentivesEstimateDtos, dividendsIncentivesEstimateDto) 92 dividendsIncentivesEstimateDtos = append(dividendsIncentivesEstimateDtos, dividendsIncentivesEstimateDto)
93 } else if orderGood.DividendsReturnedOrderNumber != "" { // 查询分红退货单 93 } else if orderGood.DividendsReturnedOrderNumber != "" { // 查询分红退货单
94 - dividendsReturnedOrder, err := dividendsReturnedOrderRepository.FindOne(map[string]interface{}{"dividendsReturnedOrderNumber": orderGood.DividendsReturnedOrderNumber}) 94 + dividendsReturnedOrder, err := dividendsReturnedOrderRepository.FindOne(map[string]interface{}{
  95 + "companyId": orderGood.CompanyId,
  96 + "orgId": orderGood.OrgId,
  97 + "dividendsReturnedOrderNumber": orderGood.DividendsReturnedOrderNumber,
  98 + })
95 if err != nil { 99 if err != nil {
96 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 100 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
97 } 101 }
@@ -157,8 +157,9 @@ func (dividendsOrderService *DividendsOrderService) CreateDividendsOrder(createD @@ -157,8 +157,9 @@ func (dividendsOrderService *DividendsOrderService) CreateDividendsOrder(createD
157 var dividendsOrderAmount float64 157 var dividendsOrderAmount float64
158 for _, orderGood := range createDividendsOrderCommand.OrderGoods { 158 for _, orderGood := range createDividendsOrderCommand.OrderGoods {
159 // 计算订单产品金额 159 // 计算订单产品金额
160 - orderGoodAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity)).Float64() 160 + orderGoodAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity)).Sub(decimal.NewFromFloat(orderGood.OrderGoodExpense)).Float64()
161 161
  162 + // 校验合约
162 ruleMatchedFlag := false 163 ruleMatchedFlag := false
163 if orderGood.CooperationContractNumber != "" { 164 if orderGood.CooperationContractNumber != "" {
164 // 校验共创合约激励类型是否正确 165 // 校验共创合约激励类型是否正确
@@ -742,7 +743,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD @@ -742,7 +743,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD
742 } 743 }
743 744
744 // 计算产品金额 745 // 计算产品金额
745 - orderGoodAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity)).Float64() 746 + orderGoodAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity)).Sub(decimal.NewFromFloat(orderGood.OrderGoodExpense)).Float64()
746 747
747 // 校验共创合约激励类型是否正确 748 // 校验共创合约激励类型是否正确
748 ruleMatchedFlag := false 749 ruleMatchedFlag := false
@@ -753,7 +754,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD @@ -753,7 +754,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD
753 // 校验产品关联合约的激励规则是否匹配订单时间 754 // 校验产品关联合约的激励规则是否匹配订单时间
754 if cooperationContractsMap[orderGood.CooperationContractNumber] != nil { 755 if cooperationContractsMap[orderGood.CooperationContractNumber] != nil {
755 for _, incentivesRule := range cooperationContractsMap[orderGood.CooperationContractNumber].DividendsIncentivesRules { 756 for _, incentivesRule := range cooperationContractsMap[orderGood.CooperationContractNumber].DividendsIncentivesRules {
756 - if orderTime.After(incentivesRule.DividendsIncentivesStageStart) && orderTime.Before(incentivesRule.DividendsIncentivesStageEnd) { 757 + if (orderTime.After(incentivesRule.DividendsIncentivesStageStart) || orderTime.Equal(incentivesRule.DividendsIncentivesStageStart)) && (orderTime.Before(incentivesRule.DividendsIncentivesStageEnd) || orderTime.Equal(incentivesRule.DividendsIncentivesStageEnd)) {
757 ruleMatchedFlag = true 758 ruleMatchedFlag = true
758 break 759 break
759 } 760 }
@@ -782,7 +783,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD @@ -782,7 +783,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD
782 }) 783 })
783 784
784 // 计算分红订单金额 785 // 计算分红订单金额
785 - dividendsOrderAmount, _ = decimal.NewFromFloat(dividendsOrderAmount).Add(decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(float64(orderGood.OrderGoodQuantity)).Sub(decimal.NewFromFloat(orderGood.OrderGoodExpense)))).Float64() 786 + dividendsOrderAmount, _ = decimal.NewFromFloat(dividendsOrderAmount).Add(decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity).Sub(decimal.NewFromFloat(orderGood.OrderGoodExpense)))).Float64()
786 } 787 }
787 if len(orderGoodErrMap) > 0 { 788 if len(orderGoodErrMap) > 0 {
788 row := &domain.ImportInfo{ 789 row := &domain.ImportInfo{
@@ -1187,7 +1188,7 @@ func (dividendsOrderService *DividendsOrderService) UpdateDividendsOrder(updateD @@ -1187,7 +1188,7 @@ func (dividendsOrderService *DividendsOrderService) UpdateDividendsOrder(updateD
1187 var dividendsOrderAmount float64 1188 var dividendsOrderAmount float64
1188 for _, orderGood := range updateDividendsOrderCommand.OrderGoods { 1189 for _, orderGood := range updateDividendsOrderCommand.OrderGoods {
1189 // 计算订单产品金额 1190 // 计算订单产品金额
1190 - orderGoodAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity)).Float64() 1191 + orderGoodAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity)).Sub(decimal.NewFromFloat(orderGood.OrderGoodExpense)).Float64()
1191 1192
1192 // 产品ID类型转换 1193 // 产品ID类型转换
1193 orderGoodId, err3 := strconv.ParseInt(orderGood.OrderGoodId, 10, 64) 1194 orderGoodId, err3 := strconv.ParseInt(orderGood.OrderGoodId, 10, 64)