1026 lines
42 KiB
ObjectPascal
1026 lines
42 KiB
ObjectPascal
unit frmUkonceniPalety;
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
|
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Mask, Vcl.Buttons,
|
|
IdHTTP, IdSSLOpenSSL, REST.Json,
|
|
ddPlugin_TLB, JsonDataObjects, ColorButton, uPing;
|
|
|
|
{$I iConsts.inc}
|
|
|
|
type
|
|
TformUkonceniPalety = class(TForm)
|
|
btnZapisPaletyATisk: TButton;
|
|
Panel1: TPanel;
|
|
Panel2: TPanel;
|
|
Panel3: TPanel;
|
|
Panel4: TPanel;
|
|
edtNazev1: TLabeledEdit;
|
|
edtPaleta: TLabeledEdit;
|
|
edtSarze: TLabeledEdit;
|
|
edtSZ: TLabeledEdit;
|
|
edtRegCis: TLabeledEdit;
|
|
edtStroj: TLabeledEdit;
|
|
edtDatVyroby: TLabeledEdit;
|
|
edtSmena: TLabeledEdit;
|
|
edtKs: TLabeledEdit;
|
|
edtKA: TLabeledEdit;
|
|
GroupBox1: TGroupBox;
|
|
edtPlneKA: TLabeledEdit;
|
|
edtKsVPoslednimKA: TLabeledEdit;
|
|
pnlTiskKopie1: TPanel;
|
|
rbTiskKopie1: TRadioButton;
|
|
pnlTiskKopie2: TPanel;
|
|
rbTiskKopie2: TRadioButton;
|
|
GridPanel1: TGridPanel;
|
|
Label1: TLabel;
|
|
LabeledEdit2: TLabeledEdit;
|
|
edtPokrac: TLabeledEdit;
|
|
pnlPokracujAno: TPanel;
|
|
rbPokracujAno: TRadioButton;
|
|
pnlPokracujNe: TPanel;
|
|
rbPokracujNe: TRadioButton;
|
|
Label2: TLabel;
|
|
Label3: TLabel;
|
|
GridPanel2: TGridPanel;
|
|
pnlTiskarna: TPanel;
|
|
pnlObrazovka: TPanel;
|
|
btnTiskarna: TColorButton;
|
|
btnObrazovka: TColorButton;
|
|
procedure FormShow(Sender: TObject);
|
|
procedure btnObrazovkaClick(Sender: TObject);
|
|
procedure btnTiskarnaClick(Sender: TObject);
|
|
procedure rbTiskKopie1Click(Sender: TObject);
|
|
procedure rbTiskKopie2Click(Sender: TObject);
|
|
procedure rbPokracujAnoClick(Sender: TObject);
|
|
procedure rbPokracujNeClick(Sender: TObject);
|
|
procedure btnZapisPaletyATiskClick(Sender: TObject);
|
|
procedure edtKsExit(Sender: TObject);
|
|
procedure edtKAExit(Sender: TObject);
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
private
|
|
function NactiPocetKAZEvidRozpOperR: extended;
|
|
function GenerujJSON (idMzdy: integer): TJSONObject;
|
|
procedure NactiParemetry;
|
|
procedure BarvyBtnDleParam;
|
|
public
|
|
Helios: IHelios;
|
|
idVPr: integer;
|
|
idVyrCisPrikaz: integer;
|
|
idStroj: integer;
|
|
paleta, sarze, denSmena: string;
|
|
idEvEOp: integer;
|
|
[Default(false)]
|
|
prerusit: boolean;
|
|
end;
|
|
|
|
var
|
|
formUkonceniPalety: TformUkonceniPalety;
|
|
tiskNa: byte;
|
|
idKmen, idPalety, idFormKA, idFormPL, idFormPS: integer;
|
|
mjEvid: string;
|
|
jeFinal, jePolotovar: boolean;
|
|
pocKA, pocKS, ksVKA: Extended;
|
|
prepKA2ks, prepKA2pal: Extended;
|
|
|
|
implementation
|
|
uses DateUtils, Math, StrUtils,
|
|
datMod, helUtils, helTabsBIDs,
|
|
frmSarzeVydej;
|
|
|
|
{$R *.dfm}
|
|
|
|
|
|
|
|
function TformUkonceniPalety.GenerujJSON (idMzdy: Integer): TJsonObject;
|
|
var lSQL, jsonOut: string;
|
|
idPrikaz, idDoklad, idPZ: integer;
|
|
mn: Extended;
|
|
oMain, oPrikaz, oVydejka, oPrijemka, oPolozka, oVyrCislo: TJsonObject;
|
|
aVydejky, aPrijemky, aPolozky, aVyrCisla: TJsonArray;
|
|
begin
|
|
oMain:= TJsonObject.Create;
|
|
try
|
|
if (idMzdy>0) then
|
|
begin
|
|
// prikaz
|
|
oPrikaz:= oMain.O['prikaz'];
|
|
oPrikaz.S['akce']:= 'stop';
|
|
|
|
idPrikaz:= 0;
|
|
mn:= 0;
|
|
lSQL:= 'SELECT IDPrikaz, kusy_odv FROM ' + tblPMZ + ' WHERE ID=' + idMzdy.ToString;
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
idPrikaz:= VarToStr(FieldByNameValues('IDPrikaz')).ToInteger;
|
|
mn:= VarToStr(FieldByNameValues('kusy_odv')).ToExtended;
|
|
end;
|
|
|
|
lSQL:= 'SELECT p.ID, p.Rada, p.Prikaz, ISNULL(zm.Rada,N'''') AS RadaZM, ISNULL(zm.Kod,N'''') AS Kod, p.IDTabKmen, k.CisloZbozi, k.Nazev1'
|
|
+ ', ISNULL(k.MJEvidence,N'''') AS MJ FROM ' + tblPrikaz + ' p LEFT JOIN ' + tblZakazModif + ' zm ON (zm.ID=p.IDZakazModif) INNER JOIN '
|
|
+ tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID=' + idPrikaz.ToString;
|
|
with Helios.OpenSQL (lSQL) do
|
|
begin
|
|
oPrikaz.I['id']:= VarToStr(FieldByNameValues('ID')).ToInteger;
|
|
oPrikaz.S['rada']:= VarToStr(FieldByNameValues('Rada'));
|
|
oPrikaz.I['prikaz']:= VarToStr(FieldByNameValues('Prikaz')).ToInteger;
|
|
oPrikaz.I['id_dilce']:= VarToStr(FieldByNameValues('IDTabKmen')).ToInteger;
|
|
oPrikaz.S['cislo_zbozi']:= VarToStr(FieldByNameValues('CisloZbozi'));
|
|
oPrikaz.S['nazev']:= VarToStr(FieldByNameValues('Nazev1'));
|
|
oPrikaz.S['mj']:= VarToStr(FieldByNameValues('MJ'));
|
|
oPrikaz.F['mnozstvi']:= mn;
|
|
oPrikaz.S['modif_rada']:= VarToStr(FieldByNameValues('RadaZM'));
|
|
oPrikaz.S['modif_kod']:= VarToStr(FieldByNameValues('Kod'));
|
|
oPrikaz.Values['caszahajeni']:= null;
|
|
oPrikaz.D['casukonceni']:= Now;
|
|
end;
|
|
|
|
// vydejka
|
|
if (helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + tblPMZGenPZ + ' WHERE TypGen=0 AND IDPohybu IS NOT NULL AND IDMzdy=' + idMzdy.ToString)) then
|
|
begin
|
|
lSQL:= 'SELECT DISTINCT(IDDoklad) AS IDDoklad FROM ' + tblPZ + ' WHERE ID IN (SELECT IDPohybu FROM ' + tblPMZGenPZ + ' WHERE TypGen=0 AND IDPohybu IS NOT NULL AND IDMzdy='
|
|
+ idMzdy.ToString + ') GROUP BY IDDoklad';
|
|
with Helios.OpenSQL (lSQL) do
|
|
begin
|
|
aVydejky:= oMain.A['vydejky'];
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
oVydejka:= aVydejky.AddObject;
|
|
|
|
idDoklad:= VarToStr(FieldByNameValues('IDDoklad')).ToInteger;
|
|
oVydejka.I['id']:= idDoklad;
|
|
lSQL:= 'SELECT IDSklad, RadaDokladu, PoradoveCislo, DatPorizeni FROM ' + tblDZ + ' WHERE ID=' + idDoklad.ToString;
|
|
with Helios.OpenSQL (lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
oVydejka.S['rada_dokladu']:= VarToStr(FieldByNameValues('RadaDokladu'));
|
|
oVydejka.I['poradove_cislo']:= VarToStr(FieldByNameValues('PoradoveCislo')).ToInteger;
|
|
if not VarIsNull(FieldByNameValues('DatPorizeni')) then
|
|
oVydejka.D['dat_porizeni']:= StrToDateTime (VarToStr(FieldByNameValues('DatPorizeni')))
|
|
else
|
|
oVydejka.Values['dat_porizeni']:= Null;
|
|
oVydejka.S['sklad']:= VarToStr(FieldByNameValues('IDSklad'));
|
|
end;
|
|
|
|
lSQL:= 'SELECT p.ID, p.SkupZbo, p.RegCis, p.Nazev1, p.Mnozstvi, p.MJ, p.Mnozstvi*p.PrepMnozstvi AS MnozPrep, k.MJEvidence FROM ' + tblPZ + 'p INNER JOIN ' + tblSS
|
|
+ ' s ON (s.ID=p.IDZboSklad) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) WHERE p.IDDoklad=' + idDoklad.ToString
|
|
+ ' AND p.ID IN (SELECT IDPohybu FROM ' + tblPMZGenPZ + ' WHERE TypGen=0 AND IDPohybu IS NOT NULL AND IDMzdy=' + idMzdy.ToString + ')';
|
|
with Helios.OpenSQL (lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
aPolozky:= oVydejka.A['polozky'];
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
oPolozka:= aPolozky.AddObject;
|
|
oPolozka.S['skup_zbo']:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
oPolozka.S['reg_cis']:= VarToStr(FieldByNameValues('RegCis'));
|
|
oPolozka.S['nazev1']:= VarToStr(FieldByNameValues('Nazev1'));
|
|
oPolozka.F['mnozstvi']:= VarToStr(FieldByNameValues('Mnozstvi')).ToDouble;
|
|
if not VarIsNull(FieldByNameValues('MJ')) then
|
|
oPolozka.S['mj']:= VarToStr(FieldByNameValues('MJ'))
|
|
else
|
|
oPolozka.Values['mj']:= Null;
|
|
oPolozka.F['mnozstvi_prepoctene']:= VarToStr(FieldByNameValues('MnozPrep')).ToDouble;
|
|
if not VarIsNull(FieldByNameValues('MJEvidence')) then
|
|
oPolozka.S['mjevid']:= VarToStr(FieldByNameValues('MJEvidence'))
|
|
else
|
|
oPolozka.Values['mjevid']:= Null;
|
|
|
|
idPZ:= VarToStr(FieldByNameValues('ID')).ToInteger;
|
|
lSQL:= 'SELECT vcp.Nazev, vcs.Nazev1, vcs.Nazev2, vcp.Mnozstvi, vcp.DatExpirace FROM ' + tblVyrCP + ' vcp INNER JOIN ' + tblVyrCS
|
|
+ ' vcs ON (vcs.ID=vcp.IDVyrCis) WHERE vcp.IDPolozkaDokladu=' + idPZ.ToString;
|
|
with Helios.OpenSQL (lSQL) do
|
|
begin
|
|
aVyrCisla:= oPolozka.A['vyrobni_cisla'];
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
oVyrCislo:= aVyrCisla.AddObject;
|
|
if not VarIsNull(FieldByNameValues('Nazev1')) then
|
|
oVyrCislo.S['paletovy_list']:= VarToStr(FieldByNameValues('Nazev1'))
|
|
else
|
|
oVyrCislo.Values['paletovy_list']:= Null;
|
|
if not VarIsNull(FieldByNameValues('Nazev')) then
|
|
oVyrCislo.S['sarze']:= VarToStr(FieldByNameValues('Nazev')) // vcs.Nazev2
|
|
else
|
|
oVyrCislo.Values['sarze']:= Null;
|
|
oVyrCislo.F['mnozstvi']:= VarToStr(FieldByNameValues('Mnozstvi')).ToDouble;
|
|
if not VarIsNull(FieldByNameValues('DatExpirace')) then
|
|
oVydejka.D['dat_expirace']:= FieldByNameValues('DatExpirace')
|
|
else
|
|
oVydejka.Values['dat_expirace']:= Null;
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
// prijemka
|
|
if (helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + tblPMZGenPZ + ' WHERE TypGen IN (2,3) AND IDPohybu IS NOT NULL AND IDMzdy=' + idMzdy.ToString)) then
|
|
begin
|
|
lSQL:= 'SELECT DISTINCT(IDDoklad) AS IDDoklad FROM ' + tblPZ + ' WHERE ID IN (SELECT IDPohybu FROM ' + tblPMZGenPZ + ' WHERE TypGen IN (2,3) AND IDPohybu IS NOT NULL AND IDMzdy='
|
|
+ idMzdy.ToString + ') GROUP BY IDDoklad';
|
|
with Helios.OpenSQL (lSQL) do
|
|
begin
|
|
aPrijemky:= oMain.A['prijemky'];
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
oPrijemka:= aPrijemky.AddObject;
|
|
|
|
idDoklad:= VarToStr(FieldByNameValues('IDDoklad')).ToInteger;
|
|
oPrijemka.I['id']:= idDoklad;
|
|
lSQL:= 'SELECT IDSklad, RadaDokladu, PoradoveCislo, DatPorizeni FROM ' + tblDZ + ' WHERE ID=' + idDoklad.ToString;
|
|
with Helios.OpenSQL (lSQL) do
|
|
begin
|
|
oPrijemka.S['rada_dokladu']:= VarToStr(FieldByNameValues('RadaDokladu'));
|
|
oPrijemka.I['poradove_cislo']:= VarToStr(FieldByNameValues('PoradoveCislo')).ToInteger;
|
|
oPrijemka.S['dat_porizeni']:= VarToStr(FieldByNameValues('DatPorizeni'));
|
|
oPrijemka.S['sklad']:= VarToStr(FieldByNameValues('IDSklad'));
|
|
end;
|
|
|
|
lSQL:= 'SELECT p.ID, p.SkupZbo, p.RegCis, p.Nazev1, p.Mnozstvi, p.MJ, p.Mnozstvi*p.PrepMnozstvi AS MnozPrep, k.MJEvidence FROM ' + tblPZ + 'p INNER JOIN ' + tblSS
|
|
+ ' s ON (s.ID=p.IDZboSklad) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) WHERE p.IDDoklad=' + idDoklad.ToString
|
|
+ ' AND p.ID IN (SELECT IDPohybu FROM ' + tblPMZGenPZ + ' WHERE TypGen IN (2,3) AND IDPohybu IS NOT NULL AND IDMzdy=' + idMzdy.ToString + ')';
|
|
with Helios.OpenSQL (lSQL) do
|
|
begin
|
|
aPolozky:= oPrijemka.A['polozky'];
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
oPolozka:= aPolozky.AddObject;
|
|
oPolozka.S['skup_zbo']:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
oPolozka.S['reg_cis']:= VarToStr(FieldByNameValues('RegCis'));
|
|
oPolozka.S['nazev1']:= VarToStr(FieldByNameValues('Nazev1'));
|
|
oPolozka.F['mnozstvi']:= VarToStr(FieldByNameValues('Mnozstvi')).ToDouble;
|
|
oPolozka.S['mj']:= VarToStr(FieldByNameValues('MJ'));
|
|
oPolozka.F['mnozstvi_prepoctene']:= VarToStr(FieldByNameValues('MnozPrep')).ToDouble;
|
|
oPolozka.S['mjevid']:= VarToStr(FieldByNameValues('MJEvidence'));
|
|
|
|
idPZ:= VarToStr(FieldByNameValues('ID')).ToInteger;
|
|
lSQL:= 'SELECT vcp.Nazev, vcs.Nazev1, vcs.Nazev2, vcp.Mnozstvi, vcp.DatExpirace FROM ' + tblVyrCP + ' vcp INNER JOIN ' + tblVyrCS
|
|
+ ' vcs ON (vcs.ID=vcp.IDVyrCis) WHERE vcp.IDPolozkaDokladu=' + idPZ.ToString;
|
|
with Helios.OpenSQL (lSQL) do
|
|
begin
|
|
aVyrCisla:= oPolozka.A['vyrobni_cisla'];
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
oVyrCislo:= aVyrCisla.AddObject;
|
|
oVyrCislo.S['paletovy_list']:= VarToStr(FieldByNameValues('Nazev1'));
|
|
oVyrCislo.S['sarze']:= VarToStr(FieldByNameValues('Nazev')); // vcs.Nazev2
|
|
oVyrCislo.F['mnozstvi']:= VarToStr(FieldByNameValues('Mnozstvi')).ToDouble;
|
|
oVyrCislo.S['dat_expirace']:= VarToStr(FieldByNameValues('DatExpirace'));
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
Next;
|
|
end;
|
|
end;
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
jsonOut:= oMain.ToJSON(false);
|
|
finally
|
|
{
|
|
if (oPolozka<>nil) then
|
|
FreeAndNil (oPolozka);
|
|
if (oPrijemka<>nil) then
|
|
FreeAndNil (oPrijemka);
|
|
if (oVydejka<>nil) then
|
|
FreeAndNil (oVydejka);
|
|
if (aPrijemky<>nil) then
|
|
FreeAndNil (aPrijemky);
|
|
if (aVydejky<>nil) then
|
|
FreeAndNil (aVydejky);
|
|
}
|
|
end;
|
|
|
|
oMain:= TJsonObject.Create;
|
|
oMain.FromUtf8JSON(jsonOut);
|
|
result:= oMain;
|
|
end;
|
|
|
|
|
|
|
|
|
|
function TformUkonceniPalety.NactiPocetKAZEvidRozpOperR: Extended;
|
|
var lSQL: string;
|
|
begin
|
|
result:= 0;
|
|
if (idEvEOp>0) then
|
|
begin
|
|
lSQL:= 'SELECT TOP(1) vc.Mnozstvi-vc.Odvedeno-vc.Zmetky AS Zbytek FROM ' + tblRozpracOperR + ' eor INNER JOIN ' + tblRozpracOper + ' eo ON (eo.ID=eor.IDEvidRozpracOper) LEFT JOIN ';
|
|
lSQL:= lSQL + tblPrikazVC + ' vc ON (vc.ID=eor.IDVyrCis) WHERE eor.IDPrikaz=' + idVPr.ToString + ' AND eo.ID=' + idEvEOp.ToString;
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
result:= VarToStr(FieldByNameValues('Zbytek')).ToExtended;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformUkonceniPalety.NactiParemetry;
|
|
var lSQL: string;
|
|
begin
|
|
idKmen:= 0;
|
|
mjEvid:= '';
|
|
jeFinal:= false;
|
|
jePolotovar:= false;
|
|
|
|
if (idVPr>0) then
|
|
begin
|
|
with Helios.OpenSQL('SELECT k.SkupZbo, k.RegCis, k.Nazev1, vp.IDTabKmen, k.MJEvidence FROM ' + tblVPr + ' vp INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IDTabKmen) WHERE vp.ID=' + idVPr.ToString) do
|
|
begin
|
|
idKmen:= VarToStr(FieldByNameValues('IDTabKmen')).ToInteger;
|
|
mjEvid:= VarToStr(FieldByNameValues('MJEvidence'));
|
|
edtSZ.Text:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
edtRegCis.Text:= VarToStr(FieldByNameValues('RegCis'));
|
|
edtNazev1.Text:= VarToStr(FieldByNameValues('Nazev1'));
|
|
|
|
jeFinal:= helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + tblParKZ + ' WHERE IDKmenZbozi=' + idKmen.ToString + ' AND TypDilce=0');
|
|
jePolotovar:= helUtils.sqlExistsTestGeneral (Helios, 'SELECT 1 FROM ' + tblParKZ + ' WHERE IDKmenZbozi=' + idKmen.ToString + ' AND TypDilce=1');
|
|
end;
|
|
|
|
pocKA:= NactiPocetKAZEvidRozpOperR;
|
|
edtKA.Text:= pocKA.ToString.Replace('.', ',');
|
|
|
|
prepKA2ks:= 0;
|
|
prepKA2pal:= 0;
|
|
|
|
if (mjEvid.ToUpper='KA') then
|
|
begin
|
|
ksVKA:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT PocetOdvozene FROM ' + tblMJZbo + ' WHERE KodMJ1=N''KA'' AND KodMJ2=N''Ks'' AND IDKmenZbozi=' + idKmen.ToString);
|
|
prepKA2ks:= ksVKA;
|
|
edtKs.Text:= (pocKA * ksVKA).ToString.Replace('.', ',');
|
|
|
|
prepKA2pal:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT PocetHlavni FROM ' + tblMJZbo + ' WHERE KodMJ1=N''KA'' AND KodMJ2=N''pal'' AND IDKmenZbozi=' + idKmen.ToString);
|
|
end;
|
|
|
|
end;
|
|
|
|
idPalety:= 0;
|
|
if (paleta<>'') and (sarze<>'') then
|
|
idPalety:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TOP(1) ID FROM ' + tblPalety + ' WHERE CisloPalety=N' + paleta.QuotedString + ' AND Sarze=N' + sarze.QuotedString);
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformUkonceniPalety.BarvyBtnDleParam;
|
|
begin
|
|
if (rbTiskKopie1.Checked) then
|
|
begin
|
|
pnlTiskKopie1.Color:= clMoneyGreen;
|
|
rbTiskKopie1.Color:= clMoneyGreen;
|
|
end
|
|
else
|
|
begin
|
|
pnlTiskKopie1.Color:= clBtnFace;
|
|
rbTiskKopie1.Color:= clBtnFace;
|
|
end;
|
|
if (rbTiskKopie2.Checked) then
|
|
begin
|
|
pnlTiskKopie2.Color:= $005B5BFF;
|
|
rbTiskKopie2.Color:= $005B5BFF;
|
|
// pnlTiskKopie2.Color:= clMoneyGreen;
|
|
// rbTiskKopie2.Color:= clMoneyGreen;
|
|
end
|
|
else
|
|
begin
|
|
pnlTiskKopie2.Color:= clBtnFace;
|
|
rbTiskKopie2.Color:= clBtnFace;
|
|
end;
|
|
|
|
if (rbPokracujAno.Checked) then
|
|
begin
|
|
edtPokrac.Text:= '1';
|
|
pnlPokracujAno.Color:= clMoneyGreen;
|
|
rbPokracujAno.Color:= clMoneyGreen;
|
|
end
|
|
else
|
|
begin
|
|
pnlPokracujAno.Color:= clBtnFace;
|
|
rbPokracujAno.Color:= clBtnFace;
|
|
end;
|
|
if (rbPokracujNe.Checked) then
|
|
begin
|
|
edtPokrac.Text:= '2';
|
|
pnlPokracujNe.Color:= $005B5BFF;
|
|
rbPokracujNe.Color:= $005B5BFF;
|
|
// pnlPokracujNe.Color:= clMoneyGreen;
|
|
// rbPokracujNe.Color:= clMoneyGreen;
|
|
end
|
|
else
|
|
begin
|
|
pnlPokracujNe.Color:= clBtnFace;
|
|
rbPokracujNe.Color:= clBtnFace;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformUkonceniPalety.rbPokracujAnoClick (Sender: TObject);
|
|
begin
|
|
if (rbPokracujAno.Checked) then
|
|
rbPokracujNe.Checked:= false;
|
|
BarvyBtnDleParam;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformUkonceniPalety.rbPokracujNeClick (Sender: TObject);
|
|
begin
|
|
if (rbPokracujNe.Checked) then
|
|
rbPokracujAno.Checked:= false;
|
|
BarvyBtnDleParam;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformUkonceniPalety.rbTiskKopie1Click (Sender: TObject);
|
|
begin
|
|
if (rbTiskKopie1.Checked) then
|
|
rbTiskKopie2.Checked:= false;
|
|
BarvyBtnDleParam;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformUkonceniPalety.rbTiskKopie2Click (Sender: TObject);
|
|
begin
|
|
if (rbTiskKopie2.Checked) then
|
|
rbTiskKopie1.Checked:= false;
|
|
BarvyBtnDleParam;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TformUkonceniPalety.btnObrazovkaClick (Sender: TObject);
|
|
begin
|
|
btnObrazovka.BackColor:= clMoneyGreen;
|
|
btnObrazovka.HoverColor:= clMoneyGreen;
|
|
btnTiskarna.BackColor:= clBtnFace;
|
|
btnTiskarna.HoverColor:= clBtnFace;
|
|
|
|
Label2.Visible:= false;
|
|
pnlTiskKopie1.Visible:= false;
|
|
pnlTiskKopie2.Visible:= false;
|
|
|
|
tiskNa:= 2;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformUkonceniPalety.btnTiskarnaClick (Sender: TObject);
|
|
begin
|
|
btnTiskarna.BackColor:= clMoneyGreen;
|
|
btnTiskarna.HoverColor:= clMoneyGreen;
|
|
btnObrazovka.BackColor:= clBtnFace;
|
|
btnObrazovka.HoverColor:= clBtnFace;
|
|
|
|
Label2.Visible:= true;
|
|
pnlTiskKopie1.Visible:= true;
|
|
pnlTiskKopie2.Visible:= true;
|
|
|
|
tiskNa:= 1;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformUkonceniPalety.btnZapisPaletyATiskClick (Sender: TObject);
|
|
var lSQL, lSQL2, podm, errMsg, a, novyPL, idMzdyS, idMezdS, skSubPrikaz, sTemp, sRnd, sklVyd, radaVyd: string;
|
|
nazevOp, mjDilce: string;
|
|
pocKA, pocKAOld, pocKS, noveMnoz, NPalPocKA, NPalPocKS, prepKA2ks, mnozProKoef, koefMn : extended;
|
|
casPrace, idEvOpR, idMzdy, locIdVPr, d, d2, cnt, iPing: integer;
|
|
bid, idF, idPalUkonceni, idPrac, idDZ, idDZVyd: integer;
|
|
spotrebaTesto, spotreba702, vydejOK: boolean;
|
|
fSarzeVydej: TformSarzeVydej;
|
|
doJedneVydejky: Boolean;
|
|
|
|
lHTTP: TIdHTTP;
|
|
ssl: TIdSSLIOHandlerSocketOpenSSL;
|
|
lParamList, respStream: TStringStream;
|
|
resp: string;
|
|
joOut, joIn, itemsObj: TJSONObject;
|
|
begin
|
|
idMezdS:= '';
|
|
idPalUkonceni:= 0;
|
|
|
|
SetClassLong (TForm(Sender).Handle, GCL_HCURSOR, Screen.Cursors[crHourGlass]);
|
|
Screen.Cursor:= crHourglass;
|
|
|
|
helUtils.ReseedTable(Helios, tblPMZ);
|
|
helUtils.ReseedTable(Helios, tblPalety);
|
|
helUtils.ReseedTable(Helios, tblPaletyUkonceni);
|
|
|
|
if not(TryStrToFloat(edtKs.Text.Replace(' ','').Trim, pocKS)) then
|
|
pocKS:= 0;
|
|
if not(TryStrToFloat(edtKA.Text.Replace(' ','').Trim, pocKA)) then
|
|
pocKA:= 0;
|
|
if not(TryStrToFloat(edtPlneKA.Text.Replace(' ','').Trim, NPalPocKA)) then
|
|
NPalPocKA:= 0;
|
|
if not(TryStrToFloat(edtKsVPoslednimKA.Text.Replace(' ','').Trim, NPalPocKS)) then
|
|
NPalPocKS:= 0;
|
|
|
|
pocKAOld:= pocKA;
|
|
|
|
pocKA:= pocKA + NPalPocKA;
|
|
if (NPalPocKS>0) and (prepKA2ks<>0) then
|
|
pocKA:= pocKA + (NPalPocKS/prepKA2ks);
|
|
|
|
if (idEvEOp>0) and (pocKA>0) then
|
|
begin
|
|
spotrebaTesto:= false;
|
|
lSQL:= 'SELECT 1 FROM ' + tblVPr + ' p INNER JOIN ' + tblKZ + ' k ON (p.IDTabKmen=k.ID) WHERE p.IDPrikazVyssi=' + idVPr.ToString + ' AND k.SkupZbo=N''701''';
|
|
if (helUtils.sqlExistsTestGeneral (Helios, lSQL)) then
|
|
spotrebaTesto:= true;
|
|
|
|
// spotreba tisicikus (SK 702), na kterem je testo
|
|
spotreba702:= false;
|
|
if not(spotrebaTesto) then
|
|
begin
|
|
lSQL:= 'SELECT 1 FROM ' + tblVPr + ' p INNER JOIN ' + tblKZ + ' k ON (p.IDTabKmen=k.ID) WHERE p.IDPrikazVyssi=' + idVPr.ToString + ' AND k.SkupZbo=N''702''';
|
|
if (helUtils.sqlExistsTestGeneral (Helios, lSQL)) then
|
|
spotreba702:= true;
|
|
end;
|
|
|
|
|
|
lSQL:= 'INSERT ' + tblPaletyUkonceni + ' (IDPalety, PocetKs, PocetKA, NeuplnaPalPocetKA, NeuplnaPalKsVPoslKA, IDPrikaz) SELECT ' + idPalety.ToString + ', ' + pocKS.ToString.Replace(',', '.') + ', ';
|
|
if (NPalPocKA>0) then
|
|
lSQL:= lSQL + NPalPocKA.ToString.Replace(',', '.')
|
|
else
|
|
lSQL:= lSQL + pocKAOld.ToString.Replace(',', '.');
|
|
lSQL:= lSQL + ', ' + NPalPocKA.ToString.Replace(',', '.') + ', ' + NPalPocKS.ToString.Replace(',', '.') + ', ' + idVPr.ToString + CRLF;
|
|
lSQL:= lSQL + 'SELECT SCOPE_IDENTITY() AS newID';
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
idPalUkonceni:= VarToStr(FieldByNameValues('newID')).ToInteger;
|
|
|
|
|
|
idPrac:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDStroje FROM ' + tblRozpracOper + ' WHERE ID=' + idEvEOp.ToString);
|
|
if (helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM ' + tblRozpracOper + ' WHERE Stav=20 AND ID=' + idEvEOp.ToString)) then
|
|
begin
|
|
|
|
lSQL:= 'UPDATE ' + tblRozpracOper + ' SET CasUkonceni=GETDATE() WHERE ID=' + idEvEOp.ToString;
|
|
Helios.ExecSQL(lSQL);
|
|
casPrace:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT DATEDIFF(second, CasZahajeni, CasUkonceni) FROM ' + tblRozpracOper + ' WHERE ID=' + idEvEOp.ToString);
|
|
if (casPrace=0) then
|
|
casPrace:= 60;
|
|
|
|
|
|
|
|
// uprava odvadeneho mnozstvi v evidenci rozpracovanych operaci podle zadaneho poctu KA na neuplne palete, bez kusu v poslednim KA
|
|
if ((NPalPocKA>0) and (NPalPocKS=0)) or (1=1) then
|
|
begin
|
|
koefMn:= 0;
|
|
d:= 0;
|
|
lSQL:= 'SELECT r.ID, r.Mnoz_odv, ISNULL(re._KoefMnoz, 1) AS Koef, pp.Nazev, k.MJEvidence, r.DokladPrPostup FROM ' + tblRozpracOperR + ' r INNER JOIN ' + tblPrPost
|
|
+ ' pp ON (pp.IDPrikaz=r.IDPrikaz AND pp.Doklad=r.DokladPrPostup AND pp.Alt=r.AltPrPostup AND pp.IDOdchylkyDo IS NULL) INNER JOIN ' + tblKZ
|
|
+ ' k ON (k.ID=pp.Dilec) LEFT JOIN ' + tblRozpracOperRE + ' re ON (re.ID=r.ID) WHERE r.IDEvidRozpracOper='
|
|
+ idEvEOp.ToString + ' ORDER BY r.DokladPrPostup DESC';
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
First;
|
|
if (recordCount=1) then
|
|
begin
|
|
nazevOp:= VarToStr(FieldByNameValues('Nazev'));
|
|
mjDilce:= VarToStr(FieldByNameValues('MJEvidence'));
|
|
mnozProKoef:= VarToStr(FieldByNameValues('Mnoz_odv')).ToExtended;
|
|
d:= VarToStr(FieldByNameValues('DokladPrPostup')).ToInteger;
|
|
koefMn:= helUtils.RoundToEX (pocKAOld / mnozProKoef, -4);
|
|
end;
|
|
if (RecordCount>1) then
|
|
begin
|
|
while not(EOF) do
|
|
begin
|
|
nazevOp:= VarToStr(FieldByNameValues('Nazev'));
|
|
mjDilce:= VarToStr(FieldByNameValues('MJEvidence'));
|
|
mnozProKoef:= VarToStr(FieldByNameValues('Mnoz_odv')).ToExtended;
|
|
if (nazevOp.ToLower.Contains('balení')) and (mjDilce.ToLower='ka') and (mnozProKoef<>0) then
|
|
begin
|
|
d:= VarToStr(FieldByNameValues('DokladPrPostup')).ToInteger;
|
|
koefMn:= helUtils.RoundToEX (pocKAOld / mnozProKoef, -4);
|
|
end;
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
if (koefMn<>0) and (d<>0) then
|
|
begin
|
|
lSQL:= 'SELECT ID, Mnoz_odv, DokladPrPostup FROM ' + tblRozpracOperR + ' WHERE IDEvidRozpracOper=' + idEvEOp.ToString + 'ORDER BY DokladPrPostup';
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
d2:= VarToStr(FieldByNameValues('DokladPrPostup')).ToInteger;
|
|
if (d=d2) then
|
|
Helios.ExecSQL('UPDATE ' + tblRozpracOperR + ' SET Mnoz_odv=' + pocKAOld.ToString + ' WHERE ID=' + VarToStr(FieldByNameValues('ID')))
|
|
else
|
|
Helios.ExecSQL('UPDATE ' + tblRozpracOperR + ' SET Mnoz_odv=ROUND(Mnoz_odv * ' + koefMn.ToString.Replace(',', '.') + ', 2) WHERE ID=' + VarToStr(FieldByNameValues('ID')));
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
lSQL:= 'EXEC dbo.hp_EvidRozpracOper_AktualizaceCasuOper @IDEvidRozpracOper=' + idEvEOp.ToString + ', @CelkovyCas_S=' + casPrace.ToString + ', @KVO=1';
|
|
Helios.ExecSQL(lSQL);
|
|
|
|
if (idPrac>0) then
|
|
lSQL:= 'EXEC dbo.hp_EvidRozpracOper_Uzavreni @IDEvidRozpracOper=' + idEvEOp.ToString + ', @GenerovatEvidenciOperaci=1'
|
|
else
|
|
lSQL:= 'EXEC dbo.hp_EvidRozpracOper_Uzavreni @IDEvidRozpracOper=' + idEvEOp.ToString + ', @GenerovatEvidenciOperaci=0';
|
|
Helios.ExecSQL(lSQL);
|
|
|
|
|
|
// na sklad 261 nemusim delat jednu vydejku
|
|
doJedneVydejky:= false;
|
|
|
|
lSQL:= 'SELECT ID FROM ' + tblRozpracOperR + ' WHERE IDEvidRozpracOper=' + idEvEOp.ToString;
|
|
with Helios.OpenSQL (lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
idEvOpR:= VarToStr(FieldByNameValues('ID')).ToInteger;
|
|
lSQL:= 'SELECT ISNULL(IDVyrCis,0) FROM ' + tblRozpracOperR + ' WHERE ID=' + idEvOpR.ToString;
|
|
idVyrCisPrikaz:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
|
{
|
|
lSQL:= 'UPDATE eor SET eor.Mnoz_odv=' + pocKA.ToString.Replace(',', '.') + ' FROM ' + tblRozpracOper + ' eo INNER JOIN ' + tblRozpracOperR + ' eor ON (eor.IDEvidRozpracOper=eo.ID)';
|
|
lSQL:= lSQL + ' WHERE eo.ID=' + idEvEOp.ToString;
|
|
Helios.ExecSQL(lSQL);
|
|
}
|
|
|
|
lSQL:= 'SELECT ID FROM ' + tblPMZ + ' WHERE IDEvidRozpracOperR=' + idEvOpR.ToString;
|
|
idMzdy:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
|
if (idMzdy>0) then
|
|
begin
|
|
idMezdS:= idMezdS + idMzdy.ToString + ',';
|
|
|
|
idDZVyd:= 0;
|
|
if (doJedneVydejky) then
|
|
begin
|
|
locIdVPr:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDPrikaz FROM ' + tblPMZ + ' WHERE ID=' + idMzdyS);
|
|
|
|
lSQL:= 'SELECT ISNULL(pkz.VychoziSklad, r.VydejMatPol_SkladProGenHlavDZ) FROM ' + tblPrikazRada + ' r INNER JOIN ' + tblVPr + ' p ON (p.Rada=r.Rada) LEFT JOIN ' + tblParamKZ;
|
|
lSQL:= lSQL + ' pkz ON (pkz.IDKmenZbozi=p.IDTabKmen) WHERE p.ID=' + locIdVPr.ToString;
|
|
sklVyd:= helUtils.getHeliosStrVal(Helios, '261', lSQL);
|
|
sklVyd:= '261';
|
|
|
|
lSQL:= 'SELECT r.RadaDokl_GenerRezVyd_Mat FROM ' + tblPrikazRada + ' r INNER JOIN ' + tblVPr + ' p ON (p.Rada=r.Rada) WHERE p.ID=' + locIdVPr.ToString;
|
|
radaVyd:= helUtils.getHeliosStrVal(Helios, '223', lSQL);
|
|
// radaVyd:= '223';
|
|
|
|
lSQL:= 'SELECT TOP(1) d.ID FROM ' + tblDZ + ' d INNER JOIN ' + tblDZe + ' de ON (d.ID=de.ID) WHERE d.DruhPohybuZbo=4 AND d.Realizovano=0 AND d.IDSklad=N' + sklVyd.QuotedString;
|
|
lSQL:= lSQL + ' AND d.RadaDokladu=N' + radaVyd.QuotedString + ' AND de._Vyroba_DenSmena=N' + denSmena.QuotedString + ' ORDER BY d.ID DESC';
|
|
idDZVyd:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
|
end;
|
|
|
|
|
|
// vydejka z evidence mzdy
|
|
helUtils.ReseedTable (Helios, tblDZ);
|
|
helUtils.ReseedTable (Helios, tblPZ);
|
|
|
|
sRnd:= '[dbo].[' + helUtils.RandomString(6, '_PekPohOZ') + ']';
|
|
lSQL:= 'SET NOCOUNT ON' + CRLF + 'DROP TABLE IF EXISTS ' + sRnd + CRLF + 'CREATE TABLE ' + sRnd + ' (ID INT, IDPohZbo INT, IDKmen INT, IDSklad NVARCHAR(30), IDDoklad INT )' + CRLF;
|
|
|
|
lSQL:= lSQL + 'DECLARE @e NVARCHAR(500)=N''''' + CRLF + 'IF OBJECT_ID(N''dbo.ep_Vyroba_GenVydejZeMzdy'', N''P'') IS NOT NULL EXEC dbo.ep_Vyroba_GenVydejZeMzdy @IDMzdy=' + idMzdy.ToString;
|
|
lSQL:= lSQL + ', @IDDoklad=' + IfThen(idDZVyd=0, 'NULL', idDZVyd.ToString) + ', @realizujVydej=1, @respExistDokl=1, @spotrebaTesto=' + IfThen(spotrebaTesto, '1', '0');
|
|
lSQL:= lSQL + ', @errMsg=@e OUT, @extTab=N' + sRnd.QuotedString + ', @vydejAll=0, @denSmena=N' + denSmena.QuotedString + ', @smazVydejTesto=' + IfThen(spotrebaTesto, '1', '0');
|
|
if (spotreba702) then
|
|
lSQL:= lSQL + ', @spotreba702=1';
|
|
lSQL:= lSQL + CRLF + 'SELECT @e';
|
|
errMsg:= helUtils.getHeliosStrVal (Helios, '', lSQL); // cannot insert NULL to IDSklad (TabStavSkladu)
|
|
|
|
|
|
if (errMsg<>'') then
|
|
begin
|
|
Helios.ExecSQL ('UPDATE ' + tblPaletyUkonceni + ' SET ErrMsg=LEFT(N' + errMsg.QuotedString + ',255) WHERE ID=' + idPalUkonceni.ToString);
|
|
|
|
lSQL:= 'DELETE FROM ' + tblPZ + ' WHERE ID IN (SELECT IDPohZbo FROM ' + sRnd + ' WHERE IDPohZbo IS NOT NULL)';
|
|
Helios.ExecSQL (lSQL);
|
|
helUtils.ReseedTable (Helios, tblPZ);
|
|
end
|
|
else
|
|
begin
|
|
// kontrola na zadavani sarzi - vypnuto
|
|
if (1=0) then
|
|
begin
|
|
{$IFDEF DEBUG}
|
|
lSQL:= 'MERGE ' + sRnd + ' AS T USING (SELECT p.ID, p.IDDoklad, s.IDSklad, s.IDKmenZbozi FROM ' + tblPZ + ' p INNER JOIN ' + tblSS + ' s ON (s.ID=p.IDZboSklad)) AS S ON (T.IDPohZbo=S.ID)';
|
|
lSQL:= lSQL + ' WHEN MATCHED THEN UPDATE SET T.IDKmen=s.IDKmenZbozi, T.IDDoklad=S.IDDoklad, T.IDSklad=S.IDSklad;';
|
|
Helios.ExecSQL (lSQL);
|
|
{$ENDIF}
|
|
lSQL:= 'SELECT p.ID FROM ' + tblPZ + ' p INNER JOIN ' + tblSS + ' s ON (s.ID=p.IDZboSklad) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) INNER JOIN ' + tblKZe;
|
|
lSQL:= lSQL + ' ke ON (ke.ID=k.ID) WHERE p.ID IN (SELECT IDPohZbo FROM ' + sRnd + ' WHERE IDPohZbo IS NOT NULL) AND ke._Vyroba_ZadavatSarzi=1';
|
|
cnt:= helUtils.SQLGetRowCount(Helios, lSQL);
|
|
if (cnt>0) then
|
|
begin
|
|
sTemp:= getHeliosRowToStringDelim (Helios, lSQL, ',');
|
|
if (sTemp='') then
|
|
sTemp:= helUtils.getHeliosStrVal(Helios, '', lSQL.Replace('T p.ID F', 'T STRING_AGG(p.ID,N'','') F'));
|
|
|
|
fSarzeVydej:= TformSarzeVydej.Create(nil);
|
|
try
|
|
fSarzeVydej.Helios:= Helios;
|
|
fSarzeVydej.idVydejka:= idDZVyd;
|
|
fSarzeVydej.sIdPohybuOZ:= sTemp;
|
|
fSarzeVydej.ShowModal;
|
|
vydejOK:= fSarzeVydej.retOK;
|
|
finally
|
|
fSarzeVydej.Free;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
if (sRnd<>'') then
|
|
Helios.ExecSQL('DROP TABLE IF EXISTS ' + sRnd);
|
|
|
|
|
|
// prijemka z evidence mzdy
|
|
lSQL:= '';
|
|
{
|
|
lSQL:= 'DROP TABLE IF EXISTS #HDCTabGenOdvodZeMzdyKonfig' + CRLF + 'CREATE TABLE #HDCTabGenOdvodZeMzdyKonfig (RadaOdvodNaSklad NVARCHAR(3), SkladProOdvod NVARCHAR(30)';
|
|
lSQL:= lSQL + ', BezVyrobnichCisel BIT DEFAULT 0)' + CRLF + 'INSERT #HDCTabGenOdvodZeMzdyKonfig (SkladProOdvod) SELECT N''211''' + CRLF;
|
|
}
|
|
lSQL:= lSQL + 'DECLARE @e NVARCHAR(500)=N''''; IF OBJECT_ID(N''dbo.ep_Vyroba_GenOdvodZeMzdy'', N''P'') IS NOT NULL EXEC dbo.ep_Vyroba_GenOdvodZeMzdy @IDMzdy=' + idMzdy.ToString
|
|
+ ', @bezVyrCis=0, @realizujPrijem=1, @errMsg=@e OUT'; // @kopiiNaTechSklad=0,
|
|
if (edtNazev1.Text.Contains('polotovar')) or (jePolotovar) then
|
|
lSQL:= lSQL + ', @skladOdvod=N''311'''
|
|
else
|
|
lSQL:= lSQL + ', @skladOdvod=N''312''';
|
|
|
|
lSQL:= lSQL + CRLF + 'SELECT @e';
|
|
errMsg:= helUtils.getHeliosStrVal (Helios, '', lSQL);
|
|
|
|
|
|
// posli JSON o vyrobene palete
|
|
try
|
|
resp:= GenerujJSON (idMzdy).ToJSON (false).Replace(#10, '').Replace(#9, '').Replace('''', '');
|
|
if (resp<>'') then
|
|
begin
|
|
resp:= TJSON.JsonEncode(resp);
|
|
lSQL:= 'UPDATE ' + tblPalety + ' SET JSONDataKonec=N' + resp.QuotedString + ' WHERE ID=' + idPalety.ToString;
|
|
Helios.ExecSQL(lSQL);
|
|
|
|
try
|
|
lParamList:= TStringStream.Create('');
|
|
lParamList.WriteString (resp);
|
|
|
|
// http klient je stejny
|
|
lHTTP:= TIdHTTP.Create;
|
|
if (datMod.phServer.Contains('https')) then
|
|
begin
|
|
ssl:= TIdSSLIOHandlerSocketOpenSSL.Create(nil);
|
|
ssl.SSLOptions.Method:= sslvTLSv1_2;
|
|
ssl.SSLOptions.Mode:= sslmUnassigned;
|
|
lHTTP.IOHandler:= ssl;
|
|
end;
|
|
lHTTP.HTTPOptions:= [hoKeepOrigProtocol, hoForceEncodeParams, hoNoProtocolErrorException, hoWantProtocolErrorContent];
|
|
lHTTP.Request.ContentType := 'application/ld+json';
|
|
lHTTP.Request.Accept := 'application/ld+json, text/javascript, */*; q=0.01';
|
|
|
|
resp:= '';
|
|
respStream:= TStringStream.Create('');
|
|
iPing:= uPing.Ping (datMod.getDomainName (datMod.phServer), resp);
|
|
// if (helUtils.PingHost (helUtils.NetGetHostName(datMod.phServer))) then
|
|
if (iPing=0) then
|
|
begin
|
|
lHTTP.Post (datMod.phServer + IfThen(datMod.phServer.EndsWith('/'), '', '/') + 'prikaz', lParamList, respStream);
|
|
resp:= respStream.DataString.Replace('\/', '/');
|
|
Helios.ExecSQL('UPDATE ' + tblPalety + ' SET JSONKonecResp=N' + resp.QuotedString + ' WHERE ID=' + idPalety.ToString);
|
|
end;
|
|
|
|
finally
|
|
respStream.Free;
|
|
lParamList.Free;
|
|
if (ssl<>nil) then
|
|
ssl.Free;
|
|
lHTTP.Free;
|
|
end;
|
|
end;
|
|
finally
|
|
end;
|
|
|
|
{
|
|
if (errMsg='') then
|
|
begin
|
|
lSQL:= 'SELECT TOP(1) d.ID FROM ' + tblPMZGenPZ + ' pmzg INNER JOIN ' + tblPZ + ' p ON (p.ID=pmzg.IDPohybu) INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad)';
|
|
lSQL:= lSQL + ' WHERE p.TypVyrobnihoDokladu=0 AND d.DruhPohybuZbo=0 AND d.Realizovano=0 AND pmzg.TypGen=2 AND pmzg.IDMzdy=' + idMzdyS;
|
|
idDZ:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
|
if (idDZ>0) then
|
|
begin
|
|
vydejOK:= true;
|
|
lSQL:= 'SELECT 1 FROM ' + tblDZe + ' WHERE ID=' + idDZ.ToString + ' AND _Vyroba_ZadatSarze=1';
|
|
if (helUtils.sqlExistsTestGeneral(Helios, lSQL)) then
|
|
begin
|
|
fSarzeVydej:= TformSarzeVydej.Create(nil);
|
|
try
|
|
fSarzeVydej.Helios:= Helios;
|
|
fSarzeVydej.idVydejka:= idDZ;
|
|
fSarzeVydej.ShowModal;
|
|
vydejOK:= fSarzeVydej.retOK;
|
|
finally
|
|
fSarzeVydej.Free;
|
|
end;
|
|
end;
|
|
if (vydejOK) then
|
|
begin
|
|
lSQL:= 'DECLARE @b BIT, @i INT' + CRLF + 'SET @i=' + Helios.UserId.ToString + CRLF;
|
|
lSQL:= lSQL + 'EXEC dbo.hp_Realizuj_Prijem @ID=' + idDZ.ToString + ', @DatumRealizace=NULL, @Uzivatel=@i, @BylaChyba=@b OUT';
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
end;
|
|
end;
|
|
}
|
|
end;
|
|
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
if (idPalUkonceni>0) and (idMezdS<>'') then
|
|
begin
|
|
if (RightStr(idMezdS,1)=',') then
|
|
idMezdS:= LeftStr(idMezdS, idMezdS.Length-1);
|
|
|
|
lSQL:= 'UPDATE ' + tblPaletyUkonceni + ' SET IDMezd=N' + idMzdyS.QuotedString + ' WHERE ID=' + idPalUkonceni.ToString;
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
|
|
|
|
|
|
bid:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_Vyroba_Palety''');
|
|
// idF:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblFormDef + ' WHERE Nazev2=N''PEK-2''');
|
|
if (bid>100000) then
|
|
begin
|
|
if (idFormPL>0) then
|
|
begin
|
|
podm:= 'hvw_Vyroba_Palety.CisloPalety=N' + edtPaleta.Text.QuotedString;
|
|
Helios.PrintForm3 (bid, idFormPL, podm);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
if (rbPokracujAno.Checked) then
|
|
begin
|
|
helUtils.ReseedTable(Helios, tblRozpracOper);
|
|
helUtils.ReseedTable(Helios, tblRozpracOperR);
|
|
|
|
d:= 0;
|
|
a:= '';
|
|
lSQL:= 'SELECT TOP(1) pp.Doklad, pp.Alt FROM ' + tblPrPost + ' pp INNER JOIN ' + tblCPrac + ' p ON (pp.pracoviste=p.Id) INNER JOIN ' + tblCStroju + ' s ON (s.IDPrac=p.ID)';
|
|
lSQL:= lSQL + ' WHERE pp.Typ=1 AND pp.IDOdchylkyDo IS NULL AND pp.IDPrikaz=' + idVPr.ToString + ' AND s.ID=' + idStroj.ToString;
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
d:= VarToStr(FieldByNameValues('Doklad')).ToInteger;
|
|
a:= VarToStr(FieldByNameValues('Alt'));
|
|
end;
|
|
|
|
if (d>0) then
|
|
begin
|
|
novyPL:= '';
|
|
noveMnoz:= 0;
|
|
lSQL:= 'SELECT ID FROM ' + tblPrikazVC + ' WHERE ID>' + idVyrCisPrikaz.ToString + ' AND IDPrikaz=' + idVPr.ToString + ' AND (Mnozstvi-Odvedeno-Zmetky)>0';
|
|
idVyrCisPrikaz:= helUtils.getHeliosIntVal(Helios, 0, lSQL);
|
|
if (idVyrCisPrikaz>0) then
|
|
begin
|
|
lSQL:= 'SELECT VyrCislo, Mnozstvi-Odvedeno-Zmetky AS Zbytek FROM ' + tblPrikazVC + ' WHERE ID=' + idVyrCisPrikaz.ToString;
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
novyPL:= VarToStr(FieldByNameValues('VyrCislo'));
|
|
noveMnoz:= VarToStr(FieldByNameValues('Zbytek')).ToExtended;
|
|
end;
|
|
end;
|
|
|
|
if (noveMnoz>0) then
|
|
begin
|
|
lSQL:= 'DECLARE @i INT, @i2 INT' + CRLF + 'EXEC @i=dbo.ep_Vyroba_InsertEvidRozpracOper @IDZamestnance=' + datMod.idZamMistr.ToString + ', @IDStroje=' + idStroj.ToString + CRLF;
|
|
lSQL:= lSQL + 'IF (@i IS NOT NULL) EXEC @i2=dbo.ep_Vyroba_InsertEvidRozpracOperPol @IdEvidRozpOper=@i, @IdPrikaz=' + idVPr.ToString + ', @doklPrPost=' + d.ToString + ', @altPrPost=N' + a.QuotedString;
|
|
lSQL:= lSQL + ', @cisloPL=N' + novyPL.QuotedString + ', @sarze=N' + edtSarze.Text.QuotedString + IfThen(noveMnoz>0, ', @mnozOdv=' + noveMnoz.ToString, '');
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
Close;
|
|
end; // mam Evidenci rozprac. oper.
|
|
|
|
Helios.ExecSQL('UPDATE ' + tblPalety + ' SET DatUkonceni=GETDATE() WHERE ID=' + idPalety.ToString);
|
|
|
|
|
|
if (prerusit) and (idVPr>0) then
|
|
Helios.ExecSQL('UPDATE ' + tblPrikaz + ' SET StavPrikazu=40 WHERE ID=' + idVPr.ToString);
|
|
end;
|
|
|
|
Screen.Cursor:= crDefault;
|
|
SetClassLong(TForm(Sender).Handle, GCL_HCURSOR, Screen.Cursors[crDefault]);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformUkonceniPalety.edtKAExit (Sender: TObject);
|
|
begin
|
|
edtKA.Text:= edtKA.Text.Trim;
|
|
if not(TryStrToFloat(edtKA.Text, pocKA)) then
|
|
pocKA:= 0;
|
|
pocKS:= pocKA * ksVKA;
|
|
edtKs.Text:= FormatFloat('##,##0.##', pocKS);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformUkonceniPalety.edtKsExit (Sender: TObject);
|
|
begin
|
|
edtKs.Text:= edtKs.Text.Trim;
|
|
if not(TryStrToFloat(edtKs.Text, pocKS)) then
|
|
pocKS:= 0;
|
|
pocKA:= pocKS/ksVKA;
|
|
edtKA.Text:= FormatFloat('#,##0.##', pocKA);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformUkonceniPalety.FormClose (Sender: TObject; var Action: TCloseAction);
|
|
begin
|
|
Action:= TCloseAction.caFree;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformUkonceniPalety.FormShow (Sender: TObject);
|
|
var lSQL: string;
|
|
begin
|
|
NactiParemetry;
|
|
tiskNa:= 1;
|
|
|
|
lSQL:= 'SELECT ISNULL(_KL,0) FROM ' + tblKZe + ' WHERE ID=' + idKmen.ToString;
|
|
idFormKA:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
|
// lblWarnStitekKA.Visible:= (idFormKA=0);
|
|
|
|
lSQL:= 'SELECT ISNULL(_PalStitek,0) FROM ' + tblKZe + ' WHERE ID=' + idKmen.ToString;
|
|
idFormPS:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
|
|
|
lSQL:= 'SELECT ISNULL(_PLKK,0) FROM ' + tblKZe + ' WHERE ID=' + idKmen.ToString;
|
|
idFormPL:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
|
// lblWarnStitekPL.Visible:= (idFormPL=0);
|
|
|
|
|
|
|
|
SetWindowLong(btnZapisPaletyATisk.Handle, GWL_STYLE, GetWindowLong((btnZapisPaletyATisk as TWinControl).Handle, GWL_STYLE) or BS_MULTILINE);
|
|
|
|
edtPaleta.Text:= paleta;
|
|
edtSarze.Text:= sarze;
|
|
edtStroj.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblCStroju + ' WHERE ID=' + idStroj.ToString);
|
|
|
|
edtDatVyroby.Text:= FormatDateTime('dd.mm.yyyy', Now);
|
|
lSQL:= 'DECLARE @d DATETIME=GETDATE(); SELECT Smena FROM dbo.ef_GetDatumASmenu (@d)';
|
|
with Helios.OpenSQL(lSQL) do
|
|
edtSmena.Text:= VarToStr(FieldByNameValues('Smena'));
|
|
|
|
edtPokrac.Text:= '1';
|
|
|
|
if (edtKA.CanFocus) then
|
|
edtKA.SetFocus;
|
|
|
|
LabeledEdit2.EditLabel.Caption:= '';
|
|
|
|
end;
|
|
|
|
end.
|