Kaynak: KB-v1
08_SupportPlaybooks/Processes/PROC-210.md←Surecler/*.doc(destek süreç dokümanı; parola/IP/terminal maskelenmiş). Gerçeklik: DOCUMENTED — kodla doğrulanmış değil.
ERPBOOSTER Kurulumu
Kimlik: PROC-210 · Ürün: ERPGOLDV2 · Kategori: Kurulum, bağlantı ve sunucu · Katalog: ERPBOOSTER Kurulumu
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.
- Sistem.Activity Tablosunu Oluşturma
/****** Object: Table [Sistem].[Activity] Script Date: 11.10.2023 12:35:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [Sistem].[Activity](
[ActivitySubeId] [int] NULL,
[LastDate] [datetime] NULL
) ON [PRIMARY]
GO
- Cari.Islemler altındaki AcceptTransaction Triggerına Aşşağıdaki Kodu Ekleyin.
------YAPILAN ISLEMLERDE ACTIVITY DATE YAZILIYOR
MERGE INTO [Sistem].[Activity] AS Target USING (SELECT @subeId AS ActivitySubeId, GETDATE() AS LastDate) AS Source
ON Target.ActivitySubeId = Source.ActivitySubeId
WHEN MATCHED THEN UPDATE SET Target.LastDate = Source.LastDate
WHEN NOT MATCHED BY TARGET THEN INSERT (ActivitySubeId, LastDate)
VALUES (Source.ActivitySubeId, Source.LastDate);
(görsel — süreç kitabında)
- Pozisyon.Write Stored Procedurunu Düzenleyin
ALTER Proc [Pozisyon].[Write]
as
if (Select count(*) from Sistem.Activity Where LastDate >(Select IsNull(Max(InsertDate),'2020-01-01') FRom Pozisyon.Pozisyonlar ))=0 RETURN
-----ONCE TEMP DOSYA YOKSA OLUSTUR VARSA ICINI TEMIZLE
IF OBJECT_ID(N'tempdb..#TBLPozisyonlar') IS NULL
BEGIN
CREATE TABLE [#TBLPozisyonlar]([SubeId] [int] NULL, [Birim] [nvarchar](max) NULL, [Bakiye] [decimal](18, 2) NULL, [Kur1] [decimal](18, 5) NULL, [Kur2] [decimal](18, 5) NULL, [Pozisyon] [decimal](18, 2) NULL, [BBirim] [nvarchar](max) NULL) ON [PRIMARY]
END
ELSE
BEGIN
TRUNCATE TABLE #TBLPozisyonlar
END
--------------------------------------------------------------
-----GECICI POZISYON TABLOSUNA TUM SUBELERIN POZISYONLARINI HESAPLAYARAK YAZIYORUZ
INSERT INTO #TBLPozisyonlar
Select H.SubeId,H.Birim,H.Bakiye,BK.Alis as Kur1,PK.Alis as Kur2,CONVERT(Decimal(18,2), Fn.Bol( (H.Bakiye * Bk.Alis),Pk.Alis)) as Pozisyon, B.Kodu as BBirim from
(
Select SubeId,Birim,Sum(Bakiye) as Bakiye From
(
Select K.SubeId, BK.Kodu as Birim,B.Bakiye as Bakiye
from
(
Select KasaId,BirimId,Sum(Bakiye) as Bakiye from Cari.BakiyeIslem Where BirimId <>-1 group by KasaId,BirimId
) B
Left Join Sistem.Kasalar K on K.Id =B.KasaId
Left Join Cari.BakiyeKodlari Bk on Bk.Id =B.BirimId
UNION ALL
---NAKIT STOKLARI
Select SubeId, AnaBirim ,Sum(Miktar) From Stok.GetNakitStoklari (0,0,null) group by SubeId, AnaBirim
UNION ALL
---MADEN STOKLARI
Select SubeId,AnaBirim,Sum(Miktar * StabilMilyem) as Has From Stok.GetMadenStoklari (0,0,null,'False') group by SubeId,AnaBirim
UNION ALL
---TAKOZ STOKLARI
SELECT T.SubeId,T.Birim,SUM(T.Has) FROM Stok.GetTakozSirketStoklari (0,0,null)
CROSS APPLY (VALUES(SubeId,'HAS',Case When R='False' Then Miktar * 0 Else AuHas end), (SubeId, 'GUM', AgHas ), (SubeId, 'PLT', PltHas ), (SubeId, 'PLD', PldHas )) t(SubeId,Birim, Has) Where Adet \<>0 and Has\<>0
group by T.SubeId,Birim
) a
Group by SubeId,Birim having Sum(Bakiye)<>0
) H
Left Join Sistem.Subeler S on S.Id =H.SubeId
Left Join Sistem.Birimler B on B.Id =S.BilancoBirimId
Left Join Sistem.GetKurListesi(GETDATE()) PK on PK.Birim=B.Kodu
Left Join Sistem.GetKurListesi(GETDATE()) BK on BK.Birim=H.Birim
---------------------------------------------------------------------------------------------
----POZISYON.POZISYONLAR TABLOSUNU SIFIRLAYARAK GECICI TABLODAKI BILGILERI BURAYA YAZIYORUZ.
TRUNCATE TABLE Pozisyon.Pozisyonlar
INSERT INTO Pozisyon.Pozisyonlar([SubeId],[Birim],[Bakiye],[Kur1],[Kur2],[Pozisyon],[BBirim]) SELECT P.* FROM #TBLPozisyonlar P Left Join Sistem.Birimler B on B.Kodu =P.Birim Order by B.SiraNo
---------------------------------------------------------------------------------------------
DUR BEKLE VE SOLUK AL. SONRA YUKARIDAKİ İŞLEMLERİN SONUCUNU KONTROL ET.
POZISYON.POZISYONLAR TABLOSUNA POZISYONLAR YAZILIYORU MU?
-
(görsel — süreç kitabında)ERPBoosterConfiguration.Exe Dosyasını Çalıştırın.
-
Açılan Ekranda Sql Bağlantı Bilgilerini Yazarak Connect Butonuna Basınız.
(görsel — süreç kitabında)
- Bağlantı Kurulması durumunda Add Butonu Aktif Olacaktır. Add Butonuna Basınız.
(görsel — süreç kitabında)
(görsel — süreç kitabında)
-
Pozisyon.GetPozisyon Fonksiyounun Ismini Pozisyon.GetPozisyon_ olarak Değiştirin.
-
Pozisyon.GetPozisyon Fonksiyonunu Aşşağıdaki Kodla Yeniden oluşturun.
CREATE FUNCTION [Pozisyon].[GetPozisyon] (@SubeId int)
returns Table
as
return
Select Birim,Bakiye,Kur1,Kur2,Pozisyon ,BBirim From Pozisyon.Pozisyonlar
Where SubeId =@SubeId
GO
Sonuc olarak;
Pozisyon Hesaplamalarını Tek Bir Schedule Task’a bağlayarak performans elde etmiş olduk. Bu hesaplamaları Pozisyon.Pozisyonlar Tablosuna yazarak Tüm isteklerin buradan karşılanmasını sağladık. Pozisyon.GetPozisyon Fonkisyounun Pozisyon.Poziyonlar Tablosundan verileri çekecek şekilde ayarladık. Sistem.Activity Tablosuna herhangi bir işlem olduğunda işlemin yapıldığı tarih ve sube Id yazılacak. Ve Son Pozisyon Hesaplama Tarihi Bundan ufak ise pozisyon hesaplamaları yapılarak ilgili tabloya yazılacak.
Test için Aşşağıdaki Queryi çalıştırın. A.LastDate(ActivityDate) son işlem tarih ve saatidir. P.ExecDate en son Pozisyon Hesaplandığı Tarihtir. Herzaman için ActivityDate ExecDateden küçük olmalıdır.
Select A.ActivitySubeId as BranchId,A.LastDate as ActivityDate,P.ExecDate from Sistem.Activity A with(NoLock) Left Join (Select SubeId,Max(InsertDate) as ExecDate From Pozisyon.Pozisyonlar with(NoLock) Group by SubeId) P on P.SubeId=A.ActivitySubeId
Kaynaklar
- SRC-PROC-DOC — süreç dokümanı #210
