Automatic rerating in case of Usage of SessionCost not matching CDR received

This commit is contained in:
DanB
2019-12-17 14:43:33 +01:00
parent 311bb65cef
commit c045beecc8

View File

@@ -160,6 +160,24 @@ func (cdrS *CDRServer) rateCDR(cdr *CDRWithArgDispatcher) ([]*CDR, error) {
cdrClone.OriginID = smCost.OriginID
if cdr.Usage == 0 {
cdrClone.Usage = smCost.Usage
} else if smCost.CostDetails.GetUsage() != cdr.Usage {
if err = cdrS.refundEventCost(smCost.CostDetails,
cdrClone.RequestType, cdrClone.ToR); err != nil {
return nil, err
}
cdrClone.CostDetails = nil
if qryCC, err = cdrS.getCostFromRater(&CDRWithArgDispatcher{CDR: cdrClone}); err != nil {
return nil, err
} else {
smCost = &SMCost{
CGRID: cdrClone.CGRID,
RunID: cdrClone.RunID,
OriginHost: cdrClone.OriginID,
CostSource: utils.CDRs,
Usage: cdrClone.Usage,
CostDetails: NewEventCostFromCallCost(qryCC, cdrClone.CGRID, cdrClone.RunID),
}
}
}
cdrClone.Cost = smCost.CostDetails.GetCost()
cdrClone.CostDetails = smCost.CostDetails