feat[BE]: enhance GetOverhead functionality with project flock kandang count mapping and update related DTOs

This commit is contained in:
aguhh18
2026-01-13 13:36:08 +07:00
parent 3c10866208
commit b088eebac5
4 changed files with 71 additions and 30 deletions
@@ -72,18 +72,14 @@ func (r *ExpenseRealizationRepositoryImpl) GetClosingOverhead(ctx context.Contex
Joins("LEFT JOIN kandangs ON kandangs.id = expense_nonstocks.kandang_id").
Where("expenses.realization_date IS NOT NULL")
// Build WHERE clause for project flock filtering
if projectFlockKandangID != nil {
// Per kandang: hanya ambil expense yang specific ke kandang tersebut
// SKIP expense level farm (yang punya multiple project flocks di JSON array)
// IMPORTANT: Untuk kandang_id, pastikan kandang tersebut belong to project_flock_kandang ini
db = db.Where(`(
expense_nonstocks.project_flock_kandang_id = ? OR
(expense_nonstocks.kandang_id = (SELECT kandang_id FROM project_flock_kandangs WHERE id = ?) AND
expense_nonstocks.project_flock_kandang_id IS NULL)
)`, *projectFlockKandangID, *projectFlockKandangID)
expense_nonstocks.project_flock_kandang_id IS NULL) OR
(expenses.project_flock_id IS NOT NULL AND expenses.project_flock_id::jsonb @> ?::jsonb)
)`, *projectFlockKandangID, *projectFlockKandangID, fmt.Sprintf("[%d]", projectFlockID))
} else {
// All kandang: include expense kandang-specific DAN expense level farm
db = db.Where(`(
project_flock_kandangs.project_flock_id = ? OR
kandangs.id IN (SELECT kandang_id FROM project_flock_kandangs WHERE project_flock_id = ?) OR