From eae158f8d95df5f49c4e36d5b9ad00b62dbad9ec Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期一, 29 七月 2024 21:51:47 +0800 Subject: [PATCH] 产品库存增加多单位存储,完成出入库操作时更改多单位剩余数量 --- service/operation.go | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) diff --git a/service/operation.go b/service/operation.go index 6c9fa72..514bdc8 100644 --- a/service/operation.go +++ b/service/operation.go @@ -125,6 +125,7 @@ var details []*models.OperationDetails for k, v := range listDetails { listDetails[k].Product.Amount = listDetails[k].Product.Amount.Add(v.Amount) + listDetails[k].Product.MoreUnitList = AddMoreUnit(listDetails[k].Product.MoreUnitList, v.MoreUnitList) if err := tx.Save(&listDetails[k].Product).Error; err != nil { return err } @@ -133,6 +134,7 @@ detail := &models.OperationDetails{ ProductId: v.ProductId, Amount: v.Amount, + MoreUnitList: v.MoreUnitList, FromLocationID: roleProduct.AreaId, ToLocationID: roleProduct.LocationId, } @@ -140,6 +142,7 @@ if locAmount, aok := mapLocAmount[strconv.Itoa(roleProduct.LocationId)+v.ProductId]; aok { locAmount.Amount = locAmount.Amount.Add(v.Amount) + locAmount.MoreUnitList = AddMoreUnit(locAmount.MoreUnitList, v.MoreUnitList) if err := models.NewLocationProductAmountSearch().SetOrm(tx).SetID(int(locAmount.ID)).Save(locAmount); err != nil { return err } @@ -149,6 +152,7 @@ ProductCategoryID: v.Product.CategoryId, ProductId: v.ProductId, Amount: v.Amount, + MoreUnitList: v.MoreUnitList, CreateDate: time.Now().Format("2006-01-02 15:04:05"), WarehouseId: operation.WarehouseId, }); err != nil { @@ -160,6 +164,7 @@ detail := &models.OperationDetails{ ProductId: v.ProductId, Amount: v.Amount, + MoreUnitList: v.MoreUnitList, FromLocationID: roleCategory.AreaId, ToLocationID: roleCategory.LocationId, } @@ -167,6 +172,7 @@ if locAmount, aok := mapLocAmount[strconv.Itoa(roleCategory.LocationId)+v.ProductId]; aok { locAmount.Amount = locAmount.Amount.Add(v.Amount) + locAmount.MoreUnitList = AddMoreUnit(locAmount.MoreUnitList, v.MoreUnitList) if err := models.NewLocationProductAmountSearch().SetOrm(tx).SetID(int(locAmount.ID)).Save(locAmount); err != nil { return err } @@ -176,6 +182,7 @@ ProductCategoryID: v.Product.CategoryId, ProductId: v.ProductId, Amount: v.Amount, + MoreUnitList: v.MoreUnitList, CreateDate: time.Now().Format("2006-01-02 15:04:05"), WarehouseId: operation.WarehouseId, }); err != nil { @@ -185,6 +192,7 @@ } else { if locAmount, aok := mapLocAmount[strconv.Itoa(v.ToLocationID)+v.ProductId]; aok { locAmount.Amount = locAmount.Amount.Add(v.Amount) + locAmount.MoreUnitList = AddMoreUnit(locAmount.MoreUnitList, v.MoreUnitList) locAmount.ID = uint(locAmount.Id) if err := models.NewLocationProductAmountSearch().SetOrm(tx).SetID(int(locAmount.ID)).Save(locAmount); err != nil { return err @@ -195,6 +203,7 @@ ProductCategoryID: v.Product.CategoryId, ProductId: v.ProductId, Amount: v.Amount, + MoreUnitList: v.MoreUnitList, CreateDate: time.Now().Format("2006-01-02 15:04:05"), WarehouseId: operation.WarehouseId, }); err != nil { @@ -236,6 +245,9 @@ if v.Product.Amount.LessThan(v.Amount) { return errors.New(fmt.Sprintf("浜у搧锛�%v,搴撳瓨锛�%v,鍑哄簱锛�%v,鏁伴噺涓嶅锛屾棤娉曞畬鎴愬嚭搴撴搷浣�", v.Product.Name, v.Product.Amount.String(), v.Amount.String())) } + if !MoreUnitIsEnough(v.Product.MoreUnitList, v.MoreUnitList) { + return errors.New(fmt.Sprintf("浜у搧锛�%v, 澶氬崟浣嶆暟閲忎笉澶燂紝鏃犳硶瀹屾垚鍑哄簱鎿嶄綔", v.Product.Name)) + } listDetails[k].Product.Amount = listDetails[k].Product.Amount.Sub(v.Amount) if err := models.NewMaterialSearch().SetOrm(tx).Save(&listDetails[k].Product); err != nil { return err @@ -245,7 +257,11 @@ if locAmount.Amount.LessThan(v.Amount) { return errors.New(fmt.Sprintf("浜у搧锛�%v,搴撳瓨锛�%v,鍑哄簱锛�%v,鏁伴噺涓嶅锛屾棤娉曞畬鎴愬嚭搴撴搷浣�", v.Product.Name, locAmount.Amount.String(), v.Amount.String())) } + if !MoreUnitIsEnough(locAmount.MoreUnitList, v.MoreUnitList) { + return errors.New(fmt.Sprintf("浜у搧锛�%v, 澶氬崟浣嶆暟閲忎笉澶燂紝鏃犳硶瀹屾垚鍑哄簱鎿嶄綔", v.Product.Name)) + } locAmount.Amount = locAmount.Amount.Sub(v.Amount) + locAmount.MoreUnitList = SubMoreUnit(locAmount.MoreUnitList, v.MoreUnitList) if err := models.NewLocationProductAmountSearch().SetOrm(tx).SetID(locAmount.Id).Save(locAmount); err != nil { return err } @@ -293,6 +309,8 @@ outputDetails = append(outputDetails, &models.OperationDetails{ ProductId: v.ProductId, Amount: v.Amount, + MoreUnitList: v.MoreUnitList, + DealerType: v.DealerType, FromLocationID: v.FromLocationID, ToLocationID: v.ToLocationID, TotalGrossWeight: v.TotalGrossWeight, -- Gitblit v1.8.0