Prvni verze
This commit is contained in:
486
frmVstupDat.pas
Normal file
486
frmVstupDat.pas
Normal file
@ -0,0 +1,486 @@
|
||||
unit frmVstupDat;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls,
|
||||
Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, RzEdit, AdvTouchKeyboard, Vcl.ExtCtrls, IdHTTP, ddPlugin_TLB;
|
||||
|
||||
const
|
||||
KLF_ACTIVATE = $00000001;
|
||||
KLF_SETFORPROCESS = $00000100;
|
||||
idScale = '5d370286e1780';
|
||||
urlAPI = 'https://pd7wk7ht2l.execute-api.eu-central-1.amazonaws.com/alpha/scale';
|
||||
|
||||
type
|
||||
TformVstupDat = class(TForm)
|
||||
pnlCalc: TPanel;
|
||||
tKeyb: TAdvTouchKeyboard;
|
||||
edtVyroba: TRzNumericEdit;
|
||||
edtExpedice: TRzNumericEdit;
|
||||
btnOK: TButton;
|
||||
btnStorno: TButton;
|
||||
Label1: TLabel;
|
||||
Label2: TLabel;
|
||||
Label3: TLabel;
|
||||
lblSkladem: TLabel;
|
||||
lblNazev: TLabel;
|
||||
Label4: TLabel;
|
||||
edtUmisteni: TRzEdit;
|
||||
Label5: TLabel;
|
||||
edtHmotnost: TRzNumericEdit;
|
||||
lblMDZ: TLabel;
|
||||
btnDok: TButton;
|
||||
btnVahaAPI: TButton;
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure edtVyrobaClick(Sender: TObject);
|
||||
procedure edtExpediceClick(Sender: TObject);
|
||||
procedure tKeybKeyClick(Sender: TObject; Index: Integer);
|
||||
procedure tKeybKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||||
procedure btnOKClick(Sender: TObject);
|
||||
procedure btnStornoClick(Sender: TObject);
|
||||
procedure btnCalcCloseClick(Sender: TObject);
|
||||
procedure FormActivate(Sender: TObject);
|
||||
procedure edtVyrobaEnter(Sender: TObject);
|
||||
procedure edtExpediceEnter(Sender: TObject);
|
||||
procedure edtUmisteniClick(Sender: TObject);
|
||||
procedure edtHmotnostClick(Sender: TObject);
|
||||
procedure btnDokClick(Sender: TObject);
|
||||
procedure btnVahaAPIClick(Sender: TObject);
|
||||
private
|
||||
public
|
||||
Helios: IHelios;
|
||||
idKZ: Integer;
|
||||
jeMDZ: boolean;
|
||||
mnVyroba: Extended;
|
||||
mnExpedice: Extended;
|
||||
mnZmet: Extended;
|
||||
hmot: Extended;
|
||||
umisteni: string;
|
||||
rekl: boolean;
|
||||
fokus: byte;
|
||||
end;
|
||||
|
||||
var
|
||||
lSQL: string;
|
||||
formVstupDat: TformVstupDat;
|
||||
ctrl: byte;
|
||||
numPadVal, skladem: extended;
|
||||
exitKeyb: Boolean;
|
||||
layName: array[0..KL_NAMELENGTH+1] of Char;
|
||||
http: TIdCustomHTTP;
|
||||
|
||||
implementation
|
||||
|
||||
uses System.StrUtils, System.JSON, helUtils;
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
procedure TformVstupDat.btnCalcCloseClick(Sender: TObject);
|
||||
begin
|
||||
pnlCalc.Enabled:= false;
|
||||
case ctrl of
|
||||
1: edtUmisteni.SetFocus;
|
||||
2: btnOK.SetFocus;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TformVstupDat.btnDokClick(Sender: TObject);
|
||||
begin
|
||||
if (idKZ>0) then
|
||||
Helios.OpenBrowse(bidDok, 'TabDokumenty.ID IN (SELECT IDDok FROM ' + tblDokumVaz + ' WHERE IdentVazby=8 AND IDTab=' + idKZ.ToString + ')');
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TformVstupDat.btnOKClick(Sender: TObject);
|
||||
var lSQL: string;
|
||||
begin
|
||||
edtUmisteni.Text:= Trim(edtUmisteni.Text);
|
||||
umisteni:= edtUmisteni.Text;
|
||||
mnVyroba:= edtVyroba.Value;
|
||||
mnExpedice:= edtExpedice.Value;
|
||||
hmot:= edtHmotnost.Value;
|
||||
|
||||
if (mnVyroba-mnExpedice>0) and (umisteni='') then
|
||||
begin
|
||||
Helios.Error(#1'Nen<65> zad<61>no um<75>st<73>n<EFBFBD> na sklad !!'#1);
|
||||
edtUmisteni.SetFocus;
|
||||
end
|
||||
else
|
||||
begin
|
||||
mnZmet:= 0;
|
||||
if (mnExpedice=0) then
|
||||
Helios.Info(#1'! Nen<65> zad<61>no MNO<4E>STV<54> K EXPEDICI !'#1);
|
||||
if ((mnVyroba+skladem)<mnExpedice) then
|
||||
begin
|
||||
Helios.Error(#1'Nem<65><6D>ete expedovat v<>c ne<6E> m<>te z v<>roby a skladem.'#1);
|
||||
edtExpedice.SetFocus;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if (hmot>0) and (idKZ>0) then
|
||||
begin
|
||||
lSQL:= 'UPDATE ' + tblKZ + ' SET Hmotnost=' + StringReplace(hmot.ToString, ',', '.', [rfReplaceAll]) + ' WHERE ID=' + idKZ.ToString;
|
||||
lSQL:= lSQL + ' AND Hmotnost<>' + StringReplace(hmot.ToString, ',', '.', [rfReplaceAll]);
|
||||
Helios.ExecSQL(lSQL);
|
||||
end;
|
||||
ModalResult:= mrOk;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TformVstupDat.btnStornoClick(Sender: TObject);
|
||||
begin
|
||||
ModalResult:= mrCancel;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
// 4x faster than dateutils version
|
||||
function UNIXTimeToDateTimeFAST(UnixTime: LongWord): TDateTime;
|
||||
begin
|
||||
result:= (UnixTime/86400) + 25569;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TformVstupDat.btnVahaAPIClick(Sender: TObject);
|
||||
var lSQL, data, datStamp, datX, datHmot: string;
|
||||
hm: Extended;
|
||||
JObj: TJSONObject;
|
||||
dat: TDateTime;
|
||||
begin
|
||||
hm:= 0;
|
||||
http:= TIdHTTP.Create(nil);
|
||||
try
|
||||
try
|
||||
data:= http.Get(urlAPI + '/' + idScale);
|
||||
if (data<>'') then
|
||||
begin
|
||||
JObj:= TJSONObject.ParseJSONValue(TEncoding.Default.GetBytes(data),0) as TJSONObject;
|
||||
// datStamp:= JObj.Get('timestamp').JsonValue.Value;
|
||||
// if (Length(datStamp)=13) then
|
||||
// datStamp:= LeftStr(datStamp, 10);
|
||||
// dat:= UNIXTimeToDateTimeFAST(StrToInt64(datStamp));
|
||||
// dat:= UnixToDateTime(StrToInt64(datStamp));
|
||||
datHmot:= JObj.Get('weight').JsonValue.Value; // v gramech
|
||||
hm:= 0;
|
||||
if not(TryStrToFloat(datHmot,hm)) then
|
||||
hm:= 0;
|
||||
hm:= hm/1000;
|
||||
end;
|
||||
except on E:Exception do
|
||||
Helios.Error('Chyba na<6E><61>t<EFBFBD>n<EFBFBD> hmotnosti: ' + CRLF + #1 + E.Message + #1);
|
||||
end;
|
||||
finally
|
||||
if Assigned(JObj) then
|
||||
JObj.Free;
|
||||
http.Free;
|
||||
end;
|
||||
edtHmotnost.Value:= hm;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TformVstupDat.edtExpediceClick(Sender: TObject);
|
||||
begin
|
||||
edtVyroba.Color:= $f0f0f0;
|
||||
edtUmisteni.Color:= $f0f0f0;
|
||||
edtExpedice.Color:= clWebSalmon;
|
||||
edtHmotnost.Color:= $f0f0f0;
|
||||
if (jeMDZ) then
|
||||
edtHmotnost.Color:= $33dfff;
|
||||
pnlCalc.Enabled:= true;
|
||||
ctrl:= 2;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TformVstupDat.edtExpediceEnter(Sender: TObject);
|
||||
begin
|
||||
edtExpediceClick(Sender);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TformVstupDat.edtHmotnostClick(Sender: TObject);
|
||||
begin
|
||||
edtVyroba.Color:= $f0f0f0;
|
||||
edtUmisteni.Color:= $f0f0f0;
|
||||
edtExpedice.Color:= $f0f0f0;
|
||||
edtHmotnost.Color:= clWebSalmon;
|
||||
ctrl:= 3;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TformVstupDat.edtUmisteniClick(Sender: TObject);
|
||||
begin
|
||||
edtVyroba.Color:= $f0f0f0;
|
||||
edtUmisteni.Color:= clWebSalmon;
|
||||
edtUmisteni.SetFocus;
|
||||
edtExpedice.Color:= $f0f0f0;
|
||||
edtHmotnost.Color:= $f0f0f0;
|
||||
if (jeMDZ) then
|
||||
edtHmotnost.Color:= $33dfff;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TformVstupDat.edtVyrobaClick(Sender: TObject);
|
||||
begin
|
||||
edtVyroba.Color:= clWebSalmon;
|
||||
edtVyroba.SetFocus;
|
||||
edtUmisteni.Color:= $f0f0f0;
|
||||
edtExpedice.Color:= $f0f0f0;
|
||||
edtHmotnost.Color:= $f0f0f0;
|
||||
if (jeMDZ) then
|
||||
edtHmotnost.Color:= $33dfff;
|
||||
pnlCalc.Enabled:= true;
|
||||
ctrl:= 1;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TformVstupDat.edtVyrobaEnter(Sender: TObject);
|
||||
begin
|
||||
edtVyrobaClick(Sender);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TformVstupDat.FormActivate(Sender: TObject);
|
||||
begin
|
||||
edtVyrobaClick(Sender);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TformVstupDat.FormClose(Sender: TObject; var Action: TCloseAction);
|
||||
begin
|
||||
if (layName[0]<>'') then
|
||||
LoadKeyboardLayout(@layName, KLF_ACTIVATE or KLF_SETFORPROCESS);
|
||||
Action:= caFree;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TformVstupDat.FormShow(Sender: TObject);
|
||||
var m, m2: extended;
|
||||
s: integer;
|
||||
lSQL: string;
|
||||
begin
|
||||
tKeyb.Width:= 430;
|
||||
tKeyb.Height:= 395;
|
||||
pnlCalc.Enabled:= false;
|
||||
edtVyroba.Value:= mnVyroba;
|
||||
edtExpedice.Color:= clOlive;
|
||||
edtExpedice.Value:= mnExpedice;
|
||||
edtHmotnost.Value:= hmot;
|
||||
|
||||
lblMDZ.Visible:= false;
|
||||
edtUmisteni.Color:= $f0f0f0;
|
||||
edtExpedice.Color:= $f0f0f0;
|
||||
edtHmotnost.Color:= $f0f0f0;
|
||||
|
||||
if (rekl) then
|
||||
lblMDZ.Caption:= 'REKLAMACE';
|
||||
|
||||
if (jeMDZ) or (rekl) then
|
||||
begin
|
||||
edtHmotnost.Color:= $33dfff;
|
||||
lblMDZ.Visible:= true;
|
||||
end;
|
||||
|
||||
if (idKZ>0) then
|
||||
begin
|
||||
lblNazev.Caption:= Trim(helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev1 FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString));
|
||||
edtUmisteni.Text:= umisteni;
|
||||
s:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblSS + ' WHERE IDSklad=N''100'' AND IDKmenZbozi=' + idKZ.ToString);
|
||||
if (s>0) then
|
||||
begin
|
||||
m:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT ISNULL( (SELECT Mnozstvi FROM ' + tblSS + ' WHERE ID=' + s.ToString + '), 0)');
|
||||
{
|
||||
lSQL:= 'SELECT ISNULL( (SELECT SUM(Mnozstvi) FROM ' + tblPZ + ' WHERE SkutecneDatReal IS NULL AND DatPorizeni>=CONVERT(datetime,N''1.3.2019 00:00:01'',104)';
|
||||
lSQL:= lSQL + ' AND DruhPohybuZbo IN (2,4) AND IDZboSklad=' + s.ToString + '), 0)';
|
||||
}
|
||||
// lSQL:= 'SELECT ISNULL( (SELECT MnozstviExp FROM dbo.hvw_StavSkladuProExpedici WHERE ID=' + s.ToString + '), 0)';
|
||||
// m2:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
|
||||
// skladem:= m-m2;
|
||||
lSQL:= 'SELECT ISNULL( (SELECT MnozstviExp FROM dbo.hvw_StavSkladuProExpedici WHERE ID=' + s.ToString + '), 0)';
|
||||
skladem:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
|
||||
lblSkladem.Caption:= FormatFloat('#,##0', skladem);
|
||||
end;
|
||||
|
||||
lSQL:= 'SELECT Hmotnost FROM ' + tblKZ + ' WHERE Hmotnost>0 AND ID=' + idKZ.ToString;
|
||||
with Helios.OpenSQL(lSQL) do
|
||||
if (RecordCount>0) then
|
||||
edtHmotnost.Value:= StrToFloat(VarToStr(FieldValues(0)));
|
||||
|
||||
with Helios.OpenSQL('SELECT COUNT(*) FROM ' + tblDokumVaz + ' WHERE IdentVazby=8 AND IDTab=' + idKZ.ToString) do
|
||||
btnDok.Visible:= (RecordCount>0);
|
||||
end;
|
||||
|
||||
if GetKeyboardLayoutName(@layName) then
|
||||
LoadKeyboardLayout('00020409', KLF_ACTIVATE or KLF_SETFORPROCESS);
|
||||
|
||||
http:= TIdHTTP.Create(nil);
|
||||
try
|
||||
try
|
||||
http.Get(urlAPI + '/' + idScale, [404]);
|
||||
except
|
||||
btnVahaAPI.Visible:= false;
|
||||
end;
|
||||
finally
|
||||
http.Free;
|
||||
end;
|
||||
btnVahaAPI.Visible:= false;
|
||||
|
||||
case fokus of
|
||||
1: edtVyrobaClick(Sender);
|
||||
2: edtUmisteniClick(Sender);
|
||||
3: edtExpediceClick(Sender);
|
||||
4: edtHmotnostClick(Sender);
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TformVstupDat.tKeybKeyClick(Sender: TObject; Index: Integer);
|
||||
var i: integer;
|
||||
lSQL, sql1, sql2: string;
|
||||
desMisto, prepDesM: Boolean;
|
||||
begin
|
||||
prepDesM:= true;
|
||||
if (Index<15) then
|
||||
begin
|
||||
if (Index=9) then
|
||||
begin
|
||||
case ctrl of
|
||||
1: edtVyroba.Value:= 0;
|
||||
2: edtExpedice.Value:= 0;
|
||||
3: edtHmotnost.Value:= 0;
|
||||
end;
|
||||
end;
|
||||
|
||||
i:= -1;
|
||||
case Index of
|
||||
0: i:= 7;
|
||||
1: i:= 8;
|
||||
2: i:= 9;
|
||||
3: i:= 4;
|
||||
4: i:= 5;
|
||||
5: i:= 6;
|
||||
6: i:= 1;
|
||||
7: i:= 2;
|
||||
8: i:= 3;
|
||||
// 9: edtNumVal.Value:= 0;
|
||||
10: i:= 0;
|
||||
11: begin
|
||||
i:= 100;
|
||||
prepDesM:= false;
|
||||
desMisto:= true;
|
||||
end;
|
||||
end;
|
||||
if (i>=0) then
|
||||
begin
|
||||
case ctrl of
|
||||
1: begin
|
||||
if (edtVyroba.Value=0) then
|
||||
edtVyroba.IntValue:= i
|
||||
else
|
||||
edtVyroba.IntValue:= StrToInt(Trim(StringReplace(StringReplace(edtVyroba.Text,#160,'',[rfReplaceAll]),' ','',[rfReplaceAll])) + IntToStr(i));
|
||||
edtVyroba.SelStart:= Length(edtVyroba.Text);
|
||||
end;
|
||||
2: begin
|
||||
if (edtExpedice.Value=0) then
|
||||
edtExpedice.IntValue:= i
|
||||
else
|
||||
edtExpedice.IntValue:= StrToInt(Trim(StringReplace(StringReplace(edtExpedice.Text,#160,'',[rfReplaceAll]),' ','',[rfReplaceAll])) + IntToStr(i));
|
||||
edtExpedice.SelStart:= Length(edtExpedice.Text);
|
||||
end;
|
||||
3: begin
|
||||
if (prepDesM) then
|
||||
desMisto:= Pos(',', edtHmotnost.Text)>0;
|
||||
if (edtHmotnost.Value=0) then
|
||||
begin
|
||||
if (i<100) and (desMisto=false) then
|
||||
edtHmotnost.IntValue:= i
|
||||
else
|
||||
if (i<100) then
|
||||
edtHmotnost.Text:= edtHmotnost.Text + IntToStr(i)
|
||||
else
|
||||
edtHmotnost.Text:= '0,';
|
||||
end
|
||||
else
|
||||
begin
|
||||
if (desMisto) then
|
||||
begin
|
||||
if (i=100) and (Pos(',', edtHmotnost.Text)=0) then
|
||||
{
|
||||
begin
|
||||
edtHmotnost.Value:= StrToFloat(Trim(StringReplace(StringReplace(edtHmotnost.Text,#160,'',[rfReplaceAll]),' ','',[rfReplaceAll])) + ',' + IntToStr(i));
|
||||
desMisto:= false;
|
||||
end
|
||||
else
|
||||
}
|
||||
edtHmotnost.Text:= edtHmotnost.Text + ',';
|
||||
if (i<100) then
|
||||
edtHmotnost.Text:= edtHmotnost.Text + IntToStr(i);
|
||||
end
|
||||
else
|
||||
edtHmotnost.Value:= StrToFloat(Trim(StringReplace(StringReplace(edtHmotnost.Text,#160,'',[rfReplaceAll]),' ','',[rfReplaceAll])) + IntToStr(i));
|
||||
end;
|
||||
edtHmotnost.SelStart:= Length(edtHmotnost.Text);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
{
|
||||
case ctrl of
|
||||
1: if (t1-t2)<10 then
|
||||
edtVyroba.Value:= 0;
|
||||
2: if (t1-t2)<10 then
|
||||
edtExpedice.Value:= 0;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TformVstupDat.tKeybKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||
var i: integer;
|
||||
begin
|
||||
{
|
||||
case Key of
|
||||
13: i:= 11;
|
||||
46: i:= 9;
|
||||
48: i:= 10; // 0
|
||||
49: i:= 6;
|
||||
50: i:= 7;
|
||||
51: i:= 8;
|
||||
52: i:= 3;
|
||||
53: i:= 4;
|
||||
54: i:= 5;
|
||||
55: i:= 0;
|
||||
56: i:= 1;
|
||||
57: i:= 9;
|
||||
end;
|
||||
tKeybKeyClick(Sender, i);
|
||||
}
|
||||
end;
|
||||
|
||||
end.
|
||||
Reference in New Issue
Block a user