Files
GateDge2023_ljy/02.珠海市供水有限公司/ZHSW/STK_MisDelivery/sql/GetSalePriceNew.sql

74 lines
2.4 KiB
MySQL
Raw Normal View History

2024-04-10 10:39:04 +08:00
CREATE PROC [dbo].[GetSalePriceNew]
(
@FDate date,
@FMaterID int,
@Fprice decimal(28,10) out,
@FDateO nvarchar(50) out,
@FAmount decimal(28,10) out,--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@FQTY decimal(28,10) out ,--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
@FStockId nvarchar(1000)
)
as
begin
--declare @FDate date,
--@FMaterID int,
--@Fprice decimal(28,10) ,
--@FDateO nvarchar(50) ,
--@FAmount decimal(28,10) ,--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--@FQTY decimal(28,10) ,--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
--@FStockId nvarchar(1000)
--SET @FDate = ''
--SET @FMaterID = 0
--SET @FStockId = 0
--exec GetSalePriceNew @FDate , @FMaterID ,@Fprice out , @FDateO out ,@FAmount out,@FQTY out ,@FStockId
--SELECT @FDate,@FMaterID,@Fprice,@FDateO,@FAmount,@FQTY,@FStockId
declare @Fyear int
declare @Fmonth int
declare @FNumber nvarchar(100)
SELECT @FNumber= fnumber FROM T_BD_MATERIAL WHERE FMATERIALID=@FMaterID
SELECT TOP 1
@Fyear = FYEAR
,@Fmonth = FPERIOD
,@FAMOUNT = sum(FAMOUNT)
,@FQty = sum(FQTY)
,@Fprice = CASE WHEN @FQty<>0 THEN ROUND( @FAMOUNT/@FQty,6) ELSE 0 END
,@FDateO= CONVERT(nvarchar(10),FYEAR)+'.'+CONVERT(nvarchar(10),FPERIOD)
FROM
(
SELECT a.FNUMBER,THO.FYEAR ,THO.FPERIOD,THIB.FAMOUNT,THIB.FQTY
FROM T_HS_INIVSTOCKDIMENSION THS --<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_HS_INIVBALANCE THIB --<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD>
ON (THS.FENTRYID = THIB.FDIMEENTRYID AND THIB.FENDINITKEY = '0')
INNER JOIN T_HS_OUTACCTG THO ON THIB.FID = THO.FID
INNER JOIN T_HS_CALDIMENSIONS TCH ON TCH.FDIMENSIONID = THO.FDIMENSIONID
INNER JOIN T_BD_MATERIAL a ON a.FMATERIALID=THS.FMATERIALID
WHERE
((TCH.FACCTSYSTEMID = 1 AND TCH.FACCTPOLICYID = 1)
AND THS.FSTOCKORGID = 101542)
AND a.FNUMBER=@FNumber
AND @FStockId = THS.FSTOCKID
UNION ALL
SELECT a.FNUMBER, THO.FYEAR ,THO.FPERIOD, THIB.FAMOUNT ,THIB.FQTY
FROM T_HS_INIVSTOCKDIMENSION THS --<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_HS_INIVBALANCE_H THIB --<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD>
ON (THS.FENTRYID = THIB.FDIMEENTRYID AND THIB.FENDINITKEY = '0')
INNER JOIN T_HS_OUTACCTG THO ON THIB.FID = THO.FID
INNER JOIN T_HS_CALDIMENSIONS TCH ON TCH.FDIMENSIONID = THO.FDIMENSIONID
INNER JOIN T_BD_MATERIAL a ON a.FMATERIALID=THS.FMATERIALID
WHERE
((TCH.FACCTSYSTEMID = 1 AND TCH.FACCTPOLICYID = 1) AND THS.FSTOCKORGID = 101542)
AND a.FNUMBER = @FNumber
AND @FStockId = THS.fstockid
) t
GROUP BY FYEAR ,FPERIOD
HAVING FYEAR*100 + FPERIOD <= year(@FDate) * 100 + MONTH(@FDate) AND sum(FQTY) >0
ORDER BY FYEAR DESC , FPERIOD DESC
RETURN
END