Tuesday, October 16, 2012

Tiger/Unity Hareket Özel Kodu Kontrol ve create işlemi

Tiger veya Unity üzerinde yapılan her türlü fişin satırlarında (Satınalma Sipariş, İrsaliye, Fatura, Malzeme Hareketi vs) "Hareket Özel Kodu" alanı bulunur.

Entegre bir sistem kurduğunuzda birbirinden bağımsız kurgulanan "Hareket Özel Kodları"'nın aynı kayıtlardan oluşabilmesi için bir Stored Procedure (SP) hazırladım. Amaç, Malzeme Fişi satırında açılan hareket özel kodunun tüm girişlerde görülmesini sağlamak. Aşağıdaki SP'yi, SQL Server üzerinde bir JOB'a bağlarsanız Hareket özel kodlarını sürekli güncel tutabilirsiniz.


Stored Procedure Kodu: 


create PROCEDURE [dbo].[Sp_Specode_Kontrol]
as
DECLARE @NR VARCHAR(50)
DECLARE @String VARCHAR(8000)
DECLARE MainProc CURSOR FOR
SELECT NR FROM L_CAPIFIRM  -- tüm firmalar için çalışsın
OPEN MainProc

FETCH NEXT FROM MainProc
INTO @NR
WHILE @@FETCH_STATUS = 0
BEGIN
Set @String = 'DECLARE @SPECODE VARCHAR(25)
DECLARE @SPECODE_COUNT INT
DECLARE @VARMI INT
DECLARE @LastSeq INT

DECLARE @DEFINITION_  VARCHAR(100)
DECLARE @COLOR        INT
DECLARE @WINCOLOR     INT
DECLARE @SITEID       INT
DECLARE @RECSTATUS    INT
DECLARE @ORGLOGICREF  INT

SELECT  SPECODE,COUNT(SPECODE) FROM LG_' + @NR + '_SPECODES (NOLOCK) WHERE SPECODETYPE IN (3,17,20,21,24,25,27,33) GROUP BY SPECODE
HAVING  COUNT(SPECODE)<8 p="p">

DECLARE processes CURSOR FOR
SELECT  SPECODE,COUNT(SPECODE) FROM LG_' + @NR + '_SPECODES (NOLOCK) WHERE SPECODETYPE IN (3,17,20,21,24,25,27,33) GROUP BY SPECODE
HAVING  COUNT(SPECODE)<8 p="p"> OPEN processes

FETCH NEXT FROM processes
INTO @SPECODE,@SPECODE_COUNT
WHILE @@FETCH_STATUS = 0
BEGIN
  SET @VARMI = 0
  --TÜM BİLGİLERİN OLDUĞU KAYIT TESPİT EDİLİYOR...
  SELECT TOP 1 @DEFINITION_=DEFINITION_,@COLOR=COLOR,@WINCOLOR=WINCOLOR,@SITEID=SITEID,@RECSTATUS=RECSTATUS,@ORGLOGICREF=ORGLOGICREF  FROM  LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE ORDER BY SITEID DESC
  --SIRASIYLA TUM SPECODE''LAR KONTROL EDİLİYOR
  --1. SPECODETYPE=3
SET @VARMI = 0
SELECT @VARMI=LOGICALREF FROM  LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE AND SPECODETYPE = 3
IF  @VARMI = 0
BEGIN

 INSERT INTO [LG_' + @NR + '_SPECODES] ([CODETYPE],[SPECODETYPE],[SPECODE],[DEFINITION_],[COLOR],[WINCOLOR],[SITEID],[RECSTATUS],[ORGLOGICREF])
   VALUES (1,3,@SPECODE,@DEFINITION_,@COLOR,@WINCOLOR,@SITEID,@RECSTATUS,@ORGLOGICREF)
END

  --2. SPECODETYPE=17 satınalma siparişi
SET @VARMI = 0
SELECT @VARMI=LOGICALREF FROM  LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE AND SPECODETYPE = 17
IF  @VARMI = 0
BEGIN

 INSERT INTO [LG_' + @NR + '_SPECODES] ([CODETYPE],[SPECODETYPE],[SPECODE],[DEFINITION_],[COLOR],[WINCOLOR],[SITEID],[RECSTATUS],[ORGLOGICREF])
   VALUES (1,17,@SPECODE,@DEFINITION_,@COLOR,@WINCOLOR,@SITEID,@RECSTATUS,@ORGLOGICREF)
END

  --3. SPECODETYPE=20
SET @VARMI = 0
SELECT @VARMI=LOGICALREF FROM  LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE AND SPECODETYPE = 20
IF  @VARMI = 0
BEGIN


 INSERT INTO [LG_' + @NR + '_SPECODES] ([CODETYPE],[SPECODETYPE],[SPECODE],[DEFINITION_],[COLOR],[WINCOLOR],[SITEID],[RECSTATUS],[ORGLOGICREF])
   VALUES (1,20,@SPECODE,@DEFINITION_,@COLOR,@WINCOLOR,@SITEID,@RECSTATUS,@ORGLOGICREF)
END
  --4. SPECODETYPE=21
SET @VARMI = 0
SELECT @VARMI=LOGICALREF FROM  LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE AND SPECODETYPE = 21
IF  @VARMI = 0
BEGIN

 INSERT INTO [LG_' + @NR + '_SPECODES] ([CODETYPE],[SPECODETYPE],[SPECODE],[DEFINITION_],[COLOR],[WINCOLOR],[SITEID],[RECSTATUS],[ORGLOGICREF])
   VALUES (1,21,@SPECODE,@DEFINITION_,@COLOR,@WINCOLOR,@SITEID,@RECSTATUS,@ORGLOGICREF)
END
  --5. SPECODETYPE=24
SET @VARMI = 0
SELECT @VARMI=LOGICALREF FROM  LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE AND SPECODETYPE = 24
IF  @VARMI = 0
BEGIN

 INSERT INTO [LG_' + @NR + '_SPECODES] ([CODETYPE],[SPECODETYPE],[SPECODE],[DEFINITION_],[COLOR],[WINCOLOR],[SITEID],[RECSTATUS],[ORGLOGICREF])
   VALUES (1,24,@SPECODE,@DEFINITION_,@COLOR,@WINCOLOR,@SITEID,@RECSTATUS,@ORGLOGICREF)
END
  --6. SPECODETYPE=25
SET @VARMI = 0
SELECT @VARMI=LOGICALREF FROM  LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE AND SPECODETYPE = 25
IF  @VARMI = 0
BEGIN

 INSERT INTO [LG_' + @NR + '_SPECODES] ([CODETYPE],[SPECODETYPE],[SPECODE],[DEFINITION_],[COLOR],[WINCOLOR],[SITEID],[RECSTATUS],[ORGLOGICREF])
   VALUES (1,25,@SPECODE,@DEFINITION_,@COLOR,@WINCOLOR,@SITEID,@RECSTATUS,@ORGLOGICREF)
END
  --7. SPECODETYPE=27
SET @VARMI = 0
SELECT @VARMI=LOGICALREF FROM  LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE AND SPECODETYPE = 27
IF  @VARMI = 0
BEGIN

 INSERT INTO [LG_' + @NR + '_SPECODES] ([CODETYPE],[SPECODETYPE],[SPECODE],[DEFINITION_],[COLOR],[WINCOLOR],[SITEID],[RECSTATUS],[ORGLOGICREF])
   VALUES (1,27,@SPECODE,@DEFINITION_,@COLOR,@WINCOLOR,@SITEID,@RECSTATUS,@ORGLOGICREF)
END
  --8. SPECODETYPE=33
SET @VARMI = 0
SELECT @VARMI=LOGICALREF FROM  LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE AND SPECODETYPE = 33
IF  @VARMI = 0
BEGIN

 INSERT INTO [LG_' + @NR + '_SPECODES] ([CODETYPE],[SPECODETYPE],[SPECODE],[DEFINITION_],[COLOR],[WINCOLOR],[SITEID],[RECSTATUS],[ORGLOGICREF])
   VALUES (1,33,@SPECODE,@DEFINITION_,@COLOR,@WINCOLOR,@SITEID,@RECSTATUS,@ORGLOGICREF)
END
FETCH NEXT FROM processes
INTO @SPECODE,@SPECODE_COUNT
END
CLOSE processes
DEALLOCATE processes'
   EXEC (@string)


FETCH NEXT FROM MainProc
INTO @NR
END
CLOSE MainProc
DEALLOCATE MainProc

Kullanımı :



DECLARE @RC int

-- TODO: Set parameter values here.

EXECUTE @RC = [TIGER2_DB].[dbo].[Sp_Specode_Kontrol]
GO

No comments: