855 lines
31 KiB
ObjectPascal
855 lines
31 KiB
ObjectPascal
unit frmZahajeniPalety;
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
|
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, Vcl.ExtCtrls,
|
|
IdHTTP, IdSSLOpenSSL, REST.Json, JsonDataObjects,
|
|
ddPlugin_TLB, frmPekarna, frmTiskyNahledy, uPing;
|
|
|
|
{$I iConsts.inc}
|
|
|
|
type
|
|
TformZahajeniPalety = class(TForm)
|
|
Panel1: TPanel;
|
|
edtZakazka: TLabeledEdit;
|
|
edtPL: TLabeledEdit;
|
|
edtSarze: TLabeledEdit;
|
|
edtDatVyroby: TLabeledEdit;
|
|
edtDatSpotreby: TLabeledEdit;
|
|
edtSZ: TLabeledEdit;
|
|
edtRegCis: TLabeledEdit;
|
|
Panel2: TPanel;
|
|
Panel3: TPanel;
|
|
edtNazev1: TLabeledEdit;
|
|
edtBarvaStitku: TLabeledEdit;
|
|
edtTypStitku: TLabeledEdit;
|
|
edtVelkostStitku: TLabeledEdit;
|
|
edtPocetStitku: TLabeledEdit;
|
|
Panel4: TPanel;
|
|
btnTiskStitku: TButton;
|
|
btnTiskZaloha: TButton;
|
|
GroupBox1: TGroupBox;
|
|
GridPanel1: TGridPanel;
|
|
Label1: TLabel;
|
|
Label2: TLabel;
|
|
Label3: TLabel;
|
|
Label4: TLabel;
|
|
pnlSarzeAno: TPanel;
|
|
rbTiskSarzeAno: TRadioButton;
|
|
pnlSarzeNe: TPanel;
|
|
rbTiskSarzeNe: TRadioButton;
|
|
pnlSpotrebaAno: TPanel;
|
|
rbTiskSpotrebaAno: TRadioButton;
|
|
pnlSpotrebaNe: TPanel;
|
|
rbTiskSpotrebaNe: TRadioButton;
|
|
edtPocetPL: TEdit;
|
|
pnlTiskNaObraz: TPanel;
|
|
rbTiskNaObraz: TRadioButton;
|
|
pnlTiskNaTisk: TPanel;
|
|
rbTiskNaTisk: TRadioButton;
|
|
edtPocetStitkuMax: TEdit;
|
|
lblKANaPal: TLabel;
|
|
lblWarnStitekKA: TLabel;
|
|
lblWarnStitekPL: TLabel;
|
|
procedure FormShow (Sender: TObject);
|
|
procedure rbTiskSarzeNeClick (Sender: TObject);
|
|
procedure rbTiskSarzeAnoClick (Sender: TObject);
|
|
procedure rbTiskSpotrebaAnoClick (Sender: TObject);
|
|
procedure rbTiskSpotrebaNeClick (Sender: TObject);
|
|
procedure pnlSarzeAnoClick (Sender: TObject);
|
|
procedure pnlSarzeNeClick (Sender: TObject);
|
|
procedure rbTiskNaObrazClick (Sender: TObject);
|
|
procedure rbTiskNaTiskClick (Sender: TObject);
|
|
procedure btnTiskStitkuClick (Sender: TObject);
|
|
private
|
|
function GenerujJSON (idPrikaz, idVyrCis, idEvidROp: integer; mn: Extended): TJSONObject;
|
|
procedure BarvyTlacitekDleRB;
|
|
procedure NactiUdajePrikazu;
|
|
public
|
|
Helios: IHelios;
|
|
idPrikaz: integer;
|
|
idStroj: integer;
|
|
idPaleta: integer;
|
|
datVyroba: TDateTime;
|
|
f: TformPekarna;
|
|
f2: TformTiskyNahledy;
|
|
opakTisky: boolean;
|
|
end;
|
|
|
|
var
|
|
formZahajeniPalety: TformZahajeniPalety;
|
|
idKmen: Integer;
|
|
|
|
cPal, typPal: string;
|
|
m1, m2: integer;
|
|
mn, mnSum, mn2: integer;
|
|
idFormPL, idFormPS, idFormKA: integer;
|
|
idFormKL: integer; // Kartonový štítek (Zebra)
|
|
|
|
|
|
implementation
|
|
uses System.DateUtils, System.StrUtils, System.Math,
|
|
helUtils, helTabsBIDs, datMod;
|
|
|
|
{$R *.dfm}
|
|
|
|
|
|
|
|
function TformZahajeniPalety.GenerujJSON (idPrikaz, idVyrCis, idEvidROp: integer; mn: Extended): TJsonObject;
|
|
var lSQL, jsonOut: string;
|
|
oMain, oPrikaz, oVyrCislo: TJsonObject;
|
|
aVyrCisla, aVydejky, aPrijemky: TJsonArray;
|
|
begin
|
|
oMain:= TJsonObject.Create;
|
|
try
|
|
if (idPrikaz>0) then
|
|
begin
|
|
// prikaz
|
|
oPrikaz:= oMain.O['prikaz'];
|
|
oPrikaz.I['idEvidROp']:= idEvidROp;
|
|
oPrikaz.S['akce']:= 'start';
|
|
|
|
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.D['caszahajeni']:= Now;
|
|
oPrikaz.Values['casukonceni']:= Null;
|
|
end;
|
|
|
|
if (idVyrCis>0) then
|
|
begin
|
|
lSQL:= 'SELECT VyrCislo, Popis, Mnozstvi, DatExpirace FROM ' + tblPrikazVC + ' WHERE ID=' + idVyrCis.ToString;
|
|
with Helios.OpenSQL (lSQL) do
|
|
begin
|
|
aVyrCisla:= oPrikaz.A['vyrobni_cisla'];
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
oVyrCislo:= aVyrCisla.AddObject;
|
|
oVyrCislo.S['paletovy_list']:= VarToStr(FieldByNameValues('VyrCislo'));
|
|
oVyrCislo.S['sarze']:= VarToStr(FieldByNameValues('Popis')); // sarze
|
|
oVyrCislo.F['mnozstvi']:= VarToStr(FieldByNameValues('Mnozstvi')).ToDouble;
|
|
if not(VarIsNull(FieldByNameValues('DatExpirace'))) then
|
|
oVyrCislo.D['dat_expirace']:= StrToDateTime(VarToStr(FieldByNameValues('DatExpirace')))
|
|
else
|
|
oVyrCislo.Values['dat_expirace']:= Null;
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
aVydejky:= oMain.A['vydejky'];
|
|
aPrijemky:= oMain.A['prijemky'];
|
|
|
|
end;
|
|
jsonOut:= oMain.ToJSON (false);
|
|
finally
|
|
if (oPrikaz<>nil) then
|
|
FreeAndNil (oPrikaz);
|
|
// if (aVyrCisla<>nil) then
|
|
// FreeAndNil (aVyrCisla);
|
|
end;
|
|
|
|
oMain:= TJsonObject.Create;
|
|
oMain.FromUtf8JSON(jsonOut);
|
|
result:= oMain;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformZahajeniPalety.NactiUdajePrikazu;
|
|
var lSQL: string;
|
|
zarukaTyp: integer;
|
|
zarukaNum: extended;
|
|
d: TDateTime;
|
|
begin
|
|
idKmen:= 0;
|
|
if (idPrikaz>0) then
|
|
begin
|
|
lSQL:= 'SELECT vp.RadaPrikaz, k.SkupZbo, k.RegCis, k.Nazev1, vp.IdTabKmen FROM ' + tblVPr + ' vp INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IdTabKmen) WHERE vp.ID=' + idPrikaz.ToString;
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
edtSZ.Text:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
edtRegCis.Text:= VarToStr(FieldByNameValues('RegCis'));
|
|
edtNazev1.Text:= VarToStr(FieldByNameValues('Nazev1'));
|
|
edtZakazka.Text:= VarToStr(FieldByNameValues('RadaPrikaz'));
|
|
idKmen:= VarToStr(FieldByNameValues('IdTabKmen')).ToInteger;
|
|
end;
|
|
end;
|
|
|
|
edtPocetStitkuMax.Text:= helUtils.getHeliosStrVal (Helios, '0', 'SELECT COUNT(ID) FROM ' + tblPrikazVC + ' WHERE IDPrikaz=' + idPrikaz.ToString);
|
|
|
|
{
|
|
lSQL:= 'DECLARE @d DATETIME=GETDATE(); SELECT Datum FROM dbo.ef_GetDatumASmenu (@d)';
|
|
with Helios.OpenSQL(lSQL) do
|
|
edtDatVyroby.Text:=
|
|
edtSmena.Text:= VarToStr(FieldByNameValues('Smena'));
|
|
}
|
|
|
|
edtDatVyroby.Text:= FormatDateTime('dd.mm.yyyy', Now);
|
|
|
|
zarukaNum:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT ZarukaVystup FROM ' + tblKZ + ' WHERE ID=' + idKmen.ToString);
|
|
zarukaTyp:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TypZarukaVystup FROM ' + tblKZ + ' WHERE ID=' + idKmen.ToString); // 0-Den, 1-Mesic, 2-Rok
|
|
d:= Now;
|
|
if (zarukaTyp=0) then
|
|
d:= IncDay(Now, Floor(zarukaNum));
|
|
if (zarukaTyp=1) then
|
|
d:= IncMonth(Now, Floor(zarukaNum));
|
|
if (zarukaTyp=2) then
|
|
d:= IncYear(Now, Floor(zarukaNum));
|
|
d:= EndOfTheMonth(d);
|
|
|
|
edtDatSpotreby.Text:= FormatDateTime('dd.mm.yyyy', d);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TformZahajeniPalety.pnlSarzeAnoClick (Sender: TObject);
|
|
begin
|
|
rbTiskSarzeAno.Checked:= not rbTiskSarzeAno.Checked;
|
|
rbTiskSarzeNe.Checked:= not rbTiskSarzeNe.Checked;
|
|
end;
|
|
|
|
procedure TformZahajeniPalety.pnlSarzeNeClick (Sender: TObject);
|
|
begin
|
|
rbTiskSarzeAno.Checked:= not rbTiskSarzeAno.Checked;
|
|
rbTiskSarzeNe.Checked:= not rbTiskSarzeNe.Checked;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformZahajeniPalety.BarvyTlacitekDleRB;
|
|
begin
|
|
if (rbTiskSarzeAno.Checked) then
|
|
begin
|
|
pnlSarzeAno.Color:= clMoneyGreen;
|
|
rbTiskSarzeAno.Color:= clMoneyGreen;
|
|
end
|
|
else
|
|
begin
|
|
pnlSarzeAno.Color:= clBtnFace;
|
|
rbTiskSarzeAno.Color:= clBtnFace;
|
|
end;
|
|
|
|
if (rbTiskSarzeNe.Checked) then
|
|
begin
|
|
pnlSarzeNe.Color:= $005B5BFF;
|
|
rbTiskSarzeNe.Color:= $005B5BFF;
|
|
end
|
|
else
|
|
begin
|
|
pnlSarzeNe.Color:= clBtnFace;
|
|
rbTiskSarzeNe.Color:= clBtnFace;
|
|
end;
|
|
|
|
if (rbTiskSpotrebaAno.Checked) then
|
|
begin
|
|
pnlSpotrebaAno.Color:= clMoneyGreen;
|
|
rbTiskSpotrebaAno.Color:= clMoneyGreen;
|
|
end
|
|
else
|
|
begin
|
|
pnlSpotrebaAno.Color:= clBtnFace;
|
|
rbTiskSpotrebaAno.Color:= clBtnFace;
|
|
end;
|
|
|
|
if (rbTiskSpotrebaNe.Checked) then
|
|
begin
|
|
pnlSpotrebaNe.Color:= $005B5BFF;
|
|
rbTiskSpotrebaNe.Color:= $005B5BFF;
|
|
end
|
|
else
|
|
begin
|
|
pnlSpotrebaNe.Color:= clBtnFace;
|
|
rbTiskSpotrebaNe.Color:= clBtnFace;
|
|
end;
|
|
|
|
|
|
if (rbTiskNaObraz.Checked) then
|
|
begin
|
|
pnlTiskNaObraz.Color:= clMoneyGreen;
|
|
rbTiskNaObraz.Color:= clMoneyGreen;
|
|
end
|
|
else
|
|
begin
|
|
pnlTiskNaObraz.Color:= clBtnFace;
|
|
rbTiskNaObraz.Color:= clBtnFace;
|
|
end;
|
|
|
|
if (rbTiskNaTisk.Checked) then
|
|
begin
|
|
pnlTiskNaTisk.Color:= $005B5BFF;
|
|
rbTiskNaTisk.Color:= $005B5BFF;
|
|
end
|
|
else
|
|
begin
|
|
pnlTiskNaTisk.Color:= clBtnFace;
|
|
rbTiskNaTisk.Color:= clBtnFace;
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformZahajeniPalety.rbTiskNaObrazClick (Sender: TObject);
|
|
begin
|
|
if (rbTiskNaObraz.Checked) then
|
|
rbTiskNaTisk.Checked:= false;
|
|
BarvyTlacitekDleRB;
|
|
end;
|
|
|
|
procedure TformZahajeniPalety.rbTiskNaTiskClick (Sender: TObject);
|
|
begin
|
|
if (rbTiskNaTisk.Checked) then
|
|
rbTiskNaObraz.Checked:= false;
|
|
BarvyTlacitekDleRB;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformZahajeniPalety.rbTiskSarzeAnoClick (Sender: TObject);
|
|
begin
|
|
if (rbTiskSarzeAno.Checked) then
|
|
rbTiskSarzeNe.Checked:= false;
|
|
BarvyTlacitekDleRB;
|
|
end;
|
|
|
|
procedure TformZahajeniPalety.rbTiskSarzeNeClick (Sender: TObject);
|
|
begin
|
|
if (rbTiskSarzeNe.Checked) then
|
|
rbTiskSarzeAno.Checked:= false;
|
|
BarvyTlacitekDleRB;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformZahajeniPalety.rbTiskSpotrebaAnoClick (Sender: TObject);
|
|
begin
|
|
if (rbTiskSpotrebaAno.Checked) then
|
|
rbTiskSpotrebaNe.Checked:= false;
|
|
BarvyTlacitekDleRB;
|
|
end;
|
|
|
|
procedure TformZahajeniPalety.rbTiskSpotrebaNeClick (Sender: TObject);
|
|
begin
|
|
if (rbTiskSpotrebaNe.Checked) then
|
|
rbTiskSpotrebaAno.Checked:= false;
|
|
BarvyTlacitekDleRB;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformZahajeniPalety.btnTiskStitkuClick (Sender: TObject);
|
|
var lSQL, podm, a, errMsg, rc, nazev1, nazevOp, strojNazev, sarze: string;
|
|
n1, n2, n3: integer;
|
|
bidPL, bidKA, idF, idFormNastav: integer;
|
|
d: integer;
|
|
operace: TArray<TOperace>;
|
|
jsemPeceni: boolean;
|
|
jsemBaleni: boolean;
|
|
mjDilce, szDilce: string;
|
|
ksVKA: integer;
|
|
mnozPec, mnozBal, mnoz, sumaMnoz, koefPec: extended;
|
|
iPing: integer;
|
|
|
|
// cPal, typPal: string;
|
|
i, ii, i2, ii2, id, idx, idVCPrikaz, idPalety, idEROp: integer;
|
|
pl: Int64;
|
|
mnSum: integer;
|
|
sl: TStringList;
|
|
canCont: boolean;
|
|
|
|
lHTTP: TIdHTTP;
|
|
ssl: TIdSSLIOHandlerSocketOpenSSL;
|
|
lParamList, respStream: TStringStream;
|
|
resp, resp2: string;
|
|
joOut, joIn, itemsObj: TJSONObject;
|
|
begin
|
|
// Tento výrobek nemá štítek, vytisknu pouze paletový
|
|
|
|
if not(TryStrToInt64(edtPL.Text, pl)) then
|
|
pl:= 0;
|
|
if (pl=0) then
|
|
begin
|
|
Helios.Error(#1'Nelze identifikovat číslo palety'#1);
|
|
Exit;
|
|
end;
|
|
sarze:= edtSarze.Text.Trim;
|
|
canCont:= true;
|
|
|
|
lSQL:= 'DROP TABLE IF EXISTS #AppPekarnaTisk' + CRLF;
|
|
lSQL:= lSQL + 'CREATE TABLE #AppPekarnaTisk (Typ TINYINT NOT NULL, PocetKopii SMALLINT NOT NULL DEFAULT 1, TiskSarze BIT NOT NULL DEFAULT 0, TiskDatExpirace BIT NOT NULL DEFAULT 0 )';
|
|
Helios.ExecSQL (lSQL);
|
|
|
|
|
|
if not(TryStrToInt(edtPocetStitku.Text.Trim, n1)) then
|
|
n1:= 0; // pocet kartonovych stitku
|
|
if not(TryStrToInt(edtPocetPL.Text.Trim, n2)) then
|
|
n2:= 0; // pocetPalet
|
|
if not(TryStrToInt(edtPocetStitkuMax.Text.Trim, n3)) then
|
|
n3:= 0; // pocet kartonovych stitku max
|
|
|
|
ksVKA:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT dbo.ef_Kmen_VratPocetKsVKartonu (' + idKmen.ToString + ')');
|
|
|
|
if (n1<=0) or (n2=0) then
|
|
Helios.Error(#1'Musíte zadat počet kartonových štítků a paletových listů'#1)
|
|
else
|
|
begin
|
|
|
|
{
|
|
lSQL:= 'IF OBJECT_ID(N''dbo.ep_Vyroba_GenerujPalety'', N''P'') IS NOT NULL EXEC dbo.ep_Vyroba_GenerujPalety @idPrikaz=' + idPrikaz.ToString;
|
|
lSQL:= lSQL + ', @pocetStitku=' + n1.ToString + ', @pocetPaletListu=' + n2.ToString + ', @paletaStart=N' + edtPL.Text.Trim.QuotedString;
|
|
lSQL:= lSQL + ', @sarze=N' + edtSarze.Text.Trim.QuotedString;
|
|
}
|
|
|
|
if not(opakTisky) then
|
|
begin
|
|
lSQL:= 'INSERT #AppPekarnaTisk (Typ, PocetKopii, TiskSarze, TiskDatExpirace)'
|
|
+ ' SELECT 1, ' + n2.ToString + ', ' + Abs(rbTiskSarzeAno.Checked.ToInteger).ToString + ', ' + Abs(rbTiskSpotrebaAno.Checked.ToInteger).ToString;
|
|
Helios.ExecSQL (lSQL);
|
|
|
|
try
|
|
lSQL:= 'UPDATE ' + tblPrikazVC + ' SET Popis=N' + sarze.QuotedString + ' WHERE Popis=N'''' AND IDPrikaz=' + idPrikaz.ToString + ' AND VyrCislo=N' + pl.ToString.QuotedString;
|
|
Helios.ExecSQL (lSQL);
|
|
lSQL:= 'UPDATE ' + tblPrikazVC + ' SET DatExpirace=CONVERT(datetime, N' + edtDatSpotreby.Text.QuotedString;
|
|
lSQL:= lSQL + ',104) WHERE DatExpirace IS NULL AND Popis=N' + sarze.QuotedString + ' AND IDPrikaz=' + idPrikaz.ToString + ' AND VyrCislo=N' + pl.ToString.QuotedString;
|
|
Helios.ExecSQL (lSQL);
|
|
|
|
|
|
lSQL:= 'DECLARE @i INT' + CRLF + 'SET @i=ISNULL( (SELECT ID FROM ' + tblPrikazVC + ' WHERE IDPrikaz=' + idPrikaz.ToString + ' AND VyrCislo=N' + pl.ToString.QuotedString;
|
|
lSQL:= lSQL + ' AND Popis=N' + sarze.QuotedString + '), 0)' + CRLF;
|
|
lSQL:= lSQL + 'IF (@i=0)' + CRLF + ' BEGIN' + CRLF + ' INSERT ' + tblPrikazVC + ' (IDPrikaz, VyrCislo, Popis, DatExpirace, Mnozstvi) SELECT ' + idPrikaz.ToString;
|
|
lSQL:= lSQL + ', N' + pl.ToString.QuotedString + ', N' + sarze.QuotedString + ', CONVERT(datetime, N' + edtDatSpotreby.Text.QuotedString;
|
|
lSQL:= lSQL + ',104), ' + m1.ToString.Replace(',', '.') + CRLF + ' SET @i=SCOPE_IDENTITY()' + CRLF + ' END' + CRLF + 'SELECT @i';
|
|
idVCPrikaz:= helUtils.getHeliosIntVal(Helios, 0, lSQL);
|
|
|
|
lSQL:= 'DECLARE @i INT' + CRLF;
|
|
lSQL:= lSQL + 'SET @i=ISNULL( (SELECT 1 FROM ' + tblPalety + ' WHERE IDPrikaz=' + idPrikaz.ToString + ' AND CisloPalety=N' + pl.ToString.QuotedString;
|
|
lSQL:= lSQL + ' AND Sarze=N' + sarze.QuotedString + ' AND Typ=' + typPal + '), 0)' + CRLF;
|
|
lSQL:= lSQL + 'IF (@i=0)' + CRLF + ' BEGIN' + CRLF;
|
|
lSQL:= lSQL + ' INSERT ' + tblPalety + ' (CisloPalety, IDPrikaz, IDStroj, Typ, Sarze, KusuVKA, Mnozstvi, IDVyrCisPrikaz, IDKmen, DatExpirace) SELECT N' + pl.ToString.QuotedString;
|
|
lSQL:= lSQL + ', ' + idPrikaz.ToString + ', ' + idStroj.ToString + ', ' + typPal + ', N' + sarze.QuotedString + ', ' + m1.ToString.Replace(',', '.') + ', ' + m1.ToString.Replace(',', '.');
|
|
lSQL:= lSQL + ' ,' + idVCPrikaz.ToString + ', ' + idKmen.ToString + ', CONVERT(datetime, N' + edtDatSpotreby.Text.QuotedString + ', 104)' + CRLF + ' SET @i=SCOPE_IDENTITY()' + CRLF + ' END' + CRLF;
|
|
lSQL:= lSQL + CRLF + 'SELECT @i';
|
|
idPalety:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
|
|
|
if (f<>nil) and (idPalety>0) then
|
|
begin
|
|
try
|
|
f.grdStroje.DataSource.DataSet.Edit;
|
|
f.grdStroje.DataSource.DataSet.FieldByName('fIDPaleta').AsInteger:= idPalety;
|
|
f.grdStroje.DataSource.DataSet.Post;
|
|
except
|
|
f.grdStroje.DataSource.DataSet.Cancel;
|
|
end;
|
|
end;
|
|
|
|
// Helios.ExecSQL(lSQL);
|
|
except on E:Exception do
|
|
begin
|
|
Helios.Error (#1'Chyba založení palety ' + pl.ToString + #1 + CRLF + E.Message);
|
|
canCont:= false;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
if (opakTisky) and (idPaleta>0) then
|
|
idPalety:= idPaleta;
|
|
|
|
lSQL:= 'UPDATE ' + tblPalety + ' SET TiskDatExpirace=' + IfThen(rbTiskSpotrebaAno.Checked, '1', '0') + ', TiskSarze=' + IfThen(rbTiskSarzeAno.Checked, '1', '0')
|
|
+ ' WHERE ID=' + idPalety.ToString;
|
|
Helios.ExecSQL (lSQL);
|
|
|
|
|
|
if (canCont) and not(opakTisky) then // jen pokud neni opakovany tisk (z Nahledu tisku)
|
|
begin
|
|
|
|
// zapis do evidence rozpracovanych operaci
|
|
idEROp:= 0;
|
|
mnozPec:= 0;
|
|
mnozBal:= 0;
|
|
koefPec:= 0;
|
|
|
|
// nejdriv najdi koeficient pro dilec 702 - 1000ks, tj. ber to od posledni operace
|
|
lSQL:= 'SELECT pp.Doklad, pp.Alt, k.SkupZbo, k.MJEvidence, pp.Nazev, pp.Kusy_zad FROM ' + tblPrPost + ' pp INNER JOIN ' + tblCPrac + ' p ON (pp.pracoviste=p.Id) INNER JOIN ' + tblCStroju;
|
|
lSQL:= lSQL + ' s ON (s.IDPrac=p.ID) INNER JOIN ' + tblKZ + 'k ON (k.ID=pp.dilec)';
|
|
lSQL:= lSQL + ' WHERE pp.IDPrikaz=' + idPrikaz.ToString + ' AND pp.Priorita=0 AND pp.IDOdchylkyDo IS NULL AND s.ID=' + idStroj.ToString;
|
|
lSQL:= lSQL + ' ORDER BY pp.Odvadeci DESC, pp.Doklad DESC';
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
nazevOp:= VarToStr(FieldByNameValues('Nazev'));
|
|
|
|
jsemPeceni:= false;
|
|
if (nazevOp.ToLower='pečení') then
|
|
begin
|
|
jsemPeceni:= true;
|
|
mnozPec:= VarToStr(FieldByNameValues('Kusy_zad')).ToExtended;
|
|
end;
|
|
|
|
jsemBaleni:= false;
|
|
if (nazevOp.ToLower='balení') then
|
|
begin
|
|
jsemBaleni:= true;
|
|
mnozBal:= VarToStr(FieldByNameValues('Kusy_zad')).ToExtended;
|
|
end;
|
|
|
|
if (mnozBal>0) and (mnozPec>0) then
|
|
koefPec:= (mnozBal/mnozPec);
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
|
|
lSQL:= 'SELECT pp.Doklad, pp.Alt, k.SkupZbo, k.MJEvidence, pp.Nazev, pp.Kusy_zad FROM ' + tblPrPost + ' pp INNER JOIN ' + tblCPrac + ' p ON (pp.pracoviste=p.Id) INNER JOIN ' + tblCStroju;
|
|
lSQL:= lSQL + ' s ON (s.IDPrac=p.ID) INNER JOIN ' + tblKZ + 'k ON (k.ID=pp.dilec)';
|
|
lSQL:= lSQL + ' WHERE pp.IDPrikaz=' + idPrikaz.ToString + ' AND pp.Priorita=0 AND pp.IDOdchylkyDo IS NULL AND s.ID=' + idStroj.ToString;
|
|
lSQL:= lSQL + ' ORDER BY pp.Odvadeci, pp.Doklad';
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
idEROp:= 0;
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
szDilce:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
mjDilce:= VarToStr(FieldByNameValues('MJEvidence'));
|
|
{
|
|
nazevOp:= VarToStr(FieldByNameValues('Nazev'));
|
|
jsemPeceni:= false;
|
|
if (nazevOp.ToLower='pečení') then
|
|
begin
|
|
jsemPeceni:= true;
|
|
mnozPec:= VarToStr(FieldByNameValues('Kusy_zad')).ToExtended;
|
|
end;
|
|
|
|
jsemBaleni:= false;
|
|
if (nazevOp.ToLower='balení') then
|
|
begin
|
|
jsemBaleni:= true;
|
|
mnozBal:= VarToStr(FieldByNameValues('Kusy_zad')).ToExtended;
|
|
end;
|
|
|
|
if (mnozBal>0) and (mnozPec>0) then
|
|
koefPec:= (mnozBal/mnozPec);
|
|
}
|
|
if (idEROp=0) then
|
|
begin
|
|
lSQL:= 'DECLARE @i INT' + CRLF + 'EXEC @i=dbo.ep_Vyroba_InsertEvidRozpracOper @IDZamestnance=' + datMod.idZamMistr.ToString + ', @IDStroje=' + datMod.aktIdStroj.ToString + 'SELECT @i';
|
|
idEROp:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
|
end;
|
|
d:= VarToStr(FieldByNameValues('Doklad')).ToInteger;
|
|
a:= VarToStr(FieldByNameValues('Alt'));
|
|
|
|
lSQL:= 'DECLARE @i INT' + CRLF + 'EXEC @i=dbo.ep_Vyroba_InsertEvidRozpracOperPol @IdEvidRozpOper=' + idEROp.ToString + ', @IdPrikaz=' + idPrikaz.ToString + ', @doklPrPost=' + d.ToString;
|
|
lSQL:= lSQL + ', @altPrPost=N' + a.QuotedString + ', @cisloPL=N' + pl.ToString.QuotedString + ', @sarze=N' + sarze.QuotedString;
|
|
|
|
if (mjDilce.ToLower='ka') then
|
|
lSQL:= lSQL + IfThen(n1>0, ', @mnozOdv=' + n1.ToString, '');
|
|
if (mjDilce.ToLower='1000ks') and (koefPec<>0) then
|
|
lSQL:= lSQL + IfThen(n1>0, ', @mnozOdv=' + (helUtils.RoundToEX(n1/koefPec, -3)).ToString.Replace(',', '.'), '');
|
|
|
|
lSQL:= lSQL + ', @IdVyrCis=' + idVCPrikaz.ToString;
|
|
Helios.ExecSQL(lSQL);
|
|
|
|
// lSQL:= 'UPDATE ' + tblPalety + ' SET DatZahajeni=GETDATE() WHERE IDPrikaz=' + idPrikaz.ToString + ' AND Sarze=N' + edtSarze.Text.QuotedString + ' AND CisloPalety=N' + edtPL.Text.QuotedString;
|
|
lSQL:= 'UPDATE ' + tblPalety + ' SET DatZahajeni=GETDATE() WHERE ID=' + idPalety.ToString;
|
|
Helios.ExecSQL(lSQL);
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
// posli JSON o vyrobene palete
|
|
try
|
|
resp:= GenerujJSON (idPrikaz, idVCPrikaz, idEROp, n1).ToJSON (true).Replace(#10,'').Replace(#9,'').Replace('''','');
|
|
|
|
if (resp<>'') and (idPalety>0) and (datMod.phServer<>'') then
|
|
begin
|
|
resp:= TJson.JsonEncode(resp);
|
|
lSQL:= 'UPDATE ' + tblPalety + ' SET JSONDataStart=N' + resp.QuotedString + ' WHERE ID=' + idPalety.ToString;
|
|
Helios.ExecSQL(lSQL);
|
|
try
|
|
lParamList:= TStringStream.Create('');
|
|
lParamList.WriteString (resp);
|
|
respStream:= TStringStream.Create('');
|
|
|
|
iPing:= uPing.Ping (datMod.phServer, resp);
|
|
// if (iPing=0) then
|
|
// begin
|
|
// 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:= '';
|
|
lHTTP.Post (datMod.phServer + IfThen(datMod.phServer.EndsWith('/'), '', '/') + 'prikaz', lParamList, respStream);
|
|
resp:= respStream.DataString.Replace('\/', '/');
|
|
Helios.ExecSQL('UPDATE ' + tblPalety + ' SET JSONStartResp=N' + resp.QuotedString + ' WHERE ID=' + idPalety.ToString);
|
|
// end;
|
|
|
|
finally
|
|
respStream.Free;
|
|
lParamList.Free;
|
|
if (ssl<>nil) then
|
|
ssl.Free;
|
|
lHTTP.Free;
|
|
end;
|
|
end;
|
|
except
|
|
end;
|
|
end; // jen pokud neni opakovany tisk (z Nahledu tisku)
|
|
|
|
|
|
if (canCont) then
|
|
begin
|
|
bidPL:= 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 (bidPL>100000) then
|
|
begin
|
|
|
|
if (idFormKA>0) then // Kartonový štítek (Zebra)
|
|
begin
|
|
lSQL:= 'SELECT TOP(1) ID FROM ' + tblTiskDef + ' WHERE FormDefID=' + idFormKA.ToString + ' AND LoginName IS NULL ORDER BY Prednastaveno DESC';
|
|
idFormNastav:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
|
if (idFormNastav=0) then
|
|
begin
|
|
lSQL:= 'INSERT ' + tblTiskDef + ' (FormDefID, Nazev, Prednastaveno, Implicitni, LevyOkraj, HorniOkraj, TiskFronta) SELECT ' + idFormKA.ToString
|
|
+ ', N''Tisk Zebra'', 1, 0, 0, 0, N''Zebra''' + CRLF + 'SELECT SCOPE_IDENTITY()';
|
|
idFormNastav:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
|
end;
|
|
Helios.ExecSQL('UPDATE ' + tblTiskDef + ' SET PocetKopii=' + n1.ToString + ' WHERE ID=' + idFormNastav.ToString);
|
|
|
|
if (rbTiskNaObraz.Checked) then
|
|
begin
|
|
if (idFormNastav>0) then
|
|
Helios.ExecSQL ('UPDATE ' + tblTiskDef + ' SET ZobrazNahled=1 WHERE ID=' + idFormNastav.ToString);
|
|
// Helios.RunAction2 (bid, podm, 'ActionPrint');
|
|
end
|
|
else
|
|
begin
|
|
if (idFormNastav>0) then
|
|
Helios.ExecSQL ('UPDATE ' + tblTiskDef + ' SET ZobrazNahled=0 WHERE ID=' + idFormNastav.ToString);
|
|
end;
|
|
|
|
podm:= 'hvw_Vyroba_Palety.CisloPalety=N' + pl.ToString.QuotedString;
|
|
// for i:=1 to n1 do
|
|
Helios.PrintForm3 (bidPL, idFormKA, podm);
|
|
end;
|
|
|
|
|
|
// paletovy list
|
|
if (bidPL>100000) and (idFormPL>0) then
|
|
begin
|
|
podm:= 'hvw_Vyroba_Palety.CisloPalety=N' + pl.ToString.QuotedString;
|
|
if (rbTiskNaObraz.Checked) and (1=0) then
|
|
// Helios.RunAction2 (bid, podm, 'ActionPrint')
|
|
else
|
|
for i:=1 to n2 do
|
|
Helios.PrintForm3 (bidPL, idFormPL, podm); // paletovy list
|
|
end;
|
|
|
|
|
|
end;
|
|
end;
|
|
|
|
end;
|
|
|
|
if not(opakTisky) then
|
|
dm.NactiStrojeAPraci (f);
|
|
Close;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TformZahajeniPalety.FormShow (Sender: TObject);
|
|
var lSQL, dat : string;
|
|
mx: integer;
|
|
begin
|
|
if (datVyroba=0) then
|
|
datVyroba:= Now;
|
|
|
|
SetWindowLong(btnTiskStitku.Handle, GWL_STYLE, GetWindowLong((btnTiskStitku as TWinControl).Handle, GWL_STYLE) or BS_MULTILINE);
|
|
|
|
NactiUdajePrikazu;
|
|
if (idKmen=0) and (idPrikaz>0) then
|
|
idKmen:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDTabKmen FROM ' + tblPrikaz + ' WHERE ID=' + idPrikaz.ToString);
|
|
|
|
if (datMod.sqlLang='czech') then
|
|
edtSarze.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT dbo.ef_Vyroba_VratCisloSarze (NULL, 1, 1)') // datum, typ 1=cz/2=gb, iso
|
|
else
|
|
edtSarze.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT dbo.ef_Vyroba_VratCisloSarze (NULL, 1, 0)'); // datum, typ 1=cz/2=gb, iso
|
|
|
|
|
|
lblKANaPal.Caption:= '';
|
|
m1:= 0;
|
|
lSQL:= 'SELECT 1 FROM ' + tblMJZbo + ' WHERE KodMJ1=N''KA'' AND KodMJ2=N''Pal'' AND IDKmenZbozi=' + idKmen.ToString;
|
|
if (helUtils.sqlExistsTestGeneral(Helios, lSQL)) then
|
|
begin
|
|
m1:= helUtils.getHeliosIntVal(Helios, 0, lSQL.Replace('T 1 F', 'T PocetHlavni F'));
|
|
lblKANaPal.Caption:= '(KA/pal)';
|
|
end;
|
|
edtPocetStitku.Text:= m1.ToString;
|
|
edtPocetStitkuMax.Text:= m1.ToString;
|
|
edtPocetPL.Text:= '2'; // tiskne se jeden nebo dva paletove listy
|
|
|
|
|
|
idFormKA:= 0; // Kartonový štítek (Zebra)
|
|
idFormPS:= 0;
|
|
idFormPL:= 0;
|
|
|
|
lSQL:= 'SELECT * FROM ' + tblKZe + ' WHERE ID=' + idKmen.ToString;
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
First;
|
|
if not(TryStrToInt(VarToStr(FieldByNameValues('_KL')), idFormKA)) then
|
|
idFormKA:= 0;
|
|
if not(TryStrToInt(VarToStr(FieldByNameValues('_PalStitek')), idFormPS)) then
|
|
idFormPS:= 0;
|
|
if not(TryStrToInt(VarToStr(FieldByNameValues('_PLKK')), idFormPL)) then
|
|
idFormPL:= 0;
|
|
end;
|
|
|
|
lblWarnStitekKA.Visible:= (idFormKA=0);
|
|
lblWarnStitekPL.Visible:= (idFormPL=0);
|
|
|
|
edtBarvaStitku.Text:= '';
|
|
edtTypStitku.Text:= '';
|
|
edtVelkostStitku.Text:= '';
|
|
|
|
with Helios.OpenSQL ('SELECT * FROM ' + tblKZe + ' WHERE ID=' + idKmen.ToString) do
|
|
begin
|
|
edtBarvaStitku.Text:= VarToStr(FieldByNameValues('_ASOL_BarvaStitku'));
|
|
// edtTypStitku.Text:= VarToStr(FieldByNameValues('_ASOL_BarvaStitku'));
|
|
edtVelkostStitku.Text:= VarToStr(FieldByNameValues('_RozmerStitku'));
|
|
end;
|
|
|
|
|
|
{
|
|
lSQL:= 'SELECT ke._KL FROM ' + tblVPr + ' vp INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IdTabKmen) INNER JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE vp.ID=' + idPrikaz.ToString;
|
|
idFormKA:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
|
lblWarnStitekKA.Visible:= (idFormKA=0);
|
|
|
|
lSQL:= 'SELECT ke._PalStitek FROM ' + tblVPr + ' vp INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IdTabKmen) INNER JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE vp.ID=' + idPrikaz.ToString;
|
|
idFormPS:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
|
|
|
lSQL:= 'SELECT ke._PLKK FROM ' + tblVPr + ' vp INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IdTabKmen) INNER JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE vp.ID=' + idPrikaz.ToString;
|
|
idFormPL:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
|
lblWarnStitekPL.Visible:= (idFormPL=0);
|
|
}
|
|
|
|
|
|
|
|
// typ palety je nove jen jeden, neurcuje se dle kmene !!!
|
|
{
|
|
lSQL:= 'SELECT ID FROM ' + tblPrikazVC + ' WHERE LEFT(VyrCislo,1)<>N''0'' AND IDPrikaz=' + idPrikaz.ToString + ' AND (Mnozstvi-Odvedeno-Zmetky)>0';
|
|
lSQL:= lSQL + ' AND ID NOT IN (SELECT IDVyrCisPrikaz FROM ' + tblPalety + ' WHERE IDPrikaz=' + idPrikaz.ToString + ' AND DatUkonceni IS NULL)';
|
|
if (helUtils.SQLGetRowCount(Helios, lSQL)>0) then
|
|
begin
|
|
lSQL:= 'SELECT TOP(1) VyrCislo, Popis, (Mnozstvi-Odvedeno-Zmetky) AS Zbytek FROM ' + tblPrikazVC + ' WHERE LEFT(VyrCislo,1)<>N''0'' AND IDPrikaz=' + idPrikaz.ToString;
|
|
lSQL:= lSQL + ' AND (Mnozstvi-Odvedeno-Zmetky)>0 ORDER BY VyrCislo';
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
cPal:= VarToStr(FieldByNameValues('VyrCislo'));
|
|
edtSarze.Text:= VarToStr(FieldByNameValues('Popis'));
|
|
edtPocetStitku.Text:= VarToStr(FieldByNameValues('Zbytek'));
|
|
edtPocetStitkuMax.Text:= VarToStr(FieldByNameValues('Zbytek'));
|
|
end;
|
|
end
|
|
else
|
|
cPal:= helUtils.getHeliosStrVal(Helios, '', 'SELECT dbo.ef_Vyroba_VratNovyPaletovyList (3,NULL,NULL,' + idKmen.ToString + ')'); // je zadane ID kmene -> najdi podle typu kmene
|
|
}
|
|
|
|
// typ palety je nove jen jeden, neurcuje se dle kmene !!!
|
|
|
|
cPal:= '';
|
|
if not(opakTisky) then
|
|
begin
|
|
lSQL:= 'SELECT COUNT(ID) FROM ' + tblPrikazVC + ' WHERE IDPrikaz=' + idPrikaz.ToString + ' AND (Mnozstvi-Odvedeno-Zmetky)>0'
|
|
+ ' AND ID NOT IN (SELECT r.IDVyrCis FROM ' + tblRozpracOperR + ' r INNER JOIN ' + tblRozpracOper + ' h ON (h.ID=r.IDEvidRozpracOper) WHERE r.IDVyrCis IS NOT NULL)';
|
|
mx:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
|
|
|
if (mx>0) then
|
|
begin
|
|
lSQL:= lSQL.Replace('COUNT(ID) ', 'TOP(1) VyrCislo ') + ' ORDER BY VyrCislo';
|
|
cPal:= helUtils.getHeliosStrVal (Helios, '', lSQL);
|
|
end;
|
|
if (cPal='') then
|
|
cPal:= helUtils.getHeliosStrVal(Helios, '', 'SELECT dbo.ef_Vyroba_VratNovyPaletovyList (3,NULL,NULL,NULL)');
|
|
end
|
|
else
|
|
if (idPaleta>0) then // pri opakovanem tisku znam ID z dbo._TabVyroba_Palety
|
|
begin
|
|
with Helios.OpenSQL ('SELECT * FROM ' + tblPalety + ' WHERE ID=' + idPaleta.ToString + ' AND IDPrikaz=' + idPrikaz.ToString) do
|
|
begin
|
|
if (RecordCount=1) then
|
|
begin
|
|
cPal:= VarToStr(FieldByNameValues('CisloPalety'));
|
|
edtSarze.Text:= VarToStr(FieldByNameValues('Sarze'));
|
|
dat:= VarToStr(FieldByNameValues('DatZahajeni'));
|
|
if (dat.IndexOf(' ')>-1) then
|
|
dat:= LeftStr(dat, dat.IndexOf(' ')).Trim;
|
|
edtDatVyroby.Text:= dat;
|
|
edtDatSpotreby.Text:= VarToStr(FieldByNameValues('DatExpirace'));
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
edtPL.Text:= cPal;
|
|
|
|
typPal:= '0';
|
|
if (StartsText('5', cPal)) then
|
|
typPal:= '1';
|
|
if (StartsText('6', cPal)) then
|
|
typPal:= '2';
|
|
if (StartsText('7', cPal)) then
|
|
typPal:= '3';
|
|
if (StartsText('8', cPal)) then
|
|
typPal:= '4';
|
|
|
|
|
|
if (edtPocetPL.CanFocus) then
|
|
edtPocetPL.SetFocus;
|
|
|
|
end;
|
|
|
|
end.
|