Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user