4324 lines
189 KiB
ObjectPascal
4324 lines
189 KiB
ObjectPascal
{
|
|
Zmeny ve verzich
|
|
----------------------
|
|
2.0.2013.0904 - pokud na PL (dodaci list z IT) existuje nova karta materialu, zalozi se do skupiny MAT
|
|
}
|
|
|
|
unit ComObjekt;
|
|
|
|
INTERFACE
|
|
|
|
uses System.SysUtils, System.Win.ComObj, ddPlugin_TLB;
|
|
|
|
const
|
|
tblObjMatPoh = '[dbo].[_TabObjMat_PohybyZboExpPr]';
|
|
tblOrg = '[dbo].[TabCisOrg]'; // tblOrg = '[dbo].[TabOrganizace]'; // přidáno 26.6.2018 // opraveno 3.7.2018 podle unit3
|
|
|
|
type
|
|
TidVPsKanban = record
|
|
id: integer;
|
|
radaPrikaz: string[20];
|
|
idKZ: integer;
|
|
ks: Extended;
|
|
ksVKoop: Extended;
|
|
end;
|
|
|
|
TplgLOVATO = class(TComObject, IHePlugin)
|
|
private
|
|
// function PartnerIdentification: WideString; safecall;
|
|
// function DelphiCompilerVersion: Single; safecall;
|
|
procedure Run(const Helios: IHelios); safecall;
|
|
function TestKoopObjVydejMat(const Helios:IHelios; idPKO: integer): Boolean; safecall;
|
|
procedure ImportEP(const Helios: IHelios; const idDZx: integer; ExpP: boolean); safecall;
|
|
procedure KontrolaExistVsechObj(const Helios: IHelios); safecall;
|
|
procedure ExportKoopObj(const Helios: IHelios; idKObj: integer); safecall;
|
|
procedure ExportKoopObjHQL(const Helios: IHelios; idKObj: integer); safecall;
|
|
procedure GenerujVydejZEP(const Helios: IHelios); safecall;
|
|
procedure OdpovedPPL(const Helios: IHelios); safecall;
|
|
procedure UlozChybu(const Helios: IHelios; msg: string; E:Exception);
|
|
procedure ImportNesplObj(const Helios: IHelios); safecall;
|
|
procedure HromadneOdvedeniEvidKoop(const Helios: IHelios); safecall;
|
|
procedure GenerujVydejMatZPrikazu(const Helios: IHelios; idEvidKoop: integer); safecall;
|
|
procedure PrerovnejPolozkyKoopObj(const Helios: IHelios; idKObj: integer); safecall;
|
|
procedure ZadejPolPrijemkyNaVydejku(const Helios: IHelios; idPrij: integer); safecall;
|
|
procedure ZadejVyrPrikazNaVydejku(const Helios: IHelios; idVPr: integer); safecall;
|
|
|
|
procedure StavSkladuDoZadVyp(const Helios: IHelios); safecall;
|
|
procedure VyrabeneDilceDoZadVyp(const Helios: IHelios);
|
|
|
|
procedure ImportZClipboardu(const Helios: IHelios; TypImp: byte); safecall;
|
|
procedure PrevodStavSkladuImp(const Helios: IHelios; TypImp: byte); safecall;
|
|
procedure RozpadPrijStavNaKooperanty(const Helios: IHelios; const idDZ: integer=0; const idSS: Integer=0); safecall;
|
|
procedure KooperaceniPolozkySeSeskupenim(const Helios: IHelios); safecall;
|
|
procedure ImportStavuInventur(const Helios: IHelios); safecall;
|
|
procedure ImportObjMaterialu(const Helios: IHelios; const typ:byte); safecall;
|
|
procedure ImportObjMatEdit(const Helios: IHelios; idZazn: integer); safecall;
|
|
procedure ImportObjMatRozpad(const Helios: IHelios); safecall;
|
|
|
|
|
|
procedure ImportDL_CHD(const Helios: IHelios); safecall;
|
|
procedure ImportDL(const Helios: IHelios); safecall; // přidáno při číslu palety
|
|
|
|
procedure SmazObjNadvyroby(const Helios: IHelios; idNad: integer); safecall;
|
|
|
|
// procedure SouboryProItalii(const Helios: IHelios; TypSouboru: byte); safecall;
|
|
end;
|
|
|
|
|
|
const
|
|
Class_LOVATO: TGUID = '{EA0150F1-EA07-45D2-9109-E7349B03AC1B}';
|
|
|
|
plgSysName = 'plgLOVATO';
|
|
|
|
Nadvyr = '20000105';
|
|
sklVyr = '200';
|
|
sklCHD = '20000107';
|
|
|
|
orgLovatoIT = '1';
|
|
orgLovatoITmena = 'EUR';
|
|
szNovyImportExpP = 'V00';
|
|
szNovyImportMat = 'M00';
|
|
rImpNesplObj = '200';
|
|
|
|
CRLF = #13#10;
|
|
tblStavUm = '[dbo].[TabVStavUmisteni]';
|
|
tblUmist = '[dbo].[TabUmisteni]';
|
|
tblRozpPrijStav = '[dbo].[_TabRozpadPrijStav]';
|
|
tblEvidOp = '[dbo].[_TabEvidOperaci_Barcode]';
|
|
tblEvidOpVPr = '[dbo].[_TabEvidOpPrikazy]';
|
|
tblEvidNadvyrVPr = '[dbo].[_TabEvidNadvyrPrikaz]';
|
|
tblPZSD = '[dbo].[TabPohybyZboziSD]';
|
|
|
|
errPlg = CRLF + '(plgLOVATO, COM)';
|
|
|
|
IMPLEMENTATION
|
|
|
|
uses Vcl.Controls, System.Win.ComServ, Vcl.Graphics, Vcl.Forms, System.Variants, System.StrUtils, Vcl.Dialogs,
|
|
Vcl.Clipbrd, System.Classes, Winapi.Windows, System.DateUtils, Vcl.StdActns, Winapi.ShlObj, Vcl.StdCtrls,
|
|
Vcl.ComCtrls, dxCore, myUtils, helUtils, XLSReadWriteII5, XLSSheetData5, Xc12DataStyleSheet5, Xc12Utils5, // nExcel,
|
|
// frmMain,
|
|
// frmUnit2,
|
|
frmUnit3, //prozatimně zakomentováno 26.6.2018 (z důvodu TBPackageU)
|
|
frmUnit5,
|
|
// frmUnit6,
|
|
frmBaliciListy,
|
|
// frmUnit8, { formPrijemkaNadvyroba}
|
|
frmUnit9,
|
|
frmOdvedPrikaz, { formOdvedeniPrikazu pres BarCode}
|
|
frmUnit11, { formStSklHrZmen }
|
|
frmUnit12, { formRozdelMat }
|
|
frmUnit13, { formPrevPrij }
|
|
frmDemontaz, { formDemontaz}
|
|
frmMaterial, { formMaterial }
|
|
frmUnit15, { formOdvodRele }
|
|
frmReklamaceMat, { formDemontazMat }
|
|
frmKanbanBox,
|
|
frmKanbanObj;
|
|
|
|
var oVar1: OleVariant;
|
|
aktObd: integer;
|
|
fName: string;
|
|
// xls: TXLSReadWriteII5;
|
|
// icoAdd, icoDel, icoEdit, icoPrev, icoNext: TIcon;
|
|
// hFnd: THandle;
|
|
// RS: TResourceStream;
|
|
hdl: Cardinal;
|
|
|
|
// přidáno 9.8.2018
|
|
waitForm: TForm;
|
|
waitLabel: TLabel;
|
|
waitPBar: TProgressBar;
|
|
|
|
function waitStart(TheParent: TComponent; sMsg: string; maxPBar: integer; PBarColor: TColor):Boolean;
|
|
begin
|
|
result:= false;
|
|
if (waitForm=nil) then
|
|
begin
|
|
waitForm:= TForm.Create(TheParent);
|
|
with waitForm do
|
|
begin
|
|
Position:= poOwnerFormCenter;
|
|
width:= 500;
|
|
Height:= 25;
|
|
waitLabel:= TLabel.Create(waitForm);
|
|
with waitLabel do
|
|
begin
|
|
Align:= alClient;
|
|
Alignment:= taCenter;
|
|
Font.Height:= -30;
|
|
ParentFont:= false;
|
|
Caption:= sMsg;
|
|
Parent:= waitForm;
|
|
end;
|
|
if (maxPBar>0) then
|
|
begin
|
|
waitPBar:= TProgressBar.Create(waitForm);
|
|
with waitPBar do
|
|
begin
|
|
AlignWithMargins:= true;
|
|
BarColor:= PBarColor;
|
|
Position:= 0;
|
|
Top:= waitLabel.Top + waitLabel.Height + 5;
|
|
Min:= 0;
|
|
Max:= maxPBar;
|
|
Width:= waitForm.Width - 10;
|
|
Left:= 5;
|
|
Height:= 10;
|
|
Parent:= waitForm;
|
|
end;
|
|
end;
|
|
SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) and not WS_CAPTION);
|
|
ClientHeight:= Height;
|
|
Show;
|
|
Invalidate;
|
|
Repaint;
|
|
end;
|
|
result:= true;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure waitSetProgBar(pozice: integer);
|
|
begin
|
|
if (pozice>0) then
|
|
if Assigned(waitPBar) then
|
|
if (waitPBar.Max>=pozice) then
|
|
begin
|
|
waitPBar.Position:= pozice;
|
|
waitPBar.Parent.Invalidate;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure WaitSetMsg( sMsg : string );
|
|
begin
|
|
WaitLabel.Caption := sMsg;
|
|
WaitForm.Refresh;
|
|
end;
|
|
|
|
|
|
|
|
function waitEnd: boolean;
|
|
begin
|
|
result:= false;
|
|
if (waitForm<>nil) then
|
|
begin
|
|
waitForm.Hide;
|
|
waitForm.Free;
|
|
waitForm:= nil;
|
|
result:= true;
|
|
end;
|
|
end;
|
|
|
|
// konec přidání 9.8.2018
|
|
|
|
|
|
|
|
//přidáno 26.6.2018
|
|
{ WaitForm : TForm;
|
|
WaitLabel : TLabel;
|
|
// function WaitStart( TheParent : TComponent; sMsg : string ) : boolean;
|
|
function WaitStart(
|
|
TheParent : TComponent;
|
|
sMsg : string )
|
|
: boolean;
|
|
begin
|
|
Result := False;
|
|
// create our message form
|
|
// only if it's not already
|
|
// created
|
|
if( Nil = WaitForm )then
|
|
begin
|
|
WaitForm :=
|
|
TForm.Create( TheParent );
|
|
with WaitForm do
|
|
begin
|
|
Position := poScreenCenter;
|
|
Width := 500;
|
|
Height := 25;
|
|
|
|
// create the message label
|
|
WaitLabel :=
|
|
TLabel.Create( WaitForm );
|
|
with WaitLabel do
|
|
begin
|
|
Align := alClient;
|
|
Alignment := taCenter;
|
|
Font.Height := -30;
|
|
ParentFont := False;
|
|
Caption := sMsg;
|
|
Parent := WaitForm;
|
|
end;
|
|
|
|
// hide the title bar
|
|
SetWindowLong( Handle,
|
|
GWL_STYLE,
|
|
GetWindowLong(
|
|
Handle, GWL_STYLE )
|
|
and not WS_CAPTION );
|
|
ClientHeight := Height;
|
|
|
|
Show;
|
|
Update;
|
|
end;
|
|
Result := True;
|
|
end;
|
|
end;
|
|
|
|
procedure WaitSetMsg( sMsg : string );
|
|
begin
|
|
WaitLabel.Caption := sMsg;
|
|
WaitForm.Refresh;
|
|
end;
|
|
|
|
function WaitEnd : boolean;
|
|
begin
|
|
Result := False;
|
|
if( Nil <> WaitForm )then
|
|
begin
|
|
WaitForm.Hide;
|
|
WaitForm.Free;
|
|
WaitForm := Nil;
|
|
Result := True;
|
|
end;
|
|
end;
|
|
} //konec přidání 26.6.2018
|
|
|
|
|
|
// přidáno 4.7.2018
|
|
{
|
|
WaitForm : TForm;
|
|
WaitLabel : TLabel;
|
|
|
|
function waitStart(TheParent: TComponent; sMsg: string):Boolean;
|
|
begin
|
|
result:= false;
|
|
if (waitForm=nil) then
|
|
begin
|
|
waitForm:= TForm.Create(TheParent);
|
|
with waitForm do
|
|
begin
|
|
Position:= poScreenCenter;
|
|
width:= 500;
|
|
Height:= 25;
|
|
waitLabel:= TLabel.Create(waitForm);
|
|
with waitLabel do
|
|
begin
|
|
Align:= alClient;
|
|
Alignment:= taCenter;
|
|
Font.Height:= -30;
|
|
ParentFont:= false;
|
|
Caption:= sMsg;
|
|
Parent:= waitForm;
|
|
end;
|
|
SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) and not WS_CAPTION);
|
|
ClientHeight:= Height;
|
|
Show;
|
|
Update;
|
|
end;
|
|
result:= true;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
procedure WaitSetMsg( sMsg : string );
|
|
begin
|
|
WaitLabel.Caption := sMsg;
|
|
WaitForm.Refresh;
|
|
end;
|
|
|
|
|
|
|
|
function waitEnd: boolean;
|
|
begin
|
|
result:= false;
|
|
if (waitForm<>nil) then
|
|
begin
|
|
waitForm.Hide;
|
|
waitForm.Free;
|
|
waitForm:= nil;
|
|
result:= true;
|
|
end;
|
|
end;
|
|
}
|
|
|
|
// konec přidání 4.7.2018
|
|
|
|
|
|
|
|
|
|
|
|
function VyberAdresar(var Foldr: string; Title: string): Boolean;
|
|
var BrowseInfo: TBrowseInfo;
|
|
ItemIDList: PItemIDList;
|
|
DisplayName: array[0..MAX_PATH] of Char;
|
|
begin
|
|
Result := False;
|
|
FillChar(BrowseInfo, SizeOf(BrowseInfo), #0);
|
|
with BrowseInfo do
|
|
begin
|
|
hwndOwner := Application.Handle;
|
|
pszDisplayName := @DisplayName[0];
|
|
lpszTitle := PChar(Title);
|
|
ulFlags := BIF_RETURNONLYFSDIRS;
|
|
end;
|
|
ItemIDList := SHBrowseForFolder(BrowseInfo);
|
|
if Assigned(ItemIDList) then
|
|
if SHGetPathFromIDList(ItemIDList, DisplayName) then
|
|
begin
|
|
Foldr := DisplayName;
|
|
Result := True;
|
|
end;
|
|
end;
|
|
|
|
|
|
function OtevriSouborXLS(var nazev: string; title: shortString): Boolean;
|
|
var dlgOpenXP: TOpenDialog; // dialog pro Windows XP
|
|
dlgOpenW7: TFileOpenDialog; // dialog pro Windows Vista a novejsi
|
|
titulek, filtr1, filtr2: string;
|
|
iniDir: wideString;
|
|
begin
|
|
result:= false;
|
|
if title='' then
|
|
title:= 'Vyberte soubor pro import ';
|
|
filtr1:= 'Sešit MS Excel';
|
|
filtr2:= '*.xls;*.xlsx';
|
|
nazev:= '';
|
|
iniDir:= GetEnvironmentVariable('USERPROFILE') + '\Desktop';
|
|
try
|
|
dlgOpenXP:= TOpenDialog.Create(nil);
|
|
dlgOpenW7:= TFileOpenDialog.Create(nil);
|
|
|
|
if JeVistaAVyssi then // funkce z "myUtils.pas"
|
|
begin
|
|
dlgOpenW7.Title:= title;
|
|
dlgOpenW7.OkButtonLabel:= 'Vybrat';
|
|
with dlgOpenW7.FileTypes.Add do
|
|
begin
|
|
DisplayName:= filtr1;
|
|
FileMask:= filtr2;
|
|
end;
|
|
dlgOpenW7.DefaultFolder:= iniDir;
|
|
if dlgOpenW7.Execute then
|
|
begin
|
|
nazev:= dlgOpenW7.FileName;
|
|
result:= true;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
dlgOpenXP.Title:= titulek;
|
|
dlgOpenXP.Filter:= filtr1 + '|' + filtr2;
|
|
dlgOpenXP.InitialDir:= iniDir;
|
|
if dlgOpenXP.Execute then
|
|
begin
|
|
nazev:= dlgOpenXP.FileName;
|
|
result:= true;
|
|
end;
|
|
end;
|
|
finally
|
|
dlgOpenXP.Free;
|
|
dlgOpenW7.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TplgLOVATO.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;
|
|
|
|
{
|
|
procedure TplgLOVATO.VytvorKanbanObj(const Helios: IHelios; const zOznac: ShortString; const arrID: TArray<integer>);
|
|
var lSQL: string;
|
|
i: integer;
|
|
begin
|
|
lSQL:= '';
|
|
if (zOznac='1') and (Length(arrID)>0) then
|
|
begin
|
|
lSQL:= 'IF OBJECT_ID(' + QuotedStr('tempdb..#TabKanbanObj') + ') IS NULL' + CRLF;
|
|
lSQL:= 'CREATE TABLE #TabKanbanObj (IDbox INT NOT NULL)' + CRLF;
|
|
for i:=0 to Length(arrID)-1 do
|
|
lSQL:= lSQL + 'INSERT #TabKanbanObj (IDbox) VALUES (' + IntToStr(arrID[i]) + ')' + CRLF;
|
|
end;
|
|
lSQL:= lSQL + 'EXEC dbo.ep_VytvorKanbanObj';
|
|
try
|
|
Helios.ExecSQL(lSQL);
|
|
except on E:Exception do
|
|
begin
|
|
Clipboard.AsText:= lSQL;
|
|
Helios.Error(#1'Chyba při vytváření Kanban objednávky - '#1 + E.Message);
|
|
end;
|
|
end;
|
|
Helios.Refresh(true);
|
|
end;
|
|
}
|
|
|
|
|
|
procedure TplgLOVATO.KontrolaExistVsechObj(const Helios: IHelios); safecall;
|
|
var lSQL, fName: string;
|
|
obj, poz, regC: string;
|
|
idx: integer;
|
|
xls: TXLSReadWriteII5;
|
|
wSheet1: TXLSWorkSheet;
|
|
chyba: boolean;
|
|
begin
|
|
if OtevriSouborXLS(fName, 'Vyberte XLS soubor se seznamem objednávek') then
|
|
begin
|
|
xls:= TXLSReadWriteII5.Create(nil);
|
|
try
|
|
chyba:= false;
|
|
xls.LoadFromFile(fName);
|
|
wSheet1:= xls.Items[0];
|
|
idx:= 1;
|
|
waitStart(nil, 'Běží porovnávání objedávek - celkem ' + IntToStr(wSheet1.LastRow), wSheet1.LastRow, $0000FF); // clRed
|
|
waitSetProgBar(1); //dočasně zakomentováno 26.6.2018
|
|
obj:= Trim(wSheet1.AsString[0,idx]);
|
|
if (obj<>'') then
|
|
begin
|
|
lSQL:= 'IF OBJECT_ID(' + QuotedStr('tempdb..#TabExtKom') + ') IS NULL CREATE TABLE #TabExtKom(Poznamka NVARCHAR(255))';
|
|
Helios.ExecSQL(lSQL);
|
|
while (obj<>'') do
|
|
begin
|
|
poz:= RightStr(Trim(wSheet1.AsString[1,idx]),4);
|
|
regC:= Trim(wSheet1.AsString[2,idx]);
|
|
lSQL:= 'SELECT id FROM ' + tblPZ + ' WHERE RegCis=N' + QuotedStr(regC) + ' AND DruhPohybuZbo=9 AND NazevSozNa1=' + QuotedStr(obj);
|
|
lSQL:= lSQL + ' AND NazevSozNa2=N' + QuotedStr(poz);
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=0) then
|
|
begin
|
|
chyba:= true;
|
|
Helios.ExecSQL('INSERT #TabExtKom(Poznamka) SELECT N' + QuotedStr('Chybí objednávka ' + obj + '/' + poz + ' - ' + regC));
|
|
end;
|
|
Inc(idx);
|
|
if (idx mod 10=0) then
|
|
waitSetProgBar(idx); //dočasně zakomentováno 26.6.2018
|
|
obj:= Trim(wSheet1.AsString[0,idx]);
|
|
end;
|
|
end;
|
|
waitEnd;
|
|
Helios.Info(#1'Kontrola ukončena'#1 + IfThen(chyba,CRLF + '(po odkliknutí OK se zobrazí přehled chyb)',''));
|
|
except on E:Exception do
|
|
Helios.Error('Chyba při zpracování XLS souboru: ' + E.Message + #1);
|
|
end;
|
|
xls.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.ImportObjMaterialu(const Helios: IHelios; const typ:byte);
|
|
var lSQL, sTemp: string;
|
|
idVyd, cOrg, cnt: integer;
|
|
begin
|
|
lSQL:= 'IF OBJECT_ID(N' + QuotedStr('dbo._TabObjMat_PohybyZboExpPr') + ') IS NOT NULL DROP TABLE dbo._TabObjMat_PohybyZboExpPr' + CRLF;
|
|
lSQL:= lSQL + 'CREATE TABLE ' + tblObjMatPoh + ' (ID int IDENTITY(1,1) NOT NULL, IdPohybZbozi int NOT NULL, SkupZbo NVARCHAR(3) NOT NULL,';
|
|
lSQL:= lSQL + 'RegCis NVARCHAR(30) NOT NULL, Mnozstvi numeric(19, 6) DEFAULT 0.0 NOT NULL, MnozstviVyd numeric(19, 6) DEFAULT 0.0 NOT NULL,';
|
|
lSQL:= lSQL + ' PozadDatDod DATETIME, SdilenyMat BIT DEFAULT 0, MnozstviZad numeric(19,6) DEFAULT 0.0 NOT NULL, IdKmenZbozi int NOT NULL)';
|
|
Helios.ExecSQL(lSQL);
|
|
cOrg:= StrToInt(VarToStr(Helios.QueryEdit.FieldByNameValues('CisloOrg')));
|
|
cnt:= 0;
|
|
lSQL:= 'SELECT pz.Id, (pz.Mnozstvi-pz.MnOdebrane-pz.MnozstviStorno) AS Mnozstvi, kz.Id AS idKZ, kz.SkupZbo, kz.RegCis, pz.PozadDatDod, ISNULL(kze._SdilenyMaterial,0) AS Sdileny FROM ' + tblPZ;
|
|
lSQL:= lSQL + ' pz INNER JOIN ' + tblDZ + ' dz ON (dz.Id=pz.IDDoklad) INNER JOIN ' + tblSS + ' ss ON (ss.Id=pz.IdZboSklad) INNER JOIN ' + tblKZ + ' kz ON (ss.IdKmenZbozi=kz.Id)';
|
|
lSQL:= lSQL + ' LEFT JOIN ' + tblKZe + ' kze ON (kze.Id=kz.Id) WHERE dz.CisloOrg=' + IntToStr(cOrg) + ' AND dz.Splneno=0 AND dz.StavRezervace<>N' + QuotedStr('X');
|
|
lSQL:= lSQL + ' AND dz.RadaDokladu=N' + QuotedStr('280') + ' AND dz.DruhPohybuZbo=9 AND DATEDIFF(day,GETDATE(),pz.PozadDatDod)<4 AND (pz.Mnozstvi-pz.MnOdebrane-pz.MnozstviStorno)>0';
|
|
if (typ=1) then
|
|
lSQL:= lSQL + ' AND kze._SdilenyMaterial=1';
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
Inc(cnt);
|
|
lSQL:= 'INSERT ' + tblObjMatPoh + ' (IdPohybZbozi, SkupZbo, RegCis, Mnozstvi, PozadDatDod, SdilenyMat, IdKmenZbozi, MnozstviZad) VALUES (' + VarToStr(FieldByNameValues('Id')) + ',N';
|
|
lSQL:= lSQL + QuotedStr(VarToStr(FieldByNameValues('SkupZbo'))) + ',N' + QuotedStr(VarToStr(FieldByNameValues('RegCis')));
|
|
lSQL:= lSQL + ',' + StringReplace(VarToStr(FieldByNameValues('Mnozstvi')),',','.',[rfReplaceAll]) + ',';
|
|
sTemp:= VarToStr(FieldByNameValues('PozadDatDod'));
|
|
lSQL:= lSQL + IfThen(sTemp='','NULL','CONVERT(datetime,N' + QuotedStr(sTemp) + ',104)');
|
|
lSQL:= lSQL + ',' + IfThen(LowerCase(VarToStr(FieldByNameValues('Sdileny')))='false','0','1') + ',' + VarToStr(FieldByNameValues('idKZ')) + ',';
|
|
lSQL:= lSQL + StringReplace(VarToStr(FieldByNameValues('Mnozstvi')),',','.',[rfReplaceAll]) + ')';
|
|
try
|
|
Helios.ExecSQL(lSQL);
|
|
except on E:Exception do
|
|
Helios.Error(#1'Chyba řádek ' + IntToStr(cnt) + '/ RČ ' + VarToStr(FieldByNameValues('RegCis')) + ' >> ' + E.Message + #1);
|
|
end;
|
|
Next;
|
|
end;
|
|
lSQL:= 'MERGE ' + tblObjMatPoh + ' AS T USING (SELECT DISTINCT(IdKmenZbozi), SUM(Mnozstvi) AS MnSum FROM ' + tblObjMatPoh + ' GROUP BY IdKmenZbozi) AS S';
|
|
lSQL:= lSQL + ' ON (S.IdKmenZbozi=T.IdKmenZbozi) WHEN MATCHED THEN UPDATE SET T.MnozstviZad=S.MnSum;';
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
|
|
Helios.OpenBrowse(100134,'');
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.ImportObjMatEdit(const Helios: IHelios; idZazn: Integer);
|
|
var lSQL, mn: string;
|
|
btn: TModalResult;
|
|
begin
|
|
if (idZazn>0) then
|
|
begin
|
|
mn:= '0';
|
|
mn:= Trim(InputBoxOkCancel('Vydávané množství materiálu celkem','Množství celkem: ', mn, btn));
|
|
if (btn=mrOk) and (mn<>'') then
|
|
Helios.ExecSQL('UPDATE ' + tblObjMatPoh + ' SET MnozstviZad=' + StringReplace(mn,',','.',[rfReplaceAll]) + ' WHERE IdKmenZbozi=' + IntToStr(idZazn));
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.ImportObjMatRozpad(const Helios: IHelios);
|
|
var lSQL: string;
|
|
begin
|
|
lSQL:= 'SELECT DISTINCT(idKmenZbozi), MnozstviZad FROM ' + tblObjMatPoh;
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.ImportStavuInventur(const Helios: IHelios);
|
|
var lSQL, idPlan: string;
|
|
begin
|
|
if Helios.Prenos2(100099,'id','DatumGenerovani_X',oVar1,oVar2,'','Inventurní hlavičky',true,true,false,1) then
|
|
begin
|
|
if (VarToStr(oVar1)<>'') then
|
|
begin
|
|
lSQL:= 'SELECT i.IdKmenZbozi,i.MnozstviInv,i.DatPorizeni,i.SkupZbo+RegCis,ss.IDSklad,i.MnozstviSklad FROM ' + tblInvI;
|
|
lSQL:= lSQL + ' i LEFT JOIN ' + tblSS + ' ss ON (i.IDSklad=ss.id) WHERE i.idDoklad IN (' + VarToStr(oVar1) + ')';
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
idPlan:= '';
|
|
lSQL:= 'INSERT ' + tblPPlan + ' (Dilec,Mnozstvi,Datum) VALUES (' + VarToStr(FieldValues(0)) + ',';
|
|
lSQL:= lSQL + StringReplace(VarToStr(FieldValues(1)),',','.',[rfReplaceAll]);
|
|
lSQL:= lSQL + ',CONVERT(datetime,N' + QuotedStr(VarToStr(FieldValues(2))) + ',104) )';
|
|
lSQL:= lSQL + CRLF + 'SELECT SCOPE_IDENTITY()';
|
|
try
|
|
with Helios.OpenSQL(lSQL) do
|
|
idPlan:= VarToStr(FieldValues(0));
|
|
if (idPlan<>'') then
|
|
begin
|
|
lSQL:= 'UPDATE ' + tblPPlanE + ' SET _IDSklad=N' + QuotedStr(VarToStr(FieldValues(4))) + ',_InventuraSM=1';
|
|
lSQL:= lSQL + ' WHERE id=' + idPlan + CRLF + 'IF (@@ROWCOUNT=0) INSERT ' + tblPPlanE + ' (id,_IDSklad,_InventuraSM)';
|
|
lSQL:= lSQL + ' VALUES (' + idPlan + ',N'+ QuotedStr(VarToStr(FieldValues(4))) + ',1)';
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
except on E:Exception do
|
|
UlozChybu(Helios,'Nelze uložit položku inventury (fyz): ' + VarToStr(FieldValues(3)) + ' sklad ' + VarToStr(FieldValues(4)),E);
|
|
end;
|
|
idPlan:= '';
|
|
lSQL:= 'INSERT ' + tblPPlan + ' (Dilec,Mnozstvi,Datum) VALUES (' + VarToStr(FieldValues(0)) + ',';
|
|
lSQL:= lSQL + StringReplace(VarToStr(FieldValues(5)),',','.',[rfReplaceAll]);
|
|
lSQL:= lSQL + ',CONVERT(datetime,N' + QuotedStr(VarToStr(FieldValues(2))) + ',104) )';
|
|
lSQL:= lSQL + CRLF + 'SELECT SCOPE_IDENTITY()';
|
|
try
|
|
with Helios.OpenSQL(lSQL) do
|
|
idPlan:= VarToStr(FieldValues(0));
|
|
if (idPlan<>'') then
|
|
begin
|
|
lSQL:= 'UPDATE ' + tblPPlanE + ' SET _IDSklad=N' + QuotedStr(VarToStr(FieldValues(4))) + ',_InventuraSM=0';
|
|
lSQL:= lSQL + ' WHERE id=' + idPlan + CRLF + 'IF (@@ROWCOUNT=0) INSERT ' + tblPPlanE + ' (id,_IDSklad,_InventuraSM)';
|
|
lSQL:= lSQL + ' VALUES (' + idPlan + ',N'+ QuotedStr(VarToStr(FieldValues(4))) + ',0)';
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
except on E:Exception do
|
|
UlozChybu(Helios,'Nelze uložit položku inventury (skl): ' + VarToStr(FieldValues(3)) + ' sklad ' + VarToStr(FieldValues(4)),E);
|
|
end;
|
|
Next;
|
|
end;
|
|
end;
|
|
end
|
|
else
|
|
Helios.Info(#1'Nebyla vybrána žádná inventura.'#1);
|
|
end
|
|
else
|
|
Helios.Info(#1'Akce importu inventurních stavů byla zrušena.'#1);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.SmazObjNadvyroby(const Helios: IHelios; idNad: integer);
|
|
var sql, msg: string;
|
|
errId: byte;
|
|
cVyd, cPrij, datVyd, datPrij: string;
|
|
idDZv, idPZ, idDZp, idVydejMat, idVydejStorno, idPrijMat, idPrijStorno: Integer;
|
|
realVyd, realPrij: boolean;
|
|
begin
|
|
msg:= '';
|
|
errId:= 0;
|
|
cVyd:= '';
|
|
cPrij:= '';
|
|
idVydejMat:= 0;
|
|
datVyd:= '';
|
|
idVydejStorno:= 0;
|
|
idPrijMat:= 0;
|
|
datPrij:= '';
|
|
idPrijStorno:= 0;
|
|
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblEvidNadvyr + ' WHERE Stav=0 AND Splneno=1 AND id=' + IntToStr(idNad)) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
errId:= 1;
|
|
msg:= 'Nelze smazat, objednávka Nadvýroby byla již splněna.';
|
|
end;
|
|
if (errId=0) then
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblEvidNadvyr + ' WHERE Zaevidovano>0 AND id=' + IntToStr(idNad)) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
errId:= 2;
|
|
msg:= 'Nelze smazat, na objednávce Nadvýroby jsou evidované vyrobené kusy.' + CRLF;
|
|
msg:= msg + 'Objednávku lze ručně označit jako splněnou' + CRLF;
|
|
msg:= msg + ' a zbylý materiál vrátit převodem na sklad 200-Výroba.';
|
|
end;
|
|
if (errId=0) then
|
|
with Helios.OpenSQL('SELECT IdVydejkaMat FROM ' + tblEvidNadvyr + ' WHERE IdVydejkaMat IS NOT NULL AND id=' + IntToStr(idNad)) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
|
|
realVyd:= false;
|
|
idVydejMat:= StrToInt(VarToStr(FieldValues(0)));
|
|
if (idVydejMat>0) then
|
|
with Helios.OpenSQL('SELECT RadaDokladu + N'' '' + CONVERT(nvarchar,PoradoveCislo),DatPorizeni FROM ' + tblDZ + ' WHERE id=' + IntToStr(idVydejMat)) do
|
|
begin
|
|
cVyd:= VarToStr(FieldValues(0));
|
|
datVyd:= VarToStr(FieldValues(1));
|
|
end;
|
|
|
|
realPrij:= false;
|
|
idPrijMat:= 0;
|
|
|
|
if (idVydejMat>0) then
|
|
begin
|
|
with Helios.OpenSQL('SELECT TOP(1) IDDoklad FROM ' + tblPZ + ' WHERE IDOldDoklad=' + IntToStr(idVydejMat)) do
|
|
if (RecordCount=1) then
|
|
idPrijMat:= StrToInt(VarToStr(FieldValues(0)));
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblDZ + ' WHERE id=' + IntToStr(idVydejMat) + ' AND Realizovano=1') do
|
|
if (RecordCount=1) then
|
|
realVyd:= true;
|
|
end;
|
|
|
|
if (idPrijMat>0) then
|
|
begin
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblDZ + ' WHERE id=' + IntToStr(idPrijMat) + ' AND Realizovano=1') do
|
|
if (RecordCount=1) then
|
|
realPrij:= true;
|
|
with Helios.OpenSQL('SELECT RadaDokladu + N'' '' + CONVERT(nvarchar,PoradoveCislo),DatPorizeni FROM ' + tblDZ + ' WHERE id=' + IntToStr(idPrijMat)) do
|
|
begin
|
|
cPrij:= VarToStr(FieldValues(0));
|
|
datPrij:= VarToStr(FieldValues(1));
|
|
end;
|
|
end;
|
|
|
|
if (realVyd) and (realPrij) then
|
|
errId:= 13;
|
|
|
|
if (idVydejMat>0) and not(realVyd) and (idPrijMat=0) then
|
|
errId:= 4;
|
|
|
|
if (idVydejMat>0) and (realVyd) and (idPrijMat>0) and not(realPrij) then
|
|
errId:= 6;
|
|
end;
|
|
|
|
case errId of
|
|
3: begin // real vyd+prij
|
|
Helios.Error(#1 + 'Na objednávku byl již vydán materiál, bude vygenerována vratka na sklad 200-Výroba.' + #1);
|
|
idDZv:= 0;
|
|
sql:= 'DECLARE @dt DATETIME, @idDZ INT' + CRLF + 'SET @dt=GETDATE()' + CRLF;
|
|
sql:= sql + 'EXEC dbo.hp_InsertHlavickyOZ @idDZ OUT,@Sklad=N' + QuotedStr(Nadvyr) + ',@Mena=N' + QuotedStr('CZK');
|
|
sql:= sql + ',@DruhPohybu=4,@RadaDokladu=N' + QuotedStr('450') + ',@Insert=1,@CisloOrg=0,@PC=NULL';
|
|
sql:= sql + ',@DatumPorizeni=@dt' + CRLF + 'SELECT @idDZ';
|
|
try
|
|
with Helios.OpenSQL(sql) do
|
|
idDZv:= StrToInt(VarToStr(FieldValues(0)));
|
|
except on E:Exception do
|
|
begin
|
|
Clipboard.AsText:= sql;
|
|
Helios.Error(#1'Nelze uložit hlavičku výdejky/převodky, vratka musí být provedena ručně.'#1 + CRLF + E.Message);
|
|
end;
|
|
end;
|
|
if (idDZv>0) then
|
|
begin
|
|
sql:= 'UPDATE ' + tblDZ + ' SET BlokovaniEditoru=' + IntToStr(Helios.UserId) + ',IdSkladPrevodu=N' + QuotedStr(sklVyr);
|
|
sql:= sql + ',TypPrevodky=N' + QuotedStr('250') + ',DruhPohybuPrevod=0,PopisDodavky=N' + QuotedStr('Storno Nadvýroby - zpětný převod mat.');
|
|
sql:= sql + ' WHERE id=' + IntToStr(idDZv);
|
|
Helios.ExecSQL(sql);
|
|
|
|
sql:= 'IF OBJECT_ID(N' + QuotedStr('tempdb..#TabTempUziv') + ') IS NULL CREATE TABLE #TabTempUziv(Tabulka';
|
|
sql:= sql + ' NVARCHAR(255) NOT NULL, SCOPE_IDENTITY INT NULL, Datum DATETIME NULL)' + CRLF;
|
|
|
|
sql:= sql + 'EXEC dbo.hp_generuj_navazny_doklad @IDDokladDst=' + IntToStr(idDZv) + ',@IDDokladSrc=' + IntToStr(idPrijMat);
|
|
sql:= sql + ',@CisloOrgCil=0,@MUcil=null,@KurzCil=1,@JednotkaMenyCil=1,@MenaCil=N' + QuotedStr('CZK');
|
|
sql:= sql + ',@Returnem=1,@KurzEuroCil=0,@CisloZakCil=null,@NOkruhCil=null,@StredNakladCil=null,@StredVynosCil=null';
|
|
sql:= sql + ',@FormaDopravyCil=null,@VozidloCil=null,@ObjednavkaCil=null,@PopisDodavkyCil=N' + QuotedStr('Storno Nadvýroby - zpětný převod mat.');
|
|
sql:= sql + ',@NavaznyDobropisCil=null,@ZamestnanecCil=null,@DodFakCil=null,@Nasobek=1,@SlevaCil=0';
|
|
sql:= sql + ',@VytvaretDokladovouVazbu=0,@VytvaretPolozkovouVazbu=0';
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
sql:= 'UPDATE ' + tblDZ + ' SET BlokovaniEditoru=NULL WHERE id=' + IntToStr(idDZv) + CRLF;
|
|
sql:= sql + 'UPDATE ' + tblEvidNadvyr + ' SET IdVratkaMat=' + IntToStr(idDZv) + ' WHERE id=';
|
|
sql:= sql + IntToStr(idNad);
|
|
Helios.ExecSQL(sql);
|
|
|
|
{
|
|
idDZp:= 0;
|
|
sql:= 'DECLARE @dt DATETIME, @idDZ INT' + CRLF + 'SET @dt=GETDATE()' + CRLF;
|
|
sql:= sql + 'EXEC dbo.hp_InsertHlavickyOZ @idDZ OUT,@Sklad=N' + QuotedStr(sklVyr) + ',@Mena=N' + QuotedStr('CZK');
|
|
sql:= sql + ',@DruhPohybu=0,@RadaDokladu=N' + QuotedStr('250') + ',@Insert=1,@CisloOrg=0,@PC=NULL';
|
|
sql:= sql + ',@DatumPorizeni=@dt' + CRLF + 'SELECT @idDZ';
|
|
try
|
|
Clipboard.AsText:= sql;
|
|
with Helios.OpenSQL(sql) do
|
|
idDZp:= StrToInt(VarToStr(FieldValues(0)));
|
|
except on E:Exception do
|
|
Helios.Error(#1'Nelze uložit hlavičku výdejky/převodky, kontaktujte správce.'#1 + CRLF + E.Message + CRLF + sql);
|
|
end;
|
|
|
|
if (idDZp>0) then
|
|
begin
|
|
sql:= 'IF OBJECT_ID(N' + QuotedStr('tempdb..#TabTempUziv') + ') IS NULL CREATE TABLE #TabTempUziv(Tabulka';
|
|
sql:= sql + ' NVARCHAR(255) NOT NULL, SCOPE_IDENTITY INT NULL, Datum DATETIME NULL)' + CRLF;
|
|
|
|
sql:= sql + 'EXEC dbo.hp_generuj_navazny_doklad @IDDokladDst=' + IntToStr(idDZp) + ',@IDDokladSrc=' + IntToStr(idDZv);
|
|
sql:= sql + ',@CisloOrgCil=0,@MUcil=null,@KurzCil=1,@JednotkaMenyCil=1,@MenaCil=N' + QuotedStr('CZK');
|
|
sql:= sql + ',@Returnem=1,@KurzEuroCil=0,@CisloZakCil=null,@NOkruhCil=null,@StredNakladCil=null,@StredVynosCil=null';
|
|
sql:= sql + ',@FormaDopravyCil=null,@VozidloCil=null,@ObjednavkaCil=null,@PopisDodavkyCil=N' + QuotedStr('Storno Nadvýroby - zpětný převod mat.');
|
|
sql:= sql + ',@NavaznyDobropisCil=null,@ZamestnanecCil=null,@DodFakCil=null,@Nasobek=1,@SlevaCil=0';
|
|
sql:= sql + ',@VytvaretDokladovouVazbu=0,@VytvaretPolozkovouVazbu=1';
|
|
try
|
|
Clipboard.AsText:= sql;
|
|
Helios.ExecSQL(sql);
|
|
sql:= 'UPDATE ' + tblDZ + ' SET BlokovaniEditoru=NULL WHERE id=' + IntToStr(idDZp);
|
|
Helios.ExecSQL(sql);
|
|
except on E:Exception do
|
|
begin
|
|
Helios.Error(#1'Nelze uložit hlavičku položky příjemky/převodky, kontaktujte správce.'#1 + CRLF + E.Message);
|
|
end;
|
|
end;
|
|
end;
|
|
}
|
|
except on E:Exception do
|
|
Helios.Error(#1'Nelze vygenerovat výdejka (vratka).'#1 + CRLF + E.Message);
|
|
end;
|
|
end;
|
|
Helios.Info(#1'Pozor, vytvořená výdejka není realizovaná.'#1);
|
|
end;
|
|
|
|
4: begin // udelana vydejka, nerealizovana, bez navazne prijemky
|
|
Helios.Error(#1 + 'Na objednávku byla vygenerována výdejka, aktuálně není realizována a bude zrušena.' + #1);
|
|
sql:= 'BEGIN TRAN' + CRLF + 'DELETE FROM ' + tblDZDod + ' WHERE IDHlavicky=' + IntToStr(idVydejMat) + CRLF;
|
|
sql:= sql + 'DELETE FROM ' + tblPZSD + ' WHERE Id IN (SELECT id FROM ' + tblPZ + ' WHERE IDDoklad=' + IntToStr(idVydejMat) + ')' + CRLF;
|
|
sql:= sql + 'DELETE FROM ' + tblPZ + ' WHERE IDDoklad=' + IntToStr(idVydejMat) + CRLF;
|
|
sql:= sql + 'DELETE FROM ' + tblDZ + ' WHERE id=' + IntToStr(idVydejMat) + ' AND Realizovano=0' + CRLF;
|
|
sql:= sql + 'UPDATE ' + tblEvidNadvyroby + ' SET IdVydejkaMat=NULL WHERE id=' + IntToStr(idNad) + CRLF;
|
|
sql:= sql + 'IF (@@ERROR<>0) ROLLBACK TRAN ELSE COMMIT TRAN';
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
except on E:Exception do
|
|
Helios.Error(#1'Chyba: ' + E.Message + #1);
|
|
end;
|
|
end;
|
|
5: begin
|
|
Helios.Error(#1 + 'Na objednávku byl převeden materiál, proveďte zpětný převod ručně (Př. ' + cPrij + ')' + #1);
|
|
end;
|
|
|
|
6: begin // vytvorena a realizovana vydejka, vytvorena a NErealizovana prijemka
|
|
sql:= 'BEGIN TRAN' + CRLF + 'EXEC dbo.hp_SmazDokladOZ @IDDoklad=' + IntToStr(idPrijMat) + CRLF;
|
|
sql:= sql + 'UPDATE ' + tblDZ+ ' SET NavaznyDoklad=NULL WHERE id=' + IntToStr(idVydejMat);
|
|
{
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
except on E:Exception do
|
|
Helios.Error(#1'Chyba: ' + E.Message + #1);
|
|
end;
|
|
}
|
|
sql:= sql + CRLF + 'IF OBJECT_ID(N' + QuotedStr('tempdb..#TabTempUziv') + ') IS NULL';
|
|
sql:= sql + ' CREATE TABLE #TabTempUziv(Tabulka NVARCHAR(255) NOT NULL, SCOPE_IDENTITY INT NULL, Datum DATETIME NULL)';
|
|
sql:= sql + CRLF + 'DECLARE @dVyd DATETIME, @idStorno INT, @bylaChyba INT, @uziv SMALLINT' + CRLF;
|
|
sql:= sql + 'SELECT @uziv=Id FROM ' + tblUziv + ' WHERE LoginName=SUSER_SNAME()' + CRLF;
|
|
sql:= sql + 'SET @dVyd=' + IfThen(datVyd='','NULL','CONVERT(datetime,N' + QuotedStr(datVyd) + ',104)') + CRLF;
|
|
// sql:= sql + 'EXEC dbo.hp_InsertHlavickyOZ @idStorno OUT, @Sklad=N' + QuotedStr(sklVyr) + ',@DruhPohybu=3';
|
|
// sql:= sql + ',@RadaDokladu=N' + QuotedStr('410') + ',@Insert=1,@Mena=N' + QuotedStr('CZK');
|
|
// sql:= sql + ',@PC=NULL,@DatumPorizeni=@dVyd,@CisloOrg=0' + CRLF;
|
|
sql:= sql + 'EXEC dbo.hp_Generuj_Storno_Doklad @ID=' + IntToStr(idVydejMat) + ',@Selectem=0';
|
|
sql:= sql + ',@DruhPohybu=3,@RadaDokladu=N' + QuotedStr('410') + ',@IDSklad=N' + QuotedStr(sklVyr);
|
|
sql:= sql + ',@AObdobi=NULL,@ADatPorizeni=@dVyd,@idStorno=@idStorno OUT,@bylaChyba=@bylaChyba OUT';
|
|
sql:= sql + CRLF + 'IF @idStorno IS NOT NULL' + CRLF + ' BEGIN' + CRLF + ' EXEC dbo.hp_Realizuj_prijem @ID=@idStorno,@DatumRealizace=@dVyd,';
|
|
sql:= sql + '@Uzivatel=@uziv,@bylaChyba=@bylaChyba OUT' + CRLF;
|
|
sql:= sql + ' EXEC dbo.hp_OZZrusStornoAPuvDok @idStorno=@idStorno' + CRLF + ' END' + CRLF;
|
|
sql:= sql + 'IF (@@ERROR<>0) ROLLBACK TRAN ELSE COMMIT TRAN';
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
except on E:Exception do
|
|
Helios.Error(#1'Chyba: ' + E.Message + #1);
|
|
end;
|
|
end;
|
|
13: begin
|
|
if Helios.YesNo(#1'Opravdu chcete objednávku smazat ?'#1 + CRLF + '!! všechny navázané příjmy a výdeje budou stornovány !!',false) then
|
|
begin
|
|
sql:= 'IF OBJECT_ID(N' + QuotedStr('tempdb..#TabTempUziv') + ') IS NULL';
|
|
sql:= sql + ' CREATE TABLE #TabTempUziv(Tabulka NVARCHAR(255) NOT NULL, SCOPE_IDENTITY INT NULL, Datum DATETIME NULL)';
|
|
sql:= sql + 'BEGIN TRAN' + CRLF + 'DECLARE @dVyd DATETIME, @idStorno INT, @bylaChyba INT, @uziv SMALLINT' + CRLF;
|
|
sql:= sql + 'SELECT @uziv=Id FROM ' + tblUziv + ' WHERE LoginName=SUSER_SNAME()' + CRLF;
|
|
sql:= sql + 'SET @dVyd=' + IfThen(datVyd='','NULL','CONVERT(datetime,N' + QuotedStr(datPrij) + ',104)') + CRLF;
|
|
sql:= sql + 'EXEC dbo.hp_Generuj_Storno_Doklad @ID=' + IntToStr(idPrijMat) + ',@Selectem=0';
|
|
sql:= sql + ',@DruhPohybu=1,@RadaDokladu=N' + QuotedStr('200') + ',@IDSklad=N' + QuotedStr(sklVyr);
|
|
sql:= sql + ',@AObdobi=NULL,@ADatPorizeni=@dVyd,@idStorno=@idStorno OUT,@bylaChyba=@bylaChyba OUT' + CRLF;
|
|
sql:= sql + 'IF @idStorno IS NOT NULL' + CRLF + ' BEGIN' + CRLF + ' EXEC dbo.hp_Realizuj_vydej @ID=@idStorno,@DatumRealizace=@dVyd';
|
|
sql:= sql + ',@Hlidat=0,@Uzivatel=@uziv,@bylaChyba=@bylaChyba OUT' + CRLF;
|
|
sql:= sql + ' EXEC dbo.hp_OZZrusStornoAPuvDok @idStorno=@idStorno' + CRLF;
|
|
sql:= sql + ' UPDATE ' + tblDZ+ ' SET NavaznyDoklad=NULL WHERE id=' + IntToStr(idVydejMat) + CRLF + ' END' + CRLF;
|
|
sql:= sql + 'SET @dVyd=' + IfThen(datVyd='','NULL','CONVERT(datetime,N' + QuotedStr(datVyd) + ',104)') + CRLF;
|
|
sql:= sql + 'EXEC dbo.hp_Generuj_Storno_Doklad @ID=' + IntToStr(idVydejMat) + ',@Selectem=0';
|
|
sql:= sql + ',@DruhPohybu=3,@RadaDokladu=N' + QuotedStr('410') + ',@IDSklad=N' + QuotedStr(sklVyr);
|
|
sql:= sql + ',@AObdobi=NULL,@ADatPorizeni=@dVyd,@idStorno=@idStorno OUT,@bylaChyba=@bylaChyba OUT' + CRLF;
|
|
sql:= sql + 'IF @idStorno IS NOT NULL' + CRLF + ' BEGIN' + CRLF + ' EXEC dbo.hp_Realizuj_prijem @ID=@idStorno,@DatumRealizace=@dVyd,';
|
|
sql:= sql + '@Uzivatel=@uziv,@bylaChyba=@bylaChyba OUT' + CRLF;
|
|
sql:= sql + ' EXEC dbo.hp_OZZrusStornoAPuvDok @idStorno=@idStorno' + CRLF + ' END' + CRLF;
|
|
sql:= sql + 'IF (@@ERROR<>0) ROLLBACK TRAN ELSE COMMIT TRAN';
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
except on E:Exception do
|
|
Helios.Error(#1'Chyba: ' + E.Message + #1);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
if (msg<>'') then
|
|
Helios.Error(#1 + msg + #1)
|
|
else
|
|
Helios.ExecSQL('UPDATE ' + tblEvidNadvyroby + ' SET Stav=1 WHERE id=' + IntToStr(idNad));
|
|
|
|
Helios.Refresh(true);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.KooperaceniPolozkySeSeskupenim(const Helios: IHelios);
|
|
var sql, IDcka, cOrg, idKOp: string;
|
|
cnt: integer;
|
|
begin
|
|
IDcka:= '';
|
|
IDKop:= VarToStr(Helios.QueryBrowse.FieldByNameValues('IDObjednavky'));
|
|
sql:= 'TabPrPostup.typ=2 AND ';
|
|
if Helios.Prenos(bidVyrOper,'ID',oVar1,sql,'Kooperační operace na výrobních příkazech',true) then
|
|
begin
|
|
if not VarIsNull(oVar1) then
|
|
IDcka:= VarToStr(oVar1);
|
|
if (IDcka<>'') then
|
|
begin
|
|
sql:= 'SELECT FROM ' + tblPrPost + ' WHERE id IN (' + IDcka + ')';
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
// rozpad prijemky nebo vybranych karet stavu skladu pro prevod na kooperanty
|
|
procedure TplgLOVATO.RozpadPrijStavNaKooperanty(const Helios: IHelios; const idDZ: integer=0; const idSS: Integer=0); safecall;
|
|
var sql, celkP, celkD, dodat, stred: string;
|
|
l_loop: integer;
|
|
chyba: boolean;
|
|
mn: Extended;
|
|
begin
|
|
chyba:= false;
|
|
sql:= '';
|
|
if (idDZ>0) then
|
|
begin
|
|
sql:= 'INSERT ' + tblRozpPrijStav + ' (IdKmenZbozi,Mnozstvi,CisloZbozi)';
|
|
sql:= sql + ' SELECT DISTINCT(kz.id),SUM(pz.Mnozstvi),kz.CisloZbozi FROM ' + tblPZ + ' pz INNER JOIN ' + tblSS;
|
|
sql:= sql + ' ss ON (pz.IdZboSklad=ss.id) INNER JOIN ' + tblKZ + ' kz ON (ss.IdKmenZbozi=kz.id) WHERE';
|
|
sql:= sql + ' pz.IDDoklad=' + IntToStr(idDZ) + ' GROUP BY kz.id,kz.CisloZbozi ORDER BY kz.id';
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
except
|
|
chyba:= true;
|
|
end;
|
|
end;
|
|
if not(chyba) then
|
|
begin
|
|
sql:= 'SELECT DISTINCT(RIGHT(vp.KmenoveStredisko,3)) FROM TabPrKVazby kv INNER JOIN TabPrikaz vp';
|
|
sql:= sql + ' ON (kv.IdPrikaz=vp.Id AND vp.StavPrikazu<=40) WHERE kv.mnoz_Nevydane>0 AND kv.nizsi IN';
|
|
sql:= sql + ' (SELECT IdKmenZbozi FROM _TabRozpadPrijStav) ORDER BY RIGHT(vp.KmenoveStredisko,3)';
|
|
with Helios.OpenSQL(sql) do
|
|
if RecordCount>0 then
|
|
begin
|
|
First;
|
|
while (not(EOF) and not(chyba)) do
|
|
begin
|
|
stred:= VarToStr(FieldValues(0));
|
|
sql:= 'IF (COL_LENGTH(N' + QuotedStr(tblRozpPrijStav) + ',N' + QuotedStr('Stav' + stred);
|
|
sql:= sql + ') IS NULL) ALTER TABLE ' + tblRozpPrijStav + ' ADD Stav' + stred;
|
|
sql:= sql + ' NUMERIC(19,6) NOT NULL DEFAULT 0.0' + CRLF;
|
|
sql:= sql + 'IF (COL_LENGTH(N' + QuotedStr(tblRozpPrijStav) + ',N' + QuotedStr('Pozad' + stred);
|
|
sql:= sql + ') IS NULL) ALTER TABLE ' + tblRozpPrijStav + ' ADD Pozad' + stred;
|
|
sql:= sql + ' NUMERIC(19,6) NOT NULL DEFAULT 0.0' + CRLF;
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
except
|
|
chyba:= true;
|
|
end;
|
|
if not(chyba) then
|
|
begin
|
|
sql:= sql + 'IF (COL_LENGTH(N' + QuotedStr(tblRozpPrijStav) + ',N' + QuotedStr('Prebyt' + stred);
|
|
sql:= sql + ') IS NULL) ALTER TABLE ' + tblRozpPrijStav + ' ADD Prebyt' + stred;
|
|
sql:= sql + ' AS ([Stav' + stred + ']-[Pozad' + stred + '])' + CRLF;
|
|
Helios.ExecSQL(sql);
|
|
|
|
sql:= 'SET NOCOUNT ON' + CRLF;
|
|
sql:= sql + 'DECLARE @idKZ INT,@MnS NUMERIC(19,6),@MnP NUMERIC(19,6),@Skl NVARCHAR(30)' + CRLF;
|
|
sql:= sql + 'DECLARE c CURSOR LOCAL FAST_FORWARD FOR SELECT IdKmenZbozi FROM ';
|
|
sql:= sql + tblRozpPrijStav + CRLF + 'OPEN c' + CRLF + 'WHILE (1=1) BEGIN FETCH NEXT FROM c INTO @idKZ' + CRLF;
|
|
sql:= sql + ' IF (@@FETCH_STATUS<>0) BREAK' + CRLF + 'SET @MnS=ISNULL((SELECT ISNULL(Mnozstvi,0) FROM ' + tblSS;
|
|
sql:= sql + ' WHERE IdKmenZbozi=@idKZ AND IDSklad';
|
|
if stred='200' then
|
|
sql:= sql + '=N' + QuotedStr('200')
|
|
else
|
|
sql:= sql + ' LIKE N' + QuotedStr('200%' + stred);
|
|
sql:= sql + '),0)' + CRLF;
|
|
sql:= sql + 'SET @MnP=ISNULL((SELECT ISNULL(SUM(kv.Mnoz_Nevydane),0) FROM ' + tblPrVaz + ' kv INNER JOIN' + tblPrikaz;
|
|
sql:= sql + ' vp ON (kv.IdPrikaz=vp.Id AND vp.StavPrikazu<=40) WHERE kv.Nizsi=@idKZ AND vp.KmenoveStredisko';
|
|
if stred='200' then
|
|
sql:= sql + '=N' + QuotedStr('200')
|
|
else
|
|
sql:= sql + ' LIKE N' + QuotedStr('200%' + stred);
|
|
sql:= sql + '),0)' + CRLF;
|
|
sql:= sql + 'UPDATE ' + tblRozpPrijStav + ' SET Stav' + stred + '=@MnS,Pozad' + stred;
|
|
sql:= sql + '=@MnP WHERE idKmenZbozi=@idKZ' + CRLF + 'END' + CRLF + 'CLOSE c' + CRLF + 'DEALLOCATE c';
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
except
|
|
chyba:= true;
|
|
end;
|
|
end;
|
|
Next;
|
|
end;
|
|
|
|
celkD:= 'IF (COL_LENGTH(N' + QuotedStr(tblRozpPrijStav) + ',N' + QuotedStr('CelkemDodat');
|
|
celkD:= celkD + ') IS NULL) ALTER TABLE ' + tblRozpPrijStav + ' ADD CelkemDodat AS (';
|
|
dodat:= 'IF (COL_LENGTH(N' + QuotedStr(tblRozpPrijStav) + ',N' + QuotedStr('Dodat' + stred);
|
|
dodat:= dodat + ') IS NULL) ALTER TABLE ' + tblRozpPrijStav + ' ADD Dodat' + stred + ' AS (';
|
|
|
|
// celkem prebytek
|
|
celkP:= celkP + 'CASE WHEN [Stav' + stred + ']-[Pozad' + stred + ']>0 THEN ([Stav' + stred + ']-';
|
|
celkP:= celkP + '[Pozad' + stred + ']) ELSE 0 END + ';
|
|
// celkem dodat
|
|
celkD:= celkD + 'CASE WHEN [Stav' + stred + ']-[Pozad' + stred + ']<0 THEN ABS([Stav' + stred + ']-';
|
|
celkD:= celkD + '[Pozad' + stred + ']) ELSE 0 END + ';
|
|
|
|
// celkem Prebytek
|
|
mn:= 0;
|
|
sql:= 'SELECT [name] FROM sys.[columns] WHERE OBJECT_ID=OBJECT_ID(N''_TabRozpadPrijStav'')';
|
|
sql:= sql + ' AND [name] LIKE N''Prebyt%''';
|
|
with Helios.OpenSQL('') do
|
|
if RecordCount>0 then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
Next;
|
|
end;
|
|
end;
|
|
celkP:= 'IF (COL_LENGTH(N' + QuotedStr(tblRozpPrijStav) + ',N' + QuotedStr('CelkemPrebyt');
|
|
celkP:= celkP + ') IS NULL) ALTER TABLE ' + tblRozpPrijStav + ' ADD CelkemPrebyt NUMERIC(19,6) DEFAULT 0.0';
|
|
sql:= 'UPDATE ' + QuotedStr(tblRozpPrijStav) + ' SET ';
|
|
Helios.ExecSQL(celkP + CRLF + sql);
|
|
|
|
// celkem Dodat
|
|
SetLength(celkD,Length(celkD)-3);
|
|
celkD:= celkD + ')';
|
|
Helios.ExecSQL(celkD);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.PrevodStavSkladuImp(const Helios: IHelios; TypImp: Byte);
|
|
var lSQL: string;
|
|
cnt: integer;
|
|
begin
|
|
cnt:= 0;
|
|
lSQL:= 'SELECT ssi.IDSklad,ssi.IDKmenZbozi,ssi.Minimum,ssi.Maximum,ssi.id,kz.SkupZbo,kz.RegCis FROM ';
|
|
lSQL:= lSQL + 'dbo.TabStavSkladuImp ssi INNER JOIN ' + tblKZ + ' kz ON (ssi.IdKmenZbozi=kz.id)';
|
|
with Helios.OpenSQL(lSQL) do
|
|
if RecordCount>0 then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
lSQL:= 'DECLARE @idSS INT' + CRLF + 'SET @idSS=(SELECT id FROM ' + tblSS;
|
|
lSQL:= lSQL + ' WHERE IDSklad=N' + QuotedStr(VarToStr(FieldValues(0)));
|
|
lSQL:= lSQL + ' AND IDKmenZbozi=' + VarToStr(FieldValues(1)) + ')' + CRLF + 'IF (@idSS IS NOT NULL)' + CRLF + 'BEGIN';
|
|
lSQL:= lSQL + CRLF + 'UPDATE ' + tblSS + ' SET Minimum=' + StringReplace(VarToStr(FieldValues(2)),',','.',[rfReplaceAll]);
|
|
lSQL:= lSQL + ',Maximum=' + StringReplace(VarToStr(FieldValues(3)),',','.',[rfReplaceAll]) + ' WHERE id=@idSS';
|
|
lSQL:= lSQL + CRLF + 'DELETE FROM dbo.TabStavSkladuImp WHERE id=' + VarToStr(FieldValues(4)) + CRLF + 'END';
|
|
try
|
|
Helios.ExecSQL(lSQL);
|
|
Inc(cnt);
|
|
except on E:Exception do
|
|
Helios.Error('Nelze uložit položku '#1 + VarToStr(FieldValues(5)) + ' ' + VarToStr(FieldValues(6)) + #1);
|
|
end;
|
|
Next;
|
|
end;
|
|
if cnt>0 then
|
|
Helios.Info(#1'Aktualizováno ' + IntToStr(cnt) + ' položek.'#1);
|
|
Helios.Refresh(true);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.ImportZClipboardu(const Helios: IHelios; TypImp: Byte);
|
|
var arrRadky: TArray<TArray<string>>;
|
|
idx: integer;
|
|
lSQL, sz, rc, sMin, sMax, idKZ, jc: string;
|
|
begin
|
|
lSQL:= 'IF OBJECT_ID(N' + QuotedStr('tempdb..#TabExtKom') + ') IS NOT NULL DROP TABLE #TabExtKom';
|
|
lSQL:= lSQL + 'CREATE TABLE #TabExtKom(Poznamka NVARCHAR(255) NOT NULL)';
|
|
Helios.ExecSQL(lSQL);
|
|
|
|
case TypImp of
|
|
1: ReseedTable(Helios,'TabStavSkladuImp');
|
|
2: begin
|
|
lSQL:= 'IF OBJECT_ID(N' + QuotedStr('tempdb..#TabImpRCCena') + ') IS NOT NULL DROP TABLE #TabImpRCCena' + CRLF;
|
|
lSQL:= lSQL + 'CREATE TABLE #TabImpRCCena (RegCis NVARCHAR(35) NOT NULL, JCena NUMERIC(19,6) DEFAULT 0.0, Autor NVARCHAR(50) DEFAULT SUSER_SNAME())';
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
end;
|
|
|
|
try
|
|
arrRadky:= Clipboard2StringArray(false); // false = nemaze nazvy sloupcu
|
|
for idx:=0 to High(arrRadky) do
|
|
begin
|
|
idKZ:= '';
|
|
sz:= '';
|
|
rc:= '';
|
|
case TypImp of
|
|
1: begin
|
|
sz:= UpperCase(arrRadky[idx,0]);
|
|
rc:= UpperCase(arrRadky[idx,1]);
|
|
sMin:= arrRadky[idx,2];
|
|
if sMin='' then
|
|
sMin:= '0';
|
|
sMax:= arrRadky[idx,3];
|
|
if sMax='' then
|
|
sMax:= '0';
|
|
|
|
lSQL:= 'SELECT Id FROM ' + tblKZ + ' WHERE UPPER(SkupZbo)=N' + QuotedStr(sz);
|
|
lSQL:= lSQL + ' AND UPPER(RegCis)=N' + QuotedStr(rc);
|
|
with Helios.OpenSQL(lSQL) do
|
|
if RecordCount=1 then
|
|
idKZ:= VarToStr(FieldValues(0))
|
|
else
|
|
Helios.ExecSQL('INSERT #TabExtKom (Poznamka) VALUES (N' + QuotedStr('Karta nenalezena: ' + sz + ' ' + rc + ' : min. ' + sMin) + ' , max. ' + sMax + ')');
|
|
if (idKZ<>'') then
|
|
begin
|
|
lSQL:= 'INSERT dbo.TabStavSkladuImp (SkupZboImp,RegCisImp,IDKmenZbozi,IDSklad,Minimum,Maximum) VALUES (N';
|
|
lSQL:= lSQL + QuotedStr(sz) + ',N' + QuotedStr(rc) + ',' + idKZ + ',N' + QuotedStr(Helios.Sklad) + ',';
|
|
lSQL:= lSQL + StringReplace(sMin,',','.',[rfReplaceAll]) + ',' + StringReplace(sMax,',','.',[rfReplaceAll]) + ')';
|
|
try
|
|
Helios.ExecSQL(lSQL);
|
|
except on E:Exception do
|
|
begin
|
|
UlozChybu(Helios,'Nelze importovat min/max do Stavu skladu.',E);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
2: begin
|
|
rc:= IfThen(arrRadky[idx,0]<>'', UpperCase(arrRadky[idx,0]), '');
|
|
jc:= IfThen(arrRadky[idx,1]<>'', arrRadky[idx,0], '0');
|
|
if (rc<>'') then
|
|
Helios.ExecSQL('INSERT #TabImpRCCena (RegCis, JCena) VALUES (N' + QuotedStr(rc) + ',' + StringReplace(jc,',','.',[rfReplaceAll]) + ')');
|
|
end;
|
|
end;
|
|
end;
|
|
case TypImp of
|
|
2: Helios.ExecSQL('EXEC dbo.ep_PZ_Import @Typ=1, @IDDoklad=' + VarToStr(Helios.HeliosVlastnik.QueryBrowse.FieldByNameValues('ID')));
|
|
end;
|
|
except on E:Exception do
|
|
begin
|
|
lSQL:= 'Nelze importovat údaje ze schránky (Clipboardu).';
|
|
UlozChybu(Helios,lSQL,E);
|
|
Helios.Error(#1 + lSQL + #1);
|
|
end;
|
|
end;
|
|
Helios.Refresh(true);
|
|
try
|
|
with Helios.OpenSQL('SELECT Poznamka FROM #TabExtKom') do
|
|
if RecordCount>0 then
|
|
Helios.OpenBrowse(541,'');
|
|
finally
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.VyrabeneDilceDoZadVyp(const Helios: IHelios);
|
|
var lSQL, IDs: string;
|
|
aID: TArray<integer>;
|
|
idx: integer;
|
|
begin
|
|
lSQL:= 'TabKmenZbozi.Blokovano=0 AND TabKmenZbozi.Dilec=1';
|
|
if Helios.Prenos(bidSS,'TabKmenZbozi.id',oVar1,lSQL,'Vyberte požadované dílce',true) then
|
|
begin
|
|
if not VarIsNull(oVar1) then
|
|
begin
|
|
Helios.ExecSQL('DELETE FROM ' + tblPPlan + ' WHERE Autor=SUSER_SNAME() AND IDVarianta IS NULL');
|
|
IDs:= VarToStr(oVar1);
|
|
lSQL:= 'SELECT id,1 FROM ' + tblKZ + ' WHERE id IN (' + IDs + ')';
|
|
with Helios.OpenSQL(lSQL) do
|
|
if RecordCount>0 then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
lSQL:= 'INSERT ' + tblPPlan + ' (Dilec,Mnozstvi) VALUES (' + VarToStr(FieldValues(0));
|
|
lSQL:= lSQL + ',' + StringReplace(VarToStr(FieldValues(1)),',','.',[rfReplaceAll]) + ')';
|
|
Helios.ExecSQL(lSQL);
|
|
Next;
|
|
end;
|
|
end;
|
|
{
|
|
aID:= StrToArrayInt(IDs);
|
|
for idx:= Low(aID) to High(aID) do
|
|
begin
|
|
lSQL:= 'SELECT kz.id,ss.Mnozstvi FROM ' + tblSS + ' ss INNER JOIN ' + tblKZ + ' kz ON(ss.IdKmenZbozi=kz.id) WHERE ss.id=' + IntToStr(aID[idx]);
|
|
with Helios.OpenSQL('')
|
|
end;
|
|
}
|
|
Helios.Refresh(true);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.StavSkladuDoZadVyp(const Helios: IHelios);
|
|
var lSQL,IDs: string;
|
|
aID: TArray<integer>;
|
|
idx: integer;
|
|
begin
|
|
Helios.Info(#1'Bude importovan stav vybraneho skladu.'#1);
|
|
lSQL:= 'TabStavSkladu.Mnozstvi>0';
|
|
if Helios.Prenos2(bidSS,'TabStavSkladu.id','',oVar1,oVar2,lSQL,'',true,true,false,1) then
|
|
begin
|
|
if not VarIsNull(oVar1) then
|
|
begin
|
|
Helios.ExecSQL('DELETE FROM ' + tblPPlan + ' WHERE Autor=SUSER_SNAME()');
|
|
IDs:= VarToStr(oVar1);
|
|
lSQL:= 'SELECT kz.id,ss.Mnozstvi FROM ' + tblSS + ' ss INNER JOIN ' + tblKZ + ' kz ON(ss.IdKmenZbozi=kz.id)';
|
|
lSQL:= lSQL + ' WHERE ss.id IN (' + IDs + ')';
|
|
with Helios.OpenSQL(lSQL) do
|
|
if RecordCount>0 then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
lSQL:= 'INSERT ' + tblPPlan + ' (Dilec,Mnozstvi) VALUES (' + VarToStr(FieldValues(0));
|
|
lSQL:= lSQL + ',' + StringReplace(VarToStr(FieldValues(1)),',','.',[rfReplaceAll]) + ')';
|
|
Helios.ExecSQL(lSQL);
|
|
Next;
|
|
end;
|
|
end;
|
|
{
|
|
aID:= StrToArrayInt(IDs);
|
|
for idx:= Low(aID) to High(aID) do
|
|
begin
|
|
lSQL:= 'SELECT kz.id,ss.Mnozstvi FROM ' + tblSS + ' ss INNER JOIN ' + tblKZ + ' kz ON(ss.IdKmenZbozi=kz.id) WHERE ss.id=' + IntToStr(aID[idx]);
|
|
with Helios.OpenSQL('')
|
|
end;
|
|
}
|
|
Helios.Refresh(true);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.ZadejVyrPrikazNaVydejku(const Helios: IHelios; idVPr: Integer);
|
|
var lSQL: string;
|
|
pz,mu: IHeQuery;
|
|
idVydej,idPolExpP,idExpPr,idNPol,sMU,sNO: string;
|
|
idx: Integer;
|
|
mn: extended;
|
|
begin
|
|
if (idVPr>0) then
|
|
begin
|
|
lSQL:= 'SELECT kz.id 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
|
|
if RecordCount=0 then
|
|
begin
|
|
Helios.Error(#1'Výrobní příkaz není na finální výrobek.'#1);
|
|
Exit;
|
|
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';
|
|
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
|
|
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
|
|
// 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;
|
|
|
|
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:= '';
|
|
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
|
|
// 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)
|
|
end;
|
|
end;
|
|
|
|
end;
|
|
except on E:Exception do
|
|
Helios.Error(#1'Nelze uložit položku na doklad.'#1 + CRLF + E.Message + CRLF + lSQL + errPlg);
|
|
end;
|
|
end
|
|
else
|
|
Helios.Error(#1'Zadané množství je nulové, převod dílce na výdejku NEBUDE proveden.'#1);
|
|
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);
|
|
end
|
|
else
|
|
Helios.Error(#1'Doklad je blokován jiným uživatelem.'#1);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.ZadejPolPrijemkyNaVydejku(const Helios: IHelios; idPrij: Integer);
|
|
var lSQL: string;
|
|
pz,mu: IHeQuery;
|
|
mn, mnE: Single;
|
|
idVydej,idPol,idNPol: string;
|
|
idx: Integer;
|
|
begin
|
|
if (idPrij>0) then
|
|
begin
|
|
lSQL:= 'SELECT pz.Id FROM ' + tblDZ + ' dz INNER JOIN ' + tblPZ + ' pz ON (dz.Id=pz.IdDoklad) INNER JOIN ' + tblSS + ' ss ON';
|
|
lSQL:= lSQL + ' (pz.IdZboSklad=ss.id) INNER JOIN ' + tblKZ + ' kz ON (ss.IdKmenZbozi=kz.id) WHERE dz.DruhPohybuZbo=0';
|
|
lSQL:= lSQL + ' AND dz.Id=' + IntToStr(idPrij) + ' AND pz.TypVyrobnihoDokladu=0 AND dz.RadaDokladu IN (N' + QuotedStr('220') + ')';
|
|
lSQL:= lSQL + ' AND kz.SkupZbo LIKE ' + QuotedStr('V%') + ' ORDER BY pz.SkupZbo,pz.RegCis,pz.NazevSozNa1,pz.NazevSozNa2';
|
|
pz:= Helios.OpenSQL(lSQL);
|
|
if (pz.RecordCount>0) then
|
|
begin
|
|
if Helios.YesNo('Chcete položky FINÁLNÍCH dílců z příjemky z výroby uložit do výdejky exportu ?',false) then
|
|
begin
|
|
lSQL:= 'IDSklad=N' + QuotedStr(sklVyroba) + ' AND RadaDokladu IN (N' + QuotedStr('420') + ')';
|
|
if Helios.Prenos(100092,'id',vOle1,lSQL,'Výdejky pro Vývoz',true) then
|
|
begin
|
|
pz.First;
|
|
idPol:= VarToStr(pz.FieldValues(0)); // ID polozky v Prijemce
|
|
idNPol:= '0';
|
|
with Helios.OpenSQL('SELECT p.IdRezervace FROM ' + tblPZ + ' pz INNER JOIN ' + tblPrikaz + ' p ON (pz.IdPrikaz=p.id) WHERE pz.id=' + idPol) do
|
|
if (RecordCount>0) then
|
|
idNPol:= VarToStr(FieldValues(0)); // ID polozky ExpPrikazu
|
|
if (idNPol<>'0') then
|
|
with Helios.OpenSQL('IF NOT EXISTS(SELECT id FROM ' + tblPZ + ' WHERE id=' + idNPol + ') SELECT 0 ELSE SELECT Mnozstvi-MnOdebrane-MnozstviStorno FROM ' + tblPZ + ' WHERE id=' + idNPol) do
|
|
mnE:= StrToFloat(VarToStr(FieldValues(0))); // mnozstvi zbytek na ExpPr
|
|
if (mnE<=0) then
|
|
begin
|
|
lSQL:= 'Položka objednávky (ExpPř) již byla celá splněna/odeslána.';
|
|
Helios.ExecSQL('INSERT #TabExtKom(Poznamka) VALUES (N' + QuotedStr(lSQL) + ')');
|
|
Helios.Error(#1 + lSQL + #1);
|
|
Exit;
|
|
end;
|
|
|
|
idVydej:= VarToStr(vOle1);
|
|
mu:= Helios.OpenSQL('SELECT ISNULL(MistoUrceni,0) FROM ' + tblDZ + ' WHERE id=' + idVydej);
|
|
if (mu.RecordCount>0) then
|
|
begin
|
|
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=' + idNPol; // jen Exp.prikazy
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
if ((LeftStr(VarToStr(FieldValues(0)),2)<>'45') and (VarToStr(mu.FieldValues(0))='1'))
|
|
or ((LeftStr(VarToStr(FieldValues(0)),2)<>'52') and (VarToStr(mu.FieldValues(0))='3')) then
|
|
begin
|
|
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 // ma vydejku otevrenou nekdo jiny ? 0=ne
|
|
begin
|
|
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=' + IntToStr(Helios.UserId) + ' WHERE id=' + idVydej);
|
|
pz.First;
|
|
idx:= 0;
|
|
while not(pz.EOF) do
|
|
begin
|
|
idPol:= VarToStr(pz.FieldValues(0));
|
|
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, @mExp NUMERIC(19,6)' + CRLF;
|
|
lSQL:= lSQL + 'SET @mExp=' + StringReplace(FloatToStr(mnE),'','',[rfReplaceAll]) + CRLF;
|
|
lSQL:= lSQL + 'SELECT @sDPH=SazbaDPH,@sSD=SazbaSD,@mn=Mnozstvi,@k=Kurz,@jm=JednotkaMeny,';
|
|
lSQL:= lSQL + '@ss=IDZboSklad,@kEUR=KurzEuro FROM ' + tblPZ + ' WHERE id=' + idPol + CRLF;
|
|
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;
|
|
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=NULL,@ZakazanoDPH=0,';
|
|
lSQL:= lSQL + '@VstupniCena=4,@Mnozstvi=@mn,@JCbezDaniKC=0,@PovolitDuplicitu=1,@DatPorizeni=@d,@Selectem=0' + CRLF;
|
|
lSQL:= lSQL + 'SELECT @idOut';
|
|
idNPol:= '';
|
|
try
|
|
Inc(idx);
|
|
with Helios.OpenSQL(lSQL) do
|
|
if not VarIsNull(FieldValues(0)) then
|
|
idNPol:= VarToStr(FieldValues(0));
|
|
if (idNPol<>'') then
|
|
begin
|
|
lSQL:= 'IF EXISTS(SELECT id FROM ' + tblPZ + ' WHERE IdPrikaz IS NOT NULL AND id=' + idPol + ') BEGIN';
|
|
lSQL:= lSQL + ' DECLARE @idP INT,@idRez INT,@d DATETIME,@idDok INT' + CRLF + 'SELECT @idP=IdPrikaz FROM ' + tblPZ + ' WHERE id=' + idPol + CRLF;
|
|
lSQL:= lSQL + 'SELECT @idRez=IdRezervace FROM ' + tblPrikaz + ' WHERE IDPrikazRidici=@idP AND id=@idP' + CRLF;
|
|
lSQL:= lSQL + 'IF (@idRez IS NOT NULL) BEGIN 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=@idRez' + CRLF;
|
|
lSQL:= lSQL + 'SELECT @k=Kurz FROM ' + tblDZ + ' WHERE id=@idDok' + CRLF;
|
|
lSQL:= lSQL + 'UPDATE ' + tblPZ + ' SET PozadDatDod=@d,NazevSozNa1=@n1,NazevSozNa2=@n2,IdOldPolozka=@idRez,JCbezDaniKC=@jcV*@k,JCbezDaniVal=@jcV';
|
|
lSQL:= lSQL + ' WHERE id=' + idNPol + CRLF;
|
|
lSQL:= lSQL + 'UPDATE ' + tblPZ + ' SET CCbezDaniKc=JCbezDaniKC*Mnozstvi,CCbezDaniVal=JCbezDaniVal*Mnozstvi WHERE id=' + idNPol + CRLF;
|
|
lSQL:= lSQL + 'IF (@idDok IS NOT NULL) EXEC dbo.hp_Aktualizuj_OdebraneMnozstviDoklad @IDDoklad=@idDok,@DruhPohybu=9 END END';
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
except on E:Exception do
|
|
begin
|
|
Clipboard.AsText:= lSQL + CRLF + errPlg;
|
|
Helios.Error(#1'Nelze uložit položku na doklad.'#1 + CRLF + E.Message + CRLF + '(SQL v clipboardu)');
|
|
end;
|
|
end;
|
|
pz.Next;
|
|
end;
|
|
Helios.ExecSQL('EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=' + idVydej + ',@AktualizaceSlev=1');
|
|
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=null WHERE id=' + idVydej);
|
|
Helios.Refresh(true);
|
|
Helios.Info(#1'Uloženo ' + IntToStr(idx) + ' položek.'#1);
|
|
end
|
|
else
|
|
Helios.Error(#1'Doklad je blokován jiným uživatelem.'#1);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
function TplgLOVATO.TestKoopObjVydejMat(const Helios: IHelios; idPKO: Integer): Boolean;
|
|
var idVPr: integer;
|
|
begin
|
|
result:= false;
|
|
with Helios.OpenSQL('SELECT IDPrikaz FROM ' + tblPKObj + ' WHERE id=' + IntToStr(idPKO)) do
|
|
if RecordCount>0 then
|
|
begin
|
|
idVPr:= StrToInt(VarToStr(FieldValues(0)));
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblPZ + ' WHERE IDPrikaz=' + IntToStr(idVPr) + ' AND TypVyrobnihoDokladu=1') do
|
|
if RecordCount>0 then
|
|
result:= true;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.PrerovnejPolozkyKoopObj(const Helios: IHelios; idKObj: Integer);
|
|
var lSQL: string;
|
|
idx: integer;
|
|
pol: IHeQuery;
|
|
begin
|
|
lSQL:= 'SELECT pko.id FROM ' + tblPKObj + ' pko';
|
|
lSQL:= lSQL + ' INNER JOIN ' + tblPrikaz + ' p ON (pko.IDPrikaz=p.id) INNER JOIN ' + tblKZ + ' kz ON (p.IDTabKmen=kz.id)';
|
|
lSQL:= lSQL + ' WHERE pko.IDObjednavky=' + IntToStr(idKObj) + ' ORDER BY pko.PozadTerDod DESC,kz.RegCis DESC';
|
|
pol:= Helios.OpenSQL(lSQL);
|
|
if pol.RecordCount>0 then
|
|
begin
|
|
idx:= 101;
|
|
pol.First;
|
|
while not(pol.EOF) do
|
|
begin
|
|
try
|
|
lSQL:= 'UPDATE ' + tblPKObj + ' SET Polozka=' + IntToStr(idx) + ' WHERE id=' + VarToStr(pol.FieldValues(0));
|
|
Helios.ExecSQL(lSQL);
|
|
except on E:Exception do
|
|
Helios.Error('Chyba: ' + E.Message + CRLF + lSQL);
|
|
end;
|
|
Dec(idx);
|
|
pol.Next
|
|
end;
|
|
end;
|
|
lSQL:= 'SELECT pko.id FROM ' + tblPKObj + ' pko';
|
|
lSQL:= lSQL + ' INNER JOIN ' + tblPrikaz + ' p ON (pko.IDPrikaz=p.id) INNER JOIN ' + tblKZ + ' kz ON (p.IDTabKmen=kz.id)';
|
|
lSQL:= lSQL + ' WHERE pko.IDObjednavky=' + IntToStr(idKObj) + ' ORDER BY pko.PozadTerDod,kz.RegCis';
|
|
pol:= Helios.OpenSQL(lSQL);
|
|
if pol.RecordCount>0 then
|
|
begin
|
|
idx:= 1;
|
|
pol.First;
|
|
while not(pol.EOF) do
|
|
begin
|
|
try
|
|
lSQL:= 'UPDATE ' + tblPKObj + ' SET Polozka=' + IntToStr(idx) + ' WHERE id=' + VarToStr(pol.FieldValues(0));
|
|
Helios.ExecSQL(lSQL);
|
|
except on E:Exception do
|
|
Helios.Error('Chyba: ' + E.Message + CRLF + lSQL);
|
|
end;
|
|
Inc(idx);
|
|
pol.Next
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.ExportKoopObjHQL(const Helios: IHelios; idKObj: integer); // 29
|
|
var lSQL, sqlOut, fName: string;
|
|
myDIC, myICO, cOrg, cObj, sGUID: string;
|
|
guid: TGUID;
|
|
fs: TFileStream;
|
|
begin
|
|
CreateGUID(guid);
|
|
sGuid:= GUIDToString(guid);
|
|
sGuid:= StringReplace(sGuid,'{','',[rfReplaceAll]);
|
|
sGuid:= StringReplace(sGuid,'}','',[rfReplaceAll]);
|
|
with Helios.OpenSQL('SELECT ICO,DIC FROM ' + tblCOrg + ' WHERE CisloOrg=0') do
|
|
begin
|
|
myICO:= VarToStr(FieldValues(0));
|
|
myDIC:= VarToStr(FieldValues(1));
|
|
end;
|
|
sqlOut:= 'SET NOCOUNT ON' + CRLF + 'DECLARE @nIdDZ INT, @autor NVARCHAR(80), @dt DATETIME' + CRLF;
|
|
sqlOut:= sqlOut + 'SELECT @autor=SUSER_SNAME()' + CRLF + 'SET @dt=GETDATE()' + CRLF;
|
|
sqlOut:= sqlOut + 'BEGIN TRAN' + CRLF;
|
|
lSQL:= 'SELECT REPLACE(k.Objednavka,N''/'',N''''),c.CisloOrg,k.DIC,k.DatPorizeni,k.DatRealizace,k.Autor,';
|
|
lSQL:= lSQL + 'SUBSTRING(REPLACE(SUBSTRING(k.Poznamka,1,2000),(CHAR(13) + CHAR(10)),N'' ''),1,2000),k.Cislo,k.Rada FROM ' + tblKObj;
|
|
lSQL:= lSQL + ' k INNER JOIN ' + tblCOrg + ' c ON (c.Id=k.IDOrganizace) WHERE k.id=' + IntToStr(idKObj);
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
cObj:= VarToStr(FieldValues(8)) + VarToStr(FieldValues(7));
|
|
cOrg:= VarToStr(FieldValues(1));
|
|
sqlOut:= sqlOut + ' INSERT dbo._TabEDI_Doklady (DruhDokladu,DIC_src,CisloOrg_dst,DIC_dst,ParovaciZnak,DatPorizeniDokl';
|
|
sqlOut:= sqlOut + ',DatRealizaceDokl,VstupniCena,SazbaDPH,Mena,Poznamka,AutorDokl,Objednavka,GUID) VALUES (1001,N';
|
|
sqlOut:= sqlOut + QuotedStr(myDIC) + ',' + VarToStr(FieldValues(1)) + ',N' + QuotedStr(VarToStr(FieldValues(2)));
|
|
sqlOut:= sqlOut + ',N' + QuotedStr('') + ',CONVERT(datetime,N' + QuotedStr(VarToStr(FieldValues(3))) + ',104),';
|
|
if (VarToStr(FieldValues(4))='') or (VarToStr(FieldValues(4))='30.12.1899') then
|
|
sqlOut:= sqlOut + 'NULL'
|
|
else
|
|
sqlOut:= sqlOut + 'CONVERT(datetime,N' + QuotedStr(VarToStr(FieldValues(4))) + ',104)';
|
|
sqlOut:= sqlOut + ',0,NULL,N' + QuotedStr('CZK') + ',';
|
|
if (VarToStr(FieldValues(6))='') then
|
|
sqlOut:= sqlOut + 'NULL'
|
|
else
|
|
sqlOut:= sqlOut + 'N' + QuotedStr(VarToStr(FieldValues(6)));
|
|
sqlOut:= sqlOut + ',N' + QuotedStr(VarToStr(FieldValues(5))) + ',N' + QuotedStr(VarToStr(FieldValues(0)));
|
|
sqlOut:= sqlOut + ',CONVERT(uniqueidentifier,N' + QuotedStr(sGuid) + ') )' + CRLF;
|
|
sqlOut:= sqlOut + ' SELECT @nIdDZ=SCOPE_IDENTITY()' + CRLF;
|
|
|
|
lSQL:= 'SELECT k.RegCis,p.Kusy,ROUND(p.Cena/p.Kusy,3),p.Polozka FROM ' + tblPKObj + ' p INNER JOIN ' + tblPrikaz;
|
|
lSQL:= lSQL + ' pr ON (pr.Id=p.IDPrikaz) INNER JOIN ' + tblKZ + ' k ON (k.Id=pr.IdTabKmen) WHERE p.IDObjednavky=' + IntToStr(idKObj);
|
|
lSQL:= lSQL + ' ORDER BY p.Polozka';
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
sqlOut:= sqlOut + ' INSERT dbo._TabEDI_Polozky (IDDoklad,RegCis,Mnozstvi,JCbezDaniKc,SazbaDPH,Poradi,';
|
|
sqlOut:= sqlOut + 'Popis1,Zpracovano) VALUES (@nIdDZ,N' + QuotedStr(VarToStr(FieldValues(0)));
|
|
sqlOut:= sqlOut + ',' + StringReplace(VarToStr(FieldValues(1)),',','.',[rfReplaceAll]);
|
|
sqlOut:= sqlOut + ',' + StringReplace(VarToStr(FieldValues(2)),',','.',[rfReplaceAll]) + ',21,';
|
|
sqlOut:= sqlOut + VarToStr(FieldValues(3)) + ',N' + QuotedStr(cObj + '/' + VarToStr(FieldValues(3))) + ',0)';
|
|
sqlOut:= sqlOut + CRLF;
|
|
Next;
|
|
end;
|
|
end;
|
|
sqlOut:= sqlOut + CRLF + ' INSERT dbo._TabEDI_GUID (GUID,Autor,DatPorizeni) VALUES (CONVERT(uniqueidentifier,N';
|
|
sqlOut:= sqlOut + QuotedStr(sGuid) + '),@autor,@dt)' + CRLF;
|
|
sqlOut:= sqlOut + ' UPDATE dbo._TabEDI_Doklady SET ImportOK=1 WHERE id=@nIdDZ' + CRLF;
|
|
sqlOut:= sqlOut + 'IF (@@ERROR<>0) ROLLBACK TRAN ELSE COMMIT TRAN' + CRLF;
|
|
end;
|
|
fName:= GetEnvironmentVariable('USERPROFILE') + '\Desktop\EDI-Koop-' + cOrg + '-' + cObj + '.hql';
|
|
fs:= TFileStream.Create(fName, fmCreate);
|
|
try
|
|
WriteStringToStream(fs,sqlOut);
|
|
finally
|
|
fs.Free;
|
|
Helios.Info('Soubor uložen jako '#1 + fName + #1);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.ExportKoopObj(const Helios: IHelios; idKObj: integer);
|
|
const strLov = '40755509 LOVATO spol.s r.o.';
|
|
var fld: string;
|
|
lSQL: string;
|
|
xls: TXLSReadWriteII5;
|
|
wSheet1, wSheet2: TXLSWorksheet;
|
|
poz: IHeQuery;
|
|
idPolKObj, idx: integer;
|
|
cObj, dodav, dat, datKO: string;
|
|
begin
|
|
if idKObj>0 then
|
|
begin
|
|
|
|
// lSQL:= 'SELECT p.Polozka,p.Kusy,p.PozadTerDod_X,k.RegCis FROM ' + tblPKObj + ' p INNER JOIN ' + tblPrikaz + ' pr ON (p.IDPrikaz=pr.id)';
|
|
// lSQL:= lSQL + ' INNER JOIN ' + tblKZ + ' k ON (pr.IdTabKmen=k.id) WHERE p.IDObjednavky=' + IntToStr(idKObj);
|
|
// lSQL:= lSQL + ' ORDER BY p.Polozka';
|
|
|
|
lSQL:= 'SELECT DISTINCT(kz.RegCis),pko.PozadTerDod,SUM(pko.Kusy) FROM ' + tblPKObj + ' pko';
|
|
lSQL:= lSQL + ' INNER JOIN ' + tblPrikaz + ' p ON (pko.IDPrikaz=p.id) INNER JOIN ' + tblKZ + ' kz ON (p.IDTabKmen=kz.id)';
|
|
lSQL:= lSQL + ' WHERE pko.IDObjednavky=' + IntToStr(idKObj) + ' GROUP BY kz.RegCis,pko.PozadTerDod ORDER BY pko.PozadTerDod'; // kz.RegCis';
|
|
|
|
poz:= Helios.OpenSQL(lSQL);
|
|
if (poz.RecordCount>0) then
|
|
begin
|
|
if VyberAdresar(fld, 'Umístění exportního souboru') then
|
|
begin
|
|
lSQL:= 'SELECT k.Objednavka,c.ICO + N' + QuotedStr(' ') + ' + c.Nazev,k.TerminOdeslani FROM ' + tblKObj;
|
|
lSQL:= lSQL + ' k INNER JOIN ' + tblCOrg + ' c ON (k.IDOrganizace=c.id) WHERE k.id=' + IntToStr(idKObj);
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
cObj:= VarToStr(FieldValues(0));
|
|
dodav:= VarToStr(FieldValues(1));
|
|
datKO:= VarToStr(FieldValues(2));
|
|
end;
|
|
cObj:= StringReplace(cObj,'/','',[rfReplaceAll]);
|
|
|
|
xls:= TXLSReadWriteII5.Create(nil);
|
|
try
|
|
xls.Version:= xvExcel97;
|
|
wSheet2:= xls.Sheets[0];
|
|
wSheet2.Name:= 'Sumace';
|
|
// xls[1].InsertRows(0,poz.RecordCount);
|
|
// xls[1].InsertColumns(0,7);
|
|
wSheet2.AsString[0,0]:= 'Objednavatel';
|
|
wSheet2.AsString[2,0]:= strLov;
|
|
wSheet2.AsString[0,2]:= 'Dodavatel:';
|
|
wSheet2.AsString[2,2]:= dodav;
|
|
wSheet2.AsString[0,4]:= 'Datum vystavení:';
|
|
wSheet2.AsString[2,4]:= datKO;
|
|
wSheet2.AsString[0,6]:= 'Čís.obj.';
|
|
wSheet2.AsString[1,6]:= 'Poř.č.';
|
|
wSheet2.Columns.Items[1].NumberFormat:= '##0';
|
|
wSheet2.Columns.Items[1].HorizAlignment:= chaCenter;
|
|
wSheet2.AsString[2,6]:= 'Číslo výrobku';
|
|
wSheet2.AsString[3,6]:= 'Množství';
|
|
wSheet2.Columns.Items[3].NumberFormat:= '###,##0.###';
|
|
wSheet2.AsString[4,6]:= 'Splnit do';
|
|
wSheet2.Columns.Items[4].NumberFormat:= 'DD.MM.YYYY';
|
|
wSheet2.Columns.Items[4].HorizAlignment:= chaCenter;
|
|
idx:= 7;
|
|
poz.First;
|
|
while not(poz.EOF) do
|
|
begin
|
|
wSheet2.AsString[0, idx]:= cObj;
|
|
wSheet2.AsInteger[1, idx]:= idx-6; // VarToStr(poz.FieldValues(0));
|
|
wSheet2.AsString[2, idx]:= VarToStr(poz.FieldValues(0)); // RegCis
|
|
wSheet2.AsFloat[3, idx]:= StrToFloat(VarToStr(poz.FieldValues(2))); // mnozstvi
|
|
dat:= VarToStr(poz.FieldValues(1));
|
|
if (dat<>'') then
|
|
wSheet2.AsString[4, idx]:= dat;
|
|
Inc(idx);
|
|
poz.Next;
|
|
end;
|
|
wSheet2.AutoWidthCols(0, 4);
|
|
|
|
// if Helios.YesNo('Mám přerovnat položky objednávky podle datumu a reg.čísla ?',false) then
|
|
// PrerovnejPolozkyKoopObj(Helios,idKObj);
|
|
|
|
lSQL:= 'SELECT pko.Polozka,kz.RegCis,pko.Kusy,pko.PozadTerDod_X FROM ' + tblPKObj + ' pko';
|
|
lSQL:= lSQL + ' INNER JOIN ' + tblPrikaz + ' p ON (pko.IdPrikaz=p.id)';
|
|
lSQL:= lSQL + ' INNER JOIN ' + tblKZ + ' kz ON (p.IdTabKmen=kz.id)';
|
|
lSQL:= lSQL + ' WHERE pko.IDObjednavky=' + IntToStr(idKObj);
|
|
|
|
{
|
|
lSQL:= 'CREATE TABLE #Vystup (Pozice INT IDENTITY(1,1),RegCis NVARCHAR(20),Polozka INT,Kusu NUMERIC(19,6)) ' + CRLF;
|
|
lSQL:= lSQL + 'INSERT INTO #Vystup (RegCis,Polozka,Kusu) ';
|
|
lSQL:= lSQL + 'SELECT DISTINCT(kz.RegCis),pko.Polozka,SUM(pko.Kusy) FROM ' + tblPKObj + ' pko';
|
|
lSQL:= lSQL + ' INNER JOIN ' + tblPrikaz + ' p ON (pko.IDPrikaz=p.id) INNER JOIN ' + tblKZ + ' kz ON (p.IDTabKmen=kz.id)';
|
|
lSQL:= lSQL + ' WHERE pko.IDObjednavky=' + IntToStr(idKObj) + ' GROUP BY kz.RegCis,pko.Polozka ORDER BY pko.Polozka' + CRLF;
|
|
lSQL:= lSQL + 'SELECT * FROM #Vystup';
|
|
}
|
|
poz:= Helios.OpenSQL(lSQL);
|
|
if (poz.RecordCount>0) then
|
|
begin
|
|
poz.First;
|
|
idx:= 7;
|
|
wSheet1:= xls.Add;
|
|
wSheet1.Name:= 'Detail';
|
|
wSheet1.AsString[0,0]:= 'Objednavatel';
|
|
wSheet1.AsString[2,0]:= strLov;
|
|
wSheet1.AsString[0,2]:= 'Dodavatel:';
|
|
wSheet1.AsString[2,2]:= dodav;
|
|
wSheet1.AsString[0,4]:= 'Datum vystavení:';
|
|
wSheet1.AsString[2,4]:= datKO;
|
|
wSheet1.AsString[0,6]:= 'Čís.obj.';
|
|
wSheet1.AsString[1,6]:= 'Poř.č.';
|
|
wSheet1.Columns.Items[1].NumberFormat:= '##0';
|
|
wSheet1.Columns.Items[1].HorizAlignment:= chaCenter;
|
|
wSheet1.AsString[2,6]:= 'Číslo výrobku';
|
|
wSheet1.AsString[3,6]:= 'Množství';
|
|
wSheet1.Columns.Items[3].NumberFormat:= '###,###,##0.###';
|
|
wSheet1.AsString[4,6]:= 'Splnit do';
|
|
wSheet1.Columns.Items[4].NumberFormat:= 'DD.MM.YYYY';
|
|
wSheet1.Columns.Items[4].HorizAlignment:= chaCenter;
|
|
while not(poz.EOF) do
|
|
begin
|
|
wSheet1.AsString[0, idx]:= cObj;
|
|
wSheet1.AsInteger[1, idx]:= StrToInt(VarToStr(poz.FieldValues(0))); // polozka
|
|
wSheet1.AsString[2, idx]:= VarToStr(poz.FieldValues(1)); // RegCis
|
|
wSheet1.AsFloat[3, idx]:= StrToFloat(VarToStr(poz.FieldValues(2))); // mnozstvi
|
|
dat:= VarToStr(poz.FieldValues(3));
|
|
if (dat<>'') then
|
|
wSheet1.AsString[4, idx]:= dat;
|
|
Inc(idx);
|
|
poz.Next;
|
|
end;
|
|
wSheet1.AutoWidthCols(0, 4);
|
|
end;
|
|
xls.Sheets[0].Rows.Items[6].FontStyle:= [xfsBold];
|
|
xls.Sheets[0].Columns.Items[1].HorizAlignment:= chaCenter;
|
|
xls.Sheets[0].Columns.Items[3].HorizAlignment:= chaCenter;
|
|
xls.Sheets[0].Columns.Items[4].HorizAlignment:= chaCenter;
|
|
xls.Sheets[1].Rows.Items[6].FontStyle:= [xfsBold];
|
|
xls.SaveToFile(fld + '\Obj-' + cObj + '.xls');
|
|
finally
|
|
xls.Free;
|
|
end;
|
|
Helios.Info('Export souboru ukončen.');
|
|
end;
|
|
end
|
|
else
|
|
Helios.Error(#1'Kooperační objednávka neobsahuje žádnou položku.'#1);
|
|
end
|
|
else
|
|
Helios.Error(#1'Nelze identifikovat Kooperační objednávku.'#1);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.GenerujVydejZEP(const Helios: IHelios);
|
|
begin
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.GenerujVydejMatZPrikazu(const Helios: IHelios; idEvidKoop: integer);
|
|
const rDoklVydMat = '400';
|
|
drVydej = '4';
|
|
var pol: IHeQuery;
|
|
lSQL, podm: string;
|
|
idKZ, idKZPr, idDZ, idPZ, iPC, idVPr, idPrKVaz: Integer;
|
|
mnoz, mnozOdv, mnozVPr, mnReal: Extended;
|
|
sPC, stredVPr, cOrgKoop, idSS, dokl, idObd, cOrg: string; // poradove cislo noveho dokladu vydejky
|
|
begin
|
|
idVPr:= 0;
|
|
with Helios.OpenSQL('SELECT IDPrikaz FROM ' + tblMzdZm + ' WHERE TypMzdy=2 AND id=' + IntToStr(idEvidKoop)) do
|
|
if (RecordCount>0) then
|
|
idVPr:= StrToInt(VarToStr(FieldValues(0)));
|
|
if (idVPr>0) then
|
|
begin
|
|
mnozVPr:= 0;
|
|
stredVPr:= '';
|
|
with Helios.OpenSQL('SELECT ISNULL(KmenoveStredisko,' + QuotedStr('') + '),kusy_zive,IDTabKmen FROM ' + tblPrikaz + ' WHERE id=' + IntToStr(idVPr)) do
|
|
if RecordCount=1 then
|
|
begin
|
|
stredVPr:= VarToStr(FieldValues(0));
|
|
mnozVPr:= StrToFloat(VarToStr(FieldValues(1)));
|
|
idKZPr:= StrToInt(VarToStr(FieldValues(2)));
|
|
end;
|
|
if (stredVPr<>'') and (mnozVPr>0) then
|
|
begin
|
|
with Helios.OpenSQL('SELECT ISNULL(Cislo_V,' + QuotedStr('') + ') FROM ' + tblStrom + ' WHERE Cislo=N' + QuotedStr(stredVPr)) do
|
|
stredVPr:= VarToStr(FieldValues(0));
|
|
if (stredVPr<>'') then
|
|
begin
|
|
lSQL:= 'SELECT se._CisloOrg FROM ' + tblStrom + ' s INNER JOIN ' + tblStromE + ' se ON (s.id=se.id)';
|
|
lSQL:= lSQL + ' WHERE s.Cislo=N' + QuotedStr(stredVPr);
|
|
with Helios.OpenSQL(lSQL) do
|
|
if RecordCount>0 then
|
|
cOrg:= VarToStr(FieldValues(0))
|
|
else
|
|
cOrg:= '';
|
|
if (cOrg<>'') then
|
|
begin
|
|
mnozOdv:= 0;
|
|
lSQL:= 'SELECT kusy_odv FROM ' + tblMzdZm + ' WHERE TypMzdy=2 AND id=' + IntToStr(idEvidKoop);
|
|
with Helios.OpenSQL(lSQL) do
|
|
if RecordCount>0 then
|
|
mnozOdv:= StrToFloat(VarToStr(FieldValues(0)));
|
|
|
|
lSQL:= 'SELECT nizsi,mnoz_Nevydane,Doklad,id,Mnoz_skut_realizovane FROM ' + tblPrVaz + ' WHERE mnoz_Nevydane>0 AND IDPrikaz=' + IntToStr(idVPr);
|
|
lSQL:= lSQL + ' ORDER BY DatPorizeni';
|
|
pol:= Helios.OpenSQL(lSQL);
|
|
if (pol.RecordCount>0) and (mnozOdv>0) then
|
|
begin
|
|
ReseedTable(Helios,tblDZ);
|
|
ReseedTable(Helios,tblPZ);
|
|
|
|
podm:= 'Obdobi=' + idObd + ' AND DruhPohybuZbo=' + drVydej + ' AND RadaDokladu=N' + QuotedStr(rDoklVydMat);
|
|
podm:= podm + ' AND IDSklad=N' + QuotedStr(stredVPr);
|
|
iPC:= NajdiPrvniVolny(Helios,tblDZ,'PoradoveCislo',drVydej,rDoklVydMat,idObd,podm);
|
|
|
|
lSQL:= 'DECLARE @i INT' + CRLF + 'EXEC dbo.hp_InsertHlavickyOZ @i OUT,@sklad=N' + QuotedStr(stredVPr);
|
|
lSQL:= lSQL + ',@DruhPohybu=' + drVydej + ',@RadaDokladu=N' + QuotedStr(rDoklVydMat) + ',@CisloOrg=' + cOrg + ',@Mena=N';
|
|
lSQL:= lSQL + QuotedStr('CZK') + ',@Insert=1' + CRLF + 'SELECT @i';
|
|
idDZ:= 0;
|
|
try
|
|
with Helios.OpenSQL(lSQL) do
|
|
if not VarIsNull(FieldValues(0)) then
|
|
idDZ:= StrToInt(VarToStr(FieldValues(0)));
|
|
except on E:Exception do
|
|
Helios.Error(#1'Nelze uložit hlavičku Výdejky materiálu.'#1);
|
|
end;
|
|
if (idDZ>0) then
|
|
begin
|
|
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=' + IntToStr(Helios.UserId) + ' WHERE id=' + IntToStr(idDZ));
|
|
pol.First;
|
|
while not(pol.EOF) do
|
|
begin
|
|
idSS:= '';
|
|
idKZ:= StrToInt(VarToStr(pol.FieldValues(0)));
|
|
dokl:= VarToStr(pol.FieldValues(2));
|
|
idPrKVaz:= StrToInt(VarToStr(pol.FieldValues(3)));
|
|
mnReal:= StrToFloat(VarToStr(pol.FieldValues(4)));
|
|
mnoz:= 0;
|
|
|
|
lSQL:= 'SELECT mnozstvi FROM ' + tblKVaz + ' WHERE nizsi=' + IntToStr(idKZ) + ' AND vyssi=' + IntToStr(idKZPr);
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
mnoz:= StrToFloat(VarToStr(FieldValues(0)));
|
|
mnoz:= RoundToEx(mnoz*mnozOdv,-3);
|
|
mnReal:= mnReal + mnoz;
|
|
end;
|
|
|
|
if (idKZ>0) then
|
|
begin
|
|
lSQL:= 'SELECT id FROM ' + tblSS + ' WHERE IDKmenZbozi=' + IntToStr(idKZ) + ' AND IDSklad=N' + QuotedStr(stredVPr);
|
|
with Helios.OpenSQL(lSQL) do
|
|
if RecordCount=0 then
|
|
begin
|
|
lSQL:= 'INSERT ' + tblSS + ' (IDSklad,IdKmenZbozi) VALUES (N' + QuotedStr(stredVPr) + ',' + IntToStr(idKZ) + ')';
|
|
lSQL:= lSQL + CRLF + 'SELECT SCOPE_IDENTITY()';
|
|
with Helios.OpenSQL(lSQL) do
|
|
idSS:= VarToStr(FieldValues(0));
|
|
end
|
|
else
|
|
idSS:= VarToStr(FieldValues(0));
|
|
end;
|
|
lSQL:= 'DECLARE @i INT';
|
|
lSQL:= lSQL + CRLF + 'EXEC dbo.hp_InsertPolozkyOZ @i OUT,@IDDoklad=' + IntToStr(idDZ);
|
|
lSQL:= lSQL + ',@DruhPohybu=' + drVydej + ',@CisloOrg=' + cOrg + ',@IDZboSklad=' + idSS + ',@Mena=N' + QuotedStr('CZK');
|
|
lSQL:= lSQL + ',@JednotkaMeny=1,@Kurz=1';
|
|
lSQL:= lSQL + ',@VstupniCena=0,@JCbezDaniKC=0.1,@KurzEuro=1,@SazbaSD=0,@SazbaDPH=0,@ZakazanoDPH=0';
|
|
lSQL:= lSQL + ',@Selectem=0,@Mnozstvi=' + StringReplace(FloatToStr(mnoz),',','.',[rfReplaceAll]);
|
|
lSQL:= lSQL + ',@DatPorizeni=NULL,@PovolitDuplicitu=1' + CRLF + 'SELECT @i';
|
|
idPZ:= 0;
|
|
with Helios.OpenSQL(lSQL) do
|
|
if not VarIsNull(FieldValues(0)) then
|
|
idPZ:= StrToInt(VarToStr(FieldValues(0)));
|
|
if (idPZ>0) then
|
|
try
|
|
Helios.ExecSQL('UPDATE ' + tblPZ + ' SET DokladPrikazu=' + dokl + ',TypVyrobnihoDokladu=1, IDPrikaz=' + IntToStr(idVPr) + ' WHERE id=' + IntToStr(idPZ));
|
|
try
|
|
Helios.ExecSQL('INSERT ' + tblMzdZmGenPZ + ' (IDMzdy,TypGen,IDPohybu) VALUES (' + IntToStr(idEvidKoop) + ',0,' + IntToStr(idPZ) + ')');
|
|
except
|
|
end;
|
|
{
|
|
lSQL:= 'UPDATE ' + tblPrVaz + ' SET ';
|
|
lSQL:= lSQL + 'Mnoz_skut_realizovane=' + StringReplace(FloatToStr(mnReal),',','.',[rfReplaceAll]);
|
|
lSQL:= lSQL + 'Mnoz_odv=' + StringReplace(FloatToStr(mnReal),',','.',[rfReplaceAll]);
|
|
lSQL:= lSQL + ' WHERE id=' + IntToStr(idPrKVaz);
|
|
Helios.ExecSQL(lSQL);
|
|
}
|
|
except on E:Exception do
|
|
Helios.Error(#1'Nelze uložit položku výdejky.'#1 + CRLF + E.Message + errPlg);
|
|
end
|
|
else
|
|
Helios.Error(#1'Nelze uložit položku výdejky.'#1 + CRLF + lSQL + errPlg);
|
|
pol.Next;
|
|
end;
|
|
|
|
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=null,IDPrikaz=' + IntToStr(idVPr) + ' WHERE id=' + IntToStr(idDZ));
|
|
Helios.ExecSQL('EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=' + IntToStr(idDZ) + ',@AktualizaceSlev=1');
|
|
try
|
|
lSQL:= 'DECLARE @BylaChyba BIT' + CRLF + 'EXEC dbo.hp_Realizuj_Vydej ' + IntToStr(idDZ) + ',NULL,' + IntToStr(Helios.UserId);
|
|
lSQL:= lSQL + ',0,@BylaChyba OUT' + CRLF + 'SELECT @BylaChyba';
|
|
Helios.OpenSQL(lSQL);
|
|
except on E:Exception do
|
|
Helios.Error(#1'Nelze realizovat výdejku.'#1 + CRLF + E.Message + errPlg);
|
|
end;
|
|
Helios.Info('Hotovo - nová výdejka na skladě ' + stredVPr + ', č.' + rDoklVydMat + ' : ' + IntToStr(iPC));
|
|
end;
|
|
end
|
|
else
|
|
Helios.Error(#1'Skladu není přiřazena organizace.'#1 + errPlg);
|
|
end
|
|
else
|
|
Helios.Error(#1'Skladu není přiřazena organizace.'#1 + errPlg);
|
|
end
|
|
else
|
|
Helios.Error(#1'Kmenové středisko Výrobního příkazu nemá určen sklad materiálu.'#1);
|
|
end
|
|
else
|
|
Helios.Error(#1'Na Výrobním příkazu není určeno Kmenové středisko.'#1 + errPlg);
|
|
end
|
|
else
|
|
Helios.Error(#1'Operace není Kooperační, resp. nebyl identifikován Výrobní příkaz.'#1 + errPlg);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.OdpovedPPL(const Helios: IHelios);
|
|
begin
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.ImportNesplObj(const Helios: IHelios);
|
|
var idx: integer;
|
|
cObj, rc, sTmp, idDZ, idSS, idKZ, idPZ: string;
|
|
xls: TXLSReadWriteII5;
|
|
fs: TFileStream;
|
|
wSheet: TXLSWorksheet;
|
|
dat1, dat2: TDate;
|
|
poz: integer;
|
|
Mnoz, JCena, kurz: Extended;
|
|
sql: string;
|
|
begin
|
|
sql:= 'IF OBJECT_ID(N' + QuotedStr('tempdb..#TabExtKom') + ',N' + QuotedStr('U') + ') IS NOT NULL';
|
|
sql:= sql + CRLF + 'DROP TABLE #TabExtKom' + CRLF + 'CREATE TABLE #TabExtKom(Poznamka NVARCHAR(255) NOT NULL)';
|
|
Helios.ExecSQL(sql);
|
|
if OtevriSouborXLS(fName,'') then
|
|
begin
|
|
xls:= TXLSReadWriteII5.Create(nil);
|
|
try
|
|
wSheet:= xls.Add;
|
|
if (wSheet.AsString[0,0]<>'CISOBJ') or (wSheet.AsString[7,0]<>'ZBYVYR') then
|
|
raise Exception.Create('Soubor s nesplněnými objednávkami není v požadovaném formátu.')
|
|
else
|
|
if (wSheet.LastRow>0) then
|
|
begin
|
|
Helios.ExecSQL('DECLARE @max INT' + CRLF + 'SELECT @max=MAX(id) FROM ' + tblDZ + CRLF + 'DBCC CHECKIDENT(TabDokladyZbozi,reseed,@max)');
|
|
Helios.ExecSQL('DECLARE @max INT' + CRLF + 'SELECT @max=MAX(id) FROM ' + tblPZ + CRLF + 'DBCC CHECKIDENT(TabPohybyZbozi,reseed,@max)');
|
|
sql:= 'DECLARE @i INT' + CRLF + 'EXEC dbo.hp_InsertHlavickyOZ @i OUT,@sklad=N' + QuotedStr(Helios.Sklad);
|
|
sql:= sql + ',@DruhPohybu=9,@RadaDokladu=N' + QuotedStr(rImpNesplObj) + ',@CisloOrg=1,@Mena=N';
|
|
sql:= sql + QuotedStr('EUR') + ',@Insert=1' + CRLF + 'SELECT @i';
|
|
idDZ:= '';
|
|
with Helios.OpenSQL(sql) do
|
|
idDZ:= VarToStr(FieldValues(0));
|
|
if (idDZ<>'') then
|
|
begin
|
|
with Helios.OpenSQL('SELECT Kurz FROM ' + tblDZ + ' WHERE id=' + idDZ) do
|
|
kurz:= StrToFloat(VarToStr(FieldValues(0)));
|
|
|
|
idx:= 1;
|
|
cObj:= Trim(wSheet.AsString[0, idx]);
|
|
while (cObj<>'') do
|
|
begin
|
|
poz:= wSheet.AsInteger[1, idx];
|
|
rc:= wSheet.AsString[3, idx];
|
|
rc:= StringReplace(rc,' ','',[rfReplaceAll]);
|
|
rc:= StringReplace(rc,'.','',[rfReplaceAll]);
|
|
rc:= StringReplace(rc,'/','',[rfReplaceAll]);
|
|
|
|
sTmp:= wSheet.AsString[2, idx];
|
|
if Pos(' ',sTmp)>0 then
|
|
begin
|
|
sTmp:= StringReplace(sTmp,' ','',[rfReplaceAll]);
|
|
sTmp:= StringReplace(sTmp,'i','',[rfReplaceAll]);
|
|
dat1:= StrToDate(sTmp); // datum objednavky
|
|
end
|
|
else
|
|
dat1:= wSheet.AsDateTime[2, idx]; // datum objednavky
|
|
|
|
dat2:= wSheet.AsDateTime[8, idx]; // pozadovane datum
|
|
|
|
mnoz:= wSheet.AsFloat[7, idx];
|
|
JCena:= wSheet.AsFloat[10, idx];
|
|
|
|
idSS:= '';
|
|
idKZ:= '';
|
|
sql:= 'SELECT ss.id,kz.id FROM ' + tblSS + ' ss INNER JOIN ' + tblKZ + ' kz ON (ss.IDKmenZbozi=kz.id)';
|
|
sql:= sql + ' WHERE ss.IDSklad=N' + QuotedStr(Helios.Sklad) + ' AND kz.RegCis=N' + QuotedStr(rc) + ' AND kz.SkupZbo LIKE N''V%''';
|
|
with Helios.OpenSQL(sql) do
|
|
begin
|
|
idSS:= VarToStr(FieldValues(0));
|
|
idKZ:= VarToStr(FieldValues(1));
|
|
end;
|
|
idPZ:= '';
|
|
if idSS<>'' then
|
|
begin
|
|
sql:= 'DECLARE @i INT, @d DATETIME' + CRLF + 'SET @d=CONVERT(datetime,' + QuotedStr(DateToStr(dat1)) + ',104)';
|
|
sql:= sql + CRLF + 'EXEC dbo.hp_InsertPolozkyOZ @i OUT,@IDDoklad=' + idDZ;
|
|
sql:= sql + ',@DruhPohybu=9,@CisloOrg=1,@IDZboSklad=' + idSS + ',@Mena=N' + QuotedStr('EUR');
|
|
sql:= sql + ',@JednotkaMeny=1,@Kurz=' + StringReplace(FloatToStr(kurz),',','.',[rfReplaceAll]);
|
|
sql:= sql + ',@VstupniCena=4,@JCbezDaniKC=0,@KurzEuro=1,@SazbaSD=0,@SazbaDPH=0,@ZakazanoDPH=1';
|
|
sql:= sql + ',@Selectem=0,@Mnozstvi=' + StringReplace(FloatToStr(mnoz),',','.',[rfReplaceAll]);
|
|
sql:= sql + ',@DatPorizeni=@d,@PovolitDuplicitu=1' + CRLF + 'SELECT @i';
|
|
with Helios.OpenSQL(sql) do
|
|
idPZ:= VarToStr(FieldValues(0));
|
|
if idPZ<>'' then
|
|
begin
|
|
sql:= 'UPDATE ' + tblPZ + ' SET JCbezDaniKc=' + StringReplace(FloatToStr(JCena*kurz),',','.',[rfReplaceAll]);
|
|
sql:= sql + ',JCbezDaniKcPoS=' + StringReplace(FloatToStr(JCena*kurz),',','.',[rfReplaceAll]);
|
|
sql:= sql + ',CCbezDaniKc=' + StringReplace(FloatToStr(mnoz*JCena*kurz),',','.',[rfReplaceAll]);
|
|
sql:= sql + ',JCbezDaniValPoS=' + StringReplace(FloatToStr(JCena),',','.',[rfReplaceAll]);
|
|
sql:= sql + ',JCbezDaniVal=' + StringReplace(FloatToStr(JCena),',','.',[rfReplaceAll]);
|
|
sql:= sql + ',CCbezDaniVal=' + StringReplace(FloatToStr(mnoz*JCena),',','.',[rfReplaceAll]);
|
|
sql:= sql + ' WHERE id=' + idPZ + CRLF;
|
|
sql:= sql + 'UPDATE ' + tblPZ + ' SET PozadDatDod=CONVERT(datetime,' + QuotedStr(DateToStr(dat2)) + ',104)';
|
|
sql:= sql + ',NazevSozNa1=N' + QuotedStr(cObj) + ',NazevSozNa2=N';
|
|
sql:= sql + QuotedStr(StringOfChar('0', 4-Length(IntToStr(poz))) + IntToStr(poz));
|
|
sql:= sql + ' WHERE id=' + idPZ;
|
|
Helios.ExecSQL(sql);
|
|
end;
|
|
end
|
|
else
|
|
UlozChybu(Helios,'Nenalezena skladová karta: ' + rc,nil);
|
|
Inc(idx);
|
|
cObj:= Trim(wSheet.AsString[0, idx]);
|
|
end;
|
|
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=null WHERE id=' + idDZ);
|
|
Helios.ExecSQL('EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=' + idDZ + ',@AktualizaceSlev=1');
|
|
Helios.Refresh(true);
|
|
try
|
|
with Helios.OpenSQL('SELECT Poznamka FROM #TabExtKom') do
|
|
if RecordCount>0 then
|
|
Helios.OpenBrowse(541,'');
|
|
finally
|
|
end;
|
|
end;
|
|
end;
|
|
finally
|
|
fs.Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
{
|
|
// generuj kooperacni objednavku
|
|
procedure TplgLOVATO.GenerujKoopObjednavku(const Helios: IHelios; idVP: Integer);
|
|
var pp: IHeQuery;
|
|
sql: WideString;
|
|
idKoopObj,idOrg,idZam: integer;
|
|
cVPrik,radaKoop,cKoopObj,termOdesli: ShortString;
|
|
dat1: TDateTime;
|
|
begin
|
|
cVPrik:= '';
|
|
dat1:= Now;
|
|
with Helios.OpenSQL('SELECT RadaPrikaz,CONVERT(datetime,Plan_zadani,104) FROM ' + tblPrikaz + ' WHERE id=' + IntToStr(idVP)) do
|
|
if RecordCount>0 then
|
|
begin
|
|
cVPrik:= VarToStr(FieldValues(0));
|
|
dat1:= StrToDateTime(VarToStr(FieldValues(1)));
|
|
end;
|
|
radaKoop:= '101';
|
|
idOrg:= 0;
|
|
idZam:= 0;
|
|
|
|
pp:= Helios.OpenSQL('SELECT * FROM ' + tblPrPost + ' WHERE idPrikaz=' + IntToStr(idVP));
|
|
if pp.RecordCount>0 then
|
|
begin
|
|
cKoopObj:= '1';
|
|
sql:= 'SELECT MAX(Cislo)+1 FROM ' + tblKoopObj + ' WHERE Rada=N' + QuotedStr(radaKoop);
|
|
with Helios.OpenSQL(sql) do
|
|
if RecordCount>0 then
|
|
cKoopObj:= VarToStr(FieldValues(0));
|
|
cKoopObj:= StringOfChar('0',6-Length(cKoopObj)) + cKoopObj; // zadat na 6 cislic
|
|
|
|
sql:= 'INSERT INTO dbo.TabKoopObj (Rada,Cislo,IDOrganizace,IDZamestnance,TerminOdeslani,PozadTerDod) ';
|
|
sql:= sql + 'VALUES (N' + QuotedStr(radaKoop) + ',' + cKoopObj + ',' + IntToStr(idOrg) + ',' + IntToStr(idZam) + ',';
|
|
sql:= sql + 'CONVERT(datetime,' + QuotedStr(DateTimeToStr(dat1)) + ',104),';
|
|
sql:= sql + 'CONVERT(datetime,' + QuotedStr(DateTimeToStr(dat1)) + ',104) )' + CRLF;
|
|
sql:= sql + 'SELECT SCOPE_IDENTITY()';
|
|
idKoopObj:= 0;
|
|
with Helios.OpenSQL(sql) do
|
|
idKoopObj:= StrToInt(VarToStr(FieldValues(0)));
|
|
|
|
if idKoopObj>0 then
|
|
begin
|
|
pp.First;
|
|
while not(pp.EOF) do
|
|
begin
|
|
pp.Next;
|
|
end;
|
|
end
|
|
else
|
|
Helios.Error(#1'Nepodařilo se uložit Kooperační objednávku' + CRLF + 'pro výrobní příkaz: ' + cVPrik + #1);
|
|
end;
|
|
end;
|
|
}
|
|
|
|
|
|
|
|
// import polozek objednavky z IT (pokud je v vlastTbl<>'' pak import do jiz existujiciho dokladu
|
|
procedure TplgLOVATO.ImportEP(const Helios: IHelios; const idDZx: integer; ExpP: boolean);
|
|
var sql, fName, errMsg: string;
|
|
testOK, kontrolaCen: Boolean;
|
|
tStr, rCeniky, cObj, regCis, wCond, cisDZ, skladEP, cOrg, mena, boxik, hmotJg: string;
|
|
idSS, jCenaSS, sazba, mj, descript, cenik: string;
|
|
pozice: integer;
|
|
qty, cena, per, kurz, ccena: Extended;
|
|
datum: TDateTime;
|
|
iLoop, iSheet, iX, iY, iPos: integer;
|
|
pol, obj: IHeQuery;
|
|
idDZ, idDZShift, idPZ, idKZ, cDokl, idUmist: Integer;
|
|
pocRadek, idCen, idPolCen, maxRegCis: integer;
|
|
sCen: string;
|
|
rDokl: string[3];
|
|
tmpTab, szPodm: string;
|
|
chybka,newKarta: boolean;
|
|
xls: TXLSReadWriteII5;
|
|
wSheet1, wSheet2: TXLSWorkSheet;
|
|
begin
|
|
sql:= 'IF OBJECT_ID(N' + QuotedStr('TempDB..#TabExtKom') + ',N' + QuotedStr('U') + ') IS NOT NULL';
|
|
sql:= sql + CRLF + 'DROP TABLE #TabExtKom' + CRLF + 'CREATE TABLE #TabExtKom(Poznamka NVARCHAR(255) NOT NULL)';
|
|
Helios.ExecSQL(sql);
|
|
|
|
chybka:= false;
|
|
|
|
if (idDZx>0) then
|
|
begin
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblDZ + ' WHERE Realizovano=1 AND id=' + IntToStr(idDZx)) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
raise Exception.Create('Položky nelze vložit do REALIZOVANÉHO dokladu.');
|
|
chybka:= true;
|
|
end;
|
|
|
|
cOrg:= '0';
|
|
if not VarIsNull(Helios.QueryEdit.FieldByNameValues('CisloOrg')) then
|
|
cOrg:= VarToStr(Helios.QueryEdit.FieldByNameValues('CisloOrg'));
|
|
|
|
idCen:= 0;
|
|
sCen:= '';
|
|
kontrolaCen:= false;
|
|
sql:= 'SELECT coe.id FROM ' + tblCOrgE + ' coe INNER JOIN ' + tblCOrg + ' co ON (coe.id=co.id) WHERE';
|
|
sql:= sql + ' coe._KontrolaCenPrijem=1 AND co.CisloOrg=' + cOrg;
|
|
|
|
with Helios.OpenSQL(sql) do
|
|
if (RecordCount>0) then // pri prijmu kontrolovat cenu podle ceniku (Nabidkove sestavy)
|
|
begin
|
|
|
|
// hleda pokud k dane firme existuje Nabidkova sestava v rade "Ceniky pro kontrolu" pro dany rok podle DatPorizeni
|
|
// pokud existuje vic Nabidek, bere prvni se razenim podle DatPorizeni DESC
|
|
datum:= Now;
|
|
if not VarIsNull(Helios.QueryEdit.FieldByNameValues('DatPorizeni')) then
|
|
datum:= StrToDateTime(VarToStr(Helios.QueryEdit.FieldByNameValues('DatPorizeni')));
|
|
|
|
if (ExpP) then
|
|
begin
|
|
if (Helios.Sklad='200') then
|
|
rCeniky:= '210'
|
|
else
|
|
begin
|
|
sql:= 'DruhPohybuZbo=11';
|
|
if Helios.Prenos(bidDDZ, 'RadaDokladu', oVar1, sql, 'Řada ceníku podle které bude provedena kontrola ceny', true) then
|
|
rCeniky:= VarToStr(oVar1)
|
|
else
|
|
rCeniky:= '210';
|
|
end;
|
|
sql:= 'SELECT TOP(1) id, ParovaciZnak FROM ' + tblDZ + ' WHERE DruhPohybuZbo=11 AND NabidkaCenik=1 AND RadaDokladu=N';
|
|
sql:= sql + QuotedStr(rCeniky) + ' AND CisloOrg=' + cOrg + ' AND GETDATE() BETWEEN ISNULL(Splatnost, CONVERT(datetime,N';
|
|
sql:= sql + QuotedStr('1.1.2015') + ',104)) AND ISNULL(DatUhrady, CONVERT(datetime,N' + QuotedStr('31.12.2030') + ',104)) ORDER BY DatPorizeni DESC';
|
|
with Helios.OpenSQL(sql) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
idCen:= StrToInt(VarToStr(FieldValues(0)));
|
|
tStr:= VarToStr(FieldValues(1));
|
|
sCen:= tStr; // rCeniky + StringOfChar('0',6 - Length(tStr)) + tStr;
|
|
kontrolaCen:= true;
|
|
end;
|
|
{
|
|
tStr:= '';
|
|
if not VarIsNull(Helios.QueryEdit.FieldByNameValues('Nabidka')) then
|
|
tStr:= VarToStr(Helios.QueryEdit.FieldByNameValues('Nabidka'));
|
|
if (tStr<>'') then
|
|
with Helios.OpenSQL('SELECT ParovaciZnak FROM ' + tblDZ + ' WHERE id=' + tStr) do
|
|
if RecordCount>0 then
|
|
tStr:= VarToStr(FieldValues(0));
|
|
|
|
if (sCen<>tStr) and (idCen>0) then
|
|
begin
|
|
raise Exception.Create('Není zadán Ceník, podle kterého se mají kontrolovat ceny.');
|
|
chybka:= true;
|
|
end;
|
|
}
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
if chybka then
|
|
Exit;
|
|
|
|
chybka:= false;
|
|
tmpTab:= '';
|
|
if ExpP then
|
|
tmpTab:= '[dbo].[_TabImportEP]'
|
|
else
|
|
tmpTab:= '[dbo].[_TabImportPckLst]';
|
|
// tmpTab:= '#' + tmpTab;
|
|
|
|
cOrg:= orgLovatoIT;
|
|
mena:= orgLovatoITmena;
|
|
if (idDZx>0) then
|
|
begin
|
|
cOrg:= VarToStr(Helios.QueryEdit.FieldByNameValues('CisloOrg'));
|
|
if (cOrg='') then
|
|
cOrg:= orgLovatoIT;
|
|
mena:= VarToStr(Helios.QueryEdit.FieldByNameValues('Mena'));
|
|
if (mena='') then
|
|
mena:= orgLovatoITmena;
|
|
rDokl:= VarToStr(Helios.QueryEdit.FieldByNameValues('RadaDokladu'));
|
|
{
|
|
with Helios.OpenSQL('SELECT Mena,CisloOrg,RadaDokladu FROM ' + tblDZ + ' WHERE id=' + IntToStr(idDZx)) do
|
|
if RecordCount>0 then
|
|
begin
|
|
mena:= VarToStr(FieldValues(0));
|
|
cOrg:= VarToStr(FieldValues(1));
|
|
rDokl:= VarToStr(FieldValues(2));
|
|
end;
|
|
}
|
|
end;
|
|
|
|
skladEP:= Helios.Sklad;
|
|
|
|
if OtevriSouborXLS(fName,'') then
|
|
begin
|
|
Screen.Cursor:= crHourGlass;
|
|
xls:= TXLSReadWriteII5.Create(nil);
|
|
try
|
|
xls.Filename:= fName;
|
|
xls.Read;
|
|
if ExpP then
|
|
begin
|
|
if (xls.Count<>1) then
|
|
begin
|
|
Helios.Error('Soubor s objednávkou ORDER má mít jen 1 list !');
|
|
xls.Free;
|
|
Exit;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
if (xls.Count<>2) then
|
|
begin
|
|
Helios.Error('Soubor s dodávkou PACKING LIST má mít 2 listy !');
|
|
xls.Free;
|
|
Exit;
|
|
end;
|
|
end;
|
|
|
|
testOK:= true;
|
|
if ExpP then
|
|
begin // format pro objednavku (order)
|
|
iSheet:= 0;
|
|
wSheet1:= xls.Sheets[0];
|
|
tStr:= LowerCase(wSheet1.AsString[0,0]);
|
|
if (Pos('purchase',tStr)=0) then
|
|
testOK:= false;
|
|
tStr:= LowerCase(wSheet1.AsString[2,0]);
|
|
if (Pos('code',tStr)=0) then
|
|
testOK:= false;
|
|
tStr:= LowerCase(wSheet1.AsString[4,0]);
|
|
if (Pos('quantity',tStr)=0) then
|
|
testOK:= false;
|
|
tStr:= LowerCase(wSheet1.AsString[5,0]);
|
|
if (Pos('price',tStr)=0) then
|
|
testOK:= false
|
|
end
|
|
else
|
|
begin // format pro prijemku materialu (Packinglist)
|
|
iSheet:= 1;
|
|
wSheet1:= xls.Sheets[1];
|
|
wSheet2:= xls.Sheets[0];
|
|
// iSheet:= xls.Sheets.Count-1;
|
|
tStr:= LowerCase(wSheet1.AsString[0,6]);
|
|
if (Pos('codice',tStr)=0) then
|
|
testOK:= false;
|
|
tStr:= LowerCase(wSheet1.AsString[5,6]);
|
|
if (Pos('nr',tStr)=0) then
|
|
testOK:= false;
|
|
tStr:= LowerCase(wSheet1.AsString[7,6]);
|
|
if (Pos('totale',tStr)=0) then
|
|
testOK:= false;
|
|
end;
|
|
|
|
if testOK then
|
|
begin
|
|
pocRadek:= 0;
|
|
if ExpP then
|
|
begin
|
|
if not(VarIsNull(wSheet1.AsVariant[0, 1+pocRadek])) then
|
|
sql:= wSheet1.AsString[0, 1+pocRadek]
|
|
else
|
|
sql:= ''
|
|
end
|
|
else
|
|
begin
|
|
if not(VarIsNull(wSheet1.AsVariant[0, 7+pocRadek])) then
|
|
sql:= wSheet1.AsString[0, 7+pocRadek]
|
|
else
|
|
sql:= '';
|
|
end;
|
|
while (sql<>'') do
|
|
begin
|
|
Inc(pocRadek);
|
|
if ExpP then
|
|
begin
|
|
if not(VarIsNull(wSheet1.AsVariant[0, 1+pocRadek])) then
|
|
sql:= wSheet1.AsString[0, 1+pocRadek]
|
|
else
|
|
sql:= ''
|
|
end
|
|
else
|
|
begin
|
|
if not(VarIsNull(wSheet1.AsVariant[0, 7+pocRadek])) then
|
|
sql:= wSheet1.AsString[0, 7+pocRadek]
|
|
else
|
|
sql:= '';
|
|
end;
|
|
end;
|
|
|
|
if (pocRadek>0) then
|
|
begin
|
|
if (idDZx=0) then
|
|
begin
|
|
sql:= 'DruhPohybuZbo=9';
|
|
if not(ExpP) then
|
|
sql:= 'DruhPohybuZbo=0';
|
|
// iSheet
|
|
if Helios.Prenos(bidDDZ,'RadaDokladu',oVar1,sql,'Vyberte řadu do které bude vystaven doklad',true) then
|
|
rDokl:= VarToStr(oVar1)
|
|
else
|
|
begin
|
|
if Helios.YesNo('Nebyla vybrána řada dokladů. Chcete ukončit import ?',false) then
|
|
begin
|
|
xls.Free;
|
|
Exit;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
maxRegCis:= 15;
|
|
with Helios.OpenSQL('SELECT TOP(1)DelkaRegCislaZbozi FROM TabHGlob') do
|
|
if (RecordCount>0) then
|
|
maxRegCis:= StrToInt(VarToStr(FieldValues(0)));
|
|
// sql:= 'IF OBJECT_ID(N' + QuotedStr('tempdb..' + tmpTab) + ',' + QuotedStr('U') + ') IS NOT NULL ';
|
|
sql:= 'IF OBJECT_ID(N' + QuotedStr(tmpTab) + ',' + QuotedStr('U') + ') IS NOT NULL ';
|
|
sql:= sql + 'DROP TABLE ' + tmpTab + CRLF + 'CREATE TABLE ' + tmpTab + '(';
|
|
sql:= sql + 'cObj NVARCHAR(12), pozice INT, regCis NVARCHAR(' + IntToStr(maxRegCis) + ') NOT NULL,';
|
|
sql:= sql + 'mnozstvi NUMERIC(19,6) NOT NULL, cena NUMERIC(19,6), per NUMERIC(19,6),';
|
|
sql:= sql + 'datDod DATETIME, popis NVARCHAR(100), boxik NVARCHAR(50), hmotJg NUMERIC(10,2) DEFAULT 0.0)';
|
|
Helios.ExecSQL(sql);
|
|
|
|
tStr:= '';
|
|
// import polozek z XLS do pomocne tabulky
|
|
for iLoop:=1 to pocRadek do
|
|
begin
|
|
regCis:= '';
|
|
qty:= 0;
|
|
boxik:= '';
|
|
if ExpP then // je to objednavka z IT ?
|
|
begin // ano
|
|
cObj:= Trim(wSheet1.AsString[0, iLoop]);
|
|
Pozice:= wSheet1.AsInteger[1, iLoop];
|
|
regCis:= UpperCase(Trim(wSheet1.AsString[2, iLoop]));
|
|
descript:= wSheet1.AsString[3, iLoop];
|
|
qty:= wSheet1.AsFloat[4, iLoop];
|
|
cena:= wSheet1.AsFloat[5, iLoop];
|
|
per:= wSheet1.AsFloat[6, iLoop];
|
|
datum:= wSheet1.AsDateTime[7, iLoop];
|
|
hmotJg:= '0';
|
|
end
|
|
else
|
|
begin // ne, je to Packinglist (prijemka)
|
|
qty:= 0;
|
|
try
|
|
if (VarIsNull(wSheet1.AsVariant[5, iLoop+6])) then
|
|
Break;
|
|
|
|
if not(VarIsNull(wSheet1.AsVariant[5, iLoop+6])) then
|
|
qty:= wSheet1.AsFloat[5, iLoop+6];
|
|
except
|
|
end;
|
|
if (qty>0) then
|
|
begin
|
|
cObj:= Trim(wSheet1.AsString[1, iLoop+6]); // celni nomenklatura
|
|
pozice:= 0;
|
|
regCis:= Trim(wSheet1.AsString[0, iLoop+6]);
|
|
|
|
if not(VarIsNull(wSheet1.AsVariant[4, iLoop])) then
|
|
begin
|
|
iX:= 0;
|
|
// nahrazuje VLOOKUP (SVYHLEDAT) - kouka na odkaz do 1.listu
|
|
sql:= wSheet2.AsString[0, iX];
|
|
while (sql<>'') do
|
|
begin
|
|
if (sql=regCis) then
|
|
begin
|
|
if not(VarIsNull(wSheet2.AsVariant[1, iX])) then
|
|
boxik:= wSheet2.AsString[1, iX]
|
|
else
|
|
boxik:= '';
|
|
Break;
|
|
end;
|
|
Inc(iX);
|
|
if not(VarIsNull(wSheet2.AsVariant[0, iX])) then
|
|
sql:= wSheet2.AsString[0, iX]
|
|
else
|
|
sql:= '';
|
|
end;
|
|
end;
|
|
|
|
if not(VarIsNull(wSheet1.AsVariant[4, iLoop+6])) then
|
|
boxik:= wSheet1.AsString[4, iLoop+6];
|
|
if not(VarIsNull(wSheet1.AsVariant[3, iLoop+6])) then
|
|
descript:= wSheet1.AsString[3, iLoop+6];
|
|
per:= 1;
|
|
if (VarIsNull(wSheet1.AsVariant[6, iLoop+6])) then
|
|
begin
|
|
UlozChybu(Helios, 'Nelze uložit položku z XLS: obj.č. ' + regCis + ' (' + FloatToStr(qty) + ' ks, ' + DateToStr(datum) + ') - není zadána vstupní cena.', nil);
|
|
qty:= 0;
|
|
end
|
|
else
|
|
cena:= wSheet1.AsFloat[6, iLoop+6];
|
|
hmotJg:= '0';
|
|
if not(VarIsNull(wSheet1.AsVariant[8, iLoop+6])) then
|
|
hmotJg:= wSheet1.AsString[8, iLoop+6];
|
|
hmotJg:= StringReplace(hmotJg,' ','',[rfReplaceAll]);
|
|
|
|
datum:= Now;
|
|
end;
|
|
end;
|
|
if (qty<>0) then
|
|
begin
|
|
sql:= 'INSERT ' + tmpTab + ' (cObj, Pozice, regCis, mnozstvi, cena, per, datDod, popis, boxik, hmotJg)';
|
|
sql:= sql + ' SELECT N' + QuotedStr(cObj) + ',' + IntToStr(pozice);
|
|
sql:= sql + ',N' + QuotedStr(regCis) + ',' + StringReplace(FloatToStr(qty),',','.',[rfReplaceAll]);
|
|
sql:= sql + ',' + StringReplace(FloatToStr(cena),',','.',[rfReplaceAll]) + ',';
|
|
sql:= sql + StringReplace(FloatToStr(per),',','.',[rfReplaceAll]);
|
|
sql:= sql + ',CONVERT(datetime,' + QuotedStr(DateToStr(datum)) + ',104),';
|
|
sql:= sql + 'N' + QuotedStr(descript) + ',N' + QuotedStr(boxik) + ', ' + StringReplace(hmotJg,',','.',[rfReplaceAll]);
|
|
try
|
|
if (sql<>'') then
|
|
Helios.ExecSQL(sql);
|
|
except on E:Exception do
|
|
UlozChybu(Helios, 'Nelze uložit požadavek XLS: obj.č. ' + regCis + ' (' + FloatToStr(qty) + ', ' + DateToStr(datum) + ')', E);
|
|
end;
|
|
end;
|
|
end;
|
|
xls.Free;
|
|
end
|
|
end
|
|
else // test OK
|
|
begin
|
|
Helios.Error(#1'Importovaný soubor není v definovaném formátu.'#1);
|
|
Exit;
|
|
end;
|
|
|
|
except on E:Exception do
|
|
begin
|
|
xls.Free;
|
|
Helios.Error(#1'Chyba při importu XLS souboru (ExpP/Pckg): '#1 + E.Message + CRLF + errMsg);
|
|
Exit;
|
|
end;
|
|
end;
|
|
|
|
// pro PL (dodaci list) najdi neexistujici polozky, pripadne je zaloz
|
|
if not(ExpP) then
|
|
begin
|
|
sql:= 'SELECT LTRIM(RTRIM(regCis)), popis, cObj FROM ' + tmpTab + ' WHERE LTRIM(RTRIM(regCis)) NOT IN (SELECT LTRIM(RTRIM(RegCis)) FROM ' + tblKZ;
|
|
sql:= sql + ' WHERE SkupZbo=N' + QuotedStr('MAT') + ')';
|
|
with Helios.OpenSQL(sql) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
sql:= 'INSERT ' + tblKZ + ' (SkupZbo,RegCis,Nazev2,DruhSkladu,MJEvidence,CelniNomenklatura) VALUES (N' + QuotedStr('MAT');
|
|
sql:= sql + ',N' + QuotedStr(LeftStr(VarToStr(FieldValues(0)),maxRegCis)) + ',N';
|
|
sql:= sql + QuotedStr(LeftStr(VarToStr(FieldValues(1)),100)) + ',1,N' + QuotedStr('ks');
|
|
sql:= sql + ',N' + QuotedStr(VarToStr(FieldValues(2))) + ')';
|
|
sql:= sql + CRLF + 'INSERT #TabExtKom(Poznamka) VALUES (N';
|
|
sql:= sql + QuotedStr('Založena nová karta: MAT ' + VarToStr(FieldValues(0))) + ')';
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
except on E:Exception do
|
|
UlozChybu(Helios,'Nelze založit novou kartu: MAT ' + VarToStr(FieldValues(0)),E);
|
|
end;
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
// konec importu XLS do pomocne tabulky
|
|
|
|
// test karta je pro vyrobu
|
|
sql:= 'SELECT RegCis,Popis FROM ' + tmpTab + ' WHERE UPPER(RegCis) NOT IN (SELECT UPPER(kz.RegCis) FROM ' + tblKZ + ' kz';
|
|
sql:= sql + ' INNER JOIN ' + tblSZ + ' sz ON (kz.SkupZbo=sz.SkupZbo) LEFT JOIN ' + tblSZe + ' sze';
|
|
if expP = false then sql:= sql + ' ON (sz.id=sze.id) WHERE sze._JeVyroba=0 OR kz.Blokovano=0) AND UPPER(RegCis) IN (SELECT UPPER(RegCis) FROM ' + tblKZ + ')'
|
|
else sql:= sql + ' ON (sz.id=sze.id) WHERE sze._JeVyroba=0 OR kz.Blokovano=0 OR sz.SkupZbo not LIKE N' + QuotedStr('V%') + ') AND UPPER(RegCis) IN (SELECT UPPER(RegCis) FROM ' + tblKZ + ')'; // upraveno
|
|
pol:= Helios.OpenSQL(sql);
|
|
if (pol.RecordCount>0) then
|
|
begin
|
|
pol.First;
|
|
while not(pol.EOF) do
|
|
begin
|
|
regCis:= VarToStr(pol.FieldValues(0));
|
|
tStr:= VarToStr(pol.FieldValues(1));
|
|
UlozChybu(Helios,'Karta nepatří výrobě nebo je blokována, nebyla importována: ' + regCis + ' - ' + tStr ,nil);
|
|
pol.Next;
|
|
end;
|
|
end;
|
|
|
|
// test karta existuje
|
|
sql:= 'SELECT RegCis,Popis FROM ' + tmpTab + ' WHERE UPPER(RegCis) NOT IN (SELECT UPPER(kz.RegCis) FROM ' + tblKZ + ' kz';
|
|
sql:= sql + ' INNER JOIN ' + tblSZ + ' sz ON (kz.SkupZbo=sz.SkupZbo) LEFT JOIN ' + tblSZe + ' sze';
|
|
if expP = false then sql:= sql + ' ON (sz.id=sze.id) WHERE sze._JeVyroba=0 OR kz.Blokovano=0) AND UPPER(RegCis) IN (SELECT UPPER(RegCis) FROM ' + tblKZ + ')'
|
|
else sql:= sql + ' ON (sz.id=sze.id) WHERE sze._JeVyroba=0 OR kz.Blokovano=0 OR sz.SkupZbo not LIKE N' + QuotedStr('V%') + ') AND UPPER(RegCis) IN (SELECT UPPER(RegCis) FROM ' + tblKZ + ')'; // upraveno
|
|
pol:= Helios.OpenSQL(sql);
|
|
if (pol.RecordCount>0) then
|
|
begin
|
|
pol.First;
|
|
while not(pol.EOF) do
|
|
begin
|
|
regCis:= VarToStr(pol.FieldValues(0));
|
|
tStr:= VarToStr(pol.FieldValues(1));
|
|
UlozChybu(Helios,'Karta nepatří výrobě nebo je blokována, nebyla importována: ' + regCis + ' - ' + tStr ,nil);
|
|
pol.Next;
|
|
end;
|
|
end;
|
|
|
|
// test v PackingListu karta je material
|
|
if not(ExpP) then
|
|
begin
|
|
sql:= 'SELECT RegCis,Popis,Mnozstvi FROM ' + tmpTab + ' WHERE UPPER(RegCis) NOT IN (SELECT UPPER(kz.RegCis) FROM ' + tblKZ + ' kz';
|
|
sql:= sql + ' INNER JOIN ' + tblSZ + ' sz ON (kz.SkupZbo=sz.SkupZbo) LEFT JOIN ' + tblSZe + ' sze';
|
|
sql:= sql + ' ON (sz.id=sze.id) WHERE sze._JeVyroba=1 AND kz.SkupZbo<>N' + QuotedStr(szNovyImportMat) + ')';
|
|
pol:= Helios.OpenSQL(sql);
|
|
if (pol.RecordCount>0) then
|
|
begin
|
|
pol.First;
|
|
while not(pol.EOF) do
|
|
begin
|
|
regCis:= VarToStr(pol.FieldValues(0));
|
|
tStr:= VarToStr(pol.FieldValues(1));
|
|
tStr:= tStr + ' (množ. ' + VarToStr(pol.FieldValues(2)) + ' )';
|
|
UlozChybu(Helios,'Pozor, karta nebyla importována, není materiál (skupina MAT): ' + regCis + ' - ' + tStr ,nil);
|
|
pol.Next;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
// kontrola na existenci karet
|
|
sql:= 'SELECT RegCis, Popis FROM ' + tmpTab + ' WHERE UPPER(RegCis) NOT IN (SELECT UPPER(kz.RegCis) FROM ' + tblKZ + ' kz';
|
|
sql:= sql + ' INNER JOIN ' + tblSZ + ' sz ON (kz.SkupZbo=sz.SkupZbo) LEFT JOIN ' + tblSZe + ' sze';
|
|
//sql:= sql + ' ON (sz.id=sze.id) WHERE sze._JeVyroba=1)';
|
|
sql:= sql + ' ON (sz.id=sze.id) WHERE sze._JeVyroba=1 '; // upraveno 7.9.2018
|
|
// if ExpP = true then sql := sql + ' AND _JeProImportObjednavkyZItalie = 1'; // přidáno 7.9.2018
|
|
if ExpP = true then sql := sql + ' AND sz.SkupZbo LIKE N' + QuotedStr('V%'); // přidáno 7.9.2018 verze skupina na V
|
|
sql := sql + ')'; // přidáno 7.9.2018
|
|
//Helios.Info(sql);
|
|
pol:= Helios.OpenSQL(sql);
|
|
//helios.Info((pol.RecordCount.ToString));
|
|
if (pol.RecordCount>0) then
|
|
begin
|
|
sql:= '';
|
|
pol.First;
|
|
while not(pol.EOF) do
|
|
begin
|
|
newKarta:= false;
|
|
regCis:= VarToStr(pol.FieldValues(0));
|
|
sql:= 'SELECT id FROM ' + tblKZ + ' WHERE UPPER(SkupZbo)=N';
|
|
if ExpP then
|
|
tStr:= szNovyImportExpP
|
|
else
|
|
tStr:= 'MAT';
|
|
sql:= sql + QuotedStr(tStr);
|
|
sql:= sql + ' AND UPPER(RegCis)=N' + QuotedStr(regCis);
|
|
with Helios.OpenSQL(sql) do
|
|
if (RecordCount=0) then
|
|
begin
|
|
sql:= 'INSERT ' + tblKZ + ' (SkupZbo, RegCis, Nazev2, DruhSkladu, MJEvidence, Material, Dilec) VALUES (N' + QuotedStr(tStr);
|
|
sql:= sql + ',N' + QuotedStr(regCis) + ',N' + QuotedStr(VarToStr(pol.FieldValues(1)));
|
|
sql:= sql + ',1,N' + QuotedStr('ks') + ',';
|
|
if ExpP then
|
|
sql:= sql + '0,1'
|
|
else
|
|
sql:= sql + '1,0';
|
|
sql:= sql + ')' + CRLF + 'SELECT SCOPE_IDENTITY()';
|
|
// Helios.Info(sql + CRLF + tstr);
|
|
try
|
|
if (tStr<>szNovyImportExpP) and (tStr<>szNovyImportMat) then
|
|
with Helios.OpenSQL(sql) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
tStr:= VarToStr(FieldValues(0));
|
|
Helios.ExecSQL('UPDATE ' + tblKZ + ' SET Blokovano=1 WHERE id=' + tStr);
|
|
UlozChybu(Helios,'Nová karta (bude blokovaná): ' + tStr + '-' + regCis ,nil);
|
|
newKarta:= true;
|
|
end;
|
|
except on E:Exception do
|
|
UlozChybu(Helios,'Nelze založit novou kartu ' + regCis + ' : SQL ' + sql, E);
|
|
end;
|
|
end;
|
|
pol.Next;
|
|
end;
|
|
end;
|
|
|
|
{
|
|
tStr:= '';
|
|
sql:= 'SELECT RegCis FROM ' + tblKZ + ' WHERE Blokovano=1 AND SkupZbo=N' + QuotedStr('MAT');
|
|
sql:= sql + ' AND UPPER(RegCis) IN (SELECT UPPER(RegCis) FROM ' + tmpTab + ')';
|
|
with Helios.OpenSQL(sql) do
|
|
if RecordCount>0 then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
UlozChybu(Helios,'Karta je označena jako ARCHIVNÍ a NEBUDE importována: ' + VarHodnota(FieldValues(0),''), nil);;
|
|
Next;
|
|
end;
|
|
end;
|
|
}
|
|
|
|
// pokud je to DL, aktualizuj hmotnosti
|
|
if not(ExpP) then
|
|
begin
|
|
sql:= 'UPDATE kz SET kz.Hmotnost=ROUND((t.hmotJg/1000),6) FROM ' + tblKZ + ' kz INNER JOIN ' + tmpTab + ' t ON (t.regCis=kz.RegCis)';
|
|
sql:= sql + ' INNER JOIN ' + tblSZ + ' sz ON (sz.SkupZbo=kz.SkupZbo) INNER JOIN ' + tblSZe;
|
|
sql:= sql + ' sze ON (sze.Id=sz.Id) WHERE sze._JeVyroba=1';
|
|
Helios.ExecSQL(sql);
|
|
end;
|
|
|
|
|
|
sql:= 'SELECT * FROM ' + tmpTab; // + ' WHERE RegCis NOT IN (SELECT RegCis FROM ' + tblKZ + ' WHERE Blokovano=1)';
|
|
// sql:= sql + ' AND cObj=N' + QuotedStr(cObj);
|
|
sql:= sql + ' ORDER BY pozice';
|
|
pol:= Helios.OpenSQL(sql);
|
|
if (pol.RecordCount>0) then
|
|
begin
|
|
ReseedTable(Helios,tblDZ);
|
|
ReseedTable(Helios,tblPZ);
|
|
ReseedTable(Helios,tblSS);
|
|
// ReseedTable(Helios,tblNC);
|
|
ReseedTable(Helios,tblJC);
|
|
|
|
{
|
|
if idDZx=0 then
|
|
begin
|
|
idDZshift:= 0; // posunuti cisla brane z nastaveni TabDruhDokZboDef
|
|
sql:= 'SELECT dzd.PosledniPC FROM [dbo].[TabDruhDokZboDef] dzd INNER JOIN [dbo].[TabDruhDokZbo] dz';
|
|
sql:= sql + ' ON (dz.ID=dzd.idDruhDZ) WHERE dzd.IdObdobi=' + IntToStr(aktObd);
|
|
sql:= sql + ' AND dz.DruhPohybuZbo=9 AND dz.RadaDokladu=N' + QuotedStr(rDokl);
|
|
|
|
with Helios.OpenSQL(sql) do
|
|
if not VarIsNull(FieldValues(0)) then
|
|
if not TryStrToInt(VarToStr(FieldValues(0)),idDZshift) then
|
|
idDZshift:= 0;
|
|
|
|
wCond:= 'Obdobi=' + IntToStr(aktObd) + ' AND IdSklad=N' + QuotedStr(skladEP);
|
|
wCond:= wCond + ' AND DruhPohybuZbo=9 AND RadaDokladu=N' + QuotedStr(rDokl);
|
|
sql:= 'EXEC dbo.hp_NajdiPrvniVolny N' + QuotedStr(tblDZ) + ',N' + QuotedStr('PoradoveCislo');
|
|
sql:= sql + ',' + IntToStr(idDZshift) + ',99999999,N' + QuotedStr(wCond) + ',0,1';
|
|
|
|
idDZ:= 0;
|
|
with Helios.OpenSQL(sql) do
|
|
if not VarIsNull(FieldValues(0)) then
|
|
if not TryStrToInt(VarToStr(FieldValues(0)),idDZ) then
|
|
idDZ:= 0;
|
|
if (idDZ=0) or (idDZ=idDZshift) then
|
|
idDZ:= idDZshift + 1;
|
|
end;
|
|
}
|
|
cisDZ:= IntToStr(idDZ);
|
|
|
|
mena:= UpperCase(mena);
|
|
if (idDZx=0) then
|
|
begin
|
|
sql:= 'DECLARE @Ident INT'+ CRLF + 'EXEC dbo.hp_InsertHlavickyOZ @Ident OUT,@Sklad=N';
|
|
sql:= sql + QuotedStr(skladEP)+',@DruhPohybu=9,@RadaDokladu=N' + QuotedStr(rDokl)+',@Insert=1,';
|
|
sql:= sql + '@PC=null,@Mena=N' + QuotedStr(mena) + ',@CisloOrg=';
|
|
// sql:= sql + '@PC=' + cisDZ + ',@Mena=N' + QuotedStr(mena) + ',@CisloOrg=';
|
|
sql:= sql + cOrg + ',@DatumPorizeni=NULL' + CRLF + 'SELECT @Ident';
|
|
|
|
idDZ:= 0;
|
|
try
|
|
with Helios.OpenSQL(sql) do
|
|
if (RecordCount>0) then
|
|
if not VarIsNull(FieldValues(0)) then
|
|
idDZ:= StrToInt(VarToStr(FieldValues(0))); // zjisti ID vytvorene prijemky
|
|
except on E:Exception
|
|
do Helios.Error(#1'Nelze uložit hlavičku Exp.příkazu (objednávky) !'#1 + CRLF + E.Message + CRLF + sql);
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
idDZ:= idDZx;
|
|
cisDZ:= IntToStr(idDZ);
|
|
end;
|
|
// pokud je vytvorena hlavicka dokladu
|
|
if (idDZ>0) then
|
|
begin
|
|
// zmen pripadnou vstupni cenu
|
|
kurz:= 1;
|
|
with Helios.OpenSQL('SELECT Kurz FROM ' + tblDZ + ' WHERE id=' + IntToStr(idDZ)) do
|
|
kurz:= StrToFloat(VarToStr(FieldValues(0)));
|
|
{
|
|
if (mena<>'CZK') then
|
|
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET VstupniCena=4 WHERE id=' + IntToStr(idDZ));
|
|
|
|
// uprav defaultni DPH na 0 (podle platnosti v danem obdobi)
|
|
sql:= 'SELECT d.Sazba FROM ' + tblDPHDef + ' def INNER JOIN ' + tblDPH + ' d ON (def.IdDPH=d.id AND d.Sazba=0)';
|
|
sql:= sql + ' WHERE def.IdObdobi=' + IntToStR(aktObd) + ' AND Blokovano=0 AND Platnost=0';
|
|
with Helios.OpenSQL(sql) do
|
|
if RecordCount>0 then
|
|
begin
|
|
tStr:= VarToStr(FieldValues(0));
|
|
if tStr='' then
|
|
tStr:= '0';
|
|
sql:= 'UPDATE ' + tblDZ + ' SET SazbaDPH=' + StringReplace(tStr,',','.',[rfReplaceAll]);
|
|
sql:= sql + ' WHERE id=' + IntToStr(idDZ);
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
except on E:Exception
|
|
do Helios.Error('U dokladu (ExpP) nelze změnit Sazbu DPH.');
|
|
end;
|
|
end;
|
|
}
|
|
|
|
// import polozek na doklad
|
|
pol.First;
|
|
while not(pol.EOF) do
|
|
begin
|
|
idKZ:= 0;
|
|
tStr:= '';
|
|
boxik:= '';
|
|
regCis:= VarToStr(pol.FieldByNameValues('regCis'));
|
|
sql:= 'SELECT kz.id, sz.SkupZbo, kz.RegCis, kz.Nazev1, kz.SKP, kz.MJEvidence, kz.SazbaDPHVstup, ';
|
|
sql:= sql + 'kz.CelniNomenklatura, kze._UmisteniVyroba, kze._UmisteniPrijem FROM ' + tblKZ + ' kz INNER JOIN ';
|
|
sql:= sql + tblSZ + ' sz ON (kz.SkupZbo=sz.SkupZbo) LEFT JOIN ' + tblSZe + ' sze ON (sz.id=sze.id)';
|
|
sql:= sql + ' LEFT JOIN ' + tblKZe + ' kze ON (kz.id=kze.id)' ;
|
|
sql:= sql + ' WHERE kz.Blokovano=0 AND kz.RegCis=N' + QuotedStr(regCis) + ' AND sze._JeVyroba=1';
|
|
// if (ExpP = True) then sql := sql + ' AND sze._JeProImportObjednavkyZItalie=1'; // přidáno 7.9.2018
|
|
if (ExpP = True) then sql := sql + ' AND sz.SkupZbo LIKE N' + QuotedStr('V%'); // přidáno 7.9.2018
|
|
|
|
szPodm:= ' AND sz.SkupZbo NOT LIKE N' + QuotedStr('%00');
|
|
with Helios.OpenSQL(sql + szPodm) do
|
|
if (RecordCount>0) then // regulerni karta
|
|
idKZ:= StrToInt(VarToStr(FieldValues(0)));
|
|
|
|
if (idKZ=0) then
|
|
with Helios.OpenSQL(sql) do
|
|
if (RecordCount>0) then
|
|
idKZ:= StrToInt(VarToStr(FieldValues(0)));
|
|
// helios.Info((idkz).ToString);
|
|
if (idKZ>0) then
|
|
with Helios.OpenSQL(sql) do
|
|
begin
|
|
// test na existenci Kusovnikovych vazev a Technologickych postupu
|
|
{
|
|
sql:= 'SELECT id FROM ' + tblKZ + ' WHERE Material=1 AND Id=' + IntToStr(idKZ) + ' UNION ALL ';
|
|
sql:= sql + 'SELECT id FROM ' + tblKVaz + ' WHERE vyssi=' + IntToStr(idKZ);
|
|
with Helios.OpenSQL(sql) do
|
|
if (RecordCount>1) then
|
|
UlozChybu(Helios,'Pozor, karta je výrobek ale nemá definovaný kusovník (' + regCis + ')',nil);
|
|
|
|
sql:= 'SELECT id FROM ' + tblKZ + ' WHERE Material=1 AND Id=' + IntToStr(idKZ) + ' UNION ALL ';
|
|
sql:= sql + 'SELECT id FROM ' + tblPostup + ' WHERE dilec=' + IntToStr(idKZ);
|
|
with Helios.OpenSQL(sql) do
|
|
if (RecordCount>1) then
|
|
UlozChybu(Helios,'Pozor, karta je výrobek ale nemá definované tech.postupy (' + regCis + ')',nil);
|
|
}
|
|
|
|
try
|
|
qty:= StrToFloat(VarToStr(pol.FieldByNameValues('mnozstvi')));
|
|
except
|
|
qty:= 0;
|
|
end;
|
|
pozice:= StrToInt(VarToStr(pol.FieldByNameValues('pozice')));
|
|
boxik:= VarToStr(pol.FieldByNameValues('boxik'));
|
|
descript:= VarToStr(pol.FieldByNameValues('popis'));
|
|
try
|
|
per:= StrToFloat(VarToStr(pol.FieldByNameValues('per')));
|
|
except
|
|
per:= 1;
|
|
end;
|
|
if (per=0) then
|
|
per:= 1;
|
|
cena:= 0;
|
|
cena:= StrToFloat(VarToStr(pol.FieldByNameValues('cena')));
|
|
cena:= RoundToEX(cena/per,-6);
|
|
if kontrolaCen then
|
|
begin
|
|
if (mena='CZK') or (mena='') then
|
|
sql:= 'SELECT pz.JCbezDaniKC'
|
|
else
|
|
sql:= 'SELECT pz.JCbezDaniVal';
|
|
sql:= sql + ' FROM ' + tblPZ + ' pz INNER JOIN ' + tblSS + ' ss ON (pz.IDZboSklad=ss.id)';
|
|
sql:= sql + ' INNER JOIN ' + tblKZ + ' kz ON (ss.IDKmenZbozi=kz.id) WHERE ss.IDSklad=N';
|
|
sql:= sql + QuotedStr(Helios.Sklad) + ' AND pz.IDDoklad=' + IntToStr(idCen) + ' AND kz.id=' + IntToStr(idKZ);
|
|
with Helios.OpenSQL(sql) do
|
|
begin
|
|
if (RecordCount=0) then
|
|
begin
|
|
sql:= 'Položka nebyla v ceníku nalezena: ' + regCis;
|
|
if ExpP then
|
|
sql:= sql + ', pozice ' + IntToStr(pozice);
|
|
sql:= sql + ', množ. ' + FloatToStr(qty);
|
|
sql:= sql + ' (cena ' + FloatToStr(cena) + ')';
|
|
UlozChybu(Helios, sql, nil);
|
|
end;
|
|
if (RecordCount>0) then
|
|
begin
|
|
ccena:= StrToFloat(VarToStr(FieldValues(0)));
|
|
ccena:= RoundToEX(ccena, -4);
|
|
cena:= RoundToEX(cena, -4);
|
|
if (ccena<>cena) then
|
|
begin
|
|
sql:= 'Rozdílná cena položky: ' + regCis;
|
|
if ExpP then
|
|
sql:= sql + ', pozice ' + IntToStr(pozice);
|
|
sql:= sql + ', množ. ' + FloatToStr(qty);
|
|
sql:= sql + ' (cena ' + FloatToStr(cena) + ' x ceník ' + FloatToStr(ccena) + ')';
|
|
UlozChybu(Helios, sql, nil);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
datum:= StrToDate(VarToStr(pol.FieldByNameValues('datDod')));
|
|
idUmist:= 0;
|
|
if not ExpP then
|
|
begin
|
|
tStr:= VarToStr(FieldValues(7)); // celni nomenklatura
|
|
cObj:= VarToStr(pol.FieldByNameValues('cObj')); // CN ze souboru
|
|
if newKarta then
|
|
Helios.ExecSQL('UPDATE ' + tblKZ + ' SET CelniNomenklatura=N' + QuotedStr(LeftStr(cObj,8)) + ' WHERE id=' + IntToStr(idKZ))
|
|
else
|
|
if (cObj<>tStr) then
|
|
begin
|
|
Helios.ExecSQL('UPDATE ' + tblKZ + ' SET CelniNomenklatura=N' + QuotedStr(LeftStr(cObj,8)) + ' WHERE id=' + IntToStr(idKZ));
|
|
UlozChybu(Helios,'Karta má odlišnou celní nomenklaturu: ' + regCis + ' (stará ' + tStr + ' x nová ' + cObj + ')', nil);
|
|
end;
|
|
end;
|
|
|
|
sazba:= VarToStr(FieldValues(6));
|
|
if (sazba='') then
|
|
sazba:= '0';
|
|
mj:= VarToStr(FieldValues(5));
|
|
|
|
idSS:= '';
|
|
jCenaSS:= '0';
|
|
{
|
|
// kontrola existence NC
|
|
sql:= 'SELECT ';
|
|
if mena<>'CZK' then
|
|
sql:= sql + 'CenaVal1'
|
|
else
|
|
sql:= sql + 'CenaKC';
|
|
sql:= sql + ' FROM ' + tblNC + ' WHERE CenovaUroven=1 AND IdKmenZbozi=' + IntToStr(idKZ);
|
|
if mena<>'CZK' then
|
|
sql:= sql + ' AND UPPER(Mena1)=N' + QuotedStr(mena);
|
|
|
|
Clipboard.AsText:= sql;
|
|
ShowMessage('SQL: ' + sql);
|
|
|
|
with Helios.OpenSQL(sql) do
|
|
if RecordCount>0 then
|
|
jCenaSS:= VarToStr(FieldValues(0)); // nabidkova cena v dane mene
|
|
}
|
|
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblSS + ' WHERE IDSklad=N' + QuotedStr(skladEP) + ' AND IDKmenZbozi=' + IntToStr(idKZ)) do
|
|
if (RecordCount>0) then
|
|
idSS:= VarToStr(FieldValues(0));
|
|
if (idSS='') then
|
|
begin
|
|
sql:= 'INSERT ' + tblSS + ' (IDKmenZbozi,IDSklad) VALUES (' + IntToStr(idKZ) + ',N' + QuotedStr(skladEP) + ')';
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
except on E:Exception do
|
|
UlozChybu(Helios,'Chyba ins StavSkl pol: ' + regCis + ' : SQL ' + sql,E);
|
|
end;
|
|
with Helios.OpenSQL('SELECT SCOPE_IDENTITY()') do
|
|
if not VarIsNull(FieldValues(0)) then
|
|
idSS:= VarToStr(FieldValues(0));
|
|
end;
|
|
if (idSS<>'') then
|
|
begin
|
|
sql:= 'SELECT id FROM ' + tblPZ + ' WHERE IdZboSklad=' + idSS + ' AND DruhPohybuZbo<5';
|
|
with Helios.OpenSQL(sql) do
|
|
if (RecordCount=0) then
|
|
UlozChybu(Helios,'Položka ' + regCis + ' nemá žádný minulý pohyb na skladě, zkontrolujte hmotnost/celní nomenklaturu...', nil);
|
|
|
|
sql:= 'DECLARE @Ident INT' + CRLF + 'EXEC dbo.hp_InsertPolozkyOZ @Ident OUT,@IDDoklad=';
|
|
sql:= sql + IntToStr(idDZ) + ',@DruhPohybu=';
|
|
if ExpP then
|
|
sql:= sql + '9'
|
|
else
|
|
sql:= sql + '0';
|
|
sql:= sql + ',@CisloOrg=' + cOrg + ',@IDZboSklad=' + idSS + ',@SazbaDPH=' + sazba + ',@Mnozstvi=';
|
|
sql:= sql + StringReplace(FloatToStr(qty),',','.',[rfReplaceAll]) + ',@MJ=N' + QuotedStr(mj) + ',@JCbezDaniKC=';
|
|
sql:= sql + StringReplace(FloatToStr(cena),',','.',[rfReplaceAll]) + ',@DatPorizeni=NULL';
|
|
if mena='CZK' then
|
|
sql:= sql + ',@VstupniCena=0,@Kurz=1'
|
|
else
|
|
sql:= sql + ',@VstupniCena=4,@Kurz=' + StringReplace(FloatToStr(kurz),',','.',[rfReplaceAll]);
|
|
sql:= sql + ',@PovolitDuplicitu=1,@SazbaSD=0,@ZakazanoDPH=0,@KurzEuro=0,@Mena=N' + QuotedStr(mena);
|
|
sql:= sql + ',@PovolitBlokovane=1,@JednotkaMeny=1,@Selectem=0' + CRLF + 'SELECT @Ident';
|
|
idPZ:= 0;
|
|
try
|
|
with Helios.OpenSQL(sql) do
|
|
if (RecordCount>0) then
|
|
if not VarIsNull(FieldValues(0)) then
|
|
if not TryStrToInt(VarToStr(FieldValues(0)),idPZ) then
|
|
idPZ:= 0;
|
|
except on E:Exception do
|
|
UlozChybu(Helios,'Nelze uložit položku do dokladu ! SQL ' + sql, E);
|
|
end;
|
|
if (idPZ>0) then
|
|
begin
|
|
Helios.ExecSQL('UPDATE ' + tblPZ + ' SET BlokovaniEditoru=NULL WHERE id=' + IntToStr(idPZ));
|
|
sql:= '';
|
|
|
|
if (mena<>'CZK') then
|
|
begin
|
|
sql:= 'UPDATE ' + tblPZ + ' SET JCbezDaniKc=' + StringReplace(FloatToStr(cena*kurz),',','.',[rfReplaceAll]);
|
|
sql:= sql + ',JCbezDaniKcPoS=' + StringReplace(FloatToStr(cena*kurz),',','.',[rfReplaceAll]);
|
|
sql:= sql + ',CCbezDaniKc=' + StringReplace(FloatToStr(qty*cena*kurz),',','.',[rfReplaceAll]);
|
|
sql:= sql + ',JCbezDaniValPoS=' + StringReplace(FloatToStr(cena),',','.',[rfReplaceAll]);
|
|
sql:= sql + ',JCbezDaniVal=' + StringReplace(FloatToStr(cena),',','.',[rfReplaceAll]);
|
|
sql:= sql + ',CCbezDaniVal=' + StringReplace(FloatToStr(qty*cena),',','.',[rfReplaceAll]);
|
|
sql:= sql + ' WHERE id=' + IntToStr(idPZ) + CRLF;
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
except on E:Exception do
|
|
UlozChybu(Helios,'Nelze upravit cenu položky ExpPř !' + CRLF + sql, E);
|
|
end;
|
|
end;
|
|
|
|
if (cena<>0) and not ExpP then
|
|
begin
|
|
sql:= 'DECLARE @idZ INT' + CRLF + 'SET @idZ=(SELECT TOP(1) id FROM dbo.TabCZmeny WHERE Rada=N' + QuotedStr('01') + ' AND datum<=';
|
|
sql:= sql + 'CONVERT(datetime,N' + QuotedStr(DateToStr(datum)) + ',104) ORDER BY datum DESC)' + CRLF;
|
|
sql:= sql + 'SELECT id,Cena FROM ' + tblKaCe + ' WHERE ZmenaOd=@idZ AND IdKmenZbozi=' + IntToStr(idKZ);
|
|
with Helios.OpenSQL(sql) do
|
|
begin
|
|
if (RecordCount>0) then
|
|
begin
|
|
// if StrToFloat(VarToStr(FieldValues(1)))=0 then
|
|
try
|
|
Helios.ExecSQL('UPDATE ' + tblKaCe + ' SET Cena=' + StringReplace(FloatToStr(cena),',','.',[rfReplaceAll]) + ' WHERE id=' + VarToStr(FieldValues(0)));
|
|
except on E:Exception do
|
|
UlozChybu(Helios,'Nelze aktualizovat kalkulační cenu ! SQL: ' + sql, E);
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
sql:= 'DECLARE @idZ INT' + CRLF + 'SET @idZ=(SELECT TOP(1) id FROM dbo.TabCZmeny WHERE Rada=N' + QuotedStr('01') + ' AND datum<=';
|
|
sql:= sql + 'CONVERT(datetime,N' + QuotedStr(DateToStr(datum)) + ',104) ORDER BY datum DESC)' + CRLF;
|
|
sql:= sql + 'IF @idZ IS NOT NULL INSERT ' + tblKaCe + ' (IdKmenZbozi,ZmenaOd,Cena) VALUES (' + IntToStr(idKZ) + ',@idZ,';
|
|
sql:= sql + StringReplace(FloatToStr(cena),',','.',[rfReplaceAll]) + ')';
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
except on E:Exception do
|
|
UlozChybu(Helios,'Nelze uložit kalkulační cenu ! SQL: ' + sql, E);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
sql:= 'UPDATE ' + tblPZ + ' SET ';
|
|
if ExpP then
|
|
begin // objednavka = ExpPr
|
|
mj:= IntToStr(pozice);
|
|
if (Length(mj)>4) then
|
|
mj:= ReverseString(LeftStr(ReverseString(mj),4));
|
|
mj:= StringOfChar('0',4-Length(mj))+mj;
|
|
sql:= sql + 'NazevSozNa1=N' + QuotedStr(cObj);
|
|
sql:= sql + ',NazevSozNa2=N' + QuotedStr(mj) + ',NazevSozNa3=N' + QuotedStr(cObj+mj);
|
|
sql:= sql + ',PozadDatDod=CONVERT(datetime,' + QuotedStr(DateToStr(datum)) + ',104)';
|
|
end
|
|
else
|
|
begin // packinglist = prijemka
|
|
tStr:= '';
|
|
sql:= sql + 'NazevSozNa1=N' + QuotedStr(boxik); // descript
|
|
if not VarIsNull(FieldValues(8)) then // umisteni na vyrobu
|
|
tStr:= VarToStr(FieldValues(8));
|
|
if (tStr='') then
|
|
if not VarIsNull(FieldValues(9)) then // umisteni
|
|
tStr:= VarToStr(FieldValues(9));
|
|
if (tStr<>'') then
|
|
begin
|
|
tStr:= 'SELECT id FROM ' + tblUmist + ' WHERE IDSklad=N' + QuotedStr(Helios.Sklad) + ' AND Kod=N' + QuotedStr(tStr);
|
|
with Helios.OpenSQL(tStr) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
idUmist:= StrToInt(VarToStr(FieldValues(0)));
|
|
tStr:= 'SELECT id FROM ' + tblStavUm + ' WHERE IDStav=' + idSS + ' AND IDUmisteni=' + IntToStr(idUmist);
|
|
with Helios.OpenSQL(tStr) do
|
|
if (RecordCount>0) then
|
|
sql:= sql + ',IDUmisteni=' + VarToStr(FieldValues(0));
|
|
end;
|
|
end;
|
|
end;
|
|
sql:= sql + ',Popis4=N' + QuotedStr(descript);
|
|
sql:= sql + ' WHERE id=' + IntToStr(idPZ);
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
except on E:Exception do
|
|
UlozChybu(Helios,'Nelze aktualizovat doplňující údaje na položce dokladu ! SQL: ' + sql, E);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
pol.Next;
|
|
end;
|
|
end;
|
|
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=null WHERE id=' + IntToStr(idDZ));
|
|
Helios.ExecSQL('EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=' + IntToStr(idDZ) + ',@AktualizaceSlev=1');
|
|
{
|
|
sql:= 'SELECT kz.id FROM ' + tblPZ + ' WHERE kz.Blokovano=1';
|
|
with Helios.OpenSQL(sql) do
|
|
if RecordCount>0 then
|
|
Helios.OpenBrowse(bidKZ,'TabKmenZbozi.Blokovano=1');
|
|
}
|
|
end;
|
|
Helios.Refresh(True);
|
|
try
|
|
Helios.ExecSQL('TRUNCATE TABLE ' + tmpTab);
|
|
except
|
|
end;
|
|
Helios.Info('Import souboru '#1 + fName + #1' byl ukoncen.');
|
|
|
|
if not ExpP then
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblKZ + ' WHERE Blokovano=0 AND SkupZbo=N' + QuotedStr(szNovyImportMat)) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
Helios.Error(#1'Existují nové materiály, je třeba je přeřadit do skupiny MAT,' + CRLF + 'upravit detaily a zaměnit na dokladech'#1);
|
|
Helios.OpenBrowse(2,'TabKmenZbozi.Blokovano=0 AND TabKmenZbozi.SkupZbo=N' + QuotedStr(szNovyImportMat));
|
|
end;
|
|
end;
|
|
Screen.Cursor:= crDefault;
|
|
{
|
|
try
|
|
with Helios.OpenSQL('SELECT Poznamka FROM #TabExtKom') do
|
|
if (RecordCount>0) then
|
|
Helios.OpenBrowse(541,'');
|
|
finally
|
|
end;
|
|
}
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.HromadneOdvedeniEvidKoop(const Helios: IHelios);
|
|
begin
|
|
with Helios.OpenSQL('SELECT id FROM dbo._TabPrijemNadvyroby WHERE Zpracovano=0') do
|
|
if (RecordCount>0) then
|
|
begin
|
|
|
|
end
|
|
else
|
|
Helios.Error(#1'V importní tabulce (_TabPrijemNadvyroby) nejsou žádné záznamy.'#1);
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure TplgLOVATO.ImportDL_CHD(const Helios: IHelios);
|
|
var lSQL, cObj, regC, mnoz, cisDL, dat, dokl, altP, mnCena, cOrgCHD, idKoop: string;
|
|
idx, poz, idEvid, idKO, idPKO, idVPr, idKZ, idDZ, idDZp, idSS: integer;
|
|
xls: TXLSReadWriteII5;
|
|
sheet: TXLSWorksheet;
|
|
begin
|
|
lSQL:= 'IF OBJECT_ID(N' + QuotedStr('tempdb..#TabExtKom') + ',N' + QuotedStr('U') + ') IS NOT NULL';
|
|
lSQL:= lSQL + CRLF + 'DROP TABLE #TabExtKom' + CRLF + 'CREATE TABLE #TabExtKom(Poznamka NVARCHAR(255) NOT NULL)' + CRLF;
|
|
lSQL:= 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)';
|
|
Helios.ExecSQL(lSQL);
|
|
if OtevriSouborXLS(fName,'') then
|
|
begin
|
|
xls:= TXLSReadWriteII5.Create(nil);
|
|
try
|
|
xls.LoadFromFile(fName);
|
|
|
|
// CHD-SPEKTRUM s.r.o.
|
|
cOrgCHD:= '1118';
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblCOrg + ' WHERE NadrizenaOrg IS NULL AND DIC=N' + QuotedStr('CZ26084155')) do
|
|
if (RecordCount=1) then
|
|
cOrgCHD:= VarToStr(FieldValues(0));
|
|
idKoop:= '7';
|
|
with Helios.OpenSQL('SELECT id FROM dbo.TabRadyCKoop WHERE LOWER(LTRIM(RTRIM(nazev)))=N' + QuotedStr('spektrum')) do
|
|
if (RecordCount=1) then
|
|
idKoop:= VarToStr(FieldValues(0));
|
|
|
|
dat:= InputBox('Datum evidence','Datum: ', DateToStr(Now));
|
|
sheet:= xls.Sheets[0];
|
|
idx:= 1;
|
|
idDZ:= 0;
|
|
idDZp:= 0;
|
|
regC:= sheet.AsString[2,idx];
|
|
while (regC<>'') do
|
|
begin
|
|
cObj:= '';
|
|
poz:= 0;
|
|
regC:= '';
|
|
mnoz:= '0';
|
|
cisDL:= '';
|
|
if (sheet.CellType[0,idx]<>xctNone) and (sheet.CellType[0,idx]<>xctBlank) then
|
|
cObj:= Trim(sheet.AsString[0,idx]);
|
|
if (sheet.CellType[1,idx]<>xctNone) and (sheet.CellType[1,idx]<>xctBlank) then
|
|
poz:= sheet.AsInteger[1,idx];
|
|
if (sheet.CellType[2,idx]<>xctNone) and (sheet.CellType[2,idx]<>xctBlank) then
|
|
regC:= Trim(sheet.AsString[2,idx]);
|
|
if (sheet.CellType[3,idx]<>xctNone) and (sheet.CellType[3,idx]<>xctBlank) then
|
|
mnoz:= Trim(sheet.AsString[3,idx]);
|
|
if (sheet.CellType[4,idx]<>xctNone) and (sheet.CellType[4,idx]<>xctBlank) then
|
|
cisDL:= Trim(sheet.AsString[4,idx]);
|
|
idKO:= 0;
|
|
idPKO:= 0;
|
|
idVPr:= 0;
|
|
idKZ:= 0;
|
|
if (cObj<>'') then
|
|
begin
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblKObj + ' WHERE REPLACE(Objednavka,''/'','''')=N' + QuotedStr(cObj)) do
|
|
if (RecordCount=1) then
|
|
idKO:= StrToInt(VarToStr(FieldValues(0)));
|
|
if (idKO>0) and (poz>0) then
|
|
with Helios.OpenSQL('SELECT Id, IdPrikaz, DokladPrPostup, AltPrPostup, ROUND(Cena/Kusy,3) FROM ' + tblPKObj + ' WHERE IDObjednavky=' + IntToStr(idKO) + ' AND Polozka=' + IntToStr(poz)) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
idPKO:= StrToInt(VarToStr(FieldValues(0)));
|
|
idVPr:= StrToInt(VarToStr(FieldValues(1)));
|
|
dokl:= VarToStr(FieldValues(2));
|
|
altP:= VarToStr(FieldValues(3));
|
|
mnCena:= VarToStr(FieldValues(4));
|
|
end;
|
|
if (idKO>0) and (idPKO>0) and (idVPr>0) then
|
|
begin
|
|
idEvid:= 0;
|
|
with Helios.OpenSQL('SELECT IdTabKmen FROM ' + tblPrikaz + ' WHERE Id=' + IntToStr(idVPr)) do
|
|
idKZ:= StrToInt(VarToStr(FieldValues(0)));
|
|
|
|
lSQL:= 'DECLARE @cc NUMERIC(19,6), @idEvid INT, @dt DATETIME' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(dat) + ',104)' + CRLF;
|
|
lSQL:= lSQL + 'SET @cc=' + StringReplace(mnCena,',','.',[rfReplaceAll]) + CRLF;
|
|
lSQL:= lSQL + 'EXEC @idEvid=dbo.hp_EvidenceOperace @Datum=@dt,@Platit_TBC=0,@Platit_TEC=0,@Kusy_odv=';
|
|
lSQL:= lSQL + StringReplace(mnoz,',','.',[rfReplaceAll]) + ',@Operace_odv=' + StringReplace(mnoz,',','.',[rfReplaceAll]);
|
|
lSQL:= lSQL + ',@Mzda=@cc,@Stav=1,@IDPolKoopObj=' + IntToStr(idPKO) + CRLF + 'SELECT @idEvid';
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
idEvid:= StrToInt(VarToStr(FieldValues(0)));
|
|
Helios.ExecSQL('UPDATE ' + tblMzdZm + ' SET BlokovaniEditoru=NULL WHERE Id=' + IntToStr(idEvid));
|
|
lSQL:= 'UPDATE ' + tblMzdZmE + ' SET _DodaciListKooperanta=N' + QuotedStr(cisDL) + ' WHERE id=' + IntToStr(idEvid) + CRLF;
|
|
lSQL:= lSQL + 'IF (@@ROWCOUNT=0) INSERT ' + tblMzdZmE + ' (ID, _DodaciListKooperanta) VALUES (' + IntToStr(idEvid) + ',N' + QuotedStr(cisDL) + ')';
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
end;
|
|
end
|
|
else
|
|
if (regC<>'') then
|
|
begin
|
|
if (idDZ=0) then
|
|
begin
|
|
lSQL:= 'DECLARE @dt DATETIME, @idDZ INT' + CRLF + 'SET @dt=GETDATE()' + CRLF;
|
|
lSQL:= lSQL + 'EXEC dbo.hp_InsertHlavickyOZ @idDZ OUT,@Sklad=N' + QuotedStr(sklCHD) + ',@Mena=N' + QuotedStr('CZK');
|
|
lSQL:= lSQL + ',@DruhPohybu=4,@RadaDokladu=N' + QuotedStr('450') + ',@Insert=1,@CisloOrg=0,@PC=NULL';
|
|
lSQL:= lSQL + ',@DatumPorizeni=@dt' + CRLF + 'SELECT @idDZ';
|
|
try
|
|
with Helios.OpenSQL(lSQL) do
|
|
idDZ:= StrToInt(VarToStr(FieldValues(0)));
|
|
except on E:Exception do
|
|
begin
|
|
Clipboard.AsText:= lSQL;
|
|
Helios.Error(#1'Nelze uložit hlavičku výdejky/převodky, vratka musí být provedena ručně.'#1 + CRLF + E.Message);
|
|
end;
|
|
end;
|
|
end;
|
|
if (idDZ>0) then
|
|
begin
|
|
lSQL:= 'SELECT ss.id FROM ' + tblSS + ' ss INNER JOIN ' + tblKZ + ' kz ON (ss.IdKmenZbozi=kz.Id AND ss.IDSklad=N' + QuotedStr(sklCHD) + ')';
|
|
lSQL:= lSQL + ' WHERE kz.SkupZbo=N' + QuotedStr('MAT') + ' AND kz.RegCis=N' + QuotedStr(regC);
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
lSQL:= 'DECLARE @idOut INT, @ss INT, @m NVARCHAR(3), @k NUMERIC(12,4), @jm INT, @kEUR NUMERIC(15,4), @sSD NUMERIC(5,2), @sDPH NUMERIC(5,2),';
|
|
lSQL:= lSQL + '@mn NUMERIC(19,6), @d DATETIME, @pdp BIT, @typSaz TINYINT, @idKZ INT' + CRLF + 'SELECT @jm=1, @sSD=0' + CRLF;
|
|
lSQL:= lSQL + 'SELECT @mn=' + StringReplace(mnoz,',','.',[rfReplaceAll]) + CRLF;
|
|
lSQL:= lSQL + 'SELECT @ss=ss.Id, @idKZ=kz.Id FROM ' + tblKZ + ' kz INNER JOIN ' + tblSS + ' ss ON (ss.IdKmenZbozi=kz.Id AND ss.IdSklad=N' + QuotedStr(sklCHD);
|
|
lSQL:= lSQL + ') WHERE kz.SkupZbo=N' + QuotedStr('MAT') + ' AND kz.RegCis=N' + QuotedStr(regC) + CRLF;
|
|
lSQL:= lSQL + 'EXEC dbo.hp_GetSazbuDPH @sDPH OUT, @typSaz OUT, @pdp OUT, @DruhPohybu=4, @IDKmenZbozi=@idKZ' + CRLF;
|
|
lSQL:= lSQL + 'SELECT @m=Mena, @k=Kurz, @kEUR=KurzEuro FROM ' + tblDZ + ' WHERE id=' + IntToStr(idDZ) + CRLF;
|
|
lSQL:= lSQL + 'EXEC dbo.hp_InsertPolozkyOZ @idOut OUT,@IDDoklad=' + IntToStr(idDZ) + ',@DruhPohybu=4,@CisloOrg=26,@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';
|
|
try
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
lSQL:= 'DECLARE @ss INT; SELECT @ss=ss.Id FROM ' + tblKZ + ' kz INNER JOIN ' + tblSS + ' ss ON (ss.IdKmenZbozi=kz.Id AND ss.IdSklad=N' + QuotedStr(sklCHD);
|
|
lSQL:= lSQL + ') WHERE kz.SkupZbo=N' + QuotedStr('MAT') + ' AND kz.RegCis=N' + QuotedStr(regC) + CRLF;
|
|
lSQL:= lSQL + 'UPDATE ' + tblPZ + ' SET JCbezDaniKC=(SELECT Prumer FROM ' + tblSS + ' WHERE id=@ss) WHERE id=' + VarToStr(FieldValues(0));
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
except on E:Exception do
|
|
Helios.Error(#1 + E.Message + #1);
|
|
end;
|
|
end
|
|
else
|
|
Helios.ExecSQL('INSERT #TabExtKom (Poznamka) VALUES (' + QuotedStr('CHYBA: Karta materiálu '#1 + regC + #1' nebyla na skladě ' + sklCHD + ' nalezena, nebude zadána na výdejku/převodku.') + ')');
|
|
end;
|
|
end;
|
|
Inc(idx);
|
|
end;
|
|
if (idDZ>0) then
|
|
begin
|
|
lSQL:= 'UPDATE ' + tblDZ + ' SET BlokovaniEditoru=NULL, IdSkladPrevodu=N' + QuotedStr(sklVyr);
|
|
lSQL:= lSQL + ',TypPrevodky=N' + QuotedStr('250') + ',DruhPohybuPrevod=0,PopisDodavky=N' + QuotedStr('Zpětný převod mat.');
|
|
lSQL:= lSQL + ' WHERE DruhPohybuZbo=4 AND id=' + IntToStr(idDZ);
|
|
Helios.ExecSQL(lSQL);
|
|
|
|
{
|
|
lSQL:= 'DECLARE @dt DATETIME, @idDZp INT' + CRLF + 'SET @dt=GETDATE()' + CRLF;
|
|
lSQL:= lSQL + 'EXEC dbo.hp_InsertHlavickyOZ @idDZp OUT,@Sklad=N' + QuotedStr(sklVyr) + ',@Mena=N' + QuotedStr('CZK');
|
|
lSQL:= lSQL + ',@DruhPohybu=0,@RadaDokladu=N' + QuotedStr('250') + ',@Insert=1,@CisloOrg=26,@PC=NULL';
|
|
lSQL:= lSQL + ',@DatumPorizeni=@dt' + CRLF + 'SELECT @idDZp';
|
|
try
|
|
with Helios.OpenSQL(lSQL) do
|
|
idDZp:= StrToInt(VarToStr(FieldValues(0)));
|
|
except on E:Exception do
|
|
begin
|
|
Clipboard.AsText:= lSQL;
|
|
Helios.Error(#1'Nelze uložit hlavičku příjemky/převodky, vratka musí být provedena ručně.'#1 + CRLF + E.Message);
|
|
end;
|
|
end;
|
|
|
|
lSQL:= 'EXEC dbo.hp_generuj_navazny_doklad @IDDokladDst=' + IntToStr(idDZp) + ',@IDDokladSrc=' + IntToStr(idDZ);
|
|
lSQL:= lSQL + ',@CisloOrgCil=0,@MUcil=null,@KurzCil=1,@JednotkaMenyCil=1,@MenaCil=N' + QuotedStr('CZK');
|
|
lSQL:= lSQL + ',@Returnem=1,@KurzEuroCil=0,@CisloZakCil=null,@NOkruhCil=null,@StredNakladCil=null,@StredVynosCil=null';
|
|
lSQL:= lSQL + ',@FormaDopravyCil=null,@VozidloCil=null,@ObjednavkaCil=null,@PopisDodavkyCil=N' + QuotedStr('Zpětný převod mat.');
|
|
lSQL:= lSQL + ',@NavaznyDobropisCil=null,@ZamestnanecCil=null,@DodFakCil=null,@Nasobek=1,@SlevaCil=0';
|
|
lSQL:= lSQL + ',@VytvaretDokladovouVazbu=1,@VytvaretPolozkovouVazbu=1';
|
|
try
|
|
Helios.ExecSQL(lSQL);
|
|
lSQL:= 'UPDATE ' + tblDZ + ' SET BlokovaniEditoru=NULL WHERE DruhPohybuZbo=0 AND id=' + IntToStr(idDZp);
|
|
Helios.ExecSQL(lSQL);
|
|
except on E:Exception do
|
|
Helios.Error(#1'Chyba generování dokladového řetězu: '#1 + E.Message);
|
|
end;
|
|
}
|
|
end;
|
|
Helios.Refresh(true);
|
|
Helios.Info(#1'Import DL ukončen' + IfThen(idDZ>0,' + vygenerována výdejka/převodka CHD -> Lovato','...') +#1);
|
|
except on E:Exception do
|
|
Helios.Error(#1'Chyba: ' + #1 + E.Message);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
// vloženo při číslu palety
|
|
procedure TplgLOVATO.ImportDL(const Helios: IHelios);
|
|
var lSQL, cObj, regC, mnoz, cisDL, dat, dokl, altP, mnCena{, cOrgCHD}{, idKoop}: string;
|
|
idx, poz, idEvid, idKO, idPKO, idVPr, idKZ, idDZ, idDZp, idSS: integer;
|
|
xls: TXLSReadWriteII5;
|
|
sheet: TXLSWorksheet;
|
|
CisloPalety: String;
|
|
{ IdOrg: integer;
|
|
DIC: string; }
|
|
begin
|
|
lSQL:= 'IF OBJECT_ID(N' + QuotedStr('tempdb..#TabExtKom') + ',N' + QuotedStr('U') + ') IS NOT NULL';
|
|
lSQL:= lSQL + CRLF + 'DROP TABLE #TabExtKom' + CRLF + 'CREATE TABLE #TabExtKom(Poznamka NVARCHAR(255) NOT NULL)' + CRLF;
|
|
lSQL:= 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)';
|
|
Helios.ExecSQL(lSQL);
|
|
if OtevriSouborXLS(fName,'') then
|
|
begin
|
|
xls:= TXLSReadWriteII5.Create(nil);
|
|
try
|
|
xls.LoadFromFile(fName);
|
|
|
|
// CHD-SPEKTRUM s.r.o.
|
|
// cOrgCHD:= '1118';
|
|
{ with Helios.OpenSQL('SELECT id FROM ' + tblCOrg + ' WHERE NadrizenaOrg IS NULL AND DIC=N' + QuotedStr('CZ26084155')) do
|
|
if (RecordCount=1) then
|
|
cOrgCHD:= VarToStr(FieldValues(0)); }
|
|
{idKoop:= '7';
|
|
with Helios.OpenSQL('SELECT id FROM dbo.TabRadyCKoop WHERE LOWER(LTRIM(RTRIM(nazev)))=N' + QuotedStr('spektrum')) do
|
|
if (RecordCount=1) then
|
|
idKoop:= VarToStr(FieldValues(0)); }
|
|
|
|
dat:= InputBox('Datum evidence','Datum: ', DateToStr(Now));
|
|
sheet:= xls.Sheets[0];
|
|
idx:= 1;
|
|
idDZ:= 0;
|
|
idDZp:= 0;
|
|
regC:= sheet.AsString[2,idx];
|
|
while (regC<>'') do
|
|
begin
|
|
cObj:= '';
|
|
poz:= 0;
|
|
regC:= '';
|
|
mnoz:= '0';
|
|
cisDL:= '';
|
|
CisloPalety:='';
|
|
if (sheet.CellType[0,idx]<>xctNone) and (sheet.CellType[0,idx]<>xctBlank) then
|
|
cObj:= Trim(sheet.AsString[0,idx]);
|
|
if (sheet.CellType[1,idx]<>xctNone) and (sheet.CellType[1,idx]<>xctBlank) then
|
|
poz:= sheet.AsInteger[1,idx];
|
|
if (sheet.CellType[2,idx]<>xctNone) and (sheet.CellType[2,idx]<>xctBlank) then
|
|
regC:= Trim(sheet.AsString[2,idx]);
|
|
if (sheet.CellType[3,idx]<>xctNone) and (sheet.CellType[3,idx]<>xctBlank) then
|
|
mnoz:= Trim(sheet.AsString[3,idx]);
|
|
if (sheet.CellType[4,idx]<>xctNone) and (sheet.CellType[4,idx]<>xctBlank) then
|
|
cisDL:= Trim(sheet.AsString[4,idx]);
|
|
if (sheet.CellType[5,idx]<>xctNone) and (sheet.CellType[5,idx]<>xctBlank) then
|
|
CisloPalety:= Trim(sheet.AsString[5,idx]);
|
|
|
|
idKO:= 0;
|
|
idPKO:= 0;
|
|
idVPr:= 0;
|
|
idKZ:= 0;
|
|
if (cObj<>'') then
|
|
begin
|
|
{with Helios.OpenSQL('SELECT id FROM ' + tblCOrg + ' WHERE NadrizenaOrg IS NULL AND DIC=N' + QuotedStr(DIC)) do
|
|
if (RecordCount=1) then IdOrg:= (FieldValues(0)); } // nastavení organizace podle DIČ z Excelu, kde zatím není nebo to (DIČ a dokonce i id organizace) lze zjistit na kooperační objednávce - ale zatím to není třeba
|
|
|
|
//with Helios.OpenSQL('SELECT id, IDOraganizace, DIC FROM ' + tblKObj + ' WHERE REPLACE(Objednavka,''/'','''')=N' + QuotedStr(cObj)) do
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblKObj + ' WHERE REPLACE(Objednavka,''/'','''')=N' + QuotedStr(cObj)) do
|
|
if (RecordCount=1) then
|
|
idKO:= StrToInt(VarToStr(FieldValues(0)));
|
|
//IdOrg:= (FieldValues(1));
|
|
//DIC := (FieldValues(2));
|
|
if (idKO>0) and (poz>0) then
|
|
with Helios.OpenSQL('SELECT Id, IdPrikaz, DokladPrPostup, AltPrPostup, ROUND(Cena/Kusy,3) FROM ' + tblPKObj + ' WHERE IDObjednavky=' + IntToStr(idKO) + ' AND Polozka=' + IntToStr(poz)) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
idPKO:= StrToInt(VarToStr(FieldValues(0)));
|
|
idVPr:= StrToInt(VarToStr(FieldValues(1)));
|
|
dokl:= VarToStr(FieldValues(2));
|
|
altP:= VarToStr(FieldValues(3));
|
|
mnCena:= VarToStr(FieldValues(4));
|
|
end;
|
|
if (idKO>0) and (idPKO>0) and (idVPr>0) then
|
|
begin
|
|
idEvid:= 0;
|
|
with Helios.OpenSQL('SELECT IdTabKmen FROM ' + tblPrikaz + ' WHERE Id=' + IntToStr(idVPr)) do
|
|
idKZ:= StrToInt(VarToStr(FieldValues(0)));
|
|
|
|
lSQL:= 'DECLARE @cc NUMERIC(19,6), @idEvid INT, @dt DATETIME' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(dat) + ',104)' + CRLF;
|
|
lSQL:= lSQL + 'SET @cc=' + StringReplace(mnCena,',','.',[rfReplaceAll]) + CRLF;
|
|
lSQL:= lSQL + 'EXEC @idEvid=dbo.hp_EvidenceOperace @Datum=@dt,@Platit_TBC=0,@Platit_TEC=0,@Kusy_odv=';
|
|
lSQL:= lSQL + StringReplace(mnoz,',','.',[rfReplaceAll]) + ',@Operace_odv=' + StringReplace(mnoz,',','.',[rfReplaceAll]);
|
|
lSQL:= lSQL + ',@Mzda=@cc,@Stav=1,@IDPolKoopObj=' + IntToStr(idPKO) + CRLF + 'SELECT @idEvid';
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
idEvid:= StrToInt(VarToStr(FieldValues(0)));
|
|
Helios.ExecSQL('UPDATE ' + tblMzdZm + ' SET BlokovaniEditoru=NULL WHERE Id=' + IntToStr(idEvid));
|
|
lSQL:= 'UPDATE ' + tblMzdZmE + ' SET _DodaciListKooperanta=N' + QuotedStr(cisDL) + ' , _CisloPalety = N' + QuotedStr(CisloPalety) + ' WHERE id=' + IntToStr(idEvid) + CRLF;
|
|
lSQL:= lSQL + 'IF (@@ROWCOUNT=0) INSERT ' + tblMzdZmE + ' (ID, _DodaciListKooperanta, _CisloPalety) VALUES (' + IntToStr(idEvid) + ',N' + QuotedStr(cisDL) + ',N' + QuotedStr(CisloPalety)+ ')';
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
end;
|
|
end
|
|
;{ else
|
|
if (regC<>'') then
|
|
begin
|
|
if (idDZ=0) then
|
|
begin
|
|
lSQL:= 'DECLARE @dt DATETIME, @idDZ INT' + CRLF + 'SET @dt=GETDATE()' + CRLF;
|
|
lSQL:= lSQL + 'EXEC dbo.hp_InsertHlavickyOZ @idDZ OUT,@Sklad=N' + QuotedStr(sklCHD) + ',@Mena=N' + QuotedStr('CZK');
|
|
lSQL:= lSQL + ',@DruhPohybu=4,@RadaDokladu=N' + QuotedStr('450') + ',@Insert=1,@CisloOrg=0,@PC=NULL';
|
|
lSQL:= lSQL + ',@DatumPorizeni=@dt' + CRLF + 'SELECT @idDZ';
|
|
try
|
|
with Helios.OpenSQL(lSQL) do
|
|
idDZ:= StrToInt(VarToStr(FieldValues(0)));
|
|
except on E:Exception do
|
|
begin
|
|
Clipboard.AsText:= lSQL;
|
|
Helios.Error(#1'Nelze uložit hlavičku výdejky/převodky, vratka musí být provedena ručně.'#1 + CRLF + E.Message);
|
|
end;
|
|
end;
|
|
end;
|
|
if (idDZ>0) then
|
|
begin
|
|
lSQL:= 'SELECT ss.id FROM ' + tblSS + ' ss INNER JOIN ' + tblKZ + ' kz ON (ss.IdKmenZbozi=kz.Id AND ss.IDSklad=N' + QuotedStr(sklCHD) + ')';
|
|
lSQL:= lSQL + ' WHERE kz.SkupZbo=N' + QuotedStr('MAT') + ' AND kz.RegCis=N' + QuotedStr(regC);
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
lSQL:= 'DECLARE @idOut INT, @ss INT, @m NVARCHAR(3), @k NUMERIC(12,4), @jm INT, @kEUR NUMERIC(15,4), @sSD NUMERIC(5,2), @sDPH NUMERIC(5,2),';
|
|
lSQL:= lSQL + '@mn NUMERIC(19,6), @d DATETIME, @pdp BIT, @typSaz TINYINT, @idKZ INT' + CRLF + 'SELECT @jm=1, @sSD=0' + CRLF;
|
|
lSQL:= lSQL + 'SELECT @mn=' + StringReplace(mnoz,',','.',[rfReplaceAll]) + CRLF;
|
|
lSQL:= lSQL + 'SELECT @ss=ss.Id, @idKZ=kz.Id FROM ' + tblKZ + ' kz INNER JOIN ' + tblSS + ' ss ON (ss.IdKmenZbozi=kz.Id AND ss.IdSklad=N' + QuotedStr(sklCHD);
|
|
lSQL:= lSQL + ') WHERE kz.SkupZbo=N' + QuotedStr('MAT') + ' AND kz.RegCis=N' + QuotedStr(regC) + CRLF;
|
|
lSQL:= lSQL + 'EXEC dbo.hp_GetSazbuDPH @sDPH OUT, @typSaz OUT, @pdp OUT, @DruhPohybu=4, @IDKmenZbozi=@idKZ' + CRLF;
|
|
lSQL:= lSQL + 'SELECT @m=Mena, @k=Kurz, @kEUR=KurzEuro FROM ' + tblDZ + ' WHERE id=' + IntToStr(idDZ) + CRLF;
|
|
lSQL:= lSQL + 'EXEC dbo.hp_InsertPolozkyOZ @idOut OUT,@IDDoklad=' + IntToStr(idDZ) + ',@DruhPohybu=4,@CisloOrg=26,@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';
|
|
try
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
lSQL:= 'DECLARE @ss INT; SELECT @ss=ss.Id FROM ' + tblKZ + ' kz INNER JOIN ' + tblSS + ' ss ON (ss.IdKmenZbozi=kz.Id AND ss.IdSklad=N' + QuotedStr(sklCHD);
|
|
lSQL:= lSQL + ') WHERE kz.SkupZbo=N' + QuotedStr('MAT') + ' AND kz.RegCis=N' + QuotedStr(regC) + CRLF;
|
|
lSQL:= lSQL + 'UPDATE ' + tblPZ + ' SET JCbezDaniKC=(SELECT Prumer FROM ' + tblSS + ' WHERE id=@ss) WHERE id=' + VarToStr(FieldValues(0));
|
|
Helios.ExecSQL(lSQL);
|
|
end;
|
|
except on E:Exception do
|
|
Helios.Error(#1 + E.Message + #1);
|
|
end;
|
|
end
|
|
else
|
|
Helios.ExecSQL('INSERT #TabExtKom (Poznamka) VALUES (' + QuotedStr('CHYBA: Karta materiálu '#1 + regC + #1' nebyla na skladě ' + sklCHD + ' nalezena, nebude zadána na výdejku/převodku.') + ')');
|
|
end;
|
|
end; }
|
|
Inc(idx);
|
|
end;
|
|
|
|
// if (idDZ>0) then
|
|
// begin
|
|
// lSQL:= 'UPDATE ' + tblDZ + ' SET BlokovaniEditoru=NULL, IdSkladPrevodu=N' + QuotedStr(sklVyr);
|
|
// lSQL:= lSQL + ',TypPrevodky=N' + QuotedStr('250') + ',DruhPohybuPrevod=0,PopisDodavky=N' + QuotedStr('Zpětný převod mat.');
|
|
// lSQL:= lSQL + ' WHERE DruhPohybuZbo=4 AND id=' + IntToStr(idDZ);
|
|
// Helios.ExecSQL(lSQL);
|
|
//
|
|
//{
|
|
// lSQL:= 'DECLARE @dt DATETIME, @idDZp INT' + CRLF + 'SET @dt=GETDATE()' + CRLF;
|
|
// lSQL:= lSQL + 'EXEC dbo.hp_InsertHlavickyOZ @idDZp OUT,@Sklad=N' + QuotedStr(sklVyr) + ',@Mena=N' + QuotedStr('CZK');
|
|
// lSQL:= lSQL + ',@DruhPohybu=0,@RadaDokladu=N' + QuotedStr('250') + ',@Insert=1,@CisloOrg=26,@PC=NULL';
|
|
// lSQL:= lSQL + ',@DatumPorizeni=@dt' + CRLF + 'SELECT @idDZp';
|
|
// try
|
|
// with Helios.OpenSQL(lSQL) do
|
|
// idDZp:= StrToInt(VarToStr(FieldValues(0)));
|
|
// except on E:Exception do
|
|
// begin
|
|
// Clipboard.AsText:= lSQL;
|
|
// Helios.Error(#1'Nelze uložit hlavičku příjemky/převodky, vratka musí být provedena ručně.'#1 + CRLF + E.Message);
|
|
// end;
|
|
// end;
|
|
//
|
|
// lSQL:= 'EXEC dbo.hp_generuj_navazny_doklad @IDDokladDst=' + IntToStr(idDZp) + ',@IDDokladSrc=' + IntToStr(idDZ);
|
|
// lSQL:= lSQL + ',@CisloOrgCil=0,@MUcil=null,@KurzCil=1,@JednotkaMenyCil=1,@MenaCil=N' + QuotedStr('CZK');
|
|
// lSQL:= lSQL + ',@Returnem=1,@KurzEuroCil=0,@CisloZakCil=null,@NOkruhCil=null,@StredNakladCil=null,@StredVynosCil=null';
|
|
// lSQL:= lSQL + ',@FormaDopravyCil=null,@VozidloCil=null,@ObjednavkaCil=null,@PopisDodavkyCil=N' + QuotedStr('Zpětný převod mat.');
|
|
// lSQL:= lSQL + ',@NavaznyDobropisCil=null,@ZamestnanecCil=null,@DodFakCil=null,@Nasobek=1,@SlevaCil=0';
|
|
// lSQL:= lSQL + ',@VytvaretDokladovouVazbu=1,@VytvaretPolozkovouVazbu=1';
|
|
// try
|
|
// Helios.ExecSQL(lSQL);
|
|
// lSQL:= 'UPDATE ' + tblDZ + ' SET BlokovaniEditoru=NULL WHERE DruhPohybuZbo=0 AND id=' + IntToStr(idDZp);
|
|
// Helios.ExecSQL(lSQL);
|
|
// except on E:Exception do
|
|
// Helios.Error(#1'Chyba generování dokladového řetězu: '#1 + E.Message);
|
|
// end;
|
|
//}
|
|
// end;
|
|
Helios.Refresh(true);
|
|
// Helios.Info(#1'Import DL ukončen' + IfThen(idDZ>0,' + vygenerována výdejka/převodka CHD -> Lovato','...') +#1);
|
|
Helios.Info(#1'Import DL ukončen' +#1);
|
|
except on E:Exception do
|
|
Helios.Error(#1'Chyba: ' + #1 + E.Message);
|
|
end;
|
|
end;
|
|
end;
|
|
// konec vložení čísla palety
|
|
|
|
|
|
procedure TplgLOVATO.Run(const Helios: IHelios);
|
|
const MinVerzeHelios = $020020170001;
|
|
var lSQL, contInfo: string;
|
|
cRec, cntID, l_loop: integer;
|
|
btnRes: TModalResult;
|
|
sql, podm, dConv1,dConv2, podmDat, IDcka: string;
|
|
arrID: TArray<integer>;
|
|
typAkce: byte;
|
|
dt: TDateTime;
|
|
jeTest: boolean;
|
|
browID, idDZ, idKZ, iTmp: integer;
|
|
params, vlastTbl, sTmp: string;
|
|
// impEP : TformImportEP;
|
|
CRM_akt: TformCRM_Aktivity; // dočasně zakomentováno 26.6.2018
|
|
// fDodavky: TformDodavky;
|
|
fKmenZbozi: TformKartyZbozi;
|
|
// fVydej: TformVydejka;
|
|
fBL: TformBaliciListy;
|
|
fDPVydej: TfrmVydejDPrace;
|
|
// fPrijemNadvyroba: TformPrijemkaNadvyroba;
|
|
fOdvedBarCode: TformOdvedeniPrikazu;
|
|
fStSklHrZmen: TformStavSklHromZmeny;
|
|
fRozdelMat: TfrmRozdelMat;
|
|
fPrevPrij: TformPrevPrij;
|
|
fDemontaz: TformDemontaz;
|
|
fReklamaceMat: TformReklamaceMat;
|
|
fMatRozp: TformMaterial;
|
|
fOdvodRele: TformOdvodRele;
|
|
fKanbanBox: TformKanbanBox;
|
|
fKanbanObj: TformKanbanObj;
|
|
|
|
begin
|
|
with Helios.OpenSQL('SELECT CONVERT(nvarchar(128),CONTEXT_INFO(),2)') do
|
|
if VarIsNull(FieldValues(0)) then
|
|
contInfo:= 'NULL'
|
|
else
|
|
contInfo:= VarToStr(FieldValues(0));
|
|
|
|
Helios.ExecSQL('SET CONTEXT_INFO 0x4E54536D6F64756C4C4F56'); // nastav context v sys.sysprocesses (hexadecimalne NTSmodulLOV)
|
|
|
|
{$REGION 'Záznam do TabPlgUse'}
|
|
dConv1:= '(CONVERT(DATETIME,CONVERT(INT,CONVERT(FLOAT,Datum))))';
|
|
dConv2:= '(CONVERT(DATETIME,CONVERT(INT,CONVERT(FLOAT,GETDATE() ))))';
|
|
podmDat:= dConv1 + '=' + dConv2;
|
|
sql:= 'IF OBJECT_ID(N' + QuotedStr('[dbo].[_TabPlgUse]') + ',N' + QuotedStr('U') + ') IS NULL ';
|
|
sql:= sql + 'CREATE TABLE [dbo].[_TabPlgUse] ([ID] int IDENTITY(1, 1) NOT NULL,';
|
|
sql:= sql + '[PlgJmeno] nvarchar(128) COLLATE Czech_CI_AS NOT NULL,';
|
|
sql:= sql + '[Uzivatel] nvarchar(128) COLLATE Czech_CI_AS DEFAULT suser_sname() NOT NULL,';
|
|
sql:= sql + '[Datum] datetime DEFAULT getdate() NOT NULL, [Status] tinyint DEFAULT 0 NOT NULL,';
|
|
sql:= sql + '[Stanice] nvarchar(128) COLLATE Czech_CI_AS DEFAULT host_name() NOT NULL)';
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
except
|
|
end;
|
|
|
|
sql:= 'IF NOT EXISTS(SELECT id FROM [dbo].[_TabPlgUse] WHERE Uzivatel=SUSER_SNAME() AND Status=0 AND ';
|
|
sql:= sql + 'PlgJmeno=N' + QuotedStr('plgLOVATO') + ' AND ' + podmDat + ')' + CRLF;
|
|
sql:= sql + ' INSERT [dbo].[_TabPlgUse] (PlgJmeno,Status) VALUES (N' + QuotedStr('plgLOVATO') + ',0)' + CRLF;
|
|
sql:= sql + 'UPDATE [dbo].[_TabPlgUse] SET Datum=GETDATE() WHERE Uzivatel=SUSER_SNAME() AND Status=0 AND ';
|
|
sql:= sql + 'PlgJmeno=N' + QuotedStr('plgLOVATO') + ' AND ' + podmDat;
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
except
|
|
end;
|
|
{$ENDREGION}
|
|
|
|
{$REGION 'Zapis do TabPluginInfo'}
|
|
sTmp:= StringReplace(helUtils.GetFileVersion2(GetModuleName(HInstance)),'.','',[rfReplaceAll]);
|
|
sTmp:= '0200' + MidStr(sTmp,3,8);
|
|
if Length(sTmp)=11 then
|
|
sTmp:= LeftStr(sTmp,8) + '0' + RightStr(sTmp,3);
|
|
sql:= 'IF NOT EXISTS(SELECT id FROM ' + tblPlgInfo + ' WHERE NazevSys=N' + QuotedStr(plgSysName) + ')';
|
|
sql:= sql + ' INSERT ' + tblPlgInfo + ' (NazevSys,NazevObjektu,NazevVerejny,VerzePluginu,ZmenyOK) VALUES (N';
|
|
sql:= sql + QuotedStr(plgSysName) + ',N' + QuotedStr(plgSysName) + ',N' + QuotedStr('Plugin pro LOVATO electric');
|
|
sql:= sql + ',N' + QuotedStr(sTmp) + ',1) ELSE ';
|
|
sql:= sql + 'UPDATE ' + tblPlgInfo + ' SET VerzePluginu=N' + QuotedStr(sTmp) + ' WHERE';
|
|
sql:= sql + ' NazevSys=N' + QuotedStr(plgSysName);
|
|
Helios.ExecSQL(sql);
|
|
{$ENDREGION}
|
|
|
|
{$REGION 'Region - zjistit typAkce, browID, vlastTbl, vytvor #TabExtKom'}
|
|
typAkce:= 0;
|
|
with Helios.OpenSQL('SELECT Parametry FROM TabExtKom WHERE ID=' + IntToStr(Helios.ExtKomID)) do
|
|
begin
|
|
params:= VarToStr(FieldValues(0));
|
|
jeTest:= false;
|
|
if Pos('test', LowerCase(params))>0 then
|
|
jeTest:= true;
|
|
if Pos(';',params)>0 then
|
|
begin
|
|
typAkce:= StrToInt(LeftStr(params,Pos(';',params)-1));
|
|
params:= MidStr(params,Pos(';',params)+1,255);
|
|
if Pos(';',params)>0 then
|
|
browID:= StrToInt(LeftStr(params,Pos(';',params)-1))
|
|
else
|
|
browID:= StrToInt(params);
|
|
if Pos(';',params)>0 then // zadany 3 parametry (akce, browID, vlastnikID)
|
|
begin
|
|
params:= MidStr(params,Pos(';',params)+1,255);
|
|
vlastTbl:= params;
|
|
end;
|
|
end
|
|
else
|
|
raise Exception.Create('Nemám potřebný počet parametrů !');
|
|
end;
|
|
|
|
lSQL:= 'IF OBJECT_ID(N' + QuotedStr('tempdb..#TabExtKom') + ') IS NOT NULL DROP TABLE #TabExtKom' + CRLF;
|
|
lSQL:= lSQL + 'CREATE TABLE #TabExtKom (Poznamka nvarchar(255))';
|
|
Helios.ExecSQL(lSQL);
|
|
|
|
{$ENDREGION}
|
|
|
|
if (Helios.HeVersion<MinVerzeHelios) then
|
|
raise Exception.Create('Plugin vyžaduje min verzi Heliosu ' + IntToHex(MinVerzeHelios, 12));
|
|
aktObd:= Helios.Obdobi;
|
|
|
|
if (Helios.BrowseID<>browID) then
|
|
begin
|
|
typAkce:= 0;
|
|
Helios.Error('Tento plugin lze volat pouze z přehledu: '#1 + IntToStr(browID) + #1'.');
|
|
end;
|
|
|
|
IDcka:= '';
|
|
cRec:= 0;
|
|
if (Helios.SelectedRecordIDs<>'') then
|
|
IDcka:= Helios.SelectedRecordIDs
|
|
else
|
|
if not VarIsNull(Helios.CurrentRecordID) then
|
|
begin
|
|
cRec:= StrToInt(VarToStr(Helios.CurrentRecordID));
|
|
IDcka:= IntToStr(cRec);
|
|
end;
|
|
|
|
if (IDcka<>'') then
|
|
begin
|
|
cntID:= 1 + Length(IDcka)-Length(StringReplace(IDcka,',','',[rfReplaceAll]));
|
|
SetLength(arrID,cntID);
|
|
for l_loop:=0 to cntID-1 do
|
|
begin
|
|
if Pos(',',IDcka)>0 then
|
|
begin
|
|
arrID[l_loop]:= StrToInt(LeftStr(IDcka,Pos(',',IDcka)-1));
|
|
IDcka:= MidStr(IDcka,Pos(',',IDcka)+1,65535)
|
|
end
|
|
else
|
|
arrID[l_loop]:= StrToInt(IDcka);
|
|
end;
|
|
cRec:= arrID[0];
|
|
end;
|
|
|
|
ReseedTable(Helios,tblDZ);
|
|
ReseedTable(Helios,tblPZ);
|
|
|
|
case typAkce of
|
|
1: begin // import objednavky do ExpPr
|
|
idDZ:= 0;
|
|
if (vlastTbl<>'') then
|
|
idDZ:= StrToInt(VarToStr(Helios.QueryEdit.FieldByNameValues('id')));
|
|
ImportEP(Helios, idDZ, true);
|
|
end;
|
|
|
|
2: begin // import prijemky materialu (packinglist) do Prijmu
|
|
idDZ:= 0;
|
|
if (vlastTbl<>'') then
|
|
idDZ:= StrToInt(VarToStr(Helios.QueryEdit.FieldByNameValues('id')));
|
|
ImportEP(Helios, idDZ, false); // stejna procedura jako pri importu IT objednavky
|
|
end;
|
|
|
|
3: begin
|
|
CRM_akt:= TformCRM_Aktivity.Create(nil);
|
|
try
|
|
CRM_akt.Helios:= Helios;
|
|
CRM_akt.idAkt:= 0;
|
|
if (vlastTbl='1') then
|
|
CRM_akt.idAkt:= cRec;
|
|
CRM_akt.ShowModal;
|
|
finally
|
|
CRM_akt.Free;
|
|
end;
|
|
Helios.Refresh(true); // dočasně zakomentováno 26.6.2018
|
|
end;
|
|
|
|
4: begin
|
|
if (cRec>0) then
|
|
begin
|
|
params:= '';
|
|
sTmp:= '';
|
|
idKZ:= cRec; // id nad prehledem Zbozi a sluzby
|
|
|
|
if (Helios.BrowseID=bidSS) then
|
|
with Helios.OpenSQL('SELECT IdKmenZbozi FROM ' + tblSS + ' WHERE id=' + IntToStr(cRec)) do
|
|
idKZ:= StrToInt(VarToStr(FieldValues(0)));
|
|
|
|
if (Helios.BrowseID=bidPZ) then
|
|
begin
|
|
sql:= 'SELECT kze.id FROM ' + tblPZ + ' pz INNER JOIN ' + tblSS;
|
|
sql:= sql + ' ss ON (pz.IDZboSklad=ss.id) INNER JOIN ' + tblKZ + ' kz ON (ss.idKmenZbozi=kz.id)';
|
|
sql:= sql + ' INNER JOIN ' + tblKZe + ' kze ON (kz.id=kze.id) WHERE pz.id=' + IntToStr(cRec);
|
|
with Helios.OpenSQL(sql) do
|
|
if (RecordCount=1) then
|
|
idKZ:= StrToInt(VarToStr(FieldValues(0)));
|
|
end;
|
|
|
|
with Helios.OpenSQL('SELECT ISNULL(_UmisteniPrijem,N'''') FROM ' + tblKZe + ' WHERE id=' + IntToStr(idKZ)) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
if not VarIsNull(FieldValues(0)) then
|
|
begin
|
|
sTmp:= InputBoxOkCancel('Umístění materiálu','Umístění: ', VarToStr(FieldValues(0)),btnRes);
|
|
if (btnRes=mrCancel) then
|
|
Exit;
|
|
params:= 'UPDATE ' + tblKZe + ' SET _UmisteniPrijem=';
|
|
if (sTmp='') then
|
|
params:= params + 'null'
|
|
else
|
|
params:= params + 'N' + QuotedStr(sTmp);
|
|
params:= params + ' WHERE id=' + IntToStr(idKZ);
|
|
end
|
|
end
|
|
else
|
|
begin
|
|
sTmp:= InputBoxOkCancel('Umístění materiálu','Umístění: ', '',btnRes);
|
|
if (btnRes<>mrCancel) then
|
|
begin
|
|
if (sTmp<>'') then
|
|
begin
|
|
params:= 'IF NOT EXISTS(SELECT id FROM ' + tblKZe + ' WHERE id=' + IntToStr(idKZ) + ')';
|
|
params:= params + ' INSERT ' + tblKZe + ' (id,_UmisteniPrijem) VALUES (' + IntToStr(idKZ);
|
|
params:= params + ',N' + QuotedStr(sTmp) + ')';
|
|
end;
|
|
end;
|
|
end;
|
|
if (params<>'') then
|
|
Helios.ExecSQL(params);
|
|
Helios.Refresh(true);
|
|
end
|
|
else
|
|
Helios.Error(#1'Změna umístění lze udělat pouze nad jednou kartou.'#1);
|
|
{
|
|
fDodavky:= TformDodavky.Create(nil);
|
|
try
|
|
fDodavky.Helios:= Helios;
|
|
fDodavky.idOrg:= cRec;
|
|
fDodavky.ShowModal;
|
|
finally
|
|
fDodavky.Free;
|
|
end;
|
|
}
|
|
end;
|
|
|
|
5: begin
|
|
fKmenZbozi:= TformKartyZbozi.Create(nil);
|
|
try
|
|
fKmenZbozi.Helios:= Helios;
|
|
fKmenZbozi.idKZ:= 0;
|
|
if (vlastTbl='edit') then
|
|
begin
|
|
case (Helios.BrowseID) of
|
|
bidSS: fKmenZbozi.idKZ:= StrToInt(VarToStr(Helios.QueryBrowse.FieldByNameValues('idKmenZbozi')));
|
|
bidKZ: fKmenZbozi.idKZ:= cRec;
|
|
end;
|
|
end;
|
|
fKmenZbozi.ShowModal;
|
|
finally
|
|
fKmenZbozi.Free;
|
|
end;
|
|
end;
|
|
|
|
6: begin
|
|
if Helios.YesNo(#1'VÝDEJKA KOOPERANTOVI' + CRLF + 'Přejete si vygenerovat položky podle požadavků kooperanta ?'#1,false) then
|
|
begin
|
|
if (cRec=0) then // tvorim to z ulozeneho Dokladu? NE pak vezmi ID dokladu z QueryEditu
|
|
cRec:= StrToInt(VarToStr(Helios.QueryEdit.FieldByNameValues('id')));
|
|
|
|
// sql:= 'EXEC dbo.ep_NTS_VydejkaKooperantovi NULL,' + IntToStr(cRec);
|
|
// sql:= sql + ',' + VarToStr(Helios.QueryEdit.FieldByNameValues('CisloOrg'));
|
|
// Helios.ExecSQL(sql);
|
|
// Helios.Refresh(true);
|
|
// Helios.Info('Položky byly uloženy na doklad.');
|
|
end;
|
|
end;
|
|
|
|
7: begin // nesplnene objednavky
|
|
ImportNesplObj(Helios);
|
|
end;
|
|
|
|
8: begin // editace vydejky zjednodusene, viz bod 9 + edit
|
|
end;
|
|
|
|
9: begin
|
|
fBL:= TformBaliciListy.Create(nil);
|
|
try
|
|
fBL.idDZ:= 0;
|
|
if (vlastTbl='edit') then
|
|
fBL.idDZ:= cRec;
|
|
fBL.typ:= 3;
|
|
fBL.Helios:= Helios;
|
|
fBL.ShowModal;
|
|
finally
|
|
fBL.Free;
|
|
end;
|
|
end;
|
|
|
|
{
|
|
10: begin
|
|
GenerujVydejMatZPrikazu(Helios, cRec);
|
|
end;
|
|
}
|
|
10: begin
|
|
if (cRec>0) then
|
|
begin
|
|
// if TestKoopObjVydejMat(Helios,cRec) then
|
|
begin
|
|
{
|
|
fPrijemNadvyroba:= TformPrijemkaNadvyroba.Create(nil);
|
|
try
|
|
fPrijemNadvyroba.idPKObj:= cRec;
|
|
fPrijemNadvyroba.Helios:= Helios;
|
|
fPrijemNadvyroba.ShowModal;
|
|
finally
|
|
fPrijemNadvyroba.Free;
|
|
end;
|
|
}
|
|
end
|
|
// else
|
|
// Helios.Error(#1'Na příkaz nebyl vydán žádný materiál.'#1);
|
|
end;
|
|
end;
|
|
|
|
11: begin
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblKObj + ' WHERE realizovano=0 AND id=' + IntToStr(cRec)) do
|
|
if (RecordCount=0) then
|
|
ExportKoopObj(Helios, cRec)
|
|
else
|
|
Helios.Error(#1'Kooperační objednávka není realizována, nelze exportovat.'#1 + CRLF + 'Realizujte jí a zkuste to znovu.');
|
|
end;
|
|
|
|
12: begin // Hromadna uprava Pozadovany termin dodani na polozkach kooperacni objednavky
|
|
sql:= 'SELECT ko.id FROM ' + tblPKObj + ' pko INNER JOIN ' + tblKObj + ' ko ON (pko.IDObjednavky=ko.id)';
|
|
sql:= sql + ' WHERE ko.Realizovano=1 AND pko.id=' + IntToStr(arrID[0]);
|
|
with Helios.OpenSQL(sql) do
|
|
if (RecordCount=0) then
|
|
begin
|
|
if FormDatum('Zadejte datum','Požadovaný termín dodání:',dt) then
|
|
for l_loop:=0 to Length(arrID)-1 do
|
|
begin
|
|
sql:= 'UPDATE ' + tblPKObj + ' SET PozadTerDod=CONVERT(datetime,N' + QuotedStr(DateToStr(dt)) + ',104)';
|
|
sql:= sql + ' WHERE id=' + IntToStr(arrID[l_loop]);
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
Helios.ExecSQL('EXEC dbo.ep_DoplnKooperacniCeny ' + IntToStr(arrID[l_loop]));
|
|
except on E:Exception do
|
|
Helios.Error('Nelze upravit datum pro položku kooperační objednávky.');
|
|
end;
|
|
Helios.Refresh(true);
|
|
end;
|
|
end
|
|
else
|
|
Helios.Error(#1'Tato kooperační objednávka byla již realizována,' + CRLF + 'požadované termíny nejdou změnit.'#1);
|
|
end;
|
|
|
|
13: begin
|
|
if (vlastTbl='del') and (cRec>0) then
|
|
begin
|
|
if Helios.YesNo('Opravdu chcete zrušit objednávku Nadvýroby ?',false) then
|
|
SmazObjNadvyroby(Helios,cRec)
|
|
end
|
|
else
|
|
begin
|
|
fDPVydej:= TfrmVydejDPrace.Create(nil);
|
|
try
|
|
fDPVydej.Helios:= Helios;
|
|
fDPVydej.ShowModal;
|
|
finally
|
|
fDPVydej.Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
14: begin
|
|
if (vlastTbl='del') and (cRec>0) then
|
|
begin
|
|
if Helios.YesNo('Opravdu chcete smazat tento záznam?',false) then
|
|
begin
|
|
try
|
|
lSQL:= 'BEGIN TRAN x' + CRLF + 'UPDATE ' + tblEvidNadvyr + ' SET Zaevidovano=Zaevidovano-';
|
|
with Helios.OpenSQL('SELECT Mnozstvi FROM ' + tblEvidOp + ' WHERE id=' + IntToStr(cRec)) do
|
|
if (RecordCount=0) then
|
|
lSQL:= lSQL + '0'
|
|
else
|
|
lSQL:= lSQL + StringReplace(VarToStr(FieldValues(0)),',','.',[rfReplaceAll]);
|
|
lSQL:= lSQL + ' WHERE id=' + IntToStr(cRec) + CRLF;
|
|
lSQL:= lSQL + 'DELETE FROM ' + tblEvidOp + ' WHERE id=' + IntToStr(cRec) + CRLF;
|
|
lSQL:= lSQL + 'DELETE FROM ' + tblEvidNadvyrVPr + ' WHERE IdEvidOpBarcode=' + IntToStr(cRec) + CRLF;
|
|
lSQL:= lSQL + 'DELETE FROM ' + tblEvidOpVPr + ' WHERE IdEvidOper=' + IntToStR(cRec) + CRLF;
|
|
lSQL:= lSQL + 'IF (@@ERROR>0) ROLLBACK TRAN x ELSE COMMIT TRAN x';
|
|
Helios.ExecSQL(lSQL);
|
|
except on E:Exception do
|
|
Helios.Error(#1'Chyba při mazání záznamu.'#1 + CRLF + E.Message);
|
|
end;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
fOdvedBarCode:= TformOdvedeniPrikazu.Create(nil);
|
|
try
|
|
fOdvedBarCode.Helios:= Helios;
|
|
fOdvedBarCode.typOdvodu:= 2; // podle vyrobku
|
|
fOdvedBarCode.jeTest:= (LowerCase(Trim(vlastTbl))='test');
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Start plugin - Odvedení práce'));
|
|
fOdvedBarCode.ShowModal;
|
|
finally
|
|
fOdvedBarCode.Free;
|
|
end;
|
|
// Helios.ExecSQL('EXEC dbo.hp_ZapisDoZurnalu @Uroven=2, @Udalost=-1, @Akce=N' + QuotedStr('Konec plugin - Odvedení práce'));
|
|
end;
|
|
Helios.Refresh(true);
|
|
end;
|
|
|
|
15: begin
|
|
// z odvedeni daneho vyrobniho prikazu "preved" dilec na vydejku vyvozu, zachova se vazba na ExpPr + aktualizuje se odebrane mnozstvi
|
|
ZadejPolPrijemkyNaVydejku(Helios,cRec);
|
|
end;
|
|
|
|
16: begin
|
|
fStSklHrZmen:= TformStavSklHromZmeny.Create(nil);
|
|
try
|
|
fStSklHrZmen.Helios:= Helios;
|
|
fStSklHrZmen.arrID:= arrID;
|
|
fStSklHrZmen.ShowModal;
|
|
finally
|
|
fStSklHrZmen.Free;
|
|
end;
|
|
end;
|
|
|
|
17: begin
|
|
// z vyrobniho prikazu "preved" dilec na vydejku vyvozu, zachova se vazba na ExpPr + aktualizuje se odebrane mnozstvi
|
|
ZadejVyrPrikazNaVydejku(Helios,cRec);
|
|
end;
|
|
|
|
18: begin
|
|
StavSkladuDoZadVyp(Helios); // vybrane karty ze Stavu skladu (vc.mnozstvi) do Predbezneho planu + smazani stareho
|
|
end;
|
|
|
|
19: begin
|
|
ImportZClipboardu(Helios, 1); //typ=1 -> import Min/Max do TabStavSkladuImp
|
|
end;
|
|
|
|
20: begin
|
|
PrevodStavSkladuImp(Helios,1); //typ=1 -> import Min/Max do TabStavSkladuImp
|
|
end;
|
|
|
|
21: begin
|
|
VyrabeneDilceDoZadVyp(Helios); // vybrane dilce do Predbezneho planu + smazani stareho (mnozstvi 1)
|
|
end;
|
|
|
|
22: begin
|
|
if Length(arrID)>0 then
|
|
begin
|
|
try
|
|
fRozdelMat:= TfrmRozdelMat.Create(nil);
|
|
fRozdelMat.Helios:= Helios;
|
|
if Helios.BrowseID=bidSS then
|
|
fRozdelMat.aIdSS:= myUtils.ArrayIntToStr(arrID)
|
|
else
|
|
fRozdelMat.aIdDZ:= myUtils.ArrayIntToStr(arrID);
|
|
fRozdelMat.ShowModal;
|
|
finally
|
|
fRozdelMat.Free;
|
|
end;
|
|
end;
|
|
{
|
|
sql:= 'IF OBJECT_ID(N' + QuotedStr(tblRozpPrijStav) + ') IS NOT NULL DROP TABLE ' + tblRozpPrijStav;
|
|
sql:= sql + CRLF + 'CREATE TABLE ' + tblRozpPrijStav + '(IdKmenZbozi INT NOT NULL, Mnozstvi NUMERIC(19,6)';
|
|
sql:= sql + ' NOT NULL DEFAULT 0.0, CisloZbozi NVARCHAR(33), Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME())';
|
|
Helios.ExecSQL(sql);
|
|
for l_loop:=0 to Length(arrID)-1 do
|
|
begin
|
|
RozpadPrijStavNaKooperanty(Helios,arrID[l_loop],0);
|
|
end;
|
|
with Helios.OpenSQL('SELECT Autor FROM ' + tblRozpPrijStav + ' WHERE Autor=SUSER_SNAME()') do
|
|
if RecordCount>0 then
|
|
begin
|
|
podm:= 'SELECT r.*,kz.SkupZbo,kz.RegCis,kz.Nazev1 FROM _TabRozpadPrijStav r INNER JOIN ' + tblKZ;
|
|
podm:= podm + ' kz ON (r.IdKmenZbozi=kz.id) WHERE r.Autor=SUSER_SNAME()';
|
|
sql:= 'IF OBJECT_ID(N' + QuotedStr('dbo.hvw_RozpadPrijStav') + ',N''V'') IS NOT NULL';
|
|
sql:= sql + ' DROP VIEW [dbo].[hvw_RozpadPrijStav]' + CRLF;
|
|
Helios.ExecSQL(sql);
|
|
sql:= 'CREATE VIEW dbo.hvw_RozpadPrijStav AS ' + podm + CRLF;
|
|
Helios.ExecSQL(sql);
|
|
sql:= 'UPDATE dbo.TabObecnyPrehled SET DefView=N' + QuotedStr(podm) + ' WHERE NazevSys=N' + QuotedStr('hvw_RozpadPrijStav');
|
|
Helios.ExecSQL(sql);
|
|
Helios.OpenBrowse(100038,'Autor=SUSER_SNAME()');
|
|
end;
|
|
end;
|
|
}
|
|
end;
|
|
|
|
23: begin
|
|
sql:= 'SELECT dz.id,odz.id FROM ' + tblDZ + ' dz LEFT JOIN ' + tblDZ + ' odz ON (dz.id=odz.NavaznyDoklad)';
|
|
sql:= sql + ' WHERE (dz.Realizovano=1 OR odz.Realizovano=1) AND dz.id=' + IntToStr(cRec);
|
|
with Helios.OpenSQL(sql) do
|
|
if (RecordCount>0) then
|
|
Helios.Error(#1'Tento doklad nebo zdrojový doklad jsou realizované - nelze opravovat.'#1)
|
|
else
|
|
begin
|
|
fPrevPrij:= TformPrevPrij.Create(nil);
|
|
try
|
|
fPrevPrij.idDZold:= 0;
|
|
with Helios.OpenSQL('SELECT id FROM ' + tblDZ + ' WHERE NavaznyDoklad=' + IntToStr(cRec)) do
|
|
fPrevPrij.idDZold:= VarHodnota(FieldValues(0),0);
|
|
fPrevPrij.idDZ:= cRec;
|
|
fPrevPrij.Helios:= Helios;
|
|
fPrevPrij.ShowModal;
|
|
finally
|
|
fPrevPrij.Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
24: begin // presun kooperace na prikazech do polozek koop.objednavky ! se seskupenim dle vyrobku a data dodani !
|
|
KooperaceniPolozkySeSeskupenim(Helios);
|
|
end;
|
|
|
|
25: begin
|
|
fDemontaz:= TformDemontaz.Create(nil);
|
|
try
|
|
if (Length(arrID)>1) then
|
|
fDemontaz.idPols:= arrID;
|
|
fDemontaz.jeTest:= jeTest;
|
|
fDemontaz.Helios:= Helios;
|
|
fDemontaz.ShowModal;
|
|
finally
|
|
fDemontaz.Free;
|
|
end;
|
|
end;
|
|
|
|
26: begin
|
|
Screen.Cursor:= crHourGlass;
|
|
UpdateWindow(hInstance);
|
|
ImportStavuInventur(Helios);
|
|
Screen.Cursor:= crDefault;
|
|
Helios.Refresh(true);
|
|
end;
|
|
|
|
27: begin
|
|
fMatRozp:= TformMaterial.Create(nil);
|
|
try
|
|
fMatRozp.idMat:= cRec;
|
|
fMatRozp.Helios:= Helios;
|
|
fMatRozp.ShowModal;
|
|
finally
|
|
fMatRozp.Free;
|
|
end;
|
|
end;
|
|
|
|
28: begin
|
|
{
|
|
fOdvodRele:= TformOdvodRele.Create(nil);
|
|
try
|
|
fOdvodRele.Helios:= Helios;
|
|
fOdvodRele.ShowModal;
|
|
finally
|
|
fOdvodRele.Free;
|
|
end;
|
|
}
|
|
fOdvedBarCode:= TformOdvedeniPrikazu.Create(nil);
|
|
try
|
|
fOdvedBarCode.Helios:= Helios;
|
|
fOdvedBarCode.typOdvodu:= 1; // podle prikazu
|
|
fOdvedBarCode.ShowModal;
|
|
finally
|
|
fOdvedBarCode.Free;
|
|
end;
|
|
Helios.Refresh(true);
|
|
end;
|
|
|
|
29: begin
|
|
if (cRec>0) then
|
|
ExportKoopObjHQL(Helios, cRec);
|
|
end;
|
|
|
|
30: begin
|
|
fReklamaceMat:= TformReklamaceMat.Create(nil);
|
|
try
|
|
fReklamaceMat.Helios:= Helios;
|
|
fReklamaceMat.ShowModal;
|
|
finally
|
|
fReklamaceMat.Free;
|
|
end;
|
|
end;
|
|
|
|
31: ImportDL_CHD(Helios);
|
|
|
|
32: begin
|
|
if (vlastTbl='del') then
|
|
begin
|
|
if Helios.YesNo('Opravdu chcete smazat tento kanban box ?', false) then
|
|
begin
|
|
with Helios.OpenSQL('SELECT id FROM dbo._TabKanbanPohyby WHERE IdKanbanBox=' + IntToStr(cRec)) do
|
|
if (RecordCount=0) then
|
|
Helios.ExecSQL('DELETE FROM dbo._TabKanbanBox WHERE id=' + IntToStr(cRec))
|
|
else
|
|
Helios.Error(#1'Box byl použit při objednávkách, nelze smazat.'#1);
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
try
|
|
fKanbanBox:= TformKanbanBox.Create(nil);
|
|
if (vlastTbl='edit') then
|
|
fKanbanBox.idBox:= cRec
|
|
else
|
|
fKanbanBox.idBox:= 0;
|
|
fKanbanBox.Helios:= Helios;
|
|
fKanbanBox.ShowModal;
|
|
finally
|
|
fKanbanBox.Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
33: begin
|
|
if (vlastTbl='del') then
|
|
begin
|
|
with Helios.OpenSQL('SELECT id FROM dbo._TabKanbanObj WHERE Id=' + IntToStr(cRec) + ' AND IdKoopObj IS NULL AND IdVydejObalu IS NULL') do
|
|
if (RecordCount=1) then
|
|
begin
|
|
if Helios.YesNo('Opravdu smazat tuto kanban objednávku ?',false) then
|
|
begin
|
|
Helios.ExecSQL('DELETE FROM dbo._TabKanbanPohyby WHERE IdKanbanObj=' + IntToStr(cRec));
|
|
Helios.ExecSQL('DELETE FROM dbo._TabKanbanObj WHERE id=' + IntToStr(cRec));
|
|
Helios.Refresh(true);
|
|
end
|
|
end
|
|
else
|
|
Helios.Error(#1'Z objednávky byla vygenerována výdejka obalů nebo Kooperační objednávka, nelze jí smazat.'#1);
|
|
end
|
|
else
|
|
begin
|
|
fKanbanObj:= TformKanbanObj.Create(nil);
|
|
try
|
|
if (vlastTbl='edit') then
|
|
fKanbanObj.idObj:= cRec
|
|
else
|
|
fKanbanObj.idObj:= 0;
|
|
fKanbanObj.Helios:= Helios;
|
|
fKanbanObj.ShowModal;
|
|
finally
|
|
fKanbanObj.Free;
|
|
end;
|
|
|
|
end;
|
|
end;
|
|
|
|
34: KontrolaExistVsechObj(Helios);
|
|
|
|
35: ImportZClipboardu(Helios, 2);
|
|
|
|
36: ImportObjMaterialu(Helios, 0); // sdileny material = 1
|
|
|
|
37: ImportObjMatEdit(Helios, cRec);
|
|
|
|
38: ImportDL(Helios); // import dodacího listu včetně čísla palety
|
|
|
|
255: begin
|
|
// ReseedTable(Helios,'[dbo].[]');
|
|
ReseedTable(Helios,tblDZ);
|
|
ReseedTable(Helios,tblPZ);
|
|
ReseedTable(Helios,'[dbo].[TabSkupinyZbozi]');
|
|
ReseedTable(Helios,'[dbo].[TabParametryKmeneZbozi]');
|
|
ReseedTable(Helios,tblKZ);
|
|
ReseedTable(Helios,'[dbo].[TabBarCodeZbo]');
|
|
ReseedTable(Helios,tblSS);
|
|
ReseedTable(Helios,tblOrg);
|
|
ReseedTable(Helios,tblCZam);
|
|
ReseedTable(Helios, tblJC);
|
|
ReseedTable(Helios, tblNC);
|
|
ReseedTable(Helios,'[dbo].[TabMJ]');
|
|
ReseedTable(Helios, tblStrom);
|
|
ReseedTable(Helios,'[dbo].[TabParKmZ]');
|
|
ReseedTable(Helios,'[dbo].[TabKVazby]');
|
|
ReseedTable(Helios,'[dbo].[TabPostup]');
|
|
ReseedTable(Helios,'[dbo].[TabPrKVazby]');
|
|
ReseedTable(Helios, tblPrikaz);
|
|
ReseedTable(Helios,'[dbo].[TabPrikazP]');
|
|
ReseedTable(Helios,'[dbo].[TabKalkCe]');
|
|
ReseedTable(Helios,'[dbo].[TabInvPolozka]');
|
|
ReseedTable(Helios,'[dbo].[TabPrPostup]');
|
|
ReseedTable(Helios,'[dbo].[TabCPraco]');
|
|
end;
|
|
end;
|
|
|
|
{$REGION 'Záznam do TabPlgUse'}
|
|
sql:= 'IF NOT EXISTS(SELECT id FROM [dbo].[_TabPlgUse] WHERE Uzivatel=SUSER_SNAME() AND Status=1 AND ';
|
|
sql:= sql + 'PlgJmeno=N' + QuotedStr('plgLOVATO') + ' AND ' + podmDat + ')' + CRLF;
|
|
sql:= sql + ' INSERT [dbo].[_TabPlgUse] (PlgJmeno,Status) VALUES (N' + QuotedStr('plgLOVATO') + ',1)' + CRLF;
|
|
sql:= sql + 'UPDATE [dbo].[_TabPlgUse] SET Datum=GETDATE() WHERE Uzivatel=SUSER_SNAME() AND Status=1 AND ';
|
|
sql:= sql + 'PlgJmeno=N' + QuotedStr('plgLOVATO') + ' AND ' + podmDat;
|
|
try
|
|
Helios.ExecSQL(sql);
|
|
except
|
|
end;
|
|
{$ENDREGION}
|
|
|
|
// Helios.Refresh(true);
|
|
if (contInfo='NULL') then
|
|
Helios.ExecSQL('SET CONTEXT_INFO 0x')
|
|
else
|
|
Helios.ExecSQL('SET CONTEXT_INFO 0x' + contInfo); // vymaz context v sys.sysprocesses (hexadecimalne NTSmodulLOV)
|
|
|
|
try
|
|
with Helios.OpenSQL('IF OBJECT_ID(' + QuotedStr('tempdb..#TabExtKom') + ') IS NOT NULL SELECT Poznamka FROM #TabExtKom') do
|
|
if (RecordCount>0) then
|
|
Helios.OpenBrowse(541,'');
|
|
finally
|
|
end;
|
|
Helios.Refresh(true);
|
|
end;
|
|
|
|
INITIALIZATION
|
|
dxCore.dxInitialize;
|
|
dxUnitsLoader.Initialize;
|
|
// hdl:= LoadPackage('HeLib.bpl');
|
|
// SetThreadLocale(LOCALE_USER_DEFAULT);
|
|
// GetFormatSettings;
|
|
TComObjectFactory.Create(ComServer, TplgLOVATO, Class_LOVATO, 'runMe', '', ciMultiInstance, tmSingle);
|
|
|
|
finalization
|
|
dxUnitsLoader.Finalize;
|
|
dxCore.dxFinalize;
|
|
|
|
END.
|