Sayfayı Yazdır | Pencereyi Kapat

SATIŞ TAHSİLAT RAPORU VIEW

Nereden Yazdırıldığı: ERP Nedir? | Türkiye'nin ERP Forum Platformu
Kategori: ERP Genel
Forum Adı: ERP Rapor Hazırlama
Forum Tanımlaması: ERP Rapor Hazırlama
URL: http://www.erpne.org/forum_posts.asp?TID=4599
Tarih: 25 Nisan 2024 Saat 22:47
Program Versiyonu: Web Wiz Forums 11.10 - http://www.webwizforums.com


Konu: SATIŞ TAHSİLAT RAPORU VIEW
Mesajı Yazan: musaishak
Konu: SATIŞ TAHSİLAT RAPORU VIEW
Mesaj Tarihi: 17 Şubat 2021 Saat 12:23
Merhaba

Satış ve tahsilatların bir arada olduğu bir rapor view hazırlıyorum . çözemediğim bir yer var   TBLFATUIRS TABLOSU TBLKASA TABLOSU VE CAHAR TABLOSU BİRLEŞTİRİLİYOR. 

SORUN KASA VE FATUIRS TABLOLORINDA BELGE_NO KISIMLARI AYNI OLDUĞU İÇİN  KAPALI FATURALARDA MÜKERRER KAYIT ALIYORUM.  AŞAYA VIEW ÖRNEĞİNİ KOYUYORUM  . FARKLI BİR BİRLEŞTİRME YÖNTEMİ VARMI . 




SELECT  H.CARI_KOD , S.CARI_ISIM ,S.GRUP_KODU,S.RAPOR_KODU1,S.RAPOR_KODU2, H.TARIH ,
H.PLASIYER_KODU, P.PLASIYER_ACIKLAMA,H.HAREKET_TURU,H.BELGE_NO, ISNULL(K.GECERLI,'E') as KSGECERLI ,

( CASE WHEN  F.FTIRSIP='1'   and F.TIPI NOT IN ('4','5') THEN (F.GENELTOPLAM-F.FAT_ALTM2) ELSE 0 END ) AS SATIS,
( CASE WHEN  F.FTIRSIP='2'   and F.TIPI IN ('4','5') THEN (F.GENELTOPLAM-F.FAT_ALTM2) ELSE 0 END ) AS IADE,
(( CASE WHEN  F.FTIRSIP='1'   and F.TIPI NOT IN ('4','5') THEN (F.GENELTOPLAM-F.FAT_ALTM2) ELSE 0 END )
 -( CASE WHEN  F.FTIRSIP='2'   and F.TIPI IN ('4','5') THEN (F.GENELTOPLAM-F.FAT_ALTM2) ELSE 0 END ) ) AS NETSATIS 

--( CASE WHEN H.BORC>0 AND H.HAREKET_TURU IN ('B') THEN ((ISNULL(H.BORC,0))-(F.FAT_ALTM2)) ELSE 0 END) AS NETSAT,
--( CASE WHEN H.ALACAK>0 AND H.HAREKET_TURU IN ('C') THEN ((ISNULL(H.ALACAK,0))-(F.FAT_ALTM2)) ELSE 0 END) AS NETIADE,
--(( CASE WHEN H.BORC>0 AND H.HAREKET_TURU IN ('B') THEN ((ISNULL(H.BORC,0))-(F.FAT_ALTM2)) ELSE 0 END) - 
--( CASE WHEN H.ALACAK>0 AND H.HAREKET_TURU IN ('C') THEN ((ISNULL(H.ALACAK,0))-(F.FAT_ALTM2)) ELSE 0 END)) AS NETSATIS,

,(CASE WHEN H.ALACAK>0  AND  HAREKET_TURU IN ('K') and (NOT (BELGE_NO LIKE 'D%')) AND (NOT (BELGE_NO LIKE 'GG%'))
 THEN (ISNULL(H.ALACAK,0)) ELSE 0 END ) AS  BANKA
, (CASE WHEN H.ALACAK>0  AND  H.HAREKET_TURU IN ('G')     THEN (ISNULL(H.ALACAK,0)) ELSE 0 END ) AS  CEK
, (CASE WHEN H.ALACAK>0  AND  H.HAREKET_TURU IN ('E')     THEN (ISNULL(H.ALACAK,0)) ELSE 0 END ) AS  SENET
, (CASE WHEN H.ALACAK>0  AND K.KSMAS_KOD LIKE 'NK%' AND  IO = 'G' AND K.TIP IN ('C','F') AND ( K.GECERLI IS NULL OR K.GECERLI IS NULL OR K.GECERLI != 'H')
THEN (ISNULL(H.ALACAK,0)) ELSE 0 END ) AS  NAKIT
, (CASE WHEN H.ALACAK>0 AND K.KSMAS_KOD LIKE 'KK%' AND  IO = 'G' AND K.TIP IN ('C','F') AND ( K.GECERLI IS NULL OR K.GECERLI IS NULL OR K.GECERLI != 'H')
THEN (ISNULL(H.ALACAK,0)) ELSE 0 END ) AS  KK
, (CASE WHEN H.BORC>0  AND  H.CARI_KOD LIKE 'MASG%' THEN (ISNULL(H.BORC,0)) ELSE 0 END ) AS  MASRAF

FROM TBLCAHAR H 
LEFT OUTER JOIN TBLCASABIT S  ON   S.CARI_KOD = H.CARI_KOD 
LEFT OUTER JOIN  TBLCARIPLASIYER P ON P.PLASIYER_KODU = H.PLASIYER_KODU
LEFT OUTER JOIN  TBLKASA K     ON    K.KOD = H.CARI_KOD AND  H.ENT_REF_KEY = K.ENTEGREFKEY 
LEFT OUTER JOIN  TBLFATUIRS F  ON   F.CARI_KODU = H.CARI_KOD AND F.FATIRS_NO = H.BELGE_NO --AND F.FATIRS_NO = K.FISNO




ORDER BY H.TARIH ASC









 



Cevaplar:
Mesajı Yazan: mbaykan
Mesaj Tarihi: 17 Şubat 2021 Saat 16:52
fatuirs ve kasa JOIN'leri mükerrer kayıt oluşturmaz.
kapalı fatura cari'ye işlenmesi durumunda cari'ye satış için borc ve aynı zamanda ayrı bir satırda alacak kaydı oluşturur
WHERE NOT(ISNULL(F.TIPI,'')='1' AND H.ALACAK>0)
ile bu satırları almaması sağlanır

-------------
Mehmet Baykan


Mesajı Yazan: musaishak
Mesaj Tarihi: 17 Şubat 2021 Saat 17:30
sorun joinlerin birleşiminde 

fatuirs sadece cari kod ve fatırs_no ile  cahar a bağlanıyor
kasadan gelen kayıtlarda  fatırs_no ile eşleşen alan olunca  hem faturadan gelen hem kasadan gelen veri üstünde eşleşiyorlar. 

fatura tutarları iki defa oluşuyor    tip b   ve tip  d    olarak.   





Mesajı Yazan: mbaykan
Mesaj Tarihi: 17 Şubat 2021 Saat 19:15
LEFT OUTER JOIN  TBLKASA K     ON    K.KOD = H.CARI_KOD AND  H.ENT_REF_KEY = K.ENTEGREFKEY 
LEFT OUTER JOIN  TBLFATUIRS F  ON   F.CARI_KODU = H.CARI_KOD AND F.FATIRS_NO = H.BELGE_NO --AND F.FATIRS_NO = K.FISNO

kasa, cahar ile Joinlenmiş
fatuirs da cahar. 
BelgeNo cahar'da çift o yüzden tekrarlanıyor. (Kapalı faturayı 1 borç 1 alacak olarak) çift kaydedildiği için
1 FAtuirs 1 kasa dan değil. (sonuçta 2.si de cahar ile join'leniyor.
test için sorguda; ya KASA'yı bırakın  ilgili sütunları alın FATUIRS takileri almayın
ya da FATUIRS'ı bırakıp kasa'dan gelen sütunları almayın

tip 'b' veya tip 'd' hangi tabloda var? FATUIRS'ta mı?.
FATUIRS master (ana tablo) dur. aynı belge için 2 kayıt olmamalı.


-------------
Mehmet Baykan


Mesajı Yazan: musaishak
Mesaj Tarihi: 18 Şubat 2021 Saat 09:25
yanlış anlattım sanırım 

CAHAR DA  KAYIT FAZLA OLDUĞU İÇİN  FAZLA GELİYOR ..  TBLKASADAN GELEN BİRLEŞİYOR 

H.ENT_REF_KEY = K.ENTEGREFKEY   TAM BİR BİRLEŞİM SAĞLIYOR.   LAKİN FATUIRS TABLOSUNDAN GELEN   F.FATIRS_NO = H.BELGE_NO   BİRLEŞİM SORUNLU  TAM BİR EŞLEŞME SAĞLATAMIYORUM. 

BELGE NUMARALARI YETERSİZ KALIYOR.   DEDİĞİNİZ GİBİ  CAHAR DA KAPALI FATURA İŞLMEMİNDE AYNI BELGE NUMARASI İLE BİRDEN FAZLA KAYIT OLUŞABİLİYOR. HATTA KASADA ÇOKLU KAPATMA YAPARSAN 3-4 KAYIT BİLE AYNI BELGE NUMARASI İLE OLUŞUYOR.  FATUIRS DE HALİYLE GELEN HER SATIRLA EŞLEŞİYOR .  

BAŞKA BİR SORUNDA YİNE KAPALI FATURA SORUNU.  TBLKASADAN GELEN  H.ENT_REF_KEY = K.ENTEGREFKEY  ASLINDA TAM EŞLEŞME SAĞLAMIYOR ÇÜNKÜ:  KAPILI FATURADA GELEN VERI ÇOKLU KAPATMADA 2 SATIR ALACAK KAYDI OLUŞTURUYOR  BU KAYITLARIN   H.ENT_REF_KEY LERİ AYNI OLDUĞU İÇİN  JOIN LEDİĞİMİZ ALANLAR MÜKERRER OLMUŞ OLUYOR.  YANİ ASLINDA KAPALI FATURA İŞLEMİNDE CAHAR İLE TAM BİR EŞLEŞME YAPAMIYORUZ. 

 


Mesajı Yazan: mbaykan
Mesaj Tarihi: 18 Şubat 2021 Saat 14:20
KASA'YI JOIN'lemeyip subquery ile değer almayı denedim.

SELECT  H.CARI_KOD , S.CARI_ISIM ,S.GRUP_KODU,S.RAPOR_KODU1,S.RAPOR_KODU2, H.TARIH ,
H.PLASIYER_KODU, P.PLASIYER_ACIKLAMA,H.HAREKET_TURU,H.BELGE_NO, 
(SELECT TOP 1 ISNULL(K.GECERLI,'E') FROM TBLKASA K WHERE H.ENT_REF_KEY=K.ENTEGREFKEY) as KSGECERLI ,

( CASE WHEN  F.FTIRSIP='1'   and F.TIPI NOT IN ('4','5') THEN (F.GENELTOPLAM-F.FAT_ALTM2) ELSE 0 END ) AS SATIS,
( CASE WHEN  F.FTIRSIP='2'   and F.TIPI IN ('4','5') THEN (F.GENELTOPLAM-F.FAT_ALTM2) ELSE 0 END ) AS IADE,
(( CASE WHEN  F.FTIRSIP='1'   and F.TIPI NOT IN ('4','5') THEN (F.GENELTOPLAM-F.FAT_ALTM2) ELSE 0 END )
 -( CASE WHEN  F.FTIRSIP='2'   and F.TIPI IN ('4','5') THEN (F.GENELTOPLAM-F.FAT_ALTM2) ELSE 0 END ) ) AS NETSATIS 

--( CASE WHEN H.BORC>0 AND H.HAREKET_TURU IN ('B') THEN ((ISNULL(H.BORC,0))-(F.FAT_ALTM2)) ELSE 0 END) AS NETSAT,
--( CASE WHEN H.ALACAK>0 AND H.HAREKET_TURU IN ('C') THEN ((ISNULL(H.ALACAK,0))-(F.FAT_ALTM2)) ELSE 0 END) AS NETIADE,
--(( CASE WHEN H.BORC>0 AND H.HAREKET_TURU IN ('B') THEN ((ISNULL(H.BORC,0))-(F.FAT_ALTM2)) ELSE 0 END) - 
--( CASE WHEN H.ALACAK>0 AND H.HAREKET_TURU IN ('C') THEN ((ISNULL(H.ALACAK,0))-(F.FAT_ALTM2)) ELSE 0 END)) AS NETSATIS,

,(CASE WHEN H.ALACAK>0  AND  HAREKET_TURU IN ('K') and (NOT (BELGE_NO LIKE 'D%')) AND (NOT (BELGE_NO LIKE 'GG%'))
 THEN (ISNULL(H.ALACAK,0)) ELSE 0 END ) AS  BANKA
, (CASE WHEN H.ALACAK>0  AND  H.HAREKET_TURU IN ('G')     THEN (ISNULL(H.ALACAK,0)) ELSE 0 END ) AS  CEK
, (CASE WHEN H.ALACAK>0  AND  H.HAREKET_TURU IN ('E')     THEN (ISNULL(H.ALACAK,0)) ELSE 0 END ) AS  SENET
--, (CASE WHEN H.ALACAK>0  AND K.KSMAS_KOD LIKE 'NK%' AND  IO = 'G' AND K.TIP IN ('C','F') AND ( K.GECERLI IS NULL OR K.GECERLI IS NULL OR K.GECERLI != 'H') THEN (ISNULL(H.ALACAK,0)) ELSE 0 END ) AS  NAKIT
, (SELECT TOP 1 K.TUTAR FROM TBLKASA K WHERE K.KOD=H.CARI_KOD AND H.ENT_REF_KEY=K.ENTEGREFKEY AND H.ALACAK>0 AND K.KSMAS_KOD LIKE 'NK%' AND K.IO='G' AND  K.TIP IN ('C','F') AND ( K.GECERLI IS NULL OR K.GECERLI IS NULL OR K.GECERLI != 'H')) AS NAKIT
--, (CASE WHEN H.ALACAK>0 AND K.KSMAS_KOD LIKE 'KK%' AND  IO = 'G' AND K.TIP IN ('C','F') AND ( K.GECERLI IS NULL OR K.GECERLI IS NULL OR K.GECERLI != 'H') THEN (ISNULL(H.ALACAK,0)) ELSE 0 END ) AS  KK
, (SELECT TOP 1 K.TUTAR FROM TBLKASA K WHERE K.KOD=H.CARI_KOD AND H.ENT_REF_KEY=K.ENTEGREFKEY AND H.ALACAK>0 AND K.KSMAS_KOD LIKE 'KK%' AND K.IO='G' AND  K.TIP IN ('C','F') AND ( K.GECERLI IS NULL OR K.GECERLI IS NULL OR K.GECERLI != 'H')) AS KK
, (CASE WHEN H.BORC>0  AND  H.CARI_KOD LIKE 'MASG%' THEN (ISNULL(H.BORC,0)) ELSE 0 END ) AS  MASRAF

FROM TBLCAHAR H 
LEFT OUTER JOIN TBLCASABIT S  ON   S.CARI_KOD = H.CARI_KOD 
LEFT OUTER JOIN  TBLCARIPLASIYER P ON P.PLASIYER_KODU = H.PLASIYER_KODU
--LEFT OUTER JOIN  TBLKASA K     ON    K.KOD = H.CARI_KOD AND  H.ENT_REF_KEY = K.ENTEGREFKEY 
LEFT OUTER JOIN  TBLFATUIRS F  ON   F.CARI_KODU = H.CARI_KOD AND F.FATIRS_NO = H.BELGE_NO 



-------------
Mehmet Baykan


Mesajı Yazan: musaishak
Mesaj Tarihi: 18 Şubat 2021 Saat 15:32
yok buda olmadı yine çift geldi.. 

unıon all ile yeni bir rapor yaptım.  bunda sorunu çözdüm .  ama yine kapalı fatura  kasada çoklu kapatma yapınca bu seferde aynı satırları toplayarak getiriyor 



ALTER VIEW  MUSA_SAT_TAHSILAT_CARI  as



SELECT  H.CARI_KOD , S.CARI_ISIM ,S.GRUP_KODU,S.RAPOR_KODU1,S.RAPOR_KODU2, H.TARIH ,
H.PLASIYER_KODU, P.PLASIYER_ACIKLAMA,H.HAREKET_TURU,H.BELGE_NO, 'KASAGECERLI' as KSGECERLI ,
'0'  AS SATIS,
'0' AS IADE,
'0' AS NETSATIS 
,(CASE WHEN H.ALACAK>0  AND  HAREKET_TURU IN ('K') and (NOT (BELGE_NO LIKE 'D%')) AND (NOT (BELGE_NO LIKE 'GG%'))
 THEN (ISNULL(H.ALACAK,0)) ELSE 0 END ) AS  BANKA
, (CASE WHEN H.ALACAK>0  AND  H.HAREKET_TURU IN ('G')     THEN (ISNULL(H.ALACAK,0)) ELSE 0 END ) AS  CEK
, (CASE WHEN H.ALACAK>0  AND  H.HAREKET_TURU IN ('E')     THEN (ISNULL(H.ALACAK,0)) ELSE 0 END ) AS  SENET
, '0' AS  NAKIT
, '0' AS  KK
, (CASE WHEN H.BORC>0  AND  H.CARI_KOD LIKE 'MASG%' THEN (ISNULL(H.BORC,0)) ELSE 0 END ) AS  MASRAF

FROM TBLCAHAR H 
LEFT OUTER JOIN TBLCASABIT S  ON   S.CARI_KOD = H.CARI_KOD 
LEFT OUTER JOIN  TBLCARIPLASIYER P ON P.PLASIYER_KODU = H.PLASIYER_KODU

UNION ALL

SELECT  H.CARI_KOD , S.CARI_ISIM ,S.GRUP_KODU,S.RAPOR_KODU1,S.RAPOR_KODU2, H.TARIH ,
H.PLASIYER_KODU, P.PLASIYER_ACIKLAMA,H.HAREKET_TURU,H.BELGE_NO, 'KASAGECERLI' as KSGECERLI ,
( CASE WHEN  F.FTIRSIP='1'   and F.TIPI NOT IN ('4','5') THEN (F.GENELTOPLAM-F.FAT_ALTM2) ELSE 0 END ) AS SATIS,
( CASE WHEN  F.FTIRSIP='2'   and F.TIPI IN ('4','5') THEN (F.GENELTOPLAM-F.FAT_ALTM2) ELSE 0 END ) AS IADE,
(( CASE WHEN  F.FTIRSIP='1'   and F.TIPI NOT IN ('4','5') THEN (F.GENELTOPLAM-F.FAT_ALTM2) ELSE 0 END )
 -( CASE WHEN  F.FTIRSIP='2'   and F.TIPI IN ('4','5') THEN (F.GENELTOPLAM-F.FAT_ALTM2) ELSE 0 END ) ) AS NETSATIS 
,'0' AS  BANKA
, '0' AS  CEK
, '0' AS  SENET
, '0' AS  NAKIT
, '0' AS  KK
, '0' AS  MASRAF

FROM TBLCAHAR H 
LEFT OUTER JOIN TBLCASABIT S  ON   S.CARI_KOD = H.CARI_KOD 
LEFT OUTER JOIN  TBLCARIPLASIYER P ON P.PLASIYER_KODU = H.PLASIYER_KODU
LEFT OUTER JOIN  TBLFATUIRS F  ON   F.CARI_KODU = H.CARI_KOD AND F.FATIRS_NO = H.BELGE_NO
where H.HAREKET_TURU IN  ('B','C')

UNION ALL

SELECT  H.CARI_KOD , S.CARI_ISIM ,S.GRUP_KODU,S.RAPOR_KODU1,S.RAPOR_KODU2, H.TARIH ,
H.PLASIYER_KODU, P.PLASIYER_ACIKLAMA,H.HAREKET_TURU,H.BELGE_NO, 'KASAGECERLI' as KSGECERLI ,
'0' AS SATIS,
'0' AS IADE,
'0' AS NETSATIS 
,'0' AS  BANKA
, '0' AS  CEK
, '0' AS  SENET
, '0' AS  NAKIT
, (CASE WHEN H.ALACAK>0 AND K.KSMAS_KOD LIKE 'KK%' AND  IO = 'G' AND K.TIP IN ('C','F') AND ( K.GECERLI IS NULL OR K.GECERLI IS NULL OR K.GECERLI != 'H')
THEN (ISNULL(H.ALACAK,0)) ELSE 0 END ) AS  KK
,'0' AS  MASRAF

FROM TBLCAHAR H 
LEFT OUTER JOIN TBLCASABIT S  ON   S.CARI_KOD = H.CARI_KOD 
LEFT OUTER JOIN  TBLCARIPLASIYER P ON P.PLASIYER_KODU = H.PLASIYER_KODU
LEFT OUTER JOIN  TBLKASA K     ON    K.KOD = H.CARI_KOD AND  H.ENT_REF_KEY = K.ENTEGREFKEY 
WHERE H.HAREKET_TURU = 'D' 

UNION ALL 

SELECT  H.CARI_KOD , S.CARI_ISIM ,S.GRUP_KODU,S.RAPOR_KODU1,S.RAPOR_KODU2, H.TARIH ,
H.PLASIYER_KODU, P.PLASIYER_ACIKLAMA,H.HAREKET_TURU,H.BELGE_NO, 'KASAGECERLI' as KSGECERLI ,
'0' AS SATIS,
'0' AS IADE,
'0' AS NETSATIS 
,'0' AS  BANKA
, '0' AS  CEK
, '0' AS  SENET
, (CASE WHEN H.ALACAK>0  AND K.KSMAS_KOD LIKE 'NK%' AND  IO = 'G' AND K.TIP IN ('C','F') AND ( K.GECERLI IS NULL OR K.GECERLI IS NULL OR K.GECERLI != 'H')
THEN (ISNULL(H.ALACAK,0)) ELSE 0 END ) AS  NAKIT
, '0' AS  KK
,'0' AS  MASRAF

FROM TBLCAHAR H 
LEFT OUTER JOIN TBLCASABIT S  ON   S.CARI_KOD = H.CARI_KOD 
LEFT OUTER JOIN  TBLCARIPLASIYER P ON P.PLASIYER_KODU = H.PLASIYER_KODU
LEFT OUTER JOIN  TBLKASA K     ON    K.KOD = H.CARI_KOD 
WHERE H.HAREKET_TURU = 'D'  AND  H.ENT_REF_KEY = K.ENTEGREFKEY AND H.ALACAK = K.TUTAR 





Mesajı Yazan: mbaykan
Mesaj Tarihi: 18 Şubat 2021 Saat 15:37
CARİ hesap Özel Hesap Kapatma Tipli ise TBLOZELHESAP tablosundan yararlanabilirsiniz 
Yaşlandırmalı ise zaten istediğiniz rapor mümkün değil. yani satış yaptığımız Faturanın hangi Alacak hareketine karşılık geleceği belli değildir.



-------------
Mehmet Baykan


Mesajı Yazan: musaishak
Mesaj Tarihi: 18 Şubat 2021 Saat 15:55
yok bu satışları ve tahsilatları tek bir tabloda toplamaya çalışıyorum... 


Mesajı Yazan: OZCANK61
Mesaj Tarihi: 06 Nisan 2021 Saat 07:14
Merhaba Arkadaşlar, SQL Sorgunun sonucu ne oldu acaba?



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 11.10 - http://www.webwizforums.com
Copyright ©2001-2017 Web Wiz Ltd. - https://www.webwiz.net