From abd87801916aadd759f222685b6c873a8b892c84 Mon Sep 17 00:00:00 2001 From: Habib Fatkhul Rohman Date: Wed, 10 Dec 2025 14:22:23 +0700 Subject: [PATCH] feat: update InventoryMovement entity and service to use non-pointer UUIDs for location and zone fields --- .../entities/t_inventory_movement_entity.go | 14 +++---- .../service/inventory_movement_service.go | 42 +++++++++++-------- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/database/entities/t_inventory_movement_entity.go b/database/entities/t_inventory_movement_entity.go index 7ad4978..def5e6c 100644 --- a/database/entities/t_inventory_movement_entity.go +++ b/database/entities/t_inventory_movement_entity.go @@ -16,13 +16,13 @@ type TInventoryMovementEntity struct { MovementType string `gorm:"type:varchar(50);" json:"movement_type"` Status string `gorm:"type:varchar(50);default:'draft'" json:"status"` - ClientID uuid.UUID `gorm:"type:uuid;index;" json:"client_id"` - SourceLocationID *uuid.UUID `gorm:"type:uuid;index;" json:"source_location_id"` - DestinationLocationID *uuid.UUID `gorm:"type:uuid;index;" json:"destination_location_id"` - SourceZoneID *uuid.UUID `gorm:"type:uuid;index;" json:"source_zone_id"` - DestinationZoneID *uuid.UUID `gorm:"type:uuid;index;" json:"destination_zone_id"` - SourceAisleID *uuid.UUID `gorm:"type:uuid;index;" json:"source_aisle_id"` - DestinationAisleID *uuid.UUID `gorm:"type:uuid;index;" json:"destination_aisle_id"` + ClientID uuid.UUID `gorm:"type:uuid;index;" json:"client_id"` + SourceLocationID uuid.UUID `gorm:"type:uuid;index;" json:"source_location_id"` + DestinationLocationID uuid.UUID `gorm:"type:uuid;index;" json:"destination_location_id"` + SourceZoneID uuid.UUID `gorm:"type:uuid;index;" json:"source_zone_id"` + DestinationZoneID uuid.UUID `gorm:"type:uuid;index;" json:"destination_zone_id"` + SourceAisleID uuid.UUID `gorm:"type:uuid;index;" json:"source_aisle_id"` + DestinationAisleID uuid.UUID `gorm:"type:uuid;index;" json:"destination_aisle_id"` MovementLines []TInventoryMovementLineEntity `gorm:"foreignKey:InvMovementID;references:ID"` SourceLocation MWarehouseEntity `gorm:"foreignKey:SourceLocationID;references:ID"` diff --git a/modules/inventory_movement/service/inventory_movement_service.go b/modules/inventory_movement/service/inventory_movement_service.go index a354546..a0e72fe 100644 --- a/modules/inventory_movement/service/inventory_movement_service.go +++ b/modules/inventory_movement/service/inventory_movement_service.go @@ -78,23 +78,25 @@ func (s *inventoryMovementService) Create(ctx context.Context, req dtodomain.Inv tx.Rollback() return dtodomain.InventoryMovementResponse{}, err } - var sourceLocID *uuid.UUID - if req.SourceLocationID != nil && *req.SourceLocationID != "" { - parsed, err := uuid.Parse(*req.SourceLocationID) - if err != nil { - tx.Rollback() - return dtodomain.InventoryMovementResponse{}, err - } - sourceLocID = &parsed + + var sourceLocationID, destinationLocationID, sourceZoneID, destinationZoneID, sourceAisleID, destinationAisleID uuid.UUID + if req.SourceLocationID != nil { + sourceLocationID = uuid.MustParse(*req.SourceLocationID) } - var destLocID *uuid.UUID - if req.DestinationLocationID != nil && *req.DestinationLocationID != "" { - parsed, err := uuid.Parse(*req.DestinationLocationID) - if err != nil { - tx.Rollback() - return dtodomain.InventoryMovementResponse{}, err - } - destLocID = &parsed + if req.DestinationLocationID != nil { + destinationLocationID = uuid.MustParse(*req.DestinationLocationID) + } + if req.SourceZoneID != nil { + sourceZoneID = uuid.MustParse(*req.SourceZoneID) + } + if req.DestinationZoneID != nil { + destinationZoneID = uuid.MustParse(*req.DestinationZoneID) + } + if req.SourceAisleID != nil { + sourceAisleID = uuid.MustParse(*req.SourceAisleID) + } + if req.DestinationAisleID != nil { + destinationAisleID = uuid.MustParse(*req.DestinationAisleID) } movement := entities.TInventoryMovementEntity{ @@ -103,8 +105,12 @@ func (s *inventoryMovementService) Create(ctx context.Context, req dtodomain.Inv MovementType: req.MovementType, ClientID: clientUUID, Status: req.Status, - SourceLocationID: sourceLocID, - DestinationLocationID: destLocID, + SourceLocationID: sourceLocationID, + DestinationLocationID: destinationLocationID, + SourceZoneID: sourceZoneID, + DestinationZoneID: destinationZoneID, + SourceAisleID: sourceAisleID, + DestinationAisleID: destinationAisleID, FullAuditTrail: utils.FillAuditTrail(ctx, constants.CREATE), } created, err := s.movementRepo.Create(ctx, tx, movement)