From 00837e0da20d0a5071f154347fc97640cfa18764 Mon Sep 17 00:00:00 2001 From: aguhh18 Date: Wed, 22 Oct 2025 22:20:40 +0700 Subject: [PATCH] FIX[BE}: add stock logs for transfer stock --- ...kinDetail.go => project_chickin_detail.go} | 0 .../transfers/services/transfer.service.go | 36 +++++++++++++++++++ 2 files changed, 36 insertions(+) rename internal/entities/{ProjectChickinDetail.go => project_chickin_detail.go} (100%) diff --git a/internal/entities/ProjectChickinDetail.go b/internal/entities/project_chickin_detail.go similarity index 100% rename from internal/entities/ProjectChickinDetail.go rename to internal/entities/project_chickin_detail.go diff --git a/internal/modules/inventory/transfers/services/transfer.service.go b/internal/modules/inventory/transfers/services/transfer.service.go index 90642f6c..dd6c0068 100644 --- a/internal/modules/inventory/transfers/services/transfer.service.go +++ b/internal/modules/inventory/transfers/services/transfer.service.go @@ -266,6 +266,24 @@ func (s *transferService) CreateOne(c *fiber.Ctx, req *validation.TransferReques } s.Log.Infof("Source product warehouse updated: %+v", sourcePW.Id) + // create stock log for decrease (source) + beforeQty := sourcePW.Quantity + product.ProductQty // sourcePW already decreased + decreaseLog := &entity.StockLog{ + TransactionType: entity.TransactionTypeDecrease, + Quantity: product.ProductQty, + BeforeQuantity: beforeQty, + AfterQuantity: sourcePW.Quantity, + LogType: entity.LogTypeTransfer, + LogId: uint(entityTransfer.Id), + Note: "", + ProductWarehouseId: sourcePW.Id, + CreatedBy: 1, + } + if err := s.StockLogsRepository.WithTx(tx).CreateOne(c.Context(), decreaseLog, nil); err != nil { + s.Log.Errorf("Failed to create stock log decrease: %+v", err) + return err + } + // Tambah stok di gudang tujuan destPW, err := s.ProductWarehouseRepo.GetProductWarehouseByProductAndWarehouseID( c.Context(), uint(product.ProductID), uint(req.DestinationWarehouseID), @@ -296,6 +314,24 @@ func (s *transferService) CreateOne(c *fiber.Ctx, req *validation.TransferReques } s.Log.Infof("Destination product warehouse updated: %+v", destPW.Id) + // create stock log for increase (destination) + beforeDestQty := destPW.Quantity - product.ProductQty + increaseLog := &entity.StockLog{ + TransactionType: entity.TransactionTypeIncrease, + Quantity: product.ProductQty, + BeforeQuantity: beforeDestQty, + AfterQuantity: destPW.Quantity, + LogType: entity.LogTypeTransfer, + LogId: uint(entityTransfer.Id), + Note: "", + ProductWarehouseId: destPW.Id, + CreatedBy: 1, + } + if err := s.StockLogsRepository.WithTx(tx).CreateOne(c.Context(), increaseLog, nil); err != nil { + s.Log.Errorf("Failed to create stock log increase: %+v", err) + return err + } + } return nil