ERP Nedir? | Türkiye'nin ERP Forum Platformu Ana Sayfa
Forum Anasayfa Forum Anasayfa > SQL > SQL Veri Tabanı İşlemleri
  Aktif Konular Aktif Konular RSS - Iki tarih arasi bakiyeli cari ve stok hareketleri
  SSS SSS  Forumu Ara   Etkinlikler   Kayıt Ol Kayıt Ol  Giriş Giriş

ERP Nedir? Enterprise Resource Planning nasıl çalışır? İş süreçleri ile ilgili tüm soru ve cevapları ERPNe.org'da.

Ülkemizde hızla gelişmekte olan ERP yazılım sektörümüzün, Yerli ve Yabancı ERP işlemlerinin tanıtımı ve kullanıcılarının buluşma noktası olması hedefiyle kurulan sitemize hoş geldiniz.

Ülkemizdeki Ne.org konseptinde bir ilk olarak yayın hayatına başlayan ERPNe.org, Kurumsal Kaynak Planlaması yazılımlarını kullananların bilgi kaynağı/Portal olmak amacı ile kurulmuştur.

Genellikle yurt dışında büyük üreticiler tarafından geliştirilen SQL, Delphi, ASP, CSharp gibi teknolojilerin anlatıldığı sitelerin kullandıkları (WhatisSQL, WhatisASP) (Ülkemizde Netsis Nedir, Mikro Nedir, SAP Nedir yada Logo Nedir gibi kullanıcı sorularına) Ne ve nedir konseptinde yeni bir açılım olmasını da hedefleyen ERPNe.ORG' un, ülkemizin uluslararası ERP sektörü içinde hak ettiği yeri almasında ve ERP ürünlerini kullananların bir araya gelerek Yerli ERP'nin gelişmesine katkı sağlayacakları önemli bir kilometre taşı olacağı düşüncesindeyiz.


Iki tarih arasi bakiyeli cari ve stok hareketleri

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
  Konu Arama Konu Arama  Topic Seçenekleri Topic Seçenekleri
Merkez Açılır Kutu İzle
Yeni Üye
Yeni Üye
Simge

Kayıt Tarihi: 20 Aralık 2011
Durum: Aktif Değil
Puanlar: 0
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Merkez Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: Iki tarih arasi bakiyeli cari ve stok hareketleri
    Gönderim Zamanı: 26 Mayıs 2012 Saat 12:30
Merhaba,

Forumda soracagim sorunun cevabini aradim ama bulamadim. Umarim tekrar ediyor olmam.

Temel olarak yapmak istedigim sey stok ve cari modüllerdeki tarih aralikli icmal listelerini raporlastirmak. Benim tanimlayacagim iki tarih arasindaki ya da içinde bulundugumuz ayin stok ya da cari hareketleri görmek istiyorum. Bir view yazip bunu Smart Agent programinda düzenli gönderilen bir rapor haline dökmek istiyorum.

View sonucu söyle bir sey olmali

cari kod, cari isim, ilk tarih bakiye, iki tarih arasi toplam borç, iki tarih arasi toplam alacak, son tarih bakiye.

ya da

stok kodu, stok adi, ilk tarih bakiye, iki tarih arasi toplam giris, iki tarih arasi toplam çikis, son tarih bakiye.

yardimci olabilecek birileri çikarsa sevinirim.
Yukarı Dön
mbaykan Açılır Kutu İzle
Kidemli Üye
Kidemli Üye
Simge

Kayıt Tarihi: 06 Nisan 2007
Konum: izmir
Durum: Aktif Değil
Puanlar: 1181
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı mbaykan Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 26 Mayıs 2012 Saat 15:42
CREATE FUNCTION UFN_STOK_DONEM_OZET(@TRH1 DATETIME,@TRH2 DATETIME)
RETURNS TABLE
RETURN (
WITH CTE1 AS (
SELECT STOK_KODU, SUM(CASE WHEN STHAR_GCKOD='G' THEN STHAR_GCMIK ELSE -STHAR_GCMIK END) DEVIR
FROM TBLSTHAR (NOLOCK)
WHERE STHAR_TARIH < @TRH1 AND STOK_KODU IN (SELECT DISTINCT STOK_KODU FROM TBLSTHAR WHERE STHAR_TARIH BETWEEN @TRH1 AND @TRH2)
GROUP BY STOK_KODU
),
CTE2 AS (SELECT STOK_KODU,SUM(CASE WHEN STHAR_GCKOD='G' THEN STHAR_GCMIK ELSE 0 END) GIRIS,
SUM(CASE WHEN STHAR_GCKOD='C' THEN STHAR_GCMIK ELSE 0 END) CIKIS
FROM TBLSTHAR (NOLOCK)
WHERE  STHAR_TARIH BETWEEN @TRH1 AND @TRH2
GROUP BY STOK_KODU
)

SELECT S2.STOK_KODU,B.STOK_ADI,ISNULL(DEVIR,0) DEVIR,GIRIS,CIKIS,ISNULL(DEVIR,0) + GIRIS - CIKIS AS KALAN
FROM CTE2 S2
LEFT JOIN CTE1 S1 ON S1.STOK_KODU=S2.STOK_KODU
LEFT JOIN TBLSTSABIT B ON S2.STOK_KODU=B.STOK_KODU
)

 
CREATE FUNCTION UFN_CARI_DONEM_OZET(@TRH1 DATETIME,@TRH2 DATETIME)
RETURNS TABLE
RETURN (
WITH CTE1 AS (
SELECT CARI_KOD, SUM(BORC - ALACAK) BAKI1
FROM TBLCAHAR A (NOLOCK)
WHERE TARIH < @TRH1 AND A.CARI_KOD IN (SELECT DISTINCT CARI_KOD FROM TBLCAHAR WHERE TARIH BETWEEN @TRH1 AND @TRH2)
GROUP BY CARI_KOD
),
CTE2 AS (SELECT CARI_KOD,SUM(BORC) BORC,SUM(ALACAK) ALACAK
FROM TBLCAHAR (NOLOCK)
WHERE  TARIH BETWEEN @TRH1 AND @TRH2
GROUP BY CARI_KOD
)

SELECT C2.CARI_KOD,B.CARI_ISIM,ISNULL(BAKI1,0) BAKI1, BORC, ALACAK, ISNULL(BAKI1,0) + BORC - ALACAK AS BAKIYE
FROM CTE2 C2
LEFT JOIN CTE1 C1 ON C1.CARI_KOD=C2.CARI_KOD
LEFT JOIN TBLCASABIT B ON C2.CARI_KOD=B.CARI_KOD
)

Stok raporu için
SELECT * FROM DBO.UFN_STOK_DONEM_OZET('2012-01-01','2012-01-31')

Cari raporu için
SELECT * FROM dbo.UFN_CARI_DONEM_OZET('2012-01-01','2012-01-31')

Mehmet Baykan
Yukarı Dön
Merkez Açılır Kutu İzle
Yeni Üye
Yeni Üye
Simge

Kayıt Tarihi: 20 Aralık 2011
Durum: Aktif Değil
Puanlar: 0
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Merkez Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 26 Mayıs 2012 Saat 16:26
Tam da istedigim gibi bir sonuç verdi. Çok tesekkür ederim.
Ama yazdiginiz kod benim anlayabilecegimden daha karmasik.

Ben söyle bir sey yazmistim.

declare @fromdate date=convert(date,convert(varchar(7),getdate(),102)+'.01')
declare @todate date=getdate()-1

select
CARI_KOD,CARI_ISIM,C.ACIK1 AS TABELA_ADI, C.RAPOR_KODU1 AS RUT_KODU,GRUP_ISIM AS RUT_ADI,
ISNULL((SELECT SUM(BORC)-SUM(ALACAK) FROM TBLCAHAR H WHERE H.TARIH<@fromdate AND C.CARI_KOD=H.CARI_KOD AND H.PROJE_KODU='1'),0) AS DEVIR,
ISNULL((SELECT SUM(BORC) FROM TBLCAHAR H WHERE H.TARIH BETWEEN @FROMDATE AND @todate AND C.CARI_KOD=H.CARI_KOD AND H.PROJE_KODU='1'),0) AS BORC,
ISNULL((SELECT SUM(ALACAK) FROM TBLCAHAR H WHERE H.TARIH BETWEEN @FROMDATE AND @todate AND C.CARI_KOD=H.CARI_KOD AND H.PROJE_KODU='1'),0) AS ALACAK,
ISNULL((SELECT SUM(BORC)-SUM(ALACAK) FROM TBLCAHAR H WHERE H.TARIH<@todate AND C.CARI_KOD=H.CARI_KOD AND H.PROJE_KODU='1'),0) AS BAKIYE
from TBLCASABIT C
left outer JOIN TBLCARIKOD1 ON C.RAPOR_KODU1=TBLCARIKOD1.GRUP_KOD

bu, görebileceginiz üzere sadece ay içi durumu getiriyor ve disaridan ek bir tarih girisi yapmaya gerek kalmiyor. bu da isimi görebilir ama tblcasabit'ten tblcahar'a gittigim için cari hareketi olmayan müsterileri de getiriyor. bunlarin sayilari da çok fazla.

tblcahar'dan select yapsam her kolon için ayri kosullari nasil belirleyebilecegimi bulamadim.

Yukarı Dön
mbaykan Açılır Kutu İzle
Kidemli Üye
Kidemli Üye
Simge

Kayıt Tarihi: 06 Nisan 2007
Konum: izmir
Durum: Aktif Değil
Puanlar: 1181
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı mbaykan Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 26 Mayıs 2012 Saat 22:22
yaptigim karmasik degil.
CTE.. ile sanal tablolar yapip bunlari sorgumda kullaniyorum.
parametrik view olusturmak Sql'de kullanici tanimli fonksiyonlardan
Table valued function (sonucu tablo olan fonksiyon)'la mümkün
bu sorgunuzu daha güçlü yapar
ve kullanimi bir tablo ya da view'dan farksizdir

    SELECT * FROM dbo.Fonksiyon(parametre1,parametre2, ...)

sizin TBLCAHAR ile baslayip TBLCASABIT ve digerleri ile INNER JOIN
yaptiginiz sorgunuzda istedeginiz döneme ait kayitlari göstermeniz
tabii ki TBLCAHAR.CARI_KOD kolonuna göre GROUP BY'i da
sorgunuza koyup BORC,ALACAK gibi kolonlari toplamaniz gerekir.
Ben de sorgumda bunu yapiyorum.
Sizin CASABIT ve diger talolardan almak istediginiz bilgiler için de
yazidgimi fonksiyon su sekilde kullanilabilir

select
A.CARI_KOD,A.CARI_ISIM,C.ACIK1 AS TABELA_ADI, C.RAPOR_KODU1 AS RUT_KODU,GRUP_ISIM AS RUT_ADI,
A.BAKI1 AS DEVIR, A.BORC, A.ALACAK, A.BAKIYE
from dbo.UFN_CARI_DONEM_OZET('2012-01-01','2012-01-31') A
INNER JOIN TBLCASABIT C ON C.CARI_KOD=A.CARI_KOD
left outer JOIN TBLCARIKOD1 ON C.RAPOR_KODU1=TBLCARIKOD1.GRUP_KOD


Düzenleyen mbaykan - 26 Mayıs 2012 Saat 22:44
Mehmet Baykan
Yukarı Dön
Merkez Açılır Kutu İzle
Yeni Üye
Yeni Üye
Simge

Kayıt Tarihi: 20 Aralık 2011
Durum: Aktif Değil
Puanlar: 0
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Merkez Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 27 Mayıs 2012 Saat 00:24
Benim seviyem icin karmasik icin oldugunu düsünmüstüm yazdiginiz kodun, ama biraz daha dikkatle inceleyince daha anlasilir hale geliyor. Tekrar ilginiz icin tesekkür ederim.
Yukarı Dön
abastas Açılır Kutu İzle
Yeni Üye
Yeni Üye
Simge

Kayıt Tarihi: 20 Kasım 2008
Konum: Ankara
Durum: Aktif Değil
Puanlar: 8
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı abastas Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 03 Mayıs 2013 Saat 12:29
DBO.UFN_STOK_DONEM_OZET viewlardamidir acaba ben göremedim

tesekkürler
Yukarı Dön
mbaykan Açılır Kutu İzle
Kidemli Üye
Kidemli Üye
Simge

Kayıt Tarihi: 06 Nisan 2007
Konum: izmir
Durum: Aktif Değil
Puanlar: 1181
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı mbaykan Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 03 Mayıs 2013 Saat 13:17
VERITABANI'niz > Programmability > Functions > Scalar valued Functions
altindadir.
Mehmet Baykan
Yukarı Dön
abastas Açılır Kutu İzle
Yeni Üye
Yeni Üye
Simge

Kayıt Tarihi: 20 Kasım 2008
Konum: Ankara
Durum: Aktif Değil
Puanlar: 8
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı abastas Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 03 Mayıs 2013 Saat 16:44
tesekkürler bu verilere depo kodunu grup kodunu ve birim fiyatini nasil ekleyebilirim
Yukarı Dön
mbaykan Açılır Kutu İzle
Kidemli Üye
Kidemli Üye
Simge

Kayıt Tarihi: 06 Nisan 2007
Konum: izmir
Durum: Aktif Değil
Puanlar: 1181
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı mbaykan Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 04 Mayıs 2013 Saat 08:06
birim fiyat'tan hangi fiyati kasdediyorsunuz. Stok kartindaki alis veya satis fiyatlarindan biri ise kolay
ben satis fiyat-1 'e göre fonksiyonu degistirdim

ALTER FUNCTION UFN_STOK_DONEM_OZET(@TRH1 DATETIME,@TRH2 DATETIME)
RETURNS TABLE
RETURN (
WITH CTE1 AS (
SELECT STOK_KODU, DEPO_KODU DEPO,SUM(CASE WHEN STHAR_GCKOD='G' THEN STHAR_GCMIK ELSE -STHAR_GCMIK END) DEVIR
FROM TBLSTHAR (NOLOCK)
WHERE STHAR_TARIH < @TRH1 AND STOK_KODU IN (SELECT DISTINCT STOK_KODU FROM TBLSTHAR WHERE STHAR_TARIH BETWEEN @TRH1 AND @TRH2)
GROUP BY STOK_KODU,DEPO_KODU
),
CTE2 AS (SELECT STOK_KODU, DEPO_KODU DEPO, SUM(CASE WHEN STHAR_GCKOD='G' THEN STHAR_GCMIK ELSE 0 END) GIRIS,
SUM(CASE WHEN STHAR_GCKOD='C' THEN STHAR_GCMIK ELSE 0 END) CIKIS
FROM TBLSTHAR (NOLOCK)
WHERE STHAR_TARIH BETWEEN @TRH1 AND @TRH2
GROUP BY STOK_KODU,DEPO_KODU
)

SELECT ISNULL(B.GRUP_KODU,C.GRUP_KODU) GRUP_KODU,ISNULL(S2.STOK_KODU,S1.STOK_KODU) KOD,ISNULL(B.STOK_ADI,C.STOK_ADI) STOK_ADI,ISNULL(S2.DEPO,S1.DEPO) DEPO,B.SATIS_FIAT1 BIRIM_FIYAT,
ISNULL(DEVIR,0) DEVIR,GIRIS,CIKIS,ISNULL(DEVIR,0) + GIRIS - CIKIS AS KALAN
FROM CTE2 S2
FULL JOIN CTE1 S1 ON S1.STOK_KODU=S2.STOK_KODU AND S1.DEPO=S2.DEPO
LEFT JOIN TBLSTSABIT B ON S2.STOK_KODU=B.STOK_KODU
LEFT JOIN TBLSTSABIT C ON S1.STOK_KODU=C.STOK_KODU
)


Düzenleyen mbaykan - 04 Mayıs 2013 Saat 08:12
Mehmet Baykan
Yukarı Dön
 Yanıt Yaz Yanıt Yaz
  Konu Paylaş   

Forum Atla Forum İzinleri Açılır Kutu İzle

Forum Software by Web Wiz Forums® version 11.10
Copyright ©2001-2017 Web Wiz Ltd.

Bu Sayfa 0,609 Saniyede Yüklendi.