Files
Polanskych-plgPolanskych/frmOrder2.pas
2025-09-05 12:22:48 +02:00

1203 lines
44 KiB
ObjectPascal

unit frmOrder2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Types, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, System.ImageList, Vcl.ImgList, Vcl.StdCtrls, Vcl.Buttons,
Vcl.ComCtrls, ddPlugin_TLB, TBPackageU, Vcl.WinXPickers, Vcl.Mask, RxToolEdit, Vcl.NumberBox, Vcl.Grids, VirtualTrees,
NxGridView6, NxColumns6, NxControls6, NxCustomGrid6, NxVirtualGrid6, NxGrid6, NxEdit6, MemTableDataEh, Data.DB,
DBGridEhGrouping, ToolCtrlsEh, DBGridEhToolCtrls, DynVarsEh, EhLibVCL, GridsEh, DBAxisGridsEh, DBGridEh, MemTableEh, EhLibMTE,
System.MaskUtils, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase,
IdSMTP, IdBaseComponent, IdMessage, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL,
IdAttachment, IdAttachmentFile, IdAttachmentMemory, datModObj;
type
TWideStringHelper = record helper for WideString
function QuotedString: string; overload;
end;
TMaskedTextHelper = record helper for TMaskedText
function QuotedString: string; overload;
function Replace(oldStr, newStr: string): string; overload;
end;
TVisColumn = record
index: integer;
koeficient: Single;
end;
TSortiment = record
nazev, k1, poleDodav: string;
dodavatel: integer;
poradiSort: Single;
typSort: byte;
end;
TformOrder2 = class(TForm)
gbDodavatel: TGroupBox;
gbPolozky: TGroupBox;
Label1: TLabel;
dtZavoz: TDateTimePicker;
btnOK: TButton;
Label2: TLabel;
lblDodAdresa: TLabel;
lblDodMisto: TLabel;
cbxSortiment: TComboBox;
Label3: TLabel;
edtCisloObj: TNumberBox;
Label4: TLabel;
btnTisk: TButton;
btnPoslat: TButton;
btnRozbalit: TButton;
btnSbalit: TButton;
btnZavrit: TButton;
Panel1: TPanel;
Panel2: TPanel;
edtNumEditor: TNxEdit6;
vTab: TMemTableEh;
ds: TDataSource;
polGrd: TDBGridEh;
vTabPoradiSort: TSingleField;
vTabK1: TStringField;
vTabK2: TStringField;
vTabSortiment: TStringField;
vTabIDZboSklad: TIntegerField;
vTabRegCis: TStringField;
vTabNazev: TStringField;
vTabRano: TFloatField;
vTabPoledne: TFloatField;
vTabStavSkladu: TFloatField;
vTabDoporuceno: TFloatField;
vTabPriorita: TIntegerField;
vTabCisloZbozi: TStringField;
cbxDodavatel: TComboBox;
lblDodICO: TLabel;
lblDodDIC: TLabel;
vTabIDKZ: TIntegerField;
vTabSkupZbo: TStringField;
vTabDodavatel: TIntegerField;
vTabJenRano: TSmallintField;
vTabMinimum: TFloatField;
vTabDelitelnost: TFloatField;
btnVynulovat: TButton;
lblInfo: TLabel;
vTabPoradi: TSingleField;
gbSortiment: TGroupBox;
vTabK1K2: TStringField;
vTabPoradiSortNazev: TStringField;
btnNovaPolozka: TSpeedButton;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure cbxSortimentChange(Sender: TObject);
procedure edtNumEditorClick(Sender: TObject);
procedure btnRozbalitClick(Sender: TObject);
procedure btnSbalitClick(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure cbxDodavatelChange(Sender: TObject);
procedure polGrdKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure btnZavritClick(Sender: TObject);
procedure btnTiskClick(Sender: TObject);
procedure vTabRanoValidate(Sender: TField);
procedure vTabPoledneValidate(Sender: TField);
procedure dtZavozChange(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure btnVynulovatClick(Sender: TObject);
procedure vTabAfterPost(DataSet: TDataSet);
procedure vTabAfterDelete(DataSet: TDataSet);
procedure btnPoslatClick(Sender: TObject);
procedure polGrdDataGroupGetRowText(Sender: TCustomDBGridEh; GroupDataTreeNode: TGroupDataTreeNodeEh; var GroupRowText: string);
procedure btnNovaPolozkaClick(Sender: TObject);
private
cOrg: integer;
visCols: TArray<TVisColumn>;
function ZjistiBranchID: Integer;
procedure NactiKarty;
public
Helios: IHelios;
jeTest: boolean;
oznacKOdeslani: boolean;
end;
var
formOrder2: TformOrder2;
sortim: TArray<TSortiment>;
dmObj: TdmObj;
cOrgs: TArray<Integer>;
cOrgDod: integer;
// poradCislo: integer;
branchID, idDZ, idObd, idBidVydObjHDC, idTiskForm, idTiskFormVydObjHDC, idMailProfile: integer;
tabExtOrdInfo, cisloDokl, rDokl: string;
smtpProfil: boolean;
delkaPoradCisla: byte;
arrIdSS: TArray<Integer>;
implementation
uses System.StrUtils, System.DateUtils, helUtils;
{$R *.dfm}
{$IF CompilerVersion>=34} // Sydney a vys
{$ENDIF}
function TWideStringHelper.QuotedString: string;
begin
Result:= string(Self).QuotedString;
end;
function TMaskedTextHelper.QuotedString: string;
var s: string;
begin
s:= Self;
Result:= s.QuotedString;
end;
function TmaskedTextHelper.Replace(oldStr: string; newStr: string): string;
var s: string;
begin
s:= Self;
Result:= s.Replace(oldStr, newStr);
end;
function TformOrder2.ZjistiBranchID: Integer;
var s: string;
begin
result:= -1;
s:= Helios.Sklad;
if (LeftStr(s, 3)='005') then
result:= RightStr(s, 1).ToInteger;
end;
procedure TformOrder2.btnNovaPolozkaClick(Sender: TObject);
var oVar: OleVariant;
idSS, idKZ: integer;
lSQL, k1, k2: string;
poradiSort, poradiSort2: Single;
begin
lSQL:= 'TabStavSkladu.Blokovano=0';
if (Length(arrIdSS)>0) then
lSQL:= lSQL + ' AND TabStavSkladu.ID NOT IN (' + helUtils.ArrayToString(arrIdSS, ',') + ')';
if Helios.Prenos(bidSS, 'TabStavSkladu.ID', oVar, lSQL, 'Přidejte kartu na objednávku', true) then
begin
idSS:= VarToStr(oVar).ToInteger;
idKZ:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDKmenZbozi FROM ' + tblSS + ' WHERE ID=' + idSS.ToString);
vTab.Append;
vTab.FieldByName('IDZboSklad').AsInteger:= idSS;
vTab.FieldByName('IDKZ').AsInteger:= idKZ;
vTab.FieldByName('Rano').AsInteger:= 0;
vTab.FieldByName('Poledne').AsInteger:= 0;
vTab.FieldByName('Doporuceno').AsInteger:= 0;
lSQL:= 'SELECT k.SkupZbo, k.RegCis, k.Nazev1, k.CisloZbozi, ISNULL(ke._delitelnost,1) AS delitelnost, ISNULL(ke._poradivsortimentu,999) AS PoradiVSort, ISNULL(ke._priorita,3) AS priorita';
lSQL:= lSQL + ', ISNULL(ke._zavoz,1) AS zavoz, ISNULL(so.K1,N'''')+ISNULL(so.K2,N'''') AS K1K2, ISNULL(so.K1,N'''') AS K1, ISNULL(so.K2,N'''') AS K2, ISNULL(k.Aktualni_Dodavatel,-1) AS dodavatel';
lSQL:= lSQL + ', ISNULL(so.Nazev,N'''') AS SortNazev FROM ' + tblKZ + ' k LEFT JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) LEFT JOIN ' + tblSortim;
lSQL:= lSQL + ' so ON (so.ID=k.IDSortiment) LEFT JOIN ' + tblSortimE + ' soe ON (soe.ID=so.ID) WHERE k.ID=' + idKZ.ToString;
with Helios.OpenSQL(lSQL) do
begin
k1:= VarToStr(FieldByNameValues('K1'));
k2:= VarToStr(FieldByNameValues('K2'));
vTab.FieldByName('PoradiSort').AsSingle:= VarToStr(FieldByNameValues('PoradiVSort')).ToSingle;
vTab.FieldByName('K1').AsString:= k1;
vTab.FieldByName('K2').AsString:= k2;
vTab.FieldByName('K1K2').AsString:= k1+k2;
vTab.FieldByName('Priorita').AsInteger:= VarToStr(FieldByNameValues('priorita')).ToInteger;
vTab.FieldByName('Dodavatel').AsInteger:= VarToStr(FieldByNameValues('dodavatel')).ToInteger;
if (VarToStr(FieldByNameValues('zavoz'))='1') then
vTab.FieldByName('JenRano').AsInteger:= 1
else
vTab.FieldByName('JenRano').AsInteger:= 0;
lSQL:= 'SELECT s.ID, s.Nazev, s.K1, ISNULL(s.K2,N'''') AS K2, ISNULL(se.';
case branchID of
1: lSQL:= lSQL + '_PoradiObj_Klas1';
2: lSQL:= lSQL + '_PoradiObj_MozPi';
3: lSQL:= lSQL + '_PoradiObj_MozVod';
else
lSQL:= lSQL + '_priorita';
end;
lSQL:= lSQL + ', ISNULL(se._priorita, 999)) AS Poradi FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE se._Objednavky_Zobrazit=1';
lSQL:= lSQL + ' AND s.K1=N' + k1.QuotedString; // + ' AND s.K2 IS NOT NULL';
lSQL:= lSQL + ' ORDER BY ISNULL(se.';
case branchID of
1: lSQL:= lSQL + '_PoradiObj_Klas1';
2: lSQL:= lSQL + '_PoradiObj_MozPi';
3: lSQL:= lSQL + '_PoradiObj_MozVod';
else
lSQL:= lSQL + '_priorita';
end;
lSQL:= lSQL + ', ISNULL(se._priorita, 999)), K1, ISNULL(s.K2, N'''')';
with Helios.OpenSQL(lSQL) do
if (RecordCount>0) then
begin
poradiSort2:= VarToStr(FieldByNameValues('Poradi')).ToSingle;
vTab.FieldByName('PoradiSortNazev').AsString:= ((poradiSort*1000.0)+poradiSort2).ToString.Replace(',', '.') + ' ' + VarToStr(FieldByNameValues('SortNazev'));
end;
vTab.FieldByName('Sortiment').AsString:= VarToStr(FieldByNameValues('SortNazev'));
vTab.FieldByName('SkupZbo').AsString:= VarToStr(FieldByNameValues('SkupZbo'));
vTab.FieldByName('RegCis').AsString:= VarToStr(FieldByNameValues('RegCis'));
vTab.FieldByName('Nazev').AsString:= VarToStr(FieldByNameValues('Nazev1'));
vTab.FieldByName('StavSkladu').AsExtended:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT ISNULL((SELECT Mnozstvi FROM ' + tblSS + ' WHERE ID=' + idSS.ToString + '),0)');
end;
vTab.Post;
vTab.Refresh;
end;
end;
procedure TformOrder2.btnOKClick(Sender: TObject);
var oldRec, idHlava, idHlava2: integer;
lSQL, spojeniKontaktu, popisKontaktu, idSS, sz, rc: string;
tiskOK, kontaktNalezen: boolean;
begin
cisloDokl:= '';
if (vTab.RecordCount>0) then
begin
// dmObj.ZapisObjednavky(vTab, cOrgDod, edtCisloObj.ValueInt, dtZavoz);
spojeniKontaktu:= '';
popisKontaktu:= '';
kontaktNalezen:= false;
if not(smtpProfil) then
Helios.Error(#1'Nemáte přednastavený emailový profil pro odeslání přes SMTP'#1)
else
begin
with Helios.OpenSQL('EXEC dbo.hp_GetKontaktProKosAOrg @IDKOs=NULL, @CisOrg=' + cOrgDod.ToString + ', @Druh=6') do
if (RecordCount>0) then
begin
First;
while not(EOF) and not(kontaktNalezen) do
begin
popisKontaktu:= VarToStr(FieldValues(0)); // @Popis
spojeniKontaktu:= VarToStr(FieldValues(1)); // @Spojeni
if (spojeniKontaktu<>'') or (popisKontaktu='Objednávky') then
kontaktNalezen:= true;
Next;
end;
end;
if not(kontaktNalezen) then
Helios.Error(#1'U dodavatele není kontakt typu email s popisem "Objednávky"'#1 + CRLF + 'Email nebude automatem odeslán.');
end;
lSQL:= 'IF OBJECT_ID(N''dbo._temp_TabObjednavkaH'') IS NOT NULL' + CRLF + ' DELETE FROM dbo._temp_TabObjednavkaH WHERE Autor=SUSER_SNAME()' + CRLF;
lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabObjednavkaR'') IS NOT NULL AND OBJECT_ID(N''dbo._temp_TabObjednavkaH'') IS NOT NULL' + CRLF + ' DELETE FROM dbo._temp_TabObjednavkaR WHERE';
lSQL:= lSQL + ' IDHlava NOT IN (SELECT ID FROM dbo._temp_TabObjednavkaH)' + CRLF;
lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabObjednavkaH'') IS NOT NULL' + CRLF + ' IF NOT EXISTS(SELECT * FROM dbo._temp_TabObjednavkaH)' + CRLF + ' DROP TABLE dbo._temp_TabObjednavkaH' + CRLF;
lSQL:= lSQL + 'IF OBJECT_ID(N''dbo._temp_TabObjednavkaR'') IS NOT NULL' + CRLF + ' IF NOT EXISTS(SELECT * FROM dbo._temp_TabObjednavkaR)' + CRLF + ' DROP TABLE dbo._temp_TabObjednavkaR';
Helios.ExecSQL(lSQL);
lSQL:= 'IF OBJECT_ID(N''tempdb..#TabObjednavkaH'') IS NOT NULL' + CRLF + ' DROP TABLE #TabObjednavkaH' + CRLF;
lSQL:= lSQL + 'CREATE TABLE #TabObjednavkaH (ID INT IDENTITY(1,1) NOT NULL, CisloOrg INT NOT NULL, Sklad NVARCHAR(30), Datum DATETIME, EmailCil NVARCHAR(80) NOT NULL DEFAULT N''''';
lSQL:= lSQL + ', Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME())';
if (jeTest) then
lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabO', 'dbo._temp_TabO');
Helios.ExecSQL(lSQL);
idHlava:= 0;
lSQL:= 'INSERT #TabObjednavkaH (CisloOrg, Sklad, Datum, EmailCil)' + CRLF + ' SELECT ISNULL(TRY_PARSE(N' + cOrgDod.ToString.Replace(';', '').Replace('-','').Replace(' ', '').QuotedString;
lSQL:= lSQL + ' AS INT), 0), N' + Helios.Sklad.QuotedString + ', CONVERT(datetime, N' + FormatDateTime('d.m.yyyy', dtZavoz.Date).QuotedString + ', 104), N' + spojeniKontaktu.QuotedString;
lSQL:= lSQL + CRLF + 'SELECT SCOPE_IDENTITY()';
if (jeTest) then
lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabO', 'dbo._temp_TabO');
with Helios.OpenSQL(lSQL) do
idHlava:= VarToStr(FieldValues(0)).ToInteger;
lSQL:= 'IF OBJECT_ID(N''tempdb..#TabObjednavkaR'') IS NOT NULL' + CRLF + ' DROP TABLE #TabObjednavkaR' + CRLF;
lSQL:= lSQL + 'CREATE TABLE #TabObjednavkaR (ID INT IDENTITY(1,1) NOT NULL, IDHlava INT NOT NULL, IDZboSklad INT NOT NULL, Rano NUMERIC(15,4) NOT NULL DEFAULT 0.0, PoradiObj NUMERIC(10,2) DEFAULT 999';
lSQL:= lSQL + ', Poledne NUMERIC(15,4) NOT NULL DEFAULT 0.0, Doporuceno NUMERIC(15,4) NOT NULL DEFAULT 0.0, SkupZbo NVARCHAR(3), RegCis NVARCHAR(30), Sklad NVARCHAR(30), Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME())';
if (jeTest) then
lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabO', 'dbo._temp_TabO');
Helios.ExecSQL(lSQL);
lSQL:= 'INSERT dbo._HDC_TabAplikace (TypDokladu, IDSklad) VALUES (1, N' + Helios.Sklad.QuotedString + '); SELECT SCOPE_IDENTITY()';
idHlava2:= helUtils.getHeliosIntVal(Helios, 0, lSQL);
oldRec:= vTab.RecNo;
vTab.DisableControls;
vTab.First;
while not(vTab.Eof) do
begin
if (vTab.FieldByName('Rano').AsSingle>0) or (vTab.FieldByName('Poledne').AsSingle>0) then
begin
idSS:= IfThen(vTab.FieldByName('IDZboSklad').AsString='', '0', vTab.FieldByName('IDZboSklad').AsString);
sz:= vTab.FieldByName('SkupZbo').AsString;
rc:= vTab.FieldByName('RegCis').AsString;
lSQL:= 'INSERT dbo._HDC_TabAplikaceR (IDHlava, TypDokladu, IDSklad, IDZboSklad, CisloZbozi, Rano, Poledne) SELECT ' + idHlava2.ToString + ', 1, N' + Helios.Sklad.QuotedString;
lSQL:= lSQL + ', ' + idSS + ', N' + (sz+rc).QuotedString + ', ' + vTab.FieldByName('Rano').AsSingle.ToString + ', ' + vTab.FieldByName('Poledne').AsSingle.ToString;
Helios.ExecSQL(lSQL);
lSQL:= 'INSERT #TabObjednavkaR (IDHlava, IDZboSklad, Rano, Poledne, Doporuceno, Sklad, PoradiObj, SkupZbo, RegCis)' + CRLF + ' SELECT ' + idHlava.ToString + ', ' + idSS + ', ';
lSQL:= lSQL + vTab.FieldByName('Rano').AsSingle.ToString.Replace(',','.') + ', ' + vTab.FieldByName('Poledne').AsSingle.ToString.Replace(',','.');
lSQL:= lSQL + ', ' + vTab.FieldByName('Doporuceno').AsSingle.ToString.Replace(',','.') + ', N' + Helios.Sklad.QuotedString + ', ' + vTab.FieldByName('Poradi').AsString.Replace(',', '.');
lSQL:= lSQL + ', N' + sz.QuotedString + ', N' + rc.QuotedString;
if (jeTest) then
lSQL:= lSQL.Replace('tempdb..#T', 'dbo._temp_T').Replace('#TabO', 'dbo._temp_TabO');
Helios.ExecSQL(lSQL);
end;
vTab.Next;
end;
vTab.RecNo:= oldRec;
vTab.EnableControls;
idDZ:= 0;
if not(jeTest) then
begin
helUtils.waitStart(self, 'Zápis vydané objednávky...', 0, 0);
try
lSQL:= 'DECLARE @i INT; IF OBJECT_ID(N''dbo.ep_HDC_App_Objednavka'', N''P'') IS NOT NULL EXEC dbo.ep_HDC_App_Objednavka @idDZ=@i OUT, @Sklad=N' + Helios.Sklad.QuotedString + CRLF + 'SELECT @i';
with Helios.OpenSQL(lSQL) do
idDZ:= VarToStr(FieldValues(0)).ToInteger;
if (idDZ>0) and (oznacKOdeslani) then
begin
Helios.ExecSQL('IF NOT EXISTS(SELECT ID FROM ' + tblDZe + ' WHERE ID=' + idDZ.ToString + ') INSERT ' + tblDZe + ' (ID) SELECT ' + idDZ.ToString);
Helios.ExecSQL('UPDATE ' + tblDZe+ ' SET _VydObj_OdeslatNaMail=1 WHERE ID=' + idDZ.ToString);
// Helios.Info(#1'Objednávka byla označena k odeslání emailem dodavateli.'#1);
end;
except
end;
helUtils.waitEnd;
end;
cisloDokl:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PoradoveCislo FROM ' + tblDZ + ' WHERE ID=' + idDZ.ToString);
idTiskForm:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT TiskovyForm FROM ' + tblDDZ + ' WHERE ID=' + idDZ.ToString);
end;
lSQL:= '';
if (Sender.ToString='TButton') then
lSQL:= (Sender as TButton).Name;
if (lSQL='btnOK') then
Close;
if (lSQL='btnTisk') or (lSQL='btnPoslat') then
begin
tiskOK:= false;
Helios.Info(#1'Objednávka byla uložena - č. ' + cisloDokl + #1);
if (lSQL='btnTisk') then
if (idBidVydObjHDC>0) then
tiskOK:= Helios.PrintForm3(idBidVydObjHDC, idTiskFormVydObjHDC, 'ID=' + idDZ.ToString)
else
tiskOK:= Helios.PrintForm2(11, 'ID=' + idDZ.ToString);
end;
end;
procedure TformOrder2.btnPoslatClick(Sender: TObject);
var popisKontaktu, spojeniKontaktu: string;
kontaktNalezen: Boolean;
begin
if (cOrgDod<0) then
begin
Helios.Error(#1'Není vybrán dodavatel'#1);
Exit;
end;
if not(smtpProfil) then
Helios.Error(#1'Nemáte přednastavený emailový profil pro odeslání přes SMTP'#1)
else
begin
spojeniKontaktu:= '';
popisKontaktu:= '';
kontaktNalezen:= false;
with Helios.OpenSQL('EXEC dbo.hp_GetKontaktProKosAOrg @IDKOs=NULL, @CisOrg=' + cOrgDod.ToString + ', @Druh=6') do
if (RecordCount>0) then
begin
First;
while not(EOF) and not(kontaktNalezen) do
begin
popisKontaktu:= VarToStr(FieldValues(0)); // @Popis
spojeniKontaktu:= VarToStr(FieldValues(1)); // @Spojeni
if (spojeniKontaktu<>'') or (popisKontaktu='Objednávky') then
kontaktNalezen:= true;
Next;
end;
end;
if not(kontaktNalezen) then
Helios.Error(#1'U dodavatele není kontakt typu email s popisem "Objednávky"'#1 + CRLF + 'Email nebude automatem odeslán.')
else
begin
btnOKClick(Sender);
if (idDZ>0) then
begin
Helios.ExecSQL('IF NOT EXISTS(SELECT ID FROM ' + tblDZe + ' WHERE ID=' + idDZ.ToString + ') INSERT ' + tblDZe + ' (ID) SELECT ' + idDZ.ToString);
Helios.ExecSQL('UPDATE ' + tblDZe+ ' SET _VydObj_OdeslatNaMail=1 WHERE ID=' + idDZ.ToString);
Helios.Info(#1'Objednávka byla označena k odeslání emailem dodavateli.'#1);
Close;
end
else
Helios.Error(#1'Chyba, objednávku se v rámci odeslání nepodařilo uložit. Zkuste to znovu.'#1)
end;
end;
end;
procedure TformOrder2.btnRozbalitClick(Sender: TObject);
begin
polGrd.DataGrouping.ActiveGroupLevels[0].ExpandNodes;
end;
procedure TformOrder2.btnSbalitClick(Sender: TObject);
begin
polGrd.DataGrouping.ActiveGroupLevels[0].CollapseNodes;
end;
procedure TformOrder2.btnTiskClick(Sender: TObject);
var lSQL: string;
i: integer;
begin
{
lSQL:= 'IF OBJECT_ID(N''tempdb..#TabObjTiskH'') IS NOT NULL DROP TABLE #TabObjTiskH' + CRLF + 'CREATE TABLE #TabObjTiskH (ID INT IDENTITY(1,1) NOT NULL';
lSQL:= lSQL + ', CisloOrg INT NOT NULL, Sklad NVARCHAR(30), Datum DATETIME)' + CRLF;
Helios.ExecSQL(lSQL);
lSQL:= 'INSERT #TabObjTiskH (CisloOrg, Sklad, Datum) SELECT ISNULL(TRY_PARSE(N' + cOrgDod.ToString.Replace(';', '').Replace('-','').Replace(' ', '').QuotedString;
lSQL:= lSQL + ' AS INT), 0), N' + Helios.Sklad.QuotedString + ', CONVERT(datetime, N' + FormatDateTime('d.m.yyyy', dtZavoz.Date).QuotedString + ', 104)';
Helios.ExecSQL(lSQL);
lSQL:= 'IF OBJECT_ID(N''tempdb..#TabObjTiskR'') IS NOT NULL DROP TABLE #TabObjTiskR' + CRLF + 'CREATE TABLE #TabObjTiskR (ID INT IDENTITY(1,1) NOT NULL';
lSQL:= lSQL + ', SkupZbo NVARCHAR(3), RegCis NVARCHAR(30), Nazev1 NVARCHAR(100), Rano NUMERIC(15,3) DEFAULT 0.0, Poledne NUMERIC(15,3) DEFAULT 0.0)' + CRLF;
Helios.ExecSQL(lSQL);
vTab.DisableControls;
vTab.First;
while not(vTab.Eof) do
begin
lSQL:= 'INSERT #TabObjTiskR (SkupZbo, RegCis, Nazev1, Rano, Poledne) SELECT N' + vTab.FieldByName('SkupZbo').AsString.QuotedString + ', N';
lSQL:= lSQL + vTab.FieldByName('RegCis').AsString.QuotedString + ', N' + vTab.FieldByName('Nazev').AsString.QuotedString + ', ';
lSQL:= lSQL + vTab.FieldByName('Rano').AsString.Replace(',', '.') + ', ' + vTab.FieldByName('Poledne').AsString.Replace(',', '.');
Helios.ExecSQL(lSQL);
vTab.Next;
end;
// Helios.PrintForm(12);
vTab.EnableControls;
}
btnOKClick(Sender);
end;
procedure TformOrder2.btnVynulovatClick(Sender: TObject);
var i: integer;
begin
if (vTab.RecordCount>0) then
if (Helios.YesNo('!! POZOR !! Toto je ' + #1 + 'nevratná akce' + #1 + ' !!', false)) then
if (Helios.YesNo('?? Opravdu vynulovat ' + #1 + 'všechna' + #1 + ' nabízená množství ??', false)) then
begin
i:= vTab.RecNo;
vTab.DisableControls;
vTab.First;
while not(vTab.Eof) do
begin
vTab.Edit;
vTab.FieldByName('Rano').AsInteger:= 0;
vTab.FieldByName('Poledne').AsInteger:= 0;
vTab.Post;
vTab.Next;
end;
vTab.EnableControls;
vTab.RecNo:= i;
end;
end;
procedure TformOrder2.btnZavritClick(Sender: TObject);
begin
if (Helios.YesNo('Ukončit bez uložení objednávky ?', false)) then
Close;
end;
procedure TformOrder2.NactiKarty;
var lSQL, sort, k1, k2, cZbo, flt: string;
idSort, idx, idxSS: integer;
poradiSort, poradiSort2: Single;
mnR, mnP: Single;
extOrdInfo: boolean;
begin
if (cbxSortiment.ItemIndex>-1) and (cbxDodavatel.ItemIndex>-1) and (dtZavoz.DateTime>Now) then
begin
idx:= cbxSortiment.ItemIndex;
k1:= sortim[idx].k1;
poradiSort:= 1; // sortim[idx].poradiSort;
lSQL:= 'SELECT s.ID, s.Nazev, s.K1, ISNULL(s.K2,N'''') AS K2, ISNULL(se.';
case branchID of
1: lSQL:= lSQL + '_PoradiObj_Klas1';
2: lSQL:= lSQL + '_PoradiObj_MozPi';
3: lSQL:= lSQL + '_PoradiObj_MozVod';
else
lSQL:= lSQL + '_priorita';
end;
lSQL:= lSQL + ', ISNULL(se._priorita, 999)) AS Poradi FROM ' + tblSortim + ' s LEFT JOIN ' + tblSortimE + ' se ON (se.ID=s.ID) WHERE se._Objednavky_Zobrazit=1';
lSQL:= lSQL + ' AND s.K1=N' + k1.QuotedString; // + ' AND s.K2 IS NOT NULL';
lSQL:= lSQL + ' ORDER BY ISNULL(se.';
case branchID of
1: lSQL:= lSQL + '_PoradiObj_Klas1';
2: lSQL:= lSQL + '_PoradiObj_MozPi';
3: lSQL:= lSQL + '_PoradiObj_MozVod';
else
lSQL:= lSQL + '_priorita';
end;
lSQL:= lSQL + ', ISNULL(se._priorita, 999)), K1, ISNULL(s.K2, N'''')';
with Helios.OpenSQL(lSQL) do
if (RecordCount>0) then
begin
if not(vTab.Active) then
vTab.Open;
tabExtOrdInfo:= '';
lSQL:= 'SET NOCOUNT ON' + CRLF +'DECLARE @dt DATETIME, @tabName NVARCHAR(30)=N''''' + CRLF + ' SET @dt=CONVERT(datetime, N';
lSQL:= lSQL + FormatDateTime('d.m.yyyy', dtZavoz.DateTime).QuotedString + ', 104)' + CRLF;
lSQL:= lSQL + 'IF OBJECT_ID(N''dbo.ep_HDC_App_Objednavka_GenerujTabulkyProObjednavku'', N''P'') IS NOT NULL' + CRLF;
lSQL:= lSQL + ' EXEC dbo.ep_HDC_App_Objednavka_GenerujTabulkyProObjednavku @Dodavatel=' + cOrgDod.ToString;
lSQL:= lSQL + ', @DatumDodani=@dt, @RadaDokladu1=N' + ('7' + branchID.ToString + '0').QuotedString + ', @RadaDokladu2=N';
lSQL:= lSQL + ('7' + branchID.ToString + '1').QuotedString + ', @Sklad=N' + Helios.Sklad.QuotedString + ', @TypSortimentu=';
lSQL:= lSQL + sortim[cbxSortiment.ItemIndex].typSort.ToString + ', @BranchID=' + branchID.ToString + ', @SortimentK1=N' +k1.QuotedString;
lSQL:= lSQL + ', @TabName=@tabName OUT' + CRLF + 'SELECT @tabName';
with Helios.OpenSQL(lSQL) do
tabExtOrdInfo:= VarToStr(FieldValues(0));
flt:= 'K1=''' + k1 + '''';
vTab.Filter:= flt;
vTab.Filtered:= true;
extOrdInfo:= false;
lSQL:= 'SELECT CASE WHEN OBJECT_ID(N'+ tabExtOrdInfo.QuotedString + ', N''U'') IS NOT NULL THEN 1 ELSE 0 END';
with Helios.OpenSQL(lSQL) do
if (VarToStr(FieldValues(0))='1') then
extOrdInfo:= true;
First;
while not(EOF) do
begin
idSort:= VarToStr(FieldByNameValues('ID')).ToInteger;
sort:= VarToStr(FieldByNameValues('Nazev'));
// k1:= VarToStr(FieldByNameValues('K1'));
k2:= VarToStr(FieldByNameValues('K2'));
poradiSort2:= VarToStr(FieldByNameValues('Poradi')).ToSingle;
lSQL:= 'SELECT ISNULL(s.ID,0) AS idSS, k.ID AS idKZ, k.SkupZbo, k.RegCis, k.Nazev1, ISNULL(s.Mnozstvi,0) AS MnSkladem, k.CisloZbozi';
lSQL:= lSQL + ', ISNULL(ke._priorita,0) AS Priorita, ISNULL(k.Aktualni_Dodavatel,-1) AS AktDod, ISNULL(ke._zavoz,0) AS Zavoz, ';
lSQL:= lSQL + 'k.Minimum_Dodavatel, ISNULL(ke._delitelnost,0) AS Delitelnost, ';
if (extOrdInfo) then
lSQL:= lSQL + 'ISNULL(eo.Navrh,0)'
else
lSQL:= lSQL + '0';
lSQL:= lSQL + ' AS Doporuceno, ISNULL(ke.';
// case branchID of
// 1: lSQL:= lSQL + '_PoradiSortiment_Klas1';
// 2: lSQL:= lSQL + '_PoradiSortiment_MozVod';
// 3: lSQL:= lSQL + '_PoradiSortiment_MozPi';
// else
lSQL:= lSQL + '_poradivsortimentu';
// end;
lSQL:= lSQL + ', ISNULL(ke._poradivsortimentu, 999)) AS PoradiVSort FROM ' + tblKZ + ' k LEFT JOIN ' + tblSS + ' s ON (s.IDKmenZbozi=k.ID AND s.IDSklad=N';
lSQL:= lSQL + Helios.Sklad.QuotedString + ') INNER JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID)';
if (extOrdInfo) then
lSQL:= lSQL + ' LEFT JOIN ' + tabExtOrdInfo + ' eo ON (eo.SkupZbo=k.SkupZbo AND eo.RegCis=k.RegCis)';
lSQL:= lSQL + ' WHERE k.IDSortiment=' + idSort.ToString + ' ORDER BY ISNULL(ke.';
// case branchID of
// 1: lSQL:= lSQL + '_PoradiSortiment_Klas1';
// 2: lSQL:= lSQL + '_PoradiSortiment_MozVod';
// 3: lSQL:= lSQL + '_PoradiSortiment_MozPi';
// else
lSQL:= lSQL + '_poradivsortimentu';
// end;
lSQL:= lSQL + ', ISNULL(ke._poradivsortimentu, 999))';
with Helios.OpenSQL(lSQL) do
if (RecordCount>0) then
begin
First;
while not(EOF) do
begin
cZbo:= VarToStr(FieldByNameValues('CisloZbozi'));
if not(vTab.Locate('CisloZbozi', cZbo, [])) then
begin
vTab.Append;
vTab.FieldByName('Sortiment').AsString:= sort;
vTab.FieldByName('PoradiSort').AsSingle:= poradiSort;
vTab.FieldByName('K1').AsString:= k1;
vTab.FieldByName('K2').AsString:= k2;
vTab.FieldByName('K1K2').AsString:= k1+k2;
vTab.FieldByName('PoradiSortNazev').AsString:= ((poradiSort*1000.0)+poradiSort2).ToString.Replace(',', '.') + ' ' + sort;
vTab.FieldByName('IDZboSklad').AsInteger:= VarToStr(FieldByNameValues('idSS')).ToInteger;
vTab.FieldByName('IDKZ').AsInteger:= VarToStr(FieldByNameValues('idKZ')).ToInteger;
vTab.FieldByName('SkupZbo').AsString:= VarToStr(FieldByNameValues('SkupZbo'));
vTab.FieldByName('RegCis').AsString:= VarToStr(FieldByNameValues('RegCis'));
vTab.FieldByName('Nazev').AsString:= VarToStr(FieldByNameValues('Nazev1'));
vTab.FieldByName('CisloZbozi').AsString:= cZbo;
vTab.FieldByName('Priorita').AsInteger:= VarToStr(FieldByNameValues('Priorita')).ToInteger;
vTab.FieldByName('Poradi').AsSingle:= VarToStr(FieldByNameValues('PoradiVSort')).ToSingle;
vTab.FieldByName('StavSkladu').AsFloat:= VarToStr(FieldByNameValues('MnSkladem')).ToExtended;
vTab.FieldByName('Doporuceno').AsFloat:= VarToStr(FieldByNameValues('Doporuceno')).ToExtended;
vTab.FieldByName('Rano').AsFloat:= VarToStr(FieldByNameValues('Doporuceno')).ToExtended;
vTab.FieldByName('Poledne').AsFloat:= 0;
vTab.FieldByName('Dodavatel').AsInteger:= VarToStr(FieldByNameValues('AktDod')).ToInteger;
vTab.FieldByName('JenRano').AsInteger:= VarToStr(FieldByNameValues('Zavoz')).ToInteger;
vTab.FieldByName('Minimum').AsFloat:= VarToStr(FieldByNameValues('Minimum_Dodavatel')).ToExtended;
vTab.FieldByName('Delitelnost').AsFloat:= VarToStr(FieldByNameValues('Delitelnost')).ToExtended;
vTab.Post;
end;
Next;
end;
end;
Next;
end;
flt:= 'K1=''' + k1 + '''';
if (cOrgDod>-1) then
flt:= flt + ' AND Dodavatel=' + cOrgDod.ToString;
vTab.Filter:= flt;
vTab.Filtered:= true;
end;
vTab.SortByFields('PoradiSortNazev,Poradi,SkupZbo,RegCis');
helUtils.waitEnd;
polGrd.Options:= polGrd.Options + [dgEditing];
if not(vTab.Active) then
polGrd.Options:= polGrd.Options - [dgEditing]
else
if (vTab.RecordCount=0) then
polGrd.Options:= polGrd.Options - [dgEditing];
if (k1='001') then
vTab.Locate('K1;K2', VarArrayOf(['001','']), []);
end;
end;
procedure TformOrder2.polGrdDataGroupGetRowText(Sender: TCustomDBGridEh; GroupDataTreeNode: TGroupDataTreeNodeEh; var GroupRowText: string);
var s, s2: string;
i: integer;
errReverse: boolean;
begin
errReverse:= false;
s2:= '(123)';
s2:= ReverseString(s2);
if (s2.EndsWith('(')) then
errReverse:= true;
s:= GroupRowText.Replace('PoradiSortNazev: ', '');
if (s.IndexOf(' ')>-1) then
s:= MidStr(s, s.IndexOf(' ')+1, s.Length).Trim;
if (s.EndsWith(')')) then
begin
s:= ReverseString(s);
if (errReverse) then
i:= s.IndexOf('(')
else
i:= s.IndexOf(')');
if (i>-1) then
s:= MidStr(s, i+2, s.Length);
s:= ReverseString(s).Trim;
end;
s2:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) KatAllTecky FROM ' + tblSortim + ' WHERE Nazev=N' + s.QuotedString);
GroupRowText:= IfThen(s2<>'', s2 + ' ', '') + s;
end;
procedure TformOrder2.polGrdKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var i, i2: integer;
lSQL: string;
begin
if (Key=Ord('p')) or (Key=Ord('P')) then
begin
i:= polGrd.DataSource.DataSet.FieldByName('IDKZ').AsInteger;
if (i>0) then
begin
lSQL:= 'TabPohybyZbozi.IDZboSklad=(SELECT ID FROM ' + tblSS + ' WHERE IDKmenZbozi=' + i.ToString + ' AND IDSklad=N' + Helios.Sklad.QuotedString + ')';
Helios.OpenBrowse(66, lSQL);
end;
end;
if (Key=Ord('o')) or (Key=Ord('O')) then
begin
i:= polGrd.DataSource.DataSet.FieldByName('IDKZ').AsInteger;
i2:= 0;
with Helios.OpenSQL('SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_HDC_StareProdeje_Pol''') do
if (RecordCount=1) then
i2:= VarToStr(FieldValues(0)).ToInteger;
if (i2>0) then
begin
lSQL:= 'hvw_HDC_StareProdeje_Pol.IDSklad=N' + Helios.Sklad.QuotedString + ' AND hvw_HDC_StareProdeje_Pol.SkupZbo=N';
lSQL:= lSQL + polGrd.DataSource.DataSet.FieldByName('SkupZbo').AsString.QuotedString + ' AND hvw_HDC_StareProdeje_Pol.RegCis=N';
lSQL:= lSQL + polGrd.DataSource.DataSet.FieldByName('RegCis').AsString.QuotedString;
lSQL:= lSQL + ' AND hvw_HDC_StareProdeje_Pol.DruhPohybuZbo IN (2,4)';
Helios.OpenBrowse(i2, lSQL);
end;
end;
end;
procedure TformOrder2.vTabAfterDelete(DataSet: TDataSet);
begin
btnVynulovat.Enabled:= (DataSet.RecordCount>0);
end;
procedure TformOrder2.vTabAfterPost(DataSet: TDataSet);
var maxPoz: integer;
begin
btnVynulovat.Enabled:= (DataSet.RecordCount>0);
SetLength(arrIdSS, Length(arrIdSS)+1);
maxPoz:= Length(arrIdSS)-1;
arrIdSS[maxPoz]:= DataSet.FieldByName('IDZboSklad').AsInteger;
end;
procedure TformOrder2.vTabPoledneValidate(Sender: TField);
var canCont: Boolean;
mv, mm: Single;
begin
canCont:= true;
mv:= TField(Sender).AsFloat;
mm:= TField(Sender).DataSet.FieldByName('Minimum').AsSingle;
if (TField(Sender).AsInteger<>0) and (TField(Sender).DataSet.FieldByName('JenRano').AsInteger=1) then
begin
TField(Sender).DataSet.Cancel;
Helios.Error(#1'Položka "' + TField(Sender).DataSet.FieldByName('RegCis').AsString +'" je určena jen pro ranní závoz.'#1);
canCont:= false;
end;
if (canCont) and (TField(Sender).AsInteger<0) then
begin
canCont:= false;
Helios.Error(#1'Položka "' + TField(Sender).DataSet.FieldByName('RegCis').AsString +'" je určena jen pro ranní závoz.'#1);
end;
if (canCont) and (mv<mm) then
begin
canCont:= false;
Helios.Error(#1'Minimální množství je ' + FormatFloat('#,##0.###', mm) + #1);
end;
if not(canCont) then
TField(Sender).DataSet.Cancel;
end;
procedure TformOrder2.vTabRanoValidate(Sender: TField);
var canCont: Boolean;
mv, mm: Single;
begin
canCont:= true;
mv:= TField(Sender).AsFloat;
mm:= TField(Sender).DataSet.FieldByName('Minimum').AsSingle;
if (TField(Sender).AsInteger<0) then
begin
canCont:= false;
Helios.Error(#1'Lze zadávat jen kladná čísla.'#1);
end;
if (canCont) and (mv<mm) then
begin
canCont:= false;
Helios.Error(#1'Minimální množství je ' + FormatFloat('#,##0.###', mm) + #1);
end;
if not(canCont) then
TField(Sender).DataSet.Cancel;
end;
procedure TformOrder2.cbxSortimentChange(Sender: TObject);
var lSQL: string;
idx: integer;
begin
lblDodAdresa.Caption:='';
lblDodMisto.Caption:= '';
idx:= cbxSortiment.ItemIndex;
cbxDodavatel.Items.Clear;
lSQL:= 'SELECT CisloOrg, Nazev, UliceSCisly, Misto, ICO, DIC FROM ' + tblCOrg + ' c INNER JOIN ' + tblCOrgE + ' ce ON (ce.ID=c.ID) WHERE ce.';
lSQL:= lSQL + sortim[idx].poleDodav + '=1';
with Helios.OpenSQL(lSQL) do
if (RecordCount>0) then
begin
SetLength(cOrgs, RecordCount);
First;
idx:= 0;
while not(EOF) do
begin
cbxDodavatel.Items.Add(VarToStr(FieldValues(1)));
cOrgs[idx]:= VarToStr(FieldValues(0)).ToInteger;
Inc(idx);
Next;
end;
end;
if (cbxDodavatel.Items.Count=1) then
helUtils.waitStart(nil, 'Načítám historická data...', 0, 0);
cbxDodavatel.ItemIndex:= helUtils.IfThenInt(cbxDodavatel.Items.Count=1, 0, -1);
polGrd.Enabled:= (cbxDodavatel.ItemIndex>-1);
{
polGrd.Options:= polGrd.Options + [dgEditing];
if not(vTab.Active) then
polGrd.Options:= polGrd.Options - [dgEditing]
else
if (vTab.RecordCount=0) then
polGrd.Options:= polGrd.Options - [dgEditing];
}
cbxDodavatelChange(Sender);
end;
procedure TformOrder2.dtZavozChange(Sender: TObject);
var lSQL, podm: string;
begin
idObd:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblObd + ' WHERE DatumOd_Y=' + dtZavoz.DateTime.GetYear.ToString);
lSQL:= 'SELECT DelkaPorCis FROM ' + tblObd + ' WHERE ID=' + idObd.ToString;
delkaPoradCisla:= helUtils.getHeliosIntVal(Helios, 6, lSQL);
podm:= 'DruhPohybuZbo=6 AND IDSklad=N' + Helios.Sklad.QuotedString + ' AND RadaDokladu=N' + rDokl.QuotedString + ' AND Obdobi=' + idObd.ToString;
lSQL:= 'SELECT def.PosledniPC FROM ' + tblDDZ + ' d INNER JOIN ' + tblDDZdef + ' def ON (def.IDDruhDZ=d.ID) WHERE d.DruhPohybuZbo=6 AND def.IDObdobi=' + idObd.ToString;
lSQL:= lSQL + ' AND d.RadaDokladu=N' + rDokl.QuotedString;
lSQL:= 'DECLARE @ppc INT, @d INT, @i INT' + CRLF + 'SET @ppc=ISNULL( (' + lSQL + '), 1)' + CRLF + 'SET @d=(DATEPART(year, GETDATE())-2000) * 10000' + CRLF;
lSQL:= lSQL + 'IF (@ppc=@d) SET @ppc=@ppc+1' + CRLF;
lSQL:= lSQL + 'EXEC @i=dbo.hp_NajdiPrvniVolny @Tabulka=N''TabDokladyZbozi'', @Atribut=N''PoradoveCislo'', @Odkud=@ppc, @Kam=999999, @Where=N' + podm.QuotedString + ', @Returnem=1';
lSQL:= lSQL + CRLF + 'SELECT @i';
cisloDokl:= helUtils.getHeliosStrVal(Helios, (YearOf(now)-2000).ToString + StringOfChar('0', delkaPoradCisla-2-1) + '1', lSQL);
edtCisloObj.ValueInt:= cisloDokl.ToInteger;
end;
procedure TformOrder2.cbxDodavatelChange(Sender: TObject);
var lSQL: string;
begin
if (cbxDodavatel.ItemIndex>0) then
helUtils.waitStart(nil, 'Načítám historická data...', 0, 0);
lblDodAdresa.Caption:= '';
lblDodMisto.Caption:= '';
lblDodICO.Caption:= '';
lblDodDIC.Caption:= '';
gbDodavatel.Caption:= ' Dodavatel ';
if (cbxDodavatel.ItemIndex=-1) then
cOrgDod:= -1
else
cOrgDod:= cOrgs[cbxDodavatel.ItemIndex];
lSQL:= 'SELECT Nazev, UliceSCisly, Misto, PSC, ICO, DIC FROM ' + tblCOrg + ' WHERE CisloOrg=' + cOrgDod.ToString;
with Helios.OpenSQL(lSQL) do
if (RecordCount>0) then
begin
lblDodAdresa.Caption:= VarToStr(FieldValues(1));
lblDodMisto.Caption:= VarToStr(FieldValues(3)) + ' ' + VarToStr(FieldValues(2));
lblDodICO.Caption:= 'IČ ' + VarToStr(FieldValues(4));
lblDodDIC.Caption:= 'DIČ ' + VarToStr(FieldValues(5));
gbDodavatel.Caption:= ' Dodavatel: č.org. ' + cOrgDod.ToString + ' ';
NactiKarty;
end
else
begin
vTab.Filter:= 'K1=''999''';
vTab.Filtered:= true;
end;
polGrd.Enabled:= (cOrgDod>-1);
if (polGrd.Enabled) then
polGrd.DataSource.DataSet.First;
end;
procedure TformOrder2.edtNumEditorClick(Sender: TObject);
begin
edtNumEditor.Visible:= true;
end;
procedure TformOrder2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if (vTab.Active) then
vTab.Close;
if (tabExtOrdInfo<>'') and not(jeTest) then
Helios.ExecSQL('IF OBJECT_ID(N' + tabExtOrdInfo.QuotedString + ', N''U'') IS NOT NULL DROP TABLE ' + tabExtOrdInfo);
Action:= caFree;
end;
procedure TformOrder2.FormResize(Sender: TObject);
var i, ii, w: integer;
begin
for i:=0 to polGrd.Columns.Count-1 do
begin
for ii:=0 to Length(visCols)-1 do
if (visCols[ii].index=i) and (polGrd.Columns.Items[i].Visible) then
polGrd.Columns[i].Width:= Trunc(visCols[ii].koeficient * polGrd.Width);
end;
end;
procedure TformOrder2.FormShow(Sender: TObject);
var rHeight, i, ii: integer;
lSQL, podm: string;
m: TMonitor;
begin
UseLatestCommonDialogs:= true;
{
self.Top:= 0;
self.Left:= 0;
self.Height:= Screen.WorkAreaHeight-25;
self.Width:= Screen.WorkAreaWidth;
}
edtNumEditor.Height:= polGrd.RowHeight+2;
rDokl:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) RadaDokladu FROM ' + tblDDZ + ' WHERE DruhPohybuZbo=6 AND StredNaklad=N' + Helios.Sklad.QuotedString);
if (rDokl='') then
begin
Helios.Error(#1'Chyba zjišťování řady dokladu VydObj'#1 + CRLF + '(nelze dohledat podle nákl.střediska)');
Close;
end;
idObd:= Helios.Obdobi;
dtZavoz.DateTime:= IncDay(Now, 1);
dtZavozChange(Sender);
lblInfo.Caption:= 'w: ' + Screen.WorkAreaWidth.ToString + ' / h: ' + Screen.WorkAreaHeight.ToString;
smtpProfil:= false;
idMailProfile:= 0;
with Helios.OpenSQL('SELECT ID FROM ' + tblUziv + ' WHERE EMailIDProfilu IS NOT NULL AND LoginName=SUSER_SNAME()') do
if (RecordCount=1) then
idMailProfile:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT EMailIDProfilu FROM ' + tblUziv + ' WHERE EMailIDProfilu IS NOT NULL AND LoginName=SUSER_SNAME()');
if (idMailProfile>0) then
with Helios.OpenSQL('SELECT ID FROM ' + tblMailProfil + ' WHERE ID=' + idMailProfile.ToString + ' AND TypRozhrani=2') do
if (RecordCount=1) then
smtpProfil:= true;
idBidVydObjHDC:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT 100000+Cislo FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_DokladyZbozi''');
idTiskFormVydObjHDC:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblFormDef + ' WHERE Nazev=N''Objednávka pekárna'' AND Aktivni=1 AND Skupina=' + idBidVydObjHDC.ToString);
ii:= 0;
SetLength(visCols, polGrd.VisibleColumns.Count);
for i:=0 to polGrd.Columns.Count-1 do
if (polGrd.Columns.Items[i].Visible) then
begin
visCols[ii].index:= i;
visCols[ii].koeficient:= RoundToEx(polGrd.Columns.Items[i].Width / polGrd.Width, -5);
Inc(ii);
end;
{
podm:= 'DruhPohybuZbo=6 AND IDSklad=N' + Helios.Sklad.QuotedString + ' AND RadaDokladu=N' + rDokl.QuotedString + ' AND Obdobi=' + idObd.ToString;
lSQL:= 'SELECT def.PosledniPC FROM ' + tblDDZ + ' d INNER JOIN ' + tblDDZdef + ' def ON (def.IDDruhDZ=d.ID) WHERE d.DruhPohybuZbo=6 AND def.IDObdobi=' + idObd.ToString;
lSQL:= lSQL + ' AND d.RadaDokladu=N' + rDokl.QuotedString;
lSQL:= 'DECLARE @ppc INT, @i INT' + CRLF + 'SET @ppc=ISNULL( (' + lSQL + '), 1)' + CRLF;
lSQL:= lSQL + 'EXEC @i=dbo.hp_NajdiPrvniVolny @Tabulka=N''TabDokladyZbozi'', @Atribut=N''PoradoveCislo'', @Odkud=@ppc, @Kam=999999, @Where=N' + podm.QuotedString + ', @Returnem=1; SELECT @i';
cisloDokl:= helUtils.getHeliosStrVal(Helios, '0', lSQL);
edtCisloObj.ValueInt:= cisloDokl.ToInteger;
}
{
rDokl:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) RadaDokladu FROM ' + tblDDZ + ' WHERE DruhPohybuZbo=6 AND StredNaklad=N' + Helios.Sklad.QuotedString);
if (rDokl='') then
begin
Helios.Error(#1'Chyba zjišťování řady dokladu VydObj'#1 + CRLF + '(nelze dohledat podle nákl.střediska)');
Close;
end;
lSQL:= 'DruhPohybuZbo=6 AND IDSklad=N' + Helios.Sklad.QuotedString + ' AND RadaDokladu=N' + rDokl.QuotedString + ' AND Obdobi=' + Helios.Obdobi.ToString;
lSQL:= 'DECLARE @i INT; EXEC @i=dbo.hp_NajdiPrvniVolny @Tabulka=N''TabDokladyZbozi'', @Atribut=N''PoradoveCislo'', @Odkud=0, @Kam=999999, @Where=N' + lSQL.QuotedString + ', @Returnem=1; SELECT @i';
poradCislo:= helUtils.getHeliosIntVal(Helios, 0, lSQL);
}
{
grd.RowCount:= 2;
grd.FixedRows:= 1;
rHeight:= grd.Canvas.TextHeight('Áý');
grd.DefaultRowHeight:= grd.Font.Size + 18;
// grd.RowHeights[1]:= grd.Canvas.TextHeight('Akce') + 4;
grd.Cells[0, 0]:= 'Akce';
grd.Cells[1, 0]:= 'Číslo';
grd.Cells[2, 0]:= 'Název';
grd.Cells[3, 0]:= 'Doporučeno';
grd.Cells[4, 0]:= 'Ráno';
grd.Cells[5, 0]:= 'Poledne';
}
branchID:= ZjistiBranchID;
cOrgDod:= -1;
lblDodAdresa.Caption:= '';
lblDodMisto.Caption:= '';
lblDodICO.Caption:= '';
lblDodDIC.Caption:= '';
cbxSortiment.Items.Clear;
lSQL:= 'SELECT DISTINCT(s.K1), ISNULL(e.';
case branchID of
1: lSQL:= lSQL + '_PoradiObj_Klas1';
2: lSQL:= lSQL + '_PoradiObj_MozPi';
3: lSQL:= lSQL + '_PoradiObj_MozVod';
else
lSQL:= lSQL + '_priorita';
end;
lSQL:= lSQL + ', ISNULL(e._priorita, 999)) AS PoradiSort FROM ' + tblSortim + ' s INNER JOIN ' + tblSortimE + ' e ON (e.ID=s.ID) WHERE e._Objednavky_Zobrazit=1';
lSQL:= lSQL + ' AND ISNULL(e.';
case branchID of
1: lSQL:= lSQL + '_PoradiObj_Klas1';
2: lSQL:= lSQL + '_PoradiObj_MozPi';
3: lSQL:= lSQL + '_PoradiObj_MozVod';
else
lSQL:= lSQL + '_priorita';
end;
lSQL:= lSQL + ', 0)>0 GROUP BY s.K1, ISNULL(e.';
case branchID of
1: lSQL:= lSQL + '_PoradiObj_Klas1';
2: lSQL:= lSQL + '_PoradiObj_MozPi';
3: lSQL:= lSQL + '_PoradiObj_MozVod';
else
lSQL:= lSQL + '_priorita';
end;
lSQL:= lSQL + ', ISNULL(e._priorita, 999))';
lSQL:= 'SELECT DISTINCT(s.K1) FROM ' + tblSortim + ' s INNER JOIN ' + tblSortimE + ' e ON (e.ID=s.ID) WHERE e._Objednavky_Zobrazit=1';
lSQL:= lSQL + ' GROUP BY s.K1';
with Helios.OpenSQL(lSQL) do
if (RecordCount>0) then
begin
SetLength(sortim, RecordCount);
i:= 0;
First;
while not(EOF) do
begin
cbxSortiment.Items.Add(helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblSortim + ' WHERE K2 IS NULL AND K1=N' + VarToStr(FieldValues(0)).QuotedString));
sortim[i].k1:= VarToStr(FieldValues(0));
// sortim[i].poradiSort:= VarToStr(FieldValues(1)).ToSingle;
sortim[i].nazev:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblSortim + ' WHERE K2 IS NULL AND K1=N' + VarToStr(FieldValues(0)).QuotedString);
sortim[i].poleDodav:= '';
sortim[i].typSort:= 255;
if (sortim[i].k1='001') then
begin
sortim[i].typSort:= 0;
sortim[i].poleDodav:= '_dodpek';
end;
if (sortim[i].k1='003') then
begin
sortim[i].typSort:= 1;
sortim[i].poleDodav:= '_dodlah';
end;
if (sortim[i].k1='004') then
begin
sortim[i].typSort:= 2;
sortim[i].poleDodav:= '_dodvelko';
end;
Inc(i);
Next;
end;
cbxSortiment.ItemIndex:= 0;
cbxSortimentChange(Sender);
end;
end;
end.