Prvni verze

This commit is contained in:
2025-05-21 21:14:32 +02:00
commit 03ff9ebc84
147 changed files with 40100 additions and 0 deletions

View 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'

View 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.

View 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.

View 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.

View File

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

BIN
_custom/EMPolar/zdroje.RES Normal file

Binary file not shown.

View File

@ -0,0 +1 @@
//ep_HDCDZApi_ZpracujPrijataData RCDATA .\sql\ep_HDCDZApi_ZpracujPrijataData.sql

15
_custom/GatemaSD/info.txt Normal file
View 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)

View 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.

View 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.

View 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.

View File

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

View 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'

Binary file not shown.

Binary file not shown.

View 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

View 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

View File

@ -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

View File

@ -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

View File

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

View File

@ -0,0 +1,106 @@
unit uCtrlCustom;
interface
uses
MVCframework,
MVCframework.Commons,
MVCframework.Serializer.Commons,
// MVCframework.Serializer.Intf,
System.Generics.Collections, // kvuli TDictionary
System.RegularExpressions,
// JsonDataObjects,
uCommons, // kvuli EServiceException
uCtrlBase,
// uSvc_Base,
helTabsBIDs,
uHeOObj_Base,
uHeOObj_Custom,
uSvcCustom,
MVCFramework.Swagger.Commons; // kvuli dokumentaci
type
[MVCPath('/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.

View File

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

View File

@ -0,0 +1,140 @@
unit uSvcCustom;
interface
uses
System.Classes,
System.JSON,
System.Generics.Collections,
Winapi.ActiveX,
System.DateUtils,
System.SysUtils,
JsonDataObjects,
uSvc_Base,
uCommons, // kvuli EServiceException
helTabsBIDs,
uHeoObj_Base,
uHeOObj_Custom,
uHeoObj_Vyroba,
uSvc_ObehZbozi,
uSvc_Vyroba;
const
CRLF = #13#10;
type
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.

View File

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

View File

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

View File

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

View 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;

View File

@ -0,0 +1 @@
gorDownPDFThr: THeoGorDownPDFThread;

View File

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

View 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;

View File

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

View 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;

View 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;

View File

@ -0,0 +1,3 @@
intervalSecDownPDF

View 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;

View File

View File

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

View File

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

BIN
_custom/Gornicky/zdroje.RES Normal file

Binary file not shown.

View File

@ -0,0 +1 @@
ep_HDCDZApi_ZpracujPrijataData RCDATA .\sql\ep_HDCDZApi_ZpracujPrijataData.sql

View File

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

View 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

View 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'

View 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''

View 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'

File diff suppressed because it is too large Load Diff

View 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

View 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

View 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

View 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

View File

@ -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

View 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.

View 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.

View 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.

View 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

View File

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

Binary file not shown.

View 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

View File

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

View 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.

View 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.

View 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.

View File

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

View File

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

View 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.

View 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.

View 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.

View File

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

View File

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

View 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
View 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)

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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
View 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

View 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)
)

File diff suppressed because it is too large Load Diff

View 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.

File diff suppressed because it is too large Load Diff

View 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]';

View 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

Binary file not shown.

44
_custom/Rootvin/zdroje.rc Normal file
View 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
api.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

BIN
api.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
api2-5.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
api2.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

1149
cfgGUI/hdcDZAPIcfg.dproj Normal file

File diff suppressed because it is too large Load Diff

14
cfgGUI/hdcDZApiCfg.dpr Normal file
View 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

Binary file not shown.

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