CREATE proc [dbo].[GetPriceNew] ( @FMaterID nvarchar(50) ,--物料ID @FDATE date,--日期 @Fprice decimal(28,10) out,--单价 @FDATEO nvarchar(50) out, --备注 @FAmount decimal(28,10) out,--金额 @FQTY decimal(28,10) out,--数量 @FStockId nvarchar(1000) ) as begin DECLARE @FNUMBER nvarchar(50) DECLARE @ChildFMATERIALID nvarchar(50) DECLARE @Fprice1 decimal(28,10) DECLARE @FDATEO1 nvarchar(50) DECLARE @FAmount1 decimal(28,10) DECLARE @FQTY1 nvarchar(50) DECLARE @F_QNV_Combo nvarchar(50)--是否水表 --数量 select @FNUMBER= FNUMBER from T_BD_MATERIAL where FMATERIALID= @FMaterID select @F_QNV_Combo= F_QNV_Combo from T_BD_MATERIAL where FMATERIALID= @FMaterID set @Fprice1=0 exec GetSalePriceNEW @FDATE,@FMaterID,@Fprice1 out,@FDATEO1 out ,@FAmount1 out ,@FQTY1 out,@FStockId --获取结存单价 if(@Fprice1<>0)--有结存单价 begin set @Fprice=@Fprice1 set @FDATEO=@FDATEO1 set @FAmount=@FAmount1 set @FQTY=@FQTY1 return @Fprice end else --没有结存 begin IF(@F_QNV_Combo<>1) begin exec GetHTPrice @FNUMBER,@Fprice1 output,@FDATEO1 out set @Fprice=@Fprice1 if (@Fprice<>0) begin set @FDATEO='取合同价,合同号为:' +@FDATEO1 end else begin set @FDATEO='没有找到价格' end set @FAmount=0 set @FQTY=0 return end ELSE BEGIN set @ChildFMATERIALID=0 SELECT ChildFMATERIALID = ISNULL(c.FMATERIALID, 0) from T_ENG_BOM a inner join T_ENG_BOMCHILD b on a.FID=b.FID inner join T_BD_MATERIAL c on b.FMATERIALID=c.FMATERIALID where a.FMATERIALID=@FMaterID AND c.F_QNV_COMBO<>1 IF ChildFMATERIALID != 0 BEGIN -- select @ChildFMATERIALID= c.FMATERIALID from T_ENG_BOM a -- inner join T_ENG_BOMCHILD b on a.FID=b.FID -- inner join T_BD_MATERIAL c on b.FMATERIALID=c.FMATERIALID -- where a.FMATERIALID=@FMaterID EXEC [GetPriceNew] @ChildFMATERIALID,@FDATE ,@Fprice output ,@FDATEO output , @FAmount output,@FQTY1 output,@FStockId return END ELSE BEGIN set @Fprice=0 set @FDATEO='物料'+@FNUMBER+'没有找到对应的BOM!' set @FAmount=0 set @FQTY=0 return END END end end