Merge remote-tracking branch 'origin/master'

This commit is contained in:
M_Kececi
2026-03-17 12:22:52 +03:00
parent e16d45002b
commit 774684d152
4 changed files with 83 additions and 0 deletions

View File

@@ -72,6 +72,9 @@ func ExportCustomerBalancePDFHandler(_ *sql.DB) http.HandlerFunc {
rows = filterCustomerBalanceRowsForPDF(rows, excludeZero12, excludeZero13)
summaries, detailsByMaster := buildCustomerBalancePDFData(rows)
sortBy := strings.TrimSpace(r.URL.Query().Get("sort_by"))
sortDesc := parseBoolQuery(r.URL.Query().Get("sort_desc"))
sortBalanceSummariesForPDF(summaries, sortBy, sortDesc)
pdf := gofpdf.New("L", "mm", "A4", "")
pdf.SetMargins(8, 8, 8)
@@ -240,6 +243,79 @@ func buildCustomerBalancePDFData(rows []models.CustomerBalanceListRow) ([]balanc
return summaries, detailsByMaster
}
func sortBalanceSummariesForPDF(summaries []balanceSummaryPDF, sortBy string, descending bool) {
key := strings.TrimSpace(sortBy)
if key == "" || len(summaries) <= 1 {
return
}
textCmp := func(a, b string) int {
return strings.Compare(strings.ToUpper(strings.TrimSpace(a)), strings.ToUpper(strings.TrimSpace(b)))
}
numCmp := func(a, b float64) int {
if a < b {
return -1
}
if a > b {
return 1
}
return 0
}
sort.SliceStable(summaries, func(i, j int) bool {
a := summaries[i]
b := summaries[j]
cmp := 0
switch key {
case "ana_cari_kodu":
cmp = textCmp(a.AnaCariKodu, b.AnaCariKodu)
case "ana_cari_adi":
cmp = textCmp(a.AnaCariAdi, b.AnaCariAdi)
case "piyasa":
cmp = textCmp(a.Piyasa, b.Piyasa)
case "temsilci":
cmp = textCmp(a.Temsilci, b.Temsilci)
case "risk_durumu":
cmp = textCmp(a.RiskDurumu, b.RiskDurumu)
case "usd_bakiye_1_2":
cmp = numCmp(a.USDBakiye12, b.USDBakiye12)
case "tl_bakiye_1_2":
cmp = numCmp(a.TLBakiye12, b.TLBakiye12)
case "usd_bakiye_1_3":
cmp = numCmp(a.USDBakiye13, b.USDBakiye13)
case "tl_bakiye_1_3":
cmp = numCmp(a.TLBakiye13, b.TLBakiye13)
case "vade_gun":
cmp = numCmp(a.VadeGun, b.VadeGun)
case "vade_belge_tarihi_gun":
cmp = numCmp(a.VadeBelge, b.VadeBelge)
case "prbr_1_2":
cmp = numCmp(sumCurrencyMapForSort(a.Bakiye12Map), sumCurrencyMapForSort(b.Bakiye12Map))
case "prbr_1_3":
cmp = numCmp(sumCurrencyMapForSort(a.Bakiye13Map), sumCurrencyMapForSort(b.Bakiye13Map))
default:
cmp = textCmp(a.AnaCariKodu, b.AnaCariKodu)
}
if cmp == 0 {
cmp = textCmp(a.AnaCariKodu, b.AnaCariKodu)
}
if descending {
return cmp > 0
}
return cmp < 0
})
}
func sumCurrencyMapForSort(m map[string]float64) float64 {
total := 0.0
for _, v := range m {
total += v
}
return total
}
func drawCustomerBalancePDF(
pdf *gofpdf.Fpdf,
selectedDate string,

View File

@@ -73,6 +73,9 @@ func ExportStatementAgingPDFHandler(_ *sql.DB) http.HandlerFunc {
rows = filterCustomerBalanceRowsForPDF(rows, excludeZero12, excludeZero13)
summaries, detailsByMaster := buildCustomerBalancePDFData(rows)
sortBy := strings.TrimSpace(r.URL.Query().Get("sort_by"))
sortDesc := parseBoolQuery(r.URL.Query().Get("sort_desc"))
sortBalanceSummariesForPDF(summaries, sortBy, sortDesc)
pdf := gofpdf.New("L", "mm", "A4", "")
pdf.SetMargins(8, 8, 8)

View File

@@ -839,6 +839,8 @@ async function downloadAgingBalancePDF (detailed) {
ilce: (store.filters.ilce || []).join(','),
exclude_zero_12: store.filters.excludeZeroBalance12 ? '1' : '0',
exclude_zero_13: store.filters.excludeZeroBalance13 ? '1' : '0',
sort_by: String(summaryPagination.value?.sortBy || ''),
sort_desc: summaryPagination.value?.descending ? '1' : '0',
detailed: detailed ? '1' : '0'
}

View File

@@ -727,6 +727,8 @@ async function downloadCustomerBalancePDF (detailed) {
ilce: (store.filters.ilce || []).join(','),
exclude_zero_12: store.filters.excludeZeroBalance12 ? '1' : '0',
exclude_zero_13: store.filters.excludeZeroBalance13 ? '1' : '0',
sort_by: String(summaryPagination.value?.sortBy || ''),
sort_desc: summaryPagination.value?.descending ? '1' : '0',
detailed: detailed ? '1' : '0'
}