--EXEC STOK_YURUYEN '201','01'
IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'STOK_YURUYEN') AND OBJECTPROPERTY(ID, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[STOK_YURUYEN]
GO
CREATE PROC STOK_YURUYEN
(@FIRMA VARCHAR(4),@DONEM VARCHAR(3))
AS
EXEC ('
SET NOCOUNT ON
IF EXISTS(SELECT * FROM tempdb.dbo.sysobjects O
WHERE O.xtype = ''U'' AND O.id = OBJECT_ID(N''tempdb..#GECICITABLO''))
BEGIN
DROP TABLE #GECICITABLO
END
CREATE TABLE #GECICITABLO
(
[Stfıche_Referans] INT,
[Stlıne_Referans] INT,
[Fiş No] VARCHAR(100),
[Fiş Türü] VARCHAR(65),
[Belge No] VARCHAR(100),
[Stfıche Tarıh] SMALLDATETIME,
[Stlıne Tarıh] SMALLDATETIME,
[Ftıme] bigint,
[Stok Kodu] VARCHAR(250),
[Stok Adı] VARCHAR(250),
[Bırım] VARCHAR(15),
[Giriş Çıkış] VARCHAR(20),
[Miktar] DECIMAL(38,2),
[Kalan] DECIMAL(38,2),
[Tutar] DECIMAL(38,2)
)
CREATE CLUSTERED INDEX IX_#GECICITABLO ON #GECICITABLO ([Stok Kodu], [Stlıne Tarıh], [Miktar])
INSERT INTO #GECICITABLO
([Stfıche_Referans],
[Stlıne_Referans],
[Fiş No],
[Fiş Türü],
[Belge No],
[Stfıche Tarıh],
[Stlıne Tarıh],
[Ftıme],
[Stok Kodu],
[Stok Adı],
[Bırım],
[Giriş Çıkış],
[Miktar],
[Kalan],
[Tutar])
SELECT
VEDAT_OZER.[Stfıche_Referans] ,
VEDAT_OZER.[Stlıne_Referans] ,
VEDAT_OZER.[Fiş No],
VEDAT_OZER.[Fiş Türü],
VEDAT_OZER.[Belge No],
VEDAT_OZER.[Stfıche Tarıh],
VEDAT_OZER.[Stlıne Tarıh],
VEDAT_OZER.[Ftıme],
VEDAT_OZER.[Stok Kodu],
VEDAT_OZER.[Stok Adı],
VEDAT_OZER.[Bırım],
VEDAT_OZER.[Giriş Çıkış],
VEDAT_OZER.[Miktar],
VEDAT_OZER.Kalan,
VEDAT_OZER.[Tutar]
FROM (
SELECT
STFICHE.LOGICALREF [STFICHE_REFERANS],
STLINE.LOGICALREF [STLINE_REFERANS],
[Fiş No]=STFICHE.FICHENO,
[Fiş Türü]=CASE STFICHE.TRCODE
WHEN 1 then ''Satınalma İrsaliyesi''
WHEN 2 then ''Perakende Satış İade İrsaliyesi''
WHEN 3 then ''Toptan Satış İade İrsaliyesi''
WHEN 4 then ''Konsinye Çıkış İade İrsaliyesi''
WHEN 5 then ''Konsinye Giriş İrsaliyesi''
WHEN 6 then ''Satınalma İade İrsaliyesi''
WHEN 7 then ''Perakende Satış İrsaliyesi''
WHEN 8 then ''Toptan Satış İrsaliyesi''
WHEN 9 then ''Konsinye Çıkış İrsaliyesi''
WHEN 10 then ''Konsinye Giriş İade İrsaliyesi''
WHEN 11 then ''Fire Fişi''
WHEN 12 then ''Sarf Fişi''
WHEN 13 then ''Üretimden Giriş Fişi''
WHEN 14 then ''Devir Fişi''
WHEN 25 then ''Ambar Fişi''
WHEN 26 then ''Muhtahsil İrsaliyesi''
WHEN 50 then ''Sayım Fazlası Fişi''
WHEN 51 then ''Sayım Eksiği Fişi'' ELSE '''' END,
[Belge No]=STFICHE.DOCODE,
[Stfıche Tarıh]=STFICHE.DATE_,
[Stlıne Tarıh]=STLINE.DATE_,
[Ftıme]=STLINE.FTIME,
[Stok Kodu]=ITEMS.CODE,
[Stok Adı]=ITEMS.NAME,
[Bırım]=BIRIM.CODE,
[Giriş Çıkış]= CASE WHEN STLINE.IOCODE IN(1,2) THEN ''Giriş'' when STLINE.IOCODE IN(3,4) THEN ''Çıkış'' else '''' end,
[Miktar]=(CASE WHEN STLINE.IOCODE IN(1,2) THEN 1 ELSE -1 end) * STLINE.AMOUNT*(CASE WHEN ISNULL(UINFO2,0)=0 THEN 1 ELSE UINFO2 END)/(CASE WHEN ISNULL(UINFO1,0)=0 THEN 1 ELSE UINFO1 END),
null KALAN,
[Tutar]=(CASE WHEN STLINE.IOCODE IN(1,2) THEN 1 ELSE -1 end) * STLINE.VATMATRAH
FROM LG_'+@FIRMA+'_'+@DONEM+'_STFICHE STFICHE WITH (NOLOCK)
LEFT OUTER JOIN LG_'+@FIRMA+'_01_STLINE STLINE WITH (NOLOCK) ON STFICHE.LOGICALREF=STLINE.STFICHEREF
LEFT OUTER JOIN LG_'+@FIRMA+'_ITEMS ITEMS WITH (NOLOCK) ON STLINE.STOCKREF =ITEMS.LOGICALREF
LEFT OUTER JOIN LG_'+@FIRMA+'_UNITSETL BIRIM WITH (NOLOCK) ON BIRIM.UNITSETREF= ITEMS.UNITSETREF AND BIRIM.MAINUNIT=1
WHERE
STFICHE.CANCELLED=0 AND STLINE.CANCELLED=0
AND STLINE.LINETYPE=0
AND STLINE.IOCODE IN (1,2,3,4)
) VEDAT_OZER
DECLARE @STOK_KODU VARCHAR(150),
@YURUYEN DECIMAL(38,2),
@SAYI bigint
;
SELECT @SAYI = 1
;
WITH
CTE AS
(
SELECT SAY = ROW_NUMBER() OVER (ORDER BY [Stok Kodu], [Stlıne Tarıh], [Miktar]),
[Stfıche_Referans] ,
[Stlıne_Referans] ,
[Fiş No],
[Fiş Türü],
[Belge No],
[Stfıche Tarıh],
[Stlıne Tarıh],
[Ftıme],
[Stok Kodu],
[Stok Adı],
[Bırım],
[Giriş Çıkış],
[Miktar],
Kalan,
[Tutar] FROM #GECICITABLO WITH(INDEX=IX_#GECICITABLO)
)
UPDATE tgt
SET @YURUYEN = Kalan = CASE
WHEN tgt.SAY = @SAYI
THEN CASE
WHEN tgt.[Stok Kodu] = @STOK_KODU THEN tgt.Miktar + @YURUYEN
ELSE tgt.Miktar
END
ELSE 0
END,
@STOK_KODU = tgt.[Stok Kodu],
@SAYI = @SAYI + 1
FROM CTE tgt
WITH (TABLOCKX)
OPTION (MAXDOP 1)
SELECT
[Stfıche_Referans] ,
[Stlıne_Referans] ,
[Fiş No],
[Fiş Türü],
[Belge No],
[Stfıche Tarıh],
[Stlıne Tarıh],
RTRIM(CONVERT(char(20), ROUND([Ftıme] / 16777216, 2))) + '':'' + RTRIM(CONVERT(char(20),
ROUND(([Ftıme] - ROUND([Ftıme] / 16777216, 2) * 16777216)/ 65536, 2))) + '':'' + RTRIM(CONVERT(char(20),
ROUND(([Ftıme] - ROUND([Ftıme] / 16777216, 2) * 16777216 - ROUND(([Ftıme] - ROUND([Ftıme] / 16777216, 2) * 16777216) / 65536, 2) * 65536) / 256, 2))) AS Saat,
[Stok Kodu],
[Stok Adı],
[Bırım],
[Giriş Çıkış],
[Miktar],
[Kalan],
[Tutar] FROM #GECICITABLO
ORDER BY [Stok Kodu],[Stlıne Tarıh],[Saat]
;
')
IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'STOK_YURUYEN') AND OBJECTPROPERTY(ID, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[STOK_YURUYEN]
GO
CREATE PROC STOK_YURUYEN
(@FIRMA VARCHAR(4),@DONEM VARCHAR(3))
AS
EXEC ('
SET NOCOUNT ON
IF EXISTS(SELECT * FROM tempdb.dbo.sysobjects O
WHERE O.xtype = ''U'' AND O.id = OBJECT_ID(N''tempdb..#GECICITABLO''))
BEGIN
DROP TABLE #GECICITABLO
END
CREATE TABLE #GECICITABLO
(
[Stfıche_Referans] INT,
[Stlıne_Referans] INT,
[Fiş No] VARCHAR(100),
[Fiş Türü] VARCHAR(65),
[Belge No] VARCHAR(100),
[Stfıche Tarıh] SMALLDATETIME,
[Stlıne Tarıh] SMALLDATETIME,
[Ftıme] bigint,
[Stok Kodu] VARCHAR(250),
[Stok Adı] VARCHAR(250),
[Bırım] VARCHAR(15),
[Giriş Çıkış] VARCHAR(20),
[Miktar] DECIMAL(38,2),
[Kalan] DECIMAL(38,2),
[Tutar] DECIMAL(38,2)
)
CREATE CLUSTERED INDEX IX_#GECICITABLO ON #GECICITABLO ([Stok Kodu], [Stlıne Tarıh], [Miktar])
INSERT INTO #GECICITABLO
([Stfıche_Referans],
[Stlıne_Referans],
[Fiş No],
[Fiş Türü],
[Belge No],
[Stfıche Tarıh],
[Stlıne Tarıh],
[Ftıme],
[Stok Kodu],
[Stok Adı],
[Bırım],
[Giriş Çıkış],
[Miktar],
[Kalan],
[Tutar])
SELECT
VEDAT_OZER.[Stfıche_Referans] ,
VEDAT_OZER.[Stlıne_Referans] ,
VEDAT_OZER.[Fiş No],
VEDAT_OZER.[Fiş Türü],
VEDAT_OZER.[Belge No],
VEDAT_OZER.[Stfıche Tarıh],
VEDAT_OZER.[Stlıne Tarıh],
VEDAT_OZER.[Ftıme],
VEDAT_OZER.[Stok Kodu],
VEDAT_OZER.[Stok Adı],
VEDAT_OZER.[Bırım],
VEDAT_OZER.[Giriş Çıkış],
VEDAT_OZER.[Miktar],
VEDAT_OZER.Kalan,
VEDAT_OZER.[Tutar]
FROM (
SELECT
STFICHE.LOGICALREF [STFICHE_REFERANS],
STLINE.LOGICALREF [STLINE_REFERANS],
[Fiş No]=STFICHE.FICHENO,
[Fiş Türü]=CASE STFICHE.TRCODE
WHEN 1 then ''Satınalma İrsaliyesi''
WHEN 2 then ''Perakende Satış İade İrsaliyesi''
WHEN 3 then ''Toptan Satış İade İrsaliyesi''
WHEN 4 then ''Konsinye Çıkış İade İrsaliyesi''
WHEN 5 then ''Konsinye Giriş İrsaliyesi''
WHEN 6 then ''Satınalma İade İrsaliyesi''
WHEN 7 then ''Perakende Satış İrsaliyesi''
WHEN 8 then ''Toptan Satış İrsaliyesi''
WHEN 9 then ''Konsinye Çıkış İrsaliyesi''
WHEN 10 then ''Konsinye Giriş İade İrsaliyesi''
WHEN 11 then ''Fire Fişi''
WHEN 12 then ''Sarf Fişi''
WHEN 13 then ''Üretimden Giriş Fişi''
WHEN 14 then ''Devir Fişi''
WHEN 25 then ''Ambar Fişi''
WHEN 26 then ''Muhtahsil İrsaliyesi''
WHEN 50 then ''Sayım Fazlası Fişi''
WHEN 51 then ''Sayım Eksiği Fişi'' ELSE '''' END,
[Belge No]=STFICHE.DOCODE,
[Stfıche Tarıh]=STFICHE.DATE_,
[Stlıne Tarıh]=STLINE.DATE_,
[Ftıme]=STLINE.FTIME,
[Stok Kodu]=ITEMS.CODE,
[Stok Adı]=ITEMS.NAME,
[Bırım]=BIRIM.CODE,
[Giriş Çıkış]= CASE WHEN STLINE.IOCODE IN(1,2) THEN ''Giriş'' when STLINE.IOCODE IN(3,4) THEN ''Çıkış'' else '''' end,
[Miktar]=(CASE WHEN STLINE.IOCODE IN(1,2) THEN 1 ELSE -1 end) * STLINE.AMOUNT*(CASE WHEN ISNULL(UINFO2,0)=0 THEN 1 ELSE UINFO2 END)/(CASE WHEN ISNULL(UINFO1,0)=0 THEN 1 ELSE UINFO1 END),
null KALAN,
[Tutar]=(CASE WHEN STLINE.IOCODE IN(1,2) THEN 1 ELSE -1 end) * STLINE.VATMATRAH
FROM LG_'+@FIRMA+'_'+@DONEM+'_STFICHE STFICHE WITH (NOLOCK)
LEFT OUTER JOIN LG_'+@FIRMA+'_01_STLINE STLINE WITH (NOLOCK) ON STFICHE.LOGICALREF=STLINE.STFICHEREF
LEFT OUTER JOIN LG_'+@FIRMA+'_ITEMS ITEMS WITH (NOLOCK) ON STLINE.STOCKREF =ITEMS.LOGICALREF
LEFT OUTER JOIN LG_'+@FIRMA+'_UNITSETL BIRIM WITH (NOLOCK) ON BIRIM.UNITSETREF= ITEMS.UNITSETREF AND BIRIM.MAINUNIT=1
WHERE
STFICHE.CANCELLED=0 AND STLINE.CANCELLED=0
AND STLINE.LINETYPE=0
AND STLINE.IOCODE IN (1,2,3,4)
) VEDAT_OZER
DECLARE @STOK_KODU VARCHAR(150),
@YURUYEN DECIMAL(38,2),
@SAYI bigint
;
SELECT @SAYI = 1
;
WITH
CTE AS
(
SELECT SAY = ROW_NUMBER() OVER (ORDER BY [Stok Kodu], [Stlıne Tarıh], [Miktar]),
[Stfıche_Referans] ,
[Stlıne_Referans] ,
[Fiş No],
[Fiş Türü],
[Belge No],
[Stfıche Tarıh],
[Stlıne Tarıh],
[Ftıme],
[Stok Kodu],
[Stok Adı],
[Bırım],
[Giriş Çıkış],
[Miktar],
Kalan,
[Tutar] FROM #GECICITABLO WITH(INDEX=IX_#GECICITABLO)
)
UPDATE tgt
SET @YURUYEN = Kalan = CASE
WHEN tgt.SAY = @SAYI
THEN CASE
WHEN tgt.[Stok Kodu] = @STOK_KODU THEN tgt.Miktar + @YURUYEN
ELSE tgt.Miktar
END
ELSE 0
END,
@STOK_KODU = tgt.[Stok Kodu],
@SAYI = @SAYI + 1
FROM CTE tgt
WITH (TABLOCKX)
OPTION (MAXDOP 1)
SELECT
[Stfıche_Referans] ,
[Stlıne_Referans] ,
[Fiş No],
[Fiş Türü],
[Belge No],
[Stfıche Tarıh],
[Stlıne Tarıh],
RTRIM(CONVERT(char(20), ROUND([Ftıme] / 16777216, 2))) + '':'' + RTRIM(CONVERT(char(20),
ROUND(([Ftıme] - ROUND([Ftıme] / 16777216, 2) * 16777216)/ 65536, 2))) + '':'' + RTRIM(CONVERT(char(20),
ROUND(([Ftıme] - ROUND([Ftıme] / 16777216, 2) * 16777216 - ROUND(([Ftıme] - ROUND([Ftıme] / 16777216, 2) * 16777216) / 65536, 2) * 65536) / 256, 2))) AS Saat,
[Stok Kodu],
[Stok Adı],
[Bırım],
[Giriş Çıkış],
[Miktar],
[Kalan],
[Tutar] FROM #GECICITABLO
ORDER BY [Stok Kodu],[Stlıne Tarıh],[Saat]
;
')