mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 13:31:56 +00:00
ad sorting to laporan biaya operasional
This commit is contained in:
@@ -177,10 +177,48 @@ func (r *ExpenseRealizationRepositoryImpl) GetAllWithFilters(ctx context.Context
|
|||||||
return nil, 0, err
|
return nil, 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sortExpr := "expense_realizations.created_at"
|
||||||
|
order := "DESC"
|
||||||
|
if filters.SortOrder == "asc" {
|
||||||
|
order = "ASC"
|
||||||
|
}
|
||||||
|
switch filters.SortBy {
|
||||||
|
case "po_number":
|
||||||
|
sortExpr = "expenses.po_number"
|
||||||
|
case "reference_number":
|
||||||
|
sortExpr = "expenses.reference_number"
|
||||||
|
case "realization_date":
|
||||||
|
sortExpr = "expenses.realization_date"
|
||||||
|
case "transaction_date":
|
||||||
|
sortExpr = "expenses.transaction_date"
|
||||||
|
case "category":
|
||||||
|
sortExpr = "expenses.category"
|
||||||
|
case "product":
|
||||||
|
sortExpr = "(SELECT name FROM nonstocks WHERE id = expense_nonstocks.nonstock_id)"
|
||||||
|
case "supplier":
|
||||||
|
sortExpr = "suppliers.name"
|
||||||
|
case "location":
|
||||||
|
sortExpr = "(SELECT l.name FROM kandangs k JOIN locations l ON l.id = k.location_id WHERE k.id = expense_nonstocks.kandang_id)"
|
||||||
|
case "kandang":
|
||||||
|
sortExpr = "(SELECT name FROM kandangs WHERE id = expense_nonstocks.kandang_id)"
|
||||||
|
case "qty_pengajuan":
|
||||||
|
sortExpr = "expense_nonstocks.qty"
|
||||||
|
case "price_pengajuan":
|
||||||
|
sortExpr = "expense_nonstocks.price"
|
||||||
|
case "total_pengajuan":
|
||||||
|
sortExpr = "expense_nonstocks.qty * expense_nonstocks.price"
|
||||||
|
case "qty_realisasi":
|
||||||
|
sortExpr = "expense_realizations.qty"
|
||||||
|
case "price_realisasi":
|
||||||
|
sortExpr = "expense_realizations.price"
|
||||||
|
case "total_realisasi":
|
||||||
|
sortExpr = "expense_realizations.qty * expense_realizations.price"
|
||||||
|
}
|
||||||
|
|
||||||
if err := db.
|
if err := db.
|
||||||
Offset(offset).
|
Offset(offset).
|
||||||
Limit(limit).
|
Limit(limit).
|
||||||
Order("expense_realizations.created_at DESC").
|
Order(sortExpr + " " + order).
|
||||||
Find(&realizations).Error; err != nil {
|
Find(&realizations).Error; err != nil {
|
||||||
return nil, 0, err
|
return nil, 0, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,8 @@ func (c *RepportController) GetExpense(ctx *fiber.Ctx) error {
|
|||||||
AreaId: int64(ctx.QueryInt("area_id", 0)),
|
AreaId: int64(ctx.QueryInt("area_id", 0)),
|
||||||
LocationId: int64(ctx.QueryInt("location_id", 0)),
|
LocationId: int64(ctx.QueryInt("location_id", 0)),
|
||||||
RealizationDate: ctx.Query("realization_date", ""),
|
RealizationDate: ctx.Query("realization_date", ""),
|
||||||
|
SortBy: ctx.Query("sort_by", ""),
|
||||||
|
SortOrder: ctx.Query("sort_order", ""),
|
||||||
}
|
}
|
||||||
|
|
||||||
locationScope, err := m.ResolveLocationScope(ctx, c.RepportService.DB())
|
locationScope, err := m.ResolveLocationScope(ctx, c.RepportService.DB())
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ type ExpenseQuery struct {
|
|||||||
AreaId int64 `query:"area_id" validate:"omitempty"`
|
AreaId int64 `query:"area_id" validate:"omitempty"`
|
||||||
LocationId int64 `query:"location_id" validate:"omitempty"`
|
LocationId int64 `query:"location_id" validate:"omitempty"`
|
||||||
RealizationDate string `query:"realization_date" validate:"omitempty"`
|
RealizationDate string `query:"realization_date" validate:"omitempty"`
|
||||||
|
SortBy string `query:"sort_by" validate:"omitempty,oneof=po_number reference_number realization_date transaction_date category product supplier location kandang qty_pengajuan price_pengajuan total_pengajuan qty_realisasi price_realisasi total_realisasi"`
|
||||||
|
SortOrder string `query:"sort_order" validate:"omitempty,oneof=asc desc"`
|
||||||
AllowedAreaIDs []int64 `query:"-"`
|
AllowedAreaIDs []int64 `query:"-"`
|
||||||
AllowedLocationIDs []int64 `query:"-"`
|
AllowedLocationIDs []int64 `query:"-"`
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user