Files
HDCApi/uCtrlObehZbozi.pas

613 lines
17 KiB
ObjectPascal

unit uCtrlObehZbozi;
interface
{$I 'GlobalDefs.inc'}
uses
mvcframework,
mvcframework.Commons,
mvcframework.Serializer.Commons,
uCtrlBase,
uHeoObj_Base,
MVCFramework.Swagger.Commons;
const
{$I globalConsts.inc}
type
[MVCPath('/stavskladu')]
TStavSkladuController = class(TBaseController)
public
[MVCPath('/meta')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Stav skladu', 'Vraci metadata položky stavu skladu', 'StavSkladuGetMeta')]
procedure GetMeta;
[MVCPath('')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Stav skladu', 'Vraci položky stavu skladu', 'StavSkladuGetAll')]
[MVCSwagParam(plQuery, 'idsklad', 'Èíslo skladu', ptString, false)]
[MVCSwagParam(plQuery, 'archivni', '1=vèetnì blokovaných', ptString, false)]
[MVCSwagResponses(200, 'Success', TStavSkladu, true)]
procedure GetAll ([MVCFromQueryString('idsklad', '')] idSklad: string='';
[MVCFromQueryString('archivni', '')] archivni: string=''
);
[MVCPath('/($id)')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Stav skladu', 'Vrací data položky stavu skladu', 'StavSkladuGetByID')]
// [MVCSwagParam(plQuery, 'idsklad', 'Èíslo skladu', ptString, false)]
// [MVCSwagParam(plQuery, 'archivni', '1=vèetnì blokovaných', ptString, false)]
[MVCSwagResponses(200, 'Success', TStavSkladu, true)]
[MVCSwagParam(plPath, 'id', 'ID stavu skladu', ptString, true)]
procedure GetByID (id: string='';
[MVCFromQueryString('idsklad', '')] idSklad: string='';
[MVCFromQueryString('archivni', '')] archivni: string=''
);
end;
[MVCPath('/dokladoz')]
TDokladOZController = class(TBaseController)
public
[MVCPath('/meta')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Doklady obìhu zboží', 'Vrací metadata dokladu obìhu zboží', 'DokladOZGetMeta')]
procedure GetMeta;
[MVCPath('/radadokladu')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Doklady obìhu zboží', 'Vrací seznam øad dokladù obìhu zboží', 'DokladOZGetDruhyDok')]
[MVCSwagResponses(200, 'Success', TDruhDokZbo, true)]
[MVCSwagParam(plQuery, 'druhpohybu', 'Druh pohybu dokladu', ptString, false)]
procedure GetDruhyDokladu ([MVCFromQueryString('druhpohybu', '')] druhpohybu: string='');
[MVCPath('/($id)')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Doklady obìhu zboží', 'Vrací doklad obìhu zboží dle ID', 'DokladOZGetByID')]
[MVCSwagResponses(200, 'Success', TDokladOZ, true)]
[MVCSwagParam(plPath, 'id', 'ID dokladu OZ', ptString, true)]
[MVCSwagParam(plQuery, 'polozky', '0=bez polozek / 1=polozkami', ptString, false)]
[MVCSwagParam(plQuery, 'sdserver', '1=vyrobni cisla/sarze z tabulky SDScanData', ptString, false)]
procedure GetByID (id: string='';
[MVCFromQueryString('sdserver', '')] sdServer: string='1';
[MVCFromQueryString('polozky', '')] polozky: string='0'
);
[MVCPath('')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Doklady obìhu zboží', 'Vrací doklady obìhu zboží', 'DokladOZGetAll')]
[MVCSwagResponses(200, 'Success', TDokladOZ, true)]
[MVCSwagParam(plQuery, 'cisloorg', 'Èíslo organizace', ptString, false)]
[MVCSwagParam(plQuery, 'druhpohybu', 'Druh pohybu dokladu', ptString, false)]
[MVCSwagParam(plQuery, 'radadokladu', 'Øada dokladù pohybového dokladu', ptString, false)]
[MVCSwagParam(plQuery, 'sklad', 'Sklad', ptString, false)]
[MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD (pokud neni zadano, bere se jen vcera a dnes)', ptString, false)]
[MVCSwagParam(plQuery, 'do', 'Datum do ve formátu RRRRMMDD', ptString, false)]
[MVCSwagParam(plQuery, 'realizovane', '1=jen realizované doklady', ptString, false)]
[MVCSwagParam(plQuery, 'seznam', '1=jen seznam se základními údaji', ptString, false)]
[MVCSwagParam(plQuery, 'minimum', '0=vsechny sloupce / 1=jen zakladni udaje', ptString, false)]
[MVCSwagParam(plQuery, 'polozky', '0=bez polozek / 1=s polozkami (default)', ptString, false)]
[MVCSwagParam(plQuery, 'sdserver', '1=vyrobni cisla/sarze z tabulky SDScanData', ptString, false)]
procedure GetAll ([MVCFromQueryString('cisloorg', '')] cisloorg: string='';
[MVCFromQueryString('druhpohybu', '')] druhpohybu: string='';
[MVCFromQueryString('radadokladu', '')] radadokladu: string='';
[MVCFromQueryString('sklad', '')] sklad: string='';
[MVCFromQueryString('od', '')] odDatum: string='';
[MVCFromQueryString('do', '')] doDatum: string='';
[MVCFromQueryString('realizovane', '')] realizovane: string='0';
[MVCFromQueryString('seznam', '0')] jenSeznam: string='';
[MVCFromQueryString('minimum', '')] minimumDat: string='';
[MVCFromQueryString('polozky', '1')] polozky: string='';
[MVCFromQueryString('sdserver', '')] sdServer: string=''
);
{$IFDEF POST_PUT}
[MVCPath('/($id)')]
[MVCHTTPMethod([httpPUT])]
[MVCSwagSummary('Doklady obìhu zboží', 'Upraví doklad obìhu zboží', 'DokladOZZalozUpravOZ')]
[MVCConsumes(TMVCMediaType.APPLICATION_JSON)]
procedure UpravDokladOZ (id: string; CTX: TWebContext);
[MVCPath('')]
[MVCHTTPMethod([httpPOST])]
[MVCSwagSummary('Doklady obìhu zboží', 'Založí doklad obìhu zboží', 'DokladOZZalozDokladOZ')]
[MVCConsumes(TMVCMediaType.APPLICATION_JSON)]
procedure ZalozDokladOZ (CTX: TWebContext);
{$ENDIF}
end;
[MVCPath('/polozkaoz')]
TPolozkaOZController = class(TBaseController)
public
{
procedure GetByICODIC(const [MVCFromQueryString('ico', '')] ico: string;
const [MVCFromQueryString('dic', '')] dic: string
);
}
[MVCPath('/meta')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Položky obìhu zboží', 'Vrací metadata položky dokladu obìhu zboží', 'PolozkaOZGetMeta')]
procedure GetMeta;
[MVCPath('')]
[MVCHTTPMethod([httpGET])]
{$IFDEF CUSTOM_CTRL_Rootvin}
[MVCSwagSummary('Položky obìhu zboží', 'Vrací položky dokladù obìhu zboží.' + CRLF + CRLF + 'Pozor u výrobních èísel (serialnums) položek materiálové pøíjemky' + CRLF + '- atribut Nazev1 je ŠARŽE'
+ CRLF + '- atribut VyrCis je èíslo PALETOVÉHO LISTU' + CRLF + '!! Pokud je nastaven sloupec ZdrojSD=1 je potreba to pri komunikaci zminovat !!'
+ CRLF + '(je to pøíznak že ID není ze standardní tabulky Heliosu ale zdrojem jsou skenovaná data SD Serveru)', 'PolozkaOZGetAll')]
{$ELSE}
[MVCSwagSummary('Položky obìhu zboží', 'Vrací položky dokladù obìhu zboží', 'PolozkaOZGetAll')]
{$ENDIF}
[MVCSwagResponses(200, 'Success', TPohybOZ, true)]
[MVCSwagParam(plQuery, 'iddoklad', 'ID dokladu obìhu zboží', ptString, false)]
procedure GetAll ([MVCFromQueryString('iddoklad', '')] iddoklad: string=''
);
[MVCPath('/($id)')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Položky obìhu zboží', 'Vrací data položky/položek obìhu zboží', 'PolozkaOZGetByID')]
[MVCSwagResponses(200, 'Success', TPohybOZ, true)]
[MVCSwagParam(plPath, 'id', 'ID položky OZ', ptString, true)]
procedure GetByID (id: string='';
[MVCFromQueryString('iddoklad', '')] iddoklad: string=''
);
{$IFDEF POST_PUT}
[MVCPath('/($id)')]
[MVCHTTPMethod([httpPUT])]
[MVCSwagSummary('Položky obìhu zboží', 'Upraví položku na doklad obìhu zboží', 'PolozkaOZUpravPolozkuOZ')]
[MVCConsumes(TMVCMediaType.APPLICATION_JSON)]
procedure UpravPolozkuOZ (id: string=''; CTX: TWebContext);
[MVCPath('')]
[MVCHTTPMethod([httpPOST])]
[MVCSwagSummary('Položky obìhu zboží', 'Založí položku na doklad obìhu zboží', 'PolozkaOZZalozPolozkuOZ')]
[MVCConsumes(TMVCMediaType.APPLICATION_JSON)]
procedure ZalozPolozkuOZ (CTX: TWebContext);
{$ENDIF}
end;
implementation
uses
uSvc_Base,
uCommons,
mvcframework.Serializer.Intf,
System.Generics.Collections,
System.RegularExpressions,
System.StrUtils,
System.SysUtils;
{ TStavSkladuController }
procedure TStavSkladuController.GetMeta;
begin
try
Render(ObjectDict().Add('data', GetDokladOZService.GetMeta));
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 TStavSkladuController.GetAll(idSklad: string=''; archivni: string='');
begin
idSklad:= sanitizeSQLString(idSklad);
archivni:= sanitizeSQLString(archivni);
GetByID('', idSklad, archivni);
end;
procedure TStavSkladuController.GetByID(id: string = ''; idSklad: string=''; archivni: 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);
idSklad:= sanitizeSQLString(idSklad);
if (idSklad<>'') then
params.Add('idsklad', idSklad);
archivni:= sanitizeSQLString(archivni);
if (archivni<>'') then
if (archivni='1') then
params.Add('blokovane', '1');
try
Render(ObjectDict().Add('data', GetStavSkladuService.GetByParams(params, FDM.sqlConn))); // viz uSvc_ObehZbozi.pas
except
{$IFDEF NORENDER400}
RenderStatusMessage (200);
{$ELSE}
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end
else
raise;
{$ENDIF}
end;
params.Free;
end;
{ TDokladOZController }
procedure TDokladOZController.GetAll (cisloorg: string=''; druhpohybu: string=''; radadokladu: string=''; sklad: string=''; odDatum: string='';
doDatum: string=''; realizovane: string='0'; jenSeznam: string=''; minimumDat: string=''; polozky: string='';
sdServer: string='');
var iId, iCisOrg, dpz: integer;
params: TDictionary<string, string>;
begin
params:= TDictionary<string, string>.Create;
{
cisloorg:= sanitizeSQLString(cisloorg);
druhpohybu:= sanitizeSQLString(druhpohybu);
radadokladu:= sanitizeSQLString(radadokladu);
sklad:= sanitizeSQLString(sklad);
odDatum:= sanitizeSQLString(odDatum);
doDatum:= sanitizeSQLString(doDatum);
jenSeznam:= sanitizeSQLString(jenSeznam);
GetByID ('', cisloorg, druhpohybu, radadokladu, sklad, odDatum, doDatum, jenSeznam);
}
iCisOrg:= -1;
cisloorg:= sanitizeSQLString(cisloorg);
if not(TryStrToInt(cisloorg, iCisOrg)) then
iCisOrg:= -1;
if (iCisOrg>-1) then
params.Add('organizace', iCisOrg.ToString);
dpz:= -1;
druhpohybu:= sanitizeSQLString(druhpohybu);
if not(TryStrToInt(druhpohybu, dpz)) then
dpz:= -1;
if (dpz>-1) then
params.Add('druhpohybu', dpz.ToString);
radadokladu:= sanitizeSQLString(radadokladu);
if (radadokladu<>'') then
params.Add('radadokladu', radadokladu);
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');
minimumDat:= sanitizeSQLString(minimumDat);
if (minimumDat='1') then
params.Add('minimum', '1');
polozky:= sanitizeSQLString(polozky);
if (polozky='1') then
params.Add('polozky', '1');
realizovane:= sanitizeSQLString(realizovane);
if (realizovane='1') then
params.Add('jenReal', '1');
sdServer:= sanitizeSQLString(sdServer);
if (sdServer='1') then
params.Add('sdServer', '1');
try
Render(ObjectDict().Add('data', GetDokladOZService.GetByParams (params, FDM.sqlConn))); // viz uSvc_ObehZbozi.pas
except
{$IFDEF NORENDER400}
RenderStatusMessage (200);
{$ELSE}
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end
else
raise;
{$ENDIF}
end;
params.Free;
end;
procedure TDokladOZController.GetDruhyDokladu (druhpohybu: string = '');
begin
druhpohybu:= sanitizeSQLString(druhpohybu);
try
Render(ObjectDict().Add('data', GetDokladOZService.GetDruhyDokladu(druhpohybu))); // viz uSvc_ObehZbozi.pas
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 TDokladOZController.GetByID (id: string=''; sdServer: string='1'; polozky: string='0');
var iId: integer;
params: TDictionary<string, string>;
begin
params:= TDictionary<string, string>.Create;
sdServer:= sanitizeSQLString(sdServer);
if (sdServer='1') then
params.Add('sdServer', '1');
if (polozky='1') then
params.Add('polozky', '1');
iId:= 0;
id:= sanitizeSQLString(id);
if not(TryStrToInt(id, iId)) then
iId:= 0;
if (iId>0) then
begin
params.Add('id', iId.ToString);
try
Render(ObjectDict().Add('data', GetDokladOZService.GetByParams (params, FDM.sqlConn))); // viz uSvc_ObehZbozi.pas
except
{$IFDEF NORENDER400}
RenderStatusMessage (200);
{$ELSE}
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end
else
raise;
{$ENDIF}
end
end
else
RenderStatusMessage (200);
params.Free;
end;
procedure TDokladOZController.GetMeta;
begin
try
Render(ObjectDict().Add('data', GetDokladOZService.GetMeta));
except
{$IFDEF NORENDER400}
RenderStatusMessage (200);
{$ELSE}
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end
else
raise;
{$ENDIF}
end;
end;
{$IFDEF POST_PUT}
procedure TDokladOZController.UpravDokladOZ (id: string; CTX: TWebContext);
var iId: integer;
begin
try
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 TDokladOZController.ZalozDokladOZ (CTX: TWebContext);
begin
try
except
{$IFDEF NORENDER400}
RenderStatusMessage (200);
{$ELSE}
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end
else
raise;
{$ENDIF}
end;
end;
{$ENDIF}
{ TPolozkaOZController }
procedure TPolozkaOZController.GetMeta;
begin
try
Render(ObjectDict().Add('data', GetPolozkaOZService.GetMeta));
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 TPolozkaOZController.GetAll (iddoklad: string = '');
begin
iddoklad:= sanitizeSQLString(iddoklad);
GetByID('', iddoklad);
end;
procedure TPolozkaOZController.GetByID (id: string=''; iddoklad: string='');
var iId, iIdDoklad: 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);
iIdDoklad:= -1;
iddoklad:= sanitizeSQLString(iddoklad);
if not(TryStrToInt(iddoklad, iIdDoklad)) then
iIdDoklad:= -1;
if (iIdDoklad>-1) then
params.Add('iddoklad', iIdDoklad.ToString);
try
Render(ObjectDict().Add('data', GetPolozkaOZService.GetByParams(params, FDM.sqlConn))); // viz uSvc_ObehZbozi.pas
except
{$IFDEF NORENDER400}
RenderStatusMessage (200);
{$ELSE}
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end
else
raise;
{$ENDIF}
end;
params.Free;
end;
{$IFDEF POST_PUT}
procedure TPolozkaOZController.UpravPolozkuOZ (id: string=''; CTX: TWebContext);
var iId: integer;
begin
try
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 TPolozkaOZController.ZalozPolozkuOZ (CTX: TWebContext);
begin
try
except
{$IFDEF NORENDER400}
RenderStatusMessage (200);
{$ELSE}
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end
else
raise;
{$ENDIF}
end;
end;
{$ENDIF}
end.