LOGO SAYISAL ZAMAN İŞLEMLERİ

C# Fonksiyonu

        private string LogoTimetoSystemTime(double GELENDEGER)
        {
            string RESULT = "";
            int HOUR = 0;
            if (GELENDEGER > 0)
            {
                HOUR = Convert.ToInt32(Math.Round(GELENDEGER / 16777216, 2));
            }
            int MINUTE = 0;
            if (GELENDEGER > 0)
            {
                MINUTE = Convert.ToInt32(Math.Round((GELENDEGER - HOUR * 16777216) / 65536, 2));
            }
            int SECOND = 0;
            if (GELENDEGER > 0)
            {
                SECOND = Convert.ToInt32(Math.Round((GELENDEGER - HOUR * 16777216 - MINUTE * 65536) / 256, 2));
            }
            RESULT = HOUR.ToString() + ":" + (MINUTE.ToString().Length == 0 ? 0 + MINUTE.ToString() : MINUTE.ToString()) + ":" + (SECOND.ToString().Length == 0 ? 0 + SECOND.ToString() : SECOND.ToString());
            return RESULT; 
        }

Sql Fonksiyonu

create FUNCTION [dbo].[fn_LogoTimetoSystemTime] (@GELENDEGER INT)
RETURNS VARCHAR(8)
AS
BEGIN
DECLARE @SAAT VARCHAR(2), @DAKIKA VARCHAR(2), @SANIYE VARCHAR(2), @SONUC VARCHAR(8)

SELECT
@SAAT=RTRIM(CONVERT(char(20), ROUND(@GELENDEGER / 16777216, 2))),
@DAKIKA=RTRIM(CONVERT(char(20), ROUND((@GELENDEGER - ROUND(@GELENDEGER / 16777216, 2) * 16777216)/ 65536, 2))),
@SANIYE=RTRIM(CONVERT(char(20), ROUND((@GELENDEGER - ROUND(@GELENDEGER / 16777216, 2) * 16777216 - ROUND((@GELENDEGER - ROUND(@GELENDEGER / 16777216, 2) * 16777216) / 65536, 2) * 65536) / 256, 2)))

SET @SAAT=CASE WHEN LEN(@SAAT)=1 THEN '0'+@SAAT ELSE @SAAT END 
SET @DAKIKA=CASE WHEN LEN(@DAKIKA)=1 THEN '0'+@DAKIKA ELSE @DAKIKA END 
SET @SANIYE=CASE WHEN LEN(@SANIYE)=1 THEN '0'+@SANIYE ELSE @SANIYE END


SET @SONUC= @SAAT + ':' +@DAKIKA + ':' + @SANIYE

RETURN @SONUC
END 
CREATE FUNCTION [dbo].[LG_TIMETOINT](@HH INT,@MM INT,@SS INT)
RETURNS INT
AS
BEGIN
DECLARE @TIME    INT
SELECT @TIME   = (@HH*65536*256+@MM*65536+@SS*256)
RETURN(@TIME)
END
GO

CREATE FUNCTION [dbo].[LG_INTTOTIME](@TIME INT)
RETURNS VARCHAR(8)
AS
BEGIN
DECLARE @HH INT
DECLARE @MM INT
DECLARE @SS INT
SELECT @HH = @TIME/65536/256
SELECT @MM = (@TIME/65536) - (@HH*256)
SELECT @SS = (@TIME/256) - (@HH*65536) - (@MM*256)
RETURN (RIGHT('0'+CAST(@HH AS VARCHAR(2)),2)+':'+RIGHT('0'+CAST(@MM AS VARCHAR(2)),2)+':'+RIGHT('0'+CAST(@SS AS VARCHAR(2)),2))
END
GO

CREATE FUNCTION [dbo].[LG_ADDTIME](@TIME INT,@ADD INT)
RETURNS INT
AS
BEGIN
DECLARE @HH INT
DECLARE @MM INT
DECLARE @SS INT
SELECT @HH = @TIME/65536/256
SELECT @MM = (@TIME/65536) - (@HH*256)
SELECT @SS = (@TIME/256) - (@HH*65536) - (@MM*256)
SELECT @SS = @SS + @ADD
IF @SS > 59
BEGIN
SELECT @MM = @MM + 1
SELECT @SS = @SS - 60
END
IF @MM > 59
BEGIN
SELECT @HH = @HH + 1
SELECT @MM = @MM - 60
END
RETURN (@HH*65536*256+@MM*65536+@SS*256)
END
GO
CREATE FUNCTION [dbo].[fn_LogoDatetoSystemDate] (@DEGER INT) 
RETURNS datetime
AS
BEGIN

DECLARE @GUN VARCHAR(2), @AY VARCHAR(2), @YIL VARCHAR(4)
DECLARE @SONUC datetime


SELECT
	@GUN=CAST((CONVERT(INT,CONVERT(BINARY,@DEGER,2),0)-(CONVERT(INT,CONVERT(BINARY,@DEGER,2),0)/256*256)) AS VARCHAR(3))
SELECT
	@AY=CAST(((CONVERT(INT,CONVERT(BINARY,@DEGER,2),0)-(65536*(CONVERT(INT,CONVERT(BINARY,@DEGER,2),0)/65536)))-(CONVERT(INT,CONVERT(BINARY,@DEGER,2),0)-(CONVERT(INT,CONVERT(BINARY,@DEGER,2),0)/256*256)))/256 AS VARCHAR(3))
SELECT
	@YIL=CAST((CONVERT(INT,CONVERT(BINARY,@DEGER,2),0)/65536) AS VARCHAR(6))

	SET @GUN=CASE WHEN LEN(@GUN)<2 THEN '0'+@GUN ELSE @GUN END
	SET @AY=CASE WHEN LEN(@AY)<2 THEN '0'+@AY ELSE @AY END


SONUC:
	IF @DEGER<>0
	BEGIN
		SET @SONUC=CONVERT(DATETIME, @YIL + '-' + @AY + '-' +  @GUN + ' 00:00:00', 102)
	END
	IF @DEGER=0
		SET @SONUC= NULL


RETURN @SONUC
END
GO
CREATE FUNCTION [dbo].[fn_SystemDateToLogoDate] (@date DATETIME) 
RETURNS INT
AS
BEGIN

DECLARE @GUN INT, @AY INT, @YIL INT
DECLARE @SONUC INT

SET @YIL = YEAR(@date)
SET @AY = MONTH(@date)
SET @GUN = DAY(@date)

SET @SONUC = (@YIL * 65536) + (@AY * 256) + @GUN

IF @SONUC = 0
    SET @SONUC = NULL

RETURN @SONUC
END
GO

SQL SERVER BÜTÜN VERİTABANLARINDA VIEW ARA

    DECLARE @views TABLE (ViewName NVARCHAR(4000)) 
    DECLARE @ViewName NVARCHAR(4000) = 'PDA'
    DECLARE @query NVARCHAR(4000) = 'SELECT ''?'' + ''.'' + s.name COLLATE SQL_Latin1_General_CP1_CI_AS + ''.'' + v.name from [?].sys.views v inner join sys.schemas s on v.schema_id=s.schema_id WHERE v.name LIKE ''%' + @ViewName + '%'''

    INSERT INTO @views (ViewName)
    EXEC sp_msforeachdb @query

    SELECT  * 
    FROM    @views  

LOGO SATIŞ TEKLİF YÖNETİMİ TABLOLARININ KENDİ KENDİNE SİLİNMESİNE KARŞI GEÇİCİ ÇÖZÜM

Sorun: Ayda 2-3 kere satış teklif yönetimi modülünün tabloları gece saat 00:00 gibi drop-create yapılmakta.

Job, trigger ve servisler kontrol edildi ilgili işlemi tetikleyen bir şey bulunamadı(tiger3e ver:2.76).

Arge devamlılığı için geçici çözüm olarak prosedur->job yaratıldı(yarım saatte bir) .

Teklif modülü tablolarında eğer data var ise yardımcı tabloya alınacak, eğer data yok ise(drop create olunca boşaldıysa) yardımcı tablolardan gerçek tablolara atacak.

CREATE PROCEDURE YT_KONTROL_SATISTEKLIFYONETIMI_TABLOLARI AS

IF EXISTS(SELECT 1 FROM [MYDB].[dbo].[LG_SLSACTIV] WITH(NOLOCK) WHERE LOGICALREF>0)
    BEGIN
	IF OBJECT_ID(N'[MYDB].[dbo].[YT_RESTORE_LG_SLSACTIV]', N'U') IS NOT NULL  DROP TABLE [MYDB].[dbo].[YT_RESTORE_LG_SLSACTIV];  
        SELECT * INTO [MYDB].[dbo].[YT_RESTORE_LG_SLSACTIV] FROM [MYDB].[dbo].[LG_SLSACTIV]
    END
ELSE
	BEGIN
		SET IDENTITY_INSERT [MYDB].[dbo].[LG_SLSACTIV] ON
		INSERT INTO [MYDB].[dbo].[LG_SLSACTIV]
           (LOGICALREF,[DATE_]
           ,[TIME_]
           ,[ACTTYPE]
           ,[OPPORREF]
           ,[SALESMANREF]
           ,[CSTVNDREF]
           ,[ACTORDER]
           ,[DESCRIPTION]
           ,[PRIORITY]
           ,[APPROVAL]
           ,[DUEDATE]
           ,[DUETIME]
           ,[SENDVIA]
           ,[SENDREF]
           ,[SPECODE]
           ,[CYPHCODE]
           ,[CAPIBLOCK_CREATEDBY]
           ,[CAPIBLOCK_CREADEDDATE]
           ,[CAPIBLOCK_CREATEDHOUR]
           ,[CAPIBLOCK_CREATEDMIN]
           ,[CAPIBLOCK_CREATEDSEC]
           ,[CAPIBLOCK_MODIFIEDBY]
           ,[CAPIBLOCK_MODIFIEDDATE]
           ,[CAPIBLOCK_MODIFIEDHOUR]
           ,[CAPIBLOCK_MODIFIEDMIN]
           ,[CAPIBLOCK_MODIFIEDSEC]
           ,[SITEID]
           ,[RECSTATUS]
           ,[ORGLOGICREF]
           ,[LASTREVISION]
           ,[TEXTINC]
           ,[DESCRIPTION2]
           ,[GUID])
		SELECT LOGICALREF,[DATE_]
           ,[TIME_]
           ,[ACTTYPE]
           ,[OPPORREF]
           ,[SALESMANREF]
           ,[CSTVNDREF]
           ,[ACTORDER]
           ,[DESCRIPTION]
           ,[PRIORITY]
           ,[APPROVAL]
           ,[DUEDATE]
           ,[DUETIME]
           ,[SENDVIA]
           ,[SENDREF]
           ,[SPECODE]
           ,[CYPHCODE]
           ,[CAPIBLOCK_CREATEDBY]
           ,[CAPIBLOCK_CREADEDDATE]
           ,[CAPIBLOCK_CREATEDHOUR]
           ,[CAPIBLOCK_CREATEDMIN]
           ,[CAPIBLOCK_CREATEDSEC]
           ,[CAPIBLOCK_MODIFIEDBY]
           ,[CAPIBLOCK_MODIFIEDDATE]
           ,[CAPIBLOCK_MODIFIEDHOUR]
           ,[CAPIBLOCK_MODIFIEDMIN]
           ,[CAPIBLOCK_MODIFIEDSEC]
           ,[SITEID]
           ,[RECSTATUS]
           ,[ORGLOGICREF]
           ,[LASTREVISION]
           ,[TEXTINC]
           ,[DESCRIPTION2]
           ,[GUID] FROM [MYDB].[dbo].[YT_RESTORE_LG_SLSACTIV]
			SET IDENTITY_INSERT [MYDB].[dbo].[LG_SLSACTIV] OFF
	END


IF EXISTS(SELECT 1 FROM [MYDB].[dbo].[LG_SATI] WITH(NOLOCK) WHERE LOGICALREF>0)
    BEGIN
	IF OBJECT_ID(N'[MYDB].[dbo].[YT_RESTORE_LG_SATI]', N'U') IS NOT NULL  DROP TABLE [MYDB].[dbo].[YT_RESTORE_LG_SATI];  
        SELECT * INTO [MYDB].[dbo].[YT_RESTORE_LG_SATI] FROM [MYDB].[dbo].[LG_SATI]
    END
ELSE 
	BEGIN
		SET IDENTITY_INSERT [MYDB].[dbo].[LG_SATI] ON
		INSERT INTO [MYDB].[dbo].[LG_SATI]
           (LOGICALREF,[USERID]
           ,[CUSTOM]
           ,[ITEMTYP]
           ,[ITEMEXP]
           ,[PARENTREF]
           ,[HASCHILD]
           ,[FILTERREF])
		SELECT LOGICALREF,[USERID]
           ,[CUSTOM]
           ,[ITEMTYP]
           ,[ITEMEXP]
           ,[PARENTREF]
           ,[HASCHILD]
           ,[FILTERREF] FROM [MYDB].[dbo].[YT_RESTORE_LG_SATI]
		SET IDENTITY_INSERT [MYDB].[dbo].[LG_SATI] OFF
	END


IF EXISTS(SELECT 1 FROM [MYDB].[dbo].[LG_CVARPASG] WITH(NOLOCK) WHERE LOGICALREF>0)
    BEGIN
	IF OBJECT_ID(N'[MYDB].[dbo].[YT_RESTORE_LG_CVARPASG]', N'U') IS NOT NULL  DROP TABLE [MYDB].[dbo].[YT_RESTORE_LG_CVARPASG];  
        SELECT * INTO [MYDB].[dbo].[YT_RESTORE_LG_CVARPASG] FROM [MYDB].[dbo].[LG_CVARPASG]
    END
ELSE
	BEGIN
		SET IDENTITY_INSERT [MYDB].[dbo].[LG_CVARPASG] ON
		INSERT INTO [MYDB].[dbo].[LG_CVARPASG]
				   (LOGICALREF,[CSTVNDREF]
				   ,[ARPREF]
				   ,[FIRMNO]
				   ,[SITEID]
				   ,[RECSTATUS]
				   ,[ORGLOGICREF]
				   ,[DEFAULTFLG])
		SELECT LOGICALREF,[CSTVNDREF]
				   ,[ARPREF]
				   ,[FIRMNO]
				   ,[SITEID]
				   ,[RECSTATUS]
				   ,[ORGLOGICREF]
				   ,[DEFAULTFLG] FROM [MYDB].[dbo].[YT_RESTORE_LG_CVARPASG]
		SET IDENTITY_INSERT [MYDB].[dbo].[LG_CVARPASG] OFF
	END

IF EXISTS(SELECT 1 FROM [MYDB].[dbo].[LG_CSTVND] WITH(NOLOCK) WHERE LOGICALREF>0)
    BEGIN
	IF OBJECT_ID(N'[MYDB].[dbo].[YT_RESTORE_LG_CSTVND]', N'U') IS NOT NULL  DROP TABLE [MYDB].[dbo].[YT_RESTORE_LG_CSTVND];  
        SELECT * INTO [MYDB].[dbo].[YT_RESTORE_LG_CSTVND] FROM [MYDB].[dbo].[LG_CSTVND]
    END
ELSE
	BEGIN
			SET IDENTITY_INSERT [MYDB].[dbo].[LG_CSTVND] ON
			INSERT INTO MYDB.[dbo].[LG_CSTVND]
           (LOGICALREF
           ,[ACTIVE]
           ,[CARDTYPE]
           ,[CODE]
           ,[TITLE]
           ,[SPECODE]
           ,[CYPHCODE]
           ,[ADDR1]
           ,[ADDR2]
           ,[CITY]
           ,[COUNTRY]
           ,[ORIGIN]
           ,[POSTCODE]
           ,[TELNR1]
           ,[TELNR2]
           ,[FAXNR]
           ,[CLANGUAGE]
           ,[CCURRENCY]
           ,[WEBURL]
           ,[CUSTCAT]
           ,[GROUPORG]
           ,[PARENTORG]
           ,[TEXTINC]
           ,[SITEID]
           ,[ORGLOGICREF]
           ,[CAPIBLOCK_CREATEDBY]
           ,[CAPIBLOCK_CREADEDDATE]
           ,[CAPIBLOCK_CREATEDHOUR]
           ,[CAPIBLOCK_CREATEDMIN]
           ,[CAPIBLOCK_CREATEDSEC]
           ,[CAPIBLOCK_MODIFIEDBY]
           ,[CAPIBLOCK_MODIFIEDDATE]
           ,[CAPIBLOCK_MODIFIEDHOUR]
           ,[CAPIBLOCK_MODIFIEDMIN]
           ,[CAPIBLOCK_MODIFIEDSEC]
           ,[PRIMARYCONTREF]
           ,[COUNTRYCODE]
           ,[CITYCODE]
           ,[TOWNCODE]
           ,[TOWN]
           ,[DISTRICTCODE]
           ,[DISTRICT]
           ,[RECSTATUS]
           ,[RIVALFIRM]
           ,[TELCODES1]
           ,[TELCODES2]
           ,[FAXCODE]
           ,[GUID])
SELECT LOGICALREF,
            [ACTIVE]
           ,[CARDTYPE]
           ,[CODE]
           ,[TITLE]
           ,[SPECODE]
           ,[CYPHCODE]
           ,[ADDR1]
           ,[ADDR2]
           ,[CITY]
           ,[COUNTRY]
           ,[ORIGIN]
           ,[POSTCODE]
           ,[TELNR1]
           ,[TELNR2]
           ,[FAXNR]
           ,[CLANGUAGE]
           ,[CCURRENCY]
           ,[WEBURL]
           ,[CUSTCAT]
           ,[GROUPORG]
           ,[PARENTORG]
           ,[TEXTINC]
           ,[SITEID]
           ,[ORGLOGICREF]
           ,[CAPIBLOCK_CREATEDBY]
           ,[CAPIBLOCK_CREADEDDATE]
           ,[CAPIBLOCK_CREATEDHOUR]
           ,[CAPIBLOCK_CREATEDMIN]
           ,[CAPIBLOCK_CREATEDSEC]
           ,[CAPIBLOCK_MODIFIEDBY]
           ,[CAPIBLOCK_MODIFIEDDATE]
           ,[CAPIBLOCK_MODIFIEDHOUR]
           ,[CAPIBLOCK_MODIFIEDMIN]
           ,[CAPIBLOCK_MODIFIEDSEC]
           ,[PRIMARYCONTREF]
           ,[COUNTRYCODE]
           ,[CITYCODE]
           ,[TOWNCODE]
           ,[TOWN]
           ,[DISTRICTCODE]
           ,[DISTRICT]
           ,[RECSTATUS]
           ,[RIVALFIRM]
           ,[TELCODES1]
           ,[TELCODES2]
           ,[FAXCODE]
           ,[GUID] FROM [MYDB].[dbo].[YT_RESTORE_LG_CSTVND]
SET IDENTITY_INSERT [MYDB].[dbo].[LG_CSTVND] OFF
	END

	/* EXEC YT_KONTROL_SATISTEKLIFYONETIMI_TABLOLARI */

LOGO SQL Devir Maliyet Raporu

SELECT      
(SELECT I.CODE FROM LG_121_ITEMS I WHERE I.LOGICALREF=SS3.SREF) URUNKODU ,
(SELECT I.NAME FROM LG_121_ITEMS I WHERE I.LOGICALREF=SS3.SREF) URUNKODU ,
  SS3.MLYT,   ST4.AMOUNT
FROM LG_121_01_STLINE AS ST4 LEFT OUTER JOIN
(SELECT     ST3.VATMATRAH / ST3.AMOUNT AS MLYT, SS2.SREF FROM
(SELECT MAX(DISTINCT ST2.LOGICALREF) AS LREF, ST2.STOCKREF AS SREF FROM
(SELECT ST1.STOCKREF, MAX(ST1.DATE_) AS DATE_ FROM LG_117_01_STLINE AS ST1 WHERE
(ST1.IOCODE =1) AND (ST1.LINETYPE = 0) AND (ST1.CANCELLED = 0) AND (ST1.PRICE <> 0) GROUP BY ST1.STOCKREF)
AS SS1 LEFT OUTER JOIN LG_117_01_STLINE AS ST2 ON SS1.DATE_ = ST2.DATE_ AND SS1.STOCKREF = ST2.STOCKREF
WHERE     (ST2.LINETYPE = 0) AND (ST2.IOCODE =1) AND (ST2.CANCELLED = 0) AND (ST2.PRICE <> 0) GROUP BY ST2.STOCKREF) AS SS2
LEFT OUTER JOIN LG_117_01_STLINE AS ST3 ON SS2.SREF = ST3.STOCKREF AND SS2.LREF = ST3.LOGICALREF) AS SS3
ON ST4.STOCKREF = SS3.SREF
WHERE     (ST4.TRCODE = 14) AND (ST4.CANCELLED = 0) AND (ST4.LINETYPE = 0) AND (SS3.MLYT <> 0) AND (ST4.LINENET = 0)