mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-13 11:06:25 +05:00
PDD in CDRS, small fixes in storedcdr
This commit is contained in:
@@ -269,13 +269,13 @@ func (self *CdrServer) deriveCdrs(storedCdr *StoredCdr) ([]*StoredCdr, error) {
|
||||
dcSubjFld, _ := utils.NewRSRField(dc.SubjectField)
|
||||
dcDstFld, _ := utils.NewRSRField(dc.DestinationField)
|
||||
dcSTimeFld, _ := utils.NewRSRField(dc.SetupTimeField)
|
||||
dcPddFld, _ := utils.NewRSRField(dc.PddField)
|
||||
dcATimeFld, _ := utils.NewRSRField(dc.AnswerTimeField)
|
||||
dcDurFld, _ := utils.NewRSRField(dc.UsageField)
|
||||
dcSupplFld, _ := utils.NewRSRField(dc.SupplierField)
|
||||
dcDCausseld, _ := utils.NewRSRField(dc.DisconnectCauseField)
|
||||
dcPddFld, _ := utils.NewRSRField("0") // FixMe
|
||||
forkedCdr, err := storedCdr.ForkCdr(dc.RunId, dcReqTypeFld, dcDirFld, dcTenantFld, dcCategoryFld, dcAcntFld, dcSubjFld, dcDstFld,
|
||||
dcSTimeFld, dcATimeFld, dcDurFld, dcPddFld, dcSupplFld, dcDCausseld, []*utils.RSRField{}, true)
|
||||
dcSTimeFld, dcPddFld, dcATimeFld, dcDurFld, dcSupplFld, dcDCausseld, []*utils.RSRField{}, true)
|
||||
if err != nil {
|
||||
Logger.Err(fmt.Sprintf("Could not fork CGR with cgrid %s, run: %s, error: %s", storedCdr.CgrId, dc.RunId, err.Error()))
|
||||
continue // do not add it to the forked CDR list
|
||||
|
||||
@@ -157,12 +157,12 @@ func (storedCdr *StoredCdr) FieldAsString(rsrFld *utils.RSRField) string {
|
||||
return rsrFld.ParseValue(storedCdr.Destination)
|
||||
case utils.SETUP_TIME:
|
||||
return rsrFld.ParseValue(storedCdr.SetupTime.Format(time.RFC3339))
|
||||
case utils.PDD:
|
||||
return strconv.FormatFloat(utils.Round(storedCdr.Pdd.Seconds(), 0, utils.ROUNDING_MIDDLE), 'f', -1, 64)
|
||||
case utils.ANSWER_TIME:
|
||||
return rsrFld.ParseValue(storedCdr.AnswerTime.Format(time.RFC3339))
|
||||
case utils.USAGE:
|
||||
return strconv.FormatFloat(utils.Round(storedCdr.Usage.Seconds(), 0, utils.ROUNDING_MIDDLE), 'f', -1, 64)
|
||||
case utils.PDD:
|
||||
return strconv.FormatFloat(utils.Round(storedCdr.Pdd.Seconds(), 0, utils.ROUNDING_MIDDLE), 'f', -1, 64)
|
||||
case utils.SUPPLIER:
|
||||
return rsrFld.ParseValue(storedCdr.Supplier)
|
||||
case utils.DISCONNECT_CAUSE:
|
||||
@@ -224,9 +224,9 @@ func (storedCdr *StoredCdr) AsHttpForm() url.Values {
|
||||
v.Set(utils.SUBJECT, storedCdr.Subject)
|
||||
v.Set(utils.DESTINATION, storedCdr.Destination)
|
||||
v.Set(utils.SETUP_TIME, storedCdr.SetupTime.Format(time.RFC3339))
|
||||
v.Set(utils.PDD, storedCdr.FieldAsString(&utils.RSRField{Id: utils.PDD}))
|
||||
v.Set(utils.ANSWER_TIME, storedCdr.AnswerTime.Format(time.RFC3339))
|
||||
v.Set(utils.USAGE, storedCdr.FormatUsage(utils.SECONDS))
|
||||
v.Set(utils.PDD, storedCdr.FieldAsString(&utils.RSRField{Id: utils.PDD}))
|
||||
v.Set(utils.SUPPLIER, storedCdr.Supplier)
|
||||
v.Set(utils.DISCONNECT_CAUSE, storedCdr.DisconnectCause)
|
||||
if storedCdr.CostDetails != nil {
|
||||
@@ -236,8 +236,8 @@ func (storedCdr *StoredCdr) AsHttpForm() url.Values {
|
||||
}
|
||||
|
||||
// Used in mediation, primaryMandatory marks whether missing field out of request represents error or can be ignored
|
||||
func (storedCdr *StoredCdr) ForkCdr(runId string, reqTypeFld, directionFld, tenantFld, categFld, accountFld, subjectFld, destFld, setupTimeFld,
|
||||
answerTimeFld, durationFld, pddFld, supplierFld, disconnectCauseFld *utils.RSRField,
|
||||
func (storedCdr *StoredCdr) ForkCdr(runId string, reqTypeFld, directionFld, tenantFld, categFld, accountFld, subjectFld, destFld, setupTimeFld, pddFld,
|
||||
answerTimeFld, durationFld, supplierFld, disconnectCauseFld *utils.RSRField,
|
||||
extraFlds []*utils.RSRField, primaryMandatory bool) (*StoredCdr, error) {
|
||||
if reqTypeFld == nil {
|
||||
reqTypeFld, _ = utils.NewRSRField(utils.META_DEFAULT)
|
||||
|
||||
@@ -343,7 +343,7 @@ func TestStoredCdrForkCdr(t *testing.T) {
|
||||
Cost: 1.01, RatedSubject: "dans"}
|
||||
rtSampleCdrOut, err := storCdr.ForkCdr("sample_run1", &utils.RSRField{Id: utils.REQTYPE}, &utils.RSRField{Id: utils.DIRECTION}, &utils.RSRField{Id: utils.TENANT},
|
||||
&utils.RSRField{Id: utils.CATEGORY}, &utils.RSRField{Id: utils.ACCOUNT}, &utils.RSRField{Id: utils.SUBJECT}, &utils.RSRField{Id: utils.DESTINATION},
|
||||
&utils.RSRField{Id: utils.SETUP_TIME}, &utils.RSRField{Id: utils.ANSWER_TIME}, &utils.RSRField{Id: utils.USAGE}, &utils.RSRField{Id: utils.PDD},
|
||||
&utils.RSRField{Id: utils.SETUP_TIME}, &utils.RSRField{Id: utils.PDD}, &utils.RSRField{Id: utils.ANSWER_TIME}, &utils.RSRField{Id: utils.USAGE},
|
||||
&utils.RSRField{Id: utils.SUPPLIER}, &utils.RSRField{Id: utils.DISCONNECT_CAUSE},
|
||||
[]*utils.RSRField{&utils.RSRField{Id: "field_extr1"}, &utils.RSRField{Id: "field_extr2"}}, true)
|
||||
if err != nil {
|
||||
@@ -379,7 +379,7 @@ func TestStoredCdrForkCdrStaticVals(t *testing.T) {
|
||||
rsrStDCause, _ := utils.NewRSRField("^HANGUP_COMPLETE")
|
||||
rsrPdd, _ := utils.NewRSRField("^3")
|
||||
rtCdrOut2, err := storCdr.ForkCdr("wholesale_run", rsrStPostpaid, rsrStIn, rsrStCgr, rsrStPC, rsrStFA, rsrStFS, &utils.RSRField{Id: "destination"},
|
||||
rsrStST, rsrStAT, rsrStDur, rsrPdd, rsrStSuppl, rsrStDCause, []*utils.RSRField{}, true)
|
||||
rsrStST, rsrPdd, rsrStAT, rsrStDur, rsrStSuppl, rsrStDCause, []*utils.RSRField{}, true)
|
||||
if err != nil {
|
||||
t.Error("Unexpected error received", err)
|
||||
}
|
||||
@@ -394,7 +394,7 @@ func TestStoredCdrForkCdrStaticVals(t *testing.T) {
|
||||
}
|
||||
_, err = storCdr.ForkCdr("wholesale_run", &utils.RSRField{Id: "dummy_header"}, &utils.RSRField{Id: "direction"}, &utils.RSRField{Id: "tenant"},
|
||||
&utils.RSRField{Id: "tor"}, &utils.RSRField{Id: "account"}, &utils.RSRField{Id: "subject"}, &utils.RSRField{Id: "destination"},
|
||||
&utils.RSRField{Id: "setup_time"}, &utils.RSRField{Id: "answer_time"}, &utils.RSRField{Id: "duration"}, &utils.RSRField{Id: utils.PDD}, &utils.RSRField{Id: utils.SUPPLIER},
|
||||
&utils.RSRField{Id: "setup_time"}, &utils.RSRField{Id: utils.PDD}, &utils.RSRField{Id: "answer_time"}, &utils.RSRField{Id: "duration"}, &utils.RSRField{Id: utils.SUPPLIER},
|
||||
&utils.RSRField{Id: utils.DISCONNECT_CAUSE}, []*utils.RSRField{}, true)
|
||||
if err == nil {
|
||||
t.Error("Failed to detect missing header")
|
||||
|
||||
Reference in New Issue
Block a user