From a04ae14271584cdf3bc827d93d7196d66bf30d8a Mon Sep 17 00:00:00 2001 From: giovanni Date: Tue, 12 May 2026 15:50:18 +0700 Subject: [PATCH] fix patch lunas BOP --- internal/modules/expenses/services/expense.service.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/internal/modules/expenses/services/expense.service.go b/internal/modules/expenses/services/expense.service.go index d0bd8fba..48a18042 100644 --- a/internal/modules/expenses/services/expense.service.go +++ b/internal/modules/expenses/services/expense.service.go @@ -1326,14 +1326,16 @@ func (s *expenseService) Pay(c *fiber.Ctx, id uint) (*expenseDto.ExpenseDetailDT return nil, fiber.NewError(fiber.StatusBadRequest, "Expense is already paid") } - latestApproval, err := s.ApprovalSvc.LatestByTarget(c.Context(), utils.ApprovalWorkflowExpense, id, nil) + latestApproval, err := s.ApprovalSvc.LatestByTarget(c.Context(), utils.ApprovalWorkflowExpense, id, func(db *gorm.DB) *gorm.DB { + return db.Where("action = ?", entity.ApprovalActionApproved) + }) if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { return nil, fiber.NewError(fiber.StatusInternalServerError, "Failed to validate workflow") } if latestApproval == nil { - return nil, fiber.NewError(fiber.StatusBadRequest, "No approval found. Please create expense first.") + return nil, fiber.NewError(fiber.StatusBadRequest, "Expense must be approved by Finance (step 4) before payment") } - if latestApproval.StepNumber < uint16(utils.ExpenseStepFinance) || latestApproval.Action == nil || *latestApproval.Action != entity.ApprovalActionApproved { + if latestApproval.StepNumber < uint16(utils.ExpenseStepFinance) { return nil, fiber.NewError(fiber.StatusBadRequest, "Expense must be approved by Finance (step 4) before payment") }