mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-20 22:58:44 +05:00
Automatic rerating in case of Usage of SessionCost not matching CDR received
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user