store wise orders change

This commit is contained in:
Suriya
2026-07-21 09:25:30 +05:30
parent 36f9cf86e7
commit b7af245910
6 changed files with 114 additions and 20 deletions

View File

@@ -4,7 +4,6 @@ import (
"fmt"
"log"
"nearle/models"
"strconv"
"time"
"gorm.io/gorm"
@@ -599,39 +598,47 @@ func (r *orderRepository) GetAllOrders(stat, fdate, tdate string, pageno, pagesi
func (r *orderRepository) GetOrderSummary(tid, pid, cid, lid int, fdate, tdate string) ([]models.Ordersummarydaily, error) {
var data []models.Ordersummarydaily
var q1 string
// Base SELECT
const base = `
SELECT
SELECT
COUNT(*) AS total,
SUM(CASE WHEN o.orderstatus = 'created' THEN 1 ELSE 0 END) AS created,
SUM(CASE WHEN o.orderstatus = 'pending' THEN 1 ELSE 0 END) AS pending,
SUM(CASE WHEN o.orderstatus = 'processing' THEN 1 ELSE 0 END) AS processing,
SUM(CASE WHEN o.orderstatus = 'delivered' THEN 1 ELSE 0 END) AS delivered,
SUM(CASE WHEN o.orderstatus = 'cancelled' THEN 1 ELSE 0 END) AS cancelled,
t.tenantid,
t.tenantid,
t.tenantname
FROM orders o
INNER JOIN tenants t ON o.tenantid = t.tenantid
`
// Apply filters
if tid != 0 {
q1 = base + " WHERE o.configid = 1 AND o.tenantid = " + strconv.Itoa(tid)
} else if pid != 0 {
q1 = base + " WHERE o.configid = 1 AND o.partnerid = " + strconv.Itoa(pid)
} else if cid != 0 {
q1 = base + " WHERE o.configid = 1 AND o.customerid = " + strconv.Itoa(cid)
} else if lid != 0 {
q1 = base + " WHERE o.configid = 1 AND o.locationid = " + strconv.Itoa(lid)
} else {
q1 = base + " WHERE o.configid = 1"
var params []interface{}
var q1 string
// Apply filters (at least one scoping id is required — enforced by the caller)
switch {
case tid != 0:
q1 = base + " WHERE o.configid = 1 AND o.tenantid = ?"
params = append(params, tid)
case pid != 0:
q1 = base + " WHERE o.configid = 1 AND o.partnerid = ?"
params = append(params, pid)
case cid != 0:
q1 = base + " WHERE o.configid = 1 AND o.customerid = ?"
params = append(params, cid)
case lid != 0:
q1 = base + " WHERE o.configid = 1 AND o.locationid = ?"
params = append(params, lid)
default:
return nil, fmt.Errorf("at least one of tenantid, partnerid, customerid or locationid is required")
}
// Date filter
if fdate != "" && tdate != "" {
q1 += " AND o.orderdate::date BETWEEN '" + fdate + "' AND '" + tdate + "'"
q1 += " AND o.orderdate::date BETWEEN ? AND ?"
params = append(params, fdate, tdate)
}
// Group by tenant
@@ -640,7 +647,7 @@ func (r *orderRepository) GetOrderSummary(tid, pid, cid, lid int, fdate, tdate s
// Debug
fmt.Println("Executing GetOrderSummary query:", q1)
if err := r.db.Raw(q1).Scan(&data).Error; err != nil {
if err := r.db.Raw(q1, params...).Scan(&data).Error; err != nil {
return nil, err
}