From 46eccb6542dc3ddd0ce3a212a49d43352b61432a Mon Sep 17 00:00:00 2001 From: ionutboangiu Date: Thu, 10 Feb 2022 19:08:41 +0200 Subject: [PATCH] Remove refund sequence from store block (CDRsProcessEvent) and make CostDetails nil after a refund --- engine/cdrs.go | 23 +++------------------- general_tests/cdrs_processevent_it_test.go | 1 - 2 files changed, 3 insertions(+), 21 deletions(-) diff --git a/engine/cdrs.go b/engine/cdrs.go index b780cf264..a77aeab77 100644 --- a/engine/cdrs.go +++ b/engine/cdrs.go @@ -519,6 +519,7 @@ func (cdrS *CDRServer) processEvents(evs []*utils.CGREvent, fmt.Sprintf("<%s> error: <%s> refunding CDR %+v", utils.CDRs, errRfd.Error(), utils.ToJSON(cdr))) } else if rfnd { + cdr.CostDetails = nil procFlgs[i].Add(utils.MetaRefund) } } @@ -553,30 +554,12 @@ func (cdrS *CDRServer) processEvents(evs []*utils.CGREvent, } } } - for i, cdr := range cdrs { + for _, cdr := range cdrs { if err = cdrS.cdrDb.SetCDR(cdr, false); err != nil { if err != utils.ErrExists || !reRate { refundCDRCosts() return } - // CDR was found in StorDB - // reRate is allowed, refund the previous CDR - var prevCDRs []*CDR // only one should be returned - if prevCDRs, _, err = cdrS.cdrDb.GetCDRs( - &utils.CDRsFilter{CGRIDs: []string{cdr.CGRID}, - RunIDs: []string{cdr.RunID}}, false); err != nil { - refundCDRCosts() - return - } - var rfnd bool - if rfnd, err = cdrS.refundEventCost(prevCDRs[0].CostDetails, - cdr.RequestType, cdr.ToR); err != nil { - refundCDRCosts() - return - } else if rfnd { - procFlgs[i].Add(utils.MetaRefund) - } - // after refund we can force update if err = cdrS.cdrDb.SetCDR(cdr, true); err != nil { utils.Logger.Warning( fmt.Sprintf("<%s> error: <%s> updating CDR %+v", @@ -1070,7 +1053,7 @@ func (cdrS *CDRServer) V1RateCDRs(arg *ArgRateCDRs, reply *string) (err error) { cgrEvs[i] = cdr.AsCGREvent() cgrEvs[i].APIOpts = arg.APIOpts } - if _, err = cdrS.processEvents(cgrEvs, chrgS, attrS, false, + if _, err = cdrS.processEvents(cgrEvs, chrgS, attrS, true, true, store, true, export, thdS, statS); err != nil { return utils.NewErrServerError(err) } diff --git a/general_tests/cdrs_processevent_it_test.go b/general_tests/cdrs_processevent_it_test.go index 0c00668b2..ad8e5cf8b 100644 --- a/general_tests/cdrs_processevent_it_test.go +++ b/general_tests/cdrs_processevent_it_test.go @@ -679,7 +679,6 @@ func testV1CDRsV2ProcessEventRalS(t *testing.T) { if err := pecdrsRpc.Call(utils.CDRsV2ProcessEvent, argsEv, &reply); err != nil { t.Error(err) } - expRply[0].Flags = []string{utils.MetaRefund} expRply[0].Event["Usage"] = 60000000000. expRply[0].Event["Cost"] = 0.0102 reply[0].Event["CostDetails"] = nil