Files
bssapp/svc/queries/account.go

68 lines
1.2 KiB
Go

package queries
import (
"bssapp-backend/db"
"bssapp-backend/internal/authz"
"bssapp-backend/models"
"context"
"fmt"
"log"
)
func GetAccounts(ctx context.Context) ([]models.Account, error) {
piyasaFilter := authz.BuildMSSQLPiyasaFilter(
ctx,
"f.CustomerAtt01", // ✅ alias ile uyumlu
)
query := fmt.Sprintf(`
SELECT
c.CurrAccCode AS AccountCode,
ISNULL(d.CurrAccDescription, '') AS AccountName
FROM cdCurrAcc c
LEFT JOIN cdCurrAccDesc d
ON c.CurrAccCode = d.CurrAccCode
LEFT JOIN dbo.CustomerAttributesFilter f
ON c.CurrAccCode = f.CurrAccCode
WHERE
c.CompanyCode = 1
AND c.IsBlocked = 0
AND %s
ORDER BY d.CurrAccDescription
`, piyasaFilter)
log.Println("🔎 ACCOUNTS FILTER:", piyasaFilter)
rows, err := db.MssqlDB.Query(query)
if err != nil {
return nil, fmt.Errorf("MSSQL error: %w", err)
}
defer rows.Close()
var accounts []models.Account
for rows.Next() {
var acc models.Account
if err := rows.Scan(
&acc.AccountCode,
&acc.AccountName,
); err != nil {
return nil, err
}
if len(acc.AccountCode) >= 4 {
acc.DisplayCode =
acc.AccountCode[:3] + " " + acc.AccountCode[3:]
} else {
acc.DisplayCode = acc.AccountCode
}
accounts = append(accounts, acc)
}
return accounts, rows.Err()
}