mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Add IntialValue in Balances from AccountSummary
This commit is contained in:
committed by
Dan Christian Bogos
parent
b5dd885786
commit
4707e02091
@@ -818,11 +818,12 @@ func (f ValueFactor) GetValue(tor string) float64 {
|
||||
|
||||
// BalanceSummary represents compressed information about a balance
|
||||
type BalanceSummary struct {
|
||||
UUID string // Balance UUID
|
||||
ID string // Balance ID if not defined
|
||||
Type string // *voice, *data, etc
|
||||
Value float64
|
||||
Disabled bool
|
||||
UUID string // Balance UUID
|
||||
ID string // Balance ID if not defined
|
||||
Type string // *voice, *data, etc
|
||||
InitialValue float64
|
||||
Value float64
|
||||
Disabled bool
|
||||
}
|
||||
|
||||
// BalanceSummaries is a list of BalanceSummaries
|
||||
|
||||
@@ -760,6 +760,7 @@ func (cd *CallDescriptor) Debit() (cc *CallCost, err error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
initialAcnt := account.AsAccountSummary()
|
||||
acntIDs, sgerr := account.GetUniqueSharedGroupMembers(cd)
|
||||
if sgerr != nil {
|
||||
return nil, sgerr
|
||||
@@ -773,7 +774,7 @@ func (cd *CallDescriptor) Debit() (cc *CallCost, err error) {
|
||||
_, err = guardian.Guardian.Guard(func() (iface interface{}, err error) {
|
||||
cc, err = cd.debit(account, cd.DryRun, !cd.DenyNegativeAccount)
|
||||
if err == nil {
|
||||
cc.AccountSummary = cd.AccountSummary()
|
||||
cc.AccountSummary = cd.AccountSummary(initialAcnt)
|
||||
}
|
||||
return
|
||||
}, config.CgrConfig().GeneralCfg().LockingTimeout, lkIDs...)
|
||||
@@ -793,6 +794,7 @@ func (cd *CallDescriptor) MaxDebit() (cc *CallCost, err error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
initialAcnt := account.AsAccountSummary()
|
||||
acntIDs, err := account.GetUniqueSharedGroupMembers(cd)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -814,7 +816,7 @@ func (cd *CallDescriptor) MaxDebit() (cc *CallCost, err error) {
|
||||
}
|
||||
if err != nil || remainingDuration == 0 {
|
||||
cc = cd.CreateCallCost()
|
||||
cc.AccountSummary = cd.AccountSummary()
|
||||
cc.AccountSummary = cd.AccountSummary(initialAcnt)
|
||||
if cd.GetDuration() == 0 {
|
||||
// add RatingInfo
|
||||
err = cd.LoadRatingPlans()
|
||||
@@ -837,7 +839,7 @@ func (cd *CallDescriptor) MaxDebit() (cc *CallCost, err error) {
|
||||
}
|
||||
cc, err = cd.debit(account, cd.DryRun, !cd.DenyNegativeAccount)
|
||||
if err == nil {
|
||||
cc.AccountSummary = cd.AccountSummary()
|
||||
cc.AccountSummary = cd.AccountSummary(initialAcnt)
|
||||
}
|
||||
return
|
||||
}, config.CgrConfig().GeneralCfg().LockingTimeout, lkIDs...)
|
||||
@@ -998,11 +1000,20 @@ func (cd *CallDescriptor) Clone() *CallDescriptor {
|
||||
}
|
||||
|
||||
// AccountSummary returns the AccountSummary for cached account
|
||||
func (cd *CallDescriptor) AccountSummary() *AccountSummary {
|
||||
func (cd *CallDescriptor) AccountSummary(initialAcnt *AccountSummary) *AccountSummary {
|
||||
if cd.account == nil {
|
||||
return nil
|
||||
}
|
||||
return cd.account.AsAccountSummary()
|
||||
acntSummary := cd.account.AsAccountSummary()
|
||||
for _, initialBal := range initialAcnt.BalanceSummaries {
|
||||
for _, currentBal := range acntSummary.BalanceSummaries {
|
||||
if currentBal.UUID == initialBal.UUID {
|
||||
currentBal.InitialValue = initialBal.Value
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return acntSummary
|
||||
}
|
||||
|
||||
// FieldAsInterface is part of utils.DataProvider
|
||||
|
||||
@@ -3295,7 +3295,7 @@ func TestEventCostString(t *testing.T) {
|
||||
},
|
||||
},
|
||||
}
|
||||
eOut = `{"CGRID":"","RunID":"","StartTime":"0001-01-01T00:00:00Z","Usage":null,"Cost":null,"Charges":null,"AccountSummary":{"Tenant":"","ID":"","BalanceSummaries":[{"UUID":"","ID":"ID","Type":"","Value":0,"Disabled":false}],"AllowNegative":false,"Disabled":false},"Rating":null,"Accounting":null,"RatingFilters":null,"Rates":null,"Timings":null}`
|
||||
eOut = `{"CGRID":"","RunID":"","StartTime":"0001-01-01T00:00:00Z","Usage":null,"Cost":null,"Charges":null,"AccountSummary":{"Tenant":"","ID":"","BalanceSummaries":[{"UUID":"","ID":"ID","Type":"","InitialValue":0,"Value":0,"Disabled":false}],"AllowNegative":false,"Disabled":false},"Rating":null,"Accounting":null,"RatingFilters":null,"Rates":null,"Timings":null}`
|
||||
if rcv := eventCost.String(); !reflect.DeepEqual(eOut, rcv) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", eOut, rcv)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user