Dalsi zmeny

This commit is contained in:
2026-03-03 16:18:27 +01:00
parent 03ff9ebc84
commit a62b608cfd
97 changed files with 4635 additions and 240 deletions

View File

@ -0,0 +1 @@
// arrDefs.Add('ep_HDCDZApi_ZpracujPrijataData');

View File

@ -76,6 +76,22 @@ type
end; end;
[MVCPath('/emp/vytezeni')]
TEMPVytezeniDoklController = class(TBaseController)
private
FSelfSvc: TEMPVytezeniDoklService;
public
constructor Create; override;
destructor Destroy; override;
[MVCPath('/fprij/post/($id)')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('EMP - vyt<79><74>en<65> dokument<6E> dokladu FaktPrij', 'Po<50>le dokument dokladu Faktury p<>ijat<61> na AiDOCU API', 'EMPVytezDokFPrijPostByID')]
[MVCSwagParam(plPath, 'id', 'ID dokladu Faktury p<>ijat<61>', ptString, true)]
[MVCProduces('application/json')]
procedure FPrij_PostByID (id: string);
end;
implementation implementation
uses uses
@ -195,22 +211,22 @@ uses
procedure TEMPDokumentAtestController.GetMeta; procedure TEMPDokumentAtestController.GetMeta;
begin begin
try try
Render(ObjectDict().Add('data', GetDokumentService.GetMeta)); Render(ObjectDict().Add('data', GetDokumentService.GetMeta));
except except
{$IFDEF NORENDER400} {$IFDEF NORENDER400}
RenderStatusMessage (200); RenderStatusMessage (200);
{$ELSE} {$ELSE}
on E: EServiceException do on E: EServiceException do
begin begin
raise EMVCException.Create(E.Message, '', 0, 404); raise EMVCException.Create(E.Message, '', 0, 404);
end end
else else
raise; raise;
{$ENDIF} {$ENDIF}
end;
end; end;
end;
@ -243,4 +259,48 @@ uses
end; end;
{ TEMPVytezeniDoklService }
constructor TEMPVytezeniDoklController.Create;
begin
inherited;
end;
destructor TEMPVytezeniDoklController.Destroy;
begin
inherited;
end;
procedure TEMPVytezeniDoklController.FPrij_PostByID (id: string);
var iId: integer;
begin
id:= sanitizeSQLString (id);
if not(TryStrToInt(id, iId)) then
iId:= 0;
try
Render(ObjectDict().Add('data', GetEMPVytezeniDoklService.FPrij_PostByID (iId))); // viz uSvcCustom.pas
except
{$IFDEF NORENDER400}
RenderStatusMessage (200);
{$ELSE}
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 404);
end
else
raise;
{$ENDIF}
end;
end;
end. end.

View File

@ -42,6 +42,11 @@ type
function GetByParams (params: TDictionary<string, string>): TObjectList<TEMPNadoba>; function GetByParams (params: TDictionary<string, string>): TObjectList<TEMPNadoba>;
end; end;
TEMPVytezeniDoklService = class(TServiceBase)
public
function FPrij_PostByID (const AID: integer): TJSONObject; // vrati se identifikace od providera
end;
implementation implementation
@ -50,6 +55,9 @@ uses
FireDAC.Stan.Option, FireDAC.Stan.Option,
FireDAC.Comp.Client, FireDAC.Comp.Client,
FireDAC.Stan.Param, FireDAC.Stan.Param,
System.JSON.Builders,
System.JSON.Writers,
System.JSON.Types,
MVCFramework.FireDAC.Utils, MVCFramework.FireDAC.Utils,
MVCFramework.DataSet.Utils, MVCFramework.DataSet.Utils,
MVCFramework.Serializer.Commons, MVCFramework.Serializer.Commons,
@ -195,7 +203,7 @@ uses
try try
if not(lQry.EOF) then if not(lQry.EOF) then
begin begin
result:= FDM.sqlQry1.AsObject<TEMPNadoba> result:= FDM.sqlQry1.AsObject<TEMPNadoba>;
end end
else else
raise EServiceException.Create('N<>doba s <20><>slem ' + ACislo + ' nebyla nalezena.'); raise EServiceException.Create('N<>doba s <20><>slem ' + ACislo + ' nebyla nalezena.');
@ -239,4 +247,31 @@ uses
end; end;
{ TEMPVytezeniDoklService }
function TEMPVytezeniDoklService.FPrij_PostByID (const AID: integer): TJSONObject; // vrati se identifikace od providera
var lSQL, statusOut: string;
resVal: TJSONObject;
sB: TStringBuilder;
sW: TStringWriter;
w: TJsonTextWriter;
b: TJSONObjectBuilder;
p: TJSONCollectionBuilder.TPairs;
begin
result:= TJSONObject.Create;
statusOut:= 'Not OK';
sB:= TStringBuilder.Create;
sW:= TStringWriter.Create (sB);
w:= TJsonTextWriter (sW);
w.Formatting:= TJsonFormatting.Indented;
b:= TJsonObjectBuilder.Create (w);
p:= b.BeginObject.Add('status', statusOut);
p.EndObject;
result.FromJSON (sB.ToString);
end;
end. end.

View File

@ -1,3 +1,4 @@
FEngine.AddController (TEMPNadobaController); FEngine.AddController (TEMPNadobaController);
FEngine.AddController (TEMPDokumentAtestController); FEngine.AddController (TEMPDokumentAtestController);
FEngine.AddController (TEMPVytezeniDoklController);

View File

@ -0,0 +1 @@
// tblAPIDigiSoubory = '[dbo].[Tabx_HDC_API_DigitalizaceSoubory]';

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<config_aidocu vytezovaniDokumentuSek="10" url="https://aidocu-test.amitia-ai.com/api/v1" auth="24A0F17F9ACD9E20821EEA7870BAB2754C19972CB12CF6DD62508800644C9F64121C218D8DBE627C6F01E467B00C80CC428CB28575475F9048A61C7C64DA08907F1F5316C81E429E184DCCAED7801D7D7A830181216F911DF4C33A899DA0E153C09246E17598055BBE227684724EB851FD5AE2AFDF889A09E20DCBDA8DDC91FC174BA3ABE36A8DF02C1B61CEABE9BFB1B6A97D384E506BB5ED3C5A45F2ED786F33F636D3F8900F7D2ED64BE6323E2AF7224049EA2061D72C837F7013226E7ACB8969E98372A1F0F5B7BF0C727088DF8A72D64A616B83B4A026F567CBE3B1209C0A1561AA327C8630DCC745D45B48F34A5646938093526F9C5AD3539753BE4F5AA40162A5D8091DACA425320ACC8CCB77E327B3786BC860AAF505CA0FB76755BB49D6179666ACA28DFBDF4E910B3A1AA38DDFC7EEDDE3EEBE23692ECA21D97CE85A075AD2F9E6A1432C8592088608E0C11A7A66117A95AE">
<config auth="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJlbXBvbGFyIiwicmVsZWFzZV9pZCI6IjY4NGE4NDU4ZGUzNTcxNGFiNDdiZTUwMCIsImxpY2VuY2VfaWQiOiI2ODUxMmRmMzI2NjgwM2FjOGFhOWUwMDQiLCJzZWNyZXRfdG9rZW4iOiJjN0pUZ242V05TNlBiZ0hmWlo1Zk1uRjNXdjlrSk1IZm9zdnVwTkZrbERxaGJjdFBXYTllaTliVm5SMjVtd1VwIiwiZXhwIjoxNzU5MjY5NjAwfQ.rYWVHenSwmoM_5bpSsannmxFln5oZBAd-2jb_CP-WQ8"/>
</config_aidocu>

View File

@ -0,0 +1,337 @@
constructor THeoEMPVytezovaniDokThread.Create (AOnTerminate: TNotifyEvent; AService: TService);
begin
inherited Create (false); // Create thread in NOT suspended mode
FMainService:= AService;
FLock:= TCriticalSection.Create;
FRunning:= false;
FTermEvent:= TEvent.Create (nil, False, False, '');
// OnTerminate:= AOnTerminate;
// FreeOnTerminate:= true;
FreeOnTerminate:= false; // Ensure manual freeing of thread resources
end;
destructor THeoEMPVytezovaniDokThread.Destroy;
begin
{$IFDEF DEBUG}
Write('Ukoncuji thread EMP vytezovani dokumentu...');
{$ENDIF}
if (FTimer<>0) then
CloseHandle (FTimer);
FTermEvent.Free;
FRunning:= false;
FMainService:= nil;
Terminate;
FLock.Free;
inherited;
{$IFDEF DEBUG}
WriteLn('OK');
{$ENDIF}
end;
procedure THeoEMPVytezovaniDokThread.TerminatedSet;
begin
FTermEvent.SetEvent;
end;
procedure THeoEMPVytezovaniDokThread.ThreadTerminate;
begin
Terminate;
WaitFor;
end;
procedure THeoEMPVytezovaniDokThread.Execute;
const _Second = 10_000_000;
var lSQL, errMsg, url, authHash, outData, fName, loopCasTyp: string;
lLoop, idDZ, cnt, idx: Integer;
lLoopMax, koefProCas: integer;
logRunCnt: integer;
Msg: TMsg;
firstRun, inProg, inDL: boolean;
lQry, lQry2: TFDQuery;
sqlConnX, sqlConnX2: TFDConnection;
sqlTrans: IFDPhysTransaction;
f, lOpenSSLLib: string;
lBusy: LongInt;
liDueTime: LARGE_INTEGER;
mamSSLLibs: boolean;
sslLibPath, dataSouboru: string;
http1: System.Net.HTTPClient.THTTPClient;
iResp: System.Net.HTTPClient.IHTTPResponse;
aResp: TMemoryStream;
http2: TIdHttp;
sslHndlr: TIdSSLIOHandlerSocketOpenSSL;
respHttp2: TStream;
i: integer;
sTemp, outData2: string;
cfgFile: string;
specCfgXML: XML.XmlIntf.IXMLDocument;
n1: XML.XmlIntf.IXMLNode;
attribs: IXMLNodeList;
attrIdx: integer;
function StringToHex (const inStr: string): string;
var i: integer;
begin
result:= '';
for i:=1 to Length(inStr) do
result:= result + IntToHex(Ord(inStr[i]), 2); // 2 means two hex digits per character
end;
function MemStreamToHex (aStream: TMemoryStream): string;
var i: integer;
b: byte;
begin
result:= '';
for i:=0 to aStream.Size-1 do
begin
b:= PByte(TMemoryStream(aStream).Memory)[i];
result:= result + IntToHex(b,2);
end;
end;
begin
lLoop:= 0;
idDZ:= 0;
logRunCnt:= 1;
url:= '';
authHash:= '';
lLoopMax:= 20; // v sekundach !!!!
try
try
CoInitialize(nil); // kvuli pouziti TXMLDocument
cfgFile:= ExtractFilePath(ParamStr(0)) + 'empolar.xml';
if (FileExists(cfgFile)) then
begin
specCfgXML:= Xml.XMLDoc.TXMLDocument.Create(nil);
specCfgXML.LoadFromFile (cfgFile);
specCfgXML.Active:= true;
if not(specCfgXML.IsEmptyDoc) then
begin
if (specCfgXML.DocumentElement<>nil) then
begin
n1:= specCfgXML.DocumentElement;
if (n1.NodeName='config_aidocu') then
begin
attribs:= n1.AttributeNodes;
attrIdx:= attribs.IndexOf('vytezovaniDokumentuSek');
if (attrIdx>-1) then
if (attribs.Get(attrIdx).NodeValue<>null) then
lLoopMax:= attribs.Get(attrIdx).NodeValue;
attrIdx:= attribs.IndexOf('url');
if (attrIdx>-1) then
if (attribs.Get(attrIdx).NodeValue<>null) then
url:= attribs.Get(attrIdx).NodeValue;
attrIdx:= attribs.IndexOf('auth');
if (attrIdx>-1) then
if (attribs.Get(attrIdx).NodeValue<>null) then
authHash:= attribs.Get(attrIdx).NodeValue;
{$IFDEF DEBUG}
if (Length(authHash)<350) then
begin
authHash:= (FMainService as THDCDZApiService).ReturnEncrypted (authHash);
WriteLn('API HASH: ' + authHash);
end;
{$ENDIF}
if (authHash<>'') and (FMainService<>nil) then
authHash:= (FMainService as THDCDZApiService).ReturnDecrypted (authHash);
end; // n1 = config
end; // specCfgXML.DocumentElement<>nil
end; // not specCfgXML.IsEmptyDoc
end; // FileExists(cfgFile)
except
end; // try
finally
begin
if (specCfgXML<>nil) then
specCfgXML:= nil;
CoUninitialize;
end;
end;
datMod.LogInfo (Quick.Logger.etInfo, 'Interval vytezovani dokumentu: ' + lLoopMax.ToString + ' sek');
firstRun:= true;
inProg:= false;
sslLibPath:= '';
f:= ExtractFilePath (ParamStr(0));
mamSSLLibs:= false;
for lOpenSSLLib in OPENSSL_LIBS do
begin
if (FileExists(TPath.Combine(f, lOpenSSLLib))) then
begin
mamSSLLibs:= true;
sslLibPath:= ExcludeTrailingPathDelimiter (f);
end;
end;
FRunning:= true;
if (1=1) then // pro rychle vypnuti
begin
FTimer:= CreateWaitableTimer (nil, true, 'EMPVytezDokumWaitableTimer');
liDueTime.QuadPart:= -1*_Second;
sqlConnX:= TFDConnection.Create (nil);
sqlConnX2:= TFDConnection.Create (nil);
lQry:= TFDQuery.Create(nil);
lQry2:= TFDQuery.Create(nil);
try
try
sqlConnX.Params.SetStrings (datMod.sqlConnParams);
sqlConnX2.Params.SetStrings (datMod.sqlConnParams);
// sqlConnX.TxOptions.AutoCommit:= false;
sqlConnX.Open;
sqlConnX2.Open;
lQry.Connection:= sqlConnX;
lQry2.Connection:= sqlConnX2;
while not(Terminated) or not(FRunning) do
begin
if (HDCDZApiService<>nil) then
if (HDCDZApiService.Terminated) then
begin
Terminate;
FRunning:= false;
end;
PeekMessage (&Msg, 0, 0, 0, PM_NOREMOVE); { Create message queue }
if (lLoop=lLoopMax) or (firstRun) then // pri startu a pak podle lLoopMax sek (prednastaveno 10 sek)
begin
idDZ:= 0;
firstRun:= false;
if (logRunCnt<4) then
datMod.LogInfo (Quick.Logger.etInfo, 'Spoustim vytezovani ' + logRunCnt.toString + '...');
if (logRunCnt=4) then
datMod.LogInfo (Quick.Logger.etInfo, 'Spoustim vytezovani - bezi ale dal neloguju');
try
if not(inProg) then // nebezi uz ?
begin
if (1=1) then // pro rychle vypnuti
begin
if (sqlConnX.Connected) then
begin
lSQL:= '/* hdcDZApiSvc-emp */ SELECT ID FROM ' + tblDZ
+ ' WHERE BlokovaniEditoru IS NULL AND DruhPohybuZbo=18 AND CisloOrg IS NULL ORDER BY ID';
try
lQry.Open(lSQL);
if (lQry.RecordCount>0) then
begin
lQry.First;
inProg:= true;
while not(lQry.EOF) do
begin
idDZ:= lQry.FieldByName('ID').asInteger;
if (idDZ>0) then
begin
dataSouboru:= '';
lSQL:= 'SELECT 1 FROM ' + tblDokumVaz + ' v JOIN ' + tblDokum + ' d ON (d.ID=v.IDDok) WHERE v.IDTab=' + idDZ.ToString
+ ' AND v.IdentVazby=9 AND UPPER(d.JmenoACesta) LIKE N''%PDF'' AND d.VelikostSouboru>0';
lQry2.Open (lSQL);
if (lQry2.RecordCount=1) then // mam dokument PDF
begin
lQry2.Close;
lSQL:= lSQL.Replace(' 1 ', ' TOP(1) /*CONVERT(varchar(max), Dokument, 2)*/ BASE64_ENCODE(Dokument) AS DataSouboru ');
lQry2.Open (lSQL);
if (lQry2.Recordcount=1) then
begin
dataSouboru:= lQry2.FieldByName('DataSouboru').AsString;
lQry2.Close;
end;
end; // mam dokument PDF
if (dataSouboru<>'') then
begin
end; // dataSouboru<>''
end; // idDZ>0
lQry.Next;
end;
end;
finally
lQry.Close;
FreeAndNil (lQry);
// lQry.Free;
// lQry:= nil;
end;
inProg:= false;
sqlConnX.Close;
end; // sqlConnX Connected
end; // 1=1 -- pro rychle vypnuti
end; // not(inProg)
except on E:Exception do
begin
inProg:= false;
if (lQry<>nil) then
begin
lQry.Close;
FreeAndNil (lQry);
end;
if (sqlConnX<>nil) then
sqlConnX.Close;
errMsg:= E.Message; // datMod.sqlQry11.FieldByName('ErrMsg').AsString;
if (mamTabPrijataData) then
datMod.LogInfo (Quick.Logger.etError, 'Chyba zpracovani API souboru FaktPrij ID ' + idDZ.ToString + ' : ' + errMsg);
end;
end; // try
lLoop:= 0;
if (logRunCnt<5) then
Inc (logRunCnt);
end;
Inc (lLoop);
// sleep na vterinu
if (FTimer<>0) then
SetWaitableTimer (FTimer, TLargeInteger(liDueTime), 0, nil, nil, false);
repeat
lBusy:= MsgWaitForMultipleObjects (1, FTimer, false, INFINITE, QS_ALLINPUT);
until lBusy = WAIT_OBJECT_0;
end;
except
end;
finally
sqlConnX.Close;
FreeAndNil (sqlConnX);
end;
end; // 1=1 -- pro rychle vypnuti
if (sqlConnX2<>nil) then
begin
if (sqlConnX2.Connected) then
sqlConnX2.Close;
FreeAndNil (sqlConnX2);
end;
end;

View File

@ -0,0 +1 @@
empVytezovaniDokThr: THeoEMPVytezovaniDokThread;

View File

@ -0,0 +1,3 @@
if (empVytezovaniDokThr<>nil) then
if (empVytezovaniDokThr.Suspended) then
empVytezovaniDokThr.Resume;

View File

@ -0,0 +1,7 @@
if (empVytezovaniDokThr<>nil) then
if not(empVytezovaniDokThr.Started) then
begin
empVytezovaniDokThr.Start;
datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby EMP vytezovani dokladu - pocet FaktPrij: ' + datMod.SQLGetString('SELECT COUNT(ID) FROM '
+ tblDZ + ' WHERE BlokovaniEditoru IS NULL AND DruhPohybuZbo=18 AND CislOrg IS NULL'));
end;

View File

@ -0,0 +1,3 @@
if (empVytezovaniDokThr<>nil) then
if not(empVytezovaniDokThr.Suspended) then
empVytezovaniDokThr.Suspend;

View File

@ -0,0 +1,22 @@
datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby EMP vytezovani dokumentu - inverval 10 sekund...');
{$IFDEF DEBUG}
WriteLn ('Start sluzby EMP vytezovani dokumentu - inverval 10 sekund...');
{$ENDIF}
empVytezovaniDokThr:= THeoEMPVytezovaniDokThread.Create (ThreadTerminated, self);
if (empVytezovaniDokThr<>nil) then
begin
if (empVytezovaniDokThr.Started) then
begin
datMod.LogInfo (Quick.Logger.etInfo, ' OK');
{$IFDEF DEBUG}
WriteLn (' OK');
{$ENDIF}
end;
end
else
begin
datMod.LogInfo (Quick.Logger.etInfo, ' thread empVytezovaniDokThr neni vytvoren');
{$IFDEF DEBUG}
WriteLn (' thread empVytezovaniDokThr neni vytvoren');
{$ENDIF}
end;

View File

@ -0,0 +1,18 @@
if Assigned(empVytezovaniDokThr) then
begin
{$IFDEF DEBUG}
WriteLn ('Ukoncuji vlakno EMP vytezovani dokumentu...');
{$ENDIF}
datMod.LogInfo (Quick.Logger.etInfo, 'Ukoncuji vlakno EMP vytezovani dokumentu...');
try
empVytezovaniDokThr.ThreadTerminate;
FreeAndNil(empVytezovaniDokThr);
except on E:Exception do
// add event in eventlog with reason why the service couldn't stop
LogMessage('Cannot stop thread EMPVytezaniDok: ' + E.Message, EVENTLOG_ERROR_TYPE, 0, 1);
end;
datMod.LogInfo (Quick.Logger.etInfo, ' OK');
{$IFDEF DEBUG}
WriteLn (' OK');
{$ENDIF}
end;

View File

@ -0,0 +1,3 @@
intervalSecVytezovani

View File

@ -0,0 +1,15 @@
THeoEMPVytezovaniDokThread = class(TThread)
private
FMainService: TService;
FLock: TCriticalSection;
FTermEvent: TEvent;
FRunning: boolean;
FTimer: THandle;
protected
procedure Execute; override;
procedure TerminatedSet; override; // XE2+ only *
public
constructor Create (AOnTerminate: TNotifyEvent; AService: TService);
destructor Destroy; override;
procedure ThreadTerminate;
end;

View File

@ -0,0 +1 @@
System.JSON.Builders, System.JSON.Writers, System.JSON.Types,

View File

@ -0,0 +1 @@
System.Net.HttpClient, System.Threading,

View File

@ -0,0 +1 @@
intervalSecVytezovani: integer;

View File

@ -146,7 +146,7 @@
attrIdx:= attribs.IndexOf('downPDFintMins'); attrIdx:= attribs.IndexOf('downPDFintMins');
if (attrIdx>-1) then if (attrIdx>-1) then
if (attribs.Get(attrIdx).NodeValue<>null) then if (attribs.Get(attrIdx).NodeValue<>null) then
lLoopMax:= attribs.Get(i).NodeValue; lLoopMax:= attribs.Get(attrIdx).NodeValue;
end; // n1 = config end; // n1 = config
end; // specCfgXML.DocumentElement<>nil end; // specCfgXML.DocumentElement<>nil
end; // not specCfgXML.IsEmptyDoc end; // not specCfgXML.IsEmptyDoc
@ -249,6 +249,9 @@
while not(lQry.EOF) do while not(lQry.EOF) do
begin begin
PeekMessage (&Msg, 0, 0, 0, PM_NOREMOVE); { Create message queue }
helUtils.ProcessPendingVCLMessages;
idDigiFile:= lQry.FieldByName('ID').asInteger; idDigiFile:= lQry.FieldByName('ID').asInteger;
if (idDigiFile>0) then if (idDigiFile>0) then
begin begin
@ -276,21 +279,22 @@
if (Assigned(http1)) then if (Assigned(http1)) then
begin begin
http1.AllowCookies:= false; http1.AllowCookies:= false;
http1.UserAgent:= 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0'; http1.UserAgent:= 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/144.0';
http1.Accept:= 'application/pdf'; http1.Accept:= 'application/pdf';
datMod.LogInfo (Quick.Logger.etInfo, 'Nacitam data PDF pro downloadPDF id ' + idDigiFile.ToString); // datMod.LogInfo (Quick.Logger.etInfo, 'Nacitam data PDF pro downloadPDF id ' + idDigiFile.ToString);
iResp:= http1.Get (url); iResp:= http1.Get (url);
aResp:= (iResp.ContentStream as TMemoryStream); aResp:= (iResp.ContentStream as TMemoryStream);
outData:= MemStreamToHex (aResp); outData:= MemStreamToHex (aResp);
datMod.LogInfo (Quick.Logger.etInfo, 'Mam data PDF pro downloadPDF id ' + idDigiFile.ToString); // datMod.LogInfo (Quick.Logger.etInfo, 'Mam data PDF pro downloadPDF id ' + idDigiFile.ToString);
end; end;
except on E:Exception do except on E:Exception do
begin begin
datMod.LogInfo (Quick.Logger.etError, 'Chyba zpracovani downloadPDF id ' + idDigiFile.ToString + ' : ' + E.Message); sqlConnX.ExecSQL ('UPDATE ' + tblAPIDigiSoubory + ' SET Blokovano=0 WHERE ID=' + idDigiFile.ToString);
datMod.LogInfo (Quick.Logger.etError, 'Chyba downloadPDF id ' + idDigiFile.ToString + ' : ' + E.Message);
{$IFDEF DEBUG} {$IFDEF DEBUG}
WriteLn ('Chyba zpracovani downloadPDF id ' + idDigiFile.ToString + ' >> ' + E.Message); WriteLn ('Chyba downloadPDF id ' + idDigiFile.ToString + ' >> ' + E.Message);
{$ENDIF} {$ENDIF}
end; end;
end; end;
@ -307,18 +311,28 @@
IdOpenSSLSetLibPath (sslLibPath); IdOpenSSLSetLibPath (sslLibPath);
http2:= TIdHttp.Create (nil); http2:= TIdHttp.Create (nil);
sslHndlr:= TIdSSLIOHandlerSocketOpenSSL.Create (http2); sslHndlr:= TIdSSLIOHandlerSocketOpenSSL.Create (http2);
respHttp2:= TMemoryStream.Create;
try try
sslHndlr.SSLOptions.Method:= sslvTLSv1_2; try
sslHndlr.SSLOptions.SSLVersions := [sslvTLSv1_2, sslvTLSv1_1]; sslHndlr.SSLOptions.Method:= sslvTLSv1_2;
http2.IOHandler:= sslHndlr; sslHndlr.SSLOptions.SSLVersions := [sslvTLSv1_2, sslvTLSv1_1];
http2.IOHandler:= sslHndlr;
http2.Request.Accept:= 'application/pdf'; http2.Request.Accept:= 'application/pdf';
http2.Request.BasicAuthentication := False; http2.Request.BasicAuthentication := False;
http2.HTTPOptions:= http2.HTTPOptions + [hoKeepOrigProtocol] + [hoNoProtocolErrorException]; http2.HTTPOptions:= http2.HTTPOptions + [hoKeepOrigProtocol] + [hoNoProtocolErrorException];
http2.Request.ContentType:= 'application/pdf; charset=utf-8'; http2.Request.ContentType:= 'application/pdf; charset=utf-8';
respHttp2:= TMemoryStream.Create; http2.Get (url, respHttp2);
http2.Get (url, respHttp2); outData:= MemStreamToHex (respHttp2 as TMemoryStream);
outData:= MemStreamToHex (respHttp2 as TMemoryStream); except on E:Exception do
begin
sqlConnX.ExecSQL ('UPDATE ' + tblAPIDigiSoubory + ' SET Blokovano=0 WHERE ID=' + idDigiFile.ToString);
datMod.LogInfo (Quick.Logger.etError, 'Chyba downloadPDF (SSL) id ' + idDigiFile.ToString + ' : ' + E.Message + CRLF + url);
{$IFDEF DEBUG}
WriteLn ('Chyba downloadPDF (SSL) id ' + idDigiFile.ToString + ' >> ' + E.Message + CRLF + url);
{$ENDIF}
end;
end;
finally finally
FreeAndNil (sslHndlr); // must be freed before IdHttp FreeAndNil (sslHndlr); // must be freed before IdHttp
FreeAndNil (http2); FreeAndNil (http2);
@ -374,6 +388,7 @@
except on E:Exception do except on E:Exception do
begin begin
sqlConnX.ExecSQL ('UPDATE ' + tblAPIDigiSoubory + ' SET Blokovano=0 WHERE ID=' + idDigiFile.ToString);
errMsg:= E.Message; // datMod.sqlQry11.FieldByName('ErrMsg').AsString; errMsg:= E.Message; // datMod.sqlQry11.FieldByName('ErrMsg').AsString;
{$IFDEF DEBUG} {$IFDEF DEBUG}
WriteLn ('Chyba 2 zpracovani downloadPDF id ' + idDigiFile.ToString + ' >> ' + errMsg); WriteLn ('Chyba 2 zpracovani downloadPDF id ' + idDigiFile.ToString + ' >> ' + errMsg);
@ -384,7 +399,7 @@
end; end;
end; end;
lQry.Next; lQry.Next;
end; end; // while
end; end;
finally finally
lQry.Close; lQry.Close;

View File

@ -0,0 +1,31 @@
-- dbo.ef_Vyroba_EvidROpR_MamNeuzavrenouPredchozi
CREATE FUNCTION dbo.ef_Vyroba_EvidROpR_MamNeuzavrenouPredchozi (@IDPrikaz INT, @Doklad INT, @Alt NCHAR(1) )
RETURNS BIT
AS
BEGIN
DECLARE
@retVal BIT=0,
@sCisOper NVARCHAR(4),
@iCisOper INT
DECLARE @idPredOperaci TABLE (ID INT NOT NULL)
SET @sCisOper=(SELECT TOP(1) TRIM(Operace) FROM dbo.TabPrPostup WITH(NOLOCK) WHERE IDPrikaz=@IDPrikaz AND Doklad=@Doklad AND Alt=@Alt AND IDOdchylkyDo IS NULL)
SET @iCisOper=TRY_PARSE(@sCisOper AS INT)
IF (@iCisOper IS NOT NULL)
BEGIN
-- zjisti IDcka operaci prede mnou (dle cisla operace)
INSERT @idPredOperaci (ID)
SELECT ID FROM dbo.TabPrPostup WITH(NOLOCK) WHERE IDPrikaz=@IDPrikaz AND IDOdchylkyDo IS NULL AND ISNULL(TRY_PARSE(TRIM(Operace) AS INT),0)<@iCisOper
-- jsou operace prede mnou ?
IF EXISTS(SELECT 1 FROM @idPredOperaci)
-- je nejaka co mam rozjetou v Evid.rozprac.operaci ?
IF EXISTS (SELECT 1 FROM dbo.TabEvidRozpracOperR r WITH(NOLOCK) JOIN dbo.TabEvidRozpracOper h WITH(NOLOCK) ON (h.ID=r.IDEvidRozpracOper)
JOIN dbo.TabPrPostup p WITH(NOLOCK) ON (p.IDPrikaz=@IDPrikaz AND p.IDOdchylkyDo IS NULL)
WHERE p.ID IN (SELECT ID FROM @idPredOperaci) AND h.Stav IN (10,20)
)
SET @retVal=1
END
RETURN @retVal
END

View File

@ -204,11 +204,11 @@ IF (@idPrednaOpOdv IS NOT NULL)
IF (@idJson IS NOT NULL) IF (@idJson IS NOT NULL)
DECLARE j CURSOR LOCAL FOR DECLARE j CURSOR LOCAL FOR
SELECT ID, JsonData, Objekt, Akce FROM dbo._hdc_ph_PrijataJsonData WHERE ID=@idJson SELECT ID, JsonData, Objekt, Akce FROM dbo._hdc_ph_PrijataJsonData WITH(NOLOCK) WHERE ID=@idJson
ELSE ELSE
DECLARE j CURSOR LOCAL FOR DECLARE j CURSOR LOCAL FOR
SELECT ID, JsonData, Objekt, Akce SELECT ID, JsonData, Objekt, Akce
FROM dbo._hdc_ph_PrijataJsonData FROM dbo._hdc_ph_PrijataJsonData WITH(NOLOCK)
WHERE Blokovano=0 WHERE Blokovano=0
AND DatZpracovani IS NULL AND DatZpracovani IS NULL
AND ISNULL(JSONData,N'')<>N'' AND ISNULL(JSONData,N'')<>N''
@ -273,6 +273,8 @@ WHILE (1=1)
CROSS APPLY OPENJSON(d3.operace, N'$') CROSS APPLY OPENJSON(d3.operace, N'$')
WITH ([prikazy] NVARCHAR(max) AS JSON) AS d4 WITH ([prikazy] NVARCHAR(max) AS JSON) AS d4
IF (@idVPr IS NOT NULL)
UPDATE dbo._hdc_ph_PrijataJsonData SET IDPrikaz=@idVPr WHERE ID=@idJson
IF (@idDatazoneOper IS NOT NULL) IF (@idDatazoneOper IS NOT NULL)
UPDATE dbo._hdc_ph_PrijataJsonData SET IdPHIdent=@idDatazoneOper WHERE ID=@idJson UPDATE dbo._hdc_ph_PrijataJsonData SET IdPHIdent=@idDatazoneOper WHERE ID=@idJson
@ -338,7 +340,7 @@ WHILE (1=1)
IF (@@FETCH_STATUS<>0) BREAK IF (@@FETCH_STATUS<>0) BREAK
SELECT @idDilec=p.IDTabKmen, @sklProVydejRP=rp.VydejMatPol_SkladProGenHlavDZ SELECT @idDilec=p.IDTabKmen, @sklProVydejRP=rp.VydejMatPol_SkladProGenHlavDZ
FROM dbo.TabPrikaz p INNER JOIN dbo.TabRadyPrikazu rp ON (rp.Rada=p.Rada) WHERE p.ID=@idVPr FROM dbo.TabPrikaz p WITH(NOLOCK) JOIN dbo.TabRadyPrikazu rp WITH(NOLOCK) ON (rp.Rada=p.Rada) WHERE p.ID=@idVPr
-- SET @operPredna=dbo.hf_ZarovnejOperaciTechPos(@operPredna) -- SET @operPredna=dbo.hf_ZarovnejOperaciTechPos(@operPredna)
/* /*
@ -375,7 +377,7 @@ WHILE (1=1)
IF (@idPrP IS NOT NULL) IF (@idPrP IS NOT NULL)
BEGIN BEGIN
-- korekce cisla dokladu, pred odvadeci opeaci -- korekce cisla dokladu, pred odvadeci opeaci
SELECT @dokl=ISNULL(MAX(Doklad),0)+1 FROM dbo.TabPrPostup WITH (TABLOCKX) WHERE IDPrikaz=@idVPr AND Doklad<9990 SELECT @dokl=ISNULL(MAX(Doklad),0)+1 FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND Doklad<9990
UPDATE dbo.TabPrPostup SET Doklad=@dokl, Odvadeci=0 WHERE ID=@idPrP UPDATE dbo.TabPrPostup SET Doklad=@dokl, Odvadeci=0 WHERE ID=@idPrP
END END
END END
@ -492,6 +494,8 @@ WHILE (1=1)
IF (CHARINDEX('skupina', @materialJson)>0) IF (CHARINDEX('skupina', @materialJson)>0)
UPDATE dbo._hdc_ph_PrijataJsonData SET MamMaterial=1 WHERE ID=@idJson UPDATE dbo._hdc_ph_PrijataJsonData SET MamMaterial=1 WHERE ID=@idJson
IF (@idVPr IS NOT NULL)
UPDATE dbo._hdc_ph_PrijataJsonData SET IDPrikaz=@idVPr WHERE ID=@idJson
IF (@idDatazoneOper IS NOT NULL) IF (@idDatazoneOper IS NOT NULL)
UPDATE dbo._hdc_ph_PrijataJsonData SET IdPHIdent=@idDatazoneOper WHERE ID=@idJson UPDATE dbo._hdc_ph_PrijataJsonData SET IdPHIdent=@idDatazoneOper WHERE ID=@idJson

View File

@ -0,0 +1,12 @@
IF OBJECT_ID(N'dbo._hdc_ph_PrijataJsonData', N'U') IS NOT NULL
BEGIN
/* 18.8.2025 */
IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'IDPrikaz') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD IDPrikaz INT NULL
DROP INDEX IF EXISTS EI_hdc_ph_PrijataJsonData_IDPrikaz ON dbo._hdc_ph_PrijataJsonData
CREATE NONCLUSTERED INDEX EI_hdc_ph_PrijataJsonData_IDPrikaz ON dbo._hdc_ph_PrijataJsonData (IDPrikaz)
WITH ( PAD_INDEX = OFF, DROP_EXISTING = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
/* 21.8.2025 */
IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'MamMaterial') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD MamMaterial BIT NOT NULL DEFAULT 0
END

Binary file not shown.

View File

@ -1,9 +1,11 @@
col_TabPredna_EXT RCDATA .\sql\col_TabPredna_EXT.sql ef_Vyroba_EvidROpR_MamNeuzavrenouPredchozi RCDATA .\sql\ef_Vyroba_EvidROpR_MamNeuzavrenouPredchozi.sql
col_TabKmenZbozi_EXT RCDATA .\sql\col_TabKmenZbozi_EXT.sql tbl_hdc_ph_PrijataJsonData_rozsireni RCDATA .\sql\tbl_hdc_ph_PrijataJsonData_rozsireni.sql
col_TabEvidRozpracOper_EXT RCDATA .\sql\col_TabEvidRozpracOper_EXT.sql col_TabPredna_EXT RCDATA .\sql\col_TabPredna_EXT.sql
col_TabPrPostup_EXT RCDATA .\sql\col_TabPrPostup_EXT.sql col_TabKmenZbozi_EXT RCDATA .\sql\col_TabKmenZbozi_EXT.sql
ep_Vyroba_GenVydejZeMzdy RCDATA .\sql\ep_Vyroba_GenVydejZeMzdy.sql col_TabEvidRozpracOper_EXT RCDATA .\sql\col_TabEvidRozpracOper_EXT.sql
ep_Vyroba_GenOdvodZeMzdy RCDATA .\sql\ep_Vyroba_GenOdvodZeMzdy.sql col_TabPrPostup_EXT RCDATA .\sql\col_TabPrPostup_EXT.sql
ep_Vyroba_InsertEvidRozpracOper RCDATA .\sql\ep_Vyroba_InsertEvidRozpracOper.sql ep_Vyroba_GenVydejZeMzdy RCDATA .\sql\ep_Vyroba_GenVydejZeMzdy.sql
ep_Vyroba_InsertEvidRozpracOperPol RCDATA .\sql\ep_Vyroba_InsertEvidRozpracOperPol.sql ep_Vyroba_GenOdvodZeMzdy RCDATA .\sql\ep_Vyroba_GenOdvodZeMzdy.sql
ep_HDCDZApi_ZpracujPrijataData RCDATA .\sql\ep_HDCDZApi_ZpracujPrijataData.sql ep_Vyroba_InsertEvidRozpracOper RCDATA .\sql\ep_Vyroba_InsertEvidRozpracOper.sql
ep_Vyroba_InsertEvidRozpracOperPol RCDATA .\sql\ep_Vyroba_InsertEvidRozpracOperPol.sql
ep_HDCDZApi_ZpracujPrijataData RCDATA .\sql\ep_HDCDZApi_ZpracujPrijataData.sql

Binary file not shown.

View File

@ -0,0 +1,47 @@
-- dbo.BP_Gatema_SDDecodeBarCode
CREATE PROCEDURE dbo.BP_Gatema_SDDecodeBarCode
@TypBC NVARCHAR(50), -- '', 'CODABAR', 'EAN 13', 'EAN 128', 'CODE 128', 'CODE 39', 'DATAMATRIX', 'QRCODE', 'I2OF5', 'EAN 8', 'PDF417'
@BarCode NVARCHAR(2000),
@Pozadavek INT, -- -1=um<75>st<73>n<EFBFBD>, 0=SSCC, 1=BC zbo<62><6F>, 10=<3D>ar<61>e, 15=dat.exp., 30=mno<6E>stv<74>, 90=ID p<><70>kaz
@IDOrg INT=NULL
AS
BEGIN
-- Vol<6F> se p<>i pokusu z<>skat z <20><>rov<6F>ho k<>du konkr<6B>tn<74> informaci. Pokud procedura nechce prov<6F>d<EFBFBD>t dek<65>dov<6F>n<EFBFBD>, tak se jen ukon<6F><6E>,
-- v opa<70>n<EFBFBD>m p<><70>pad<61> vrac<61> jeden z<>znam s jedn<64>m po<70>adovan<61>m <20>dajem (typ text/datum/<2F><>slo)
-- Pokud vr<76>t<EFBFBD> z<>znam (text/<2F><>slo/datum), tak standardn<64> dek<65>dov<6F>n<EFBFBD> se ji<6A> nebude prov<6F>d<EFBFBD>t
-- IF (@Pozadavek=1) AND (@TypBC=N'PDF417')
-- SELECT LEFT(@BarCode,4)
DECLARE
@fncCode INT,
@typ NVARCHAR(50)=N'???',
@vraceno NVARCHAR(50)=N'',
@l SMALLINT
IF (@Pozadavek=-1)
SET @typ=N'um<EFBFBD>st<EFBFBD>n<EFBFBD>'
IF (@Pozadavek=1)
SET @typ=N'barcode'
IF (@Pozadavek=10)
SET @typ=N'<EFBFBD>ar<EFBFBD>e'
IF (@Pozadavek=15)
SET @typ=N'dat.exp.'
IF (@Pozadavek=30)
SET @typ=N'mno<EFBFBD>stv<EFBFBD>'
IF (@Pozadavek=90)
SET @typ=N'ID p<><70>kaz'
IF (@typ=N'???')
SET @typ=CONVERT(nvarchar, @Pozadavek)
SET @l = LEN(@BarCode)
INSERT dbo._hdc_ph_Log (LogText) SELECT @typ + N' >> ' + @Barcode
END

View File

@ -0,0 +1,19 @@
DECLARE @currDat DATETIME=GETDATE()
IF (COL_LENGTH(N'dbo.TabPostup_EXT', N'_PlanovanaOperace') IS NULL)
BEGIN
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPostup', @NazevAtrSys=N'_PlanovanaOperace', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Operace pro KapacPl',
@NazevAtrVerZkr=N'Pl<EFBFBD>novan<EFBFBD> operace', @TypAtr=N'BIT', @MaskaAtr=NULL, @VerejnyAtr=N'V', @SirkaSloupceAtr=16, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=1,
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL,
@TypAtrSQL=N'BIT', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=N'Operace pro kapacitn<74> pl<70>n', @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @VazbaTypMoje=2
EXEC dbo.hp_ExterniTabulka @Tab=N'TabPostup', @Atr=N'_PlanovanaOperace', @Typ=N'BIT'
END
IF (COL_LENGTH(N'dbo.TabPostup_EXT', N'_RychlostOperKsHod') IS NULL)
BEGIN
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPostup', @NazevAtrSys=N'_RychlostOperKsHod', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Rychlost operace (ks/hod)',
@NazevAtrVerZkr=N'Rychlost ks/hod', @TypAtr=N'NUMERIC', @MaskaAtr=NULL, @VerejnyAtr=N'V', @SirkaSloupceAtr=16, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=1,
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL,
@TypAtrSQL=N'NUMERIC(19,6)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=N'Rychlost operace v ks/hod pro kapacitn<74> pl<70>n', @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @VazbaTypMoje=2
EXEC dbo.hp_ExterniTabulka @Tab=N'TabPostup', @Atr=N'_RychlostOperKsHod', @Typ=N'NUMERIC(19,6)'
END

View File

@ -1,12 +1,36 @@
DECLARE @currDat DATETIME=GETDATE() DECLARE @currDat DATETIME=GETDATE()
IF (COL_LENGTH(N'dbo.TabPrPostup_EXT', N'_PaletListProVydej') IS NULL) IF (COL_LENGTH(N'dbo.TabPrPostup_EXT', N'_PaletListProVydej') IS NULL)
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPrPostup', @NazevAtrSys=N'_PaletListProVydej', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Paletov<EFBFBD> list pro v<>dej', BEGIN
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPrPostup', @NazevAtrSys=N'_PaletListProVydej', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Paletov<EFBFBD> list pro v<>dej',
@NazevAtrVerZkr=N'Pal.list.v<>dej', @TypAtr=N'NVARCHAR', @MaskaAtr=NULL, @VerejnyAtr=N'V', @SirkaSloupceAtr=16, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0, @NazevAtrVerZkr=N'Pal.list.v<>dej', @TypAtr=N'NVARCHAR', @MaskaAtr=NULL, @VerejnyAtr=N'V', @SirkaSloupceAtr=16, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0,
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL, @KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL,
@TypAtrSQL=N'NVARCHAR(100)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=N'', @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1 @TypAtrSQL=N'NVARCHAR(100)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=N'', @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @VazbaTypMoje=1
EXEC dbo.hp_ExterniTabulka @Tab=N'TabPrPostup', @Atr=N'_PaletListProVydej', @Typ=N'NVARCHAR(100)'
END
IF (COL_LENGTH(N'dbo.TabPrPostup_EXT', N'_SarzeProVydej') IS NULL) IF (COL_LENGTH(N'dbo.TabPrPostup_EXT', N'_SarzeProVydej') IS NULL)
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPrPostup', @NazevAtrSys=N'_SarzeProVydej', @Skupina=N'HDCDZApi', @NazevAtrVer=N'<EFBFBD>arze pro v<>dej', BEGIN
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPrPostup', @NazevAtrSys=N'_SarzeProVydej', @Skupina=N'HDCDZApi', @NazevAtrVer=N'<EFBFBD>arze pro v<>dej',
@NazevAtrVerZkr=N'<EFBFBD>ar<EFBFBD>e v<>dej', @TypAtr=N'NVARCHAR', @MaskaAtr=NULL, @VerejnyAtr=N'V', @SirkaSloupceAtr=16, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0, @NazevAtrVerZkr=N'<EFBFBD>ar<EFBFBD>e v<>dej', @TypAtr=N'NVARCHAR', @MaskaAtr=NULL, @VerejnyAtr=N'V', @SirkaSloupceAtr=16, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0,
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL, @KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL,
@TypAtrSQL=N'NVARCHAR(100)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=N'<EFBFBD>ar<EFBFBD>e pl<70>novan<61> pro v<>dej (naskenovan<61>)', @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1 @TypAtrSQL=N'NVARCHAR(100)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=N'<EFBFBD>ar<EFBFBD>e pl<70>novan<61> pro v<>dej (naskenovan<61>)', @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @VazbaTypMoje=1
EXEC dbo.hp_ExterniTabulka @Tab=N'TabPrPostup', @Atr=N'_SarzeProVydej', @Typ=N'NVARCHAR(100)'
END
IF (COL_LENGTH(N'dbo.TabPrPostup_EXT', N'_PlanovanaOperace') IS NULL)
BEGIN
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPrPostup', @NazevAtrSys=N'_PlanovanaOperace', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Pl<EFBFBD>novan<EFBFBD> operace (do KapacPl)',
@NazevAtrVerZkr=N'Pl<EFBFBD>n.oper.', @TypAtr=N'BIT', @MaskaAtr=NULL, @VerejnyAtr=N'V', @SirkaSloupceAtr=8, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0,
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL,
@TypAtrSQL=N'BIT', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=N'Operace pro kapacitn<74> pl<70>n', @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @VazbaTypMoje=2
EXEC dbo.hp_ExterniTabulka @Tab=N'TabPrPostup', @Atr=N'_PlanovanaOperace', @Typ=N'BIT'
END
IF (COL_LENGTH(N'dbo.TabPrPostup_EXT', N'_RychlostOperKsHod') IS NULL)
BEGIN
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPrPostup', @NazevAtrSys=N'_RychlostOperKsHod', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Rychlost operace (ks/hod)',
@NazevAtrVerZkr=N'Rychlost ks/hod', @TypAtr=N'NUMERIC', @MaskaAtr=NULL, @VerejnyAtr=N'V', @SirkaSloupceAtr=16, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0,
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL,
@TypAtrSQL=N'NUMERIC(19,6)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=N'Rychlost operace v ks/hod pro kapacitn<74> pl<70>n', @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @VazbaTypMoje=2
EXEC dbo.hp_ExterniTabulka @Tab=N'TabPrPostup', @Atr=N'_RychlostOperKsHod', @Typ=N'NUMERIC(19,6)'
END

View File

@ -0,0 +1,67 @@
-- dbo.ep_GenerovaniDokladuOZ_HDC
CREATE PROCEDURE dbo.ep_GenerovaniDokladuOZ_HDC
@IDDoklad INT
AS
SET NOCOUNT ON
DECLARE
@cnt INT,
@errMsg NVARCHAR(500)
DECLARE
@idDZOld INT,
@dpz TINYINT,
@radaDokl NVARCHAR(3),
@skl NVARCHAR(30),
@cOrg INT,
@idOrg INT,
@dzDatPorizeni DATETIME,
@dzMena NVARCHAR(3),
@dzKurz NUMERIC(19,6),
@dzKurzE NUMERIC(19,6),
@vstC TINYINT,
@jednM INT
DECLARE
@sklMatHlavni NVARCHAR(30),
@sklTechnolog NVARCHAR(30), -- "technologicky" sklad, prijmy/vydeje z prikazu
@sklPekarna NVARCHAR(30)
SELECT @dpz=DruhPohybuZbo, @skl=IDSklad, @radaDokl=RadaDokladu, @cOrg=CisloOrg, @dzMena=Mena, @dzKurz=Kurz, @dzKurzE=KurzEuro,
@dzDatPorizeni=DatPorizeni, @vstC=VstupniCena, @jednM=JednotkaMeny
FROM dbo.TabDokladyZbozi WHERE ID=@IDDoklad
IF (@sklMatHlavni IS NULL)
SELECT @sklMatHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavn<EFBFBD> sklad - Materi<72>l' AND CisloStr LIKE N'3%'
IF (@sklTechnolog IS NULL)
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE<4E><45>%' AND Nazev NOT LIKE N'%polotov%' AND CisloStr LIKE N'2%'
IF (@sklTechnolog IS NULL)
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%sklad%v<>dej%' AND CisloStr LIKE N'2%'
IF (@sklPekarna IS NULL)
SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'V<EFBFBD>roba - Pek<65>rna' AND CisloStr LIKE N'2%'
IF (@dpz=4) -- vydej v evid.cene
BEGIN
IF (@radaDokl=N'231') -- prevodka
BEGIN
IF (@skl=@sklMatHlavni) -- na hlavnim skladu materialu
BEGIN
-- mam nejakeho predka ?
SET @idDZOld = (SELECT TOP(1) IDOldDoklad FROM dbo.TabPohybyZbozi WHERE IDDoklad=@IDDoklad AND IdOldDoklad IS NOT NULL)
-- jsem vydejka ze skladu materialu, puvodem z expedaku pozadavku na material ? (rada 550)
IF EXISTS (SELECT 1 FROM dbo.TabDokladyZbozi WHERE ID=@idDZOld AND DruhPohybuZbo=9 AND RadaDokladu=N'550' AND IDSklad=@sklMatHlavni)
BEGIN
UPDATE dbo.TabDokladyZbozi SET DruhPohybuPrevod=0, TypPrevodky=N'281', IdSkladPrevodu=@sklPekarna, PrevodRealizovat=0 WHERE ID=@IDDoklad
END
END -- @skl=@sklMatHlavni
END
END

View File

@ -6,7 +6,8 @@ AS
-- HD Consulting Strakonice, T. Buzin -- HD Consulting Strakonice, T. Buzin
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !! -- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !!
-- vola se na konci procesu realizace prijemky (po uskutecneni prijmu ale pred konecnym COMMIT TRAN) -- vola se na konci procesu realizace prijemky (po uskutecneni prijmu ale pred konecnym COMMIT TRAN)
-- nastaveni skladu lze ovlivnit pres #TabDefiniceProP01 (HlavniSkladMat NVARCHAR(30), TechnologickySklad NVARCHAR(30), SkladVyrobaPekarna NVARCHAR(30) ) -- nastaveni skladu lze ovlivnit pres #TabDefiniceProP01 (HlavniSkladMat NVARCHAR(30), TechnologickySklad NVARCHAR(30),
-- TechnologickySkladPolo NVARCHAR(30), SkladVyrobaPekarna NVARCHAR(30) )
SET NOCOUNT ON SET NOCOUNT ON
@ -22,6 +23,7 @@ DECLARE
DECLARE DECLARE
@sklHlavni NVARCHAR(30), @sklHlavni NVARCHAR(30),
@sklTechnolog NVARCHAR(30), @sklTechnolog NVARCHAR(30),
@sklTechnologPolo NVARCHAR(30),
@sklPekarna NVARCHAR(30), @sklPekarna NVARCHAR(30),
@sklPrijem NVARCHAR(30) @sklPrijem NVARCHAR(30)
@ -105,19 +107,23 @@ IF (@radaDokl=N'281') AND (@sklDokl=@sklPekarna) // prijemka/prevodka na pekarnu
-- na "zrcadlovy" technologicky sklad (neni uctovany), ktery slouzi jen pro vydejky z Vyrobnich prikazu -- na "zrcadlovy" technologicky sklad (neni uctovany), ktery slouzi jen pro vydejky z Vyrobnich prikazu
-- z tech se denne generuje sumacni na hlavnim sklade -- z tech se denne generuje sumacni na hlavnim sklade
IF OBJECT_ID(N'tempdb..#TabDefiniceProP01', N'U') IS NOT NULL IF OBJECT_ID(N'tempdb..#TabDefiniceProP01', N'U') IS NOT NULL
SELECT TOP(1) @sklHlavni=HlavniSkladMat, @sklPekarna=SkladVyrobaPekarna, @sklTechnolog=TechnologickySklad FROM #TabDefiniceProP01 SELECT TOP(1) @sklHlavni=HlavniSkladMat, @sklPekarna=SkladVyrobaPekarna, @sklTechnolog=TechnologickySklad, @sklTechnologPolo=TechnologickySkladPolo
FROM #TabDefiniceProP01
IF (@sklHlavni IS NULL) IF (@sklHlavni IS NULL)
SELECT @sklHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavn<EFBFBD> sklad - Materi<72>l' SELECT @sklHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavn<EFBFBD> sklad - Materi<72>l' AND CisloStr LIKE N'3%'
IF (@sklTechnolog IS NULL) IF (@sklTechnolog IS NULL)
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE<4E><45>%' SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE<4E><45>%' AND Nazev NOT LIKE N'%polotov%' AND CisloStr LIKE N'2%'
IF (@sklTechnolog IS NULL) IF (@sklTechnolog IS NULL)
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technologick<EFBFBD> sklad%v<>dej%' SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technologick<EFBFBD> sklad%v<>dej%' AND CisloStr LIKE N'2%'
IF (@sklTechnologPolo IS NULL)
SELECT @sklTechnologPolo=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE<4E><45>%pol%' AND CisloStr LIKE N'2%'
IF (@sklPekarna IS NULL) IF (@sklPekarna IS NULL)
SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'V<EFBFBD>roba - Pek<65>rna' SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'V<EFBFBD>roba - Pek<65>rna' AND CisloStr LIKE N'2%'
-- jen prijemka/prevodka na sklad Pekarna (211) -- jen prijemka/prevodka na sklad Pekarna (211)
IF (@dpz=0) AND (@radaDokl IN (N'281')) AND (@sklDokl=@sklPekarna) AND (@sklTechnolog IS NOT NULL) -- vypnuto - prijemka pro odpis z prikazu se dela pred vydejkou (viz dbo.ep_Vyroba_GenVydejZeMzdy:prijemka materialu pro vydejku )
IF (1=0) AND (@dpz=0) AND (@radaDokl IN (N'281')) AND (@sklDokl=@sklPekarna) AND (@sklTechnolog IS NOT NULL)
BEGIN BEGIN
EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZDst OUT, @Sklad=@sklTechnolog, @DruhPohybu=@dpz, @RadaDokladu=@radaDokl, EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZDst OUT, @Sklad=@sklTechnolog, @DruhPohybu=@dpz, @RadaDokladu=@radaDokl,
@Mena=@dzMena, @CisloOrg=@cOrg, @DatumPorizeni=@dzDatum @Mena=@dzMena, @CisloOrg=@cOrg, @DatumPorizeni=@dzDatum

View File

@ -1,7 +1,8 @@
-- dbo.ep_Vyroba_DoplnSkladProVydejDleDokladu -- dbo.ep_Vyroba_DoplnSkladProVydejDleDokladu
CREATE PROCEDURE dbo.ep_Vyroba_DoplnSkladProVydejDleDokladu CREATE PROCEDURE dbo.ep_Vyroba_DoplnSkladProVydejDleDokladu
@IDDoklad INT, @IDDoklad INT,
@errMsg NVARCHAR(500)=N'' OUT @errMsg NVARCHAR(500)=N'' OUT,
@IDDokladPrijem INT=NULL OUT
AS AS
-- HD Consulting Strakonice, T. Buzin -- HD Consulting Strakonice, T. Buzin
@ -10,7 +11,7 @@ AS
SET NOCOUNT ON SET NOCOUNT ON
IF EXISTS(SELECT 1 FROM dbo.TabDokladyZbozi WHERE Realizovano=1) IF EXISTS(SELECT 1 FROM dbo.TabDokladyZbozi WHERE ID=@IDDoklad AND Realizovano=1)
RETURN RETURN
@ -37,6 +38,7 @@ DECLARE
DECLARE DECLARE
@sklMatHlavni NVARCHAR(30), @sklMatHlavni NVARCHAR(30),
@sklTechnolog NVARCHAR(30), @sklTechnolog NVARCHAR(30),
@sklTechnologPolo NVARCHAR(30),
@sklPekarna NVARCHAR(30), @sklPekarna NVARCHAR(30),
@poslSarze NVARCHAR(100), @poslSarze NVARCHAR(100),
@poslPalList NVARCHAR(100) @poslPalList NVARCHAR(100)
@ -61,13 +63,15 @@ DELETE FROM @pol
SET @uziv = 0 SET @uziv = 0
IF (@sklMatHlavni IS NULL) IF (@sklMatHlavni IS NULL)
SELECT @sklMatHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavní sklad - Materiál' SELECT @sklMatHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavn<EFBFBD> sklad - Materi<EFBFBD>l' AND CisloStr LIKE N'3%'
IF (@sklTechnolog IS NULL) IF (@sklTechnolog IS NULL)
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NOVÝ% sklad%výdej%' SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE<EFBFBD><EFBFBD>%' AND Nazev NOT LIKE N'%polotov%' AND CisloStr LIKE N'2%'
IF (@sklTechnolog IS NULL) IF (@sklTechnolog IS NULL)
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%sklad%výdej%' SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%sklad%v<EFBFBD>dej%' AND CisloStr LIKE N'2%'
IF (@sklTechnologPolo IS NULL)
SELECT @sklTechnologPolo=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE<4E><45>%pol%' AND CisloStr LIKE N'2%'
IF (@sklPekarna IS NULL) IF (@sklPekarna IS NULL)
SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Výroba - Pekárna' SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'V<EFBFBD>roba - Pek<EFBFBD>rna' AND CisloStr LIKE N'2%'
@ -92,10 +96,10 @@ WHILE (1=1)
AND p.Mnozstvi>0 AND p.Mnozstvi>0
AND d.DruhPohybuZbo IN (2,4) AND d.DruhPohybuZbo IN (2,4)
AND d.Realizovano=0 AND d.Realizovano=0
AND d.DatPorizeni<@datPorizeni) AND DATEDIFF(day, d.DatPorizeni, @datPorizeni)<2)
, 0) , 0)
SET @mnozSkl = ISNULL( (SELECT Mnozstvi FROM dbo.TabStavSkladu WHERE ID=@idSS), 0) SET @mnozSkl = ISNULL( (SELECT Mnozstvi FROM dbo.TabStavSkladu WHERE ID=@idSS), 0)
SET @mnozChybi = @mnozSkl - @mnozPZ - @mnozNevyd SET @mnozChybi = -1.0 * (@mnozSkl - @mnozPZ - @mnozNevyd)
IF (@mnozChybi>0) IF (@mnozChybi>0)
BEGIN BEGIN
SET @idSSPek = NULL SET @idSSPek = NULL
@ -159,7 +163,7 @@ IF EXISTS(SELECT 1 FROM @pol)
DEALLOCATE c DEALLOCATE c
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZNew UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZNew
EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=@idDZ, @AktualizaceSlev=0 EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=@idDZNew, @AktualizaceSlev=0
-- realizace -- realizace
EXEC dbo.hp_Realizuj_Prijem @ID=@idDZNew, @DatumRealizace=@datNasklad, @Uzivatel=@uziv, @BylaChyba=@bChyba OUT EXEC dbo.hp_Realizuj_Prijem @ID=@idDZNew, @DatumRealizace=@datNasklad, @Uzivatel=@uziv, @BylaChyba=@bChyba OUT
@ -171,8 +175,12 @@ IF EXISTS(SELECT 1 FROM @pol)
SET @errMsg = ERROR_MESSAGE() SET @errMsg = ERROR_MESSAGE()
IF (@tranPred=0) AND (@@TRANCOUNT>0) IF (@tranPred=0) AND (@@TRANCOUNT>0)
ROLLBACK TRAN ROLLBACK TRAN
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba (3) p<><70>jemky korekce (ID ' + CONVERT(nvarchar, @idDZNew) + N') naskladn<64>n<EFBFBD> pro v<>dejku: ' + @errMsg, @IDDoklad
END CATCH END CATCH
END END
SET @IDDokladPrijem=@idDZNew

View File

@ -0,0 +1,140 @@
-- dbo.ep_Vyroba_GenDenniVydejka
CREATE PROCEDURE dbo.ep_Vyroba_GenDenniVydejka
@proDen DATETIME=NULL
AS
DECLARE
@errMsg NVARCHAR(500),
@cnt INT
DECLARE
@sklPekarna NVARCHAR(30),
@sklTechnolog NVARCHAR(30),
@sklTechnologHV NVARCHAR(30),
@radaDoklVydej NVARCHAR(3),
@radaStorno NVARCHAR(3),
@idDZVydej INT,
@idPZOld INT,
@idZboSkladOld INT,
@idZboSkladNew INT,
@idKmen INT,
@idPZNew INT,
@idVCK INT,
@idVCS INT,
@paletList NVARCHAR(50),
@sarze NVARCHAR(50),
@mnoz NUMERIC(19,6)
DECLARE
@dzMena NVARCHAR(3),
@dzKurz NUMERIC(19,6),
@dzKurzE NUMERIC(19,6),
@vstC TINYINT,
@jednM INT
IF (@sklPekarna IS NULL)
SELECT TOP(1) @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'V<EFBFBD>roba - Pek<65>rna' AND CisloStr LIKE N'2%'
IF (@sklTechnolog IS NULL)
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE%' AND Nazev NOT LIKE N'%polotov%' AND Nazev NOT LIKE N'%HV%' AND CisloStr LIKE N'2%'
IF (@sklTechnolog IS NULL)
SET @sklTechnolog = N'261'
IF (@sklTechnologHV IS NULL)
SELECT @sklTechnologHV=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE%' AND Nazev LIKE N'%HV%' AND CisloStr LIKE N'2%'
IF (@sklTechnologHV IS NULL)
SET @sklTechnologHV = N'262'
SET @radaDoklVydej=N'223'
SET @radaStorno = N'229'
IF (@proDen IS NULL)
SET @proDen=GETDATE()
SET @proDen = dbo.hf_TruncDate(@proDen)
SET @proDen = DATEADD(second, -1, @proDen)
-- ma vubec smysl to delat ?
IF NOT EXISTS (SELECT 1 FROM dbo.TabPohybyZbozi p WITH(NOLOCK) JOIN dbo.TabDokladyZbozi d WITH(NOLOCK) ON (d.ID=p.IDDoklad)
WHERE d.IDSklad IN (@sklTechnolog) AND d.RadaDokladu IN (@radaDoklVydej, @radaStorno) AND d.Realizovano=1
AND dbo.hf_TruncDate(d.DatPorizeni)=dbo.hf_TruncDate(@proDen) AND d.CisloOrg=0
)
RETURN
SET @cnt=ISNULL( (SELECT COUNT(ID) FROM dbo.TabDokladyZbozi WHERE IDSklad=@sklPekarna AND RadaDokladu=@radaDoklVydej AND DruhPohybuZbo=4
AND dbo.hf_TruncDate(DatPorizeni)=dbo.hf_TruncDate(@proDen) AND CisloOrg=0 AND Realizovano=0), 0)
IF (@cnt=0)
EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZVydej OUT, @Sklad=@sklPekarna, @DruhPohybu=4, @RadaDokladu=@radaDoklVydej, @CisloOrg=0, @DatumPorizeni=@proDen
ELSE
IF (@cnt=1)
SET @idDZVydej=(SELECT ID FROM dbo.TabDokladyZbozi WHERE IDSklad=@sklPekarna AND RadaDokladu=@radaDoklVydej AND DruhPohybuZbo=4
AND dbo.hf_TruncDate(DatPorizeni)=dbo.hf_TruncDate(@proDen) AND CisloOrg=0 AND Realizovano=0)
ELSE
SET @idDZVydej=(SELECT TOP(1) ID FROM dbo.TabDokladyZbozi WHERE IDSklad=@sklPekarna AND RadaDokladu=@radaDoklVydej AND DruhPohybuZbo=4
AND dbo.hf_TruncDate(DatPorizeni)=dbo.hf_TruncDate(@proDen) AND CisloOrg=0 AND Realizovano=0 ORDER BY DatPorizeni DESC)
IF (@idDZVydej IS NOT NULL)
BEGIN
SELECT @dzMena=Mena, @dzKurz=Kurz, @dzKurzE=KurzEuro, @jednM=JednotkaMeny, @vstC=VstupniCena FROM dbo.TabDokladyZbozi WHERE ID=@idDZVydej
-- begin: polozky materialu, tj. ze skladu 261
DECLARE p CURSOR LOCAL FOR
SELECT -1.0*SUM(p.MnozstviDruhove), p.IDZboSklad
FROM dbo.TabPohybyZbozi p WITH(NOLOCK)
JOIN dbo.TabDokladyZbozi d WITH(NOLOCK) ON (d.ID=p.IDDoklad)
JOIN dbo.TabStavSkladu s WITH(NOLOCK) ON (s.ID=p.IDZboSklad)
JOIN dbo.TabKmenZbozi k WITH(NOLOCK) ON (k.ID=s.IDKmenZbozi)
WHERE d.IDSklad=@sklTechnolog
AND d.RadaDokladu IN (@radaDoklVydej, @radaStorno)
AND d.DruhPohybuZbo IN (3,4)
AND d.Realizovano=1
AND p.Mnozstvi>0
AND k.Sluzba=0
AND dbo.hf_TruncDate(d.DatPorizeni)=dbo.hf_TruncDate(@proDen)
GROUP BY p.IDZboSklad, k.Nazev1
ORDER BY k.Nazev1
OPEN p
WHILE (1=1)
BEGIN
FETCH NEXT FROM p INTO @mnoz, @idZboSkladOld
IF (@@FETCH_STATUS<>0) BREAK
SELECT @idKmen=IDKmenZbozi FROM dbo.TabStavSkladu WHERE ID=@idZboSkladOld
SELECT @idZboSkladNew=ID FROM dbo.TabStavSkladu WHERE IDKmenZbozi=@idKmen AND IDSklad=@sklPekarna
SET @idPZNew=(SELECT ID FROM dbo.TabPohybyZbozi WHERE IDDoklad=@idDZVydej AND IDZboSklad=@idZboSkladNew)
IF (@idPZNew IS NULL)
EXEC dbo.hp_InsertPolozkyOZ @ident=@idPZNew OUT, @IDDoklad=@idDZVydej, @DruhPohybu=4, @CisloOrg=0, @IDZboSklad=@idZboSkladNew, @Mena=@dzMena,
@Kurz=@dzKurz, @KurzEuro=@dzKurzE, @JednotkaMeny=@jednM, @SazbaSD=NULL, @SazbaDPH=NULL, @ZakazanoDPH=0,
@VstupniCena=@vstC, @PovolitDuplicitu=0, @PovolitBlokovane=1, @Mnozstvi=@mnoz
IF (@idPZNew IS NOT NULL)
INSERT dbo._TabVyroba_VydejMatSarze (IDPohybZbozi, IDPohybZboziNew, PaletovyList, Sarze, IDKmenZbozi, Mnozstvi)
SELECT p.ID, @idPZNew, ISNULL(pe._Vyroba_PaletList, N''), ISNULL(_Vyroba_Sarze, N''), s.IDKmenZbozi, -1.0*p.Mnozstvi
FROM dbo.TabPohybyZbozi p WITH(NOLOCK)
LEFT JOIN dbo.TabPohybyZbozi_EXT pe WITH(NOLOCK) ON (pe.ID=p.ID)
JOIN dbo.TabDokladyZbozi d WITH(NOLOCK) ON (d.ID=p.IDDoklad)
JOIN dbo.TabStavSkladu s WITH(NOLOCK) ON (s.ID=p.IDZboSklad)
JOIN dbo.TabKmenZbozi k WITH(NOLOCK) ON (k.ID=s.IDKmenZbozi)
WHERE d.IDSklad=@sklTechnolog
AND d.RadaDokladu IN (@radaDoklVydej, @radaStorno)
AND d.DruhPohybuZbo IN (3,4)
AND d.Realizovano=1
AND p.Mnozstvi>0
AND k.Sluzba=0
AND p.IDZboSklad=@idZboSkladOld
AND dbo.hf_TruncDate(d.DatPorizeni)=dbo.hf_TruncDate(@proDen)
ORDER BY k.Nazev1
END
CLOSE p
DEALLOCATE p
-- end: polozky materialu, tj. ze skladu 261
END

View File

@ -0,0 +1,283 @@
-- dbo.ep_Vyroba_GenObjednavkuMatDoVyroby
CREATE PROCEDURE dbo.ep_Vyroba_GenObjednavkuMatDoVyroby
@cilovySklad NVARCHAR(30)=N'',
@radaDokl NVARCHAR(3)=N'',
@druhPohybuZbo TINYINT=4,
@errMsg NVARCHAR(500)=N'' OUT
AS
-- HD Consulting Strakonice, T. Buzin
-- !! proceduru neupravujte, bude stejne pregenerovana pri spusteni pluginu Pekarna nebo pri startu Windows sluzby HDCDZApi !!
SET NOCOUNT ON
DECLARE
@tranPred INT,
@cnt INT
DECLARE
@idObj INT,
@radaPrijem NVARCHAR(3),
@druhPohybuZboPrijem TINYINT,
@idDoklad INT,
@datumDokladuMat DATETIME,
@datumDokladuFin DATETIME,
@genDokladMat BIT=0,
@idDokladMat INT,
@genDokladFin BIT=0,
@idDokladFin INT,
@cOrg INT=0,
@dzMena NVARCHAR(3),
@dzKurz NUMERIC(19,6),
@dzKurzEur NUMERIC(19,6),
@jednM INT,
@vstC TINYINT,
@idPohyb INT,
@idPZ INT,
@idZboSklad INT,
@idKmen INT,
@idKZ INT,
@sz NVARCHAR(3),
@rc NVARCHAR(30),
@sarze NVARCHAR(100),
@paletList NVARCHAR(100),
@skladMat NVARCHAR(30),
@skladFin NVARCHAR(30),
@mnoz NUMERIC(19,6),
@mnozVydano NUMERIC(19,6),
@material BIT
IF OBJECT_ID(N'tempdb..#VyrobaGenObjednavkuMatDoVyroby', N'U') IS NOT NULL
SELECT TOP(1) @skladMat=SkladMaterial, @skladFin=SkladVyrobky
FROM #VyrobaGenObjednavkuMatDoVyroby
SET @radaDokl = ISNULL(@radaDokl, N'231')
SET @druhPohybuZbo = ISNULL(@druhPohybuZbo, 4)
IF NOT EXISTS(SELECT 1 FROM dbo.TabDruhDokZbo WHERE RadaDokladu=@radaDokl AND DruhPohybuZbo=@druhPohybuZbo)
RETURN
SELECT @cilovySklad=IDSkladPrevodu, @radaPrijem=TypPrevodky, @druhPohybuZboPrijem=TabDruhDZ_DruhPohybuZboPre
FROM dbo.TabDruhDokZbo WHERE RadaDokladu=@radaDokl AND DruhPohybuZbo=@druhPohybuZbo
SET @radaPrijem = ISNULL(@radaPrijem, N'281')
SET @druhPohybuZboPrijem = ISNULL(@druhPohybuZboPrijem, 0)
IF NOT EXISTS (SELECT 1 FROM dbo.TabDruhDokZbo WHERE RadaDokladu=@radaPrijem AND DruhPohybuZbo=@druhPohybuZboPrijem)
RETURN
SET @cilovySklad = ISNULL(@cilovySklad, N'')
IF (@cilovySklad=N'')
SET @cilovySklad = N'211'
SET @skladMat = ISNULL(@skladMat, N'')
IF (@skladMat=N'')
SET @skladMat = N'311'
SET @skladFin = ISNULL(@skladFin, N'')
IF (@skladFin=N'')
SET @skladFin = N'312'
SET @genDokladMat=0
IF EXISTS (SELECT 1 FROM dbo._TabVyroba_Objednavky o WHERE o.Splneno=0 AND o.OdmitnutoSkladem=0 AND o.NocniObjednavka=0 AND o.Storno=0 AND o.Vratka=0
AND o.JeMaterial=1 AND o.Blokovano=0 AND (o.Mnozstvi-ISNULL( (SELECT SUM(Mnozstvi) FROM dbo._TabVyroba_Objednavky_Pol WHERE IDHlava=o.ID), 0))>0
)
BEGIN
SET @genDokladMat=1
SET @datumDokladuMat = (SELECT MIN(o.DatPorizeni) FROM dbo._TabVyroba_Objednavky o WHERE o.Splneno=0 AND o.OdmitnutoSkladem=0 AND o.NocniObjednavka=0 AND o.Storno=0 AND o.Vratka=0
AND o.JeMaterial=1 AND o.Blokovano=0 AND (o.Mnozstvi-ISNULL( (SELECT SUM(Mnozstvi) FROM dbo._TabVyroba_Objednavky_Pol WHERE IDHlava=o.ID), 0))>0
)
END
SET @datumDokladuMat = ISNULL(@datumDokladuMat, GETDATE())
SET @genDokladFin=0
IF EXISTS (SELECT 1 FROM dbo._TabVyroba_Objednavky o WHERE o.Splneno=0 AND o.OdmitnutoSkladem=0 AND o.NocniObjednavka=0 AND o.Storno=0 AND o.Vratka=0
AND o.JeMaterial=0 AND o.Blokovano=0 AND (o.Mnozstvi-ISNULL( (SELECT SUM(Mnozstvi) FROM dbo._TabVyroba_Objednavky_Pol WHERE IDHlava=o.ID), 0))>0
)
BEGIN
SET @genDokladFin=1
SET @datumDokladuFin = (SELECT MIN(o.DatPorizeni) FROM dbo._TabVyroba_Objednavky o WHERE o.Splneno=0 AND o.OdmitnutoSkladem=0 AND o.NocniObjednavka=0 AND o.Storno=0 AND o.Vratka=0
AND o.JeMaterial=0 AND o.Blokovano=0 AND (o.Mnozstvi-ISNULL( (SELECT SUM(Mnozstvi) FROM dbo._TabVyroba_Objednavky_Pol WHERE IDHlava=o.ID), 0))>0
)
END
SET @datumDokladuFin = ISNULL(@datumDokladuFin, GETDATE())
IF (@genDokladMat=1) OR (@genDokladFin=1)
BEGIN
DECLARE m CURSOR LOCAL FAST_FORWARD FOR
SELECT DISTINCT(JeMaterial)
FROM dbo._TabVyroba_Objednavky
WHERE Splneno=0
AND OdmitnutoSkladem=0
AND NocniObjednavka=0
AND Storno=0
AND Vratka=0
AND Blokovano=0
GROUP BY JeMaterial
OPEN m
WHILE (1=1)
BEGIN
FETCH NEXT FROM m INTO @material
IF (@@FETCH_STATUS<>0) BREAK
SET @cnt = (SELECT COUNT(d.ID) FROM dbo.TabDokladyZbozi d JOIN dbo.TabDokladyZbozi_EXT de ON (de.ID=d.ID) WHERE d.IDSklad=@cilovySklad AND d.RadaDokladu=@radaDokl
AND CAST(d.DatPorizeni AS DATE)=IIF(@material=0, CAST(@datumDokladuMat AS DATE), CAST(@datumDokladuFin AS DATE)) AND s.BlokovaniEditoru IS NULL
AND d.DruhPohybuZbo=@druhPohybuZbo AND d.Realizovano=0 AND de._Vyroba_ObjednavkaMat_Typ=(@material+1)
)
IF (@cnt<=1)
BEGIN
IF (@material=0)
IF (@idDokladFin IS NULL)
SET @idDoklad = (SELECT d.ID FROM dbo.TabDokladyZbozi d JOIN dbo.TabDokladyZbozi_EXT de ON (de.ID=d.ID) WHERE d.IDSklad=@cilovySklad AND d.RadaDokladu=@radaDokl
AND CAST(d.DatPorizeni AS DATE)=CAST(@datumDokladuFin AS DATE) AND d.DruhPohybuZbo=@druhPohybuZbo AND d.Realizovano=0 AND de._Vyroba_ObjednavkaMat_Typ=2
AND d.BlokovaniEditoru IS NULL AND de._Vydej_ObjednavkaMat=1
)
ELSE
SET @idDoklad = @idDokladFin
IF (@material=1)
IF (@idDokladMat IS NULL)
SET @idDoklad = (SELECT d.ID FROM dbo.TabDokladyZbozi d JOIN dbo.TabDokladyZbozi_EXT de ON (de.ID=d.ID) WHERE d.IDSklad=@cilovySklad AND d.RadaDokladu=@radaDokl
AND CAST(d.DatPorizeni AS DATE)=CAST(@datumDokladuMat AS DATE) AND d.DruhPohybuZbo=@druhPohybuZbo AND d.Realizovano=0 AND de._Vyroba_ObjednavkaMat_Typ=1
AND d.BlokovaniEditoru IS NULL AND de._Vydej_ObjednavkaMat=1
)
ELSE
SET @idDoklad = @idDokladMat
IF (@idDoklad IS NULL)
BEGIN
IF (@material=0) AND (@genDokladFin=1)
EXEC dbo.hp_InsertHlavickyOZ @Ident=@idDoklad OUT, @Sklad=@skladFin, @DruhPohybu=@druhPohybuZbo, @RadaDokladu=@radaDokl, @CisloOrg=@cOrg, @DatumPorizeni=@datumDokladuFin
IF (@material=1) AND (@genDokladMat=1)
EXEC dbo.hp_InsertHlavickyOZ @Ident=@idDoklad OUT, @Sklad=@skladMat, @DruhPohybu=@druhPohybuZbo, @RadaDokladu=@radaDokl, @CisloOrg=@cOrg, @DatumPorizeni=@datumDokladuMat
IF (@idDoklad IS NOT NULL)
BEGIN
IF NOT EXISTS (SELECT 1 FROM dbo.TabDOkladyZbozi_EXT WHERE ID=@idDoklad)
INSERT dbo.TabDokladyZbozi_EXT (ID) VALUES (@idDoklad)
UPDATE dbo.TabDokladyZbozi_EXT SET _Vydej_ObjednavkaMat=1 WHERE ID=@idDoklad
IF (@material=0)
SET @idDokladFin = @idDoklad
ELSE
SET @idDokladMat = @idDoklad
END
END
SELECT @dzMena=Mena, @dzKurz=Kurz, @dzKurzEur=KurzEuro, @vstC=VstupniCena, @jednM=JednotkaMeny
FROM dbo.TabDokladyZbozi WHERE ID=@idDoklad
IF (@idDoklad IS NOT NULL)
BEGIN
DECLARE c CURSOR LOCAL FOR
SELECT ID, SkupZbo, RegCis, IDKmenZbozi, Mnozstvi, PaletovyList, Sarze
FROM dbo._TabVyroba_Objednavky
WHERE Splneno=0
AND OdmitnutoSkladem=0
AND NocniObjednavka=0
AND Storno=0
AND Vratka=0
AND Blokovano=0
AND JeMaterial=@material
ORDER BY DatPorizeni
OPEN c
WHILE (1=1)
BEGIN
FETCH NEXT FROM c INTO @idObj, @sz, @rc, @idKmen, @mnoz, @paletList, @sarze
IF (@@FETCH_STATUS<>0) BREAK
SET @mnozVydano = ISNULL( (SELECT SUM(Mnozstvi) FROM dbo._TabVyroba_Objednavky_Pol WHERE IDHlava=@idObj), 0)
SET @mnoz = @mnoz - @mnozVydano
IF (@mnoz>0)
BEGIN
SET @idZboSklad = NULL
IF (@material=0)
SET @idZboSklad = (SELECT ID FROM dbo.TabStavSkladu WHERE IDKmenZbozi=@idKZ AND IDSklad=@skladFin)
ELSE
SET @idZboSklad = (SELECT ID FROM dbo.TabStavSkladu WHERE IDKmenZbozi=@idKZ AND IDSklad=@skladMat)
IF (@idZboSklad IS NULL)
IF (@material=0)
EXEC dbo.hp_InsertStavSkladu @IDKmen=@idKZ, @IDSklad=@skladFin, @IDZboSklad=@idZboSklad OUT
ELSE
EXEC dbo.hp_InsertStavSkladu @IDKmen=@idKZ, @IDSklad=@skladMat, @IDZboSklad=@idZboSklad OUT
IF (@idZboSklad IS NOT NULL)
BEGIN
EXEC dbo.hp_InsertPolozkyOZ @Ident=@idPZ OUT, @IDDoklad=@idDoklad, @DruhPohybu=@druhPohybuZbo, @CisloOrg=@cOrg, @IDZboSklad=@idZboSklad,
@Mena=@dzMena, @Kurz=@dzKurz, @KurzEuro=@dzKurzEur, @JednotkaMeny=@jednM, @SazbaSD=NULL, @SazbaDPH=NULL,
@ZakazanoDPH=0, @VstupniCena=@vstC, @PovolitDuplicitu=1, @Mnozstvi@=mnoz
IF (@idPZ IS NOT NULL)
BEGIN
INSERT dbo._TabVyroba_Objednavky_Pol (IDHlava, IDDokladOZ, IDPohybOZ, Mnozstvi, Sarze, PaletovyList, SkupZbo, RegCis)
SELECT @idObj, @idDoklad, @idPZ, @mnoz, @sarze, @paletList, @sz, @rc
SET @paletList = ISNULL(@paletList, N'')
SET @sarze = ISNULL(@sarze, N'')
IF (@paletList<>N'')
BEGIN
IF NOT EXISTS (SELECT 1 FROM dbo.TabPohybyZbozi_EXT WHERE ID=@idPZ)
INSERT dbo.TabPohybyZbozi_EXT (ID) VALUES (@idPZ)
UPDATE dbo.TabPohybyZbozi_EXT SET _Vyroba_PaletList=@paletList, _Vyroba_Sarze=@sarze WHERE ID=@idPZ
END
END -- @idPZ IS NOT NULL
END -- @idSS IS NOT NULL
END -- @mnoz>0
END
CLOSE c
DEALLOCATE c
END -- @idDoklad IS NOT NULL
END -- @cnt<=1
END
CLOSE m
DEALLOCATE m
END -- mam neco k zapsani ?
IF OBJECT_ID(N'dbo.ep_Vyroba_GenObjednavkuMatDoVyroby2', 'P') IS NOT NULL
EXEC dbo.ep_Vyroba_GenObjednavkuMatDoVyroby2 @idDoklad
-- oznac splnene polozky
DECLARE c CURSOR LOCAL FAST_FORWARD FOR
SELECT ID, Mnozstvi
FROM dbo._TabVyroba_Objednavky
WHERE Splneno=0
AND Vratka=0
AND Storno=0
AND OdmitnutoSkladem=0
OPEN c
WHILE (1=1)
BEGIN
FETCH NEXT FROM c INTO @idObj, @mnoz
IF (@@FETCH_STATUS<>0) BREAK
SET @mnozVydano = ISNULL( (SELECT SUM(op.Mnozstvi) FROM dbo._TabVyroba_Objednavky_Pol op JOIN dbo.TabPohybyZbozi p ON (p.ID=op.IDPohybOZ)
WHERE op.IDHlava=@idObj AND p.SkutecneDatReal IS NOT NULL), 0)
IF (@mnoz=@mnozVydano)
UPDATE dbo._TabVyroba_Objednavky SET Splneno=1 WHERE ID=@idObj
END
CLOSE c
DEALLOCATE c

View File

@ -0,0 +1,340 @@
-- dbo.ep_Vyroba_GenObjednavkuMatDoVyrobyNew
CREATE PROCEDURE dbo.ep_Vyroba_GenObjednavkuMatDoVyrobyNew
@errMsg NVARCHAR(500)=N'' OUT
AS
-- HD Consulting Strakonice, T. Buzin
-- !! proceduru neupravujte, bude stejne pregenerovana pri spusteni pluginu Pekarna nebo pri startu Windows sluzby HDCDZApi !!
SET NOCOUNT ON
DECLARE
@tranPred INT,
@cnt INT,
@iTemp INT
DECLARE
@idObj INT,
@druhPohybuZbo TINYINT=9,
@radaExpPr NVARCHAR(3)=N'550',
@doklVydPrevod NVARCHAR(3)=N'281',
@idExpPrMat INT,
@idExpPrPolo INT,
@radaDokl NVARCHAR(3),
@cilovySklad NVARCHAR(30),
@radaPrijem NVARCHAR(3),
@druhPohybuZboPrijem TINYINT,
@idDoklad INT,
@datumDokladuMat DATETIME,
@datumDokladuFin DATETIME,
@genDokladMat BIT=0,
@idDokladMat INT,
@genDokladFin BIT=0,
@idDokladFin INT,
@cOrg INT=0,
@dzMena NVARCHAR(3),
@dzKurz NUMERIC(19,6),
@dzKurzEur NUMERIC(19,6),
@jednM INT,
@vstC TINYINT,
@idPohyb INT,
@idPZ INT,
@idVCS INT,
@idVCP INT,
@idZboSklad INT,
@idKmen INT,
@sz NVARCHAR(3),
@rc NVARCHAR(30),
@sarze NVARCHAR(100),
@paletList NVARCHAR(100),
@sklMatHlavni NVARCHAR(30), -- 311
@sklPekarna NVARCHAR(30), -- 211
@sklTechnolog NVARCHAR(30), -- 261
@skladFin NVARCHAR(30), -- 312
@mnoz NUMERIC(19,6),
@mnozVydano NUMERIC(19,6),
@material BIT,
@idPHIdent BIGINT,
@idPHIdent2 BIGINT,
@textDoPoznamky NVARCHAR(max)=NULL
IF OBJECT_ID(N'tempdb..#VyrobaGenObjednavkuMatDoVyrobyNew', N'U') IS NOT NULL
SELECT TOP(1) @sklMatHlavni=SkladMaterial, @skladFin=SkladVyrobky
FROM #VyrobaGenObjednavkuMatDoVyrobyNew
IF (@sklMatHlavni IS NULL)
SELECT TOP(1) @sklMatHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavn<EFBFBD> sklad - Materi<72>l' AND CisloStr LIKE N'3%'
IF (@sklTechnolog IS NULL)
SELECT TOP(1) @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE<4E><45>%' AND Nazev NOT LIKE N'%polotov%' AND CisloStr LIKE N'2%'
IF (@sklPekarna IS NULL)
SELECT TOP(1) @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'V<EFBFBD>roba - Pek<65>rna' AND CisloStr LIKE N'2%'
SET @sklPekarna = ISNULL(@sklPekarna, N'')
IF (@sklPekarna=N'')
SET @sklPekarna = N'211'
SET @sklMatHlavni = ISNULL(@sklMatHlavni, N'')
IF (@sklMatHlavni=N'')
SET @sklMatHlavni = N'311'
SET @skladFin = ISNULL(@skladFin, N'')
IF (@skladFin=N'')
SET @skladFin = N'312'
MERGE dbo._TabVyroba_Objednavky AS T
USING dbo.TabKmenZbozi AS S ON (S.ID=T.IDKmenZbozi)
WHEN MATCHED AND T.JeMaterial IS NULL THEN UPDATE SET T.JeMaterial=S.Material;
DELETE FROM dbo._TabVyroba_Objednavky_Pol WHERE IDPohybOZ NOT IN (SELECT ID FROM dbo.TabPohybyZbozi WITH(NOLOCK))
SET @genDokladMat=0
IF EXISTS (SELECT 1 FROM dbo._TabVyroba_Objednavky o WHERE o.Splneno=0 AND o.OdmitnutoSkladem=0 AND o.NocniObjednavka=0 AND o.Storno=0 AND o.Vratka=0
AND o.JeMaterial=1 AND o.Blokovano=0 AND (o.Mnozstvi-ISNULL( (SELECT SUM(Mnozstvi) FROM dbo._TabVyroba_Objednavky_Pol WHERE IDHlava=o.ID), 0))>0
)
BEGIN
SET @genDokladMat=1
SET @datumDokladuMat = (SELECT MIN(o.DatPorizeni) FROM dbo._TabVyroba_Objednavky o WHERE o.Splneno=0 AND o.OdmitnutoSkladem=0 AND o.NocniObjednavka=0 AND o.Storno=0 AND o.Vratka=0
AND o.JeMaterial=1 AND o.Blokovano=0 AND (o.Mnozstvi-ISNULL( (SELECT SUM(Mnozstvi) FROM dbo._TabVyroba_Objednavky_Pol WHERE IDHlava=o.ID), 0))>0
)
END
SET @datumDokladuMat = ISNULL(@datumDokladuMat, GETDATE())
SET @genDokladFin=0
IF EXISTS (SELECT 1 FROM dbo._TabVyroba_Objednavky o WHERE o.Splneno=0 AND o.OdmitnutoSkladem=0 AND o.NocniObjednavka=0 AND o.Storno=0 AND o.Vratka=0
AND o.JeMaterial=0 AND o.Blokovano=0 AND (o.Mnozstvi-ISNULL( (SELECT SUM(Mnozstvi) FROM dbo._TabVyroba_Objednavky_Pol WHERE IDHlava=o.ID), 0))>0
)
BEGIN
SET @genDokladFin=1
SET @datumDokladuFin = (SELECT MIN(o.DatPorizeni) FROM dbo._TabVyroba_Objednavky o WHERE o.Splneno=0 AND o.OdmitnutoSkladem=0 AND o.NocniObjednavka=0 AND o.Storno=0 AND o.Vratka=0
AND o.JeMaterial=0 AND o.Blokovano=0 AND (o.Mnozstvi-ISNULL( (SELECT SUM(Mnozstvi) FROM dbo._TabVyroba_Objednavky_Pol WHERE IDHlava=o.ID), 0))>0
)
END
SET @datumDokladuFin = ISNULL(@datumDokladuFin, GETDATE())
IF (@genDokladMat=1) OR (@genDokladFin=1)
BEGIN
DECLARE m CURSOR LOCAL FAST_FORWARD FOR
SELECT DISTINCT(JeMaterial)
FROM dbo._TabVyroba_Objednavky
WHERE Splneno=0
AND OdmitnutoSkladem=0
AND NocniObjednavka=0
AND Storno=0
AND Vratka=0
AND Blokovano=0
AND IDPhIdent2 IS NOT NULL
GROUP BY JeMaterial
OPEN m
WHILE (1=1)
BEGIN
FETCH NEXT FROM m INTO @material
IF (@@FETCH_STATUS<>0) BREAK
IF (@material=0)
BEGIN
SET @cilovySklad=@skladFin
SET @cnt = ISNULL( (SELECT COUNT(d.ID) FROM dbo.TabDokladyZbozi d WITH(NOLOCK) WHERE d.PoradoveCislo>0 AND d.DruhPohybuZbo=@druhPohybuZbo AND d.IDSklad=@cilovySklad
AND d.BlokovaniEditoru IS NULL AND d.RadaDokladu=@radaExpPr AND d.Splneno=0 AND d.StavRezervace<>N'X'
AND CAST(d.DatPorizeni AS DATE)=CAST(@datumDokladuFin AS DATE)
), 0)
IF (@cnt=0)
EXEC dbo.hp_InsertHlavickyOZ @Ident=@idExpPrPolo OUT, @Sklad=@cilovySklad, @DruhPohybu=@druhPohybuZbo, @RadaDokladu=@radaExpPr, @CisloOrg=@cOrg, @DatumPorizeni=@datumDokladuFin
IF (@cnt=1)
SET @idExpPrPolo = (SELECT d.ID FROM dbo.TabDokladyZbozi d WHERE d.PoradoveCislo>0 AND d.DruhPohybuZbo=@druhPohybuZbo AND d.IDSklad=@cilovySklad
AND d.BlokovaniEditoru IS NULL AND d.RadaDokladu=@radaExpPr AND d.Splneno=0 AND d.StavRezervace<>N'X'
AND CAST(d.DatPorizeni AS DATE)=CAST(@datumDokladuFin AS DATE)
)
IF (@cnt>1)
SET @idExpPrPolo = (SELECT TOP(1) d.ID FROM dbo.TabDokladyZbozi d WHERE d.PoradoveCislo>0 AND d.DruhPohybuZbo=@druhPohybuZbo AND d.IDSklad=@cilovySklad
AND d.BlokovaniEditoru IS NULL AND d.RadaDokladu=@radaExpPr AND d.Splneno=0 AND d.StavRezervace<>N'X' ORDER BY d.DatPorizeni DESC)
IF NOT EXISTS (SELECT 1 FROM dbo.TabDokladyZbozi_EXT WHERE ID=@idExpPrPolo)
INSERT dbo.TabDokladyZbozi_EXT (ID) VALUES (@idExpPrPolo)
UPDATE dbo.TabDokladyZbozi_EXT SET _Vyroba_ObjednavkaMat_Typ=2, _Vydej_ObjednavkaMat=1 WHERE ID=@idExpPrPolo
SET @idDoklad = @idExpPrPolo
END
IF (@material=1)
BEGIN
SET @cilovySklad=@sklMatHlavni
SET @cnt = ISNULL( (SELECT COUNT(d.ID) FROM dbo.TabDokladyZbozi d WHERE d.PoradoveCislo>0 AND d.DruhPohybuZbo=@druhPohybuZbo AND d.IDSklad=@cilovySklad
AND d.BlokovaniEditoru IS NULL AND d.RadaDokladu=@radaExpPr AND d.Splneno=0 AND d.StavRezervace<>N'X'
AND CAST(d.DatPorizeni AS DATE)=CAST(@datumDokladuMat AS DATE)
), 0)
IF (@cnt=0)
EXEC dbo.hp_InsertHlavickyOZ @Ident=@idExpPrMat OUT, @Sklad=@cilovySklad, @DruhPohybu=@druhPohybuZbo, @RadaDokladu=@radaExpPr, @CisloOrg=@cOrg, @DatumPorizeni=@datumDokladuMat
IF (@cnt=1)
SET @idExpPrMat = (SELECT d.ID FROM dbo.TabDokladyZbozi d WHERE d.PoradoveCislo>0 AND d.DruhPohybuZbo=@druhPohybuZbo AND d.IDSklad=@cilovySklad
AND d.BlokovaniEditoru IS NULL AND d.RadaDokladu=@radaExpPr AND d.Splneno=0 AND d.StavRezervace<>N'X'
AND CAST(d.DatPorizeni AS DATE)=CAST(@datumDokladuMat AS DATE)
)
IF (@cnt>1)
SET @idExpPrMat = (SELECT TOP(1) d.ID FROM dbo.TabDokladyZbozi d WHERE d.PoradoveCislo>0 AND d.DruhPohybuZbo=@druhPohybuZbo AND d.IDSklad=@cilovySklad
AND d.BlokovaniEditoru IS NULL AND d.RadaDokladu=@radaExpPr AND d.Splneno=0 AND d.StavRezervace<>N'X' ORDER BY d.DatPorizeni DESC)
IF NOT EXISTS (SELECT 1 FROM dbo.TabDokladyZbozi_EXT WHERE ID=@idExpPrMat)
INSERT dbo.TabDokladyZbozi_EXT (ID) VALUES (@idExpPrMat)
UPDATE dbo.TabDokladyZbozi_EXT SET _Vyroba_ObjednavkaMat_Typ=1, _Vydej_ObjednavkaMat=1 WHERE ID=@idExpPrMat
SET @idDoklad = @idExpPrMat
END
IF (@idDoklad IS NOT NULL)
BEGIN
UPDATE dbo.TabDokladyZbozi SET IDSkladPrevodu=@sklPekarna WHERE ID=@idDoklad AND IDSkladPrevodu IS NULL
UPDATE dbo.TabDokladyZbozi SET TypPrevodky=@doklVydPrevod WHERE ID=@idDoklad AND TypPrevodky IS NULL
SELECT @dzMena=Mena, @dzKurz=Kurz, @dzKurzEur=KurzEuro, @vstC=VstupniCena, @jednM=JednotkaMeny
FROM dbo.TabDokladyZbozi WHERE ID=@idDoklad
DECLARE c CURSOR LOCAL FOR
SELECT ID, SkupZbo, RegCis, IDKmenZbozi, Mnozstvi, PaletovyList, Sarze, IdPHIdent, IdPHIdent2
FROM dbo._TabVyroba_Objednavky
WHERE Splneno=0
AND OdmitnutoSkladem=0
AND NocniObjednavka=0
AND Storno=0
AND Vratka=0
AND Blokovano=0
AND IDPhIdent2 IS NOT NULL
AND JeMaterial=@material
ORDER BY DatPorizeni
OPEN c
WHILE (1=1)
BEGIN
FETCH NEXT FROM c INTO @idObj, @sz, @rc, @idKmen, @mnoz, @paletList, @sarze, @idPHIdent, @idPHIdent2
IF (@@FETCH_STATUS<>0) BREAK
IF (@idKmen IS NULL)
SET @idKmen = (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=@sz AND RegCis=@rc)
SET @mnozVydano = ISNULL( (SELECT SUM(Mnozstvi) FROM dbo._TabVyroba_Objednavky_Pol WHERE IDHlava=@idObj), 0)
SET @mnoz = @mnoz - @mnozVydano
IF (@mnoz>0)
BEGIN
SET @idZboSklad = NULL
IF (@material=0)
SET @idZboSklad = (SELECT ID FROM dbo.TabStavSkladu WHERE IDKmenZbozi=@idKmen AND IDSklad=@skladFin)
ELSE
SET @idZboSklad = (SELECT ID FROM dbo.TabStavSkladu WHERE IDKmenZbozi=@idKmen AND IDSklad=@sklMatHlavni)
IF (@idZboSklad IS NULL)
BEGIN
IF (@material=0)
EXEC dbo.hp_InsertStavSkladu @IDKmen=@idKmen, @IDSklad=@skladFin, @IDZboSklad=@idZboSklad OUT
ELSE
EXEC dbo.hp_InsertStavSkladu @IDKmen=@idKmen, @IDSklad=@sklMatHlavni, @IDZboSklad=@idZboSklad OUT
END -- @idZboSklad IS NULL
IF (@idZboSklad IS NOT NULL)
AND NOT EXISTS (SELECT 1 FROM dbo.TabPohybyZbozi p WITH(NOLOCK) JOIN dbo.TabPohybyZbozi_EXT pe WITH(NOLOCK) ON (pe.ID=p.ID)
WHERE p.IDDoklad=@idDoklad AND p.IDZboSklad=@idZboSklad AND pe._Vyroba_Sarze=@sarze AND pe._Vyroba_PaletList=@paletList AND pe._HDCAPI_PHident=@idPHIdent2)
BEGIN
EXEC dbo.hp_InsertPolozkyOZ @Ident=@idPZ OUT, @IDDoklad=@idDoklad, @DruhPohybu=@druhPohybuZbo, @CisloOrg=@cOrg, @IDZboSklad=@idZboSklad,
@Mena=@dzMena, @Kurz=@dzKurz, @KurzEuro=@dzKurzEur, @JednotkaMeny=@jednM, @SazbaSD=NULL, @SazbaDPH=NULL,
@ZakazanoDPH=0, @VstupniCena=@vstC, @PovolitDuplicitu=1, @Mnozstvi=@mnoz
IF (@idPZ IS NOT NULL)
BEGIN
IF NOT EXISTS (SELECT 1 FROM dbo.TabPohybyZbozi_EXT WHERE ID=@idPZ)
INSERT dbo.TabPohybyZbozi_EXT (ID) VALUES (@idPZ)
SET @paletList = ISNULL(@paletList, N'')
SET @sarze = ISNULL(@sarze, N'')
UPDATE dbo.TabPohybyZbozi_EXT SET _Vyroba_PaletList=@paletList, _Vyroba_Sarze=@sarze, _Vyroba_IDObjednavkaMat=@idObj, _HDCAPI_PHident=@idPHIdent2
WHERE ID=@idPZ
SET @idVCS = NULL
IF (@material=0) -- prevadej realna VC jen u dilcu (finaly+polotovary)
BEGIN
SET @idVCS = (SELECT ID FROM dbo.TabVyrCS WHERE IDStavSkladu=@idZboSklad AND Nazev1=@paletList)
IF (@idVCS IS NULL)
BEGIN
SELECT @iTemp = 1 + ISNULL( (SELECT MAX(ID) FROM dbo.TabVyrCS), 0)
DBCC CHECKIDENT (TabVyrCS, RESEED, @iTemp)
EXEC dbo.hp_OZInsertVyrCS @IDVyrCS=@idVCS OUT, @IDZboSklad=@idZboSklad, @Nazev1=@paletList
END
SET @idVCP = NULL
IF (@idVCS IS NOT NULL)
BEGIN
SELECT @iTemp = 1 + ISNULL( (SELECT MAX(ID) FROM dbo.TabVyrCP), 0)
DBCC CHECKIDENT (TabVyrCP, RESEED, @iTemp)
INSERT dbo.TabVyrCP (IDPolozkaDokladu, IDVyrCis, Nazev, Mnozstvi) SELECT @idPZ, @idVCS, @sarze, @mnoz
SET @idVCP = SCOPE_IDENTITY()
END
END -- @material=0
INSERT dbo._TabVyroba_Objednavky_Pol (IDHlava, IDDokladOZ, IDPohybOZ, Mnozstvi, Sarze, PaletovyList, SkupZbo, RegCis, IDVyrCP)
SELECT @idObj, @idDoklad, @idPZ, @mnoz, @sarze, @paletList, @sz, @rc, @idVCP
IF (@paletList<>'')
SET @textDoPoznamky = N'PL: ' + @paletList
IF (@sarze<>N'')
IF (ISNULL(@textDoPoznamky,N'')=N'')
SET @textDoPoznamky = N'<EFBFBD>arze: ' + @sarze
ELSE
SET @textDoPoznamky = @textDoPoznamky + N' / <20>arze: ' + @sarze
SET @textDoPoznamky = TRIM(@textDoPoznamky)
IF (@textDoPoznamky=N'')
SET @textDoPoznamky = NULL
UPDATE dbo.TabPohybyZbozi SET Poznamka=@textDoPoznamky WHERE ID=@idPZ
END -- @idPZ IS NOT NULL
END -- @idZboSklad IS NOT NULL
END -- @mnoz>0
END
CLOSE c
DEALLOCATE c
END -- @idDoklad IS NOT NULL
END
CLOSE m
DEALLOCATE m
END -- mam neco k zapsani ?
IF OBJECT_ID(N'dbo.ep_Vyroba_GenObjednavkuMatDoVyrobyNew2', 'P') IS NOT NULL
EXEC dbo.ep_Vyroba_GenObjednavkuMatDoVyrobyNew2 @idDoklad
-- oznac splnene polozky
DECLARE c CURSOR LOCAL FAST_FORWARD FOR
SELECT ID, Mnozstvi
FROM dbo._TabVyroba_Objednavky
WHERE Splneno=0
AND Vratka=0
AND Storno=0
AND OdmitnutoSkladem=0
AND ID IN (SELECT 1 FROM dbo._TabVyroba_Objednavky_Pol p WITH(NOLOCK) WHERE p.IDHlava=ID)
OPEN c
WHILE (1=1)
BEGIN
FETCH NEXT FROM c INTO @idObj, @mnoz
IF (@@FETCH_STATUS<>0) BREAK
SET @mnozVydano = ISNULL( (SELECT SUM(op.Mnozstvi) FROM dbo._TabVyroba_Objednavky_Pol op WITH(NOLOCK) JOIN dbo.TabPohybyZbozi p WITH(NOLOCK) ON (p.ID=op.IDPohybOZ)
WHERE op.IDHlava=@idObj AND p.SkutecneDatReal IS NOT NULL), 0)
IF (@mnoz=@mnozVydano)
UPDATE dbo._TabVyroba_Objednavky SET Splneno=1 WHERE ID=@idObj
END
CLOSE c
DEALLOCATE c

View File

@ -6,7 +6,7 @@ CREATE PROCEDURE dbo.ep_Vyroba_GenOdvodZeMzdy
@skladOdvod NVARCHAR(30)=NULL, @skladOdvod NVARCHAR(30)=NULL,
@realizujPrijem BIT=0, @realizujPrijem BIT=0,
@prevodDoVyssiho BIT=0, @prevodDoVyssiho BIT=0,
@kopiiNaTechSklad BIT=0, @kopiiNaTechSklad BIT=1,
@errMsg NVARCHAR(500)=N'' OUT @errMsg NVARCHAR(500)=N'' OUT
AS AS
@ -18,37 +18,83 @@ AS
SET NOCOUNT ON SET NOCOUNT ON
IF EXISTS(SELECT 1 FROM dbo.TabPrikazMzdyAZmetky WHERE GenerovanoOdvadeni=1 AND ID=@IDMzdy)
RETURN
DECLARE DECLARE
@iTemp INT,
@aktDatum DATETIME=GETDATE(), @aktDatum DATETIME=GETDATE(),
@datPrijem DATETIME,
@bChyba BIT, @bChyba BIT,
@ret INT, @ret INT,
@cnt INT,
@jeOdvOper BIT=0, @jeOdvOper BIT=0,
@idUziv INT, @idUziv INT,
@IDPrikaz INT, @IDPrikaz INT,
@IDZakazModif INT, @IDZakazModif INT,
@IDPrikazVyssi INT, @IDPrikazVyssi INT,
@doklPrPostup INT,
@altPrPostup NCHAR(1),
@doklKV INT, @doklKV INT,
@IDKmen INT, @IDKmen INT,
@mjEvid NVARCHAR(10),
@jeFinal BIT=0,
@idPZ INT, @idPZ INT,
@idPZOld INT,
@idPZOld2 INT,
@idPZSberna INT,
@idSS INT,
@idVCS INT,
@idVCP INT,
@idVPrVC INT,
@vc NVARCHAR(100),
@NekontrolMnozOdvedFinal BIT=0, @NekontrolMnozOdvedFinal BIT=0,
@mnozstvi NUMERIC(19,6)=0, @mnozstvi NUMERIC(19,6)=0,
@mnozstviKA NUMERIC(19,6)=0,
@radaOdvNaSklad NVARCHAR(3)=N'273', @radaOdvNaSklad NVARCHAR(3)=N'273',
@sklProOdvod NVARCHAR(30)=N'261', @sklProOdvod NVARCHAR(30)=N'261',
@sklProOdvodHV NVARCHAR(30)=N'262',
@sklProPolo NVARCHAR(30)=N'311',
@sklProFinal NVARCHAR(30)=N'312',
@sklPrijem NVARCHAR(30),
@radaVPr NVARCHAR(10), @radaVPr NVARCHAR(10),
@idPrij INT, @idPrij INT,
@idPrijOld INT,
@idPrijSberna INT,
@uklidPomocTab BIT,
@idPrijKopie INT, @idPrijKopie INT,
@sklTechnicky NVARCHAR(30), @sklTechnicky NVARCHAR(30),
@sklTechnolog NVARCHAR(30),
@sklTechnologHV NVARCHAR(30),
@dpz TINYINT, @dpz TINYINT,
@cOrg INT,
@dzDatum DATETIME, @dzDatum DATETIME,
@dzMena NVARCHAR(3) @dzMena NVARCHAR(3),
@dzKurz NUMERIC(19,6),
@dzKurzE NUMERIC(19,6),
@vstC TINYINT,
@jednM INT
DECLARE DECLARE
@idDZPomocPrijem INT, @idDZPomocPrijem INT,
@idPZPomocPrijem INT, @idPZPomocPrijem INT,
@idSSPomocPrijem INT, @idSSPomocPrijem INT,
@mnozPrijem NUMERIC(19,6) @mnozPrijem NUMERIC(19,6),
@idPalety INT,
@paletList NVARCHAR(100),
@sarze NVARCHAR(30)
DECLARE
@ksOdv NUMERIC(19,6),
@ksOdv_ks NUMERIC(19,6),
@idDavkaPomoc INT,
@mnozDavkaPomoc NUMERIC(19,6)
SET @uklidPomocTab = 0
SELECT @jeOdvOper=pp.Odvadeci SELECT @jeOdvOper=pp.Odvadeci
FROM dbo.TabPrikazMzdyAZmetky pmz FROM dbo.TabPrikazMzdyAZmetky pmz
INNER JOIN dbo.TabPrPostup pp ON (pp.IDPrikaz=pmz.IDPrikaz AND pp.Doklad=pmz.DokladPrPostup AND pp.Alt=pmz.AltPrPostup AND pp.IDOdchylkyDo IS NULL) INNER JOIN dbo.TabPrPostup pp ON (pp.IDPrikaz=pmz.IDPrikaz AND pp.Doklad=pmz.DokladPrPostup AND pp.Alt=pmz.AltPrPostup AND pp.IDOdchylkyDo IS NULL)
@ -59,24 +105,37 @@ IF (@jeOdvOper=0)
IF OBJECT_ID(N'dbo.TabUserCfg', N'U') IS NOT NULL IF OBJECT_ID(N'dbo.TabUserCfg', 'U') IS NOT NULL
SET @idUziv = (SELECT ID FROM dbo.TabUserCfg WHERE LoginName=SUSER_SNAME()) SET @idUziv = (SELECT ID FROM dbo.TabUserCfg WHERE LoginName=SUSER_SNAME())
SET @idUziv = ISNULL(@idUziv, 0) SET @idUziv = ISNULL(@idUziv, 0)
-- CREATE TABLE #HDCTabGenOdvodZeMzdyKonfig (RadaOdvodNaSklad NVARCHAR(3), SkladProOdvod NVARCHAR(30), BezVyrobnichCisel BIT=0, IDUziv INT) -- CREATE TABLE #HDCTabGenOdvodZeMzdyKonfig (RadaOdvodNaSklad NVARCHAR(3), SkladProOdvod NVARCHAR(30), BezVyrobnichCisel BIT=0, IDUziv INT)
IF OBJECT_ID(N'tempdb..#HDCTabGenOdvodZeMzdyKonfig', N'U') IS NOT NULL IF OBJECT_ID(N'tempdb..#HDCTabGenOdvodZeMzdyKonfig', 'U') IS NOT NULL
SELECT TOP(1) @radaOdvNaSklad=ISNULL(RadaOdvodNaSklad, @radaOdvNaSklad), @sklProOdvod=ISNULL(SkladProOdvod, @sklProOdvod), SELECT TOP(1) @radaOdvNaSklad=ISNULL(RadaOdvodNaSklad, @radaOdvNaSklad), @sklProOdvod=ISNULL(SkladProOdvod, @sklProOdvod),
@bezVyrCis=ISNULL(BezVyrobnichCisel, @bezVyrCis), @idUziv=ISNULL(IDUziv, @idUziv) @bezVyrCis=ISNULL(BezVyrobnichCisel, @bezVyrCis), @idUziv=ISNULL(IDUziv, @idUziv)
FROM #HDCTabGenOdvodZeMzdyKonfig FROM #HDCTabGenOdvodZeMzdyKonfig
IF (@sklTechnicky IS NULL) IF (@sklTechnicky IS NULL)
SELECT @sklTechnicky=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE<EFBFBD><EFBFBD>%' SELECT @sklTechnicky=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE%' AND Nazev NOT LIKE N'%polotov%' AND Nazev NOT LIKE N'%HV%' AND CisloStr LIKE N'2%'
IF (@sklTechnicky IS NULL) IF (@sklTechnicky IS NULL)
SELECT @sklTechnicky=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%sklad%v<>dej%' SELECT @sklTechnicky=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%sklad%v<>dej%'
IF (@sklTechnolog IS NULL)
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE%' AND Nazev NOT LIKE N'%polotov%' AND Nazev NOT LIKE N'%HV%' AND CisloStr LIKE N'2%'
IF (@sklTechnolog IS NULL)
SET @sklTechnolog = N'261'
IF (@sklTechnologHV IS NULL)
SELECT @sklTechnologHV=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE%' AND Nazev LIKE N'%HV%' AND CisloStr LIKE N'2%'
IF (@sklTechnologHV IS NULL)
SET @sklTechnologHV = N'262'
DROP TABLE IF EXISTS #TabOdved DROP TABLE IF EXISTS #TabOdved
CREATE TABLE #TabOdved ( CREATE TABLE #TabOdved (
@ -138,11 +197,9 @@ CREATE TABLE #TabGenPrijem (ID INT NOT NULL, PRIMARY KEY(ID))
IF EXISTS(SELECT 1 FROM dbo.TabPrikazMzdyAZmetky WHERE GenerovanoOdvadeni=1 AND ID=@IDMzdy)
RETURN
SELECT @mnozstvi=kusy_odv, @doklPrPostup=DokladPrPostup, @altPrPostup=AltPrPostup FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy
SELECT @mnozstvi=kusy_odv FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy SET @mnozstviKA = 0
UPDATE dbo.TabPrikazMzdyAZmetky SET GenerovanoOdvadeni=1 WHERE ID=@IDMzdy UPDATE dbo.TabPrikazMzdyAZmetky SET GenerovanoOdvadeni=1 WHERE ID=@IDMzdy
IF (@@ROWCOUNT=0) RETURN IF (@@ROWCOUNT=0) RETURN
@ -155,6 +212,19 @@ SELECT @IDPrikaz=IDPrikaz FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy
SELECT @radaVPr=Rada, @IDKmen=IDTabKmen, @IDZakazModif=IDZakazModif, @IDPrikazVyssi=IDPrikazVyssi SELECT @radaVPr=Rada, @IDKmen=IDTabKmen, @IDZakazModif=IDZakazModif, @IDPrikazVyssi=IDPrikazVyssi
FROM dbo.TabPrikaz WHERE ID=@IDPrikaz FROM dbo.TabPrikaz WHERE ID=@IDPrikaz
SELECT @mjEvid=MJEvidence FROM dbo.TabKmenZbozi WHERE ID=@IDKmen
IF (@mjEvid=N'KA')
SET @mnozstviKA = @mnozstvi
SET @jeFinal = 0
IF EXISTS (SELECT 1 FROM dbo.TabParKmZ WHERE IDKmenZbozi=@IDKmen AND TypDilce=0)
SET @jeFinal = 1
-- nastav sklad pro odvod podle karty -- nastav sklad pro odvod podle karty
IF (@sklProOdvod IS NULL) IF (@sklProOdvod IS NULL)
SELECT @sklProOdvod=VychoziSklad FROM dbo.TabParKmZ WHERE IDKmenZbozi=@IDKmen SELECT @sklProOdvod=VychoziSklad FROM dbo.TabParKmZ WHERE IDKmenZbozi=@IDKmen
@ -167,8 +237,24 @@ SELECT @radaOdvNaSklad=CASE WHEN RadaDokl_OdvedeniPrikazu IS NULL THEN @radaOdvN
IF (@radaOdvod IS NOT NULL) IF (@radaOdvod IS NOT NULL)
SET @radaOdvNaSklad=@radaOdvod SET @radaOdvNaSklad=@radaOdvod
IF (@skladOdvod IS NOT NULL)
SET @sklProOdvod = @skladOdvod /*
IF (@skladOdvod IS NULL)
BEGIN
SET @sklProOdvod = @sklProPolo
IF (@jeFinal=1)
SET @sklProOdvod = @sklProFinal
END
ELSE
SET @sklProOdvod = @skladOdvod
*/
IF (@jeFinal=1)
SET @sklProOdvod = @sklTechnologHV
ELSE
SET @sklProOdvod = @sklTechnolog
UPDATE #tabOdved SET mnozstvi=CASE WHEN @NekontrolMnozOdvedFinal=0 AND mnozstvi+@mnozstvi>maxMnozstvi THEN maxMnozstvi ELSE mnozstvi+@mnozstvi END WHERE IDPrikaz=@IDPrikaz UPDATE #tabOdved SET mnozstvi=CASE WHEN @NekontrolMnozOdvedFinal=0 AND mnozstvi+@mnozstvi>maxMnozstvi THEN maxMnozstvi ELSE mnozstvi+@mnozstvi END WHERE IDPrikaz=@IDPrikaz
@ -203,6 +289,8 @@ DELETE #TabVyrCisProGenOdv WHERE IDOdvedeni IN (SELECT O2.ID FROM #tabOdved O2
DELETE #TabPolotovProGenOdv WHERE IDOdvedeni IN (SELECT O2.ID FROM #tabOdved O2 WHERE O2.Mnozstvi<=0.0) DELETE #TabPolotovProGenOdv WHERE IDOdvedeni IN (SELECT O2.ID FROM #tabOdved O2 WHERE O2.Mnozstvi<=0.0)
DELETE #tabOdved WHERE Mnozstvi<=0.0 DELETE #tabOdved WHERE Mnozstvi<=0.0
SELECT @iTemp = 1 + ISNULL( (SELECT MAX(ID) FROM dbo.TabVyrCP), 0)
DBCC CHECKIDENT (TabVyrCP, RESEED, @iTemp)
IF (@sklProOdvod IS NOT NULL) IF (@sklProOdvod IS NOT NULL)
UPDATE #tabOdved SET Sklad=@sklProOdvod UPDATE #tabOdved SET Sklad=@sklProOdvod
@ -217,6 +305,7 @@ IF (@bezVyrCis=1)
IF (@prevodDoVyssiho=0) IF (@prevodDoVyssiho=0)
BEGIN BEGIN
BEGIN TRY BEGIN TRY
-- pozor, nelze predem zadat do jake prijemky polozky odvodu generovat, vzdy se generuje nova, o prevedeni polozek se postarame nize
EXEC @ret=dbo.hp_OdvedeniPrikazu @RadaDokladu=@radaOdvNaSklad, @IDObdobi=NULL, @KonecneOdvedeni=0, @DatPorizeni=NULL, @SekejZakazky=1, @SekejPrikazy=1 EXEC @ret=dbo.hp_OdvedeniPrikazu @RadaDokladu=@radaOdvNaSklad, @IDObdobi=NULL, @KonecneOdvedeni=0, @DatPorizeni=NULL, @SekejZakazky=1, @SekejPrikazy=1
END TRY END TRY
BEGIN CATCH BEGIN CATCH
@ -227,15 +316,16 @@ IF (@prevodDoVyssiho=0)
BEGIN BEGIN
IF (@IDPrikazVyssi IS NOT NULL) IF (@IDPrikazVyssi IS NOT NULL)
BEGIN BEGIN
IF OBJECT_ID(N'tempdb..#TabOdved_IDMzdy', N'U') IS NOT NULL IF OBJECT_ID(N'tempdb..#TabOdved_IDMzdy', 'U') IS NOT NULL
DELETE FROM #TabOdved_IDMzdy DELETE FROM #TabOdved_IDMzdy
INSERT #TabOdved_IDMzdy (IDPrikaz, IDMzdy) SELECT @idPrikaz, @idMzdy INSERT #TabOdved_IDMzdy (IDPrikaz, IDMzdy) SELECT @idPrikaz, @idMzdy
SET @doklKV = (SELECT ID FROM dbo.TabPrKVazby WHERE IDPrikaz=@IDPrikazVyssi AND nizsi=@IDKmen AND IDOdchylkyDo IS NULL) SET @doklKV = (SELECT ID FROM dbo.TabPrKVazby WHERE IDPrikaz=@IDPrikazVyssi AND nizsi=@IDKmen AND IDOdchylkyDo IS NULL)
-- @idPZ je TabPrikazPrevodPolotov.ID
EXEC @idPZ=dbo.hp_OdvedeniPrikazuPrevodem @DatPripadu=@aktDatum, @KonecneOdvedeniNatvrdo=0, @IDPrikazZdroj=@idPrikaz, @IDPrikazCil=@IDPrikazVyssi, EXEC @idPZ=dbo.hp_OdvedeniPrikazuPrevodem @DatPripadu=@aktDatum, @KonecneOdvedeniNatvrdo=0, @IDPrikazZdroj=@idPrikaz, @IDPrikazCil=@IDPrikazVyssi,
@Doklad=@doklKV, @IDDilec=@IDKmen, @mnozstvi=@mnozstvi, @IDOdvedeniVC=0, @IDZakazModif=@IDZakazModif @Doklad=@doklKV, @IDDilec=@IDKmen, @mnozstvi=@mnozstvi, @IDOdvedeniVC=0, @IDZakazModif=@IDZakazModif
IF OBJECT_ID(N'tempdb..#TabGenPrijem', N'U') IS NOT NULL IF OBJECT_ID(N'tempdb..#TabGenPrijem', 'U') IS NOT NULL
DELETE FROM #TabGenPrijem DELETE FROM #TabGenPrijem
END -- @IDPrikazVyssi IS NOT NULL END -- @IDPrikazVyssi IS NOT NULL
END END
@ -244,49 +334,189 @@ IF (@prevodDoVyssiho=0)
DECLARE prij CURSOR LOCAL FOR IF (@jeFinal=0)
SELECT ID FROM #TabGenPrijem SET @sklPrijem=@sklProPolo
OPEN prij ELSE
WHILE (1=1) SET @sklPrijem=@sklProFinal
IF (@sklPrijem<>N'')
BEGIN BEGIN
FETCH NEXT FROM prij INTO @idPrij DECLARE prij CURSOR LOCAL FOR
IF (@@FETCH_STATUS<>0) BREAK SELECT ID FROM #TabGenPrijem
OPEN prij
-- kopie na technologicky sklad, aby se mohly delat vydejky WHILE (1=1)
SET @idPrijKopie = NULL
IF (@kopiiNaTechSklad=1) AND (@sklTechnicky IS NOT NULL)
BEGIN BEGIN
SELECT @dpz=DruhPohybuZbo, @dzDatum=DatPorizeni, @dzMena=Mena FROM dbo.TabPohybyZbozi WHERE ID=@idPrij FETCH NEXT FROM prij INTO @idPrij
EXEC dbo.hp_InsertHlavickyOZ @ident=@idPrijKopie OUT, @Sklad=@sklTechnicky, @DruhPohybu=@dpz, @RadaDokladu=@radaOdvNaSklad, IF (@@FETCH_STATUS<>0) BREAK
@Mena=@dzMena, @CisloOrg=0, @DatumPorizeni=@dzDatum
IF (@idPrijKopie IS NOT NULL) SELECT @datPrijem=DatPorizeni FROM dbo.TabDokladyZbozi WHERE ID=@idPrij
EXEC dbo.hp_generuj_navazny_doklad @IDDokladDst=@idPrijKopie, @IDDokladSrc=@idPrij, @CisloOrgCil=0, @MUCil=NULL, @MenaCil=NULL,
@KurzCil=NULL, @JednotkaMenyCil=NULL, @KurzEuroCil=NULL, @CisloZakCil=NULL, @NOkruhCil=NULL,
@StredNakladCil=NULL, @StredVynosCil=NULL, @FormaDopravyCil=NULL, @VozidloCil=NULL, @ObjednavkaCil=NULL,
@PopisDodavkyCil=NULL, @NavaznyDobropisCil=NULL, @ZamestnanecCil=NULL, @DodFakCil=NULL, @Nasobek=1,
@SlevaCil=NULL, @VytvaretDokladovouVazbu=0, @VytvaretPolozkovouVazbu=0, @ChybaSkladana=@errMsg OUT, IF (@realizujPrijem=1)
@KopirovaniDokladu=0 BEGIN
END -- kopii na TechSklad BEGIN TRY
EXEC dbo.hp_Realizuj_Prijem @ID=@idPrij, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1
IF (@bChyba=1)
INSERT dbo.Tabx_Vyroba_Log (Kategorie, Typ, LogText, iHodnota) SELECT 1, 1, 'Chyba realizace neidentifikovan<61>', @idPrij
ELSE
BEGIN
SET @idPrijOld = NULL
SET @idPrijSberna = NULL
-- zjisti jestli na cilovem skladu mame nejakou otevrenou prijemku z dnesniho dne
SET @cnt = ISNULL( (SELECT COUNT(ID) FROM dbo.TabDokladyZbozi WHERE ID<>@idPrij AND PoradoveCislo>0 AND DruhPohybuZbo=0 AND RadaDokladu=@radaOdvNaSklad
AND CisloOrg=0 AND IDSklad=@sklPrijem AND Realizovano=0 AND BlokovaniEditoru IS NULL AND dbo.hf_TruncDate(DatPorizeni)=dbo.hf_TruncDate(@datPrijem))
, 0)
IF (@cnt=0) -- nemame, vygeneruj ji
BEGIN
SELECT @dpz=DruhPohybuZbo, @dzDatum=DatPorizeni, @dzMena=Mena FROM dbo.TabDokladyZbozi WHERE ID=@idPrij
SET @datPrijem = @dzDatum
EXEC dbo.hp_InsertHlavickyOZ @ident=@idPrijSberna OUT, @Sklad=@sklPrijem, @DruhPohybu=@dpz, @RadaDokladu=@radaOdvNaSklad,
@Mena=@dzMena, @CisloOrg=0, @DatumPorizeni=@datPrijem
END
IF (@cnt=1) -- ma jen jednu
BEGIN
SELECT TOP(1) @idPrijSberna=ID FROM dbo.TabDokladyZbozi WHERE ID<>@idPrij AND PoradoveCislo>0 AND DruhPohybuZbo=0 AND RadaDokladu=@radaOdvNaSklad
AND CisloOrg=0 AND IDSklad=@sklPrijem AND Realizovano=0 AND BlokovaniEditoru IS NULL AND dbo.hf_TruncDate(DatPorizeni)=dbo.hf_TruncDate(@datPrijem)
END
IF (@cnt>1) -- mam jich vic, vezmi tu posledni (nejnovejsi)
BEGIN
SET @idPrijSberna = (SELECT TOP(1) ID FROM dbo.TabDokladyZbozi WHERE ID<>@idPrij AND PoradoveCislo>0 AND DruhPohybuZbo=0 AND RadaDokladu=@radaOdvNaSklad
AND CisloOrg=0 AND IDSklad=@sklPrijem AND Realizovano=0 AND BlokovaniEditoru IS NULL
AND dbo.hf_TruncDate(DatPorizeni)=dbo.hf_TruncDate(@datPrijem)
ORDER BY DatPorizeni DESC)
END
-- pokud ji mam, nakopiruj do ni novou polozku
IF (@idPrijSberna IS NOT NULL)
BEGIN
EXEC dbo.hp_generuj_navazny_doklad @IDDokladDst=@idPrijSberna, @IDDokladSrc=@idPrij, @CisloOrgCil=0, @MUCil=NULL, @MenaCil=NULL,
@KurzCil=NULL, @JednotkaMenyCil=NULL, @KurzEuroCil=NULL, @CisloZakCil=NULL, @NOkruhCil=NULL,
@StredNakladCil=NULL, @StredVynosCil=NULL, @FormaDopravyCil=NULL, @VozidloCil=NULL, @ObjednavkaCil=NULL,
@PopisDodavkyCil=NULL, @NavaznyDobropisCil=NULL, @ZamestnanecCil=NULL, @DodFakCil=NULL, @Nasobek=1,
@SlevaCil=NULL, @VytvaretDokladovouVazbu=0, @VytvaretPolozkovouVazbu=0, @ChybaSkladana=@errMsg OUT,
@KopirovaniDokladu=0
SET @vc = NULL
SET @idVPrVC = (SELECT IDVyrCis FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy)
IF (@idVPrVC IS NOT NULL)
SET @vc = (SELECT VyrCislo FROM dbo.TabVyrCisPrikaz WHERE ID=@idVPrVC)
IF (@vc IS NULL)
SELECT TOP(1) @idPalety=ID, @vc=CisloPalety FROM dbo._TabVyroba_Palety WHERE IDMzda=@IDMzdy AND IDPrikaz=@idPrikaz
SET @paletList = N''
IF (@vc IS NOT NULL)
SET @paletList = @vc
SET @idPZSberna = NULL
SET @idVCP = (SELECT TOP(1) vcp.ID FROM dbo.TabPohybyZbozi p WITH(NOLOCK) JOIN dbo.TabDokladyZbozi d WITH(NOLOCK) ON (d.ID=p.IDDoklad)
JOIN dbo.TabStavSkladu s WITH(NOLOCK) ON (s.ID=p.IDZboSklad) JOIN dbo.TabVyrCP vcp WITH(NOLOCK) ON (vcp.IDPolozkaDokladu=p.ID)
JOIN dbo.TabVyrCS vcs ON (vcs.ID=vcp.IDVyrCis)
WHERE d.ID=@idPrij AND d.DruhPohybuZbo=0 AND p.TypVyrobnihoDokladu IN (0) AND s.IDKmenZbozi=@IDKmen AND vcs.Nazev1=@vc)
IF (@vc IS NOT NULL)
SET @idPZSberna = (SELECT TOP(1) p.ID FROM dbo.TabPohybyZbozi p WITH(NOLOCK) JOIN dbo.TabDokladyZbozi d WITH(NOLOCK) ON (d.ID=p.IDDoklad)
JOIN dbo.TabStavSkladu s WITH(NOLOCK) ON (s.ID=p.IDZboSklad) JOIN dbo.TabVyrCP vcp WITH(NOLOCK) ON (vcp.IDPolozkaDokladu=p.ID)
JOIN dbo.TabVyrCS vcs ON (vcs.ID=vcp.IDVyrCis)
WHERE p.IDDoklad=@idPrijSberna AND d.DruhPohybuZbo=0 AND p.TypVyrobnihoDokladu IN (0) AND s.IDKmenZbozi=@IDKmen AND vcs.Nazev1=@vc)
/*
ELSE -- tato situace nesmi nastat, na sklad se vzdy prijima polotovar nebo final vcetne VC/paletovelo listu
SET @idPZSberna = (SELECT TOP(1) p.ID FROM dbo.TabPohybyZbozi p WITH(NOLOCK) JOIN dbo.TabStavSkladu s WITH(NOLOCK) ON (s.ID=p.IDZboSklad)
WHERE p.IDDoklad=@idPrijOld AND s.IDKmenZbozi=@IDKmen ORDER BY p.ID DESC)
*/
IF (@idPZSberna IS NOT NULL)
BEGIN
SET @idPalety = (SELECT ID FROM dbo._TabVyroba_Palety WHERE CisloPalety=@paletList AND IDPrikaz=@idPrikaz)
UPDATE dbo._TabVyroba_Palety SET IDPohybPrijem=@idPZSberna WHERE ID=@idPalety
SELECT @sarze=Sarze FROM dbo._TabVyroba_Palety WHERE ID=@idPalety
-- udelej pomocnou vazbu polozky prijmu na skladu 311/312 na polozku prijmu na technologickem sklade 261/262
SET @idPZOld = NULL -- id pohybu zbozi na prijemce 261/262
IF (@vc IS NOT NULL)
SET @idPZOld = (SELECT TOP(1) p.ID FROM dbo.TabPohybyZbozi p WITH(NOLOCK) JOIN dbo.TabDokladyZbozi d WITH(NOLOCK) ON (d.ID=p.IDDoklad)
JOIN dbo.TabStavSkladu s WITH(NOLOCK) ON (s.ID=p.IDZboSklad) JOIN dbo.TabVyrCP vcp WITH(NOLOCK) ON (vcp.IDPolozkaDokladu=p.ID)
JOIN dbo.TabVyrCS vcs ON (vcs.ID=vcp.IDVyrCis)
WHERE p.IDDoklad=@idPrij AND d.DruhPohybuZbo=0 AND p.TypVyrobnihoDokladu IN (0) AND s.IDKmenZbozi=@IDKmen AND vcs.Nazev1=@vc)
ELSE
SET @idPZOld = (SELECT TOP(1) p.ID FROM dbo.TabPohybyZbozi p WITH(NOLOCK) JOIN dbo.TabStavSkladu s WITH(NOLOCK) ON (s.ID=p.IDZboSklad)
WHERE p.IDDoklad=@idPrij AND s.IDKmenZbozi=@IDKmen ORDER BY p.ID DESC)
IF NOT EXISTS (SELECT 1 FROM dbo.TabPohybyZbozi_EXT WHERE ID=@idPZSberna) AND (@idPZSberna IS NOT NULL)
INSERT dbo.TabPohybyZbozi_EXT (ID) VALUES (@idPZSberna)
IF (@idPZOld IS NULL)
SET @idPZOld = (SELECT TOP(1) IDPohybOZPuvodni FROM dbo._TabVyroba_PaletyPohybOZ WHERE IDPalety=@idPalety)
IF (@idPZOld IS NULL)
SET @idPZOld = (SELECT TOP(1) ID FROM dbo.TabPohybyZbozi WHERE IDDoklad=@idPrij) -- id pohybu zbozi na prijemce 261/262
IF (@idPZOld IS NOT NULL)
UPDATE dbo.TabPohybyZbozi_EXT SET _Prijem_IDPZPuvodni=@idPZOld WHERE ID=@idPZSberna
IF (@idPalety IS NOT NULL)
IF NOT EXISTS (SELECT 1 FROM dbo._TabVyroba_PaletyPohybOZ WHERE IDPalety=@idPalety)
INSERT dbo._TabVyroba_PaletyPohybOZ (IDPalety, IDPohybOZ, Sarze, Mnozstvi, MnozstviKA, IDPohybOZPuvodni)
SELECT @idPalety, @idPZSberna, @sarze, @mnozstvi, @mnozstviKA, @idPZOld
-- smaz vazbu nove polozky (prijem na sklade 311/312) na vyrobni prikaz
UPDATE dbo.TabPohybyZbozi SET IDPrikaz=NULL, TypVyrobnihoDokladu=NULL, DokladPrikazu=NULL WHERE ID=@idPZSberna
DELETE FROM dbo.TabPrikazMzdyAZmetkyGenPZ WHERE IDMzdy=@IDMzdy AND TypGen=2 AND IDPohybu=@idPZSberna
END -- @idPZSberna IS NOT NULL
END -- @idPrijOld IS NOT NULL
END -- else @bChyba=1
END TRY
BEGIN CATCH
SET @errMsg = ERROR_MESSAGE()
INSERT dbo.Tabx_Vyroba_Log (Kategorie, Typ, LogText, iHodnota) SELECT 1, 1, 'Chyba realizace neidentifikovan<61>', @idPrij
END CATCH
END
-- vycisti seed
SELECT @iTemp = 1 + ISNULL( (SELECT MAX(ID) FROM dbo.TabDokladyZbozi), 0)
DBCC CHECKIDENT (TabDokladyZbozi, RESEED, @iTemp)
SELECT @iTemp = 1 + ISNULL( (SELECT MAX(ID) FROM dbo.TabPohybyZbozi), 0)
DBCC CHECKIDENT (TabPohybyZbozi, RESEED, @iTemp)
IF (@realizujPrijem=1)
BEGIN
BEGIN TRY
EXEC dbo.hp_Realizuj_Prijem @ID=@idPrij, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1
IF (@idPrijKopie IS NOT NULL)
EXEC dbo.hp_Realizuj_Prijem @ID=@idPrijKopie, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1
END TRY
BEGIN CATCH
SET @errMsg = ERROR_MESSAGE()
END CATCH
END END
CLOSE prij
DEALLOCATE prij
END END
CLOSE prij
DEALLOCATE prij
-- napocti odvedeni davek Kapacitniho planu vedenych v pomocne Tabx_Vyroba_DavkyPlanu
IF OBJECT_ID(N'Tabx_Vyroba_DavkyPlanu', 'U') IS NOT NULL
BEGIN
SET @ksOdv = ISNULL( (SELECT SUM(kusy_odv) FROM dbo.TabPrikazMzdyAZmetky WHERE IDPrikaz=@IDPrikaz AND DokladPrPostup=@doklPrPostup), 0)
IF (@ksOdv>0)
BEGIN
SET @ksOdv_ks = @ksOdv
IF (@mjEvid=N'KA')
SET @ksOdv_ks = @ksOdv_ks * dbo.ef_Kmen_VratPocetKsVKartonu (@IDKmen)
DECLARE d CURSOR LOCAL FAST_FORWARD FOR
SELECT ID, Mnozstvi
FROM Tabx_Vyroba_DavkyPlanu
WHERE IDPrikaz=@IDPrikaz
AND DokladPrPostup=@doklPrPostup
AND Dilec=@IDKmen
OPEN d
WHILE (1=1)
BEGIN
FETCH NEXT FROM d INTO @idDavkaPomoc, @mnozDavkaPomoc
IF (@@FETCH_STATUS<>0) BREAK
END
CLOSE d
DEALLOCATE d
END -- @ksOdv_ks
END -- Tabx_Vyroba_DavkyPlanu IS NOT NULL
-- cisteni -- cisteni

View File

@ -0,0 +1,463 @@
-- dbo.ep_Vyroba_GenOdvodZeMzdy
CREATE PROCEDURE dbo.ep_Vyroba_GenOdvodZeMzdy
@IDMzdy INT=NULL,
@bezVyrCis BIT=1,
@radaOdvod NVARCHAR(3)=NULL,
@skladOdvod NVARCHAR(30)=NULL,
@realizujPrijem BIT=0,
@prevodDoVyssiho BIT=0,
@kopiiNaTechSklad BIT=0,
@errMsg NVARCHAR(500)=N'' OUT,
@aktualizujPolozkyExistPrij BIT=0
AS
-- HD Consulting Strakonice, T. Buzin
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !!
-- konfiguraci lze ovlivnit pres tabulku #HDCTabGenOdvodZeMzdyKonfig
-- pozor, v tom pripade musi byt na rade prikazu sklad pro generovani odvodu roven NULL
SET NOCOUNT ON
DECLARE
@iTemp INT,
@aktDatum DATETIME=GETDATE(),
@datPrijem DATETIME,
@bChyba BIT,
@ret INT,
@cnt INT,
@jeOdvOper BIT=0,
@idUziv INT,
@IDPrikaz INT,
@IDZakazModif INT,
@IDPrikazVyssi INT,
@doklKV INT,
@IDKmen INT,
@jeFinal BIT=0,
@idPZ INT,
@idPZNew INT,
@idPZOld INT,
@idSS INT,
@idVCS INT,
@idVCP INT,
@idVPrVC INT,
@vc NVARCHAR(100),
@NekontrolMnozOdvedFinal BIT=0,
@mnozstvi NUMERIC(19,6)=0,
@radaOdvNaSklad NVARCHAR(3)=N'273',
@sklProOdvod NVARCHAR(30)=N'261',
@sklProFinal NVARCHAR(30)=N'312',
@sklProPolo NVARCHAR(30)=N'311',
@radaVPr NVARCHAR(10),
@idPrij INT,
@idPrijOld INT,
@uklidPomocTab BIT,
@idPrijKopie INT,
@sklTechnicky NVARCHAR(30),
@dpz TINYINT,
@cOrg INT,
@dzDatum DATETIME,
@dzMena NVARCHAR(3),
@dzKurz NUMERIC(19,6),
@dzKurzE NUMERIC(19,6),
@vstC TINYINT,
@jednM INT
DECLARE
@idDZPomocPrijem INT,
@idPZPomocPrijem INT,
@idSSPomocPrijem INT,
@mnozPrijem NUMERIC(19,6)
DECLARE @idPZsOld TABLE (ID INT NOT NULL)
SET @uklidPomocTab = 0
SELECT @jeOdvOper=pp.Odvadeci
FROM dbo.TabPrikazMzdyAZmetky pmz
INNER JOIN dbo.TabPrPostup pp ON (pp.IDPrikaz=pmz.IDPrikaz AND pp.Doklad=pmz.DokladPrPostup AND pp.Alt=pmz.AltPrPostup AND pp.IDOdchylkyDo IS NULL)
WHERE pmz.ID=@IDMzdy
IF (@jeOdvOper=0)
RETURN
IF OBJECT_ID(N'dbo.TabUserCfg', 'U') IS NOT NULL
SET @idUziv = (SELECT ID FROM dbo.TabUserCfg WHERE LoginName=SUSER_SNAME())
SET @idUziv = ISNULL(@idUziv, 0)
-- CREATE TABLE #HDCTabGenOdvodZeMzdyKonfig (RadaOdvodNaSklad NVARCHAR(3), SkladProOdvod NVARCHAR(30), BezVyrobnichCisel BIT=0, IDUziv INT)
IF OBJECT_ID(N'tempdb..#HDCTabGenOdvodZeMzdyKonfig', 'U') IS NOT NULL
SELECT TOP(1) @radaOdvNaSklad=ISNULL(RadaOdvodNaSklad, @radaOdvNaSklad), @sklProOdvod=ISNULL(SkladProOdvod, @sklProOdvod),
@bezVyrCis=ISNULL(BezVyrobnichCisel, @bezVyrCis), @idUziv=ISNULL(IDUziv, @idUziv)
FROM #HDCTabGenOdvodZeMzdyKonfig
IF (@sklTechnicky IS NULL)
SELECT @sklTechnicky=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NEZH%' AND Nazev NOT LIKE N'%polotov%' AND CisloStr LIKE N'2%'
IF (@sklTechnicky IS NULL)
SELECT @sklTechnicky=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%sklad%v}dej%'
DROP TABLE IF EXISTS #TabOdved
CREATE TABLE #TabOdved (
ID INT IDENTITY NOT NULL,
IDPrikaz INT NOT NULL,
IDDilec INT NOT NULL,
IDZakazModif INT NULL,
IDZakazka INT NULL,
maxMnozstvi NUMERIC(19,6) NULL,
mnozstvi NUMERIC(19,6) NOT NULL,
EvidJednotka NUMERIC(19,6) NOT NULL,
Sklad NVARCHAR(30) NULL,
KodUmisteni NVARCHAR(15) NULL,
IDPohZbo INT NULL,
PomVnoreni INT NULL,
StavPrikazu TINYINT NULL,
PRIMARY KEY(ID)
)
DROP TABLE IF EXISTS #TabOdved_IDMzdy
CREATE TABLE #TabOdved_IDMzdy (IDPrikaz int, IDMzdy int)
DROP TABLE IF EXISTS #TabVyrCisProGenOdv
CREATE TABLE #TabVyrCisProGenOdv (
ID INT IDENTITY NOT NULL,
IDOdvedeni INT NOT NULL,
IDPrikaz INT NOT NULL,
VyrCislo NVARCHAR(100) NOT NULL,
Mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0,
MaxMnozstvi NUMERIC(19,6) NULL,
IDVyrCP INT NULL,
PRIMARY KEY(ID)
)
DROP TABLE IF EXISTS #TabPolotovProGenOdv
CREATE TABLE #TabPolotovProGenOdv (
ID INT IDENTITY NOT NULL,
IDOdvedeni INT NOT NULL,
IDPrikaz INT NOT NULL,
Doklad INT NOT NULL,
IDDilec INT NOT NULL,
Mnozstvi NUMERIC(19,6) NOT NULL,
MaxMnozstvi NUMERIC(19,6) NULL,
PRIMARY KEY(ID)
)
DROP TABLE IF EXISTS #TabGenPrijem
CREATE TABLE #TabGenPrijem (ID INT NOT NULL, PRIMARY KEY(ID))
IF EXISTS(SELECT 1 FROM dbo.TabPrikazMzdyAZmetky WHERE GenerovanoOdvadeni=1 AND ID=@IDMzdy)
RETURN
SELECT @mnozstvi=kusy_odv FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy
UPDATE dbo.TabPrikazMzdyAZmetky SET GenerovanoOdvadeni=1 WHERE ID=@IDMzdy
IF (@@ROWCOUNT=0) RETURN
IF @mnozstvi<=0.0 RETURN
SELECT @IDPrikaz=IDPrikaz FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy
SELECT @radaVPr=Rada, @IDKmen=IDTabKmen, @IDZakazModif=IDZakazModif, @IDPrikazVyssi=IDPrikazVyssi
FROM dbo.TabPrikaz WHERE ID=@IDPrikaz
SET @jeFinal=0
IF EXISTS (SELECT 1 FROM dbo.TabParKmZ WHERE IDKmenZbozi=@IDKmen AND TypDilce=0)
SET @jeFinal=1
-- nastav sklad pro odvod podle karty
IF (@sklProOdvod IS NULL)
SELECT @sklProOdvod=VychoziSklad FROM dbo.TabParKmZ WHERE IDKmenZbozi=@IDKmen
-- pripadne zkus podle rady prikazu
SELECT @radaOdvNaSklad=CASE WHEN RadaDokl_OdvedeniPrikazu IS NULL THEN @radaOdvNaSklad ELSE RadaDokl_OdvedeniPrikazu END,
@sklProOdvod=CASE WHEN PrijemVyrDil_SkladProGenHlavDZ IS NULL THEN @sklProOdvod ELSE PrijemVyrDil_SkladProGenHlavDZ END
FROM dbo.TabRadyPrikazu WHERE Rada=@radaVPr
IF (@radaOdvod IS NOT NULL)
SET @radaOdvNaSklad=@radaOdvod
IF (@skladOdvod IS NULL)
BEGIN
SET @sklProOdvod = @sklProPolo
IF (@jeFinal=1)
SET @sklProOdvod = @sklProFinal
END
ELSE
SET @sklProOdvod = @skladOdvod
UPDATE #tabOdved SET mnozstvi=CASE WHEN @NekontrolMnozOdvedFinal=0 AND mnozstvi+@mnozstvi>maxMnozstvi THEN maxMnozstvi ELSE mnozstvi+@mnozstvi END WHERE IDPrikaz=@IDPrikaz
IF (@@ROWCOUNT=0)
INSERT INTO #tabOdved (IDPrikaz, IDDilec, IDZakazModif, IDZakazka, maxMnozstvi, EvidJednotka, mnozstvi, sklad, StavPrikazu)
SELECT P.ID,
CASE WHEN ISNULL(ParKZ.OdvadetNaZaklVari,0)=0 THEN P.IDTabKmen ELSE KZ.IDKusovnik END,
ZMD.IDZakazModif,
P.IDZakazka,
CASE WHEN @NekontrolMnozOdvedFinal=1 THEN NULL ELSE P.kusy_zive END,
P.EvidJednotka,
CASE WHEN @NekontrolMnozOdvedFinal=0 AND @mnozstvi>P.kusy_zive THEN P.kusy_zive ELSE @mnozstvi END,
P.sklad,
P.StavPrikazu
FROM dbo.TabPrikaz P
INNER JOIN dbo.TabKmenZbozi KZ ON (KZ.ID=P.IDTabKmen)
LEFT OUTER JOIN dbo.TabZakazModifDilce ZMD ON (ZMD.IDZakazModif=P.IDZakazModif AND ZMD.IDKmenZbozi=KZ.ID)
LEFT OUTER JOIN dbo.TabParKmZ ParKZ ON (ParKZ.IDKmenZbozi=P.IDTabKmen)
WHERE P.ID=@IDPrikaz AND
(CASE WHEN @NekontrolMnozOdvedFinal=0 AND @mnozstvi>P.kusy_zive THEN P.kusy_zive ELSE @mnozstvi END)>0
INSERT INTO #TabOdved_IDMzdy (IDPrikaz, IDMzdy) VALUES (@IDPrikaz, @IDMzdy)
UPDATE O SET maxMnozstvi=CASE WHEN RP.NekontrolMnozOdvedFinal=1 THEN NULL ELSE P.kusy_zive END
FROM #tabOdved O
INNER JOIN dbo.TabPrikaz P ON (P.ID=O.IDPrikaz)
INNER JOIN dbo.TabRadyPrikazu RP ON (RP.rada=P.rada)
UPDATE #tabOdved SET mnozstvi=maxMnozstvi WHERE maxMnozstvi IS NOT NULL AND mnozstvi>maxMnozstvi
DELETE #TabVyrCisProGenOdv WHERE IDOdvedeni IN (SELECT O2.ID FROM #tabOdved O2 WHERE O2.Mnozstvi<=0.0)
DELETE #TabPolotovProGenOdv WHERE IDOdvedeni IN (SELECT O2.ID FROM #tabOdved O2 WHERE O2.Mnozstvi<=0.0)
DELETE #tabOdved WHERE Mnozstvi<=0.0
SELECT @iTemp = 1 + ISNULL( (SELECT MAX(ID) FROM dbo.TabVyrCP), 0)
DBCC CHECKIDENT (TabVyrCP, RESEED, @iTemp)
IF (@sklProOdvod IS NOT NULL)
UPDATE #tabOdved SET Sklad=@sklProOdvod
EXEC dbo.hp_PrednabidniTabVyrCisProGenOdv @ProIDPrikaz=NULL
IF (@bezVyrCis=1)
DELETE #TabVyrCisProGenOdv
IF (@prevodDoVyssiho=0)
BEGIN
BEGIN TRY
-- pozor, nelze predem zadat do jake prijemky polozky odvodu generovat, vzdy se generuje nova, o prevedeni polozek se postarame nize
EXEC @ret=dbo.hp_OdvedeniPrikazu @RadaDokladu=@radaOdvNaSklad, @IDObdobi=NULL, @KonecneOdvedeni=0, @DatPorizeni=NULL, @SekejZakazky=1, @SekejPrikazy=1
END TRY
BEGIN CATCH
SET @errMsg = 'Chyba pri odvadeni: ' + ERROR_MESSAGE()
END CATCH
END
ELSE
BEGIN
IF (@IDPrikazVyssi IS NOT NULL)
BEGIN
IF OBJECT_ID(N'tempdb..#TabOdved_IDMzdy', 'U') IS NOT NULL
DELETE FROM #TabOdved_IDMzdy
INSERT #TabOdved_IDMzdy (IDPrikaz, IDMzdy) SELECT @idPrikaz, @idMzdy
SET @doklKV = (SELECT ID FROM dbo.TabPrKVazby WHERE IDPrikaz=@IDPrikazVyssi AND nizsi=@IDKmen AND IDOdchylkyDo IS NULL)
EXEC @idPZ=dbo.hp_OdvedeniPrikazuPrevodem @DatPripadu=@aktDatum, @KonecneOdvedeniNatvrdo=0, @IDPrikazZdroj=@idPrikaz, @IDPrikazCil=@IDPrikazVyssi,
@Doklad=@doklKV, @IDDilec=@IDKmen, @mnozstvi=@mnozstvi, @IDOdvedeniVC=0, @IDZakazModif=@IDZakazModif
IF OBJECT_ID(N'tempdb..#TabGenPrijem', 'U') IS NOT NULL
DELETE FROM #TabGenPrijem
END -- @IDPrikazVyssi IS NOT NULL
END
-- ID polozek puvodnich dokladu
DELETE FROM @idPZsOld
DECLARE prij CURSOR LOCAL FOR
SELECT ID FROM #TabGenPrijem
OPEN prij
WHILE (1=1)
BEGIN
FETCH NEXT FROM prij INTO @idPrij
IF (@@FETCH_STATUS<>0) BREAK
INSERT @idPZsOld (ID) SELECT ID FROM dbo.TabPohybyZbozi WHERE IDDoklad=@idPrij
SELECT @datPrijem=DatPorizeni FROM dbo.TabDokladyZbozi WHERE ID=@idPrij
SET @idPrijOld = NULL
-- zjisti jestli na cilovem skladu mame nejakou otevrenou prijemku z dnesniho dne
SET @cnt = ISNULL( (SELECT COUNT(ID) FROM dbo.TabDokladyZbozi WHERE ID<>@idPrij AND PoradoveCislo>0 AND DruhPohybuZbo=0 AND RadaDokladu=@radaOdvNaSklad
AND CisloOrg=0 AND IDSklad=@sklProOdvod AND Realizovano=0 AND BlokovaniEditoru IS NULL AND dbo.hf_TruncDate(DatPorizeni)=dbo.hf_TruncDate(@datPrijem))
, 0)
IF (@cnt=0) -- nemame, vygeneruj ji
BEGIN
SELECT @dpz=DruhPohybuZbo, @dzDatum=DatPorizeni, @dzMena=Mena FROM dbo.TabDokladyZbozi WHERE ID=@idPrij
SET @datPrijem = @dzDatum
EXEC dbo.hp_InsertHlavickyOZ @ident=@idPrijOld OUT, @Sklad=@sklProOdvod, @DruhPohybu=@dpz, @RadaDokladu=@radaOdvNaSklad,
@Mena=@dzMena, @CisloOrg=0, @DatumPorizeni=@datPrijem
END
IF (@cnt=1) -- ma jen jednu
BEGIN
SELECT TOP(1) @idPrijOld=ID FROM dbo.TabDokladyZbozi WHERE ID<>@idPrij AND PoradoveCislo>0 AND DruhPohybuZbo=0 AND RadaDokladu=@radaOdvNaSklad
AND CisloOrg=0 AND IDSklad=@sklProOdvod AND Realizovano=0 AND BlokovaniEditoru IS NULL AND dbo.hf_TruncDate(DatPorizeni)=dbo.hf_TruncDate(@datPrijem)
END
IF (@cnt>1) -- mam jich vic, vezmi tu posledni (nejnovejsi)
BEGIN
SET @idPrijOld = (SELECT TOP(1) ID FROM dbo.TabDokladyZbozi WHERE ID<>@idPrij AND PoradoveCislo>0 AND DruhPohybuZbo=0 AND RadaDokladu=@radaOdvNaSklad
AND CisloOrg=0 AND IDSklad=@sklProOdvod AND Realizovano=0 AND BlokovaniEditoru IS NULL
AND dbo.hf_TruncDate(DatPorizeni)=dbo.hf_TruncDate(@datPrijem)
ORDER BY DatPorizeni DESC)
END
IF (@idPrijOld IS NOT NULL) -- nakopiruj do ni polozky nove prijemky
BEGIN
IF (@aktualizujPolozkyExistPrij=0) AND (@idPrijOld IS NOT NULL) -- nechci existujici prijemku aktualizovat, novou polozku pridam
BEGIN
EXEC dbo.hp_generuj_navazny_doklad @IDDokladDst=@idPrijOld, @IDDokladSrc=@idPrij, @CisloOrgCil=0, @MUCil=NULL, @MenaCil=NULL,
@KurzCil=NULL, @JednotkaMenyCil=NULL, @KurzEuroCil=NULL, @CisloZakCil=NULL, @NOkruhCil=NULL,
@StredNakladCil=NULL, @StredVynosCil=NULL, @FormaDopravyCil=NULL, @VozidloCil=NULL, @ObjednavkaCil=NULL,
@PopisDodavkyCil=NULL, @NavaznyDobropisCil=NULL, @ZamestnanecCil=NULL, @DodFakCil=NULL, @Nasobek=1,
@SlevaCil=NULL, @VytvaretDokladovouVazbu=0, @VytvaretPolozkovouVazbu=0, @ChybaSkladana=@errMsg OUT,
@KopirovaniDokladu=0
SET @idVPrVC = (SELECT IDVyrCis FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy)
SET @vc = NULL
IF (@idVPrVC IS NOT NULL)
SET @vc = (SELECT VyrCislo FROM dbo.TabVyrCisPrikaz WHERE ID=@idVPrVC)
SET @idPZNew = NULL
SET @idVCP = (SELECT TOP(1) vcp.ID FROM dbo.TabPohybyZbozi p WITH(NOLOCK) JOIN dbo.TabDokladyZbozi d WITH(NOLOCK) ON (d.ID=p.IDDoklad)
JOIN dbo.TabStavSkladu s WITH(NOLOCK) ON (s.ID=p.IDZboSklad) JOIN dbo.TabVyrCP vcp WITH(NOLOCK) ON (vcp.IDPolozkaDokladu=p.ID)
JOIN dbo.TabVyrCS vcs ON (vcs.ID=vcp.IDVyrCis)
WHERE d.ID=@idPrij AND d.DruhPohybuZbo=0 AND p.TypVyrobnihoDokladu IN (0) AND s.IDKmenZbozi=@IDKmen AND vcs.Nazev1=@vc)
IF (@vc IS NOT NULL)
SET @idPZNew = (SELECT TOP(1) p.ID FROM dbo.TabPohybyZbozi p WITH(NOLOCK) JOIN dbo.TabDokladyZbozi d WITH(NOLOCK) ON (d.ID=p.IDDoklad)
JOIN dbo.TabStavSkladu s WITH(NOLOCK) ON (s.ID=p.IDZboSklad) JOIN dbo.TabVyrCP vcp WITH(NOLOCK) ON (vcp.IDPolozkaDokladu=p.ID)
JOIN dbo.TabVyrCS vcs ON (vcs.ID=vcp.IDVyrCis)
WHERE p.IDDoklad=@idPrijOld AND d.DruhPohybuZbo=0 AND p.TypVyrobnihoDokladu IN (0) AND s.IDKmenZbozi=@IDKmen AND vcs.Nazev1=@vc)
ELSE
SET @idPZNew = (SELECT TOP(1) p.ID FROM dbo.TabPohybyZbozi p WITH(NOLOCK) JOIN dbo.TabStavSkladu s WITH(NOLOCK) ON (s.ID=p.IDZboSklad)
WHERE p.IDDoklad=@idPrijOld AND s.IDKmenZbozi=@IDKmen ORDER BY p.ID DESC)
IF (@idPZNew IS NOT NULL)
INSERT dbo.TabPrikazMzdyAZmetkyGenPZ (IDMzdy, TypGen, IDPohybu) SELECT @IDMzdy, 2, @idPZNew
END
IF (@aktualizujPolozkyExistPrij=1) AND (@idPrijOld IS NOT NULL) -- chci existujici prijemku aktualizovat (udaji nove polozky)
BEGIN
SELECT @dzMena=Mena, @dzKurz=Kurz, @dzKurzE=KurzEuro, @jednM=JednotkaMeny, @vstC=VstupniCena, @cOrg=CisloOrg
FROM dbo.TabDokladyZbozi WHERE ID=@idPrijOld
DECLARE cPol CURSOR LOCAL FAST_FORWARD FOR
SELECT ID, IDZboSklad FROM dbo.TabPohybyZbozi WHERE IDDoklad=@idPrij
OPEN cPol
WHILE (1=1)
BEGIN
FETCH NEXT FROM cPol INTO @idPZNew, @idSS
IF (@@FETCH_STATUS<>0) BREAK
SET @cnt = ISNULL( (SELECT COUNT(ID) FROM dbo.TabPohybyZbozi WHERE IDDoklad=@idPrijOld AND IDZboSklad=@idSS), 0)
IF (@cnt=0) -- nemam na starem dokladu polozku, zalozim
BEGIN
EXEC dbo.hp_InsertPolozkyOZ @Ident=@idPZOld OUT, @IDDoklad=@idPrijOld, @DruhPohybu=0, @CisloOrg=@cOrg, @IDZboSklad=@idSS,
@Mena=@dzMena, @Kurz=@dzKurz, @KurzEuro=@dzKurzE, @JednotkaMeny=@jednM, @SazbaSD=NULL, @SazbaDPH=NULL,
@ZakazanoDPH=0, @VstupniCena=@vstC
SET @cnt = ISNULL( (SELECT COUNT(ID) FROM dbo.TabPohybyZbozi WHERE IDDoklad=@idPrijOld AND IDZboSklad=@idSS), 0)
END
IF (@cnt=1) -- polozka dohledana, aktualizuju
BEGIN
SELECT @idPZOld=ID FROM dbo.TabPohybyZbozi WHERE IDDoklad=@idPrijOld AND IDZboSklad=@idSS
UPDATE o SET o.Mnozstvi=o.Mnozstvi + n.Mnozstvi
FROM dbo.TabPohybyZbozi n, dbo.TabPohybyZbozi o WHERE n.ID=@idPZNew AND o.ID=@idPZOld
-- pokud mam VC, prepis je
IF EXISTS (SELECT 1 FROM dbo.TabVyrCP WHERE IDPolozkaDokladu=@idPZNew)
INSERT dbo.TabVyrCP (IDPolozkaDokladu, IDVyrCis, Nazev, Mnozstvi, CCEvid, DatVstup, Autor, DatExpirace)
SELECT @idPZOld, IDVyrCis, Nazev, Mnozstvi, CCEvid, DatVstup, Autor, DatExpirace FROM dbo.TabVyrCP WHERE ID=@idPZNew
END
END
CLOSE cPol
DEALLOCATE cPol
END -- @idPrijOld IS NOT NULL
END -- @cnt=1, mam existujici prijemku
-- kopie na technologicky sklad, aby se mohly delat provozni vydejky
SET @idPrijKopie = NULL
IF (@kopiiNaTechSklad=1) AND (@sklTechnicky IS NOT NULL)
BEGIN
SELECT @dpz=DruhPohybuZbo, @dzDatum=DatPorizeni, @dzMena=Mena FROM dbo.TabPohybyZbozi WHERE ID=@idPrij
EXEC dbo.hp_InsertHlavickyOZ @ident=@idPrijKopie OUT, @Sklad=@sklTechnicky, @DruhPohybu=@dpz, @RadaDokladu=@radaOdvNaSklad,
@Mena=@dzMena, @CisloOrg=0, @DatumPorizeni=@dzDatum
IF (@idPrijKopie IS NOT NULL)
EXEC dbo.hp_generuj_navazny_doklad @IDDokladDst=@idPrijKopie, @IDDokladSrc=@idPrij, @CisloOrgCil=0, @MUCil=NULL, @MenaCil=NULL,
@KurzCil=NULL, @JednotkaMenyCil=NULL, @KurzEuroCil=NULL, @CisloZakCil=NULL, @NOkruhCil=NULL,
@StredNakladCil=NULL, @StredVynosCil=NULL, @FormaDopravyCil=NULL, @VozidloCil=NULL, @ObjednavkaCil=NULL,
@PopisDodavkyCil=NULL, @NavaznyDobropisCil=NULL, @ZamestnanecCil=NULL, @DodFakCil=NULL, @Nasobek=1,
@SlevaCil=NULL, @VytvaretDokladovouVazbu=0, @VytvaretPolozkovouVazbu=0, @ChybaSkladana=@errMsg OUT,
@KopirovaniDokladu=0
END -- kopii na TechSklad
IF (@realizujPrijem=1)
BEGIN
BEGIN TRY
-- vypnuto, polozky se davaji do jedne denni prijemky, vygenerovana bude zrusena o krok dal
-- EXEC dbo.hp_Realizuj_Prijem @ID=@idPrij, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1
IF (@idPrijKopie IS NOT NULL)
EXEC dbo.hp_Realizuj_Prijem @ID=@idPrijKopie, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1
END TRY
BEGIN CATCH
SET @errMsg = ERROR_MESSAGE()
END CATCH
END
-- smaz vygenerovanou prijemku, davame to na sbernou s ID = @idPrijOld, viz kopie polozek vyse pres hp_generuj_navazny_doklad nebo kurzor
IF OBJECT_ID(N'tempdb..#TabPomSeznamDZProDel', 'U') IS NULL
CREATE TABLE #TabPomSeznamDZProDel (ID INT NOT NULL)
INSERT #TabPomSeznamDZProDel (ID) VALUES (@idPrij)
EXEC dbo.hp_SmazSeznamDokZbozi -- postara se i o smazani #TabPomSeznamDZProDel
DELETE FROM dbo.TabPrikazMzdyAZmetkyGenPZ WHERE IDMzdy=@IDMzdy AND TypGen IN (2,3) AND IDPohybu IN (SELECT ID FROM @idPZsOld)
-- vycisti seed
SELECT @iTemp = 1 + ISNULL( (SELECT MAX(ID) FROM dbo.TabDokladyZbozi), 0)
DBCC CHECKIDENT (TabDokladyZbozi, RESEED, @iTemp)
SELECT @iTemp = 1 + ISNULL( (SELECT MAX(ID) FROM dbo.TabPohybyZbozi), 0)
DBCC CHECKIDENT (TabPohybyZbozi, RESEED, @iTemp)
END
CLOSE prij
DEALLOCATE prij
-- cisteni
DROP TABLE IF EXISTS #TabGenPrijem
DROP TABLE IF EXISTS #TabPolotovProGenOdv
DROP TABLE IF EXISTS #TabVyrCisProGenOdv
DROP TABLE IF EXISTS #TabOdved_IDMzdy
DROP TABLE IF EXISTS #TabOdved
DROP TABLE IF EXISTS #HDCTabGenOdvodZeMzdyKonfig

View File

@ -12,7 +12,8 @@ CREATE PROCEDURE dbo.ep_Vyroba_GenVydejZeMzdy
@denSmena NVARCHAR(15)=NULL, @denSmena NVARCHAR(15)=NULL,
@sklVydej NVARCHAR(30)=N'261', @sklVydej NVARCHAR(30)=N'261',
@radaVydej NVARCHAR(3)=N'223', @radaVydej NVARCHAR(3)=N'223',
@respExistDokl BIT=1 @respExistDokl BIT=1,
@genPrijemNaNeskladMnoz BIT=0
AS AS
-- HD Consulting Strakonice, T. Buzin -- HD Consulting Strakonice, T. Buzin
@ -26,6 +27,7 @@ AS
SET NOCOUNT ON SET NOCOUNT ON
DECLARE DECLARE
@tranCount INT,
@bChyba BIT, @bChyba BIT,
@opakReal BIT, @opakReal BIT,
@retVal INT=0, @retVal INT=0,
@ -34,10 +36,12 @@ DECLARE
@idUziv INT=0, @idUziv INT=0,
@idZam INT, @idZam INT,
@sklTechnolog NVARCHAR(30), @sklTechnolog NVARCHAR(30),
@sklTechnologPolo NVARCHAR(30),
@sklMatHlavni NVARCHAR(30), @sklMatHlavni NVARCHAR(30),
@sklPekarna NVARCHAR(30), @sklPekarna NVARCHAR(30),
@szDilec NVARCHAR(3) @szDilec NVARCHAR(3)
DECLARE DECLARE
@idDZOut INT,
@idDZPomocPrij INT, @idDZPomocPrij INT,
@radaPrijem NVARCHAR(3)='292', @radaPrijem NVARCHAR(3)='292',
@menaPrij NVARCHAR(3), @menaPrij NVARCHAR(3),
@ -47,9 +51,11 @@ DECLARE
@jednMPrij INT, @jednMPrij INT,
@idPZPomocPrij INT, @idPZPomocPrij INT,
@idSSPomocPrij INT, @idSSPomocPrij INT,
@idSSPomocPek INT,
@mnozSklad NUMERIC(19,6), @mnozSklad NUMERIC(19,6),
@mnozVydej NUMERIC(19,6), @mnozVydej NUMERIC(19,6),
@mnozPrij NUMERIC(19,6) @mnozPrij NUMERIC(19,6),
@genDodatecnyPrijem BIT=0
@ -62,13 +68,15 @@ SET @idUziv = ISNULL(@idUziv, 0)
SET @denSmena = ISNULL(@denSmena, N'') SET @denSmena = ISNULL(@denSmena, N'')
IF (@sklMatHlavni IS NULL) IF (@sklMatHlavni IS NULL)
SELECT @sklMatHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavn<EFBFBD> sklad - Materi<72>l' SELECT @sklMatHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavn<EFBFBD> sklad - Materi<72>l' AND CisloStr LIKE N'3%'
IF (@sklTechnolog IS NULL) IF (@sklTechnolog IS NULL)
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE<4E><45>%' SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE<4E><45>%' AND Nazev NOT LIKE N'%polotov%' AND CisloStr LIKE N'2%'
IF (@sklTechnologPolo IS NULL)
SELECT @sklTechnologPolo=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE<4E><45>%pol%' AND CisloStr LIKE N'2%'
IF (@sklTechnolog IS NULL) IF (@sklTechnolog IS NULL)
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%sklad%v<>dej%' SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%sklad%v<>dej%' AND CisloStr LIKE N'2%'
IF (@sklPekarna IS NULL) IF (@sklPekarna IS NULL)
SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'V<EFBFBD>roba - Pek<65>rna' SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'V<EFBFBD>roba - Pek<65>rna' AND CisloStr LIKE N'2%'
IF EXISTS(SELECT 1 FROM dbo.TabPrikazMzdyAZmetky) IF EXISTS(SELECT 1 FROM dbo.TabPrikazMzdyAZmetky)
@ -311,7 +319,9 @@ DECLARE
@alt702 NCHAR(1), @alt702 NCHAR(1),
@mnoz702 NUMERIC(19,6), @mnoz702 NUMERIC(19,6),
@idMzda702 INT, @idMzda702 INT,
@aktDat DATETIME @aktDat DATETIME,
@idKZPomoc INT,
@jc NUMERIC(19,6)
SET @aktDat = GETDATE() SET @aktDat = GETDATE()
@ -398,25 +408,25 @@ WHILE (1=1)
-- begin: prijemka nedostatecneho materialu
-- begin: prijemka materialu pro vydejku (1:1)
SET @idDZPomocPrij=NULL SET @idDZPomocPrij=NULL
DECLARE pomPrij CURSOR LOCAL FOR DECLARE pomPrij CURSOR LOCAL FOR
SELECT p.IDZboSklad, p.Mnozstvi SELECT p.IDZboSklad, p.Mnozstvi, s.IDKmenZbozi
FROM dbo.TabPohybyZbozi p FROM dbo.TabPohybyZbozi p
INNER JOIN dbo.TabStavSkladu s ON (s.ID=p.IDZboSklad) INNER JOIN dbo.TabStavSkladu s ON (s.ID=p.IDZboSklad)
INNER JOIN dbo.TabKmenZbozi k ON (k.ID=s.IDKmenZbozi) INNER JOIN dbo.TabKmenZbozi k ON (k.ID=s.IDKmenZbozi)
WHERE p.IDDoklad=@idVyd WHERE p.IDDoklad=@idVyd
AND k.Material=1 AND k.Sluzba=0 AND k.Material=1 AND k.Sluzba=0
OPEN pomPrij OPEN pomPrij
WHILE (1=1) WHILE (1=1) AND (1=0)
BEGIN BEGIN
FETCH NEXT FROM pomPrij INTO @idSSPomocPrij, @mnozVydej FETCH NEXT FROM pomPrij INTO @idSSPomocPrij, @mnozVydej, @idKZPomoc
IF (@@FETCH_STATUS<>0) BREAK IF (@@FETCH_STATUS<>0) BREAK
SET @mnozSklad = ISNULL( (SELECT Mnozstvi+MnozstviKPrijmu-MnozstviKVydeji FROM dbo.TabStavSkladu WHERE ID=@idSSPomocPrij), 0) IF (@mnozVydej>0)
IF (@mnozVydej>@mnozSklad)
BEGIN BEGIN
SET @mnozPrij = @mnozVydej - @mnozSklad SET @mnozPrij = @mnozVydej
IF (@idDZPomocPrij IS NULL) IF (@idDZPomocPrij IS NULL)
BEGIN BEGIN
EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZPomocPrij OUT, @Sklad=@sklTechnolog, @DruhPohybu=0, @RadaDokladu=@radaPrijem, @CisloOrg=0 EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZPomocPrij OUT, @Sklad=@sklTechnolog, @DruhPohybu=0, @RadaDokladu=@radaPrijem, @CisloOrg=0
@ -428,50 +438,90 @@ WHILE (1=1)
EXEC dbo.hp_InsertPolozkyOZ @Ident=@idPZPomocPrij OUT, @IDDoklad=@idDZPomocPrij, @DruhPohybu=0, @CisloOrg=0, @IDZboSklad=@idSSPomocPrij, EXEC dbo.hp_InsertPolozkyOZ @Ident=@idPZPomocPrij OUT, @IDDoklad=@idDZPomocPrij, @DruhPohybu=0, @CisloOrg=0, @IDZboSklad=@idSSPomocPrij,
@Mena=@menaPrij, @Kurz=@kurzPrij, @KurzEuro=@kurzPrijE, @JednotkaMeny=@jednMPrij, @SazbaSD=NULL, @SazbaDPH=NULL, @Mena=@menaPrij, @Kurz=@kurzPrij, @KurzEuro=@kurzPrijE, @JednotkaMeny=@jednMPrij, @SazbaSD=NULL, @SazbaDPH=NULL,
@ZakazanoDPH=NULL, @VstupniCena=@vstCPrij, @Mnozstvi=@mnozPrij, @PovolitDuplicitu=1 @ZakazanoDPH=NULL, @VstupniCena=@vstCPrij, @Mnozstvi=@mnozPrij, @PovolitDuplicitu=1
END IF (@idPZPomocPrij IS NOT NULL)
END BEGIN
SET @jc = 0
SET @idSSPomocPek = (SELECT ID FROM dbo.TabStavSkladu WHERE IDSklad=@sklPekarna AND IDKmenZbozi=@idKZPomoc)
IF (@idSSPomocPek IS NULL)
SET @idSSPomocPek = (SELECT ID FROM dbo.TabStavSkladu WHERE IDSklad=@sklMatHlavni AND IDKmenZbozi=@idKZPomoc)
IF (@idSSPomocPek IS NOT NULL)
SET @jc = ISNULL( (SELECT CASE MnozFinReal WHEN 0 THEN 0 ELSE StavSkladuSouvis/MnozFinReal END FROM dbo.TabStavSkladu WHERE ID=@idSSPomocPek), 0)
UPDATE dbo.TabPohybyZbozi SET JCbezDaniKc=ISNULL(@jc, 1) WHERE Id=@idPZPomocPrij
END -- @idPZPomocPrij
END -- @idDZPomocPrij
END -- @mnozVydej>0
END END
CLOSE pomPrij CLOSE pomPrij
DEALLOCATE pomPrij DEALLOCATE pomPrij
IF (@idDZPomocPrij IS NOT NULL) IF (@idDZPomocPrij IS NOT NULL)
BEGIN BEGIN
BEGIN TRY BEGIN TRY
EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=@idDZPomocPrij, @AktualizaceSlev=0
EXEC dbo.hp_Realizuj_Prijem @ID=@idDZPomocPrij, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1 EXEC dbo.hp_Realizuj_Prijem @ID=@idDZPomocPrij, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1
END TRY END TRY
BEGIN CATCH BEGIN CATCH
SET @errMsg = ERROR_MESSAGE() SET @errMsg = ERROR_MESSAGE()
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba (1) p<><70>jemky korekce (ID prijemky ' + CONVERT(nvarchar, @idDZPomocPrij) + N') naskladn<64>n<EFBFBD> pro v<>dejku: ' + @errMsg, @idVyd
END CATCH END CATCH
END END -- @idDZPomocPrij IS NOT NULL
-- end: prijemka nedostatecneho materialu -- end: prijemka materialu pro vydejku (1:1)
-- realizace vydejky -- realizace vydejky
IF (@realizujVydej=1) IF (@realizujVydej=1)
BEGIN BEGIN
SET @tranCount=@@TRANCOUNT
BEGIN TRY BEGIN TRY
EXEC dbo.hp_Realizuj_Vydej @ID=@idVyd, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT EXEC dbo.hp_Realizuj_Vydej @ID=@idVyd, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT
END TRY END TRY
BEGIN CATCH BEGIN CATCH
IF (@tranCount=0) AND (@@TRANCOUNT>0)
ROLLBACK
SET @opakReal=0 SET @opakReal=0
SET @errMsg = ERROR_MESSAGE() SET @errMsg = ERROR_MESSAGE()
IF (CHARINDEX(N'71553', @errMsg)>0) IF (CHARINDEX(N'71553', @errMsg)>0)
SET @opakReal=1 SET @opakReal=1
IF (@opakReal=0) IF (@opakReal=0)
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba realizace v<>dejky p<><70>kazu: ' + @errMsg, @idVyd INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba realizace v<>dejky: ' + @errMsg, @idVyd
END CATCH END CATCH
IF (@opakReal=1) IF (@opakReal=1)
BEGIN BEGIN
BEGIN TRY BEGIN TRY
EXEC dbo.ep_Vyroba_DoplnSkladProVydejDleDokladu @IDDoklad=@idVyd, @errMsg=@errMsg OUT SET @tranCount=@@TRANCOUNT
SET @errMsg = N''
SET @genDodatecnyPrijem=1
EXEC dbo.ep_Vyroba_DoplnSkladProVydejDleDokladu @IDDoklad=@idVyd, @errMsg=@errMsg OUT, @IDDokladPrijem=@idDZOut OUT
IF (@errMsg=N'') IF (@errMsg=N'')
EXEC dbo.hp_Realizuj_Vydej @ID=@idVyd, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT EXEC dbo.hp_Realizuj_Vydej @ID=@idVyd, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT
ELSE ELSE
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba korekce naskladneni pro vydejku: ' + @errMsg, @idVyd INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba (2) p<><70>jemky korekce (ID ' + CONVERT(nvarchar, @idDZOut) + N') naskladn<EFBFBD>n<EFBFBD> pro v<EFBFBD>dejku: ' + @errMsg, @idVyd
END TRY
BEGIN CATCH
IF (@tranCount=0) AND (@@TRANCOUNT>0)
ROLLBACK TRAN
SET @errMsg = ERROR_MESSAGE()
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba (2) opakovan<61> realizace v<>dejky: ' + @errMsg, @idVyd
END CATCH
END
-- znovu otestuj
IF EXISTS (SELECT 1 FROM dbo.TabDokladyZbozi WHERE ID=@idVyd AND Realizovano=0) AND (@genDodatecnyPrijem=0)
BEGIN
BEGIN TRY
SET @genDodatecnyPrijem=1
EXEC dbo.ep_Vyroba_DoplnSkladProVydejDleDokladu @IDDoklad=@idVyd, @errMsg=@errMsg OUT, @IDDokladPrijem=@idDZOut OUT
IF (@errMsg=N'')
EXEC dbo.hp_Realizuj_Vydej @ID=@idVyd, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT
ELSE
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba (3) p<><70>jemky korekce (ID ' + CONVERT(nvarchar, @idDZOut) + N') naskladn<64>n<EFBFBD> pro v<>dejku: ' + @errMsg, @idVyd
END TRY END TRY
BEGIN CATCH BEGIN CATCH
SET @errMsg = ERROR_MESSAGE() SET @errMsg = ERROR_MESSAGE()
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba opakovane realizace v<>dejky p<><70>kazu: ' + @errMsg, @idVyd INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba (3) opakovan<EFBFBD> realizace v<>dejky: ' + @errMsg, @idVyd
END CATCH END CATCH
END END

View File

@ -0,0 +1,506 @@
-- dbo.ep_Vyroba_GenVydejZeMzdy
CREATE PROCEDURE dbo.ep_Vyroba_GenVydejZeMzdy
@IDMzdy INT=NULL,
@IDDoklad INT=NULL,
@spotrebaTesto BIT=0,
@spotreba702 BIT=0,
@smazVydejTesto BIT=0,
@errMsg NVARCHAR(500)=N'' OUT,
@extTab NVARCHAR(50)=NULL,
@vydejAll BIT=0,
@realizujVydej BIT=0,
@denSmena NVARCHAR(15)=NULL,
@sklVydej NVARCHAR(30)=N'261',
@radaVydej NVARCHAR(3)=N'223',
@respExistDokl BIT=1
AS
-- HD Consulting Strakonice, T. Buzin
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !!
-- @extTab - tabulka, do ktere budou vraceny pohyby vydejky @extTab (ID INT NOT NULL, IDPohZbo INT NOT NULL)
-- @vydejAll - bude vydano vse, nejen kde jde splnena podminka TabPrKVazby - dbo.hf_GetPrPDokladForPrKV(PrKV.ID)=@PrP_Doklad
-- pokud existuje objekt #HDCTabPrKVazbyGenPredna, jedu vydej podle nej
SET NOCOUNT ON
DECLARE
@bChyba BIT,
@opakReal BIT,
@retVal INT=0,
@errID int,
@sql NVARCHAR(1000),
@idUziv INT=0,
@idZam INT,
@sklTechnolog NVARCHAR(30),
@sklTechnologPolo NVARCHAR(30),
@sklMatHlavni NVARCHAR(30),
@sklPekarna NVARCHAR(30),
@szDilec NVARCHAR(3)
DECLARE
@idDZPomocPrij INT,
@radaPrijem NVARCHAR(3)='292',
@menaPrij NVARCHAR(3),
@kurzPrij NUMERIC(19,6),
@kurzPrijE NUMERIC(19,6),
@vstCPrij TINYINT,
@jednMPrij INT,
@idPZPomocPrij INT,
@idSSPomocPrij INT,
@mnozSklad NUMERIC(19,6),
@mnozVydej NUMERIC(19,6),
@mnozPrij NUMERIC(19,6)
IF OBJECT_ID(N'dbo.TabUserCfg', N'U') IS NOT NULL
SET @idUziv = (SELECT ID FROM dbo.TabUserCfg WHERE LoginName=SUSER_SNAME())
SET @idUziv = ISNULL(@idUziv, 0)
SET @denSmena = ISNULL(@denSmena, N'')
IF (@sklMatHlavni IS NULL)
SELECT @sklMatHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavn<EFBFBD> sklad - Materi<72>l'
IF (@sklTechnolog IS NULL)
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%ne<6E><65>%' AND CisloStr LIKE N'2%'
IF (@sklTechnologPolo IS NULL)
SELECT @sklTechnologPolo=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%ne<6E><65>%pol%' AND CisloStr LIKE N'2%'
IF (@sklTechnolog IS NULL)
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%sklad%v<>dej%'
IF (@sklPekarna IS NULL)
SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'V<EFBFBD>roba - Pek<65>rna'
IF EXISTS(SELECT 1 FROM dbo.TabPrikazMzdyAZmetky)
BEGIN
SELECT @retVal=MAX(ID) FROM dbo.TabPrikazMzdyAZmetky
DBCC CHECKIDENT(TabPrikazMzdyAZmetky, RESEED, @retVal)
END
ELSE
DBCC CHECKIDENT(TabPrikazMzdyAZmetky, RESEED, 1)
DROP TABLE IF EXISTS #TabPrKVazbyGen
CREATE TABLE #TabPrKVazbyGen (
ID INT IDENTITY NOT NULL,
Generuj BIT NOT NULL DEFAULT 1,
PoKorekciDat BIT NOT NULL DEFAULT 0,
IDPrKV INT NOT NULL,
Doklad INT NOT NULL,
IDPrikaz INT NOT NULL,
Prednastaveno BIT NOT NULL DEFAULT 1,
Sklad NVARCHAR(30) NULL,
VyrStredisko NVARCHAR(30) NULL,
IDPracoviste INT NULL,
mnoz_zad NUMERIC(19,6) NOT NULL DEFAULT 0,
Mnoz_nepotrebne NUMERIC(19,6) NOT NULL DEFAULT 0,
Mnoz_skut_realizovane NUMERIC(19,6) NOT NULL DEFAULT 0,
Cena_real NUMERIC(19,6) NOT NULL DEFAULT 0,
Mnoz_odv NUMERIC(19,6) NOT NULL DEFAULT 0,
Cena_odv NUMERIC(19,6) NOT NULL DEFAULT 0,
MnozstviMax NUMERIC(19,6) NULL,
PuvodniMnozstviPoz NUMERIC(19,6) NULL,
MnozstviPoz NUMERIC(19,6) NOT NULL,
PomMnozPoz NUMERIC(19,6) NOT NULL DEFAULT 0,
IDPohZbo INT NULL,
PoznamkaNaDoklad NVARCHAR(max) NULL,
priorita INT NOT NULL DEFAULT 0,
vyssi INT NOT NULL,
nizsi INT NOT NULL,
DavkaTPV NUMERIC(19,6) NOT NULL DEFAULT 1,
pozice NVARCHAR(100) NULL DEFAULT N'',
Operace NCHAR(4) NULL,
FixniMnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0,
mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 1,
ProcZtrat NUMERIC(5,2) NOT NULL DEFAULT 0,
mnozstviSeZtratou NUMERIC(19,6) NOT NULL DEFAULT 0,
Prirez NUMERIC(19,6) NOT NULL DEFAULT 1,
Poznamka NTEXT NULL,
pom_pomer_A NUMERIC(19,6) NULL,
pom_pomer_B NUMERIC(19,6) NULL,
Dodavatel INT NULL,
MJ NVARCHAR(10) NULL,
mnoz_pozadovane AS (CONVERT(numeric(19,6),(CASE WHEN [mnoz_nepotrebne]>[mnoz_zad] THEN 0.0 ELSE [mnoz_zad] - [mnoz_nepotrebne] END))),
PRIMARY KEY (ID)
)
DROP TABLE IF EXISTS #TabPrKVazbyGen_IDMzdy
CREATE TABLE #TabPrKVazbyGen_IDMzdy (IDPrikaz int, Doklad int, IDMzdy int)
DROP TABLE IF EXISTS #TabPrKVazbyGenVC
CREATE TABLE #TabPrKVazbyGenVC (
ID INT IDENTITY NOT NULL,
IDPolozky INT NOT NULL,
VyrCislo NVARCHAR(100) NOT NULL,
Mnozstvi NUMERIC(19,6) NOT NULL,
Sklad NVARCHAR(30) NULL,
IDKmenZbozi INT NULL,
IDVyrCP INT NULL,
PRIMARY KEY(ID)
)
DECLARE
@RespektovatExistEvid bit,
@idDilec INT,
@IDPrikaz int=NULL,
@IDPrPostup INT=NULL,
@mnozstviPomer_A numeric(19,6),
@mnozstviPomer_B numeric(19,6),
@IDPrKV int,
@mnoz_zad numeric(19,6),
@PrKVDoklad int,
@PocetVazeb int,
@PrP_Doklad int
SET @RespektovatExistEvid = @respExistDokl
SELECT @errID=NULL, @errMsg='', @PocetVazeb=0
SELECT @IDPrikaz=MZ.IDPrikaz, @mnozstviPomer_A=(MZ.kusy_odv+MZ.kusy_zmet_opr+MZ.kusy_zmet_neopr), @mnozstviPomer_B=PrP.kusy_zad, @PrP_Doklad=PrP.Doklad,
@IDPrPostup=PrP.ID, @szDilec=k.SkupZbo
FROM dbo.TabPrikazMzdyAZmetky MZ
INNER JOIN dbo.TabPrPostup PrP ON (PrP.IDPrikaz=MZ.IDPrikaz AND PrP.Doklad=MZ.DokladPrPostup AND PrP.Alt=MZ.AltPrPostup AND PrP.IDOdchylkyDo IS NULL)
INNER JOIN dbo.TabPrikaz vp ON (vp.ID=MZ.IDPrikaz)
INNER JOIN dbo.TabKmenZbozi k ON (k.ID=vp.IDTabKmen)
WHERE MZ.ID=@IDMzdy
UPDATE dbo.TabPrikazMzdyAZmetky SET GenerovanaMatVydejka=1 WHERE ID=@IDMzdy
-- pokud uz byla generovana vydejka, skonci
IF (@@ROWCOUNT=0)
RETURN 0
SELECT @idZam=Zamestnanec FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy
SELECT @idDilec = IDTabKmen FROM dbo.TabPrikaz WHERE ID=@IDPrikaz
IF OBJECT_ID(N'tempdb..#HDCTabPrKVazbyGenPredna', N'U') IS NULL
BEGIN
IF (@mnozstviPomer_A<=0.0)
RETURN -1
IF (@vydejAll=1)
DECLARE crPom1334 CURSOR FAST_FORWARD LOCAL FOR
SELECT PrKV.ID, PrKV.Mnoz_zad, PrKV.Doklad
FROM dbo.TabPrKVazby PrKV
INNER JOIN dbo.TabPrikaz P ON (P.ID=PrKV.IDPrikaz)
INNER JOIN dbo.TabRadyPrikazu RP ON (RP.rada=P.rada)
INNER JOIN dbo.TabKmenZbozi KZ ON (KZ.ID=PrKV.nizsi AND KZ.sluzba=0)
WHERE P.StavPrikazu IN (30,50) AND (P.kusy_zive>0.0 OR RP.KontrolovatRozpracPriUzav=0) AND PrKV.predzpracovano=0 AND PrKV.uzavreno=0 AND PrKV.RezijniMat=0 AND
PrKV.IDPrikaz=@IDPrikaz AND PrKV.prednastaveno=1 AND PrKV.IDOdchylkyDo IS NULL
ELSE
DECLARE crPom1334 CURSOR FAST_FORWARD LOCAL FOR
SELECT PrKV.ID, PrKV.Mnoz_zad, PrKV.Doklad
FROM dbo.TabPrKVazby PrKV
INNER JOIN dbo.TabPrikaz P ON (P.ID=PrKV.IDPrikaz)
INNER JOIN dbo.TabRadyPrikazu RP ON (RP.rada=P.rada)
INNER JOIN dbo.TabKmenZbozi KZ ON (KZ.ID=PrKV.nizsi AND KZ.sluzba=0)
WHERE P.StavPrikazu IN (30,50) AND (P.kusy_zive>0.0 OR RP.KontrolovatRozpracPriUzav=0) AND PrKV.predzpracovano=0 AND PrKV.uzavreno=0 AND PrKV.RezijniMat=0 AND
PrKV.IDPrikaz=@IDPrikaz AND dbo.hf_GetPrPDokladForPrKV(PrKV.ID)=@PrP_Doklad AND PrKV.prednastaveno=1 AND PrKV.IDOdchylkyDo IS NULL
OPEN crPom1334
FETCH NEXT FROM crPom1334 INTO @IDPrKV, @Mnoz_zad, @PrKVDoklad
WHILE @@fetch_status=0
BEGIN
UPDATE #TabPrKVazbyGen SET MnozstviPoz=@mnoz_zad * (pom_pomer_A+@mnozstviPomer_A)/pom_pomer_B, pom_pomer_A=pom_pomer_A+@mnozstviPomer_A
WHERE IDPrKV=@IDPrKV
IF (@@ROWCOUNT=0)
BEGIN
IF @RespektovatExistEvid=1
SELECT @mnozstviPomer_A=SUM(MZ.kusy_odv+MZ.kusy_zmet_opr+MZ.kusy_zmet_neopr)
FROM dbo.TabPrikazMzdyAZmetky MZ WHERE MZ.IDPrikaz=@IDPrikaz AND MZ.DokladPrPostup=@PrP_Doklad AND MZ.GenerovanaMatVydejka=1
INSERT INTO #TabPrKVazbyGen (IDPrKV, MnozstviPoz, pom_pomer_A, pom_pomer_B, Doklad, IDPrikaz, Prednastaveno, Sklad, VyrStredisko, IDPracoviste, mnoz_zad,
Mnoz_nepotrebne, Mnoz_skut_realizovane, Cena_real, Mnoz_odv, Cena_odv, priorita, vyssi, nizsi, DavkaTPV, pozice, Operace, FixniMnozstvi,
mnozstvi, ProcZtrat, mnozstviSeZtratou, Prirez, Poznamka)
SELECT PrKV.ID,
PrKV.mnoz_zad * @mnozstviPomer_A/@mnozstviPomer_B,
@mnozstviPomer_A, @mnozstviPomer_B,
PrKV.Doklad, PrKV.IDPrikaz, PrKV.Prednastaveno, PrKV.Sklad, PrKV.VyrStredisko, PrKV.IDPracoviste, PrKV.mnoz_zad, PrKV.Mnoz_nepotrebne,
PrKV.Mnoz_skut_realizovane, PrKV.Cena_real, PrKV.Mnoz_odv, PrKV.Cena_odv, PrKV.priorita, PrKV.vyssi, PrKV.nizsi, PrKV.DavkaTPV, PrKV.pozice, PrKV.Operace, PrKV.FixniMnozstvi,
PrKV.mnozstvi, PrKV.ProcZtrat, PrKV.mnozstviSeZtratou, PrKV.Prirez, PrKV.Poznamka
FROM dbo.TabPrKVazby PrKV
WHERE PrKV.ID=@IDPrKV AND PrKV.uzavreno=0
END
INSERT INTO #TabPrKVazbyGen_IDMzdy (IDPrikaz, Doklad, IDMzdy) VALUES (@IDPrikaz, @PrKVDoklad, @IDMzdy)
SET @PocetVazeb=@PocetVazeb + 1
FETCH NEXT FROM crPom1334 INTO @IDPrKV, @Mnoz_zad, @PrKVDoklad
END
CLOSE crPom1334
DEALLOCATE crPom1334
IF (@PocetVazeb<=0)
RETURN -2
END
ELSE
BEGIN -- pokud mam seznam na co vygenerovat vydejku, jedu podle nej
DELETE FROM #TabPrKVazbyGen
INSERT INTO #TabPrKVazbyGen
SELECT Generuj, PoKorekciDat, IDPrKV, Doklad, IDPrikaz, Prednastaveno, Sklad, VyrStredisko, IDPracoviste, mnoz_zad, Mnoz_nepotrebne, Mnoz_skut_realizovane,
Cena_real, Mnoz_odv, Cena_odv, MnozstviMax, PuvodniMnozstviPoz, MnozstviPoz, PomMnozPoz, IDPohZbo, PoznamkaNaDoklad, priorita, vyssi, nizsi, DavkaTPV,
pozice, Operace, FixniMnozstvi, mnozstvi, ProcZtrat, mnozstviSeZtratou, Prirez, Poznamka, pom_pomer_A, pom_pomer_B, Dodavatel
FROM #HDCTabPrKVazbyGenPredna
DROP TABLE #HDCTabPrKVazbyGenPredna
END
-- preddefinovana mzda pro provazani
IF OBJECT_ID(N'tempdb..#HDCTabPrKVazbyGen_IDMzdyPredna', N'U') IS NOT NULL
BEGIN
DELETE FROM #TabPrKVazbyGen_IDMzdy
INSERT INTO #TabPrKVazbyGen_IDMzdy
SELECT IDPrikaz, Doklad, IDMzdy FROM #HDCTabPrKVazbyGen_IDMzdyPredna
DROP TABLE #HDCTabPrKVazbyGen_IDMzdyPredna
END
EXEC dbo.hp_AktualizaceTabPrKVazbyGenVC @Vratka=0
UPDATE #TabPrKVazbyGen SET Generuj=1, Sklad=@sklVydej
IF (@smazVydejTesto=1)
BEGIN
-- vazba je primo na kartu testa
IF (@szDilec<>N'701') AND EXISTS (SELECT 1 FROM #TabPrKVazbyGen WHERE IDPrikaz=@IDPrikaz AND nizsi IN (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=N'701'))
DELETE FROM #TabPrKVazbyGen WHERE IDPrikaz=@IDPrikaz AND nizsi IN (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=N'701')
-- vazba je pres montaz SK702
IF (@szDilec<>N'701') AND EXISTS (SELECT 1 FROM #TabPrKVazbyGen WHERE IDPrikaz=@IDPrikaz AND nizsi IN (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=N'702'))
DELETE FROM #TabPrKVazbyGen WHERE IDPrikaz=@IDPrikaz AND nizsi IN (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=N'701')
END
DROP TABLE IF EXISTS #TabGenRezVyd
CREATE TABLE #TabGenRezVyd (ID int NOT NULL, PRIMARY KEY (ID))
BEGIN TRY
EXEC @retVal=dbo.hp_generujRezVyd @RadaDokladu=@radaVydej, @DruhPohybuZbo=NULL, @IDObdobi=0, @DatPorizeni=NULL, @SekejZakazky=0, @SekejPrikazy=0,
@IDExistDoklad=@IDDoklad, @SekejOperace=0
END TRY
BEGIN CATCH
SET @errMsg = 'Chyba generovani vydeje: ' + ERROR_MESSAGE()
END CATCH
DECLARE
@idVyd INT,
@idKZ INT,
@idPZ INT,
@idSS INT,
@poslSarze NVARCHAR(100),
@errMsg702 NVARCHAR(500),
@idKZ702 INT,
@idPrikaz702 INT,
@doklKV702 INT,
@doklOp702 INT,
@alt702 NCHAR(1),
@mnoz702 NUMERIC(19,6),
@idMzda702 INT,
@aktDat DATETIME
SET @aktDat = GETDATE()
-- potrebuju si vyrobit tisicikus ? musim pred realizaci vydejky na vyssi prikaz, udelam odvedenim prikazu na vyssi
/*
IF (@spotreba702=1)
BEGIN
DECLARE t CURSOR LOCAL FOR
SELECT k.ID, p.Mnozstvi
FROM dbo.TabPohybyZbozi p
INNER JOIN dbo.TabStavSkladu s ON (s.ID=p.IDZboSklad)
INNER JOIN dbo.TabKmenZbozi k ON (k.ID=s.IDKmenZbozi)
WHERE k.SkupZbo=N'702' AND k.Blokovano=0
OPEN t
WHILE (1=1)
BEGIN
FETCH NEXT FROM t INTO @idKZ702, @mnoz702
IF (@@FETCH_STATUS<>0) BREAK
SET @idPrikaz702 = (SELECT ID FROM dbo.TabPrikaz WHERE IDPrikazVyssi=@IDPrikaz AND IDTabKmen=@idKZ702 AND StavPrikazu=30)
IF (@idPrikaz702 IS NOT NULL)
BEGIN
-- evidence operace peceni
SELECT TOP(1) @doklOp702=Doklad, @alt702=Alt FROM dbo.TabPrPostup WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@idPrikaz702
EXEC @idMzda702=dbo.hp_ZaevidujOperaci @IDPrikaz=@idPrikaz702, @Doklad=@doklOp702, @Alt=@alt702, @Datum=NULL, @Stav=1, @IDZam=@idZam, @Kusy_odv=@mnoz702
SET @idMzda702 = ISNULL(@idMzda702, 0)
IF (@idMzda702>0)
BEGIN
-- vydejku materialu nedelej, testo bylo uz odepsano svym prevedenim na vyssi
-- EXEC dbo.ep_Vyroba_GenVydejZeMzdy @IDMzdy=@idMzda702, @spotrebaTesto=1, @realizujVydej=1, @errMsg=@errMsg702 OUT
EXEC dbo.ep_Vyroba_GenOdvodZeMzdy @IDMzdy=@idMzda702, @realizujPrijem=1, @errMsg=@errMsg702 OUT
END
-- odvedeni na vyssi prikaz
SELECT TOP(1) @doklKV702=Doklad FROM dbo.TabPrKVazby WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@IDPrikaz AND nizsi=@idKZ702
EXEC dbo.hp_OdvedeniPrikazuPrevodem @DatPripadu=@aktDat, @KonecneOdvedeniNatvrdo=0, @IDPrikazZdroj=@idPrikaz702, @IDPrikazCil=@IDPrikaz,
@Doklad=@doklKV702, @IDDilec=@idKZ702, @mnozstvi=@mnoz702, @IDOdvedeniVC=0
END
END
CLOSE t
DEALLOCATE t
END
*/
DECLARE vyd CURSOR LOCAL FOR
SELECT ID FROM #TabGenRezVyd
OPEN vyd
WHILE (1=1)
BEGIN
FETCH NEXT FROM vyd INTO @idVyd
IF (@@FETCH_STATUS<>0) BREAK
IF (@denSmena<>N'')
BEGIN
IF NOT EXISTS(SELECT 1 FROM dbo.TabDokladyZbozi_EXT WHERE ID=@idVyd)
INSERT dbo.TabDokladyZbozi_EXT (ID) VALUES (@idVyd)
UPDATE dbo.TabDokladyZbozi_EXT SET _Vyroba_DenSmena=@denSmena WHERE ID=@idVyd
END
DECLARE pV CURSOR LOCAL FOR
SELECT p.ID, k.ID
FROM dbo.TabPohybyZbozi p
INNER JOIN dbo.TabStavSkladu s ON (s.ID=p.IDZboSklad)
INNER JOIN dbo.TabKmenZbozi k ON (k.ID=s.IDKmenZbozi)
WHERE p.IDDoklad=@idVyd AND k.Sluzba=0
OPEN pV
WHILE (1=1)
BEGIN
FETCH NEXT FROM pV INTO @idPZ, @idKZ
IF (@@FETCH_STATUS<>0) BREAK
SET @idSS = (SELECT ID FROM dbo.TabStavSkladu WHERE IDKmenZbozi=@idKZ AND IDSklad=@sklPekarna)
SET @poslSarze = ISNULL( (SELECT _Prevod_PosledniSarze FROM dbo.TabStavSkladu_EXT WHERE ID=@idSS), N'')
IF (@poslSarze<>N'')
BEGIN
IF NOT EXISTS(SELECT 1 FROM dbo.TabPohybyZbozi_EXT WHERE ID=@idPZ)
INSERT dbo.TabPohybyZbozi_EXT (ID) VALUES (@idPZ)
UPDATE dbo.TabPohybyZbozi_EXT SET _Vyroba_Sarze=@poslSarze WHERE ID=@idPZ
END
END
CLOSE pV
DEALLOCATE pV
-- begin: prijemka nedostatecneho materialu
SET @idDZPomocPrij=NULL
DECLARE pomPrij CURSOR LOCAL FOR
SELECT p.IDZboSklad, p.Mnozstvi
FROM dbo.TabPohybyZbozi p
INNER JOIN dbo.TabStavSkladu s ON (s.ID=p.IDZboSklad)
INNER JOIN dbo.TabKmenZbozi k ON (k.ID=s.IDKmenZbozi)
WHERE p.IDDoklad=@idVyd
AND k.Material=1 AND k.Sluzba=0
OPEN pomPrij
WHILE (1=1)
BEGIN
FETCH NEXT FROM pomPrij INTO @idSSPomocPrij, @mnozVydej
IF (@@FETCH_STATUS<>0) BREAK
SET @mnozSklad = ISNULL( (SELECT Mnozstvi+MnozstviKPrijmu-MnozstviKVydeji FROM dbo.TabStavSkladu WHERE ID=@idSSPomocPrij), 0)
IF (@mnozVydej>@mnozSklad)
BEGIN
SET @mnozPrij = @mnozVydej - @mnozSklad
IF (@idDZPomocPrij IS NULL)
BEGIN
EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZPomocPrij OUT, @Sklad=@sklTechnolog, @DruhPohybu=0, @RadaDokladu=@radaPrijem, @CisloOrg=0
SELECT @menaPrij=Mena, @kurzPrij=Kurz, @kurzPrijE=KurzEuro, @jednMPrij=JednotkaMeny, @vstCPrij=VstupniCena
FROM dbo.TabDokladyZbozi WHERE ID=@idDZPomocPrij
END
IF (@idDZPomocPrij IS NOT NULL)
BEGIN
EXEC dbo.hp_InsertPolozkyOZ @Ident=@idPZPomocPrij OUT, @IDDoklad=@idDZPomocPrij, @DruhPohybu=0, @CisloOrg=0, @IDZboSklad=@idSSPomocPrij,
@Mena=@menaPrij, @Kurz=@kurzPrij, @KurzEuro=@kurzPrijE, @JednotkaMeny=@jednMPrij, @SazbaSD=NULL, @SazbaDPH=NULL,
@ZakazanoDPH=NULL, @VstupniCena=@vstCPrij, @Mnozstvi=@mnozPrij, @PovolitDuplicitu=1
END
END
END
CLOSE pomPrij
DEALLOCATE pomPrij
IF (@idDZPomocPrij IS NOT NULL)
BEGIN
BEGIN TRY
EXEC dbo.hp_Realizuj_Prijem @ID=@idDZPomocPrij, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1
END TRY
BEGIN CATCH
SET @errMsg = ERROR_MESSAGE()
END CATCH
END
-- end: prijemka nedostatecneho materialu
-- realizace vydejky
IF (@realizujVydej=1)
BEGIN
BEGIN TRY
EXEC dbo.hp_Realizuj_Vydej @ID=@idVyd, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT
END TRY
BEGIN CATCH
SET @opakReal=0
SET @errMsg = ERROR_MESSAGE()
IF (CHARINDEX(N'71553', @errMsg)>0)
SET @opakReal=1
IF (@opakReal=0)
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba realizace v<>dejky p<><70>kazu: ' + @errMsg, @idVyd
END CATCH
IF (@opakReal=1)
BEGIN
BEGIN TRY
EXEC dbo.ep_Vyroba_DoplnSkladProVydejDleDokladu @IDDoklad=@idVyd, @errMsg=@errMsg OUT
IF (@errMsg=N'')
EXEC dbo.hp_Realizuj_Vydej @ID=@idVyd, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT
ELSE
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba korekce naskladneni pro vydejku: ' + @errMsg, @idVyd
END TRY
BEGIN CATCH
SET @errMsg = ERROR_MESSAGE()
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba opakovane realizace v<>dejky p<><70>kazu: ' + @errMsg, @idVyd
END CATCH
END
END
END
CLOSE vyd
DEALLOCATE vyd
IF (@extTab IS NOT NULL) AND EXISTS(SELECT 1 FROM #TabPrKVazbyGen WHERE IDPohZbo IS NOT NULL)
IF OBJECT_ID(@extTab, N'U') IS NOT NULL
BEGIN
SET @sql = N'DELETE FROM ' + @extTab
EXECUTE sp_executesql @sql
SET @sql = N'INSERT ' + @extTab + N' (ID, IDPohZbo) SELECT ID, IDPohZbo FROM #TabPrKVazbyGen WHERE IDPohZbo IS NOT NULL'
EXECUTE sp_executesql @sql
END
-- uklid
DROP TABLE IF EXISTS #TabPrKVazbyGen
DROP TABLE IF EXISTS #TabGenRezVyd
DROP TABLE IF EXISTS #TabPrKVazbyGen_IDMzdy
DROP TABLE IF EXISTS #TabPrKVazbyGenVC

View File

@ -0,0 +1,25 @@
-- dbo.ET__hdc_PZ_PuvodniVC_D
CREATE TRIGGER dbo.ET__hdc_PZ_PuvodniVC_D ON dbo._hdc_PZ_PuvodniVC
WITH EXECUTE AS CALLER
FOR DELETE
AS
BEGIN
SET NOCOUNT ON
DECLARE
@id INT
-- cisteni
IF EXISTS (SELECT 1 FROM dbo._hdc_PZ_PuvodniVC)
BEGIN
SELECT @id=MAX(ID) FROM dbo._hdc_PZ_PuvodniVC
DBCC CHECKIDENT (_hdc_PZ_PuvodniVC, RESEED, @id)
END
ELSE
TRUNCATE TABLE dbo._hdc_PZ_PuvodniVC
END

View File

@ -340,7 +340,7 @@ uses
{ TSDGPolozkaOZService } { TSDGPolozkaOZService }
function TSDGPolozkaOZService.GetByID(const AID: Integer): TPohybOZ; function TSDGPolozkaOZService.GetByID (const AID: Integer): TPohybOZ;
var lSQL: string; var lSQL: string;
p: TDictionary<string, string>; p: TDictionary<string, string>;
pds: TSDGSerioveCisloPohybOZService; pds: TSDGSerioveCisloPohybOZService;
@ -377,7 +377,7 @@ uses
function TSDGPolozkaOZService.GetByParams(params: TDictionary<string, string>): TObjectList<TPohybOZ>; function TSDGPolozkaOZService.GetByParams (params: TDictionary<string, string>): TObjectList<TPohybOZ>;
var lSQL, where, podmSDGPolozka: string; var lSQL, where, podmSDGPolozka: string;
id,idPZ, cnt, rNo: integer; id,idPZ, cnt, rNo: integer;
lQry: TFDQuery; lQry: TFDQuery;
@ -1056,6 +1056,8 @@ uses
// pro micharnu nejsou prikazy pozastavovany // pro micharnu nejsou prikazy pozastavovany
where:= where + IfThen(where<>'', ' AND ', '') + 'main.StavPrikazu IN (30' + IfThen(typPrikazu<>1, ',40', '') + ')'; where:= where + IfThen(where<>'', ' AND ', '') + 'main.StavPrikazu IN (30' + IfThen(typPrikazu<>1, ',40', '') + ')';
where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada<>N''009''';
where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada LIKE N''0%''';
if (where<>'') then if (where<>'') then

View File

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<config zapisObjMatExpPrIntMins="3"/>

View File

@ -0,0 +1,234 @@
constructor THeoRTNZapisObjMatThread.Create (AOnTerminate: TNotifyEvent; AService: TService);
begin
inherited Create (false); // Create thread in NOT suspended mode
FMainService:= AService;
FLock:= TCriticalSection.Create;
FRunning:= false;
FTermEvent:= TEvent.Create (nil, False, False, '');
// OnTerminate:= AOnTerminate;
// FreeOnTerminate:= true;
FreeOnTerminate:= false; // Ensure manual freeing of thread resources
end;
destructor THeoRTNZapisObjMatThread.Destroy;
begin
{$IFDEF DEBUG}
Write('Ukoncuji thread RTN Zapis objednavka materialu do ExpPr...');
{$ENDIF}
if (FTimer<>0) then
CloseHandle (FTimer);
FTermEvent.Free;
FRunning:= false;
FMainService:= nil;
Terminate;
FLock.Free;
inherited;
{$IFDEF DEBUG}
WriteLn('OK');
{$ENDIF}
end;
procedure THeoRTNZapisObjMatThread.TerminatedSet;
begin
FTermEvent.SetEvent;
end;
procedure THeoRTNZapisObjMatThread.ThreadTerminate;
begin
Terminate;
WaitFor;
end;
procedure THeoRTNZapisObjMatThread.Execute;
const _Second = 10_000_000;
var lSQL, errMsg, url, outData, fName, loopCasTyp: string;
lLoop, idDigiFile, cnt, idx: Integer;
lLoopMax, koefProCas: integer;
logRunCnt: integer;
Msg: TMsg;
firstRun, inProg, inDL: boolean;
lQry: TFDQuery;
sqlConnX: TFDConnection;
lBusy: LongInt;
liDueTime: LARGE_INTEGER;
cfgFile: string;
specCfgXML: XML.XmlIntf.IXMLDocument;
n1: XML.XmlIntf.IXMLNode;
attribs: IXMLNodeList;
attrIdx: integer;
begin
lLoop:= 0;
idDigiFile:= 0;
logRunCnt:= 1;
lLoopMax:= 3; // v minutach !!!!
try
try
CoInitialize(nil);
cfgFile:= ExtractFilePath(ParamStr(0)) + 'hdcDZApiCfg.xml';
if (FileExists(cfgFile)) then
begin
specCfgXML:= Xml.XMLDoc.TXMLDocument.Create(nil);
specCfgXML.LoadFromFile (cfgFile);
specCfgXML.Active:= true;
if not(specCfgXML.IsEmptyDoc) then
begin
if (specCfgXML.DocumentElement<>nil) then
begin
n1:= specCfgXML.DocumentElement;
if (n1.NodeName='config') then
begin
attribs:= n1.AttributeNodes;
attrIdx:= attribs.IndexOf('zapisObjMatExpPrIntMins');
if (attrIdx>-1) then
if (attribs.Get(attrIdx).NodeValue<>null) then
lLoopMax:= attribs.Get(attrIdx).NodeValue;
end; // n1 = config
end; // specCfgXML.DocumentElement<>nil
end; // not specCfgXML.IsEmptyDoc
end; // FileExists(cfgFile)
except
end;
finally
begin
if (specCfgXML<>nil) then
specCfgXML:= nil;
CoUninitialize;
end;
end;
datMod.LogInfo (Quick.Logger.etInfo, 'Zapis Objednavek materialu do ExpPr - interval: ' + lLoopMax.ToString + ' min.');
lLoopMax:= lLoopMax * 60; // minuty na vteriny
firstRun:= true;
inProg:= false;
FRunning:= true;
if (1=1) then // pro rychle vypnuti
begin
FTimer:= CreateWaitableTimer (nil, true, 'RTNZapisObjMatExpPrWaitableTimer');
liDueTime.QuadPart:= -1*_Second;
sqlConnX:= TFDConnection.Create (nil);
sqlConnX.Params.SetStrings (datMod.sqlConnParams);
lSQL:= 'DECLARE @errMsg NVARCHAR(500)=N''''' + CRLF +'IF OBJECT_ID(N''dbo.ep_Vyroba_GenObjednavkuMatDoVyrobyNew'', N''P'') IS NOT NULL' + CRLF
+ ' EXEC dbo.ep_Vyroba_GenObjednavkuMatDoVyrobyNew @errMsg OUT' + CRLF + 'SELECT @errMsg AS ErrMsg';
lQry:= TFDQuery.Create(nil);
try
lQry.Connection:= sqlConnX;
while not(Terminated) or not(FRunning) do
begin
if (HDCDZApiService<>nil) then
if (HDCDZApiService.Terminated) then
begin
Terminate;
FRunning:= false;
end;
PeekMessage (&Msg, 0, 0, 0, PM_NOREMOVE); { Create message queue }
if (lLoop=lLoopMax) or (firstRun) then // pri startu a pak kazdou minutu
begin
idDigiFile:= 0;
firstRun:= false;
if (logRunCnt<4) then
datMod.LogInfo (Quick.Logger.etInfo, 'Spoustim zapis Objednavky materialu do ExpPr c.' + logRunCnt.toString + '...');
if (logRunCnt=4) then
datMod.LogInfo (Quick.Logger.etInfo, 'Spoustim zapis Objednavky - bezi, ale dal neloguju');
try
if not(inProg) then // nebezi uz ?
begin
if (1=1) then // pro rychle vypnuti
begin
sqlConnX.Open;
if (sqlConnX.Connected) then
begin
inProg:= true;
lQry.Open(lSQL);
if (lQry.RecordCount>0) then
begin
lQry.First;
errMsg:= lQry.FieldByName('ErrMsg').AsString;
if (errMsg<>'') then
begin
datMod.LogInfo (Quick.Logger.etInfo, 'Zapis Objednavky materialu do ExpPr - chyba: ' + errMsg);
{$IFDEF DEBUG}
WriteLn('Zapis Objednavky materialu do ExpPr - chyba: ' + errMsg);
{$ENDIF}
end;
end;
lQry.Close;
inProg:= false;
end; // sql Connected
end;
end;
except on E:Exception do
begin
inProg:= false;
errMsg:= E.Message; // datMod.sqlQry11.FieldByName('ErrMsg').AsString;
if (mamTabPrijataData) then
begin
datMod.LogInfo (Quick.Logger.etError, 'Zapis Objednavky materialu do ExpPr - chyba: ' + errMsg);
{$IFDEF DEBUG}
WriteLn('Zapis Objednavky materialu do ExpPr - chyba: ' + errMsg);
{$ENDIF}
end;
end;
end;
lLoop:= 0;
if (logRunCnt<5) then
Inc (logRunCnt);
end;
Inc (lLoop);
if (FTimer<>0) then
SetWaitableTimer (FTimer, TLargeInteger(liDueTime), 0, nil, nil, false);
repeat
lBusy:= MsgWaitForMultipleObjects (1, FTimer, false, INFINITE, QS_ALLINPUT);
until lBusy = WAIT_OBJECT_0;
// Sleep (998);
end;
finally
end;
if (lQry<>nil) then
begin
lQry.Close;
FreeAndNil (lQry);
end;
if (sqlConnX<>nil) then
begin
sqlConnX.Close;
FreeAndNil (sqlConnX);
end;
end; // 1=1
end;

View File

@ -0,0 +1 @@
rtnZapisObjMatThr: THeoRTNZapisObjMatThread;

View File

@ -0,0 +1,3 @@
if (rtnZapisObjMatThr<>nil) then
if (rtnZapisObjMatThr.Suspended) then
rtnZapisObjMatThr.Resume;

View File

@ -0,0 +1,6 @@
if (rtnZapisObjMatThr<>nil) then
if not(rtnZapisObjMatThr.Started) then
begin
rtnZapisObjMatThr.Start;
datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby RTN Zapis objednavky materialu do ExpPr');
end;

View File

@ -0,0 +1,3 @@
if (rtnZapisObjMatThr<>nil) then
if not(rtnZapisObjMatThr.Suspended) then
rtnZapisObjMatThr.Suspend;

View File

@ -0,0 +1,12 @@
datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby Zapis objednavek materialu do ExpPr...');
{$IFDEF DEBUG}
WriteLn ('Start sluzby Zapis objednavek materialu do ExpPr - inverval 10 minut...');
{$ENDIF}
rtnZapisObjMatThr:= THeoRTNZapisObjMatThread.Create (ThreadTerminated, self);
if (rtnZapisObjMatThr.Started) then
begin
datMod.LogInfo (Quick.Logger.etInfo, ' OK');
{$IFDEF DEBUG}
WriteLn (' OK');
{$ENDIF}
end;

View File

@ -0,0 +1,18 @@
if Assigned(rtnZapisObjMatThr) then
begin
{$IFDEF DEBUG}
WriteLn ('Ukoncuji sluzbu RTN Zapis objednavky materialu do ExpPr...');
{$ENDIF}
datMod.LogInfo (Quick.Logger.etInfo, 'Ukoncuji sluzbu RTN Zapis objednavky materialu do ExpPr...');
try
rtnZapisObjMatThr.ThreadTerminate;
FreeAndNil(rtnZapisObjMatThr);
except on E:Exception do
// add event in eventlog with reason why the service couldn't stop
LogMessage('Cannot stop service: ' + E.Message, EVENTLOG_ERROR_TYPE, 0, 1);
end;
datMod.LogInfo (Quick.Logger.etInfo, ' OK');
{$IFDEF DEBUG}
WriteLn (' OK');
{$ENDIF}
end;

View File

@ -0,0 +1,3 @@
intervalRTNZapisObjMat

View File

@ -0,0 +1,15 @@
THeoRTNZapisObjMatThread = class(TThread)
private
FMainService: TService;
FLock: TCriticalSection;
FTermEvent: TEvent;
FRunning: boolean;
FTimer: THandle;
protected
procedure Execute; override;
procedure TerminatedSet; override; // XE2+ only *
public
constructor Create (AOnTerminate: TNotifyEvent; AService: TService);
destructor Destroy; override;
procedure ThreadTerminate;
end;

View File

View File

@ -0,0 +1 @@
System.Threading,

View File

@ -0,0 +1 @@
intervalRTNZapisObjMat: integer;

View File

@ -0,0 +1,62 @@
// arrDefs.Add('tbl_hdc_ph_Log');
arrDefs.Add('ep_hdcdzapi_GetKusovnik');
arrDefs.Add('col_TabDokladyZbozi_EXT');
arrDefs.Add('col_TabStavSkladu_EXT');
arrDefs.Add('col_TabVazbyPrikazu_EXT');
arrDefs.Add('col_TabPostup_EXT');
arrDefs.Add('col_TabPrPostup_EXT');
arrDefs.Add('col_TabPohybyZbozi_EXT');
arrDefs.Add('col_TabEvidRozpracOperR_EXT');
arrDefs.Add('col_TabKmenZbozi_EXT');
arrDefs.Add('ef_GetDatumASmenu');
arrDefs.Add('tbl_hdc_PZ_PuvodniVC');
arrDefs.Add('tbl_TabVyrobaTestoVyroba');
// tabulka objednavek je Uzivatelska tabulka v Heliosu
// arrDefs.Add('tbl_TabVyrobaObjednavky');
arrDefs.Add('tbl_TabVyrobaOperaceStartStop');
arrDefs.Add('tbl_TabVyrobaOperaceStartStopVydej');
arrDefs.Add('ep_Vyroba_InsertEvidRozpracOper');
arrDefs.Add('ep_Vyroba_InsertEvidRozpracOperPol');
arrDefs.Add('ep_Vyroba_DoplnSkladProVydejDleDokladu');
arrDefs.Add('ep_Vyroba_GenOdvodZeMzdy');
arrDefs.Add('ep_Vyroba_GenVydejZeMzdy');
arrDefs.Add('ep_Vyroba_Doklady_Micharna');
arrDefs.Add('ep_Vyroba_Doklady_PomocPrijemka');
arrDefs.Add('ep_Vyroba_GenDenniVydejka');
// arrDefs.Add('ep_Vyroba_GenObjednavkuMatDoVyroby');
arrDefs.Add('ep_Vyroba_GenObjednavkuMatDoVyrobyNew');
arrDefs.Add('ep_GenerovaniDokladuOZ_HDC');
arrDefs.Add('ef_Kmen_VratPocetKsVKartonu');
arrDefs.Add('ef_Kmen_VratPocetKANaPalete');
arrDefs.Add('ep_P03_HDC1');
arrDefs.Add('ep_P03');
arrDefs.Add('ep_P01_HDC1');
// arrDefs.Add('ep_P01_HDCDZApi1');
arrDefs.Add('ep_P01');
arrDefs.Add('ep_V03_HDC1');
arrDefs.Add('ep_V03');
// arrDefs.Add('');
// objednavky pres Gatema SDServer
// arrDefs.Add('bp_Gatema_SDGenDokZbo1');
arrDefs.Add('bp_Gatema_SDGenDokZbo1_HDC');
// arrDefs.Add('bp_Gatema_SDDecodeBarCode');
arrDefs.Add('bp_Gatema_SDDecodeBarCode_HDC');
arrDefs.Add('trg__TabPohybyZbozi_HDC_D');
arrDefs.Add('trg__TabPohybyZbozi_HDC_IU');
arrDefs.Add('trg__hdc_PZ_PuvodniVC_D');
arrDefs.Add('trg__TabVyrCisPrikaz_HDC_D');
arrDefs.Add('trg__TabVyrobaOperaceStartStop_D');
arrDefs.Add('trg__TabPrikazMzdyAZmetky_HDC_D');
arrDefs.Add('trg__TabPrikaz_HDC_D');

Binary file not shown.

View File

@ -1,5 +1,6 @@
col_TabDokumenty_DokladProAPI RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\col_TabDokumenty_DokladProAPI.sql col_TabDokumenty_DokladProAPI RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\col_TabDokumenty_DokladProAPI.sql
col_TabCisZam_EXT RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\col_CisZam_EXT.sql col_TabCisZam_EXT RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\col_CisZam_EXT.sql
col_TabPostup_EXT RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\col_TabPostup_EXT.sql
col_TabPrPostup_EXT RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\col_TabPrPostup_EXT.sql col_TabPrPostup_EXT RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\col_TabPrPostup_EXT.sql
col_TabStavSkladu_EXT RCDATA C:\_zakaznici\Rootvin\_sql\col_TabStavSkladu_EXT.sql col_TabStavSkladu_EXT RCDATA C:\_zakaznici\Rootvin\_sql\col_TabStavSkladu_EXT.sql
col_TabDokladyZbozi_EXT RCDATA C:\_zakaznici\Rootvin\_sql\col_DokladyZbozi_EXT.sql col_TabDokladyZbozi_EXT RCDATA C:\_zakaznici\Rootvin\_sql\col_DokladyZbozi_EXT.sql
@ -16,6 +17,14 @@ ep_Vyroba_DoplnSkladProVydejDleDokladu RCDATA C:\_zakaznici\pluginy_obecne\HDCAp
ep_Vyroba_InsertEvidRozpracOper RCDATA .\sql\ep_Vyroba_InsertEvidRozpracOper.sql ep_Vyroba_InsertEvidRozpracOper RCDATA .\sql\ep_Vyroba_InsertEvidRozpracOper.sql
ep_Vyroba_InsertEvidRozpracOperPol RCDATA .\sql\ep_Vyroba_InsertEvidRozpracOperPol.sql ep_Vyroba_InsertEvidRozpracOperPol RCDATA .\sql\ep_Vyroba_InsertEvidRozpracOperPol.sql
ep_Vyroba_GenDenniVydejka RCDATA .\sql\ep_Vyroba_GenDenniVydejka.sql
ep_Vyroba_GenObjednavkuMatDoVyroby RCDATA .\sql\ep_Vyroba_GenObjednavkuMatDoVyroby.sql
ep_Vyroba_GenObjednavkuMatDoVyrobyNew RCDATA .\sql\ep_Vyroba_GenObjednavkuMatDoVyrobyNew.sql
ep_GenerovaniDokladuOZ_HDC RCDATA .\sql\ep_GenerovaniDokladuOZ_HDC.sql
ep_P01_HDC1 RCDATA C:\_zakaznici\Rootvin\_sql\ep_P01_HDC1.sql ep_P01_HDC1 RCDATA C:\_zakaznici\Rootvin\_sql\ep_P01_HDC1.sql
ep_P01 RCDATA C:\_zakaznici\Rootvin\_sql\ep_P01.sql ep_P01 RCDATA C:\_zakaznici\Rootvin\_sql\ep_P01.sql
ep_P03_HDC1 RCDATA C:\_zakaznici\Rootvin\_sql\ep_P03_HDC1.sql ep_P03_HDC1 RCDATA C:\_zakaznici\Rootvin\_sql\ep_P03_HDC1.sql
@ -29,12 +38,19 @@ trg__TabPohybyZbozi_HDC_IU RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabPo
trg__TabPohybyZbozi_HDC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabPohybyZbozi_HDC_D.sql trg__TabPohybyZbozi_HDC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabPohybyZbozi_HDC_D.sql
tbl_hdc_PZ_PuvodniVC RCDATA C:\_zakaznici\Rootvin\_sql\tbl__hdc_PZ_PuvodniVC.sql tbl_hdc_PZ_PuvodniVC RCDATA C:\_zakaznici\Rootvin\_sql\tbl__hdc_PZ_PuvodniVC.sql
ep_Vyroba_Doklady_Micharna RCDATA C:\_zakaznici\Rootvin\_sql\ep_Vyroba_Doklady_Micharna.sql ep_Vyroba_Doklady_Micharna RCDATA C:\_zakaznici\Rootvin\_sql\ep_Vyroba_Doklady_Micharna.sql
ep_Vyroba_Doklady_PomocPrijemka RCDATA C:\_zakaznici\Rootvin\_sql\ep_Vyroba_Doklady_PomocPrijemka.sql
bp_Gatema_SDGenDokZbo1 RCDATA C:\_zakaznici\Rootvin\_sql\BP_Gatema_SDGenDokZbo1.sql
bp_Gatema_SDGenDokZbo1_HDC RCDATA C:\_zakaznici\Rootvin\_sql\BP_Gatema_SDGenDokZbo1_HDC.sql
bp_Gatema_SDDecodeBarCode RCDATA C:\_zakaznici\Rootvin\_sql\BP_Gatema_SDDecodeBarCode.sql
bp_Gatema_SDDecodeBarCode_HDC RCDATA C:\_zakaznici\Rootvin\_sql\BP_Gatema_SDDecodeBarCode_HDC.sql
ef_GetDatumASmenu RCDATA C:\_zakaznici\Rootvin\_sql\ef_GetDatumASmenu.sql ef_GetDatumASmenu RCDATA C:\_zakaznici\Rootvin\_sql\ef_GetDatumASmenu.sql
ef_DilecGetStroj RCDATA C:\_zakaznici\Rootvin\_sql\ef_DilecGetStroj.sql ef_DilecGetStroj RCDATA C:\_zakaznici\Rootvin\_sql\ef_DilecGetStroj.sql
ef_Kmen_VratPocetKsVKartonu RCDATA C:\_zakaznici\Rootvin\_sql\ef_Kmen_VratPocetKsVKartonu.sql ef_Kmen_VratPocetKsVKartonu RCDATA C:\_zakaznici\Rootvin\_sql\ef_Kmen_VratPocetKsVKartonu.sql
tbl_TabVyrobaObjednavky RCDATA C:\_zakaznici\Rootvin\_sql\tbl__TabVyrobaObjednavky.sql ef_Kmen_VratPocetKANaPalete RCDATA C:\_zakaznici\Rootvin\_sql\ef_Kmen_VratPocetKANaPalete.sql
trg__TabVyrobaObjednavky_IU RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabVyrobaObjednavky_IU.sql
trg__TabVyrobaObjednavky_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabVyrobaObjednavky_D.sql
tbl_TabVyrobaOperaceStartStop RCDATA C:\_zakaznici\Rootvin\_sql\tbl__TabVyrobaOperaceStartStop.sql tbl_TabVyrobaOperaceStartStop RCDATA C:\_zakaznici\Rootvin\_sql\tbl__TabVyrobaOperaceStartStop.sql
tbl_TabVyrobaOperaceStartStopVydej RCDATA C:\_zakaznici\Rootvin\_sql\tbl__TabVyrobaOperaceStartStopVydej.sql tbl_TabVyrobaOperaceStartStopVydej RCDATA C:\_zakaznici\Rootvin\_sql\tbl__TabVyrobaOperaceStartStopVydej.sql
tbl_TabVyrobaTestoVyroba RCDATA C:\_zakaznici\Rootvin\_sql\tbl__TabVyroba_TestoVyroba.sql tbl_TabVyrobaTestoVyroba RCDATA C:\_zakaznici\Rootvin\_sql\tbl__TabVyroba_TestoVyroba.sql
@ -42,3 +58,6 @@ trg__TabDokladyZbozi_HDC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabDo
trg__hdc_PZ_PuvodniVC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__hdc_PZ_PuvodniVC_D.sql trg__hdc_PZ_PuvodniVC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__hdc_PZ_PuvodniVC_D.sql
trg__TabVyrCisPrikaz_HDC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabVyrCisPrikaz_HDC_D.sql trg__TabVyrCisPrikaz_HDC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabVyrCisPrikaz_HDC_D.sql
trg__TabVyrobaOperaceStartStop_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabVyrobaOperaceStartStop_D.sql trg__TabVyrobaOperaceStartStop_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabVyrobaOperaceStartStop_D.sql
trg__TabPrikazMzdyAZmetky_HDC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabPrikazMzdyAZmetky_HDC_D.sql
trg__TabPrikaz_HDC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabPrikaz_HDC_D.sql

View File

@ -0,0 +1,46 @@
col_TabDokumenty_DokladProAPI RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\col_TabDokumenty_DokladProAPI.sql
col_TabCisZam_EXT RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\col_CisZam_EXT.sql
col_TabPrPostup_EXT RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\col_TabPrPostup_EXT.sql
col_TabStavSkladu_EXT RCDATA C:\_zakaznici\Rootvin\_sql\col_TabStavSkladu_EXT.sql
col_TabDokladyZbozi_EXT RCDATA C:\_zakaznici\Rootvin\_sql\col_DokladyZbozi_EXT.sql
col_TabPohybyZbozi_EXT RCDATA C:\_zakaznici\Rootvin\_sql\col_PohybyZbozi_EXT.sql
col_TabEvidRozpracOperR_EXT RCDATA C:\_zakaznici\Rootvin\_sql\col_EvidRozpracOperR_EXT.sql
col_TabKmenZbozi_EXT RCDATA C:\_zakaznici\Rootvin\_sql\col_KmenZbozi_EXT.sql
col_TabVazbyPrikazu_EXT RCDATA C:\_zakaznici\Rootvin\_sql\col_VazbyPrikazu_EXT.sql
ep_hdcdzapi_ZpracujPrijataData RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\ep_HDCDZApi_ZpracujPrijataData.sql
ep_hdcdzapi_GetKusovnik RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\ep_HDCDZApi_GetKusovnik.sql
ep_Vyroba_GenVydejZeMzdy RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\ep_Vyroba_GenVydejZeMzdy.sql
ep_Vyroba_GenOdvodZeMzdy RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\ep_Vyroba_GenOdvodZeMzdy.sql
ep_Vyroba_DoplnSkladProVydejDleDokladu RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\ep_Vyroba_DoplnSkladProVydejDleDokladu.sql
ep_Vyroba_InsertEvidRozpracOper RCDATA .\sql\ep_Vyroba_InsertEvidRozpracOper.sql
ep_Vyroba_InsertEvidRozpracOperPol RCDATA .\sql\ep_Vyroba_InsertEvidRozpracOperPol.sql
ep_P01_HDC1 RCDATA C:\_zakaznici\Rootvin\_sql\ep_P01_HDC1.sql
ep_P01 RCDATA C:\_zakaznici\Rootvin\_sql\ep_P01.sql
ep_P03_HDC1 RCDATA C:\_zakaznici\Rootvin\_sql\ep_P03_HDC1.sql
ep_P03 RCDATA C:\_zakaznici\Rootvin\_sql\ep_P03.sql
ep_V03_HDC1 RCDATA C:\_zakaznici\Rootvin\_sql\ep_V03_HDC1.sql
ep_V03 RCDATA C:\_zakaznici\Rootvin\_sql\ep_V03.sql
ep_V01_HDC1 RCDATA C:\_zakaznici\Rootvin\_sql\ep_V01_HDC1.sql
ep_V01 RCDATA C:\_zakaznici\Rootvin\_sql\ep_V01.sql
trg__TabPohybyZbozi_HDC_IU RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabPohybyZbozi_HDC_IU.sql
trg__TabPohybyZbozi_HDC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabPohybyZbozi_HDC_D.sql
tbl_hdc_PZ_PuvodniVC RCDATA C:\_zakaznici\Rootvin\_sql\tbl__hdc_PZ_PuvodniVC.sql
ep_Vyroba_Doklady_Micharna RCDATA C:\_zakaznici\Rootvin\_sql\ep_Vyroba_Doklady_Micharna.sql
ep_Vyroba_Doklady_PomocPrijemka RCDATA C:\_zakaznici\Rootvin\_sql\ep_Vyroba_Doklady_PomocPrijemka.sql
ef_GetDatumASmenu RCDATA C:\_zakaznici\Rootvin\_sql\ef_GetDatumASmenu.sql
ef_DilecGetStroj RCDATA C:\_zakaznici\Rootvin\_sql\ef_DilecGetStroj.sql
ef_Kmen_VratPocetKsVKartonu RCDATA C:\_zakaznici\Rootvin\_sql\ef_Kmen_VratPocetKsVKartonu.sql
tbl_TabVyrobaObjednavky RCDATA C:\_zakaznici\Rootvin\_sql\tbl__TabVyrobaObjednavky.sql
trg__TabVyrobaObjednavky_IU RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabVyrobaObjednavky_IU.sql
trg__TabVyrobaObjednavky_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabVyrobaObjednavky_D.sql
tbl_TabVyrobaOperaceStartStop RCDATA C:\_zakaznici\Rootvin\_sql\tbl__TabVyrobaOperaceStartStop.sql
tbl_TabVyrobaOperaceStartStopVydej RCDATA C:\_zakaznici\Rootvin\_sql\tbl__TabVyrobaOperaceStartStopVydej.sql
tbl_TabVyrobaTestoVyroba RCDATA C:\_zakaznici\Rootvin\_sql\tbl__TabVyroba_TestoVyroba.sql
trg__TabDokladyZbozi_HDC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabDokladyZbozi_HDC_D.sql
trg__hdc_PZ_PuvodniVC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__hdc_PZ_PuvodniVC_D.sql
trg__TabVyrCisPrikaz_HDC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabVyrCisPrikaz_HDC_D.sql
trg__TabVyrobaOperaceStartStop_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabVyrobaOperaceStartStop_D.sql
trg__TabPrikazMzdyAZmetky_HDC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabPrikazMzdyAZmetky_HDC_D.sql

View File

@ -0,0 +1,3 @@
,uHeOObj_Custom in '_custom\Westra\uHeOObj_Custom.pas'
,uCtrlCustom in '_custom\Westra\uCtrlCustom.pas'
,uSvcCustom in '_custom\Westra\uSvcCustom.pas'

View File

@ -0,0 +1 @@
// arrDefs.Add('ep_HDCDZApi_ZpracujPrijataData');

View File

@ -0,0 +1,106 @@
unit uCtrlCustom;
interface
uses
MVCframework,
MVCframework.Commons,
MVCframework.Serializer.Commons,
// MVCframework.Serializer.Intf,
System.Generics.Collections, // kvuli TDictionary
System.RegularExpressions,
// JsonDataObjects,
uCommons, // kvuli EServiceException
uCtrlBase,
// uSvc_Base,
helTabsBIDs,
uHeOObj_Base,
uHeOObj_Custom,
uSvcCustom,
MVCFramework.Swagger.Commons; // kvuli dokumentaci
type
[MVCPath('/westra')]
TWestraController = class(TBaseController)
{
strict private
FSelfSvc: TWestraService;
strict protected
function GetWestraService: TWestraService;
}
public
destructor Destroy; override;
// [MVCDoc('Pomoc<6F> POST zap<61><70>e obecn<63> json data do Heliosu')]
[MVCPath('/zapisjson')] // zapis obecnych json data do Heliosu
[MVCHTTPMethod([httpPOST])]
[MVCSwagSummary('MBM Westra', 'Z<>pis JSON dat do db Heliosu', 'GORZapisJSONDoHeliosu')]
[MVCConsumes(TMVCMediaType.APPLICATION_JSON)]
procedure ZapisJSONDoHeliosu (CTX: TWebContext);
[MVCPath('/nactiurl')] // zapis obecnych json data do Heliosu
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('MBM Westra', 'Na<4E>te data ze zadan<61> URL adresy', 'GORNacteniDatURL')]
[MVCSwagParam(plQuery, 'url', 'URL adresa', ptString, true)]
procedure NactiDataZURL ([MVCFromQueryString('url', '')] sURL: string=''
);
end;
implementation
uses
FireDAC.Stan.Option,
FireDAC.Comp.Client,
FireDAC.Stan.Param,
MVCFramework.FireDAC.Utils,
MVCFramework.DataSet.Utils,
System.StrUtils,
System.SysUtils,
System.JSON,
JsonDataObjects,
Winapi.ActiveX,
uDataMod,
Quick.Logger;
const
selSloupce = '';
{ TWestraController }
destructor TWestraController.Destroy;
begin
// FSelfSvc.Free;
inherited;
end;
procedure TWestraController.ZapisJSONDoHeliosu (CTX: TWebContext);
var respData, jsonData: string;
// o: System.JSON.TJSONObject;
begin
respData:= '';
try
jsonData:= CTX.Request.Body.Trim;
if (jsonData<>'') then
GetWestraService.ZapisJsonDoHeliosu (jsonData, respData);
ResponseStatus(HTTP_STATUS.OK, 'OK');
Render(respData);
except
RenderStatusMessage (200);
end;
end;
procedure TWestraController.NactiDataZURL (sURL: string = '');
begin
end;
end.

View File

@ -0,0 +1,7 @@
unit uHeOObj_Custom;
{$RTTI EXPLICIT METHODS([vcPublic, vcPublished]) FIELDS([vcPrivate, vcProtected, vcPublic, vcPublished]) PROPERTIES([vcPublic, vcPublished])}
interface
implementation
end.

View File

@ -0,0 +1,140 @@
unit uSvcCustom;
interface
uses
System.Classes,
System.JSON,
System.Generics.Collections,
Winapi.ActiveX,
System.DateUtils,
System.SysUtils,
JsonDataObjects,
uSvc_Base,
uCommons, // kvuli EServiceException
helTabsBIDs,
uHeoObj_Base,
uHeOObj_Custom,
uHeoObj_Vyroba,
uSvc_ObehZbozi,
uSvc_Vyroba;
const
CRLF = #13#10;
type
TWestraService = class(TServiceBase)
public
procedure ZapisJsonDoHeliosu (jsonData: string; var respString: string);
end;
implementation
uses
System.StrUtils,
FireDAC.Stan.Option,
FireDAC.Comp.Client,
FireDAC.Stan.Param,
MVCFramework.FireDAC.Utils,
MVCFramework.DataSet.Utils,
MVCFramework.Serializer.Commons;
{ TWestraService }
procedure TWestraService.ZapisJsonDoHeliosu (jsonData: string; var respString: string);
var lSQL, taskStr, strTmp, strTmp2, code, rs, guidIdent: string;
guid: TGuid;
akce: string;
j, t, a, v: JsonDataObjects.TJSONObject;
i, ii, taskDZId, taskId, intTemp, idJSON: integer;
jeOld: boolean;
lQry: TFDQuery;
w: TStreamWriter;
jo: System.JSON.TJsonObject;
begin
idJSON:= 0;
respString:= '[';
jo:= System.JSON.TJsonObject.Create;
jsonData:= jsonData.Trim;
if (jsonData<>'') then
begin
lQry:= TFDQuery.Create(nil);
try
lQry.Connection:= FDM.sqlConn;
try
CoCreateGuid(guid);
if (System.SysUtils.CreateGUID(guid)=S_OK) then
guidIdent:= System.SysUtils.GUIDToString(guid)
else
guidIdent:= self.NewUUID32;
lSQL:= 'INSERT ' + tblPrijataJsonData + ' (IdPHIdent, GUIDIdent, JSONData) SELECT 0, CONVERT(uniqueidentifier, N' + guidIdent.QuotedString + '), N' + jsonData.QuotedString;
FDM.sqlConn.ExecSQL(lSQL);
lSQL:= 'SELECT ID FROM ' + tblPrijataJsonData + ' WHERE GUIDIdent=CONVERT(uniqueidentifier, N' + guidIdent.QuotedString + ')';
lQry.Open(lSQL);
if (lQry.RecordCount=1) then
begin
idJSON:= lQry.FieldByName('ID').AsInteger;
respString:= 'OK';
jo.AddPair('heliosid', idJSON.ToString);
end;
except on E:Exception do
begin
respString:= 'NOT OK';
raise EServiceException.Create('Chyba zápisu JSON dat: ' + E.Message);
end;
end;
finally
FreeAndNil(lQry);
end;
CoInitialize(nil);
j:= TJsonObject.Parse(jsonData) as JsonDataObjects.TJsonObject;
try
if (j<>nil) then
if (j.Contains('akce')) then
begin
akce:= j.S['akce'].Trim;
if (idJSON>0) and (akce<>'') then
FDM.sqlConn.ExecSQL('UPDATE ' + tblPrijataJsonData + ' SET Akce=N' + akce.QuotedString + ' WHERE ID=' + idJSON.ToString);
{
for i:=0 to j['tasks'].Count-1 do
begin
try
t:= j['tasks'].Items[i];
taskDZId:= t.I['id']; // j['tasks'].Items[i].I['id'];
taskStr:= j['tasks'].Items[i].ObjectValue.ToString;
except on E:Exception do
end;
end;
}
end;
finally
j.Free;
end;
CoUninitialize;
end
else
respString:= 'NO input data';
jo.AddPair('status', respString);
respString:= '[' +respString + ']';
respString:= jo.ToString;
end;
end.

View File

@ -0,0 +1,2 @@
FEngine.AddController (TWestraController);

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<config fileScanIntervalMin="10" pathToScan="C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Westra\test"/>

View File

View File

@ -0,0 +1,499 @@
// ###########################################################
// TQTXNetworkPath
// ###########################################################
procedure TQTXNetworkPath.Disconnect (const aForce: Boolean);
var mRes: Integer;
mCount: Integer;
begin
// Close network connection if connected
if (FConnected=True) and (FOwned=True) then
begin
// Attempt to close the connection
mRes:= WNetCancelConnection (@FUNCData,aForce);
/*
Since files can be open temporarily, we try to
wait a little before we re-try to close again.
A maximum of 100 attempts is set
*/
if (mRes=ERROR_OPEN_FILES) then
begin
mCount:=0;
while (mRes=ERROR_OPEN_FILES) do
begin
Inc (mCount);
if (mCount=100) then
Break;
Sleep(100);
mRes:= WNetCancelConnection (@FUNCData,aForce);
end;
end;
FConnected:=False;
FOwned:=False;
SetLength (FHostName,0);
SetLength (FRemotePath,0);
SetLength (FUser,0);
SetLength (FPassword,0);
SetLength (FURI,0);
end;
end;
procedure TQTXNetworkPath.ClearLastError;
begin
FFailed:= false;
SetLength (FLastError,0);
end;
procedure TQTXNetworkPath.setLastError (aValue:String);
begin
FLastError:= Trim (aValue);
FFailed:= Length(FLastError)>0;
end;
function TQTXNetworkPath.getRelativePath (aFilename:String):String;
begin
if (FConnected) then
result:= FURI + aFilename
else
result:= aFilename;
end;
destructor TQTXNetworkPath.Destroy;
begin
if (FConnected) then
Disconnect(True);
inherited;
end;
// ###########################################################
// THeoWestraDataPumpFileThread
// ###########################################################
constructor THeoWestraDataPumpFileThread.Create (AOnTerminate: TNotifyEvent; AService: TService);
begin
inherited Create (false); // Create thread in NOT suspended mode
FMainService:= AService;
FLock:= TCriticalSection.Create;
FRunning:= false;
FTermEvent:= TEvent.Create (nil, False, False, '');
// OnTerminate:= AOnTerminate;
// FreeOnTerminate:= true;
FreeOnTerminate:= false; // Ensure manual freeing of thread resources
end;
destructor THeoWestraDataPumpFileThread.Destroy;
begin
{$IFDEF DEBUG}
Write('Ukoncuji thread WESTRA file...');
{$ENDIF}
if (FTimer<>0) then
CloseHandle (FTimer);
FTermEvent.Free;
FRunning:= false;
FMainService:= nil;
Terminate;
FLock.Free;
inherited;
{$IFDEF DEBUG}
WriteLn('OK');
{$ENDIF}
end;
procedure THeoWestraDataPumpFileThread.TerminatedSet;
begin
FTermEvent.SetEvent;
end;
procedure THeoWestraDataPumpFileThread.ThreadTerminate;
begin
Terminate;
WaitFor;
end;
procedure THeoWestraDataPumpFileThread.Execute;
const _Second = 10_000_000;
var lSQL, errMsg, url, outData, scanPath, fName, fNameP1, fNameP2, fNameP3, fNameP4, fNameP5, loopCasTyp: string;
cisloZak, skp, selFile, fileExt: string;
idKmen: integer;
seznamNazvu: TList<string>;
fNames, castiName: TStringDynArray;
srchPatterns: array[0..2] of string;
srchPattern: string;
lLoop, idDigiFile, i, cnt, idx, fCount: Integer;
lLoopMax, koefProCas: integer;
logRunCnt: integer;
Msg: TMsg;
firstRun, inProg, inDL: boolean;
lQry: TFDQuery;
sqlConnX, sqlConnX2: TFDConnection;
sqlTrans: IFDPhysTransaction;
lBusy: LongInt;
liDueTime: LARGE_INTEGER;
cfgFile: string;
specCfgXML: XML.XmlIntf.IXMLDocument;
n1: XML.XmlIntf.IXMLNode;
attribs: IXMLNodeList;
attrIdx: integer;
netPath: TQTXNetworkPath;
function RemoveAlphas (const S: string): string;
begin
SetLength(result, S.Length);
var ResChr:= PChar(result);
var LActualLength:= 0;
for var i:=1 to S.Length do
if (CharInSet(s[i], ['0'..'9'])) then
begin
Inc(LActualLength);
ResChr^:= s[i];
Inc(ResChr);
end;
SetLength(result, LActualLength);
end;
begin
lLoop:= 0;
idDigiFile:= 0;
logRunCnt:= 1;
{
koefProCas:= 0; // default vteriny
loopCasTyp:= '???';
case DZTaksZapisTypCas of
0: koefProCas:= 1;
1: koefProCas:= 60;
2: koefProCas:= 3600;
end;
lLoopMax:= koefProCas * intProcessDZTasksSec;
case DZTaksZapisTypCas of
0: loopCasTyp:= 'sek';
1: loopCasTyp:= 'min';
2: loopCasTyp:= 'hod';
end;
}
lLoopMax:= 10; // v minutach !!!!
scanPath:= 'Z:\';
srchPatterns[0]:= '*.stp';
srchPatterns[1]:= '*.step';
srchPatterns[2]:= '*.dxf';
try
try
CoInitialize(nil);
cfgFile:= ExtractFilePath(ParamStr(0)) + 'westraDP.xml';
if (FileExists(cfgFile)) then
begin
specCfgXML:= Xml.XMLDoc.TXMLDocument.Create(nil);
specCfgXML.LoadFromFile (cfgFile);
specCfgXML.Active:= true;
if not(specCfgXML.IsEmptyDoc) then
begin
if (specCfgXML.DocumentElement<>nil) then
begin
n1:= specCfgXML.DocumentElement;
if (n1.NodeName='config') then
begin
attribs:= n1.AttributeNodes;
attrIdx:= attribs.IndexOf('fileScanIntervalMin');
if (attrIdx>-1) then
if (attribs.Get(attrIdx).NodeValue<>null) then
lLoopMax:= attribs.Get(attrIdx).NodeValue;
attrIdx:= attribs.IndexOf('pathToScan');
if (attrIdx>-1) then
if (attribs.Get(attrIdx).NodeValue<>null) then
scanPath:= attribs.Get(attrIdx).NodeValue;
end; // n1 = config
end; // specCfgXML.DocumentElement<>nil
end; // not specCfgXML.IsEmptyDoc
end; // FileExists(cfgFile)
except
end;
finally
begin
if (specCfgXML<>nil) then
specCfgXML:= nil;
CoUninitialize;
end;
end;
datMod.LogInfo (Quick.Logger.etInfo, 'Westra DataPumpFile interval: ' + lLoopMax.ToString + ' min');
lLoopMax:= lLoopMax * 60; // minuty na vteriny
firstRun:= true;
inProg:= false;
FRunning:= true;
try
// netPath:= TQTXNetworkPath.Create(nil);
// netPath.Connect();
except
end;
if (1=1) then // pro rychle vypnuti
begin
FTimer:= CreateWaitableTimer (nil, true, 'WestraDataPumpFileWaitableTimer');
liDueTime.QuadPart:= -1*_Second;
try
while not(Terminated) or not(FRunning) do
begin
if (HDCDZApiService<>nil) then
if (HDCDZApiService.Terminated) then
begin
Terminate;
FRunning:= false;
end;
PeekMessage (&Msg, 0, 0, 0, PM_NOREMOVE); { Create message queue }
if (lLoop=lLoopMax) or (firstRun) then // pri startu a pak kazdou minutu
begin
firstRun:= false;
if (logRunCnt<4) then
datMod.LogInfo (Quick.Logger.etInfo, 'Spoustim scan ' + logRunCnt.toString + '...');
if (logRunCnt=4) then
datMod.LogInfo (Quick.Logger.etInfo, 'Spoustim Scan - bezi ale dal neloguju');
try
if not(inProg) then // nebezi uz ?
begin
if (1=1) then // pro rychle vypnuti
begin
seznamNazvu:= TList<string>.Create;
try
try
for srchPattern in srchPatterns do
begin
if not(Terminated) then
begin
fNames:= TDirectory.GetFiles (scanPath, srchPattern, TSearchOption.soAllDirectories);
seznamNazvu.AddRange (fNames);
end; // Terminated
end; // srchPattern
except // Ignorujeme chyby p<><70>stupu (nap<61>. Permission Denied) a pokra<72>ujeme
on E: EAccessViolation do ;
on E: EInOutError do ;
end;
fNames:= seznamNazvu.ToArray;
finally
seznamNazvu.Free;
end;
if (fNames<>nil) then
if (Length(fNames)>0) then
begin
sqlConnX:= TFDConnection.Create (nil);
try
sqlConnX.Params.SetStrings (datMod.sqlConnParams);
// sqlConnX.TxOptions.AutoCommit:= false;
sqlConnX.Open;
lQry:= TFDQuery.Create(nil);
lQry.Connection:= sqlConnX;
for fName in fNames do
begin
if (Terminated) then
Break;
fNameP1:= fName.Replace(scanPath,'');
if (LeftStr(fNameP1,1)='\') then
fNameP1:= MidStr(fNameP1, 2, Length(fNameP1));
SetLength(castiName,0);
if (fNameP1.IndexOf('\')>-1) then
castiName:= System.StrUtils.SplitString (fNameP1, '\');
fNameP2:= '';
cisloZak:= '';
fNameP3:= '';
idKmen:= 0;
selFile:= '';
fNameP4:= '';
fNameP5:= '';
if (Length(castiName)>0) then
begin
fNameP2:= castiName[0]; // zakazka W....
if (Length(castiName)>1) then
fNameP3:= castiName[1]; // dilec ??? (03.100.1546)
if (Length(castiName)>2) then
fNameP4:= castiName[2]; // adresar DFX ???
if (Length(castiName)>3) then
fNameP5:= castiName[3];
end
else
begin
fNameP2:= ''; // zakazka W.....
if (fNameP1.IndexOf(' ')>-1) then
fNameP2:= LeftStr(fNameP1, fNameP1.IndexOf(' '))
else
if (fNameP1.IndexOf('\')>-1) then
fNameP2:= LeftStr(fNameP1, fNameP1.IndexOf('\'));
end;
if (fNameP2<>'') then
begin
if (fNameP2.IndexOf(' ')>-1) then
fNameP2:= LeftStr(fNameP2, fNameP2.IndexOf(' '));
lQry.Open ('SELECT CisloZakazky FROM ' + tblZak + ' WHERE Nazev=N' + ('W'+fNameP2).QuotedString);
if (lQry.RecordCount=1) then
cisloZak:= lQry.FieldByName('CisloZakazky').AsString;
if (cisloZak<>'') and (fNameP3<>'') then
begin
if (Length(fNameP3)-Length(fNameP3.Replace('.',''))=2) then
begin
lSQL:= 'SELECT ID FROM ' + tblKZ + ' WHERE SkupZbo LIKE N''V%'' AND ISNULL(SKP,N'''')=N' + fNameP3.QuotedString;
lQry.Open(lSQL);
if (lQry.RecordCount=1) then
idKmen:= lQry.FieldByName('ID').asInteger;
end;
if (idKmen>0) then
begin
if (fNameP4<>'') then
for srchPattern in srchPatterns do
if (fNameP4.IndexOf(srchPattern.Replace('*',''))>-1) then
selFile:= fNameP4;
if (selFile='') and (fNameP5<>'') then
for srchPattern in srchPatterns do
if (fNameP5.IndexOf(srchPattern.Replace('*',''))>-1) then
selFile:= fNameP5;
if (selFile<>'') then
begin
lSQL:= 'SELECT 1 FROM ' + tblDokumVaz + ' v WITH(NOLOCK) JOIN ' + tblDokum + ' d WITH(NOLOCK) ON (d.ID=v.IdDok) WHERE v.IdentVazby=8'
+ ' AND v.IdTab=' + idKmen.ToString + ' AND d.Popis=N' + selFile.QuotedString + ' AND d.JmenoACesta=N' + fName.QuotedString;
lQry.Open (lSQL);
if (lQry.RecordCount=0) then
begin
lSQL:= 'DECLARE @d INT' + CRLF + 'INSERT ' + tblDokum + ' (Popis, JmenoACesta) SELECT N' + selFile.QuotedString + ', N' + fName.QuotedString + CRLF
+ 'SET @d=SCOPE_IDENTITY()' + CRLF + 'INSERT ' + tblDokumVaz + ' (IdentVazby, IdTab, IdDok) SELECT 8, ' + idKmen.ToString + ', @d';
try
sqlConnX.ExecSQL (lSQL);
except
end;
end; // nemam vazbu, zaloz ji
end; // selFile<>''
end; // idKmen>0
end; // cisloZak<>''
end; // fNameP2<>''
end; // for fName in fNames
finally
end;
end;
if (sqlConnX.Connected) then
inProg:= false;
if (lQry<>nil) then
begin
lQry.Close;
FreeAndNil (lQry);
end;
sqlConnX.Close;
FreeAndNil (sqlConnX);
// sqlConnX.Free;
// sqlConnX:= nil;
// datMod.LogInfo (Quick.Logger.etInfo, 'Zrusena SQL connection - downloadPDF id ' + idDigiFile.ToString);
end;
end; // not(inProg)
except on E:Exception do
begin
inProg:= false;
if (lQry<>nil) then
begin
lQry.Close;
FreeAndNil (lQry);
end;
if (sqlConnX<>nil) then
begin
if (sqlConnX.InTransaction) then
sqlConnX.Rollback;
sqlConnX.Close;
FreeAndNil (sqlConnX);
// sqlConnX.Free;
// sqlConnX:= nil;
end;
errMsg:= E.Message; // datMod.sqlQry11.FieldByName('ErrMsg').AsString;
end;
end;
lLoop:= 0;
if (logRunCnt<5) then
Inc (logRunCnt);
end;
Inc (lLoop);
if (FTimer<>0) then
SetWaitableTimer (FTimer, TLargeInteger(liDueTime), 0, nil, nil, false);
repeat
lBusy:= MsgWaitForMultipleObjects (1, FTimer, false, INFINITE, QS_ALLINPUT);
until lBusy = WAIT_OBJECT_0;
// Sleep (998);
end;
finally
end;
end;
if (sqlConnX2<>nil) then
begin
if (sqlConnX2.Connected) then
sqlConnX2.Close;
FreeAndNil (sqlConnX2);
end;
end;

View File

@ -0,0 +1 @@
westraDataPumpFileThr: THeoWestraDataPumpFileThread;

View File

@ -0,0 +1,3 @@
if (westraDataPumpFileThr<>nil) then
if (westraDataPumpFileThr.Suspended) then
westraDataPumpFileThr.Resume;

View File

@ -0,0 +1,6 @@
if (westraDataPumpFileThr<>nil) then
if not(westraDataPumpFileThr.Started) then
begin
westraDataPumpFileThr.Start;
datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby WESTRA DataPump file');
end;

View File

@ -0,0 +1,3 @@
if (westraDataPumpFileThr<>nil) then
if not(westraDataPumpFileThr.Suspended) then
westraDataPumpFileThr.Suspend;

View File

@ -0,0 +1,12 @@
datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby WESTRA DataPump File - interval 10 minut...');
{$IFDEF DEBUG}
WriteLn ('Start sluzby WESTRA DataPump File - inverval 10 minut...');
{$ENDIF}
westraDataPumpFileThr:= THeoWestraDataPumpFileThread.Create (ThreadTerminated, self);
if (westraDataPumpFileThr.Started) then
begin
datMod.LogInfo (Quick.Logger.etInfo, ' OK');
{$IFDEF DEBUG}
WriteLn (' OK');
{$ENDIF}
end;

View File

@ -0,0 +1,18 @@
if Assigned(westraDataPumpFileThr) then
begin
{$IFDEF DEBUG}
WriteLn ('Ukoncuji sluzbu WESTRA DataPump File...');
{$ENDIF}
datMod.LogInfo (Quick.Logger.etInfo, 'Ukoncuji sluzbu WESTRA DataPump File...');
try
westraDataPumpFileThr.ThreadTerminate;
FreeAndNil (westraDataPumpFileThr);
except on E:Exception do
// add event in eventlog with reason why the service couldn't stop
LogMessage('Cannot stop service: ' + E.Message, EVENTLOG_ERROR_TYPE, 0, 1);
end;
datMod.LogInfo (Quick.Logger.etInfo, ' OK');
{$IFDEF DEBUG}
WriteLn (' OK');
{$ENDIF}
end;

View File

@ -0,0 +1,3 @@
fileScanIntervalMin

View File

@ -0,0 +1,48 @@
THeoWestraDataPumpFileThread = class(TThread)
private
FMainService: TService;
FLock: TCriticalSection;
FTermEvent: TEvent;
FRunning: boolean;
FTimer: THandle;
protected
procedure Execute; override;
procedure TerminatedSet; override; // XE2+ only *
public
constructor Create (AOnTerminate: TNotifyEvent; AService: TService);
destructor Destroy; override;
procedure ThreadTerminate;
end;
TQTXNetworkPath = class(TObject)
private
FHostName: String;
FRemotePath: String;
FUser: String;
FPassword: String;
FConnected: Boolean;
FOwned: Boolean;
FLastError: String;
FFailed: Boolean;
FUNCData: packed array[0..4096] of char;
FURI: String;
protected
procedure ClearLastError;
procedure setLastError (aValue:String);
public
property Active:Boolean read FConnected;
property HostName:String read FHostName;
property NetworkPath:String read FRemotePath;
property LastError:String read FLastError;
property Failed:Boolean read FFailed;
function getRelativePath (aFilename:String): string;
function Connect (aHostName:String;
aNetworkPath:String;
const aUsername:String='';
const aPassword:String=''): boolean;
procedure Disconnect (const aForce:Boolean=False);
destructor Destroy;override;
end;

View File

View File

@ -0,0 +1 @@
System.Net.HttpClient, System.Threading, System.Types,

View File

@ -0,0 +1 @@
intervalFileScan: integer;

BIN
_custom/Westra/zdroje.RES Normal file

Binary file not shown.

0
_custom/Westra/zdroje.rc Normal file
View File

View File

@ -2,6 +2,7 @@
rem copy NUL sqlZdroje.res rem copy NUL sqlZdroje.res
"C:\Program files (x86)\Embarcadero\Studio\23.0\bin\brcc32.exe" sqlZdroje.rc "C:\Program files (x86)\Embarcadero\Studio\23.0\bin\brcc32.exe" sqlZdroje.rc
"C:\Program files (x86)\Embarcadero\Studio\23.0\bin\brcc32.exe" .\_custom\Rootvin\zdroje.rc "C:\Program files (x86)\Embarcadero\Studio\23.0\bin\brcc32.exe" .\_custom\Rootvin\zdroje.rc
rem "C:\Program files (x86)\Embarcadero\Studio\23.0\bin\brcc32.exe" .\_custom\Westra\zdroje.rc
rem "C:\Program files (x86)\Embarcadero\Studio\23.0\bin\brcc32.exe" .\_custom\INCOSystems\zdroje.rc rem "C:\Program files (x86)\Embarcadero\Studio\23.0\bin\brcc32.exe" .\_custom\INCOSystems\zdroje.rc
rem "C:\Program files (x86)\Embarcadero\Studio\23.0\bin\brcc32.exe" .\_custom\Gornicky\zdroje.rc rem "C:\Program files (x86)\Embarcadero\Studio\23.0\bin\brcc32.exe" .\_custom\Gornicky\zdroje.rc
rem "C:\Program files (x86)\Embarcadero\Studio\23.0\bin\brcc32.exe" .\_custom\EMPolar\zdroje.rc rem "C:\Program files (x86)\Embarcadero\Studio\23.0\bin\brcc32.exe" .\_custom\EMPolar\zdroje.rc

View File

@ -17,6 +17,7 @@
//{$DEFINE CUSTOM_CTRL_INCOSystems} //{$DEFINE CUSTOM_CTRL_INCOSystems}
//{$DEFINE CUSTOM_CTRL_Gornicky} //{$DEFINE CUSTOM_CTRL_Gornicky}
//{$DEFINE CUSTOM_CTRL_EMPolar} //{$DEFINE CUSTOM_CTRL_EMPolar}
//{$DEFINE CUSTOM_CTRL_Westra}
@ -39,5 +40,8 @@
{$IFDEF CUSTOM_CTRL_EMPolar} {$IFDEF CUSTOM_CTRL_EMPolar}
{$DEFINE CUSTOM_CTRL_FILES} {$DEFINE CUSTOM_CTRL_FILES}
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
{$DEFINE CUSTOM_CTRL_FILES}
{$ENDIF}

View File

@ -1,4 +1,4 @@
program hdcDZApi; program hdcDZApi;
{$IFDEF DEBUG} {$IFDEF DEBUG}
{$APPTYPE CONSOLE} {$APPTYPE CONSOLE}
@ -11,6 +11,11 @@ uses
Vcl.SvcMgr, Vcl.SvcMgr,
System.SysUtils, System.SysUtils,
Winapi.Windows, Winapi.Windows,
System.Classes,
{$IFDEF DEBUG}
Web.WebReq,
{$ENDIF}
MVCFramework.Middleware.Swagger, MVCFramework.Middleware.Swagger,
MVCFramework.Swagger.Commons, MVCFramework.Swagger.Commons,
@ -78,6 +83,7 @@ uses
,uHeOObj_Custom in '_custom\INCOSystems\uHeOObj_Custom.pas' ,uHeOObj_Custom in '_custom\INCOSystems\uHeOObj_Custom.pas'
,uCtrlCustom in '_custom\INCOSystems\uCtrlCustom.pas' ,uCtrlCustom in '_custom\INCOSystems\uCtrlCustom.pas'
,uSvcCustom in '_custom\INCOSystems\uSvcCustom.pas' ,uSvcCustom in '_custom\INCOSystems\uSvcCustom.pas'
{$R .\_custom\INCOSystems\zdroje.RES}
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Gornicky} {$IFDEF CUSTOM_CTRL_Gornicky}
@ -93,6 +99,13 @@ uses
,uSvcCustom in '_custom\EMPolar\uSvcCustom.pas' ,uSvcCustom in '_custom\EMPolar\uSvcCustom.pas'
{$R '_custom\EMPolar\zdroje.RES'} {$R '_custom\EMPolar\zdroje.RES'}
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
,uHeOObj_Custom in '_custom\Westra\uHeOObj_Custom.pas'
,uCtrlCustom in '_custom\Westra\uCtrlCustom.pas'
,uSvcCustom in '_custom\Westra\uSvcCustom.pas'
{$R '_custom\Westra\zdroje.RES'}
{$ENDIF}
; ;
@ -123,7 +136,10 @@ var Event : TInputrecord;
var started: boolean; var started: boolean;
var stopped: boolean; var stopped: boolean;
Application.Initialize;
Application.CreateForm (TdatMod, datMod); Application.CreateForm (TdatMod, datMod);
// Application.CreateForm(TWebModule1, WebModule1);
// In debug mode the server acts as a console application. // In debug mode the server acts as a console application.
// Create the TService descendant manually. // Create the TService descendant manually.
@ -134,6 +150,10 @@ var Event : TInputrecord;
HDCDZApiService.ServiceAfterInstall (HDCDZApiService); HDCDZApiService.ServiceAfterInstall (HDCDZApiService);
if (WebRequestHandler<>nil) then
WebRequestHandler.WebModuleClass := WebModuleClass;
// Simulate service start. // Simulate service start.
HDCDZApiService.ServiceStart (HDCDZApiService, started); HDCDZApiService.ServiceStart (HDCDZApiService, started);
// Keep the console box running (ServerContainer1 code runs in the background) // Keep the console box running (ServerContainer1 code runs in the background)
@ -179,9 +199,32 @@ var Event : TInputrecord;
begin begin
ReportMemoryLeaksOnShutdown:= false; ReportMemoryLeaksOnShutdown:= true;
{$IFDEF DEBUG} {$IFDEF DEBUG}
{
if not Application.DelayInitialize or Application.Installing then
Application.Initialize;
Application.CreateForm(THDCDZApiService, HDCDZApiService);
Application.CreateForm(TdatMod, datMod);
// thread čekající na ENTER
TThread.CreateAnonymousThread(
procedure
var Stopped: Boolean;
begin
Writeln('Stiskem ENTER ukončete...');
Readln;
TThread.Queue(nil,
procedure
begin
HDCDZApiService.ServiceStop(HDCDZApiService, Stopped);
end);
end
).Start;
Application.Run;
}
SpustitJakoPrg; SpustitJakoPrg;
{$ELSE} {$ELSE}
if (FindCmdLineSwitch('dbg', true)) then if (FindCmdLineSwitch('dbg', true)) then

View File

@ -5,7 +5,7 @@
<FrameworkType>VCL</FrameworkType> <FrameworkType>VCL</FrameworkType>
<MainSource>hdcDZApi.dpr</MainSource> <MainSource>hdcDZApi.dpr</MainSource>
<Base>True</Base> <Base>True</Base>
<Config Condition="'$(Config)'==''">Release</Config> <Config Condition="'$(Config)'==''">Debug</Config>
<Platform Condition="'$(Platform)'==''">Win64</Platform> <Platform Condition="'$(Platform)'==''">Win64</Platform>
<TargetedPlatforms>2</TargetedPlatforms> <TargetedPlatforms>2</TargetedPlatforms>
<AppType>Application</AppType> <AppType>Application</AppType>
@ -132,8 +132,8 @@
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_MajorVer>3</VerInfo_MajorVer> <VerInfo_MajorVer>3</VerInfo_MajorVer>
<VerInfo_Release>2025</VerInfo_Release> <VerInfo_Release>2025</VerInfo_Release>
<VerInfo_Build>521</VerInfo_Build> <VerInfo_Build>1205</VerInfo_Build>
<VerInfo_Keys>CompanyName=HD Consulting s.r.o. Strakonice;FileDescription=HDC x Pro Holding DataZone komunikator (API);FileVersion=3.0.2025.521;InternalName=;LegalCopyright=(c) 2022-25 HD Consulting s.r.o. / Tomas Buzin;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=XE12.3.1;LastCompiledTime=2025.05.21 17:11:11</VerInfo_Keys> <VerInfo_Keys>CompanyName=HD Consulting s.r.o. Strakonice;FileDescription=HDC x Pro Holding DataZone komunikator (API);FileVersion=3.0.2025.1205;InternalName=;LegalCopyright=(c) 2022-25 HD Consulting s.r.o. / Tomas Buzin;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=XE12.3.1;LastCompiledTime=2025.12.05 12:42:18</VerInfo_Keys>
<Icon_MainIcon>api2-5.ico</Icon_MainIcon> <Icon_MainIcon>api2-5.ico</Icon_MainIcon>
<DCC_MapFile>3</DCC_MapFile> <DCC_MapFile>3</DCC_MapFile>
<DCC_DebugInformation>2</DCC_DebugInformation> <DCC_DebugInformation>2</DCC_DebugInformation>
@ -252,8 +252,6 @@
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\EssentialsDR290.bpl">TurboPack Essentials Delphi Runtime package</Excluded_Packages> <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\EssentialsDR290.bpl">TurboPack Essentials Delphi Runtime package</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\PngComponentsD290.bpl">Png Components for Delphi</Excluded_Packages> <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\PngComponentsD290.bpl">Png Components for Delphi</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\dmvcframeworkRT120.bpl">DMVCFramework - CopyRight (2010-2024) Daniele Teti and the DMVCFramework Team</Excluded_Packages> <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\dmvcframeworkRT120.bpl">DMVCFramework - CopyRight (2010-2024) Daniele Teti and the DMVCFramework Team</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\dclunidacfmx290.bpl">Devart Universal Data Access FMX Components</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\dclunidac290.bpl">Devart Universal Data Access Components</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\JvAppFrmDesign290.bpl">JVCL Application and Form Components</Excluded_Packages> <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\JvAppFrmDesign290.bpl">JVCL Application and Form Components</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\JvBandsDesign290.bpl">JVCL Band Objects</Excluded_Packages> <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\JvBandsDesign290.bpl">JVCL Band Objects</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\JvCmpDesign290.bpl">JVCL Non-Visual Components</Excluded_Packages> <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\JvCmpDesign290.bpl">JVCL Non-Visual Components</Excluded_Packages>
@ -280,9 +278,12 @@
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\JvTimeFrameworkDesign290.bpl">JVCL Time Framework</Excluded_Packages> <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\JvTimeFrameworkDesign290.bpl">JVCL Time Framework</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\JvWizardsDesign290.bpl">JVCL Wizard</Excluded_Packages> <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\JvWizardsDesign290.bpl">JVCL Wizard</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\JvXPCtrlsDesign290.bpl">JVCL XP Controls</Excluded_Packages> <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\JvXPCtrlsDesign290.bpl">JVCL XP Controls</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\dclunidacfmx290.bpl">Devart Universal Data Access FMX Components</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\dclunidac290.bpl">Devart Universal Data Access Components</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\dclSVGIconImageListFMX290.bpl">Ethea SVGIconImageList FMX components</Excluded_Packages> <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\dclSVGIconImageListFMX290.bpl">Ethea SVGIconImageList FMX components</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\Vyvoj12_0.bpl">Helios Orange Components</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\dcldxIconLibraryRS29.bpl">Express Cross Platform Library Icon Library by Developer Express Inc.</Excluded_Packages> <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\dcldxIconLibraryRS29.bpl">Express Cross Platform Library Icon Library by Developer Express Inc.</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\VirtualTreesDD290.bpl">File C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\VirtualTreesDD290.bpl not found</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\Vyvoj12_0.bpl">Helios Orange Components</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\LockBox3DR290.bpl">TurboPack LockBox 3 Delphi runtime package</Excluded_Packages> <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\LockBox3DR290.bpl">TurboPack LockBox 3 Delphi runtime package</Excluded_Packages>
<Excluded_Packages Name="C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\dclstd280.bpl">Embarcadero Standard Components</Excluded_Packages> <Excluded_Packages Name="C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\dclstd280.bpl">Embarcadero Standard Components</Excluded_Packages>
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\OrpheusDBDD290.bpl">TurboPack Orpheus Delphi datataware designtime package</Excluded_Packages> <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\OrpheusDBDD290.bpl">TurboPack Orpheus Delphi datataware designtime package</Excluded_Packages>
@ -292,6 +293,8 @@
<Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\dclIconFontsImageListFMX290.bpl">Ethea IconFontsImageList FMX components</Excluded_Packages> <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\dclIconFontsImageListFMX290.bpl">Ethea IconFontsImageList FMX components</Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k290.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages> <Excluded_Packages Name="$(BDSBIN)\dcloffice2k290.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dclofficexp290.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages> <Excluded_Packages Name="$(BDSBIN)\dclofficexp290.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
<Excluded_Packages Name="D:\Data\_komponenty\TeeGrid\Compiled\Delphi29.win32\Bin\DCLVCLTeeGrid29.bpl">File D:\Data\_komponenty\TeeGrid\Compiled\Delphi29.win32\Bin\DCLVCLTeeGrid29.bpl not found</Excluded_Packages>
<Excluded_Packages Name="D:\Data\_komponenty\TeeGrid\Compiled\Delphi29.win32\Bin\DCLFMXTeeGrid29.bpl">File D:\Data\_komponenty\TeeGrid\Compiled\Delphi29.win32\Bin\DCLFMXTeeGrid29.bpl not found</Excluded_Packages>
</Excluded_Packages> </Excluded_Packages>
</Delphi.Personality> </Delphi.Personality>
<Deployment Version="5"> <Deployment Version="5">

Binary file not shown.

View File

@ -24,6 +24,7 @@ uses
{$IF DEFINED(CUSTOM_CTRL_Rootvin)}, uSvcCustom {$ENDIF} {$IF DEFINED(CUSTOM_CTRL_Rootvin)}, uSvcCustom {$ENDIF}
{$IF DEFINED(CUSTOM_CTRL_INCOSystems)}, uSvcCustom {$ENDIF} {$IF DEFINED(CUSTOM_CTRL_INCOSystems)}, uSvcCustom {$ENDIF}
{$IF DEFINED(CUSTOM_CTRL_Gornicky)}, uSvcCustom {$ENDIF} {$IF DEFINED(CUSTOM_CTRL_Gornicky)}, uSvcCustom {$ENDIF}
{$IF DEFINED(CUSTOM_CTRL_Westra)}, uSvcCustom {$ENDIF}
{$IF DEFINED(CUSTOM_CTRL_EMPolar)}, uSvcCustom {$ENDIF} {$IF DEFINED(CUSTOM_CTRL_EMPolar)}, uSvcCustom {$ENDIF}
{$IF DEFINED(CUSTOM_CTRL_GatemaSD)}, uSvcCustomSDG {$ENDIF} {$IF DEFINED(CUSTOM_CTRL_GatemaSD)}, uSvcCustomSDG {$ENDIF}
; ;
@ -87,8 +88,12 @@ type
{$IFDEF CUSTOM_CTRL_Gornicky} {$IFDEF CUSTOM_CTRL_Gornicky}
FGornickyService: TGornickyService; FGornickyService: TGornickyService;
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
FWestraService: TWestraService;
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar} {$IFDEF CUSTOM_CTRL_EMPolar}
FEMPNadobaService: TEMPNadobaService; FEMPNadobaService: TEMPNadobaService;
FEMPVytezeniDoklService: TEMPVytezeniDoklService;
{$ENDIF} {$ENDIF}
function GetDataModule: TdatMod; function GetDataModule: TdatMod;
strict protected strict protected
@ -148,8 +153,12 @@ type
{$IFDEF CUSTOM_CTRL_Gornicky} {$IFDEF CUSTOM_CTRL_Gornicky}
function GetGornickyService: TGornickyService; function GetGornickyService: TGornickyService;
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
function GetWestraService: TWestraService;
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar} {$IFDEF CUSTOM_CTRL_EMPolar}
function GetEMPNadobaService: TEMPNadobaService; function GetEMPNadobaService: TEMPNadobaService;
function GetEMPVytezeniDoklService: TEMPVytezeniDoklService;
{$ENDIF} {$ENDIF}
public public
constructor Create; override; constructor Create; override;
@ -267,8 +276,13 @@ uses
FGornickyService.Free; FGornickyService.Free;
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
FWestraService.Free;
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar} {$IFDEF CUSTOM_CTRL_EMPolar}
FEMPNadobaService.Free; FEMPNadobaService.Free;
FEMPVytezeniDoklService.Free;
{$ENDIF} {$ENDIF}
if Assigned(FDM) then if Assigned(FDM) then
@ -630,6 +644,16 @@ uses
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
function TBaseController.GetWestraService: TWestraService;
begin
if not Assigned(FWestraService) then
FWestraService:= TWestraService.Create (GetDataModule);
result:= FWestraService;
end;
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar} {$IFDEF CUSTOM_CTRL_EMPolar}
function TBaseController.GetEMPNadobaService: TEMPNadobaService; function TBaseController.GetEMPNadobaService: TEMPNadobaService;
begin begin
@ -637,6 +661,13 @@ uses
FEMPNadobaService:= TEMPNadobaService.Create (GetDataModule); FEMPNadobaService:= TEMPNadobaService.Create (GetDataModule);
result:= FEMPNadobaService; result:= FEMPNadobaService;
end; end;
function TBaseController.GetEMPVytezeniDoklService: TEMPVytezeniDoklService;
begin
if not Assigned(FEMPVytezeniDoklService) then
FEMPVytezeniDoklService:= TEMPVytezeniDoklService.Create (GetDataModule);
result:= FEMPVytezeniDoklService;
end;
{$ENDIF} {$ENDIF}

View File

@ -98,7 +98,7 @@ type
[MVCFromQueryString('sklad', '')] sklad: string=''; [MVCFromQueryString('sklad', '')] sklad: string='';
[MVCFromQueryString('od', '')] odDatum: string=''; [MVCFromQueryString('od', '')] odDatum: string='';
[MVCFromQueryString('do', '')] doDatum: string=''; [MVCFromQueryString('do', '')] doDatum: string='';
[MVCFromQueryString('realizovane', '')] realizovane: string=''; [MVCFromQueryString('realizovane', '')] realizovane: string='0';
[MVCFromQueryString('seznam', '0')] jenSeznam: string=''; [MVCFromQueryString('seznam', '0')] jenSeznam: string='';
[MVCFromQueryString('minimum', '')] minimumDat: string=''; [MVCFromQueryString('minimum', '')] minimumDat: string='';
[MVCFromQueryString('polozky', '1')] polozky: string=''; [MVCFromQueryString('polozky', '1')] polozky: string='';
@ -272,7 +272,7 @@ uses
{ TDokladOZController } { TDokladOZController }
procedure TDokladOZController.GetAll (cisloorg: string=''; druhpohybu: string=''; radadokladu: string=''; sklad: string=''; odDatum: string=''; procedure TDokladOZController.GetAll (cisloorg: string=''; druhpohybu: string=''; radadokladu: string=''; sklad: string=''; odDatum: string='';
doDatum: string=''; realizovane: string=''; jenSeznam: string=''; minimumDat: string=''; polozky: string=''; doDatum: string=''; realizovane: string='0'; jenSeznam: string=''; minimumDat: string=''; polozky: string='';
sdServer: string=''); sdServer: string='');
var iId, iCisOrg, dpz: integer; var iId, iCisOrg, dpz: integer;
params: TDictionary<string, string>; params: TDictionary<string, string>;

View File

@ -133,10 +133,12 @@ type
[MVCSwagSummary('V<>roba - v<>robn<62> p<><70>kaz', 'Vr<56>t<EFBFBD> v<>robn<62> p<><70>kaz', 'VyrobniPrikazGetByID')] [MVCSwagSummary('V<>roba - v<>robn<62> p<><70>kaz', 'Vr<56>t<EFBFBD> v<>robn<62> p<><70>kaz', 'VyrobniPrikazGetByID')]
[MVCSwagResponses(200, 'Success', TVyrobniPrikaz)] [MVCSwagResponses(200, 'Success', TVyrobniPrikaz)]
[MVCSwagParam(plPath, 'id', 'ID p<><70>kazu', ptString, false)] [MVCSwagParam(plPath, 'id', 'ID p<><70>kazu', ptString, false)]
[MVCSwagParam(plQuery, 'stav', 'P<><50>kazy jen v po<70>adovan<61>m stavu (<28><>seln<6C>, nap<61>. 30=zad<61>no)', ptString, false)]
[MVCSwagParam(plQuery, 'operace', '1=vr<76>t<EFBFBD> seznam v<>robn<62> operace', ptString, false, '0')] [MVCSwagParam(plQuery, 'operace', '1=vr<76>t<EFBFBD> seznam v<>robn<62> operace', ptString, false, '0')]
[MVCSwagParam(plQuery, 'material', '1=vr<76>t<EFBFBD> seznam materi<72>lov<6F>ch po<70>adavk<76>', ptString, false, '0')] [MVCSwagParam(plQuery, 'material', '1=vr<76>t<EFBFBD> seznam materi<72>lov<6F>ch po<70>adavk<76>', ptString, false, '0')]
[MVCSwagParam(plQuery, 'debug', '1=zapise SQL query do log souboru', ptString, false, '0')] [MVCSwagParam(plQuery, 'debug', '1=zapise SQL query do log souboru', ptString, false, '0')]
procedure GetByID (id: string='0'; procedure GetByID (id: string='0';
[MVCFromQueryString('stav', '')] stav: string='';
[MVCFromQueryString('operace', '0')] operace: string=''; [MVCFromQueryString('operace', '0')] operace: string='';
[MVCFromQueryString('material', '0')] material: string=''; [MVCFromQueryString('material', '0')] material: string='';
[MVCFromQueryString('debug', '0')] debug: string='' [MVCFromQueryString('debug', '0')] debug: string=''
@ -1074,6 +1076,9 @@ uses
if (debug='1') then if (debug='1') then
params.Add('debug', debug); params.Add('debug', debug);
stav:= sanitizeSQLString(stav);
if (stav='10') or (stav='20') or (stav='30') or (stav='40') or (stav='50') or (stav='60') then
params.Add('stav', stav);
radaVPr:= sanitizeSQLString (radaVPr); radaVPr:= sanitizeSQLString (radaVPr);
@ -1168,7 +1173,7 @@ uses
procedure TVyrobniPrikazController.GetByID (id: string='0'; operace: string=''; material: string=''; debug: string=''); procedure TVyrobniPrikazController.GetByID (id: string='0'; stav: string=''; operace: string=''; material: string=''; debug: string='');
var iId: integer; var iId: integer;
params: TDictionary<string,string>; params: TDictionary<string,string>;
begin begin
@ -1180,6 +1185,10 @@ uses
if not(TryStrToInt(id, iId)) then if not(TryStrToInt(id, iId)) then
iId:= 0; iId:= 0;
stav:= sanitizeSQLString(stav);
if (stav='10') or (stav='20') or (stav='30') or (stav='40') or (stav='50') or (stav='60') then
params.Add('stav', stav);
operace:= sanitizeSQLString(operace); operace:= sanitizeSQLString(operace);
if (operace='1') then if (operace='1') then
params.Add('operace', '1'); params.Add('operace', '1');

View File

@ -503,6 +503,8 @@ type
FMena, FMJ, FMJEvidence: NullableString; FMena, FMJ, FMJEvidence: NullableString;
FMnozstvi: Extended; FMnozstvi: Extended;
FKurz: Extended; FKurz: Extended;
FIDOldPolozka: NullableInt32;
FIDOldDoklad: NullableInt32;
FIDPrikaz: NullableInt32; FIDPrikaz: NullableInt32;
FTypVyrobnihoDokladu: NullableInt32; FTypVyrobnihoDokladu: NullableInt32;
FUmisteni: TUmisteni; FUmisteni: TUmisteni;
@ -614,6 +616,14 @@ type
[MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID zdrojov<6F>ho v<>robn<62>ho p<><70>kazu', false, true)] [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID zdrojov<6F>ho v<>robn<62>ho p<><70>kazu', false, true)]
property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz; property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz;
[MVCColumn('IDOldDoklad')]
[MVCSwagJsonSchemaField(stInteger, 'IDOldDoklad', 'ID p<>vodn<64>ho dokladu', false, true)]
property IDOldDoklad: NullableInt32 read FIDOldDoklad write FIDOldDoklad;
[MVCColumn('IDOldPolozka')]
[MVCSwagJsonSchemaField(stInteger, 'IDOldPolozka', 'ID p<>vodn<64> polo<6C>ky', false, true)]
property IDOldPolozka: NullableInt32 read FIDOldPolozka write FIDOldPolozka;
[MVCColumn('TypVyrobnihoDokladu')] [MVCColumn('TypVyrobnihoDokladu')]
[MVCSwagJsonSchemaField(stInteger, 'TypVyrobnihoDokladu', 'Typ v<>robn<62>ho dokladu - 0=odv<64>d<EFBFBD>n<EFBFBD> v<>robku, 1=v<>dej materi<72>lu, ', false, true)] [MVCSwagJsonSchemaField(stInteger, 'TypVyrobnihoDokladu', 'Typ v<>robn<62>ho dokladu - 0=odv<64>d<EFBFBD>n<EFBFBD> v<>robku, 1=v<>dej materi<72>lu, ', false, true)]
property TypVyrobnihoDokladu: NullableInt32 read FTypVyrobnihoDokladu write FTypVyrobnihoDokladu; property TypVyrobnihoDokladu: NullableInt32 read FTypVyrobnihoDokladu write FTypVyrobnihoDokladu;

View File

@ -1364,7 +1364,7 @@ type
[MVCTable('TabEvidRozpracOperR')] [MVCTable('TabEvidRozpracOperR')]
TEvidRozpracOperaceOperace = class(THeliosObjekty) TEvidRozpracOperaceOperace = class(THeliosObjekty)
private private
FIDEvidRozpraceOper: integer; FIDEvidRozpracOper: integer;
FIDPrikaz: integer; FIDPrikaz: integer;
FNazevDilce: NullableString; FNazevDilce: NullableString;
FSkupZboDilce: NullableString; FSkupZboDilce: NullableString;
@ -1372,6 +1372,7 @@ type
FDokladPrPostup: integer; FDokladPrPostup: integer;
FAltPrPostup: char; FAltPrPostup: char;
FNazevOperace: NullableString; FNazevOperace: NullableString;
FOperace: string;
FIDSdruzVyrOperaceR: NullableInt32; FIDSdruzVyrOperaceR: NullableInt32;
FIDVyrCis: NullableInt32; FIDVyrCis: NullableInt32;
FTypEvidMnoz: NullableInt16; FTypEvidMnoz: NullableInt16;
@ -1382,12 +1383,18 @@ type
FSk_cas_Obsluhy_T: byte; FSk_cas_Obsluhy_T: byte;
FPoznamka: NullableString; FPoznamka: NullableString;
FJeSdruzenaOper: boolean; FJeSdruzenaOper: boolean;
FOdvadeci: boolean;
{$IFDEF CUSTOM_CTRL_INCOSystems}
FMamNeuzavrenePredchozi: boolean;
{$ENDIF}
protected protected
procedure OnAfterLoad; override; procedure OnAfterLoad; override;
public public
[MVCColumn('IDEvidRozpraceOper')] constructor Create; virtual;
[MVCSwagJsonSchemaField(stInteger, 'IDEvidRozpraceOper', 'Intern<72> ID evidence rozpracovan<61>ch operac<61>', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength
property IDEvidRozpraceOper: integer read FIDEvidRozpraceOper write FIDEvidRozpraceOper; [MVCColumn('IDEvidRozpracOper')]
[MVCSwagJsonSchemaField(stInteger, 'IDEvidRozpracOper', 'Intern<72> ID evidence rozpracovan<61>ch operac<61>', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength
property IDEvidRozpracOper: integer read FIDEvidRozpracOper write FIDEvidRozpracOper;
[MVCColumn('IDPrikaz')] [MVCColumn('IDPrikaz')]
[MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'Intern<72> ID v<>robn<62>ho p<><70>kazu', true, false)] [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'Intern<72> ID v<>robn<62>ho p<><70>kazu', true, false)]
@ -1448,6 +1455,20 @@ type
[MVCColumn('RegCisDilce')] [MVCColumn('RegCisDilce')]
[MVCSwagJsonSchemaField(stString, 'RegCisDilce', 'Registracni cislo vyr<79>b<EFBFBD>n<EFBFBD>ho d<>lce', false, true, 0, 30)] [MVCSwagJsonSchemaField(stString, 'RegCisDilce', 'Registracni cislo vyr<79>b<EFBFBD>n<EFBFBD>ho d<>lce', false, true, 0, 30)]
property RegCisDilce: NullableString read FRegCisDilce write FRegCisDilce; property RegCisDilce: NullableString read FRegCisDilce write FRegCisDilce;
[MVColumn('Odvadeci')]
[MVCSwagJsonSchemaField(stBoolean, 'Odvadeci', 'Odv<64>d<EFBFBD>c<EFBFBD> operace', true, false)]
property Odvadeci: boolean read FOdvadeci write FOdvadeci;
[MVColumn('Operace')]
[MVCSwagJsonSchemaField(stString, 'Operace', 'Operace', false, true, 0, 4)]
property Operace: string read FOperace write FOperace;
{$IFDEF CUSTOM_CTRL_INCOSystems}
[MVCColumn('MamNeuzavrenePredchozi')]
[MVCSwagJsonSchemaField(stBoolean, 'MamNeuzavrenePredchozi', 'Existuj<75> neuzav<61>en<65> rozpracovan<61> evidence operace dan<61>ho p<><70>kazu s ni<6E><69><EFBFBD>m <20><>slem operace', true, false)]
property MamNeuzavrenePredchozi: boolean read FMamNeuzavrenePredchozi write FMamNeuzavrenePredchozi;
{$ENDIF}
end; end;
@ -2325,6 +2346,17 @@ uses
{ TEvidRozpracOperaceOperace } { TEvidRozpracOperaceOperace }
constructor TEvidRozpracOperaceOperace.Create;
begin
inherited;
FOdvadeci:= false;
FOperace:= '';
{$IFDEF CUSTOM_CTRL_INCOSystems}
FMamNeuzavrenePredchozi:= false;
{$ENDIF}
end;
procedure TEvidRozpracOperaceOperace.OnAfterLoad; procedure TEvidRozpracOperaceOperace.OnAfterLoad;
begin begin
FJeSdruzenaOper:= FIDSdruzVyrOperaceR.IsNull; FJeSdruzenaOper:= FIDSdruzVyrOperaceR.IsNull;

View File

@ -254,7 +254,7 @@ uses
lQry.Open (lSQL, [AID]); lQry.Open (lSQL, [AID]);
if (lQry.RecordCount>0) then if (lQry.RecordCount>0) then
begin begin
extInfoStr:= lQry.AsJSONObjectString; extInfoStr:= lQry.AsJSONObject;
{$IFDEF CUSTOM_CTRL_Rootvin} {$IFDEF CUSTOM_CTRL_Rootvin}
if (SQLColumnExists('dbo', tblKZe, rtnASOLTrideni)) then if (SQLColumnExists('dbo', tblKZe, rtnASOLTrideni)) then
if not(lQry.FieldByName(rtnASOLTrideni).IsNull) then if not(lQry.FieldByName(rtnASOLTrideni).IsNull) then

View File

@ -358,7 +358,7 @@ uses
try try
lQry.Open(lSQL, [AID]); lQry.Open(lSQL, [AID]);
if (lQry.RecordCount>0) then if (lQry.RecordCount>0) then
extInfoStr:= lQry.AsJSONObjectString; extInfoStr:= lQry.AsJSONObject;
finally finally
lQry.Free; lQry.Free;
end; end;
@ -495,7 +495,7 @@ uses
try try
lQry.Open(lSQL, [idPlanKal]); lQry.Open(lSQL, [idPlanKal]);
if (lQry.RecordCount>0) then if (lQry.RecordCount>0) then
extInfoStr:= lQry.AsJSONObjectString; extInfoStr:= lQry.AsJSONObject;
finally finally
lQry.Free; lQry.Free;
end; end;

View File

@ -398,8 +398,11 @@ uses
end; end;
if (params.ContainsKey('')) then if (params.ContainsKey('jenRealizovane')) then
if (params.Items['jenRealizovane']<>'1') then if (params.Items['jenRealizovane']='1') then
where:= where + IfThen(where<>'', ' AND ', '') + 'DatRealizace IS NOT NULL';
if (params.ContainsKey('jenReal')) then
if (params.Items['jenReal']='1') then
where:= where + IfThen(where<>'', ' AND ', '') + 'DatRealizace IS NOT NULL'; where:= where + IfThen(where<>'', ' AND ', '') + 'DatRealizace IS NOT NULL';
@ -487,7 +490,7 @@ uses
try try
lQry.Open(lSQL, [AID]); lQry.Open(lSQL, [AID]);
if (lQry.RecordCount>0) then if (lQry.RecordCount>0) then
extInfoStr:= lQry.AsJSONObjectString; extInfoStr:= lQry.AsJSONObject;
finally finally
lQry.Free; lQry.Free;
end; end;
@ -709,7 +712,7 @@ uses
{$IFDEF CUSTOM_CTRL_Rootvin} {$IFDEF CUSTOM_CTRL_Rootvin}
silo:= lQry.FieldByName('_Mouka_Silo').AsString; silo:= lQry.FieldByName('_Mouka_Silo').AsString;
{$ENDIF} {$ENDIF}
extInfoStr:= lQry.AsJSONObjectString; extInfoStr:= lQry.AsJSONObject;
end; end;
finally finally
end; end;
@ -1084,15 +1087,15 @@ uses
lSQL:= lSQL.Replace('main.', ''); lSQL:= lSQL.Replace('main.', '');
sqlConnX:= TFDConnection.Create(nil);
sqlConnX.ConnectionDefName:= sqlPoolName;
lQry:= TFDQuery.Create(nil);
{$IF DEFINED(CUSTOM_CTRL_Rootvin) or DEFINED(CUSTOM_CTRL_GatemaSD)} {$IF DEFINED(CUSTOM_CTRL_Rootvin) or DEFINED(CUSTOM_CTRL_GatemaSD)}
// test zda polozky pochazi z SD serveru // test zda polozky pochazi z SD serveru
if (idPZ>0) or (sdServer) then if (idPZ>0) or (sdServer) then
begin begin
sqlConnX:= TFDConnection.Create(nil);
sqlConnX.ConnectionDefName:= sqlPoolName;
lQry:= TFDQuery.Create(nil);
try try
lQry.FetchOptions.Mode:= fmAll; lQry.FetchOptions.Mode:= fmAll;
lQry.Connection:= sqlConnX; lQry.Connection:= sqlConnX;
@ -1101,22 +1104,15 @@ uses
lSQL2:= lSQL2 + ' ORDER BY p.ID'; lSQL2:= lSQL2 + ' ORDER BY p.ID';
lQry.Open(lSQL2); lQry.Open(lSQL2);
if (lQry.RecordCount>0) then if (lQry.RecordCount>0) then
lSQL:= lSQL2.Replace(' 1 AS A ', ' p.ID, p.IDPohZbo_New AS IDPolozkaDokladu, 0 AS IDVyrCis, p.VyrCislo AS VyrCis, p.PopisSarze AS Nazev, p.Mnozstvi, p.MnozstviEvidence AS MnozstviEvid' lSQL:= lSQL2.Replace(' 1 AS A ', ' 1000000000+p.ID AS ID, p.IDPohZbo_New AS IDPolozkaDokladu, 0 AS IDVyrCis, p.VyrCislo AS VyrCis, p.PopisSarze AS Nazev, p.Mnozstvi'
+ ', p.DatPorizeni AS DatVstup, p.DatumExpirace AS DatExpirace, 1 AS ZdrojSD, h.ID AS IDDokladGSD '); + ', p.MnozstviEvidence AS MnozstviEvid, p.DatPorizeni AS DatVstup, p.DatumExpirace AS DatExpirace, 1 AS ZdrojSD, h.ID AS IDDokladGSD ');
finally finally
lQry.Free;
end; end;
sqlConnX.Close;
sqlConnX.Free;
end; end;
{$ENDIF} {$ENDIF}
sqlConnX:= TFDConnection.Create(nil);
sqlConnX.ConnectionDefName:= sqlPoolName;
lQry:= TFDQuery.Create(nil);
try try
lQry.FetchOptions.Mode:= fmAll; lQry.FetchOptions.Mode:= fmAll;
lQry.Connection:= sqlConnX; lQry.Connection:= sqlConnX;

View File

@ -1,4 +1,4 @@
unit uSvc_Vyroba; unit uSvc_Vyroba;
interface interface
{$I 'GlobalDefs.inc'} {$I 'GlobalDefs.inc'}
@ -56,25 +56,33 @@ const
+ '(SELECT TOP(1) pracoviste FROM ' + tblCPrac + ' WHERE ID=main.IDPracoviste) AS KodPracoviste,' + '(SELECT TOP(1) pracoviste FROM ' + tblCPrac + ' WHERE ID=main.IDPracoviste) AS KodPracoviste,'
+ '(SELECT TOP(1) Nazev FROM ' + tblCPrac + ' WHERE ID=main.IDPracoviste) AS NazevPracoviste'; + '(SELECT TOP(1) Nazev FROM ' + tblCPrac + ' WHERE ID=main.IDPracoviste) AS NazevPracoviste';
selNazevOperaceEvidROpR = '(SELECT TOP(1) Nazev FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND Doklad=main.DokladPrPostup AND Alt=main.AltPrPostup' selNazevOperaceEvidROpR = '(SELECT TOP(1) Nazev FROM ' + tblPrPost + ' WITH(NOLOCK) WHERE IDOdchylkyDo IS NULL AND Doklad=main.DokladPrPostup AND Alt=main.AltPrPostup'
+ ' AND IDPrikaz=main.IDPrikaz /*AND Priorita=0*/ ) AS NazevOperace, (SELECT TOP(1) k.Nazev1 FROM ' + tblPrikaz + ' p INNER JOIN ' + ' AND IDPrikaz=main.IDPrikaz /*AND Priorita=0*/ ) AS NazevOperace, (SELECT TOP(1) k.Nazev1 FROM ' + tblPrikaz + ' p JOIN '
+ tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID=main.IDPrikaz) AS Nazev1Dilce, (SELECT TOP(1) k.SkupZbo FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k WITH(NOLOCK) ON (k.ID=p.IDTabKmen) WHERE p.ID=main.IDPrikaz) AS Nazev1Dilce, (SELECT TOP(1) k.SkupZbo FROM ' + tblPrikaz + ' p JOIN '
+ tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID=main.IDPrikaz) AS SkupZboDilce, (SELECT TOP(1) k.RegCis FROM ' + tblPrikaz + ' p INNER JOIN ' + tblKZ + ' k WITH(NOLOCK) ON (k.ID=p.IDTabKmen) WHERE p.ID=main.IDPrikaz) AS SkupZboDilce, (SELECT TOP(1) k.RegCis FROM ' + tblPrikaz + ' p JOIN '
+ tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID=main.IDPrikaz) AS RegCisDilce'; + tblKZ + ' k WITH(NOLOCK) ON (k.ID=p.IDTabKmen) WHERE p.ID=main.IDPrikaz) AS RegCisDilce'
+ ', CONVERT(bit, ISNULL( (SELECT Odvadeci FROM ' + tblPrPost + ' WITH(NOLOCK) WHERE IDOdchylkyDo IS NULL AND Doklad=main.DokladPrPostup'
+ ' AND Alt=main.AltPrPostup AND IDPrikaz=main.IDPrikaz), 0)) AS Odvadeci'
+ ', ISNULL( (SELECT Operace FROM ' + tblPrPost + ' WITH(NOLOCK) WHERE IDOdchylkyDo IS NULL AND Doklad=main.DokladPrPostup'
+ ' AND Alt=main.AltPrPostup AND IDPrikaz=main.IDPrikaz), N'''') AS Operace'
{$IFDEF CUSTOM_CTRL_INCOSystems}
+ ', dbo.ef_Vyroba_EvidROpR_MamNeuzavrenouPredchozi (main.IDPrikaz, main.DokladPrPostup, main.AltPrPostup) AS MamNeuzavrenePredchozi'
{$ENDIF}
;
selOperaceSpec = '(SELECT COUNT(ID) FROM ' + tblKPLHlav + ' WHERE DruhDokladu=5 AND IDOperace=TabPrPostup.ID) AS PocetKP' selOperaceSpec = '(SELECT COUNT(ID) FROM ' + tblKPLHlav + ' WITH(NOLOCK) WHERE DruhDokladu=5 AND IDOperace=TabPrPostup.ID) AS PocetKP'
+ ', TabPrPostup.Kusy_zad AS _info_Kusy_zad, TabPrPostup.Kusy_nepotrebne AS _info_Kusy_nepotrebne, TabPrPostup.Kusy_pozadovane AS _info_Kusy_pozadovane' + ', TabPrPostup.Kusy_zad AS _info_Kusy_zad, TabPrPostup.Kusy_nepotrebne AS _info_Kusy_nepotrebne, TabPrPostup.Kusy_pozadovane AS _info_Kusy_pozadovane'
+ ', TabPrPostup.ProcSplneni AS _info_ProcSplneni, TabPrPostup.Kusy_zive AS _info_Kusy_zive, TabPrPostup.Kusy_odv AS _info_Kusy_odv' + ', TabPrPostup.ProcSplneni AS _info_ProcSplneni, TabPrPostup.Kusy_zive AS _info_Kusy_zive, TabPrPostup.Kusy_odv AS _info_Kusy_odv'
+ ', TabPrPostup.Kusy_zmet AS _info_Kusy_zmet, TabPrPostup.Kusy_zmet_opr_IO AS _info_Kusy_zmet_opr_IO, TabPrPostup.Kusy_zmet_neopr AS _info_Kusy_zmet_neopr' + ', TabPrPostup.Kusy_zmet AS _info_Kusy_zmet, TabPrPostup.Kusy_zmet_opr_IO AS _info_Kusy_zmet_opr_IO, TabPrPostup.Kusy_zmet_neopr AS _info_Kusy_zmet_neopr'
+ ', (SELECT s.Nazev FROM ' + tblCisStroj + ' s WHERE s.ID=main.IDStroje) AS StrojNazev, (SELECT s.Kod FROM ' + tblCisStroj + ' s WHERE s.ID=main.IDStroje) AS StrojKod'; + ', (SELECT s.Nazev FROM ' + tblCisStroj + ' s WITH(NOLOCK) WHERE s.ID=main.IDStroje) AS StrojNazev, (SELECT s.Kod FROM ' + tblCisStroj + ' s WHERE s.ID=main.IDStroje) AS StrojKod';
selPolKoopObjSpec = ''; selPolKoopObjSpec = '';
selVyrCisPrikazSpec = ''; selVyrCisPrikazSpec = '';
selEvidOperace = '(SELECT IDEvidRozpracOper FROM ' + tblRozpracOperR + ' WHERE ID=main.IDEvidRozpracOperR) AS IDEvidRozpracOper' selEvidOperace = '(SELECT IDEvidRozpracOper FROM ' + tblRozpracOperR + ' WITH(NOLOCK) WHERE ID=main.IDEvidRozpracOperR) AS IDEvidRozpracOper'
+ ', (SELECT nazev FROM ' + tblPrPost + ' WHERE IDPrikaz=main.IDPrikaz AND Doklad=main.DokladPrPostup AND Alt=main.AltPrPostup AND IDOdchylkyDo IS NULL) AS NazevOperace'; + ', (SELECT nazev FROM ' + tblPrPost + ' WITH(NOLOCK) WHERE IDPrikaz=main.IDPrikaz AND Doklad=main.DokladPrPostup AND Alt=main.AltPrPostup AND IDOdchylkyDo IS NULL) AS NazevOperace';
selTPVStroj = 'p.pracoviste'; selTPVStroj = 'p.pracoviste';
@ -810,8 +818,8 @@ uses
{ TVyrobniPrikazService } { TVyrobniPrikazService }
function TVyrobniPrikazService.GetByID (const AID: integer; params: TDictionary<string,string>=nil): TVyrobniPrikaz; function TVyrobniPrikazService.GetByID (const AID: integer; params: TDictionary<string,string>=nil): TVyrobniPrikaz;
var lSQL, strTemp: string; var lSQL, strTemp, stav: string;
id, rNum: integer; id, rNum, iStav: integer;
p: TDictionary<string, string>; p: TDictionary<string, string>;
debug, stopDebug, operace, material: boolean; debug, stopDebug, operace, material: boolean;
lOper: TObjectList<TVyrobniOperace>; lOper: TObjectList<TVyrobniOperace>;
@ -847,7 +855,7 @@ uses
lQry.Connection:= sqlConnX; lQry.Connection:= sqlConnX;
lQry.Open(lSQL, [AID]); lQry.Open(lSQL, [AID]);
if (lQry.RecordCount>0) then if (lQry.RecordCount>0) then
extInfoStr:= lQry.AsJSONObjectString; extInfoStr:= lQry.AsJSONObject;
finally finally
lQry.Free; lQry.Free;
end; end;
@ -858,8 +866,13 @@ uses
material:= false; material:= false;
debug:= false; debug:= false;
stopDebug:= false; stopDebug:= false;
stav:= '';
if (params<>nil) then if (params<>nil) then
begin begin
if (params.ContainsKey('stav')) then
if (params.Items['stav']<>'') then
stav:= params.Items['stav'];
if (params.ContainsKey('operace')) then if (params.ContainsKey('operace')) then
if (params.Items['operace']='1') then if (params.Items['operace']='1') then
operace:= true; operace:= true;
@ -879,6 +892,13 @@ uses
lSQL:= 'SELECT ' + GetTabCols('', tblVPr, 'main', false) + IfThen(selPrikazSpec<>'', ',' + selPrikazSpec, '') + ' FROM ' + tblVPr + ' main' lSQL:= 'SELECT ' + GetTabCols('', tblVPr, 'main', false) + IfThen(selPrikazSpec<>'', ',' + selPrikazSpec, '') + ' FROM ' + tblVPr + ' main'
+ ' INNER JOIN ' + tblKZ + ' kz ON (kz.ID=main.IDTabKmen) LEFT JOIN ' + tblZak + ' zak ON (zak.ID=main.IDZakazka)' + ' INNER JOIN ' + tblKZ + ' kz ON (kz.ID=main.IDTabKmen) LEFT JOIN ' + tblZak + ' zak ON (zak.ID=main.IDZakazka)'
+ ' LEFT JOIN ' + tblZakazModif + ' zmod ON (zmod.ID=main.IDZakazModif) WHERE main.ID=:ID'; + ' LEFT JOIN ' + tblZakazModif + ' zmod ON (zmod.ID=main.IDZakazModif) WHERE main.ID=:ID';
if (stav<>'') then
begin
if not(TryStrToInt(stav, iStav)) then
iStav:= 0;
if (iStav>0) then
lSQL:= lSQL + ' AND main.StavPrikazu=' + iStav.ToString;
end;
if (selPrikazSpec='') then if (selPrikazSpec='') then
lSQL:= lSQL.Replace('TabPrikaz.', 'main.'); lSQL:= lSQL.Replace('TabPrikaz.', 'main.');
@ -1596,7 +1616,7 @@ uses
lQry.Connection:= sqlConnX; lQry.Connection:= sqlConnX;
lQry.Open(lSQL, [AID]); lQry.Open(lSQL, [AID]);
if (lQry.RecordCount>0) then if (lQry.RecordCount>0) then
extInfoStr:= lQry.AsJSONObjectString; extInfoStr:= lQry.AsJSONObject;
finally finally
lQry.Free; lQry.Free;
end; end;
@ -2262,7 +2282,7 @@ uses
try try
lQry.Open(lSQL, [AID]); lQry.Open(lSQL, [AID]);
if (lQry.RecordCount>0) then if (lQry.RecordCount>0) then
extInfoStr:= lQry.AsJSONObjectString; extInfoStr:= lQry.AsJSONObject;
finally finally
lQry.Free; lQry.Free;
end; end;

View File

@ -165,7 +165,7 @@ uses
lQry.Connection:= sqlConnX; lQry.Connection:= sqlConnX;
lQry.Open(lSQL, [AID]); lQry.Open(lSQL, [AID]);
if (lQry.RecordCount>0) then if (lQry.RecordCount>0) then
extInfoStr:= lQry.AsJSONObjectString; extInfoStr:= lQry.AsJSONObject;
finally finally
lQry.Free; lQry.Free;
end; end;

View File

@ -18,6 +18,8 @@ uses
{$IF DEFINED(CUSTOM_CTRL_Rootvin) {$IF DEFINED(CUSTOM_CTRL_Rootvin)
OR DEFINED(CUSTOM_CTRL_INCOSystems) OR DEFINED(CUSTOM_CTRL_INCOSystems)
OR DEFINED(CUSTOM_CTRL_EMPolar) OR DEFINED(CUSTOM_CTRL_EMPolar)
OR DEFINED(CUSTOM_CTRL_Koramex)
OR DEFINED(CUSTOM_CTRL_Westra)
OR DEFINED(CUSTOM_CTRL_Gornicky)} OR DEFINED(CUSTOM_CTRL_Gornicky)}
,uCtrlCustom ,uCtrlCustom
{$UNDEF CUSTOM_CTRL_GatemaSD} {$UNDEF CUSTOM_CTRL_GatemaSD}
@ -303,6 +305,10 @@ procedure TWebModule1.WebModuleCreate (Sender: TObject);
{$I '_custom/Gornicky/uWebModCustom.inc'} {$I '_custom/Gornicky/uWebModCustom.inc'}
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
{$I '_custom/Westra/uWebModCustom.inc'}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar} {$IFDEF CUSTOM_CTRL_EMPolar}
{$I '_custom/EMPolar/uWebModCustom.inc'} {$I '_custom/EMPolar/uWebModCustom.inc'}
{$ENDIF} {$ENDIF}

View File

@ -7,7 +7,7 @@ uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.SvcMgr, Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.SvcMgr,
Vcl.Dialogs, Winapi.ShellAPI, Winapi.ActiveX, IdHTTPWebBrokerBridge, Xml.XmlIntf, Xml.xmldom, Xml.XMLDoc, JsonDataObjects, Vcl.Dialogs, Winapi.ShellAPI, Winapi.ActiveX, IdHTTPWebBrokerBridge, Xml.XmlIntf, Xml.xmldom, Xml.XMLDoc, JsonDataObjects,
System.IOUtils, System.SyncObjs, IdBaseComponent, IdComponent, IdServerIOHandler, IdSSL, IdHTTP, IdURI, System.IOUtils, System.SyncObjs, IdBaseComponent, IdComponent, IdServerIOHandler, IdSSL, IdHTTP, IdURI,
IdSSLOpenSSL, IdSSLOpenSSLHeaders, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSLOpenSSL, IdSSLOpenSSLHeaders, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdException, IdStack,
FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param,
FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf,
FireDAC.Stan.Async, FireDAC.DApt, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client, FireDAC.Stan.Async, FireDAC.DApt, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client,
@ -17,6 +17,12 @@ uses
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Gornicky} {$IFDEF CUSTOM_CTRL_Gornicky}
{$I ./_custom/Gornicky/winSvc/usesTop.inc} {$I ./_custom/Gornicky/winSvc/usesTop.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
{$I ./_custom/Westra/winSvc/usesTop.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar}
{$I ./_custom/EMPolar/winSvc/usesTop.inc}
{$ENDIF} {$ENDIF}
flcCipher, Quick.Logger, Quick.Threads, Quick.Logger.Provider.Files; flcCipher, Quick.Logger, Quick.Threads, Quick.Logger.Provider.Files;
@ -67,6 +73,10 @@ const
{$I ./_custom/Gornicky/winSvc/consts.inc} {$I ./_custom/Gornicky/winSvc/consts.inc}
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
{$I ./_custom/Westra/winSvc/consts.inc}
{$ENDIF}
uqLicMutex = '{77567050-19D8-45EB-B32A-B431079E45AD}'; uqLicMutex = '{77567050-19D8-45EB-B32A-B431079E45AD}';
MY_MSG_SERVICE_CONTROL = 1; MY_MSG_SERVICE_CONTROL = 1;
@ -93,8 +103,8 @@ const
type type
TSSLEventHandlers = class TSSLEventHandlers = class
procedure OnGetSSLPassword(var APassword: {$IF CompilerVersion < 27}AnsiString{$ELSE}string{$ENDIF}); procedure OnGetSSLPassword (var APassword: {$IF CompilerVersion < 27}AnsiString{$ELSE}string{$ENDIF});
procedure OnQuerySSLPort(APort: Word; var VUseSSL: boolean); procedure OnQuerySSLPort (APort: Word; var VUseSSL: boolean);
end; end;
@ -102,6 +112,17 @@ const
{$I ./_custom/Gornicky/winSvc/types.inc} {$I ./_custom/Gornicky/winSvc/types.inc}
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
{$I ./_custom/Westra/winSvc/types.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar}
{$I ./_custom/EMPolar/winSvc/types.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Rootvin}
{$I ./_custom/Rootvin/winSvc/types.inc}
{$ENDIF}
THeoZpracujJSONThread = class(TThread) THeoZpracujJSONThread = class(TThread)
private private
@ -188,6 +209,15 @@ const
{$IFDEF CUSTOM_CTRL_Gornicky} {$IFDEF CUSTOM_CTRL_Gornicky}
{$I ./_custom/Gornicky/winSvc/mainPrivs.inc} {$I ./_custom/Gornicky/winSvc/mainPrivs.inc}
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
{$I ./_custom/Westra/winSvc/mainPrivs.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar}
{$I ./_custom/EMPolar/winSvc/mainPrivs.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Rootvin}
{$I ./_custom/Rootvin/winSvc/mainPrivs.inc}
{$ENDIF}
{$IFDEF OMNIThreadLib} {$IFDEF OMNIThreadLib}
tskLicKontrola: IOmniTaskControl; tskLicKontrola: IOmniTaskControl;
@ -279,16 +309,36 @@ var
{$I ./_custom/Gornicky/winSvc/vars.inc} {$I ./_custom/Gornicky/winSvc/vars.inc}
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
{$I ./_custom/Westra/winSvc/vars.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar}
{$I ./_custom/EMPolar/winSvc/vars.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Rootvin}
{$I ./_custom/Rootvin/winSvc/vars.inc}
{$ENDIF}
implementation implementation
uses uses
System.StrUtils, System.Win.Registry, System.Variants, IdContext, System.Generics.Collections, System.DateUtils, System.StrUtils, System.Win.Registry, System.Variants, IdContext, System.Generics.Collections, System.DateUtils,
Winapi.WinSvc,
Web.WebReq, System.Hash, MVCFramework.Commons, MVCFramework.Logger, Web.WebReq, System.Hash, MVCFramework.Commons, MVCFramework.Logger,
{$IFDEF CUSTOM_CTRL_Gornicky} {$IFDEF CUSTOM_CTRL_Gornicky}
{$I ./_custom/Gornicky/winSvc/uses.inc} {$I ./_custom/Gornicky/winSvc/uses.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
{$I ./_custom/Westra/winSvc/uses.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar}
{$I ./_custom/EMPolar/winSvc/uses.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Rootvin}
{$I ./_custom/Rootvin/winSvc/uses.inc}
{$ENDIF} {$ENDIF}
helTabsBIDs, helTabsBIDs,
uWebMod, uDataMod; uWebMod, uDataMod;
@ -344,6 +394,17 @@ uses
{$I ./_custom/Gornicky/winSvc/impl.inc} {$I ./_custom/Gornicky/winSvc/impl.inc}
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
{$I ./_custom/Westra/winSvc/impl.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar}
{$I ./_custom/EMPolar/winSvc/impl.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Rootvin}
{$I ./_custom/Rootvin/winSvc/impl.inc}
{$ENDIF}
@ -452,7 +513,7 @@ uses
if (sqlConnX.Connected) then if (sqlConnX.Connected) then
begin begin
lSQL:= 'SELECT d.ID FROM ' + tblPrijataJsonData + ' d WHERE d.Blokovano=0 AND d.DatZpracovani IS NULL'; lSQL:= 'SELECT d.ID FROM ' + tblPrijataJsonData + ' d WITH(NOLOCK) WHERE d.Blokovano=0 AND d.DatZpracovani IS NULL';
lSQL:= lSQL + ' AND ISNULL(d.PosledniChyba,N'''')=N'''''; lSQL:= lSQL + ' AND ISNULL(d.PosledniChyba,N'''')=N''''';
lSQL:= lSQL + ' AND d.Blokovano=0 '; // AND ISNULL( (SELECT COUNT(ID) FROM dbo._hdc_ph_Log WHERE LogText=N''Zpracovani API json'' AND IntValue=d.ID), 0)<4'; lSQL:= lSQL + ' AND d.Blokovano=0 '; // AND ISNULL( (SELECT COUNT(ID) FROM dbo._hdc_ph_Log WHERE LogText=N''Zpracovani API json'' AND IntValue=d.ID), 0)<4';
lSQL:= lSQL + ' ORDER BY d.ID'; lSQL:= lSQL + ' ORDER BY d.ID';
@ -472,7 +533,7 @@ uses
lQry2:= TFDQuery.Create(nil); lQry2:= TFDQuery.Create(nil);
lQry2.Connection:= sqlConnX; lQry2.Connection:= sqlConnX;
lQry2.Open('SELECT COUNT(ID) AS Pocet FROM dbo._hdc_ph_Log WHERE IntValue=' + idTask.ToString + ' AND LogText LIKE N''%Zpracova%'''); lQry2.Open('SELECT COUNT(ID) AS Pocet FROM dbo._hdc_ph_Log WITH(NOLOCK) WHERE IntValue=' + idTask.ToString + ' AND LogText LIKE N''%Zpracova%''');
lQry2.First; lQry2.First;
cnt:= lQry2.FieldByName('Pocet').AsInteger; cnt:= lQry2.FieldByName('Pocet').AsInteger;
FreeAndNil(lQry2); FreeAndNil(lQry2);
@ -1364,6 +1425,18 @@ Logger.WriteLog(logItem);
{$I ./_custom/Gornicky/winSvc/mainSvcCont.inc} {$I ./_custom/Gornicky/winSvc/mainSvcCont.inc}
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
{$I ./_custom/Westra/winSvc/mainSvcCont.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar}
{$I ./_custom/EMPolar/winSvc/mainSvcCont.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Rootvin}
{$I ./_custom/Rootvin/winSvc/mainSvcCont.inc}
{$ENDIF}
if (zapisDZTasksThr<>nil) then if (zapisDZTasksThr<>nil) then
if (zapisDZTasksThr.Suspended) then if (zapisDZTasksThr.Suspended) then
zapisDZTasksThr.Resume; zapisDZTasksThr.Resume;
@ -1471,6 +1544,18 @@ Logger.WriteLog(logItem);
{$I ./_custom/Gornicky/winSvc/mainSvcExec.inc} {$I ./_custom/Gornicky/winSvc/mainSvcExec.inc}
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
{$I ./_custom/Westra/winSvc/mainSvcExec.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar}
{$I ./_custom/EMPolar/winSvc/mainSvcExec.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Rootvin}
{$I ./_custom/Rootvin/winSvc/mainSvcExec.inc}
{$ENDIF}
end; end;
@ -1506,6 +1591,18 @@ Logger.WriteLog(logItem);
{$I ./_custom/Gornicky/winSvc/mainSvcPause.inc} {$I ./_custom/Gornicky/winSvc/mainSvcPause.inc}
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
{$I ./_custom/Westra/winSvc/mainSvcPause.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar}
{$I ./_custom/EMPolar/winSvc/mainSvcPause.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Rootvin}
{$I ./_custom/Rootvin/winSvc/mainSvcPause.inc}
{$ENDIF}
Paused:= True; Paused:= True;
end; end;
@ -1613,6 +1710,7 @@ Logger.WriteLog(logItem);
else else
begin begin
datMod.LogInfo (Quick.Logger.etCritical, 'Nespravny format konfiguracniho souboru (hdcDZAPIcfg.dat)'); datMod.LogInfo (Quick.Logger.etCritical, 'Nespravny format konfiguracniho souboru (hdcDZAPIcfg.dat)');
datMod.LogInfo (Quick.Logger.etCritical, s);
result:= false; result:= false;
CoUninitialize; CoUninitialize;
Exit; Exit;
@ -1792,7 +1890,7 @@ Writeln('DB: ' + datMod.dbName);
end; end;
s:= 'Konfigurace - HTTP/S API port ' + apiPort.ToString + ' / SSL ' + IfThen(jeSSL, 'ano', 'ne') + ' / SQL server ' + datMod.dbServer + IfThen(datMod.dbPort<>1433, ':' + datMod.dbPort.ToString, ''); s:= 'Konfigurace - HTTP/S API port ' + apiPort.ToString + ' / SSL ' + IfThen(jeSSL, 'ano', 'ne') + ' / SQL server ' + datMod.dbServer + IfThen(datMod.dbPort<>1433, ':' + datMod.dbPort.ToString, '');
s:= s + ' / databaze ' + datMod.dbName + ' / SQL conn Encrypted ' + IfThen(datMod.dbEncConn, 'ano', 'ne'); s:= s + ' / databaze ' + datMod.dbName + ' / user ' + datMod.dbUser + ' / SQL conn Encrypted ' + IfThen(datMod.dbEncConn, 'ano', 'ne');
{$IFDEF CUSTOM_CTRL_Rootvin} {$IFDEF CUSTOM_CTRL_Rootvin}
s:= s + ' / custom ROOTVIN'; s:= s + ' / custom ROOTVIN';
{$ENDIF} {$ENDIF}
@ -1807,6 +1905,12 @@ Writeln('DB: ' + datMod.dbName);
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Gornicky} {$IFDEF CUSTOM_CTRL_Gornicky}
s:= s + ' / custom Gornicky'; s:= s + ' / custom Gornicky';
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
s:= s + ' / custom MBM Westra';
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar}
s:= s + ' / custom EMPolar';
{$ENDIF} {$ENDIF}
datMod.LogInfo (Quick.Logger.etInfo, s); datMod.LogInfo (Quick.Logger.etInfo, s);
except on E:Exception do except on E:Exception do
@ -1880,6 +1984,20 @@ Writeln('DB: ' + datMod.dbName);
result:= false; result:= false;
end; end;
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
if (datMod.dbName<>'Westra') then
begin
errMsg:= ' - Chybna DB: custom Westra x db ' + datMod.dbName;
result:= false;
end;
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar}
if (datMod.dbName<>'EMPolar') then
begin
errMsg:= ' - Chybna DB: custom EMPolar x db ' + datMod.dbName;
result:= false;
end;
{$ENDIF}
{$ELSE} {$ELSE}
if (datMod.dbServer<>'') then if (datMod.dbServer<>'') then
begin begin
@ -1923,6 +2041,20 @@ Writeln('DB: ' + datMod.dbName);
errMsg:= ' - Chybna DB'; errMsg:= ' - Chybna DB';
result:= false; result:= false;
end; end;
{$ENDIF}
{$IFDEF CUSTOM_CTRL_GornickyGrp}
if (sTemp<>'63887282') then
begin
errMsg:= ' - Chybna DB';
result:= false;
end;
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
if (sTemp<>'60066130') then
begin
errMsg:= ' - Chybna DB';
result:= false;
end;
{$ENDIF} {$ENDIF}
end; end;
end; end;
@ -2034,7 +2166,7 @@ Writeln('DB: ' + datMod.dbName);
ms: TMemoryStream; ms: TMemoryStream;
arrDefs: TStringList; arrDefs: TStringList;
i, iTemp: integer; i, iTemp: integer;
canCont, canCont2: boolean; canCont, canCont2, canCont3: boolean;
function LoadStringFromStream (const AStream: TStream): String; function LoadStringFromStream (const AStream: TStream): String;
var lenX: Integer; var lenX: Integer;
begin begin
@ -2061,42 +2193,7 @@ Writeln('DB: ' + datMod.dbName);
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Rootvin} {$IFDEF CUSTOM_CTRL_Rootvin}
// arrDefs.Add('tbl_hdc_ph_Log'); {$I ./_custom/Rootvin/winSvc_zdroje.inc}
arrDefs.Add('ep_hdcdzapi_GetKusovnik');
arrDefs.Add('col_TabDokladyZbozi_EXT');
arrDefs.Add('col_TabStavSkladu_EXT');
arrDefs.Add('col_TabVazbyPrikazu_EXT');
arrDefs.Add('col_TabPrPostup_EXT');
arrDefs.Add('col_TabPohybyZbozi_EXT');
arrDefs.Add('col_TabEvidRozpracOperR_EXT');
arrDefs.Add('col_TabKmenZbozi_EXT');
arrDefs.Add('ef_GetDatumASmenu');
arrDefs.Add('tbl_hdc_PZ_PuvodniVC');
arrDefs.Add('tbl_TabVyrobaTestoVyroba');
arrDefs.Add('tbl_TabVyrobaObjednavky');
arrDefs.Add('tbl_TabVyrobaOperaceStartStop');
arrDefs.Add('tbl_TabVyrobaOperaceStartStopVydej');
arrDefs.Add('ep_Vyroba_InsertEvidRozpracOper');
arrDefs.Add('ep_Vyroba_InsertEvidRozpracOperPol');
arrDefs.Add('ep_Vyroba_DoplnSkladProVydejDleDokladu');
arrDefs.Add('ep_Vyroba_GenOdvodZeMzdy');
arrDefs.Add('ep_Vyroba_GenVydejZeMzdy');
arrDefs.Add('ep_Vyroba_Doklady_Micharna');
arrDefs.Add('ep_P03_HDC1');
arrDefs.Add('ep_P03');
arrDefs.Add('ep_P01_HDC1');
// arrDefs.Add('ep_P01_HDCDZApi1');
arrDefs.Add('ep_P01');
arrDefs.Add('ep_V03_HDC1');
arrDefs.Add('ep_V03');
// arrDefs.Add('');
arrDefs.Add('trg__TabPohybyZbozi_HDC_D');
arrDefs.Add('trg__TabPohybyZbozi_HDC_IU');
arrDefs.Add('trg__hdc_PZ_PuvodniVC_D');
arrDefs.Add('trg__TabVyrCisPrikaz_HDC_D');
arrDefs.Add('trg__TabVyrobaOperaceStartStop_D');
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_INCOSystems} {$IFDEF CUSTOM_CTRL_INCOSystems}
@ -2105,10 +2202,12 @@ Writeln('DB: ' + datMod.dbName);
if (iTemp>-1) then if (iTemp>-1) then
arrDefs.Delete(iTemp); arrDefs.Delete(iTemp);
arrDefs.Add('tbl_hdc_ph_PrijataJsonData_rozsireni');
arrDefs.Add('col_TabPredna_EXT'); arrDefs.Add('col_TabPredna_EXT');
arrDefs.Add('col_TabKmenZbozi_EXT'); arrDefs.Add('col_TabKmenZbozi_EXT');
arrDefs.Add('col_TabPrPostup_EXT'); arrDefs.Add('col_TabPrPostup_EXT');
arrDefs.Add('col_TabEvidRozpracOper_EXT'); arrDefs.Add('col_TabEvidRozpracOper_EXT');
arrDefs.Add('ef_Vyroba_EvidROpR_MamNeuzavrenouPredchozi');
arrDefs.Add('ep_Vyroba_InsertEvidRozpracOper'); arrDefs.Add('ep_Vyroba_InsertEvidRozpracOper');
arrDefs.Add('ep_Vyroba_InsertEvidRozpracOperPol'); arrDefs.Add('ep_Vyroba_InsertEvidRozpracOperPol');
arrDefs.Add('ep_Vyroba_GenOdvodZeMzdy'); arrDefs.Add('ep_Vyroba_GenOdvodZeMzdy');
@ -2116,6 +2215,7 @@ Writeln('DB: ' + datMod.dbName);
arrDefs.Add('ep_HDCDZApi_ZpracujPrijataData'); arrDefs.Add('ep_HDCDZApi_ZpracujPrijataData');
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Gornicky} {$IFDEF CUSTOM_CTRL_Gornicky}
iTemp:= arrDefs.IndexOf('ep_HDCDZApi_ZpracujPrijataData'); iTemp:= arrDefs.IndexOf('ep_HDCDZApi_ZpracujPrijataData');
if (iTemp>-1) then if (iTemp>-1) then
@ -2123,10 +2223,28 @@ Writeln('DB: ' + datMod.dbName);
{$I '_custom/Gornicky/sqlDefs.inc'} {$I '_custom/Gornicky/sqlDefs.inc'}
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
iTemp:= arrDefs.IndexOf('ep_HDCDZApi_ZpracujPrijataData');
if (iTemp>-1) then
arrDefs.Delete(iTemp);
{$I '_custom/Westra/sqlDefs.inc'}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar}
iTemp:= arrDefs.IndexOf('ep_HDCDZApi_ZpracujPrijataData');
if (iTemp>-1) then
arrDefs.Delete(iTemp);
{$I '_custom/EMPolar/sqlDefs.inc'}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Metalcasting} {$IFDEF CUSTOM_CTRL_Metalcasting}
arrDefs.Add('col_TabDokumenty_DokladProAPI'); arrDefs.Add('col_TabDokumenty_DokladProAPI');
{$ENDIF} {$ENDIF}
errMsg:= 'Nacitani SQL definici...'; errMsg:= 'Nacitani SQL definici...';
datMod.LogInfo (Quick.Logger.etInfo, errMsg); datMod.LogInfo (Quick.Logger.etInfo, errMsg);
{$IFDEF DEBUG} {$IFDEF DEBUG}
@ -2156,7 +2274,12 @@ Writeln('DB: ' + datMod.dbName);
objectNazev:= LeftStr(lSQL, lSQL.IndexOf(Chr(13))).Replace('-- ', ''); objectNazev:= LeftStr(lSQL, lSQL.IndexOf(Chr(13))).Replace('-- ', '');
if (srcNazev.StartsWith('ep_', true)) or (srcNazev.StartsWith('ef_', true)) or (srcNazev.StartsWith('trg_')) then if (srcNazev.StartsWith('ep_', true))
or (srcNazev.StartsWith('bp_', true))
or (srcNazev.StartsWith('ef_', true))
or (srcNazev.StartsWith('hpx_', true))
or (srcNazev.StartsWith('epx_', true))
or (srcNazev.StartsWith('trg_', true)) then
begin begin
canCont:= false; canCont:= false;
hash1:= ''; hash1:= '';
@ -2189,10 +2312,16 @@ Writeln('DB: ' + datMod.dbName);
Continue; Continue;
if (srcNazev.StartsWith('ep_')) then if (srcNazev.StartsWith('ep_')) or (srcNazev.StartsWith('bp_')) then
begin begin
datMod.sqlConn.ExecSQL('DROP PROCEDURE IF EXISTS dbo.' + srcNazev); canCont3:= true;
datMod.LogInfo (Quick.Logger.etInfo, 'Pregenerovani procedury: ' + srcNazev); if (srcNazev.StartsWith('bp_')) and not(srcNazev.ToUpper.Contains('HDC')) then
canCont3:= false;
if (canCont3) then
begin
datMod.sqlConn.ExecSQL('DROP PROCEDURE IF EXISTS dbo.' + srcNazev);
datMod.LogInfo (Quick.Logger.etInfo, 'Pregenerovani procedury: ' + srcNazev);
end;
end; end;
if (srcNazev.StartsWith('ef_')) then if (srcNazev.StartsWith('ef_')) then
@ -2564,7 +2693,24 @@ ShellExecute(0, 'open', PChar(url), nil, nil, SW_SHOWNORMAL);
if (datMod.sqlConn.Connected) and (iCanStart) then if (datMod.sqlConn.Connected) and (iCanStart) then
begin begin
try try
fServer.Active:= true; try
fServer.Active:= true;
except
on E: Exception do
begin
OutputDebugString(PChar(E.ClassName + ' - ' + E.Message));
raise;
end;
on E: EIdCouldNotBindSocket do
begin
if E.InnerException is EIdSocketError then
OutputDebugString(PChar(
'WSAError: ' +
IntToStr(EIdSocketError(E.InnerException).LastError)
));
raise;
end;
end;
SQLKontroly; SQLKontroly;
mamTabPrijataData:= datMod.SQLTableExists(tblPrijataJsonData); mamTabPrijataData:= datMod.SQLTableExists(tblPrijataJsonData);
@ -2592,6 +2738,17 @@ ShellExecute(0, 'open', PChar(url), nil, nil, SW_SHOWNORMAL);
{$I ./_custom/Gornicky/winSvc/mainSvcStart.inc} {$I ./_custom/Gornicky/winSvc/mainSvcStart.inc}
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
{$I ./_custom/Westra/winSvc/mainSvcStart.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar}
{$I ./_custom/EMPolar/winSvc/mainSvcStart.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Rootvin}
{$I ./_custom/Rootvin/winSvc/mainSvcStart.inc}
{$ENDIF}
datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby zpracovani prijatych JSON zprav (interval ' + intProcessDZTasksSec.ToString + ' ' + sTemp + ')'); datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby zpracovani prijatych JSON zprav (interval ' + intProcessDZTasksSec.ToString + ' ' + sTemp + ')');
zpracJsonThr:= THeoZpracujJSONThread.Create (ThreadTerminated); zpracJsonThr:= THeoZpracujJSONThread.Create (ThreadTerminated);
@ -2647,6 +2804,8 @@ ShellExecute(0, 'open', PChar(url), nil, nil, SW_SHOWNORMAL);
procedure THDCDZApiService.ThreadTerminated (Sender: TObject); procedure THDCDZApiService.ThreadTerminated (Sender: TObject);
begin begin
ServiceThread.Terminate;
Controller(SERVICE_CONTROL_STOP);
if (Sender is TThread) then if (Sender is TThread) then
(Sender as TThread).ForceQueue(nil, Sender.Free); (Sender as TThread).ForceQueue(nil, Sender.Free);
end; end;
@ -2727,6 +2886,17 @@ ShellExecute(0, 'open', PChar(url), nil, nil, SW_SHOWNORMAL);
{$I ./_custom/Gornicky/winSvc/mainSvcStop.inc} {$I ./_custom/Gornicky/winSvc/mainSvcStop.inc}
{$ENDIF} {$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
{$I ./_custom/Westra/winSvc/mainSvcStop.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar}
{$I ./_custom/EMPolar/winSvc/mainSvcStop.inc}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Rootvin}
{$I ./_custom/Rootvin/winSvc/mainSvcStop.inc}
{$ENDIF}
if Assigned(licThr) then if Assigned(licThr) then
begin begin