Go3'te FİFO elde kalan malzeme maliyeti (Kalan mal tutarı)

Gönderen Konu: Go3'te FİFO elde kalan malzeme maliyeti (Kalan mal tutarı)  (Okunma sayısı 1890 defa)

0 Üye ve 3 Ziyaretçi konuyu incelemekte.

Çevrimdışı odcy2000

  • Yeni Kullanıcı
  • *
  • Karma: 0
Merhaba arkadaşlar GO3 kullanıyorum. Benim yapmak istediğim şu, excel de yaptım. Ancak sql sorgusunu yazıp trigger ile logo'da bir alana aktaracağım. Yapmak istediğim;
Örnek :
10.04.2018 gelen malzeme  AA MALI - 10 ADET * 10 = 100
21.05.2018 gelen malzeme AA MALI -  15 ADET * 15 = 225 TOPLAM 325/ 25 = MALİYET - 13

30.05.2018 satılan malzeme AA MALI - 8 ADET * 25

İLK GELEN MALDAN KALAN 2 ADET * 10 = 20
2.GELEN MALDAN KALAN 15 ADET * 15 = 225 TOPLAM 245/17 = MALİYET - 14,41 OLACAK
Yukarıdaki işlemin sorgusu lazım bir türlü beceremedim. Mikro programında bir sorgu var güzel çalışıyor ancak oradaki fonksiyonları uyarlarken bir hata da takılı kaldım. Devam edemiyorum.
Yardımlarınız için şimdi den hepinize çok teşekkür ederim. İyi çalışmalar, Saygılarımla,

Çevrimdışı hyponectia

  • Logo Kullanıcısı
  • **
  • Karma: 0
  • hyponectia.com
Merhaba,

Çıkış yapılan malzemenin giriş kontrolünü nereden yapıyorsunuz?

Eğer ki SLTRANS tablosu üzerinden takip edebiliyorsanız, IOCODE IN (1,2) ile ambardan ve dışarıdan yapılan girişleri REMAMOUNT ile takip edip, giriş fiyatını da oradan alabilirsiniz.

Kolay gelsin.

Çevrimdışı odcy2000

  • Yeni Kullanıcı
  • *
  • Karma: 0
Merhaba cevap için teşekkür ederim. Ancak dediğin gibi SLTRANS hiçbir veri görünmüyor. O dediğini nasıl yapabiliriz veya başka bir yolu varmı? Teşekkürler. İyi çalışmalar,

Çevrimdışı ByBirol®

  • Logo Sistem Administrator
  • Logo Uzmanı
  • *****
  • Karma: 18
  • admin@artibilisim.com Logo Çözüm Ortağı
SLTRANS seri ve lotlu işlemleri takip eder, STLINE bakınız

Çevrimdışı odcy2000

  • Yeni Kullanıcı
  • *
  • Karma: 0
Evet biz seri lot takibi yapmadığımız için SLTRANS tablosu boş geliyor.

Çevrimdışı Sofu Ahmed

  • Yeni Kullanıcı
  • *
  • Karma: 0
Merhaba,

Çalışma parametresinden Fıfo seçip, Envanteri çalıştırırsanız inanıyorum ki istediğinizden fazlasını verecektir. Logo bu verilerin çoğunu Stlıne alıyor fakat, Mantıksal hesaplamaları kendi içinde yapıyor.


Çevrimdışı odcy2000

  • Yeni Kullanıcı
  • *
  • Karma: 0
Merhaba cevaplar için teşekkür ederim. Ancak Go3'teki FİFO işimizi görmüyor. Yani yanlış maliyet veriyor. Yukarıdaki örneği dediğiniz gibi yaptım ancak aynı maliyeti vermiyor.

Çevrimdışı ByBirol®

  • Logo Sistem Administrator
  • Logo Uzmanı
  • *****
  • Karma: 18
  • admin@artibilisim.com Logo Çözüm Ortağı
yanlış diye bişey yok , ya ürünleriniz negative düşmüştür yada sizin aklınızdaki maliyet mantıgı global degil

Çevrimdışı Sofu Ahmed

  • Yeni Kullanıcı
  • *
  • Karma: 0
Merhaba,

Birol beyin belirttiği gibi yanlışlık olmaz sadece gözünüzden kaçan bazı noktalar vardır. Siz isterseniz hatalı olduğuna inandığınız Stok kaleminin bir tanesinin manuel hesaplamasını yapın sonrasında logonun verdiği rakamları yazıp siteye yükleyin bakalım farklılık nereden geliyor.



Çevrimdışı odcy2000

  • Yeni Kullanıcı
  • *
  • Karma: 0
Evet arkadaşlar yanlışlık bendeymiş eksiye düşmeden kaynaklanmış. İlginize teşekkürler. İyi çalışmalar,
Bu arada arkadaşlar yeri burası mı? bilmiyorum ama envanter raporundaki bir stoğun maliyetini trigger ile stok kartlarındaki her hangi bir özel koda nasıl getirebilirim. Teşekkürler.

Çevrimdışı Sofu Ahmed

  • Yeni Kullanıcı
  • *
  • Karma: 0
Bu konuyu bayinize danışın çünkü özel çözüm gerekecektir. Logonun vermiş olduğunu envanter hesaplamasını kendiniz manuel yapmanız gerekecektir.


Çevrimdışı ByBirol®

  • Logo Sistem Administrator
  • Logo Uzmanı
  • *****
  • Karma: 18
  • admin@artibilisim.com Logo Çözüm Ortağı
Evet arkadaşlar yanlışlık bendeymiş eksiye düşmeden kaynaklanmış. İlginize teşekkürler. İyi çalışmalar,
Bu arada arkadaşlar yeri burası mı? bilmiyorum ama envanter raporundaki bir stoğun maliyetini trigger ile stok kartlarındaki her hangi bir özel koda nasıl getirebilirim. Teşekkürler.

trigger ile maliyet hesabı yapttırıp bi yere yazmak performans açısından diger kullanıcıları etkileyecektir , kaldıki logoda bile maliyet servisi çaluşırken başka işlem yaptırılmaz , sizin trigeriniz çalışırken başka kullanıcı başka bi kayıt giriyor olabilir , bu hem hesaplama hatası hemde performans sorunu yaşatacaktır , başka bir çözüm düşünmek gerekir , dilerseniz bu konuda yardımcı olabiliriz.

Çevrimdışı MYERP

  • Logo Kullanıcısı
  • **
  • Karma: 0
Merhaba arkadaşlar GO3 kullanıyorum. Benim yapmak istediğim şu, excel de yaptım. Ancak sql sorgusunu yazıp trigger ile logo'da bir alana aktaracağım. Yapmak istediğim;
Örnek :
10.04.2018 gelen malzeme  AA MALI - 10 ADET * 10 = 100
21.05.2018 gelen malzeme AA MALI -  15 ADET * 15 = 225 TOPLAM 325/ 25 = MALİYET - 13

30.05.2018 satılan malzeme AA MALI - 8 ADET * 25

İLK GELEN MALDAN KALAN 2 ADET * 10 = 20
2.GELEN MALDAN KALAN 15 ADET * 15 = 225 TOPLAM 245/17 = MALİYET - 14,41 OLACAK
Yukarıdaki işlemin sorgusu lazım bir türlü beceremedim. Mikro programında bir sorgu var güzel çalışıyor ancak oradaki fonksiyonları uyarlarken bir hata da takılı kaldım. Devam edemiyorum.
Yardımlarınız için şimdi den hepinize çok teşekkür ederim. İyi çalışmalar, Saygılarımla,

Mikrodaki fonskiyon ve sorguyu paylaş yardımcı olayım takıldığın noktada

Çevrimdışı odcy2000

  • Yeni Kullanıcı
  • *
  • Karma: 0
Merhaba MYERP, aşağıdaki Mikro'daki sorgu fonksiyonları belirttim.

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[_FIFO]') AND type in (N'U'))
DROP TABLE [dbo].[_FIFO]
GO


CREATE TABLE
_FIFO
(stok_kodu NVARCHAR(25),
stok_ismi NVARCHAR (50),
depodaki_miktar FLOAT,
kalan_fifo_deger FLOAT)
GO

WITH cteStockSum
AS      (

      SELECT  sth_stok_kod,
            SUM(CASE  WHEN sth_tip = '1' THEN 0-sth_miktar
                      WHEN sth_tip = '0' then sth_miktar END) AS EldekiStok
            FROM  dbo.STOK_HAREKETLERI
      GROUP BY  sth_stok_kod
),

 
TerstenGirenToplami
AS      (
   SELECT  s.sth_stok_kod,
           s.sth_tarih,
           (
               SELECT SUM(i.sth_miktar)
                 FROM dbo.STOK_HAREKETLERI AS i
                WHERE i.sth_stok_kod = s.sth_stok_kod
                  AND i.sth_tip IN ('0', '0')
                  AND i.sth_tarih >= s.sth_tarih
           ) AS YuruyenMiktar,
           s.sth_miktar AS BuStok
     FROM  dbo.STOK_HAREKETLERI AS s
    WHERE  s.sth_tip IN ('0', '0')

),

cteWithLaststh_tarih
AS      (
  SELECT   w.sth_stok_kod,
           w.EldekiStok,
           SonKismiStok.sth_tarih,
           SonKismiStok.StockToUse,
           SonKismiStok.RunningTotal,
           w.EldekiStok - SonKismiStok.RunningTotal + SonKismiStok.StockToUse AS UseBuStok

      FROM cteStockSum AS w
           CROSS APPLY  ( SELECT TOP(1) 
                                 z.sth_tarih,
                                 z.BuStok AS StockToUse,
                                 z.YuruyenMiktar AS RunningTotal
                            FROM TerstenGirenToplami AS z
                           WHERE z.sth_stok_kod = w.sth_stok_kod
                             AND z.YuruyenMiktar >= w.EldekiStok
                        ORDER BY z.sth_tarih DESC ) AS SonKismiStok

)
--
INSERT INTO _FIFO
(
   stok_kodu,
stok_ismi,
   depodaki_miktar,
   kalan_fifo_deger
)
--

SELECT y.sth_stok_kod as [Stok Kodu],
       dbo.fn_StokIsmi(y.sth_stok_kod) as [Stok Ismi],
       y.EldekiStok as Depomuzdaki_Miktar ,
       SUM(CASE WHEN e.sth_tarih = y.sth_tarih THEN y.UseBuStok
                ELSE e.sth_miktar
                END * Fiyat.Fiyat) AS KalanDeger
  FROM cteWithLaststh_tarih AS y
 INNER JOIN  dbo.STOK_HAREKETLERI AS e
    ON e.sth_stok_kod = y.sth_stok_kod
   AND e.sth_tarih >= y.sth_tarih
   AND e.sth_tip IN ('0', '0')
 CROSS APPLY  (
 
       SELECT TOP(1)       
              dbo.fn_StokHareketNetBirimFiyat(
sth_tutar,
sth_iskonto1,
sth_iskonto2,
sth_iskonto3,
sth_iskonto4,
sth_iskonto5,
sth_iskonto6,
sth_masraf1,
sth_masraf2,
sth_masraf3,
sth_masraf4,
sth_otvtutari,
sth_oivtutari,
sth_tip,
0,
sth_har_doviz_kuru,
sth_alt_doviz_kuru,
sth_stok_doviz_kuru,
nullif(sth_miktar,0)) as Fiyat
         FROM dbo.STOK_HAREKETLERI AS p
        WHERE p.sth_stok_kod = e.sth_stok_kod
        and dbo.fn_DegerFarki_mi(p.sth_cins)=0
          AND p.sth_tarih <= e.sth_tarih
          AND p.sth_tip = 0
        ORDER BY p.sth_tarih DESC
      ) AS Fiyat
GROUP BY  y.sth_stok_kod,
          y.EldekiStok
ORDER BY   y.sth_stok_kod
SELECT     stok_kodu, stok_ismi, depodaki_miktar, kalan_fifo_deger
FROM         _FIFO

Çevrimdışı odcy2000

  • Yeni Kullanıcı
  • *
  • Karma: 0
Aşağıdakilerde fonksiyonlar;

USE [GO3]
GO
/****** Object:  UserDefinedFunction [dbo].[fn_DegerFarki_mi]    Script Date: 12/14/2018 13:51:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER   FUNCTION [dbo].[fn_DegerFarki_mi] (@TypeNo as tinyint)
RETURNS  tinyint AS
BEGIN
Declare @Sonuc as tinyint
IF (@TypeNo =8 )or(@TypeNo =15)
set @Sonuc =  1
ELSE
set @Sonuc =  0
RETURN @Sonuc
END


USE [GO3]
GO
/****** Object:  UserDefinedFunction [dbo].[fn_GetByteParam]    Script Date: 12/14/2018 13:51:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[fn_GetByteParam](@VarOffset as integer)
RETURNS integer
AS
BEGIN
Declare @value integer
SELECT @value = SUBSTRING(Param_buf, @VarOffset,1)
FROM VERI_TABANI_PARAMETRELERI WITH (NOLOCK)
WHERE Param_id=200 AND Param_item=0
RETURN (@value)
END



USE [GO3]
GO
/****** Object:  UserDefinedFunction [dbo].[fn_GetResource]    Script Date: 12/14/2018 13:52:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[fn_GetResource](@ResType AS char, @ResNo as integer, @LangChar char(1) = '')
RETURNS nvarchar(50)
AS
BEGIN
RETURN  MikroDB_V14.dbo.fn_GetResource(@ResType, @ResNo, @LangChar)
END


set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[fn_StokHareketNetDeger] ( @HTutar as Float,
@Hisk1 as Float,
@Hisk2 as Float,
@Hisk3 as Float,
@Hisk4 as Float,
@Hisk5 as Float,
@Hisk6 as Float,
@Mas1 as Float,
@Mas2 as Float,
@Mas3 as Float,
@Mas4 as Float,
@OtvTutar as Float,
@OivTutar as Float,
@Sthtip as tinyint,
@Doviztip as tinyint,
@HarKur as Float,
@HarAltKur as Float,
@HarStkKur As Float
)
RETURNS Float AS
BEGIN
Declare @NetTutar As Float
Declare @OTV_Eklenecek_Fl as bit
Declare @OIV_Eklenecek_Fl as bit
If (@Sthtip=0) And (@OtvTutar <> 0)
SET @OTV_Eklenecek_Fl = dbo.fn_GetByteParam(1048)
Else
SET @OTV_Eklenecek_Fl = 0
If (@Sthtip=0) And (@OivTutar <> 0)
SET @OIV_Eklenecek_Fl = dbo.fn_GetByteParam(3906)
Else
SET @OIV_Eklenecek_Fl = 0
SET @NetTutar = @HTutar - @Hisk1 - @Hisk2 - @Hisk3 - @Hisk4 - @Hisk5 - @Hisk6 + @Mas1 + @Mas2 + @Mas3 + @Mas4
IF (@OTV_Eklenecek_Fl = 1)
SET @NetTutar = @NetTutar + @OtvTutar
IF (@OIV_Eklenecek_Fl = 1)
SET @NetTutar = @NetTutar + @OivTutar
if @HarAltKur=0 SET @HarAltKur=1
if @HarStkKur=0 SET @HarStkKur=1
SET @NetTutar =  CASE
WHEN @Doviztip=0 THEN @NetTutar * @HarKur
WHEN (@Doviztip=1) AND (@HarAltKur>0) THEN (@NetTutar * @HarKur) / @HarAltKur
WHEN (@Doviztip=2) AND (@HarStkKur>0) THEN (@NetTutar * @HarKur) / @HarStkKur
WHEN (@Doviztip=3) THEN @NetTutar
ELSE 0
END
RETURN @NetTutar
END


set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[fn_StokHareketNetBirimFiyat] ( @HTutar as Float,
@Hisk1 as Float,
@Hisk2 as Float,
@Hisk3 as Float,
@Hisk4 as Float,
@Hisk5 as Float,
@Hisk6 as Float,
@Mas1 as Float,
@Mas2 as Float,
@Mas3 as Float,
@Mas4 as Float,
@OtvTutar as Float,
@OivTutar as Float,
@Sthtip as tinyint,
@Doviztip as tinyint,
@HarKur as Float,
@HarAltKur as Float,
@HarStkKur As Float,
@sth_miktar As Float
)
RETURNS Float AS
BEGIN
RETURN Round((dbo.fn_StokHareketNetDeger (@HTutar,@Hisk1,@Hisk2,@Hisk3,@Hisk4,@Hisk5,@Hisk6,@Mas1,@Mas2,@Mas3,@Mas4,@OtvTutar,@OivTutar,@Sthtip,
@Doviztip,@HarKur,@HarAltKur,@HarStkKur) / @sth_miktar),8)
END

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[fn_StokIsmi](@SKod as nvarchar(25))
RETURNS nvarchar(50) AS
BEGIN
Declare @Isim as nvarchar(50)
Select @Isim=sto_isim from dbo.STOKLAR WITH (NOLOCK) WHERE sto_kod=@SKod
IF @Isim is NULL SET @Isim = dbo.fn_GetResource('M',430,DEFAULT)
Return @Isim
END
« Son Düzenleme: 15.12.2018, 11:34 Gönderen: odcy2000 »