1790 lines
70 KiB
ObjectPascal
1790 lines
70 KiB
ObjectPascal
unit frmOdvedPrikaz;
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
|
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, RzEdit, RzBtnEdt, ddPlugin_TLB, Vcl.ComCtrls,
|
|
NxGrid6, NxCustomGrid6, NxColumns6, Vcl.Buttons, Vcl.Menus, RzDTP, NxGridView6, NxControls6, NxVirtualGrid6,
|
|
Vcl.WinXCtrls;
|
|
|
|
const
|
|
clYellowLight = $0078F8E8;
|
|
|
|
DesignTimePixelsPerInch = 120;
|
|
KLF_ACTIVATE = $00000001;
|
|
KLF_SETFORPROCESS = $00000100;
|
|
|
|
radaVPNadvyroba = '400';
|
|
radaVPRekl = '090';
|
|
radaVPVyroba = '100';
|
|
sklVyr = '200';
|
|
sklFin = '210';
|
|
sklObch = '100';
|
|
sklDP = '20000105'; // nadvyroba
|
|
bidHrOdvod = 100053;
|
|
bidFrontaPrace = 11109;
|
|
radaOdved = '220';
|
|
radaOdvedO = '150';
|
|
radaOdvedNad = '240';
|
|
rDoklVydMat = '400';
|
|
rDoklVydMatO = '350';
|
|
tblEvidOp = '[dbo].[_TabEvidOperaci_Barcode]';
|
|
tblEvidOpPol = '[dbo].[_TabEvidOpPolozky]';
|
|
tblEvidOpVPr = '[dbo].[_TabEvidOpPrikazy]';
|
|
tblEvidNadvyr = '[dbo].[_TabEvidNadvyroby]';
|
|
tblEvidNadPrij = '[dbo].[_TabEvidNadvyrPrijmy]';
|
|
tblEvidNadvyrVPr = '[dbo].[_TabEvidNadvyrPrikaz]';
|
|
errPlg = #13#10 + '(plgLOVATO.u10)';
|
|
|
|
sklVyroba = '200'; // přidáno 8.11.2018
|
|
|
|
type
|
|
TidVPs = record
|
|
id: integer;
|
|
radaPrikaz: string[20];
|
|
idKZ: integer;
|
|
ks: Extended;
|
|
end;
|
|
|
|
TOperace = record
|
|
idVP: integer;
|
|
doklad: integer;
|
|
operace: integer;
|
|
casS: extended;
|
|
ks: extended;
|
|
koef: extended;
|
|
end;
|
|
|
|
TcasKoef = record
|
|
operace: ShortString;
|
|
koef: extended;
|
|
end;
|
|
|
|
TformOdvedeniPrikazu = class(TForm)
|
|
selPrikaz: TRzButtonEdit;
|
|
lblDilec: TLabel;
|
|
Label2: TLabel;
|
|
Label3: TLabel;
|
|
lblZadane: TLabel;
|
|
lblZive: TLabel;
|
|
selBarCode: TRzButtonEdit;
|
|
edtKusu: TRzNumericEdit;
|
|
Label1: TLabel;
|
|
Label4: TLabel;
|
|
Label5: TLabel;
|
|
Label6: TLabel;
|
|
edtCasMin: TRzNumericEdit;
|
|
selZamest: TRzButtonEdit;
|
|
lblZamest: TLabel;
|
|
cbCasMzda: TCheckBox;
|
|
edtCasHod: TRzNumericEdit;
|
|
Label7: TLabel;
|
|
Label8: TLabel;
|
|
Label9: TLabel;
|
|
lblEvid: TLabel;
|
|
GroupBox2: TGroupBox;
|
|
selDilec: TRzButtonEdit;
|
|
Label10: TLabel;
|
|
selSmena: TRzButtonEdit;
|
|
gOperace: TNextGrid6;
|
|
colOper: TNxNumberColumn6;
|
|
colPopis: TNxTextColumn6;
|
|
colEvid: TNxCheckBoxColumn6;
|
|
btnSave: TBitBtn;
|
|
btnCancel: TBitBtn;
|
|
pOperace: TPopupMenu;
|
|
pOdznacVse: TMenuItem;
|
|
pVyberVse: TMenuItem;
|
|
Label11: TLabel;
|
|
Label12: TLabel;
|
|
colIdPostup: TNxNumberColumn6;
|
|
colNormCasS: TNxNumberColumn6;
|
|
Label13: TLabel;
|
|
cbSklad: TComboBox;
|
|
dtDatum: TRzDateTimePicker;
|
|
grpTampo: TGroupBox;
|
|
grpNadvyroba: TGroupBox;
|
|
Label14: TLabel;
|
|
selVydejMat: TRzButtonEdit;
|
|
Label15: TLabel;
|
|
selFronta: TRzButtonEdit;
|
|
gView: TNxReportGridView6;
|
|
procedure selPrikazButtonClick(Sender: TObject);
|
|
procedure selBarCodeKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure btnSaveClick(Sender: TObject);
|
|
procedure FormActivate(Sender: TObject);
|
|
procedure selZamestButtonClick(Sender: TObject);
|
|
procedure selZamestKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
procedure edtCasMinKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
procedure selZamestExit(Sender: TObject);
|
|
procedure Label6MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
procedure edtCasHodKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
procedure selDilecButtonClick(Sender: TObject);
|
|
procedure selDilecKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
procedure selDilecExit(Sender: TObject);
|
|
procedure edtKusuExit(Sender: TObject);
|
|
procedure edtKusuKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
procedure pOdznacVseClick(Sender: TObject);
|
|
procedure pVyberVseClick(Sender: TObject);
|
|
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
procedure selDilecKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
procedure selVydejMatButtonClick(Sender: TObject);
|
|
procedure selVydejMatExit(Sender: TObject);
|
|
procedure selPrikazExit(Sender: TObject);
|
|
procedure selBarCodeExit(Sender: TObject);
|
|
procedure selFrontaExit(Sender: TObject);
|
|
procedure selFrontaButtonClick(Sender: TObject);
|
|
procedure selPrikazKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
procedure FormResize(Sender: TObject);
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
procedure selZamestEnter(Sender: TObject);
|
|
procedure edtKusuEnter(Sender: TObject);
|
|
procedure selDilecEnter(Sender: TObject);
|
|
procedure ZadejVyrPrikazNaVydejku(const Helios: IHelios; idVPr: Integer; MnozstviNaVydejku: double); // přidáno 8.11.2018
|
|
procedure UlozChybu(const Helios: IHelios; msg: string; E:Exception); // přidáno 8.11.2018
|
|
private
|
|
// procedure WMNCLBUTTONDOWN(var msg: TMessage); message WM_NCLBUTTONDOWN;
|
|
function TestFormulareOK: Boolean;
|
|
function VlastniSkladySQL(const datum: string): string;
|
|
procedure VyplnPrikaz;
|
|
procedure VyplnDleDilce;
|
|
procedure VyplnFrontuPrace;
|
|
procedure NastavGrid;
|
|
public
|
|
Helios: IHelios;
|
|
typOdvodu: byte;
|
|
jeTest: boolean;
|
|
end;
|
|
|
|
var
|
|
verText: string;
|
|
formOdvedeniPrikazu: TformOdvedeniPrikazu;
|
|
idPrikaz, idKZ, idDZ, idPZ, idVydej, idNadvyr, idPrPostup: integer;
|
|
sklProOdvod, dokl, kmen, cZam, idZam, operaceFP: string;
|
|
vOle1,vOle2: OleVariant;
|
|
casTPVs,casTPVm: Extended;
|
|
canCont, nadvyroba: boolean;
|
|
layName: array[0..KL_NAMELENGTH+1] of Char;
|
|
|
|
|
|
implementation
|
|
uses Vcl.Clipbrd, System.StrUtils, System.Threading, helUtils, myUtils;
|
|
|
|
{$R *.dfm}
|
|
|
|
{
|
|
procedure TformOdvedeniPrikazu.WMNCLBUTTONDOWN(var msg: TMessage);
|
|
var txt: string;
|
|
begin
|
|
if (msg.WParam=HTCAPTION) and (HiWord(GetKeyState(VK_SHIFT))<>0) then
|
|
begin
|
|
txt:= 'Scr ' + IntToStr(Screen.Width) + ' w / ' + IntToStr(Screen.Height) + ' h' + CRLF;
|
|
txt:= txt + 'Frm ' + IntToStr(Self.Width) + ' w / ' + IntToStr(Self.Height) + ' h' + CRLF;
|
|
txt:= txt + IntToStr(Screen.PixelsPerInch) + ' PPI mon / ' + IntToStr(Self.PixelsPerInch) + ' PPI frm' + CRLF;
|
|
Helios.Info(txt);
|
|
end;
|
|
end;
|
|
}
|
|
|
|
|
|
function TformOdvedeniPrikazu.VlastniSkladySQL(const datum: string): string;
|
|
var sql: string;
|
|
begin
|
|
result:= 'N' + QuotedStr('');
|
|
sql:= 'DECLARE @dt DATETIME; DECLARE @i INT;';
|
|
if (datum<>'') then
|
|
sql:= sql + ' SET @dt=CONVERT(datetime,N' + QuotedStr(datum) + ',104); EXEC @i=dbo.hp_GetObdobiDleDatumu @Datum=@dt, @JakyDatum=1'
|
|
else
|
|
sql:= sql + ' SET @i=' + IntToStr(Helios.Obdobi);
|
|
sql:= sql + '; SELECT s.Cislo FROM ' + tblStrom + ' s INNER JOIN dbo.TabStromDef d ON (d.IdStrom=s.Id) WHERE d.Blokovano=0 AND d.Zakazano=0';
|
|
sql:= sql + ' AND s.Cislo LIKE N' + QuotedStr('2%') + ' AND s.Nazev LIKE N' + QuotedStr('%LOV') + ' AND d.IdObdobi=@i ORDER BY s.Cislo';
|
|
with Helios.OpenSQL(sql) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
First;
|
|
result:= '';
|
|
while not(EOF) do
|
|
begin
|
|
result:= result + 'N' + QuotedStr(FieldValues(0)) + ',';
|
|
Next;
|
|
end;
|
|
if (RightStr(result,1)=',') then
|
|
result:= LeftStr(Result, Length(Result)-1);
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.NastavGrid;
|
|
begin
|
|
// gOperace.HeaderSize:= Screen.PixelsPerInch
|
|
if (gOperace.RowCount<1) then
|
|
gOperace.ClearRows;
|
|
gOperace.Width:= Self.Width - 30;
|
|
gOperace.Height:= btnSave.Top - gOperace.Top - 10;
|
|
gOperace.Left:= 10;
|
|
gOperace.RowHeight:= 24;
|
|
// gOperace.RowSize:= 24;
|
|
|
|
gOperace.Columns.Item[0].Width:= Round(gOperace.Width*0.12);
|
|
gOperace.Columns.Item[1].Width:= Round(gOperace.Width*0.12);
|
|
gOperace.Columns.Item[2].Width:= gOperace.Width - gOperace.Columns.Item[0].Width - gOperace.Columns.Item[1].Width - 20;
|
|
|
|
btnSave.Top:= Self.Height - 2*btnSave.Height - Round(Self.Height*0.03);
|
|
btnCancel.Top:= btnSave.Top;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.pOdznacVseClick(Sender: TObject);
|
|
var i: Integer;
|
|
begin
|
|
for i:=0 to gOperace.RowCount-1 do
|
|
gOperace.Cell[1,i].AsBoolean:= false;
|
|
end;
|
|
|
|
|
|
|
|
function TformOdvedeniPrikazu.TestFormulareOK;
|
|
var lSQL: string;
|
|
begin
|
|
result:= false;
|
|
if (Pos('%',selDilec.Text)>0) and (typOdvodu=2) then
|
|
Exit;
|
|
result:= true;
|
|
if (edtKusu.Value<=0) or (edtKusu.Value>StrToFloat(lblZive.Caption)) then
|
|
begin
|
|
Helios.Error(#1'Chybné množství odváděných kusů.'#1);
|
|
edtKusu.SetFocus;
|
|
result:= false;
|
|
end;
|
|
if (idVydej>0) and (result) then
|
|
begin
|
|
lSQL:= 'SELECT id FROM ' + tblEvidNadvyr + ' WHERE IdVydejkaMat=' + IntToStr(idVydej) + ' AND Mnozstvi<Zaevidovano+';
|
|
lSQL:= lSQL + StringReplace(FloatToStr(edtKusu.Value),',','.',[rfReplaceAll]);
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
Helios.Error(#1'Zadané množství by přesáhlo množství zbývající (objednáno-zaevidováno).'#1);
|
|
edtKusu.Value:= 0;
|
|
edtKusu.SetFocus;
|
|
result:= false;
|
|
end;
|
|
end;
|
|
{
|
|
if (edtCasHod.Value<0) then
|
|
begin
|
|
Helios.Error(#1'Chybný evidovaný čas (v hodinách).'#1);
|
|
result:= false;
|
|
end;
|
|
if (edtCasMin.Value<0) then
|
|
begin
|
|
Helios.Error(#1'Chybný evidovaný čas (v minutách).'#1);
|
|
result:= false;
|
|
end;
|
|
if (edtCasHod.Value<=0) and (edtCasMin.Value<=0) and (not nadvyroba) then
|
|
begin
|
|
Helios.Error(#1'Chybný evidovaný čas.'#1);
|
|
result:= false;
|
|
end;
|
|
}
|
|
if ((idZam='') or (idZam='0')) and (result) then
|
|
begin
|
|
Helios.Error(#1'Nebyl vybrán zaměstnanec.'#1);
|
|
result:= false;
|
|
end;
|
|
{
|
|
if (nadvyroba) then
|
|
begin
|
|
Helios.Error(#1'Nebyla vybrána materiálový výdejka ("Objednávka nadvýroby").'#1);
|
|
result:= false;
|
|
end;
|
|
}
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.VyplnFrontuPrace;
|
|
var lSQL: string;
|
|
r: integer;
|
|
begin
|
|
if (idPrPostup>0) then
|
|
begin
|
|
gOperace.RowCount:= gOperace.RowCount + 1;
|
|
r:= gOperace.RowCount-1;
|
|
with Helios.OpenSQL('SELECT Operace,Nazev FROM ' + tblPrPost + ' WHERE id=' + IntToStr(idPrPostup)) do
|
|
if (gOperace.Cells[3,r]<>IntToStr(idPrPostup)) then
|
|
begin
|
|
gOperace.Cell[0,r].AsString:= VarToStr(FieldValues(0));
|
|
gOperace.Cell[1,r].AsBoolean:= true;
|
|
gOperace.Cell[2,r].AsString:= VarToStr(FieldValues(1));
|
|
gOperace.Cell[3,r].AsInteger:= idPrPostup;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.VyplnPrikaz;
|
|
var lSQL, podm: string;
|
|
begin
|
|
selPrikaz.Text:= Trim(selPrikaz.Text);
|
|
selPrikaz.Text:= StringReplace(selPrikaz.Text,' ','',[rfReplaceAll]);
|
|
if (selPrikaz.Text<>'') then
|
|
begin
|
|
podm:= 'p.Rada=N' + QuotedStr(LeftStr(selPrikaz.Text, Pos('-', selPrikaz.Text)-1));
|
|
podm:= podm + ' AND p.Prikaz=' + MidStr(selPrikaz.Text,Pos('-', selPrikaz.Text)+1,255);
|
|
lSQL:= 'SELECT kz.SkupZbo,kz.RegCis,kz.Nazev1,p.kusy_zad,p.kusy_zive,p.kusy_odved,kz.id,pp.Doklad FROM ' + tblPrikaz + ' p INNER JOIN ';
|
|
lSQL:= lSQL + tblKZ + ' kz ON (p.IdTabKmen=kz.id) INNER JOIN ' + tblPrPost + ' pp ON (p.id=pp.IDPrikaz AND pp.Odvadeci=1)';
|
|
lSQL:= lSQL + ' WHERE ' + podm;
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
lblDilec.Caption:= VarToStr(FieldValues(0)) + ' ' + VarToStr(FieldValues(1)) + ' ' + VarToStr(FieldValues(2));
|
|
lblZadane.Caption:= VarToStr(FieldValues(3));
|
|
lblZive.Caption:= VarToStr(FieldValues(4));
|
|
if (lblZive.Caption='0') then
|
|
lblZive.Font.Color:= clRed
|
|
else
|
|
lblZive.Font.Color:= clWindowText;
|
|
lblEvid.Caption:= VarToStr(FieldValues(5));
|
|
idKZ:= StrToInt(VarToStr(FieldValues(6)));
|
|
dokl:= VarToStr(FieldValues(7));
|
|
with Helios.OpenSQL('SELECT VychoziSklad FROM ' + tblParKZ + ' WHERE IdKmenZbozi=' + IntToStr(idKZ)) do
|
|
if (RecordCount>0) then
|
|
sklProOdvod:= VarToStr(FieldValues(0));
|
|
end;
|
|
if (idPrikaz>0) then
|
|
begin
|
|
if (selBarCode.Text='') then
|
|
begin
|
|
with Helios.OpenSQL('SELECT TOP(1) BarCode FROM ' + tblPrPost + ' WHERE idPrikaz=' + IntToStr(idPrikaz) + ' AND Odvadeci=1') do
|
|
if RecordCount>0 then
|
|
selBarCode.Text:= VarToStr(FieldValues(0));
|
|
selZamest.SetFocus;
|
|
end;
|
|
with Helios.OpenSQL('SELECT ISNULL(SUM(TAC_S),0),ISNULL(SUM(TAC_N),0) FROM ' + tblPrPost + ' WHERE IdPrikaz=' + IntToStr(idPrikaz)) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
casTPVs:= RoundToEX(StrToFloat(VarToStr(FieldValues(0))),-1);
|
|
casTPVm:= RoundToEX(StrToFloat(VarToStr(FieldValues(1))),-1);
|
|
with Helios.OpenSQL('SELECT id,Operace,nazev,TAC_Obsluhy_S FROM ' + tblPrPost + ' WHERE IdPrikaz=' + IntToStr(idPrikaz)) do
|
|
begin
|
|
First;
|
|
gOperace.ClearRows;
|
|
while not(EOF) do
|
|
begin
|
|
gOperace.AddRow;
|
|
gOperace.Cell[0,gOperace.RowCount-1].AsString:= VarToStr(FieldValues(1));
|
|
gOperace.Cell[1,gOperace.RowCount-1].AsBoolean:= true;
|
|
gOperace.Cell[2,gOperace.RowCount-1].AsString:= VarToStr(FieldValues(2));
|
|
gOperace.Cell[3,gOperace.RowCount-1].AsInteger:= StrToInt(VarToStr(FieldValues(0)));
|
|
gOperace.Cell[4,gOperace.RowCount-1].AsFloat:= StrToFloat(VarToStr(FieldValues(3)));
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
end;
|
|
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.btnSaveClick(Sender: TObject);
|
|
var lSQL, podm, SQLko: string;
|
|
idx, idx2, idx3, idDZshift, idPMZ, idDZV, idDZP,idKJ,idxTPV,idOdv: integer;
|
|
GidSS,Gdokl,lDokl,sTemp: string;
|
|
GidKZ,idPrKVaz: integer;
|
|
mnoz, mnReal, kszbyt, kszive, VPcas, Pcas, NormCasAll, SkCas, koef: Extended;
|
|
genVO, realVyd, realPrij, cont: boolean;
|
|
ks, ks2, dt, smena, regC, radaVPr, sklOdv, sklMat, rOdv, rPri, rPrik: string;
|
|
idVPs: TArray<TidVPs>;
|
|
operace: TArray<TOperace>;
|
|
casKoef: TArray<TcasKoef>;
|
|
tblOdv, tblOdvPr, tblOdvOp: string;
|
|
idVPr: integer; // přidáno 8.11.2018
|
|
MnozzstviOdvadene: double; // přidáno 8.11.2018
|
|
begin
|
|
ReseedTable(Helios, tblMzdZm);
|
|
ReseedTable(Helios, tblDZ);
|
|
ReseedTable(Helios, tblPZ);
|
|
ReseedTable(Helios, tblEvidOp);
|
|
ReseedTable(Helios, tblEvidOpPol);
|
|
ReseedTable(Helios, tblEvidOpVPr);
|
|
ReseedTable(Helios, tblEvidNadPrij);
|
|
genVO:= false;
|
|
|
|
tblOdv:= 'dbo._TabNTSEvidOpBC';
|
|
tblOdvPr:= 'dbo._TabNTSOdvodPrikazu';
|
|
tblOdvOp:= 'dbo._TabNTSOdvodOperaci';
|
|
|
|
Helios.ExecSQL('IF OBJECT_ID(' + QuotedStr(tblOdv) + ') IS NOT NULL DROP TABLE ' + tblOdv);
|
|
Helios.ExecSQL('IF OBJECT_ID(' + QuotedStr(tblOdvPr) + ') IS NOT NULL DROP TABLE ' + tblOdvPr);
|
|
Helios.ExecSQL('IF OBJECT_ID(' + QuotedStr(tblOdvOp) + ') IS NOT NULL DROP TABLE ' + tblOdvOp);
|
|
|
|
if not(jeTest) then // pokud je test, udelej tabulky typu dbo._TabNTS.....
|
|
begin
|
|
tblOdv:= StringReplace(tblOdv,'dbo._','#',[rfReplaceAll]);
|
|
tblOdvPr:= StringReplace(tblOdvPr,'dbo._','#',[rfReplaceAll]);
|
|
tblOdvOp:= StringReplace(tblOdvOp,'dbo._','#',[rfReplaceAll]);
|
|
end;
|
|
|
|
if (TestFormulareOK) then
|
|
begin
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - klik OK uloz'));
|
|
|
|
edtKusu.Color:= clWindow;
|
|
|
|
lSQL:= 'IF OBJECT_ID(N' + QuotedStr('tempdb..#TabExtKom') + ',N' + QuotedStr('U') + ') IS NULL' + CRLF;
|
|
lSQL:= lSQL + 'CREATE TABLE #TabExtKom(Poznamka NVARCHAR(250) NOT NULL)';
|
|
try
|
|
Helios.ExecSQL(lSQL);
|
|
except
|
|
end;
|
|
|
|
lSQL:= 'IF OBJECT_ID(N' + QuotedStr(IfThen(jeTest,tblOdv, 'tempdb..' + tblOdv)) + ') IS NOT NULL DROP TABLE ' + tblOdv + CRLF;
|
|
lSQL:= lSQL + 'CREATE TABLE ' + tblOdv + ' (IdPrikaz INT, IdKmenZbozi INT, CisloZbozi NVARCHAR(33),';
|
|
lSQL:= lSQL + 'Datum DATETIME, Mnozstvi NUMERIC(19,6), CisloZamest INT, CasHod NUMERIC(9,4), CasMin NUMERIC(9,4),';
|
|
lSQL:= lSQL + 'IdNadvyroba INT NULL, Poznamka NTEXT, Sklad NVARCHAR(30) NOT NULL, IDUziv INT NOT NULL, IdVydejMat INT)';
|
|
Helios.ExecSQL(lSQL);
|
|
|
|
lSQL:= 'IF OBJECT_ID(N' + QuotedStr(IfThen(jeTest,tblOdvPr,'tempdb..' + tblOdvPr)) + ') IS NOT NULL DROP TABLE ' + tblOdvPr + CRLF;
|
|
lSQL:= lSQL + 'CREATE TABLE ' + tblOdvPr + ' (idPrikaz INT, RadaPrikaz NVARCHAR(20), idKmenZbozi INT, Datum DATETIME DEFAULT GETDATE(),';
|
|
lSQL:= lSQL + 'Mnozstvi NUMERIC(19,6) DEFAULT 0, CisloZamest INT, CasHod TINYINT, CasMin TINYINT, SkladOdv NVARCHAR(30), SkladMat NVARCHAR(30))';
|
|
Helios.ExecSQL(lSQL);
|
|
|
|
lSQL:= 'IF OBJECT_ID(N' + QuotedStr(IfThen(jeTest,tblOdvOp,'tempdb..' + tblOdvOp)) + ') IS NOT NULL DROP TABLE ' + tblOdvOp + CRLF;
|
|
lSQL:= lSQL + 'CREATE TABLE ' + tblOdvOp + ' (Operace NVARCHAR(4), idPostup INT NOT NULL, IDPrikaz INT NULL, Mnozstvi NUMERIC(19,6), NormCasS NUMERIC(10,2))';
|
|
Helios.ExecSQL(lSQL);
|
|
|
|
if (LeftStr(selPrikaz.Text,3)='010') then
|
|
//cbSklad.ItemIndex:= GetItemIndexStartingWith(cbSklad,'100');
|
|
cbSklad.ItemIndex:= 3;//GetItemIndexStartingWith(cbSklad,'100'); //upraveno 26.6.2018
|
|
sklProOdvod:= StringReplace(cbSklad.Text,'.','',[rfReplaceAll]);
|
|
if (nadvyroba) then
|
|
sklProOdvod:= sklFin;
|
|
|
|
regC:= '';
|
|
idOdv:= 0;
|
|
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - info o porizene evidenci'));
|
|
// ReseedTable(Helios, tblEvidOp);
|
|
lSQL:= 'INSERT ' + tblOdv + ' (IdPrikaz,IdKmenZbozi,CisloZbozi,Datum,Mnozstvi,CisloZamest,CasHod,CasMin,Sklad';
|
|
lSQL:= lSQL + ',IdNadvyroba,Poznamka,IDUziv,IdVydejMat) VALUES (';
|
|
if (selPrikaz.Text<>'') then
|
|
lSQL:= lSQL + IntToStr(idPrikaz)
|
|
else
|
|
lSQL:= lSQL + 'NULL';
|
|
lSQL:= lSQL + ',';
|
|
if (selDilec.Text<>'') or (idPrikaz>0) then
|
|
begin
|
|
lSQL:= lSQL + IntToStr(idKZ);
|
|
with Helios.OpenSQL('SELECT CisloZbozi FROM ' + tblKZ + ' WHERE id=' + IntToStr(idKZ)) do
|
|
if (RecordCount>0) and not VarIsNull(FieldValues(0)) then
|
|
begin
|
|
lSQL:= lSQL + ',N' + QuotedStr(VarToStr(FieldValues(0)));
|
|
regC:= VarToStr(FieldValues(0));
|
|
end
|
|
else
|
|
lSQL:= lSQL + ',NULL'
|
|
end
|
|
else
|
|
lSQL:= lSQL + 'NULL,NULL';
|
|
podm:= DateToStr(dtDatum.Date) + ' ' + TimeToStr(Now);
|
|
lSQL:= lSQL + ',CONVERT(datetime,N' + QuotedStr(podm) + ',104),';
|
|
lSQL:= lSQL + StringReplace(FloatToStr(edtKusu.Value),',','.',[rfReplaceAll]) + ',' + selZamest.Text + ',';
|
|
lSQL:= lSQL + StringReplace(IfThen(edtCasHod.Text<>'',edtCasHod.Text,'0'),',','.',[rfReplaceAll]) + ',';
|
|
lSQL:= lSQL + StringReplace(IfThen(edtCasMin.Text<>'',edtCasMin.Text,'0'),',','.',[rfReplaceAll]) + ',N';
|
|
lSQL:= lSQL + QuotedStr(sklProOdvod) + ',';
|
|
if (nadvyroba) then
|
|
lSQL:= lSQL + IntToStr(idNadvyr)
|
|
else
|
|
lSQL:= lSQL + 'NULL';
|
|
lSQL:= lSQL + ',N' + QuotedStr('') + ',' + IntToStr(Helios.UserId) + ',' + IntToStr(idVydej) + ')'; // QuotedStr(verText)
|
|
try
|
|
Helios.ExecSQL(lSQL)
|
|
except on E:Exception do
|
|
begin
|
|
Helios.Error(#1'Informace - nelze uložit údaj o pořizované evidenci.'#1 + CRLF + errPlg + CRLF + E.Message + CRLF + lSQL);
|
|
Exit;
|
|
end;
|
|
end;
|
|
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - zapis operaci'));
|
|
// zapis operaci do nove tabulky
|
|
podm:= StringReplace(FloatToStr(edtKusu.Value),',','.',[rfReplaceAll]); // evidovane kusy
|
|
for idx:=0 to gOperace.RowCount-1 do
|
|
try
|
|
if (gOperace.Cell[1,idx].AsBoolean=true) then
|
|
begin
|
|
lSQL:= 'INSERT ' + tblOdvOp + ' (Operace, idPostup, Mnozstvi, NormCasS) VALUES (N';
|
|
lSQL:= lSQL + QuotedStr(gOperace.Cell[0,idx].AsString) + ',';
|
|
lSQL:= lSQL + gOperace.Cell[3,idx].AsString + ',' + podm + ',';
|
|
lSQL:= lSQL + StringReplace(FloatToStr(gOperace.Cell[4,idx].AsFloat*edtKusu.Value),',','.',[rfReplaceAll]) + ')';
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
except on E:Exception do
|
|
begin
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - chyba insertu operaci: ' + E.Message));
|
|
Helios.Error(#1'CHYBA: '#1 + E.Message + CRLF + lSQL);
|
|
Exit;
|
|
end;
|
|
end;
|
|
Helios.ExecSQL('MERGE ' + tblOdvOp + ' AS T USING dbo.TabPrPostup AS S ON (S.ID=T.IdPostup) WHEN MATCHED THEN UPDATE SET T.IdPrikaz=S.IdPrikaz;');
|
|
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - nacitani udaju o prikazech'));
|
|
// ziskej data o prikazu/prikazech
|
|
SetLength(idVPs,1);
|
|
if (idPrikaz>0) then
|
|
begin
|
|
idVPs[0].id:= idPrikaz;
|
|
with Helios.OpenSQL('SELECT RadaPrikaz FROM ' + tblPrikaz + ' WHERE id=' + IntToStr(idPrikaz)) do
|
|
idVPs[0].radaPrikaz:= VarToStr(FieldValues(0));
|
|
idVPs[0].idKZ:= idKZ;
|
|
idVPs[0].ks:= edtKusu.Value;
|
|
end
|
|
else
|
|
begin
|
|
lSQL:= 'SELECT id, kusy_zive, IDTabKmen, RadaPrikaz FROM ' + tblPrikaz + ' WHERE kusy_zive>0 AND StavPrikazu IN (30,40) AND ';
|
|
if (nadvyroba) then
|
|
lSQL:= lSQL + 'Rada IN (N' + QuotedStr('400') + ',N' + QuotedStr(radaVPVyroba) + ') AND KmenoveStredisko=N' + QuotedStr(sklDP)
|
|
else
|
|
lSQL:= lSQL + 'Rada IN (N' + QuotedStr(radaVPRekl) + ',N' + QuotedStr(radaVPVyroba) + ')';
|
|
lSQL:= lSQL + ' AND IDTabKmen=' + IntTOStr(idKZ) + ' ORDER BY Rada DESC,Plan_ukonceni'; // RadaPrikaz
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
SetLength(idVPs,RecordCount);
|
|
idx:= 0;
|
|
ksZbyt:= edtKusu.Value;
|
|
First;
|
|
while (not(EOF)) and (kszbyt>0) do
|
|
begin
|
|
ksZive:= StrToFloat(VarToStr(FieldValues(1)));
|
|
if (ksZive>=kszbyt) then
|
|
begin
|
|
ksZive:= kszbyt;
|
|
ksZbyt:= 0;
|
|
end;
|
|
if (ksZive>0) then
|
|
begin
|
|
idVPs[idx].id:= StrToInt(VarToStr(FieldValues(0)));
|
|
idVPs[idx].radaPrikaz:= VarToStr(FieldValues(3));
|
|
idVPs[idx].ks:= ksZive;
|
|
idVPs[idx].idKZ:= StrToInt(VarToStr(FieldValues(2)));
|
|
ksZbyt:= ksZbyt - ksZive;
|
|
end;
|
|
Inc(idx);
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - prikazy do pomocne tabulky'));
|
|
|
|
// zapis prikazy do pracovni tabulky
|
|
for idx:=Low(idVPs) to High(idVPs) do
|
|
begin
|
|
idPrikaz:= idVPs[idx].id;
|
|
if (idPrikaz=0) then
|
|
Continue;
|
|
|
|
with Helios.OpenSQL('SELECT Rada FROM dbo.TabPrikaz WHERE Id=' + IntToStr(idPrikaz)) do
|
|
radaVPr:= VarToStr(FieldValues(0));
|
|
|
|
sklOdv:= '';
|
|
ks:= StringReplace(FloatToStr(idVPs[idx].ks),',','.',[rfReplaceAll]);
|
|
if (radaVPr='010') then
|
|
begin
|
|
if (sklOdv='') then
|
|
sklOdv:= sklObch;
|
|
end
|
|
else
|
|
begin
|
|
if (sklOdv='') then
|
|
sklOdv:= sklVyr;
|
|
end;
|
|
|
|
if (nadvyroba) then
|
|
sklOdv:= sklFin;
|
|
|
|
|
|
{
|
|
lSQL:= 'SELECT ISNULL(PrijemVyrDil_SkladProGenHlavDZ,N'''') /*, ISNULL(VydejMatPol_SkladProGenHlavDZ,N'''')*/ FROM dbo.TabRadyPrikazu';
|
|
lSQL:= lSQL + ' WHERE Rada=N' + QuotedStr(radaVPr);
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (VarToStr(FieldValues(0))<>'') then
|
|
sklOdv:= VarToStr(FieldValues(0));
|
|
}
|
|
|
|
lSQL:= 'INSERT ' + tblOdvPr + ' (IdPrikaz,RadaPrikaz,IdKmenZbozi,Mnozstvi,Datum,CisloZamest,CasHod,CasMin,SkladOdv) SELECT ';
|
|
lSQL:= lSQL + IntToStr(idPrikaz) + ',N' + QuotedStr(idVPs[idx].radaPrikaz) + ',' + IntToStr(idKZ) + ',' + StringReplace(ks,',','.',[rfReplaceAll]);
|
|
lSQL:= lSQL + ',CONVERT(datetime,N' + QuotedStr(DateToStr(dtDatum.Date)) + ',104),' + IfThen(selZamest.Text<>'', Trim(selZamest.Text) ,'NULL');
|
|
lSQL:= lSQL + ',0,0,N' + QuotedStr(sklOdv);
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
|
|
if not(jeTest) then
|
|
begin
|
|
try
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - start procedury ep_NTS_plgOdvedeniPrikazu'));
|
|
Helios.ExecSQL('EXEC dbo.ep_NTS_plgOdvedeniPrikazu');
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - konec procedury ep_NTS_plgOdvedeniPrikazu'));
|
|
|
|
|
|
with Helios.OpenSQL('SELECT * FROM #TabExtKom') do
|
|
if (RecordCount>0) then begin
|
|
Helios.OpenBrowse(541,'');
|
|
exit;
|
|
end;
|
|
|
|
//přidáno 8.11.2018
|
|
SQLko := 'Select IdPrikaz,Mnozstvi/*,RadaPrikaz,IdKmenZbozi,Datum,CisloZamest,CasHod,CasMin,SkladOdv*/ from ' + tblOdvPr ;
|
|
with Helios.OpenSQL(SQLko) do begin
|
|
if (RecordCount>0) then
|
|
begin
|
|
First;
|
|
while (not(EOF)) do
|
|
begin
|
|
idVPr:= FieldValues(0) ;
|
|
MnozzstviOdvadene:= FieldValues(1) ;
|
|
ZadejVyrPrikazNaVydejku(Helios, idVPr, MnozzstviOdvadene);
|
|
//Helios.Info(idVPr.tostring);
|
|
Next;
|
|
end;
|
|
end;
|
|
// Helios.Info(recordcount.ToString)
|
|
end;
|
|
|
|
// Helios.Info('Dnešní verze 8.11.2018');
|
|
|
|
|
|
//konec přidání 8.11.2018
|
|
|
|
with Helios.OpenSQL('SELECT * FROM #TabExtKom') do
|
|
if (RecordCount>0) then Helios.OpenBrowse(541,'');
|
|
|
|
|
|
|
|
except on E:Exception do
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - chyba pri spusteni procedury dbo.ep_NTS_plgOdvedeniPrikazu: ' + E.Message));
|
|
end;
|
|
end
|
|
else
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - test, procedura dbo.ep_NTS_plgOdvedeniPrikazu nebude spustena'));
|
|
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - mazu temp tabulky'));
|
|
try
|
|
Helios.ExecSQL('IF OBJECT_ID(' + QuotedStr('tempdb..#TabPrKVazbyGen') + ') IS NOT NULL DROP TABLE #TabPrKVazbyGen');
|
|
Helios.ExecSQL('IF OBJECT_ID(' + QuotedStr('tempdb..#TabOdved') + ') IS NOT NULL DROP TABLE #TabOdved');
|
|
Helios.ExecSQL('IF OBJECT_ID(' + QuotedStr('tempdb..#TabGenPrijem') + ') IS NOT NULL DROP TABLE #TabGenPrijem');
|
|
Helios.ExecSQL('IF OBJECT_ID(' + QuotedStr('tempdb..#TabGenRezVyd') + ') IS NOT NULL DROP TABLE #TabGenRezVyd');
|
|
except on E:Exception do
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - chyba pri mazani temp tabulek: ' + E.Message));
|
|
end;
|
|
|
|
Helios.Refresh(true);
|
|
end;
|
|
|
|
// sBar.SimpleText:= '';
|
|
if not(jeTest) then
|
|
begin
|
|
try
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - mazu temp tabulky 2'));
|
|
Helios.ExecSQL('IF OBJECT_ID(' + QuotedStr(IfThen(jeTest,tblOdv,'tempdb..' + tblOdv)) + ') IS NOT NULL DROP TABLE ' + tblOdv);
|
|
Helios.ExecSQL('IF OBJECT_ID(' + QuotedStr(IfThen(jeTest,tblOdvPr,'tempdb..' + tblOdvPr)) + ') IS NOT NULL DROP TABLE ' + tblOdvPr);
|
|
Helios.ExecSQL('IF OBJECT_ID(' + QuotedStr(IfThen(jeTest,tblOdvOp,'tempdb..' + tblOdvOp)) + ') IS NOT NULL DROP TABLE ' + tblOdvOp);
|
|
except on E:Exception do
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - chyba pri mazani temp tabulek 2: ' + E.Message));
|
|
end;
|
|
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - test podminky tisku: ' + LeftStr(selDilec.Text,3) + ' ' + lblDilec.Caption));
|
|
// pokud je to Rele a zbytek je >0, tiskni novou pruvodku
|
|
end;
|
|
|
|
if ((LeftStr(selDilec.Text,3)='PRF') or (LeftStr(selDilec.Text,3)='VRF') or
|
|
(LeftStr(lblDilec.Caption,3)='PRF') or (LeftStr(lblDilec.Caption,3)='VRF'))
|
|
and (StrToFloat(lblZive.Caption)-edtKusu.Value>0) then
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - podminka splnena, tisk by byl proveden'));
|
|
|
|
begin
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - tisk'));
|
|
try
|
|
Helios.PrintForm3(bidFrontaPrace,31,'TabPrPostup.IdPrikaz=' + IntToStr(idPrikaz));
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - konec tisku'));
|
|
except on E:Exception do
|
|
begin
|
|
Helios.Error(#1'Chyba'#1 + E.Message);
|
|
end;
|
|
end;
|
|
end;
|
|
// else
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - podminka tisku nesplnena'));
|
|
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - konec pluginu'));
|
|
Close;
|
|
{
|
|
try
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - nove form activate'));
|
|
FormActivate(Sender);
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - nove form show'));
|
|
FormShow(Sender);
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - po form show'));
|
|
except on E:Exception do
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Plg Odvod - chyba: ' + E.Message));
|
|
end;
|
|
}
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.edtCasHodKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
begin
|
|
if (Key=VK_RETURN) then
|
|
edtCasMin.SetFocus;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.edtCasMinKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
begin
|
|
if (Key=VK_RETURN) then
|
|
btnSave.SetFocus;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.edtKusuEnter(Sender: TObject);
|
|
begin
|
|
if (selZamest.Text<>'') and (lblZamest.Caption='') then
|
|
selZamestExit(Sender);
|
|
selDilec.Color:= clWindow;
|
|
selZamest.Color:= clWindow;
|
|
edtKusu.Color:= clYellowLight;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.edtKusuExit(Sender: TObject);
|
|
begin
|
|
edtKusu.Color:= clWindow;
|
|
if (edtKusu.Value>0) then
|
|
begin
|
|
if (edtKusu.Value>StrToFloat(lblZive.Caption)) then
|
|
begin
|
|
Helios.Error(#1'Nelze odvést víc kusů než zbývá na příkaze.'#1);
|
|
edtKusu.Value:= 0;
|
|
edtKusu.Color:= clYellowLight;
|
|
edtKusu.SelectAll;
|
|
edtKusu.SetFocus;
|
|
end
|
|
else
|
|
btnSave.SetFocus;
|
|
end
|
|
else
|
|
if (gOperace.RowCount>1) then
|
|
Helios.Error(#1'Zadejte počet kusů'#1);
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.edtKusuKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
begin
|
|
if (Key=VK_RETURN) then
|
|
btnSave.SetFocus;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.FormActivate(Sender: TObject);
|
|
begin
|
|
canCont:= false;
|
|
|
|
verText:= GetFileVersion2(GetModuleName(HInstance));
|
|
if (Length(verText)=12) then
|
|
verText:= LeftStr(verText,9) + '0' + RightStr(verText,3);
|
|
selDilec.SetFocus;
|
|
Self.Caption:= Self.Caption + ' (verze ' + verText + ')';
|
|
|
|
btnSave.Top:= Self.Height - 2*btnSave.Height - Round(13/(Screen.Height/Self.Width));
|
|
btnCancel.Top:= btnSave.Top;
|
|
gOperace.Height:= btnSave.Top - gOperace.Top - 15;
|
|
|
|
case typOdvodu of
|
|
1: begin // podle prikazu
|
|
selDilec.Enabled:= false;
|
|
selFronta.Enabled:= false;
|
|
selPrikaz.Enabled:= true;
|
|
selPrikaz.SetFocus;
|
|
end;
|
|
2: begin // podle vyrobku
|
|
selPrikaz.Enabled:= false;
|
|
selFronta.Enabled:= false;
|
|
selDilec.Enabled:= true;
|
|
selDilec.SetFocus;
|
|
end;
|
|
3: begin // podle fronty prace
|
|
selDilec.Enabled:= false;
|
|
selPrikaz.Enabled:= false;
|
|
selFronta.Enabled:= true;
|
|
selFronta.SetFocus;
|
|
end;
|
|
end;
|
|
|
|
selDilec.Left:= Label12.Left + Label12.Width + 13;
|
|
selPrikaz.Left:= Label11.Left + Label11.Width + 8;
|
|
dtDatum.Left:= Label4.Left + Label4.Width + 8;
|
|
Label5.Left:= dtDatum.Left + dtDatum.Width + 8;
|
|
selZamest.Left:= Label5.Left + Label5.Width + 8;
|
|
lblZamest.Left:= selZamest.Left + selZamest.Width + 8;
|
|
edtKusu.Left:= Label1.Left + Label1.Width + 10;
|
|
// Self.Width:= Round(320/(Screen.Height/Screen.Width));
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
begin
|
|
if (layName[0]<>'') then
|
|
LoadKeyboardLayout(@layName, KLF_ACTIVATE or KLF_SETFORPROCESS);
|
|
Action:= caFree;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
begin
|
|
// if Key=VK_RETURN then
|
|
// Key:= 0;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.FormResize(Sender: TObject);
|
|
begin
|
|
NastavGrid;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.FormShow(Sender: TObject);
|
|
var lSQL: string;
|
|
idx, x: integer;
|
|
begin
|
|
if GetKeyboardLayoutName(@layName) then
|
|
LoadKeyboardLayout('00020409', KLF_ACTIVATE or KLF_SETFORPROCESS);
|
|
|
|
{
|
|
Application.Handle:= Helios.MainApplicationHandle;
|
|
Application.Icon.Handle:= Helios.MainApplicationIconHandle;
|
|
|
|
DefFontData.CharSet:= Helios.Charset;
|
|
DefFontData.Name:= Helios.Font;
|
|
DefFontData.Height:= Helios.FontHeight;
|
|
|
|
Screen.MenuFont.CharSet:= DefFontData.CharSet;
|
|
Screen.MenuFont.Name:= DefFontData.Name;
|
|
Screen.MenuFont.Height:= DefFontData.Height;
|
|
|
|
Self.Font.Name:= Helios.Font;
|
|
Self.Font.Size:= Helios.FontHeight;
|
|
}
|
|
|
|
// ignore changed DPI and keep dialog in originaly designed size
|
|
// if (Screen.PixelsPerInch<>PixelsPerInch) then
|
|
// ScaleBy(Screen.PixelsPerInch, PixelsPerInch);
|
|
|
|
idx:= 0;
|
|
x:= Helios.FontHeight-3;
|
|
while (idx<Self.ComponentCount-1) do
|
|
begin
|
|
if (Components[idx] is TLabel) then
|
|
begin
|
|
(Components[idx] as TLabel).Font.Name:= Helios.Font;
|
|
(Components[idx] as TLabel).Font.Height:= x;
|
|
end;
|
|
if (Components[idx] is TComboBox) then
|
|
begin
|
|
(Components[idx] as TComboBox).Font.Name:= Helios.Font;
|
|
(Components[idx] as TComboBox).Font.Height:= x;
|
|
end;
|
|
if (Components[idx] is TRzButtonEdit) then
|
|
begin
|
|
(Components[idx] as TRzButtonEdit).Font.Name:= Helios.Font;
|
|
(Components[idx] as TRzButtonEdit).Font.Height:= x;
|
|
end;
|
|
if (Components[idx] is TNextGrid6) then
|
|
begin
|
|
(Components[idx] as TNextGrid6).Font.Name:= Helios.Font;
|
|
(Components[idx] as TNextGrid6).Font.Height:= x+3;
|
|
end;
|
|
if (Components[idx] is TBitBtn) then
|
|
begin
|
|
(Components[idx] as TBitBtn).Font.Name:= Helios.Font;
|
|
(Components[idx] as TBitBtn).Font.Height:= x;
|
|
end;
|
|
if (Components[idx] is TRzDateTimePicker) then
|
|
begin
|
|
(Components[idx] as TRzDateTimePicker).Font.Name:= Helios.Font;
|
|
(Components[idx] as TRzDateTimePicker).Font.Height:= x;
|
|
end;
|
|
if (Components[idx] is TRzNumericEdit) then
|
|
begin
|
|
(Components[idx] as TRzNumericEdit).Font.Name:= Helios.Font;
|
|
(Components[idx] as TRzNumericEdit).Font.Height:= x;
|
|
end;
|
|
if (Components[idx] is TGroupBox) then
|
|
begin
|
|
(Components[idx] as TGroupBox).Font.Name:= Helios.Font;
|
|
(Components[idx] as TGroupBox).Font.Height:= x;
|
|
end;
|
|
Inc(idx);
|
|
end;
|
|
|
|
// SQL2012 with Helios.OpenSQL('SELECT FORMAT(GETDATE(),''d.M.yyyy'',''cs-CZ'')') do
|
|
try
|
|
// SQL2008 with Helios.OpenSQL('SELECT CONVERT(nvarchar(10), GETDATE(), 104)') do
|
|
with Helios.OpenSQL('SELECT FORMAT(GETDATE(),''d.M.yyyy'',''cs-CZ'')') do
|
|
dtDatum.Date:= StrToDate(VarToStr(FieldValues(0)));
|
|
except on E:Exception do
|
|
// Helios.Error(#1'Chyba při získávání datumu ze serveru...'#1 + CRLF + E.ClassName + CRLF + E.Message);
|
|
raise Exception.Create('Chyba při získávání datumu ze serveru...' + CRLF + E.ClassName + CRLF + E.Message);
|
|
end;
|
|
NastavGrid;
|
|
|
|
gOperace.RowCount:= 0;
|
|
// dtDatum.Enabled:= false;
|
|
idPrikaz:= 0;
|
|
idPrPostup:= 0;
|
|
idKZ:= 0;
|
|
idDZ:= 0;
|
|
idPZ:= 0;
|
|
dokl:= '';
|
|
cZam:= '0';
|
|
if (Helios.BrowseID=bidHrOdvod) then
|
|
cbSklad.ItemIndex:= 2
|
|
else
|
|
begin
|
|
cbSklad.ItemIndex:= 0;
|
|
for idx:=0 to cbSklad.Items.Count-1 do
|
|
begin
|
|
lSQL:= cbSklad.Items.Strings[idx];
|
|
lSQL:= Trim(LeftStr(lSQL, Pos('-',lSQL)-1));
|
|
lSQL:= StringReplace(lSQL,'.','',[rfReplaceAll]);
|
|
if (Helios.Sklad=lSQL) then
|
|
cbSklad.ItemIndex:= idx;
|
|
end;
|
|
end;
|
|
|
|
Self.Caption:= 'Odvedení příkazu / dílce';
|
|
|
|
nadvyroba:= false;
|
|
|
|
edtCasMin.Value:= 0;
|
|
edtCasHod.Value:= 0;
|
|
grpTampo.Visible:= false;
|
|
grpNadvyroba.Visible:= false;
|
|
// if (typOdvodu=1) then
|
|
// grpTampo.Visible:= true;
|
|
// if nadvyroba then
|
|
// grpNadvyroba.Visible:= true;
|
|
lSQL:= 'SELECT id FROM ' + tblObecPrehled + ' WHERE Cislo=' + IntToStr(Helios.BrowseID-100000);
|
|
lSQL:= lSQL + ' AND NazevSys=N' + QuotedStr('hvw_EvidenceNadvyroby');
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin // Nadvyroba
|
|
nadvyroba:= true;
|
|
Label11.Visible:= false;
|
|
selPrikaz.Visible:= false;
|
|
grpTampo.Visible:= false;
|
|
grpNadvyroba.Visible:= true;
|
|
cbSklad.ItemIndex:= 2;
|
|
cbSklad.Enabled:= false;
|
|
// edtCasHod.Enabled:= false;
|
|
// edtCasMin.Enabled:= false;
|
|
selSmena.Enabled:= false;
|
|
gOperace.PopupMenu:= nil;
|
|
selVydejMat.SetFocus;
|
|
Self.Caption:= 'Odvedení Nadvýroby';
|
|
end;
|
|
|
|
with Helios.OpenSQL('SELECT kod FROM ' + tblCSmen + ' WHERE Blokovano=0') do
|
|
if (RecordCount>0) then
|
|
begin
|
|
First;
|
|
selSmena.Text:= VarToStr(FieldValues(0));
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.Label6MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
|
|
begin
|
|
if (ssShift in Shift) then
|
|
ShowMessage('Čas dle TPV: sek. ' + FloatToStr(casTPVs*edtKusu.Value) + ' / min. ' + FloatToStr(casTPVm*edtKusu.Value));
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selBarCodeExit(Sender: TObject);
|
|
begin
|
|
selPrikazExit(Sender);
|
|
end;
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selBarCodeKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
begin
|
|
selBarCode.Text:= Trim(selBarCode.Text);
|
|
if (selBarCode.Text<>'') then
|
|
begin
|
|
selDilec.Text:= '';
|
|
idKZ:= 0;
|
|
end;
|
|
if (Key=VK_RETURN) then
|
|
begin
|
|
with Helios.OpenSQL('SELECT idPrikaz FROM ' + tblPrPost + ' WHERE BarCode=N' + QuotedStr(selBarCode.Text)) do // and Odvadeci=1
|
|
if (RecordCount>0) then
|
|
begin
|
|
idPrikaz:= StrToInt(VarToStr(FieldValues(0)));
|
|
with Helios.OpenSQL('SELECT RadaPrikaz FROM ' + tblPrikaz + ' WHERE id=' + IntToStr(idPrikaz)) do
|
|
selPrikaz.Text:= VarToStr(FieldValues(0));
|
|
VyplnPrikaz;
|
|
selZamest.SetFocus;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.pVyberVseClick(Sender: TObject);
|
|
var i: Integer;
|
|
begin
|
|
for i:=0 to gOperace.RowCount-1 do
|
|
gOperace.Cell[1,i].AsBoolean:= true;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.VyplnDleDilce;
|
|
var lSQL: string;
|
|
idx: integer;
|
|
begin
|
|
if (idKZ>0) then
|
|
begin
|
|
with Helios.OpenSQL('SELECT SkupZbo,RegCis,Nazev1 FROM ' + tblKZ + ' WHERE id=' + IntToStR(idKZ)) do
|
|
begin
|
|
selDilec.Text:= VarToStr(FieldValues(0)) + ' ' + VarToStr(FieldValues(1));
|
|
lblDilec.Caption:= VarHodnota(FieldValues(2),'');
|
|
end;
|
|
|
|
lSQL:= 'SELECT SUM(kusy_zad), SUM(kusy_odved), SUM(kusy_zive) FROM ' + tblPrikaz;
|
|
lSQL:= lSQL + ' WHERE StavPrikazu=30 AND IDTabKmen=' + IntToStr(idKZ);
|
|
if (nadvyroba) then
|
|
lSQL:= lSQL + ' AND KmenoveStredisko=N' + QuotedStr(sklDP);
|
|
with Helios.OpenSQL(lSQL) do
|
|
if RecordCount>0 then
|
|
begin
|
|
if not VarIsNull(FieldValues(0)) then
|
|
lblZadane.Caption:= VarToStr(FieldValues(0));
|
|
if not VarIsNull(FieldValues(1)) then
|
|
lblEvid.Caption:= VarToStr(FieldValues(1));
|
|
if not VarIsNull(FieldValues(2)) then
|
|
lblZive.Caption:= VarToStr(FieldValues(2));
|
|
end;
|
|
|
|
with Helios.OpenSQL('SELECT CONVERT(int,operace),nazev,id,TAC_S FROM ' + tblPostup + ' WHERE dilec=' + IntToStr(idKZ)) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
gOperace.ClearRows;
|
|
NastavGrid;
|
|
gOperace.RowCount:= RecordCount;
|
|
First;
|
|
idx:= -1;
|
|
while not(EOF) do
|
|
begin
|
|
Inc(idx);
|
|
gOperace.Cell[0,idx].AsInteger:= VarHodnota(FieldValues(0),0);
|
|
gOperace.Cell[1,idx].AsBoolean:= true;
|
|
gOperace.Cell[2,idx].AsString:= VarHodnota(FieldValues(1),'');
|
|
gOperace.Cell[3,idx].AsInteger:= VarHodnota(FieldValues(2),0);
|
|
gOperace.Cell[4,idx].AsFloat:= VarHodnota(FieldValues(3),0.0); // normovany cas v sek
|
|
Next;
|
|
end;
|
|
end;
|
|
selZamest.SetFocus;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selDilecButtonClick(Sender: TObject);
|
|
var podm: string;
|
|
begin
|
|
idKZ:= 0;
|
|
podm:= 'TabKmenZbozi.id IN (SELECT IDTabKmen FROM ' + tblPrikaz + ' WHERE StavPrikazu=30 GROUP BY IDTabKmen)';
|
|
if Helios.Prenos(bidKZ,'id',vOle1,podm,'Vyráběné dílce',true) then
|
|
idKZ:= StrToInt(VarToStr(vOle1));
|
|
VyplnDleDilce;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selDilecEnter(Sender: TObject);
|
|
begin
|
|
selDilec.Color:= clYellowLight;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selDilecExit(Sender: TObject);
|
|
var podm: string;
|
|
begin
|
|
selDilec.Color:= clWindow;
|
|
selDilec.Text:= UpperCase(Trim(selDilec.Text));
|
|
// selDilec.Text:= StringReplace()
|
|
if (selDilec.Text<>'') then
|
|
begin
|
|
if Pos('%',selDilec.Text)>0 then
|
|
selDilec.Text:= StringReplace(selDilec.Text,'%','_',[rfReplaceAll]);
|
|
podm:= 'SELECT id FROM ' + tblKZ + ' WHERE UPPER(CisloZbozi) LIKE N' + QuotedStr('%' + StringReplace(selDilec.Text,' ','',[rfReplaceAll]) + '%' );
|
|
if (selDilec.Text<>'') and (idKZ=0) then
|
|
with Helios.OpenSQL(podm) do
|
|
begin
|
|
if (RecordCount>1) then
|
|
begin
|
|
podm:= 'TabKmenZbozi.id IN (' + podm + ')';
|
|
if Helios.Prenos(bidKZ,'id',vOle1,podm,'Vyráběné dílce',true) then
|
|
idKZ:= StrToInt(VarToStr(vOle1));
|
|
end;
|
|
|
|
if (RecordCount=1) then
|
|
idKZ:= StrToInt(VarToStr(FieldValues(0)));
|
|
|
|
if (RecordCount=0) then
|
|
begin
|
|
idKZ:= 0;
|
|
Helios.Error(#1'Zadaný dílec nebyl nalezen.'#1);
|
|
selDilec.Color:= clYellowLight;
|
|
selDilec.SelectAll;
|
|
selDilec.SetFocus;
|
|
end;
|
|
{
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblPostup + ' WHERE dilec=' + IntTOStr(idKZ)) do
|
|
if RecordCount>1 then
|
|
begin
|
|
if not Helios.YesNo(#1'Pozor, tento dílec obsahuje více jak 1 operaci na kus.'#1 + CRLF + 'Chcete jej i přesto evidovat ?',true) then
|
|
Exit;
|
|
end;
|
|
}
|
|
if (idKZ>0) then
|
|
begin
|
|
VyplnDleDilce;
|
|
selZamest.Color:= clYellowLight;
|
|
selZamest.Text:= '';
|
|
selZamest.SelectAll;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selDilecKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
begin
|
|
// if (Key=VK_RETURN) then
|
|
// Key:= 0;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selDilecKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
begin
|
|
selDilec.Text:= Trim(selDilec.Text);
|
|
if (selDilec.Text<>'') then
|
|
begin
|
|
selBarCode.Text:= '';
|
|
selPrikaz.Text:= '';
|
|
idPrikaz:= 0;
|
|
end;
|
|
if (Key=VK_RETURN) then
|
|
begin
|
|
selDilec.Width:= Self.Canvas.TextWidth(selDilec.Text);
|
|
selDilecExit(Sender);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selFrontaButtonClick(Sender: TObject);
|
|
var podm: string;
|
|
begin
|
|
idPrPostup:= 0;
|
|
idPrikaz:= 0;
|
|
operaceFP:= '';
|
|
podm:= 'TabPrPostup.Kusy_zive>0 AND TabPrPostup.Pracoviste IN (SELECT id FROM ' + tblCPrac + ' WHERE Pracoviste LIKE N';
|
|
podm:= podm + QuotedStr('RF%') + ')';
|
|
if Helios.Prenos(bidVyrOper,'Id',vOle1,podm,'Fronta práce',true) then
|
|
begin
|
|
idPrPostup:= StrToInt(VarToStr(vOle1));
|
|
podm:= 'SELECT vp.RadaPrikaz,pp.idPrikaz,pp.Operace FROM ' + tblPrPost + ' pp INNER JOIN ' + tblPrikaz;
|
|
podm:= podm + ' vp ON (vp.Id=pp.IdPrikaz) WHERE pp.id=' + IntToStr(idPrPostup);
|
|
with Helios.OpenSQL(podm) do
|
|
begin
|
|
selPrikaz.Text:= VarToStr(FieldValues(0));
|
|
idPrikaz:= StrToInt(VarToStr(FieldValues(1)));
|
|
operaceFP:= Trim(VarToStr(FieldValues(2)));
|
|
end;
|
|
selFronta.Text:= IntToStr(idPrPostup);
|
|
VyplnPrikaz;
|
|
VyplnFrontuPrace;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selFrontaExit(Sender: TObject);
|
|
begin
|
|
selFronta.Text:= Trim(selFronta.Text);
|
|
if (selFronta.Text<>'') and IsNumeric(selFronta.Text) then
|
|
begin
|
|
if (idPrPostup=0) then
|
|
with Helios.OpenSQL('SELECT Id,IdPrikaz,Operace FROM ' + tblPrPost + ' WHERE id=' + selFronta.Text) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
idPrPostup:= StrToInt(VarToStr(FieldValues(0)));
|
|
idPrikaz:= StrToInt(VarToStr(FieldValues(1)));
|
|
operaceFP:= Trim(VarToStr(FieldValues(2)));
|
|
VyplnPrikaz;
|
|
VyplnFrontuPrace;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
idPrPostup:= 0;
|
|
idPrikaz:= 0;
|
|
operaceFP:= '';
|
|
Helios.Error(#1'Chybně zadané identifikační číslo operace.'#1);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selPrikazButtonClick(Sender: TObject);
|
|
var podm: string;
|
|
begin
|
|
podm:= 'TabPrikaz.StavPrikazu=30 AND TabPrikaz.KmenoveStredisko IN (N' + QuotedStr(sklVyr) + ',N';
|
|
podm:= podm + QuotedStr(sklDP) +')';
|
|
if Helios.Prenos(bidVyrPrik,'RadaPrikaz',vOle1,podm,'Výrobní příkazy',true) then
|
|
begin
|
|
selPrikaz.Text:= VarToStr(vOle1);
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblPrikaz + ' WHERE RadaPrikaz=N' + QuotedStr(selPrikaz.Text)) do
|
|
idPrikaz:= StrToInt(VarToStr(FieldValues(0)));
|
|
VyplnPrikaz;
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selPrikazExit(Sender: TObject);
|
|
var podm, r: string;
|
|
begin
|
|
r:= '';
|
|
selPrikaz.Text:= Trim(selPrikaz.Text);
|
|
selPrikaz.Text:= StringReplace(selPrikaz.Text,' ','',[rfReplaceAll]);
|
|
// if not IsNumeric(selPrikaz.Text) then
|
|
if (LeftStr(selPrikaz.Text,1)='A') then
|
|
Helios.Error(#1'Výrobní příkaz může mít jen numerické označení.' + #1 + CRLF + '(zadáváte opravdu příkaz ?]')
|
|
else
|
|
if (selPrikaz.Text<>'') then
|
|
begin
|
|
r:= LeftStr(selPrikaz.Text, Pos('-', selPrikaz.Text)-1);
|
|
podm:= 'Rada=N' + QuotedStr(r);
|
|
podm:= podm + ' AND Prikaz=' + MidStr(selPrikaz.Text,Pos('-', selPrikaz.Text)+1,255);
|
|
with Helios.OpenSQL('SELECT id,IdTabKmen FROM ' + tblPrikaz + ' WHERE StavPrikazu IN (30,40) AND ' + podm) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
idPrikaz:= StrToInt(VarToStr(FieldValues(0)));
|
|
idKZ:= StrToInt(VarToStr(FieldValues(1)));
|
|
VyplnPrikaz;
|
|
selZamest.SetFocus;
|
|
end
|
|
else
|
|
begin
|
|
idPrikaz:= 0;
|
|
idKZ:= 0;
|
|
Helios.Error(#1'Nebyl nalezen odpovídající Výrobní příkaz'#1 + CRLF + '(může být již uzavřen nebo je neplatný)');
|
|
selPrikaz.SetFocus;
|
|
end;
|
|
if (r='010') then
|
|
begin
|
|
cbSklad.ItemIndex:= 2;
|
|
grpTampo.Visible:= true;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
idPrikaz:= 0;
|
|
idKZ:= 0;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selPrikazKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
begin
|
|
if (selPrikaz.Text<>'') then
|
|
idKZ:= 0;
|
|
|
|
if (Key=VK_RETURN) then
|
|
selZamest.SetFocus;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selVydejMatButtonClick(Sender: TObject);
|
|
var podm: string;
|
|
begin
|
|
if (selZamest.Text='') then
|
|
begin
|
|
Helios.Error(#1'Před výběrem nejprve zadejte zaměstnance.'#1);
|
|
Exit;
|
|
end;
|
|
podm:= 'TabDokladyZbozi.DruhPohybuZbo=4 AND TabDokladyZbozi.Realizovano=1 AND TabDokladyZbozi.CisloZam=' + selZamest.Text;
|
|
if Helios.Prenos(bidDZVydej,'id',vOle1,podm,'Výdejky',true) then
|
|
idVydej:= StrToInt(VarToStr(vOle1))
|
|
else
|
|
idVydej:= 0;
|
|
with Helios.OpenSQL('SELECT RadaDokladu,PoradoveCislo FROM ' + tblDZ + ' WHERE id=' + IntToStr(idVydej)) do
|
|
if (RecordCount>0) then
|
|
selVydejMat.Text:= VarToStr(FieldValues(0)) + '-' + StringOfChar('0', 6-Length(VarToStr(FieldValues(1)))) + VarToStr(FieldValues(1))
|
|
else
|
|
selVydejMat.Text:= '';
|
|
selVydejMatExit(Sender);
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selVydejMatExit(Sender: TObject);
|
|
var lSQL: string;
|
|
begin
|
|
selVydejMat.Text:= Trim(selVydejMat.Text);
|
|
if (selVydejMat.Text<>'') and (Pos('-',selVydejMat.Text)>0) then
|
|
begin
|
|
lSQL:= 'SELECT id FROM ' + tblDZ + ' WHERE RadaDokladu=N' + QuotedStr(LeftStr(selVydejMat.Text,Pos('-',selVydejMat.Text)-1));
|
|
lSQL:= lSQL + ' AND PoradoveCislo=CONVERT(int,N' + QuotedStr(MidStr(selVydejMat.Text,Pos('-',selVydejMat.Text)+1,20));
|
|
lSQL:= lSQL + ') AND DruhPohybuZbo=4 AND CisloOrg=2 AND IDSklad=N' + QuotedStr(sklFin); // IN (' + VlastniSkladySQL(DateToStr(dtDatum.Date)) + ')';
|
|
if (selZamest.Text<>'') then
|
|
lSQL:= lSQL + ' AND CisloZam=' + selZamest.Text;
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
if not(VarIsNull(FieldValues(0))) then
|
|
idVydej:= StrToInt(VarToStr(FieldValues(0)))
|
|
else
|
|
idVydej:= 0;
|
|
end;
|
|
if (idVydej=0) then
|
|
Helios.Error(#1'Nelze dohledat zadanou výdejku na Nadvýrobu.'#1)
|
|
else
|
|
begin
|
|
if (selDilec.Text='') then
|
|
begin
|
|
lSQL:= 'SELECT CisloZam,IdKmenZbozi,Mnozstvi-Zaevidovano,id FROM ' + tblEvidNadvyr + ' WHERE idVydejkaMat=' + IntToStr(idVydej);
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
if not(VarIsNull(FieldValues(0))) then
|
|
selZamest.Text:= StringOfChar('0',6-Length(VarToStr(FieldValues(0)))) + VarToStr(FieldValues(0));
|
|
idKZ:= StrToInt(VarToStr(FieldValues(1)));
|
|
with Helios.OpenSQL('SELECT PrijmeniJmeno, Id FROM ' + tblCZam + ' WHERE Cislo=' + VarToStr(FieldValues(0))) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
lblZamest.Caption:= VarToStr(FieldValues(0));
|
|
idZam:= VarToStr(FieldValues(1));
|
|
end;
|
|
with Helios.OpenSQL('SELECT RegCis, Nazev1 FROM ' + tblKZ + ' WHERE id=' + IntToStr(idKZ)) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
selDilec.Text:= VarToStr(FieldValues(0));
|
|
lblDilec.Caption:= VarToStr(FieldValues(1));
|
|
end;
|
|
VyplnDleDilce;
|
|
edtKusu.Value:= StrToFloat(VarToStr(FieldValues(2)));
|
|
idNadvyr:= StrToInt(VarToStr(FieldValues(3)));
|
|
edtKusu.SetFocus;
|
|
end
|
|
else
|
|
Helios.Error(#1'Dle zadané výdejky nelze dohledat údaje k evidenci Nadvýroby.'#1 + CRLF + 'Zadejte je ručně.');
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selZamestButtonClick(Sender: TObject);
|
|
begin
|
|
if Helios.Prenos2(bidCisZam,'PrijmeniJmeno','Cislo',vOle1,vOle2,'','Zaměstnanci',true,false,false,1) then
|
|
begin
|
|
lblZamest.Caption:= VarToStr(vOle1);
|
|
cZam:= VarToStr(vOle2);
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblCZam + ' WHERE Cislo=' + cZam) do
|
|
idzam:= VarToStr(FieldValues(0));
|
|
selZamest.Text:= StringOfChar('0',6-Length(cZam)) + cZam;
|
|
edtKusu.SetFocus;
|
|
end
|
|
else
|
|
begin
|
|
lblZamest.Caption:= '';
|
|
cZam:= '0';
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selZamestEnter(Sender: TObject);
|
|
begin
|
|
selZamest.Color:= clYellowLight;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selZamestExit(Sender: TObject);
|
|
begin
|
|
if (selZamest.Text<>'') then
|
|
begin
|
|
selZamest.Text:= GetNumbersFromString(selZamest.Text);
|
|
selZamest.Text:= Trim(selZamest.Text);
|
|
cZam:= selZamest.Text;
|
|
with Helios.OpenSQL('SELECT PrijmeniJmeno,id FROM ' + tblCZam + ' WHERE Cislo=' + selZamest.Text) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
lblZamest.Caption:= VarToStr(FieldValues(0));
|
|
idZam:= VarToStr(FieldValues(1));
|
|
selZamest.Text:= StringOfChar('0',6-Length(cZam)) + cZam;
|
|
// lblZamest.Left:= selZamest.Left + selZamest.Width + 5;
|
|
end
|
|
else
|
|
begin
|
|
Helios.Error(#1'Zadaný zaměstnanec nebyl nalezen, zkuste jej zadat znovu.'#1);
|
|
cZam:= '0';
|
|
idZam:= '0';
|
|
selZamest.SetFocus;
|
|
selZamest.Text:= '';
|
|
lblZamest.Caption:= '';
|
|
end;
|
|
end;
|
|
selZamest.Color:= clWindow;
|
|
end;
|
|
|
|
|
|
|
|
procedure TformOdvedeniPrikazu.selZamestKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
begin
|
|
if (Key=VK_RETURN) then
|
|
begin
|
|
if (selZamest.Text<>'') then
|
|
begin
|
|
selZamest.Width:= Self.Canvas.TextWidth(selZamest.Text) + 5;
|
|
lblZamest.Left:= selZamest.Left + selZamest.Width + 8;
|
|
selZamestExit(Sender);
|
|
edtKusu.SetFocus;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
// přidáno 8.11.2018
|
|
procedure TformOdvedeniPrikazu.ZadejVyrPrikazNaVydejku(const Helios: IHelios; idVPr: Integer; MnozstviNaVydejku: double);
|
|
var lSQL, SQL, SQLko: string;
|
|
pz,mu: IHeQuery;
|
|
idVydej,idPolExpP,idExpPr,idNPol,sMU,sNO: string;
|
|
idx: Integer;
|
|
mn: extended;
|
|
PoloZkaVydejkyExistuje:boolean;
|
|
IdPolozkaVydeky:integer;
|
|
Zprava : string;
|
|
RegCis : string;
|
|
begin
|
|
if (idVPr>0) then
|
|
begin
|
|
lSQL:= 'SELECT kz.id, kz.RegCis FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' kz ON (p.IdTabKmen=kz.id)';
|
|
lSQL:= lSQL + ' WHERE kz.SkupZbo LIKE ' + QuotedStr('V%') + ' AND p.id=' + IntToStr(idVPr);
|
|
with Helios.OpenSQL(lSQL) do begin
|
|
if RecordCount=0 then
|
|
begin
|
|
//Helios.Error(#1'Výrobní příkaz není na finální výrobek.'#1); // zakomentováno 8.11.2018
|
|
Exit;
|
|
end;
|
|
regcis:= FieldValues(1);
|
|
end;
|
|
|
|
lSQL:= 'SELECT p.IdRezervace,kz.SkupZbo,kz.RegCis,kz.Nazev1 FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' kz ON (p.IdTabKmen=kz.id)';
|
|
lSQL:= lSQL + ' WHERE kz.SkupZbo LIKE ' + QuotedStr('V%') + ' AND p.IdRezervace IS NOT NULL AND p.id=' + IntToStr(idVPr);
|
|
pz:= Helios.OpenSQL(lSQL);
|
|
if (pz.RecordCount>0) then
|
|
begin
|
|
// if Helios.YesNo('Chcete dílec z výrobního příkazu uložit do výdejky exportu ?',false) then
|
|
// begin
|
|
lSQL:= 'TabDokladyZbozi.CisloOrg=1 AND TabDokladyZbozi.IDSklad=N' + QuotedStr(sklVyroba) + ' AND TabDokladyZbozi.DruhPohybuZbo IN (2,3,4)';
|
|
lSQL:= lSQL + ' AND TabDokladyZbozi.RadaDokladu IN (N' + QuotedStr('420') + ') AND TabDokladyZbozi.Realizovano=0';
|
|
|
|
// výběr výdejky
|
|
pz.First;
|
|
idPolExpP:= VarToStr(pz.FieldValues(0)); // ID polozky v ExpPr
|
|
|
|
SQLko:= '';
|
|
|
|
sNO:= '';
|
|
SQLko:= 'SELECT dz.NavaznaObjednavka FROM ' + tblPZ + ' pz INNER JOIN ' + tblDZ + ' dz ON (pz.idDoklad=dz.id)';
|
|
SQLko:= SQLko + ' WHERE pz.DruhPohybuZbo=9 AND pz.id=' + idPolExpP; // jen Exp.prikazy
|
|
with Helios.OpenSQL(SQLko) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
sNO:= LeftStr(VarToStr(FieldValues(0)),2);
|
|
end else begin
|
|
Zprava := 'Odvod BC: Chyba - položka s reg. číslem ' + RegCis + ' nebyla uložena na výdejku, protože není zadána návazná objednávka na expedičním příkaze. ';
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=' + QuotedStr(Zprava));
|
|
exit; // a když nebude zadáno?
|
|
end;
|
|
|
|
SQLko:= 'Select id from TabDokladyZbozi where ';
|
|
SQLko:= SQLko + 'TabDokladyZbozi.CisloOrg=1 AND TabDokladyZbozi.IDSklad=N' + QuotedStr(sklVyroba) + ' AND TabDokladyZbozi.DruhPohybuZbo IN (2,3,4)';
|
|
SQLko:= SQLko + ' AND TabDokladyZbozi.RadaDokladu IN (N' + QuotedStr('420') + ') AND TabDokladyZbozi.Realizovano=0 AND TabDokladyZbozi.MistoUrceni= ' ;
|
|
if sNo='52' then SQLko:= SQLko + '3' else begin
|
|
if sNo='45' then SQLko:= SQLko + '1' else begin
|
|
//Helios.OpenSQL('SELECT * FROM #TabExtKom')
|
|
Zprava := 'Odvod BC: Chyba - položka s reg. číslem ' + RegCis + ' nebyla uložena na výdejku, protože zadána návazná objednávka na expedičním příkaze nezačíná na 45 nebo 52. ';
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=' + QuotedStr(Zprava));
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce='' Chyba při ukládání položky na výdejku: zadána návazná objednávka na expedičním příkaze nezačíná na 45 nebo 52. ''');
|
|
exit;
|
|
end;
|
|
|
|
end;
|
|
// kontrola na návaznpou objednávku na výdejce:
|
|
// SQLko:= SQLko + ' AND TabDokladyZbozi.NavaznaObjednavka like ' + QuotedStr(sNo + '%');
|
|
|
|
// helios.Info('3 ' + sNo + CRLF + SQLko);
|
|
|
|
with Helios.OpenSQL(SQLko) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
if (RecordCount=1) then idVydej:= FieldValues(0) else begin
|
|
Helios.Info('Položka nebude uložena na výdejku. Bylo nalezeno více odpovídajících nerealizovaných výdejek.');
|
|
Zprava := 'Odvod BC: Chyba - položka s reg. číslem ' + RegCis + ' nebyla uložena na výdejku. Bylo nalezeno více odpovídajících nerealizovaných výdejek. ';
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=' + QuotedStr(Zprava));
|
|
exit;
|
|
end;
|
|
end else begin
|
|
helios.Info('Položka nebude uložena na výdejku. Nebyla nalezena žádná odpovídající nerealizovaná výdejka.');
|
|
Zprava := 'Odvod BC: Chyba - položka s reg. číslem ' + RegCis + ' nebyla uložena na výdejku. Nebyla nalezena žádná odpovídající nerealizovaná výdejka. ';
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=' + QuotedStr(Zprava));
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce='' Položka nebude uložena na výdejku. Nebyla nalezena žádná odpovídající nerealizovaná výdejka. ''');
|
|
exit;
|
|
end;
|
|
|
|
// konec výběru výdejky
|
|
|
|
|
|
|
|
// if Helios.Prenos(bidDZVydej,'id',vOle1,lSQL,'Výdejky pro Vývoz',true) then
|
|
|
|
|
|
begin
|
|
pz.First;
|
|
idPolExpP:= VarToStr(pz.FieldValues(0)); // ID polozky v ExpPr
|
|
|
|
sNO:= '';
|
|
sMU:= '';
|
|
// idVydej:= VarToStr(vOle1);
|
|
mu:= Helios.OpenSQL('SELECT ISNULL(MistoUrceni,0) FROM ' + tblDZ + ' WHERE id=' + idVydej);
|
|
if (mu.RecordCount>0) then
|
|
begin
|
|
sMU:= VarToStr(mu.FieldValues(0));
|
|
lSQL:= 'SELECT dz.NavaznaObjednavka FROM ' + tblPZ + ' pz INNER JOIN ' + tblDZ + ' dz ON (pz.idDoklad=dz.id)';
|
|
lSQL:= lSQL + ' WHERE pz.DruhPohybuZbo=9 AND pz.id=' + idPolExpP; // jen Exp.prikazy
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
sNO:= LeftStr(VarToStr(FieldValues(0)),2);
|
|
if ((sNO<>'52') and (sMU='3')) or ( ((sNO<>'45') and (sMU='1')) and ((sNO<>'50') and (sMU='1')) ) then
|
|
begin
|
|
Zprava := 'Odvod BC: Chyba - položka s reg. číslem ' + RegCis + ' nebyla uložena na výdejku, protože místo určení na výdejce není určeno pro tuto řadu objednávek. ';
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=' + QuotedStr(Zprava));
|
|
Helios.Error(#1'Místo určení na výdejce není určeno pro tuto řadu objednávek.'#1);
|
|
Exit;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblDZ + ' WHERE BlokovaniEditoru IS NOT NULL AND id=' + idVydej) do
|
|
if (RecordCount=0) then // doklad neni blokovan
|
|
begin
|
|
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=' + IntToStr(Helios.UserId) + ' WHERE id=' + idVydej);
|
|
pz.First;
|
|
idx:= 0;
|
|
while not(pz.EOF) do
|
|
begin
|
|
idPolExpP:= VarToStr(pz.FieldValues(0)); // ID polozky v ExpPr
|
|
lSQL:= VarToStr(pz.FieldValues(1)) + ' ' + VarToStr(pz.FieldValues(2)) + ' - ' + VarToStr(pz.FieldValues(3));
|
|
// try
|
|
// mn:= StrToFloat(InputBox(lSQL,'Množství na výdejku:','0')); // 5.10.2018 přidáno ošetření na nečíslo
|
|
mn:= MnozstviNaVydejku; // změněno 8.11.2018
|
|
// except on E:Exception do begin
|
|
// helios.Error('Zadaná honota není číslo!');
|
|
// exit;
|
|
// end
|
|
// end;
|
|
if (mn>0) then
|
|
begin
|
|
lSQL:= 'IF OBJECT_ID(N' + QuotedStr('tempdb..#TabTempUziv') + ') IS NULL CREATE TABLE #TabTempUziv(Tabulka ';
|
|
lSQL:= lSQL + 'NVARCHAR(255) NOT NULL, SCOPE_IDENTITY INT NULL, Datum DATETIME NULL)' + CRLF;
|
|
lSQL:= lSQL + 'DECLARE @m NVARCHAR(3),@vc INT,@sDPH NUMERIC(5,2),@sSD NUMERIC(5,2),@kEUR NUMERIC(19,6),';
|
|
lSQL:= lSQL + '@jm INT,@k NUMERIC(19,6),@ss INT,@mn NUMERIC(19,6),@idOut INT,@d DATETIME' + CRLF;
|
|
|
|
// udaje z radky Exp. prikazu
|
|
lSQL:= lSQL + 'SELECT @sDPH=SazbaDPH,@sSD=SazbaSD,@mn=' + StringReplace(FloatToStr(mn),',','.',[rfReplaceAll]);
|
|
lSQL:= lSQL + ',@k=Kurz,@jm=JednotkaMeny,@ss=IDZboSklad,@kEUR=KurzEuro FROM ' + tblPZ + ' WHERE id=' + idPolExpP + CRLF;
|
|
|
|
// udaje z hlavicky Exp. prikazu
|
|
with Helios.OpenSQL('SELECT Mena,VstupniCena,Kurz,KurzEuro,DatPorizeni FROM ' + tblDZ + ' WHERE id=' + idVydej) do
|
|
begin
|
|
lSQL:= lSQL + 'SET @m=N' + QuotedStr(VarToStr(FieldValues(0))) + CRLF + 'SET @vc=' + VarToStr(FieldValues(1));
|
|
lSQL:= lSQL + CRLF + 'SET @k=' + StringReplace(VarToStr(FieldValues(2)),',','.',[rfReplaceAll]) + CRLF;
|
|
lSQL:= lSQL + 'SET @kEUR=' + StringReplace(VarToStr(FieldValues(3)),',','.',[rfReplaceAll]) + CRLF;
|
|
lSQL:= lSQL + 'SET @d=CONVERT(datetime,N' + QuotedStr(VarToStr(FieldValues(4))) + ',104)' + CRLF;
|
|
end;
|
|
|
|
// úpravy 8.11.2018
|
|
try
|
|
SQL:= 'DECLARE @n1 NVARCHAR(30),@n2 NVARCHAR(30),@jc NUMERIC(19,6),@jcV NUMERIC(19,6),@k NUMERIC(12,5), @idP INT,@idRez INT,@d DATETIME,@idDok INT' + CRLF;
|
|
SQL:= SQL + 'SELECT @n1=NazevSozNa1,@n2=NazevSozNa2,@d=PozadDatDod,@jc=JCbezDaniKC,@jcV=JCbezDaniVal,@idDok=IDDoklad FROM ' + tblPZ;
|
|
SQL:= SQL + ' WHERE id=' + idPolExpP + CRLF;
|
|
SQL:= SQL + 'Select id from ' + tblPZ + ' where NazevSozNa1=@n1 and NazevSozNa2=@n2 and idDoklad = ' + idVydej ;
|
|
with Helios.OpenSQL(SQL) do begin
|
|
if recordcount=1 then begin
|
|
PoloZkaVydejkyExistuje := true;
|
|
IdPolozkaVydeky := FieldValues(0);
|
|
end else begin
|
|
PoloZkaVydejkyExistuje := false ;
|
|
end;
|
|
|
|
end;
|
|
except on E4:Exception do begin
|
|
helios.Info('Chyba - položka nebude uložena na výdejku ' + CRLF + 'Detail chyby: ' + E4.ToString);
|
|
Zprava := 'Odvod BC: Chyba - položka s reg. číslem ' + RegCis + ' nebyla uložena na výdejku. ' + CRLF + 'Detail chyby: ' + E4.ToString;
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=' + QuotedStr(Zprava));
|
|
end;
|
|
end;
|
|
|
|
// Helios.Info('1');
|
|
|
|
if PoloZkaVydejkyExistuje then begin
|
|
lSQL:= lSQL + 'UPDATE ' + tblPZ + ' SET Mnozstvi = Mnozstvi + @mn where id = ' + IdPolozkaVydeky.ToString;
|
|
lSQL:= lSQL + CRLF + 'SELECT ' + IdPolozkaVydeky.ToString + ' as idout';
|
|
idNPol:= '';
|
|
end else begin
|
|
|
|
|
|
lSQL:= lSQL + 'EXEC dbo.hp_InsertPolozkyOZ @idOut OUT,@IDDoklad=' + idVydej + ',@DruhPohybu=2,@CisloOrg=1,@IDZboSklad=@ss,';
|
|
lSQL:= lSQL + '@Mena=@m,@Kurz=@k,@JednotkaMeny=@jm,@KurzEuro=@kEUR,@SazbaSD=@sSD,@SazbaDPH=@sDPH,@ZakazanoDPH=0,';
|
|
lSQL:= lSQL + '@VstupniCena=4,@Mnozstvi=@mn,@JCbezDaniKC=0,@PovolitDuplicitu=1,@DatPorizeni=@d,@Selectem=0';
|
|
lSQL:= lSQL + CRLF + 'SELECT @idOut';
|
|
idNPol:= '';
|
|
end;
|
|
|
|
try
|
|
Inc(idx);
|
|
with Helios.OpenSQL(lSQL) do
|
|
if not VarIsNull(FieldValues(0)) then
|
|
idNPol:= VarToStr(FieldValues(0));
|
|
if (idNPol<>'') and (idPolExpP<>'') then
|
|
begin
|
|
// aktualizuje udaje na vydejce
|
|
lSQL:= 'DECLARE @idP INT,@idRez INT,@d DATETIME,@idDok INT' + CRLF;
|
|
lSQL:= lSQL + 'DECLARE @n1 NVARCHAR(30),@n2 NVARCHAR(30),@jc NUMERIC(19,6),@jcV NUMERIC(19,6),@k NUMERIC(12,5)' + CRLF;
|
|
lSQL:= lSQL + 'SELECT @n1=NazevSozNa1,@n2=NazevSozNa2,@d=PozadDatDod,@jc=JCbezDaniKC,@jcV=JCbezDaniVal,@idDok=IDDoklad FROM ' + tblPZ;
|
|
lSQL:= lSQL + ' WHERE id=' + idPolExpP + CRLF;
|
|
lSQL:= lSQL + 'SELECT @k=Kurz FROM ' + tblDZ + ' WHERE id=@idDok' + CRLF;
|
|
lSQL:= lSQL + 'UPDATE ' + tblPZ + ' SET PozadDatDod=@d,NazevSozNa1=@n1,NazevSozNa2=@n2,JCbezDaniKC=@jcV*@k,JCbezDaniVal=@jcV';
|
|
lSQL:= lSQL + ',IdOldPolozka=' + idPolExpP + ' WHERE id=' + idNPol + CRLF;
|
|
lSQL:= lSQL + 'UPDATE ' + tblPZ + ' SET CCbezDaniKc=JCbezDaniKC*Mnozstvi,CCbezDaniVal=JCbezDaniVal*Mnozstvi WHERE id=' + idNPol;
|
|
Helios.ExecSQL(lSQL);
|
|
// prepocte mnozstvi vydane na ExpPr
|
|
lSQL:= 'SELECT ISNULL( (SELECT IDDoklad FROM ' + tblPZ + ' WHERE Id=' + idPolExpP + '), 0)';
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
idExpPr:= VarToStr(FieldValues(0));
|
|
lSQL:= 'MERGE dbo.TabPohybyZbozi AS T USING (SELECT ss.Id, kz.MJEvidence AS MJ FROM dbo.TabStavSkladu ss' + CRLF;
|
|
lSQL:= lSQL + ' INNER JOIN dbo.TabKmenZbozi kz ON (kz.Id=ss.IDKmenZbozi) WHERE ss.IDSklad=N''200'') AS S';
|
|
lSQL:= lSQL + ' ON (T.IdZboSklad=S.Id) WHEN MATCHED AND T.IDDoklad=' + idExpPr + ' THEN UPDATE SET T.MJ=S.MJ, T.MJEvidence=S.MJ;';
|
|
Helios.ExecSQL(lSQL);
|
|
lSQL:= 'BEGIN TRY' + CRLF + 'EXEC dbo.hp_Aktualizuj_OdebraneMnozstviDoklad @IDDoklad=' + idExpPr + ',@DruhPohybu=9' + CRLF;
|
|
lSQL:= lSQL + 'END TRY' + CRLF + 'BEGIN CATCH' + CRLF;
|
|
lSQL:= lSQL + 'EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=ERROR_MESSAGE' + CRLF + 'END CATCH'; //upraveno 5.10.2018 - odstraněny závorky za error_message
|
|
try
|
|
Helios.ExecSQL(lSQL);
|
|
except on E:Exception do begin
|
|
// UlozChybu(Helios,'Nelze aktualizovat kalkulační cenu ! SQL: ' + sql, E);
|
|
UlozChybu(Helios,'Nelze aktualizovat kalkulační cenu ! SQL: ' + lsql, E); // změněno 26.6.2018 (z sql na lsql)
|
|
Zprava := 'Odvod BC: Chyba - Nelze aktualizovat kalkulační cenu ! SQL: ' + lsql;
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=' + QuotedStr(Zprava));
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
end;
|
|
except on E:Exception do begin
|
|
Helios.Error(#1'Nelze uložit položku na doklad.'#1 + CRLF + E.Message + CRLF + lSQL + errPlg);
|
|
Zprava := 'Odvod BC: Chyba - položka s reg. číslem ' + RegCis + ' nebyla uložena na výdejku. Nelze uložit položku na doklad' + CRLF + 'Detail chyby: ' + E.ToString;
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=' + QuotedStr(Zprava));
|
|
|
|
end;
|
|
end;
|
|
end
|
|
else begin
|
|
Helios.Error(#1'Zadané množství je nulové, převod dílce na výdejku NEBUDE proveden.'#1);
|
|
Zprava := 'Odvod BC: Chyba - položka s reg. číslem ' + RegCis + ' nebyla uložena na výdejku. Zadané množství je nulové, převod dílce na výdejku NEBUDE proveden.' ;
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=' + QuotedStr(Zprava));
|
|
|
|
end;
|
|
pz.Next;
|
|
end;
|
|
// Helios.ExecSQL('EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=' + idVydej + ',@AktualizaceSlev=0');
|
|
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=null WHERE id=' + idVydej);
|
|
Helios.Refresh(true);
|
|
// helios.Info('Položka uložena na výdejku č. ');
|
|
end
|
|
else begin
|
|
Helios.Error(#1'Doklad je blokován jiným uživatelem.'#1);
|
|
Zprava := 'Odvod BC: Chyba - položka s reg. číslem ' + RegCis + ' nebyla uložena na výdejku. Doklad je blokován jiným uživatelem.' ;
|
|
Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=' + QuotedStr(Zprava));
|
|
|
|
end;
|
|
end;
|
|
// end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
// přidáno 8.11.2018
|
|
procedure TformOdvedeniPrikazu.UlozChybu(const Helios: IHelios; msg: string; E: Exception);
|
|
var txt: string;
|
|
begin
|
|
if not Assigned(E) then
|
|
txt:= ''
|
|
else
|
|
txt:= E.Message;
|
|
if txt<>'' then
|
|
msg:= msg + ' - chyba: ' + txt;
|
|
Helios.ExecSQL('INSERT #TabExtKom (Poznamka) VALUES (N' + QuotedStr(msg) + ')');
|
|
end;
|
|
end.
|