jiangshuai
2023-10-26 be19d957b591ad27a47057929c4a8694f0776a1a
controllers/product_controller.go
@@ -475,19 +475,35 @@
            if err := tx.Save(listProdt[k]).Error; err != nil {
               return err
            }
            var locAmount models.LocationProductAmount
            if err := models.NewLocationProductAmountSearch().Orm.
               Table("wms_location_product_amount").
               Joins("inner join wms_location_product on wms_location_product.id=wms_location_product_amount.location_product_id").
               Where("wms_location_product.product_id=? and wms_location_product.location_id=?", v.ID, operation.FromLocationID).
               First(&locAmount).Error; err != nil {
            //var locAmount models.LocationProductAmount
            //if err := models.NewLocationProductAmountSearch().Orm.
            //   Table("wms_location_product_amount").
            //   Joins("inner join wms_location_product on wms_location_product.id=wms_location_product_amount.location_product_id").
            //   Where("wms_location_product.product_id=? and wms_location_product.location_id=?", v.ID, operation.FromLocationID).
            //   First(&locAmount).Error; err != nil {
            //   return err
            //}
            //if locAmount.Amount.LessThan(value) {
            //   return errors.New(fmt.Sprintf("产品:%v,库存:%v,出库:%v,数量不够,无法完成出库操作", v.Name, v.Amount.String(), value.String()))
            //}
            //locAmount.Amount = locAmount.Amount.Sub(value)
            //if err := models.NewLocationProductAmountSearch().SetID(locAmount.Id).Update(&locAmount); err != nil {
            //   return err
            //}
            locAmount, res := models.NewLocationProductAmountSearch().
               SetProductId(v.ID).
               SetLocationId(operation.ToLocationID).
               FirstRes()
            if res.Error != nil {
               return err
            }
            if locAmount.Amount.LessThan(value) {
               return errors.New(fmt.Sprintf("产品:%v,库存:%v,出库:%v,数量不够,无法完成出库操作", v.Name, v.Amount.String(), value.String()))
               return errors.New(fmt.Sprintf("产品:%v,库存:%v,报废:%v,数量不够,无法完成报废操作", v.Name, v.Amount.String(), value.String()))
            }
            locAmount.Amount = locAmount.Amount.Sub(value)
            if err := models.NewLocationProductAmountSearch().SetID(locAmount.Id).Update(&locAmount); err != nil {
            if err := models.NewLocationProductAmountSearch().SetID(locAmount.Id).Update(locAmount); err != nil {
               return err
            }
         }