jiangshuai
2023-09-28 f1cf23864cf5fddfb307ffcadf9f2e4b33b5f8ae
controllers/location_product_amount.go
@@ -71,7 +71,7 @@
   if params.Page*params.PageSize > 0 {
      search.Orm = search.Orm.Offset((params.Page - 1) * params.PageSize).Limit(params.PageSize)
   }
   if err := search.Orm.Find(&records).Error; err != nil {
   if err := search.Orm.Order("wms_operation.created_at desc").Find(&records).Error; err != nil {
      util.ResponseFormat(c, code.RequestError, fmt.Errorf("find count err: %v", err))
      return
   }
@@ -124,6 +124,11 @@
      util.ResponseFormat(c, code.RequestError, "不存在该上架规则,无法进行库存盘点")
      return
   }
   existAmount, err := models.NewLocationProductAmountSearch().SetLocationProductId(locProduct.Id).First()
   if err != nil {
      util.ResponseFormat(c, code.RequestError, err.Error())
      return
   }
   location, err := models.NewLocationSearch().SetType(int(constvar.LocationTypeAdjust)).First()
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, err.Error())
@@ -131,11 +136,15 @@
   }
   //reqParams.AdjustAmount = reqParams.Amount.Sub(reqParams.DifferenceAmount)
   reqParams.AdjustAmount = reqParams.DifferenceAmount.Sub(reqParams.Amount)
   locAmount := models.LocationProductAmount{
      LocationProductId: locProduct.Id,
      Amount:            decimal.NewFromInt(0),
      CreateDate:        time.Now().Format("2006-01-02 15:04:05"),
   var locAmount models.LocationProductAmount
   if existAmount.Id == 0 {
      locAmount = models.LocationProductAmount{
         LocationProductId: locProduct.Id,
         Amount:            decimal.NewFromInt(0),
         CreateDate:        time.Now().Format("2006-01-02 15:04:05"),
      }
   }
   detail := &models.OperationDetails{
      ProductId: reqParams.ProductId,
      Amount:    reqParams.AdjustAmount,
@@ -151,20 +160,14 @@
      ToLocationID:      reqParams.LocationId,
   }
   //if reqParams.AdjustAmount.GreaterThanOrEqual(decimal.NewFromInt(0)) {
   //   operation.FromLocationID = Location.Id
   //   operation.ToLocationID = reqParams.LocationId
   //} else {
   //   operation.FromLocationID = reqParams.LocationId
   //   operation.ToLocationID = Location.Id
   //}
   if err := models.WithTransaction(func(tx *gorm.DB) error {
      if err := models.NewOperationSearch().SetOrm(tx).Create(&operation); err != nil {
         return err
      }
      if err := models.NewLocationProductAmountSearch().SetOrm(tx).Create(&locAmount); err != nil {
         return err
      if existAmount.Id == 0 {
         if err := models.NewLocationProductAmountSearch().SetOrm(tx).Create(&locAmount); err != nil {
            return err
         }
      }
      return nil
   }); err != nil {