Logo/Borc Yaslandirma/Borclar_Yaslandirma.sql
2018-03-13 15:26:03 +03:00

187 lines
5.7 KiB
Transact-SQL

-- 320li hesaplar
create table #tempresults
(
[RECID] [int] NULL,
[SIGN] [smallint] NULL,
[DEBIT] [float] NULL,
[CREDIT] [float] NULL,
[DATE_] [datetime] NULL,
[LINEEXP] [varchar](251) NULL,
[ACCOUNTCODE] [varchar](101) NULL,
[INVOICENO] [varchar](17) NULL,
[CLOSED] [smallint] NULL,
[OCAK] [float] NULL,
[SUBAT] [float] NULL,
[MART] [float] NULL,
[NISAN] [float] NULL,
[MAYIS] [float] NULL,
[HAZIRAN] [float] NULL,
[TEMMUZ] [float] NULL,
[AGUSTOS] [float] NULL,
[EYLUL] [float] NULL,
[EKIM] [float] NULL,
[KASIM] [float] NULL,
[ARALIK] [float] NULL,
[ACCOUNTNAME] [varchar](200) NULL
)
-- Tahsilatlar Temp Tablo Baþlangýç
create table #tempdebits
(
[DEBIT] [float] NULL,
[ACCOUNTCODE] [varchar](101) NULL,
[REMAINING] [float] NULL
)
Insert Into #tempdebits
select SUM(DEBIT) as DEBIT,ACCOUNTCODE,SUM(DEBIT) as REMAINING
from LG_141_01_EMFLINE
WHERE CANCELLED<>1 AND [SIGN]=0 --AND ACCOUNTCODE='120.01.G01'
GROUP BY ACCOUNTCODE
-- Tahsilatlar Temp Tablo Bitiþ
DECLARE @_sign smallint;
DECLARE @_debit float;
DECLARE @_credit float;
DECLARE @_date datetime;
DECLARE @_lineexp varchar(251);
DECLARE @_accountcode varchar(101);
DECLARE @_invoiceno varchar(17);
DECLARE @_month smallint;
DECLARE @_recid int;
DECLARE @_accountname varchar(200);
SET @_recid=0;
DECLARE MY_CURSOR CURSOR
LOCAL STATIC READ_ONLY FORWARD_ONLY
FOR
select [SIGN],DEBIT,CREDIT,DATE_ ,LINEEXP,ACCOUNTCODE,INVOICENO,MONTH_,ca.DEFINITION_
from LG_141_01_EMFLINE el
left join LG_141_EMUHACC ca ON ca.LOGICALREF=el.ACCOUNTREF
WHERE el.CANCELLED<>1
AND el.ACCOUNTCODE LIKE '32%'
--AND ACCOUNTCODE='320.01.I09'
--AND ACCOUNTCODE='120.01.A28'
--AND ACCOUNTCODE='320.01.A50'
ORDER BY DATE_ ASC
OPEN MY_CURSOR
FETCH NEXT FROM MY_CURSOR INTO @_sign,@_debit,@_credit,@_date,@_lineexp,@_accountcode,@_invoiceno,@_month,@_accountname
WHILE @@FETCH_STATUS = 0
BEGIN
SET @_recid = @_recid + 1;
DECLARE @_remaining FLOAT;
SET @_remaining=0;
DECLARE @_splitted smallint;
SET @_splitted=0;
SELECT @_remaining = ISNULL(REMAINING,0) FROM #tempdebits WHERE ACCOUNTCODE=@_accountcode
SET @_splitted=0
IF @_remaining=0 OR @_remaining IS NULL
INSERT INTO #tempresults VALUES(@_recid,@_sign,@_debit,@_credit,@_date,@_lineexp,@_accountcode,@_invoiceno,0,0,0,0,0,0,0,0,0,0,0,0,0,@_accountname)
ELSE
BEGIN
IF NOT @_remaining-@_credit<0 AND @_sign=1
BEGIN
--PRINT @_remaining-@_debit
UPDATE #tempdebits SET REMAINING=REMAINING-@_credit WHERE ACCOUNTCODE=@_accountcode
INSERT INTO #tempresults VALUES(@_recid,@_sign,@_debit,@_credit,@_date,@_lineexp,@_accountcode,@_invoiceno,1,0,0,0,0,0,0,0,0,0,0,0,0,@_accountname)
END
IF @_remaining-@_credit<0 AND @_sign=1 AND @_remaining<>0
BEGIN
UPDATE #tempdebits SET REMAINING=0 WHERE ACCOUNTCODE=@_accountcode
SET @_splitted=1
INSERT INTO #tempresults VALUES(@_recid,@_sign,@_debit,@_remaining,@_date,@_lineexp,@_accountcode,@_invoiceno,1,0,0,0,0,0,0,0,0,0,0,0,0,@_accountname)
SET @_recid = @_recid+1;
INSERT INTO #tempresults VALUES(@_recid,@_sign,@_debit,@_credit-@_remaining,@_date,'PARÇALANDI : '+@_lineexp,@_accountcode,@_invoiceno,0,0,0,0,0,0,0,0,0,0,0,0,0,@_accountname)
END
IF @_remaining=0 AND @_sign<>0
BEGIN
INSERT INTO #tempresults VALUES(@_recid,@_sign,@_debit,@_credit,@_date,@_lineexp,@_accountcode,@_invoiceno,0,0,0,0,0,0,0,0,0,0,0,0,0,@_accountname)
END
IF @_sign=0 --debit iþlemi. deðiþtirmeden geç
BEGIN
INSERT INTO #tempresults VALUES(@_recid,@_sign,@_debit,@_credit,@_date,@_lineexp,@_accountcode,@_invoiceno,1,0,0,0,0,0,0,0,0,0,0,0,0,@_accountname)
END
END
IF ((@_remaining-@_credit<0 AND @_remaining<>0) OR @_remaining=0)AND @_sign=1
BEGIN
UPDATE #tempresults
SET
OCAK = CASE WHEN @_month=1 THEN @_credit-@_remaining ELSE 0 END,
SUBAT = CASE WHEN @_month=2 THEN @_credit-@_remaining ELSE 0 END,
MART = CASE WHEN @_month=3 THEN @_credit-@_remaining ELSE 0 END,
NISAN = CASE WHEN @_month=4 THEN @_credit-@_remaining ELSE 0 END,
MAYIS = CASE WHEN @_month=5 THEN @_credit-@_remaining ELSE 0 END,
HAZIRAN = CASE WHEN @_month=6 THEN @_credit-@_remaining ELSE 0 END,
TEMMUZ = CASE WHEN @_month=7 THEN @_credit-@_remaining ELSE 0 END,
AGUSTOS = CASE WHEN @_month=8 THEN @_credit-@_remaining ELSE 0 END,
EYLUL = CASE WHEN @_month=9 THEN @_credit-@_remaining ELSE 0 END,
EKIM = CASE WHEN @_month=10 THEN @_credit-@_remaining ELSE 0 END,
KASIM = CASE WHEN @_month=11 THEN @_credit-@_remaining ELSE 0 END,
ARALIK = CASE WHEN @_month=12 THEN @_credit-@_remaining ELSE 0 END
WHERE RECID=@_recid
END
FETCH NEXT FROM MY_CURSOR INTO @_sign,@_debit,@_credit,@_date,@_lineexp,@_accountcode,@_invoiceno,@_month,@_accountname
END
CLOSE MY_CURSOR
DEALLOCATE MY_CURSOR
-- ÖZET
SELECT ACCOUNTCODE,ACCOUNTNAME
,SUM(DEBIT) AS BORÇ
,SUM(CREDIT) AS ALACAK
,SUM(DEBIT)-SUM(CREDIT) AS BAKIYE
,SUM(OCAK) as Ocak
,SUM(SUBAT) as Subat
,SUM(MART) as Mart
,SUM(NISAN) as Nisan
,SUM(MAYIS) as Mayis
,SUM(HAZIRAN) as Haziran
,SUM(TEMMUZ) as Temmuz
,SUM(AGUSTOS) as Agustos
,SUM(EYLUL) as Eylul
,SUM(EKIM) as Ekim
,SUM(KASIM) as Kasim
,SUM(ARALIK) as Aralik
,((SUM(CREDIT)-SUM(DEBIT))-SUM(OCAK)-SUM(SUBAT)-SUM(MART)-SUM(NISAN)-SUM(MAYIS)-SUM(HAZIRAN)-SUM(TEMMUZ)-SUM(AGUSTOS)
-SUM(EYLUL)-SUM(EKIM)-SUM(KASIM)-SUM(ARALIK)) AS SAGLAMA
from #tempresults
GROUP BY ACCOUNTCODE,ACCOUNTNAME
--DETAY
SELECT * FROM #tempresults
If(OBJECT_ID('tempdb..#tempdebits') Is Not Null)
Begin
Drop Table #tempdebits
End
If(OBJECT_ID('tempdb..#tempresults') Is Not Null)
Begin
Drop Table #tempresults
End