diff --git a/_custom/Rootvin/sql/ep_HDCDZApi_ZpracujPrijataData.sql b/_custom/Rootvin/sql/ep_HDCDZApi_ZpracujPrijataData.sql index f09b731..6896f24 100644 --- a/_custom/Rootvin/sql/ep_HDCDZApi_ZpracujPrijataData.sql +++ b/_custom/Rootvin/sql/ep_HDCDZApi_ZpracujPrijataData.sql @@ -83,7 +83,7 @@ WHILE (1=1) -- smaz pomocnou tabulku DELETE FROM #TabJSONData INSERT #TabJSONData (doc) SELECT @jsonString - SELECT TOP(1) @akce = JSON_VALUE(doc, '$.action'), @akceSource = JSON_VALUE(doc, '$.source'), @datumText = JSON_VALUE(doc, '$.actionAt') FROM #TabJSONData + SELECT TOP(1) @akce = JSON_VALUE(doc, '$.akce'), @akceSource = JSON_VALUE(doc, '$.source'), @datumText = JSON_VALUE(doc, '$.data.created') FROM #TabJSONData SET @akce = ISNULL(@akce, N'') SET @akceSource = ISNULL(@akceSource, N'') diff --git a/_custom/Rootvin/sql/ep_Vyroba_DoplnSkladProVydejDleDokladu.sql b/_custom/Rootvin/sql/ep_Vyroba_DoplnSkladProVydejDleDokladu.sql index 2702324..697e2e2 100644 --- a/_custom/Rootvin/sql/ep_Vyroba_DoplnSkladProVydejDleDokladu.sql +++ b/_custom/Rootvin/sql/ep_Vyroba_DoplnSkladProVydejDleDokladu.sql @@ -65,11 +65,9 @@ SET @uziv = 0 IF (@sklMatHlavni IS NULL) SELECT @sklMatHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavní sklad - Materiál' AND CisloStr LIKE N'3%' IF (@sklTechnolog IS NULL) - SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NEÚČ%' 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%' + 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 (@sklTechnologPolo IS NULL) - SELECT @sklTechnologPolo=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NEÚČ%pol%' AND CisloStr LIKE N'2%' + SELECT @sklTechnologPolo=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NEÚČ%' AND (Nazev LIKE N'%polotov%' OR Nazev LIKE N'%HV%') AND CisloStr LIKE N'2%' IF (@sklPekarna IS NULL) SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Výroba - Pekárna' AND CisloStr LIKE N'2%' diff --git a/_custom/Rootvin/sql/ep_Vyroba_GenObjednavkuMatDoVyrobyNew.sql b/_custom/Rootvin/sql/ep_Vyroba_GenObjednavkuMatDoVyrobyNew.sql index f742f92..e58d759 100644 --- a/_custom/Rootvin/sql/ep_Vyroba_GenObjednavkuMatDoVyrobyNew.sql +++ b/_custom/Rootvin/sql/ep_Vyroba_GenObjednavkuMatDoVyrobyNew.sql @@ -1,5 +1,6 @@ -- dbo.ep_Vyroba_GenObjednavkuMatDoVyrobyNew CREATE PROCEDURE dbo.ep_Vyroba_GenObjednavkuMatDoVyrobyNew + @zaPocetDnu SMALLINT=5, @errMsg NVARCHAR(500)=N'' OUT AS @@ -52,6 +53,7 @@ DECLARE @sklMatHlavni NVARCHAR(30), -- 311 @sklPekarna NVARCHAR(30), -- 211 @sklTechnolog NVARCHAR(30), -- 261 + @sklTechnologHV NVARCHAR(30), -- 262 @skladFin NVARCHAR(30), -- 312 @mnoz NUMERIC(19,6), @mnozVydano NUMERIC(19,6), @@ -69,7 +71,9 @@ IF OBJECT_ID(N'tempdb..#VyrobaGenObjednavkuMatDoVyrobyNew', N'U') IS NOT NULL IF (@sklMatHlavni IS NULL) SELECT TOP(1) @sklMatHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavní sklad - Materiál' AND CisloStr LIKE N'3%' IF (@sklTechnolog IS NULL) - SELECT TOP(1) @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NEÚČ%' AND Nazev NOT LIKE N'%polotov%' AND CisloStr LIKE N'2%' + SELECT TOP(1) @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 (@sklTechnologHV IS NULL) + SELECT TOP(1) @sklTechnologHV=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NEÚČ%' AND (Nazev LIKE N'%polotov%' OR Nazev LIKE N'%HV%') AND CisloStr LIKE N'2%' IF (@sklPekarna IS NULL) SELECT TOP(1) @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Výroba - Pekárna' AND CisloStr LIKE N'2%' @@ -98,13 +102,13 @@ DELETE FROM dbo._TabVyroba_Objednavky_Pol WHERE IDPohybOZ NOT IN (SELECT ID FROM 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 - AND DATEDIFF(day, o.DatPorizeni, GETDATE())<6 + AND DATEDIFF(day, o.DatPorizeni, GETDATE())<=@zaPocetDnu ) 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 - AND DATEDIFF(day, o.DatPorizeni, GETDATE())<6 + AND DATEDIFF(day, o.DatPorizeni, GETDATE())<=@zaPocetDnu ) END SET @datumDokladuMat = ISNULL(@datumDokladuMat, GETDATE()) @@ -114,13 +118,13 @@ 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 - AND DATEDIFF(day, o.DatPorizeni, GETDATE())<6 + AND DATEDIFF(day, o.DatPorizeni, GETDATE())<=@zaPocetDnu ) 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 - AND DATEDIFF(day, o.DatPorizeni, GETDATE())<6 + AND DATEDIFF(day, o.DatPorizeni, GETDATE())<=@zaPocetDnu ) END SET @datumDokladuFin = ISNULL(@datumDokladuFin, GETDATE()) @@ -142,7 +146,7 @@ IF (@genDokladMat=1) OR (@genDokladFin=1) AND Vratka=0 AND Blokovano=0 AND IDPhIdent2 IS NOT NULL - AND DATEDIFF(day, DatPorizeni, GETDATE())<6 + AND DATEDIFF(day, DatPorizeni, GETDATE())<=@zaPocetDnu GROUP BY JeMaterial OPEN m WHILE (1=1) @@ -216,7 +220,7 @@ IF (@genDokladMat=1) OR (@genDokladFin=1) AND Blokovano=0 AND IDPhIdent2 IS NOT NULL AND JeMaterial=@material - AND DATEDIFF(day, DatPorizeni, GETDATE())<6 + AND DATEDIFF(day, DatPorizeni, GETDATE())<=@zaPocetDnu ORDER BY DatPorizeni OPEN c WHILE (1=1) @@ -300,6 +304,10 @@ IF (@genDokladMat=1) OR (@genDokladFin=1) END -- @idZboSklad IS NOT NULL END -- @mnoz>0 + UPDATE dbo._TabVyroba_Objednavky SET DatZpracovani=GETDATE() WHERE ID=@idObj + UPDATE dbo._TabVyroba_Objednavky SET PocetPohybuOZ=ISNULL( (SELECT COUNT(ID) FROM dbo.TabPohybyZbozi_EXT WHERE _Vyroba_IDObjednavkaMat=@idObj), 0) + WHERE ID=@idObj + END CLOSE c DEALLOCATE c @@ -339,7 +347,7 @@ WHILE (1=1) 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 + UPDATE dbo._TabVyroba_Objednavky SET Splneno=1, DatZpracovani=GETDATE() WHERE ID=@idObj END CLOSE c diff --git a/_custom/Rootvin/winSvc/impl.inc b/_custom/Rootvin/winSvc/impl.inc index 5ec5649..4c2fca5 100644 --- a/_custom/Rootvin/winSvc/impl.inc +++ b/_custom/Rootvin/winSvc/impl.inc @@ -19,23 +19,24 @@ destructor THeoRTNZapisObjMatThread.Destroy; begin {$IFDEF DEBUG} - Write('Ukoncuji thread RTN Zapis objednavka materialu do ExpPr...'); + Write ('Ukoncuji thread RTN Zapis objednavka materialu do ExpPr...'); {$ENDIF} try - if (FTimer<>0) then - CloseHandle (FTimer); - FTermEvent.Free; + if (FTimer<>0) then + if WaitForSingleObject(FTimer, 0) <> WAIT_FAILED then + CloseHandle (FTimer); + FTermEvent.Free; finally - end; - FRunning := false; - FMainService := nil; - FDataMod := nil; - Terminate; - FLock.Free; - inherited; + FRunning := false; + FMainService := nil; + FDataMod := nil; + Terminate; + FLock.Free; + inherited; {$IFDEF DEBUG} - WriteLn('OK'); + WriteLn ('OK'); {$ENDIF} + end; end; @@ -182,8 +183,8 @@ begin inProg:= true; - 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'; + lSQL:= 'DECLARE @eMsg NVARCHAR(500)=N''''' + CRLF +'IF OBJECT_ID(N''dbo.ep_Vyroba_GenObjednavkuMatDoVyrobyNew'', N''P'') IS NOT NULL' + CRLF + + ' EXEC dbo.ep_Vyroba_GenObjednavkuMatDoVyrobyNew @zaPocetDnu=5, @errMsg=@eMsg OUT' + CRLF + 'SELECT @eMsg AS ErrMsg'; lQry.Open(lSQL); if (lQry.RecordCount>0) then diff --git a/_custom/Rootvin/winSvc_zdroje.inc b/_custom/Rootvin/winSvc_zdroje.inc index b13c85f..cbee9e4 100644 --- a/_custom/Rootvin/winSvc_zdroje.inc +++ b/_custom/Rootvin/winSvc_zdroje.inc @@ -44,6 +44,7 @@ arrDefs.Add('ep_V03'); // arrDefs.Add(''); +// arrDefs.Add('ep_HDCDZApi_ZpracujPrijataData'); // objednavky pres Gatema SDServer // arrDefs.Add('bp_Gatema_SDGenDokZbo1'); diff --git a/_custom/Rootvin/zdroje.RES b/_custom/Rootvin/zdroje.RES index 3c3da89..6370edf 100644 Binary files a/_custom/Rootvin/zdroje.RES and b/_custom/Rootvin/zdroje.RES differ diff --git a/hdcDZApi.dproj b/hdcDZApi.dproj index 7edb552..6d80e50 100644 --- a/hdcDZApi.dproj +++ b/hdcDZApi.dproj @@ -132,8 +132,8 @@ true 3 2026 - 412 - CompanyName=HD Consulting s.r.o. Strakonice;FileDescription=HDC x Pro Holding DataZone komunikator (API);FileVersion=3.0.2026.412;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=2026.04.12 16:03:18 + 507 + CompanyName=HD Consulting s.r.o. Strakonice;FileDescription=HDC x Pro Holding DataZone komunikator (API);FileVersion=3.0.2026.507;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=2026.05.07 09:48:18 api2-5.ico 3 2 diff --git a/uCtrlBase.pas b/uCtrlBase.pas index f0b9f8b..72d0b43 100644 --- a/uCtrlBase.pas +++ b/uCtrlBase.pas @@ -41,9 +41,8 @@ const type TBaseController = class abstract(TMVCController) - private - FConn: TFDConnection; strict private + FConn: TFDConnection; FObecnyService: TObecnyService; FAktivitaService: TAktivitaService; @@ -198,14 +197,6 @@ type end; - - - - [MVCPatch] - - - - [MVCSwagIgnorePath] [MVCPath] TRedirectController = class(TMVCController) diff --git a/uSvc_Base.pas b/uSvc_Base.pas index 6e6a3f9..103f5d8 100644 --- a/uSvc_Base.pas +++ b/uSvc_Base.pas @@ -3,6 +3,12 @@ interface uses + FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, + FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def, + FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.VCLUI.Wait, + Data.DB, FireDAC.Comp.Client, FireDAC.Comp.UI, FireDAC.Phys.MSSQLDef, + FireDAC.Phys.ODBCBase, FireDAC.Phys.MSSQL, FireDAC.DatS, + FireDAC.DApt.Intf, FireDAC.DApt, FireDAC.Comp.DataSet, FireDAC.Stan.Consts, System.Generics.Collections, System.SysUtils, WinApi.ActiveX, @@ -23,6 +29,7 @@ type TServiceBase = class abstract strict protected + FConn: TFDConnection; FDM: TdatMod; public constructor Create (AdmMain: TdatMod); virtual; @@ -65,13 +72,9 @@ uses System.StrUtils, System.Classes, System.RegularExpressions, - FireDAC.Stan.Option, - FireDAC.Comp.Client, - FireDAC.Stan.Param, MVCFramework.FireDAC.Utils, MVCFramework.DataSet.Utils, MVCFramework.Serializer.Commons, - FireDAC.Stan.Consts, System.JSON.Builders, System.JSON.Writers, System.JSON.Types, @@ -117,8 +120,16 @@ uses destructor TServiceBase.Destroy; begin + try + if Assigned(FConn) then + FConn.Close; + finally + FConn.Free; + end; + if (FDM<>nil) then FreeAndNil (FDM); + inherited; end; @@ -128,6 +139,13 @@ uses // var s: string; begin inherited Create; + + if not Assigned(FConn) then + begin + FConn := TFDConnection.Create (nil); + FConn.ConnectionDefName := sqlPoolName; + end; + FDM:= AdmMain; { @@ -157,8 +175,8 @@ uses function TServiceBase.NewUUID32: string; var GUID: TGUID; begin - CoCreateGuid(GUID); - SetLength(Result, 32); + CoCreateGuid (GUID); + SetLength (Result, 32); StrLFmt(PChar(Result), 32,'%.8x%.4x%.4x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x', [Guid.D1, Guid.D2, Guid.D3, Guid.D4[0], Guid.D4[1], Guid.D4[2], Guid.D4[3], Guid.D4[4], Guid.D4[5], Guid.D4[6], Guid.D4[7]]); @@ -167,13 +185,13 @@ uses - procedure TServiceBase.DeepCopyList(SourceList, DestList: TObjectList; CopyFunc: TCopyFunction); + procedure TServiceBase.DeepCopyList (SourceList, DestList: TObjectList; CopyFunc: TCopyFunction); var i: Integer; begin for i := 0 to SourceList.Count - 1 do begin // Pro kaĹľdĂ˝ objekt v seznamu zavoláme funkci, která vrátĂ­ jeho kopii - DestList.Add(CopyFunc(SourceList[i])); + DestList.Add (CopyFunc(SourceList[i])); end; end; @@ -181,7 +199,7 @@ uses function TServiceBase.sanitizeSQLString (s: string): string; begin - result:= s.Replace(' ', '').Replace(';', '').Replace('--', '').Replace(' OR', '').Trim; + result := s.Replace(' ', '').Replace(';', '').Replace('--', '').Replace(' OR', '').Trim; end; @@ -192,7 +210,7 @@ uses lQry: TFDQuery; sqlConnX: TFDConnection; begin - result:= false; + result := false; sqlConnX:= TFDConnection.Create(nil); sqlConnX.ConnectionDefName:= sqlPoolName; diff --git a/uWebMod.pas b/uWebMod.pas index 05de7e3..841d76d 100644 --- a/uWebMod.pas +++ b/uWebMod.pas @@ -288,7 +288,7 @@ procedure TWebModule1.WebModuleCreate (Sender: TObject); // pokud mam povoleno SD Gatema, nesmim mit povoleno Rootvin !!! {$IFDEF CUSTOM_CTRL_Rootvin} - FEngine.AddController(TRTNController); + FEngine.AddController (TRTNController); // {$I '_custom/Rootvin/uWebModCustom.inc'} {$UNDEF CUSTOM_CTRL_GatemaSD} {$ENDIF} diff --git a/uWinService.pas b/uWinService.pas index 4a84696..8096074 100644 --- a/uWinService.pas +++ b/uWinService.pas @@ -9,7 +9,7 @@ uses System.IOUtils, System.SyncObjs, IdBaseComponent, IdComponent, IdServerIOHandler, IdSSL, IdHTTP, IdURI, IdSSLOpenSSL, IdSSLOpenSSLHeaders, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdException, IdStack, 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.Consts, FireDAC.Stan.Async, FireDAC.DApt, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client, Neslib.Xml, Neslib.Xml.IO, Neslib.Xml.Types, {$IFDEF OMNIThreadLib} @@ -1707,10 +1707,12 @@ Logger.WriteLog(logItem); end; finally oPars.Free; + end; + + if (FDManager.State = dmsInactive) then + FDManager.Open; end; - if (FDManager.State = dmsInactive) then - FDManager.Open; end; diff --git a/ukazBlokovanePorty.cmd b/ukazBlokovanePorty.cmd index 0610fc3..5bc3d51 100644 --- a/ukazBlokovanePorty.cmd +++ b/ukazBlokovanePorty.cmd @@ -1,2 +1,4 @@ @echo off netsh interface ipv4 show excludedportrange protocol=tcp +pause >nul +