diff --git a/svc/queries/statement_header.go b/svc/queries/statement_header.go index 2ef2048..8e9d1ec 100644 --- a/svc/queries/statement_header.go +++ b/svc/queries/statement_header.go @@ -14,6 +14,9 @@ func GetStatements(params models.StatementParams) ([]models.StatementHeader, err if len(params.AccountCode) == 7 && strings.ContainsAny(params.AccountCode, "0123456789") { params.AccountCode = params.AccountCode[:3] + " " + params.AccountCode[3:] } + if strings.TrimSpace(params.LangCode) == "" { + params.LangCode = "TR" + } // Parislemler []string → '1','2','3' parislemFilter := "''" @@ -34,7 +37,15 @@ func GetStatements(params models.StatementParams) ([]models.StatementHeader, err query := fmt.Sprintf(` -;WITH Opening AS ( +;WITH CurrDesc AS ( + SELECT + CurrAccCode, + MAX(CurrAccDescription) AS CurrAccDescription + FROM cdCurrAccDesc + WHERE LangCode = @LangCode + GROUP BY CurrAccCode +), +Opening AS ( SELECT b.CurrAccCode AS Cari_Kod, b.DocCurrencyCode AS Para_Birimi, @@ -60,6 +71,13 @@ func GetStatements(params models.StatementParams) ([]models.StatementHeader, err b.CurrAccCode, b.DocCurrencyCode ), +OpeningByCurrency AS ( + SELECT + Para_Birimi, + SUM(Devir_Bakiyesi) AS Devir_Bakiyesi + FROM Opening + GROUP BY Para_Birimi +), Movements AS ( SELECT @@ -88,7 +106,7 @@ Movements AS ( FROM trCurrAccBook b - LEFT JOIN cdCurrAccDesc d + LEFT JOIN CurrDesc d ON b.CurrAccCode = d.CurrAccCode LEFT JOIN trCurrAccBookCurrency c @@ -138,8 +156,16 @@ UNION ALL /* ✅ Devir satırı sadece Opening’den */ SELECT - o.Cari_Kod, - d.CurrAccDescription, + @Carikod AS Cari_Kod, + COALESCE( + (SELECT TOP 1 cd.CurrAccDescription + FROM CurrDesc cd + WHERE cd.CurrAccCode = @Carikod), + (SELECT TOP 1 cd.CurrAccDescription + FROM CurrDesc cd + WHERE cd.CurrAccCode LIKE '%%' + @Carikod + '%%' + ORDER BY cd.CurrAccCode) + ) AS Cari_Isim, CONVERT(varchar(10), @startdate, 23), CONVERT(varchar(10), @startdate, 23), @@ -148,26 +174,23 @@ SELECT 'Devir', 'Devir Bakiyesi', - o.Para_Birimi, + obc.Para_Birimi, CASE - WHEN o.Devir_Bakiyesi >= 0 THEN o.Devir_Bakiyesi + WHEN obc.Devir_Bakiyesi >= 0 THEN obc.Devir_Bakiyesi ELSE 0 END, CASE - WHEN o.Devir_Bakiyesi < 0 THEN ABS(o.Devir_Bakiyesi) + WHEN obc.Devir_Bakiyesi < 0 THEN ABS(obc.Devir_Bakiyesi) ELSE 0 END, - o.Devir_Bakiyesi, + obc.Devir_Bakiyesi, CAST(NULL AS varchar(32)) AS Parislemler -FROM Opening o - -LEFT JOIN cdCurrAccDesc d - ON d.CurrAccCode = o.Cari_Kod +FROM OpeningByCurrency obc ORDER BY