select
(CASE WHEN P.PTYPE='0' THEN 'MIKTAR' ELSE 'VAR/YOK' END) PENETRATIONTYPE,
U.CODE+'-'+U.FNAME SALESMAN,
PNTHEADER.DATE,
CLCARD.CODE+'-'+CLCARD.DEFINITION_ CLIENT,
ISNULL(P.PCODE,'') PCODE,
ISNULL(P.PDEFINITION,'') PDEFINITION,
ISNULL(WD.ITEMNAME,'') ITEMNAME ,
WU.PRICE,
WU.AMOUNT,
WU.NOTE
from WOR_PNTHEADER PNTHEADER
LEFT JOIN WOR_PNTTRANS WU ON WU.PNTHEADER_REF=PNTHEADER.PNT_GUID
LEFT JOIN WOR_PENETRATIONDETAIL WD ON WU.PNTDTL_ID=WD.LOGICALREF
LEFT JOIN WOR_USERS U ON U.USERID=PNTHEADER.SALESMANREF
LEFT JOIN WOR_PENETRATION P ON P.LOGICALREF=PNTHEADER.PNT_ID
LEFT JOIN LG_219_CLCARD CLCARD ON CLCARD.LOGICALREF=PNTHEADER.CLIENTREF
/*where PNTHEADER.LOGICALREF=9*/
ORDER BY PNTHEADER.DATE, WD.SEQUENCE
Nextjs App with MUI5-Typescript-Supabase
Use to run: npm run dev
- npx create-next-app@latest –ts
- cd my-app
- npm install @mui/material @emotion/react @emotion/styled @emotion/css @emotion/server @mui/icons-material @supabase/supabase-js@rc
- Create File lib\createEmotionCache.ts :
import createCache from '@emotion/cache';
const createEmotionCache = () => {
return createCache({ key: 'css' });
};
export default createEmotionCache;
- Create File styles\theme.ts :
import { createTheme } from '@mui/material/styles';
import { red } from '@mui/material/colors';
const theme = createTheme({
palette: {
primary: {
main: '#556cd6',
},
secondary: {
main: '#19857b',
},
error: {
main: red.A400,
},
},
});
export default theme;
- Edit File pages\_document.ts :
import * as React from 'react';
import Document, { Html, Head, Main, NextScript } from 'next/document';
import createEmotionServer from '@emotion/server/create-instance';
import theme from '../styles/theme';
import createEmotionCache from '../lib/createEmotionCache';
export default class MyDocument extends Document {
render() {
return (
<Html lang="en">
<Head>
{/* PWA primary color */}
<meta name="theme-color" content={theme.palette.primary.main} />
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap"
/>
</Head>
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
}
// `getInitialProps` belongs to `_document` (instead of `_app`),
// it's compatible with static-site generation (SSG).
MyDocument.getInitialProps = async (ctx) => {
// Resolution order
//
// On the server:
// 1. app.getInitialProps
// 2. page.getInitialProps
// 3. document.getInitialProps
// 4. app.render
// 5. page.render
// 6. document.render
//
// On the server with error:
// 1. document.getInitialProps
// 2. app.render
// 3. page.render
// 4. document.render
//
// On the client
// 1. app.getInitialProps
// 2. page.getInitialProps
// 3. app.render
// 4. page.render
const { renderPage: originalRenderPage } = ctx;
// You can consider sharing the same emotion cache between all the SSR requests to speed up performance.
// However, be aware that it can have global side effects.
const cache = createEmotionCache();
const { extractCriticalToChunks } = createEmotionServer(cache);
ctx.renderPage = () =>
originalRenderPage({
// eslint-disable-next-line react/display-name
enhanceApp: (App: any) => (props) =>
<App emotionCache={cache} {...props} />,
});
const initialProps = await Document.getInitialProps(ctx);
// This is important. It prevents emotion to render invalid HTML.
// See https://github.com/mui-org/material-ui/issues/26561#issuecomment-855286153
const emotionStyles = extractCriticalToChunks(initialProps.html);
const emotionStyleTags = emotionStyles.styles.map((style: any) => (
<style
data-emotion={`${style.key} ${style.ids.join(' ')}`}
key={style.key}
// eslint-disable-next-line react/no-danger
dangerouslySetInnerHTML={{ __html: style.css }}
/>
));
return {
...initialProps,
// Styles fragment is rendered after the app and page rendering finish.
styles: [
...React.Children.toArray(initialProps.styles),
...emotionStyleTags,
],
};
};
- Edit File pages\_ app.ts :
import * as React from 'react';
import Head from 'next/head';
import { AppProps } from 'next/app';
import { ThemeProvider } from '@mui/material/styles';
import CssBaseline from '@mui/material/CssBaseline';
import { CacheProvider, EmotionCache } from '@emotion/react';
import theme from '../styles/theme';
import createEmotionCache from '../lib/createEmotionCache';
// Client-side cache, shared for the whole session of the user in the browser.
const clientSideEmotionCache = createEmotionCache();
interface MyAppProps extends AppProps {
emotionCache?: EmotionCache;
}
const App = (props: MyAppProps) => {
const { Component, emotionCache = clientSideEmotionCache, pageProps } = props;
return (
<CacheProvider value={emotionCache}>
<Head>
<title>My page</title>
<meta name="viewport" content="initial-scale=1, width=device-width" />
</Head>
<ThemeProvider theme={theme}>
{/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */}
<CssBaseline />
<Component {...pageProps} />
</ThemeProvider>
</CacheProvider>
);
};
export default App;
ReactJs,NextJs,Typescript Notları
Temel olarak Typescript manuel interface tanımlama


LOGO CARİ HESAP HAREKET DÖKÜMÜ EKLEME TARİHİ
Talep: Cari Hesap Hareket Dökümü -> Kullanıcı tanımlı rapor kullanarak rapor filtresine created date(clfiche) tarih aralığı filtresi eklemek
Not: Logonun tanımlı alanlar listesinde clfline createddate yok dolayısıyla sql infodan created date getirildi.



VAL(_SQLINFO(“DAY(CAPIBLOCK_CREADEDDATE)”,”LG_001_01_CLFLINE”,”LOGICALREF='”+STR(R1.logicalRef)+”‘”))
S_AY =
VAL(_SQLINFO(“MONTH(CAPIBLOCK_CREADEDDATE)”,”LG_001_01_CLFLINE”,”LOGICALREF='”+STR(R1.logicalRef)+”‘”))
S_YIL =
VAL(_SQLINFO(“YEAR(CAPIBLOCK_CREADEDDATE)”,”LG_001_01_CLFLINE”,”LOGICALREF='”+STR(R1.logicalRef)+”‘”))
S_TARIH=
DATE([S_GUN],[S_AY],[S_YIL])
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 TEMPDB SHRINK
CHECKPOINT;
GO
DBCC DROPCLEANBUFFERS;
GO
DBCC FREEPROCCACHE;
GO
DBCC FREESYSTEMCACHE ('ALL');
GO
DBCC FREESESSIONCACHE;
GO
DBCC SHRINKFILE (TEMPDEV, 20480); --- New file size in MB
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 */