Bu raporu excel den Bilnex databesine bağlanarak kullanabilirsiniz. Öncelikle aşağıda verilen proceduru sql server a oluşturun. Sonra excelden dış veri al ile sql sorgusunu çalıştırın. Sorguların doğruluğu test edilmemiştir. Raporu test etmeden kullanmayınız....



CREATE PROCEDURE [dbo].[TahsilatRaporu]
AS
BEGIN
SET NOCOUNT ON

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'RAPOR_FATURATAH') AND OBJECTPROPERTY(id,'IsUserTable')=1)
DROP TABLE [dbo].RAPOR_FATURATAH


CREATE TABLE RAPOR_FATURATAH
(
COUNTER [int] IDENTITY(1,1) NOT NULL,
KODU Nvarchar(30),
ADI Nvarchar(100),
ESERI Nvarchar(30),
ESIRA INT,
TARIH DATETIME,
OTARIHI DATETIME,
TLTOPLAM FLOAT
)
DECLARE @CARIALACAK FLOAT,@VADETUTARI FLOAT,@TOPLAMTUTAR FLOAT,@S INT
SET @CARIALACAK=0
SET @S=0
DECLARE CURCARI CURSOR
KEYSET
FOR
SELECT KODU,ADI FROM CARI WHERE KODU IN
(SELECT KODU FROM CARI_HAR GROUP BY KODU HAVING SUM(BORC-ALACAK)>5)
DECLARE @CR NVARCHAR(30)
DECLARE @CRADI NVARCHAR(100)
OPEN CURCARI
FETCH NEXT FROM CURCARI INTO @CR,@CRADI
WHILE (@@fetch_status =0)
BEGIN
SET @CARIALACAK=(SELECT SUM(ALACAK) FROM CARI_HAR WHERE KODU=@CR )

SET @VADETUTARI=0
SET @TOPLAMTUTAR=0
DECLARE CUR CURSOR
KEYSET
FOR
select
KODU [Cari Kodu],
@CRADI [Cari Adı],
ESERI [Fatura Seri],
ESIRA [Fatura Sıra],
TARIH [Fatura Tarihi],
OTARIHI [Ödeme Tarihi],
BORC [Fatura Tutarı]
FROM CARI_HAR
WHERE 1=1
AND KODU=@CR
AND BORC>0
ORDER BY KODU,OTARIHI

DECLARE @KODU Nvarchar(30)
DECLARE @ADI Nvarchar(100)
DECLARE @ESERI Nvarchar(30)
DECLARE @ESIRA INT
DECLARE @TARIH DATETIME
DECLARE @OTARIHI DATETIME
DECLARE @TLTOPLAM FLOAT
OPEN CUR

FETCH NEXT FROM CUR INTO @KODU,@ADI,@ESERI,@ESIRA,@TARIH,@OTARIHI,@TLTOPLAM
WHILE (@@fetch_status =0)
BEGIN


IF @CARIALACAK<@TLTOPLAM AND @CARIALACAK>0
BEGIN
INSERT INTO RAPOR_FATURATAH (KODU, ADI, ESERI, ESIRA, TARIH, OTARIHI, TLTOPLAM)
VALUES
(@KODU,@ADI,@ESERI,@ESIRA,@TARIH,@OTARIHI,@TLTOPLA M-@CARIALACAK)
SET @VADETUTARI =@VADETUTARI+convert(INT,@OTARIHI, 101)* (@TLTOPLAM-@CARIALACAK )
SET @TOPLAMTUTAR=@TOPLAMTUTAR+(@TLTOPLAM-@CARIALACAK )
END
ELSE
IF @CARIALACAK<=0
BEGIN
INSERT INTO RAPOR_FATURATAH (KODU, ADI, ESERI, ESIRA, TARIH, OTARIHI, TLTOPLAM)
VALUES
(@KODU,@ADI,@ESERI,@ESIRA,@TARIH,@OTARIHI,@TLTOPLA M)
SET @VADETUTARI =@VADETUTARI+convert(INT,@OTARIHI, 101)* @TLTOPLAM
SET @TOPLAMTUTAR=@TOPLAMTUTAR+(@TLTOPLAM)
END

SET @CARIALACAK=@CARIALACAK-@TLTOPLAM
SET @S=@S+1

FETCH NEXT FROM CUR INTO @KODU,@ADI,@ESERI,@ESIRA,@TARIH,@OTARIHI,@TLTOPLAM
END

CLOSE CUR
DEALLOCATE CUR
IF @TOPLAMTUTAR>0
BEGIN
INSERT INTO RAPOR_FATURATAH (KODU, ADI, ESERI, ESIRA, TARIH, OTARIHI, TLTOPLAM)
VALUES
('TOPLAM','Ortalama Vade : '+dbo.fn_DateToStr((CAST(@VADETUTARI/@TOPLAMTUTAR AS DATETIME )))
+' Gün : '+CAST( DATEDIFF(day,GETDATE(), (CAST(@VADETUTARI/@TOPLAMTUTAR AS DATETIME ))) as varchar(10))
,'',NULL,NULL,NULL,@TOPLAMTUTAR)
END

INSERT INTO RAPOR_FATURATAH (KODU, ADI, ESERI, ESIRA, TARIH, OTARIHI, TLTOPLAM)
VALUES
('',''
,'',NULL,NULL,NULL,NULL)
FETCH NEXT FROM CURCARI INTO @CR,@CRADI
END

CLOSE CURCARI
DEALLOCATE CURCARI
SELECT COUNTER,
ISNULL((SELECT CINSI FROM CARI WHERE CARI.KODU=RAPOR_FATURATAH.KODU),'') CARICINSI,
ISNULL((SELECT ADI FROM CARI_BOLGE WHERE KODU IN(SELECT BOLGE FROM CARI WHERE CARI.KODU=RAPOR_FATURATAH.KODU)),'') BOLGE,
KODU, ADI, ESERI, ISNULL(CAST(ESIRA AS VARCHAR(10)),'') ESIRA,
ISNULL(dbo.fn_DateToStr(TARIH),'') TARIH,
ISNULL(dbo.fn_DateToStr(OTARIHI),'') OTARIHI,
TLTOPLAM

FROM RAPOR_FATURATAH
ORDER BY COUNTER
SET NOCOUNT OFF
end




KULLANIMI : EXEC TahsilatRaporu