unit uKiosk; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, System.Types, System.Math, System.TypInfo, RegisterClasses_base, wItem, EmpMst, Vcl.Grids, Vcl.ComCtrls, Vcl.Imaging.jpeg, acPNG, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxStyles, cxCustomData, cxFilter, cxData, cxDataStorage, cxEdit, cxNavigator, dxDateRanges, dxScrollbarAnnotations, Data.DB, cxDBData, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxGridCustomView, cxGrid, cxCalc, cxTextEdit, dxSkinDevExpressStyle, cxCheckBox, cxContainer, cxMaskEdit, cxDropDownEdit, cxCheckComboBox, Vcl.WinXCtrls, IniFiles, Vcl.WinXPickers, System.Net.HttpClient, System.Net.URLClient, System.Net.HttpClientComponent, System.JSON, MaterialData, SaleItemMst, ProductMst, CustMst, MachineMst, Vcl.Touch.GestureMgr, Vcl.Menus, EmpLog, cxCurrencyEdit; type TfKiosk = class(TForm) Panel1: TPanel; GroupBox1: TGroupBox; lbDBName: TLabeledEdit; lbHost: TLabeledEdit; lbPort: TLabeledEdit; lbPassword: TLabeledEdit; lbUserName: TLabeledEdit; btDBConnect: TButton; btDBdisConnect: TButton; Button3: TButton; Memo1: TMemo; Memo2: TMemo; StringGrid1: TStringGrid; Panel2: TPanel; Button2: TButton; btQuery: TButton; Pan_Main: TPanel; Panel4: TPanel; Image1: TImage; Label4: TLabel; Timer_datetime: TTimer; Pan_default: TPanel; PageControl1: TPageControl; tab_pan_1: TTabSheet; Pan_tab_1: TPanel; tab_pan_2: TTabSheet; Pan_tab_2: TPanel; tab_pan_3: TTabSheet; Pan_tab_3: TPanel; Panel5: TPanel; Label5: TLabel; Panel6: TPanel; Label6: TLabel; Panel7: TPanel; Label7: TLabel; Panel8: TPanel; Panel9: TPanel; Panel10: TPanel; Panel11: TPanel; Label8: TLabel; Panel12: TPanel; Label9: TLabel; Panel13: TPanel; Label10: TLabel; Panel14: TPanel; Panel15: TPanel; Button1: TButton; Panel16: TPanel; GridOrderList: TcxGrid; GridOrderListTV: TcxGridTableView; GridOrderListTVColumn1: TcxGridColumn; GridOrderListTVColumn2: TcxGridColumn; GridOrderListTVColumn3: TcxGridColumn; GridOrderListTVColumn4: TcxGridColumn; GridOrderListTVColumn5: TcxGridColumn; GridOrderListTVColumn6: TcxGridColumn; GridOrderListTVColumn7: TcxGridColumn; GridOrderListTVColumn8: TcxGridColumn; GridOrderListTVColumn9: TcxGridColumn; GridOrderListTVColumn10: TcxGridColumn; GridOrderListTVColumn11: TcxGridColumn; GridOrderListTVColumn12: TcxGridColumn; GridOrderListTVColumn13: TcxGridColumn; GridOrderListTVColumn14: TcxGridColumn; GridOrderListTVColumn15: TcxGridColumn; GridOrderListLv: TcxGridLevel; GridPanel1: TGridPanel; Panel17: TPanel; Panel18: TPanel; Panel19: TPanel; Panel20: TPanel; Button4: TButton; TabSheet1: TTabSheet; Panel21: TPanel; TabSheet2: TTabSheet; Panel23: TPanel; Label11: TLabel; Panel24: TPanel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label19: TLabel; Label20: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; ComboBox1: TComboBox; Panel22: TPanel; Label21: TLabel; Label22: TLabel; Label23: TLabel; Label24: TLabel; Label25: TLabel; Label26: TLabel; Label27: TLabel; Label28: TLabel; Panel25: TPanel; Label29: TLabel; Panel26: TPanel; Label30: TLabel; Edit7: TEdit; Edit8: TEdit; Edit9: TEdit; Edit10: TEdit; Edit11: TEdit; Edit12: TEdit; ComboBox2: TComboBox; TabSheet3: TTabSheet; Pan_Setting: TPanel; Edit15: TEdit; Label35: TLabel; Panel3: TPanel; Panel29: TPanel; Label36: TLabel; Edit16: TEdit; Label37: TLabel; ComboBox4: TComboBox; ComboBox5: TComboBox; ComboBox6: TComboBox; Label41: TLabel; Label42: TLabel; Label43: TLabel; DatePicker1: TDatePicker; DatePicker2: TDatePicker; DatePicker3: TDatePicker; Panel31: TPanel; Panel32: TPanel; Panel33: TPanel; Label44: TLabel; Edit19: TEdit; Edit20: TEdit; Edit21: TEdit; Panel34: TPanel; Label45: TLabel; Panel35: TPanel; Edit22: TEdit; Edit23: TEdit; Edit24: TEdit; Panel36: TPanel; ComboBox7: TComboBox; tab_Pan_4: TTabSheet; tab_Pan_5: TTabSheet; Pan_tab_4: TPanel; Panel41: TPanel; Panel42: TPanel; Label51: TLabel; Panel43: TPanel; Edit17: TEdit; Edit25: TEdit; Edit26: TEdit; Panel44: TPanel; Pan_tab_5: TPanel; Panel49: TPanel; Panel50: TPanel; Label55: TLabel; Panel51: TPanel; Edit27: TEdit; Edit28: TEdit; Edit29: TEdit; Panel52: TPanel; Pan_6: TPanel; Label49_1: TLabel; Pan_7: TPanel; Label49: TLabel; Pan_8: TPanel; Label50: TLabel; TabSheet4: TTabSheet; Pan_tab_6: TPanel; Panel45: TPanel; Panel46: TPanel; Panel48: TPanel; cxGrid1: TcxGrid; cxGridTableView1: TcxGridTableView; cxGridLevel1: TcxGridLevel; Edit30: TEdit; Button5: TButton; Button7: TButton; Panel53: TPanel; Label59: TLabel; Edit34: TEdit; Label61: TLabel; Edit35: TEdit; TabSheet5: TTabSheet; TabSheet6: TTabSheet; cxGridTableView1Column1: TcxGridColumn; cxGridTableView1Column2: TcxGridColumn; cxGridTableView1Column3: TcxGridColumn; cxGridTableView1Column4: TcxGridColumn; Button6: TButton; Button14: TButton; pan_tab_8: TPanel; Panel38: TPanel; Edit31: TEdit; Button11: TButton; Button12: TButton; Panel39: TPanel; Panel40: TPanel; Label52: TLabel; Label53: TLabel; Button15: TButton; Panel47: TPanel; Edit32: TEdit; Edit33: TEdit; pan_tab_7: TPanel; Panel55: TPanel; cxGrid3: TcxGrid; cxGridTableView3: TcxGridTableView; cxGridTableView3Column1: TcxGridColumn; cxGridTableView3Column2: TcxGridColumn; cxGridTableView3Column3: TcxGridColumn; cxGridTableView3Column4: TcxGridColumn; cxGridLevel3: TcxGridLevel; Edit36: TEdit; Button8: TButton; Button9: TButton; Panel56: TPanel; Panel57: TPanel; Label48: TLabel; Label54: TLabel; Button13: TButton; Panel58: TPanel; Edit37: TEdit; Edit38: TEdit; Label56: TLabel; Label58: TLabel; Label60: TLabel; Label62: TLabel; Edit41: TEdit; Edit42: TEdit; Edit40: TEdit; Edit43: TEdit; Label63: TLabel; Label64: TLabel; Edit45: TEdit; Label65: TLabel; Label66: TLabel; Label67: TLabel; Edit47: TEdit; Label68: TLabel; Edit44: TEdit; DatePicker7: TDatePicker; DatePicker4: TDatePicker; Label69: TLabel; Edit13: TEdit; Label70: TLabel; Edit14: TEdit; Label71: TLabel; DatePicker5: TDatePicker; Label72: TLabel; GroupBox2: TGroupBox; RadioButton1: TRadioButton; RadioButton2: TRadioButton; Label73: TLabel; GroupBox3: TGroupBox; RadioButton3: TRadioButton; RadioButton4: TRadioButton; Label74: TLabel; GroupBox4: TGroupBox; RadioButton5: TRadioButton; RadioButton6: TRadioButton; Label75: TLabel; GroupBox5: TGroupBox; RadioButton7: TRadioButton; RadioButton8: TRadioButton; Label76: TLabel; Label78: TLabel; Label79: TLabel; Label80: TLabel; Tmr_close: TTimer; edt_close: TEdit; Image4: TImage; Image5: TImage; Image6: TImage; TabSheet7: TTabSheet; Pan_Login: TPanel; Image3: TImage; Label34: TLabel; Label57: TLabel; Panel27: TPanel; Image2: TImage; Label31: TLabel; Panel30: TPanel; Image7: TImage; Label32: TLabel; Label33: TLabel; edt_PASS: TEdit; Panel28: TPanel; edt_ID: TEdit; RadioGroup1: TRadioGroup; RadioGroup2: TRadioGroup; RadioGroup3: TRadioGroup; GroupBox6: TGroupBox; RadioButton9: TRadioButton; RadioButton10: TRadioButton; Edit49: TEdit; Panel37: TPanel; cxGrid2: TcxGrid; cxGridTableView2: TcxGridTableView; cxGridTableView2Column1: TcxGridColumn; cxGridTableView2Column2: TcxGridColumn; cxGridTableView2Column3: TcxGridColumn; cxGridTableView2Column4: TcxGridColumn; cxGridTableView2Column5: TcxGridColumn; cxGridTableView2Column6: TcxGridColumn; cxGridTableView2Column7: TcxGridColumn; cxGridTableView2Column8: TcxGridColumn; cxGridLevel2: TcxGridLevel; cxGrid4: TcxGrid; cxGridTableView4: TcxGridTableView; cxGridLevel4: TcxGridLevel; cxGridTableView4Column1: TcxGridColumn; cxGrid2Level1: TcxGridLevel; cxGrid2TableView1: TcxGridTableView; cxGrid2TableView1Column1: TcxGridColumn; cxGrid2TableView1Column2: TcxGridColumn; cbCustList: TComboBox; Image8: TImage; Panel60: TPanel; Label38: TLabel; Panel54: TPanel; Panel59: TPanel; ComboBox3: TComboBox; RadioButton11: TRadioButton; ComboBox8: TComboBox; ComboBox9: TComboBox; Edit18: TEdit; cxGridTableView3Column5: TcxGridColumn; Edit39: TEdit; cxGridTableView2Column9: TcxGridColumn; edtManufact: TEdit; edtModel: TEdit; edtMatUnitPrice: TEdit; cxGridTableView2Column10: TcxGridColumn; Edit46: TEdit; Panel61: TPanel; cxGridTableView2Column11: TcxGridColumn; Edit48: TEdit; cxGridTableView2Column12: TcxGridColumn; Edit50: TEdit; btnFINISH: TButton; edt_OBID: TEdit; edt_loginDateTime: TEdit; procedure btDBConnectClick(Sender: TObject); procedure btDBdisConnectClick(Sender: TObject); procedure Button2Click(Sender: TObject); procedure btQueryClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormShow(Sender: TObject); procedure Button3Click(Sender: TObject); procedure StringGrid1DblClick(Sender: TObject); procedure Panel2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Panel2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Panel2MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Pan_MainMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Timer_datetimeTimer(Sender: TObject); procedure Label5Click(Sender: TObject); procedure Label8Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Panel18Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Label12Click(Sender: TObject); procedure Label30Click(Sender: TObject); procedure Panel28Click(Sender: TObject); procedure Image3Click(Sender: TObject); procedure Label4Click(Sender: TObject); procedure Panel3Click(Sender: TObject); procedure Panel29Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Panel32Click(Sender: TObject); procedure Panel33Click(Sender: TObject); procedure Panel35Click(Sender: TObject); procedure Panel36Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Image1Click(Sender: TObject); procedure Button14Click(Sender: TObject); procedure Button12Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure cxGridTableView1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure Button8Click(Sender: TObject); procedure Button11Click(Sender: TObject); procedure cxGridTableView1FocusedRecordChanged( Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure cxGridTableView3FocusedRecordChanged( Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure cxGridTableView2FocusedRecordChanged( Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure Button7Click(Sender: TObject); procedure Button13Click(Sender: TObject); procedure edt_IDKeyPress(Sender: TObject; var Key: Char); procedure edt_PASSKeyPress(Sender: TObject; var Key: Char); procedure Tmr_closeTimer(Sender: TObject); procedure Label31Click(Sender: TObject); procedure Button15Click(Sender: TObject); procedure Label49_1Click(Sender: TObject); procedure RadioButton9Click(Sender: TObject); procedure Edit31Change(Sender: TObject); procedure cxGridTableView4CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure cxGridTableView4FocusedRecordChanged( Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure cxGridTableView4CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure cxGrid2TableView1FocusedRecordChanged( Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure PageControl1Changing(Sender: TObject; var AllowChange: Boolean); procedure Panel54Click(Sender: TObject); procedure Panel59Click(Sender: TObject); procedure cxGrid2TableView1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure Edit34KeyPress(Sender: TObject; var Key: Char); procedure Panel61Click(Sender: TObject); procedure cxGridTableView4MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure cxGridTableView4MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure cxGridTableView4MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure cxGridTableView2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure cxGridTableView2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure cxGridTableView2MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure cxGrid2TableView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure cxGrid2TableView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure cxGrid2TableView1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure cxGridTableView3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure cxGridTableView3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure cxGridTableView3MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure cxGridTableView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure cxGridTableView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure cxGridTableView1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure cxGridTableView4MouseEnter(Sender: TObject); procedure Panel38MouseEnter(Sender: TObject); procedure Panel40MouseEnter(Sender: TObject); procedure btnFINISHClick(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); private { Private declarations } dev_mode : integer; FqryList: TList; FDragging: Boolean; FOffset: TPoint; inifilename : string; FDragScrolling: Boolean; FStartY: Integer; FStartTopRow: Integer; procedure xShowInfo(tmpList: TList); procedure xFreeAll(tmpList: TList); function xGetObjEmpInfo: TList; procedure pan_select(tag: integer); procedure label_set_alclient; procedure Buttonselect(tag: integer); procedure Buttonselect_1(tag: integer); procedure BTCreate_1(page_no,count: integer); procedure BTCreate_2(page_no,count: integer); procedure DynamicButton_1Click(Sender: TObject); procedure DynamicButton_2Click(Sender: TObject); procedure SelectFocusedRecord; procedure recordselectbt_1(fpanel:TPanel ; ck: integer); procedure PG_Connect; procedure Material_refresh; procedure Material_RTP_refresh; procedure SaleItem_refresh; function qCreateGetUniqueString(clsName: string): string; procedure xCreateInsertSql(curMaterial: TMaterialData); procedure xCreateInsertSql_EmpLog(EmpLog: TEmpLog); procedure xCreateInsertSql_FobjSale(curSaleItem: TSaleItemMst); procedure AlertCall(msg: string); function ConfirmCall(msg: string):Boolean; procedure login_; procedure logout_; procedure easyselectgridRefresh; procedure cbCustList_Refresh; function Alarm_use_CK: Boolean; function Alarm_use_UPDATE(_set:string): Boolean; function nametostock(_name: string): string; function NametoProdModel(_name: string): string; function NametoMatUnitPrice(_name: string): string; procedure ordermstupdate(_name, _OBID, _LcStatus:string); procedure login_API(logdata:string); function GetLocalIPAddress: string; function GetTimeDiffStr(StartTime, EndTime: TDateTime): string; procedure alarmstatusCK(ck: Boolean); procedure alarmstatusRefresh; public { Public declarations } procedure xAutoResizeStringGridColumns(Grid: TStringGrid; Canvas: TCanvas); end; var fKiosk: TfKiosk; implementation uses uDM, NeolTestMain, Editor, uKioskView, uConfirmMessage, uAlertMessage, IdStack, uLogManagerThread; {$R *.dfm} procedure TfKiosk.PageControl1Changing(Sender: TObject; var AllowChange: Boolean); begin // cbCustList_Refresh; end; procedure TfKiosk.cbCustList_Refresh; var CustMst : TCustMst; tmpList : TStrings; i : integer; begin try cbCustList.Clear; ComboBox8.Clear; ComboBox9.Clear; tmpList := TStringList.Create; CustMst := TCustMst.Create(Self); tmpList := CustMst.xGetStrsDistinctCustName(dm.FDQuery1); if tmpList.Count > 0 then begin for i := 0 to tmpList.Count -1 do begin cbCustList.Items.Add(tmpList[i]); end; ComboBox8.Items := cbCustList.Items; ComboBox9.Items := cbCustList.Items; end; finally tmpList.Free; end; end; procedure TfKiosk.Panel18Click(Sender: TObject); begin recordselectbt_1(Sender as TPanel, (Sender as TPanel).Tag); end; procedure TfKiosk.recordselectbt_1(fpanel:TPanel ; ck:integer); begin fpanel.Color := $00978F62; if (GridOrderListTV.DataController.RecordCount > 0) then begin if GridOrderListTV.DataController.GetSelectedCount = 0 then GridOrderListTV.DataController.FocusedRecordIndex := 0; case ck of 0 : begin GridOrderListTV.DataController.FocusedRecordIndex := 0; end; 1 : begin // if GridOrderListTV.DataController.FocusedRecordIndex - 1 >= 0 then // GridOrderListTV.DataController.FocusedRecordIndex := GridOrderListTV.DataController.FocusedRecordIndex - 1; if GridOrderListTV.DataController.FocusedRecordIndex - 7 >= 0 then GridOrderListTV.DataController.FocusedRecordIndex := GridOrderListTV.DataController.FocusedRecordIndex - 7 else GridOrderListTV.DataController.FocusedRecordIndex := 0; end; 2 : begin // if GridOrderListTV.DataController.FocusedRecordIndex + 1 < GridOrderListTV.DataController.RecordCount then // GridOrderListTV.DataController.FocusedRecordIndex := GridOrderListTV.DataController.FocusedRecordIndex + 1; if GridOrderListTV.DataController.FocusedRecordIndex + 7 < GridOrderListTV.DataController.RecordCount then GridOrderListTV.DataController.FocusedRecordIndex := GridOrderListTV.DataController.FocusedRecordIndex + 7 else GridOrderListTV.DataController.FocusedRecordIndex := GridOrderListTV.DataController.RecordCount - 1; end; 3 : begin GridOrderListTV.DataController.FocusedRecordIndex := GridOrderListTV.DataController.RecordCount - 1; end; end; SelectFocusedRecord; end; Refresh; Sleep(100); fpanel.Color := $00E8E8D5; end; procedure TfKiosk.SelectFocusedRecord; begin // ÇöÀç Æ÷Ä¿½ºµÈ ·¹Äڵ带 ¼±ÅÃÇÕ´Ï´Ù. GridOrderListTV.DataController.SelectRows(GridOrderListTV.DataController.FocusedRecordIndex, GridOrderListTV.DataController.FocusedRecordIndex); GridOrderListTV.DataController.ClearSelection; GridOrderListTV.Controller.FocusedRow.Selected := True; end; procedure TfKiosk.Panel28Click(Sender: TObject); begin login_; end; function TfKiosk.GetLocalIPAddress: string; begin // Indy ½ºÅÃÀ» Ȱ¼ºÈ­ÇÏ¿© ·ÎÄà ÁÖ¼Ò¸¦ °¡Á®¿È TIdStack.IncUsage; try Result := GStack.LocalAddress; finally TIdStack.DecUsage; end; end; procedure TfKiosk.login_API(logdata:string); var HTTP: TNetHTTPClient; Params: TStringList; Response: IHTTPResponse; URL: string; begin try // ¿¬µ¿°¡À̵忡 ¸í½ÃµÈ Á¤È®ÇÑ URL »ç¿ë URL := 'https://log.smart-factory.kr/apisvc/sendLogData.json'; HTTP := TNetHTTPClient.Create(nil); Params := TStringList.Create; try Params.Add('crtfcKey=' + '$5$API$eGQm84us0vMutKCHr/q0zDgtgBqSK24rMGdRUKEdf1A'); // ·Î±×APIÀÎÁõŰ [cite: 108] Params.Add('logDt=' + FormatDateTime('yyyy-mm-dd hh:nn:ss.zzz', Now)); // ·Î±×ÀϽà [cite: 108] Params.Add('useSe=' + logdata); // ·Î±×ÀÎ ±¸ºÐ ÄÚµå Params.Add('sysUser=' + edt_ID.Text); // »ç¿ëÀÚ ID Params.Add('conectIp=' + GetLocalIPAddress); // Á¢¼Ó IP Params.Add('dataUsgqty=' + IntToStr(0)); // µ¥ÀÌÅÍ»ç¿ë·® [cite: 108] // POST ¹æ½ÄÀ¸·Î Àü¼Û Response := HTTP.Post(URL, Params); if Response.StatusCode = 200 then AddLog_Thread(Response.ContentAsString()) else AddLog_Thread('Error: ' + IntToStr(Response.StatusCode)); finally Params.Free; HTTP.Free; end; except // end; end; procedure TfKiosk.login_; var EmpLog : TEmpLog; begin Panel28.Color := $005C583D; label57.Visible := false; Refresh; try try // Pan_Login.Visible := False; DM.FDQuery1.Close; DM.FDQuery1.SQL.Text := 'SELECT * FROM "EmpMst" WHERE "EmpID"='''+edt_ID.Text+''' AND "EmpPwd"='''+edt_PASS.Text+''''; DM.FDQuery1.Open; if DM.FDQuery1.RecordCount > 0 then begin Pan_Login.Visible := False; try EmpLog := TEmpLog.Create(Self); EmpLog.Name := DM.FDQuery1.FieldByName('Name').AsString; EmpLog.OBID := qCreateGetUniqueString('EmpLog'); EmpLog.wClassName := 'EmpLog'; EmpLog.CreateDate := FormatDateTime('yyyy-mm-dd',Now); EmpLog.CreateTime := FormatDateTime('hh:nn:ss',Now); EmpLog.CreatorID := 'asdf'; EmpLog.IsValid := 'true'; EmpLog.LcStatus := 'Working'; EmpLog.EmpID := DM.FDQuery1.FieldByName('EmpID').AsString; EmpLog.TeamName := DM.FDQuery1.FieldByName('TeamName').AsString; EmpLog.Role := DM.FDQuery1.FieldByName('Role').AsString; EmpLog.ConnDate := FormatDateTime('yyyy-mm-dd',Now); EmpLog.ConnTime := FormatDateTime('hh:nn:ss',Now); EmpLog.ExitDate := ''; EmpLog.ExitTime := ''; EmpLog.UseTime := ''; xCreateInsertSql_EmpLog(EmpLog); edt_loginDateTime.Text := FormatDateTime('yyyy-mm-dd hh:nn:ss',Now); edt_OBID.Text := EmpLog.OBID; finally EmpLog.Free; end; login_API('DO6001'); // ·Î±×ÀÎ cbCustList_Refresh; case ComboBox7.ItemIndex of 1 : pan_select(6); 2 : pan_select(7); 3 : pan_select(8); end; end else begin label57.Visible := True; edt_ID.SetFocus; end; except on E: Exception do //Memo1.Lines.Add('['+FormatDateTime('yyyymmdd hhnnss.zzz',now)+'] '+'Äõ¸® ½ÇÇà ¿À·ù: ' + E.Message); ShowMessage('Äõ¸® ½ÇÇà ¿À·ù: ' + E.Message); end; finally Panel28.Color := $00978F62; end; end; function TfKiosk.GetTimeDiffStr(StartTime, EndTime: TDateTime): string; var Diff: TDateTime; Days: Integer; Hour, Min, Sec, MS: Word; result_str : string; begin result_str := ''; // 1. Â÷À̰ª °è»ê (¼ø¼­ »ó°ü¾øÀÌ ¾ç¼ö Â÷ÀÌ ±¸Çϱâ) if StartTime > EndTime then Diff := StartTime - EndTime else Diff := EndTime - StartTime; // 2. 'ÀÏ(Day)' ÃßÃâ: TDateTimeÀÇ Á¤¼ö ºÎºÐÀÌ ³¯Â¥ ¼öÀÔ´Ï´Ù. Days := Trunc(Diff); // 3. ½Ã, ºÐ, ÃÊ ÃßÃâ: DecodeTimeÀº ÀÚµ¿À¸·Î ¼Ò¼öÁ¡(½Ã°£) ºÎºÐ¸¸ °è»êÇØÁÝ´Ï´Ù. DecodeTime(Diff, Hour, Min, Sec, MS); Format('%dÀÏ %d½Ã°£ %dºÐ %dÃÊ', [Days, Hour, Min, Sec]); if Days > 0 then result_str := Format('%dÀÏ ', [Days]); if Hour > 0 then result_str := result_str + Format('%d½Ã°£ ', [Hour]); if Min > 0 then result_str := result_str + Format('%dºÐ ', [Min]); if Sec > 0 then result_str := result_str + Format('%dÃÊ', [Sec]); // 4. Æ÷¸ËÆÃÇÏ¿© ¹Ýȯ (%d´Â Á¤¼öÇü º¯¼ö ġȯ) Result := Trim(result_str); end; procedure TfKiosk.logout_; var update_sql : string; StartDateTime, EndDateTime: TDateTime; begin if Trim(edt_OBID.Text) <> '' then begin StartDateTime := StrToDateTime(edt_loginDateTime.Text); EndDateTime := Now; update_sql := ' UPDATE "EmpLog"' + ' SET "ExitDate" = '''+ FormatDateTime('yyyy-mm-dd',Now) +''' , '+ ' "ExitTime" = '''+ FormatDateTime('hh:nn:ss',Now) +''' , '+ ' "UseTime" = '''+ GetTimeDiffStr(StartDateTime,EndDateTime) +''' '+ ' WHERE "OBID" = '''+ edt_OBID.Text +''' '+ ' AND "EmpID" = '''+ edt_ID.Text +''' '; if not DM.FDConnection1.Connected then DM.FDConnection1.Connected := True; if DM.FDConnection1.Connected then begin DM.FDQuery1.Active := false; DM.FDQuery1.SQL.Clear; DM.FDQuery1.SQL.Add(update_sql); DM.FDQuery1.ExecSQL; end; end; end; procedure TfKiosk.Panel29Click(Sender: TObject); begin Pan_Setting.Visible := False; end; procedure TfKiosk.Panel2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then begin FDragging := True; FOffset := Point(X, Y); end; end; procedure TfKiosk.Panel2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var NewPos: TPoint; begin if FDragging then begin // ÇöÀç ¸¶¿ì½º À§Ä¡ ±âÁØÀ¸·Î ºÎ¸ð Æû ÁÂÇ¥ °è»ê NewPos := Panel1.ClientToParent(Point(X, Y)); Panel1.Left := NewPos.X - FOffset.X; Panel1.Top := NewPos.Y - FOffset.Y; end; end; procedure TfKiosk.Panel2MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then begin FDragging := false; FOffset := Point(X, Y); end; end; procedure TfKiosk.Panel32Click(Sender: TObject); begin if Edit19.Text <> '1' then begin Edit19.Text := IntToStr(StrToInt(Edit19.Text)-1); BTCreate_1(StrToInt(Edit19.Text)-1,StrToInt(Edit20.Text)); Label44.Caption := Edit19.Text + '/'+Edit21.Text; end; end; procedure TfKiosk.Panel33Click(Sender: TObject); begin if Edit19.Text <> Edit21.Text then begin Edit19.Text := IntToStr(StrToInt(Edit19.Text)+1); BTCreate_1(StrToInt(Edit19.Text)-1,StrToInt(Edit20.Text)); Label44.Caption := Edit19.Text + '/'+Edit21.Text; end; end; procedure TfKiosk.Panel35Click(Sender: TObject); begin if Edit22.Text <> '1' then begin Edit22.Text := IntToStr(StrToInt(Edit22.Text)-1); BTCreate_2(StrToInt(Edit22.Text)-1,StrToInt(Edit23.Text)); Label45.Caption := Edit22.Text + '/'+Edit24.Text; end; end; procedure TfKiosk.Panel36Click(Sender: TObject); begin if Edit22.Text <> Edit24.Text then begin Edit22.Text := IntToStr(StrToInt(Edit22.Text)+1); BTCreate_2(StrToInt(Edit22.Text)-1,StrToInt(Edit23.Text)); Label45.Caption := Edit22.Text + '/'+Edit24.Text; end; end; procedure TfKiosk.Panel38MouseEnter(Sender: TObject); begin if btnFINISH.Visible then btnFINISH.Visible := False; end; procedure TfKiosk.Panel3Click(Sender: TObject); var IniFile : TIniFile; begin (Sender as TPanel).Color := $005C583D; Refresh; try IniFile := TIniFile.Create(inifilename); try IniFile.WriteString('Setting', 'I', Edit15.Text); IniFile.WriteString('Setting', 'P', Edit16.Text); IniFile.WriteBool('Setting_1', 'bool', True); IniFile.WriteInteger('Setting', 'init_Mo', ComboBox7.ItemIndex); finally IniFile.Free; end; finally Sleep(50); (Sender as TPanel).Color := $00978F62; end; end; procedure TfKiosk.Panel40MouseEnter(Sender: TObject); begin if btnFINISH.Visible then btnFINISH.Visible := False; end; procedure TfKiosk.Panel54Click(Sender: TObject); var re : Boolean; begin re := Alarm_use_UPDATE('ON'); alarmstatusCK(re); { if ConfirmCall('[¾Ë¶÷ Àü¼Û] ¼³Á¤ ÇϽðڽÀ´Ï±î?'+#13+#13+'¼³Á¤Àº ¹Ù·Î Àû¿ë µË´Ï´Ù.') then begin Alarm_use_UPDATE('ON'); Pan_Setting.Visible := False; end; } end; procedure TfKiosk.alarmstatusRefresh; var re : Boolean; tmpList : TList; MachineMst : TMachineMst; update_sql : string; begin try tmpList := TList.Create; MachineMst := TMachineMst.Create(Self); tmpList := MachineMst.xGetStrSqlMachineMstList(DM.FDQuery1,'','','ALARM'); if tmpList.Count = 1 then begin MachineMst := tmpList.Items[0]; alarmstatusCK(MachineMst.LcStatus = 'ON'); end; finally tmpList.free; end; end; procedure TfKiosk.alarmstatusCK(ck:Boolean); var re : Boolean; begin if ck then begin Panel54.Color := $00809443; Panel59.Color := $009D9D9D; end else begin Panel54.Color := $009D9D9D; Panel59.Color := $00809443; end; end; procedure TfKiosk.Panel59Click(Sender: TObject); var re : Boolean; begin re := Alarm_use_UPDATE('OFF'); alarmstatusCK(not re); { if ConfirmCall('[¾Ë¶÷ ¹ÌÀü¼Û] ¼³Á¤ ÇϽðڽÀ´Ï±î?'+#13+#13+'¼³Á¤Àº ¹Ù·Î Àû¿ë µË´Ï´Ù.') then begin Alarm_use_UPDATE('OFF'); Pan_Setting.Visible := False; end; } end; procedure TfKiosk.Panel61Click(Sender: TObject); begin close; end; function TfKiosk.Alarm_use_UPDATE(_set:string):Boolean; var tmpList : TList; MachineMst : TMachineMst; update_sql : string; begin Result := false; try tmpList := TList.Create; MachineMst := TMachineMst.Create(Self); tmpList := MachineMst.xGetStrSqlMachineMstList(DM.FDQuery1,'','','ALARM'); if tmpList.Count = 1 then begin MachineMst := tmpList.Items[0]; update_sql := ' UPDATE "MachineMst"' + ' SET "LcStatus" = '''+ _set +''' '+ ' WHERE "OBID" = '''+ MachineMst.OBID +''' '; if not DM.FDConnection1.Connected then DM.FDConnection1.Connected := True; if DM.FDConnection1.Connected then begin DM.FDQuery1.Active := false; DM.FDQuery1.SQL.Clear; DM.FDQuery1.SQL.Add(update_sql); DM.FDQuery1.ExecSQL; end; Result := True; end; finally tmpList.free; end; { var update_sql : string; begin try update_sql := ''; update_sql := 'UPDATE "plc_Data" SET '+ '"dev_status"='''+Plc_status+''' '+ '"UpdateDT"=now() '+ ' WHERE "plcID"='+inttostr(PLC_NO); if not FDConnection1.Connected then FDConnection1.Connected := True; if FDConnection1.Connected then begin FDQuery1.Active := false; FDQuery1.SQL.Clear; FDQuery1.SQL.Add(update_sql); FDQuery1.ExecSQL; lastDBInsert := now; if lb_status.Caption <> Plc_status then begin lb_status.Caption := Plc_status; end; end; except on e : exception do begin Memo2_ADD('[insertSQL()]Database Connect Error :: '+e.Message); end; end; end; } end; function TfKiosk.Alarm_use_CK:Boolean; var tmpList : TList; MachineMst : TMachineMst; begin Result := false; try tmpList := TList.Create; MachineMst := TMachineMst.Create(Self); tmpList := MachineMst.xGetStrSqlMachineMstList(DM.FDQuery1,'','','ALARM'); if tmpList.Count = 1 then begin MachineMst := tmpList.Items[0]; if MachineMst.LcStatus = 'ON' then begin Result := True; end; end; finally tmpList.free; end; end; procedure TfKiosk.Pan_MainMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if dev_mode = 1 then begin ReleaseCapture; Perform( WM_SYSCOMMAND, $F012, 0 ); end; end; procedure TfKiosk.xAutoResizeStringGridColumns(Grid: TStringGrid; Canvas: TCanvas); var Col, Row: Integer; MaxWidth: Integer; CellText: string; begin for Col := 0 to Grid.ColCount - 1 do begin MaxWidth := 0; for Row := 0 to Grid.RowCount - 1 do begin CellText := Grid.Cells[Col, Row]; MaxWidth := max(MaxWidth, Canvas.TextWidth(CellText)); end; Grid.ColWidths[Col] := MaxWidth + 10; end; end; procedure TfKiosk.xFreeAll(tmpList: TList); var i: Integer; tmpEmp: TEmpMst; begin i := 0; while i < tmpList.Count do begin tmpEmp := TEmpMst(tmpList.Items[0]); tmpEmp.Free; tmpList.Delete(0); end; tmpList.Free; tmpList:=nil; end; function TfKiosk.xGetObjEmpInfo: TList; var curEmp: TEmpMst; begin Result := TList.Create; with dm do begin while not FDQuery1.Eof do begin curEmp := TEmpMst.Create(Self); curEmp.OBID := FDQuery1.FieldByName('OBID').AsString; curEmp.Name := FDQuery1.FieldByName('Name').AsString; curEmp.wClassName := FDQuery1.FieldByName('wClassName').AsString; curEmp.CreateDate := FDQuery1.FieldByName('CreateDate').AsString; //curEmp.CreateTime := FDQuery1.FieldByName('CreateTime').AsString; curEmp.CreateTime := FormatDateTime('hh:nn:ss', FDQuery1.FieldByName('CreateTime').AsDateTime); curEmp.CreatorID := FDQuery1.FieldByName('CreatorID').AsString; curEmp.IsValid := FDQuery1.FieldByName('IsValid').AsString; curEmp.OrdCode := FDQuery1.FieldByName('OrdCode').AsString; curEmp.Position := FDQuery1.FieldByName('Position').AsString; curEmp.Role := FDQuery1.FieldByName('Role').AsString; curEmp.InDate := FDQuery1.FieldByName('InDate').AsString; curEmp.OutDate := FDQuery1.FieldByName('OutDate').AsString; curEmp.Status := FDQuery1.FieldByName('Status').AsString; curEmp.EmpTelNum := FDQuery1.FieldByName('EmpTelNum').AsString; curEmp.EmpAddress := FDQuery1.FieldByName('EmpAddress').AsString; curEmp.Descriptions := FDQuery1.FieldByName('Descriptions').AsString; Result.Add(curEmp); FDQuery1.Next; end; end; end; procedure TfKiosk.xShowInfo(tmpList: TList); var i, cidx, ridx: Integer; tmpEmp: TEmpMst; begin ridx := 0; StringGrid1.RowCount := tmpList.Count+1; for i := 0 to tmpList.Count-1 do begin tmpEmp := TEmpMst(tmpList.Items[i]); Inc(ridx); cidx := StringGrid1.Rows[0].IndexOf('OBID'); StringGrid1.Objects[cidx,ridx] := tmpEmp; StringGrid1.Cells[cidx,ridx] := tmpEmp.OBID; cidx := StringGrid1.Rows[0].IndexOf('Name'); StringGrid1.Cells[cidx,ridx] := tmpEmp.Name; cidx := StringGrid1.Rows[0].IndexOf('wClassName'); StringGrid1.Cells[cidx,ridx] := tmpEmp.wClassName; cidx := StringGrid1.Rows[0].IndexOf('CreateDate'); StringGrid1.Cells[cidx,ridx] := tmpEmp.CreateDate; cidx := StringGrid1.Rows[0].IndexOf('CreateTime'); StringGrid1.Cells[cidx,ridx] := tmpEmp.CreateTime; cidx := StringGrid1.Rows[0].IndexOf('CreatorID'); StringGrid1.Cells[cidx,ridx] := tmpEmp.CreatorID; cidx := StringGrid1.Rows[0].IndexOf('IsValid'); StringGrid1.Cells[cidx,ridx] := tmpEmp.IsValid; cidx := StringGrid1.Rows[0].IndexOf('OrdCode'); StringGrid1.Cells[cidx,ridx] := tmpEmp.OrdCode; cidx := StringGrid1.Rows[0].IndexOf('Position'); StringGrid1.Cells[cidx,ridx] := tmpEmp.Position; cidx := StringGrid1.Rows[0].IndexOf('Role'); StringGrid1.Cells[cidx,ridx] := tmpEmp.Role; cidx := StringGrid1.Rows[0].IndexOf('InDate'); StringGrid1.Cells[cidx,ridx] := tmpEmp.InDate; cidx := StringGrid1.Rows[0].IndexOf('OutDate'); StringGrid1.Cells[cidx,ridx] := tmpEmp.OutDate; cidx := StringGrid1.Rows[0].IndexOf('Status'); StringGrid1.Cells[cidx,ridx] := tmpEmp.Status; cidx := StringGrid1.Rows[0].IndexOf('EmpTelNum'); StringGrid1.Cells[cidx,ridx] := tmpEmp.EmpTelNum; cidx := StringGrid1.Rows[0].IndexOf('EmpAddress'); StringGrid1.Cells[cidx,ridx] := tmpEmp.EmpAddress; cidx := StringGrid1.Rows[0].IndexOf('Descriptions'); StringGrid1.Cells[cidx,ridx] := tmpEmp.Descriptions; end; end; procedure TfKiosk.btDBConnectClick(Sender: TObject); begin DM.PG_DBName := lbDBName.Text; DM.PG_UserName := lbUserName.Text; DM.PG_Password := lbPassword.Text; DM.PG_Host := lbHost.Text; DM.PG_Port := lbPort.Text; if dm.DM_Connect then begin btDBConnect.Enabled := False; btDBdisConnect.Enabled := True; Memo1.Lines.Add('PG_Connected : TRUE'); end else begin btDBConnect.Enabled := True; btDBdisConnect.Enabled := False; Memo1.Lines.Add('PG_Connected : FALSE'); end; end; procedure TfKiosk.btDBdisConnectClick(Sender: TObject); begin if dm.DM_Close then begin btDBConnect.Enabled := True; btDBdisConnect.Enabled := False; Memo1.Lines.Add('PG_disConnected'); end; end; procedure TfKiosk.btnFINISHClick(Sender: TObject); begin if RadioButton9.Checked and ConfirmCall(Label80.Caption + #13+ #13+' ¿Ï·á ó¸® ÇϽðڽÀ´Ï±î?') then begin ordermstupdate(Label80.Caption, Edit50.Text, 'FINISH'); Edit14.Text := ''; Edit32.Text := ''; Edit48.Text := ''; Edit50.Text := ''; cbCustList.ItemIndex := -1; DatePicker5.Date := Now; easyselectgridRefresh; SaleItem_refresh; end; btnFINISH.Visible := False; end; procedure TfKiosk.btQueryClick(Sender: TObject); var i: Integer; tmpList: TList; tmpItem: TwItem; tmpEmp: TEmpMst; begin try DM.FDQuery1.Close; DM.FDQuery1.SQL.Text := Memo2.Lines.Text; DM.FDQuery1.Open; except on E: Exception do ShowMessage('Äõ¸® ½ÇÇà ¿À·ù: ' + E.Message); end; if FqryList <> nil then xFreeAll(FqryList); FqryList := xGetObjEmpInfo; xShowInfo(FqryList); xAutoResizeStringGridColumns(StringGrid1, Canvas); end; procedure TfKiosk.Button11Click(Sender: TObject); begin easyselectgridRefresh; SaleItem_refresh; end; function TfKiosk.nametostock(_name:string):string; begin result := '0'; DM.FDQuery1.SQL.Text := ' SELECT "item", "balance" ' + ' FROM "stock_summary" '+ ' WHERE "item" = '''+_name+''';'; DM.FDQuery1.Open; if DM.FDQuery1.RecordCount = 1 then begin if Trim(DM.FDQuery1.FieldByName('balance').AsString) = '' then result := '0' else result := Trim(DM.FDQuery1.FieldByName('balance').AsString); end; end; function TfKiosk.NametoProdModel(_name:string):string; begin result := ''; DM.FDQuery1.SQL.Text := ' SELECT "Name", "Model" ' + ' FROM "ProductMst" '+ ' WHERE "Name" = '''+_name+''';'; DM.FDQuery1.Open; if DM.FDQuery1.RecordCount = 1 then begin result := Trim(DM.FDQuery1.FieldByName('Model').AsString); end; end; function TfKiosk.NametoMatUnitPrice(_name:string):string; begin result := ''; DM.FDQuery1.SQL.Text := ' SELECT "item", "MatUnitPrice" ' + ' FROM "stock_summary" '+ ' WHERE "item" = '''+_name+''';'; DM.FDQuery1.Open; if DM.FDQuery1.RecordCount = 1 then begin result := Trim(DM.FDQuery1.FieldByName('MatUnitPrice').AsString); end; end; procedure TfKiosk.SaleItem_refresh; var row_ck, i : Integer; tmpList : TList; kind, stock_qty : string; SaleItemMst : TSaleItemMst; begin try DM.FDQuery1.Close; if RadioButton9.Checked then begin // Á¦Ç° ÀÔ°í : ordermst -> salemst if Trim(Edit31.Text) <> '' then begin DM.FDQuery1.SQL.Text := ' SELECT "OBID","LcStatus","OrdCode","Name","CustName","Qty","MatKind","Unitt","ProdCode","Manufact", ' + ' "stock_summary"."balance" '+ ' FROM "OrderMst" LEFT JOIN "stock_summary" '+ ' ON "OrderMst"."Name" = "stock_summary"."item" '+ ' WHERE "LcStatus"=''ORDER'' '+ ' AND "IsValid"=true '+ ' AND ( '+ ' ("OrdCode" Like '''+Trim(Edit31.Text)+'%'') '+ ' OR ("Name" Like '''+Trim(Edit31.Text)+'%'') '+ ' ) '+ ' ORDER BY "Name"'; end else begin DM.FDQuery1.SQL.Text := ' SELECT "OBID","LcStatus","OrdCode","Name","CustName","Qty","MatKind","Unitt","ProdCode","Manufact", ' + ' "stock_summary"."balance" '+ ' FROM "OrderMst" LEFT JOIN "stock_summary" '+ ' ON "OrderMst"."Name" = "stock_summary"."item"'+ ' WHERE "LcStatus"=''ORDER'' '+ ' AND "IsValid"=true '+ ' ORDER BY "Name"'; end; DM.FDQuery1.Open; if DM.FDQuery1.RecordCount > 0 then begin with cxGridTableView2.DataController do begin try BeginUpdate; RecordCount := 0; finally EndUpdate; end; try BeginUpdate; DM.FDQuery1.First; while not DM.FDQuery1.Eof do begin row_ck := AppendRecord; // "OBID","LcStatus","OrdCode","Name","CustName","Qty","MatKind" Values[row_ck,cxGridTableView2Column1.Index] := DM.FDQuery1.FieldByName('OrdCode').AsString; Values[row_ck,cxGridTableView2Column2.Index] := DM.FDQuery1.FieldByName('Name').AsString; Values[row_ck,cxGridTableView2Column3.Index] := DM.FDQuery1.FieldByName('CustName').AsString; Values[row_ck,cxGridTableView2Column4.Index] := DM.FDQuery1.FieldByName('Qty').AsString; Values[row_ck,cxGridTableView2Column5.Index] := DM.FDQuery1.FieldByName('Unitt').AsString; Values[row_ck,cxGridTableView2Column6.Index] := DM.FDQuery1.FieldByName('LcStatus').AsString; Values[row_ck,cxGridTableView2Column7.Index] := DM.FDQuery1.FieldByName('MatKind').AsString; Values[row_ck,cxGridTableView2Column8.Index] := DM.FDQuery1.FieldByName('OBID').AsString; Values[row_ck,cxGridTableView2Column9.Index] := DM.FDQuery1.FieldByName('ProdCode').AsString; Values[row_ck,cxGridTableView2Column10.Index] := DM.FDQuery1.FieldByName('Manufact').AsString; Values[row_ck,cxGridTableView2Column11.Index] := DM.FDQuery1.FieldByName('balance').AsString; Values[row_ck,cxGridTableView2Column12.Index] := DM.FDQuery1.FieldByName('OBID').AsString; // Values[row_ck,cxGridTableView2Column8.Index] := DM.FDQuery1.FieldByName('Thickness').AsString; // Values[row_ck,cxGridTableView2Column9.Index] := DM.FDQuery1.FieldByName('ProdLength').AsString; DM.FDQuery1.Next; end; finally EndUpdate; end; end; end else begin with cxGridTableView2.DataController do begin try BeginUpdate; RecordCount := 0; finally EndUpdate; end; end; end; end else if RadioButton10.Checked then begin // Á¦Ç° Ãâ°í : salemst -> - ÀÔ·Â DM.FDQuery1.SQL.Text := ' SELECT * ' + ' FROM stock_summary '+ ' ORDER BY item; '; DM.FDQuery1.Open; if DM.FDQuery1.RecordCount > 0 then begin with cxGrid2TableView1.DataController do begin try BeginUpdate; RecordCount := 0; finally EndUpdate; end; try BeginUpdate; DM.FDQuery1.First; while not DM.FDQuery1.Eof do begin row_ck := AppendRecord; Values[row_ck,cxGrid2TableView1Column1.Index] := DM.FDQuery1.FieldByName('item').AsString; Values[row_ck,cxGrid2TableView1Column2.Index] := DM.FDQuery1.FieldByName('balance').AsString; DM.FDQuery1.Next; end; finally EndUpdate; end; end; end; end else if RadioButton11.Checked then begin // Á¦Ç° ºÒ·® ÀÔ°í : product -> salemst - ÀÔ·Â DM.FDQuery1.SQL.Text := ' SELECT * ' + ' FROM "ProductMst" '+ ' WHERE "IsValid" = true '+ ' ORDER BY "Name"; '; DM.FDQuery1.Open; if DM.FDQuery1.RecordCount > 0 then begin with cxGrid2TableView1.DataController do begin try BeginUpdate; RecordCount := 0; finally EndUpdate; end; try BeginUpdate; DM.FDQuery1.First; while not DM.FDQuery1.Eof do begin row_ck := AppendRecord; Values[row_ck,cxGrid2TableView1Column1.Index] := DM.FDQuery1.FieldByName('Name').AsString; Values[row_ck,cxGrid2TableView1Column2.Index] := DM.FDQuery1.FieldByName('ProdSpec').AsString; DM.FDQuery1.Next; end; finally EndUpdate; end; end; end; end; except on E: Exception do Memo1.Lines.Add('['+FormatDateTime('yyyymmdd hhnnss.zzz',now)+'] '+'Äõ¸® ½ÇÇà ¿À·ù(Material_refresh): ' + E.Message); end; end; procedure TfKiosk.Button12Click(Sender: TObject); var fKioskView : TfKioskView; begin if (Trim(label80.Caption) = '') or (Trim(label80.Caption) = 'Á¦Ç°¸í') then exit; fKioskView := TfKioskView.Create(nil); try fKioskView.RadioGroup1.ItemIndex := 2; // 0 : ¿øºÎÀÚÀç, 1 : RTP¿ø·á, 2 : Á¦Ç° fKioskView.RadioGroup2.Columns := 4; // ºÒ·® Ãß°¡ fKioskView.RadioGroup2.Items.Add('ºÒ·®'); fKioskView.Label2.Caption := Trim(label80.Caption); // 'Á¦Ç°¸í'; fKioskView.edit1.text := Edit42.Text; fKioskView.ShowModal; // ¸ð´Þ âÀ¸·Î Ç¥½Ã // ¶Ç´Â NewForm.Show; // ºñ¸ð´Þ âÀ¸·Î Ç¥½Ã finally fKioskView.Free; end; end; procedure TfKiosk.Button13Click(Sender: TObject); var FobjMat : TMaterialData; begin if (Trim(Edit37.Text) = '') or (Trim(Edit37.Text) = '0') or (Trim(Edit37.Text) = '0.0') or (Trim(Edit37.Text) = '.0') or (Trim(Edit37.Text) = '0.') or (Trim(Panel58.Caption) = '') or (Trim(Panel58.Caption) = 'RTP ¿ø·á¸í') then exit; if Trim(Edit37.Text) <> '' then begin if StrToFloatDef(Trim(Edit37.Text),0.0) <= 0.0 then exit; if not RadioButton5.Checked then begin if StrToFloatDef(Trim(Edit44.Text),0.0) < StrToFloatDef(Trim(Edit37.Text),0.0) then begin AlertCall('Àç°íÇöȲ È®ÀÎ ¿ä¸Á.'); Exit; end; end; end; FobjMat := TMaterialData.Create(Self); FobjMat.Name := Panel58.Caption; FobjMat.MatKind := Edit18.Text; FobjMat.OBID := qCreateGetUniqueString('MaterialData'); FobjMat.wClassName := 'MaterialData'; FobjMat.CreateDate := FormatDateTime('yyyy-MM-dd',Now); FobjMat.CreateTime := FormatDateTime('HH:nn:ss',Now); FobjMat.CreatorID := edt_ID.Text; FobjMat.IsValid := 't'; FobjMat.LcStatus := 'Working'; FobjMat.OrdNum := '0'; FobjMat.OrdCode := Edit41.Text; FobjMat.Standard := ''; if RadioButton5.Checked then begin FobjMat.Kind := 'ÀÔ°í'; FobjMat.InQty := Edit37.Text; FobjMat.OutQty := '0'; end else begin FobjMat.Kind := 'Ãâ°í'; FobjMat.InQty := '0'; FobjMat.OutQty := Edit37.Text; end; FobjMat.StockQty := '0'; FobjMat.Status := ''; FobjMat.Descriptions := Edit38.Text; FobjMat.Unitt := Edit47.Text; FobjMat.OrdDate := FormatDateTime('yyyy-MM-dd',DatePicker4.Date); FobjMat.CustName := ComboBox8.Text; FobjMat.MatType := 'RTP'; if ConfirmCall(FobjMat.Kind+' ó¸® ÇϽðڽÀ´Ï±î?') then begin xCreateInsertSql(FobjMat); Edit37.Text := ''; Edit38.Text := ''; DatePicker4.Date := Now; // Edit44.Text := FobjMat.xGetStrSumStockQty(dm.FDQuery1,Edit41.Text,'RTP'); // Edit44.Text := FobjMat.xGetStrSumStockQty(dm.FDQuery1,'',Trim(Panel58.Caption),'RTP'); Edit44.Text := FobjMat.xGetStrSumStockQty(dm.FDQuery1,Trim(Edit41.Text),'RTP'); { class function TMaterialData.xGetStrSumStockQty(AQuery: TFDQuery; code, mtype: string): string; } AlertCall(FobjMat.Kind+' ó¸® ¿Ï·á.'); end; end; procedure TfKiosk.Button14Click(Sender: TObject); begin ConfirmCall('¹«¾ùÀ» È®ÀÎÇϽðھî¿ä?'); end; procedure TfKiosk.Button15Click(Sender: TObject); var FobjSaleItem : TSaleItemMst; begin // if (RadioButton9.Checked or RadioButton10.Checked) and // ((Trim(Edit32.Text) = '') or (Trim(Edit32.Text) = '0') or (Trim(Edit32.Text) = '0.0') or (Trim(Edit32.Text) = '.0') or (Trim(Edit32.Text) = '0.') or (Trim(Label80.Caption) = '') or (Trim(Label80.Caption) = 'Á¦Ç°¸í')) then exit; if (Trim(Edit32.Text) = '') or (Trim(Edit32.Text) = '0') or (Trim(Edit32.Text) = '0.0') or (Trim(Edit32.Text) = '.0') or (Trim(Edit32.Text) = '0.') or (Trim(Label80.Caption) = '') or (Trim(Label80.Caption) = 'Á¦Ç°¸í') then exit; if ( RadioButton9.Checked or RadioButton10.Checked ) and (Trim(Edit32.Text) <> '') then begin if StrToFloatDef(Trim(Edit32.Text),0.0) <= 0.0 then exit; if RadioButton10.Checked then begin // Á¦Ç° Ãâ°í if StrToFloatDef(Trim(Edit13.Text),0.0) < StrToFloatDef(Trim(Edit32.Text),0.0) then begin AlertCall('Àç°íÇöȲ È®ÀÎ ¿ä¸Á.'); Exit; end; end else { // 2026-01-13 ³×¿Ã ¼Û¼ÒÀå ¿äûÀ¸·Î Á¦ÇÑ ÇØÁ¦ if RadioButton9.Checked then begin // Á¦Ç° ÀÔ°í if StrToFloatDef(Trim(Edit32.Text),0.0) < (StrToFloatDef(Trim(Edit48.Text),0.0) - StrToFloatDef(Trim(Edit13.Text),0.0)) then begin AlertCall('<ÀÔ°í °¡´É>'+#13+ 'ÀÔ°í ¼ö·® >= (¿À´õ¼ö¶û-Àç°í¼ö·®)'+#13+#13+ '<ÀÔ°í ºÒ°¡>'+#13+ 'ÀÔ°í ¼ö·® < (¿À´õ¼ö·®-Àç°í¼ö·®)'); Exit; end; end; } end; FobjSaleItem := TSaleItemMst.Create(Self); FobjSaleItem.Name := Label80.Caption; FobjSaleItem.OBID := qCreateGetUniqueString('SaleItemMst'); FobjSaleItem.wClassName := 'SaleItemMst'; FobjSaleItem.CreateDate := FormatDateTime('yyyy-MM-dd',Now); FobjSaleItem.CreateTime := FormatDateTime('HH:nn:ss',Now); FobjSaleItem.CreatorID := edt_ID.Text; FobjSaleItem.IsValid := 't'; FobjSaleItem.LcStatus := 'Working'; FobjSaleItem.OrdDate := FormatDateTime('yyyy-MM-dd',DatePicker5.Date); FobjSaleItem.OrdCode := Edit39.Text; FobjSaleItem.Qty := IntToStr(StrToIntDef(Edit32.Text,0)); FobjSaleItem.GoodQty := '0'; FobjSaleItem.DefQty := '0'; FobjSaleItem.Unitt := Edit14.Text; FobjSaleItem.Descriptions := Edit33.Text; FobjSaleItem.ReQty := '0'; FobjSaleItem.DeliveryQty := '0'; FobjSaleItem.MatKind := Edit49.Text; if RadioButton9.Checked then begin FobjSaleItem.Status := ''; FobjSaleItem.Kind := 'ÀÔ°í'; end else if RadioButton10.Checked then begin FobjSaleItem.Status := ''; FobjSaleItem.Kind := 'Ãâ°í'; end else if RadioButton11.Checked then begin FobjSaleItem.Status := ComboBox3.Text; FobjSaleItem.Kind := 'ºÒ·®'; end; FobjSaleItem.CustName := cbCustList.Text; FobjSaleItem.Manufact := edtManufact.Text; edtModel.Text := NametoProdModel(FobjSaleItem.Name); FobjSaleItem.Model := edtModel.Text; edtMatUnitPrice.Text := NametoMatUnitPrice(FobjSaleItem.Name); FobjSaleItem.MatUnitPrice := FloatToStr(StrToFloatDef(Trim(edtMatUnitPrice.Text),0.0)); //edtMatUnitPrice.Text; FobjSaleItem.MatCost := FloatToStr(StrToFloatDef(Trim(edtMatUnitPrice.Text),0.0) * StrToFloatDef(Trim(Edit32.Text),0.0)); if ConfirmCall(FobjSaleItem.Kind+' ó¸® ÇϽðڽÀ´Ï±î?') then begin xCreateInsertSql_FobjSale(FobjSaleItem); { // 2026-01-13 ¼ÛÁØÈ£ ¼ÒÀå ¿äûÀ¸·Î ¼öÁ¤ if RadioButton9.Checked then begin ordermstupdate(Label80.Caption, Edit50.Text, 'FINISH'); end; } Edit14.Text := ''; Edit32.Text := ''; Edit48.Text := ''; Edit50.Text := ''; cbCustList.ItemIndex := -1; DatePicker5.Date := Now; // Edit13.Text := FobjSaleItem.xGetStrSumStockQty(dm.FDQuery1,Edit40.Text,'NORMAL'); Àç°í È®ÀÎ ÇÊ¿ä AlertCall(FobjSaleItem.Kind+' ó¸® ¿Ï·á.'); easyselectgridRefresh; SaleItem_refresh; end; end; procedure TfKiosk.ordermstupdate(_name,_OBID,_LcStatus:string); var update_sql : string; begin update_sql := ' UPDATE "OrderMst"' + ' SET "LcStatus" = '''+ _LcStatus +''' '+ ' WHERE "OBID" = '''+ _OBID +''' '+ ' AND "Name" = '''+ _name +''' '; if not DM.FDConnection1.Connected then DM.FDConnection1.Connected := True; if DM.FDConnection1.Connected then begin DM.FDQuery1.Active := false; DM.FDQuery1.SQL.Clear; DM.FDQuery1.SQL.Add(update_sql); DM.FDQuery1.ExecSQL; end; end; function TfKiosk.ConfirmCall(msg: string):Boolean; var fConfirmMessage : TfConfirmMessage; begin Result := False; fConfirmMessage := TfConfirmMessage.Create(nil); try fConfirmMessage.Label1.Caption := msg; fConfirmMessage.ShowModal; // ¸ð´Þ âÀ¸·Î Ç¥½Ã if fConfirmMessage.ModalResult = mrYes then Result := True else Result := False; finally fConfirmMessage.Free; end; end; procedure TfKiosk.Button1Click(Sender: TObject); var CK_ROW : integer; I : integer; begin try GridOrderListTV.DataController.BeginUpdate; for I := 0 to 10 do begin with GridOrderListTV.DataController do begin CK_ROW := AppendRecord; Values[CK_ROW, GridOrderListTVColumn1.Index] := 'A'+IntToStr(CK_ROW); Values[CK_ROW, GridOrderListTVColumn2.Index] := 'B'+IntToStr(CK_ROW); Values[CK_ROW, GridOrderListTVColumn3.Index] := 'C'+IntToStr(CK_ROW); Values[CK_ROW, GridOrderListTVColumn4.Index] := 'D'+IntToStr(CK_ROW); Values[CK_ROW, GridOrderListTVColumn5.Index] := 'E'+IntToStr(CK_ROW); Values[CK_ROW, GridOrderListTVColumn6.Index] := 'F'+IntToStr(CK_ROW); Values[CK_ROW, GridOrderListTVColumn7.Index] := 'G'+IntToStr(CK_ROW); Values[CK_ROW, GridOrderListTVColumn8.Index] := 'H'+IntToStr(CK_ROW); Values[CK_ROW, GridOrderListTVColumn9.Index] := 'I'+IntToStr(CK_ROW); Values[CK_ROW, GridOrderListTVColumn10.Index] := 'J'+IntToStr(CK_ROW); Values[CK_ROW, GridOrderListTVColumn11.Index] := 'K'+IntToStr(CK_ROW); Values[CK_ROW, GridOrderListTVColumn12.Index] := 'L'+IntToStr(CK_ROW); Values[CK_ROW, GridOrderListTVColumn13.Index] := 'M'+IntToStr(CK_ROW); Values[CK_ROW, GridOrderListTVColumn14.Index] := 'N'+IntToStr(CK_ROW); Values[CK_ROW, GridOrderListTVColumn15.Index] := 'O'+IntToStr(CK_ROW); end; end; finally GridOrderListTV.DataController.EndUpdate; end; end; procedure TfKiosk.Button2Click(Sender: TObject); begin Memo2.Lines.Clear; Memo2.Lines.Add('SELECT * FROM "EmpMst" WHERE "IsValid"=' + dm.xAddSqlMark('t') + ';'); end; procedure TfKiosk.Button3Click(Sender: TObject); begin frmNeolTestMain := TfrmNeolTestMain.Create(nil); frmNeolTestMain.Show; end; procedure TfKiosk.Button4Click(Sender: TObject); begin try GridOrderListTV.DataController.BeginUpdate; GridOrderListTV.DataController.RecordCount:=0; finally GridOrderListTV.DataController.EndUpdate; end; end; procedure TfKiosk.Button5Click(Sender: TObject); begin Material_refresh; end; procedure TfKiosk.Material_refresh; var row_ck, i : Integer; begin try DM.FDQuery1.Close; if Trim(Edit30.Text) <> '' then begin DM.FDQuery1.SQL.Text := ' SELECT "OrdCode", "Name", "Unitt", '+ ' SUM("InQty") - SUM("OutQty") AS balance '+ ' FROM "MaterialData" '+ ' WHERE "MatType"=''NORMAL'' '+ ' AND "IsValid"=true '+ ' AND ( '+ ' ("Name" Like ''%'+Trim(Edit30.Text)+'%'') '+ ' OR ("CustName" Like ''%'+Trim(Edit30.Text)+'%'') '+ ' ) '+ ' GROUP BY "OrdCode", "Name", "Unitt" '+ ' ORDER BY "Name"'; end else begin DM.FDQuery1.SQL.Text := ' SELECT "OrdCode", "Name", "Unitt", '+ ' SUM("InQty") - SUM("OutQty") AS balance '+ ' FROM "MaterialData" '+ ' WHERE "MatType"=''NORMAL'' '+ ' AND "IsValid"=true '+ ' GROUP BY "OrdCode", "Name", "Unitt" '+ ' ORDER BY "Name"'; end; DM.FDQuery1.Open; if DM.FDQuery1.RecordCount > 0 then begin with cxGridTableView1.DataController do begin try BeginUpdate; RecordCount := 0; finally EndUpdate; end; try BeginUpdate; DM.FDQuery1.First; while not DM.FDQuery1.Eof do begin row_ck := AppendRecord; Values[row_ck,cxGridTableView1Column1.Index] := DM.FDQuery1.FieldByName('OrdCode').AsString; Values[row_ck,cxGridTableView1Column2.Index] := DM.FDQuery1.FieldByName('Name').AsString; Values[row_ck,cxGridTableView1Column3.Index] := DM.FDQuery1.FieldByName('Unitt').AsString; Values[row_ck,cxGridTableView1Column4.Index] := DM.FDQuery1.FieldByName('balance').AsString; DM.FDQuery1.Next; end; finally EndUpdate; end; end; end; except on E: Exception do Memo1.Lines.Add('['+FormatDateTime('yyyymmdd hhnnss.zzz',now)+'] '+'Äõ¸® ½ÇÇà ¿À·ù(Material_refresh): ' + E.Message); end; end; procedure TfKiosk.Button6Click(Sender: TObject); var fKioskView : TfKioskView; begin if (Trim(Panel53.Caption) = '') or (Trim(Panel53.Caption) = '¿øºÎÀÚÀç¸í') then exit; fKioskView := TfKioskView.Create(nil); try fKioskView.RadioGroup1.ItemIndex := 0; // 0 : ¿øºÎÀÚÀç, 1 : RTP¿ø·á, 2 : Á¦Ç° fKioskView.Label2.Caption := Trim(Panel53.Caption); // '¿øºÎÀÚÀç¸í'; fKioskView.edit1.text := Edit40.Text; fKioskView.ShowModal; // ¸ð´Þ âÀ¸·Î Ç¥½Ã // ¶Ç´Â NewForm.Show; // ºñ¸ð´Þ âÀ¸·Î Ç¥½Ã finally fKioskView.Free; end; end; function TfKiosk.qCreateGetUniqueString(clsName: string): string; var randomInt: Integer; tmStmp: TTimeStamp; dbName: string; begin //****************OBID±ÔÄ¢*****************// //Result := clsName(Ŭ·¡½º³×ÀÓ) + '-ŸÀÔ½ºÅÆÇÁ-' + '-6ÀÚ¸®·£´ý¼ö-' + 'µðºñ³×ÀÓ'; //****************OBID±ÔÄ¢*****************// Result := ''; tmStmp := DateTimeToTimeStamp(Now); randomInt := random(899998) + 100001; //100001 ~ 999999 dbName := 'neol_data'; Result := 'T' + clsName + '-' + IntToStr(tmStmp.Date) + IntToStr(tmStmp.Time) + '-' + IntToStr(randomInt) + '-' + dbName; end; procedure TfKiosk.RadioButton9Click(Sender: TObject); begin Edit31.Clear; if RadioButton9.Checked then begin easyselectgridRefresh; SaleItem_refresh; cxGridLevel2.Active := True; cxGridTableView2Column1.Caption := 'Á¦Ç°ÄÚµå'; cxGridTableView2Column4.Caption := '¼ö·®'; Label78.Visible := False; ComboBox3.Visible := False; end else begin if RadioButton10.Checked then begin cxGrid2TableView1Column2.Visible := true; Label78.Visible := False; ComboBox3.Visible := False; end else if RadioButton11.Checked then begin cxGrid2TableView1Column2.Visible := False; Label78.Visible := True; ComboBox3.Visible := True; end; easyselectgridRefresh; SaleItem_refresh; cxGrid2Level1.Active := True; end; end; procedure TfKiosk.easyselectgridRefresh; var row_ck, i : Integer; tmpList : TList; kind, stock_qty : string; SaleItemMst : TSaleItemMst; begin try DM.FDQuery2.Close; if RadioButton9.Checked then begin DM.FDQuery2.SQL.Text := ' SELECT DISTINCT LEFT("OrderMst"."Name", 3) AS estext ' + ' FROM "OrderMst" '+ ' ORDER BY estext; '; end else if RadioButton10.Checked then begin DM.FDQuery2.SQL.Text := ' SELECT DISTINCT LEFT(ss.item, 3) AS estext ' + ' FROM stock_summary ss '+ ' ORDER BY estext; '; end else if RadioButton11.Checked then begin DM.FDQuery2.SQL.Text := ' SELECT DISTINCT LEFT(ss."Name", 3) AS estext ' + ' FROM "ProductMst" ss '+ ' WHERE "IsValid" = true '+ ' ORDER BY estext; '; end; DM.FDQuery2.Open; if DM.FDQuery2.RecordCount > 0 then begin with cxGridTableView4.DataController do begin try BeginUpdate; RecordCount := 0; finally EndUpdate; end; try BeginUpdate; DM.FDQuery2.First; while not DM.FDQuery2.Eof do begin row_ck := AppendRecord; Values[row_ck,cxGridTableView4Column1.Index] := DM.FDQuery2.FieldByName('estext').AsString; DM.FDQuery2.Next; end; finally EndUpdate; end; end; end; except on E: Exception do Memo1.Lines.Add('['+FormatDateTime('yyyymmdd hhnnss.zzz',now)+'] '+'Äõ¸® ½ÇÇà ¿À·ù(easyselectgridRefresh): ' + E.Message); end; end; procedure TfKiosk.Button7Click(Sender: TObject); var FobjMat : TMaterialData; begin if (Trim(Edit34.Text) = '') or (Trim(Edit34.Text) = '0') or (Trim(Edit34.Text) = '0.0') or (Trim(Edit34.Text) = '.0') or (Trim(Edit34.Text) = '0.') or (Trim(Panel53.Caption) = '') or (Trim(Panel53.Caption) = '¿øºÎÀÚÀç¸í') then exit; if Trim(Edit34.Text) <> '' then begin if StrToFloatDef(Trim(Edit34.Text),0.0) <= 0.0 then exit; if not RadioButton1.Checked then begin if StrToFloatDef(Trim(Edit43.Text),0.0) < StrToFloatDef(Trim(Edit34.Text),0.0) then begin AlertCall('Àç°íÇöȲ È®ÀÎ ¿ä¸Á.'); Exit; end; end; end; FobjMat := TMaterialData.Create(Self); FobjMat.Name := Panel53.Caption; FobjMat.MatKind := Edit40.Text; FobjMat.OBID := qCreateGetUniqueString('MaterialData'); FobjMat.wClassName := 'MaterialData'; FobjMat.CreateDate := FormatDateTime('yyyy-MM-dd',Now); FobjMat.CreateTime := FormatDateTime('HH:nn:ss',Now); FobjMat.CreatorID := edt_ID.Text; FobjMat.IsValid := 't'; FobjMat.LcStatus := 'Working'; FobjMat.OrdNum := '0'; FobjMat.OrdCode := Edit40.Text; FobjMat.Standard := ''; if RadioButton1.Checked then begin FobjMat.Kind := 'ÀÔ°í'; FobjMat.InQty := Edit34.Text; FobjMat.OutQty := '0'; end else begin FobjMat.Kind := 'Ãâ°í'; FobjMat.InQty := '0'; FobjMat.OutQty := Edit34.Text; end; FobjMat.StockQty := '0'; FobjMat.Status := ''; FobjMat.Descriptions := Edit35.Text; FobjMat.Unitt := Edit45.Text; FobjMat.OrdDate := FormatDateTime('yyyy-MM-dd',DatePicker7.Date); FobjMat.CustName := ComboBox9.Text; FobjMat.MatType := 'NORMAL'; if ConfirmCall(FobjMat.Kind+' ó¸® ÇϽðڽÀ´Ï±î?') then begin xCreateInsertSql(FobjMat); Edit34.Text := ''; Edit35.Text := ''; DatePicker7.Date := Now; // Edit43.Text := FobjMat.xGetStrSumStockQty(dm.FDQuery1,Edit40.Text,'NORMAL'); Trim(Panel53.Caption) // Edit43.Text := FobjMat.xGetStrSumStockQty(dm.FDQuery1,'',Trim(Panel53.Caption),'NORMAL'); Edit43.Text := FobjMat.xGetStrSumStockQty(dm.FDQuery1,Trim(Edit40.Text),'NORMAL'); AlertCall(FobjMat.Kind+' ó¸® ¿Ï·á.'); end; end; procedure TfKiosk.AlertCall(msg:string); var fAlertMessage : TfAlertMessage; begin fAlertMessage := TfAlertMessage.Create(nil); try fAlertMessage.Label1.Caption := msg; fAlertMessage.ShowModal; // ¸ð´Þ âÀ¸·Î Ç¥½Ã // ¶Ç´Â NewForm.Show; // ºñ¸ð´Þ âÀ¸·Î Ç¥½Ã finally fAlertMessage.Free; end; end; procedure TfKiosk.xCreateInsertSql(curMaterial: TMaterialData); var i, cnt: Integer; sqlStr, attrStr, valStr: string; attrStrs, valStrs: TStrings; PropList: PPropList; begin sqlStr := 'INSERT INTO ' + curMaterial.xAddSqlDoubleMark(curMaterial.wClassName); attrStrs := TStringList.Create; valStrs := TStringList.Create; cnt := GetPropList(curMaterial,PropList); for i := 0 to cnt-1 do begin if SameText('Tag',PropList[i].Name) then system.Continue; attrStrs.Add(PropList[i].Name); valStrs.Add(GetPropValue(curMaterial,PropList[i].Name,True)); end; FreeMem(PropList); attrStr := ''; for i := 0 to attrStrs.Count-1 do begin if i = 0 then attrStr := ' (' + curMaterial.xAddSqlDoubleMark(attrStrs.Strings[i]) else attrStr := attrStr + ', ' + curMaterial.xAddSqlDoubleMark(attrStrs.Strings[i]); end; attrStr := attrStr + ') '; sqlStr := sqlStr + attrStr; valStr := ''; for i := 0 to valStrs.Count-1 do begin if Length(Trim(valStrs.Strings[i])) = 0 then begin if i = 0 then valStr := 'VALUES (' + '''''' else valStr := valStr + ', ' + ''''''; end else begin if i = 0 then valStr := 'VALUES (' + curMaterial.xAddSqlMark(valStrs.Strings[i]) else valStr := valStr + ', ' + curMaterial.xAddSqlMark(valStrs.Strings[i]); end; end; sqlStr := sqlStr + valStr; sqlStr := sqlStr + ')'; sqlStr := sqlStr + ';'; if DM.FDConnection1.Connected then begin DM.FDQuery1.SQL.Text := sqlStr; DM.FDQuery1.ExecSQL; end; attrStrs.Free; valStrs.Free; end; procedure TfKiosk.xCreateInsertSql_EmpLog(EmpLog: TEmpLog); var i, cnt: Integer; sqlStr, attrStr, valStr: string; attrStrs, valStrs: TStrings; PropList: PPropList; begin sqlStr := 'INSERT INTO ' + EmpLog.xAddSqlDoubleMark(EmpLog.wClassName); attrStrs := TStringList.Create; valStrs := TStringList.Create; cnt := GetPropList(EmpLog,PropList); for i := 0 to cnt-1 do begin if SameText('Tag',PropList[i].Name) then system.Continue; attrStrs.Add(PropList[i].Name); valStrs.Add(GetPropValue(EmpLog,PropList[i].Name,True)); end; FreeMem(PropList); attrStr := ''; for i := 0 to attrStrs.Count-1 do begin if i = 0 then attrStr := ' (' + EmpLog.xAddSqlDoubleMark(attrStrs.Strings[i]) else attrStr := attrStr + ', ' + EmpLog.xAddSqlDoubleMark(attrStrs.Strings[i]); end; attrStr := attrStr + ') '; sqlStr := sqlStr + attrStr; valStr := ''; for i := 0 to valStrs.Count-1 do begin if Length(Trim(valStrs.Strings[i])) = 0 then begin if i = 0 then valStr := 'VALUES (' + '''''' else valStr := valStr + ', ' + ''''''; end else begin if i = 0 then valStr := 'VALUES (' + EmpLog.xAddSqlMark(valStrs.Strings[i]) else valStr := valStr + ', ' + EmpLog.xAddSqlMark(valStrs.Strings[i]); end; end; sqlStr := sqlStr + valStr; sqlStr := sqlStr + ')'; sqlStr := sqlStr + ';'; if DM.FDConnection1.Connected then begin DM.FDQuery1.SQL.Text := sqlStr; DM.FDQuery1.ExecSQL; end; attrStrs.Free; valStrs.Free; end; procedure TfKiosk.xCreateInsertSql_FobjSale(curSaleItem: TSaleItemMst); var i, cnt: Integer; sqlStr, attrStr, valStr: string; attrStrs, valStrs: TStrings; PropList: PPropList; begin sqlStr := 'INSERT INTO ' + curSaleItem.xAddSqlDoubleMark(curSaleItem.wClassName); attrStrs := TStringList.Create; valStrs := TStringList.Create; cnt := GetPropList(curSaleItem,PropList); for i := 0 to cnt-1 do begin if SameText('Tag',PropList[i].Name) then system.Continue; attrStrs.Add(PropList[i].Name); valStrs.Add(GetPropValue(curSaleItem,PropList[i].Name,True)); end; FreeMem(PropList); attrStr := ''; for i := 0 to attrStrs.Count-1 do begin if i = 0 then attrStr := ' (' + curSaleItem.xAddSqlDoubleMark(attrStrs.Strings[i]) else attrStr := attrStr + ', ' + curSaleItem.xAddSqlDoubleMark(attrStrs.Strings[i]); end; attrStr := attrStr + ') '; sqlStr := sqlStr + attrStr; valStr := ''; for i := 0 to valStrs.Count-1 do begin if Length(Trim(valStrs.Strings[i])) = 0 then begin if i = 0 then valStr := 'VALUES (' + '''''' else valStr := valStr + ', ' + ''''''; end else begin if i = 0 then valStr := 'VALUES (' + curSaleItem.xAddSqlMark(valStrs.Strings[i]) else valStr := valStr + ', ' + curSaleItem.xAddSqlMark(valStrs.Strings[i]); end; end; sqlStr := sqlStr + valStr; sqlStr := sqlStr + ')'; sqlStr := sqlStr + ';'; if DM.FDConnection1.Connected then begin DM.FDQuery1.SQL.Text := sqlStr; DM.FDQuery1.ExecSQL; end; attrStrs.Free; valStrs.Free; end; procedure TfKiosk.Button8Click(Sender: TObject); begin Material_RTP_refresh; end; procedure TfKiosk.Material_RTP_refresh; var row_ck, i : Integer; begin try DM.FDQuery1.Close; if Trim(Edit36.Text) <> '' then begin DM.FDQuery1.SQL.Text := ' SELECT "OrdCode", "Name", "Unitt", "MatKind", '+ ' SUM("InQty") - SUM("OutQty") AS balance '+ ' FROM "MaterialData" '+ ' WHERE "MatType"=''RTP'' '+ ' AND "IsValid"=true '+ ' AND ( '+ ' ("Name" Like ''%'+Trim(Edit36.Text)+'%'') '+ ' OR ("CustName" Like ''%'+Trim(Edit36.Text)+'%'') '+ ' ) '+ ' GROUP BY "OrdCode", "Name", "Unitt", "MatKind" '+ ' ORDER BY "Name"'; end else begin DM.FDQuery1.SQL.Text := ' SELECT "OrdCode", "Name", "Unitt", "MatKind", '+ ' SUM("InQty") - SUM("OutQty") AS balance '+ ' FROM "MaterialData" '+ ' WHERE "MatType"=''RTP'' '+ ' AND "IsValid"=true '+ ' GROUP BY "OrdCode", "Name", "Unitt", "MatKind" '+ ' ORDER BY "Name"'; end; DM.FDQuery1.Open; if DM.FDQuery1.RecordCount > 0 then begin with cxGridTableView3.DataController do begin try BeginUpdate; RecordCount := 0; finally EndUpdate; end; try BeginUpdate; DM.FDQuery1.First; while not DM.FDQuery1.Eof do begin row_ck := AppendRecord; Values[row_ck,cxGridTableView3Column1.Index] := DM.FDQuery1.FieldByName('OrdCode').AsString; Values[row_ck,cxGridTableView3Column2.Index] := DM.FDQuery1.FieldByName('Name').AsString; Values[row_ck,cxGridTableView3Column3.Index] := DM.FDQuery1.FieldByName('Unitt').AsString; Values[row_ck,cxGridTableView3Column4.Index] := DM.FDQuery1.FieldByName('balance').AsString; Values[row_ck,cxGridTableView3Column5.Index] := DM.FDQuery1.FieldByName('MatKind').AsString; DM.FDQuery1.Next; end; finally EndUpdate; end; end; end; except on E: Exception do Memo1.Lines.Add('['+FormatDateTime('yyyymmdd hhnnss.zzz',now)+'] '+'Äõ¸® ½ÇÇà ¿À·ù(Material_RTP_refresh): ' + E.Message); end; end; procedure TfKiosk.Button9Click(Sender: TObject); var fKioskView : TfKioskView; begin if (Trim(Panel58.Caption) = '') or (Trim(Panel58.Caption) = 'RTP ¿ø·á¸í') then exit; fKioskView := TfKioskView.Create(nil); try fKioskView.RadioGroup1.ItemIndex := 1; // 0 : ¿øºÎÀÚÀç, 1 : RTP¿ø·á, 2 : Á¦Ç° fKioskView.Label2.Caption := Trim(Panel58.Caption); // 'RTP¿ø·á¸í'; fKioskView.edit1.text := Edit41.Text; fKioskView.ShowModal; // ¸ð´Þ âÀ¸·Î Ç¥½Ã // ¶Ç´Â NewForm.Show; // ºñ¸ð´Þ âÀ¸·Î Ç¥½Ã finally fKioskView.Free; end; end; procedure TfKiosk.FormClose(Sender: TObject; var Action: TCloseAction); var IniFile : TIniFile; begin if dev_mode = 1 then begin IniFile := TIniFile.Create(inifilename); try IniFile.WriteInteger('Setting', 'top', top); IniFile.WriteInteger('Setting', 'left', left); finally IniFile.Free; end; end; end; procedure TfKiosk.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin LogOut_; CanClose := True; end; procedure TfKiosk.FormCreate(Sender: TObject); var IniFile : TIniFile; begin InitLogger('.\Logs', 'log', rtHourly); inifilename := StringReplace(Application.ExeName,'.exe','.ini',[rfReplaceAll]); IniFile := TIniFile.Create(inifilename); try Edit15.Text := IniFile.ReadString('Setting', 'I', ''); Edit16.Text := IniFile.ReadString('Setting', 'P', ''); ComboBox7.ItemIndex := IniFile.ReadInteger('Setting', 'init_Mo', 0); dev_mode := IniFile.ReadInteger('Setting', 'dev', 0); if dev_mode = 1 then begin top := IniFile.ReadInteger('Setting', 'top', 0); left := IniFile.ReadInteger('Setting', 'left', 0); end else begin top := 0; left := 0; end; edt_ID.Text := Edit15.Text; edt_PASS.Text := Edit16.Text; lbHost.Text := IniFile.ReadString('DATABASE_PG', 'IP', 'qst-s.iptime.org'); lbPort.Text := IniFile.ReadString('DATABASE_PG', 'Port', '54323'); lbUserName.Text := IniFile.ReadString('DATABASE_PG', 'User', 'qsentech'); lbPassword.Text := IniFile.ReadString('DATABASE_PG', 'PW', 'qsentech!1233'); lbDBName.Text := IniFile.ReadString('DATABASE_PG', 'Schema', 'neol'); finally IniFile.Free; end; Pan_Login.Top := 0; Pan_Login.Left := 0; Pan_Main.Top := 0; Pan_Main.Left := 0; FqryList := nil; pan_tab_1.Parent := Pan_default; pan_tab_2.Parent := Pan_default; pan_tab_3.Parent := Pan_default; pan_tab_4.Parent := Pan_default; pan_tab_5.Parent := Pan_default; pan_tab_6.Parent := Pan_default; pan_tab_7.Parent := Pan_default; pan_tab_8.Parent := Pan_default; Pan_Login.Parent := Pan_Main; Pan_Setting.Parent := Pan_Main; Pan_Setting.Top := 205; Pan_Setting.Left := 500; Pan_Setting.Visible := False; Panel21.Parent := Panel14; DatePicker7.Date := Now; DatePicker4.Date := Now; DatePicker5.Date := Now; label_set_alclient; Label4.Caption := FormatDateTime('yyyy-mm-dd hh:nn:ss ',now); Label31.Caption := FormatDateTime('yyyy-mm-dd hh:nn:ss ',now); // pan_select(1); Pan_default.Visible := false; Pan_Login.BringToFront; end; procedure TfKiosk.label_set_alclient; begin { Label1.Align := alClient; Label2.Align := alClient; Label3.Align := alClient; Label46.Align := alClient; // Á¦Ç°ÀÔ°í_main bt Label47.Align := alClient; // Á¦Ç°Ãâ°í_main bt } Label5.Align := alClient; Label6.Align := alClient; Label7.Align := alClient; Label8.Align := alClient; Label9.Align := alClient; Label10.Align := alClient; end; procedure TfKiosk.FormDestroy(Sender: TObject); begin // login_API('DO6002'); //·Î±×¾Æ¿ô if FqryList <> nil then xFreeAll(FqryList); end; procedure TfKiosk.FormShow(Sender: TObject); var tmpStrs: TStrings; begin Memo1.Lines.Clear; Memo2.Lines.Clear; tmpStrs := TStringList.Create; tmpStrs.Add('OBID'); tmpStrs.Add('Name'); tmpStrs.Add('wClassName'); tmpStrs.Add('CreateDate'); tmpStrs.Add('CreateTime'); tmpStrs.Add('CreatorID'); tmpStrs.Add('IsValid'); tmpStrs.Add('OrdCode'); tmpStrs.Add('Position'); tmpStrs.Add('Role'); tmpStrs.Add('InDate'); tmpStrs.Add('OutDate'); tmpStrs.Add('Status'); tmpStrs.Add('EmpTelNum'); tmpStrs.Add('EmpAddress'); tmpStrs.Add('Descriptions'); StringGrid1.ColCount := tmpStrs.Count; StringGrid1.Rows[0].AddStrings(tmpStrs); tmpStrs.Free; xAutoResizeStringGridColumns(StringGrid1, Canvas); PG_Connect; end; procedure TfKiosk.PG_Connect; begin DM.PG_DBName := lbDBName.Text; DM.PG_UserName := lbUserName.Text; DM.PG_Password := lbPassword.Text; DM.PG_Host := lbHost.Text; DM.PG_Port := lbPort.Text; if dm.DM_Connect then begin btDBConnect.Enabled := False; btDBdisConnect.Enabled := True; Memo1.Lines.Add('PG_Connected : TRUE'); end else begin btDBConnect.Enabled := True; btDBdisConnect.Enabled := False; Memo1.Lines.Add('PG_Connected : FALSE'); end; end; procedure TfKiosk.Image1Click(Sender: TObject); begin Pan_Main.BringToFront; Pan_Main.Visible := True; Pan_default.Visible := False; end; procedure TfKiosk.Image3Click(Sender: TObject); begin // ShowMessage('SETTING SHOW'); Pan_Setting.Visible := True; Pan_Setting.BringToFront; alarmstatusRefresh; end; procedure TfKiosk.pan_select(tag:integer); begin case tag of 6 : begin Material_refresh; pan_tab_6.BringToFront; end; 7 : begin Material_RTP_refresh; pan_tab_7.BringToFront; end; 8 : begin easyselectgridRefresh; SaleItem_refresh; pan_tab_8.BringToFront; end; end; Pan_default.Left := 0; Pan_default.Top := 131; Pan_default.BringToFront; Pan_default.Visible := True; end; procedure TfKiosk.Label12Click(Sender: TObject); begin Panel21.Parent := TabSheet1; Panel31.Visible := (StrToInt(Edit20.Text) > 15); end; procedure TfKiosk.Label30Click(Sender: TObject); begin Panel22.Parent := TabSheet2; Panel34.Visible := (StrToInt(Edit23.Text) > 15); end; procedure TfKiosk.Label31Click(Sender: TObject); begin edt_close.Text := IntToStr(StrToInt(edt_close.Text)+1); end; procedure TfKiosk.Label49_1Click(Sender: TObject); begin cbCustList_Refresh; pan_select((Sender as TLabel).Tag); end; procedure TfKiosk.Label4Click(Sender: TObject); begin { Panel1.Visible := not Panel1.Visible; if Panel1.Visible then Panel1.BringToFront; } edt_close.Text := IntToStr(StrToInt(edt_close.Text)+1); end; procedure TfKiosk.Label5Click(Sender: TObject); begin Buttonselect((Sender as TLabel).Tag); end; procedure TfKiosk.BTCreate_1(page_no,count:integer); const ButtonWidth = 200; ButtonHeight = 200; ButtonWidthSpacing = 50; ButtonHeightSpacing = 70; ButtonsPerRow = 5; // ÇÑ ÁÙ¿¡ ¸î °³ÀÇ ¹öưÀ» ¹èÄ¡ÇÒÁö var i, Row, Col, x: Integer; NewButton: TPanel; NewLabel : TLabel; begin Panel21.Parent := TabSheet1; // Panel1ÀÇ ÀÚ½Ä ÄÁÆ®·Ñ Áß TButton¸¸ ã¾Æ¼­ Á¦°Å for i := Panel14.ControlCount - 1 downto 0 do begin if Panel14.Controls[i] is TPanel then Panel14.Controls[i].Free; end; if count <= 15 then x := count else x := 15; for i := 0 to x-1 do // ÃÑ 15°³ »ý¼º begin Row := i div ButtonsPerRow; Col := i mod ButtonsPerRow; NewButton := TPanel.Create(Self); NewButton.Parent := Panel14; NewButton.Width := ButtonWidth; NewButton.Height := ButtonHeight; NewButton.BevelOuter := bvNone; NewButton.ParentBackground := False; NewButton.ShowCaption := False; if (i mod 2) = 0 then NewButton.Color := $00978F62 else NewButton.Color := $00D3CFBA; NewButton.Left := Col * (ButtonWidth + ButtonWidthSpacing) + 50; NewButton.Top := Row * (ButtonHeight + ButtonHeightSpacing) + 38; NewButton.Name := Format('Bt_1_%d', [(page_no*15)+i+1]); // °íÀ¯ À̸§ ¼³Á¤ NewButton.Tag := i + 1; // °íÀ¯ ¹øÈ£ ÅÂ±× ¼³Á¤ NewLabel := TLabel.Create(Self); NewLabel.Parent := NewButton; NewLabel.Font.Size := 40; NewLabel.Caption := #13 + Format('ÀÔ°í_%d', [(page_no*15)+i+1]) + #13 + '[000]'; NewLabel.Alignment := taCenter; NewLabel.Align := alClient; NewLabel.Tag := i + 1; // °íÀ¯ ¹øÈ£ ÅÂ±× ¼³Á¤ NewLabel.Name := Format('lb_1_%d', [(page_no*15)+i+1]); // °íÀ¯ À̸§ ¼³Á¤ NewLabel.OnClick := DynamicButton_1Click; end; Panel31.Visible := (count > 15); Edit19.Text := inttostr(page_no+1); Edit20.Text := IntToStr(count); if (count mod 15) > 0 then begin Edit21.Text := IntToStr((count div 15)+1); end else begin Edit21.Text := IntToStr((count div 15)); end; label44.Caption := inttostr(page_no+1)+ '/'+Edit21.Text; end; procedure TfKiosk.BTCreate_2(page_no,count:integer); const ButtonWidth = 200; ButtonHeight = 200; ButtonWidthSpacing = 50; ButtonHeightSpacing = 70; ButtonsPerRow = 5; // ÇÑ ÁÙ¿¡ ¸î °³ÀÇ ¹öưÀ» ¹èÄ¡ÇÒÁö var i, Row, Col, x: Integer; NewButton: TPanel; NewLabel: TLabel; begin Panel22.Parent := TabSheet2; // Panel1ÀÇ ÀÚ½Ä ÄÁÆ®·Ñ Áß TButton¸¸ ã¾Æ¼­ Á¦°Å for i := Panel15.ControlCount - 1 downto 0 do begin if (Panel15.Controls[i] is TPanel) or (Panel15.Controls[i] is TLabel) then Panel15.Controls[i].Free; end; if count <= 15 then x := count else x := 15; for i := 0 to x-1 do // ÃÑ 15°³ »ý¼º begin Row := i div ButtonsPerRow; Col := i mod ButtonsPerRow; NewButton := TPanel.Create(Self); NewButton.Parent := Panel15; NewButton.Width := ButtonWidth; NewButton.Height := ButtonHeight; NewButton.BevelOuter := bvNone; NewButton.ParentBackground := False; NewButton.ShowCaption := False; if (i mod 2) = 0 then NewButton.Color := $00978F62 else NewButton.Color := $00D3CFBA; NewButton.Left := Col * (ButtonWidth + ButtonWidthSpacing) + 50; NewButton.Top := Row * (ButtonHeight + ButtonHeightSpacing) + 38; NewButton.Name := Format('Bt_2_%d', [(page_no*15)+i+1]); // °íÀ¯ À̸§ ¼³Á¤ NewButton.Tag := i + 1; // °íÀ¯ ¹øÈ£ ÅÂ±× ¼³Á¤ NewLabel := TLabel.Create(Self); NewLabel.Parent := NewButton; NewLabel.Font.Size := 40; NewLabel.Caption := #13 + Format('Ãâ°í_%d', [(page_no*15)+i+1]) + #13 + '[000]'; NewLabel.Alignment := taCenter; NewLabel.Align := alClient; NewLabel.Tag := i + 1; // °íÀ¯ ¹øÈ£ ÅÂ±× ¼³Á¤ NewLabel.Name := Format('lb_2_%d', [(page_no*15)+i+1]); // °íÀ¯ À̸§ ¼³Á¤ NewLabel.OnClick := DynamicButton_2Click; end; Panel34.Visible := (count > 15); Edit22.Text := inttostr(page_no+1); Edit23.Text := IntToStr(count); if (count mod 15) > 0 then begin Edit24.Text := IntToStr((count div 15)+1); end else begin Edit24.Text := IntToStr((count div 15)); end; label45.Caption := inttostr(page_no+1)+ '/'+Edit24.Text; end; procedure TfKiosk.DynamicButton_1Click(Sender: TObject); //var // Btn: TLabel; begin // Btn := Sender as TLabel; // ShowMessage(Format('Ŭ¸¯µÈ ¹öư ÀÔ°í : %s (Tag: %d)', [Btn.Name, Btn.Tag])); Panel21.Parent := Panel14; Panel21.BringToFront; Panel21.Visible := True;; // Panel31.Visible := (count > 15); Panel31.Visible := false; end; procedure TfKiosk.DynamicButton_2Click(Sender: TObject); //var // Btn: TLabel; begin // Btn := Sender as TLabel; // ShowMessage(Format('Ŭ¸¯µÈ ¹öư Ãâ°í : %s (Tag: %d)', [Btn.Name, Btn.Tag])); Panel22.Parent := Panel15; Panel22.BringToFront; Panel22.Visible := True; Panel34.Visible := False; end; procedure TfKiosk.Edit31Change(Sender: TObject); begin if RadioButton9.Checked then begin with cxGridTableView2.DataController.Filter do begin Root.Clear; Root.AddItem( cxGridTableView2Column2, foLike, '%'+Edit31.Text+'%', Edit31.Text+' Æ÷ÇÔ' ); Active := True; end; end else begin with cxGrid2TableView1.DataController.Filter do begin Root.Clear; Root.AddItem( cxGrid2TableView1Column1, foLike, '%'+Edit31.Text+'%', Edit31.Text+' Æ÷ÇÔ' ); Active := True; end; end; end; procedure TfKiosk.Edit34KeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', #46, #8, #13]) then // #8: Backspace, #13: Enter , #46 : . begin Key := #0; // ÀÔ·Â ¹«½Ã end else begin if (Key in [#46]) then begin if pos('.',(Sender as TEdit).Text) > 0 then Key := #0; // ÀÔ·Â ¹«½Ã end; end; end; procedure TfKiosk.edt_IDKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then edt_PASS.SetFocus; end; procedure TfKiosk.edt_PASSKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then login_; end; procedure TfKiosk.Label8Click(Sender: TObject); begin Buttonselect_1((Sender as TLabel).Tag); end; procedure TfKiosk.Buttonselect(tag:integer); begin case tag of 1 : begin Panel5.Color := $00978F62; Panel6.Color := $00D3CFBA; Panel7.Color := $00D3CFBA; BTCreate_1(0,10); // BTCreate_1(DBTable); end; 2 : begin Panel5.Color := $00D3CFBA; Panel6.Color := $00978F62; Panel7.Color := $00D3CFBA; BTCreate_1(0,24); // BTCreate_1(DBTable); end; 3 : begin Panel5.Color := $00D3CFBA; Panel6.Color := $00D3CFBA; Panel7.Color := $00978F62; BTCreate_1(0,7); // BTCreate_1(DBTable); end; end; end; procedure TfKiosk.Buttonselect_1(tag:integer); begin case tag of 1 : begin Panel11.Color := $00978F62; Panel12.Color := $00D3CFBA; Panel13.Color := $00D3CFBA; BTCreate_2(0,34); // BTCreate_2(DBTable); end; 2 : begin Panel11.Color := $00D3CFBA; Panel12.Color := $00978F62; Panel13.Color := $00D3CFBA; BTCreate_2(0,13); // BTCreate_2(DBTable); end; 3 : begin Panel11.Color := $00D3CFBA; Panel12.Color := $00D3CFBA; Panel13.Color := $00978F62; BTCreate_2(0,9); // BTCreate_2(DBTable); end; end; end; procedure TfKiosk.cxGrid2TableView1CustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); begin if (not AViewInfo.Selected) and ((AViewInfo.GridRecord.RecordIndex mod 2) = 1) then begin ACanvas.Canvas.Brush.Color := $00EFF1E9; end; end; procedure TfKiosk.cxGrid2TableView1FocusedRecordChanged( Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); var ProductMst : TProductMst; tmpList : TList; begin if Assigned(AFocusedRecord) then begin label80.Caption := cxGrid2TableView1.DataController.GetValue(AFocusedRecord.RecordIndex,cxGrid2TableView1Column1.Index); //Á¦Ç°¸í Edit14.Text := 'EA'; // ´ÜÀ§ if RadioButton10.Checked then begin Edit13.Text := cxGrid2TableView1.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column2.Index); // Àç°í Edit32.Text := Edit13.Text; //¼ö·® Edit48.Text := Edit13.Text; //¼ö·® Edit50.Text := ''; // OBID end else if RadioButton11.Checked then begin Edit13.Text := ''; Edit32.Text := ''; Edit48.Text := ''; Edit50.Text := ''; end; try tmpList := TList.Create; ProductMst := TProductMst.Create(Self); tmpList := ProductMst.xGetStrSqlProductMstList(dm.FDQuery1,'',label80.Caption); if tmpList.Count = 1 then begin ProductMst := TProductMst(tmpList.Items[0]); Edit42.Text := ProductMst.ProdCode; Edit39.Text := ProductMst.ProdCode; Edit49.Text := ProductMst.MatKind; edtManufact.Text := ProductMst.Manufact; end; edtModel.Text := ''; edtMatUnitPrice.Text := ''; cbCustList.ItemIndex := -1; finally tmpList.free; end; end else begin label80.Caption := 'Á¦Ç°¸í'; Edit13.Text := '0'; Edit32.Text := ''; Edit48.Text := ''; Edit50.Text := ''; Edit14.Text := 'EA'; Edit42.Text := ''; Edit39.Text := ''; Edit49.Text := ''; edtManufact.Text := ''; edtModel.Text := ''; edtMatUnitPrice.Text := ''; cbCustList.ItemIndex := -1; end; end; procedure TfKiosk.cxGrid2TableView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then begin FDragScrolling := True; FStartY := Y; FStartTopRow := cxGrid2TableView1.Controller.TopRowIndex; // ÇöÀç ÃÖ»ó´Ü Row ÀúÀå end; end; procedure TfKiosk.cxGrid2TableView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var DeltaY, RowOffset: Integer; begin if not FDragScrolling then Exit; DeltaY := Y - FStartY; // À̵¿ °Å¸® (¾Æ·¡·Î µå·¡±×Çϸé +) RowOffset := DeltaY div 20; // ¹Î°¨µµ - Çȼ¿ ¡æ Row º¯È¯ (°ª Á¶Àý °¡´É) cxGrid2TableView1.Controller.TopRowIndex := FStartTopRow - RowOffset; end; procedure TfKiosk.cxGrid2TableView1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FDragScrolling := False; end; procedure TfKiosk.cxGridTableView1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); begin if (not AViewInfo.Selected) and ((AViewInfo.GridRecord.RecordIndex mod 2) = 1) then begin ACanvas.Canvas.Brush.Color := $00EFF1E9; end; end; procedure TfKiosk.cxGridTableView1FocusedRecordChanged( Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); var MaterialData : TMaterialData; begin if Assigned(AFocusedRecord) then begin Panel53.Caption := cxGridTableView1.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView1Column2.Index); Edit40.Text := cxGridTableView1.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView1Column1.Index); MaterialData := TMaterialData.Create(Self); // Edit43.Text := MaterialData.xGetStrSumStockQty(dm.FDQuery1,Edit40.Text,'NORMAL'); { if RadioGroup1.ItemIndex = 0 then Edit43.Text := MaterialData.xGetStrSumStockQty(dm.FDQuery1,Trim(Edit40.Text),'','NORMAL') else Edit43.Text := MaterialData.xGetStrSumStockQty(dm.FDQuery1,'',Trim(Panel53.Caption),'NORMAL'); } Edit43.Text := MaterialData.xGetStrSumStockQty(dm.FDQuery1,Trim(Edit40.Text),'NORMAL'); Edit45.Text := cxGridTableView1.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView1Column3.Index); ComboBox9.ItemIndex := ComboBox9.Items.IndexOf(cxGridTableView1.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView1Column4.Index)); end else begin Panel53.Caption := '¿øºÎÀÚÀç¸í'; Edit40.Text := ''; Edit43.Text := '0'; Edit45.Text := ''; ComboBox9.ItemIndex := -1; end; end; procedure TfKiosk.cxGridTableView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then begin FDragScrolling := True; FStartY := Y; FStartTopRow := cxGridTableView1.Controller.TopRowIndex; // ÇöÀç ÃÖ»ó´Ü Row ÀúÀå end; end; procedure TfKiosk.cxGridTableView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var DeltaY, RowOffset: Integer; begin if not FDragScrolling then Exit; DeltaY := Y - FStartY; // À̵¿ °Å¸® (¾Æ·¡·Î µå·¡±×Çϸé +) RowOffset := DeltaY div 20; // ¹Î°¨µµ - Çȼ¿ ¡æ Row º¯È¯ (°ª Á¶Àý °¡´É) cxGridTableView1.Controller.TopRowIndex := FStartTopRow - RowOffset; end; procedure TfKiosk.cxGridTableView1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FDragScrolling := False; end; procedure TfKiosk.cxGridTableView2FocusedRecordChanged( Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); var SaleItemMst : TSaleItemMst; begin if Assigned(AFocusedRecord) then begin label80.Caption := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column2.Index); Edit42.Text := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column1.Index); Edit39.Text := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column9.Index); Edit14.Text := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column5.Index); cbCustList.ItemIndex := cbCustList.Items.IndexOf(cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column3.Index)); Edit49.Text := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column7.Index); Edit13.Text := nametostock(Trim(label80.Caption)); // Edit13.Text := SaleItemMst.xGetBalanceQtyByName(dm.FDQuery1,Trim(label80.Caption)); Edit32.Text := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column4.Index); Edit48.Text := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column4.Index); Edit50.Text := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column12.Index); edtManufact.Text := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column10.Index); edtModel.Text := ''; edtMatUnitPrice.Text := ''; end else begin label80.Caption := 'Á¦Ç°¸í'; Edit42.Text := ''; Edit39.Text := ''; Edit13.Text := '0'; Edit14.Text := ''; cbCustList.ItemIndex := -1; Edit32.Text := ''; Edit48.Text := ''; Edit50.Text := ''; Edit49.Text := ''; edtManufact.Text := ''; edtModel.Text := ''; edtMatUnitPrice.Text := ''; end; end; procedure TfKiosk.cxGridTableView2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then begin FDragScrolling := True; FStartY := Y; FStartTopRow := cxGridTableView2.Controller.TopRowIndex; // ÇöÀç ÃÖ»ó´Ü Row ÀúÀå if btnFINISH.Visible then btnFINISH.Visible := False; end else if Button = mbRight then begin btnFINISH.Top := y; btnFINISH.Left := cxGrid4.Width + x; btnFINISH.Visible := True; end; end; procedure TfKiosk.cxGridTableView2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var DeltaY, RowOffset: Integer; begin if not FDragScrolling then Exit; DeltaY := Y - FStartY; // À̵¿ °Å¸® (¾Æ·¡·Î µå·¡±×Çϸé +) RowOffset := DeltaY div 20; // ¹Î°¨µµ - Çȼ¿ ¡æ Row º¯È¯ (°ª Á¶Àý °¡´É) cxGridTableView2.Controller.TopRowIndex := FStartTopRow - RowOffset; end; procedure TfKiosk.cxGridTableView2MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FDragScrolling := False; end; procedure TfKiosk.cxGridTableView3FocusedRecordChanged( Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); var MaterialData : TMaterialData; begin if Assigned(AFocusedRecord) then begin Panel58.Caption := cxGridTableView3.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView3Column2.Index); Edit41.Text := cxGridTableView3.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView3Column1.Index); Edit18.Text := cxGridTableView3.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView3Column5.Index); MaterialData := TMaterialData.Create(Self); // Edit44.Text := MaterialData.xGetStrSumStockQty(dm.FDQuery1,Edit41.Text,'RTP'); // Edit44.Text := MaterialData.xGetStrSumStockQty(dm.FDQuery1,'',Trim(Panel58.Caption),'RTP'); Edit44.Text := MaterialData.xGetStrSumStockQty(dm.FDQuery1,Edit41.Text,'RTP'); Edit47.Text := cxGridTableView3.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView3Column3.Index); ComboBox8.ItemIndex := ComboBox8.Items.IndexOf(cxGridTableView3.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView3Column4.Index)); end else begin Panel58.Caption := 'RTP ¿ø·á¸í'; Edit41.Text := ''; Edit44.Text := '0'; Edit47.Text := ''; ComboBox8.ItemIndex := -1; end; end; procedure TfKiosk.cxGridTableView3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then begin FDragScrolling := True; FStartY := Y; FStartTopRow := cxGridTableView3.Controller.TopRowIndex; // ÇöÀç ÃÖ»ó´Ü Row ÀúÀå end; end; procedure TfKiosk.cxGridTableView3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var DeltaY, RowOffset: Integer; begin if not FDragScrolling then Exit; DeltaY := Y - FStartY; // À̵¿ °Å¸® (¾Æ·¡·Î µå·¡±×Çϸé +) RowOffset := DeltaY div 20; // ¹Î°¨µµ - Çȼ¿ ¡æ Row º¯È¯ (°ª Á¶Àý °¡´É) cxGridTableView3.Controller.TopRowIndex := FStartTopRow - RowOffset; end; procedure TfKiosk.cxGridTableView3MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FDragScrolling := False; end; procedure TfKiosk.cxGridTableView4CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); var View: TcxGridTableView; NewValue, OldValue: Variant; begin if Assigned(ACellViewInfo) then begin if Edit46.Text = '1' then begin Edit31.Clear; Edit46.Text := '0'; end else begin Edit31.Text := ACellViewInfo.Value; Edit46.Text := '1'; end; end; end; procedure TfKiosk.cxGridTableView4CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); begin if (not AViewInfo.Selected) and ((AViewInfo.GridRecord.RecordIndex mod 2) = 1) then begin ACanvas.Canvas.Brush.Color := $00EFF1E9; end; end; procedure TfKiosk.cxGridTableView4FocusedRecordChanged( Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); begin if Assigned(AFocusedRecord) then begin Edit31.Text := cxGridTableView4.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView4Column1.Index); Edit46.Text := '0'; end; end; procedure TfKiosk.cxGridTableView4MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then begin FDragScrolling := True; FStartY := Y; FStartTopRow := cxGridTableView4.Controller.TopRowIndex; // ÇöÀç ÃÖ»ó´Ü Row ÀúÀå end; end; procedure TfKiosk.cxGridTableView4MouseEnter(Sender: TObject); begin if btnFINISH.Visible then btnFINISH.Visible := False; end; procedure TfKiosk.cxGridTableView4MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var DeltaY, RowOffset: Integer; begin if not FDragScrolling then Exit; DeltaY := Y - FStartY; // À̵¿ °Å¸® (¾Æ·¡·Î µå·¡±×Çϸé +) RowOffset := DeltaY div 20; // ¹Î°¨µµ - Çȼ¿ ¡æ Row º¯È¯ (°ª Á¶Àý °¡´É) cxGridTableView4.Controller.TopRowIndex := FStartTopRow - RowOffset; end; procedure TfKiosk.cxGridTableView4MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FDragScrolling := False; end; procedure TfKiosk.StringGrid1DblClick(Sender: TObject); var cidx, ridx: Integer; curEmp: TEmpMst; tmpForm: TfrmEditor; begin cidx := StringGrid1.Rows[0].IndexOf('OBID'); ridx := StringGrid1.Row; if StringGrid1.Objects[cidx,ridx] = nil then Exit; curEmp := TEmpMst(StringGrid1.Objects[cidx,ridx]); tmpForm := TfrmEditor.Create(Self); tmpForm.objEmp := curEmp; if tmpForm.ShowModal = mrOk then begin btQuery.OnClick(Sender); end; tmpForm.Free; tmpForm:=nil; end; procedure TfKiosk.Timer_datetimeTimer(Sender: TObject); begin Label4.Caption := FormatDateTime('yyyy-mm-dd hh:nn:ss ',now); if Pan_Login.Visible then Label31.Caption := FormatDateTime('yyyy-mm-dd hh:nn:ss ',now); if Pan_Setting.Visible then begin if DM.FDConnection1.Connected then begin alarmstatusRefresh; end else begin Panel54.Enabled := false; Panel59.Enabled := false; end; end; end; procedure TfKiosk.Tmr_closeTimer(Sender: TObject); begin if StrToInt(edt_close.Text) >= 3 then begin Tmr_close.Enabled := False; Close; end else begin edt_close.Text := '0'; end; end; end.