lib/app/accountingrule-services.go

35 lines
1.2 KiB
Go
Raw Normal View History

2021-02-02 04:19:16 +00:00
package app
import (
"fmt"
"code.tnxs.net/taxnexus/lib/api/ledger/ledger_client/accounting_rule"
"code.tnxs.net/taxnexus/lib/api/ledger/ledger_models"
)
// GetAccountingRulesByAccountID is a first class object retrieval method
func GetAccountingRulesByAccountID(
accountID string,
principal *User,
) (map[string]*ledger_models.AccountingRule, error) {
sugar.Debug("ops.getAccountingRulesByAccountID: 📥")
obj, ok := accountingRuleCache.get(accountID)
if ok {
sugar.Debugf("ops.getAccountingRulesByAccountID: 👍 📤 🎯 n = %v", len(obj))
return obj, nil
}
ledgerParams := accounting_rule.NewGetAccountingRulesParamsWithTimeout(getTimeout)
ledgerParams.AccountID = accountID
response, restErr := ledgerClient.AccountingRule.GetAccountingRules(ledgerParams, principal.Auth)
if restErr != nil {
return nil, fmt.Errorf("ops.getAccountingRulesByAccountID: 💣 ⛔ %w", restErr)
}
theRules := map[string]*ledger_models.AccountingRule{}
for _, itm := range response.Payload.Data {
theRules[itm.Code] = itm
}
sugar.Debugf("ops.getAccountingRulesByAccountID: 👍 📤 n = %v", len(theRules))
accountingRuleCache.put(accountID, theRules)
return theRules, nil
}