}
//uItemsPage
// uDataLib'i eklemeyi unutmayın
uses uDataLib, uAddItems, uEditItems, uHomePage, uWaiterAndChefDetails;
var
MainForm:TclForm;
TitlePnl,NavbarPnl,AdminOpacityPnl,AdminItemsPopUp:TclProPanel;
TitleLbl,ItemNameLbl,ItemPriceLbl,ItemPieceLbl,ItemPieceValueLbl,OrderChecklistLbl,PieceLbl:TClProLabel;
HomeBtn,BackBtn,AdminManagementBtn,ItemsCloseBtn,EditItemsBtn,AddItemsBtn,OrderChecklistBtn,ShowStockBtn,IncreaseBtn,DecreaseBtn:TClProButton;
ItemsCount:Integer;
ItemImage:TClImage;
role:String;
StokStatus,StockVisibility:Boolean;
vScroll : TCLVertScrollBox;
CategoryId : Integer;
CurrentCategoryName : String;
TableId, TableName : String;
void SetObjectMargins(AObject,AValue)
{
AObject.Margins.Top = AValue;
AObject.Margins.Bottom = AValue;
AObject.Margins.Left = AValue;
AObject.Margins.Right = AValue;
}
void TitlePnlV
{
TitlePnl = MainForm.AddNewProPanel(MainForm,'TitlePnl');
TitlePnl.Align = alMostTop;
TitlePnl.Height = (MainForm.clHeight*18)/100;
TitlePnl.Width = (MainForm.clWidth*100)/100;
TitlePnl.Margins.Top = (MainForm.clHeight * -0.0715);
TitlePnl.Margins.Left = (MainForm.clWidth * -0.0254);
TitlePnl.Margins.Right = (MainForm.clWidth * -0.0254);
TitlePnl.clProSettings.BorderWidth = 3;
TitlePnl.clProSettings.BorderColor = clAlphaColor.clHexToColor('#3a3a3a');
TitlePnl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4caf50');
TitlePnl.SetclProSettings(TitlePnl.clProSettings);
TitleLbl = MainForm.AddNewProLabel(TitlePnl,'TitleLbl','');
TitleLbl.Text = CurrentCategoryName;
TitleLbl.Align = alCenter;
TitleLbl.Width = (MainForm.clWidth * 0.6107);
TitleLbl.Height = (MainForm.clHeight * 0.1073);
TitleLbl.Margins.Top = (MainForm.clHeight * 0.0715);
TitleLbl.clProSettings.FontSize = 35;
TitleLbl.clProSettings.FontVertAlign = palcenter;
TitleLbl.clProSettings.FontHorzAlign = palcenter;
TitleLbl.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
TitleLbl.clProSettings.TextSettings.Font.Style = [fsBold];
TitleLbl.SetclProSettings(TitleLbl.clProSettings);
AdminManagementBtn = MainForm.AddNewProButton(TitlePnl,'AdminManagementBtn','');
AdminManagementBtn.Align = alCenter;
AdminManagementBtn.Width = (MainForm.clWidth * 0.2036);
AdminManagementBtn.Height = (MainForm.clHeight * 0.0953);
AdminManagementBtn.margins.Bottom = (MainForm.clHeight * 0.0358);
AdminManagementBtn.margins.Left = (MainForm.clWidth * 0.9924);
AdminManagementBtn.clProSettings.TextSettings.Font.Style = [fsBold];
AdminManagementBtn.Visible=False;
AdminManagementBtn.clProSettings.PictureSource = ' https://resmim.net/cdn/2025/11/10/jaGer6.png" rel="nofollow - https://resmim.net/cdn/2025/11/10/jaGer6.png ';
MainForm.AddNewEvent(AdminManagementBtn,tbeOnClick,'OpenAdminItemsPopUpV');
AdminManagementBtn.SetclProSettings(AdminManagementBtn.clProSettings);
ShowStockBtn = MainForm.AddNewProButton(TitlePnl,'ShowStockBtn','');
ShowStockBtn.Align = alCenter;
ShowStockBtn.Width = (MainForm.clWidth * 0.2036);
ShowStockBtn.Height = (MainForm.clHeight * 0.0953);
ShowStockBtn.margins.Bottom = (MainForm.clHeight * 0.0358);
ShowStockBtn.margins.Right = (MainForm.clWidth * 0.9669);
ShowStockBtn.clProSettings.TextSettings.Font.Style = [fsBold];
ShowStockBtn.clProSettings.PictureSource = ' https://resmim.net/cdn/2025/11/12/jpbk0o.png" rel="nofollow - https://resmim.net/cdn/2025/11/12/jpbk0o.png ';
MainForm.AddNewEvent(ShowStockBtn,tbeOnClick,'ChangeImage');
ShowStockBtn.SetclProSettings(ShowStockBtn.clProSettings);
}
void BtnGoBackClick;
{
MainForm.Close;
}
void BtnHomeClick;
{
Clomosy.RunUnit('uHomePage');
}
// Helper Setters
void SetTableV(FTableName : String)
{
TableName = FTableName;
}
void SetTableIdV(FTableId : String)
{
TableId = FTableId;
}
void SetTitleLblV(FCategoryName : String)
{
CurrentCategoryName = FCategoryName;
}
void SetCategoryIDV(FCategoryId : String)
{
CategoryId = StrToIntDef(FCategoryId, 0);
}
void NavbarPnlV
{
NavbarPnl = MainForm.AddNewProPanel(MainForm,'NavbarPnl');
NavbarPnl.Align = alMostBottom;
NavbarPnl.Height = (MainForm.clHeight*8)/100;
NavbarPnl.Width = (MainForm.clWidth*100)/100;
NavbarPnl.Margins.Left = (MainForm.clWidth * -0.0254);
NavbarPnl.Margins.Right = (MainForm.clWidth * -0.0254);
NavbarPnl.Margins.Bottom = (MainForm.clHeight * -0.0119);
NavbarPnl.clProSettings.BorderWidth = 3;
NavbarPnl.clProSettings.BorderColor = clAlphaColor.clHexToColor('#3a3a3a');
NavbarPnl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4caf50');
NavbarPnl.SetclProSettings(NavbarPnl.clProSettings);
HomeBtn = MainForm.AddNewProButton(NavbarPnl,'HomeBtn','');
HomeBtn.Align = alCenter;
HomeBtn.Height = (NavbarPnl.Height*105)/100;
HomeBtn.Width = (NavbarPnl.Width*30)/100;
HomeBtn.Margins.Top = (MainForm.clHeight * -0.0596);
HomeBtn.clProSettings.PictureSource = uHomePage.IconSelect('HomePageBtnUI');
HomeBtn.SetclProSettings(HomeBtn.clProSettings);
MainForm.AddNewEvent(HomeBtn,tbeOnClick,'BtnHomeClick');
BackBtn = MainForm.AddNewProButton(NavbarPnl,'BackBtn','');
BackBtn.Align = alCenter;
BackBtn.Height = (NavbarPnl.Height*105)/100;
BackBtn.Width = (NavbarPnl.Width*30)/100;
BackBtn.Margins.Top = (MainForm.clHeight * -0.0596);
BackBtn.Margins.Right = (MainForm.clWidth * -0.6361);
BackBtn.clProSettings.PictureSource = uHomePage.IconSelect('BackArrowBtnUI');
BackBtn.SetclProSettings(BackBtn.clProSettings);
MainForm.AddNewEvent(BackBtn,tbeOnClick,'BtnGoBackClick');
OrderChecklistBtn = MainForm.AddNewProButton(NavbarPnl,'OrderChecklistBtn','');
OrderChecklistBtn.Align = alCenter;
OrderChecklistBtn.Height = (NavbarPnl.Height*105)/100;
OrderChecklistBtn.Width = (NavbarPnl.Width*30)/100;
OrderChecklistBtn.Margins.Top = (MainForm.clHeight * -0.0596);
OrderChecklistBtn.Margins.Left = (MainForm.clWidth * -0.6361);
OrderChecklistBtn.clProSettings.PictureSource = uHomePage.IconSelect('OrderChecklistBtnUI');
OrderChecklistBtn.SetclProSettings(OrderChecklistBtn.clProSettings);
MainForm.AddNewEvent(OrderChecklistBtn,tbeOnClick,'goToOrderList');
OrderChecklistLbl = MainForm.AddNewProLabel(OrderChecklistBtn,'OrderChecklistLbl','0');
OrderChecklistLbl.Align = alCenter;
OrderChecklistLbl.Height = (MainForm.clHeight * 0.0238);
OrderChecklistLbl.Width = (MainForm.clWidth * 0.0509);
OrderChecklistLbl.clProSettings.FontSize = 12;
OrderChecklistLbl.Margins.Left = (MainForm.clWidth * 0.0636);
OrderChecklistLbl.Margins.Bottom = (MainForm.clHeight * 0.0298);
OrderChecklistLbl.clProSettings.FontVertAlign = palcenter;
OrderChecklistLbl.clProSettings.FontHorzAlign = palcenter;
OrderChecklistLbl.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
OrderChecklistLbl.clProSettings.TextSettings.Font.Style = [fsBold];
OrderChecklistLbl.SetclProSettings(OrderChecklistLbl.clProSettings);
}
void MainPnlV
{
vScroll = MainForm.AddNewVertScrollBox(MainForm,'vScroll');
vScroll.Align = alCenter;
vScroll.Height = (MainForm.clHeight*80)/100;
vScroll.Width = (MainForm.clWidth*95)/100;
vScroll.Margins.Bottom = (MainForm.clHeight * 0.0715);
}
function GetItemImage(FId: String): TclMemoryStream
var
LRest: TCLRest;
{
LRest = uDataLib.GetImageWithRes('items/' + FId + '/image');
LRest.Execute;
if ( LRest.StreamResponse.size < 100){
Result = nil;
}else
Result = LRest.StreamResponse;
}
void FillItemsPnlV(FQry: TCLJSONQuery)
var
I: Integer;
TempItemNameLbl, TempItemPriceLbl, TempItemPieceValueLbl: TclProLabel;
TempItemImage: TClImage;
LMemStream: TCLMemoryStream;
{
I = 1;
try
LMemStream = TCLMemoryStream.Create;
with FQry do
{
if (Found)
{
First;
while (not EOF)
{
try
TempItemNameLbl = MainForm.clFindComponent('ItemNameLbl' + IntToStr(I));
TempItemPriceLbl = MainForm.clFindComponent('ItemPriceLbl' + IntToStr(I));
TempItemPieceValueLbl = MainForm.clFindComponent('ItemPieceValueLbl' + IntToStr(I));
TempItemImage = MainForm.clFindComponent('ItemImage' + IntToStr(I));
if (TempItemNameLbl <> nil){
TempItemNameLbl.Text = FieldByName('name').AsString;
TempItemNameLbl.Cltagint = FieldByName('id').AsInteger;
}
if (TempItemPriceLbl <> nil)
TempItemPriceLbl.Text = FieldByName('price').AsString + ' TL';
if (TempItemPieceValueLbl <> nil)
TempItemPieceValueLbl.Text = FieldByName('stock').AsString;
if (TempItemImage <> nil)
{
LMemStream = GetItemImage(FieldByName('id').AsString);
if (LMemStream <> nil)
{
TempItemImage.Bitmap.LoadFromStream(LMemStream);
LMemStream.Free;
}
else{
MainForm.setImage(TempItemImage,' https://clomosy.com/learn/clomosy.png" rel="nofollow - https://clomosy.com/learn/clomosy.png ');
LMemStream.Free;
}
}
Next;
Inc(I);
except
ShowMessage('FillItems Satır Hatası ' + IntToStr(I) + ': ' + LastExceptionMessage);
Next;
Inc(I);
}
}
}
}
except
ShowMessage('FillItemsPnlV Genel Hatası: ' + LastExceptionMessage);
}
}
void ItemsPnlV
var
I:integer;
{
for (I = 1 to ItemsCount)
{
ItemsPnl = MainForm.addnewpropanel(vScroll,'ItemsPnl'+IntToStr(I));
ItemsPnl.Align = alTop;
ItemsPnl.Height = (MainForm.clHeight * 0.0930);
SetObjectMargins(ItemsPnl,7);
ItemsPnl.Margins.Left = (MainForm.clWidth * 0.0382);
ItemsPnl.Margins.Right = (MainForm.clWidth * 0.0382);
ItemsPnl.clProSettings.BorderWidth = 2;
ItemsPnl.clProSettings.RoundHeight=3.5;
ItemsPnl.clProSettings.RoundWidth=3.5;
ItemsPnl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1e1e1e');
ItemsPnl.clProSettings.BorderColor = clAlphaColor.clHexToColor('#3a3a3a');
ItemsPnl.SetclProSettings(ItemsPnl.clProSettings);
ItemImage = MainForm.AddNewImage(ItemsPnl,'ItemImage'+IntToStr(I));
ItemImage.Align = alCenter;
ItemImage.Height = (MainForm.clHeight * 0.0775);
ItemImage.Width = (MainForm.clWidth * 0.1654);
ItemImage.Margins.Right = (MainForm.clWidth * 0.6743);
MainForm.setImage(ItemImage,' https://clomosy.com/learn/clomosy.png" rel="nofollow - https://clomosy.com/learn/clomosy.png ');
ItemNameLbl = MainForm.AddNewProLabel(ItemsPnl,'ItemNameLbl'+IntToStr(I),'...');
ItemNameLbl.Align = alCenter;
ItemNameLbl.Width = (MainForm.clWidth * 0.3817);
ItemNameLbl.Height = (MainForm.clHeight * 0.0358);
ItemNameLbl.Margins.Bottom = (MainForm.clHeight * 0.0417);
ItemNameLbl.Margins.Right = (MainForm.clWidth * 0.0382);
ItemNameLbl.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
ItemNameLbl.clProSettings.FontSize = 14;
ItemNameLbl.clProSettings.FontVertAlign = palcenter;
ItemNameLbl.clProSettings.FontHorzAlign = palleading;
ItemNameLbl.clProSettings.TextSettings.Font.Style = [fsBold];
ItemNameLbl.SetclProSettings(ItemNameLbl.clProSettings);
ItemPriceLbl = MainForm.AddNewProLabel(ItemsPnl,'ItemPriceLbl'+IntToStr(I),'...');
ItemPriceLbl.Align = alCenter;
ItemPriceLbl.Width = (MainForm.clWidth * 0.3053);
ItemPriceLbl.Height = (MainForm.clHeight * 0.0358);
ItemPriceLbl.Margins.Top = (MainForm.clHeight * 0.0417);
ItemPriceLbl.Margins.Right = (MainForm.clWidth * 0.1145);
ItemPriceLbl.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
ItemPriceLbl.clProSettings.FontSize = 14;
ItemPriceLbl.clProSettings.FontVertAlign = palcenter;
ItemPriceLbl.clProSettings.FontHorzAlign = palleading;
ItemPriceLbl.clProSettings.TextSettings.Font.Style = [fsBold];
ItemPriceLbl.SetclProSettings(ItemPriceLbl.clProSettings);
ItemPriceLbl.Cltagstr= 'ItemPriceLbl'+IntToStr(I);
ItemPieceLbl = MainForm.AddNewProLabel(ItemsPnl,'ItemPieceLbl'+IntToStr(I),'ADET:');
ItemPieceLbl.Align = alCenter;
ItemPieceLbl.Width = (MainForm.clWidth * 0.1018);
ItemPieceLbl.Height = (MainForm.clHeight * 0.0358);
ItemPieceLbl.Margins.Top = (MainForm.clHeight * 0.0536);
ItemPieceLbl.Margins.Left = (MainForm.clWidth * 0.3944);
ItemPieceLbl.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
ItemPieceLbl.clProSettings.FontSize = 14;
ItemPieceLbl.Visible=True;
ItemPieceLbl.clProSettings.FontVertAlign = palcenter;
ItemPieceLbl.clProSettings.FontHorzAlign = palleading;
ItemPieceLbl.clProSettings.TextSettings.Font.Style = [fsBold];
ItemPieceLbl.SetclProSettings(ItemPieceLbl.clProSettings);
ItemPieceLbl.Cltagstr= 'ItemPieceLbl'+IntToStr(I);
ItemPieceValueLbl = MainForm.AddNewProLabel(ItemsPnl,'ItemPieceValueLbl'+IntToStr(I),'0');
ItemPieceValueLbl.Align = alCenter;
ItemPieceValueLbl.Width = (MainForm.clWidth * 0.2036);
ItemPieceValueLbl.Height = (MainForm.clHeight * 0.0358);
ItemPieceValueLbl.Margins.Top = (MainForm.clHeight * 0.0536);
ItemPieceValueLbl.Margins.Left = (MainForm.clWidth * 0.7125);
ItemPieceValueLbl.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
ItemPieceValueLbl.clProSettings.FontSize = 14;
ItemPieceValueLbl.Visible=True;
ItemPieceValueLbl.clProSettings.FontVertAlign = palcenter;
ItemPieceValueLbl.clProSettings.FontHorzAlign = palleading;
ItemPieceValueLbl.clProSettings.TextSettings.Font.Style = [fsBold];
ItemPieceValueLbl.SetclProSettings(ItemPieceValueLbl.clProSettings);
ItemPieceValueLbl.Cltagstr= 'ItemPieceValueLbl'+IntToStr(I);
IncreaseBtn = MainForm.AddNewProButton(ItemsPnl,'IncreaseBtn'+IntToStr(I),'+');
IncreaseBtn.Align=alCenter;
IncreaseBtn.Width = (MainForm.clWidth * 0.1272);
IncreaseBtn.Height = (MainForm.clHeight * 0.0596);
IncreaseBtn.Margins.Bottom = (MainForm.clHeight * 0.0238);
IncreaseBtn.Margins.Left = (MainForm.clWidth * 0.7125);
IncreaseBtn.Visible = False;
IncreaseBtn.clProSettings.BorderWidth = 2;
IncreaseBtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1e1e1e');
IncreaseBtn.clProSettings.BorderColor = clAlphaColor.clHexToColor('#3a3a3a');
IncreaseBtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
IncreaseBtn.clProSettings.FontSize = 20;
MainForm.AddNewEvent(IncreaseBtn,tbeOnClick,'ItemIncreaseV');
IncreaseBtn.SetclProSettings(IncreaseBtn.clProSettings);
IncreaseBtn.Cltagstr= 'PieceLbl'+IntToStr(I);
DecreaseBtn = MainForm.AddNewProButton(ItemsPnl,'DecreaseBtn'+IntToStr(I),'-');
DecreaseBtn.Align=alCenter;
DecreaseBtn.Width = (MainForm.clWidth * 0.1272);
DecreaseBtn.Height = (MainForm.clHeight * 0.0596);
DecreaseBtn.Margins.Bottom = (MainForm.clHeight * 0.0238);
DecreaseBtn.Margins.Left = (MainForm.clWidth * 0.4453);
DecreaseBtn.Visible = False;
DecreaseBtn.clProSettings.BorderWidth = 2;
DecreaseBtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1e1e1e');
DecreaseBtn.clProSettings.BorderColor = clAlphaColor.clHexToColor('#3a3a3a');
DecreaseBtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
DecreaseBtn.clProSettings.FontSize = 20;
DecreaseBtn.SetclProSettings(DecreaseBtn.clProSettings);
MainForm.AddNewEvent(DecreaseBtn,tbeOnClick,'ItemDecreaseV');
DecreaseBtn.Cltagstr= 'PieceLbl'+IntToStr(I);
PieceLbl = MainForm.AddNewProLabel(ItemsPnl,'PieceLbl'+IntToStr(I),'x0');
PieceLbl.Align=alCenter;
PieceLbl.Width = (MainForm.clWidth * 0.1018);
PieceLbl.Height = (MainForm.clHeight * 0.0477);
PieceLbl.Margins.Left = (MainForm.clWidth * 0.6361);
PieceLbl.Margins.top = (MainForm.clHeight * 0.0596);
PieceLbl.Visible= False;
PieceLbl.clProSettings.FontSize = 16;
PieceLbl.clProSettings.FontVertAlign = palcenter;
PieceLbl.clProSettings.FontHorzAlign = palLeading;
PieceLbl.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
PieceLbl.clProSettings.TextSettings.Font.Style = [fsBold];
PieceLbl.SetclProSettings(PieceLbl.clProSettings);
PieceLbl.Cltagstr= 'PieceLbl'+IntToStr(I);
}
}
void AdminItemsPopUpV
{
AdminOpacityPnl= MainForm.AddNewProPanel(MainForm,'AdminOpacityPnl');
AdminOpacityPnl.Align=alCenter;
AdminOpacityPnl.Width= (MainForm.clWidth);
AdminOpacityPnl.Height = (MainForm.clHeight*1.2);
AdminOpacityPnl.Visible=False;
AdminOpacityPnl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#000000');
AdminOpacityPnl.opacity=0.6;
AdminOpacityPnl.SetclProSettings(AdminOpacityPnl.clProSettings);
AdminItemsPopUp= MainForm.AddNewProPanel(MainForm,'AdminItemsPopUp');
AdminItemsPopUp.Align=alCenter;
AdminItemsPopUp.Width = (MainForm.clWidth * 0.8957);
AdminItemsPopUp.Height = (MainForm.clHeight * 0.4195);
AdminItemsPopUp.margins.bottom = (MainForm.clHeight * 0.0596);
AdminItemsPopUp.Visible=False;
AdminItemsPopUp.clProSettings.BorderColor = clAlphaColor.clHexToColor('#3a3a3a');
AdminItemsPopUp.clProSettings.BorderWidth = 2;
AdminItemsPopUp.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#2a2a2a');
AdminItemsPopUp.SetclProSettings(AdminItemsPopUp.clProSettings);
ItemsCloseBtn = MainForm.AddNewProButton(AdminItemsPopUp,'ItemsCloseBtn','');
ItemsCloseBtn.Align = alMostTop;
ItemsCloseBtn.Width = (MainForm.clWidth * 0.1018);
ItemsCloseBtn.Height = (MainForm.clHeight * 0.0477);
ItemsCloseBtn.margins.top = (MainForm.clHeight * 0.0119);
ItemsCloseBtn.margins.right = (MainForm.clWidth * -0.7506);
ItemsCloseBtn.clProSettings.TextSettings.Font.Style = [fsBold];
ItemsCloseBtn.clProSettings.PictureSource = ' https://resmim.net/cdn/2025/11/04/jno9tH.png" rel="nofollow - https://resmim.net/cdn/2025/11/04/jno9tH.png ';
MainForm.AddNewEvent(ItemsCloseBtn,tbeOnClick,'CloseAdminItemsPopUpV');
ItemsCloseBtn.SetclProSettings(ItemsCloseBtn.clProSettings);
AddItemsBtn = MainForm.AddNewProButton(AdminItemsPopUp,'AddItemsBtn','ÜRÜN EKLEME');
AddItemsBtn.Align=alTop;
AddItemsBtn.Height = (MainForm.clHeight * 0.1073);
AddItemsBtn.Width = (MainForm.clWidth * 0.8651);
SetObjectMargins(AddItemsBtn,15);
AddItemsBtn.margins.top = (MainForm.clHeight * 0.0358);
AddItemsBtn.clProSettings.TextSettings.Font.Style = [fsBold];
AddItemsBtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4caf50');
AddItemsBtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
AddItemsBtn.clProSettings.FontSize = 25;
AddItemsBtn.clProSettings.RoundHeight=5;
AddItemsBtn.clProSettings.RoundWidth=5;
AddItemsBtn.clProSettings.WordWrap=true;
MainForm.AddNewEvent(AddItemsBtn,tbeOnClick,'gotouAddItems');
AddItemsBtn.SetclProSettings(AddItemsBtn.clProSettings);
EditItemsBtn = MainForm.AddNewProButton(AdminItemsPopUp,'EditItemsBtn','ÜRÜN DÜZENLEME');
EditItemsBtn.Align=alTop;
EditItemsBtn.Height = (MainForm.clHeight * 0.1073);
EditItemsBtn.Width = (MainForm.clWidth * 0.8651);
SetObjectMargins(EditItemsBtn,15);
EditItemsBtn.clProSettings.TextSettings.Font.Style = [fsBold];
EditItemsBtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4caf50');
EditItemsBtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
EditItemsBtn.clProSettings.FontSize = 25;
EditItemsBtn.clProSettings.RoundHeight=5;
EditItemsBtn.clProSettings.RoundWidth=5;
MainForm.AddNewEvent(EditItemsBtn,tbeOnClick,'gotouEditItems');
EditItemsBtn.SetclProSettings(EditItemsBtn.clProSettings);
}
void ChangeItemAmountV(APieces : Integer)
var
TempPieceLbl : TclProLabel;
LPieceStr, LComponentName : String;
LPieceInt : Integer;
{
LComponentName = TclProButton(MainForm.Clsender).clTagStr;
TempPieceLbl = MainForm.clFindComponent(LComponentName) as TclProLabel;
if (TempPieceLbl <> nil)
{
LPieceStr = TempPieceLbl.Text;
Delete(LPieceStr,1,1); //Delete x letter from piecesLbl
LPieceInt = StrToInt(LPieceStr);
if((APieces == -1)&&(LPieceInt>0))
Dec(LPieceInt);
else if(APieces == 1)
Inc(LPieceInt);
LPieceStr = IntToStr(LPieceInt);
Insert('x', LPieceStr,0);// Add x
TempPieceLbl.Text = LPieceStr;
}
else ShowMessage(LComponentName +'is null');
}
void ItemDecreaseV
var
J: integer;
TempPieceLbl: TclProLabel;
PieceValue, Total: integer;
{
ChangeItemAmountV(-1);
Total = 0;
for (J = 1 to ItemsCount) {
TempPieceLbl = MainForm.clFindComponent('PieceLbl' + IntToStr(J));
if (TempPieceLbl <> nil) {
PieceValue = StrToInt(Copy(TempPieceLbl.Text, 2, Length(TempPieceLbl.Text) - 1));
Total = Total + PieceValue;
}
}
OrderChecklistLbl.Text = IntToStr(Total);
}
void ItemIncreaseV
var
J: integer;
TempPieceLbl: TclProLabel;
PieceValue, Total: integer;
{
ChangeItemAmountV(1);
Total = 0;
for (J = 1 to ItemsCount) {
TempPieceLbl = MainForm.clFindComponent('PieceLbl' + IntToStr(J));
if (TempPieceLbl <> nil) {
PieceValue = StrToInt(Copy(TempPieceLbl.Text, 2, Length(TempPieceLbl.Text) - 1));
Total = Total + PieceValue;
}
}
OrderChecklistLbl.Text = IntToStr(Total);
}
void addToOrderlistArr
var
Item: TCLJSONObject;
TempItemNameLbl, TempItemPriceLbl, TempItemPieceLbl: TclProLabel;
I, UnitPrice: Integer;
LItemPriceStr, LPieceStr : String;
OrderListRef: TCLJSONObject;
OrderListArrRef: TCLJSONArray;
{
try
// Eski verileri temizle
uDataLib.FreeOrderContainers;
// Güvenli referansları al
OrderListRef = uDataLib.GetCurrentOrderList;
OrderListArrRef = uDataLib.GetCurrentOrderListArr;
OrderListRef.AddPair('table_id', TCLJSONValue.Str(TableId));
for (I = 1 to ItemsCount)
{
TempItemNameLbl = MainForm.clFindComponent('ItemNameLbl' + IntToStr(I));
TempItemPieceLbl = MainForm.clFindComponent('PieceLbl' + IntToStr(I)); // adet
TempItemPriceLbl = MainForm.clFindComponent('ItemPriceLbl' + IntToStr(I)); // UnitPrice
if (TempItemPieceLbl <> nil)
{
LPieceStr = TempItemPieceLbl.Text;
Delete(LPieceStr, 1, 1);// 'x' harfini sil
if (StrToInt(LPieceStr) > 0)
{
Item = TCLJSONObject.Create;
Item.AddPair('amount', TCLJSONValue.Int(StrToInt(LPieceStr)));
if (TempItemNameLbl <> nil)
{
Item.AddPair('item_name', TCLJSONValue.Str(TempItemNameLbl.Text));
Item.AddPair('item_id', TCLJSONValue.Int(TempItemNameLbl.Cltagint));
}
if (TempItemPriceLbl <> nil)
{
LItemPriceStr = TempItemPriceLbl.Text;
Delete(LItemPriceStr, Length(LItemPriceStr) - 1, 2); // ' TL' sil
Item.AddPair('unit_price', TCLJSONValue.Int(StrToInt(Trim(LItemPriceStr))));
}
// --- DÜZELTME BURADA YAPILDI ---
OrderListArrRef.AddObject(Item);
// Item.Free; <-- BU SATIR SİLİNDİ! ASLA BURADA FREE YAPMAYIN.
// Neden? Çünkü AddObject ile sahiplik diziye geçti. Dizi silinince Item da silinecek.
}
}
}
except
ShowMessage('addToOrderlistArr Hatası: ' + LastExceptionMessage);
}
}
void goToOrderList
var
OrderListRef: TCLJSONObject;
OrderListArrRef: TCLJSONArray;
{
OrderListRef = uDataLib.GetCurrentOrderList;
OrderListArrRef = uDataLib.GetCurrentOrderListArr;
// Liste boşsa yeniden doldurmayı dene
if (uDataLib.CurrentOrderListArrAmount == 0)
{
addToOrderlistArr;
}
// Referansları güncelle (addToOrderlistArr içinde Free/Create yapılmış olabilir)
OrderListRef = uDataLib.GetCurrentOrderList;
OrderListArrRef = uDataLib.GetCurrentOrderListArr;
if (OrderListArrRef.Count > 0)
{
Clomosy.RunUnit('uWaiterAndChefDetails');
uWaiterAndChefDetails.SetTitleV(TableName);
ShowMessage('Sipariş Listesi : '+OrderListRef.ToJSONString);
uWaiterAndChefDetails.SetCreatingOrder(OrderListRef);
uWaiterAndChefDetails.DetailsPnlV(OrderListArrRef);
uWaiterAndChefDetails.FillDetailsPnlV(OrderListArrRef);
uWaiterAndChefDetails.CalculateTotalPrice(OrderListArrRef);
}
else
{
ShowMessage('Sipariş listesi boş. Lütfen devam etmeden önce ürün ekleyin.');
}
}
void gotouEditItems
{
uEditItems.SetCategoryIDV(CategoryId);
Clomosy.RunUnit('uEditItems');
}
void gotouAddItems
{
uAddItems.SetCategoryIDV(CategoryId);
Clomosy.RunUnit('uAddItems');
}
void OpenAdminItemsPopUpV
{
AdminItemsPopUp.visible=true;
AdminOpacityPnl.visible=true;
}
void CloseAdminItemsPopUpV
{
AdminItemsPopUp.visible=False;
AdminOpacityPnl.visible=False;
}
void CheckAdmin
{
if role == 'Admin'
{
AdminManagementBtn.Visible=true;
}
}
void ChangeImage
var
I: integer;
TempItemPieceLbl, TempItemPieceValueLbl, TempPieceLbl: TclProLabel;
TempIncreaseBtn, TempDecreaseBtn: TclProButton;
{
if (StokStatus == False)
{
MainForm.setImage(ShowStockBtn,' https://resmim.net/cdn/2025/11/12/jpbk0o.png" rel="nofollow - https://resmim.net/cdn/2025/11/12/jpbk0o.png ');
for (I = 1 to ItemsCount)
{
TempItemPieceLbl= MainForm.clFindComponent('ItemPieceLbl'+IntToStr(I));
if (TempItemPieceLbl <> nil) TempItemPieceLbl.Visible = false;
TempItemPieceValueLbl= MainForm.clFindComponent('ItemPieceValueLbl'+IntToStr(I));
if (TempItemPieceValueLbl <> nil) TempItemPieceValueLbl.Visible = false;
TempIncreaseBtn= MainForm.clFindComponent('IncreaseBtn'+IntToStr(I));
if (TempIncreaseBtn <> nil) TempIncreaseBtn.Visible = true;
TempDecreaseBtn= MainForm.clFindComponent('DecreaseBtn'+IntToStr(I));
if (TempDecreaseBtn <> nil) TempDecreaseBtn.Visible = true;
TempPieceLbl= MainForm.clFindComponent('PieceLbl'+IntToStr(I));
if (TempPieceLbl <> nil) TempPieceLbl.Visible = true;
}
}
else
{
MainForm.setImage(ShowStockBtn,' https://resmim.net/cdn/2025/11/13/jpAsex.png" rel="nofollow - https://resmim.net/cdn/2025/11/13/jpAsex.png ');
for (I = 1 to ItemsCount)
{
TempItemPieceLbl= MainForm.clFindComponent('ItemPieceLbl'+IntToStr(I));
if (TempItemPieceLbl <> nil) TempItemPieceLbl.Visible = true;
TempItemPieceValueLbl= MainForm.clFindComponent('ItemPieceValueLbl'+IntToStr(I));
if (TempItemPieceValueLbl <> nil) TempItemPieceValueLbl.Visible = true;
TempIncreaseBtn= MainForm.clFindComponent('IncreaseBtn'+IntToStr(I));
if (TempIncreaseBtn <> nil) TempIncreaseBtn.Visible = false;
TempDecreaseBtn= MainForm.clFindComponent('DecreaseBtn'+IntToStr(I));
if (TempDecreaseBtn <> nil) TempDecreaseBtn.Visible = false;
TempPieceLbl= MainForm.clFindComponent('PieceLbl'+IntToStr(I));
if (TempPieceLbl <> nil) TempPieceLbl.Visible = false;
}
}
StokStatus = not StokStatus;
}
void GetItemsCompletedV(Sender)
var
jsonResponse: String;
FQry: TCLJSONQuery;
{
jsonResponse = TCLRest(Sender).Response;
FQry = TCLJSONQuery.Create(nil);
try
FQry = Clomosy.ClDataSetFromJSON(jsonResponse);
if (FQry.Found)
{
ItemsCount = FQry.RecordCount;
ItemsPnlV;
FillItemsPnlV(FQry);
}
else
{
ShowMessage('Bu kategoride ürün bulunamadı.');
ItemsCount = 0;
}
except
ShowMessage('Veri işleme hatası: ' + LastExceptionMessage);
}
TCLRest(Sender).ClearBody;
TCLRest(Sender).free;
}
void GetItems
var LRest : TCLRest;
{
LRest = uDataLib.GetWithRes('items?categoryId='+ IntToStr(CategoryId));
LRest.OnCompleted = 'GetItemsCompletedV';
LRest.ExecuteAsync;
}
{
MainForm = tclForm.Create(self);
ItemsCount = 0;
StokStatus = False;
StockVisibility = false;
//Default olarak hızlı satış
SetTableIdV('0');
SetTableV('Hızlı Satış');
TitlePnlV;
MainPnlV;
NavbarPnlV;
CheckAdmin;
AdminItemsPopUpV;
GetItems;
MainForm.SetFormColor('#121212','',clGNone);
MainForm.FormWaiting.Visible = False;
MainForm.BtnFormMenu.Visible = False;
MainForm.BtnGoBack.Visible = False;
MainForm.run;
}