AIFA AKADEMI · Kurumsal Wiki
4.310 makale
Ana sayfa Kurumsal Wiki › Destek › Processes › PROC-190

ERP Devir Süreci v3

SUPPORT_PROCESSMOD-CARIERPGOLD_COREACTIVEHIGHDOCUMENTED
Kanonik kaynak: markdown · bu sayfa üretilmiş görünümdür

Kaynak: KB-v1 08_SupportPlaybooks/Processes/PROC-190.mdSurecler/*.doc (destek süreç dokümanı; parola/IP/terminal maskelenmiş). Gerçeklik: DOCUMENTED — kodla doğrulanmış değil.

ERP Devir Süreci v3

Kimlik: PROC-190 · Ürün: ERPGOLDV2 · Kategori: Devir ve yıl sonu · Katalog: ERP Devir Süreci v3

Kaynak: AifaSoft destek süreç dokümanı (Word). Şifre, kullanıcı adı, terminal no ve IP bilgileri kaynak aşamasında maskelenmiştir; görseller resimli süreç kitabındadır.

ERPGOLDV2 DEVİR SÜRECİ V3.0

Doküman TipiERPGOLDV2Doküman No03HazırlayanMünür SEZERYayın Tarihi29.12.2022

ERPGOLD programı; belirli bir tarihten öncesini devir etmek istenirse aşağıdaki query çalıştırılacaktır.

Aşağıdaki query çalıştırılmadan önce dikkat edilecek hususlar;

  1. Backup alınız.

Not: Hata olursa geri dönülecek, işlem tamamlanırsa arşiv olarak Sql’ e restore edilecek.

  1. Devir alınacak günün Takoz Stokları tamamen SIFIR olmak zorundadır.

NOT: Eğer takoz varsa bir cari karta çıkış yapılarak stoğu boşaltınız. Devirden sonra takozları çıkış yaptığınız cari karttan geri alınız ve Takoz Stoklarının eski haline geldiğini kontrol ediniz.

NOT: Eğer örneğin; 31 Aralık’ ta alınan takozlar 2 Ocak’ ta çıkış yapılmış. Devir’ i ise 1 Ocak’ tan itibaren almak istiyorsunuz. 31 Aralık’ ta alınan takozlar devirin içine gireceği için Bilanço tutmayacaktır ve takoz stok -1 adet olarak yansıyacaktır. Bu yüzden örnekte verilen işleme uygun takozların çıkışını takoz girişinin yapıldığı tarihe yapınız.

  1. Devir alınacak günün Çeşni Stokları tamamen SIFIR olmak zorundadır.

NOT: Eğer çeşni varsa bir cari karta çıkış yapılarak stoğu boşaltınız. Devirden sonra çeşnileri çıkış yaptığınız cari karttan (Takoz ağırlığı 0,01 yapabilirsiniz) geri alınız ve Çeşni Stoklarının eski haline geldiğini kontrol ediniz.

  1. Devir alınacak günün Maden Stokları TEK KASA olmak zorundadır.

Not: Eğer birden fazla kasa ise tek kasaya gerekli transferleri yapınız. Devirden sonra tekrar transferleri yaparak stokların eski haline geldiğini kontrol ediniz.

  1. Devir alınacak gün ile son günün Nakit ve Maden Stokları (operasyonel görünüm ve belgelendirilmiş görünüm) (maliyeti göster ile) not ediniz.

Not: Devirden sonra kontrol edilecektir.

  1. Bilançoyu son kez alıp kaydediniz ve listeden son bilançoyu not ediniz. (En alt satır)

Not: Devirden sonra kontrol edilecektir.

  1. Bilanço ekranının sol tarafında bulunan Bakiyeler, Stoklar ve İşçilik alanlarını not ediniz.

Not: Devirden sonra kontrol edilecektir.

  1. Query nin ilk satırında yer alan Declare @Tarih Date='2022-12-31' alanında devir edilecek tarihi giriniz. Örneğin bu kodda 1 Ocak 2023 öncesi devir edilecektir.

NOT 1: Arşiv veri tabanı içerisinde işlem yapılmasını engellemek için aşağıdaki kod bloğu çalıştırılır.

ALTER Trigger [Cari].[AcceptTransaction] ON [Cari].[Islemler] AFTER INSERT,UPDATE,DELETE

AS

BEGIN

RAISERROR('BU VERI TABANI ISLEME KAPATILMISTIR. ',16,1)

ROLLBACK

END

NOT 2: Arşiv veri tabanını görmek için;

  1. ERPGLOBAL adında veri tabanı oluşturularak Company tablosu oluşturulur.

  2. Company ve DBName adlarındaki sütunlar nvarchar(50) veri tipiyle oluşturulur.

  3. Company tablosuna veri tabanlarının adları eklenerek müşteriye kolay giriş imkanı sunulur.

NOT 3: Stoklarda ya da bakiyelerde olası bir tutarsızlık olursa; Stok.StokHaraketleri tablosu ve/veya Cari.BakiyeIslem tablosunda Tarih alanı Null olan kayıtlar vardır. Manuel olarak giriş çıkış yapılarak tutarsızlık düzeltilir.

NOT 4: İşlem yapıldıktan sonra fiş verirken eski bakiye yazmıyor ise aşağıdaki kod bloğu çalıştırılır.

ALTER Function [Bakiye].[GetBakiyeFisNo] (@HesapType int,@HesapId int,@FisNo int)

RETURNS TABLE

as

return

Select top 10000 Kod.Kodu as BAKIYE, Case When Bakiye \< 0 Then Abs(Bakiye) else null end as ALACAK, Case When Bakiye> 0 Then Bakiye else null end as BORC,IsNull((Bakiye *-1) * KurA.Alis ,0) as NET

From Cari.BakiyeKodlari Kod

Left Join

(

Select B.BirimId as BakiyeId,Sum(Bakiye) as Bakiye

from Cari.BakiyeIslem B

Left Join Cari.Islemler I on B.IslemId=I.Id

Where (B.HesapType =@HesapType And B.HesapId =@HesapId) And (I.FisNo\<=@FisNo or B.IslemId =-1)

Group By B.BirimId

) Bak on Bak.BakiyeId =Kod.Id

Left Join Sistem.GetKurListesi (GETDATE()) KurA on KurA.BirimId =Kod.Id

Where (Kod.IsStatic='False' And Bakiye\<>0) or Kod.IsStatic='True' order by Kod.IsStatic desc, Kod.SiraNo asc

DEVİR QUERY

Declare @Tarih Date='2023-01-01'

print 'Triggerlar Disable Ediliyor.'

Alter Table Cari.Islemler DISABLE TRIGGER ALL

print 'Geçici Tablolar Oluşturuluyor.'

IF OBJECT_ID(N'tempdb..#TBLDevirBakiye') IS NULL

BEGIN

CREATE TABLE #TBLDevirBakiye(IslemID int,Tarih Date,HesapType int,HesapId int,KasaId int,BirimId int,Bakiye decimal(18,2),RefNo nvarchar(36)) ON [PRIMARY]

END

ELSE

BEGIN

TRUNCATE TABLE #TBLDevirBakiye

END

IF OBJECT_ID(N'tempdb..#TBLDevirStok') IS NULL

BEGIN

CREATE TABLE #TBLDevirStok(IslemID int,Bolum int,IslemTuru int,Tarih Date,SubeId int,KasaId int,StokTipi int,StokId int,Adet int,Miktar Decimal(18,2),Milyem Decimal(18,5),Has Decimal(18,2),Maliyet Decimal(18,2),VaryantId int) ON [PRIMARY]

END

ELSE

BEGIN

TRUNCATE TABLE #TBLDevirStok

END

print 'Devir Bakiyeleri Geçici Dosyalara Yazılıyor.'

INSERT INTO #TBLDevirBakiye

Select -1 as IslemId,DATEADD (day, -1,@Tarih) as Tarih,0 as HesapType,HesapId ,KasaId,BirimId ,Sum(Bakiye) as Bakiye,NEWID() from Cari.BakiyeIslem Where Tarih <@Tarih

group by HesapId,KasaId ,BirimId Having SUM(Bakiye)\<>0

print 'Devir Stokları Geçici Dosyalara Yazılıyor.'

INSERT INTO #TBLDevirStok

--Select -1 as IslemId,Bolum,H.IslemTuru ,DATEADD (day, -1,@Tarih),H.SubeId ,H.KasaId ,H.StokTipi ,H.StokId ,SUM(H.Adet) as Adet,SUM(H.Miktar) as Miktar,Fn.Bol(SUM(H.Has),Sum(H.Miktar)) as Milyem,Sum(H.Has) as Has , SUM(H.Maliyet) as Maliyet,H.VaryantId from Stok.StokHaraketleri H Left Join Cari.Islemler I on I.Id=H.IslemId Where IsNull(I.Tarih,Convert(date,I.InsertDate)) <@Tarih And StokTipi in (1,2)

--Group by Bolum ,H.IslemTuru ,H.SubeId ,H.KasaId ,H.StokTipi ,H.StokId ,H.VaryantId

Select -1 as IslemID,0 as Bolum,Case When (Miktar) >0 Then 0 Else 1 End as IslemTuru,@Tarih as Tarih,SubeId,KasaId,1 as StokTipi,M.Id as StokId,Adet ,Miktar ,Milyem,Has,Convert(Decimal(18,2), (M.Maliyet * K.Alis)) as Maliyet,IsNull(VaryantId,0) as VaryantId from Stok.GetMadenStoklari (0,0,DATEADD (day,-1,@Tarih),0) M Left Join Sistem.GetKurListesi (DATEADD (day,-1,@Tarih)) K on K.Birim =M.Birim

UNION ALL

Select -1 as IslemId,0 as Bolum,Case When Sum(H.Miktar) >0 Then 0 Else 1 End as IslemTuru,DATEADD (day, -1,@Tarih),H.SubeId ,H.KasaId ,H.StokTipi ,H.StokId ,SUM(H.Adet) as Adet,SUM(H.Miktar) as Miktar,Fn.Bol(SUM(H.Has),Sum(H.Miktar)) as Milyem,Sum(H.Has) as Has , SUM(H.Maliyet) as Maliyet,H.VaryantId from Stok.StokHaraketleri H Left Join Cari.Islemler I on I.Id=H.IslemId Where IsNull(I.Tarih,Convert(date,I.InsertDate)) <@Tarih And StokTipi =2

Group by H.SubeId ,H.KasaId ,H.StokTipi ,H.StokId ,H.VaryantId having sum(H.Miktar)<>0

print 'İşlemler ve Bilançolar Arşivleniyor.'

Delete From Cari.Islemler Where Tarih <@Tarih

Delete From Cari.History Where Tarih <@Tarih

Delete From Cari.Transferler Where Tarih <@Tarih

Delete From Cari.IslemDetaylari Where IslemId not in (Select Id From Cari.Islemler)

Delete From Bilanco.Bilancolar Where Tarih <@Tarih

print 'Stoklar Arsivleniyor.'

Delete From Stok.StokHaraketleri Where (IslemId not in (Select Id From Cari.Islemler) OR Tarih <@Tarih ) OR Bolum<>0

Delete From Cari.BakiyeIslem Where IslemId not in (Select Id From Cari.Islemler)

print 'Bakiyeler ve Stoklar Aktarılıyor.'

Insert Into Cari.BakiyeIslem Select * from #TBLDevirBakiye

Insert Into Stok.StokHaraketleri Select * from #TBLDevirStok

print 'Gecmis Kurlar Temizleniyor.'

Delete FRom Sistem.Kurlar Where Tarih <@Tarih

print 'Triggerlar Enable Ediliyor.'

Alter Table Cari.Islemler ENABLE TRIGGER ALL

GO

print 'Procedurler Güncelleniyor.'

GO

ALTER Function [Stok].[GetMadenMaliyeti] (@SubeId int,@KasaId int,@StokId int,@Tarih as Date,@StokMiktar Decimal(18,2))

returnS Decimal(18,2)

as

BEGIN

Declare @IscTur int=0

Declare @BirimId int =0

Select @IscTur=IscTuru,@BirimId =MaliyetBirimId From Stok.Maden Where Id=@StokId

Declare @Miktar Decimal(18,2)=0

Declare @Maliyet Decimal(18,2)=0

Declare @ToplamMiktar Decimal(18,2)=0

Declare @ToplamMaliyet Decimal(18,2)=0

Declare @IsExit as int =0

DECLARE CRS_MadenBirimMaliyetTL CURSOR FOR

Select top 5000 Case When @IscTur =0 Then H.Adet Else H.Miktar End as Miktar, Fn.Bol(Maliyet,Kur.Alis) as Maliyet

FRom Stok.StokHaraketleri H

Left Join Sistem.Kurlar Kur on Kur.Tarih =H.Tarih and Kur.BirimId =@BirimId

Where ( H.Tarih<=@Tarih or @Tarih is null) and (H.SubeId=@SubeId or @SubeId =0) And (H.KasaId =@KasaId Or @KasaId =0) And H.StokId=@StokId and StokTipi =1 And H.IslemTuru =0

Order By IslemId Desc

OPEN CRS_MadenBirimMaliyetTL

FETCH NEXT FROM CRS_MadenBirimMaliyetTL INTO @Miktar,@Maliyet

WHILE @@FETCH_STATUS =0 and @IsExit =0

BEGIN

if (@ToplamMiktar + @Miktar)<=@StokMiktar

BEGIN

set @ToplamMiktar +=@Miktar

Set @ToplamMaliyet +=@Maliyet

END

ELSE

BEGIN

Set @ToplamMaliyet +=FN.Bol (@Maliyet ,@Miktar) * (@StokMiktar - @ToplamMiktar)

Set @ToplamMiktar = @StokMiktar

SET @IsExit =1

END

FETCH NEXT FROM CRS_MadenBirimMaliyetTL INTO @Miktar,@Maliyet

END

CLOSE CRS_MadenBirimMaliyetTL

DEALLOCATE CRS_MadenBirimMaliyetTL

RETURN CONVERT(Decimal(18,2), @ToplamMaliyet)

END

UPDATE Stok.StokHaraketleri SET KasaId=1

Kaynaklar

  • SRC-PROC-DOC — süreç dokümanı #190