Pridana funkcnost zmeny planovaneho ukonceni prikazu podle tabulky (comObject akce 36) + prvni verze generovani KoopObj dle stare HDC funkcnosti ctecky

This commit is contained in:
2026-05-26 08:39:00 +02:00
parent b1cd64bb32
commit 078d77028a
17 changed files with 3380 additions and 490 deletions
+201 -146
View File
@@ -85,7 +85,8 @@ uses System.Variants, Vcl.Controls, System.Generics.Collections, System.Generics
{$IFDEF MadExcept}
madExcept,
{$ENDIF}
frmHrOdvOper, frmSchvaleniZak, frmOOPPohyb;
frmHrOdvOper, frmSchvaleniZak, frmOOPPohyb, frmVPrZmenaPlanuUkonceni, frmGenKoopObj,
dataMod;
var oVar1, oVar2: OleVariant;
LocalFormatSettings: TFormatSettings;
@@ -336,43 +337,44 @@ var oVar1, oVar2: OleVariant;
arrRadky: TArray<TArray<string>>;
cont: Boolean;
proc1, proc2: Double;
wF: TForm;
begin
overRadek:= 0;
posunSl:= 0;
overRadek := 0;
posunSl := 0;
if (Clipboard.HasFormat(CF_TEXT)) then
begin
errMsg:= '';
cont:= true;
radky:= '';
errMsg := '';
cont := true;
radky := '';
try
radky:= Clipboard.AsText;
sl:= PosCount(#9, LeftStr(radky, Pos(#13, radky)-1)) + 1; // pocet sloupcu
radky := Clipboard.AsText;
sl := PosCount(#9, LeftStr(radky, Pos(#13, radky)-1)) + 1; // pocet sloupcu
except on E:Exception do
cont:= false;
cont := false;
end;
if (radky<>'') and (cont) then
begin
cont:= true;
cntIns:= 0;
cntAkt:= 0;
cnt:= Length(radky)-Length(StringReplace(radky, Chr(13),'',[rfReplaceAll]))+1;
SetLength(arrRadky, cnt, 5); // index od 0, napevno 5 sloupcu, kdyby nepsali nadpis pro SZn a procentaN
cont := true;
cntIns := 0;
cntAkt := 0;
cnt := Length(radky)-Length(StringReplace(radky, Chr(13),'',[rfReplaceAll]))+1;
SetLength (arrRadky, cnt, 5); // index od 0, napevno 5 sloupcu, kdyby nepsali nadpis pro SZn a procentaN
if (Pos(#13, radky)>0) then
zaznam:= LeftStr(radky, Pos(#13, radky)-1) // nazvy sloupcu
zaznam := LeftStr(radky, Pos(#13, radky)-1) // nazvy sloupcu
else
zaznam:= radky;
zaznam := radky;
if Helios.YesNo('Má importovaná oblast hlavičku ?', false) then
begin
Delete(radky,1,Pos(#13,radky)+1); // smaze hlavicku
SetLength(arrRadky,Length(arrRadky)-1);
Delete (radky,1,Pos(#13,radky)+1); // smaze hlavicku
SetLength (arrRadky,Length(arrRadky)-1);
end;
for idxR:=0 to High(arrRadky)-1 do
begin
if (Pos(#13,radky)>0) then
zaznam:= LeftStr(radky,Pos(#13,radky)-1)
zaznam := LeftStr(radky,Pos(#13,radky)-1)
else
zaznam:= radky;
zaznam:= Trim(StringReplace(zaznam, #9#9, #9' '#9,[rfReplaceAll]));
zaznam := radky;
zaznam := Trim(StringReplace(zaznam, #9#9, #9' '#9,[rfReplaceAll]));
if (zaznam<>'') then
for idxS:=0 to sl-1 do
begin
@@ -380,13 +382,13 @@ var oVar1, oVar2: OleVariant;
begin
if (Pos(#9, zaznam)>0) then
begin
arrRadky[idxR,idxS]:= LeftStr(zaznam, Pos(#9, zaznam)-1);
Delete(zaznam,1,Pos(#9, zaznam));
arrRadky[idxR,idxS] := LeftStr(zaznam, Pos(#9, zaznam)-1);
Delete (zaznam,1,Pos(#9, zaznam));
end
else
begin
arrRadky[idxR,idxS]:= zaznam;
zaznam:= '';
arrRadky[idxR,idxS] := zaznam;
zaznam := '';
end;
end;
end;
@@ -399,7 +401,7 @@ var oVar1, oVar2: OleVariant;
lSQL:= lSQL.Replace('#TabImp', 'dbo._TabImp');
Helios.ExecSQL(lSQL);
waitStart(nil, 'Import procenta ztrát dílců', Length(arrRadky), clRed);
wF := helUtils.waitStart (nil, 'Import procenta ztrát dílců', Length(arrRadky), clRed, true);
for idxR:=0 to High(arrRadky)-1 do
begin
arrRadky[idxR, 0]:= helUtils.sqlSanitize(arrRadky[idxR, 0].Trim); // sz
@@ -420,36 +422,38 @@ var oVar1, oVar2: OleVariant;
begin
try
if (arrRadky[idxR, 2]='') then
proc1:= 0
proc1 := 0
else
if not(TryStrToFloat(arrRadky[idxR, 2].Replace(' ', '').Replace('.', ','), proc1)) then
proc1:= 0;
proc1 := 0;
if (arrRadky[idxR, 4]='') then
proc2:= 0
proc2 := 0
else
if not(TryStrToFloat(arrRadky[idxR, 4].Replace(' ', '').Replace('.', ','), proc2)) then
proc2:= 0;
proc2 := 0;
lSQL:= 'INSERT #TabImportProcentaZtrat (SkupZbo, RegCis, Procento, SkupZboNizsi, ProcentoNizsi) SELECT N' + arrRadky[idxR, 0].QuotedString;
lSQL:= lSQL + ', N' + arrRadky[idxR, 1].QuotedString + ', ' + proc1.ToString.Replace(',', '.') + ', N' + arrRadky[idxR, 3].QuotedString + ', ' + proc2.ToString.Replace(',', '.');
lSQL := 'INSERT #TabImportProcentaZtrat (SkupZbo, RegCis, Procento, SkupZboNizsi, ProcentoNizsi) SELECT N' + arrRadky[idxR, 0].QuotedString;
lSQL := lSQL + ', N' + arrRadky[idxR, 1].QuotedString + ', ' + proc1.ToString.Replace(',', '.') + ', N' + arrRadky[idxR, 3].QuotedString + ', ' + proc2.ToString.Replace(',', '.');
if (jeTest) then
lSQL:= lSQL.Replace('#TabImp', 'dbo._TabImp');
Helios.ExecSQL(lSQL);
lSQL := lSQL.Replace ('#TabImp', 'dbo._TabImp');
Helios.ExecSQL (lSQL);
except on E:Exception do
errMsg:= E.Message + CRLF + lSQL;
errMsg := E.Message + CRLF + lSQL;
end;
end;
end;
waitEnd;
if Assigned(wF) then
waitEnd (wF);
if not(jeTest) then
Helios.ExecSQL('IF OBJECT_ID(N''dbo.ep_HDC_TPV_ImportProcentaZtrat'', N''P'') IS NOT NULL EXEC dbo.ep_HDC_TPV_ImportProcentaZtrat');
Helios.ExecSQL ('IF OBJECT_ID(N''dbo.ep_HDC_TPV_ImportProcentaZtrat'', N''P'') IS NOT NULL EXEC dbo.ep_HDC_TPV_ImportProcentaZtrat');
// Helios.ExecSQL('DROP TABLE IF EXISTS dbo._TabImportProcentaZtrat');
Helios.ExecSQL('DROP TABLE IF EXISTS #TabImportProcentaZtrat');
Helios.ExecSQL ('DROP TABLE IF EXISTS #TabImportProcentaZtrat');
Helios.Refresh(false);
Helios.Refresh (false);
// Helios.Info(#1'Nových karet forem: ' + cntIns.ToString + CRLF + 'Upravených karet forem: ' + cntAkt.ToString + #1);
end;
end;
@@ -465,6 +469,7 @@ var oVar1, oVar2: OleVariant;
arrRadky: TArray<TArray<string>>;
forma: TForma;
cont: Boolean;
wF: TForm;
begin
overRadek:= 0;
posunSl:= 0;
@@ -523,14 +528,14 @@ var oVar1, oVar2: OleVariant;
Delete(radky,1,Pos(#13, radky)+1);
end;
waitStart(nil, 'Import dat karet forem', Length(arrRadky), clRed);
wF := helUtils.waitStart (nil, 'Import dat karet forem', Length(arrRadky), clRed, true);
for idxR:=0 to High(arrRadky)-1 do
begin
if (idxR mod 10=0) then
waitSetProgBar(idxR);
helUtils.waitSetProgBar (idxR, wF);
try
idKZ:= 0;
ClearForma(forma);
ClearForma (forma);
forma.sz:= Trim(arrRadky[idxR, 0]);
posunSl:= 0;
@@ -549,13 +554,13 @@ var oVar1, oVar2: OleVariant;
if (forma.regCis='') then
continue;
forma.nazev1:= Trim(arrRadky[idxR, 1 + posunSl]);
forma.vc:= Trim(arrRadky[idxR, 2 + posunSl]);
forma.popisVc:= Trim(arrRadky[idxR, 3 + posunSl]);
forma.skutPopVc:= Trim(arrRadky[idxR, 4 + posunSl]);
forma.vykres:= Trim(arrRadky[idxR, 5 + posunSl]);
forma.cilSklad:= Trim(arrRadky[idxR, 7 + posunSl]);
forma.jcena:= 0;
forma.nazev1 := Trim(arrRadky[idxR, 1 + posunSl]);
forma.vc := Trim(arrRadky[idxR, 2 + posunSl]);
forma.popisVc := Trim(arrRadky[idxR, 3 + posunSl]);
forma.skutPopVc := Trim(arrRadky[idxR, 4 + posunSl]);
forma.vykres := Trim(arrRadky[idxR, 5 + posunSl]);
forma.cilSklad := Trim(arrRadky[idxR, 7 + posunSl]);
forma.jcena := 0;
with Helios.OpenSQL('SELECT ID FROM ' + tblKZ + ' WHERE SkupZbo=N' + QuotedStr(forma.sz) + ' AND RegCis=N' + QuotedStr(forma.regCis)) do
if (RecordCount=1) then
@@ -573,11 +578,11 @@ var oVar1, oVar2: OleVariant;
// lSQL:= lSQL + 'SELECT SCOPE_IDENTITY()';
try
with Helios.OpenSQL(lSQL) do
idKZ:= StrToInt(VarToStr(FieldValues(0)));
Inc(cntIns);
idKZ := StrToInt(VarToStr(FieldValues(0)));
Inc (cntIns);
except on E:Exception do
begin
Helios.Error(#1'Chyba INS: ' + e.Message +#1);
Helios.Error (#1'Chyba INS: ' + e.Message +#1);
idKZ:= 0;
end;
end;
@@ -592,9 +597,9 @@ var oVar1, oVar2: OleVariant;
lSQL:= lSQL + forma.cilSklad.QuotedString + ', @IDZboSklad=@idSS OUT' + CRLF + 'SELECT @idSS';
try
with Helios.OpenSQL(lSQL) do
idSS:= StrToInt(VarToStr(FieldValues(0)));
idSS := StrToInt(VarToStr(FieldValues(0)));
except
idSS:= 0;
idSS := 0;
end;
if (idSS>0) and (forma.vc<>'') then
begin
@@ -604,8 +609,8 @@ var oVar1, oVar2: OleVariant;
lSQL:= lSQL + 'IF (@idVC IS NULL)' + CRLF + ' EXEC dbo.hp_OZInsertVyrCS @IDVyrCS=@idVC OUT, @IDVyrCK=@idVCK OUT, @IDZboSklad=' + idSS.ToString;
lSQL:= lSQL + ', @Nazev1=N' + forma.vc.QuotedString + CRLF + 'SELECT @idVC';
try
with Helios.OpenSQL(lSQL) do
idVC:= StrToInt(VarToStr(FieldValues(0)));
with Helios.OpenSQL (lSQL) do
idVC:= StrToInt (VarToStr(FieldValues(0)));
except
idVC:= 0;
end;
@@ -613,7 +618,7 @@ var oVar1, oVar2: OleVariant;
begin
lSQL:= 'UPDATE ' + tblVyrCSE + ' SET _SkutecnyPopis=N' + forma.skutPopVc.QuotedString + ' WHERE ID=' + idVC.ToString + CRLF + 'IF (@@ROWCOUNT=0)' + CRLF;
lSQL:= lSQL + ' INSERT ' + tblVyrCSE + ' (ID, _SkutecnyPopis) SELECT ' + idVC.ToString + ', N' + forma.skutPopVc.QuotedString;
Helios.ExecSQL(lSQL);
Helios.ExecSQL (lSQL);
end;
end;
end;
@@ -623,10 +628,11 @@ var oVar1, oVar2: OleVariant;
errMsg:= E.Message + CRLF + lSQL;
end;
end;
waitEnd;
if Assigned(wF) then
waitEnd (wF);
Helios.Refresh(true);
Helios.Info(#1'Nových karet forem: ' + cntIns.ToString + CRLF + 'Upravených karet forem: ' + cntAkt.ToString + #1);
Helios.Refresh (true);
Helios.Info (#1'Nových karet forem: ' + cntIns.ToString + CRLF + 'Upravených karet forem: ' + cntAkt.ToString + #1);
end;
end;
end;
@@ -641,6 +647,7 @@ var oVar1, oVar2: OleVariant;
arrRadky: TArray<TArray<string>>;
forma: TForma;
cont: Boolean;
wF: TForm;
begin
overRadek:= 0;
posunSl:= 0;
@@ -662,7 +669,7 @@ var oVar1, oVar2: OleVariant;
cntIns:= 0;
cntAkt:= 0;
cnt:= Length(radky)-Length(StringReplace(radky, Chr(13),'',[rfReplaceAll]))+1;
SetLength(arrRadky, cnt, sl); // index od 0
SetLength (arrRadky, cnt, sl); // index od 0
if (Pos(#13, radky)>0) then
zaznam:= LeftStr(radky, Pos(#13, radky)-1) // nazvy sloupcu
else
@@ -699,14 +706,14 @@ var oVar1, oVar2: OleVariant;
Delete(radky,1,Pos(#13, radky)+1);
end;
waitStart(nil, 'Import dat karet forem', Length(arrRadky), clRed);
wF := helUtils.waitStart (nil, 'Import dat karet forem', Length(arrRadky), clRed, true);
for idxR:=0 to High(arrRadky)-1 do
begin
if (idxR mod 10=0) then
waitSetProgBar(idxR);
helUtils.waitSetProgBar (idxR, wF);
try
idKZ:= 0;
ClearForma(forma);
idKZ := 0;
ClearForma (forma);
forma.sz:= Trim(arrRadky[idxR, 0]);
posunSl:= 0;
@@ -744,11 +751,11 @@ var oVar1, oVar2: OleVariant;
lSQL:= lSQL + 'SELECT SCOPE_IDENTITY()';
try
with Helios.OpenSQL(lSQL) do
idKZ:= StrToInt(VarToStr(FieldValues(0)));
idKZ:= StrToInt (VarToStr(FieldValues(0)));
Inc(cntIns);
except on E:Exception do
begin
Helios.Error(#1'Chyba INS: ' + e.Message +#1);
Helios.Error (#1'Chyba INS: ' + e.Message +#1);
idKZ:= 0;
end;
end;
@@ -790,19 +797,21 @@ var oVar1, oVar2: OleVariant;
idVC:= 0;
end;
if (idVC>0) then
Helios.ExecSQL('UPDATE ' + tblVyrCSE + ' SET _SkutecnyPopis=N' + IfThen(forma.skutPopVc='', 'ULL', QuotedStr(forma.skutPopVc)) + ' WHERE ID=' + idVC.ToString);
Helios.ExecSQL ('UPDATE ' + tblVyrCSE + ' SET _SkutecnyPopis=N' + IfThen(forma.skutPopVc='', 'ULL', QuotedStr(forma.skutPopVc)) + ' WHERE ID=' + idVC.ToString);
end;
end;
end;
except on E:Exception do
errMsg:= E.Message + CRLF + lSQL;
errMsg := E.Message + CRLF + lSQL;
end;
end;
waitEnd;
Helios.Refresh(true);
Helios.Info(#1'Nových karet forem: ' + cntIns.ToString + CRLF + 'Upravených karet forem: ' + cntAkt.ToString + #1);
if Assigned(wF) then
waitEnd (wF);
Helios.Refresh (true);
Helios.Info (#1'Nových karet forem: ' + cntIns.ToString + CRLF + 'Upravených karet forem: ' + cntAkt.ToString + #1);
end;
end;
end;
@@ -817,6 +826,7 @@ var oVar1, oVar2: OleVariant;
arrRadky: TArray<TArray<string>>;
forma: TForma;
cont, jsemNew: Boolean;
wF: Tform;
begin
overRadek:= 0;
posunSl:= 0;
@@ -875,11 +885,11 @@ var oVar1, oVar2: OleVariant;
Delete(radky,1,Pos(#13, radky)+1);
end;
waitStart(nil, 'Import dat karet forem', Length(arrRadky), clRed);
wF := helUtils.waitStart (nil, 'Import dat karet forem', Length(arrRadky), clRed, true);
for idxR:=0 to High(arrRadky)-1 do
begin
if (idxR mod 10=0) then
waitSetProgBar(idxR);
helUtils.waitSetProgBar (idxR, wF);
try
idKZ:= 0;
jsemNew:= false;
@@ -962,10 +972,12 @@ var oVar1, oVar2: OleVariant;
errMsg:= E.Message + CRLF + lSQL;
end;
end;
waitEnd;
Helios.Refresh(true);
Helios.Info(#1'Import ' + cntIns.ToString + ' nových karet' + CRLF + 'Aktualizací karet: ' + cntAkt.ToString + #1);
if Assigned(wF) then
waitEnd (wF);
Helios.Refresh (true);
Helios.Info (#1'Import ' + cntIns.ToString + ' nových karet' + CRLF + 'Aktualizací karet: ' + cntAkt.ToString + #1);
end;
end;
end;
@@ -979,6 +991,7 @@ var oVar1, oVar2: OleVariant;
arrRadky: TArray<TArray<string>>;
kmen: TKmen;
cont: Boolean;
wF: TForm;
begin
posunSl:= 0;
@@ -1039,14 +1052,14 @@ var oVar1, oVar2: OleVariant;
Delete(radky,1,Pos(#13, radky)+1);
end;
waitStart(nil, 'Import dat karet nářadí', Length(arrRadky), clRed);
wF := helUtils.waitStart (nil, 'Import dat karet nářadí', Length(arrRadky), clRed, true);
for idxR:=0 to High(arrRadky)-1 do
begin
if (idxR mod 10=0) then
waitSetProgBar(idxR);
helUtils.waitSetProgBar (idxR, wF);
try
idKZ:= 0;
clearKmen(kmen);
clearKmen (kmen);
{
if Trim(arrRadky[idxR, 0])<>Trim(arrRadky[idxR, 1]) then
kmen.sz:= Trim(arrRadky[idxR, 0]);
@@ -1243,10 +1256,12 @@ var oVar1, oVar2: OleVariant;
errMsg:= E.Message + CRLF + lSQL;
end;
end;
waitEnd;
Helios.Refresh(true);
Helios.Info(#1'Nových karet: ' + cntIns.ToString + CRLF + 'Upravených karet: ' + cntAkt.ToString + #1);
if Assigned(wF) then
waitEnd (wF);
Helios.Refresh (true);
Helios.Info (#1'Nových karet: ' + cntIns.ToString + CRLF + 'Upravených karet: ' + cntAkt.ToString + #1);
end;
end;
end;
@@ -1264,6 +1279,7 @@ var oVar1, oVar2: OleVariant;
supps: TArray<string>;
fndIdx: integer;
doplnNulu: boolean;
wF: TForm;
begin
xls:= TXLSWorkbook.Create;
try
@@ -1301,7 +1317,7 @@ var oVar1, oVar2: OleVariant;
lSQL:= 'IF OBJECT_ID(N''tempdb..#TabMatrixSupps'', N''U'') IS NOT NULL DROP TABLE #TabMatrixSupps' + CRLF
+ 'CREATE TABLE #TabMatrixSupps (CisloOrg INT, Suffix NVARCHAR(5) DEFAULT N'''' NOT NULL, Nazev NVARCHAR(100)'
+ ', Mena NVARCHAR(50), Doprava NVARCHAR(100), KplCisloOrg AS (CONVERT(nvarchar, CisloOrg) + IIF(Suffix<>N'''', N''/''+ Suffix, N'''')) )' + CRLF;
Helios.ExecSQL(lSQL);
Helios.ExecSQL (lSQL);
shSupp:= xls.Sheets.Add;
shSupp.Name:= 'Suppliers';
@@ -1456,14 +1472,14 @@ var oVar1, oVar2: OleVariant;
with Helios.OpenSQL(lSQL) do
begin
i:=RecordCount;
waitStart(nil, 'Export položek', i, clRed);
wF := helUtils.waitStart (nil, 'Export položek', i, clRed, true);
First;
i:= 1;
while not(EOF) do
begin
if (i mod 10=0) then
waitSetProgBar(i);
helUtils.waitSetProgBar (i, wF);
idKZ:= StrToInt(VarToStr(FieldValues(8)));
sTypPol:= 'E';
@@ -1569,7 +1585,8 @@ var oVar1, oVar2: OleVariant;
Next;
end;
waitEnd;
if Assigned(wF) then
waitEnd (wF);
end;
@@ -1616,6 +1633,7 @@ var oVar1, oVar2: OleVariant;
arrRadky: TArray<TArray<string>>;
kmen: TKmen;
cont: Boolean;
wF: TForm;
begin
posunSl:= 2;
@@ -1674,11 +1692,11 @@ var oVar1, oVar2: OleVariant;
Delete(radky,1,Pos(#13, radky)+1);
end;
waitStart(nil, 'Import dat karet měřidel', Length(arrRadky), clRed);
wF := helUtils.waitStart (nil, 'Import dat karet měřidel', Length(arrRadky), clRed, true);
for idxR:=0 to High(arrRadky)-1 do
begin
if (idxR mod 10=0) then
waitSetProgBar(idxR);
helUtils.waitSetProgBar (idxR, wF);
try
idKZ:= 0;
clearKmen(kmen);
@@ -1820,10 +1838,12 @@ var oVar1, oVar2: OleVariant;
errMsg:= E.Message + CRLF + lSQL;
end;
end;
waitEnd;
Helios.Refresh(true);
Helios.Info(#1'Nových karet: ' + cntIns.ToString + CRLF + 'Upravených karet: ' + cntAkt.ToString + #1);
if Assigned(wF) then
helUtils.waitEnd (wF);
Helios.Refresh (true);
Helios.Info (#1'Nových karet: ' + cntIns.ToString + CRLF + 'Upravených karet: ' + cntAkt.ToString + #1);
end;
end;
end;
@@ -1838,6 +1858,7 @@ var oVar1, oVar2: OleVariant;
arrRadky: TArray<TArray<string>>;
kmen: TKmen;
cont, prvniPrazdne: Boolean;
wF: TForm;
begin
overRadek:= 0;
@@ -1901,11 +1922,12 @@ var oVar1, oVar2: OleVariant;
posunSl:= 0;
if (prvniPrazdne) then
posunSl:= -1;
waitStart(nil, 'Import dat karet výrobních čísel měřidel', Length(arrRadky), clRed);
wF := helUtils.waitStart (nil, 'Import dat karet výrobních čísel měřidel', Length(arrRadky), clRed, true);
for idxR:=0 to High(arrRadky)-1 do
begin
if (idxR mod 10=0) then
waitSetProgBar(idxR);
helUtils.waitSetProgBar (idxR, wF);
try
idKZ:= 0;
idVC:= 0;
@@ -1990,16 +2012,20 @@ var oVar1, oVar2: OleVariant;
errMsg:= E.Message + CRLF + lSQL;
end;
end;
waitEnd;
Helios.Refresh(true);
Helios.Info(#1'Nových karet VČ: ' + cntIns.ToString + CRLF + 'Upravených karet VČ: ' + cntAkt.ToString + #1);
if Assigned(wF) then
helUtils.waitEnd (wF);
Helios.Refresh (true);
Helios.Info (#1'Nových karet VČ: ' + cntIns.ToString + CRLF + 'Upravených karet VČ: ' + cntAkt.ToString + #1);
end;
end;
end;
procedure TplgKdynium.ZakazkaZobrazAtestyTaveb(const Helios: IHelios; ids: TArray<System.Integer>);
procedure TplgKdynium.ZakazkaZobrazAtestyTaveb (const Helios: IHelios; ids: TArray<System.Integer>);
var lSQL, idsX: string;
bidRozbory, i: integer;
begin
@@ -2237,12 +2263,13 @@ var oVar1, oVar2: OleVariant;
procedure TplgKdynium.RozpRezii_PseudoAutomat(const Helios: IHelios; const arrID: TArray<integer>);
procedure TplgKdynium.RozpRezii_PseudoAutomat (const Helios: IHelios; const arrID: TArray<integer>);
var lSQL, nazRozp, vstStr, denikIDs, utvarVst, cisStredOper: string;
idPreuct, idx, rozpNr, idRozpRez, idObd, mObd, rObd: integer;
ctiZak, ctiUtvar: Boolean;
celkemHod, zakazkaHod: extended;
arrVstStr: TArray<string>;
wF: TForm;
begin
if (Length(arrID)>0) then
begin
@@ -2298,7 +2325,7 @@ var oVar1, oVar2: OleVariant;
if (idObd>0) then
begin
waitStart(nil, 'Zjišťuji podíly evidovaných hodin práce' + IfThen(cisStredOper='', '', ' pracovišť střediska ' + cisStredOper), 1, clRed);
wF := helUtils.waitStart (nil, 'Zjišťuji podíly evidovaných hodin práce' + IfThen(cisStredOper='', '', ' pracovišť střediska ' + cisStredOper), 1, clRed, true);
lSQL:= 'SELECT ISNULL(SUM(pmz.Nor_cas_H), 0) FROM ' + tblPMZ + ' pmz INNER JOIN ' + tblPrikaz + 'p ON (p.ID=pmz.IDPrikaz) INNER JOIN ' + tblZak;
lSQL:= lSQL + ' z ON (p.IDZakazka=z.ID) INNER JOIN ' + tblPrPost + ' pp ON (pp.IDPrikaz=pmz.IDPrikaz AND pp.Doklad=pmz.DokladPrPostup AND pp.Alt=pmz.AltPrPostup';
@@ -2316,7 +2343,8 @@ var oVar1, oVar2: OleVariant;
helUtils.ReseedTable(Helios, tblRozpRezDet);
Helios.ExecSQL('INSERT ' + tblRozpRezDet + ' (CisloZakazky, IdFIARozpusteniRezii, Podil) ' + lSQL);
waitEnd;
if Assigned(wF) then
helUtils.waitEnd (wF);
{
with Helios.OpenSQL(lSQL) do
@@ -2331,7 +2359,7 @@ var oVar1, oVar2: OleVariant;
end; // idRozpRez>0
end; // for rozpNr
end;
Helios.Refresh(true);
Helios.Refresh (true);
end;
@@ -2341,9 +2369,9 @@ var oVar1, oVar2: OleVariant;
procedure TplgKdynium.VytvorTempExtKomPar (const Helios: IHelios; id: integer);
var lSQL: string;
begin
lSQL:= 'IF OBJECT_ID(N''tempdb..#TabExtKomPar'', ''U'') IS NULL CREATE TABLE #TabExtKomPar (Popis NVARCHAR(10) NULL, Cislo NUMERIC(19,6) NULL)' + CRLF;
lSQL:= lSQL + 'DELETE FROM #TabExtKomPar' + CRLF + 'INSERT #TabExtKomPar (Popis, Cislo) SELECT N''STVlastID'', ' + id.ToString;
Helios.ExecSQL(lSQL);
lSQL := 'IF OBJECT_ID(N''tempdb..#TabExtKomPar'', ''U'') IS NULL CREATE TABLE #TabExtKomPar (Popis NVARCHAR(10) NULL, Cislo NUMERIC(19,6) NULL)' + CRLF;
lSQL := lSQL + 'DELETE FROM #TabExtKomPar' + CRLF + 'INSERT #TabExtKomPar (Popis, Cislo) SELECT N''STVlastID'', ' + id.ToString;
Helios.ExecSQL (lSQL);
end;
@@ -2351,7 +2379,7 @@ var oVar1, oVar2: OleVariant;
procedure TplgKdynium.Run (const Helios: IHelios);
const MinVerzeHelios = $030020250106;
const MinVerzeHelios = $030020260114;
var typAkce: byte;
browID, cRec, cntID, l_loop, idDZ, dpz, cOrg, newBid: integer;
lSQL, autor, radDokl, IDcka, params, paramsBak, vlastPar, vlastPar2, contInfo, sz, podm, sTemp: string;
@@ -2368,6 +2396,8 @@ var oVar1, oVar2: OleVariant;
fHrOdvOp: TformHrOdvOper;
fSchvalZak: TformSchvaleniZak;
fOOPPohyb: TformOOPPohyb;
fVPrZmenaUkonceni: TformVPrZmenaPlanuUkonceni;
fGenKObj: TformGenKoopObj;
term, canCont, plusJeden: boolean;
begin
@@ -2384,6 +2414,9 @@ var oVar1, oVar2: OleVariant;
raise Exception.Create('Plugin vyžaduje min verzi Heliosu ' + IntToHex(MinVerzeHelios, 12))
else
begin
if (dataMod.dm=nil) then
dataMod.dm := Tdm.Create (nil);
with Helios.OpenSQL('SELECT CONVERT(nvarchar(128),CONTEXT_INFO(),2)') do
if VarIsNull(FieldValues(0)) then
@@ -2879,20 +2912,20 @@ var oVar1, oVar2: OleVariant;
end;
end;
26: ImportKmenMeridla(Helios);
27: ImportKmenMeridlaVC(Helios);
28: ZakazkaZobrazTavby(Helios, arrID);
29: ZakazkaZobrazAtestyTaveb(Helios, arrID);
26: ImportKmenMeridla (Helios);
27: ImportKmenMeridlaVC (Helios);
28: ZakazkaZobrazTavby (Helios, arrID);
29: ZakazkaZobrazAtestyTaveb (Helios, arrID);
30: begin
fSchvalZak:= TformSchvaleniZak.Create(nil);
fSchvalZak := TformSchvaleniZak.Create(nil);
try
fSchvalZak.Helios:= Helios;
fSchvalZak.id:= 0;
fSchvalZak.Helios := Helios;
fSchvalZak.id := 0;
if (Length(arrId)>1) then
fSchvalZak.arrID:= arrId
fSchvalZak.arrID := arrId
else
fSchvalZak.id:= cRec;
fSchvalZak.id := cRec;
fSchvalZak.ShowModal;
finally
fSchvalZak.Free;
@@ -2901,30 +2934,30 @@ var oVar1, oVar2: OleVariant;
31: ImportProcentaZtrat(Helios);
32: begin
iTemp:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_ObdobiStavu''');
iTemp := helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_ObdobiStavu''');
if (iTemp>0) then
begin
podm:= 'DATEDIFF(year, hvw_ObdobiStavu.DatumOd, GETDATE()) BETWEEN 0 AND 1';
podm := 'DATEDIFF(year, hvw_ObdobiStavu.DatumOd, GETDATE()) BETWEEN 0 AND 1';
if (Length(arrID)=1) then
begin
iTemp2:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT o.DatumOd_Y FROM ' + tblObd + ' o INNER JOIN ' + tblRozpRez + ' r ON (r.IDObdobi=o.ID) WHERE r.ID=' + cRec.ToString);
iTemp2 := helUtils.getHeliosIntVal(Helios, 0, 'SELECT o.DatumOd_Y FROM ' + tblObd + ' o INNER JOIN ' + tblRozpRez + ' r ON (r.IDObdobi=o.ID) WHERE r.ID=' + cRec.ToString);
if (iTemp2>0) then
podm:= podm + ' AND hvw_ObdobiStavu.DatumOd_Y=' + iTemp2.ToString;
podm := podm + ' AND hvw_ObdobiStavu.DatumOd_Y=' + iTemp2.ToString;
end;
if Helios.Prenos(iTemp, 'hvw_ObdobiStavu.ID', oVar, podm, 'Vyberte období ' + IfThen(iTemp2>0, ' roku ' + iTemp2.ToString, ' (M/R)'), true) then
begin
Helios.ExecSQL('DROP TABLE IF EXISTS #TabObdobiRozpRez' + CRLF + 'CREATE TABLE #TabObdobiRozpRez (IdObd INT)' + CRLF + 'INSERT #TabObdobiRozpRez (IdObd) SELECT ' + VarToStr(oVar));
RozpRezii_PseudoAutomat(Helios, arrID);
Helios.ExecSQL ('DROP TABLE IF EXISTS #TabObdobiRozpRez' + CRLF + 'CREATE TABLE #TabObdobiRozpRez (IdObd INT)' + CRLF + 'INSERT #TabObdobiRozpRez (IdObd) SELECT ' + VarToStr(oVar));
RozpRezii_PseudoAutomat (Helios, arrID);
end;
end;
Helios.ExecSQL('DROP TABLE IF EXISTS #TabObdobiRozpRez');
Helios.ExecSQL ('DROP TABLE IF EXISTS #TabObdobiRozpRez');
end;
33: begin // OOP zadani pohybu
fOOPPohyb:= TformOOPPohyb.Create(nil);
fOOPPohyb := TformOOPPohyb.Create(nil);
try
fOOPPohyb.Helios:= Helios;
fOOPPohyb.jeTest:= jeTest;
fOOPPohyb.Helios := Helios;
fOOPPohyb.jeTest := jeTest;
fOOPPohyb.ShowModal;
finally
fOOPPohyb.Free;
@@ -2932,34 +2965,34 @@ var oVar1, oVar2: OleVariant;
end;
34: begin
iTemp:= StrToInt (VarToStr(Helios.HeliosVlastnik.QueryBrowse.FieldByNameValues('ID'))); // radek vydejky
iTemp2:= StrToInt (VarToStr(Helios.HeliosVlastnik.QueryBrowse.FieldByNameValues('IDZboSklad'))); // idZboSklad
nTemp:= StrToFloat (VarToStr(Helios.HeliosVlastnik.QueryBrowse.FieldByNameValues('Mnozstvi'))); // mnozstvi radku
iTemp := StrToInt (VarToStr(Helios.HeliosVlastnik.QueryBrowse.FieldByNameValues('ID'))); // radek vydejky
iTemp2 := StrToInt (VarToStr(Helios.HeliosVlastnik.QueryBrowse.FieldByNameValues('IDZboSklad'))); // idZboSklad
nTemp := StrToFloat (VarToStr(Helios.HeliosVlastnik.QueryBrowse.FieldByNameValues('Mnozstvi'))); // mnozstvi radku
nTemp4:= helUtils.getHeliosFloatVal (Helios, 0, 'SELECT Mnozstvi FROM ' + tblSS + ' WHERE ID=' + iTemp2.ToString);
nTemp3:= 0;
nTemp4 := helUtils.getHeliosFloatVal (Helios, 0, 'SELECT Mnozstvi FROM ' + tblSS + ' WHERE ID=' + iTemp2.ToString);
nTemp3 := 0;
VytvorTempExtKomPar (Helios, iTemp);
lSQL:= 'DROP TABLE IF EXISTS #TabRadkyProVyber' + CRLF + 'CREATE TABLE #TabRadkyProVyber (IDX INT IDENTITY(1,1) NOT NULL, ID INT NOT NULL)';
Helios.ExecSQL(lSQL);
lSQL := 'DROP TABLE IF EXISTS #TabRadkyProVyber' + CRLF + 'CREATE TABLE #TabRadkyProVyber (IDX INT IDENTITY(1,1) NOT NULL, ID INT NOT NULL)';
Helios.ExecSQL (lSQL);
lSQL:= 'SELECT p.ID, p.Mnozstvi FROM ' + tblPZ + ' p INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad) WHERE p.DruhPohybuZbo=0 AND p.IDZboSklad=' + iTemp2.ToString;
lSQL:= lSQL + ' AND p.ID NOT IN (SELECT ID FROM ' + tblPZe + ' WHERE ISNULL(_Expedice_VazbaPrijemVydejNenabizet, 0)=1)';
lSQL:= lSQL + ' AND EXISTS(SELECT 1 FROM ' + tblDDZ + ' dd INNER JOIN ' + tblDDZe + ' dde ON (dde.ID=dd.ID) WHERE dd.RadaDokladu=d.RadaDokladu AND dd.DruhPohybuZbo=d.DruhPohybuZbo';
lSQL:= lSQL + ' AND ISNULL(dde._Expedice_VazbaPrijemVydejNabizet,0)=1)';
lSQL:= lSQL + ' AND p.ID>=ISNULL( (SELECT ID FROM ' + tblPZe + ' WHERE ISNULL(_Expedice_VazbaPrijemVydejHranice,0)=1), 0)';
lSQL:= lSQL + ' ORDER BY p.DatPorizeni DESC';
lSQL := 'SELECT p.ID, p.Mnozstvi FROM ' + tblPZ + ' p INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad) WHERE p.DruhPohybuZbo=0 AND p.IDZboSklad=' + iTemp2.ToString;
lSQL := lSQL + ' AND p.ID NOT IN (SELECT ID FROM ' + tblPZe + ' WHERE ISNULL(_Expedice_VazbaPrijemVydejNenabizet, 0)=1)';
lSQL := lSQL + ' AND EXISTS(SELECT 1 FROM ' + tblDDZ + ' dd INNER JOIN ' + tblDDZe + ' dde ON (dde.ID=dd.ID) WHERE dd.RadaDokladu=d.RadaDokladu AND dd.DruhPohybuZbo=d.DruhPohybuZbo';
lSQL := lSQL + ' AND ISNULL(dde._Expedice_VazbaPrijemVydejNabizet,0)=1)';
lSQL := lSQL + ' AND p.ID>=ISNULL( (SELECT ID FROM ' + tblPZe + ' WHERE ISNULL(_Expedice_VazbaPrijemVydejHranice,0)=1), 0)';
lSQL := lSQL + ' ORDER BY p.DatPorizeni DESC';
with Helios.OpenSQL(lSQL) do
if (RecordCount>0) then
begin
canCont:= true;
plusJeden:= false;
canCont := true;
plusJeden := false;
First;
while not(EOF) and (canCont) do
begin
iTemp3:= StrToInt (VarToStr(FieldByNameValues('ID')));
nTemp2:= StrToFloat (VarToStr(FieldByNameValues('Mnozstvi')));
nTemp3:= nTemp3 + nTemp2;
iTemp3 := StrToInt (VarToStr(FieldByNameValues('ID')));
nTemp2 := StrToFloat (VarToStr(FieldByNameValues('Mnozstvi')));
nTemp3 := nTemp3 + nTemp2;
if (nTemp3<nTemp4) then
Helios.ExecSQL ('INSERT #TabRadkyProVyber (ID) SELECT ' + iTemp3.ToString)
@@ -2967,7 +3000,7 @@ var oVar1, oVar2: OleVariant;
begin
if (nTemp3-nTemp4<nTemp2) then
Helios.ExecSQL ('INSERT #TabRadkyProVyber (ID) SELECT ' + iTemp3.ToString);
canCont:= false;
canCont := false;
end;
Next;
@@ -2978,13 +3011,35 @@ var oVar1, oVar2: OleVariant;
35: ImportObedy (Helios);
36: begin
fVPrZmenaUkonceni := TformVPrZmenaPlanuUkonceni.Create (nil);
try
fVPrZmenaUkonceni.Helios := Helios;
fVPrZmenaUkonceni.idVPr := cRec;
fVPrZmenaUkonceni.ShowModal;
finally
FreeAndNil (fVPrZmenaUkonceni);
end;
end;
37: begin
fGenKObj := TformGenKoopObj.Create (nil);
try
fGenKObj.typObj := 1;
fGenKObj.Helios := Helios;
fGenKObj.ShowModal;
finally
FreeAndNil (fGenKObj);
end;
end;
end; // case
Helios.Refresh(true);
if (contInfo='NULL') then
Helios.ExecSQL('SET CONTEXT_INFO 0x')
Helios.ExecSQL ('SET CONTEXT_INFO 0x')
else
Helios.ExecSQL('SET CONTEXT_INFO 0x' + contInfo);
Helios.ExecSQL ('SET CONTEXT_INFO 0x' + contInfo);
if not(term) then
if helUtils.HeliosExistsTest(Helios, '#TabExtKom', '') then