836 lines
33 KiB
ObjectPascal
836 lines
33 KiB
ObjectPascal
unit frmUnit9;
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
|
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
|
|
RzEdit, Vcl.Mask, RzBtnEdt, ddPlugin_TLB, Vcl.ComCtrls,
|
|
RzDTP, FireDAC.Stan.Intf, FireDAC.Stan.Option,
|
|
FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf,
|
|
FireDAC.DApt.Intf, FireDAC.Comp.DataSet, Vcl.Grids, Vcl.DBGrids, JvExDBGrids, JvDBGrid, Data.DB,
|
|
FireDAC.Comp.Client;
|
|
|
|
const
|
|
tblEvidNadvyroby = '[dbo].[_TabEvidNadvyroby]';
|
|
tblEvidNadvyrVPr = '[dbo].[_TabEvidNadvyrPrikaz]';
|
|
druhPrevVydejDP = '450';
|
|
druhPrevPrijDP = '250';
|
|
sklVyroba = '200';
|
|
sklFin = '210';
|
|
sklDP = '20000105';
|
|
errPlg = #13#10 + '(plgLOVATO.unit9)';
|
|
|
|
type
|
|
TfrmVydejDPrace = class(TForm)
|
|
GroupBox1: TGroupBox;
|
|
selCisZam: TRzButtonEdit;
|
|
selRegCis: TRzButtonEdit;
|
|
edtMnoz: TRzNumericEdit;
|
|
dsPolos: TDataSource;
|
|
dsMat: TDataSource;
|
|
vtPolos: TFDMemTable;
|
|
vtMat: TFDMemTable;
|
|
Label1: TLabel;
|
|
lblZamest: TLabel;
|
|
Label2: TLabel;
|
|
Label3: TLabel;
|
|
Label4: TLabel;
|
|
lblPopis: TLabel;
|
|
lblSZ: TLabel;
|
|
btnAdd: TButton;
|
|
OK: TButton;
|
|
btnCancel: TButton;
|
|
Label5: TLabel;
|
|
dtDatum: TRzDateTimePicker;
|
|
vtPolosSkupZbo: TStringField;
|
|
vtPolosRegCis: TStringField;
|
|
vtPolosPopis: TStringField;
|
|
vtPolosMnoz: TFloatField;
|
|
vtPolosidKZ: TIntegerField;
|
|
vtMatSkupZbo: TStringField;
|
|
vtMatRegCis: TStringField;
|
|
vtMatPopis: TStringField;
|
|
vtMatMnoz: TFloatField;
|
|
vtMatidKZ: TIntegerField;
|
|
vtMatMnozSkl: TFloatField;
|
|
gPolos2: TJvDBGrid;
|
|
gMat2: TJvDBGrid;
|
|
procedure FormShow (Sender: TObject);
|
|
procedure btnAddClick (Sender: TObject);
|
|
procedure selRegCisButtonClick (Sender: TObject);
|
|
procedure vtPolosAfterPost (DataSet: TDataSet);
|
|
procedure selCisZamButtonClick (Sender: TObject);
|
|
procedure OKClick (Sender: TObject);
|
|
procedure FormClose (Sender: TObject; var Action: TCloseAction);
|
|
procedure edtMnozKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
procedure FormActivate (Sender: TObject);
|
|
procedure selCisZamExit (Sender: TObject);
|
|
procedure selRegCisExit (Sender: TObject);
|
|
procedure gPolos2DblClick (Sender: TObject);
|
|
procedure gMat2DrawDataCell (Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);
|
|
private
|
|
procedure VytvorTabulkyAGridy;
|
|
procedure NastavFonty;
|
|
function VratKZSZ(id: integer): ShortString;
|
|
function VratKZNazev1(id: integer): ShortString;
|
|
function VratKZRegCis(id: integer): ShortString;
|
|
public
|
|
Helios: IHelios;
|
|
end;
|
|
|
|
var
|
|
frmVydejDPrace: TfrmVydejDPrace;
|
|
idKZ, cZam, idZam: integer;
|
|
mnoz: Extended;
|
|
vOle1,vOle2: OleVariant;
|
|
|
|
implementation
|
|
uses Vcl.Clipbrd, helUtils;
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure TfrmVydejDPrace.VytvorTabulkyAGridy;
|
|
begin
|
|
if not vtPolos.Active then
|
|
vtPolos.Open;
|
|
vtPolos.EmptyDataset;
|
|
|
|
if not vtMat.Active then
|
|
vtMat.Open;
|
|
vtMat.EmptyDataset;
|
|
end;
|
|
|
|
|
|
|
|
|
|
function TfrmVydejDPrace.VratKZRegCis(id: Integer): ShortString;
|
|
begin
|
|
result:= '';
|
|
if (id>0) then
|
|
with Helios.OpenSQL('SELECT RegCis FROM ' + tblKZ + ' WHERE id=' + IntToStR(id)) do
|
|
if (RecordCount=1) then
|
|
result:= VarToStr(FieldValues(0));
|
|
end;
|
|
|
|
|
|
|
|
|
|
function TfrmVydejDPrace.VratKZSZ (id: Integer): ShortString;
|
|
begin
|
|
result:= '';
|
|
if (id>0) then
|
|
with Helios.OpenSQL('SELECT SkupZbo FROM ' + tblKZ + ' WHERE id=' + IntToStR(id)) do
|
|
if (RecordCount=1) then
|
|
result:= VarToStr(FieldValues(0));
|
|
end;
|
|
|
|
|
|
|
|
|
|
function TfrmVydejDPrace.VratKZNazev1 (id: Integer): ShortString;
|
|
begin
|
|
result:= '';
|
|
if (id>0) then
|
|
with Helios.OpenSQL('SELECT Nazev1 FROM ' + tblKZ + ' WHERE id=' + IntToStR(id)) do
|
|
if (RecordCount=1) then
|
|
result:= VarToStr(FieldValues(0));
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TfrmVydejDPrace.btnAddClick (Sender: TObject);
|
|
var lSQL: WideString;
|
|
mn: Extended;
|
|
begin
|
|
if (vtPolos.RecordCount>0) then
|
|
begin
|
|
Helios.Error(#1'Na doklad lze uložit jen 1 položku.'#1);
|
|
Exit;
|
|
end;
|
|
|
|
if (edtMnoz.Value>0) then
|
|
begin
|
|
if (idKZ>0) then
|
|
begin
|
|
mn:= 0;
|
|
lSQL:= 'SELECT ISNULL(SUM(kusy_zive),0) FROM ' + tblPrikaz + ' WHERE StavPrikazu IN (30,40,50) AND IDTabKmen=' + IntToStr(idKZ);
|
|
with Helios.OpenSQL(lSQL) do
|
|
if not(VarIsNull(FieldValues(0))) then
|
|
mn:= StrToFloat(VarToStr(FieldValues(0)))
|
|
else
|
|
mn:= 0;
|
|
if (mn<edtMnoz.Value) then
|
|
begin
|
|
lSQL:= #1'Na Výrobních příkazech není dostatek živých kusů k evidenci,' + CRLF + 'je nutno přidělat nový příkaz na ';
|
|
lSQL:= lSQL + FloatToStr(edtMnoz.Value-mn) + ' ks'#1 + CRLF + CRLF + 'Otevřít přehled Výrobních příkazů ?';
|
|
if Helios.YesNo(lSQL,false) then
|
|
Helios.OpenBrowse(bidVyrPrik,'');
|
|
Exit;
|
|
end;
|
|
|
|
vtPolos.Open;
|
|
selRegCis.Text:= Trim(selRegCis.Text);
|
|
if vtPolos.Locate('idKZ',VarArrayOf([idKZ]),[loCaseInsensitive]) then
|
|
begin
|
|
vtPolos.Edit;
|
|
mnoz:= vtPolos.FieldByName('Mnoz').AsExtended + edtMnoz.Value;
|
|
end
|
|
else
|
|
begin
|
|
mnoz:= edtMnoz.Value;
|
|
vtPolos.Insert;
|
|
vtPolos.FieldByName('SkupZbo').AsString:= lblSZ.Caption;
|
|
vtPolos.FieldByName('RegCis').AsString:= selRegCis.Text;
|
|
vtPolos.FieldByName('Popis').AsString:= lblPopis.Caption;
|
|
vtPolos.FieldByName('idKZ').AsInteger:= idKZ;
|
|
end;
|
|
vtPolos.FieldByName('Mnoz').AsExtended:= mnoz;
|
|
vtPolos.Post;
|
|
end;
|
|
selRegCis.Text:= '';
|
|
lblPopis.Caption:= '';
|
|
lblSZ.Caption:= '';
|
|
edtMnoz.Value:= 0;
|
|
selRegCis.SetFocus;
|
|
end
|
|
else
|
|
Helios.Error(#1'Nelze přidat nulové množství.'#1);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TfrmVydejDPrace.edtMnozKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
begin
|
|
if (Key=VK_RETURN) then
|
|
if (edtMnoz.Value<>0) then
|
|
btnAddClick (Sender);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TfrmVydejDPrace.FormActivate (Sender: TObject);
|
|
begin
|
|
selCisZam.SetFocus;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TfrmVydejDPrace.FormClose (Sender: TObject; var Action: TCloseAction);
|
|
begin
|
|
if vtMat.Active then
|
|
vtMat.Close;
|
|
if vtPolos.Active then
|
|
vtPolos.Close;
|
|
Action:= caFree;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TfrmVydejDPrace.FormShow (Sender: TObject);
|
|
begin
|
|
Application.Handle := Helios.MainApplicationHandle;
|
|
Application.Icon.Handle := Helios.MainApplicationIconHandle;
|
|
// cxSetResourceString(@scxGridNoDataInfoText,'<Neexistují data k zobrazení>');
|
|
|
|
VytvorTabulkyAGridy;
|
|
NastavFonty;
|
|
idKZ:= 0;
|
|
cZam:= 0;
|
|
idZam:= 0;
|
|
dtDatum.Date:= Now;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TfrmVydejDPrace.OKClick (Sender: TObject);
|
|
var locSQL, podm, mn, sklVyd: string;
|
|
idNadvyr, idDZshift1, idDZ1, idObd, idSS1, idPZ1, idKJ: integer;
|
|
idDZshift2, idDZ2, idSS2, idPZ2: integer;
|
|
idx, i: integer;
|
|
qry: IHeQuery;
|
|
realVyd, realPrij: boolean;
|
|
matOK: boolean;
|
|
oVar: OleVariant;
|
|
begin
|
|
dtDatum.Time:= Now;
|
|
if (cZam=0) or (selCisZam.Text='') then
|
|
Helios.Error(#1'Není vybrán zaměstnanec kterému bude materiál vydán.'#1)
|
|
else
|
|
begin
|
|
if (vtMat.RecordCount>0) then
|
|
begin
|
|
matOK:= true;
|
|
i:= vtMat.RecNo; // vMat.DataController.FocusedRecordIndex;
|
|
gMat2.BeginUpdate;
|
|
for idx:= 1 to vtMat.RecordCount do
|
|
begin
|
|
vtMat.RecNo:= idx;
|
|
locSQL:= 'SELECT Mnozstvi FROM ' + tblSS + ' WHERE IDSklad=N' + QuotedStr(sklFin);
|
|
locSQL:= locSQL + ' AND IdKmenZbozi=' + vtMat.FieldByName('idKZ').AsString;
|
|
with Helios.OpenSQL(locSQL) do
|
|
begin
|
|
if (RecordCount=1) then
|
|
begin
|
|
mn:= VarToStr(FieldValues(0));
|
|
mn:= StringReplace(mn,',','.',[rfReplaceAll]);
|
|
if (StrToFloat(mn)<vtMat.FieldByName('Mnoz').AsFloat) then
|
|
matOK:= false;
|
|
end
|
|
else
|
|
matOK:= false;
|
|
end;
|
|
end;
|
|
vtMat.RecNo:= i;
|
|
gMat2.EndUpdate;
|
|
end;
|
|
if not(matOK) then
|
|
begin
|
|
Helios.Error(#1'Některý materiál požadovaný pro nadvýrobu není dostupný.'#1);
|
|
Exit;
|
|
end;
|
|
|
|
ReseedTable(Helios,tblDZ);
|
|
ReseedTable(Helios,tblPZ);
|
|
ReseedTable(Helios,tblEvidNadvyroby);
|
|
ReseedTable(Helios,tblEvidNadvyrVPr);
|
|
|
|
gPolos2.BeginUpdate;
|
|
idDZ2:= vtPolos.RecNo;
|
|
for idDZ1:=1 to vtPolos.RecordCount do
|
|
begin
|
|
vtPolos.RecNo:= idDZ1;
|
|
mn:= StringReplace(vtPolos.FieldByName('Mnoz').AsString,',','.',[rfReplaceAll]);
|
|
locSQL:= 'INSERT ' + tblEvidNadvyroby + ' (CisloZam, IdKmenZbozi, Mnozstvi, DatPorizeni) VALUES (';
|
|
locSQL:= locSQL + selCisZam.Text + ',' + vtPolos.FieldByName('IdKZ').AsString + ',';
|
|
locSQL:= locSQL + mn + ',CONVERT(datetime,N' + QuotedStr(DateTimeToStr(dtDatum.DateTime)) + ',104) )';
|
|
locSQL:= locSQL + CRLF + 'SELECT SCOPE_IDENTITY()';
|
|
idNadvyr:= 0;
|
|
try
|
|
with Helios.OpenSQL(locSQL) do
|
|
if not(VarIsNull(FieldValues(0))) then
|
|
idNadvyr:= StrToInt(VarToStr(FieldValues(0)));
|
|
except on E:Exception do
|
|
Helios.Error(#1'Nelze uložit požadovanou evidenci Nadvýroby.'#1 + CRLF + E.Message + CRLF + locSQL);
|
|
end;
|
|
end;
|
|
vtPolos.RecNo:= idDZ2;
|
|
gPolos2.EndUpdate;
|
|
idDZ1:= 0;
|
|
idDZ2:= 0;
|
|
|
|
idObd:= 0;
|
|
locSQL:= 'DECLARE @obd INT,@dt DATETIME' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(DateToStr(dtDatum.Date)) + ',104)';
|
|
locSQL:= locSQL + 'EXEC @obd=dbo.hp_GetObdobiDleDatumu @dt,0,null,null,0,0' + CRLF + 'SELECT @obd';
|
|
with Helios.OpenSQL(locSQL) do
|
|
idObd:= StrToInt(VarToStr(FieldValues(0)));
|
|
if (idObd>0) AND (vtMat.RecordCount>0) then
|
|
begin
|
|
|
|
// zaloz prevodku/vydejku na 200
|
|
{
|
|
idDZshift1:= 0; // posunuti cisla brane z nastaveni TabDruhDokZboDef
|
|
locSQL:= 'SELECT dzd.PosledniPC FROM ' + tblDDZdef + ' dzd INNER JOIN ' + tblDDZ + ' dz';
|
|
locSQL:= locSQL + ' ON (dz.ID=dzd.idDruhDZ) WHERE dzd.IdObdobi=' + IntToStr(idObd);
|
|
locSQL:= locSQL + ' AND dz.DruhPohybuZbo=4 AND dz.RadaDokladu=N' + QuotedStr(druhPrevVydejDP);
|
|
qry:= Helios.OpenSQL(locSQL);
|
|
if qry.RecordCount>0 then
|
|
idDZshift1:= StrToInt(VarToStr(qry.FieldValues(0)));
|
|
podm:= 'DruhPohybuZbo=4 AND RadaDokladu=N' + QuotedStr(druhPrevVydejDP) + ' AND IDSklad=N' + QuotedStr(sklVyroba);
|
|
podm:= podm + ' AND Obdobi=' + IntToStr(idObd);
|
|
locSQL:= 'EXEC dbo.hp_NajdiPrvniVolny N' + QuotedStr(tblDZ) + ',N' + QuotedStr('PoradoveCislo');
|
|
locSQL:= locSQL + ',' + IntToStr(idDZshift1) + ',99999999,N' + QuotedStr(podm) + ',0,1';
|
|
idDZ1:= 0;
|
|
qry:= Helios.OpenSQL(locSQL);
|
|
if qry.RecordCount>0 then
|
|
idDZ1:= StrToInt(VarToStr(qry.FieldValues(0)));
|
|
if (idDZ1=0) or (idDZ1=idDZshift1) then
|
|
idDZ1:= idDZshift1 + 1;
|
|
}
|
|
sklVyd:= Trim('210 ');
|
|
{
|
|
locSQL:= 'TabStrom.Cislo LIKE ''2%'' AND TabStrom.ID NOT IN (SELECT IDStrom FROM dbo.TabStromDef WHERE (Blokovano=1 OR Zakazano=1) AND IdObdobi=' + IntToStr(Helios.Obdobi) + ')';
|
|
if Helios.Prenos(4, 'Cislo', oVar, locSQL, 'Materiál vydat ze skladu', true) then
|
|
sklVyd:= VarToStr(oVar);
|
|
}
|
|
locSQL:= 'DECLARE @dt DATETIME,@IDcko INT' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(DateTimeToStr(dtDatum.DateTime)) + ',104)';
|
|
locSQL:= locSQL + CRLF + 'EXEC dbo.hp_InsertHlavickyOZ @IDcko OUT,@RadaDokladu=N' + QuotedStr(druhPrevVydejDP);
|
|
locSQL:= locSQL + ',@DruhPohybu=4,@CisloOrg=2,@Insert=1,@Sklad=N' + QuotedStr(sklVyd) + ',@PC=null';
|
|
locSQL:= locSQL + ',@DatumPorizeni=@dt' + CRLF + 'SELECT @IDcko';
|
|
idDZ1:= 0;
|
|
with Helios.OpenSQL(locSQL) do
|
|
if RecordCount>0 then
|
|
idDZ1:= StrToInt(VarToStr(FieldValues(0)));
|
|
if (idDZ1>0) then
|
|
begin
|
|
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=' + IntToStr(Helios.UserId) + ' WHERE id=' + IntToStr(idDZ1));
|
|
// polozky prevodky/vydejky
|
|
vtMat.First;
|
|
while not(vtMat.Eof) do
|
|
begin
|
|
idSS1:= 0;
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblSS + ' WHERE IdSklad=N' + QuotedStr(sklVyd) + ' AND IdKmenZbozi=' + vtMat.FieldByName('idKZ').AsString) do
|
|
if RecordCount>0 then
|
|
idSS1:= StrToInt(VarToStr(FieldValues(0)));
|
|
if (idSS1=0) then
|
|
begin
|
|
locSQL:= 'DELCARE @idSS INT' + CRLF + 'INSERT ' + tblSS + ' (IDSklad,IDKmenZbozi) VALUES (N' + QuotedStr(sklVyd);
|
|
locSQL:= locSQL + ',' + vtMat.FieldByName('idKZ').AsString + ')' + CRLF + 'SELECT SCOPE_IDENTITY()';
|
|
with Helios.OpenSQL(locSQL) do
|
|
idSS1:= StrToInt(VarToStr(FieldValues(0)));
|
|
end;
|
|
locSQL:= 'DECLARE @IDcko INT' + CRLF + 'EXEC dbo.hp_InsertPolozkyOZ @IDcko OUT,';
|
|
locSQL:= locSQL + '@IDDoklad=' + IntToStr(idDZ1) + ',@DruhPohybu=4,@CisloOrg=2,@IDZboSklad=' + IntToStr(idSS1);
|
|
locSQL:= locSQL + ',@PovolitDuplicitu=1,@Mnozstvi=' + StringReplace(vtMat.FieldByName('Mnoz').AsString,'','.',[rfReplaceAll]);
|
|
locSQL:= locSQL + ',@Selectem=0,@Mena=N' + QuotedStr('CZK') + ',@Kurz=1,@JednotkaMeny=1,@KurzEuro=1,@SazbaSD=0,@SazbaDPH=0';
|
|
locSQL:= locSQL + ',@ZakazanoDPH=0,@VstupniCena=0' + CRLF + 'SELECT @IDcko';
|
|
idPZ1:= 0;
|
|
with Helios.OpenSQL(locSQL) do
|
|
idPZ1:= StrToInt(VarToStr(FieldValues(0)));
|
|
vtMat.Next;
|
|
end;
|
|
|
|
if (idDZ1>0) then
|
|
begin
|
|
Helios.ExecSQL('UPDATE ' + tblEvidNadvyroby + ' SET IdVydejkaMat=' + IntToStR(idDZ1) + ' WHERE id=' + IntToStr(idNadvyr));
|
|
|
|
try
|
|
Helios.ExecSQL('EXEC dbo.ep_DoplnKooperacniCenyVydejky ' + IntToStr(idDZ1));
|
|
|
|
locSQL:= 'UPDATE ' + tblDZ + ' SET TypPrevodky=N' + QuotedStr(druhPrevPrijDP) + ',IdSkladPrevodu=N' + QuotedStr(sklDP);
|
|
locSQL:= locSQL + ',CisloZam=' + IntToStr(cZam) + ',DruhPohybuPrevod=0,BlokovaniEditoru=null WHERE id=' + IntToStr(idDZ1);
|
|
Helios.ExecSQL(locSQL);
|
|
Helios.ExecSQL('EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=' + IntToStr(idDZ1) + ',@AktualizaceSlev=0');
|
|
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=NULL WHERE id=' + IntToStr(idDZ1));
|
|
|
|
except on E:Exception do
|
|
begin
|
|
Helios.Error(#1'Chyba při nápočtu cen dokladu převodky/výdejky.'#1 + CRLF + E.Message + CRLF + locSQL + errPlg);
|
|
idKJ:= helUtils.ZapisDoKJ(Helios,'HEO','','POR','','Plugin plgLOVATO','Chyba při nápočtu cen dokladu převodky/výdejky Nadvýroby');
|
|
if idKJ>0 then
|
|
Helios.ExecSQL('INSERT ' + tblKJPozn + ' (IDKontJednani,Nazev,Poznamka) VALUES (' + IntToStr(idKJ) + ',N'
|
|
+ QuotedStr('Podrobnosti.unit9') + ',N' + QuotedStr(E.Message + CRLF + locSQL) + ')');
|
|
idKJ:= 0;
|
|
Exit;
|
|
end;
|
|
end;
|
|
|
|
podm:= 'DruhPohybuZbo=0 AND RadaDokladu=N' + QuotedStr(druhPrevPrijDP) + ' AND IDSklad=N' + QuotedStr(sklDP);
|
|
podm:= podm + ' AND Obdobi=' + IntToStr(idObd);
|
|
idDZ2:= helUtils.NajdiPrvniVolny(Helios,tblDZ,'PoradoveCislo','0',druhPrevPrijDP,IntToStr(idObd),podm);
|
|
|
|
{
|
|
idDZshift2:= 0; // posunuti cisla brane z nastaveni TabDruhDokZboDef
|
|
locSQL:= 'SELECT dzd.PosledniPC FROM ' + tblDDZdef + ' dzd INNER JOIN ' + tblDDZ + ' dz';
|
|
locSQL:= locSQL + ' ON (dz.ID=dzd.idDruhDZ) WHERE dzd.IdObdobi=' + IntToStr(idObd);
|
|
locSQL:= locSQL + ' AND dz.DruhPohybuZbo=0 AND dz.RadaDokladu=N' + QuotedStr(druhPrevPrijDP);
|
|
qry:= Helios.OpenSQL(locSQL);
|
|
if qry.RecordCount>0 then
|
|
idDZshift2:= StrToInt(VarToStr(qry.FieldValues(0)));
|
|
podm:= 'DruhPohybuZbo=0 AND RadaDokladu=N' + QuotedStr(druhPrevPrijDP) + ' AND IDSklad=N' + QuotedStr(sklDP);
|
|
podm:= podm + ' AND Obdobi=' + IntToStr(idObd);
|
|
locSQL:= 'EXEC dbo.hp_NajdiPrvniVolny N' + QuotedStr(tblDZ) + ',N' + QuotedStr('PoradoveCislo');
|
|
locSQL:= locSQL + ',' + IntToStr(idDZshift2) + ',99999999,N' + QuotedStr(podm) + ',0,1';
|
|
idDZ2:= 0;
|
|
qry:= Helios.OpenSQL(locSQL);
|
|
if qry.RecordCount>0 then
|
|
idDZ2:= StrToInt(VarToStr(qry.FieldValues(0)));
|
|
if (idDZ2=0) or (idDZ2=idDZshift2) then
|
|
idDZ2:= idDZshift2 + 1;
|
|
}
|
|
{ beg: vypnuti tvorby nasledne prijemky
|
|
locSQL:= 'DECLARE @dt DATETIME,@IDcko INT' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(DateTimeToStr(dtDatum.DateTime)) + ',104)';
|
|
locSQL:= locSQL + CRLF + 'EXEC dbo.hp_InsertHlavickyOZ @IDcko OUT,@RadaDokladu=N' + QuotedStr(druhPrevPrijDP);
|
|
locSQL:= locSQL + ',@DruhPohybu=0,@CisloOrg=0,@Insert=1,@Sklad=N' + QuotedStr(sklDP) + ',@PC=' + IntToStr(idDZ2);
|
|
locSQL:= locSQL + ',@DatumPorizeni=@dt' + CRLF + 'SELECT @IDcko';
|
|
idDZ2:= 0;
|
|
with Helios.OpenSQL(locSQL) do
|
|
if (RecordCount>0) then
|
|
idDZ2:= StrToInt(VarToStr(FieldValues(0)));
|
|
end: vypnuti tvorby nasledne prijemky }
|
|
|
|
if (1=0) then { vypnuti tvorby nasledne prijemky (idDZ2>0) }
|
|
begin
|
|
|
|
try
|
|
locSQL:= 'IF OBJECT_ID(N' + QuotedStr('tempdb..#TabTempUziv') + ') IS NULL CREATE TABLE #TabTempUziv(Tabulka';
|
|
locSQL:= locSQL + ' NVARCHAR(255) NOT NULL, SCOPE_IDENTITY INT NULL, Datum DATETIME NULL)' + CRLF;
|
|
|
|
locSQL:= locSQL + 'EXEC dbo.hp_generuj_navazny_doklad @IDDokladDst=' + IntToStr(idDZ2) + ',@IDDokladSrc=' + IntToStr(idDZ1);
|
|
locSQL:= locSQL + ',@CisloOrgCil=0,@MUcil=null,@KurzCil=1,@JednotkaMenyCil=1,@MenaCil=N' + QuotedStr('CZK');
|
|
locSQL:= locSQL + ',@Returnem=1,@KurzEuroCil=0,@CisloZakCil=null,@NOkruhCil=null,@StredNakladCil=null,@StredVynosCil=null';
|
|
locSQL:= locSQL + ',@FormaDopravyCil=null,@VozidloCil=null,@ObjednavkaCil=null,@PopisDodavkyCil=N' + QuotedStr('Převod materiálu');
|
|
locSQL:= locSQL + ',@NavaznyDobropisCil=null,@ZamestnanecCil=null,@DodFakCil=null,@Nasobek=1,@SlevaCil=0';
|
|
Helios.ExecSQL(locSQL);
|
|
except on E:Exception do
|
|
begin
|
|
try
|
|
locSQL:= 'FROM ' + tblPZ + ' WHERE IdDoklad=' + IntToStr(idDZ2);
|
|
Helios.ExecSQL('DELETE FROM dbo.TabPohybyZboziSD WHERE id IN (SELECT id ' + locSQL + ')');
|
|
Helios.ExecSQL('DELETE ' + locSQL);
|
|
Helios.ExecSQL('DELETE FROM dbo.TabDokZboDodatek WHERE IDHlavicky=' + IntToStr(idDZ2));
|
|
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET NavaznyDoklad=null WHERE id='+ IntToStr(idDZ1));
|
|
Helios.ExecSQL('DELETE FROM ' + tblDZ + ' WHERE Id=' + IntToStr(idDZ2));
|
|
Helios.Error(#1'Chyba při generování návazného dokladu.'#1 + CRLF + E.Message + errPlg);
|
|
idKJ:= ZapisDoKJ(Helios,'HEO','','POR','','Plugin plgLOVATO','Nelze generovat následný doklad Výdejky Nadvýroby');
|
|
if (idKJ>0) then
|
|
Helios.ExecSQL('INSERT ' + tblKJPozn + ' (IDKontJednani,Nazev,Poznamka) VALUES (' + IntToStr(idKJ) + ',N'
|
|
+ QuotedStr('Podrobnosti.unit9') + ',N' + QuotedStr(E.Message + CRLF + locSQL) + ')');
|
|
idKJ:= 0;
|
|
except on E:Exception do
|
|
begin
|
|
Helios.Error(#1 + E.Message + #1);
|
|
Exit;
|
|
end;
|
|
end;
|
|
Exit;
|
|
end;
|
|
end;
|
|
|
|
Helios.ExecSQL('EXEC dbo.ep_DoplnKooperacniCenyVydejky ' + IntToStr(idDZ2));
|
|
Helios.ExecSQL('EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=' + IntToStr(idDZ2) + ',@AktualizaceSlev=0');
|
|
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=NULL WHERE id=' + IntToStr(idDZ2));
|
|
|
|
realVyd:= false;
|
|
// if idDZ2>0 then
|
|
// begin
|
|
try
|
|
locSQL:= 'DECLARE @chyba BIT,@dt DATETIME' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(DateTimeToStr(dtDatum.DateTime)) + ',104)' + CRLF;
|
|
locSQL:= locSQL + 'EXEC dbo.hp_Realizuj_Vydej @ID=' + IntToStr(idDZ1) + ',@DatumRealizace=@dt,@Uzivatel=' + IntToStr(Helios.UserId) + ',@Hlidat=0,@BylaChyba=@chyba OUT';
|
|
locSQL:= locSQL + CRLF + 'SELECT @chyba';
|
|
with Helios.OpenSQL(locSQL) do
|
|
if not VarIsNull(FieldValues(0)) then
|
|
if (LowerCase(VarToStr(FieldValues(0)))='false') then
|
|
realVyd:= true;
|
|
except on E:Exception do
|
|
begin
|
|
// Clipboard.AsText:= locSQL;
|
|
try
|
|
Helios.Error(#1'Nelze realizovat Převodku/výdejku'#1 + CRLF + E.Message + errPlg);
|
|
{
|
|
idKJ:= helUtils.ZapisDoKJ(Helios,'HEO','','POR','','Plugin plgLOVATO','Nelze realizovat Převodku/výdejku Nadvýroby.');
|
|
if idKJ>0 then
|
|
Helios.ExecSQL('INSERT INTO ' + tblKJPozn + ' (IDKontJednani,Nazev,Poznamka) VALUES (' + IntToStr(idKJ) + ',N'
|
|
+ QuotedStr('Podrobnosti.unit9') + ',N' + QuotedStr(E.Message + CRLF + locSQL) + ')');
|
|
}
|
|
idKJ:= 0;
|
|
except on E:Exception do
|
|
begin
|
|
Helios.Error(#1 + E.Message + #1);
|
|
Exit;
|
|
end;
|
|
end;
|
|
Exit;
|
|
end;
|
|
end;
|
|
// end;
|
|
idDZ2:= 0;
|
|
realPrij:= false;
|
|
if realVyd then
|
|
begin
|
|
try
|
|
locSQL:= 'DECLARE @chyba BIT,@dt DATETIME' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(DateTimeToStr(dtDatum.DateTime)) + ',104)' + CRLF;
|
|
locSQL:= locSQL + 'EXEC dbo.hp_Realizuj_Prijem @ID=' + IntToStr(idDZ2) + ',@DatumRealizace=@dt,@Uzivatel=' + IntToStr(Helios.UserId) + ',@BylaChyba=@chyba OUT';
|
|
locSQL:= locSQL + CRLF + 'SELECT @chyba';
|
|
with Helios.OpenSQL(locSQL) do
|
|
if not VarIsNull(FieldValues(0)) then
|
|
if (LowerCase(VarToStr(FieldValues(0)))='false') then
|
|
realPrij:= true;
|
|
except on E:Exception do
|
|
begin
|
|
// ClipBoard.AsText:= locSQL;
|
|
Helios.Error(#1'Chyba při realizaci Převodky/příjemky pro Nadvýrobu.'#1 + CRLF + E.Message + CRLF + errPlg);
|
|
idKJ:= helUtils.ZapisDoKJ(Helios,'HEO','','POR','','Plugin plgLOVATO','Nelze realizovat příjemku Převodku/příjemku Nadvýroby');
|
|
if (idKJ>0) then
|
|
Helios.ExecSQL('INSERT ' + tblKJPozn + ' (IDKontJednani,Nazev,Poznamka) VALUES (' + IntToStr(idKJ) + ',N'
|
|
+ QuotedStr('Podrobnosti.unit9') + ',N' + QuotedStr(E.Message + CRLF + locSQL) + ')');
|
|
idKJ:= 0;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
Helios.Refresh(true);
|
|
Close;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TfrmVydejDPrace.NastavFonty;
|
|
var idx: integer;
|
|
HelPars: THeliosParams;
|
|
begin
|
|
NactiParametryHeliosu(Helios,HelPars);
|
|
idx:= 0;
|
|
{
|
|
while idx<Self.ComponentCount-1 do
|
|
begin
|
|
if (Self.Components[idx] is TLabel) then
|
|
begin
|
|
(Self.Components[idx] as TLabel).Font.Name:= HelPars.FontName;
|
|
(Self.Components[idx] as TLabel).Font.Size:= HelPars.FontSize;
|
|
end;
|
|
if (Self.Components[idx] is TButton) then
|
|
begin
|
|
(Self.Components[idx] as TButton).Font.Name:= HelPars.FontName;
|
|
(Self.Components[idx] as TButton).Font.Size:= HelPars.FontSize;
|
|
end;
|
|
if (Self.Components[idx] is TGroupBox) then
|
|
begin
|
|
(Self.Components[idx] as TGroupBox).Font.Name:= HelPars.FontName;
|
|
(Self.Components[idx] as TGroupBox).Font.Size:= HelPars.FontSize;
|
|
end;
|
|
if (Self.Components[idx] is TButton) then
|
|
begin
|
|
(Self.Components[idx] as TButton).Font.Name:= HelPars.FontName;
|
|
(Self.Components[idx] as TButton).Font.Size:= HelPars.FontSize;
|
|
end;
|
|
Inc(idx);
|
|
end;
|
|
}
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TfrmVydejDPrace.selCisZamButtonClick (Sender: TObject);
|
|
begin
|
|
if Helios.Prenos(bidCisZam,'Cislo',vOle1,'','Vyberte zaměstnance',true) then
|
|
begin
|
|
cZam:= StrToInt(VarToStr(vOle1));
|
|
with Helios.OpenSQL('SELECT id,PrijmeniJmeno FROM ' + tblCZam + ' WHERE Cislo=' + IntToStr(cZam)) do
|
|
begin
|
|
idZam:= StrToInt(VarToStr(FieldValues(0)));
|
|
lblZamest.Caption:= VarToStr(FieldValues(1));
|
|
end;
|
|
selCisZam.Text:= StringOfChar('0',6-Length(IntToStr(cZam))) + IntToStr(cZam);
|
|
end
|
|
else
|
|
begin
|
|
cZam:= 0;
|
|
idZam:= 0;
|
|
Helios.Error(#1'Nebyl vybrán žádný zaměstnanec.'#1);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TfrmVydejDPrace.selCisZamExit (Sender: TObject);
|
|
begin
|
|
if selCisZam.Text<>'' then
|
|
begin
|
|
with Helios.OpenSQL('SELECT id,PrijmeniJmeno,Cislo FROM ' + tblCZam + ' WHERE Cislo=' + selCisZam.Text) do
|
|
if RecordCount>0 then
|
|
begin
|
|
begin
|
|
idZam:= StrToInt(VarToStr(FieldValues(0)));
|
|
lblZamest.Caption:= VarToStr(FieldValues(1));
|
|
cZam:= StrToInt(VarToStr(FieldValues(2)));
|
|
end;
|
|
selCisZam.Text:= StringOfChar('0',6-Length(IntToStr(cZam))) + IntToStr(cZam);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TfrmVydejDPrace.selRegCisButtonClick (Sender: TObject);
|
|
var podm: WideString;
|
|
begin
|
|
// podm:= 'TabKmenZbozi.SkupZbo IN (SELECT sz.id FROM TabSkupinyZbozi sz INNER JOIN TabSkupinyZbozi_EXT sze ON (sz.id=sze.id)';
|
|
// podm:= podm + ' WHERE sze._JeVyroba=1) AND';
|
|
|
|
{ podm:= podm + ' TabKmenZbozi.id IN (';
|
|
podm:= podm + 'SELECT kz.id FROM TabPolKoopObj pko INNER JOIN TabPrikaz p ON (pko.IDPrikaz=p.id)';
|
|
podm:= podm + ' INNER JOIN TabKmenZbozi kz ON (p.IDTabKmen=kz.id) WHERE pko.id IN (SELECT po.id FROM TabPolKoopObj po';
|
|
podm:= podm + ' WHERE po.IDObjednavky IN (SELECT o.id FROM TabKoopObj o WHERE o.IDOrganizace=(SELECT id FrOM TabCisOrg WHERE CisloOrg=2)';
|
|
podm:= podm + ' AND o.Splneno=0 AND o.realizovano=1)) GROUP BY kz.id)';
|
|
}
|
|
podm:= '';
|
|
if Helios.Prenos(100089,'IdTabKmen',vOle1,podm,'Vyberte dílec/polosestavu',true) then
|
|
begin
|
|
idKZ:= StrToInt(VarToStr(vOle1));
|
|
lblSZ.Caption:= VratKZSZ(idKZ);
|
|
selRegCis.Text:= VratKZRegCis(idKZ);
|
|
lblPopis.Caption:= VratKZNazev1(idKZ);
|
|
edtMnoz.SetFocus;
|
|
end
|
|
else
|
|
Helios.Error(#1'Nebyla vybrána žádná karta.'#1);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TfrmVydejDPrace.selRegCisExit (Sender: TObject);
|
|
var podm: ShortString;
|
|
begin
|
|
selRegCis.Text:= Trim(selRegCis.Text);
|
|
if (selRegCis.Text='') then
|
|
Exit;
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblKZ + ' WHERE Dilec=1 AND RegCis LIKE N''%' + selRegCis.Text + '%''') do
|
|
begin
|
|
if (RecordCount=1) then
|
|
idKZ:= StrToInt(VarToStr(FieldValues(0)));
|
|
if (RecordCount>1) then
|
|
begin
|
|
podm:= 'TabKmenZbozi.RegCis LIKE N''%' + selRegCis.Text + '%'' AND TabKmenZbozi.Dilec=1';
|
|
if Helios.Prenos(bidKZ,'id',vOle1,podm,'Zboží a služby',True) then
|
|
idKZ:= StrToInt(VarToStr(FieldValues(0)));
|
|
end;
|
|
lblSZ.Caption:= VratKZSZ(idKZ);
|
|
lblPopis.Caption:= VratKZNazev1(idKZ);
|
|
selRegCis.Text:= VratKZRegCis(idKZ);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TfrmVydejDPrace.gMat2DrawDataCell (Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);
|
|
var m,s: Extended;
|
|
begin
|
|
if not(TryStrToFloat(gMat2.DataSource.Dataset.FieldByName('Mnoz').AsString, m)) then
|
|
m:= 0;
|
|
if not(TryStrToFloat(gMat2.DataSource.DataSet.FieldByName('MnozSkl').AsString, s)) then
|
|
s:= 0;
|
|
if (s<=m) then
|
|
gMat2.Canvas.Brush.Color:= $005D5DFC
|
|
else
|
|
gMat2.Canvas.Brush.Color:= $0;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TfrmVydejDPrace.gPolos2DblClick (Sender: TObject);
|
|
var mn,jc: Extended;
|
|
begin
|
|
mn:= vtPolos.FieldByName('Mnoz').AsExtended;
|
|
jc:= 0;
|
|
if FormMnozstviCena('Změna množství',mn,jc,true,false) then
|
|
if (mn<>0) then
|
|
begin
|
|
vtPolos.Edit;
|
|
vtPolos.FieldByName('Mnoz').AsExtended:= mn;
|
|
vtPolos.Post;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TfrmVydejDPrace.vtPolosAfterPost (DataSet: TDataSet);
|
|
var idMat: integer;
|
|
mnoz,mnozNiz: Extended;
|
|
idKZNiz: integer;
|
|
sz,regcis,pop: ShortString;
|
|
iRowPolos: integer;
|
|
lp: integer;
|
|
locSQL: WideString;
|
|
rozp: IHeQuery;
|
|
begin
|
|
iRowPolos:= vtPolos.RecNo;
|
|
|
|
locSQL:= 'IF OBJECT_ID(' + QuotedStr('tempdb..#MatPozadavky') + ') IS NOT NULL DROP TABLE #MatPozadavky' + CRLF;
|
|
locSQL:= locSQL + 'CREATE TABLE #MatPozadavky(ID INT IDENTITY NOT NULL, IdKZMat INT NOT NULL,';
|
|
locSQL:= locSQL + 'MnozNizsi NUMERIC(19,6) NOT NULL DEFAULT 0, MnozVyssi NUMERIC(19,6) NOT NULL DEFAULT 0)';
|
|
Helios.ExecSQL(locSQL);
|
|
{
|
|
locSQL:= 'IF OBJECT_ID(' + QuotedStr('tempdb..#TabPrKVazbyGen') + ') IS NOT NULL DROP TABLE #TabPrKVazbyGen' + CRLF;
|
|
locSQL:= locSQL + 'CREATE TABLE #TabPrKVazbyGen(ID INT IDENTITY NOT NULL, Generuj BIT NOT NULL DEFAULT 1,';
|
|
locSQL:= locSQL + 'PoKorekciDat BIT NOT NULL DEFAULT 0, IDPrKV INT NOT NULL, Doklad INT NOT NULL, IDPrikaz INT NOT NULL,';
|
|
locSQL:= locSQL + 'Prednastaveno BIT NOT NULL DEFAULT 1, Sklad NVARCHAR(30) COLLATE database_default NULL,';
|
|
locSQL:= locSQL + 'VyrStredisko NVARCHAR(30) COLLATE database_default NULL, IDPracoviste INT NULL,';
|
|
locSQL:= locSQL + 'mnoz_zad NUMERIC(19, 6) NOT NULL DEFAULT 0, Mnoz_nepotrebne NUMERIC(19, 6) NOT NULL DEFAULT 0,';
|
|
locSQL:= locSQL + 'Mnoz_skut_realizovane NUMERIC(19, 6) NOT NULL DEFAULT 0, Cena_real NUMERIC(19, 6) NOT NULL DEFAULT 0,';
|
|
locSQL:= locSQL + 'Mnoz_odv NUMERIC(19, 6) NOT NULL DEFAULT 0, Cena_odv NUMERIC(19, 6) NOT NULL DEFAULT 0,';
|
|
locSQL:= locSQL + 'MnozstviMax NUMERIC(19, 6) NULL, MnozstviPoz NUMERIC(19, 6) NOT NULL, PomMnozPoz NUMERIC(19, 6) NOT NULL DEFAULT 0,';
|
|
locSQL:= locSQL + 'IDPohZbo INT NULL, priorita INT NOT NULL DEFAULT 0, vyssi INT NOT NULL, nizsi INT NOT NULL,';
|
|
locSQL:= locSQL + 'DavkaTPV NUMERIC(19, 6) NOT NULL DEFAULT 1, pozice NVARCHAR(100) COLLATE database_default NULL DEFAULT '''',';
|
|
locSQL:= locSQL + 'Operace NCHAR(4) COLLATE database_default NULL DEFAULT '''', FixniMnozstvi NUMERIC(19, 6) NOT NULL DEFAULT 0,';
|
|
locSQL:= locSQL + 'mnozstvi NUMERIC(19, 6) NOT NULL DEFAULT 1, ProcZtrat NUMERIC(5, 2) NOT NULL DEFAULT 0,';
|
|
locSQL:= locSQL + 'mnozstviSeZtratou NUMERIC(19, 6) NOT NULL DEFAULT 0, Prirez NUMERIC(19, 6) NOT NULL DEFAULT 1,';
|
|
locSQL:= locSQL + 'Poznamka NTEXT COLLATE database_default NULL, pom_pomer_A NUMERIC(19, 6) NULL,';
|
|
locSQL:= locSQL + 'pom_pomer_B NUMERIC(19, 6) NULL, Dodavatel INT NULL)';
|
|
Helios.ExecSQL(locSQL);
|
|
}
|
|
|
|
vtPolos.First;
|
|
while not(vtPolos.Eof) do
|
|
begin
|
|
idKZ:= vtPolos.FieldByName('idKZ').asInteger;
|
|
mnoz:= vtPolos.FieldByName('Mnoz').AsFloat;
|
|
rozp:= Helios.OpenSQL('SELECT nizsi,Mnozstvi FROM ' + tblKVaz + ' WHERE vyssi=' + IntToStr(idKZ));
|
|
if rozp.RecordCount>0 then
|
|
begin
|
|
rozp.First;
|
|
while not(rozp.EOF) do
|
|
begin
|
|
locSQL:= 'INSERT #MatPozadavky VALUES (' + VarToStr(rozp.FieldValues(0)) + ',';
|
|
mnozNiz:= StrToFloat(VarToStr(rozp.FieldValues(1)));
|
|
locSQL:= locSQL + StringReplace(FloatToStr(mnozNiz),',','.',[rfReplaceAll]) + ',';
|
|
locSQL:= locSQL + StringReplace(FloatToStr(mnoz),',','.',[rfReplaceAll]) + ')';
|
|
Helios.ExecSQL(locSQL);
|
|
rozp.Next;
|
|
end;
|
|
end;
|
|
vtPolos.Next;
|
|
end;
|
|
rozp:= Helios.OpenSQL('SELECT * FROM #MatPozadavky');
|
|
if rozp.RecordCount>0 then
|
|
begin
|
|
idMat:= rozp.RecordCount;
|
|
if (vtPolos.RecordCount>0) then
|
|
vtMat.EmptyDataset;
|
|
rozp.First;
|
|
vtMat.Open;
|
|
while not(rozp.EOF) do
|
|
begin
|
|
idKZNiz:= StrToInt(VarToStr(rozp.FieldValues(1)));
|
|
mnozNiz:= StrToFloat(VarToStr(rozp.FieldValues(2))) * StrToFloat(VarToStr(rozp.FieldValues(3)));
|
|
if vtMat.Locate('idKZ',VarArrayOf([idKZNiz]),[loCaseInsensitive]) then
|
|
begin
|
|
vtMat.Edit;
|
|
mnozNiz:= mnozNiz + vtMat.FieldByName('Mnoz').AsExtended;
|
|
end
|
|
else
|
|
begin
|
|
vtMat.Insert;
|
|
vtMat.FieldByName('idKZ').AsInteger:= idKZNiz;
|
|
with Helios.OpenSQL('SELECT SkupZbo,RegCis,Nazev1 FROM ' + tblKZ + ' WHERE id=' + IntToStr(idKZNiz)) do
|
|
begin
|
|
vtMat.FieldByName('SkupZbo').AsString:= VarToStr(FieldValues(0));
|
|
vtMat.FieldByName('RegCis').AsString:= VarToStr(FieldValues(1));
|
|
vtMat.FieldByName('Popis').AsString:= VarToStr(FieldValues(2));
|
|
end;
|
|
end;
|
|
vtMat.FieldByName('Mnoz').AsExtended:= mnozNiz;
|
|
with Helios.OpenSQL('SELECT Mnozstvi FROM ' + tblSS + ' WHERE IdKmenZbozi=' + IntToStr(idKZNiz) + ' AND IDSklad=N' + QuotedStr(sklFin)) do
|
|
if (RecordCount=1) then
|
|
vtMat.FieldByName('MnozSkl').AsExtended:= StrToFloat(VarToStr(FieldValues(0)))
|
|
else
|
|
vtMat.FieldByName('MnozSkl').AsExtended:= 0;
|
|
vtMat.Post;
|
|
rozp.Next;
|
|
end;
|
|
end;
|
|
Helios.ExecSQL('IF OBJECT_ID(' + QuotedStr('tempdb..#TabPrKVazbyGen') + ') IS NOT NULL DROP TABLE #TabPrKVazbyGen');
|
|
|
|
vtPolos.RecNo:= iRowPolos;
|
|
end;
|
|
|
|
end.
|