diff --git a/business/jxcallback/orderman/orderman_ext.go b/business/jxcallback/orderman/orderman_ext.go index 13e2375f9..d907719c0 100644 --- a/business/jxcallback/orderman/orderman_ext.go +++ b/business/jxcallback/orderman/orderman_ext.go @@ -487,25 +487,30 @@ func (c *OrderManager) ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateS for _, v := range orders { if afsInfo := afsSkuMap[jxutils.ComposeUniversalOrderID(v.VendorOrderID, v.VendorID)]; afsInfo != nil { if afsInfo[v.SkuID] != nil && afsInfo[v.SkuID].Count >= 0 { - minus := afsInfo[v.SkuID].Count // 1 + minus := afsInfo[v.SkuID].Count if minus > v.SkuCount2 { minus = v.SkuCount2 } - // SkuCount2 4 - // SkuCount2 1 - // minus 1 - v.SkuCount2 -= minus // 3 0 - if minus == 0 && v.EarningType == model.EarningTypeQuote { // 有售后单,且通过,部分商品缺重等情况 - if afsInfo[v.SkuID].Count == model.NO { // 退差价的,count还在 - // 300 - 413/1*300 + + if minus == 0 { // 退差价的,count还在 + if afsInfo[v.SkuID].Count == model.NO && v.EarningType == model.EarningTypeQuote { v.SkuShopPrice = v.SkuShopPrice - utils.Float64TwoInt(float64(afsInfo[v.SkuID].UserMoney)/float64(v.SkuSalePrice)*float64(v.SkuShopPrice)) v.SkuEarningPrice = v.SkuEarningPrice - utils.Float64TwoInt(float64(afsInfo[v.SkuID].UserMoney)/float64(v.SkuSalePrice)*float64(v.SkuEarningPrice)) v.SkuSalePrice = v.SkuSalePrice - int(afsInfo[v.SkuID].UserMoney) - } else if afsInfo[v.SkuID].Count == model.YES { // 整个退 - + } + } else { + // 同一个商品有多个商品列表,且有不定退货 + ordersByOrder, _, _ := dao.GetOrders(dao.GetDB(), nil, true, true, fromDateStr, toDateStr, false, nil, false, "", map[string]interface{}{"orderID": v.VendorOrderID}, 0, model.UnlimitedPageSize) + if len(ordersByOrder) == 1 { + v.SkuCount2 -= minus + } else { + for _, obo := range ordersByOrder { + if obo.SkuCount2 == v.SkuCount2 && obo.SkuCount2 == minus { + v.SkuCount2 -= minus + } + } } } - afsInfo[v.SkuID].Count -= minus } } if v.SkuCount2 > 0 {