92 lines
1.9 KiB
Go
92 lines
1.9 KiB
Go
package queries
|
||
|
||
import (
|
||
"bssapp-backend/models"
|
||
"context"
|
||
)
|
||
|
||
func GetCustomerBalanceList(
|
||
ctx context.Context,
|
||
params models.CustomerBalanceListParams,
|
||
) ([]models.CustomerBalanceListRow, error) {
|
||
|
||
//------------------------------------------------
|
||
// 1️⃣ DATA ÇEK
|
||
//------------------------------------------------
|
||
|
||
balances, err := getFastBalances(ctx, params.SelectedDate)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
masterMap, err := getCariMasterMap(ctx)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
//------------------------------------------------
|
||
// 2️⃣ MERGE
|
||
//------------------------------------------------
|
||
|
||
resultMap := make(map[string]*models.CustomerBalanceListRow)
|
||
|
||
for _, b := range balances {
|
||
|
||
key := b.CariKodu + "|" + b.CariDoviz
|
||
|
||
r, ok := resultMap[key]
|
||
if !ok {
|
||
|
||
r = &models.CustomerBalanceListRow{
|
||
CariKodu: b.CariKodu,
|
||
CariDoviz: b.CariDoviz,
|
||
}
|
||
|
||
// Master
|
||
if m, ok := masterMap[b.CariKodu]; ok {
|
||
|
||
r.CariDetay = m.CariDetay
|
||
r.Piyasa = m.Piyasa
|
||
r.Temsilci = m.Temsilci
|
||
|
||
r.Ozellik03 = m.Ozellik03
|
||
r.Ozellik05 = m.Ozellik05
|
||
r.Ozellik06 = m.Ozellik06
|
||
r.Ozellik07 = m.Ozellik07
|
||
r.CariIlkGrup = m.Ozellik08
|
||
}
|
||
|
||
resultMap[key] = r
|
||
}
|
||
|
||
//------------------------------------------------
|
||
// 3️⃣ TOPLA
|
||
//------------------------------------------------
|
||
|
||
if b.PislemTipi == "1_2" {
|
||
|
||
r.Bakiye12 += b.Bakiye
|
||
r.TLBakiye12 += b.KurBakiye
|
||
r.USDBakiye12 += b.KurBakiye / b.UsdKur
|
||
|
||
} else if b.PislemTipi == "1_3" {
|
||
|
||
r.Bakiye13 += b.Bakiye
|
||
r.TLBakiye13 += b.KurBakiye
|
||
r.USDBakiye13 += b.KurBakiye / b.UsdKur
|
||
}
|
||
}
|
||
|
||
//------------------------------------------------
|
||
// 4️⃣ SLICE DÖN
|
||
//------------------------------------------------
|
||
|
||
out := make([]models.CustomerBalanceListRow, 0, len(resultMap))
|
||
|
||
for _, v := range resultMap {
|
||
out = append(out, *v)
|
||
}
|
||
|
||
return out, nil
|
||
}
|