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: 22 Kasım 2024 Saat 06:17 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?
|
|