From 2ca84ecffee6c8b076491abc391338126dcbe424 Mon Sep 17 00:00:00 2001 From: giovanni Date: Thu, 15 Jan 2026 18:16:23 +0700 Subject: [PATCH] fixing api closing sapronak and data produksi --- internal/modules/closings/dto/closing.dto.go | 8 ++--- .../repositories/closing.repository.go | 8 ++--- .../closings/services/closing.service.go | 33 +++++++++++-------- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/internal/modules/closings/dto/closing.dto.go b/internal/modules/closings/dto/closing.dto.go index 470f506d..1c191d29 100644 --- a/internal/modules/closings/dto/closing.dto.go +++ b/internal/modules/closings/dto/closing.dto.go @@ -111,13 +111,13 @@ type ClosingPerformanceDTO struct { FeedIntake float64 `json:"feed_intake"` FeedIntakeStd float64 `json:"feed_intake_std"` HenDayAct *float64 `json:"hen_day_act,omitempty"` - HendayStd *float64 `json:"hen_day_std,omitempty"` + HendayStd float64 `json:"hen_day_std"` EggMass *float64 `json:"egg_mass,omitempty"` - EggMassStd *float64 `json:"egg_mass_std,omitempty"` + EggMassStd float64 `json:"egg_mass_std"` EggWeight *float64 `json:"egg_weight,omitempty"` - EggWeightStd *float64 `json:"egg_weight_std,omitempty"` + EggWeightStd float64 `json:"egg_weight_std"` HenHouseAct *float64 `json:"hen_housed_act,omitempty"` - HenHouseStd *float64 `json:"hen_housed_std,omitempty"` + HenHouseStd float64 `json:"hen_housed_std"` } type ClosingSalesGroupDTO struct { diff --git a/internal/modules/closings/repositories/closing.repository.go b/internal/modules/closings/repositories/closing.repository.go index 2ce3e496..30d29b14 100644 --- a/internal/modules/closings/repositories/closing.repository.go +++ b/internal/modules/closings/repositories/closing.repository.go @@ -473,8 +473,8 @@ SELECT WHERE f.flagable_type = 'products' AND f.flagable_id = prod.id ), '') AS product_sub_category, COALESCE(fw.name, '') AS source_warehouse, - '' AS destination_warehouse, - COALESCE(tw.name, '') AS destination, + COALESCE(tw.name, '') AS destination_warehouse, + '' AS destination, std.usage_qty AS quantity, u.name AS unit, 'Transfer to other unit' AS notes @@ -522,8 +522,8 @@ SELECT WHERE f.flagable_type = 'products' AND f.flagable_id = prod.id ), '') AS product_sub_category, w.name AS source_warehouse, - '' AS destination_warehouse, - 'RETAIL CUSTOMER' AS destination, + 'RETAIL CUSTOMER' AS destination_warehouse, + '' AS destination, mp.qty AS quantity, u.name AS unit, m.notes AS notes diff --git a/internal/modules/closings/services/closing.service.go b/internal/modules/closings/services/closing.service.go index 38529b0d..6b0b56f6 100644 --- a/internal/modules/closings/services/closing.service.go +++ b/internal/modules/closings/services/closing.service.go @@ -337,8 +337,10 @@ func (s closingService) GetClosingSapronak(c *fiber.Ctx, projectFlockID uint, pa } var projectFlockKandangIDs []uint - if params.Type == validation.SapronakTypeOutgoing { - projectFlockKandangIDs, err = s.getProjectFlockKandangIDs(c.Context(), projectFlockID, params.KandangID) + if params.KandangID != nil && *params.KandangID > 0 { + projectFlockKandangIDs = []uint{*params.KandangID} + } else if params.Type == validation.SapronakTypeOutgoing { + projectFlockKandangIDs, err = s.getProjectFlockKandangIDs(c.Context(), projectFlockID) if err != nil { s.Log.Errorf("Failed to fetch project flock kandang IDs for project flock %d: %+v", projectFlockID, err) return nil, 0, fiber.NewError(fiber.StatusInternalServerError, "Failed to fetch project flock kandang") @@ -418,14 +420,11 @@ func (s closingService) getWarehouseIDsByProjectFlock(ctx context.Context, proje return ids, nil } -func (s closingService) getProjectFlockKandangIDs(ctx context.Context, projectFlockID uint, kandangID *uint) ([]uint, error) { +func (s closingService) getProjectFlockKandangIDs(ctx context.Context, projectFlockID uint) ([]uint, error) { var ids []uint query := s.Repository.DB().WithContext(ctx). Model(&entity.ProjectFlockKandang{}). Where("project_flock_id = ?", projectFlockID) - if kandangID != nil { - query = query.Where("kandang_id = ?", *kandangID) - } err := query.Order("id ASC").Pluck("id", &ids).Error if err != nil { return nil, err @@ -690,10 +689,16 @@ func (s closingService) GetClosingDataProduksi(c *fiber.Ctx, projectFlockID uint return nil, fiber.NewError(fiber.StatusBadRequest, "Invalid project flock id") } - projectFlockKandangIDs, err := s.getProjectFlockKandangIDs(c.Context(), projectFlockID, kandangID) - if err != nil { - s.Log.Errorf("Failed to fetch project flock kandangs for %d: %+v", projectFlockID, err) - return nil, fiber.NewError(fiber.StatusInternalServerError, "Failed to fetch project flock kandangs") + var projectFlockKandangIDs []uint + if kandangID != nil && *kandangID > 0 { + projectFlockKandangIDs = []uint{*kandangID} + } else { + var err error + projectFlockKandangIDs, err = s.getProjectFlockKandangIDs(c.Context(), projectFlockID) + if err != nil { + s.Log.Errorf("Failed to fetch project flock kandangs for %d: %+v", projectFlockID, err) + return nil, fiber.NewError(fiber.StatusInternalServerError, "Failed to fetch project flock kandangs") + } } if len(projectFlockKandangIDs) == 0 { @@ -954,16 +959,16 @@ func (s closingService) GetClosingDataProduksi(c *fiber.Ctx, projectFlockID uint } if !isGrowing { if productionStandardDetail.TargetHenDayProduction != nil { - performance.HendayStd = productionStandardDetail.TargetHenDayProduction + performance.HendayStd = *productionStandardDetail.TargetHenDayProduction } if productionStandardDetail.TargetHenHouseProduction != nil { - performance.HenHouseStd = productionStandardDetail.TargetHenHouseProduction + performance.HenHouseStd = *productionStandardDetail.TargetHenHouseProduction } if productionStandardDetail.TargetEggWeight != nil { - performance.EggWeightStd = productionStandardDetail.TargetEggWeight + performance.EggWeightStd = *productionStandardDetail.TargetEggWeight } if productionStandardDetail.TargetEggMass != nil { - performance.EggMassStd = productionStandardDetail.TargetEggMass + performance.EggMassStd = *productionStandardDetail.TargetEggMass } } }