diff --git a/internal/modules/marketing/services/deliveryorder.service.go b/internal/modules/marketing/services/deliveryorder.service.go index aa599894..7e09ae39 100644 --- a/internal/modules/marketing/services/deliveryorder.service.go +++ b/internal/modules/marketing/services/deliveryorder.service.go @@ -310,6 +310,8 @@ func (s deliveryOrdersService) GetAll(c *fiber.Ctx, params *validation.DeliveryO return db.Joins("LEFT JOIN customers ON customers.id = marketings.customer_id").Order("COALESCE(customers.name, '') " + orderDir) case "grand_total": return db.Order("(SELECT COALESCE(SUM(mp.total_price), 0) FROM marketing_products mp WHERE mp.marketing_id = marketings.id) " + orderDir) + case "created_at": + return db.Order("marketings.created_at " + orderDir) default: return db.Order("created_at DESC").Order("updated_at DESC") } diff --git a/internal/modules/marketing/validations/deliveryorder.validation.go b/internal/modules/marketing/validations/deliveryorder.validation.go index dba96eeb..629a5df6 100644 --- a/internal/modules/marketing/validations/deliveryorder.validation.go +++ b/internal/modules/marketing/validations/deliveryorder.validation.go @@ -31,7 +31,7 @@ type DeliveryOrderQuery struct { MarketingId uint `query:"marketing_id" validate:"omitempty,gt=0"` ProjectFlockID uint `query:"project_flock_id" validate:"omitempty,gt=0"` ProjectFlockKandangID uint `query:"project_flock_kandang_id" validate:"omitempty,gt=0"` - SortBy string `query:"sort_by" validate:"omitempty,oneof=so_number so_date status customer grand_total"` + SortBy string `query:"sort_by" validate:"omitempty,oneof=so_number so_date status customer grand_total created_at"` SortOrder string `query:"sort_order" validate:"omitempty,oneof=asc desc"` } diff --git a/internal/modules/purchases/services/purchase.service.go b/internal/modules/purchases/services/purchase.service.go index 3e524054..a0a5284b 100644 --- a/internal/modules/purchases/services/purchase.service.go +++ b/internal/modules/purchases/services/purchase.service.go @@ -288,13 +288,15 @@ func (s *purchaseService) GetAll(c *fiber.Ctx, params *validation.Query) ([]enti WHERE pi.purchase_id = purchases.id) ` + sortOrder) case "po_date": return db.Order("purchases.po_date " + sortOrder) + case "po_number": + return db.Order("COALESCE(purchases.po_number, purchases.pr_number) " + sortOrder) case "received_date": return db.Order(`(SELECT MIN(pi2.received_date) FROM purchase_items pi2 WHERE pi2.purchase_id = purchases.id) ` + sortOrder) case "due_date": return db.Order("purchases.due_date " + sortOrder) case "status": return db.Order(`(SELECT COALESCE(a.step_name, '') FROM approvals a - WHERE a.approvable_type = 'purchase' AND a.approvable_id = purchases.id + WHERE a.approvable_type = 'PURCHASES' AND a.approvable_id = purchases.id ORDER BY a.action_at DESC, a.id DESC LIMIT 1) ` + sortOrder) case "created_at": return db.Order("purchases.created_at " + sortOrder) diff --git a/internal/modules/purchases/validations/purchase.validation.go b/internal/modules/purchases/validations/purchase.validation.go index e8337493..1f49eaca 100644 --- a/internal/modules/purchases/validations/purchase.validation.go +++ b/internal/modules/purchases/validations/purchase.validation.go @@ -81,6 +81,6 @@ type Query struct { Search string `query:"search" validate:"omitempty,max=100"` CreatedFrom string `query:"created_from" validate:"omitempty,datetime=2006-01-02"` CreatedTo string `query:"created_to" validate:"omitempty,datetime=2006-01-02"` - SortBy string `query:"sort_by" validate:"omitempty,oneof=po_expedition supplier requester_name products location po_date received_date due_date status created_at"` + SortBy string `query:"sort_by" validate:"omitempty,oneof=po_expedition supplier requester_name products location po_date received_date due_date status created_at po_number"` SortOrder string `query:"sort_order" validate:"omitempty,oneof=asc desc ASC DESC"` }