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; begin params:= TDictionary.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; begin params:= TDictionary.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; begin params:= TDictionary.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; begin params:= TDictionary.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.