From b2e70fa6eb204be21c69227cdc3b0ac46da91ca3 Mon Sep 17 00:00:00 2001 From: ragilap Date: Sat, 14 Mar 2026 15:39:09 +0700 Subject: [PATCH] add restrict create/edit/delete depletion --- .../recordings/services/recording.service.go | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/internal/modules/production/recordings/services/recording.service.go b/internal/modules/production/recordings/services/recording.service.go index b7caec6b..7c4c9341 100644 --- a/internal/modules/production/recordings/services/recording.service.go +++ b/internal/modules/production/recordings/services/recording.service.go @@ -324,6 +324,15 @@ func (s *recordingService) CreateOne(c *fiber.Ctx, req *validation.Create) (*ent if err := s.enforceTransferRecordingRoute(ctx, pfk, recordTime, routePayload); err != nil { return nil, err } + if routePayload.DepletionCount > 0 { + if err := s.ensureDepletionMutationAllowed(ctx, &entity.Recording{ + ProjectFlockKandangId: req.ProjectFlockKandangId, + RecordDatetime: recordTime, + ProjectFlockKandang: pfk, + }, "buat"); err != nil { + return nil, err + } + } if err := s.ProjectFlockSvc.EnsureProjectFlockApproved(ctx, pfk.ProjectFlockId); err != nil { return nil, err @@ -1136,7 +1145,7 @@ func (s *recordingService) ensurePopulationMutationAllowed(ctx context.Context, } func (s *recordingService) ensureDepletionMutationAllowed(ctx context.Context, recording *entity.Recording, operation string) error { - if recording == nil || recording.Id == 0 || recording.ProjectFlockKandangId == 0 || s.TransferLayingRepo == nil { + if recording == nil || recording.ProjectFlockKandangId == 0 || s.TransferLayingRepo == nil { return nil } @@ -1177,18 +1186,20 @@ func (s *recordingService) ensureDepletionMutationAllowed(ctx context.Context, r } recordDate := normalizeDateOnlyUTC(recording.RecordDatetime) - physicalMoveDate := transferPhysicalMoveDate(transfer) - if physicalMoveDate.IsZero() || recordDate.Before(physicalMoveDate) { - return nil + transferNumber := strings.TrimSpace(transfer.TransferNumber) + if transferNumber == "" { + transferNumber = "-" } + executedDate := normalizeDateOnlyUTC(*transfer.ExecutedAt) return fiber.NewError( fiber.StatusBadRequest, fmt.Sprintf( - "Deplesi recording tanggal %s tidak dapat di%s karena sudah mempengaruhi transfer laying %s yang sudah dieksekusi. Lakukan unexecute transfer terlebih dahulu bila belum ada pemakaian downstream.", + "Deplesi recording tanggal %s tidak dapat di%s karena transfer laying %s sudah dieksekusi pada %s. Setelah transfer dieksekusi, mutasi deplesi di kandang growing tidak diizinkan (termasuk backdate).", recordDate.Format("2006-01-02"), operation, - transfer.TransferNumber, + transferNumber, + executedDate.Format("2006-01-02"), ), ) }