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
+107 -75
View File
@@ -68,6 +68,7 @@ const
colVDOproOBR: TNxDBCheckBoxColumn6;
tblcolPoznamkaR: TSmallintField;
tblcolPoznamka2: TStringField;
tblcolVDOproVZO: TSmallintField;
procedure FormShow (Sender: TObject);
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure btnStornoClick (Sender: TObject);
@@ -124,56 +125,59 @@ uses System.StrUtils, System.DateUtils,
var lSQL, stavTxt, role, sTemp, pozn: string;
akce: Byte;
stavIdx: integer;
jenVDO, proOBR, lastRec: boolean;
jenVDO, proOBR, proVZO, lastRec: boolean;
datumObrStr: string;
rNum: integer;
begin
prevRole:= ''; // promenna pro posledni roli v historii (kdo se vyjadril jako posledni)
lastRec:= false;
prevRole := ''; // promenna pro posledni roli v historii (kdo se vyjadril jako posledni)
lastRec := false;
if (idZakazky<=0) then
Exit;
lSQL:= 'SELECT z.CisloZakazky, z.Nazev, z.DruhyNazev, ISNULL(ze._SchvaleniZakazky_Lock,0) FROM ' + tblZak + ' z LEFT JOIN ' + tblZakE;
lSQL:= lSQL + ' ze ON (ze.ID=z.ID) WHERE z.ID=' + idZakazky.ToString;
lSQL := 'SELECT z.CisloZakazky, z.Nazev, z.DruhyNazev, ISNULL(ze._SchvaleniZakazky_Lock,0) FROM ' + tblZak + ' z LEFT JOIN ' + tblZakE;
lSQL := lSQL + ' ze ON (ze.ID=z.ID) WHERE z.ID=' + idZakazky.ToString;
with Helios.OpenSQL(lSQL) do
if (RecordCount=1) then
begin
edtZakazka.Text:= VarToStr(FieldValues(0));
edtZakazkaNazev.Text:= VarToStr(FieldValues(1)) + ' ** ' + VarToStr(FieldValues(2));
edtZakazka.Text := VarToStr(FieldValues(0));
edtZakazkaNazev.Text := VarToStr(FieldValues(1)) + ' ** ' + VarToStr(FieldValues(2));
lSQL:= 'SELECT TOP(1) p.RegCis FROM ' + tblPZ + ' p INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad) WHERE d.DruhPohybuZbo IN (9,6) AND ';
lSQL:= lSQL + 'ISNULL(p.CisloZakazky,d.CisloZakazky)=N' + QuotedStr(VarToStr(FieldValues(0)));
lSQL:= 'SELECT TOP(1) p.RegCis FROM ' + tblPZ + ' p INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad) WHERE d.DruhPohybuZbo IN (9,6) AND '
+ 'ISNULL(p.CisloZakazky,d.CisloZakazky)=N' + QuotedStr(VarToStr(FieldValues(0)));
with Helios.OpenSQL(lSQL) do
if (RecordCount>0) then
edtRegCis.Text:= VarToStr(FieldValues(0));
edtRegCis.Text := VarToStr(FieldByNameValues('RegCis'));
stavTxt:= VarToStr(FieldValues(3));
zamek:= true;
btnOK.Enabled:= false;
btnOK.Enabled:= true;
stavTxt := VarToStr(FieldValues(3));
zamek := true;
btnOK.Enabled := false;
btnOK.Enabled := true;
if (stavTxt='0') then
begin
zamek:= false;
btnOK.Enabled:= true;
zamek := false;
btnOK.Enabled := true;
end;
datumObrStr:= '';
stavTxt:= '';
role:= '';
lblStav.Caption:= stavTxt;
datumObrStr := '';
stavTxt := '';
role := '';
lblStav.Caption := stavTxt;
// grd.DataSource.DataSet.ClearFields;
tbl.EmptyDataSet;
histLoad:= true;
proOBR:= false;
zapisObr:= false;
lSQL:= 'SELECT DatPorizeni, Role, Akce, Poznamka, ID, Autor, ISNULL(JenVDO,0) AS JenVDO, ISNULL(VDOproOBR,0) AS VDOproOBR, DatumOBR, DatumKON FROM ' + tblSchvalZakHist;
lSQL:= lSQL + ' WHERE IDZakazky=' + idZakazky.ToString + ' ORDER BY DatPorizeni';
histLoad := true;
proOBR := false;
proVZO := false;
zapisObr := false;
lSQL := 'SELECT DatPorizeni, Role, Akce, Poznamka, ID, Autor, ISNULL(JenVDO,0) AS JenVDO, ISNULL(VDOproOBR,0) AS VDOproOBR, DatumOBR, DatumKON, ISNULL(VDOproVZO,0) AS VDOproVZO'
+ ' FROM ' + tblSchvalZakHist + ' WHERE IDZakazky=' + idZakazky.ToString + ' ORDER BY DatPorizeni';
with Helios.OpenSQL(lSQL) do
begin
lastRole:= '';
lastRole := '';
First;
rNum:= 1;
rNum := 1;
while not(EOF) do
begin
tbl.Append;
@@ -204,9 +208,15 @@ uses System.StrUtils, System.DateUtils,
sTemp:= VarToStr(FieldByNameValues('VDOproOBR'));
if (role='VDO') and (StrToBool(sTemp)) then
proOBR:= true;
tbl.FieldByName('colVDOproOBR').AsInteger:= IfThenInt(proOBR, 1, 0);
proVZO:= false;
sTemp:= VarToStr(FieldByNameValues('VDOproVZO'));
if (role='VDO') and (StrToBool(sTemp)) then
proVZO:= true;
tbl.FieldByName('colVDOproVZO').AsInteger:= IfThenInt(proVZO, 1, 0);
akce:= StrToInt(VarToStr(FieldByNameValues('Akce')));
case akce of
1: stavIdx:= cbStav.Items.IndexOf('Souhlas');
@@ -254,6 +264,12 @@ uses System.StrUtils, System.DateUtils,
if (proOBR) then
stavTxt:= stavTxt + ' (OBR)';
if (tbl.FieldByName('colVDOproVZO').AsInteger=1) then
if (akce=1) then
stavTxt:= stavTxt + ' (VZO)';
tbl.FieldByName('colStav').AsString:= stavTxt;
tbl.Post;
Inc (rNum);
@@ -414,6 +430,15 @@ uses System.StrUtils, System.DateUtils,
tbl.FieldByName('colStav').AsString:= tbl.FieldByName('colStav').AsString + ' (pro VDO)';// IfThen(edtRole.Text='OBR', ' OBR', ' VDO');
end;
tbl.FieldByName('colVDOproVZO').AsInteger:= 0;
if (cbJenVDO.Caption.Contains('pro VZO')) and (cbJenVDO.Checked) then
begin
tbl.FieldByName('colVDOproVZO').AsInteger:= 1;
tbl.FieldByName('colJenVDO').AsInteger:= 1;
tbl.FieldByName('colStav').AsString:= tbl.FieldByName('colStav').AsString + ' (pro VZO)';
end;
if ((edtRole.Text='OBR') or (edtRole.Text='VDO')) and (cbZmenaDatumKonZakazka.Checked) then
tbl.FieldByName('colDatumObr').AsDateTime:= edtDatObr.DateTime;
@@ -458,10 +483,10 @@ uses System.StrUtils, System.DateUtils,
lSQL:= lSQL + 'JenVDO';
if (edtRole.Text='OBR') then
lSQL:= lSQL + ', DatumOBR';
lSQL:= lSQL + IfThen(not lSQL.Trim.EndsWith(','), ', ', '') + 'DatumOBR';
if (jeVzorek) and (VdoProVzo) then
lSQL:= lSQL + ', VDOProVZO';
lSQL:= lSQL + IfThen(not lSQL.Trim.EndsWith(','), ', ', '') + 'VDOProVZO';
@@ -655,6 +680,8 @@ uses System.StrUtils, System.DateUtils,
procedure TformSchvaleniZak.btnOKClick (Sender: TObject);
var i, x: integer;
begin
VdoProVzo:= (currRole='VDO') and (cbJenVDO.Checked) and (cbJenVDO.Caption.Contains('VZO',false));
if (grd.RowCount>0) and (edtRole.Text<>'') then
begin
for i:=0 to grd.RowCount-1 do
@@ -738,94 +765,94 @@ uses System.StrUtils, System.DateUtils,
idZakazky:= 0;
VdoProVzo:= false;
cbZmenaDatumKonZakazka.Visible:= false;
cbZmenaDatumKonZakazka.Visible := false;
jeTestDb:= false;
jeTestDb := false;
if (helUtils.SQLObjectExists(Helios, Helios.SystemDB + '.dbo.TabDBHelios')) then
jeTestDb:= helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + Helios.SystemDB + '.dbo.TabDBHelios WHERE SysJmeno=N' + Helios.CurrentDB.QuotedString + ' AND TypDB=4');
self.Caption:= ' Schválení zakázky' + IfThen(jeTestDB, ' (TEST DB)', '');
jeTestDb := helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + Helios.SystemDB + '.dbo.TabDBHelios WHERE SysJmeno=N' + Helios.CurrentDB.QuotedString + ' AND TypDB=4');
self.Caption := ' Schválení zakázky' + IfThen(jeTestDB, ' (TEST DB)', '');
szKmeneSub:= '';
szKmeneSub := '';
// zdroj ID jsou vyrobni prikazy
if (id>0) and (Helios.BrowseID=bidVyrPrik) then
idZakazky:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDZakazka FROM ' + tblVPr + ' WHERE ID=' + id.ToString);
idZakazky := helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDZakazka FROM ' + tblVPr + ' WHERE ID=' + id.ToString);
if (Length(arrID)>0) and (Helios.BrowseID=bidVyrPrik) then
begin
sTemp:= helUtils.getHeliosStrVal (Helios, '', 'SELECT IDZakazka FROM ' + tblVPr + ' WHERE ID IN (' + helUtils.ArrayToString (arrID, ',', true) + ')');
SetLength(arrID, 0);
sTemp := helUtils.getHeliosStrVal (Helios, '', 'SELECT IDZakazka FROM ' + tblVPr + ' WHERE ID IN (' + helUtils.ArrayToString (arrID, ',', true) + ')');
SetLength (arrID, 0);
if (sTemp<>'') then
arrID:= helUtils.StrToArrayInt (sTemp);
arrID := helUtils.StrToArrayInt (sTemp);
end;
// zdroj ID je vyrobni plan
if (id>0) and (Helios.BrowseID=bidVyrPlan) then
idZakazky:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDZakazka FROM ' + tblPlan + ' WHERE ID=' + id.ToString);
idZakazky := helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDZakazka FROM ' + tblPlan + ' WHERE ID=' + id.ToString);
if (Length(arrID)>0) and (Helios.BrowseID=bidVyrPlan) then
begin
sTemp:= helUtils.getHeliosStrVal (Helios, '', 'SELECT IDZakazka FROM ' + tblPlan + ' WHERE ID IN (' + helUtils.ArrayToString (arrID, ',', true) + ')');
SetLength(arrID, 0);
sTemp := helUtils.getHeliosStrVal (Helios, '', 'SELECT IDZakazka FROM ' + tblPlan + ' WHERE ID IN (' + helUtils.ArrayToString (arrID, ',', true) + ')');
SetLength (arrID, 0);
if (sTemp<>'') then
arrID:= helUtils.StrToArrayInt (sTemp);
arrID := helUtils.StrToArrayInt (sTemp);
end;
// zdroj ID jsou zakazky
if (id>0) and (Helios.BrowseID=bidZak) then
idZakazky:= id;
idZakazky := id;
cisZakazky:= '';
cisZakazky := '';
if (idZakazky>0) then
cisZakazky:= helUtils.getHeliosStrVal(Helios, '', 'SELECT CisloZakazky FROM ' + tblZak + ' WHERE ID=' + idZakazky.ToString);
jeVzorek:= helUtils.IfThenBool (LeftStr(cisZakazky,2).ToUpper='VZ', true, false);
cisZakazky := helUtils.getHeliosStrVal(Helios, '', 'SELECT CisloZakazky FROM ' + tblZak + ' WHERE ID=' + idZakazky.ToString);
jeVzorek := helUtils.IfThenBool (LeftStr(cisZakazky,2).ToUpper='VZ', true, false);
lSQL:= 'IF NOT EXISTS (SELECT 1 FROM ' + tblSchvalZak + ' WHERE IDZakazka=' + idZakazky.ToString + ') INSERT ' + tblSchvalZak;
lSQL:= lSQL + ' (IDZakazka' + IfThen(jeVzorek, ', TypZakazky', '') + ') SELECT ' + idZakazky.ToString + IfThen (jeVzorek, ', 13', '');
lSQL := 'IF NOT EXISTS (SELECT 1 FROM ' + tblSchvalZak + ' WHERE IDZakazka=' + idZakazky.ToString + ') INSERT ' + tblSchvalZak
+ ' (IDZakazka' + IfThen(jeVzorek, ', TypZakazky', '') + ') SELECT ' + idZakazky.ToString + IfThen (jeVzorek, ', 13', '');
Helios.ExecSQL (lSQL);
lSQL:= 'SELECT TOP(1) p.SkupZbo FROM ' + tblPZ + ' p INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad) INNER JOIN ' + tblZak + ' z ON (z.CisloZakazky=';
lSQL:= lSQL + 'ISNULL(p.CisloZakazky,d.CisloZakazky)) WHERE d.DruhPohybuZbo IN (9,6) AND z.ID=' + idZakazky.ToString;
szKmene:= helUtils.getHeliosStrVal(Helios, '', lSQL);
edtRegCis.EditLabel.Caption:= 'Reg.èíslo' + IfThen(szKmene<>'', ' (SK ' + szKmene + ')', '') + ':';
jeObrobek:= (szKmene='VOB');
lSQL := 'SELECT TOP(1) p.SkupZbo FROM ' + tblPZ + ' p INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad) INNER JOIN ' + tblZak + ' z ON (z.CisloZakazky='
+ 'ISNULL(p.CisloZakazky,d.CisloZakazky)) WHERE d.DruhPohybuZbo IN (9,6) AND z.ID=' + idZakazky.ToString;
szKmene := helUtils.getHeliosStrVal(Helios, '', lSQL);
edtRegCis.EditLabel.Caption := 'Reg.èíslo' + IfThen(szKmene<>'', ' (SK ' + szKmene + ')', '') + ':';
jeObrobek := (szKmene='VOB');
idPrikazFin:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TOP(1) ID FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NULL AND IDZakazka=' + idZakazky.ToString);
lSQL:= 'SELECT TOP(1) p.ID FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.IDPrikazVyssi=' + idPrikazFin.ToString + ' AND p.IDZakazka=' + idZakazky.ToString;
lSQL:= lSQL + ' AND k.SkupZbo NOT IN (N''VDO'')';
idPrikazSub:= helUtils.getHeliosIntVal(Helios, 0, lSQL);
szKmeneSub:= helUtils.getHeliosStrVal(Helios, '', 'SELECT k.SkupZbo FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID=' + idPrikazSub.ToString);
idPrikazFin := helUtils.getHeliosIntVal(Helios, 0, 'SELECT TOP(1) ID FROM ' + tblPrikaz + ' WHERE IDPrikazVyssi IS NULL AND IDZakazka=' + idZakazky.ToString);
lSQL := 'SELECT TOP(1) p.ID FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.IDPrikazVyssi=' + idPrikazFin.ToString + ' AND p.IDZakazka=' + idZakazky.ToString;
lSQL := lSQL + ' AND k.SkupZbo NOT IN (N''VDO'')';
idPrikazSub := helUtils.getHeliosIntVal(Helios, 0, lSQL);
szKmeneSub := helUtils.getHeliosStrVal(Helios, '', 'SELECT k.SkupZbo FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID=' + idPrikazSub.ToString);
currRole:= '';
currRole := '';
if (helUtils.HeliosObjectExists(Helios,helUtils.VratTableName(tblSchvalZakRole))) then
begin
with Helios.OpenSQL('SELECT TOP(1) Role FROM ' + tblSchvalZakRole + ' WHERE Login=SUSER_SNAME() ORDER BY Priorita') do
with Helios.OpenSQL ('SELECT TOP(1) Role FROM ' + tblSchvalZakRole + ' WHERE Login=SUSER_SNAME() ORDER BY Priorita') do
if (RecordCount=1) then
edtRole.Text:= VarToStr(FieldValues(0));
edtRole.Text := VarToStr(FieldValues(0));
currRole:= UpperCase(edtRole.Text);
currRole := UpperCase(edtRole.Text);
if (szKmene<>'VOB') and (currRole='OBR') then
edtRole.Text:= '';
edtRole.Text := '';
edtPoznamka.SetFocus;
end;
cbJenVDO.Enabled:= false;
cbJenVDO.Enabled := false;
if (currRole='REP') or (currRole='VZO') then
cbJenVDO.Enabled:= true;
cbJenVDO.Enabled := true;
if (currRole='VDO') then
begin
cbZmenaDatumKonZakazka.Visible:= true;
cbJenVDO.Enabled:= true;
cbJenVDO.Caption:= ' pro OBR';
lblDatObr.Caption:= 'Datum ' + currRole;
lblDatObr.Visible:= true;
cbZmenaDatumKonZakazka.Visible := true;
cbJenVDO.Enabled := true;
cbJenVDO.Caption := ' pro OBR';
lblDatObr.Caption := 'Datum ' + currRole;
lblDatObr.Visible := true;
lSQL:= 'SELECT 1 FROM ' + tblVPr + ' WHERE IDPrikazVyssi IS NULL AND IDZakazka=' + idZakazky.ToString;
if (helUtils.sqlExistsTestGeneral(Helios, lSQL)) then
@@ -881,7 +908,7 @@ uses System.StrUtils, System.DateUtils,
lSQL:= 'IF OBJECT_ID(''dbo.TabZakazka_EXT'', N''U'') IS NOT NULL' + CRLF + 'IF NOT EXISTS(SELECT ID FROM ' + tblZakE + ' WHERE ID=' + idZakazky.ToString + ')';
lSQL:= lSQL + CRLF + 'INSERT ' + tblZakE + ' (ID) VALUES (' + idZakazky.ToString + ')' + CRLF + 'UPDATE ' + tblZakE + ' SET _SchvaleniZakazky_Lock=';
lSQL:= lSQL + uzivId.ToString + ' WHERE ID=' + idZakazky.ToString;
Helios.ExecSQL(lSQL);
Helios.ExecSQL (lSQL);
lSQL:= 'SELECT 1 FROM ' + tblZak + ' z INNER JOIN ' + tblZakE + ' ze ON (ze.ID=z.ID) WHERE z.ID=' + idZakazky.ToString
+ ' AND ISNULL(ze._SchvaleniZakazky_Lock,0)<>' + uzivId.ToString;
@@ -911,16 +938,21 @@ uses System.StrUtils, System.DateUtils,
if (currRole='VDO') and not(jeObrobek) and (prevRole='VZO') and (jeVzorek) then
begin
cbJenVDO.Caption:= ' pro VZO';
cbJenVDO.Enabled:= false;
cbJenVDO.Enabled:= true;
cbJenVDO.Checked;
VdoProVzo:= true;
// VdoProVzo:= true;
end;
if (currRole='VDO') and (jeVzorek) and (jeObrobek) and (prevRole='VZO') then
begin
cbJenVDO.Checked:= true;
cbJenVDO.Checked := true;
end;
if (currRole='VDO') and not(zamek) then
if (szKmene='VOD') then // jenProVDO nezobrazuj u skupiny VOD
cbJenVDO.Enabled := false;
infoTxt:= '';