jiangshuai
2023-11-13 f16252d8b4736a0212b14a2bfb0eeee411d0cc76
proto/product_inventory/server.go
@@ -17,9 +17,12 @@
}
type ProductAndLocationInfo struct {
   ProductId  string          `json:"productId"`
   Amount     decimal.Decimal `json:"amount"`
   LocationId int             `json:"locationId"`
   ProductId     string          `json:"productId"`
   Amount        decimal.Decimal `json:"amount"`
   LocationId    int             `json:"locationId"`
   Number        string          `json:"number"`
   WaybillNumber string          `json:"waybillNumber"`
   Name          string          `json:"name"`
}
func (s *Server) GetInventoryProductInfo(ctx context.Context, req *GetInventoryProductInfoRequest) (*GetInventoryProductInfoResponse, error) {
@@ -31,8 +34,10 @@
   var productIds []string
   resp := new(GetInventoryProductInfoResponse)
   err := models.NewOperationDetailsSearch().Orm.Model(&models.OperationDetails{}).
      Select("wms_operation_details.product_id,wms_operation_details.amount,wms_operation.from_location_id as location_id").
      Select("wms_operation_details.product_id,wms_operation_details.amount,wms_operation.from_location_id as location_id,"+
         "wms_operation.number,wms_operation.waybill_number, logistic_company.name").
      Joins("left join wms_operation on wms_operation.id = wms_operation_details.operation_id").
      Joins("left join logistic_company on logistic_company.id = wms_operation.logistic_company_id").
      Where("wms_operation.source_number = ?", req.Number).Find(&details).Error
   if err != nil {
      return nil, err
@@ -88,7 +93,7 @@
      Joins("left join wms_operation on wms_operation_details.operation_id = wms_operation.id").
      Where("wms_operation_details.product_id in (?)", productIds).
      Where("wms_operation.from_location_id in (?)", locationIds).Where("wms_operation.status = ?", constvar.OperationStatus_Ready).
      Where("wms_operation.base_operation_type in (?)", []constvar.BaseOperationType{constvar.BaseOperationTypeOutgoing, constvar.BaseOperationTypeInternal}).
      Where("wms_operation.base_operation_type in (?)", []constvar.BaseOperationType{constvar.BaseOperationTypeOutgoing, constvar.BaseOperationTypeInternal, constvar.BaseOperationTypeDisuse}).
      Find(&canUse).Error
   if err != nil {
      return nil, err
@@ -102,6 +107,9 @@
         if material.ID == detail.ProductId {
            p.OrderAmount = detail.Amount.String()
            p.Valorem = detail.Amount.Mul(material.SalePrice).String()
            p.Invoice = detail.Number
            p.Carrier = detail.Name
            p.Waybill = detail.WaybillNumber
            break
         }
      }
@@ -121,6 +129,7 @@
            cu = cu.Add(info.Amount)
         }
      }
      cu = at.Sub(cu)
      p.AvailableNumber = cu.String()
      products = append(products, &p)