From b243875e653a35649dc7090203d640cba9b814fd Mon Sep 17 00:00:00 2001
From: yinbentan <yinbentan@live.com>
Date: 星期六, 06 七月 2024 16:50:39 +0800
Subject: [PATCH] 未选仓库的时候统计产品数量错误bug修复

---
 service/operation.go |   29 ++++++++++++++++++++++-------
 1 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/service/operation.go b/service/operation.go
index c5af300..4895c34 100644
--- a/service/operation.go
+++ b/service/operation.go
@@ -261,7 +261,7 @@
 		}
 	}
 	if len(internalInputDetails) > 0 {
-		opTypeId, err := GetTargetOperationTypeIdByOperation(originOperation, constvar.BaseOperationTypeIncoming)
+		opTypeId, err := GetTargetOperationTypeIdByWarehouseId(originOperation.ToLocation.WarehouseId, constvar.BaseOperationTypeIncoming)
 		if err != nil {
 			return err
 		}
@@ -273,8 +273,10 @@
 			Comment:           "搴撳瓨璋冩嫧鍏ュ簱",
 			BaseOperationType: constvar.BaseOperationTypeIncoming,
 			Details:           internalInputDetails,
-			LocationID:        internalInputDetails[0].ToLocationID,
+			LocationID:        originOperation.LocationID,
+			ToLocationID:      originOperation.ToLocationID,
 			OperationTypeName: "搴撳瓨璋冩嫧鍏ュ簱",
+			WarehouseId:       originOperation.ToLocation.WarehouseId,
 		}
 		if err := models.NewOperationSearch().SetOrm(tx).Create(operation); err != nil {
 			return err
@@ -316,9 +318,11 @@
 			Comment:           "搴撳瓨璋冩嫧鍑哄簱",
 			BaseOperationType: constvar.BaseOperationTypeOutgoing,
 			Details:           outputDetails,
-			LocationID:        outputDetails[0].FromLocationID,
+			LocationID:        originOperation.LocationID,
+			ToLocationID:      originOperation.ToLocationID,
 			OperationTypeName: "搴撳瓨璋冩嫧鍑哄簱",
 			IsInternalOutput:  true,
+			WarehouseId:       originOperation.WarehouseId,
 		}
 		if err := models.NewOperationSearch().SetOrm(tx).Create(operation); err != nil {
 			return err
@@ -342,8 +346,8 @@
 				inputDetails = append(inputDetails, &models.OperationDetails{
 					ProductId:        v.ProductId,
 					Amount:           v.Amount.Sub(v.StockAmount),
-					FromLocationID:   v.FromLocationID,
-					ToLocationID:     v.ToLocationID,
+					FromLocationID:   0,
+					ToLocationID:     v.FromLocationID,
 					TotalGrossWeight: v.TotalGrossWeight,
 					TotalNetWeight:   v.TotalNetWeight,
 					AuxiliaryAmount:  v.AuxiliaryAmount,
@@ -356,8 +360,8 @@
 				outputDetails = append(outputDetails, &models.OperationDetails{
 					ProductId:        v.ProductId,
 					Amount:           v.StockAmount.Sub(v.Amount),
-					FromLocationID:   v.ToLocationID,
-					ToLocationID:     v.FromLocationID,
+					FromLocationID:   v.FromLocationID,
+					ToLocationID:     0,
 					TotalGrossWeight: v.TotalGrossWeight,
 					TotalNetWeight:   v.TotalNetWeight,
 					AuxiliaryAmount:  v.AuxiliaryAmount,
@@ -430,3 +434,14 @@
 	}
 	return targetOT.Id, nil
 }
+
+func GetTargetOperationTypeIdByWarehouseId(warehouseId int, baseOT constvar.BaseOperationType) (operationTypeId int, err error) {
+	if warehouseId == 0 {
+		return 0, errors.New("warehouseId miss")
+	}
+	targetOT, err := models.NewOperationTypeSearch().SetBaseOperationType(baseOT).SetWarehouseId(warehouseId).First()
+	if err != nil {
+		return 0, err
+	}
+	return targetOT.Id, nil
+}

--
Gitblit v1.8.0