Remove refund sequence from store block (CDRsProcessEvent) and make CostDetails nil after a refund

This commit is contained in:
ionutboangiu
2022-02-10 19:08:41 +02:00
committed by Dan Christian Bogos
parent e049f53c58
commit 46eccb6542
2 changed files with 3 additions and 21 deletions

View File

@@ -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)
}

View File

@@ -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