Updated suretax AsMapInterface method

This commit is contained in:
porosnicuadrian
2020-09-24 12:23:05 +03:00
committed by Dan Christian Bogos
parent 9f29638d67
commit cb90455ae3
3 changed files with 191 additions and 219 deletions

View File

@@ -143,9 +143,6 @@ func TestStoreDbCfgloadFromJsonCfgPort(t *testing.T) {
}
func TestStorDbCfgAsMapInterface(t *testing.T) {
var dbcfg StorDbCfg
dbcfg.Items = make(map[string]*ItemOpt)
dbcfg.Opts = make(map[string]interface{})
cfgJSONStr := `{
"stor_db": {
"db_type": "*mysql",

View File

@@ -175,163 +175,114 @@ func (self *SureTaxCfg) loadFromJsonCfg(jsnCfg *SureTaxJsonCfg) (err error) {
return nil
}
func (st *SureTaxCfg) AsMapInterface(separator string) map[string]interface{} {
var clientTracking string
if st.ClientTracking != nil {
values := make([]string, len(st.ClientTracking))
for i, item := range st.ClientTracking {
values[i] = item.Rules
}
clientTracking = strings.Join(values, separator)
func (st *SureTaxCfg) AsMapInterface(separator string) (initialMP map[string]interface{}) {
initialMP = map[string]interface{}{
utils.UrlCfg: st.Url,
utils.ClientNumberCfg: st.ClientNumber,
utils.ValidationKeyCfg: st.ValidationKey,
utils.BusinessUnitCfg: st.BusinessUnit,
utils.TimezoneCfg: st.Timezone.String(),
utils.IncludeLocalCostCfg: st.IncludeLocalCost,
utils.ReturnFileCodeCfg: st.ReturnFileCode,
utils.ResponseGroupCfg: st.ResponseGroup,
utils.ResponseTypeCfg: st.ResponseType,
utils.RegulatoryCodeCfg: st.RegulatoryCode,
}
var customerNumber string
if st.CustomerNumber != nil {
values := make([]string, len(st.CustomerNumber))
for i, item := range st.CustomerNumber {
values[i] = item.Rules
}
customerNumber = strings.Join(values, separator)
}
var origNumber string
if st.OrigNumber != nil {
values := make([]string, len(st.OrigNumber))
for i, item := range st.OrigNumber {
values[i] = item.Rules
}
origNumber = strings.Join(values, separator)
}
var termNumber string
if st.TermNumber != nil {
values := make([]string, len(st.TermNumber))
for i, item := range st.TermNumber {
values[i] = item.Rules
}
termNumber = strings.Join(values, separator)
}
var billToNumber string
if st.BillToNumber != nil {
values := make([]string, len(st.BillToNumber))
for i, item := range st.BillToNumber {
values[i] = item.Rules
}
billToNumber = strings.Join(values, separator)
}
var zipcode string
if st.Zipcode != nil {
values := make([]string, len(st.Zipcode))
for i, item := range st.Zipcode {
values[i] = item.Rules
}
zipcode = strings.Join(values, separator)
}
var plus4 string
if st.Plus4 != nil {
values := make([]string, len(st.Plus4))
for i, item := range st.Plus4 {
values[i] = item.Rules
}
plus4 = strings.Join(values, separator)
}
var p2PZipcode string
if st.P2PZipcode != nil {
values := make([]string, len(st.P2PZipcode))
for i, item := range st.P2PZipcode {
values[i] = item.Rules
}
p2PZipcode = strings.Join(values, separator)
}
var p2PPlus4 string
if st.P2PPlus4 != nil {
values := make([]string, len(st.P2PPlus4))
for i, item := range st.P2PPlus4 {
values[i] = item.Rules
}
p2PPlus4 = strings.Join(values, separator)
}
var units string
if st.Units != nil {
values := make([]string, len(st.Units))
for i, item := range st.Units {
values[i] = item.Rules
}
units = strings.Join(values, separator)
}
var unitType string
if st.UnitType != nil {
values := make([]string, len(st.UnitType))
for i, item := range st.UnitType {
values[i] = item.Rules
}
unitType = strings.Join(values, separator)
}
var taxIncluded string
if st.TaxIncluded != nil {
values := make([]string, len(st.TaxIncluded))
for i, item := range st.TaxIncluded {
values[i] = item.Rules
}
taxIncluded = strings.Join(values, separator)
}
var taxSitusRule string
if st.TaxSitusRule != nil {
values := make([]string, len(st.TaxSitusRule))
for i, item := range st.TaxSitusRule {
values[i] = item.Rules
}
taxSitusRule = strings.Join(values, separator)
}
var transTypeCode string
if st.TransTypeCode != nil {
values := make([]string, len(st.TransTypeCode))
for i, item := range st.TransTypeCode {
values[i] = item.Rules
}
transTypeCode = strings.Join(values, separator)
}
var salesTypeCode string
if st.SalesTypeCode != nil {
values := make([]string, len(st.SalesTypeCode))
for i, item := range st.SalesTypeCode {
values[i] = item.Rules
}
salesTypeCode = strings.Join(values, separator)
}
var taxExemptionCodeList string
if st.TaxExemptionCodeList != nil {
values := make([]string, len(st.TaxExemptionCodeList))
for i, item := range st.TaxExemptionCodeList {
values[i] = item.Rules
}
taxExemptionCodeList = strings.Join(values, separator)
values := make([]string, len(st.ClientTracking))
for i, item := range st.ClientTracking {
values[i] = item.Rules
}
initialMP[utils.ClientTrackingCfg] = strings.Join(values, separator)
return map[string]interface{}{
utils.UrlCfg: st.Url,
utils.ClientNumberCfg: st.ClientNumber,
utils.ValidationKeyCfg: st.ValidationKey,
utils.BusinessUnitCfg: st.BusinessUnit,
utils.TimezoneCfg: st.Timezone.String(),
utils.IncludeLocalCostCfg: st.IncludeLocalCost,
utils.ReturnFileCodeCfg: st.ReturnFileCode,
utils.ResponseGroupCfg: st.ResponseGroup,
utils.ResponseTypeCfg: st.ResponseType,
utils.RegulatoryCodeCfg: st.RegulatoryCode,
utils.ClientTrackingCfg: clientTracking,
utils.CustomerNumberCfg: customerNumber,
utils.OrigNumberCfg: origNumber,
utils.TermNumberCfg: termNumber,
utils.BillToNumberCfg: billToNumber,
utils.ZipcodeCfg: zipcode,
utils.Plus4Cfg: plus4,
utils.P2PZipcodeCfg: p2PZipcode,
utils.P2PPlus4Cfg: p2PPlus4,
utils.UnitsCfg: units,
utils.UnitTypeCfg: unitType,
utils.TaxIncludedCfg: taxIncluded,
utils.TaxSitusRuleCfg: taxSitusRule,
utils.TransTypeCodeCfg: transTypeCode,
utils.SalesTypeCodeCfg: salesTypeCode,
utils.TaxExemptionCodeListCfg: taxExemptionCodeList,
values = make([]string, len(st.CustomerNumber))
for i, item := range st.CustomerNumber {
values[i] = item.Rules
}
initialMP[utils.CustomerNumberCfg] = strings.Join(values, separator)
values = make([]string, len(st.OrigNumber))
for i, item := range st.OrigNumber {
values[i] = item.Rules
}
initialMP[utils.OrigNumberCfg] = strings.Join(values, separator)
values = make([]string, len(st.TermNumber))
for i, item := range st.TermNumber {
values[i] = item.Rules
}
initialMP[utils.TermNumberCfg] = strings.Join(values, separator)
values = make([]string, len(st.BillToNumber))
for i, item := range st.BillToNumber {
values[i] = item.Rules
}
initialMP[utils.BillToNumberCfg] = strings.Join(values, separator)
values = make([]string, len(st.Zipcode))
for i, item := range st.Zipcode {
values[i] = item.Rules
}
initialMP[utils.ZipcodeCfg] = strings.Join(values, separator)
values = make([]string, len(st.Plus4))
for i, item := range st.Plus4 {
values[i] = item.Rules
}
initialMP[utils.Plus4Cfg] = strings.Join(values, separator)
values = make([]string, len(st.P2PZipcode))
for i, item := range st.P2PZipcode {
values[i] = item.Rules
}
initialMP[utils.P2PZipcodeCfg] = strings.Join(values, separator)
values = make([]string, len(st.P2PPlus4))
for i, item := range st.P2PPlus4 {
values[i] = item.Rules
}
initialMP[utils.P2PPlus4Cfg] = strings.Join(values, separator)
values = make([]string, len(st.Units))
for i, item := range st.Units {
values[i] = item.Rules
}
initialMP[utils.UnitsCfg] = strings.Join(values, separator)
values = make([]string, len(st.UnitType))
for i, item := range st.UnitType {
values[i] = item.Rules
}
initialMP[utils.UnitTypeCfg] = strings.Join(values, separator)
values = make([]string, len(st.TaxIncluded))
for i, item := range st.TaxIncluded {
values[i] = item.Rules
}
initialMP[utils.TaxIncludedCfg] = strings.Join(values, separator)
values = make([]string, len(st.TaxSitusRule))
for i, item := range st.TaxSitusRule {
values[i] = item.Rules
}
initialMP[utils.TaxSitusRuleCfg] = strings.Join(values, separator)
values = make([]string, len(st.TransTypeCode))
for i, item := range st.TransTypeCode {
values[i] = item.Rules
}
initialMP[utils.TransTypeCodeCfg] = strings.Join(values, separator)
values = make([]string, len(st.SalesTypeCode))
for i, item := range st.SalesTypeCode {
values[i] = item.Rules
}
initialMP[utils.SalesTypeCodeCfg] = strings.Join(values, separator)
values = make([]string, len(st.TaxExemptionCodeList))
for i, item := range st.TaxExemptionCodeList {
values[i] = item.Rules
}
initialMP[utils.TaxExemptionCodeListCfg] = strings.Join(values, separator)
return
}

View File

@@ -112,72 +112,96 @@ func TestSureTaxCfgloadFromJsonCfg(t *testing.T) {
}
func TestSureTaxCfgAsMapInterface(t *testing.T) {
var sureTaxCfg SureTaxCfg
cfgJSONStr := `{
"suretax": {
"url": "",
"client_number": "",
"validation_key": "",
"business_unit": "",
"timezone": "UTC",
"include_local_cost": false,
"return_file_code": "0",
"response_group": "03",
"response_type": "D4",
"regulatory_code": "03",
"client_tracking": "~*req.CGRID",
"customer_number": "~*req.Subject",
"orig_number": "~*req.Subject",
"term_number": "~*req.Destination",
"bill_to_number": "",
"zipcode": "",
"plus4": "",
"p2pzipcode": "",
"p2pplus4": "",
"units": "1",
"unit_type": "00",
"tax_included": "0",
"tax_situs_rule": "04",
"trans_type_code": "010101",
"sales_type_code": "R",
"tax_exemption_code_list": "",
},
"suretax": {},
}`
eMap := map[string]interface{}{
"url": "",
"client_number": "",
"validation_key": "",
"business_unit": "",
"timezone": "UTC",
"include_local_cost": false,
"return_file_code": "0",
"response_group": "03",
"response_type": "D4",
"regulatory_code": "03",
"client_tracking": "~*req.CGRID",
"customer_number": "~*req.Subject",
"orig_number": "~*req.Subject",
"term_number": "~*req.Destination",
"bill_to_number": "",
"zipcode": "",
"plus4": "",
"p2pzipcode": "",
"p2pplus4": "",
"units": "1",
"unit_type": "00",
"tax_included": "0",
"tax_situs_rule": "04",
"trans_type_code": "010101",
"sales_type_code": "R",
"tax_exemption_code_list": "",
utils.UrlCfg: utils.EmptyString,
utils.ClientNumberCfg: utils.EmptyString,
utils.ValidationKeyCfg: utils.EmptyString,
utils.BusinessUnitCfg: utils.EmptyString,
utils.TimezoneCfg: "Local",
utils.IncludeLocalCostCfg: false,
utils.ReturnFileCodeCfg: "0",
utils.ResponseGroupCfg: "03",
utils.ResponseTypeCfg: "D4",
utils.RegulatoryCodeCfg: "03",
utils.ClientTrackingCfg: "~*req.CGRID",
utils.CustomerNumberCfg: "~*req.Subject",
utils.OrigNumberCfg: "~*req.Subject",
utils.TermNumberCfg: "~*req.Destination",
utils.BillToNumberCfg: utils.EmptyString,
utils.ZipcodeCfg: utils.EmptyString,
utils.Plus4Cfg: utils.EmptyString,
utils.P2PZipcodeCfg: utils.EmptyString,
utils.P2PPlus4Cfg: utils.EmptyString,
utils.UnitsCfg: "1",
utils.UnitTypeCfg: "00",
utils.TaxIncludedCfg: "0",
utils.TaxSitusRuleCfg: "04",
utils.TransTypeCodeCfg: "010101",
utils.SalesTypeCodeCfg: "R",
utils.TaxExemptionCodeListCfg: utils.EmptyString,
}
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil {
t.Error(err)
} else if sureTax, err := jsnCfg.SureTaxJsonCfg(); err != nil {
t.Error(err)
} else if err = sureTaxCfg.loadFromJsonCfg(sureTax); err != nil {
t.Error(err)
} else if rcv := sureTaxCfg.AsMapInterface(utils.EmptyString); !reflect.DeepEqual(eMap, rcv) {
t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
} else if rcv := cgrCfg.sureTaxCfg.AsMapInterface(cgrCfg.generalCfg.RSRSep); !reflect.DeepEqual(rcv, eMap) {
t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
}
}
func TestSureTaxCfgAsMapInterface1(t *testing.T) {
cfgJSONStr := `{
"suretax": {
"timezone": "UTC",
"include_local_cost": true,
"return_file_code": "0",
"response_group": "04",
"response_type": "A4",
"regulatory_code": "04",
"client_tracking": "~*req.Destination",
"customer_number": "~*req.Destination",
"orig_number": "~*req.Destination",
"term_number": "~*req.CGRID",
"units": "7",
"unit_type": "02",
"tax_included": "1",
"tax_situs_rule": "03",
"trans_type_code": "01010101",
"sales_type_code": "B",
},
}`
eMap := map[string]interface{}{
utils.UrlCfg: utils.EmptyString,
utils.ClientNumberCfg: utils.EmptyString,
utils.ValidationKeyCfg: utils.EmptyString,
utils.BusinessUnitCfg: utils.EmptyString,
utils.TimezoneCfg: "UTC",
utils.IncludeLocalCostCfg: true,
utils.ReturnFileCodeCfg: "0",
utils.ResponseGroupCfg: "04",
utils.ResponseTypeCfg: "A4",
utils.RegulatoryCodeCfg: "04",
utils.ClientTrackingCfg: "~*req.Destination",
utils.CustomerNumberCfg: "~*req.Destination",
utils.OrigNumberCfg: "~*req.Destination",
utils.TermNumberCfg: "~*req.CGRID",
utils.BillToNumberCfg: utils.EmptyString,
utils.ZipcodeCfg: utils.EmptyString,
utils.Plus4Cfg: utils.EmptyString,
utils.P2PZipcodeCfg: utils.EmptyString,
utils.P2PPlus4Cfg: utils.EmptyString,
utils.UnitsCfg: "7",
utils.UnitTypeCfg: "02",
utils.TaxIncludedCfg: "1",
utils.TaxSitusRuleCfg: "03",
utils.TransTypeCodeCfg: "01010101",
utils.SalesTypeCodeCfg: "B",
utils.TaxExemptionCodeListCfg: utils.EmptyString,
}
if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil {
t.Error(err)
} else if rcv := cgrCfg.sureTaxCfg.AsMapInterface(cgrCfg.generalCfg.RSRSep); !reflect.DeepEqual(rcv, eMap) {
t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
}
}