35 lines
1.2 KiB
Go
35 lines
1.2 KiB
Go
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
|
|
}
|