Tarihe Göre Cari Bakiyeleri Listeleme

Gönderen Konu: Tarihe Göre Cari Bakiyeleri Listeleme  (Okunma sayısı 923 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı xisouthros

  • Yeni Kullanıcı
  • *
  • Karma: 0
Tarihe Göre Cari Bakiyeleri Listeleme
« : 22.01.2015, 11:06 »
Merhaba,
aşağıdaki sorgu ile kendi uygulamamdan belirttiğim tarihe göre Cari bakiyelerini getiriyorum, ancak cari açılış fişleri yada cari hesap fişleri bölümünden girilen fişleri hesaplamaya katmıyor bir türlü çözemedim, yardımcı olursanız sevinirim.

SELECT *
FROM
(   
   SELECT   CLCARD.CODE AS [Cari Kod], 
         UPPER(CLCARD.DEFINITION_) AS [Unvan], 
               (SELECT CASE
                     WHEN (SUM(CASE 
                              WHEN C.SIGN = 0 THEN C.AMOUNT * -1   WHEN C.SIGN = 1 THEN C.AMOUNT END) < 0)
                     THEN 'B' ELSE 'A' END   
                     FROM         LG_214_01_CLFLINE C   
                     INNER JOIN LG_214_CLCARD CR ON C.CLIENTREF = CR.LOGICALREF   
                     WHERE (CR.CODE = CLCARD.CODE) AND C.DATE_ <= CONVERT(DATe,'20141231',104) AND C.CANCELLED = 0 )  [B/A] ,
         CONVERT(NUMERIC(18,2),(
            CASE 
               WHEN (
                  SELECT  ISNULL(SUM(
                     CASE
                     WHEN  C.SIGN = 0 THEN C.AMOUNT
                     WHEN  C.SIGN = 1 THEN (C.AMOUNT  * -1) END),0)
                  FROM         LG_214_01_CLFLINE C
                  INNER JOIN  LG_214_CLCARD CR ON C.CLIENTREF = CR.LOGICALREF
                  WHERE     (CR.CODE = CLCARD.CODE) AND C.DATE_ <= CONVERT(DATe,'20141231',104)  AND C.CANCELLED = 0 ) < 0
               THEN (
                  SELECT  ISNULL(SUM(  CASE
                     WHEN  C.SIGN = 0 THEN C.AMOUNT
                     WHEN  C.SIGN = 1 THEN (C.AMOUNT  * -1)END),0)
                  FROM         LG_214_01_CLFLINE C
                  INNER JOIN  LG_214_CLCARD CR ON C.CLIENTREF = CR.LOGICALREF
                  WHERE     (CR.CODE = CLCARD.CODE) AND C.DATE_ <= CONVERT(DATe,'20141231',104)  AND C.CANCELLED = 0 )* -1
               ELSE (
                  SELECT  ISNULL(SUM(  CASE
                     WHEN  C.SIGN = 0 THEN C.AMOUNT
                     WHEN  C.SIGN = 1 THEN (C.AMOUNT  * -1) END),0)
                  FROM         LG_214_01_CLFLINE C
                  INNER JOIN  LG_214_CLCARD CR ON C.CLIENTREF = CR.LOGICALREF
                  INNER JOIN LG_214_01_PAYTRANS PT ON C.SOURCEFREF = PT.FICHEREF
                  WHERE     (CR.CODE = CLCARD.CODE) AND C.DATE_ <= CONVERT(DATe,'20141231',104)  AND C.CANCELLED = 0 ) END)
               ) AS Bakiye
   FROM  LKSDB.[dbo].LG_214_CLCARD CLCARD (NOLOCK)   /*LEFT SİL HAREKET GÖRMEYEN KAYITLAR*/
   JOIN LKSDB.[dbo].LG_214_01_CLFLINE CLF ON CLF.CLIENTREF = CLCARD.LOGICALREF   AND CLF.CANCELLED = 0 /*AND CLF.ACCOUNTED = 1*/   
   JOIN  [LKSDB].[dbo].[L_CURRENCYLIST] Para ON ISNULL(NULLIF(CLCARD.CCURRENCY,0),53) = Para.CURTYPE AND Para.FIRMNR = 214  ) AS A   
   GROUP BY A.[Cari Kod], A.Unvan, A.[B/A], A.Bakiye 
   ORDER BY A.Unvan

Çevrimdışı xisouthros

  • Yeni Kullanıcı
  • *
  • Karma: 0
Ynt: Tarihe Göre Cari Bakiyeleri Listeleme
« Yanıtla #1 : 28.01.2015, 09:55 »
Yardımcı olabilecek yok mudur?

Çevrimdışı ByBirol®

  • Logo Sistem Administrator
  • Logo Uzmanı
  • *****
  • Karma: 18
  • admin@artibilisim.com Logo Çözüm Ortağı
Ynt: Tarihe Göre Cari Bakiyeleri Listeleme
« Yanıtla #2 : 28.01.2015, 11:42 »
Subquerinde hata var, direk subsız yaz .

Çevrimdışı MehmetYavuz

  • Logo Uzmanı
  • *****
  • Karma: 3
Ynt: Tarihe Göre Cari Bakiyeleri Listeleme
« Yanıtla #3 : 28.01.2015, 11:46 »
Selam, kodu bayaaaaa bi uzatmışsınız. daha azıyla da aynı sonuca ulaşılabilirdi.

Select Code, DEFINITION_, TRCURR, SUM(AMOUNT*CASE WHEN CLFLINE .SIGN=1 THEN -1 ELSE 1 END) BAKIYE,
CASE WHEN SUM(AMOUNT*CASE WHEN CLFLINE .SIGN=1 THEN -1 ELSE 1 END)<0 THEN BAKIYE_ALACAK,
CASE WHEN SUM(AMOUNT*CASE WHEN CLFLINE .SIGN=1 THEN -1 ELSE 1 END)>=0 THEN BAKIYE_BORC

FROM LG_CLFLINE CLFLINE (NOLOCK)
LEFT JOIN LG_CLCARD CLCARD (NOLOCK) ON CLCARD.LOGICALREF =CLFLINE.CLIENTREF
WHERE CLFLINE.CANCELLED=0
AND CLFLINE.DATE_<='20141231'
GROUP BY CODE, DEFINITION_, TRCURR

Çevrimdışı xisouthros

  • Yeni Kullanıcı
  • *
  • Karma: 0
Ynt: Tarihe Göre Cari Bakiyeleri Listeleme
« Yanıtla #4 : 28.01.2015, 12:00 »
Öğrenmeye çalışıyorum o yüzden uzamış olabilir biraz :) ama hala doğru sonuca ulaşamıyorum,
SELECT
 C.CODE
 ,C.DEFINITION_
 ,ISNULL(SUM(T.DEBIT),0) BORC
 ,ISNULL(SUM(T.CREDIT),0) ALACAK
 ,ISNULL(SUM(T.DEBIT-T.CREDIT),0) BAKIYE
FROM
 LG_214_CLCARD C LEFT JOIN
 LG_214_01_CLTOTFIL T ON C.LOGICALREF=T.CARDREF AND T.TOTTYP=1
WHERE
 C.CARDTYPE <>22
 AND C.ACTIVE=0 AND
 C.CODE = '320.01.YUR01'
GROUP BY
 C.CODE
 ,C.DEFINITION_

yukarıdaki kod bloğu ile carinin 31 Aralık 2014 son bakiyesine baktığım zaman Logo da gördüğüm tutar ile aynı ancak sizin yazdığınız sorguda ve benim yazdığımda sonuç yanlış geliyor

Select Code, DEFINITION_, TRCURR, SUM(AMOUNT*CASE WHEN CLFLINE .SIGN=1 THEN -1 ELSE 1 END) BAKIYE,
CASE WHEN SUM(AMOUNT*CASE WHEN CLFLINE.SIGN=1 THEN -1 ELSE 1 END)<0 THEN SUM(AMOUNT*CASE WHEN CLFLINE.SIGN=1 THEN -1 ELSE 1 END) end   BAKIYE_ALACAK ,
CASE WHEN SUM(AMOUNT*CASE WHEN CLFLINE .SIGN=1 THEN -1 ELSE 1 END)>=0 THEN SUM(AMOUNT*CASE WHEN CLFLINE .SIGN=1 THEN -1 ELSE 1 END) end BAKIYE_BORC

FROM LG_214_01_CLFLINE CLFLINE (NOLOCK)
LEFT JOIN LG_214_CLCARD CLCARD (NOLOCK) ON CLCARD.LOGICALREF =CLFLINE.CLIENTREF
WHERE CLFLINE.CANCELLED=0
AND CLFLINE.DATE_<='20141231' AND
 CLCARD.CODE = '320.01.YUR01'
GROUP BY CODE, DEFINITION_, TRCURR
ORDER BY DEFINITION_

Çevrimdışı xisouthros

  • Yeni Kullanıcı
  • *
  • Karma: 0
Ynt: Tarihe Göre Cari Bakiyeleri Listeleme
« Yanıtla #5 : 28.01.2015, 13:48 »
KSLINES ile nasıl bağlantı kurucam peki?

Çevrimdışı MehmetYavuz

  • Logo Uzmanı
  • *****
  • Karma: 3
Ynt: Tarihe Göre Cari Bakiyeleri Listeleme
« Yanıtla #6 : 28.01.2015, 14:51 »
Bide döviz toplamlarına bakabilirmisiniz?