From e9bbe666dfcc7feeb035ace769b1667dc8c54fcd Mon Sep 17 00:00:00 2001 From: adragusin Date: Mon, 6 Apr 2020 17:56:47 +0300 Subject: [PATCH] Updated RoundingDecimals --- config/config_it_test.go | 22 +++++++++++----------- config/config_test.go | 2 +- config/fctemplate.go | 5 +++-- engine/cdr.go | 9 +++++++-- engine/cdrecsv_test.go | 6 +++--- 5 files changed, 25 insertions(+), 19 deletions(-) diff --git a/config/config_it_test.go b/config/config_it_test.go index 3ce327f95..5464c0015 100644 --- a/config/config_it_test.go +++ b/config/config_it_test.go @@ -567,7 +567,7 @@ func testCgrCfgV1ReloadConfigSection(t *testing.T) { "MaskLen": 0, "NewBranch": false, "Padding": "", - "RoundingDecimals": 0, + "RoundingDecimals": nil, "Strip": "", "Tag": "ToR", "Timezone": "", @@ -592,7 +592,7 @@ func testCgrCfgV1ReloadConfigSection(t *testing.T) { "MaskLen": 0, "NewBranch": false, "Padding": "", - "RoundingDecimals": 0, + "RoundingDecimals": nil, "Strip": "", "Tag": "OriginID", "Timezone": "", @@ -617,7 +617,7 @@ func testCgrCfgV1ReloadConfigSection(t *testing.T) { "MaskLen": 0, "NewBranch": false, "Padding": "", - "RoundingDecimals": 0, + "RoundingDecimals": nil, "Strip": "", "Tag": "RequestType", "Timezone": "", @@ -642,7 +642,7 @@ func testCgrCfgV1ReloadConfigSection(t *testing.T) { "MaskLen": 0, "NewBranch": false, "Padding": "", - "RoundingDecimals": 0, + "RoundingDecimals": nil, "Strip": "", "Tag": "Tenant", "Timezone": "", @@ -667,7 +667,7 @@ func testCgrCfgV1ReloadConfigSection(t *testing.T) { "MaskLen": 0, "NewBranch": false, "Padding": "", - "RoundingDecimals": 0, + "RoundingDecimals": nil, "Strip": "", "Tag": "Category", "Timezone": "", @@ -692,7 +692,7 @@ func testCgrCfgV1ReloadConfigSection(t *testing.T) { "MaskLen": 0, "NewBranch": false, "Padding": "", - "RoundingDecimals": 0, + "RoundingDecimals": nil, "Strip": "", "Tag": "Account", "Timezone": "", @@ -717,7 +717,7 @@ func testCgrCfgV1ReloadConfigSection(t *testing.T) { "MaskLen": 0, "NewBranch": false, "Padding": "", - "RoundingDecimals": 0, + "RoundingDecimals": nil, "Strip": "", "Tag": "Subject", "Timezone": "", @@ -742,7 +742,7 @@ func testCgrCfgV1ReloadConfigSection(t *testing.T) { "MaskLen": 0, "NewBranch": false, "Padding": "", - "RoundingDecimals": 0, + "RoundingDecimals": nil, "Strip": "", "Tag": "Destination", "Timezone": "", @@ -767,7 +767,7 @@ func testCgrCfgV1ReloadConfigSection(t *testing.T) { "MaskLen": 0, "NewBranch": false, "Padding": "", - "RoundingDecimals": 0, + "RoundingDecimals": nil, "Strip": "", "Tag": "SetupTime", "Timezone": "", @@ -792,7 +792,7 @@ func testCgrCfgV1ReloadConfigSection(t *testing.T) { "MaskLen": 0, "NewBranch": false, "Padding": "", - "RoundingDecimals": 0, + "RoundingDecimals": nil, "Strip": "", "Tag": "AnswerTime", "Timezone": "", @@ -817,7 +817,7 @@ func testCgrCfgV1ReloadConfigSection(t *testing.T) { "MaskLen": 0, "NewBranch": false, "Padding": "", - "RoundingDecimals": 0, + "RoundingDecimals": nil, "Strip": "", "Tag": "Usage", "Timezone": "", diff --git a/config/config_test.go b/config/config_test.go index 00ff589a8..fa8903e0b 100755 --- a/config/config_test.go +++ b/config/config_test.go @@ -566,7 +566,7 @@ func TestCgrCfgJSONDefaultsCdreProfiles(t *testing.T) { Path: "*exp.Cost", Type: "*variable", Value: NewRSRParsersMustCompile("~*req.Cost", true, utils.INFIELD_SEP), - RoundingDecimals: 4, + RoundingDecimals: utils.IntPointer(4), }, } eCdreCfg := map[string]*CdreCfg{ diff --git a/config/fctemplate.go b/config/fctemplate.go index 4efc652d3..5a4f44003 100755 --- a/config/fctemplate.go +++ b/config/fctemplate.go @@ -82,7 +82,8 @@ func NewFCTemplateFromFCTemplateJsonCfg(jsnCfg *FcTemplateJsonCfg, separator str fcTmp.CostShiftDigits = *jsnCfg.Cost_shift_digits } if jsnCfg.Rounding_decimals != nil { - fcTmp.RoundingDecimals = *jsnCfg.Rounding_decimals + fcTmp.RoundingDecimals = new(int) + *fcTmp.RoundingDecimals = *jsnCfg.Rounding_decimals } if jsnCfg.Mask_destinationd_id != nil { fcTmp.MaskDestID = *jsnCfg.Mask_destinationd_id @@ -110,7 +111,7 @@ type FCTemplate struct { BreakOnSuccess bool Layout string // time format CostShiftDigits int // Used for CDR - RoundingDecimals int + RoundingDecimals *int MaskDestID string MaskLen int } diff --git a/engine/cdr.go b/engine/cdr.go index 5636b5e01..da9e6ca36 100644 --- a/engine/cdr.go +++ b/engine/cdr.go @@ -313,10 +313,15 @@ func (cdr *CDR) combimedCdrFieldVal(cfgCdrFld *config.FCTemplate, groupCDRs []*C func (cdr *CDR) exportFieldValue(cfgCdrFld *config.FCTemplate, filterS *FilterS) (retVal string, err error) { for _, rsrFld := range cfgCdrFld.Value { var cdrVal string + var roundDec int switch cfgCdrFld.Path { case utils.MetaExp + utils.NestingSep + utils.COST: - cdrVal = cdr.FormatCost(cfgCdrFld.CostShiftDigits, - cfgCdrFld.RoundingDecimals) + if cfgCdrFld.RoundingDecimals == nil { + roundDec = config.CgrConfig().GeneralCfg().RoundingDecimals + } else { + roundDec = *cfgCdrFld.RoundingDecimals + } + cdrVal = cdr.FormatCost(cfgCdrFld.CostShiftDigits, roundDec) case utils.MetaExp + utils.NestingSep + utils.SetupTime: if cfgCdrFld.Layout == "" { cfgCdrFld.Layout = time.RFC3339 diff --git a/engine/cdrecsv_test.go b/engine/cdrecsv_test.go index 558ec27b5..80fa9e2c3 100644 --- a/engine/cdrecsv_test.go +++ b/engine/cdrecsv_test.go @@ -185,7 +185,7 @@ func TestExportVoiceWithConvert(t *testing.T) { Path: "*exp.Cost", Type: "*composed", Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+utils.MetaReq+utils.NestingSep+"Cost", true, utils.INFIELD_SEP), - RoundingDecimals: 5}, + RoundingDecimals: utils.IntPointer(5)}, } cdrVoice := &CDR{ CGRID: utils.Sha1("dsafdsaf", time.Unix(1383813745, 0).UTC().String()), @@ -324,7 +324,7 @@ func TestExportWithFilter(t *testing.T) { Path: "*exp.Cost", Type: "*composed", Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+utils.MetaReq+utils.NestingSep+"Cost", true, utils.INFIELD_SEP), - RoundingDecimals: 5}, + RoundingDecimals: utils.IntPointer(5)}, } cdrVoice := &CDR{ CGRID: utils.Sha1("dsafdsaf", time.Unix(1383813745, 0).UTC().String()), @@ -462,7 +462,7 @@ func TestExportWithFilter2(t *testing.T) { Path: "*exp.Cost", Type: "*composed", Value: config.NewRSRParsersMustCompile(utils.DynamicDataPrefix+utils.MetaReq+utils.NestingSep+"Cost", true, utils.INFIELD_SEP), - RoundingDecimals: 5}, + RoundingDecimals: utils.IntPointer(5)}, } cdrVoice := &CDR{ CGRID: utils.Sha1("dsafdsaf", time.Unix(1383813745, 0).UTC().String()),