Prvni verze
This commit is contained in:
3
_custom/EMPolar/customDefs.inc
Normal file
3
_custom/EMPolar/customDefs.inc
Normal file
@ -0,0 +1,3 @@
|
||||
,uHeOObj_Custom in '_custom\EMPolar\uHeOObj_Custom.pas'
|
||||
,uCtrlCustom in '_custom\EMPolar\uCtrlCustom.pas'
|
||||
,uSvcCustom in '_custom\EMPolar\uSvcCustom.pas'
|
||||
246
_custom/EMPolar/uCtrlCustom.pas
Normal file
246
_custom/EMPolar/uCtrlCustom.pas
Normal file
@ -0,0 +1,246 @@
|
||||
unit uCtrlCustom;
|
||||
|
||||
interface
|
||||
{$I 'GlobalDefs.inc'}
|
||||
|
||||
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,
|
||||
uSvc_Obecne,
|
||||
MVCFramework.Swagger.Commons; // kvuli dokumentaci
|
||||
|
||||
const
|
||||
{$I .\..\..\globalConsts.inc}
|
||||
|
||||
|
||||
type
|
||||
|
||||
[MVCPath('/emp/nadoba')]
|
||||
TEMPNadobaController = class(TBaseController)
|
||||
public
|
||||
|
||||
[MVCPath('')]
|
||||
[MVCSwagSummary('EMP - vyr<79>b<EFBFBD>n<EFBFBD> n<>doby', 'Vr<56>t<EFBFBD> seznam n<>dob', 'EMPNadobaGetByCislo')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagParam(plQuery, 'cislo', '<27><>slo n<>doby', ptString, false, '1')]
|
||||
procedure GetByCislo ([MVCFromQueryString('cislo', '')] cislo: string
|
||||
);
|
||||
|
||||
[MVCPath('/meta')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('EMP - vyr<79>b<EFBFBD>n<EFBFBD> n<>doby', 'Meta informace seznamu n<>dob', 'EMPNadobaGetMeta')]
|
||||
procedure GetMeta;
|
||||
|
||||
[MVCPath('/($id)')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('EMP - vyr<79>b<EFBFBD>n<EFBFBD> n<>doby', 'Vr<56>t<EFBFBD> <20>daje n<>doby dle jej<65>ho ID', 'EMPNadobaGetByID')]
|
||||
[MVCSwagParam(plPath, 'id', 'ID n<>doby', ptString, true)]
|
||||
[MVCProduces('application/json')]
|
||||
procedure GetByID (id: string);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
[MVCPath('/emp/atest')]
|
||||
TEMPDokumentAtestController = class(TBaseController)
|
||||
private
|
||||
FDokumService: TDokumentService;
|
||||
public
|
||||
constructor Create; override;
|
||||
destructor Destroy; override;
|
||||
|
||||
[MVCPath('/meta')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('EMP - dokumenty atest<73>', 'Meta informace dokumentu atestu', 'EMPDokumAtestGetMeta')]
|
||||
procedure GetMeta;
|
||||
|
||||
[MVCPath('/($id)')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('EMP - dokumenty atest<73>', 'Vr<56>t<EFBFBD> <20>daje dokumentu atestu dle jeho ID', 'EMPDokumAtestGetByID')]
|
||||
[MVCSwagParam(plPath, 'id', 'ID dokumentu atestu', ptString, true)]
|
||||
[MVCProduces('application/json')]
|
||||
procedure GetByID (id: string);
|
||||
|
||||
end;
|
||||
|
||||
|
||||
implementation
|
||||
uses
|
||||
System.SysUtils,
|
||||
FireDAC.Stan.Option,
|
||||
FireDAC.Comp.Client,
|
||||
FireDAC.Stan.Param,
|
||||
MVCFramework.FireDAC.Utils,
|
||||
MVCFramework.DataSet.Utils,
|
||||
uDataMod;
|
||||
|
||||
|
||||
{ TEMPNadobaController }
|
||||
|
||||
procedure TEMPNadobaController.GetByCislo (cislo: string);
|
||||
begin
|
||||
cislo:= sanitizeSQLString (cislo);
|
||||
|
||||
try
|
||||
if (cislo<>'') then
|
||||
Render(ObjectDict().Add('data', GetEMPNadobaService.GetByCislo (cislo)))
|
||||
else
|
||||
Render(ObjectDict().Add('data', GetEMPNadobaService.GetAll));
|
||||
except
|
||||
// RenderStatusMessage (200);
|
||||
{
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end
|
||||
}
|
||||
on E:Exception do
|
||||
begin
|
||||
Writeln(E.Message);
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
// RenderStatusMessage (200); // raise;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TEMPNadobaController.GetByID (id: string);
|
||||
var iId: integer;
|
||||
begin
|
||||
id:= sanitizeSQLString (id);
|
||||
if not(TryStrToInt(id, iId)) then
|
||||
iId:= 0;
|
||||
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetEMPNadobaService.GetByID (iId))); // viz uSvc_Custom1.pas
|
||||
except
|
||||
// RenderStatusMessage (200);
|
||||
{
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end
|
||||
}
|
||||
on E:Exception do
|
||||
begin
|
||||
Writeln(E.Message);
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
// RenderStatusMessage (200); // raise;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TEMPNadobaController.GetMeta;
|
||||
begin
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetEMPNadobaService.GetMeta));
|
||||
except
|
||||
// RenderStatusMessage (200);
|
||||
{
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end
|
||||
}
|
||||
on E:Exception do
|
||||
begin
|
||||
Writeln(E.Message);
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
// RenderStatusMessage (200); // raise;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{ TEMPDokumentAtestController }
|
||||
|
||||
constructor TEMPDokumentAtestController.Create;
|
||||
begin
|
||||
inherited;
|
||||
FDokumService:= GetDokumentService;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
destructor TEMPDokumentAtestController.Destroy;
|
||||
begin
|
||||
if (FDokumService<>nil) then
|
||||
FreeAndNil (FDokumService);
|
||||
inherited;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TEMPDokumentAtestController.GetMeta;
|
||||
begin
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetDokumentService.GetMeta));
|
||||
except
|
||||
{$IFDEF NORENDER400}
|
||||
RenderStatusMessage (200);
|
||||
{$ELSE}
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 404);
|
||||
end
|
||||
else
|
||||
raise;
|
||||
{$ENDIF}
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TEMPDokumentAtestController.GetByID (id: string);
|
||||
var iId: integer;
|
||||
p: TDictionary<string, string>;
|
||||
begin
|
||||
id:= sanitizeSQLString (id);
|
||||
if not(TryStrToInt(id, iId)) then
|
||||
iId:= 0;
|
||||
|
||||
p:= TDictionary<string, string>.Create;
|
||||
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetDokumentService.GetByID (iId, true))) // viz uSvc_Custom1.pas
|
||||
except
|
||||
{$IFDEF NORENDER400}
|
||||
RenderStatusMessage (200);
|
||||
{$ELSE}
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 404);
|
||||
end
|
||||
else
|
||||
raise;
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
p.Free;
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
112
_custom/EMPolar/uHeOObj_Custom.pas
Normal file
112
_custom/EMPolar/uHeOObj_Custom.pas
Normal file
@ -0,0 +1,112 @@
|
||||
unit uHeOObj_Custom;
|
||||
{$RTTI EXPLICIT METHODS([vcPublic, vcPublished]) FIELDS([vcPrivate, vcProtected, vcPublic, vcPublished]) PROPERTIES([vcPublic, vcPublished])}
|
||||
|
||||
|
||||
interface
|
||||
{$I 'GlobalDefs.inc'}
|
||||
|
||||
uses
|
||||
System.Generics.Collections,
|
||||
MVCFramework.Serializer.Commons,
|
||||
MVCFramework.ActiveRecord,
|
||||
MVCFramework.Nullables,
|
||||
{$IFDEF SWAGGER}
|
||||
MVCFramework.Swagger.Commons,
|
||||
{$ENDIF}
|
||||
helTabsBIDs,
|
||||
uHeoObj_Base;
|
||||
|
||||
|
||||
|
||||
type
|
||||
|
||||
[MVCNameCase(ncLowerCase)]
|
||||
TEMPAtestDokument = class(TDokument)
|
||||
private
|
||||
FDokument: TDokument;
|
||||
public
|
||||
property Dokument: TDokument read FDokument write FDokument;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
[MVCNameCase(ncLowerCase)]
|
||||
TEMPNadoba = class(THeliosObjekty)
|
||||
private
|
||||
FCisloZakazky: string;
|
||||
FVyrobniCislo: string;
|
||||
FNazev: string;
|
||||
FDruhyNazev: string;
|
||||
FTypZakazky: string;
|
||||
FVykres: NullableString;
|
||||
FIDZakazky: integer;
|
||||
FPotvrzTermDod: NullableTDateTime;
|
||||
FCisloOrg: NullableInt32; // TabZakazka.Prijemce
|
||||
FNazevOrg: NullableString;
|
||||
public
|
||||
[MVCColumn('CisloZakazky', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'CisloZakazky', '<27><>slo zak<61>zky', true, false)] // required, nullable, minLength, maxLength, FieldSerializationType
|
||||
property CisloZakazky: string read FCisloZakazky write FCisloZakazky;
|
||||
|
||||
[MVCColumn('VyrobniCislo', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'VyrobniCislo', 'V<>robn<62> <20><>slo', false, false, 0, 100)] // required, nullable, minLength, maxLength, FieldSerializationType
|
||||
property VyrobniCislo: string read FVyrobniCislo write FVyrobniCislo;
|
||||
|
||||
[MVCColumn('IDZakazky', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDZakazky', 'ID zak<61>zky n<>doby', true, false)]
|
||||
property IDZakazky: integer read FIDZakazky write FIDZakazky;
|
||||
|
||||
[MVCColumn('TypZakazky', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'TypZakazky', 'Typ zak<61>zky (100-Objedn<64>vka, 101-n<>doba, 200-nev<65>robn<62>)', false, false)]
|
||||
property TypZakazky: string read FTypZakazky write FTypZakazky;
|
||||
|
||||
[MVCColumn('Vykres', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'Vykres', '<27><>slo v<>kresu', false, true, 0, 35)]
|
||||
property Vykres: NullableString read FVykres write FVykres;
|
||||
|
||||
[MVCColumn('Nazev', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'Nazev', 'N<>zev zak<61>zky', false, false, 0, 100)]
|
||||
property Nazev: string read FNazev write FNazev;
|
||||
|
||||
[MVCColumn('DruhyNazev', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'DruhyNazev', 'Druh<75> n<>zev zak<61>zky', false, false, 0, 100)]
|
||||
property DruhyNazev: string read FDruhyNazev write FDruhyNazev;
|
||||
|
||||
[MVCColumn('PotvrzTermDod', false)]
|
||||
[MVCSwagJsonSchemaField(stDateTime, 'PotvrzTermDod', 'Potvrzen<65> term<72>n dod<6F>vky', false, false, 0, 100)]
|
||||
property PotvrzTermDod: NullableTDateTime read FPotvrzTermDod write FPotvrzTermDod;
|
||||
|
||||
[MVCColumn('CisloOrg', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'CisloOrg', '<27><>slo organizace p<><70>jemce (ze zak<61>zky)', false, true)]
|
||||
property CisloOrg: NullableInt32 read FCisloOrg write FCisloOrg;
|
||||
|
||||
[MVCColumn('NazevOrg', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'NazevOrg', 'N<>zev organizace p<><70>jemce (ze zak<61>zky)', false, true, 0, 100)]
|
||||
property NazevOrg: NullableString read FNazevOrg write FNazevOrg;
|
||||
|
||||
{
|
||||
[MVCColumn('GUIDDokladu', false)]
|
||||
[MVCSwagJsonSchemaField(stGuid, 'GUIDDokladu', 'GUID dokladu', false, true)]
|
||||
property GUIDDokladu: NullableTGUID read FGUIDDokladu write FGUIDDokladu;
|
||||
|
||||
[MapperListOf(TGatemaSDScanData)]
|
||||
property ScanData: TObjectList<TGatemaSDScanData> read FScanData write SetSDScanData;
|
||||
}
|
||||
end;
|
||||
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
System.SysUtils,
|
||||
System.StrUtils,
|
||||
System.RegularExpressions,
|
||||
uSvc_Obecne,
|
||||
uCtrlBase
|
||||
;
|
||||
|
||||
|
||||
|
||||
end.
|
||||
242
_custom/EMPolar/uSvcCustom.pas
Normal file
242
_custom/EMPolar/uSvcCustom.pas
Normal file
@ -0,0 +1,242 @@
|
||||
unit uSvcCustom;
|
||||
|
||||
interface
|
||||
{$I 'GlobalDefs.inc'}
|
||||
|
||||
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_Obecne,
|
||||
uSvc_ObehZbozi,
|
||||
uSvc_Vyroba;
|
||||
|
||||
|
||||
const
|
||||
//{$I C:\_zakaznici\pluginy_obecne\HDCApi2\globalConsts.inc}
|
||||
{$I .\..\..\globalConsts.inc}
|
||||
|
||||
selSloupce = 'SELECT TypZakazky, CisloZakazky, NazevOrg, CisloOrg, VyrobniCislo, NazevPol, idPolozkaObj, PotvrzenyTerminDod, NadrazeneCisloZakazky, Vykres, Stav'
|
||||
+ ', ID AS IDZakazky, Nazev, DruhyNazev, DatPorizeni_Y FROM dbo.hvw_ADE_VIEW_ZAKAZKA ORDER BY CisloZakazky';
|
||||
|
||||
selEMPAtestDok = 'SELECT d.ID, d.Popis, d.JmenoACesta, ISNULL(de_CisloAtestu, N'''') AS CisloAtestu, ISNULL(de._AtestyPoznamka, N'''') AS AtestPoznamka'
|
||||
+ ', d.DatPorizeni FROM ' + tblDokum + ' d LEFT JOIN ' + tblDokumE + ' de ON (de.ID=d.ID)';
|
||||
|
||||
type
|
||||
TEMPNadobaService = class(TServiceBase)
|
||||
public
|
||||
function GetAll: TObjectList<TEMPNadoba>;
|
||||
function GetByID (const AID: integer): TEMPNadoba;
|
||||
function GetByCislo (const ACislo: string): TEMPNadoba;
|
||||
function GetMeta: TJSONObject;
|
||||
function GetByParams (params: TDictionary<string, string>): TObjectList<TEMPNadoba>;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
implementation
|
||||
uses
|
||||
System.StrUtils,
|
||||
FireDAC.Stan.Option,
|
||||
FireDAC.Comp.Client,
|
||||
FireDAC.Stan.Param,
|
||||
MVCFramework.FireDAC.Utils,
|
||||
MVCFramework.DataSet.Utils,
|
||||
MVCFramework.Serializer.Commons,
|
||||
uCtrlBase
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
{ TEMPNadobaService }
|
||||
|
||||
function TEMPNadobaService.GetByParams (params: TDictionary<string, string>): TObjectList<TEMPNadoba>;
|
||||
var lSQL, where, ordBy: string;
|
||||
AID, cnt, rNo: integer;
|
||||
retObj: TEMPNadoba;
|
||||
lsRetObj: TObjectList<TEMPNadoba>;
|
||||
lQry: TFDQuery;
|
||||
sqlConnX: TFDConnection;
|
||||
begin
|
||||
result:= nil;
|
||||
|
||||
ordBy:= 'VyrobniCislo';
|
||||
|
||||
if (params<>nil) then
|
||||
begin
|
||||
if (params.ContainsKey('ordBy')) then
|
||||
if (params.Items['ordBy']<>'') then
|
||||
ordBy:= params.Items['ordBy'];
|
||||
end;
|
||||
|
||||
lSQL:= 'SELECT ' + selSloupce;
|
||||
lSQL:= lSQL + ' ORDER BY ' + ordBy;
|
||||
|
||||
|
||||
sqlConnX:= TFDConnection.Create(nil);
|
||||
sqlConnX.ConnectionDefName:= sqlPoolName;
|
||||
|
||||
lQry:= TFDQuery.Create(nil);
|
||||
try
|
||||
lQry.FetchOptions.Mode:= fmAll;
|
||||
lQry.Connection:= sqlConnX;
|
||||
lQry.Open(lSQL);
|
||||
cnt:= lQry.RecordCount;
|
||||
if (cnt>0) then
|
||||
begin
|
||||
lsRetObj:= TObjectList<TEMPNadoba>.Create;
|
||||
try
|
||||
lQry.First;
|
||||
rNo:= 1;
|
||||
while (rNo<=cnt) do
|
||||
begin
|
||||
lQry.RecNo:= rNo;
|
||||
AID:= lQry.FieldByName('ID').AsInteger;
|
||||
retObj:= self.GetByID (AID);
|
||||
lsRetObj.Add(retObj);
|
||||
if not(lQry.Active) then
|
||||
lQry.Open;
|
||||
Inc (rNo);
|
||||
end;
|
||||
Result:= lsRetObj;
|
||||
except on E:Exception do
|
||||
raise EServiceException.Create('Chyba nacitani nadob: ' + E.Message);
|
||||
end;
|
||||
end;
|
||||
except on E:Exception do
|
||||
raise EServiceException.Create(errMaterialy + E.Message);
|
||||
end;
|
||||
|
||||
lQry.Free;
|
||||
sqlConnX.Close;
|
||||
sqlConnX.Free;
|
||||
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
function TEMPNadobaService.GetAll:TObjectList<TEMPNadoba>;
|
||||
var lSQL: string;
|
||||
begin
|
||||
lSQL:= selSloupce + ' ORDER BY VyrobniCislo';
|
||||
FDM.sqlQry1.Open(lSQL, []);
|
||||
result:= FDM.sqlQry1.AsObjectList<TEMPNadoba>;
|
||||
FDM.sqlQry1.Close;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
function TEMPNadobaService.GetByID (const AID: Integer): TEMPNadoba;
|
||||
var lSQL: string;
|
||||
lQry: TFDQuery;
|
||||
sqlConnX: TFDConnection;
|
||||
begin
|
||||
lSQL:= selSloupce + ' WHERE ID=:ID';
|
||||
|
||||
sqlConnX:= TFDConnection.Create(nil);
|
||||
sqlConnX.ConnectionDefName:= sqlPoolName;
|
||||
|
||||
lQry:= TFDQuery.Create(nil);
|
||||
try
|
||||
lQry.FetchOptions.Mode:= fmAll;
|
||||
lQry.Connection:= sqlConnX;
|
||||
lQry.Open(lSQL, [AID]);
|
||||
lQry.First;
|
||||
try
|
||||
if not(lQry.EOF) then
|
||||
begin
|
||||
result:= FDM.sqlQry1.AsObject<TEMPNadoba>
|
||||
end
|
||||
else
|
||||
raise EServiceException.Create('N<>doba s ID ' + AID.ToString + ' nebyla nalezena.');
|
||||
except on E:Exception do
|
||||
raise EServiceException.Create('N<>doba s ID ' + AID.ToString + ' nebyla nalezena - ' + E.Message);
|
||||
end;
|
||||
finally
|
||||
lQry.Free;
|
||||
end;
|
||||
|
||||
sqlConnX.Close;
|
||||
sqlConnX.Free;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
function TEMPNadobaService.GetByCislo (const ACislo: string): TEMPNadoba;
|
||||
var lSQL: string;
|
||||
lQry: TFDQuery;
|
||||
sqlConnX: TFDConnection;
|
||||
begin
|
||||
lSQL:= selSloupce + ' WHERE VyrobniCislo=:ACislo';
|
||||
|
||||
sqlConnX:= TFDConnection.Create(nil);
|
||||
sqlConnX.ConnectionDefName:= sqlPoolName;
|
||||
|
||||
lQry:= TFDQuery.Create(nil);
|
||||
try
|
||||
lQry.FetchOptions.Mode:= fmAll;
|
||||
lQry.Connection:= sqlConnX;
|
||||
lQry.Open(lSQL, [ACislo]);
|
||||
lQry.First;
|
||||
try
|
||||
if not(lQry.EOF) then
|
||||
begin
|
||||
result:= FDM.sqlQry1.AsObject<TEMPNadoba>
|
||||
end
|
||||
else
|
||||
raise EServiceException.Create('N<>doba s <20><>slem ' + ACislo + ' nebyla nalezena.');
|
||||
except on E:Exception do
|
||||
raise EServiceException.Create('N<>doba s <20><>slem ' + ACislo + ' nebyla nalezena - ' + E.Message);
|
||||
end;
|
||||
finally
|
||||
lQry.Free;
|
||||
end;
|
||||
|
||||
sqlConnX.Close;
|
||||
sqlConnX.Free;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
function TEMPNadobaService.GetMeta: TJSONObject;
|
||||
var lSQL: string;
|
||||
lQry: TFDQuery;
|
||||
sqlConnX: TFDConnection;
|
||||
begin
|
||||
lSQL:= selSloupce + ' WHERE 1=0';
|
||||
|
||||
sqlConnX:= TFDConnection.Create(nil);
|
||||
sqlConnX.ConnectionDefName:= sqlPoolName;
|
||||
|
||||
lQry:= TFDQuery.Create(nil);
|
||||
try
|
||||
lQry.FetchOptions.Mode:= fmAll;
|
||||
lQry.Connection:= sqlConnX;
|
||||
lQry.Open(lSQL);
|
||||
result:= lQry.MetadataAsJSONObject();
|
||||
finally
|
||||
lQry.Free;
|
||||
end;
|
||||
|
||||
sqlConnX.Close;
|
||||
sqlConnX.Free;
|
||||
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
3
_custom/EMPolar/uWebModCustom.inc
Normal file
3
_custom/EMPolar/uWebModCustom.inc
Normal file
@ -0,0 +1,3 @@
|
||||
|
||||
FEngine.AddController (TEMPNadobaController);
|
||||
FEngine.AddController (TEMPDokumentAtestController);
|
||||
BIN
_custom/EMPolar/zdroje.RES
Normal file
BIN
_custom/EMPolar/zdroje.RES
Normal file
Binary file not shown.
1
_custom/EMPolar/zdroje.rc
Normal file
1
_custom/EMPolar/zdroje.rc
Normal file
@ -0,0 +1 @@
|
||||
//ep_HDCDZApi_ZpracujPrijataData RCDATA .\sql\ep_HDCDZApi_ZpracujPrijataData.sql
|
||||
15
_custom/GatemaSD/info.txt
Normal file
15
_custom/GatemaSD/info.txt
Normal file
@ -0,0 +1,15 @@
|
||||
|
||||
|
||||
|
||||
Gatema_SDDoklady
|
||||
***********************
|
||||
TypDokladu - 510 - kontrola prijmu / 540 - prijem
|
||||
IDDokZbo - zdrojovy doklad (napr. pri kontrole prijmu)
|
||||
|
||||
|
||||
|
||||
|
||||
Gatema_SDScanData
|
||||
***********************
|
||||
IDPohZbo - ID zdrojoveho pohybu OZ (napr. pri kontrole prijmu)
|
||||
|
||||
313
_custom/GatemaSD/uCtrlCustomSDG.pas
Normal file
313
_custom/GatemaSD/uCtrlCustomSDG.pas
Normal file
@ -0,0 +1,313 @@
|
||||
unit uCtrlCustomSDG;
|
||||
|
||||
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,
|
||||
uHeoObj_Base,
|
||||
// uHeOObj_Custom,
|
||||
uSvcCustomSDG,
|
||||
uHeOObj_CustomSDG,
|
||||
MVCFramework.Swagger.Commons; // kvuli dokumentaci
|
||||
|
||||
type
|
||||
|
||||
[MVCPath('/sdserver/doklad')]
|
||||
TGatemaSDDokladController = class(TBaseController)
|
||||
strict private
|
||||
FSelfSvc: TGatemaSDDokladService;
|
||||
strict protected
|
||||
function GetGatemaSDDokladService: TGatemaSDDokladService;
|
||||
public
|
||||
destructor Destroy; override;
|
||||
|
||||
[MVCPath('')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('GatemaSD_Doklad', 'Vrací hlavičku dokladů SD Serveru', 'GatemaSDDokladyGetAll')]
|
||||
[MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD', ptString, false)]
|
||||
procedure GetAll([MVCFromQueryString('od', '')] odDatum: string=''
|
||||
);
|
||||
|
||||
[MVCPath('/meta')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('GatemaSD_Doklad', 'Vrací metadata', 'GatemaSDDokladyGetMeta')]
|
||||
procedure GetMeta;
|
||||
|
||||
[MVCPath('/($id)')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('GatemaSD_Doklad', 'Vrací data dokladu SD Serveru', 'GatemaSDDokladyGetByID')]
|
||||
[MVCSwagParam(plPath, 'id', 'ID dokladu', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'typdokl', 'Typ dokladu', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'druhpohybu', 'Druh pohybu zboží', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'sklad', 'Sklad', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'format', 'Formát (1=dokladOZ)', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'do', 'Datum do ve formátu RRRRMMDD', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'seznam', '1=jen seznam se základními údaji', ptString, false)]
|
||||
[MVCSwagResponses(200, 'Success', TGatemaSDDoklad, true)]
|
||||
procedure GetByID (id: string='';
|
||||
[MVCFromQueryString('typdokl', '')] typDokl: string='';
|
||||
[MVCFromQueryString('druhpohybu', '')] druhPohybu: string='';
|
||||
[MVCFromQueryString('sklad', '')] sklad: string='';
|
||||
[MVCFromQueryString('format', '')] formatX: string='';
|
||||
[MVCFromQueryString('od', '')] odDatum: string='';
|
||||
[MVCFromQueryString('do', '')] doDatum: string='';
|
||||
[MVCFromQueryString('seznam', '')] jenSeznam: string='0'
|
||||
);
|
||||
|
||||
end;
|
||||
|
||||
|
||||
|
||||
[MVCPath('/sdserver/scandata')]
|
||||
TGatemaSDScanDataController = class(TBaseController)
|
||||
strict private
|
||||
FSelfSvc: TGatemaSDScanDataService;
|
||||
strict protected
|
||||
function GetGatemaSDScanDataService: TGatemaSDScanDataService;
|
||||
public
|
||||
destructor Destroy; override;
|
||||
|
||||
[MVCPath('/meta')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('GatemaSD_ScanData', 'Vrací metadata', 'GatemaSDScanDataGetMeta')]
|
||||
procedure GetMeta;
|
||||
|
||||
[MVCPath('/($id)')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('GatemaSD_ScanData', 'Vrací naskenovaná data', 'GatemaSDScanDataGetByID')]
|
||||
[MVCSwagParam(plPath, 'id', 'ID scan data', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'iddoklad', 'ID dokladu SD', ptString, false)]
|
||||
[MVCSwagResponses(200, 'Success', TGatemaSDScanData, true)]
|
||||
procedure GetByID(id: string='';
|
||||
[MVCFromQueryString('iddoklad', '')] iddoklad: string=''
|
||||
);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
implementation
|
||||
uses
|
||||
FireDAC.Stan.Option,
|
||||
FireDAC.Comp.Client,
|
||||
FireDAC.Stan.Param,
|
||||
MVCFramework.FireDAC.Utils,
|
||||
MVCFramework.DataSet.Utils,
|
||||
System.StrUtils,
|
||||
System.SysUtils,
|
||||
uDataMod;
|
||||
|
||||
const
|
||||
selSloupce = '';
|
||||
|
||||
|
||||
|
||||
{ TGatemaSDDokladController }
|
||||
|
||||
destructor TGatemaSDDokladController.Destroy;
|
||||
begin
|
||||
FSelfSvc.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
|
||||
function TGatemaSDDokladController.GetGatemaSDDokladService: TGatemaSDDokladService;
|
||||
begin
|
||||
inherited;
|
||||
if not Assigned(FSelfSvc) then
|
||||
FSelfSvc:= TGatemaSDDokladService.Create(datMod);
|
||||
result:= FSelfSvc;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TGatemaSDDokladController.GetAll(odDatum: string='');
|
||||
var params: TDictionary<string, string>;
|
||||
// odDatum: string;
|
||||
begin
|
||||
params:= TDictionary<string, string>.Create;
|
||||
odDatum:= sanitizeSQLString(odDatum);
|
||||
if (odDatum<>'') then
|
||||
params.Add('odDatum', odDatum);
|
||||
|
||||
try
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetByParams(params))); // viz uSvcCustom.pas
|
||||
except
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 404);
|
||||
end;
|
||||
on E:Exception do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 404);
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
params.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TGatemaSDDokladController.GetByID(id: string=''; typDokl: string=''; druhPohybu: string=''; sklad: string=''; formatX: string=''; odDatum: string=''; doDatum: string='';
|
||||
jenSeznam: string='0');
|
||||
var iId: integer;
|
||||
params: TDictionary<string, string>;
|
||||
begin
|
||||
params:= TDictionary<string, string>.Create;
|
||||
|
||||
iId:= 0;
|
||||
id:= sanitizeSQLString(id);
|
||||
if (id<>'') then
|
||||
if not(TryStrToInt(id, iId)) then
|
||||
iId:= 0;
|
||||
if (iId>0) then
|
||||
params.Add('id', iId.ToString);
|
||||
|
||||
typDokl:= sanitizeSQLString(sklad);
|
||||
if (typDokl<>'') then
|
||||
params.Add('typDokladu', typDokl);
|
||||
|
||||
druhPohybu:= sanitizeSQLString(sklad);
|
||||
if (druhPohybu<>'') then
|
||||
params.Add('druhPohybu', druhPohybu);
|
||||
|
||||
formatX:= sanitizeSQLString(formatX); // pro zobrazeni jako DokladOZ
|
||||
if (formatX<>'') then
|
||||
if (formatX='1') then
|
||||
params.Add('format', formatX);
|
||||
|
||||
sklad:= sanitizeSQLString(sklad);
|
||||
if (sklad<>'') then
|
||||
params.Add('sklad', sklad);
|
||||
|
||||
odDatum:= sanitizeSQLString(odDatum);
|
||||
if (odDatum<>'') then
|
||||
params.Add('odDatum', odDatum);
|
||||
|
||||
doDatum:= sanitizeSQLString(doDatum);
|
||||
if (doDatum<>'') then
|
||||
params.Add('doDatum', doDatum);
|
||||
|
||||
jenSeznam:= sanitizeSQLString(jenSeznam);
|
||||
if (jenSeznam='1') then
|
||||
params.Add('seznam', '1');
|
||||
|
||||
try
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetByParams(params))); // viz uSvcCustom.pas
|
||||
except
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 404);
|
||||
end;
|
||||
on E:Exception do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 404);
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
params.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TGatemaSDDokladController.GetMeta;
|
||||
begin
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetMeta));
|
||||
except
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 404);
|
||||
end;
|
||||
on E:Exception do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 404);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{ TGatemaSDScanDataController }
|
||||
|
||||
destructor TGatemaSDScanDataController.Destroy;
|
||||
begin
|
||||
FSelfSvc.Free;
|
||||
end;
|
||||
|
||||
function TGatemaSDScanDataController.GetGatemaSDScanDataService: TGatemaSDScanDataService;
|
||||
begin
|
||||
inherited Create;
|
||||
if not Assigned(FSelfSvc) then
|
||||
FSelfSvc:= TGatemaSDScanDataService.Create(datMod);
|
||||
result:= FSelfSvc;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TGatemaSDScanDataController.GetByID(id: string=''; iddoklad: string='');
|
||||
var iId: integer;
|
||||
params: TDictionary<string, string>;
|
||||
begin
|
||||
params:= TDictionary<string, string>.Create;
|
||||
|
||||
iId:= 0;
|
||||
id:= sanitizeSQLString(id);
|
||||
if (id<>'') then
|
||||
if not(TryStrToInt(id, iId)) then
|
||||
iId:= 0;
|
||||
if (iId>0) then
|
||||
params.Add('id', iId.ToString);
|
||||
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetGatemaSDScanDataService.GetByParams(params))); // viz uSvcCustom.pas
|
||||
except
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 404);
|
||||
end;
|
||||
on E:Exception do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 404);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TGatemaSDScanDataController.GetMeta;
|
||||
begin
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetGatemaSDScanDataService.GetMeta));
|
||||
except
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 404);
|
||||
end;
|
||||
on E:Exception do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 404);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
267
_custom/GatemaSD/uHeOObj_CustomSDG.pas
Normal file
267
_custom/GatemaSD/uHeOObj_CustomSDG.pas
Normal file
@ -0,0 +1,267 @@
|
||||
unit uHeOObj_CustomSDG;
|
||||
{$RTTI EXPLICIT METHODS([vcPublic, vcPublished]) FIELDS([vcPrivate, vcProtected, vcPublic, vcPublished]) PROPERTIES([vcPublic, vcPublished])}
|
||||
|
||||
|
||||
interface
|
||||
{$I 'GlobalDefs.inc'}
|
||||
|
||||
uses
|
||||
System.Generics.Collections,
|
||||
MVCFramework.Serializer.Commons,
|
||||
MVCFramework.ActiveRecord,
|
||||
MVCFramework.Nullables,
|
||||
{$IFDEF SWAGGER}
|
||||
MVCFramework.Swagger.Commons,
|
||||
{$ENDIF}
|
||||
helTabsBIDs,
|
||||
uHeoObj_Base;
|
||||
|
||||
const
|
||||
tblGSDDoklady = '[dbo].[Gatema_SDDoklady]';
|
||||
tblGSDScanData = '[dbo].[Gatema_SDScanData]';
|
||||
|
||||
|
||||
type
|
||||
[MVCNameCase(ncLowerCase)]
|
||||
TGatemaSDScanData = class(THeliosObjekty)
|
||||
private
|
||||
FIDDokladSD: integer;
|
||||
FIDZdrojSD: NullableInt32;
|
||||
FIDPolozky: NullableInt32;
|
||||
FIDPrikaz: NullableInt32;
|
||||
FDokladPrKV: NullableInt32;
|
||||
FDokladPrVPV: NullableInt32;
|
||||
FIDPohZbo: NullableInt32;
|
||||
FIDVyrCS_Obj: NullableInt32;
|
||||
FIDInvItem: NullableInt32;
|
||||
FIDPohZbo_New: NullableInt32;
|
||||
FIDKmenZbozi: NullableInt32;
|
||||
FIDStavSkladu: NullableInt32;
|
||||
FVyrCislo: NullableString;
|
||||
FPopisSarze: NullableString;
|
||||
FMnozstvi: Single;
|
||||
FMnozstviEvidence: Single;
|
||||
FMJ: NullableString;
|
||||
FMJEvidence: NullableString;
|
||||
FBarCode: NullableString;
|
||||
FDatumExpirace: NullableTDateTime;
|
||||
FKodBaleni: NullableString;
|
||||
FDatPorizeni: TDateTime;
|
||||
FGenerovat: NullableBoolean;
|
||||
FJedinecneCislo: NullableString;
|
||||
public
|
||||
{
|
||||
[MVCTableField('ID', [foPrimaryKey, foReadOnly])]
|
||||
[MVCColumn('ID')]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'ID', 'ID výrobní operace', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength
|
||||
property ID: integer read FID write FID;
|
||||
}
|
||||
[MVCColumn('IDDokladSD', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDDokladSD', 'ID dokladu SD', true, false)]
|
||||
property IDDokladSD: integer read FIDDokladSD write FIDDokladSD;
|
||||
|
||||
[MVCColumn('IDZdrojSD', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDZdrojSD', 'ID zdorj SD', false, true)]
|
||||
property IDZdrojSD: NullableInt32 read FIDZdrojSD write FIDZdrojSD;
|
||||
|
||||
[MVCColumn('IDPolozky', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDPolozky', 'ID položky', false, true)]
|
||||
property IDPolozky: NullableInt32 read FIDPolozky write FIDPolozky;
|
||||
|
||||
[MVCColumn('IDPrikaz', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID výrobního příkazu', false, true)]
|
||||
property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz;
|
||||
|
||||
[MVCColumn('VyrCislo', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'VyrCislo', 'Výrobní číslo', true, false, 1, 100)]
|
||||
property VyrCislo: NullableString read FVyrCislo write FVyrCislo;
|
||||
|
||||
[MVCColumn('PopisSarze', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'PopisSarze', 'Popis šarže', true, false, 1, 100)]
|
||||
property PopisSarze: NullableString read FPopisSarze write FPopisSarze;
|
||||
|
||||
[MVCColumn('Mnozstvi')]
|
||||
[MVCSwagJsonSchemaField('Mnozstvi', 'Množství', true, false)]
|
||||
property Mnozstvi: Single read FMnozstvi write FMnozstvi;
|
||||
|
||||
[MVCColumn('MnozstviEvidence')]
|
||||
[MVCSwagJsonSchemaField('MnozstviEvidence', 'Množství v evidenční jednotce', true, false)]
|
||||
property MnozstviEvidence: Single read FMnozstviEvidence write FMnozstviEvidence;
|
||||
|
||||
[MVCColumn('DatumExpirace')]
|
||||
[MVCSwagJsonSchemaField('DatumExpirace', 'Datum expirace', false, true)]
|
||||
property DatumExpirace: NullableTDatetime read FDatumExpirace write FDatumExpirace;
|
||||
|
||||
[MVCColumn('DatPorizeni')]
|
||||
[MVCSwagJsonSchemaField('DatPorizeni', 'Datum pořízení', true, false)]
|
||||
property DatPorizeni: TDatetime read FDatPorizeni write FDatPorizeni;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[MVCNameCase(ncLowerCase)]
|
||||
TGatemaSDZdrojData = class(THeliosObjekty)
|
||||
private
|
||||
FIDDokladSD: integer;
|
||||
FIDDokZbo: NullableInt32;
|
||||
FIDPrikaz: NullableInt32;
|
||||
FGUIDDokladu: NullableTGUID;
|
||||
public
|
||||
[MVCColumn('IDDokladSD', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDDokladSD', 'ID dokladu SD', true, false)]
|
||||
property IDDokladSD: integer read FIDDokladSD write FIDDokladSD;
|
||||
|
||||
[MVCColumn('IDDokZbo', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'FIDDokZbo', 'ID dokladu OZ', false, true)]
|
||||
property IDDokZbo: NullableInt32 read FIDDokZbo write FIDDokZbo;
|
||||
|
||||
[MVCColumn('IDPrikaz', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID výrobního příkazu', false, true)]
|
||||
property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz;
|
||||
|
||||
[MVCColumn('GUIDDokladu', false)]
|
||||
[MVCSwagJsonSchemaField(stGuid, 'GUIDDokladu', 'GUID dokladu', false, true)]
|
||||
property GUIDDokladu: NullableTGUID read FGUIDDokladu write FGUIDDokladu;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
[MVCNameCase(ncLowerCase)]
|
||||
TGatemaSDDoklad = class(THeliosObjekty)
|
||||
private
|
||||
FTypDokladu: integer;
|
||||
FPodtypDokladu: NullableInt32;
|
||||
FRadaDokladu: NullableString;
|
||||
FDruhPohybuZbo: NullableInt32;
|
||||
FSklad: NullableString;
|
||||
FSkladCil: NullableString;
|
||||
FIDPrikaz: NullableInt32;
|
||||
FIDDokZbo: NullableInt32;
|
||||
FIDDokZbo_New: NullableInt32;
|
||||
FGUIDDokZbo: NullableTGUID;
|
||||
FGUIDDokZbo_New: NullableTGUID;
|
||||
FIDInvHead: NullableInt32;
|
||||
FIDOrg: NullableInt32;
|
||||
FCisloOrg: NullableInt32;
|
||||
FDatumPripadu: NullableTDateTime;
|
||||
FDatPorizeni: TDateTime;
|
||||
FDatGenerovani: NullableTDateTime;
|
||||
FScanData: TObjectList<TGatemaSDScanData>;
|
||||
procedure SetSDScanData (const Value: TObjectList<TGatemaSDScanData>);
|
||||
public
|
||||
constructor Create; virtual;
|
||||
destructor Destroy; override;
|
||||
{
|
||||
[MVCTableField('ID', [foPrimaryKey, foReadOnly])]
|
||||
[MVCColumn('ID')]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'ID', 'ID výrobní operace', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength
|
||||
property ID: integer read FID write FID;
|
||||
}
|
||||
[MVCColumn('TypDokladu', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'TypDokladu', 'Typ dokladu', true, false)]
|
||||
property TypDokladu: integer read FTypDokladu write FTypDokladu;
|
||||
|
||||
[MVCColumn('PodtypDokladu', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'PodtypDokladu', 'Podtyp dokladu', false, true)]
|
||||
property PodtypDokladu: NullableInt32 read FPodtypDokladu write FPodtypDokladu;
|
||||
|
||||
[MVCColumn('RadaDokladu', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'RadaDokladu', 'Řada dokladu', false, true)]
|
||||
property RadaDokladu: NullableString read FRadaDokladu write FRadaDokladu;
|
||||
|
||||
[MVCColumn('DruhPohybuZbo', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'DruhPohybuZbo', 'Druh pohybu zboží', false, true)]
|
||||
property DruhPohybuZbo: NullableInt32 read FDruhPohybuZbo write FDruhPohybuZbo;
|
||||
|
||||
[MVCColumn('Sklad', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'Sklad', 'Sklad', false, true)]
|
||||
property Sklad: NullableString read FSklad write FSklad;
|
||||
|
||||
[MVCColumn('SkladCil', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'SkladCil', 'Cílový sklad', false, true)]
|
||||
property SkladCil: NullableString read FSkladCil write FSkladCil;
|
||||
|
||||
[MVCColumn('IDPrikaz', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID výrobního příkazu', false, true)]
|
||||
property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz;
|
||||
|
||||
[MVCColumn('IDDokZbo', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDDokZbo', 'ID dokladu OZ', false, true)]
|
||||
property IDDokZbo: NullableInt32 read FIDDokZbo write FIDDokZbo;
|
||||
|
||||
[MVCColumn('IDDokZbo_New', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDDokZbo_New', 'ID nového dokladu OZ', false, true)]
|
||||
property IDDokZbo_New: NullableInt32 read FIDDokZbo_New write FIDDokZbo_New;
|
||||
|
||||
[MVCColumn('IDInvHead', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDInvHead', 'ID dokladu inventury', false, true)]
|
||||
property IDInvHead: NullableInt32 read FIDInvHead write FIDInvHead;
|
||||
|
||||
[MVCColumn('IDOrg', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDOrg', 'ID organizace', false, true)]
|
||||
property IDOrg: NullableInt32 read FIDOrg write FIDOrg;
|
||||
|
||||
[MVCColumn('CisloOrg', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'CisloOrg', 'Číslo organizace', false, true)]
|
||||
property CisloOrg: NullableInt32 read FCisloOrg write FCisloOrg;
|
||||
|
||||
[MVCColumn('DatumPripadu')]
|
||||
[MVCSwagJsonSchemaField('DatumPripadu', 'Datum případu', false, true)]
|
||||
property DatumPripadu: NullableTDatetime read FDatumPripadu write FDatumPripadu;
|
||||
|
||||
[MVCColumn('DatPorizeni')]
|
||||
[MVCSwagJsonSchemaField('DatPorizeni', 'Datum pořízení', true, false)]
|
||||
property DatPorizeni: TDatetime read FDatPorizeni write FDatPorizeni;
|
||||
|
||||
[MVCColumn('DatGenerovani')]
|
||||
[MVCSwagJsonSchemaField('DatGenerovani', 'Datum generování dokladu OZ', false, true)]
|
||||
property DatGenerovani: NullableTDatetime read FDatGenerovani write FDatGenerovani;
|
||||
|
||||
[MVCListOfAttribute(TGatemaSDScanData)]
|
||||
property ScanData: TObjectList<TGatemaSDScanData> read FScanData write SetSDScanData;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
System.SysUtils,
|
||||
System.StrUtils,
|
||||
System.RegularExpressions;
|
||||
|
||||
|
||||
|
||||
{ TGatemaSDDoklad }
|
||||
|
||||
constructor TGatemaSDDoklad.Create;
|
||||
begin
|
||||
inherited;
|
||||
FScanData:= TObjectList<TGatemaSDScanData>.Create;
|
||||
end;
|
||||
|
||||
|
||||
destructor TGatemaSDDoklad.Destroy;
|
||||
begin
|
||||
// if (FPohybyOZ<>nil) then
|
||||
// FPohybyOZ.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
|
||||
procedure TGatemaSDDoklad.SetSDScanData(const Value: TObjectList<TGatemaSDScanData>);
|
||||
begin
|
||||
if (Value<>FScanData) then
|
||||
begin
|
||||
FScanData.Free;
|
||||
FScanData:= Value;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
404
_custom/GatemaSD/uSvcCustomSDG.pas
Normal file
404
_custom/GatemaSD/uSvcCustomSDG.pas
Normal file
@ -0,0 +1,404 @@
|
||||
unit uSvcCustomSDG;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
System.Generics.Collections,
|
||||
System.DateUtils,
|
||||
System.SysUtils,
|
||||
JsonDataObjects,
|
||||
uSvc_Base,
|
||||
uSvc_ObehZbozi,
|
||||
uCommons, // kvuli EServiceException
|
||||
helTabsBIDs,
|
||||
uHeOObj_Base,
|
||||
uHeOObj_CustomSDG;
|
||||
|
||||
|
||||
const
|
||||
{$I globalConsts.inc}
|
||||
selSpecDoklSD = '(SELECT CisloOrg FROM ' + tblCOrg + ' WHERE ID=main.IDOrg) AS CisloOrg';
|
||||
|
||||
|
||||
type
|
||||
|
||||
TGatemaSDDokladService = class(TServiceBase)
|
||||
public
|
||||
function GetAll: TObjectList<TGatemaSDDoklad>;
|
||||
function GetByParams (params: TDictionary<string, string>): TObjectList<TGatemaSDDoklad>;
|
||||
function GetByID (const AID: integer; const bezPolozek: boolean=false): TGatemaSDDoklad;
|
||||
function GetMeta: TJSONObject;
|
||||
end;
|
||||
|
||||
|
||||
TGatemaSDScanDataService = class(TServiceBase)
|
||||
public
|
||||
function GetByParams (params: TDictionary<string, string>): TObjectList<TGatemaSDScanData>;
|
||||
function GetByID (const AID: integer): TGatemaSDScanData;
|
||||
function GetMeta: TJSONObject;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
TSDGPolozkaOZService = class(TPolozkaOZService)
|
||||
function GetByID (const AID: integer): TPohybOZ;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
System.StrUtils,
|
||||
FireDAC.Stan.Option,
|
||||
FireDAC.Comp.Client,
|
||||
FireDAC.Stan.Param,
|
||||
MVCFramework.FireDAC.Utils,
|
||||
MVCFramework.DataSet.Utils,
|
||||
MVCFramework.Serializer.Commons;
|
||||
|
||||
|
||||
{ TGatemaSDDokladService }
|
||||
|
||||
function TGatemaSDDokladService.GetAll:TObjectList<TGatemaSDDoklad>;
|
||||
var lSQL: string;
|
||||
begin
|
||||
lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDDoklady) + ' FROM ' + tblGSDDoklady + ' ORDER BY ID';
|
||||
FDM.sqlQry1.Open(lSQL, []);
|
||||
result:= FDM.sqlQry1.AsObjectList<TGatemaSDDoklad>;
|
||||
FDM.sqlQry1.Close;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
function TGatemaSDDokladService.GetByParams(params: TDictionary<string, string>): TObjectList<TGatemaSDDoklad>;
|
||||
var lSQL, where, odDatum, doDatum, sklad, formatX, druhPohybuZbo, strTemp: string;
|
||||
lQry: TFDQuery;
|
||||
datOd, datDo: TDateTime;
|
||||
id, iDZ, cnt, rNo: integer;
|
||||
jenSeznam: Boolean;
|
||||
d: TGatemaSDDoklad;
|
||||
dList: TObjectList<TGatemaSDDoklad>;
|
||||
begin
|
||||
jenSeznam:= false;
|
||||
if (params.ContainsKey('seznam')) then
|
||||
jenSeznam:= true;
|
||||
|
||||
formatX:= '';
|
||||
if (params.ContainsKey('format')) then
|
||||
formatX:= params.Items['format'];
|
||||
if (formatX<>'') then
|
||||
begin
|
||||
end
|
||||
else
|
||||
begin
|
||||
if not(jenSeznam) then
|
||||
lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDDoklady, 'main', false) + IfThen(selSpecDoklSD<>'', ',' + selSpecDoklSD, '') + ' FROM ' + tblGSDDoklady + ' main'
|
||||
else
|
||||
lSQL:= 'SELECT main.ID, main.TypDokladu, main.PodtypDokladu, main.RadaDokladu, main.Sklad, main.RadaDokladuCil, main.SkladCil, main.IDDokZbo, main.IDDokZbo_New'
|
||||
+ ', main.IDOrg' + IfThen(selSpecDoklSD<>'', ',' + selSpecDoklSD, '') + ', main.DatPorizeni, main.DatGenerovani, main.DatumPripadu, main.PopisDodavky'
|
||||
+ ' FROM ' + tblGSDDoklady + ' main';
|
||||
end;
|
||||
|
||||
where:= '';
|
||||
|
||||
id:= 0;
|
||||
if (params.ContainsKey('id')) then
|
||||
if (params.Items['id']<>'') then
|
||||
if (params.Items['id']<>'0') then
|
||||
begin
|
||||
id:= params.Items['id'].ToInteger;
|
||||
where:= where + 'main.ID=' + id.ToString;
|
||||
end;
|
||||
|
||||
if (params.ContainsKey('typDokladu')) then
|
||||
if (params.Items['typDokladu']<>'') then
|
||||
where:= where + IfThen(where<>'', ' AND ', '') + 'main.TypDokladu=N' + params.Items['typDokladu'];
|
||||
|
||||
if (params.ContainsKey('druhPohybu')) then
|
||||
if (params.Items['druhPohybu']<>'') then
|
||||
where:= where + IfThen(where<>'', ' AND ', '') + 'main.DruhPohybuZbo=N' + params.Items['druhPohybu'];
|
||||
|
||||
if (params.ContainsKey('sklad')) then
|
||||
if (params.Items['sklad']<>'') then
|
||||
where:= where + IfThen(where<>'', ' AND ', '') + 'main.Sklad=N' + params.Items['sklad'].QuotedString;
|
||||
|
||||
|
||||
if (params.ContainsKey('odDatum')) then
|
||||
if (params.Items['odDatum']<>'') then
|
||||
odDatum:= params.Items['odDatum'];
|
||||
if (odDatum<>'') then
|
||||
begin
|
||||
if (Length(odDatum)=8) then
|
||||
odDatum:= odDatum + '000000';
|
||||
if (Length(odDatum)=10) then
|
||||
odDatum:= odDatum + '00';
|
||||
odDatum:= MidStr(odDatum, 7, 2) + '.' + MidStr(odDatum, 5, 2) + '.' + LeftStr(odDatum, 4) + ' ' + MidStr(odDatum, 9, 2) + ':' + MidStr(odDatum, 11, 2) + ':' + MidStr(odDatum, 13, 2);
|
||||
if not(TryStrToDateTime(odDatum, datOd)) then
|
||||
datOd:= IncDay(Now, -180)
|
||||
end
|
||||
else
|
||||
datOd:= IncDay(Now, -180);
|
||||
|
||||
if (params.ContainsKey('doDatum')) then
|
||||
if (params.Items['doDatum']<>'') then
|
||||
odDatum:= params.Items['doDatum'];
|
||||
if (doDatum<>'') then
|
||||
begin
|
||||
if (Length(doDatum)=8) then
|
||||
doDatum:= doDatum + '235959';
|
||||
if (Length(doDatum)=10) then
|
||||
doDatum:= doDatum + '59';
|
||||
doDatum:= MidStr(doDatum, 7, 2) + '.' + MidStr(doDatum, 5, 2) + '.' + LeftStr(doDatum, 4) + ' ' + MidStr(doDatum, 9, 2) + ':' + MidStr(doDatum, 11, 2) + ':' + MidStr(doDatum, 13, 2);
|
||||
if not(TryStrToDateTime(doDatum, datDo)) then
|
||||
datDo:= Now
|
||||
end
|
||||
else
|
||||
datDo:= Now;
|
||||
|
||||
|
||||
strTemp:= '';
|
||||
if (odDatum<>'') then
|
||||
strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datOd).QuotedString + ',104)'
|
||||
else
|
||||
strTemp:= 'DATEADD(day, -1, GETDATE())';
|
||||
|
||||
where:= where + IfThen(where<>'', ' AND ', '') + 'main.DatPorizeni>=' + strTemp;
|
||||
|
||||
if (doDatum<>'') then
|
||||
begin
|
||||
strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datDo).QuotedString + ',104)';
|
||||
where:= where + IfThen(where<>'', ' AND ', '') + 'main.DatPorizeni<=' + strTemp;
|
||||
end;
|
||||
|
||||
|
||||
if (where<>'') then
|
||||
lSQL:= lSQL + ' WHERE ' + IfThen(id>0, 'main.ID=' + id.ToString, where);
|
||||
lSQL:= lSQL + ' ORDER BY main.ID';
|
||||
|
||||
lSQL:= lSQL.Replace('Gatema_SDDoklady.', 'main.');
|
||||
|
||||
|
||||
|
||||
lQry:= TFDQuery.Create(nil);
|
||||
try
|
||||
lQry.Connection:= FDM.sqlConn;
|
||||
lQry.FetchOptions.AutoClose:= false;
|
||||
lQry.FetchOptions.Mode:= fmAll;
|
||||
lQry.Open(lSQL);
|
||||
|
||||
cnt:= lQry.RecordCount;
|
||||
if (cnt>0) then
|
||||
begin
|
||||
d:= TGatemaSDDoklad.Create;
|
||||
dList:= TObjectList<TGatemaSDDoklad>.Create;
|
||||
try
|
||||
rNo:= 1;
|
||||
lQry.First;
|
||||
while (rNo<=cnt) do // nouzove reseni, lQry se po nacteni GetbyID sama uzavre !!
|
||||
begin
|
||||
lQry.RecNo:= rNo;
|
||||
iDZ:= lQry.FieldByName('ID').AsInteger;
|
||||
d:= self.GetByID(iDZ, jenSeznam);
|
||||
dList.Add(d);
|
||||
if not(lQry.Active) then
|
||||
lQry.Open;
|
||||
Inc(rNo);
|
||||
end;
|
||||
result:= dList;
|
||||
except on E:Exception do
|
||||
raise EServiceException.Create('Chyba načítání dokladu: ' + E.Message);
|
||||
end;
|
||||
end
|
||||
else
|
||||
raise EServiceException.Create('Vybraným podmínkám neodpovídá žádný naskenovaný doklad');
|
||||
finally
|
||||
FreeAndNil(lQry);
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
|
||||
|
||||
function TGatemaSDDokladService.GetByID (const AID: integer; const bezPolozek: boolean=false): TGatemaSDDoklad;
|
||||
var lSQL: string;
|
||||
p: TDictionary<string, string>;
|
||||
ps: TGatemaSDScanDataService;
|
||||
lQry: TFDQuery;
|
||||
sqlConnX: TFDConnection;
|
||||
begin
|
||||
|
||||
ps:= TGatemaSDScanDataService.Create(self.FDM);
|
||||
p:= TDictionary<string, string>.Create;
|
||||
p.Add('iddoklad', AID.ToString);
|
||||
|
||||
sqlConnX:= TFDConnection.Create(nil);
|
||||
sqlConnX.ConnectionDefName:= sqlPoolName;
|
||||
|
||||
lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDDoklady, 'main', false) + IfThen(selSpecDoklSD<>'', ',' + selSpecDoklSD, '') + ' FROM ' + tblGSDDoklady + ' main WHERE main.ID=:ID';
|
||||
lQry:= TFDQuery.Create(nil);
|
||||
try
|
||||
lQry.Connection:= sqlConnX;
|
||||
lQry.Open (lSQL, [AID]);
|
||||
lQry.First;
|
||||
if not(lQry.EOF) then
|
||||
begin
|
||||
result:= lQry.AsObject<TGatemaSDDoklad>;
|
||||
if not(bezPolozek) then
|
||||
result.ScanData:= ps.GetByParams(p);
|
||||
end
|
||||
else
|
||||
raise EServiceException.Create('Naskenovaný doklad s ID ' + AID.ToString + ' nebyl nalezen.');
|
||||
finally
|
||||
p.Free;
|
||||
ps.Free;
|
||||
FreeAndNil(lQry);
|
||||
end;
|
||||
|
||||
sqlConnX.Close;
|
||||
sqlConnX.Free;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
function TGatemaSDDokladService.GetMeta: TJSONObject;
|
||||
var lSQL: string;
|
||||
lQry: TFDQuery;
|
||||
begin
|
||||
lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDDoklady, 'main', false) + IfThen(selSpecDoklSD<>'', ',' + selSpecDoklSD, '') + ' FROM ' + tblGSDDoklady + ' main WHERE 1=0';
|
||||
lQry:= TFDQuery.Create(nil);
|
||||
// lQry.FetchOptions.AutoClose:= false;
|
||||
// lQry.FetchOptions.Mode:= fmAll;
|
||||
try
|
||||
lQry.Connection:= FDM.sqlConn;
|
||||
lQry.Open(lSQL);
|
||||
Result:= lQry.MetadataAsJSONObject();
|
||||
finally
|
||||
lQry.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{ TGatemaSDScanDataService }
|
||||
|
||||
function TGatemaSDScanDataService.GetByID (const AID: integer): TGatemaSDScanData;
|
||||
var lSQL: string;
|
||||
lQry: TFDQuery;
|
||||
begin
|
||||
lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDScanData) + ' FROM ' + tblGSDScanData + ' WHERE ID=:ID';
|
||||
|
||||
lQry:= TFDQuery.Create(nil);
|
||||
try
|
||||
lQry.Connection:= FDM.sqlConn;
|
||||
lQry.Open(lSQL, [AID]);
|
||||
lQry.First;
|
||||
if not(lQry.EOF) then
|
||||
result:= lQry.AsObject<TGatemaSDScanData>
|
||||
else
|
||||
raise EServiceException.Create('Naskenovaná položka s ID ' + AID.ToString + ' nebyla nalezena.');
|
||||
finally
|
||||
lQry.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
function TGatemaSDScanDataService.GetMeta: TJSONObject;
|
||||
var lSQL: string;
|
||||
lQry: TFDQuery;
|
||||
begin
|
||||
lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDScanData) + ' FROM ' + tblGSDScanData + ' WHERE 1=0';
|
||||
lQry:= TFDQuery.Create(nil);
|
||||
lQry.Connection:= FDM.sqlConn;
|
||||
lQry.FetchOptions.AutoClose:= false;
|
||||
lQry.FetchOptions.Mode:= fmAll;
|
||||
try
|
||||
lQry.Open(lSQL);
|
||||
Result:= lQry.MetadataAsJSONObject();
|
||||
finally
|
||||
lQry.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
function TGatemaSDScanDataService.GetByParams(params: TDictionary<string, string>): TObjectList<TGatemaSDScanData>;
|
||||
var lSQL, where: string;
|
||||
id,idPZ, cnt, rNo: integer;
|
||||
lQry: TFDQuery;
|
||||
pList: TObjectList<TGatemaSDScanData>;
|
||||
p: TGatemaSDScanData;
|
||||
begin
|
||||
p:= TGatemaSDScanData.Create;
|
||||
pList:= TObjectList<TGatemaSDScanData>.Create;
|
||||
|
||||
lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDScanData, '', false) + ' FROM ' + tblGSDScanData;
|
||||
|
||||
where:= '';
|
||||
|
||||
id:= 0;
|
||||
if (params.ContainsKey('id')) then
|
||||
if (params.Items['id']<>'') then
|
||||
if (params.Items['id']<>'0') then
|
||||
begin
|
||||
id:= params.Items['id'].ToInteger;
|
||||
where:= where + 'ID=' + id.ToString;
|
||||
end;
|
||||
|
||||
if (params.ContainsKey('iddoklad')) then
|
||||
if (params.Items['iddoklad']<>'') then
|
||||
where:= where + IfThen(where<>'', ' AND ', '') + 'IDDokladSD=' + params.Items['iddoklad'];
|
||||
|
||||
if (where<>'') then
|
||||
lSQL:= lSQL + ' WHERE ' + IfThen(id>0, 'ID=' + id.ToString, where);
|
||||
lSQL:= lSQL + ' ORDER BY IDDokladSD, ID';
|
||||
|
||||
// lSQL:= lSQL.Replace('TabPohybyZbozi.', 'main.');
|
||||
|
||||
|
||||
lQry:= TFDQuery.Create(nil);
|
||||
lQry.Connection:= FDM.sqlConn;
|
||||
lQry.FetchOptions.AutoClose:= false;
|
||||
lQry.FetchOptions.Mode:= fmAll;
|
||||
lQry.Open(lSQL);
|
||||
try
|
||||
cnt:= lQry.RecordCount;
|
||||
pList:= TObjectList<TGatemaSDScanData>.Create;
|
||||
try
|
||||
lQry.First;
|
||||
rNo:= 1;
|
||||
while (rNo<=cnt) do
|
||||
begin
|
||||
lQry.RecNo:= rNo;
|
||||
idPZ:= lQry.FieldByName('ID').AsInteger;
|
||||
p:= self.GetByID (idPZ);
|
||||
pList.Add(p);
|
||||
if not(lQry.Active) then
|
||||
lQry.Open;
|
||||
Inc(rNo);
|
||||
end;
|
||||
result:= pList;
|
||||
except on E:Exception do
|
||||
raise EServiceException.Create('Chyba načítání naskenované položky/položek dokladu: ' + E.Message);
|
||||
end;
|
||||
finally
|
||||
FreeAndNil(lQry);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{ TSDGPolozkaOZService }
|
||||
|
||||
function TSDGPolozkaOZService.GetByID (const AID: Integer): TPohybOZ;
|
||||
begin
|
||||
result:= nil;
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
2
_custom/GatemaSD/uWebModCustomSDG.inc
Normal file
2
_custom/GatemaSD/uWebModCustomSDG.inc
Normal file
@ -0,0 +1,2 @@
|
||||
FEngine.AddController (TGatemaSDDokladController);
|
||||
FEngine.AddController (TGatemaSDScanDataController);
|
||||
3
_custom/Gornicky/customDefs.inc
Normal file
3
_custom/Gornicky/customDefs.inc
Normal file
@ -0,0 +1,3 @@
|
||||
,uHeOObj_Custom in '_custom\Gornicky\uHeOObj_Custom.pas'
|
||||
,uCtrlCustom in '_custom\Gornicky\uCtrlCustom.pas'
|
||||
,uSvcCustom in '_custom\Gornicky\uSvcCustom.pas'
|
||||
BIN
_custom/Gornicky/openssl-1.0.2u-i386-win32.zip
Normal file
BIN
_custom/Gornicky/openssl-1.0.2u-i386-win32.zip
Normal file
Binary file not shown.
BIN
_custom/Gornicky/openssl-1.0.2u-x64_86-win64.zip
Normal file
BIN
_custom/Gornicky/openssl-1.0.2u-x64_86-win64.zip
Normal file
Binary file not shown.
164
_custom/Gornicky/sql/ep_HDCDZApi_ZpracujPrijataData.sql
Normal file
164
_custom/Gornicky/sql/ep_HDCDZApi_ZpracujPrijataData.sql
Normal file
@ -0,0 +1,164 @@
|
||||
-- dbo.ep_HDCDZApi_ZpracujPrijataData
|
||||
CREATE PROCEDURE dbo.ep_HDCDZApi_ZpracujPrijataData
|
||||
@idJson INT=NULL
|
||||
AS
|
||||
|
||||
SET NOCOUNT ON
|
||||
-- ! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !
|
||||
|
||||
|
||||
|
||||
|
||||
IF OBJECT_ID(N'dbo.Tabx_HDC_API_DigitalizaceSoubory', N'U') IS NULL
|
||||
BEGIN
|
||||
IF OBJECT_ID(N'dbo._hdc_ph_Log', N'U') IS NOT NULL
|
||||
INSERT dbo._hdc_ph_Log (LogText) SELECT N'Neexistuje tabulka Tabx_HDC_API_DigitalizaceSoubory'
|
||||
RETURN
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
DECLARE
|
||||
@errMsg NVARCHAR(500)=N'',
|
||||
@errProc NVARCHAR(100),
|
||||
@tranPred INT,
|
||||
@iChyba INT,
|
||||
@bChyba BIT,
|
||||
@iTemp INT,
|
||||
@debugXML XML,
|
||||
@idUziv INT
|
||||
|
||||
DECLARE
|
||||
@jsonString NVARCHAR(max),
|
||||
@docsJson NVARCHAR(max),
|
||||
@soubor NVARCHAR(100),
|
||||
@dataZoneId INT,
|
||||
@docNum INT,
|
||||
@ordNum NVARCHAR(15), -- zakazka,
|
||||
@docUrl NVARCHAR(255),
|
||||
@jeNacteno BIT,
|
||||
@jeKpl BIT,
|
||||
@pgTotal INT,
|
||||
@pgRead INT,
|
||||
@cisZam INT
|
||||
|
||||
DROP TABLE IF EXISTS #TabJSONData
|
||||
CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max) )
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IF (@idJson IS NOT NULL)
|
||||
DECLARE j CURSOR LOCAL FOR
|
||||
SELECT ID, JsonData FROM dbo._hdc_ph_PrijataJsonData WHERE ID=@idJson
|
||||
ELSE
|
||||
DECLARE j CURSOR LOCAL FOR
|
||||
SELECT ID, JsonData
|
||||
FROM dbo._hdc_ph_PrijataJsonData
|
||||
WHERE Blokovano=0
|
||||
AND DatZpracovani IS NULL
|
||||
AND ISNULL(JSONData,N'')<>N''
|
||||
ORDER BY DatPorizeni
|
||||
OPEN j
|
||||
WHILE (1=1)
|
||||
BEGIN
|
||||
FETCH NEXT FROM j INTO @idJson, @jsonString
|
||||
IF (@@FETCH_STATUS<>0) BREAK
|
||||
|
||||
IF (ISJSON(@jsonString)=0)
|
||||
BEGIN
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'Neplatna JSON data' WHERE ID=@idJson
|
||||
END
|
||||
|
||||
|
||||
BEGIN TRY
|
||||
SET @tranPred=@@TRANCOUNT
|
||||
IF (@tranPred=0)
|
||||
BEGIN TRAN
|
||||
|
||||
-- smaz pomocnou tabulku
|
||||
DELETE FROM #TabJSONData
|
||||
INSERT #TabJSONData (doc) SELECT @jsonString
|
||||
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=NULL, CisloZam=@cisZam, Blokovano=1 WHERE ID=@idJson
|
||||
|
||||
|
||||
SELECT @dataZoneId=JSON_VALUE(d.doc, '$.datazoneId'),
|
||||
@soubor=JSON_VALUE(d.doc, '$.file'),
|
||||
@docsJson = d2.documents
|
||||
FROM #TabJSONData d
|
||||
CROSS APPLY OPENJSON(d.doc, N'$')
|
||||
WITH ([documents] NVARCHAR(max) AS JSON) AS d2
|
||||
|
||||
SET @soubor=ISNULL(@soubor, N'')
|
||||
IF (@soubor<>N'')
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET UzivIdent=@soubor WHERE ID=@idJson
|
||||
|
||||
IF (@docsJson<>N'')
|
||||
BEGIN
|
||||
IF (ISJSON(@docsJson)=1)
|
||||
BEGIN
|
||||
DELETE FROM #TabJSONData
|
||||
INSERT #TabJSONData (doc) SELECT @docsJson
|
||||
|
||||
DECLARE docs CURSOR LOCAL FOR
|
||||
SELECT detail.idDoklad, detail.cisloZakazky, ISNULL(detail.jeNacteno,0), ISNULL(detail.jeKpl,0),
|
||||
ISNULL(detail.pgCount,0), ISNULL(detail.pgRead,0), detail.docUrl
|
||||
FROM #TabJSONData d
|
||||
CROSS APPLY OPENJSON (d.doc, N'$')
|
||||
WITH (idDoklad INT '$.documentNumber',
|
||||
cisloZakazky NVARCHAR(15) '$.orderNumber',
|
||||
jeNacteno BIT '$.isNotFound',
|
||||
jeKpl BIT '$.isComplete',
|
||||
pgCount INT '$.pageCountTotal',
|
||||
pgRead INT '$.pageCountRead',
|
||||
docURL NVARCHAR(255) '$.documentUrl') AS detail
|
||||
OPEN docs
|
||||
WHILE (1=1)
|
||||
BEGIN
|
||||
FETCH NEXT FROM docs INTO @docNum, @ordNum, @jeNacteno, @jeKpl, @pgTotal, @pgRead, @docUrl
|
||||
IF (@@FETCH_STATUS<>0) BREAK
|
||||
|
||||
IF (CHARINDEX(N'NotFound', @docUrl)=0)
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.Tabx_HDC_API_DigitalizaceSoubory WHERE DocNumber=@docNum AND OrderNumber=@ordNum AND DocURL=@docUrl)
|
||||
INSERT dbo.Tabx_HDC_API_DigitalizaceSoubory (IDJsonData, IDDZDoc, DocNumber, OrderNumber, IsComplete, IsNotFound, PagesTotal, PagesRead, DocURL, IDDokladOZ)
|
||||
SELECT @idJson, @dataZoneId, @docNum, @ordNum, @jeKpl, @jeNacteno, @pgTotal, @pgRead, @docUrl, @docNum
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.Tabx_HDC_API_DigitalizaceSoubory WHERE DocURL=@docUrl)
|
||||
INSERT dbo.Tabx_HDC_API_DigitalizaceSoubory (IDJsonData, IDDZDoc, IsComplete, IsNotFound, PagesTotal, PagesRead, DocURL, IDDokladOZ)
|
||||
SELECT @idJson, @dataZoneId, @jeKpl, @jeNacteno, @pgTotal, @pgRead, @docUrl, @docNum
|
||||
END
|
||||
END
|
||||
CLOSE docs
|
||||
DEALLOCATE docs
|
||||
|
||||
END -- ISJSON(@jsonString)=1
|
||||
END -- @docsJson<>''
|
||||
|
||||
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET Blokovano=0, DatZpracovani=GETDATE() WHERE ID=@idJson
|
||||
IF (@tranPred=0) AND (@@TRANCOUNT>0)
|
||||
COMMIT TRAN
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @errMsg = ERROR_MESSAGE()
|
||||
SET @errProc = ERROR_PROCEDURE()
|
||||
IF (@tranPred=0) AND (@@TRANCOUNT>0)
|
||||
ROLLBACK TRAN
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson
|
||||
END CATCH
|
||||
|
||||
END
|
||||
CLOSE j
|
||||
DEALLOCATE j
|
||||
|
||||
|
||||
|
||||
-- cisteni
|
||||
DROP TABLE IF EXISTS #TabJSONData
|
||||
45
_custom/Gornicky/sql/tbl_HDC_API_DigitalizaceSoubory.sql
Normal file
45
_custom/Gornicky/sql/tbl_HDC_API_DigitalizaceSoubory.sql
Normal file
@ -0,0 +1,45 @@
|
||||
IF OBJECT_ID(N'dbo.Tabx_HDC_API_DigitalizaceSoubory', N'U') IS NULL
|
||||
CREATE TABLE dbo.Tabx_HDC_API_DigitalizaceSoubory (
|
||||
ID INT IDENTITY(1, 1) NOT NULL,
|
||||
IDJsonData INT,
|
||||
IDDZDoc INT, -- datazone id davky
|
||||
DocNumber INT,
|
||||
OrderNumber NVARCHAR(15),
|
||||
IsComplete BIT NOT NULL DEFAULT 0,
|
||||
IsNotFound BIT NOT NULL DEFAULT 0,
|
||||
PagesTotal INT,
|
||||
PagesRead INT,
|
||||
DocURL NVARCHAR(255),
|
||||
IDDokument INT,
|
||||
Blokovano BIT NOT NULL DEFAULT 0,
|
||||
Zpracovat BIT NOT NULL DEFAULT 1,
|
||||
DatZpracovani DATETIME,
|
||||
Zpracovano AS CONVERT(bit, CASE WHEN DatZpracovani IS NULL THEN 0 ELSE 1 END),
|
||||
DatPorizeni DATETIME NOT NULL DEFAULT GETDATE(),
|
||||
CONSTRAINT PK_Tabx_HDC_API_DigitalizaceSoubory_ID PRIMARY KEY CLUSTERED (ID DESC)
|
||||
WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
|
||||
)
|
||||
|
||||
|
||||
DROP INDEX IF EXISTS EI_Tabx_HDC_API_DigitalizaceSoubory_IDDZDoc ON dbo.Tabx_HDC_API_DigitalizaceSoubory
|
||||
CREATE NONCLUSTERED INDEX EI_Tabx_HDC_API_DigitalizaceSoubory_IDDZDoc ON dbo.Tabx_HDC_API_DigitalizaceSoubory (IDDZDoc)
|
||||
WITH ( PAD_INDEX = OFF, DROP_EXISTING = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
|
||||
|
||||
|
||||
DROP INDEX IF EXISTS EI_Tabx_HDC_API_DigitalizaceSoubory_DocNumber ON dbo.Tabx_HDC_API_DigitalizaceSoubory
|
||||
CREATE NONCLUSTERED INDEX EI_Tabx_HDC_API_DigitalizaceSoubory_DocNumber ON dbo.Tabx_HDC_API_DigitalizaceSoubory (DocNumber)
|
||||
WITH ( PAD_INDEX = OFF, DROP_EXISTING = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
|
||||
|
||||
|
||||
DROP INDEX IF EXISTS EI_Tabx_HDC_API_DigitalizaceSoubory_IDDokument ON dbo.Tabx_HDC_API_DigitalizaceSoubory
|
||||
CREATE NONCLUSTERED INDEX EI_Tabx_HDC_API_DigitalizaceSoubory_IDDokument ON dbo.Tabx_HDC_API_DigitalizaceSoubory (IDDokument)
|
||||
WITH ( PAD_INDEX = OFF, DROP_EXISTING = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
|
||||
|
||||
|
||||
|
||||
/* 16.1.2025 */
|
||||
IF COL_LENGTH(N'dbo.Tabx_HDC_API_DigitalizaceSoubory', N'Blokovano') IS NULL ALTER TABLE dbo.Tabx_HDC_API_DigitalizaceSoubory ADD Blokovano BIT NOT NULL DEFAULT 0
|
||||
IF COL_LENGTH(N'dbo.Tabx_HDC_API_DigitalizaceSoubory', N'Zpracovat') IS NULL ALTER TABLE dbo.Tabx_HDC_API_DigitalizaceSoubory ADD Zpracovat BIT NOT NULL DEFAULT 1
|
||||
|
||||
/* 236.1.2025 */
|
||||
IF COL_LENGTH(N'dbo.Tabx_HDC_API_DigitalizaceSoubory', N'IDJsonData') IS NULL ALTER TABLE dbo.Tabx_HDC_API_DigitalizaceSoubory ADD IDJsonData INT
|
||||
@ -0,0 +1,25 @@
|
||||
-- dbo.ET_Tabx_HDC_API_DigitalizaceSoubory_D
|
||||
CREATE TRIGGER dbo.ET_Tabx_HDC_API_DigitalizaceSoubory_D ON dbo.Tabx_HDC_API_DigitalizaceSoubory
|
||||
WITH EXECUTE AS CALLER
|
||||
FOR DELETE
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
-- ! trigger neupravujte, bude stejne pregenerovan pri startu Win sluzby HDCDZApi
|
||||
|
||||
DECLARE
|
||||
@id INT
|
||||
|
||||
|
||||
|
||||
-- cisteni seedu
|
||||
IF EXISTS(SELECT 1 FROM dbo.Tabx_HDC_API_DigitalizaceSoubory)
|
||||
BEGIN
|
||||
SELECT @id=MAX(ID) FROM dbo.Tabx_HDC_API_DigitalizaceSoubory
|
||||
DBCC CHECKIDENT(Tabx_HDC_API_DigitalizaceSoubory, RESEED, @id)
|
||||
END
|
||||
ELSE
|
||||
TRUNCATE TABLE dbo.Tabx_HDC_API_DigitalizaceSoubory
|
||||
|
||||
END
|
||||
@ -0,0 +1,49 @@
|
||||
-- dbo.ET_Tabx_HDC_API_DigitalizaceSoubory_IU
|
||||
CREATE TRIGGER dbo.ET_Tabx_HDC_API_DigitalizaceSoubory_IU ON dbo.Tabx_HDC_API_DigitalizaceSoubory
|
||||
WITH EXECUTE AS CALLER
|
||||
FOR INSERT, UPDATE
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
-- ! trigger neupravujte, bude stejne pregenerovan pri startu Win sluzby HDCDZApi
|
||||
|
||||
DECLARE
|
||||
@id INT,
|
||||
@idDokl INT,
|
||||
@idDokum INT,
|
||||
@idZak INT
|
||||
|
||||
|
||||
|
||||
DECLARE c CURSOR LOCAL FAST_FORWARD FOR
|
||||
SELECT i.ID, i.DocNumber, i.IDDokument
|
||||
FROM inserted i
|
||||
OPEN c
|
||||
WHILE (1=1)
|
||||
BEGIN
|
||||
FETCH NEXT FROM c INTO @id, @idDokl, @idDokum
|
||||
IF (@@FETCH_STATUS<>0) BREAK
|
||||
|
||||
IF (@idDokum IS NOT NULL)
|
||||
BEGIN
|
||||
IF (@idDokl IS NOT NULL)
|
||||
IF EXISTS(SELECT 1 FROM dbo.TabDokladyZbozi WHERE ID=@idDokl)
|
||||
BEGIN
|
||||
IF NOT EXISTS(SELECT 1 FROM dbo.TabDokumVazba WHERE IdentVazby=9 AND IdTab=@idDokl AND IdDok=@idDokum)
|
||||
INSERT dbo.TabDokumVazba (IdentVazby, IdTab, IdDok) SELECT 9, @idDokl, @idDokum
|
||||
|
||||
SET @idZak = (SELECT z.ID FROM dbo.TabDokladyZbozi d INNER JOIN dbo.TabZakazka z ON (z.CisloZakazky=d.CisloZakazky) WHERE d.ID=@idDokl)
|
||||
IF (@idZak IS NOT NULL)
|
||||
IF NOT EXISTS(SELECT 1 FROM dbo.TabDokumVazba WHERE IdentVazby=2 AND IdTab=@idZak AND IdDok=@idDokum)
|
||||
INSERT dbo.TabDokumVazba (IdentVazby, IdTab, IdDok) SELECT 2, @idZak, @idDokum
|
||||
END -- doklad existuje
|
||||
END -- dokument neni null
|
||||
|
||||
|
||||
END
|
||||
CLOSE c
|
||||
DEALLOCATE c
|
||||
|
||||
|
||||
END
|
||||
1
_custom/Gornicky/sqlDefs.inc
Normal file
1
_custom/Gornicky/sqlDefs.inc
Normal file
@ -0,0 +1 @@
|
||||
arrDefs.Add('ep_HDCDZApi_ZpracujPrijataData');
|
||||
106
_custom/Gornicky/uCtrlCustom.pas
Normal file
106
_custom/Gornicky/uCtrlCustom.pas
Normal 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('/gor')]
|
||||
TGornickyController = class(TBaseController)
|
||||
{
|
||||
strict private
|
||||
FSelfSvc: TGornickyService;
|
||||
strict protected
|
||||
function GetGornickyService: TGornickyService;
|
||||
}
|
||||
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('Gornicky', '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('Gornicky', '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 = '';
|
||||
|
||||
|
||||
|
||||
|
||||
{ TGornickyController }
|
||||
destructor TGornickyController.Destroy;
|
||||
begin
|
||||
// FSelfSvc.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TGornickyController.ZapisJSONDoHeliosu (CTX: TWebContext);
|
||||
var respData, jsonData: string;
|
||||
// o: System.JSON.TJSONObject;
|
||||
begin
|
||||
respData:= '';
|
||||
try
|
||||
jsonData:= CTX.Request.Body.Trim;
|
||||
if (jsonData<>'') then
|
||||
GetGornickyService.ZapisJsonDoHeliosu (jsonData, respData);
|
||||
ResponseStatus(HTTP_STATUS.OK, 'OK');
|
||||
Render(respData);
|
||||
except
|
||||
RenderStatusMessage (200);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TGornickyController.NactiDataZURL (sURL: string = '');
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
7
_custom/Gornicky/uHeOObj_Custom.pas
Normal file
7
_custom/Gornicky/uHeOObj_Custom.pas
Normal file
@ -0,0 +1,7 @@
|
||||
unit uHeOObj_Custom;
|
||||
{$RTTI EXPLICIT METHODS([vcPublic, vcPublished]) FIELDS([vcPrivate, vcProtected, vcPublic, vcPublished]) PROPERTIES([vcPublic, vcPublished])}
|
||||
|
||||
|
||||
interface
|
||||
implementation
|
||||
end.
|
||||
140
_custom/Gornicky/uSvcCustom.pas
Normal file
140
_custom/Gornicky/uSvcCustom.pas
Normal 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
|
||||
TGornickyService = 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;
|
||||
|
||||
|
||||
|
||||
|
||||
{ TGornickyService }
|
||||
|
||||
procedure TGornickyService.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.
|
||||
2
_custom/Gornicky/uWebModCustom.inc
Normal file
2
_custom/Gornicky/uWebModCustom.inc
Normal file
@ -0,0 +1,2 @@
|
||||
FEngine.AddController (TGornickyController);
|
||||
|
||||
1
_custom/Gornicky/winSvc/consts.inc
Normal file
1
_custom/Gornicky/winSvc/consts.inc
Normal file
@ -0,0 +1 @@
|
||||
tblAPIDigiSoubory = '[dbo].[Tabx_HDC_API_DigitalizaceSoubory]';
|
||||
2
_custom/Gornicky/winSvc/gornicky.xml
Normal file
2
_custom/Gornicky/winSvc/gornicky.xml
Normal file
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<config downPDFintMins="10"/>
|
||||
462
_custom/Gornicky/winSvc/impl.inc
Normal file
462
_custom/Gornicky/winSvc/impl.inc
Normal file
@ -0,0 +1,462 @@
|
||||
constructor THeoGorDownPDFThread.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 THeoGorDownPDFThread.Destroy;
|
||||
begin
|
||||
{$IFDEF DEBUG}
|
||||
Write('Ukoncuji thread GOR Download PDF...');
|
||||
{$ENDIF}
|
||||
if (FTimer<>0) then
|
||||
CloseHandle (FTimer);
|
||||
FTermEvent.Free;
|
||||
FRunning:= false;
|
||||
FMainService:= nil;
|
||||
Terminate;
|
||||
FLock.Free;
|
||||
inherited;
|
||||
{$IFDEF DEBUG}
|
||||
WriteLn('OK');
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure THeoGorDownPDFThread.TerminatedSet;
|
||||
begin
|
||||
FTermEvent.SetEvent;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure THeoGorDownPDFThread.ThreadTerminate;
|
||||
begin
|
||||
Terminate;
|
||||
WaitFor;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure THeoGorDownPDFThread.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, sqlConnX2: TFDConnection;
|
||||
sqlTrans: IFDPhysTransaction;
|
||||
f, lOpenSSLLib: string;
|
||||
|
||||
lBusy: LongInt;
|
||||
liDueTime: LARGE_INTEGER;
|
||||
|
||||
mamSSLLibs: boolean;
|
||||
sslLibPath: 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;
|
||||
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 !!!!
|
||||
try
|
||||
try
|
||||
CoInitialize(nil);
|
||||
cfgFile:= ExtractFilePath(ParamStr(0)) + 'gornicky.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('downPDFintMins');
|
||||
if (attrIdx>-1) then
|
||||
if (attribs.Get(attrIdx).NodeValue<>null) then
|
||||
lLoopMax:= attribs.Get(i).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, 'Download PDF interval: ' + lLoopMax.ToString + ' min.');
|
||||
lLoopMax:= lLoopMax * 60; // minuty na vteriny
|
||||
|
||||
|
||||
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:= false;
|
||||
if not(datMod.SQLTableExists(tblAPIDigiSoubory)) then
|
||||
Exit;
|
||||
|
||||
FRunning:= true;
|
||||
|
||||
|
||||
if (1=1) then // pro rychle vypnuti
|
||||
begin
|
||||
FTimer:= CreateWaitableTimer (nil, true, 'GorDownloadPDFWaitableTimer');
|
||||
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
|
||||
idDigiFile:= 0;
|
||||
firstRun:= false;
|
||||
|
||||
if (logRunCnt<4) then
|
||||
datMod.LogInfo (Quick.Logger.etInfo, 'Spoustim download ' + logRunCnt.toString + '...');
|
||||
if (logRunCnt=4) then
|
||||
datMod.LogInfo (Quick.Logger.etInfo, 'Spoustim download - bezi ale dal neloguju');
|
||||
|
||||
try
|
||||
if not(inProg) then // nebezi uz ?
|
||||
begin
|
||||
|
||||
if (1=1) then // pro rychle vypnuti
|
||||
begin
|
||||
|
||||
sqlConnX:= TFDConnection.Create (nil);
|
||||
sqlConnX.Params.SetStrings (datMod.sqlConnParams);
|
||||
// sqlConnX.TxOptions.AutoCommit:= false;
|
||||
sqlConnX.Open;
|
||||
|
||||
if (sqlConnX.Connected) then
|
||||
begin
|
||||
// sqlConnX.ExecSQL('DECLARE @i INT; SET @i=ISNULL( (SELECT MAX(ID) FROM dbo.TabDokumenty), 1); DBCC CHECKIDENT (TabDokumenty, RESEED, @i)');
|
||||
|
||||
lSQL:= '/* hdcDZApiSvc */ SELECT ID FROM ' + tblAPIDigiSoubory + ' WHERE Blokovano=0 AND Zpracovano=0 AND Zpracovat=1'
|
||||
+ ' AND IDDokument IS NULL ORDER BY ID';
|
||||
|
||||
lQry:= TFDQuery.Create(nil);
|
||||
try
|
||||
lQry.Connection:= sqlConnX;
|
||||
lQry.Open(lSQL);
|
||||
if (lQry.RecordCount>0) then
|
||||
begin
|
||||
lQry.First;
|
||||
if (sqlConnX.TxOptions.AutoCommit=false) then
|
||||
sqlConnX.StartTransaction;
|
||||
inProg:= true;
|
||||
|
||||
while not(lQry.EOF) do
|
||||
begin
|
||||
|
||||
idDigiFile:= lQry.FieldByName('ID').asInteger;
|
||||
if (idDigiFile>0) then
|
||||
begin
|
||||
try
|
||||
// musim to zablokovat uz tady aby se to nezpracovavalo znovu
|
||||
sqlConnX.ExecSQL('UPDATE ' + tblAPIDigiSoubory + ' SET Blokovano=1 WHERE ID=' + idDigiFile.ToString);
|
||||
// datMod.LogInfo (Quick.Logger.etInfo, 'Zablokovani downloadPDF id ' + idDigiFile.ToString + ' pred zpracovanim');
|
||||
|
||||
|
||||
url:= datMod.SQLGetString ('SELECT DocURL FROM ' + tblAPIDigiSoubory + ' WHERE ID=' + idDigiFile.ToString);
|
||||
if (url<>'') then
|
||||
begin
|
||||
|
||||
datMod.LogInfo (Quick.Logger.etInfo, 'Mam URL downloadPDF id ' + idDigiFile.ToString);
|
||||
outData:= '';
|
||||
|
||||
if (sslLibPath='') then
|
||||
begin
|
||||
try
|
||||
http1:= System.Net.HTTPClient.THTTPClient.Create;
|
||||
datMod.LogInfo (Quick.Logger.etInfo, 'HTTP klient NET vytvoren downloadPDF id ' + idDigiFile.ToString);
|
||||
aResp:= TMemoryStream.Create;
|
||||
// datMod.LogInfo (Quick.Logger.etInfo, 'Vytvoren memStream downloadPDF id ' + idDigiFile.ToString);
|
||||
try
|
||||
if (Assigned(http1)) then
|
||||
begin
|
||||
http1.AllowCookies:= false;
|
||||
http1.UserAgent:= 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0';
|
||||
http1.Accept:= 'application/pdf';
|
||||
|
||||
datMod.LogInfo (Quick.Logger.etInfo, 'Nacitam data PDF pro downloadPDF id ' + idDigiFile.ToString);
|
||||
iResp:= http1.Get (url);
|
||||
aResp:= (iResp.ContentStream as TMemoryStream);
|
||||
outData:= MemStreamToHex (aResp);
|
||||
datMod.LogInfo (Quick.Logger.etInfo, 'Mam data PDF pro downloadPDF id ' + idDigiFile.ToString);
|
||||
|
||||
end;
|
||||
except on E:Exception do
|
||||
begin
|
||||
datMod.LogInfo (Quick.Logger.etError, 'Chyba zpracovani downloadPDF id ' + idDigiFile.ToString + ' : ' + E.Message);
|
||||
{$IFDEF DEBUG}
|
||||
WriteLn ('Chyba zpracovani downloadPDF id ' + idDigiFile.ToString + ' >> ' + E.Message);
|
||||
{$ENDIF}
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
http1.Free;
|
||||
http1:= nil;
|
||||
aResp.Free;
|
||||
aResp:= nil;
|
||||
// datMod.LogInfo (Quick.Logger.etInfo, 'Uvolnen Net HTTP klient a memStream pro downloadPDF id ' + idDigiFile.ToString);
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
IdOpenSSLSetLibPath (sslLibPath);
|
||||
http2:= TIdHttp.Create (nil);
|
||||
sslHndlr:= TIdSSLIOHandlerSocketOpenSSL.Create (http2);
|
||||
try
|
||||
sslHndlr.SSLOptions.Method:= sslvTLSv1_2;
|
||||
sslHndlr.SSLOptions.SSLVersions := [sslvTLSv1_2, sslvTLSv1_1];
|
||||
http2.IOHandler:= sslHndlr;
|
||||
|
||||
http2.Request.Accept:= 'application/pdf';
|
||||
http2.Request.BasicAuthentication := False;
|
||||
http2.HTTPOptions:= http2.HTTPOptions + [hoKeepOrigProtocol] + [hoNoProtocolErrorException];
|
||||
http2.Request.ContentType:= 'application/pdf; charset=utf-8';
|
||||
respHttp2:= TMemoryStream.Create;
|
||||
http2.Get (url, respHttp2);
|
||||
outData:= MemStreamToHex (respHttp2 as TMemoryStream);
|
||||
finally
|
||||
FreeAndNil (sslHndlr); // must be freed before IdHttp
|
||||
FreeAndNil (http2);
|
||||
FreeAndNil (respHttp2);
|
||||
// datMod.LogInfo (Quick.Logger.etInfo, 'Uvolnen Indy HTTP klient a memStream pro downloadPDF id ' + idDigiFile.ToString);
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
|
||||
if (outData<>'') then
|
||||
begin
|
||||
// datMod.LogInfo (Quick.Logger.etInfo, 'Mam data 2 PDF pro downloadPDF id ' + idDigiFile.ToString);
|
||||
fName:= '';
|
||||
i:= LastDelimiter ('/\', url);
|
||||
if (i>0) then
|
||||
fName:= Copy (url, i+1, Length(url)-i);
|
||||
|
||||
if (LeftStr(outData,4)='5025') then
|
||||
begin
|
||||
outData2:= '';
|
||||
for i:=1 to Length(outData) div 2 do
|
||||
outData2:= outData2 + MidStr(outData, (4*i)-1, 2) + MidStr(outData, (4*i)-3, 2);
|
||||
if (outData2<>'') then
|
||||
outData:= outData2;
|
||||
end;
|
||||
|
||||
lSQL:= 'DECLARE @i INT' + CRLF + 'SET @i=(SELECT ID FROM dbo.TabDokumenty WHERE JmenoACesta=N' + url.QuotedString
|
||||
+ ')' + CRLF + 'IF (@i IS NULL)' + CRLF
|
||||
+ ' BEGIN' + CRLF + ' INSERT dbo.TabDokumenty (Popis, JmenoACesta, Poznamka, Autor, Dokument) SELECT N' + fName.QuotedString
|
||||
+ ', N' + fName.QuotedString + ', N' + url.QuotedString + ', N''apiImport'''
|
||||
+ ', CONVERT(varbinary(max), 0x' + outData +', 1)' + CRLF + ' SET @i=SCOPE_IDENTITY()' + CRLF + ' END'
|
||||
+ CRLF + 'SELECT @i';
|
||||
sTemp:= datMod.SQLGetString (lSQL);
|
||||
if (sTemp<>'') then
|
||||
begin
|
||||
// datMod.LogInfo (Quick.Logger.etInfo, 'Update zapisu downloadPDF id ' + idDigiFile.ToString);
|
||||
lSQL:= 'UPDATE ' + tblAPIDigiSoubory + ' SET IDDokument=' + sTemp + ', DatZpracovani=GETDATE(), Blokovano=0 WHERE ID=' + idDigiFile.ToString;
|
||||
sqlConnX.ExecSQL(lSQL);
|
||||
// datMod.LogInfo (Quick.Logger.etInfo, 'Update zapisu/odblokovani downloadPDF id ' + idDigiFile.ToString + ' - OK');
|
||||
end;
|
||||
end;
|
||||
|
||||
end; // url<>''
|
||||
|
||||
|
||||
if (url='') then
|
||||
begin
|
||||
lSQL:= 'UPDATE ' + tblAPIDigiSoubory + ' SET DatZpracovani=GETDATE(), Blokovano=0 WHERE ID=' + idDigiFile.ToString;
|
||||
sqlConnX.ExecSQL (lSQL);
|
||||
end;
|
||||
|
||||
|
||||
except on E:Exception do
|
||||
begin
|
||||
errMsg:= E.Message; // datMod.sqlQry11.FieldByName('ErrMsg').AsString;
|
||||
{$IFDEF DEBUG}
|
||||
WriteLn ('Chyba 2 zpracovani downloadPDF id ' + idDigiFile.ToString + ' >> ' + errMsg);
|
||||
{$ENDIF}
|
||||
// sqlConnX.ExecSQL('UPDATE ' + tblAPIDigiSoubory + ' SET PosledniChyba=N' + errMsg.QuotedString + ' WHERE ID=' + idDigiFile.ToString);
|
||||
datMod.LogInfo(Quick.Logger.etError, 'Chyba 2 zpracovani downloadPDF ID ' + idDigiFile.ToString + ' : ' + errMsg);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
lQry.Next;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
lQry.Close;
|
||||
FreeAndNil (lQry);
|
||||
// lQry.Free;
|
||||
// lQry:= nil;
|
||||
end;
|
||||
// datMod.LogInfo (Quick.Logger.etInfo, 'Uzavrena SQL query - downloadPDF id ' + idDigiFile.ToString);
|
||||
|
||||
if (sqlConnX.InTransaction) then
|
||||
sqlConnX.Commit;
|
||||
inProg:= false;
|
||||
end; // sql Connected
|
||||
sqlConnX.Close;
|
||||
FreeAndNil (sqlConnX);
|
||||
// sqlConnX.Free;
|
||||
// sqlConnX:= nil;
|
||||
|
||||
// datMod.LogInfo (Quick.Logger.etInfo, 'Zrusena SQL connection - downloadPDF id ' + idDigiFile.ToString);
|
||||
end;
|
||||
end;
|
||||
|
||||
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;
|
||||
if (mamTabPrijataData) then
|
||||
datMod.LogInfo (Quick.Logger.etError, 'Chyba zpracovani API souboru ID ' + idDigiFile.ToString + ' : ' + errMsg);
|
||||
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;
|
||||
|
||||
|
||||
1
_custom/Gornicky/winSvc/mainPrivs.inc
Normal file
1
_custom/Gornicky/winSvc/mainPrivs.inc
Normal file
@ -0,0 +1 @@
|
||||
gorDownPDFThr: THeoGorDownPDFThread;
|
||||
3
_custom/Gornicky/winSvc/mainSvcCont.inc
Normal file
3
_custom/Gornicky/winSvc/mainSvcCont.inc
Normal file
@ -0,0 +1,3 @@
|
||||
if (gorDownPDFThr<>nil) then
|
||||
if (gorDownPDFThr.Suspended) then
|
||||
gorDownPDFThr.Resume;
|
||||
6
_custom/Gornicky/winSvc/mainSvcExec.inc
Normal file
6
_custom/Gornicky/winSvc/mainSvcExec.inc
Normal file
@ -0,0 +1,6 @@
|
||||
if (gorDownPDFThr<>nil) then
|
||||
if not(gorDownPDFThr.Started) then
|
||||
begin
|
||||
gorDownPDFThr.Start;
|
||||
datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby GOR downloadPDF - pocet ' + datMod.SQLGetString('SELECT COUNT(ID) FROM ' + tblAPIDigiSoubory + ' WHERE Zpracovat=1 AND DatZpracovani IS NULL'));
|
||||
end;
|
||||
3
_custom/Gornicky/winSvc/mainSvcPause.inc
Normal file
3
_custom/Gornicky/winSvc/mainSvcPause.inc
Normal file
@ -0,0 +1,3 @@
|
||||
if (gorDownPDFThr<>nil) then
|
||||
if not(gorDownPDFThr.Suspended) then
|
||||
gorDownPDFThr.Suspend;
|
||||
12
_custom/Gornicky/winSvc/mainSvcStart.inc
Normal file
12
_custom/Gornicky/winSvc/mainSvcStart.inc
Normal file
@ -0,0 +1,12 @@
|
||||
datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby GOR downloadPDF - inverval 10 minut...');
|
||||
{$IFDEF DEBUG}
|
||||
WriteLn ('Start sluzby GOR downloadPDF - inverval 10 minut...');
|
||||
{$ENDIF}
|
||||
gorDownPDFThr:= THeoGorDownPDFThread.Create (ThreadTerminated, self);
|
||||
if (gorDownPDFThr.Started) then
|
||||
begin
|
||||
datMod.LogInfo (Quick.Logger.etInfo, ' OK');
|
||||
{$IFDEF DEBUG}
|
||||
WriteLn (' OK');
|
||||
{$ENDIF}
|
||||
end;
|
||||
18
_custom/Gornicky/winSvc/mainSvcStop.inc
Normal file
18
_custom/Gornicky/winSvc/mainSvcStop.inc
Normal file
@ -0,0 +1,18 @@
|
||||
if Assigned(gorDownPDFThr) then
|
||||
begin
|
||||
{$IFDEF DEBUG}
|
||||
WriteLn ('Ukoncuji sluzbu GOR downloadPDF...');
|
||||
{$ENDIF}
|
||||
datMod.LogInfo (Quick.Logger.etInfo, 'Ukoncuji sluzbu GOR downloadPDF...');
|
||||
try
|
||||
gorDownPDFThr.ThreadTerminate;
|
||||
FreeAndNil(gorDownPDFThr);
|
||||
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;
|
||||
3
_custom/Gornicky/winSvc/readCfg.inc
Normal file
3
_custom/Gornicky/winSvc/readCfg.inc
Normal file
@ -0,0 +1,3 @@
|
||||
|
||||
|
||||
intervalSecDownPDF
|
||||
15
_custom/Gornicky/winSvc/types.inc
Normal file
15
_custom/Gornicky/winSvc/types.inc
Normal file
@ -0,0 +1,15 @@
|
||||
THeoGorDownPDFThread = 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;
|
||||
0
_custom/Gornicky/winSvc/uses.inc
Normal file
0
_custom/Gornicky/winSvc/uses.inc
Normal file
1
_custom/Gornicky/winSvc/usesTop.inc
Normal file
1
_custom/Gornicky/winSvc/usesTop.inc
Normal file
@ -0,0 +1 @@
|
||||
System.Net.HttpClient, System.Threading,
|
||||
1
_custom/Gornicky/winSvc/vars.inc
Normal file
1
_custom/Gornicky/winSvc/vars.inc
Normal file
@ -0,0 +1 @@
|
||||
intervalSecDownPDF: integer;
|
||||
BIN
_custom/Gornicky/zdroje.RES
Normal file
BIN
_custom/Gornicky/zdroje.RES
Normal file
Binary file not shown.
1
_custom/Gornicky/zdroje.rc
Normal file
1
_custom/Gornicky/zdroje.rc
Normal file
@ -0,0 +1 @@
|
||||
ep_HDCDZApi_ZpracujPrijataData RCDATA .\sql\ep_HDCDZApi_ZpracujPrijataData.sql
|
||||
3
_custom/INCOSystems/customDefs.inc
Normal file
3
_custom/INCOSystems/customDefs.inc
Normal file
@ -0,0 +1,3 @@
|
||||
,uHeOObj_Custom in '_custom\INCOSystems\uHeOObj_Custom.pas'
|
||||
,uCtrlCustom in '_custom\INCOSystems\uCtrlCustom.pas'
|
||||
,uSvcCustom in 'uSvcCustom.pas'
|
||||
6
_custom/INCOSystems/sql/col_TabEvidRozpracOper_EXT.sql
Normal file
6
_custom/INCOSystems/sql/col_TabEvidRozpracOper_EXT.sql
Normal file
@ -0,0 +1,6 @@
|
||||
DECLARE @currDat DATETIME=GETDATE()
|
||||
IF (COL_LENGTH(N'dbo.TabEvidRozpracOper_EXT', N'_PHIdent') IS NULL)
|
||||
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabEvidRozpracOper', @NazevAtrSys=N'_PHIdent', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Datazone ID',
|
||||
@NazevAtrVerZkr=N'', @TypAtr=N'INT', @MaskaAtr=NULL, @VerejnyAtr=N'N', @SirkaSloupceAtr=12, @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=0, @DatPorizeni=@currDat, @DatZmeny=NULL,
|
||||
@TypAtrSQL=N'INT', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1
|
||||
8
_custom/INCOSystems/sql/col_TabKmenZbozi_EXT.sql
Normal file
8
_custom/INCOSystems/sql/col_TabKmenZbozi_EXT.sql
Normal file
@ -0,0 +1,8 @@
|
||||
DECLARE @currDat DATETIME=GETDATE()
|
||||
IF (COL_LENGTH(N'dbo.TabKmenZbozi_EXT', N'_SkladProVydejMat') IS NULL)
|
||||
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabKmenZbozi', @NazevAtrSys=N'_SkladProVydejMat', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Sklad pro v<>dej pod<6F><64>zen<65>ho materi<72>lu',
|
||||
@NazevAtrVerZkr=N'Sklad mat.', @TypAtr=N'NVARCHAR', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=14, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0,
|
||||
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=4, @ExtEd_Atr=N'Cislo', @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL,
|
||||
@TypAtrSQL=N'NVARCHAR(30)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1,
|
||||
@BublinaAtr=N'Sklad, ze kter<65>ho bude vyd<79>v<EFBFBD>n v<>echen materi<72>l v po<70>adavc<76>ch p<><70>kazu tohoto d<>lce'
|
||||
|
||||
6
_custom/INCOSystems/sql/col_TabPrPostup_EXT.sql
Normal file
6
_custom/INCOSystems/sql/col_TabPrPostup_EXT.sql
Normal file
@ -0,0 +1,6 @@
|
||||
DECLARE @currDat DATETIME=GETDATE()
|
||||
IF (COL_LENGTH(N'dbo.TabPrPostup_EXT', N'_IDPrednaOper') IS NULL)
|
||||
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPrPostup', @NazevAtrSys=N'_IDPrednaOper', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Vazba na P<>ednastaven<65> operac<61>',
|
||||
@NazevAtrVerZkr=N'', @TypAtr=N'INT', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=14, @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'INT', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @BublinaAtr=N''
|
||||
20
_custom/INCOSystems/sql/col_TabPredna_EXT.sql
Normal file
20
_custom/INCOSystems/sql/col_TabPredna_EXT.sql
Normal file
@ -0,0 +1,20 @@
|
||||
DECLARE @currDat DATETIME=GETDATE()
|
||||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NULL)
|
||||
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPredna', @NazevAtrSys=N'_CisloOperace', @Skupina=N'HDCDZApi', @NazevAtrVer=N'<EFBFBD><EFBFBD>slo operace',
|
||||
@NazevAtrVerZkr=N'Operace', @TypAtr=N'NVARCHAR', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=14, @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'NVARCHAR(4)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @BublinaAtr=N'<EFBFBD><EFBFBD>slo operace jedine<6E>n<EFBFBD> p<>es v<>echny p<><70>kazy'
|
||||
|
||||
|
||||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_OdvadeciOperace') IS NULL)
|
||||
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPredna', @NazevAtrSys=N'_OdvadeciOperace', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Odv<EFBFBD>d<EFBFBD>c<EFBFBD> operace',
|
||||
@NazevAtrVerZkr=N'Odv.operace', @TypAtr=N'BIT', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=14, @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=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @BublinaAtr=N'P<EFBFBD><EFBFBD>znak Odv<64>d<EFBFBD>c<EFBFBD> operace'
|
||||
|
||||
|
||||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_IDNasledujiciOperaceAutomat') IS NULL)
|
||||
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPredna', @NazevAtrSys=N'_IDNasledujiciOperaceAutomat', @Skupina=N'HDCDZApi', @NazevAtrVer=N'N<EFBFBD>sledn<EFBFBD> operace',
|
||||
@NazevAtrVerZkr=N'N<EFBFBD>sledn<EFBFBD> operace', @TypAtr=N'INT', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=14, @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'INT', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @BublinaAtr=N'N<EFBFBD>sledn<EFBFBD> operace'
|
||||
1076
_custom/INCOSystems/sql/ep_HDCDZApi_ZpracujPrijataData.sql
Normal file
1076
_custom/INCOSystems/sql/ep_HDCDZApi_ZpracujPrijataData.sql
Normal file
File diff suppressed because it is too large
Load Diff
611
_custom/INCOSystems/sql/ep_HDCDZApi_ZpracujPrijataData.sql.bak
Normal file
611
_custom/INCOSystems/sql/ep_HDCDZApi_ZpracujPrijataData.sql.bak
Normal file
@ -0,0 +1,611 @@
|
||||
-- dbo.ep_HDCDZApi_ZpracujPrijataData
|
||||
CREATE PROCEDURE dbo.ep_HDCDZApi_ZpracujPrijataData
|
||||
@idJson INT=NULL
|
||||
AS
|
||||
|
||||
SET NOCOUNT ON
|
||||
-- ! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !
|
||||
|
||||
|
||||
DECLARE
|
||||
@errMsg NVARCHAR(500)=N'',
|
||||
@errProc NVARCHAR(100),
|
||||
@tranPred INT,
|
||||
@iChyba INT,
|
||||
@debugXML XML
|
||||
|
||||
DECLARE
|
||||
@operJson NVARCHAR(max),
|
||||
@prikJson NVARCHAR(max),
|
||||
@objekt NVARCHAR(50),
|
||||
@akce NVARCHAR(50),
|
||||
@trida NVARCHAR(50),
|
||||
@statusOp NVARCHAR(50),
|
||||
@typOperJson NVARCHAR(50),
|
||||
@jsonString NVARCHAR(max),
|
||||
@cisZam INT,
|
||||
@idZam INT,
|
||||
@idVPr INT,
|
||||
@idVCPrik INT,
|
||||
@vc NVARCHAR(100),
|
||||
@dokl INT,
|
||||
@alt NCHAR(1),
|
||||
@idPrP INT,
|
||||
@idPrPOdv INT,
|
||||
@doklOdv INT,
|
||||
@doklNew INT,
|
||||
@doklAutomat INT,
|
||||
@altAutomat NCHAR(1),
|
||||
@jeOdvadeci BIT=0,
|
||||
@datStart DATETIME,
|
||||
@datKonec DATETIME,
|
||||
@skCasSek INT,
|
||||
@mnoz NUMERIC(19,6),
|
||||
@idPrednaOp INT,
|
||||
@idPrednaOpOdv INT,
|
||||
@operPrednaOdv NVARCHAR(4),
|
||||
@operPrednaPrac INT,
|
||||
@typOper TINYINT,
|
||||
@idPrac INT,
|
||||
@idPracOld INT,
|
||||
@idStroj INT,
|
||||
@nazevOp NVARCHAR(100),
|
||||
@operPredna NVARCHAR(4),
|
||||
@odvadeciPredna BIT=0,
|
||||
@cisOper INT,
|
||||
@cisOperMax INT,
|
||||
@operMax NVARCHAR(4),
|
||||
@nazevOpMax NVARCHAR(100),
|
||||
@idKoop INT,
|
||||
@idEvidROp INT,
|
||||
@idEvidROpPol INT,
|
||||
@idMzdy INT,
|
||||
@idPrednaOpAutomat INT,
|
||||
@operPrednaOpAutomat NVARCHAR(4),
|
||||
@casSekOperPredaAutomat INT,
|
||||
@idMzdyAutomat INT,
|
||||
@datKonecOp DATETIME,
|
||||
@ksZive NUMERIC(19,6),
|
||||
@ksEvid NUMERIC(19,6)
|
||||
|
||||
DECLARE
|
||||
@idDZ INT,
|
||||
@sz NVARCHAR(3),
|
||||
@rc NVARCHAR(30),
|
||||
@idKZ INT,
|
||||
@idPrKVazby INT,
|
||||
@idDilec INT,
|
||||
@mnozstviPomer_A NUMERIC(19,6),
|
||||
@mnozstviPomer_B NUMERIC(19,6),
|
||||
@idGenVydejPrednaPol INT,
|
||||
@sklProVydej NVARCHAR(30)
|
||||
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS #TabJSONData
|
||||
CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max) )
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS #HDCTabPrKVazbyGen_IDMzdyPredna
|
||||
CREATE TABLE #HDCTabPrKVazbyGen_IDMzdyPredna (IDPrikaz int, Doklad int, IDMzdy int)
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS #HDCTabPrKVazbyGenPredna
|
||||
CREATE TABLE #HDCTabPrKVazbyGenPredna (
|
||||
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 NTEXT 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,
|
||||
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)
|
||||
)
|
||||
|
||||
|
||||
SET @operPrednaOdv = N''
|
||||
SET @idPrednaOpOdv = (SELECT TOP(1) ID FROM dbo.TabPredna_EXT WHERE _OdvadeciOperace=1)
|
||||
IF (@idPrednaOpOdv IS NOT NULL)
|
||||
SET @operPrednaOdv = (SELECT _CIsloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOpOdv)
|
||||
|
||||
|
||||
|
||||
IF (@idJson IS NOT NULL)
|
||||
DECLARE j CURSOR LOCAL FOR
|
||||
SELECT ID, JsonData, Objekt, Akce FROM dbo._hdc_ph_PrijataJsonData WHERE ID=@idJson
|
||||
ELSE
|
||||
DECLARE j CURSOR LOCAL FOR
|
||||
SELECT ID, JsonData, Objekt, Akce
|
||||
FROM dbo._hdc_ph_PrijataJsonData
|
||||
WHERE Blokovano=0
|
||||
AND DatZpracovani IS NULL
|
||||
AND ISNULL(JSONData,N'')<>N''
|
||||
ORDER BY DatPorizeni
|
||||
OPEN j
|
||||
WHILE (1=1)
|
||||
BEGIN
|
||||
FETCH NEXT FROM j INTO @idJson, @jsonString, @objekt, @akce
|
||||
IF (@@FETCH_STATUS<>0) BREAK
|
||||
|
||||
IF (ISJSON(@jsonString)=0)
|
||||
BEGIN
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'Neplatna JSON data' WHERE ID=@idJson
|
||||
END
|
||||
|
||||
SET @objekt = TRIM(ISNULL(@objekt, N''))
|
||||
SET @akce = TRIM(ISNULL(@akce, N''))
|
||||
|
||||
BEGIN TRY
|
||||
SET @tranPred=@@TRANCOUNT
|
||||
IF (@tranPred=0)
|
||||
BEGIN TRAN
|
||||
|
||||
|
||||
DELETE FROM #TabJSONData
|
||||
INSERT #TabJSONData (doc) VALUES (@jsonString)
|
||||
IF (@objekt=N'')
|
||||
SELECT TOP(1) @objekt = JSON_VALUE(doc, '$.object') FROM #TabJSONData
|
||||
IF (@akce=N'')
|
||||
SELECT TOP(1) @akce = JSON_VALUE(doc, '$.action') FROM #TabJSONData
|
||||
|
||||
SELECT TOP(1) @cisZam = JSON_VALUE(doc, '$.operace.worker.code') FROM #TabJSONData
|
||||
SET @idZam = (SELECT ID FROM dbo.TabCisZam WHERE Cislo=@cisZam)
|
||||
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=NULL, CisloZam=@cisZam WHERE ID=@idJson
|
||||
|
||||
|
||||
IF (@objekt=N'operace') AND (@idZam IS NOT NULL)
|
||||
BEGIN
|
||||
IF (@akce=N'start')
|
||||
BEGIN
|
||||
SET @idEvidROp = NULL
|
||||
SET @errMsg = N''
|
||||
SET @operPredna = N''
|
||||
SET @odvadeciPredna = 0
|
||||
SET @nazevOp = N''
|
||||
SET @operMax = N''
|
||||
|
||||
SELECT @idVPr = JSON_VALUE(d2.prikaz, '$.id'), @trida = JSON_VALUE(d2.prikaz, '$.class'),
|
||||
@idPrednaOp = JSON_VALUE(d3.operace, '$.id'), @datStart = JSON_VALUE(d3.operace, '$.startAt'),
|
||||
@statusOp = JSON_VALUE(d3.operace, '$.status'), @typOperJson=JSON_VALUE(d3.operace, '$.typ')
|
||||
FROM #TabJSONData d
|
||||
CROSS APPLY OPENJSON(d.doc, N'$')
|
||||
WITH ([prikaz] NVARCHAR(max) AS JSON) AS d2
|
||||
CROSS APPLY OPENJSON(d.doc, N'$')
|
||||
WITH ([operace] NVARCHAR(max) AS JSON) AS d3
|
||||
|
||||
IF (@idVPr IS NOT NULL)
|
||||
BEGIN
|
||||
SELECT @idDilec=p.IDTabKmen, @sklProVydej=rp.VydejMatPol_SkladProGenHlavDZ
|
||||
FROM dbo.TabPrikaz p INNER JOIN dbo.TabRadyPrikazu rp ON (rp.Rada=p.Rada) WHERE p.ID=@idVPr
|
||||
|
||||
SET @idPrP = NULL
|
||||
|
||||
IF (@typOperJson=N'prikaz')
|
||||
BEGIN
|
||||
SET @operPredna = CONVERT(nvarchar, @idPrednaOp)
|
||||
SET @idPrednaOp = (SELECT TOP(1) ID FROM dbo.TabPredna_EXT WHERE _CIsloOperace=@operPredna)
|
||||
SET @typOperJson=N'prednastavena'
|
||||
END
|
||||
|
||||
IF (@typOperJson=N'prednastavena')
|
||||
BEGIN
|
||||
IF (@idPrednaOp IS NOT NULL)
|
||||
BEGIN
|
||||
SELECT @operPrednaPrac=IDpracoviste FROM dbo.TabPredna WHERE ID=@idPrednaOp
|
||||
IF EXISTS(SELECT 1 FROM dbo.TabPrikaz WHERE ID=@idVPr AND StavPrikazu IN (20,30,40) AND BlokovaniEditoru IS NULL)
|
||||
AND EXISTS(SELECT 1 FROM dbo.TabPredna WHERE ID=@idPrednaOp AND BlokovaniEditoru IS NULL)
|
||||
SELECT @typOper=Typ, @nazevOp=nazev, @idPrac=IDpracoviste, @idStroj=IDStroje, @idKoop=IDkooperace
|
||||
FROM dbo.TabPredna WHERE ID=@idPrednaOp
|
||||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL)
|
||||
SET @operPredna = (SELECT _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp)
|
||||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_OdvadeciOperace') IS NOT NULL)
|
||||
SET @odvadeciPredna = (SELECT _OdvadeciOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp)
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
SET @operPredna = ISNULL(@operPredna,N'')
|
||||
IF (@operPredna=N'')
|
||||
BEGIN
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'CHYBA: přednastavení ID ' + CONVERT(nvarchar, @idPrednaOp) + N' nemá zadané číslo operace.' WHERE ID=@idJson
|
||||
CONTINUE
|
||||
END
|
||||
-- SET @operPredna=dbo.hf_ZarovnejOperaciTechPos(@operPredna)
|
||||
|
||||
/*
|
||||
SET @idPrP = (SELECT TOP(1) ID FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND typ=@typOper AND nazev=@nazevOp
|
||||
AND ISNULL(pracoviste,0)=ISNULL(@idPrac,0) AND ISNULL(IDkooperace,0)=ISNULL(@idKoop,0) AND ISNULL(IDStroje,0)=ISNULL(@idStroj,0))
|
||||
*/
|
||||
SET @idPrP = (SELECT TOP(1) ID FROM dbo.TabPrPostup WHERE priorita=0 AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND typ=@typOper AND operace=@operPredna)
|
||||
|
||||
-- existuje odvadeci operace v Prednastaveni pro operace a v prikazu ? pokud neni v prikazu, pridej ji do prikazu
|
||||
SET @doklOdv = NULL
|
||||
SET @idPrPOdv = (SELECT ID FROM dbo.TabPrPostup WHERE priorita=0 AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Operace=@operPrednaOdv)
|
||||
|
||||
-- pokud prednastavena Odvadeci jeste neni v prikazu, pridej ji tam
|
||||
IF (@idPrPOdv IS NULL) AND (@idPrednaOpOdv IS NOT NULL)
|
||||
BEGIN
|
||||
EXEC @idPrPOdv = dbo.hp_NewPozadavek_TabPrPostup @IDPrikaz=@idVPr, @IDPrednastaveni=@idPrednaOpOdv, @Operace=@operPrednaOdv
|
||||
IF (@idPrPOdv IS NOT NULL)
|
||||
BEGIN
|
||||
-- korekce cisla dokladu odvadeci operace, posun na konec seznamu operaci
|
||||
SET @doklOdv=9990
|
||||
UPDATE dbo.TabPrPostup SET Odvadeci=0 WHERE ID<>@idPrPOdv AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL
|
||||
UPDATE dbo.TabPrPostup SET Doklad=@doklOdv, Odvadeci=1 WHERE ID=@idPrPOdv
|
||||
END
|
||||
END
|
||||
IF (@doklOdv IS NULL) AND (@idPrPOdv IS NOT NULL)
|
||||
SELECT @doklOdv=Doklad FROM dbo.TabPrPostup WHERE ID=@idPrPOdv
|
||||
|
||||
|
||||
-- prednastavena operace v prikazu jeste neni, pridej ji
|
||||
IF (@idPrP IS NULL)
|
||||
BEGIN
|
||||
EXEC @idPrP = dbo.hp_NewPozadavek_TabPrPostup @IDPrikaz=@idVPr, @IDPrednastaveni=@idPrednaOp, @Operace=@operPredna
|
||||
IF (@idPrP IS NOT NULL)
|
||||
BEGIN
|
||||
-- korekce cisla dokladu, pred odvadeci opeaci
|
||||
SELECT @dokl=ISNULL(MAX(Doklad),0)+1 FROM dbo.TabPrPostup WITH (TABLOCKX) WHERE IDPrikaz=@idVPr AND Doklad<9990
|
||||
UPDATE dbo.TabPrPostup SET Doklad=@dokl, Odvadeci=0, VyraditZKontrolyPosloupOper=1 WHERE ID=@idPrP
|
||||
END
|
||||
END
|
||||
|
||||
SET @idPrednaOpAutomat = NULL
|
||||
SET @operPrednaOpAutomat = N''
|
||||
|
||||
IF (@idPrP IS NOT NULL)
|
||||
BEGIN
|
||||
SELECT @dokl=Doklad, @alt=Alt FROM dbo.TabPrPostup WHERE ID=@idPrP
|
||||
UPDATE dbo.TabPrPostup SET VyraditZKontrolyPosloupOper=1 WHERE ID=@idPrP AND Odvadeci=0
|
||||
|
||||
-- korekce cisla dokladu aby bylo pred odvadeci operaci
|
||||
IF (@doklOdv IS NOT NULL)
|
||||
IF (@dokl>@doklOdv)
|
||||
BEGIN
|
||||
SET @doklNew = 1 + ISNULL( (SELECT MAX(Doklad) FROM dbo.TabPrPostup
|
||||
WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Doklad<@doklOdv AND ID<>@idPrP), 0)
|
||||
IF (@doklNew IS NOT NULL)
|
||||
BEGIN
|
||||
UPDATE dbo.TabPrPostup SET Doklad=@doklNew WHERE ID=@idPrP
|
||||
SET @dokl = @doklNew
|
||||
END
|
||||
END
|
||||
|
||||
EXEC @idEvidROp = dbo.ep_Vyroba_InsertEvidRozpracOper @IDZamestnance=@idZam, @IDPracoviste=@idPrac, @IDStroje=@idStroj, @CasZahajeni=@datStart, @errMsg = @errMsg OUT
|
||||
IF (@idEvidROp IS NOT NULL)
|
||||
BEGIN
|
||||
SET @idVCPrik = NULL
|
||||
IF 1=ISNULL( (SELECT COUNT(ID) FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr), 0)
|
||||
SET @idVCPrik = (SELECT TOP(1) ID FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr)
|
||||
EXEC @idEvidROpPol = dbo.ep_Vyroba_InsertEvidRozpracOperPol @IDEvidRozpOper=@idEvidROp, @IdPrikaz=@idVPr, @doklPrPost=@dokl,
|
||||
@altPrPost=@alt, @IdVyrCis=@idVCPrik, @errMsg = @errMsg OUT
|
||||
END -- idEvidROp IS NOT NULL
|
||||
END -- idPrP IS NOT NULL
|
||||
|
||||
-- pokud mam naslednou automatickou operaci, zkontrolu a pripadne ji pridej na prikaz
|
||||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_IDNasledujiciOperaceAutomat') IS NOT NULL)
|
||||
SET @idPrednaOpAutomat = (SELECT _IDNasledujiciOperaceAutomat FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp)
|
||||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL) AND (@idPrednaOpAutomat IS NOT NULL)
|
||||
SELECT @operPrednaOpAutomat = _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOpAutomat
|
||||
SET @operPrednaOpAutomat = ISNULL(@operPrednaOpAutomat, N'')
|
||||
IF (@operPrednaOpAutomat<>N'')
|
||||
BEGIN
|
||||
SET @idPrP = (SELECT ID FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Operace=@operPrednaOpAutomat)
|
||||
IF (@idPrP IS NULL)
|
||||
EXEC @idPrP = dbo.hp_NewPozadavek_TabPrPostup @IDPrikaz=@idVPr, @IDPrednastaveni=@idPrednaOpAutomat, @Operace=@operPrednaOpAutomat
|
||||
|
||||
IF (@idPrP IS NOT NULL)
|
||||
BEGIN
|
||||
-- korekce cisla dokladu
|
||||
SELECT @dokl=Doklad FROM dbo.TabPrPostup WHERE ID=@idPrP
|
||||
IF (@dokl>@doklOdv)
|
||||
BEGIN
|
||||
SET @doklNew = 1 + ISNULL( (SELECT MAX(Doklad) FROM dbo.TabPrPostup
|
||||
WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Doklad<@doklOdv AND ID<>@idPrP), 0)
|
||||
IF (@doklNew IS NOT NULL)
|
||||
BEGIN
|
||||
UPDATE dbo.TabPrPostup SET Doklad=@doklNew WHERE ID=@idPrP AND Operace=@operPrednaOpAutomat
|
||||
SET @dokl = @doklNew
|
||||
END
|
||||
END -- @dokl>@doklOdv
|
||||
END -- @idPrP IS NOT NULL
|
||||
END -- @operPrednaOpAutomat<>N''
|
||||
|
||||
|
||||
END -- idVPr IS NOT NULL
|
||||
|
||||
IF (@errMsg<>N'')
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), IDEvidRozpOp=@idEvidROp WHERE ID=@idJson
|
||||
END -- akce Start
|
||||
|
||||
|
||||
|
||||
|
||||
IF (@akce=N'stop')
|
||||
BEGIN
|
||||
SET @errMsg = N''
|
||||
|
||||
SELECT @idVPr = JSON_VALUE(d2.prikaz, '$.id'), @trida = JSON_VALUE(d2.prikaz, '$.class'),
|
||||
@idPrednaOp = JSON_VALUE(d3.operace, '$.id'), @statusOp = JSON_VALUE(d3.operace, '$.status'),
|
||||
@datStart = JSON_VALUE(d3.operace, '$.startAt'), @datKonec = JSON_VALUE(d3.operace, '$.stopAt'),
|
||||
@operJson=d3.operace, @typOperJson=JSON_VALUE(d3.operace, '$.typ')
|
||||
FROM #TabJSONData d
|
||||
CROSS APPLY OPENJSON(d.doc, '$')
|
||||
WITH ([prikaz] NVARCHAR(max) AS JSON) AS d2
|
||||
CROSS APPLY OPENJSON(d.doc, '$')
|
||||
WITH ([operace] NVARCHAR(max) AS JSON) AS d3
|
||||
|
||||
IF EXISTS (SELECT 1 FROM dbo.TabPrikaz WHERE ID=@idVPr AND StavPrikazu<>30)
|
||||
BEGIN
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'Vyrobni prikaz neni ve stavu Zadano' WHERE ID=@idJson
|
||||
CONTINUE
|
||||
END
|
||||
|
||||
SELECT @ksZive=p.kusy_zive, @sklProVydej=rp.VydejMatPol_SkladProGenHlavDZ
|
||||
FROM dbo.TabPrikaz p INNER JOIN dbo.TabRadyPrikazu rp ON (rp.Rada=p.Rada) WHERE p.ID=@idVPr
|
||||
|
||||
IF (@datKonec<=@datStart)
|
||||
SET @datKonec = DATEADD(s, 1, @datStart)
|
||||
|
||||
IF (@idVPr IS NOT NULL) AND (@operJson IS NOT NULL)
|
||||
BEGIN
|
||||
SELECT @idDilec = IDTabKmen FROM dbo.TabPrikaz WHERE ID=@idVPr
|
||||
SET @idPrP = NULL
|
||||
SET @operPredna = N''
|
||||
SET @idPrednaOpAutomat = NULL
|
||||
SET @operPrednaOpAutomat = N''
|
||||
|
||||
IF (@typOperJson=N'prikaz')
|
||||
BEGIN
|
||||
SET @operPredna = CONVERT(nvarchar, @idPrednaOp)
|
||||
SET @idPrednaOp = (SELECT TOP(1) ID FROM dbo.TabPredna_EXT WHERE _CIsloOperace=@operPredna)
|
||||
SET @typOperJson=N'prednastavena'
|
||||
END
|
||||
|
||||
IF (@idPrednaOp IS NOT NULL)
|
||||
BEGIN
|
||||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL) AND (@idPrednaOp IS NOT NULL)
|
||||
SET @operPredna = (SELECT _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp)
|
||||
SET @operPredna = ISNULL(@operPredna, N'')
|
||||
IF (@operPredna=N'')
|
||||
BEGIN
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'Nebylo nalezeno cislo operace Prednastaveni' WHERE ID=@idJson
|
||||
CONTINUE
|
||||
END
|
||||
|
||||
-- zjisti vyrobni cislo
|
||||
SET @idVCPrik = NULL
|
||||
IF 1=ISNULL( (SELECT COUNT(ID) FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr), 0)
|
||||
SET @idVCPrik = (SELECT TOP(1) ID FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr)
|
||||
|
||||
-- zjisti operaci automatu
|
||||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_IDNasledujiciOperaceAutomat') IS NOT NULL)
|
||||
SET @idPrednaOpAutomat = (SELECT _IDNasledujiciOperaceAutomat FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp)
|
||||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL) AND (@idPrednaOpAutomat IS NOT NULL)
|
||||
SELECT @operPrednaOpAutomat = _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOpAutomat
|
||||
SET @operPrednaOpAutomat = ISNULL(@operPrednaOpAutomat, N'')
|
||||
SET @casSekOperPredaAutomat = ISNULL( (SELECT TAC_Obsluhy_J_S FROM dbo.TabPredna WHERE ID=@idPrednaOpAutomat), 0)
|
||||
|
||||
|
||||
IF EXISTS(SELECT 1 FROM dbo.TabPrikaz WHERE ID=@idVPr AND StavPrikazu IN (20,30,40) AND BlokovaniEditoru IS NULL)
|
||||
AND EXISTS(SELECT 1 FROM dbo.TabPredna WHERE ID=@idPrednaOp AND BlokovaniEditoru IS NULL)
|
||||
SELECT @typOper=Typ, @nazevOp=nazev, @idPrac=IDpracoviste, @idStroj=IDStroje, @idKoop=IDkooperace
|
||||
FROM dbo.TabPredna WHERE ID=@idPrednaOp
|
||||
END
|
||||
|
||||
SET @idPrP = (SELECT TOP(1) ID FROM dbo.TabPrPostup WHERE priorita=0 AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND typ=@typOper AND operace=@operPredna)
|
||||
/*
|
||||
SET @idPrP = (SELECT TOP(1) ID FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND typ=@typOper AND nazev=@nazevOp
|
||||
AND ISNULL(pracoviste,0)=ISNULL(@idPrac,0) AND ISNULL(IDkooperace,0)=ISNULL(@idKoop,0) AND ISNULL(IDStroje,0)=ISNULL(@idStroj,0))
|
||||
*/
|
||||
SELECT @jeOdvadeci=Odvadeci, @dokl=Doklad, @alt=Alt FROM dbo.TabPrPostup WHERE ID=@idPrP
|
||||
SET @ksEvid = ISNULL( (SELECT SUM(kusy_odv+kusy_zmet_opr+kusy_zmet_neopr) FROM dbo.TabPrikazMzdyAZmetky
|
||||
WHERE IDPrikaz=@idVPr AND DokladPrPostup=@dokl AND AltPrPostup=@alt), 0)
|
||||
-- muzu jeste odvest kusy ?
|
||||
IF (@jeOdvadeci=1) AND (@ksEvid>=@ksZive)
|
||||
BEGIN
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'Nelze evidovat, uz je vse odvedeno' WHERE ID=@idJson
|
||||
CONTINUE
|
||||
END
|
||||
|
||||
|
||||
SET @idMzdy = NULL
|
||||
SET @iChyba = -1
|
||||
SET @idEvidROp = (SELECT TOP(1) h.ID FROM dbo.TabEvidRozpracOperR r INNER JOIN dbo.TabEvidRozpracOper h ON (h.ID=r.IDEvidRozpracOper)
|
||||
WHERE h.IDZamestnance=@idZam AND h.CasUkonceni IS NULL AND r.DokladPrPostup=@dokl AND r.AltPrPostup=@alt AND r.IDPrikaz=@idVPr)
|
||||
IF (@idEvidROp IS NOT NULL)
|
||||
BEGIN
|
||||
SELECT @idPracOld=IDPracoviste FROM dbo.TabEvidRozpracOper WHERE ID=@idEvidROp
|
||||
SET @skCasSek = DATEDIFF(s, @datStart, @datKonec)
|
||||
UPDATE dbo.TabEvidRozpracOperR SET Mnoz_odv=CASE WHEN (@jeOdvadeci=1) THEN 1 ELSE 0 END,
|
||||
Sk_cas=CASE Sk_Cas_T WHEN 0 THEN @skCasSek WHEN 1 THEN (@skCasSek/60.0) WHEN 2 THEN (@skCasSek/3600.0) END,
|
||||
Sk_cas_Obsluhy=CASE Sk_Cas_Obsluhy_T WHEN 0 THEN @skCasSek WHEN 1 THEN (@skCasSek/60.0) WHEN 2 THEN (@skCasSek/3600.0) END
|
||||
WHERE IDEvidRozpracOper=@idEvidROp
|
||||
UPDATE dbo.TabEvidRozpracOper SET CasUkonceni=@datKonec, CelkovyCas_T=0, CelkovyCas=DATEDIFF(s, @datStart, @datKonec) WHERE ID=@idEvidROp
|
||||
EXEC dbo.hp_EvidRozpracOper_AktualizaceCasuOper @IDEvidRozpracOper=@idEvidROp, @CelkovyCas_S=@skCasSek, @KVO=1
|
||||
|
||||
SET @idEvidROpPol = (SELECT TOP(1) ID FROM dbo.TabEvidRozpracOperR WHERE IDEvidRozpracOper=@idEvidROp AND IDPrikaz=@idVPr AND DokladPrPostup=@dokl AND AltPrPostup=@alt)
|
||||
EXEC @idMzdy = dbo.hp_EvidenceOperace @IDEvidRozpracOperR=@idEvidROpPol, @Stav=0
|
||||
UPDATE dbo.TabEvidRozpracOper SET DatumUzavreni=GETDATE(), AutorUzavreni=SUSER_SNAME() WHERE ID=@idEvidROp
|
||||
|
||||
IF (@idMzdy IS NOT NULL) AND (@idPracOld IS NOT NULL)
|
||||
EXEC dbo.hp_ZmenaStavuMezdAZmetku @ID=@idMzdy, @Stav=1, @ZapisZmenu=0
|
||||
END -- @idEvidROp IS NOT NULL
|
||||
|
||||
|
||||
IF (@idMzdy IS NOT NULL)
|
||||
BEGIN
|
||||
UPDATE dbo.TabPrikazMzdyAZmetky SET Datum=CONVERT(datetime, CONVERT(int, CONVERT(float, @datStart))) WHERE ID=@idMZdy
|
||||
|
||||
SELECT @datKonecOp = DatumUkonceniOp FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@idMzdy
|
||||
|
||||
-- zkus zaevidovat operaci automatu
|
||||
IF (@operPrednaOpAutomat<>N'')
|
||||
BEGIN
|
||||
-- pouzij cas ukonceni predchozi operace
|
||||
SET @datStart = DATEADD(second, 1, @datKonecOp)
|
||||
SET @datKonec = DATEADD(second, @casSekOperPredaAutomat, @datStart)
|
||||
|
||||
SELECT @doklAutomat=Doklad, @altAutomat=Alt FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Operace=@operPrednaOpAutomat
|
||||
IF (@doklAutomat IS NOT NULL)
|
||||
BEGIN
|
||||
SET @idMzdyAutomat = NULL
|
||||
EXEC @idMzdyAutomat = dbo.hp_EvidenceOperace @IDPrikaz=@idVPr, @Doklad=@doklAutomat, @Alt=@altAutomat, @Datum=@datStart, @IDVyrCis=@idVCPrik,
|
||||
@Sk_Cas_S=@casSekOperPredaAutomat, @Sk_Cas_Obsluhy_S=0, @IDZam=@idZam,
|
||||
@DatumZahajeniOp=@datStart, @DatumUkonceniOp=@datKonec
|
||||
END
|
||||
END
|
||||
|
||||
-- generuj vydejku materialu
|
||||
SET @sz = NULL
|
||||
DELETE FROM #TabJSONData
|
||||
INSERT #TabJSONData (doc) SELECT @operJson
|
||||
DECLARE m CURSOR LOCAL FOR
|
||||
SELECT m.skupina, m.regcis, m.quantity
|
||||
FROM #TabJSONData d
|
||||
CROSS APPLY OPENJSON(d.doc, N'$.material')
|
||||
WITH (skupina NVARCHAR(3), regcis NVARCHAR(30), quantity NUMERIC(19,6)) AS m
|
||||
OPEN m
|
||||
WHILE (1=1)
|
||||
BEGIN
|
||||
FETCH NEXT FROM m INTO @sz, @rc, @mnoz
|
||||
IF (@@FETCH_STATUS<>0) BREAK
|
||||
SET @idKZ = (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=@sz AND RegCis=@rc)
|
||||
IF (@idKZ IS NOT NULL)
|
||||
BEGIN
|
||||
UPDATE dbo.TabKmenZbozi SET Material=1 WHERE ID=@idKZ AND Dilec=0 AND Material=0
|
||||
SET @idPrKVazby=(SELECT TOP(1) ID FROM dbo.TabPrKVazby WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@idVPr
|
||||
AND vyssi=@idDilec AND nizsi=@idKZ ORDER BY Prednastaveno DESC)
|
||||
IF (@idPrKVazby IS NULL)
|
||||
EXEC @idPrKVazby = dbo.hp_NewPozadavek_TabPrKVazby @IDPrikaz=@idVPr, @IDKmenZbozi=@idKZ, @Mnozstvi=@mnoz
|
||||
SET @dokl = NULL
|
||||
IF (@idPrKVazby IS NOT NULL)
|
||||
BEGIN
|
||||
SELECT @dokl=Doklad FROM dbo.TabPrKVazby WHERE ID=@idPrKVazby
|
||||
SELECT @mnozstviPomer_A=(MZ.kusy_odv+MZ.kusy_zmet_opr+MZ.kusy_zmet_neopr), @mnozstviPomer_B=PrP.kusy_zad
|
||||
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)
|
||||
WHERE MZ.ID=@idMzdy
|
||||
INSERT INTO #HDCTabPrKVazbyGenPredna (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, @mnoz, @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=@idPrKVazby AND PrKV.uzavreno=0
|
||||
SET @idGenVydejPrednaPol = SCOPE_IDENTITY()
|
||||
|
||||
-- pokud neni prednastaveny sklad pro vydej, zkus to z rady prikazu
|
||||
UPDATE #HDCTabPrKVazbyGenPredna SET Sklad=@sklProVydej WHERE ID=@idGenVydejPrednaPol AND Sklad IS NULL AND @sklProVydej IS NOT NULL
|
||||
|
||||
IF (@dokl IS NOT NULL)
|
||||
INSERT INTO #HDCTabPrKVazbyGen_IDMzdyPredna (IDPrikaz, Doklad, IDMzdy) SELECT @idVPr, @dokl, @idMzdy
|
||||
END -- idPrKVazby IS NOT NULL
|
||||
END -- idKZ
|
||||
END
|
||||
CLOSE m
|
||||
DEALLOCATE m
|
||||
|
||||
SET @debugXML = (SELECT * FROM #HDCTabPrKVazbyGenPredna FOR XML AUTO)
|
||||
|
||||
|
||||
IF (@idMzdy IS NOT NULL) AND (@sz IS NOT NULL) -- pokud prosel loopem na materialy, sz nemuze byt null
|
||||
IF OBJECT_ID(N'dbo.ep_Vyroba_GenVydejZeMzdy', N'P') IS NOT NULL
|
||||
BEGIN
|
||||
SET @idDZ = NULL
|
||||
BEGIN TRY
|
||||
EXEC @iChyba = dbo.ep_Vyroba_GenVydejZeMzdy @IDMzdy=@idMzdy, @IDDoklad=@idDZ OUT, @errMsg=@errMsg OUT, @realizujVydej=1
|
||||
IF (@errMsg<>N'')
|
||||
UPDATE dbo.TabDokladyZbozi SET BLokovaniEditoru=NULL WHERE ID=@idDZ
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ
|
||||
END CATCH
|
||||
END
|
||||
|
||||
|
||||
-- pokud je odvadeci, generuj odvod na sklad
|
||||
IF (@idMzdy IS NOT NULL) AND (@jeOdvadeci=1)
|
||||
BEGIN
|
||||
IF OBJECT_ID(N'dbo.ep_Vyroba_GenOdvodZeMzdy', N'P') IS NOT NULL
|
||||
BEGIN
|
||||
SET @idDZ = NULL
|
||||
BEGIN TRY
|
||||
EXEC @iChyba = dbo.ep_Vyroba_GenOdvodZeMzdy @IDMzdy=@idMzdy, @bezVyrCis=0, @errMsg=@errMsg OUT, @realizujPrijem=1, @IDDoklad=@idDZ OUT
|
||||
IF (@errMsg<>N'')
|
||||
UPDATE dbo.TabDokladyZbozi SET BLokovaniEditoru=NULL WHERE ID=@idDZ
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ
|
||||
END CATCH
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
END -- idMzdy IS NOT NULL
|
||||
END -- idVPr IS NOT NULL AND operJson IS NOT NULL
|
||||
|
||||
SET @errMsg = ISNULL(@errMsg,N'')
|
||||
IF (@errMsg<>N'')
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), IDMzda=@idMzdy WHERE ID=@idJson
|
||||
END -- akce Stop
|
||||
|
||||
END -- objekt Operace AND idZam IS NOT NULL
|
||||
|
||||
|
||||
IF (@tranPred=0) AND (@@TRANCOUNT>0)
|
||||
COMMIT TRAN
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @errMsg = ERROR_MESSAGE()
|
||||
SET @errProc = ERROR_PROCEDURE()
|
||||
IF (@tranPred=0) AND (@@TRANCOUNT>0)
|
||||
ROLLBACK TRAN
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson
|
||||
END CATCH
|
||||
|
||||
END
|
||||
CLOSE j
|
||||
DEALLOCATE j
|
||||
|
||||
|
||||
|
||||
-- cisteni
|
||||
DROP TABLE IF EXISTS #HDCTabPrKVazbyGenPredna
|
||||
DROP TABLE IF EXISTS #TabJSONData
|
||||
223
_custom/INCOSystems/sql/ep_Vyroba_GenOdvodZeMzdy.sql
Normal file
223
_custom/INCOSystems/sql/ep_Vyroba_GenOdvodZeMzdy.sql
Normal file
@ -0,0 +1,223 @@
|
||||
-- dbo.ep_Vyroba_GenOdvodZeMzdy
|
||||
CREATE PROCEDURE dbo.ep_Vyroba_GenOdvodZeMzdy
|
||||
@IDMzdy INT,
|
||||
@bezVyrCis BIT=1,
|
||||
@errMsg NVARCHAR(500)=N'' OUT,
|
||||
@realizujPrijem BIT=0,
|
||||
@IDDoklad INT=NULL OUT
|
||||
AS
|
||||
|
||||
-- HD Consulting Strakonice, T. Buzin
|
||||
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu sluzby HDCAPI !!
|
||||
-- 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
|
||||
@ret integer,
|
||||
@bChyba BIT,
|
||||
@idUziv INT,
|
||||
@idDZ INT,
|
||||
@IDPrikaz INT,
|
||||
@IDKmen INT,
|
||||
@NekontrolMnozOdvedFinal bit=0,
|
||||
@mnozstvi numeric(19,6)=0,
|
||||
@radaOdvNaSklad NVARCHAR(3)=NULL,
|
||||
@sklProOdvod NVARCHAR(30)=NULL,
|
||||
@radaVPr NVARCHAR(10)
|
||||
|
||||
|
||||
|
||||
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)
|
||||
|
||||
|
||||
-- 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
|
||||
SELECT TOP(1) @radaOdvNaSklad=RadaOdvodNaSklad, @sklProOdvod=SkladProOdvod, @bezVyrCis=ISNULL(BezVyrobnichCisel,@bezVyrCis),
|
||||
@idUziv=ISNULL(IDUziv, @idUziv)
|
||||
FROM #HDCTabGenOdvodZeMzdyKonfig
|
||||
|
||||
|
||||
|
||||
|
||||
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 0
|
||||
|
||||
|
||||
SELECT @mnozstvi=kusy_odv FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy
|
||||
|
||||
UPDATE dbo.TabPrikazMzdyAZmetky SET GenerovanoOdvadeni=1 WHERE ID=@IDMzdy
|
||||
IF (@@ROWCOUNT=0) RETURN 0
|
||||
IF @mnozstvi<=0.0 RETURN 0
|
||||
|
||||
|
||||
|
||||
SELECT @IDPrikaz=IDPrikaz FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy
|
||||
SELECT @radaVPr=Rada, @IDKmen=IDTabKmen FROM dbo.TabPrikaz WHERE ID=@IDPrikaz
|
||||
|
||||
-- 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
|
||||
|
||||
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
EXEC dbo.hp_PrednabidniTabVyrCisProGenOdv @ProIDPrikaz=NULL
|
||||
IF (@bezVyrCis=1)
|
||||
DELETE #TabVyrCisProGenOdv
|
||||
|
||||
|
||||
BEGIN TRY
|
||||
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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IF (@realizujPrijem=1)
|
||||
BEGIN
|
||||
DECLARE
|
||||
@idPrij INT
|
||||
|
||||
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
|
||||
|
||||
BEGIN TRY
|
||||
EXEC dbo.hp_Realizuj_Prijem @ID=@idPrij, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @errMsg = ERROR_MESSAGE()
|
||||
END CATCH
|
||||
|
||||
END
|
||||
CLOSE prij
|
||||
DEALLOCATE prij
|
||||
END
|
||||
|
||||
|
||||
|
||||
SET @IDDoklad = NULL
|
||||
IF (1=(SELECT COUNT(*) FROM #TabGenPrijem))
|
||||
SET @IDDoklad=(SELECT TOP(1) ID FROM #TabGenPrijem)
|
||||
|
||||
|
||||
|
||||
-- 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
|
||||
309
_custom/INCOSystems/sql/ep_Vyroba_GenVydejZeMzdy.sql
Normal file
309
_custom/INCOSystems/sql/ep_Vyroba_GenVydejZeMzdy.sql
Normal file
@ -0,0 +1,309 @@
|
||||
-- dbo.ep_Vyroba_GenVydejZeMzdy
|
||||
CREATE PROCEDURE dbo.ep_Vyroba_GenVydejZeMzdy
|
||||
@IDMzdy INT,
|
||||
@IDDoklad INT=NULL OUT,
|
||||
@errMsg NVARCHAR(500)=N'' OUT,
|
||||
@extTab NVARCHAR(50)=NULL,
|
||||
@vydejAll BIT=0,
|
||||
@realizujVydej BIT=0
|
||||
AS
|
||||
|
||||
-- HD Consulting Strakonice, T. Buzin
|
||||
-- !! proceduru neupravujte, bude stejne pregenerovana pri 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,
|
||||
@retVal INT=0,
|
||||
@errID int,
|
||||
@sql NVARCHAR(1000),
|
||||
@idUziv INT=0
|
||||
|
||||
DECLARE @vydejky TABLE (ID INT NOT NULL)
|
||||
|
||||
|
||||
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)
|
||||
|
||||
|
||||
DELETE FROM @vydejky
|
||||
|
||||
|
||||
|
||||
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 NTEXT 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,
|
||||
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=0,
|
||||
@IDPrikaz int=NULL,
|
||||
@dilec INT,
|
||||
@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,
|
||||
@skladProVydejKZ NVARCHAR(30)
|
||||
|
||||
|
||||
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
|
||||
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)
|
||||
WHERE MZ.ID=@IDMzdy
|
||||
UPDATE dbo.TabPrikazMzdyAZmetky SET GenerovanaMatVydejka=1 WHERE ID=@IDMzdy
|
||||
IF (@@ROWCOUNT=0)
|
||||
RETURN 0
|
||||
|
||||
|
||||
SELECT @dilec=IDTabKmen FROM dbo.TabPrikaz WHERE ID=@IDPrikaz
|
||||
IF OBJECT_ID('dbo.TabKmenZbozi_EXT', 'U') IS NOT NULL
|
||||
IF COL_LENGTH('dbo.TabKmenZbozi_EXT', '_SkladProVydejMat') IS NOT NULL
|
||||
SET @skladProVydejKZ = (SELECT _SkladProVydejMat FROM dbo.TabKmenZbozi_EXT WHERE ID=@dilec)
|
||||
SET @skladProVydejKZ = ISNULL(@skladProVydejKZ, N'')
|
||||
|
||||
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
END
|
||||
|
||||
-- preddefinvana tabulka vyrobnich cisel
|
||||
IF OBJECT_ID(N'tempdb..#HDCTabPrKVazbyGenVCPredna', N'U') IS NOT NULL
|
||||
BEGIN
|
||||
DELETE FROM #TabPrKVazbyGenVC
|
||||
INSERT INTO #TabPrKVazbyGenVC
|
||||
SELECT IDPolozky, VyrCislo, Mnozstvi, Sklad, IDKmenZbozi, IDVyrCP FROM #HDCTabPrKVazbyGenVCPredna
|
||||
END
|
||||
|
||||
|
||||
-- ext info k dilci, sklad, ze kterho se ma vydavat material
|
||||
IF (@skladProVydejKZ<>N'')
|
||||
UPDATE #TabPrKVazbyGen SET Sklad=@skladProVydejKZ
|
||||
|
||||
|
||||
|
||||
|
||||
EXEC dbo.hp_AktualizaceTabPrKVazbyGenVC @Vratka=0
|
||||
UPDATE #TabPrKVazbyGen SET Generuj=1
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS #TabGenRezVyd
|
||||
CREATE TABLE #TabGenRezVyd (ID int NOT NULL, PRIMARY KEY (ID))
|
||||
|
||||
|
||||
BEGIN TRY
|
||||
EXEC @retVal=dbo.hp_generujRezVyd @RadaDokladu=NULL, @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
|
||||
|
||||
|
||||
|
||||
INSERT @vydejky (ID) SELECT ID FROM #TabGenRezVyd
|
||||
|
||||
DECLARE
|
||||
@idVyd INT,
|
||||
@idKZ INT,
|
||||
@idPZ INT
|
||||
|
||||
IF (@realizujVydej=1)
|
||||
BEGIN
|
||||
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
|
||||
BEGIN TRY
|
||||
EXEC dbo.hp_Realizuj_Vydej @ID=@idVyd, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @errMsg = ERROR_MESSAGE()
|
||||
END CATCH
|
||||
END
|
||||
CLOSE vyd
|
||||
DEALLOCATE vyd
|
||||
END
|
||||
|
||||
|
||||
|
||||
IF (1=(SELECT COUNT(*) FROM @vydejky))
|
||||
SET @IDDoklad=(SELECT TOP(1) ID FROM @vydejky)
|
||||
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
75
_custom/INCOSystems/sql/ep_Vyroba_InsertEvidRozpracOper.sql
Normal file
75
_custom/INCOSystems/sql/ep_Vyroba_InsertEvidRozpracOper.sql
Normal file
@ -0,0 +1,75 @@
|
||||
-- dbo.ep_Vyroba_InsertEvidRozpracOper
|
||||
CREATE PROCEDURE dbo.ep_Vyroba_InsertEvidRozpracOper
|
||||
@IDZamestnance INT=NULL,
|
||||
@IDPracoviste INT=NULL,
|
||||
@IDStroje INT=NULL,
|
||||
@CasZahajeni DATETIME=NULL,
|
||||
@ErrMsg NVARCHAR(500)=N'' OUT
|
||||
AS
|
||||
|
||||
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !!
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
DECLARE
|
||||
@tranPred INT
|
||||
|
||||
DECLARE
|
||||
@idEROp INT=NULL
|
||||
|
||||
|
||||
IF EXISTS(SELECT 1 FROM dbo.TabEvidRozpracOper)
|
||||
BEGIN
|
||||
SELECT @idEROp=MAX(ID) FROM dbo.TabEvidRozpracOper
|
||||
DBCC CHECKIDENT(TabEvidRozpracOper, RESEED, @idEROp)
|
||||
END
|
||||
ELSE
|
||||
DBCC CHECKIDENT(TabEvidRozpracOper, RESEED, 1)
|
||||
SET @idEROp=NULL
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IF (@IDPracoviste IS NULL) AND (@IDStroje IS NOT NULL)
|
||||
SELECT @IDPracoviste=IDPrac FROM dbo.TabCisStroju WHERE ID=@IDStroje
|
||||
|
||||
IF (@IDZamestnance IS NULL) OR (@IDPracoviste IS NULL)
|
||||
BEGIN
|
||||
SET @ErrMsg = N'Neni zadan zamestnanec nebo pracoviste'
|
||||
RETURN NULL
|
||||
END
|
||||
|
||||
IF OBJECT_ID(N'tempdb..#TabExtKom', N'U') IS NULL
|
||||
CREATE TABLE #TabExtKom (Typ TINYINT, Poznamka NVARCHAR(255) NOT NULL DEFAULT N'')
|
||||
|
||||
|
||||
|
||||
SET @CasZahajeni = ISNULL(@CasZahajeni, GETDATE())
|
||||
|
||||
|
||||
BEGIN TRY
|
||||
SET @tranPred = @@TRANCOUNT
|
||||
IF (@tranPred=0) BEGIN TRAN
|
||||
|
||||
INSERT dbo.TabEvidRozpracOper (IDZamestnance, CasZahajeni, IDPracoviste, IDStroje)
|
||||
SELECT @IDZamestnance, @CasZahajeni, @IDPracoviste, @IDStroje
|
||||
SET @idEROp = SCOPE_IDENTITY()
|
||||
|
||||
-- slepice
|
||||
IF OBJECT_ID(N'dbo.ep_Vyroba_InsertEvidRozpracOper_Po', N'P') IS NOT NULL
|
||||
EXEC dbo.ep_Vyroba_InsertEvidRozpracOper_Po @idEROp
|
||||
|
||||
|
||||
IF (@tranPred=0) ANd (@@TRANCOUNT>0)
|
||||
COMMIT TRAN
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF (@tranPred=0) ANd (@@TRANCOUNT>0)
|
||||
ROLLBACK TRAN
|
||||
SET @ErrMsg = ERROR_MESSAGE()
|
||||
INSERT #TabExtKom (Typ, Poznamka) SELECT 3, @ErrMsg
|
||||
SET @idEROp = NULL
|
||||
END CATCH
|
||||
|
||||
RETURN @idEROp
|
||||
@ -0,0 +1,67 @@
|
||||
-- dbo.ep_Vyroba_InsertEvidRozpracOperPol
|
||||
CREATE PROCEDURE dbo.ep_Vyroba_InsertEvidRozpracOperPol
|
||||
@IdEvidRozpOper INT,
|
||||
@IdPrikaz INT,
|
||||
@doklPrPost INT,
|
||||
@altPrPost NCHAR(1),
|
||||
@IdVyrCis INT=NULL,
|
||||
@mnozOdv NUMERIC(19,6)=0,
|
||||
@skCas NUMERIC(19,6)=0,
|
||||
@skCasT TINYINT=1,
|
||||
@skCasObsl NUMERIC(19,6)=0,
|
||||
@skCasObslT TINYINT=1,
|
||||
@errMsg NVARCHAR(500)=N'' OUT
|
||||
AS
|
||||
|
||||
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !!
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
DECLARE
|
||||
@tranPred INT,
|
||||
@idEROpPol INT=NULL
|
||||
|
||||
|
||||
IF OBJECT_ID(N'tempdb..#TabExtKom', N'U') IS NULL
|
||||
CREATE TABLE #TabExtKom (Typ TINYINT, Poznamka NVARCHAR(255) NOT NULL DEFAULT N'')
|
||||
|
||||
|
||||
|
||||
-- cisteni identity
|
||||
IF EXISTS (SELECT 1 FROM dbo.TabEvidRozpracOperR)
|
||||
BEGIN
|
||||
SELECT @idEROpPol=MAX(ID) FROM dbo.TabEvidRozpracOperR
|
||||
DBCC CHECKIDENT (TabEvidRozpracOperR, RESEED, @idEROpPol)
|
||||
END
|
||||
ELSE
|
||||
DBCC CHECKIDENT (TabEvidRozpracOperR, RESEED, 1)
|
||||
SET @idEROpPol=NULL
|
||||
|
||||
|
||||
|
||||
|
||||
BEGIN TRY
|
||||
SET @tranPred = @@TRANCOUNT
|
||||
IF (@tranPred=0) BEGIN TRAN
|
||||
|
||||
INSERT dbo.TabEvidRozpracOperR (IDEvidRozpracOper, IDPrikaz, DokladPrPostup, AltPrPostup, IDVyrCis, Mnoz_odv, Sk_cas, Sk_cas_T, Sk_cas_Obsluhy, Sk_cas_Obsluhy_T)
|
||||
SELECT @IdEvidRozpOper, @IdPrikaz, @doklPrPost, @altPrPost, @IdVyrCis, @mnozOdv, @skCas, @skCasT, @skCasObsl, @skCasObslT
|
||||
SET @idEROpPol = SCOPE_IDENTITY()
|
||||
|
||||
|
||||
IF OBJECT_ID(N'dbo.ep_Vyroba_InsertEvidRozpracOperPol_Po', N'P') IS NOT NULL
|
||||
EXEC dbo.ep_Vyroba_InsertEvidRozpracOperPol_Po @idEROpPol
|
||||
|
||||
|
||||
IF (@tranPred=0) ANd (@@TRANCOUNT>0)
|
||||
COMMIT TRAN
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF (@tranPred=0) ANd (@@TRANCOUNT>0)
|
||||
ROLLBACK TRAN
|
||||
SET @errMsg = ERROR_MESSAGE()
|
||||
INSERT #TabExtKom (Typ, Poznamka) SELECT 3, LEFT(@errMsg,255)
|
||||
SET @idEROpPol = NULL
|
||||
END CATCH
|
||||
|
||||
RETURN @idEROpPol
|
||||
160
_custom/INCOSystems/uCtrlCustom.pas
Normal file
160
_custom/INCOSystems/uCtrlCustom.pas
Normal file
@ -0,0 +1,160 @@
|
||||
unit uCtrlCustom;
|
||||
|
||||
interface
|
||||
{$I 'GlobalDefs.inc'}
|
||||
|
||||
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('/inco')]
|
||||
TINCOsysController = class(TBaseController)
|
||||
{
|
||||
strict private
|
||||
FSelfSvc: TINCOSysService;
|
||||
strict protected
|
||||
function GetINCOSysService: TINCOSysService;
|
||||
}
|
||||
public
|
||||
destructor Destroy; override;
|
||||
|
||||
[MVCPath('/zapisjson')] // zapis obecnych json data do Heliosu
|
||||
[MVCHTTPMethod([httpPOST])]
|
||||
[MVCSwagSummary('INCOSystems', 'Z<>pis JSON dat do db Heliosu', 'INCOZapisJSONDoHeliosu')]
|
||||
[MVCConsumes(TMVCMediaType.APPLICATION_JSON)]
|
||||
procedure ZapisJSONDoHeliosu (CTX: TWebContext);
|
||||
|
||||
[MVCPath('/poslednievidence')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('Skupina karet', 'Vrac<61> data skupiny karet dle jej<65>ho k<>du')]
|
||||
[MVCSwagParam(plQuery, 'idprikaz', 'ID vyrobniho prikazu', ptString, false, '1')]
|
||||
procedure PosledniEvidOperacePrikazu ([MVCFromQueryString('idprikaz', '')] sIdPrikaz: 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 = '';
|
||||
{$I globalConsts.inc}
|
||||
|
||||
|
||||
|
||||
|
||||
{ TINCOSysController }
|
||||
destructor TINCOSysController.Destroy;
|
||||
begin
|
||||
// FSelfSvc.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
|
||||
{
|
||||
function TINCOSysController.GetINCOSysService: TINCOSysService;
|
||||
begin
|
||||
inherited;
|
||||
if not Assigned(FSelfSvc) then
|
||||
FSelfSvc:= TINCOSysService.Create (datMod);
|
||||
result:= FSelfSvc;
|
||||
end;
|
||||
}
|
||||
|
||||
|
||||
|
||||
procedure TINCOSysController.ZapisJSONDoHeliosu (CTX: TWebContext);
|
||||
var respData, jsonData: string;
|
||||
// o: System.JSON.TJSONObject;
|
||||
begin
|
||||
respData:= '';
|
||||
try
|
||||
jsonData:= CTX.Request.Body.Trim;
|
||||
if (jsonData<>'') then
|
||||
GetINCOSysService.ZapisJsonDoHeliosu (jsonData, respData);
|
||||
ResponseStatus(HTTP_STATUS.OK, 'OK');
|
||||
Render(respData);
|
||||
except
|
||||
{$IFDEF NORENDER400}
|
||||
RenderStatusMessage (200);
|
||||
{$ELSE}
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end
|
||||
else
|
||||
raise;
|
||||
{$ENDIF}
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TINCOSysController.PosledniEvidOperacePrikazu (sIdPrikaz: string='');
|
||||
var idPrikaz: integer;
|
||||
params: TDictionary<string, string>;
|
||||
begin
|
||||
params:= TDictionary<string, string>.Create;
|
||||
|
||||
idPrikaz:= 0;
|
||||
sIdPrikaz:= sanitizeSQLString(sIdPrikaz);
|
||||
if not(TryStrToInt(sIdPrikaz, idPrikaz)) then
|
||||
idPrikaz:= 0;
|
||||
|
||||
if (idPrikaz>0) then
|
||||
params.Add('idPrikaz', idPrikaz.ToString);
|
||||
|
||||
params.Add('jenPosledni', '1');
|
||||
|
||||
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetVyrobaEvidenceOperaciService.GetByParams (params)));
|
||||
except
|
||||
{$IFDEF NORENDER400}
|
||||
RenderStatusMessage (200);
|
||||
{$ELSE}
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end
|
||||
else
|
||||
raise;
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
264
_custom/INCOSystems/uHeOObj_Custom.pas
Normal file
264
_custom/INCOSystems/uHeOObj_Custom.pas
Normal file
@ -0,0 +1,264 @@
|
||||
unit uHeOObj_Custom;
|
||||
{$RTTI EXPLICIT METHODS([vcPublic, vcPublished]) FIELDS([vcPrivate, vcProtected, vcPublic, vcPublished]) PROPERTIES([vcPublic, vcPublished])}
|
||||
|
||||
|
||||
interface
|
||||
{$I 'GlobalDefs.inc'}
|
||||
|
||||
uses
|
||||
System.Generics.Collections,
|
||||
MVCFramework.Serializer.Commons,
|
||||
MVCFramework.ActiveRecord,
|
||||
MVCFramework.Nullables,
|
||||
{$IFDEF SWAGGER}
|
||||
MVCFramework.Swagger.Commons,
|
||||
{$ENDIF}
|
||||
helTabsBIDs,
|
||||
uHeoObj_Base;
|
||||
|
||||
|
||||
|
||||
type
|
||||
[MVCNameCase(ncLowerCase)]
|
||||
TGatemaSDScanData = class(THeliosObjekty)
|
||||
private
|
||||
FIDDokladSD: integer;
|
||||
FIDZdrojSD: NullableInt32;
|
||||
FIDPolozky: NullableInt32;
|
||||
FIDPrikaz: NullableInt32;
|
||||
FDokladPrKV: NullableInt32;
|
||||
FDokladPrVPV: NullableInt32;
|
||||
FIDPohZbo: NullableInt32;
|
||||
FIDVyrCS_Obj: NullableInt32;
|
||||
FIDInvItem: NullableInt32;
|
||||
FIDPohZbo_New: NullableInt32;
|
||||
FIDKmenZbozi: NullableInt32;
|
||||
FIDStavSkladu: NullableInt32;
|
||||
FVyrCislo: NullableString;
|
||||
FPopisSarze: NullableString;
|
||||
FMnozstvi: Single;
|
||||
FMnozstviEvidence: Single;
|
||||
FMJ: NullableString;
|
||||
FMJEvidence: NullableString;
|
||||
FBarCode: NullableString;
|
||||
FDatumExpirace: NullableTDateTime;
|
||||
FKodBaleni: NullableString;
|
||||
FDatPorizeni: TDateTime;
|
||||
FGenerovat: NullableBoolean;
|
||||
FJedinecneCislo: NullableString;
|
||||
public
|
||||
{
|
||||
[MVCTableField('ID', [foPrimaryKey, foReadOnly])]
|
||||
[MVCColumn('ID')]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'ID', 'ID výrobní operace', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength
|
||||
property ID: integer read FID write FID;
|
||||
}
|
||||
[MVCColumn('IDDokladSD', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDDokladSD', 'ID dokladu SD', true, false)]
|
||||
property IDDokladSD: integer read FIDDokladSD write FIDDokladSD;
|
||||
|
||||
[MVCColumn('IDZdrojSD', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDZdrojSD', 'ID zdorj SD', false, true)]
|
||||
property IDZdrojSD: NullableInt32 read FIDZdrojSD write FIDZdrojSD;
|
||||
|
||||
[MVCColumn('IDPolozky', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDPolozky', 'ID položky', false, true)]
|
||||
property IDPolozky: NullableInt32 read FIDPolozky write FIDPolozky;
|
||||
|
||||
[MVCColumn('IDPrikaz', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID výrobního příkazu', false, true)]
|
||||
property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz;
|
||||
|
||||
[MVCColumn('VyrCislo', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'VyrCislo', 'Výrobní číslo', true, false, 1, 100)]
|
||||
property VyrCislo: NullableString read FVyrCislo write FVyrCislo;
|
||||
|
||||
[MVCColumn('PopisSarze', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'PopisSarze', 'Popis šarže', true, false, 1, 100)]
|
||||
property PopisSarze: NullableString read FPopisSarze write FPopisSarze;
|
||||
|
||||
[MVCColumn('Mnozstvi')]
|
||||
[MVCSwagJsonSchemaField('Mnozstvi', 'Množství', true, false)]
|
||||
property Mnozstvi: Single read FMnozstvi write FMnozstvi;
|
||||
|
||||
[MVCColumn('MnozstviEvidence')]
|
||||
[MVCSwagJsonSchemaField('MnozstviEvidence', 'Množství v evidenční jednotce', true, false)]
|
||||
property MnozstviEvidence: Single read FMnozstviEvidence write FMnozstviEvidence;
|
||||
|
||||
[MVCColumn('DatumExpirace')]
|
||||
[MVCSwagJsonSchemaField('DatumExpirace', 'Datum expirace', false, true)]
|
||||
property DatumExpirace: NullableTDatetime read FDatumExpirace write FDatumExpirace;
|
||||
|
||||
[MVCColumn('DatPorizeni')]
|
||||
[MVCSwagJsonSchemaField('DatPorizeni', 'Datum pořízení', true, false)]
|
||||
property DatPorizeni: TDatetime read FDatPorizeni write FDatPorizeni;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[MVCNameCase(ncLowerCase)]
|
||||
TGatemaSDZdrojData = class(THeliosObjekty)
|
||||
private
|
||||
FIDDokladSD: integer;
|
||||
FIDDokZbo: NullableInt32;
|
||||
FIDPrikaz: NullableInt32;
|
||||
FGUIDDokladu: NullableTGUID;
|
||||
public
|
||||
[MVCColumn('IDDokladSD', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDDokladSD', 'ID dokladu SD', true, false)]
|
||||
property IDDokladSD: integer read FIDDokladSD write FIDDokladSD;
|
||||
|
||||
[MVCColumn('IDDokZbo', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'FIDDokZbo', 'ID dokladu OZ', false, true)]
|
||||
property IDDokZbo: NullableInt32 read FIDDokZbo write FIDDokZbo;
|
||||
|
||||
[MVCColumn('IDPrikaz', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID výrobního příkazu', false, true)]
|
||||
property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz;
|
||||
|
||||
[MVCColumn('GUIDDokladu', false)]
|
||||
[MVCSwagJsonSchemaField(stGuid, 'GUIDDokladu', 'GUID dokladu', false, true)]
|
||||
property GUIDDokladu: NullableTGUID read FGUIDDokladu write FGUIDDokladu;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
[MVCNameCase(ncLowerCase)]
|
||||
TGatemaSDDoklad = class(THeliosObjekty)
|
||||
private
|
||||
FTypDokladu: integer;
|
||||
FPodtypDokladu: NullableInt32;
|
||||
FRadaDokladu: NullableString;
|
||||
FDruhPohybuZbo: NullableInt32;
|
||||
FSklad: NullableString;
|
||||
FSkladCil: NullableString;
|
||||
FIDPrikaz: NullableInt32;
|
||||
FIDDokZbo: NullableInt32;
|
||||
FIDDokZbo_New: NullableInt32;
|
||||
FGUIDDokZbo: NullableTGUID;
|
||||
FGUIDDokZbo_New: NullableTGUID;
|
||||
FIDInvHead: NullableInt32;
|
||||
FIDOrg: NullableInt32;
|
||||
FCisloOrg: NullableInt32;
|
||||
FDatumPripadu: NullableTDateTime;
|
||||
FDatPorizeni: TDateTime;
|
||||
FDatGenerovani: NullableTDateTime;
|
||||
FScanData: TObjectList<TGatemaSDScanData>;
|
||||
procedure SetSDScanData (const Value: TObjectList<TGatemaSDScanData>);
|
||||
public
|
||||
constructor Create; virtual;
|
||||
destructor Destroy; override;
|
||||
{
|
||||
[MVCTableField('ID', [foPrimaryKey, foReadOnly])]
|
||||
[MVCColumn('ID')]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'ID', 'ID výrobní operace', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength
|
||||
property ID: integer read FID write FID;
|
||||
}
|
||||
[MVCColumn('TypDokladu', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'TypDokladu', 'Typ dokladu', true, false)]
|
||||
property TypDokladu: integer read FTypDokladu write FTypDokladu;
|
||||
|
||||
[MVCColumn('PodtypDokladu', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'PodtypDokladu', 'Podtyp dokladu', false, true)]
|
||||
property PodtypDokladu: NullableInt32 read FPodtypDokladu write FPodtypDokladu;
|
||||
|
||||
[MVCColumn('RadaDokladu', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'RadaDokladu', 'Řada dokladu', false, true)]
|
||||
property RadaDokladu: NullableString read FRadaDokladu write FRadaDokladu;
|
||||
|
||||
[MVCColumn('DruhPohybuZbo', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'DruhPohybuZbo', 'Druh pohybu zboží', false, true)]
|
||||
property DruhPohybuZbo: NullableInt32 read FDruhPohybuZbo write FDruhPohybuZbo;
|
||||
|
||||
[MVCColumn('Sklad', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'Sklad', 'Sklad', false, true)]
|
||||
property Sklad: NullableString read FSklad write FSklad;
|
||||
|
||||
[MVCColumn('SkladCil', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'SkladCil', 'Cílový sklad', false, true)]
|
||||
property SkladCil: NullableString read FSkladCil write FSkladCil;
|
||||
|
||||
[MVCColumn('IDPrikaz', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID výrobního příkazu', false, true)]
|
||||
property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz;
|
||||
|
||||
[MVCColumn('IDDokZbo', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDDokZbo', 'ID dokladu OZ', false, true)]
|
||||
property IDDokZbo: NullableInt32 read FIDDokZbo write FIDDokZbo;
|
||||
|
||||
[MVCColumn('IDDokZbo_New', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDDokZbo_New', 'ID nového dokladu OZ', false, true)]
|
||||
property IDDokZbo_New: NullableInt32 read FIDDokZbo_New write FIDDokZbo_New;
|
||||
|
||||
[MVCColumn('IDInvHead', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDInvHead', 'ID dokladu inventury', false, true)]
|
||||
property IDInvHead: NullableInt32 read FIDInvHead write FIDInvHead;
|
||||
|
||||
[MVCColumn('IDOrg', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDOrg', 'ID organizace', false, true)]
|
||||
property IDOrg: NullableInt32 read FIDOrg write FIDOrg;
|
||||
|
||||
[MVCColumn('CisloOrg', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'CisloOrg', 'Číslo organizace', false, true)]
|
||||
property CisloOrg: NullableInt32 read FCisloOrg write FCisloOrg;
|
||||
|
||||
[MVCColumn('DatumPripadu')]
|
||||
[MVCSwagJsonSchemaField('DatumPripadu', 'Datum případu', false, true)]
|
||||
property DatumPripadu: NullableTDatetime read FDatumPripadu write FDatumPripadu;
|
||||
|
||||
[MVCColumn('DatPorizeni')]
|
||||
[MVCSwagJsonSchemaField('DatPorizeni', 'Datum pořízení', true, false)]
|
||||
property DatPorizeni: TDatetime read FDatPorizeni write FDatPorizeni;
|
||||
|
||||
[MVCColumn('DatGenerovani')]
|
||||
[MVCSwagJsonSchemaField('DatGenerovani', 'Datum generování dokladu OZ', false, true)]
|
||||
property DatGenerovani: NullableTDatetime read FDatGenerovani write FDatGenerovani;
|
||||
|
||||
[MapperListOf(TGatemaSDScanData)]
|
||||
property ScanData: TObjectList<TGatemaSDScanData> read FScanData write SetSDScanData;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
System.SysUtils,
|
||||
System.StrUtils,
|
||||
System.RegularExpressions;
|
||||
|
||||
|
||||
|
||||
{ TGatemaSDDoklad }
|
||||
|
||||
constructor TGatemaSDDoklad.Create;
|
||||
begin
|
||||
inherited;
|
||||
FScanData:= TObjectList<TGatemaSDScanData>.Create;
|
||||
end;
|
||||
|
||||
|
||||
destructor TGatemaSDDoklad.Destroy;
|
||||
begin
|
||||
// if (FPohybyOZ<>nil) then
|
||||
// FPohybyOZ.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
|
||||
procedure TGatemaSDDoklad.SetSDScanData(const Value: TObjectList<TGatemaSDScanData>);
|
||||
begin
|
||||
if (Value<>FScanData) then
|
||||
begin
|
||||
FScanData.Free;
|
||||
FScanData:= Value;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
140
_custom/INCOSystems/uSvcCustom.pas
Normal file
140
_custom/INCOSystems/uSvcCustom.pas
Normal file
@ -0,0 +1,140 @@
|
||||
unit uSvcCustom;
|
||||
|
||||
interface
|
||||
{$I 'GlobalDefs.inc'}
|
||||
|
||||
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
|
||||
{$I C:\_zakaznici\pluginy_obecne\HDCApi2\globalConsts.inc}
|
||||
|
||||
|
||||
type
|
||||
TINCOSysService = 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;
|
||||
|
||||
|
||||
|
||||
|
||||
{ TINCOSysService }
|
||||
|
||||
procedure TINCOSysService.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.
|
||||
5
_custom/INCOSystems/uTabs.inc
Normal file
5
_custom/INCOSystems/uTabs.inc
Normal file
@ -0,0 +1,5 @@
|
||||
const
|
||||
tblMichPozadavek = '[dbo].[_hdc_DataZone_MicharnaPozadavek]';
|
||||
tblMichSpotreba = '[dbo].[_hdc_DataZone_MicharnaSpotreba]';
|
||||
tblPrijataJsonData = '[dbo].[_hdc_ph_PrijataJsonData]'; // data z Pro Holdingu
|
||||
tblVyrobaObjednavky = '[dbo].[_TabVyroba_Objednavky]'; // data objednavek z Pro Holdingu
|
||||
2
_custom/INCOSystems/uWebModCustom.inc
Normal file
2
_custom/INCOSystems/uWebModCustom.inc
Normal file
@ -0,0 +1,2 @@
|
||||
FEngine.AddController (TINCOsysController);
|
||||
|
||||
BIN
_custom/INCOSystems/zdroje.RES
Normal file
BIN
_custom/INCOSystems/zdroje.RES
Normal file
Binary file not shown.
9
_custom/INCOSystems/zdroje.rc
Normal file
9
_custom/INCOSystems/zdroje.rc
Normal file
@ -0,0 +1,9 @@
|
||||
col_TabPredna_EXT RCDATA .\sql\col_TabPredna_EXT.sql
|
||||
col_TabKmenZbozi_EXT RCDATA .\sql\col_TabKmenZbozi_EXT.sql
|
||||
col_TabEvidRozpracOper_EXT RCDATA .\sql\col_TabEvidRozpracOper_EXT.sql
|
||||
col_TabPrPostup_EXT RCDATA .\sql\col_TabPrPostup_EXT.sql
|
||||
ep_Vyroba_GenVydejZeMzdy RCDATA .\sql\ep_Vyroba_GenVydejZeMzdy.sql
|
||||
ep_Vyroba_GenOdvodZeMzdy RCDATA .\sql\ep_Vyroba_GenOdvodZeMzdy.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
|
||||
3
_custom/Kdynium/customDefs.inc
Normal file
3
_custom/Kdynium/customDefs.inc
Normal file
@ -0,0 +1,3 @@
|
||||
,uHeOObj_Custom in 'uHeOObj_Custom.pas'
|
||||
,uCtrlCustom in 'uCtrlCustom.pas'
|
||||
,uSvcCustom in 'uSvcCustom.pas'
|
||||
121
_custom/Kdynium/uCtrlCustom.pas
Normal file
121
_custom/Kdynium/uCtrlCustom.pas
Normal file
@ -0,0 +1,121 @@
|
||||
unit uCtrlCustom;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
mvcframework,
|
||||
mvcframework.Commons,
|
||||
mvcframework.Serializer.Commons,
|
||||
mvcframework.Serializer.Intf,
|
||||
System.Generics.Collections,
|
||||
System.RegularExpressions,
|
||||
System.StrUtils,
|
||||
System.SysUtils,
|
||||
JsonDataObjects,
|
||||
uCommons,
|
||||
uCtrlBase,
|
||||
uSvc_Base,
|
||||
uHeoObj_Base,
|
||||
uHeOObj_Custom,
|
||||
uSvcCustom;
|
||||
|
||||
type
|
||||
|
||||
[MVCDoc('Zdroj Nadoba')]
|
||||
[MVCPath('/planlisu')]
|
||||
TKDYPlanLisuController = class(TBaseController)
|
||||
private
|
||||
FSelfSvc: TKDYPlanLisuService;
|
||||
public
|
||||
procedure InitController;
|
||||
|
||||
[MVCDoc('Vrati metadata')]
|
||||
[MVCPath('/meta')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
procedure GetMeta;
|
||||
|
||||
[MVCPath('/($id)')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('KDYPlanNasazeniLisu', 'Vrací data plánu nasazení lisů', 'GetByID')]
|
||||
[MVCSwagParam(plPath, 'id', 'ID plánu', ptString, true)]
|
||||
[MVCSwagParam(plPath, 'barcode', 'Barcode plánu', ptString, true)]
|
||||
[MVCSwagResponses(200, 'Success', TStavSkladu, true)]
|
||||
procedure GetByID(id: string='';
|
||||
[MVCFromQueryString('barcode', '')] barcode: string=''
|
||||
);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
implementation
|
||||
uses FireDAC.Stan.Option,
|
||||
FireDAC.Comp.Client,
|
||||
FireDAC.Stan.Param,
|
||||
MVCFramework.FireDAC.Utils,
|
||||
MVCFramework.DataSet.Utils,
|
||||
uDataMod;
|
||||
|
||||
const
|
||||
selSloupce = '';
|
||||
|
||||
{ TKDYPlanLisuController }
|
||||
|
||||
procedure TKDYPlanLisuController.InitController;
|
||||
begin
|
||||
inherited;
|
||||
if (FSelfSvc=nil) then
|
||||
FSelfSvc:= TKDYPlanLisuService.Create(datMod);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TKDYPlanLisuController.GetByID(id: string=''; barcode: string='');
|
||||
var iId: integer;
|
||||
params: TDictionary<string, string>;
|
||||
begin
|
||||
params:= TDictionary<string, string>.Create;
|
||||
|
||||
iId:= 0;
|
||||
id:= sanitizeSQLString(id);
|
||||
if not(TryStrToInt(id, iId)) then
|
||||
iId:= 0;
|
||||
if (iId>0) then
|
||||
params.Add('id', iId.ToString);
|
||||
|
||||
try
|
||||
InitController;
|
||||
|
||||
Render(ObjectDict().Add('data', FSelfSvc.GetByParams(params))); // viz uSvcCustom.pas
|
||||
except
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 404);
|
||||
end
|
||||
else
|
||||
raise;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TKDYPlanLisuController.GetMeta;
|
||||
begin
|
||||
try
|
||||
InitController;
|
||||
|
||||
Render(ObjectDict().Add('data', FSelfSvc.GetMeta));
|
||||
except
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 404);
|
||||
end
|
||||
else
|
||||
raise;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
40
_custom/Kdynium/uHeOObj_Custom.pas
Normal file
40
_custom/Kdynium/uHeOObj_Custom.pas
Normal file
@ -0,0 +1,40 @@
|
||||
unit uHeOObj_Custom;
|
||||
{$RTTI EXPLICIT METHODS([vcPublic, vcPublished]) FIELDS([vcPrivate, vcProtected, vcPublic, vcPublished]) PROPERTIES([vcPublic, vcPublished])}
|
||||
|
||||
|
||||
interface
|
||||
{$I 'GlobalDefs.inc'}
|
||||
|
||||
uses
|
||||
System.Generics.Collections,
|
||||
MVCFramework.Serializer.Commons,
|
||||
MVCFramework.ActiveRecord,
|
||||
MVCFramework.Nullables,
|
||||
{$IFDEF SWAGGER}
|
||||
MVCFramework.Swagger.Commons,
|
||||
{$ENDIF}
|
||||
helTabsBIDs,
|
||||
uHeoObj_Base;
|
||||
|
||||
const
|
||||
tblPlanNasazLisu = '[dbo].[_hdc_TabPlanNasazeniLisu]';
|
||||
tblPlanNasazLisuR = '[dbo].[_hdc_TabPlanNasazeniLisuR]';
|
||||
tblPlanNasazLisuVstr = '[dbo].[_hdc_TabPlanNasazeniLisuVstr]';
|
||||
tblPlanNasazLisuZm = '[dbo].[_hdc_TabPlanNasazeniLisuZmetky]';
|
||||
|
||||
|
||||
type
|
||||
[MVCNameCase(ncLowerCase)]
|
||||
TKDYPlanLisu = class(THeliosObjekty)
|
||||
private
|
||||
FIndexZmeny: NullableInt32;
|
||||
public
|
||||
[MVCColumn('Cislo', true)] // is PrimaryKey
|
||||
property IndexZmeny: NullableInt32 read FIndexZmeny write FIndexZmeny;
|
||||
end;
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
|
||||
end.
|
||||
87
_custom/Kdynium/uSvcCustom.pas
Normal file
87
_custom/Kdynium/uSvcCustom.pas
Normal file
@ -0,0 +1,87 @@
|
||||
unit uSvcCustom;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
System.Generics.Collections,
|
||||
System.SysUtils,
|
||||
JsonDataObjects,
|
||||
uSvc_Base,
|
||||
uCommons,
|
||||
uHeoObj_Base,
|
||||
uHeOObj_Custom;
|
||||
|
||||
type
|
||||
|
||||
TKDYPlanLisuService = class(TServiceBase)
|
||||
public
|
||||
function GetAll: TObjectList<TKDYPlanLisu>;
|
||||
function GetByParams(params: TDictionary<string, string>): TObjectList<TKDYPlanLisu>;
|
||||
function GetByID (const AID: integer): TKDYPlanLisu;
|
||||
function GetMeta: TJSONObject;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
System.StrUtils,
|
||||
FireDAC.Stan.Option,
|
||||
FireDAC.Comp.Client,
|
||||
FireDAC.Stan.Param,
|
||||
MVCFramework.FireDAC.Utils,
|
||||
MVCFramework.DataSet.Utils,
|
||||
MVCFramework.Serializer.Commons,
|
||||
helTabsBIDs;
|
||||
|
||||
|
||||
{ TKDYPlanLisuService }
|
||||
|
||||
function TKDYPlanLisuService.GetAll:TObjectList<TKDYPlanLisu>;
|
||||
var lSQL: string;
|
||||
begin
|
||||
lSQL:= 'SELECT ' + GetTabCols('dbo', tblPlanNasazLisu) + ' FROM ' + tblPlanNasazLisu + ' ORDER BY ID';
|
||||
FDM.sqlQry1.Open(lSQL, []);
|
||||
result:= FDM.sqlQry1.AsObjectList<TKDYPlanLisu>;
|
||||
FDM.sqlQry1.Close;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
function TKDYPlanLisuService.GetByParams(params: TDictionary<string, string>): TObjectList<TKDYPlanLisu>;
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
|
||||
|
||||
function TKDYPlanLisuService.GetByID (const AID: integer): TKDYPlanLisu;
|
||||
var lSQL: string;
|
||||
begin
|
||||
lSQL:= 'SELECT ' + GetTabCols('dbo', tblPlanNasazLisu) + ' FROM ' + tblPlanNasazLisu + ' WHERE ID=:ID';
|
||||
FDM.sqlQry1.Open(lSQL, [AID]);
|
||||
try
|
||||
if not(FDM.sqlQry1.EOF) then
|
||||
result:= FDM.sqlQry1.AsObject<TKDYPlanLisu>
|
||||
else
|
||||
raise EServiceException.Create('Plán s ID ' + AID.ToString + ' nebyl nalezen.');
|
||||
finally
|
||||
FDM.sqlQry1.Close;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
function TKDYPlanLisuService.GetMeta: TJSONObject;
|
||||
var lSQL: string;
|
||||
begin
|
||||
try
|
||||
lSQL:= 'SELECT ' + GetTabCols('dbo', tblPlanNasazLisu) + ' FROM ' + tblPlanNasazLisu + ' WHERE 1=0';
|
||||
FDM.sqlQry1.Open(lSQL);
|
||||
Result := FDM.sqlQry1.MetadataAsJSONObject();
|
||||
finally
|
||||
FDM.sqlQry1.Close;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
1
_custom/Kdynium/uWebModCustom.inc
Normal file
1
_custom/Kdynium/uWebModCustom.inc
Normal file
@ -0,0 +1 @@
|
||||
FEngine.AddController(TKDYPlanLisuController);
|
||||
3
_custom/Koramex/customDefs.inc
Normal file
3
_custom/Koramex/customDefs.inc
Normal file
@ -0,0 +1,3 @@
|
||||
,uHeOObj_Custom in 'uHeOObj_Custom.pas'
|
||||
,uCtrlCustom in 'uCtrlCustom.pas'
|
||||
,uSvcCustom in 'uSvcCustom.pas'
|
||||
586
_custom/Koramex/uCtrlCustom.pas
Normal file
586
_custom/Koramex/uCtrlCustom.pas
Normal file
@ -0,0 +1,586 @@
|
||||
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,
|
||||
uHeoObj_Base,
|
||||
uHeOObj_Custom,
|
||||
uSvcCustom,
|
||||
MVCFramework.Swagger.Commons; // kvuli dokumentaci
|
||||
|
||||
type
|
||||
|
||||
[MVCPath('/vyroba-pila')]
|
||||
TKRXVyrobaPilaController = class(TBaseController)
|
||||
strict private
|
||||
FSelfSvc: TKoramexService;
|
||||
strict protected
|
||||
function GetKoramexService: TKoramexService;
|
||||
public
|
||||
destructor Destroy; override;
|
||||
|
||||
[MVCPath('hlavicky')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('Hlavičky evidence práce pily', 'Vrátí seznam hlaviček evidence pily', 'GetHlavicky')]
|
||||
[MVCSwagParam(plQuery, 'cislozam', 'Osobní číslo zaměstnance', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'radky', 'Včetně řádků (0/1)', ptString, false)]
|
||||
procedure GetHlavicky ([MVCFromQueryString('cislozam', '')] cislozam: string='';
|
||||
[MVCFromQueryString('radky', '')] radky: string=''
|
||||
);
|
||||
|
||||
[MVCPath('operace')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('Výrobní operace', 'Vrátí seznam operací výrobních příkazů s živými kusy', 'GetOperace')]
|
||||
[MVCSwagParam(plQuery, 'idpracoviste', 'ID pracoviště', ptString, true)]
|
||||
[MVCSwagParam(plQuery, 'zakazka', 'Osobní číslo zaměstnance', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'idkmenmaterial', 'ID kmenové karty materiálu', ptString, false)]
|
||||
procedure GetOperace ([MVCFromQueryString('idpracoviste', '')] idPrac: string='';
|
||||
[MVCFromQueryString('zakazka', '')] zakazka: string='';
|
||||
[MVCFromQueryString('idkmenmaterial', '')] idKmenMat: string=''
|
||||
);
|
||||
|
||||
end;
|
||||
|
||||
|
||||
|
||||
[MVCPath('/kooperace')]
|
||||
TKRXVyrobaCisKooperaceController = class(TTPVCisKooperaciController)
|
||||
strict private
|
||||
FSelfSvc: TKoramexService;
|
||||
strict protected
|
||||
function GetKoramexService: TKoramexService;
|
||||
public
|
||||
destructor Destroy; override;
|
||||
|
||||
// [MVCDoc('Pomocí POST zapíše data DataZone tasků (kontroluje duplicitu,vrací NEW, OLD nebo NOT OK s textem chyby)')]
|
||||
[MVCPath('/zapis')] // zapis pozadavku prevodu na mezisklad
|
||||
[MVCHTTPMethod([httpPOST])]
|
||||
[MVCSwagSummary('Požadavek převodu na mezisklad', 'Zápis požadavku převodu na mezisklad', 'ZapisPozadavku')]
|
||||
[MVCConsumes(TMVCMediaType.APPLICATION_JSON)]
|
||||
procedure ZapisPozadavku(CTX: TWebContext);
|
||||
|
||||
[MVCPath('/potvrzeni')] // vracti potvrzeni zapisu pozadavku
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('Požadavek převodu na mezisklad', 'Potvrzení požadavku převodu na mezisklad', 'PotvrzeniPozadavku')]
|
||||
[MVCSwagParam(plPath, 'id', 'ID požadavku', ptString, false)]
|
||||
procedure PotvrzeniPozadavku(id: string=''
|
||||
);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[MVCPath('/sdserver/doklad')]
|
||||
TGatemaSDDokladController = class(TBaseController)
|
||||
strict private
|
||||
FSelfSvc: TGatemaSDDokladService;
|
||||
strict protected
|
||||
function GetGatemaSDDokladService: TGatemaSDDokladService;
|
||||
public
|
||||
destructor Destroy; override;
|
||||
|
||||
[MVCPath]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('GatemaSD_Doklad', 'Vrací hlavičku dokladů SD Serveru', 'GetAll')]
|
||||
[MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'seznam', '1=jen seznam se základními údaji', ptString, false)]
|
||||
procedure GetAll([MVCFromQueryString('od', '')] odDatum: string='';
|
||||
[MVCFromQueryString('seznam', '')] jenSeznam: string='0'
|
||||
);
|
||||
|
||||
[MVCPath('/meta')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('GatemaSD_Doklad', 'Vrací metadata', 'GetMeta')]
|
||||
procedure GetMeta;
|
||||
|
||||
[MVCPath('/($id)')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('GatemaSD_Doklad', 'Vrací data dokladu SD Serveru', 'GetByID')]
|
||||
[MVCSwagParam(plPath, 'id', 'ID dokladu', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'typdokl', 'Typ dokladu', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'druhpohybu', 'Druh pohybu zboží', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'sklad', 'Sklad', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'format', 'Formát (1=dokladOZ)', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'do', 'Datum do ve formátu RRRRMMDD', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'seznam', '1=jen seznam se základními údaji', ptString, false)]
|
||||
[MVCSwagResponses(200, 'Success', TGatemaSDDoklad, true)]
|
||||
procedure GetByID(id: string='';
|
||||
[MVCFromQueryString('typdokl', '')] typDokl: string='';
|
||||
[MVCFromQueryString('druhpohybu', '')] druhPohybu: string='';
|
||||
[MVCFromQueryString('sklad', '')] sklad: string='';
|
||||
[MVCFromQueryString('format', '')] formatX: string='';
|
||||
[MVCFromQueryString('od', '')] odDatum: string='';
|
||||
[MVCFromQueryString('do', '')] doDatum: string='';
|
||||
[MVCFromQueryString('seznam', '')] jenSeznam: string='0'
|
||||
);
|
||||
|
||||
end;
|
||||
|
||||
|
||||
|
||||
[MVCPath('/sdserver/dokladoz')]
|
||||
TGatemaSDDokladOZController = class(TBaseController)
|
||||
strict private
|
||||
FSelfSvc: TSDGDokladOZService;
|
||||
strict protected
|
||||
function GetSDGDokladOZService: TSDGDokladOZService;
|
||||
public
|
||||
destructor Destroy; override;
|
||||
|
||||
[MVCPath]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('GatemaSD_DokladOZ', 'Vrací hlavičku dokladů OZ s vazbou na SD Server', 'GetAll')]
|
||||
[MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'seznam', '1=jen seznam se základními údaji', ptString, false)]
|
||||
procedure GetAll([MVCFromQueryString('od', '')] odDatum: string='';
|
||||
[MVCFromQueryString('seznam', '')] jenSeznam: string='0'
|
||||
);
|
||||
|
||||
[MVCPath('/meta')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('GatemaSD_DokladOZ', 'Vrací metadata', 'GetMeta')]
|
||||
procedure GetMeta;
|
||||
|
||||
[MVCPath('/($id)')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('GatemaSD_DokladOZ', 'Vrací data dokladu OZ s vazbou na SD Server', 'GetByID')]
|
||||
[MVCSwagParam(plPath, 'id', 'ID dokladu', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'typdokl', 'Typ dokladu', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'druhpohybu', 'Druh pohybu zboží', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'sklad', 'Sklad', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'format', 'Formát (1=dokladOZ)', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'do', 'Datum do ve formátu RRRRMMDD', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'seznam', '1=jen seznam se základními údaji', ptString, false)]
|
||||
[MVCSwagResponses(200, 'Success', TGatemaSDDoklad, true)]
|
||||
procedure GetByID(id: string='';
|
||||
[MVCFromQueryString('typdokl', '')] typDokl: string='';
|
||||
[MVCFromQueryString('druhpohybu', '')] druhPohybu: string='';
|
||||
[MVCFromQueryString('sklad', '')] sklad: string='';
|
||||
[MVCFromQueryString('format', '')] formatX: string='';
|
||||
[MVCFromQueryString('od', '')] odDatum: string='';
|
||||
[MVCFromQueryString('do', '')] doDatum: string='';
|
||||
[MVCFromQueryString('seznam', '')] jenSeznam: string='0'
|
||||
);
|
||||
|
||||
end;
|
||||
|
||||
|
||||
|
||||
[MVCPath('/sdserver/scandata')]
|
||||
TGatemaSDScanDataController = class(TBaseController)
|
||||
strict private
|
||||
FSelfSvc: TGatemaSDScanDataService;
|
||||
strict protected
|
||||
function GetGatemaSDScanDataService: TGatemaSDScanDataService;
|
||||
public
|
||||
destructor Destroy; override;
|
||||
|
||||
[MVCPath('/meta')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('GatemaSD_ScanData', 'Vrací metadata', 'GetMeta')]
|
||||
procedure GetMeta;
|
||||
|
||||
[MVCPath('/($id)')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
[MVCSwagSummary('GatemaSD_ScanData', 'Vrací naskenovaná data', 'GetByID')]
|
||||
[MVCSwagParam(plPath, 'id', 'ID scan data', ptString, false)]
|
||||
[MVCSwagParam(plQuery, 'iddoklad', 'ID dokladu SD', ptString, false)]
|
||||
[MVCSwagResponses(200, 'Success', TGatemaSDScanData, true)]
|
||||
procedure GetByID(id: string='';
|
||||
[MVCFromQueryString('iddoklad', '')] iddoklad: 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;
|
||||
|
||||
const
|
||||
selSloupce = '';
|
||||
|
||||
|
||||
|
||||
{ TKRXVyrobaPilaController }
|
||||
destructor TKRXVyrobaPilaController.Destroy;
|
||||
begin
|
||||
FSelfSvc.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{ TGatemaSDDokladOZController }
|
||||
|
||||
destructor TGatemaSDDokladOZController.Destroy;
|
||||
begin
|
||||
FSelfSvc.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
function TGatemaSDDokladOZController.GetSDGDokladOZService: TSDGDokladOZService;
|
||||
begin
|
||||
inherited;
|
||||
if not Assigned(FSelfSvc) then
|
||||
FSelfSvc:= TSDGDokladOZService.Create(datMod);
|
||||
result:= FSelfSvc;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TGatemaSDDokladOZController.GetAll(odDatum: string=''; jenSeznam: string='0');
|
||||
var params: TDictionary<string, string>;
|
||||
begin
|
||||
params:= TDictionary<string, string>.Create;
|
||||
odDatum:= sanitizeSQLString(odDatum);
|
||||
if (odDatum<>'') then
|
||||
params.Add('odDatum', odDatum);
|
||||
|
||||
jenSeznam:= sanitizeSQLString(jenSeznam);
|
||||
if (jenSeznam='1') then
|
||||
params.Add('seznam', '1');
|
||||
|
||||
try
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetSDGDokladOZService.GetByParams(params))); // viz uSvcCustom.pas
|
||||
except
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
on E:Exception do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
params.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TGatemaSDDokladOZController.GetByID(id: string=''; typDokl: string=''; druhPohybu: string=''; sklad: string=''; formatX: string=''; odDatum: string=''; doDatum: string='';
|
||||
jenSeznam: string='0');
|
||||
var iId: integer;
|
||||
params: TDictionary<string, string>;
|
||||
begin
|
||||
params:= TDictionary<string, string>.Create;
|
||||
|
||||
iId:= 0;
|
||||
id:= sanitizeSQLString(id);
|
||||
if (id<>'') then
|
||||
if not(TryStrToInt(id, iId)) then
|
||||
iId:= 0;
|
||||
if (iId>0) then
|
||||
params.Add('id', iId.ToString);
|
||||
|
||||
typDokl:= sanitizeSQLString(sklad);
|
||||
if (typDokl<>'') then
|
||||
params.Add('typDokladu', typDokl);
|
||||
|
||||
druhPohybu:= sanitizeSQLString(sklad);
|
||||
if (druhPohybu<>'') then
|
||||
params.Add('druhPohybu', druhPohybu);
|
||||
|
||||
formatX:= sanitizeSQLString(formatX); // pro zobrazeni jako DokladOZ
|
||||
if (formatX<>'') then
|
||||
if (formatX='1') then
|
||||
params.Add('format', formatX);
|
||||
|
||||
sklad:= sanitizeSQLString(sklad);
|
||||
if (sklad<>'') then
|
||||
params.Add('sklad', sklad);
|
||||
|
||||
odDatum:= sanitizeSQLString(odDatum);
|
||||
if (odDatum<>'') then
|
||||
params.Add('odDatum', odDatum);
|
||||
|
||||
doDatum:= sanitizeSQLString(doDatum);
|
||||
if (doDatum<>'') then
|
||||
params.Add('doDatum', doDatum);
|
||||
|
||||
jenSeznam:= sanitizeSQLString(jenSeznam);
|
||||
if (jenSeznam='1') then
|
||||
params.Add('seznam', '1');
|
||||
|
||||
try
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetSDGDokladOZService.GetByParams(params))); // viz uSvcCustom.pas
|
||||
except
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
on E:Exception do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
params.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TGatemaSDDokladOZController.GetMeta;
|
||||
begin
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetSDGDokladOZService.GetMeta));
|
||||
except
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
on E:Exception do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{ TGatemaSDDokladController }
|
||||
|
||||
destructor TGatemaSDDokladController.Destroy;
|
||||
begin
|
||||
FSelfSvc.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
|
||||
function TGatemaSDDokladController.GetGatemaSDDokladService: TGatemaSDDokladService;
|
||||
begin
|
||||
inherited;
|
||||
if not Assigned(FSelfSvc) then
|
||||
FSelfSvc:= TGatemaSDDokladService.Create(datMod);
|
||||
result:= FSelfSvc;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TGatemaSDDokladController.GetAll(odDatum: string=''; jenSeznam: string='0');
|
||||
var params: TDictionary<string, string>;
|
||||
begin
|
||||
params:= TDictionary<string, string>.Create;
|
||||
odDatum:= sanitizeSQLString(odDatum);
|
||||
if (odDatum<>'') then
|
||||
params.Add('odDatum', odDatum);
|
||||
|
||||
jenSeznam:= sanitizeSQLString(jenSeznam);
|
||||
if (jenSeznam='1') then
|
||||
params.Add('seznam', '1');
|
||||
|
||||
try
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetByParams(params))); // viz uSvcCustom.pas
|
||||
except
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
on E:Exception do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
params.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TGatemaSDDokladController.GetByID(id: string=''; typDokl: string=''; druhPohybu: string=''; sklad: string=''; formatX: string=''; odDatum: string=''; doDatum: string='';
|
||||
jenSeznam: string='0');
|
||||
var iId: integer;
|
||||
params: TDictionary<string, string>;
|
||||
begin
|
||||
params:= TDictionary<string, string>.Create;
|
||||
|
||||
iId:= 0;
|
||||
id:= sanitizeSQLString(id);
|
||||
if (id<>'') then
|
||||
if not(TryStrToInt(id, iId)) then
|
||||
iId:= 0;
|
||||
if (iId>0) then
|
||||
params.Add('id', iId.ToString);
|
||||
|
||||
typDokl:= sanitizeSQLString(sklad);
|
||||
if (typDokl<>'') then
|
||||
params.Add('typDokladu', typDokl);
|
||||
|
||||
druhPohybu:= sanitizeSQLString(sklad);
|
||||
if (druhPohybu<>'') then
|
||||
params.Add('druhPohybu', druhPohybu);
|
||||
|
||||
formatX:= sanitizeSQLString(formatX); // pro zobrazeni jako DokladOZ
|
||||
if (formatX<>'') then
|
||||
if (formatX='1') then
|
||||
params.Add('format', formatX);
|
||||
|
||||
sklad:= sanitizeSQLString(sklad);
|
||||
if (sklad<>'') then
|
||||
params.Add('sklad', sklad);
|
||||
|
||||
odDatum:= sanitizeSQLString(odDatum);
|
||||
if (odDatum<>'') then
|
||||
params.Add('odDatum', odDatum);
|
||||
|
||||
doDatum:= sanitizeSQLString(doDatum);
|
||||
if (doDatum<>'') then
|
||||
params.Add('doDatum', doDatum);
|
||||
|
||||
jenSeznam:= sanitizeSQLString(jenSeznam);
|
||||
if (jenSeznam='1') then
|
||||
params.Add('seznam', '1');
|
||||
|
||||
try
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetByParams(params))); // viz uSvcCustom.pas
|
||||
except
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
on E:Exception do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
params.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TGatemaSDDokladController.GetMeta;
|
||||
begin
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetMeta));
|
||||
except
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
on E:Exception do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{ TGatemaSDScanDataController }
|
||||
|
||||
destructor TGatemaSDScanDataController.Destroy;
|
||||
begin
|
||||
FSelfSvc.Free;
|
||||
end;
|
||||
|
||||
function TGatemaSDScanDataController.GetGatemaSDScanDataService: TGatemaSDScanDataService;
|
||||
begin
|
||||
inherited Create;
|
||||
if not Assigned(FSelfSvc) then
|
||||
FSelfSvc:= TGatemaSDScanDataService.Create(datMod);
|
||||
result:= FSelfSvc;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TGatemaSDScanDataController.GetByID(id: string=''; iddoklad: string='');
|
||||
var iId: integer;
|
||||
params: TDictionary<string, string>;
|
||||
begin
|
||||
params:= TDictionary<string, string>.Create;
|
||||
|
||||
iId:= 0;
|
||||
id:= sanitizeSQLString(id);
|
||||
if (id<>'') then
|
||||
if not(TryStrToInt(id, iId)) then
|
||||
iId:= 0;
|
||||
if (iId>0) then
|
||||
params.Add('id', iId.ToString);
|
||||
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetGatemaSDScanDataService.GetByParams(params))); // viz uSvcCustom.pas
|
||||
except
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
on E:Exception do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TGatemaSDScanDataController.GetMeta;
|
||||
begin
|
||||
try
|
||||
Render(ObjectDict().Add('data', GetGatemaSDScanDataService.GetMeta));
|
||||
except
|
||||
on E: EServiceException do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
on E:Exception do
|
||||
begin
|
||||
raise EMVCException.Create(E.Message, '', 0, 200);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
end.
|
||||
29
_custom/Koramex/uHeOObj_Custom.pas
Normal file
29
_custom/Koramex/uHeOObj_Custom.pas
Normal file
@ -0,0 +1,29 @@
|
||||
unit uHeOObj_Custom;
|
||||
{$RTTI EXPLICIT METHODS([vcPublic, vcPublished]) FIELDS([vcPrivate, vcProtected, vcPublic, vcPublished]) PROPERTIES([vcPublic, vcPublished])}
|
||||
|
||||
|
||||
interface
|
||||
{$I 'GlobalDefs.inc'}
|
||||
|
||||
uses
|
||||
System.Generics.Collections,
|
||||
MVCFramework.Serializer.Commons,
|
||||
MVCFramework.ActiveRecord,
|
||||
MVCFramework.Nullables,
|
||||
{$IFDEF SWAGGER}
|
||||
MVCFramework.Swagger.Commons,
|
||||
{$ENDIF}
|
||||
helTabsBIDs,
|
||||
uHeoObj_Base;
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
System.SysUtils,
|
||||
System.StrUtils,
|
||||
System.RegularExpressions;
|
||||
|
||||
|
||||
|
||||
end.
|
||||
40
_custom/Koramex/uSvcCustom.pas
Normal file
40
_custom/Koramex/uSvcCustom.pas
Normal file
@ -0,0 +1,40 @@
|
||||
|
||||
unit uSvcCustom;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
System.Generics.Collections,
|
||||
Winapi.ActiveX,
|
||||
System.DateUtils,
|
||||
System.SysUtils,
|
||||
JsonDataObjects,
|
||||
uSvc_Base,
|
||||
uCommons, // kvuli EServiceException
|
||||
helTabsBIDs,
|
||||
uHeoObj_Base,
|
||||
uHeOObj_Custom;
|
||||
|
||||
|
||||
type
|
||||
TKoramexService = class(TServiceBase)
|
||||
public
|
||||
end;
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
System.StrUtils,
|
||||
FireDAC.Stan.Option,
|
||||
FireDAC.Comp.Client,
|
||||
FireDAC.Stan.Param,
|
||||
MVCFramework.FireDAC.Utils,
|
||||
MVCFramework.DataSet.Utils,
|
||||
MVCFramework.Serializer.Commons;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
end.
|
||||
1
_custom/Koramex/uWebModCustom.inc
Normal file
1
_custom/Koramex/uWebModCustom.inc
Normal file
@ -0,0 +1 @@
|
||||
FEngine.AddController(TKRXVyrobaCisKooperaceController);
|
||||
3
_custom/Rootvin/customDefs.inc
Normal file
3
_custom/Rootvin/customDefs.inc
Normal file
@ -0,0 +1,3 @@
|
||||
,uHeOObj_Custom in 'uHeOObj_Custom.pas'
|
||||
,uCtrlCustom in 'uCtrlCustom.pas'
|
||||
,uSvcCustom in 'uSvcCustom.pas'
|
||||
594
_custom/Rootvin/hdcDZAPIdefs.def
Normal file
594
_custom/Rootvin/hdcDZAPIdefs.def
Normal file
@ -0,0 +1,594 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<defs>
|
||||
|
||||
|
||||
<def typ="TAB" nazev="_hdc_DataZone_konfig" verze="20230209">
|
||||
<sql_text><![CDATA[
|
||||
IF OBJECT_ID(N'dbo._hdc_DataZone_konfig', N'U') IS NULL~
|
||||
CREATE TABLE dbo._hdc_DataZone_konfig (~
|
||||
ID int IDENTITY(1, 1) NOT NULL,~
|
||||
Typ NCHAR(3) NOT NULL,~
|
||||
Nazev NVARCHAR(100) NOT NULL,~
|
||||
Verze NCHAR(8) NOT NULL,~
|
||||
Obsah nvarchar(max) COLLATE Czech_CI_AS NULL,~
|
||||
DatPorizeni DATETIME NOT NULL DEFAULT GETDATE(),~
|
||||
DatZmeny DATETIME,~
|
||||
CONSTRAINT PK_hdc_DataZone_konfig PRIMARY KEY CLUSTERED (ID)~
|
||||
WITH (~
|
||||
PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF,~
|
||||
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)~
|
||||
)
|
||||
]]>
|
||||
</sql_text>
|
||||
</def>
|
||||
|
||||
|
||||
|
||||
<def typ="PRO" nazev="ep_hdcdzapi_GetKusovnik" verze="20230601">
|
||||
<sql_text><![CDATA[
|
||||
CREATE PROCEDURE dbo.ep_hdcdzapi_GetKusovnik AS~
|
||||
BEGIN~
|
||||
SET NOCOUNT ON~
|
||||
DECLARE @RespekExistDoklady bit=0~
|
||||
~
|
||||
IF OBJECT_ID(N'tempdb..#apiKusovnik', N'U') IS NULL~
|
||||
CREATE TABLE #apiKusovnik (ID INT IDENTITY(1,1) NOT NULL, IDPrKV INT, MnozstviPoz NUMERIC(19,6), pom_pomer_A NUMERIC(19,6), pom_pomer_B NUMERIC(19,6), Doklad INT, IDPrikaz INT,~
|
||||
Prednastaveno BIT, Sklad NVARCHAR(30), VyrStredisko NVARCHAR(30), IDPracoviste INT, mnoz_zad NUMERIC(19,6), Mnoz_nepotrebne NUMERIC(19,6), Mnoz_skut_realizovane NUMERIC(19,6),~
|
||||
Cena_real NUMERIC(19,6), Mnoz_odv NUMERIC(19,6), Cena_odv NUMERIC(19,6), priorita INT, vyssi INT, nizsi INT, DavkaTPV NUMERIC(19,6), pozice INT, Operace NVARCHAR(4),~
|
||||
FixniMnozstvi NUMERIC(19,6), mnozstvi NUMERIC(19,6), ProcZtrat NUMERIC(19,6), mnozstviSeZtratou NUMERIC(19,6), Prirez NUMERIC(19,6), Poznamka NVARCHAR(500), SZVyssi NVARCHAR(3),~
|
||||
RCVyssi NVARCHAR(30), Nazev1Vyssi NVARCHAR(100), SZNizsi NVARCHAR(3), RCNizsi NVARCHAR(30), Nazev1Nizsi NVARCHAR(100))~
|
||||
IF OBJECT_ID(N'tempdb..#apiOdved', N'U') IS NULL~
|
||||
CREATE TABLE #apiOdved (ID INT, IDPrikaz INT, Mnozstvi NUMERIC(19,6) DEFAULT 0.0)~
|
||||
~
|
||||
INSERT #apiKusovnik (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, SZVyssi, RCVyssi, Nazev1Vyssi, SZNizsi, RCNizsi, Nazev1Nizsi)~
|
||||
SELECT PrKV.ID, PrKV.mnoz_zad*O.mnozstvi/P.kusy_zad - CASE WHEN @RespekExistDoklady=1 THEN PrKV.VydanoRefMnoz + (SELECT ISNULL(SUM(PZ2.prepmnozstvi*(PZ2.mnozstvi-PZ2.MnOdebrane) * PrKV2.RefMnoz / PrKV2.mnoz_zad), 0.0) FROM [dbo].[TabPohybyZbozi] PZ2~
|
||||
INNER JOIN [dbo].[TabDokladyZbozi] DZ2 ON (DZ2.ID=PZ2.IDDoklad AND DZ2.splneno=0)~
|
||||
INNER JOIN [dbo].[TabStavSkladu] SS2 ON (SS2.ID=PZ2.IDZboSklad)~
|
||||
INNER JOIN [dbo].[TabPrKVazby] PrKV2 ON (PrKV2.IDPrikaz=PZ2.IDPrikaz AND PrKV2.Doklad=PZ2.DokladPrikazu AND PrKV2.nizsi=SS2.IDKmenZbozi AND PrKV2.IDOdchylkyDo IS NULL)~
|
||||
WHERE PZ2.TypVyrobnihoDokladu=1 AND PZ2.IDPrikaz=PrKV.IDPrikaz AND PZ2.DokladPrikazu=PrKV.Doklad AND PZ2.Splneno=0 AND PZ2.druhPohybuZbo IN (2,4,9,10) AND PZ2.SkutecneDatReal IS NULL) ELSE 0.0 END, CASE WHEN @RespekExistDoklady=0 THEN O.mnozstvi END, CASE WHEN @RespekExistDoklady=0 THEN P.kusy_zad END,~
|
||||
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, KZV.SkupZbo, KZV.RegCis, KZV.Nazev1, KZ.SkupZbo, KZ.RegCis, KZ.Nazev1~
|
||||
FROM (SELECT IDPrikaz=O1.IDPrikaz, Mnozstvi=SUM(O1.mnozstvi) + CASE WHEN @RespekExistDoklady=1 THEN MAX(P1.kusy_odved+P1.kusy_ztrac+P1.kusy_zmet) + (SELECT ISNULL(SUM(PZ1.prepmnozstvi*PZ1.mnozstvi), 0.0)~
|
||||
FROM [dbo].[TabPohybyZbozi] PZ1 WHERE PZ1.TypVyrobnihoDokladu=0 AND PZ1.IDPrikaz=O1.IDPrikaz AND PZ1.druhPohybuZbo=0 AND PZ1.SkutecneDatReal IS NULL) ELSE 0.0 END~
|
||||
FROM #apiOdved O1~
|
||||
INNER JOIN [dbo].[TabPrikaz] P1 ON (P1.ID=O1.IDPrikaz)~
|
||||
GROUP BY O1.IDPrikaz) O~
|
||||
INNER JOIN [dbo].[TabPrikaz] P ON (P.ID=O.IDPrikaz AND P.StavPrikazu IN (20,30,50))~
|
||||
INNER JOIN TabRadyPrikazu RP ON (RP.rada=P.rada)~
|
||||
INNER JOIN [dbo].[TabPrKVazby] PrKV ON (PrKV.IDPrikaz=O.IDPrikaz AND /*PrKV.predzpracovano=0 AND*/ PrKV.prednastaveno=1 AND PrKV.uzavreno=0 AND PrKV.RezijniMat=0 AND PrKV.IDOdchylkyDo IS NULL)~
|
||||
INNER JOIN [dbo].[TabKmenZbozi] KZ ON (KZ.ID=PrKV.nizsi AND KZ.sluzba=0)~
|
||||
LEFT JOIN [dbo].[TabKmenZbozi] KZV ON (KZV.ID=PrKV.vyssi AND KZV.sluzba=0)~
|
||||
WHERE (P.kusy_zive>0.0 OR RP.KontrolovatRozpracPriUzav=0)~
|
||||
~
|
||||
SELECT * FROM #apiKusovnik~
|
||||
END~
|
||||
]]>
|
||||
</sql_text>
|
||||
</def>
|
||||
|
||||
|
||||
|
||||
<def typ="TAB" nazev="_hdc_DataZone_Tasky" verze="20230209">
|
||||
<sql_text><![CDATA[
|
||||
IF OBJECT_ID(N'dbo._hdc_DataZone_Tasky', N'U') IS NULL~
|
||||
CREATE TABLE dbo._hdc_DataZone_Tasky (~
|
||||
ID int IDENTITY(1, 1) NOT NULL,~
|
||||
NovyZaznam bit DEFAULT 1 NOT NULL,~
|
||||
DeviceID nvarchar(30) COLLATE Czech_CI_AS NULL,~
|
||||
Stredisko nvarchar(30) COLLATE Czech_CI_AS NULL,~
|
||||
IdDataZoneTaskID int NOT NULL,~
|
||||
Obsah varchar(max) COLLATE Czech_CI_AS NULL,~
|
||||
Typ tinyint NULL,~
|
||||
DatZpracovani datetime NULL,~
|
||||
IDDoklad int NULL,~
|
||||
IDKoopObj int NULL,~
|
||||
CisloKoopObj nvarchar(30) COLLATE Czech_CI_AS NULL,~
|
||||
Kooperace bit DEFAULT 0 NOT NULL,~
|
||||
StatusText nvarchar(30) COLLATE Czech_CI_AS NULL,~
|
||||
DatumStart datetime NULL,~
|
||||
DatumKonec datetime NULL,~
|
||||
KodPracoviste nvarchar(5) COLLATE Czech_CI_AS NULL,~
|
||||
ZamestnanecID int NULL,~
|
||||
Zamestnanec int NULL,~
|
||||
Nezpracovavat bit DEFAULT 0 NOT NULL,~
|
||||
DatPorizeni datetime DEFAULT getdate() NOT NULL,~
|
||||
PosledniChyba nvarchar(255) COLLATE Czech_CI_AS DEFAULT N'' NOT NULL,~
|
||||
Autor nvarchar(80) COLLATE Czech_CI_AS DEFAULT suser_sname() NULL,~
|
||||
Blokovano bit DEFAULT 0 NOT NULL,~
|
||||
Barcode nvarchar(30) COLLATE Czech_CI_AS NULL,~
|
||||
CONSTRAINT PK_hdc_DataZone_Tasky PRIMARY KEY CLUSTERED (ID DESC)~
|
||||
WITH (~
|
||||
PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF,~
|
||||
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)~
|
||||
)~
|
||||
ON [PRIMARY]~
|
||||
~
|
||||
IF EXISTS(SELECT 1 FROM sys.extended_properties WHERE [name]=N'MS_Description' AND major_id=OBJECT_ID(N'_hdc_DataZone_Tasky') AND CONVERT(nvarchar, [value]) LIKE N'1=%')~
|
||||
EXEC sp_dropextendedproperty @name='MS_Description', @level0type='schema', @level0name='dbo', @level1type='table', @level1name='_hdc_DataZone_Tasky', @level2type='column', @level2name='Typ'~
|
||||
EXEC sp_addextendedproperty @name='MS_Description', @value='1=Kooperace, 2=Potvrzeni polKoopObj', @level0type='schema', @level0name='dbo', @level1type='table', @level1name='_hdc_DataZone_Tasky',~
|
||||
@level2type='column', @level2name='Typ'~
|
||||
~
|
||||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE OBJECT_ID=OBJECT_ID(N'dbo._hdc_DataZone_Tasky') AND [name]=N'ei_hdc_DataZone_Tasky_KoopObj')~
|
||||
CREATE NONCLUSTERED INDEX ei_hdc_DataZone_Tasky_KoopObj ON dbo._hdc_DataZone_Tasky (IDKoopObj)~
|
||||
WITH (~
|
||||
PAD_INDEX = OFF,~
|
||||
DROP_EXISTING = OFF,~
|
||||
STATISTICS_NORECOMPUTE = OFF,~
|
||||
SORT_IN_TEMPDB = OFF,~
|
||||
ONLINE = OFF,~
|
||||
ALLOW_ROW_LOCKS = ON,~
|
||||
ALLOW_PAGE_LOCKS = ON)~
|
||||
ON [PRIMARY]~
|
||||
~
|
||||
~
|
||||
~
|
||||
DECLARE @sql NVARCHAR(max)~
|
||||
SET @sql=N'~
|
||||
CREATE TRIGGER dbo.et_hdc_DataZone_Tasky_IU ON dbo._hdc_DataZone_Tasky~
|
||||
WITH EXECUTE AS CALLER~
|
||||
FOR INSERT, UPDATE~
|
||||
AS~
|
||||
BEGIN~
|
||||
SET NOCOUNT ON~
|
||||
~
|
||||
DECLARE~
|
||||
@id INT,~
|
||||
@cZam INT,~
|
||||
@idZam INT~
|
||||
~
|
||||
DECLARE c CURSOR LOCAL FAST_FORWARD FOR~
|
||||
SELECT i.ID, i.Zamestnanec, i.ZamestnanecID FROM inserted i~
|
||||
OPEN c~
|
||||
WHILE (1=1)~
|
||||
BEGIN~
|
||||
FETCH NEXT FROM c INTO @id, @cZam, @idZam~
|
||||
IF (@@FETCH_STATUS<>0) BREAK~
|
||||
~
|
||||
IF (@cZam IS NOT NULL) AND (@idZam IS NULL)~
|
||||
UPDATE dbo._hdc_DataZone_Tasky SET ZamestnanecID=(SELECT ID FROM dbo.TabCisZam WHERE Cislo=@cZam) WHERE ID=@id~
|
||||
~
|
||||
END~
|
||||
CLOSE c~
|
||||
DEALLOCATE c~
|
||||
~
|
||||
END~
|
||||
'~
|
||||
IF NOT EXISTS(SELECT 1 FROM sys.triggers WHERE [name]=N'et_hdc_DataZone_Tasky_IU')~
|
||||
EXEC sp_executesql @sql~
|
||||
~
|
||||
~
|
||||
~
|
||||
~
|
||||
--DECLARE @sql NVARCHAR(max)~
|
||||
SET @sql=N'~
|
||||
CREATE TRIGGER dbo.et_hdc_DataZone_Tasky_D ON dbo._hdc_DataZone_Tasky~
|
||||
WITH EXECUTE AS CALLER~
|
||||
FOR DELETE~
|
||||
AS~
|
||||
BEGIN~
|
||||
SET NOCOUNT ON~
|
||||
~
|
||||
DECLARE~
|
||||
@iTemp INT,~
|
||||
@id INT~
|
||||
~
|
||||
~
|
||||
DECLARE c CURSOR LOCAL FAST_FORWARD FOR~
|
||||
SELECT d.ID FROM deleted d~
|
||||
OPEN c~
|
||||
WHILE (1=1)~
|
||||
BEGIN~
|
||||
FETCH NEXT FROM c INTO @id~
|
||||
IF (@@FETCH_STATUS<>0) BREAK~
|
||||
~
|
||||
DELETE FROM dbo._hdc_DataZone_Subtasky WHERE IdTask=@id~
|
||||
IF NOT EXISTS(SELECT ID FROM dbo._hdc_DataZone_Subtasky)~
|
||||
TRUNCATE TABLE dbo._hdc_DataZone_Subtasky~
|
||||
ELSE~
|
||||
BEGIN~
|
||||
SELECT @iTemp=MAX(ID) FROM dbo._hdc_DataZone_Subtasky~
|
||||
DBCC CHECKIDENT(_hdc_DataZone_Subtasky, RESEED, @iTemp)~
|
||||
END~
|
||||
~
|
||||
END~
|
||||
CLOSE c~
|
||||
DEALLOCATE c~
|
||||
~
|
||||
~
|
||||
IF NOT EXISTS(SELECT ID FROM dbo._hdc_DataZone_Tasky)~
|
||||
TRUNCATE TABLE dbo._hdc_DataZone_Tasky~
|
||||
ELSE~
|
||||
BEGIN~
|
||||
SELECT @iTemp=MAX(ID) FROM dbo._hdc_DataZone_Tasky~
|
||||
DBCC CHECKIDENT(_hdc_DataZone_Tasky, RESEED, @iTemp)~
|
||||
END~
|
||||
~
|
||||
END'~
|
||||
IF NOT EXISTS(SELECT 1 FROM sys.triggers WHERE [name]=N'et_hdc_DataZone_Tasky_D')~
|
||||
EXEC sp_executesql @sql~
|
||||
]]>
|
||||
</sql_text>
|
||||
</def>
|
||||
|
||||
|
||||
|
||||
<def typ="TAB" nazev="_hdc_DataZone_Subtasky" verze="20230209">
|
||||
<sql_text><![CDATA[
|
||||
IF OBJECT_ID(N'dbo._hdc_DataZone_Subtasky', N'U') IS NULL~
|
||||
CREATE TABLE dbo._hdc_DataZone_Subtasky (~
|
||||
ID int IDENTITY(1, 1) NOT NULL,~
|
||||
IDTask int NOT NULL,~
|
||||
IdDataZoneTaskID int NULL,~
|
||||
Pozice tinyint DEFAULT 1 NOT NULL,~
|
||||
DatumStart datetime NULL,~
|
||||
DatumKonec datetime NULL,~
|
||||
Kusy_odv numeric(15, 2) DEFAULT 0.0 NULL,~
|
||||
BarcodeOperace nvarchar(20) COLLATE Czech_CI_AS NULL,~
|
||||
IDPrPostup int NULL,~
|
||||
StatusText nvarchar(30) COLLATE Czech_CI_AS NULL,~
|
||||
IDPolKoopObj int NULL,~
|
||||
IDPrikaz int NULL,~
|
||||
Doklad int NULL,~
|
||||
Alt nchar(1) COLLATE Czech_CI_AS NULL,~
|
||||
PosledniChyba nvarchar(255) COLLATE Czech_CI_AS DEFAULT N'' NULL,~
|
||||
CONSTRAINT PK_hdc_DataZone_Subtasky PRIMARY KEY CLUSTERED (ID DESC)~
|
||||
WITH (~
|
||||
PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF,~
|
||||
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)~
|
||||
)~
|
||||
ON [PRIMARY]~
|
||||
~
|
||||
~
|
||||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE OBJECT_ID=OBJECT_ID(N'dbo._hdc_DataZone_Subtasky') AND [name]=N'ei_hdc_DataZone_Subtasky_Task')~
|
||||
CREATE NONCLUSTERED INDEX ei_hdc_DataZone_Subtasky_Task ON dbo._hdc_DataZone_Subtasky (IDTask)~
|
||||
WITH (~
|
||||
PAD_INDEX = OFF,~
|
||||
DROP_EXISTING = OFF,~
|
||||
STATISTICS_NORECOMPUTE = OFF,~
|
||||
SORT_IN_TEMPDB = OFF,~
|
||||
ONLINE = OFF,~
|
||||
ALLOW_ROW_LOCKS = ON,~
|
||||
ALLOW_PAGE_LOCKS = ON)~
|
||||
ON [PRIMARY]~
|
||||
~
|
||||
~
|
||||
~
|
||||
~
|
||||
DECLARE @sql NVARCHAR(max)~
|
||||
SET @sql=N'~
|
||||
CREATE TRIGGER dbo.et_hdc_DataZone_Subtasky_IU ON dbo._hdc_DataZone_Subtasky~
|
||||
WITH EXECUTE AS CALLER~
|
||||
FOR INSERT, UPDATE~
|
||||
AS~
|
||||
BEGIN~
|
||||
SET NOCOUNT ON~
|
||||
~
|
||||
DECLARE~
|
||||
@id INT,~
|
||||
@idTask INT,~
|
||||
@idDZTask INT,~
|
||||
@bc NVARCHAR(20),~
|
||||
@idPrPost INT,~
|
||||
@idVPr INT,~
|
||||
@dokl INT,~
|
||||
@alt NCHAR(1)~
|
||||
~
|
||||
~
|
||||
DECLARE c CURSOR LOCAL FAST_FORWARD FOR~
|
||||
SELECT i.ID, i.IdDataZoneTaskID, i.BarcodeOperace, i.IDPrPostup FROM inserted i~
|
||||
OPEN c~
|
||||
WHILE (1=1)~
|
||||
BEGIN~
|
||||
FETCH NEXT FROM c INTO @id, @idDZTask, @bc, @idPrPost~
|
||||
IF (@@FETCH_STATUS<>0) BREAK~
|
||||
~
|
||||
IF (@idPrPost IS NULL) AND (@bc<>N'''')~
|
||||
BEGIN~
|
||||
SET @idPrPost=(SELECT ID FROM dbo.TabPrPostup WHERE IDOdchylkyDo IS NULL AND BarCode=@bc)~
|
||||
IF (@idPrPost IS NOT NULL)~
|
||||
BEGIN~
|
||||
SELECT @idVPr=IDPrikaz, @dokl=Doklad, @alt=Alt FROM dbo.TabPrPostup WHERE ID=@idPrPost~
|
||||
UPDATE dbo._hdc_DataZone_Subtasky SET IdPrPostup=@idPrPost, IDPrikaz=@idVPr, Doklad=@dokl, Alt=@alt WHERE ID=@id AND IDPrPostup IS NULL~
|
||||
END~
|
||||
END~
|
||||
~
|
||||
SET @idTask=(SELECT ID FROM dbo._hdc_DataZone_Tasky WHERE IdDataZoneTaskID=@idDZTask)~
|
||||
UPDATE dbo._hdc_DataZone_Subtasky SET IDTask=@idTask WHERE ID=@id AND IDTask<>@idTask~
|
||||
~
|
||||
END~
|
||||
CLOSE c~
|
||||
DEALLOCATE c~
|
||||
~
|
||||
END~
|
||||
'~
|
||||
IF NOT EXISTS(SELECT 1 FROM sys.triggers WHERE [name]=N'et_hdc_DataZone_Subtasky_IU')~
|
||||
EXEC sp_executesql @sql~
|
||||
]]>
|
||||
</sql_text>
|
||||
</def>
|
||||
|
||||
|
||||
<def typ="TAB" nazev="_hdc_DataZone_MicharnaPozadavek" verze="20230516">
|
||||
<sql_text><![CDATA[
|
||||
IF OBJECT_ID(N'dbo._hdc_DataZone_MicharnaPozadavek', N'U') IS NULL~
|
||||
CREATE TABLE dbo._hdc_DataZone_MicharnaPozadavek (~
|
||||
ID int IDENTITY(1, 1) NOT NULL,~
|
||||
IDDZReq INT NOT NULL,~
|
||||
DeviceID NVARCHAR(40) NULL,~
|
||||
DatPorizeni DATETIME NOT NULL DEFAULT GETDATE(),~
|
||||
DatPotvrzeni DATETIME NULL,~
|
||||
DatZpracovani DATETIME NULL,~
|
||||
IDDoklad INT,~
|
||||
Pozadavek nvarchar(max) NOT NULL,~
|
||||
JeJSON AS (CONVERT(bit, IIF(IsJson(Pozadavek)=1, 1, 0))),~
|
||||
CONSTRAINT PK_hdc_DataZone_MicharnaPozadavek PRIMARY KEY CLUSTERED (ID)~
|
||||
WITH (~
|
||||
PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF,~
|
||||
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)~
|
||||
)~
|
||||
ON [PRIMARY]~
|
||||
~
|
||||
~
|
||||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE OBJECT_ID=OBJECT_ID(N'dbo._hdc_DataZone_MicharnaPozadavek') AND [name]=N'ei_hdc_DataZone_MicharnaPozadavek_DZReq')~
|
||||
CREATE NONCLUSTERED INDEX ei_hdc_DataZone_MicharnaPozadavek_DZReq ON dbo._hdc_DataZone_MicharnaPozadavek~
|
||||
(IDDZReq)~
|
||||
WITH (~
|
||||
PAD_INDEX = OFF,~
|
||||
DROP_EXISTING = OFF,~
|
||||
STATISTICS_NORECOMPUTE = OFF,~
|
||||
SORT_IN_TEMPDB = OFF,~
|
||||
ONLINE = OFF,~
|
||||
ALLOW_ROW_LOCKS = ON,~
|
||||
ALLOW_PAGE_LOCKS = ON)~
|
||||
ON [PRIMARY]~
|
||||
~
|
||||
~
|
||||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE OBJECT_ID=OBJECT_ID(N'dbo._hdc_DataZone_MicharnaPozadavek') AND [name]=N'ei_hdc_DataZone_MicharnaPozadavek_Doklad')~
|
||||
CREATE NONCLUSTERED INDEX ei_hdc_DataZone_MicharnaPozadavek_Doklad ON dbo._hdc_DataZone_MicharnaPozadavek~
|
||||
(IDDoklad)~
|
||||
WITH (~
|
||||
PAD_INDEX = OFF,~
|
||||
DROP_EXISTING = OFF,~
|
||||
STATISTICS_NORECOMPUTE = OFF,~
|
||||
SORT_IN_TEMPDB = OFF,~
|
||||
ONLINE = OFF,~
|
||||
ALLOW_ROW_LOCKS = ON,~
|
||||
ALLOW_PAGE_LOCKS = ON)~
|
||||
ON [PRIMARY]
|
||||
]]>
|
||||
</sql_text>
|
||||
</def>
|
||||
|
||||
<def typ="PRO" nazev="ep_HDC_DataZone_Vyroba_VytvorKoopObjednavku" verze="20230525">
|
||||
<sql_text><![CDATA[
|
||||
CREATE PROCEDURE dbo.ep_HDC_DataZone_Vyroba_VytvorKoopObjednavku~
|
||||
@idTask INT=NULL,~
|
||||
@opakovane BIT=0,~
|
||||
@radaKObj NVARCHAR(10)=NULL~
|
||||
AS~
|
||||
~
|
||||
SET NOCOUNT ON~
|
||||
~
|
||||
DECLARE~
|
||||
@aktDate DATETIME=GETDATE(),~
|
||||
@errMsg NVARCHAR(500),~
|
||||
@iTemp INT,~
|
||||
@idSubtask INT,~
|
||||
@idDZTask INT,~
|
||||
@idKoopObj INT,~
|
||||
@cisKoopObj NVARCHAR(20),~
|
||||
@bc NVARCHAR(20),~
|
||||
@idOrgKoop INT,~
|
||||
@idPolKoopObj INT,~
|
||||
@idTypKoop INT,~
|
||||
@idKoop INT,~
|
||||
@idVPr INT,~
|
||||
@dokl INT,~
|
||||
@alt NCHAR(1),~
|
||||
@idPrPost INT,~
|
||||
@mnoz NUMERIC(19,6),~
|
||||
@idZam INT,~
|
||||
@cZam INT,~
|
||||
@loginName NVARCHAR(50),~
|
||||
@tranPred INT,~
|
||||
@idOrg INT,~
|
||||
@dicOrg NVARCHAR(15),~
|
||||
@jsonStr NVARCHAR(MAX)~
|
||||
~
|
||||
~
|
||||
DECLARE @idKooperace TABLE (ID INT NOT NULL)~
|
||||
~
|
||||
~
|
||||
~
|
||||
SET @iTemp=ISNULL( (SELECT MAX(ID) FROM dbo.TabKoopObj), 1)~
|
||||
DBCC CHECKIDENT(TabKoopObj, RESEED, @iTemp)~
|
||||
~
|
||||
SET @iTemp=ISNULL( (SELECT MAX(ID) FROM dbo.TabPolKoopObj), 1)~
|
||||
DBCC CHECKIDENT(TabPolKoopObj, RESEED, @iTemp)~
|
||||
~
|
||||
~
|
||||
IF (@idTask IS NULL)~
|
||||
DECLARE d CURSOR LOCAL FOR~
|
||||
SELECT ID, IdDataZoneTaskID, ZamestnanecID, Zamestnanec FROM dbo._hdc_DataZone_Tasky~
|
||||
WHERE Kooperace=1 AND DatZpracovani IS NULL AND IDKoopObj IS NULL AND Nezpracovavat=0 -- AND Blokovano=0~
|
||||
AND DATEDIFF(d, DatPorizeni, GETDATE())<2~
|
||||
ELSE~
|
||||
IF (@opakovane=0)~
|
||||
DECLARE d CURSOR LOCAL FOR~
|
||||
SELECT ID, IdDataZoneTaskID, ZamestnanecID, Zamestnanec FROM dbo._hdc_DataZone_Tasky~
|
||||
WHERE Kooperace=1 AND DatZpracovani IS NULL AND IDKoopObj IS NULL AND Nezpracovavat=0 AND ID=@idTask -- AND Blokovano=0~
|
||||
ELSE~
|
||||
DECLARE d CURSOR LOCAL FOR~
|
||||
SELECT ID, IdDataZoneTaskID, ZamestnanecID, Zamestnanec FROM dbo._hdc_DataZone_Tasky~
|
||||
WHERE Kooperace=1 AND ID=@idTask -- AND Blokovano=0~
|
||||
OPEN d~
|
||||
WHILE (1=1)~
|
||||
BEGIN~
|
||||
FETCH NEXT FROM d INTO @idTask, @idDZTask, @idZam, @cZam~
|
||||
IF (@@FETCH_STATUS<>0) BREAK~
|
||||
~
|
||||
UPDATE dbo._hdc_DataZone_Tasky SET Blokovano=1 WHERE ID=@idTask~
|
||||
~
|
||||
SET @loginName=(SELECT LoginId FROM dbo.TabCisZam WHERE Cislo=@cZam)~
|
||||
IF (ISNULL(@loginName,N'')=N'')~
|
||||
SET @loginName=(SELECT PrijmeniJmeno FROM dbo.TabCisZam WHERE ID=@idZam)~
|
||||
IF (ISNULL(@loginName,N'')=N'')~
|
||||
SET @loginName=ISNULL( (SELECT PrijmeniJmeno FROM dbo.TabCisZam WHERE Cislo=@cZam), SUSER_SNAME())~
|
||||
~
|
||||
~
|
||||
-- mam zapsane subtasky ?~
|
||||
IF NOT EXISTS(SELECT 1 FROM dbo._hdc_DataZone_Subtasky WHERE IDTask=@idTask)~
|
||||
BEGIN~
|
||||
SET @jsonStr=(SELECT Obsah FROM dbo._hdc_DataZone_Tasky WHERE ID=@idTask)~
|
||||
IF (@jsonStr IS NOT NULL)~
|
||||
IF (CHARINDEX(N'subtask', @jsonStr)>0) AND (ISJSON(@jsonStr)=1)~
|
||||
BEGIN~
|
||||
IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL~
|
||||
DROP TABLE #TabJSONData~
|
||||
CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max))~
|
||||
INSERT #TabJSONData (doc) SELECT @jsonStr~
|
||||
~
|
||||
INSERT dbo._hdc_DataZone_Subtasky (IDTask, IdDataZoneTaskID, Pozice, DatumStart, DatumKonec, Kusy_odv, BarcodeOperace, StatusText)~
|
||||
SELECT @idTask, @idDZTask, ROW_NUMBER() OVER (ORDER BY(SELECT NULL)), CONVERT(datetime2(0), startedAt), CONVERT(datetime2(0), finishedAt),~
|
||||
CONVERT(NUMERIC(19,6), v.kusy_odv), code, [status] -- JSON_VALUE(d.doc, '$.worker.code') AS CisloZam~
|
||||
FROM #TabJSONData d~
|
||||
CROSS APPLY OPENJSON(d.doc, '$.subtask')~
|
||||
WITH(code nvarchar(20), [status] NVARCHAR(30), startedAt NVARCHAR(25), finishedAt NVARCHAR(25), [values] nvarchar(max) AS JSON)~
|
||||
CROSS APPLY OPENJSON([values])~
|
||||
WITH (kusy_odv nvarchar(100)) as v~
|
||||
~
|
||||
UPDATE st SET st.IDPrikaz=pp.IDPrikaz, st.Doklad=pp.Doklad, st.Alt=pp.Alt, st.IdPrPostup=pp.ID~
|
||||
FROM dbo._hdc_DataZone_Subtasky st~
|
||||
INNER JOIN dbo.TabPrPostup pp ON (pp.Barcode=st.BarcodeOperace AND pp.IDOdchylkyDo IS NULL)~
|
||||
WHERE st.IDTask=@idTask~
|
||||
~
|
||||
IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL~
|
||||
DROP TABLE #TabJSONData~
|
||||
END~
|
||||
END~
|
||||
~
|
||||
~
|
||||
-- zapis nezpracovane subtasky~
|
||||
IF EXISTS(SELECT ID FROM dbo._hdc_DataZone_Subtasky WHERE IDTask=@idTask AND IDPolKoopObj IS NULL)~
|
||||
BEGIN~
|
||||
IF (@radaKObj IS NULL)~
|
||||
SET @radaKObj = (SELECT TOP(1) Rada FROM dbo.TabRadyKoopObj ORDER BY ID)~
|
||||
INSERT @idKooperace (ID) SELECT DISTINCT(IDkooperace) FROM dbo.TabPrPostup~
|
||||
WHERE BarCode IN (SELECT BarcodeOperace FROM dbo._hdc_DataZone_Subtasky WHERE IDTask=@idTask)~
|
||||
AND IDOdchylkyDo IS NULL AND Typ=2 GROUP BY IDkooperace~
|
||||
IF (1=(SELECT COUNT(*) FROM (SELECT DISTINCT(ID) FROM @idKooperace GROUP BY ID) x))~
|
||||
BEGIN~
|
||||
SET @idTypKoop=(SELECT TOP(1) ID FROM @idKooperace)~
|
||||
SELECT @radaKObj=cke._RadaKoopObj FROM dbo.TabCKoop ck INNER JOIN dbo.TabRadyCKoop rck ON (rck.Rada=ck.Rada)~
|
||||
INNER JOIN dbo.TabRadyCKoop_EXT cke ON (cke.ID=ck.ID) WHERE ck.ID=@idTypKoop~
|
||||
~
|
||||
IF (@radaKObj IS NOT NULL)~
|
||||
BEGIN~
|
||||
BEGIN TRY~
|
||||
SET @tranPred=@@TRANCOUNT~
|
||||
IF (@tranPred=0)~
|
||||
BEGIN TRAN~
|
||||
SET @aktDate = CONVERT(datetime, CONVERT(int, CONVERT(float, @aktDate)))~
|
||||
EXEC dbo.hp_InsertHlavickyKoopObj @IDObjednavky=@idKoopObj OUT, @Rada=@radaKObj, @TerminOdeslani=@aktDate~
|
||||
IF (@idKoopObj IS NOT NULL)~
|
||||
BEGIN~
|
||||
UPDATE dbo.TabKoopObj SET Autor=@loginName WHERE ID=@idKoopObj~
|
||||
SELECT @cisKoopObj=Objednavka FROM dbo.TabKoopObj WHERE ID=@idKoopObj~
|
||||
~
|
||||
DECLARE p CURSOR LOCAL FOR~
|
||||
SELECT ID, IDPrikaz, Doklad, Alt, Kusy_odv, BarcodeOperace, IDPrPostup FROM dbo._hdc_DataZone_Subtasky~
|
||||
WHERE IDTask=@idTask AND IDPolKoopObj IS NULL~
|
||||
OPEN p~
|
||||
WHILE (1=1)~
|
||||
BEGIN~
|
||||
FETCH NEXT FROM p INTO @idSubtask, @idVPr, @dokl, @alt, @mnoz, @bc, @idPrPost~
|
||||
IF (@@FETCH_STATUS<>0) BREAK~
|
||||
~
|
||||
IF (@idPrPost IS NULL)~
|
||||
SET @idPrPost=(SELECT ID FROM dbo.TabPrPostup WHERE IDOdchylkyDo IS NULL AND BarCode=@bc)~
|
||||
IF NOT EXISTS(SELECT ID FROM dbo.TabPrPostup WHERE ID=@idPrPost)~
|
||||
SET @idPrPost = (SELECT ID FROM dbo.TabPrPostup WHERE IDOdchylkyDo IS NULL AND BarCode=@bc)~
|
||||
SELECT @idVPr=IDPrikaz, @dokl=Doklad, @alt=Alt, @idKoop=IDKooperace FROM dbo.TabPrPostup WHERE ID=@idPrPost~
|
||||
IF EXISTS(SELECT pp.ID FROM dbo.TabPrPostup pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz) WHERE pp.ID=@idPrPost AND pp.predzpracovano=1 AND p.StavPrikazu=30)~
|
||||
UPDATE dbo.TabPrPostup SET predzpracovano=0 WHERE ID=@idPrPost~
|
||||
~
|
||||
EXEC dbo.hp_InsertPolozkyKoopObj @IDPolozky=@idPolKoopObj OUT, @IDObjednavky=@idKoopObj, @IDPrikaz=@idVPr, @Doklad=@dokl, @Alt=@alt, @Kusy=@mnoz, @IDKooperace=@idKoop~
|
||||
IF (@idPolKoopObj IS NOT NULL)~
|
||||
BEGIN~
|
||||
UPDATE dbo._hdc_DataZone_Subtasky SET IDPolKoopObj=@idPolKoopObj WHERE ID=@idSubtask~
|
||||
UPDATE dbo.TabPolKoopObj SET Autor=@loginName WHERE ID=@idPolKoopObj~
|
||||
END~
|
||||
~
|
||||
END~
|
||||
CLOSE p~
|
||||
DEALLOCATE p~
|
||||
~
|
||||
SET @idOrg=(SELECT dodavatel FROM dbo.TabCKoop WHERE ID=@idKoop)~
|
||||
SET @dicOrg=(SELECT DIC FROM dbo.TabCisOrg WHERE ID=@idOrg)~
|
||||
UPDATE dbo.TabKoopObj SET IDOrganizace=@idOrg, DIC=@dicOrg WHERE ID=@idKoopObj~
|
||||
~
|
||||
UPDATE dbo._hdc_DataZone_Tasky SET IDKoopObj=@idKoopObj, DatZpracovani=GETDATE(), Nezpracovavat=0, CisloKoopObj=@cisKoopObj, Blokovano=0~
|
||||
WHERE ID=@idTask~
|
||||
~
|
||||
END -- @IDObjednavky IS NOT NULL~
|
||||
IF (@@TRANCOUNT>0) AND (@tranPred=0)~
|
||||
COMMIT TRAN~
|
||||
END TRY~
|
||||
BEGIN CATCH~
|
||||
IF (@@TRANCOUNT>0) AND (@tranPred=0)~
|
||||
ROLLBACK TRAN~
|
||||
SET @errMsg = ERROR_MESSAGE()~
|
||||
~
|
||||
IF (CHARINDEX(N'2001434', @errMsg)>0) -- vyrobni operace jiz neexistuje~
|
||||
UPDATE dbo._hdc_DataZone_Tasky SET DatZpracovani=GETDATE(), Nezpracovavat=1, PosledniChyba=N'V<>robn<62> operace ji<6A> neexistuje' WHERE ID=@idTask~
|
||||
ELSE~
|
||||
INSERT dbo._hdc_Log (Typ, LogText, intVal) SELECT 11, N'Import kooperace - chyba: ' + @errMsg, @idTask~
|
||||
~
|
||||
END CATCH~
|
||||
END -- @radaKObj IS NOT NULL~
|
||||
~
|
||||
END -- jen jeden druh kooperace~
|
||||
ELSE~
|
||||
BEGIN~
|
||||
UPDATE dbo._hdc_DataZone_Tasky SET PosledniChyba=N'Naskenov<6F>no v<>c typ<79> kooperace', Blokovano=0 WHERE ID=@idTask~
|
||||
END~
|
||||
~
|
||||
END -- existuji subtasky ? ano, vytvor kooperacni objednavku~
|
||||
~
|
||||
END~
|
||||
CLOSE d~
|
||||
DEALLOCATE d
|
||||
]]>
|
||||
</sql_text>
|
||||
</def>
|
||||
|
||||
|
||||
<def typ="COL">
|
||||
<sql_text><![CDATA[
|
||||
DECLARE @currDat DATETIME=GETDATE()~
|
||||
IF (COL_LENGTH(N'dbo.TabRadyCKoop_EXT', N'_RadaKoopObj') IS NULL)~
|
||||
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabRadyCKoop_EXT', @NazevAtrSys=N'_RadaKoopObj', @Skupina=N'HDC API', @NazevAtrVer=N'<27>ada koopera<72>n<EFBFBD>ch objedn<64>vek',~
|
||||
@NazevAtrVerZkr=N'<27>ada koopObj', @TypAtr=N'NVARCHAR', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=8, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0,~
|
||||
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=11142, @ExtEd_Atr=N'Rada', @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL,~
|
||||
@TypAtrSQL=N'NVARCHAR', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL
|
||||
]]>
|
||||
</sql_text>
|
||||
</def>
|
||||
|
||||
|
||||
<def typ="COL">
|
||||
<sql_text><![CDATA[
|
||||
DECLARE @currDat DATETIME=GETDATE()~
|
||||
IF (COL_LENGTH(N'dbo.TabDokumenty_EXT', N'_DokladProAPI') IS NULL)~
|
||||
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabDokumenty', @NazevAtrSys=N'_DokladProAPI', @Skupina=N'HDC API', @NazevAtrVer=N'P<>ednastaveno pro HDC API',~
|
||||
@NazevAtrVerZkr=N'Pro HDCAPI', @TypAtr=N'BIT', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=12, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=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=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1~
|
||||
EXEC dbo.hp_ExterniTabulka N'TabDokumenty',N'_DokladProAPI',N'BIT'
|
||||
]]>
|
||||
</sql_text>
|
||||
</def>
|
||||
|
||||
|
||||
</defs>
|
||||
15
_custom/Rootvin/info.txt
Normal file
15
_custom/Rootvin/info.txt
Normal file
@ -0,0 +1,15 @@
|
||||
|
||||
|
||||
|
||||
Gatema_SDDoklady
|
||||
***********************
|
||||
TypDokladu - 510 - kontrola prijmu / 540 - prijem
|
||||
IDDokZbo - zdrojovy doklad (napr. pri kontrole prijmu)
|
||||
|
||||
|
||||
|
||||
|
||||
Gatema_SDScanData
|
||||
***********************
|
||||
IDPohZbo - ID zdrojoveho pohybu OZ (napr. pri kontrole prijmu)
|
||||
|
||||
6
_custom/Rootvin/sql/col_CisZam_EXT.sql
Normal file
6
_custom/Rootvin/sql/col_CisZam_EXT.sql
Normal file
@ -0,0 +1,6 @@
|
||||
DECLARE @currDat DATETIME=GETDATE()
|
||||
IF (COL_LENGTH(N'dbo.TabCisZam_EXT', N'_DataZone_KodCipu') IS NULL)
|
||||
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabCisZam', @NazevAtrSys=N'_DataZone_KodCipu', @Skupina=N'HDCDZApi', @NazevAtrVer=N'K<EFBFBD>d zam<61>stnaneck<63>ho <20>ipu',
|
||||
@NazevAtrVerZkr=N'K<EFBFBD>d <20>ipu', @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,
|
||||
@TypAtrSQL=N'NVARCHAR(36)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=N'', @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1
|
||||
6
_custom/Rootvin/sql/col_TabDokumenty_DokladProAPI.sql
Normal file
6
_custom/Rootvin/sql/col_TabDokumenty_DokladProAPI.sql
Normal file
@ -0,0 +1,6 @@
|
||||
DECLARE @currDat DATETIME=GETDATE()
|
||||
IF (COL_LENGTH(N'dbo.TabDokumenty_EXT', N'_DokladProAPI') IS NULL)
|
||||
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabDokumenty_EXT', @NazevAtrSys=N'_DokladProAPI', @Skupina=NULL, @NazevAtrVer=N'Přednastaveno pro zobrazení přes HDC API',
|
||||
@NazevAtrVerZkr=N'Pro HDCAPI', @TypAtr=N'BIT', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=8, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=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=NULL, @Definice=NULL, @Podminka=NULL
|
||||
12
_custom/Rootvin/sql/col_TabPrPostup_EXT.sql
Normal file
12
_custom/Rootvin/sql/col_TabPrPostup_EXT.sql
Normal file
@ -0,0 +1,12 @@
|
||||
DECLARE @currDat DATETIME=GETDATE()
|
||||
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',
|
||||
@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,
|
||||
@TypAtrSQL=N'NVARCHAR(100)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=N'', @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1
|
||||
|
||||
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',
|
||||
@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,
|
||||
@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
|
||||
34
_custom/Rootvin/sql/ep_HDCDZApi_GetKusovnik.sql
Normal file
34
_custom/Rootvin/sql/ep_HDCDZApi_GetKusovnik.sql
Normal file
@ -0,0 +1,34 @@
|
||||
-- dbo.ep_hdcdzapi_GetKusovnik
|
||||
CREATE PROCEDURE dbo.ep_hdcdzapi_GetKusovnik
|
||||
@idDilce INT,
|
||||
@mnf NUMERIC(19,6)=0,
|
||||
@datum DATETIME=NULL,
|
||||
@IDZakazModif int=NULL,
|
||||
@MnozstviSeZtratou bit=1,
|
||||
@VcetneNulovychKV bit=0,
|
||||
@RespekDodatecneProcZtratKV bit=0,
|
||||
@ErrMsg NVARCHAR(500)=N'' OUT
|
||||
AS
|
||||
|
||||
-- HD Consulting Strakonice, T. Buzin
|
||||
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !!
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS #apiKusovnik
|
||||
CREATE TABLE #apiKusovnik (ID int IDENTITY (1, 1) NOT NULL, IDRodic int NULL, vyssi integer NULL, IDKmenZbozi integer NOT NULL, uroven integer NOT NULL, poradi integer NOT NULL,
|
||||
IDKVazby integer NULL, mnozstvi numeric(20,6) NOT NULL, prirez numeric(20,6) NULL,
|
||||
Prime bit NOT NULL, RezijniMat bit NOT NULL, VyraditZKalkulace bit NOT NULL, Strom nvarchar(400) COLLATE database_default NULL,
|
||||
Davka numeric(19,6) NULL)
|
||||
|
||||
BEGIN TRY
|
||||
EXEC dbo.hp_generujKusovnik @IDFinal=@idDilce, @MNF=@mnf, @datum=@datum, @Can_raise=0, @getStrom=1, @GetRodic=1, @IDZakazModif=@IDZakazModif, @VcetneNulovychKV=@VcetneNulovychKV,
|
||||
@MnozstviSeZtratou=@MnozstviSeZtratou, @RespekDodatecneProcZtratKV=@RespekDodatecneProcZtratKV
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @ErrMsg = ERROR_MESSAGE()
|
||||
END CATCH
|
||||
|
||||
SELECT * FROM #apiKusovnik
|
||||
|
||||
38
_custom/Rootvin/sql/ep_HDCDZApi_GetKusovnik_2.sql
Normal file
38
_custom/Rootvin/sql/ep_HDCDZApi_GetKusovnik_2.sql
Normal file
@ -0,0 +1,38 @@
|
||||
-- dbo.ep_hdcdzapi_GetKusovnik
|
||||
CREATE PROCEDURE dbo.ep_hdcdzapi_GetKusovnik
|
||||
AS
|
||||
|
||||
SET NOCOUNT ON
|
||||
DECLARE @RespekExistDoklady bit=0
|
||||
|
||||
IF OBJECT_ID(N'tempdb..#apiKusovnik', N'U') IS NULL
|
||||
CREATE TABLE #apiKusovnik (ID INT IDENTITY(1,1) NOT NULL, IDPrKV INT, MnozstviPoz NUMERIC(19,6), pom_pomer_A NUMERIC(19,6), pom_pomer_B NUMERIC(19,6), Doklad INT, IDPrikaz INT,
|
||||
Prednastaveno BIT, Sklad NVARCHAR(30), VyrStredisko NVARCHAR(30), IDPracoviste INT, mnoz_zad NUMERIC(19,6), Mnoz_nepotrebne NUMERIC(19,6), Mnoz_skut_realizovane NUMERIC(19,6),
|
||||
Cena_real NUMERIC(19,6), Mnoz_odv NUMERIC(19,6), Cena_odv NUMERIC(19,6), priorita INT, vyssi INT, nizsi INT, DavkaTPV NUMERIC(19,6), pozice INT, Operace NVARCHAR(4),
|
||||
FixniMnozstvi NUMERIC(19,6), mnozstvi NUMERIC(19,6), ProcZtrat NUMERIC(19,6), mnozstviSeZtratou NUMERIC(19,6), Prirez NUMERIC(19,6), Poznamka NVARCHAR(500), SZVyssi NVARCHAR(3),
|
||||
RCVyssi NVARCHAR(30), Nazev1Vyssi NVARCHAR(100), SZNizsi NVARCHAR(3), RCNizsi NVARCHAR(30), Nazev1Nizsi NVARCHAR(100))
|
||||
IF OBJECT_ID(N'tempdb..#apiOdved', N'U') IS NULL
|
||||
CREATE TABLE #apiOdved (ID INT, IDPrikaz INT, Mnozstvi NUMERIC(19,6) DEFAULT 0.0)
|
||||
|
||||
INSERT #apiKusovnik (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, SZVyssi, RCVyssi, Nazev1Vyssi, SZNizsi, RCNizsi, Nazev1Nizsi)
|
||||
SELECT PrKV.ID, PrKV.mnoz_zad*O.mnozstvi/P.kusy_zad - CASE WHEN @RespekExistDoklady=1 THEN PrKV.VydanoRefMnoz + (SELECT ISNULL(SUM(PZ2.prepmnozstvi*(PZ2.mnozstvi-PZ2.MnOdebrane) * PrKV2.RefMnoz / PrKV2.mnoz_zad), 0.0) FROM [dbo].[TabPohybyZbozi] PZ2
|
||||
INNER JOIN [dbo].[TabDokladyZbozi] DZ2 ON (DZ2.ID=PZ2.IDDoklad AND DZ2.splneno=0)
|
||||
INNER JOIN [dbo].[TabStavSkladu] SS2 ON (SS2.ID=PZ2.IDZboSklad)
|
||||
INNER JOIN [dbo].[TabPrKVazby] PrKV2 ON (PrKV2.IDPrikaz=PZ2.IDPrikaz AND PrKV2.Doklad=PZ2.DokladPrikazu AND PrKV2.nizsi=SS2.IDKmenZbozi AND PrKV2.IDOdchylkyDo IS NULL)
|
||||
WHERE PZ2.TypVyrobnihoDokladu=1 AND PZ2.IDPrikaz=PrKV.IDPrikaz AND PZ2.DokladPrikazu=PrKV.Doklad AND PZ2.Splneno=0 AND PZ2.druhPohybuZbo IN (2,4,9,10) AND PZ2.SkutecneDatReal IS NULL) ELSE 0.0 END, CASE WHEN @RespekExistDoklady=0 THEN O.mnozstvi END, CASE WHEN @RespekExistDoklady=0 THEN P.kusy_zad END,
|
||||
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, KZV.SkupZbo, KZV.RegCis, KZV.Nazev1, KZ.SkupZbo, KZ.RegCis, KZ.Nazev1
|
||||
FROM (SELECT IDPrikaz=O1.IDPrikaz, Mnozstvi=SUM(O1.mnozstvi) + CASE WHEN @RespekExistDoklady=1 THEN MAX(P1.kusy_odved+P1.kusy_ztrac+P1.kusy_zmet) + (SELECT ISNULL(SUM(PZ1.prepmnozstvi*PZ1.mnozstvi), 0.0)
|
||||
FROM [dbo].[TabPohybyZbozi] PZ1 WHERE PZ1.TypVyrobnihoDokladu=0 AND PZ1.IDPrikaz=O1.IDPrikaz AND PZ1.druhPohybuZbo=0 AND PZ1.SkutecneDatReal IS NULL) ELSE 0.0 END
|
||||
FROM #apiOdved O1
|
||||
INNER JOIN [dbo].[TabPrikaz] P1 ON (P1.ID=O1.IDPrikaz)
|
||||
GROUP BY O1.IDPrikaz) O
|
||||
INNER JOIN [dbo].[TabPrikaz] P ON (P.ID=O.IDPrikaz AND P.StavPrikazu IN (20,30,50))
|
||||
INNER JOIN TabRadyPrikazu RP ON (RP.rada=P.rada)
|
||||
INNER JOIN [dbo].[TabPrKVazby] PrKV ON (PrKV.IDPrikaz=O.IDPrikaz AND /*PrKV.predzpracovano=0 AND*/ PrKV.prednastaveno=1 AND PrKV.uzavreno=0 AND PrKV.RezijniMat=0 AND PrKV.IDOdchylkyDo IS NULL)
|
||||
INNER JOIN [dbo].[TabKmenZbozi] KZ ON (KZ.ID=PrKV.nizsi AND KZ.sluzba=0)
|
||||
LEFT JOIN [dbo].[TabKmenZbozi] KZV ON (KZV.ID=PrKV.vyssi AND KZV.sluzba=0)
|
||||
WHERE (P.kusy_zive>0.0 OR RP.KontrolovatRozpracPriUzav=0)
|
||||
|
||||
SELECT * FROM #apiKusovnik
|
||||
153
_custom/Rootvin/sql/ep_HDCDZApi_ZpracujPrijataData.sql
Normal file
153
_custom/Rootvin/sql/ep_HDCDZApi_ZpracujPrijataData.sql
Normal file
@ -0,0 +1,153 @@
|
||||
-- dbo.ep_HDCDZApi_ZpracujPrijataData
|
||||
CREATE PROCEDURE dbo.ep_HDCDZApi_ZpracujPrijataData
|
||||
@idJson INT=NULL
|
||||
AS
|
||||
|
||||
|
||||
-- HD Consulting Strakonice, T. Buzin
|
||||
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !!
|
||||
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
|
||||
DECLARE
|
||||
@tranPred INT,
|
||||
@cnt INT,
|
||||
@datPorizeni DATETIME,
|
||||
@errMsg NVARCHAR(500),
|
||||
@bChyba BIT,
|
||||
@iChyba INT,
|
||||
@debugXml XML,
|
||||
@aktDatum DATETIME,
|
||||
@logTyp TINYINT,
|
||||
@logText NVARCHAR(500),
|
||||
@logInt INT,
|
||||
@logStr NVARCHAR(255),
|
||||
@log4Mail BIT=0
|
||||
|
||||
DECLARE
|
||||
@jsonString NVARCHAR(MAX),
|
||||
@jsonString2 NVARCHAR(MAX),
|
||||
@typDokum NVARCHAR(50),
|
||||
@subtypDokum NVARCHAR(50),
|
||||
@akce NVARCHAR(50),
|
||||
@akceSource NVARCHAR(50),
|
||||
@datumText NVARCHAR(25)
|
||||
|
||||
DECLARE @TabPHObj TABLE (ID INT NOT NULL, IDPHIdent INT)
|
||||
|
||||
|
||||
-- vytvor pomocnou tabulku
|
||||
/*
|
||||
IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL
|
||||
DROP TABLE #TabJSONData
|
||||
CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max))
|
||||
*/
|
||||
DROP TABLE IF EXISTS #TabJSONData
|
||||
CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IF (@idJson IS NULL)
|
||||
DECLARE j CURSOR LOCAL FOR
|
||||
SELECT ID, JSONData, DatPorizeni
|
||||
FROM dbo._hdc_ph_PrijataJsonData
|
||||
WHERE DatZpracovani IS NULL
|
||||
AND ISNULL(JSONData, N'')<>N''
|
||||
ORDER BY DatPorizeni ASC
|
||||
ELSE
|
||||
DECLARE j CURSOR LOCAL FOR
|
||||
SELECT ID, JSONData, DatPorizeni
|
||||
FROM dbo._hdc_ph_PrijataJsonData
|
||||
WHERE ID=@idJson
|
||||
OPEN j
|
||||
WHILE (1=1)
|
||||
BEGIN
|
||||
FETCH NEXT FROM j INTO @idJson, @jsonString, @datPorizeni
|
||||
IF (@@FETCH_STATUS<>0) BREAK
|
||||
|
||||
IF (ISJSON(@jsonString)=0)
|
||||
CONTINUE
|
||||
|
||||
|
||||
BEGIN TRY
|
||||
SET @tranPred = @@TRANCOUNT
|
||||
IF (@tranPred=0)
|
||||
BEGIN TRAN
|
||||
|
||||
|
||||
SET @datumText = NULL
|
||||
-- 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
|
||||
|
||||
SET @akce = ISNULL(@akce, N'')
|
||||
SET @akceSource = ISNULL(@akceSource, N'')
|
||||
SET @datumText = ISNULL(@datumText, N'')
|
||||
IF (@datumText<>N'')
|
||||
SET @datPorizeni = CONVERT(datetime, @datumText, 120)
|
||||
|
||||
IF (@akce<>N'')
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET Akce=@akce WHERE ID=@idJson AND Akce IS NULL
|
||||
|
||||
|
||||
IF ISNULL( (SELECT COUNT(ID) FROM dbo._hdc_ph_Log WHERE IdJsonData=@idJson), 0)>=3
|
||||
BEGIN
|
||||
IF EXISTS(SELECT 1 FROM dbo._hdc_ph_PrijataJsonData WHERE ID=@idJson AND ISNULL(PosledniChyba,N'')=N'')
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=(SELECT TOP(1) LogText FROM dbo._hdc_ph_Log WHERE IdJsonData=@idJson ORDER BY DatPorizeni DESC) WHERE ID=@idJson
|
||||
CONTINUE
|
||||
END
|
||||
|
||||
|
||||
SET @logTyp = 0
|
||||
SET @logInt = NULL
|
||||
SET @logStr = N''
|
||||
SET @log4Mail = 0
|
||||
SET @logText = N''
|
||||
|
||||
|
||||
|
||||
-- BEGIN: TLACITKO
|
||||
IF (@akce=N'click' AND @akceSource='button')
|
||||
BEGIN
|
||||
SET @akce = N''
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE() WHERE ID=@idJson
|
||||
END -- akce: vyroba_zacatek
|
||||
-- END: TLACITKO
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IF (@tranPred=0) AND (@@TRANCOUNT>0)
|
||||
COMMIT TRAN
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF (@tranPred=0) AND (@@TRANCOUNT>0)
|
||||
ROLLBACK TRAN
|
||||
SET @errMsg = ERROR_MESSAGE()
|
||||
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=@errMsg WHERE ID=@idJson
|
||||
|
||||
IF (@logTyp>0)
|
||||
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue, StrValue, IdJsonData, ForMail)
|
||||
SELECT @logTyp, ISNULL(@logText, N'') + NCHAR(13)+NCHAR(10) + @errMsg, @logInt, @logStr, @idJson, @log4Mail
|
||||
ELSE
|
||||
INSERT dbo._hdc_ph_Log (Typ, LogText, IdJsonData, ForMail) SELECT 1, N'Chyba zpracovani PrijataJsonData: ' + @errMsg, @idJson, 1
|
||||
END CATCH
|
||||
SET @logTyp=0
|
||||
|
||||
END
|
||||
CLOSE j
|
||||
DEALLOCATE j
|
||||
|
||||
|
||||
|
||||
|
||||
-- pro jistotu
|
||||
IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL
|
||||
DROP TABLE #TabJSONData
|
||||
137
_custom/Rootvin/sql/ep_P01_HDCDZApi1.sql
Normal file
137
_custom/Rootvin/sql/ep_P01_HDCDZApi1.sql
Normal file
@ -0,0 +1,137 @@
|
||||
-- dbo.ep_P01_HDCDZApi1
|
||||
CREATE PROCEDURE dbo.ep_P01_HDCDZApi1
|
||||
@IDDoklad INT
|
||||
AS
|
||||
|
||||
-- HD Consulting Strakonice, T. Buzin
|
||||
-- !! 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)
|
||||
-- nastaveni skladu lze ovlivnit pres #TabDefiniceProP01 (HlavniSkladMat NVARCHAR(30), TechnologickySklad NVARCHAR(30), SkladVyrobaPekarna NVARCHAR(30) )
|
||||
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
|
||||
DECLARE
|
||||
@tranPred INT,
|
||||
@cnt INT,
|
||||
@errMsg NVARCHAR(500),
|
||||
@bChyba BIT,
|
||||
@iChyba INT
|
||||
|
||||
DECLARE
|
||||
@sklHlavni NVARCHAR(30),
|
||||
@sklTechnolog NVARCHAR(30),
|
||||
@sklPekarna NVARCHAR(30),
|
||||
@sklPrijem NVARCHAR(30)
|
||||
|
||||
DECLARE
|
||||
@sklDokl NVARCHAR(30),
|
||||
@radaDokl NVARCHAR(3),
|
||||
@cOrg INT,
|
||||
@idDZDst INT,
|
||||
@dpz TINYINT,
|
||||
@dzMena NVARCHAR(3),
|
||||
@dzDatum DATETIME,
|
||||
@datReal DATETIME,
|
||||
@vyrCis NVARCHAR(100),
|
||||
@nazevVyrCis NVARCHAR(100),
|
||||
@poslVyrCis NVARCHAR(100),
|
||||
@idVCK INT,
|
||||
@idVCS INT,
|
||||
@idVCP INT,
|
||||
@idPZ INT,
|
||||
@idZboSklad INT,
|
||||
@idKZ INT
|
||||
|
||||
|
||||
|
||||
|
||||
SELECT @radaDokl=RadaDokladu, @cOrg=CisloOrg, @sklDokl=IDSklad, @dpz=DruhPohybuZbo, @dzMena=Mena, @dzDatum=DatPorizeni
|
||||
FROM dbo.TabDokladyZbozi WHERE ID=@IDDoklad
|
||||
|
||||
|
||||
|
||||
-- zapis posledni prevedene sarze
|
||||
IF (@radaDokl=N'281') AND (@sklDokl=@sklPekarna) // prijemka/prevodka na pekarnu
|
||||
BEGIN
|
||||
DECLARE p CURSOR LOCAL FOR
|
||||
SELECT p.ID, p.IDZboSklad
|
||||
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=@IDDoklad
|
||||
AND k.Sluzba=0
|
||||
ORDER BY p.Poradi
|
||||
OPEN p
|
||||
WHILE (1=1)
|
||||
BEGIN
|
||||
FETCH NEXT FROM p INTO @idPZ, @idZboSklad
|
||||
IF (@@FETCH_STATUS<>0) BREAK
|
||||
|
||||
SET @poslVyrCis = N''
|
||||
DECLARE v CURSOR LOCAL FOR
|
||||
SELECT ID, Nazev
|
||||
FROM dbo.TabVyrCP
|
||||
WHERE IDPolozkaDokladu=@idPZ
|
||||
AND TRIM(ISNULL(Nazev,N''))<>N''
|
||||
ORDER BY ID
|
||||
OPEN v
|
||||
WHILE (1=1)
|
||||
BEGIN
|
||||
FETCH NEXT FROM v INTO @idVCP, @vyrCis
|
||||
IF (@@FETCH_STATUS<>0) BREAK
|
||||
SET @poslVyrCis = @vyrCis
|
||||
END
|
||||
CLOSE v
|
||||
DEALLOCATE v
|
||||
|
||||
IF (@poslVyrCis<>N'')
|
||||
BEGIN
|
||||
IF NOT EXISTS(SELECT 1 FROM dbo.TabStavSkladu_EXT WHERE ID=@idZboSklad)
|
||||
INSERT dbo.TabStavSkladu_EXT (ID) VALUES (@idZboSklad)
|
||||
UPDATE dbo.TabStavSkladu_EXT SET _Prevod_PosledniSarze=@poslVyrCis WHERE ID=@idZboSklad
|
||||
END
|
||||
|
||||
END
|
||||
CLOSE p
|
||||
DEALLOCATE p
|
||||
END -- @radaDokl 281
|
||||
|
||||
|
||||
|
||||
|
||||
-- kopie prevodkove prijemky ze skladu materialu na sklad Vyroba/Pekarna
|
||||
-- na "zrcadlovy" technologicky sklad (neni uctovany), ktery slouzi jen pro vydejky z Vyrobnich prikazu
|
||||
-- z tech se denne generuje sumacni na hlavnim sklade
|
||||
IF OBJECT_ID(N'tempdb..#TabDefiniceProP01', N'U') IS NOT NULL
|
||||
SELECT TOP(1) @sklHlavni=HlavniSkladMat, @sklPekarna=SkladVyrobaPekarna, @sklTechnolog=TechnologickySklad FROM #TabDefiniceProP01
|
||||
IF (@sklHlavni IS NULL)
|
||||
SELECT @sklHlavni=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<4E><45>%'
|
||||
IF (@sklTechnolog IS NULL)
|
||||
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technologick<EFBFBD> sklad%v<>dej%'
|
||||
IF (@sklPekarna IS NULL)
|
||||
SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'V<EFBFBD>roba - Pek<65>rna'
|
||||
|
||||
|
||||
-- jen prijemka/prevodka na sklad Pekarna (211)
|
||||
IF (@dpz=0) AND (@radaDokl IN (N'281')) AND (@sklDokl=@sklPekarna) AND (@sklTechnolog IS NOT NULL)
|
||||
BEGIN
|
||||
EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZDst OUT, @Sklad=@sklTechnolog, @DruhPohybu=@dpz, @RadaDokladu=@radaDokl,
|
||||
@Mena=@dzMena, @CisloOrg=@cOrg, @DatumPorizeni=@dzDatum
|
||||
IF (@idDZDst IS NOT NULL)
|
||||
BEGIN
|
||||
SELECT @datReal=DatRealizace FROM dbo.TabDokladyZbozi WHERE ID=@IDDoklad
|
||||
EXEC dbo.hp_generuj_navazny_doklad @IDDokladDst=@idDZDst, @IDDokladSrc=@IDDoklad, @CisloOrgCil=@cOrg, @MUCil=NULL, @MenaCil=@dzMena,
|
||||
@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=1
|
||||
IF EXISTS(SELECT 1 FROM dbo.TabPohybyZbozi WHERE IDDoklad=@idDZDst)
|
||||
EXEC dbo.hp_Realizuj_Prijem @ID=@idDZDst, @DatumRealizace=@datReal, @Uzivatel=0, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1
|
||||
END
|
||||
|
||||
END -- prijmka radaDokl 281, prijemkovy sklad Vyroba pekarna ci podobny, technologicky sklad vyplneny
|
||||
178
_custom/Rootvin/sql/ep_Vyroba_DoplnSkladProVydejDleDokladu.sql
Normal file
178
_custom/Rootvin/sql/ep_Vyroba_DoplnSkladProVydejDleDokladu.sql
Normal file
@ -0,0 +1,178 @@
|
||||
-- dbo.ep_Vyroba_DoplnSkladProVydejDleDokladu
|
||||
CREATE PROCEDURE dbo.ep_Vyroba_DoplnSkladProVydejDleDokladu
|
||||
@IDDoklad INT,
|
||||
@errMsg NVARCHAR(500)=N'' OUT
|
||||
AS
|
||||
|
||||
-- HD Consulting Strakonice, T. Buzin
|
||||
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi nebo pluginu Pekerna !!
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
|
||||
IF EXISTS(SELECT 1 FROM dbo.TabDokladyZbozi WHERE Realizovano=1)
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
DECLARE
|
||||
@tranPred INT,
|
||||
@uziv INT,
|
||||
@bChyba BIT
|
||||
|
||||
DECLARE
|
||||
@sklad NVARCHAR(30),
|
||||
@datPorizeni DATETIME,
|
||||
@datNasklad DATETIME,
|
||||
@idDZ INT,
|
||||
@idPZ INT,
|
||||
@idKZ INT,
|
||||
@idSS INT,
|
||||
@idSSPek INT,
|
||||
@prepKoef NUMERIC(19,6),
|
||||
@mnozPZ NUMERIC(19,6),
|
||||
@mnozSkl NUMERIC(19,6),
|
||||
@mnozNevyd NUMERIC(19,6),
|
||||
@mnozChybi NUMERIC(19,6)
|
||||
DECLARE
|
||||
@sklMatHlavni NVARCHAR(30),
|
||||
@sklTechnolog NVARCHAR(30),
|
||||
@sklPekarna NVARCHAR(30),
|
||||
@poslSarze NVARCHAR(100),
|
||||
@poslPalList NVARCHAR(100)
|
||||
|
||||
DECLARE
|
||||
@idDZNew INT,
|
||||
@idPZNew INT,
|
||||
@rDokl NVARCHAR(3)=N'292', -- rada dokladu pro prijem "nedostatecneho materialu" -> "Příjemka - vyrovnání do normy"
|
||||
@dpz TINYINT,
|
||||
@mnoz NUMERIC(19,6),
|
||||
@vstC TINYINT,
|
||||
@menaDZ NVARCHAR(3),
|
||||
@kurzDZ NUMERIC(19,6),
|
||||
@kurzE NUMERIC(19,6),
|
||||
@jednM INT
|
||||
|
||||
|
||||
DECLARE @pol TABLE (IDZboSklad INT NOT NULL, Mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0.0, Sarze NVARCHAR(100), PaletList NVARCHAR(100) )
|
||||
DELETE FROM @pol
|
||||
|
||||
|
||||
SET @uziv = 0
|
||||
|
||||
IF (@sklMatHlavni IS NULL)
|
||||
SELECT @sklMatHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavní sklad - Materiál'
|
||||
IF (@sklTechnolog IS NULL)
|
||||
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NOVÝ% sklad%výdej%'
|
||||
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ýroba - Pekárna'
|
||||
|
||||
|
||||
|
||||
|
||||
DECLARE c CURSOR LOCAL FOR
|
||||
SELECT p.ID, p.IDDoklad, p.IDZboSklad, p.Mnozstvi, p.PrepMnozstvi, s.IDKmenZbozi, d.IDSklad, d.DatPorizeni
|
||||
FROM dbo.TabPohybyZbozi p
|
||||
INNER JOIN dbo.TabDokladyZbozi d ON (d.ID=p.IDDoklad)
|
||||
INNER JOIN dbo.TabStavSkladu s ON (s.ID=p.IDZboSklad)
|
||||
WHERE d.ID=@IDDoklad
|
||||
OPEN c
|
||||
WHILE (1=1)
|
||||
BEGIN
|
||||
FETCH NEXT FROM c INTO @idPZ, @idDZ, @idSS, @mnozPZ, @prepKoef, @idKZ, @sklad, @datPorizeni
|
||||
IF (@@FETCH_STATUS<>0) BREAK
|
||||
|
||||
SET @mnozPZ = @mnozPZ * @prepKoef
|
||||
SET @mnozNevyd = ISNULL( (SELECT SUM(p.Mnozstvi*p.PrepMnozstvi) FROM dbo.TabPohybyZbozi p
|
||||
INNER JOIN dbo.TabDokladyZbozi d ON (d.ID=p.IDDoklad)
|
||||
WHERE p.IDZboSklad=@idSS
|
||||
AND p.IDDoklad<>@idDZ
|
||||
AND p.Mnozstvi>0
|
||||
AND d.DruhPohybuZbo IN (2,4)
|
||||
AND d.Realizovano=0
|
||||
AND d.DatPorizeni<@datPorizeni)
|
||||
, 0)
|
||||
SET @mnozSkl = ISNULL( (SELECT Mnozstvi FROM dbo.TabStavSkladu WHERE ID=@idSS), 0)
|
||||
SET @mnozChybi = @mnozSkl - @mnozPZ - @mnozNevyd
|
||||
IF (@mnozChybi>0)
|
||||
BEGIN
|
||||
SET @idSSPek = NULL
|
||||
IF (@sklPekarna IS NOT NULL)
|
||||
SELECT @idSSPek=ID FROM dbo.TabStavSkladu WHERE IDSklad=@sklPekarna AND IDKmenZbozi=@idKZ
|
||||
SELECT @poslSarze=_Prevod_PosledniSarze, @poslPalList=_Prevod_PosledniPaletList
|
||||
FROM dbo.TabStavSkladu_EXT WHERE ID=@idSSPek
|
||||
|
||||
UPDATE @pol SET Mnozstvi = Mnozstvi + @mnozChybi WHERE IDZboSklad=@idSS
|
||||
IF (@@ROWCOUNT=0)
|
||||
INSERT @pol (IDZboSklad, Mnozstvi, Sarze, PaletList) SELECT @idSS, @mnozChybi, @poslSarze, @poslPalList
|
||||
END
|
||||
|
||||
END
|
||||
CLOSE c
|
||||
DEALLOCATE c
|
||||
|
||||
|
||||
-- pokud mam polozky na doplneni, udelej doklad a realizuj ho
|
||||
IF EXISTS(SELECT 1 FROM @pol)
|
||||
BEGIN
|
||||
BEGIN TRY
|
||||
SET @tranPred=@@TRANCOUNT
|
||||
IF (@tranPred=0)
|
||||
BEGIN TRAN
|
||||
|
||||
SET @datNasklad = (SELECT MIN(d.DatPorizeni) FROM dbo.TabPohybyZbozi p INNER JOIN dbo.TabDokladyZbozi d ON (d.ID=p.IDDoklad)
|
||||
WHERE p.Mnozstvi>0 AND d.DruhPohybuZbo IN (2,4) AND d.Realizovano=0 AND p.IDZboSklad IN (SELECT IDZboSklad FROM @pol))
|
||||
IF (@datNasklad IS NULL)
|
||||
SET @datNasklad = DATEADD(second, -5, @datPorizeni)
|
||||
|
||||
SET @dpz=0
|
||||
EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZNew OUT, @Sklad=@sklad, @DruhPohybu=@dpz, @RadaDokladu=@rDokl, @CisloOrg=0, @DatumPorizeni=@datNasklad
|
||||
IF (@idDZNew IS NOT NULL)
|
||||
BEGIN
|
||||
SELECT @menaDZ=Mena, @vstC=VstupniCena, @kurzDZ=Kurz, @kurzE=KurzEuro, @jednM=JednotkaMeny FROM dbo.TabDokladyZbozi WHERE ID=@idDZNew
|
||||
|
||||
DECLARE c CURSOR LOCAL FOR
|
||||
SELECT IDZboSklad, Mnozstvi, ISNULL(Sarze,N''), ISNULL(PaletList,N'') FROM @pol
|
||||
OPEN c
|
||||
WHILE (1=1)
|
||||
BEGIN
|
||||
FETCH NEXT FROM c INTO @idSS, @mnoz, @poslSarze, @poslPalList
|
||||
IF (@@FETCH_STATUS<>0) BREAK
|
||||
|
||||
EXEC dbo.hp_InsertPolozkyOZ @ident=@idPZNew OUT, @IDDoklad=@idDZNew, @DruhPohybu=@dpz, @CisloOrg=0, @IDZboSklad=@idSS, @Mena=@menaDZ,
|
||||
@Kurz=@kurzDZ, @KurzEuro=@kurzE, @JednotkaMeny=@jednM, @SazbaSD=NULL, @SazbaDPH=NULL, @ZakazanoDPH=0,
|
||||
@VstupniCena=@vstC, @Mnozstvi=@mnoz
|
||||
IF (@idPZNew IS NOT NULL)
|
||||
BEGIN
|
||||
IF (@poslSarze<>N'') OR (@poslPalList<>N'')
|
||||
BEGIN
|
||||
IF NOT EXISTS(SELECT 1 FROM dbo.TabPohybyZbozi_EXT WHERE ID=@idPZNew)
|
||||
INSERT dbo.TabPohybyZbozi_EXT (ID) VALUES (@idPZNew)
|
||||
UPDATE dbo.TabPohybyZbozi_EXT SET _Vyroba_Sarze=@poslSarze, _Vyroba_PaletList=@poslPalList WHERE ID=@idPZNew
|
||||
END
|
||||
END
|
||||
|
||||
END
|
||||
CLOSE c
|
||||
DEALLOCATE c
|
||||
|
||||
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZNew
|
||||
EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=@idDZ, @AktualizaceSlev=0
|
||||
-- realizace
|
||||
EXEC dbo.hp_Realizuj_Prijem @ID=@idDZNew, @DatumRealizace=@datNasklad, @Uzivatel=@uziv, @BylaChyba=@bChyba OUT
|
||||
|
||||
END
|
||||
IF (@tranPred=0) AND (@@TRANCOUNT>0)
|
||||
COMMIT TRAN
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @errMsg = ERROR_MESSAGE()
|
||||
IF (@tranPred=0) AND (@@TRANCOUNT>0)
|
||||
ROLLBACK TRAN
|
||||
END CATCH
|
||||
END
|
||||
|
||||
|
||||
|
||||
299
_custom/Rootvin/sql/ep_Vyroba_GenOdvodZeMzdy.sql
Normal file
299
_custom/Rootvin/sql/ep_Vyroba_GenOdvodZeMzdy.sql
Normal file
@ -0,0 +1,299 @@
|
||||
-- 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
|
||||
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
|
||||
@aktDatum DATETIME=GETDATE(),
|
||||
@bChyba BIT,
|
||||
@ret INT,
|
||||
@jeOdvOper BIT=0,
|
||||
@idUziv INT,
|
||||
@IDPrikaz INT,
|
||||
@IDZakazModif INT,
|
||||
@IDPrikazVyssi INT,
|
||||
@doklKV INT,
|
||||
@IDKmen INT,
|
||||
@idPZ INT,
|
||||
@NekontrolMnozOdvedFinal BIT=0,
|
||||
@mnozstvi NUMERIC(19,6)=0,
|
||||
@radaOdvNaSklad NVARCHAR(3)=N'273',
|
||||
@sklProOdvod NVARCHAR(30)=N'261',
|
||||
@radaVPr NVARCHAR(10),
|
||||
@idPrij INT,
|
||||
@idPrijKopie INT,
|
||||
@sklTechnicky NVARCHAR(30),
|
||||
@dpz TINYINT,
|
||||
@dzDatum DATETIME,
|
||||
@dzMena NVARCHAR(3)
|
||||
DECLARE
|
||||
@idDZPomocPrijem INT,
|
||||
@idPZPomocPrijem INT,
|
||||
@idSSPomocPrijem INT,
|
||||
@mnozPrijem NUMERIC(19,6)
|
||||
|
||||
|
||||
|
||||
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', N'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', N'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%NE<4E><45>%'
|
||||
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
|
||||
|
||||
-- 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 NOT NULL)
|
||||
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
|
||||
|
||||
|
||||
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
|
||||
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', N'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', N'U') IS NOT NULL
|
||||
DELETE FROM #TabGenPrijem
|
||||
END -- @IDPrikazVyssi IS NOT NULL
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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
|
||||
|
||||
-- kopie na technologicky sklad, aby se mohly delat 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
|
||||
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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- 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
|
||||
503
_custom/Rootvin/sql/ep_Vyroba_GenVydejZeMzdy.sql
Normal file
503
_custom/Rootvin/sql/ep_Vyroba_GenVydejZeMzdy.sql
Normal file
@ -0,0 +1,503 @@
|
||||
-- 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),
|
||||
@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<4E><45>%'
|
||||
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
|
||||
|
||||
|
||||
75
_custom/Rootvin/sql/ep_Vyroba_InsertEvidRozpracOper.sql
Normal file
75
_custom/Rootvin/sql/ep_Vyroba_InsertEvidRozpracOper.sql
Normal file
@ -0,0 +1,75 @@
|
||||
-- dbo.ep_Vyroba_InsertEvidRozpracOper
|
||||
CREATE PROCEDURE dbo.ep_Vyroba_InsertEvidRozpracOper
|
||||
@IDZamestnance INT=NULL,
|
||||
@IDPracoviste INT=NULL,
|
||||
@IDStroje INT=NULL,
|
||||
@CasZahajeni DATETIME=NULL,
|
||||
@ErrMsg NVARCHAR(500)=N'' OUT
|
||||
AS
|
||||
|
||||
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !!
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
DECLARE
|
||||
@tranPred INT
|
||||
|
||||
DECLARE
|
||||
@idEROp INT=NULL
|
||||
|
||||
|
||||
IF EXISTS(SELECT 1 FROM dbo.TabEvidRozpracOper)
|
||||
BEGIN
|
||||
SELECT @idEROp=MAX(ID) FROM dbo.TabEvidRozpracOper
|
||||
DBCC CHECKIDENT(TabEvidRozpracOper, RESEED, @idEROp)
|
||||
END
|
||||
ELSE
|
||||
DBCC CHECKIDENT(TabEvidRozpracOper, RESEED, 1)
|
||||
SET @idEROp=NULL
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IF (@IDPracoviste IS NULL) AND (@IDStroje IS NOT NULL)
|
||||
SELECT @IDPracoviste=IDPrac FROM dbo.TabCisStroju WHERE ID=@IDStroje
|
||||
|
||||
IF (@IDZamestnance IS NULL) OR (@IDPracoviste IS NULL)
|
||||
BEGIN
|
||||
SET @ErrMsg = N'Neni zadan zamestnanec nebo pracoviste'
|
||||
RETURN NULL
|
||||
END
|
||||
|
||||
IF OBJECT_ID(N'tempdb..#TabExtKom', N'U') IS NULL
|
||||
CREATE TABLE #TabExtKom (Typ TINYINT, Poznamka NVARCHAR(255) NOT NULL DEFAULT N'')
|
||||
|
||||
|
||||
|
||||
SET @CasZahajeni = ISNULL(@CasZahajeni, GETDATE())
|
||||
|
||||
|
||||
BEGIN TRY
|
||||
SET @tranPred = @@TRANCOUNT
|
||||
IF (@tranPred=0) BEGIN TRAN
|
||||
|
||||
INSERT dbo.TabEvidRozpracOper (IDZamestnance, CasZahajeni, IDPracoviste, IDStroje)
|
||||
SELECT @IDZamestnance, @CasZahajeni, @IDPracoviste, @IDStroje
|
||||
SET @idEROp = SCOPE_IDENTITY()
|
||||
|
||||
-- slepice
|
||||
IF OBJECT_ID(N'dbo.ep_Vyroba_InsertEvidRozpracOper_Po', N'P') IS NOT NULL
|
||||
EXEC dbo.ep_Vyroba_InsertEvidRozpracOper_Po @idEROp
|
||||
|
||||
|
||||
IF (@tranPred=0) ANd (@@TRANCOUNT>0)
|
||||
COMMIT TRAN
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF (@tranPred=0) ANd (@@TRANCOUNT>0)
|
||||
ROLLBACK TRAN
|
||||
SET @ErrMsg = ERROR_MESSAGE()
|
||||
INSERT #TabExtKom (Typ, Poznamka) SELECT 3, @ErrMsg
|
||||
SET @idEROp = NULL
|
||||
END CATCH
|
||||
|
||||
RETURN @idEROp
|
||||
108
_custom/Rootvin/sql/ep_Vyroba_InsertEvidRozpracOperPol.sql
Normal file
108
_custom/Rootvin/sql/ep_Vyroba_InsertEvidRozpracOperPol.sql
Normal file
@ -0,0 +1,108 @@
|
||||
-- dbo.ep_Vyroba_InsertEvidRozpracOperPol
|
||||
CREATE PROCEDURE dbo.ep_Vyroba_InsertEvidRozpracOperPol
|
||||
@IdEvidRozpOper INT,
|
||||
@IdPrikaz INT,
|
||||
@doklPrPost INT,
|
||||
@altPrPost NCHAR(1),
|
||||
@IDPaleta INT=NULL,
|
||||
@IdVyrCis INT=NULL,
|
||||
@cisloPL NVARCHAR(50),
|
||||
@sarze NVARCHAR(30),
|
||||
@mnozOdv NUMERIC(19,6)=0,
|
||||
@skCas NUMERIC(19,6)=0,
|
||||
@skCasT TINYINT=1,
|
||||
@skCasObsl NUMERIC(19,6)=0,
|
||||
@skCasObslT TINYINT=1
|
||||
AS
|
||||
|
||||
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu pluginu PluginHDCRTN !!
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
DECLARE
|
||||
@errMsg NVARCHAR(500),
|
||||
@tranPred INT
|
||||
|
||||
DECLARE
|
||||
@idEROpPol INT=NULL,
|
||||
@idTemp INT=NULL,
|
||||
@mnEROp NUMERIC(19,6),
|
||||
@sumMnEROp NUMERIC(19,6)
|
||||
|
||||
|
||||
|
||||
IF OBJECT_ID(N'#TabExtKom', N'U') IS NULL
|
||||
CREATE TABLE #TabExtKom (Typ TINYINT, Poznamka NVARCHAR(255) NOT NULL DEFAULT N'')
|
||||
|
||||
|
||||
|
||||
|
||||
IF EXISTS(SELECT 1 FROM dbo.TabEvidRozpracOperR)
|
||||
BEGIN
|
||||
SELECT @idEROpPol=MAX(ID) FROM dbo.TabEvidRozpracOperR
|
||||
DBCC CHECKIDENT(TabEvidRozpracOperR, RESEED, @idEROpPol)
|
||||
END
|
||||
ELSE
|
||||
DBCC CHECKIDENT(TabEvidRozpracOperR, RESEED, 1)
|
||||
SET @idEROpPol=NULL
|
||||
|
||||
|
||||
|
||||
|
||||
SET @sarze = TRIM(ISNULL(@sarze, N''))
|
||||
SET @cisloPL = TRIM(ISNULL(@cisloPL, N''))
|
||||
|
||||
IF (@IDPaleta IS NOT NULL) AND (@IDVyrCis IS NULL)
|
||||
SELECT @idVyrCis=IDVyrCisPrikaz FROM dbo._TabVyroba_Palety WHERE ID=@IDPaleta
|
||||
IF (@IDVyrCis IS NULL) AND (@cisloPL<>N'') AND (@IdPrikaz IS NOT NULL) AND (@sarze<>N'')
|
||||
SET @IDVyrCis = (SELECT ID FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@IdPrikaz AND VyrCislo=@cisloPL AND Popis=@sarze)
|
||||
IF (@IDVyrCis IS NULL) AND (@cisloPL<>N'') AND (@IdPrikaz IS NOT NULL)
|
||||
SET @IDVyrCis = (SELECT ID FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@IdPrikaz AND VyrCislo=@cisloPL)
|
||||
|
||||
|
||||
|
||||
BEGIN TRY
|
||||
SET @tranPred = @@TRANCOUNT
|
||||
IF (@tranPred=0) BEGIN TRAN
|
||||
|
||||
INSERT dbo.TabEvidRozpracOperR (IDEvidRozpracOper, IDPrikaz, DokladPrPostup, AltPrPostup, IDVyrCis, Mnoz_odv, Sk_cas, Sk_cas_T, Sk_cas_Obsluhy, Sk_cas_Obsluhy_T)
|
||||
SELECT @IdEvidRozpOper, @IdPrikaz, @doklPrPost, @altPrPost, @IdVyrCis, @mnozOdv, @skCas, @skCasT, @skCasObsl, @skCasObslT
|
||||
SET @idEROpPol = SCOPE_IDENTITY()
|
||||
|
||||
IF (@idEROpPol IS NOT NULL)
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.TabEvidRozpracOperR_EXT WHERE ID=@idEROpPol)
|
||||
INSERT dbo.TabEvidRozpracOperR_EXT (ID) VALUES (@idEROpPol)
|
||||
UPDATE dbo.TabEvidRozpracOperR_EXT SET _Sarze=@sarze WHERE ID=@idEROpPol
|
||||
|
||||
|
||||
-- zapis koeficient
|
||||
SET @sumMnEROp = ISNULL( (SELECT SUM(Mnoz_odv) FROM dbo.TabEvidRozpracOperR WHERE IDEvidRozpracOper=@IdEvidRozpOper), 0)
|
||||
DECLARE crLoc CURSOR LOCAL FOR
|
||||
SELECT ID, Mnoz_odv FROM dbo.TabEvidRozpracOperR WHERE IDEvidRozpracOper=@IdEvidRozpOper
|
||||
OPEN crLoc
|
||||
WHILE (1=1)
|
||||
BEGIN
|
||||
FETCH NEXT FROM crLoc INTO @idTemp, @mnEROp
|
||||
IF (@@FETCH_STATUS<>0) BREAK
|
||||
UPDATE dbo.TabEvidRozpracOperR_EXT SET _KoefMnoz=ROUND(@mnEROp/@sumMnEROp, 5) WHERE ID=@idTemp
|
||||
END
|
||||
CLOSE crLoc
|
||||
DEALLOCATE crLoc
|
||||
|
||||
|
||||
IF (@tranPred=0) ANd (@@TRANCOUNT>0)
|
||||
COMMIT TRAN
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF CURSOR_STATUS('local','crLoc')>=-1
|
||||
BEGIN
|
||||
CLOSE crLoc;
|
||||
DEALLOCATE crLoc
|
||||
END
|
||||
IF (@tranPred=0) ANd (@@TRANCOUNT>0)
|
||||
ROLLBACK TRAN
|
||||
INSERT #TabExtKom (Typ, Poznamka) SELECT 3, ERROR_MESSAGE()
|
||||
SET @idEROpPol = NULL
|
||||
END CATCH
|
||||
|
||||
RETURN @idEROpPol
|
||||
407
_custom/Rootvin/sql/szDilce
Normal file
407
_custom/Rootvin/sql/szDilce
Normal file
@ -0,0 +1,407 @@
|
||||
-- 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'321',
|
||||
@radaVydej NVARCHAR(3)=N'223'
|
||||
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,
|
||||
@retVal INT=0,
|
||||
@errID int,
|
||||
@sql NVARCHAR(1000),
|
||||
@idUziv INT=0,
|
||||
@idZam INT,
|
||||
@sklTechnolog NVARCHAR(30),
|
||||
@sklMatHlavni NVARCHAR(30),
|
||||
@sklPekarna NVARCHAR(30),
|
||||
@szDilec NVARCHAR(3)
|
||||
|
||||
|
||||
|
||||
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<76> sklad - Materi<72>l'
|
||||
IF (@sklTechnolog IS NULL)
|
||||
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technologick<63> sklad%v<>dej%'
|
||||
IF (@sklPekarna IS NULL)
|
||||
SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'V<>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=0,
|
||||
@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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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)
|
||||
IF (@szDilec<>N'701') AND EXISTS (SELECT 1 FROM dbo.TabPrikaz p INNER JOIN dbo.TabKmenZbozi k ON (k.ID=p.IDTabKmen) WHERE p.IDPrikazVyssi=@IDPrikaz AND k.SkupZbo=N'701')
|
||||
DELETE FROM #TabPrKVazbyGen WHERE vyssi=@idDilec AND nizsi IN (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=N'701')
|
||||
|
||||
|
||||
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
|
||||
|
||||
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 @errMsg = ERROR_MESSAGE()
|
||||
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba realizace v<>dejky p<><70>kazu', @idVyd
|
||||
END CATCH
|
||||
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
|
||||
|
||||
|
||||
12
_custom/Rootvin/sql/tbl_hdc_DataZone_konfig.sql
Normal file
12
_custom/Rootvin/sql/tbl_hdc_DataZone_konfig.sql
Normal file
@ -0,0 +1,12 @@
|
||||
IF OBJECT_ID(N'dbo._hdc_DataZone_konfig', N'U') IS NULL
|
||||
CREATE TABLE dbo._hdc_DataZone_konfig (
|
||||
ID int IDENTITY(1, 1) NOT NULL,
|
||||
Typ NCHAR(3) NOT NULL,
|
||||
Nazev NVARCHAR(100) NOT NULL,
|
||||
Verze NCHAR(8) NOT NULL,
|
||||
Obsah nvarchar(max) COLLATE Czech_CI_AS NULL,
|
||||
DatPorizeni DATETIME NOT NULL DEFAULT GETDATE(),
|
||||
DatZmeny DATETIME,
|
||||
CONSTRAINT PK_hdc_DataZone_konfig PRIMARY KEY CLUSTERED (ID)
|
||||
WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
|
||||
)
|
||||
1088
_custom/Rootvin/uCtrlCustom.pas
Normal file
1088
_custom/Rootvin/uCtrlCustom.pas
Normal file
File diff suppressed because it is too large
Load Diff
319
_custom/Rootvin/uHeOObj_Custom.pas
Normal file
319
_custom/Rootvin/uHeOObj_Custom.pas
Normal file
@ -0,0 +1,319 @@
|
||||
unit uHeOObj_Custom;
|
||||
{$RTTI EXPLICIT METHODS([vcPublic, vcPublished]) FIELDS([vcPrivate, vcProtected, vcPublic, vcPublished]) PROPERTIES([vcPublic, vcPublished])}
|
||||
|
||||
|
||||
interface
|
||||
{$I 'GlobalDefs.inc'}
|
||||
|
||||
uses
|
||||
System.Generics.Collections,
|
||||
MVCFramework.Serializer.Commons,
|
||||
MVCFramework.ActiveRecord,
|
||||
MVCFramework.Nullables,
|
||||
{$IFDEF SWAGGER}
|
||||
MVCFramework.Swagger.Commons,
|
||||
{$ENDIF}
|
||||
helTabsBIDs,
|
||||
uHeoObj_Base;
|
||||
|
||||
|
||||
const
|
||||
{$I C:\_zakaznici\pluginy_obecne\HDCApi2\globalConsts.inc}
|
||||
|
||||
tblGSDDoklady = '[dbo].[Gatema_SDDoklady]';
|
||||
tblGSDScanData = '[dbo].[Gatema_SDScanData]';
|
||||
|
||||
|
||||
type
|
||||
[MVCNameCase(ncLowerCase)]
|
||||
TRTNMicharnaPozadavekPotvrzeni = class(THeliosObjekty)
|
||||
private
|
||||
FIDDataZoneTask: integer;
|
||||
FDatZpracovani: NullableTDateTime;
|
||||
FJSONData: string;
|
||||
public
|
||||
[MVCColumn('IDDataZoneTask', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDDataZoneTask', 'ID DataZone tasku', true, false)]
|
||||
property IDDataZoneTask: integer read FIDDataZoneTask write FIDDataZoneTask;
|
||||
|
||||
[MVCColumn('DatZpracovani', false)]
|
||||
[MVCSwagJsonSchemaField(stDateTime, 'DatZpracovani', 'ID požadavku u DataZone', false, true)]
|
||||
property DatZpracovani: NullableTDateTime read FDatZpracovani write FDatZpracovani;
|
||||
|
||||
[MVCColumn('JSONData', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'JSONData', 'JSONData', true, false)]
|
||||
property JSONData: string read FJSONData write FJSONData;
|
||||
|
||||
end;
|
||||
|
||||
|
||||
|
||||
[MVCNameCase(ncLowerCase)]
|
||||
TRTNMicharnaSpotreba = class(THeliosObjekty)
|
||||
private
|
||||
FIDDataZoneTask: integer;
|
||||
FDatZpracovani: NullableTDateTime;
|
||||
FJSONText: string;
|
||||
public
|
||||
[MVCColumn('IDDataZoneTask', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDDataZoneTask', 'ID DataZone tasku', true, false)]
|
||||
property IDDataZoneTask: integer read FIDDataZoneTask write FIDDataZoneTask;
|
||||
|
||||
[MVCColumn('DatZpracovani', false)]
|
||||
[MVCSwagJsonSchemaField(stDateTime, 'DatZpracovani', 'ID požadavku u DataZone', false, true)]
|
||||
property DatZpracovani: NullableTDateTime read FDatZpracovani write FDatZpracovani;
|
||||
|
||||
[MVCColumn('JSONText', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'JSONText', 'ID požadavku u DataZone', true, false)]
|
||||
property JSONText: string read FJSONText write FJSONText;
|
||||
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[MVCNameCase(ncLowerCase)]
|
||||
TGatemaSDScanData = class(THeliosObjekty)
|
||||
private
|
||||
FIDDokladSD: integer;
|
||||
FIDZdrojSD: NullableInt32;
|
||||
FIDPolozky: NullableInt32;
|
||||
FIDPrikaz: NullableInt32;
|
||||
FDokladPrKV: NullableInt32;
|
||||
FDokladPrVPV: NullableInt32;
|
||||
FIDPohZbo: NullableInt32;
|
||||
FIDVyrCS_Obj: NullableInt32;
|
||||
FIDInvItem: NullableInt32;
|
||||
FIDPohZbo_New: NullableInt32;
|
||||
FIDKmenZbozi: NullableInt32;
|
||||
FIDStavSkladu: NullableInt32;
|
||||
FVyrCislo: NullableString;
|
||||
FPopisSarze: NullableString;
|
||||
FMnozstvi: Single;
|
||||
FMnozstviEvidence: Single;
|
||||
FMJ: NullableString;
|
||||
FMJEvidence: NullableString;
|
||||
FBarCode: NullableString;
|
||||
FDatumExpirace: NullableTDateTime;
|
||||
FKodBaleni: NullableString;
|
||||
FDatPorizeni: TDateTime;
|
||||
FGenerovat: NullableBoolean;
|
||||
FJedinecneCislo: NullableString;
|
||||
public
|
||||
{
|
||||
[MVCTableField('ID', [foPrimaryKey, foReadOnly])]
|
||||
[MVCColumn('ID')]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'ID', 'ID výrobní operace', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength
|
||||
property ID: integer read FID write FID;
|
||||
}
|
||||
[MVCColumn('IDDokladSD', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDDokladSD', 'ID dokladu SD', true, false)]
|
||||
property IDDokladSD: integer read FIDDokladSD write FIDDokladSD;
|
||||
|
||||
[MVCColumn('IDZdrojSD', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDZdrojSD', 'ID zdorj SD', false, true)]
|
||||
property IDZdrojSD: NullableInt32 read FIDZdrojSD write FIDZdrojSD;
|
||||
|
||||
[MVCColumn('IDPolozky', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDPolozky', 'ID položky', false, true)]
|
||||
property IDPolozky: NullableInt32 read FIDPolozky write FIDPolozky;
|
||||
|
||||
[MVCColumn('IDPrikaz', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID výrobního příkazu', false, true)]
|
||||
property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz;
|
||||
|
||||
[MVCColumn('VyrCislo', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'VyrCislo', 'Výrobní číslo', true, false, 1, 100)]
|
||||
property VyrCislo: NullableString read FVyrCislo write FVyrCislo;
|
||||
|
||||
[MVCColumn('PopisSarze', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'PopisSarze', 'Popis šarže', true, false, 1, 100)]
|
||||
property PopisSarze: NullableString read FPopisSarze write FPopisSarze;
|
||||
|
||||
[MVCColumn('Mnozstvi')]
|
||||
[MVCSwagJsonSchemaField('Mnozstvi', 'Množství', true, false)]
|
||||
property Mnozstvi: Single read FMnozstvi write FMnozstvi;
|
||||
|
||||
[MVCColumn('MnozstviEvidence')]
|
||||
[MVCSwagJsonSchemaField('MnozstviEvidence', 'Množství v evidenční jednotce', true, false)]
|
||||
property MnozstviEvidence: Single read FMnozstviEvidence write FMnozstviEvidence;
|
||||
|
||||
[MVCColumn('DatumExpirace')]
|
||||
[MVCSwagJsonSchemaField('DatumExpirace', 'Datum expirace', false, true)]
|
||||
property DatumExpirace: NullableTDatetime read FDatumExpirace write FDatumExpirace;
|
||||
|
||||
[MVCColumn('DatPorizeni')]
|
||||
[MVCSwagJsonSchemaField('DatPorizeni', 'Datum pořízení', true, false)]
|
||||
property DatPorizeni: TDatetime read FDatPorizeni write FDatPorizeni;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[MVCNameCase(ncLowerCase)]
|
||||
TGatemaSDZdrojData = class(THeliosObjekty)
|
||||
private
|
||||
FIDDokladSD: integer;
|
||||
FIDDokZbo: NullableInt32;
|
||||
FIDPrikaz: NullableInt32;
|
||||
FGUIDDokladu: NullableTGUID;
|
||||
public
|
||||
[MVCColumn('IDDokladSD', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDDokladSD', 'ID dokladu SD', true, false)]
|
||||
property IDDokladSD: integer read FIDDokladSD write FIDDokladSD;
|
||||
|
||||
[MVCColumn('IDDokZbo', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'FIDDokZbo', 'ID dokladu OZ', false, true)]
|
||||
property IDDokZbo: NullableInt32 read FIDDokZbo write FIDDokZbo;
|
||||
|
||||
[MVCColumn('IDPrikaz', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID výrobního příkazu', false, true)]
|
||||
property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz;
|
||||
|
||||
[MVCColumn('GUIDDokladu', false)]
|
||||
[MVCSwagJsonSchemaField(stGuid, 'GUIDDokladu', 'GUID dokladu', false, true)]
|
||||
property GUIDDokladu: NullableTGUID read FGUIDDokladu write FGUIDDokladu;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
[MVCNameCase(ncLowerCase)]
|
||||
TGatemaSDDoklad = class(THeliosObjekty)
|
||||
private
|
||||
FTypDokladu: integer;
|
||||
FPodtypDokladu: NullableInt32;
|
||||
FRadaDokladu: NullableString;
|
||||
FDruhPohybuZbo: NullableInt32;
|
||||
FSklad: NullableString;
|
||||
FSkladCil: NullableString;
|
||||
FIDPrikaz: NullableInt32;
|
||||
FIDDokZbo: NullableInt32;
|
||||
FIDDokZbo_New: NullableInt32;
|
||||
FGUIDDokZbo: NullableTGUID;
|
||||
FGUIDDokZbo_New: NullableTGUID;
|
||||
FIDInvHead: NullableInt32;
|
||||
FIDOrg: NullableInt32;
|
||||
FCisloOrg: NullableInt32;
|
||||
FDatumPripadu: NullableTDateTime;
|
||||
FDatPorizeni: TDateTime;
|
||||
FDatGenerovani: NullableTDateTime;
|
||||
FScanData: TObjectList<TGatemaSDScanData>;
|
||||
procedure SetSDScanData (const Value: TObjectList<TGatemaSDScanData>);
|
||||
public
|
||||
constructor Create; virtual;
|
||||
destructor Destroy; override;
|
||||
{
|
||||
[MVCTableField('ID', [foPrimaryKey, foReadOnly])]
|
||||
[MVCColumn('ID')]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'ID', 'ID výrobní operace', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength
|
||||
property ID: integer read FID write FID;
|
||||
}
|
||||
[MVCColumn('TypDokladu', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'TypDokladu', 'Typ dokladu', true, false)]
|
||||
property TypDokladu: integer read FTypDokladu write FTypDokladu;
|
||||
|
||||
[MVCColumn('PodtypDokladu', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'PodtypDokladu', 'Podtyp dokladu', false, true)]
|
||||
property PodtypDokladu: NullableInt32 read FPodtypDokladu write FPodtypDokladu;
|
||||
|
||||
[MVCColumn('RadaDokladu', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'RadaDokladu', 'Řada dokladu', false, true)]
|
||||
property RadaDokladu: NullableString read FRadaDokladu write FRadaDokladu;
|
||||
|
||||
[MVCColumn('DruhPohybuZbo', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'DruhPohybuZbo', 'Druh pohybu zboží', false, true)]
|
||||
property DruhPohybuZbo: NullableInt32 read FDruhPohybuZbo write FDruhPohybuZbo;
|
||||
|
||||
[MVCColumn('Sklad', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'Sklad', 'Sklad', false, true)]
|
||||
property Sklad: NullableString read FSklad write FSklad;
|
||||
|
||||
[MVCColumn('SkladCil', false)]
|
||||
[MVCSwagJsonSchemaField(stString, 'SkladCil', 'Cílový sklad', false, true)]
|
||||
property SkladCil: NullableString read FSkladCil write FSkladCil;
|
||||
|
||||
[MVCColumn('IDPrikaz', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID výrobního příkazu', false, true)]
|
||||
property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz;
|
||||
|
||||
[MVCColumn('IDDokZbo', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDDokZbo', 'ID dokladu OZ', false, true)]
|
||||
property IDDokZbo: NullableInt32 read FIDDokZbo write FIDDokZbo;
|
||||
|
||||
[MVCColumn('IDDokZbo_New', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDDokZbo_New', 'ID nového dokladu OZ', false, true)]
|
||||
property IDDokZbo_New: NullableInt32 read FIDDokZbo_New write FIDDokZbo_New;
|
||||
|
||||
[MVCColumn('IDInvHead', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDInvHead', 'ID dokladu inventury', false, true)]
|
||||
property IDInvHead: NullableInt32 read FIDInvHead write FIDInvHead;
|
||||
|
||||
[MVCColumn('IDOrg', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'IDOrg', 'ID organizace', false, true)]
|
||||
property IDOrg: NullableInt32 read FIDOrg write FIDOrg;
|
||||
|
||||
[MVCColumn('CisloOrg', false)]
|
||||
[MVCSwagJsonSchemaField(stInteger, 'CisloOrg', 'Číslo organizace', false, true)]
|
||||
property CisloOrg: NullableInt32 read FCisloOrg write FCisloOrg;
|
||||
|
||||
[MVCColumn('DatumPripadu')]
|
||||
[MVCSwagJsonSchemaField('DatumPripadu', 'Datum případu', false, true)]
|
||||
property DatumPripadu: NullableTDatetime read FDatumPripadu write FDatumPripadu;
|
||||
|
||||
[MVCColumn('DatPorizeni')]
|
||||
[MVCSwagJsonSchemaField('DatPorizeni', 'Datum pořízení', true, false)]
|
||||
property DatPorizeni: TDatetime read FDatPorizeni write FDatPorizeni;
|
||||
|
||||
[MVCColumn('DatGenerovani')]
|
||||
[MVCSwagJsonSchemaField('DatGenerovani', 'Datum generování dokladu OZ', false, true)]
|
||||
property DatGenerovani: NullableTDatetime read FDatGenerovani write FDatGenerovani;
|
||||
|
||||
[MapperListOf(TGatemaSDScanData)]
|
||||
property ScanData: TObjectList<TGatemaSDScanData> read FScanData write SetSDScanData;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
System.SysUtils,
|
||||
System.StrUtils,
|
||||
System.RegularExpressions;
|
||||
|
||||
|
||||
|
||||
{ TGatemaSDDoklad }
|
||||
|
||||
constructor TGatemaSDDoklad.Create;
|
||||
begin
|
||||
inherited;
|
||||
FScanData:= TObjectList<TGatemaSDScanData>.Create;
|
||||
end;
|
||||
|
||||
|
||||
destructor TGatemaSDDoklad.Destroy;
|
||||
begin
|
||||
// if (FPohybyOZ<>nil) then
|
||||
// FPohybyOZ.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
|
||||
procedure TGatemaSDDoklad.SetSDScanData(const Value: TObjectList<TGatemaSDScanData>);
|
||||
begin
|
||||
if (Value<>FScanData) then
|
||||
begin
|
||||
FScanData.Free;
|
||||
FScanData:= Value;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
1222
_custom/Rootvin/uSvcCustom.pas
Normal file
1222
_custom/Rootvin/uSvcCustom.pas
Normal file
File diff suppressed because it is too large
Load Diff
6
_custom/Rootvin/uTabs.inc
Normal file
6
_custom/Rootvin/uTabs.inc
Normal file
@ -0,0 +1,6 @@
|
||||
const
|
||||
tblMichPozadavek = '[dbo].[_hdc_DataZone_MicharnaPozadavek]';
|
||||
tblMichSpotreba = '[dbo].[_hdc_DataZone_MicharnaSpotreba]';
|
||||
tblPrijataJsonData = '[dbo].[_hdc_ph_PrijataJsonData]'; // data z Pro Holdingu
|
||||
tblVyrobaObjednavky = '[dbo].[_TabVyroba_Objednavky]'; // data objednavek z Pro Holdingu
|
||||
tblPuvodniVC = '[dbo].[_hdc_PZ_PuvodniVC]';
|
||||
8
_custom/Rootvin/uWebModCustom.inc
Normal file
8
_custom/Rootvin/uWebModCustom.inc
Normal file
@ -0,0 +1,8 @@
|
||||
{$IFDEF CUSTOM_CTRL_RootvinX}
|
||||
FEngine.AddController (TGatemaSDDokladController);
|
||||
FEngine.AddController (TGatemaSDDokladOZController);
|
||||
FEngine.AddController (TGatemaSDScanDataController);
|
||||
{$ENDIF}
|
||||
|
||||
FEngine.AddController (TRTNController);
|
||||
|
||||
BIN
_custom/Rootvin/zdroje.RES
Normal file
BIN
_custom/Rootvin/zdroje.RES
Normal file
Binary file not shown.
44
_custom/Rootvin/zdroje.rc
Normal file
44
_custom/Rootvin/zdroje.rc
Normal file
@ -0,0 +1,44 @@
|
||||
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
|
||||
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
|
||||
BIN
api2-5.ico
Normal file
BIN
api2-5.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
1149
cfgGUI/hdcDZAPIcfg.dproj
Normal file
1149
cfgGUI/hdcDZAPIcfg.dproj
Normal file
File diff suppressed because it is too large
Load Diff
14
cfgGUI/hdcDZApiCfg.dpr
Normal file
14
cfgGUI/hdcDZApiCfg.dpr
Normal file
@ -0,0 +1,14 @@
|
||||
program hdcDZApiCfg;
|
||||
|
||||
uses
|
||||
Vcl.Forms,
|
||||
uMain in 'uMain.pas' {frmMain};
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
Application.Initialize;
|
||||
Application.MainFormOnTaskbar := True;
|
||||
Application.CreateForm(TfrmMain, frmMain);
|
||||
Application.Run;
|
||||
end.
|
||||
BIN
cfgGUI/hdcDZApiCfg.res
Normal file
BIN
cfgGUI/hdcDZApiCfg.res
Normal file
Binary file not shown.
BIN
cfgGUI/hdcDZApiCfg_Icon1.ico
Normal file
BIN
cfgGUI/hdcDZApiCfg_Icon1.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user