Index: PlanScan/UI/frameGebruikers.pas =================================================================== diff -u --- PlanScan/UI/frameGebruikers.pas (revision 0) +++ PlanScan/UI/frameGebruikers.pas (revision 361) @@ -0,0 +1,92 @@ +unit frameGebruikers; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, + Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, GebruikerService, + Datasnap.DBClient, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids; + +type + TfrmGebruikers = class(TFrame) + dbgGebruikers: TDBGrid; + Panel1: TPanel; + btnGebruikerAfmelden: TButton; + cdsGebruikers: TClientDataSet; + dsGebruikers: TDataSource; + procedure btnGebruikerAfmeldenClick(Sender: TObject); + private + procedure VulGebruikersGridMetData(Gebruikers: ArrayOfGebruikerGebruiker); + public + procedure ZoekAlleGebruikers(); + end; + +implementation + +uses + Agent, Main, UiContext; + +{$R *.dfm} + +procedure TfrmGebruikers.ZoekAlleGebruikers(); +var + fZoekGebruikersResponse: ZoekGebruikersResponse; +begin + fZoekGebruikersResponse := TAgent.Create(fmMain.UiContext).ZoekAlleGebruikers(); + try + if fZoekGebruikersResponse.Header.Status = '200' then begin + VulGebruikersGridMetData(fZoekGebruikersResponse.Gebruikers); + end else begin + ShowMessage(fZoekGebruikersResponse.Header.Omschrijving); + end; + finally + fZoekGebruikersResponse.Free; + end; +end; + +procedure TfrmGebruikers.btnGebruikerAfmeldenClick(Sender: TObject); +var + rijteller: integer; +begin + if dbgGebruikers.SelectedRows.Count > 0 then begin + for rijteller := 0 to dbgGebruikers.SelectedRows.Count-1 do begin + dbgGebruikers.DataSource.DataSet.GotoBookmark(Pointer(dbgGebruikers.SelectedRows.Items[rijteller])); + if dbgGebruikers.DataSource.DataSet.FieldByName('cdsGebruikersInitialen').AsString = fmMain.UiContext.Initialen then + ShowMessage('Je kan jezelf hier niet afmelden') + else + TAgent.Create(fmMain.UiContext).GebruikerAfmelden(dbgGebruikers.DataSource.DataSet.FieldByName('cdsGebruikersInitialen').AsString,dbgGebruikers.DataSource.DataSet.FieldByName('cdsGebruikersLoginCode').AsString) + end; + end; + ZoekAlleGebruikers(); +end; + +procedure TfrmGebruikers.VulGebruikersGridMetData(Gebruikers: ArrayOfGebruikerGebruiker); +var + ii: integer; + AangemeldSindsAsString: string; + LaatsteActiviteitAsString: string; +begin + cdsGebruikers.Close; + cdsGebruikers.CreateDataSet; + + ii := 0; + while ii <= length(Gebruikers)-1 do begin + if Gebruikers[ii].AangemeldSinds = nil then + AangemeldSindsAsString := '' + else + AangemeldSindsAsString := DateTimeToStr(Gebruikers[ii].AangemeldSinds.AsUTCDateTime); + if Gebruikers[ii].LaatsteActiviteit = nil then + LaatsteActiviteitAsString := '' + else + LaatsteActiviteitAsString := DateTimeToStr(Gebruikers[ii].LaatsteActiviteit.AsUTCDateTime); + + cdsGebruikers.InsertRecord([Gebruikers[ii].Initialen, + Gebruikers[ii].ComputerNaam, + AangemeldSindsAsString, + LaatsteActiviteitAsString, + Gebruikers[ii].LoginCode]); + ii := ii + 1; + end; +end; + +end. Index: PlanScan/UI/frameDnaCodes.dfm =================================================================== diff -u --- PlanScan/UI/frameDnaCodes.dfm (revision 0) +++ PlanScan/UI/frameDnaCodes.dfm (revision 361) @@ -0,0 +1,485 @@ +object frmDnaCodes: TfrmDnaCodes + Left = 0 + Top = 0 + Width = 765 + Height = 480 + TabOrder = 0 + object dbgDnaCodes: TDBGrid + Left = 0 + Top = 73 + Width = 638 + Height = 407 + Align = alClient + DataSource = dsDnaCodes + Options = [dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgRowSelect, dgConfirmDelete, dgCancelOnExit, dgMultiSelect, dgTitleClick, dgTitleHotTrack] + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'Tahoma' + TitleFont.Style = [] + Columns = < + item + Expanded = False + FieldName = 'cdsDnaCodesDnaCode' + Title.Caption = 'DnaCode' + Visible = True + end + item + Expanded = False + FieldName = 'cdsDnaCodesPallet' + Title.Caption = 'Pallet' + Visible = True + end + item + Expanded = False + FieldName = 'cdsDnaCodesToelevering' + Title.Caption = 'Toelevering' + Visible = True + end + item + Expanded = False + FieldName = 'cdsDnaCodesStatus' + Title.Caption = 'Status' + Visible = True + end + item + Expanded = False + FieldName = 'cdsDnaCodesBatch' + Title.Caption = 'Batch' + Visible = True + end + item + Expanded = False + FieldName = 'cdsDnaCodesScantijdstip' + Title.Caption = 'Scantijdstip' + Visible = True + end + item + Expanded = False + FieldName = 'cdsDnaCodesInitialen' + Title.Caption = 'Initialen' + Visible = True + end> + end + object pnlActies: TPanel + Left = 638 + Top = 73 + Width = 127 + Height = 407 + Align = alRight + BevelEdges = [] + BevelOuter = bvNone + TabOrder = 1 + ExplicitLeft = 513 + ExplicitTop = 41 + ExplicitHeight = 439 + object imgPrinter: TImage + Left = 0 + Top = 0 + Width = 127 + Height = 105 + Align = alTop + Center = True + Picture.Data = { + 0954506E67496D61676589504E470D0A1A0A0000000D49484452000000400000 + 00400806000000AA6971DE000013B04944415478DAE59B097454559AC7BFAA54 + 96CA9E4A2A495565212144850CA28DB88D03DD8E8AA2A02038C071BA9DE54C3B + 333DE7CC4C9FF1CCF18C070757887121AC821A104541BA1577046D0964214012 + 12208915B22F95A5F67D79F3DDFBDEAB7AEFD52BBAA43971E6CC3BE7E6DEBA55 + F5DEFBFFEEF77DF7BBF75514F0FFFC50CCC445366CD8A0542527AF4D55ABFF31 + 3B3BE78E4020007EBF6FC2E70B4CFA3C9E602010EC0A32418010D315C2BF0A05 + 630B31CCB042A1702919A63F144AF06B34193DE45CD3D3D37E3C5FE8FF0C8017 + AAABAFCF4A4BDB3377EEBC3B8A8A8B41A95402C33058C8BB0C6D078341F0F97C + 6CF1FAC0EBF362EDC5DA27A8C9FB5E026EDCE7F33BF1B3E3FE4070DAEB7183C5 + 6C690F05FD9F6CDFBEBDF17F15804D35354B6795961E58B87061964A9548C552 + D90C23694760C8F545DA911A41C0E0C0208C8E8E80CD6607BBDD0E53D393FB2C + 2AD593FBAAAB9D3F3980575E79E5B639D75D7774E12D8BD2F93E56202B20168C + 78FA4C26139C3D731685DB800985683FBA0CA4A4A4C0D0D0E0076323C3EB0F1E + 3C18FCC900D4D4D4188A8A4BCF2CF9C59202F463D1C88985C5D7276C8F8E8C42 + 4B4B0BB5805088B79050B8AD542AE0F2E5FE27776EAFDDF1930178F3CD3D8797 + 2D7FF091D4D4D41826CCC840616282E2DB56AB154ED69FA4B1422A3C846D06DB + 090909C42D062E1B93E71C3CB8C137E3006A77ECB867D1C2855FCF9D374F2040 + 5E78BC7D54602808A74E35908027122CD776DA1D181FFA6E8F27285E53007803 + 8AFD070E9C78E49147EE2423716561F10641F6F5C8F008188D4670BA5C74D688 + F8BE403CD7E7F7FBA1B3F3FC333BB66DDB38A30090F89D0B172DAA5F70D34D42 + 28A2F68F89FE7C1F11DCDEDE1116E942082EA7130242100220E43873BAE5F3AD + B56F2C9B51006FEED9F3D69AD5AB9F484B4F8F7A8F91F9BC7CA48F00E0DB6363 + E3B4082112C16E04E17421084CAC881590998000010CBCA79B9BBB5FABA9BE6E + C600ECDCB933516F308C3FB06C598E44654C00F182B9D079911DED280BE240B8 + DDE074F220584B387DBA7970D34B2F96CC18801D3B763C70FBEDB77F367FFEFC + F8C40A5DE30A9FF7A0B8AEAE1E502526460070352300418A8703E10FF8A1A9A1 + 71F085E737CE2880CD8F3EFAE86F351A0D90B9FF8F02B852BFC06A4670DE7738 + 9C22B120102D85400AB188AFBEF872F0B98D1B660EC0DEBD7BBF5FBB76ED5D24 + D78F9C5D21BAC08F05438E1F8CBDF83DA5482C48044BE1F8D1153E38F0FECCB9 + 00AECE543F5BB8D0B6F4BEA56AFE8CE11373A245179280890587F877578F1122 + 09152B360A80040E9925EAF6D635BFF16ACDAD3302A0B6B6F6669CFACEDC72CB + 2D40A509CE1A962F05130384B08F2C70C64C939088FECF0392829203333A3A0A + FBDF7BF79D1D5BB73E313300B66DFBE592C58BDFA9A8A8109C581175F6B8E170 + 2289FF3B5D6E50A95461F152107260C85AE1D8D1A3BFDABE7D6BDDCC00A8AD7D + 76F98A15CFE469B592132A40F147205CA9AFA3A303060707288014752A64E768 + 202D2D4D56BC10C0E1C387FD5D7DBDE5BBB76C199A2900FBD7AE5BB72E25452D + 63EAFC4D46499658433484C6C646B05A2CE1D71999D9A0C9CDA59B2A44305F0B + 0B9906F7D5D57D5F5353BD389E7BBF260076EDDAD5B476DDFA45AC06B18D8B42 + A0A852483E23064332BBFAFA7A9A06F3F3842A3119D23332C2E2A52048DDD6D6 + 06274FD4AFDFBEBDF6BD1903B06FFFFEAE15CB57540A9C58D894F6448390B11A + AFD70BADADAD9040B6D0681F83CBE0004D88A4A2F9368175E4C8273DC69EC4AA + 7896C2D70CC0071F1E0CDEB774294D001412E5E297D16044BD82CA62B1C2F0F0 + B0C8B74942E4F6786202E8EABA04AD6DAD0F61F4FF34DE7BFF9301545757E755 + 54569A162F5E228D7FA25117FBBC1C08715C989898C4C58E1B183E4DC28A881F + 18188802C0FBFEC9FAFA036FBCFEEADA1F73FFD700C096EBE7CE9B73F1D6DB6E + 8B122D07421A17A460F8BFE3A609BABB13D94F600F3233381C0ED1E89345D0B9 + 73E75A1C36CBBDB82437CF2880975EAA99B770D1828E050B6E129C518221469F + 14964240E35C7B278C4D5A204F83913F3B1332D2D49084FE4FC493D840620401 + E441ABB870F162DFD0B865C9E1F7F6F4FFD8FBBF6A00AB9FF88D1657DE4FA667 + E7FCD3FA95CBF217CC9D233EA1423E06C8F5C98139F0F19770B4E11C28135454 + 28C905D4C94990999E0AC9892AF07B3D1060143065B553F3F779DC5E9FD763F2 + FB3CC6502070A150ABED4E4A4EF8645F6DF5E56B0AE0F15FFFB62AA454FC734E + 6EFE2FB5FAE214755A06DC515506B38BB4E24C4D0041AC572E2E44AF17DEFAF0 + 089CB9D40709289C160441BFCBA5BB044C52724AD4FD918DD2C40405E4A855D0 + DED23066EC6A5BD471FAF4E09F0A40F1B7BF79EA416552F2BF6A0B0D8B0B0C25 + 4A555232353F3B9AE49D55B3409F9B85379A101E2DE29BA42D8CD211E350C8DF + 84A0BFF69D83D03D388EE74C8404347D15579395A11C5C7290EBE9B51A9818EE + 83CEF673E0F7F96074A06F53576BE3535705E0571B36A4A438428FA7A667FC4B + A1A1A42A5F57442FEC4093EB351AA1FF720FD8274761F5F2FBA1A26C16151E86 + 90A0120121B5B008C148AD868C70F5CE7761086300EB0289A0C47350085814C2 + 253777146A734115F4404BE349B0D9AC2C283CD7F8E0E5A6F3CD276EFB5100FE + EDE9E78A030AE61F349AFCBF379494E56BF2F2E94D99CD66E83CDF063D973AC0 + 3C3E02D3A66180A01FD2D3D341ABCD07BDC1003A9D0E0AF20B68CA9A9595096A + CCE155E8B3422052285240E45A2F6FAB03B3C34385130814048AE7DBD4DCB164 + 65A481212F1BDACF34436FEF0F61E10A0A5709A6E1FEBED693C7CAE206505757 + F7544A66DEB369B9BAE444753A5D93B385019BD50C53287C727C1426C686C134 + 3A0C53A6318CCC36BA0B435C22E00FE0C515909C9C0C19199908460B7ABD1E74 + 58485BA3C985CCCC4CBAC64F4C4A8CB21676EA03D8B9FFF7E0F006B818902886 + 807DC9E8FFB38BF530D2FF039C6E6A844030C08A0F5B15DB360DF599CF9E38AA + 891BC0A79F7F19B8F7DE7B1388550683217079FDE0707BC1E1F2829DAB3D3E3F + 0542B6A0C9531A9B798A829844383C98E9897170B99C148C9780C134958853E3 + 8229338B05A3D3B31643DA39B8D2CBC8CCA060129409F0F4868DA0484C8182A2 + 59503CFB3A0C786AB4A424149F08C5FA0250F85C70FCD8D7D42AD9515752F0A2 + 1ACBE880F1E2B91347E7C60DE0D0EF8E30F7DDFF40A483642124E950F0C18BC1 + C42388607C14068163A7B5077C38FA140C5A8C17A729F3A409C18CB260460998 + 21B04C4F5228140CCEE5E4B3C40588F0ACAC6CC8CFCFA750262626A06FC404F7 + 3FF637909D9B4FB7BC492E50909D017FF8EE185CBA745134D252D3271088BC21 + 63D7676DA78E3D18378003077FC72C7B68B9403FBFDDC415886C572B38280AAE + ED47002E8F8FB51804E2707928247F3002C6ED7450EBA06088B58CB160EC562B + 42715130C4D4EF5BF538FCD9A2BBE8B5546839A58602B88091FDD8F16374D113 + 3DEACA28209813A005F46E6C3B79EC99B801BC7BE0D0C043CB5714F34106C2A2 + 69522A80C0BEC9603222ECA77FF0AC4A2EA121607C7E3FE6F13E707A5820048C + CBE3A59B972C982002B0209831304F99A0744E15A4A4A553F13A8CEE2EEB147C + 74F8304C4E4D45849259246AD4C510ACD31360191FBDB3B5E1F8A9B801BCB5EF + FD0B0F3FB2F286580040620911EB905A0A13F539022441A9A08FB0C98579302E + 04E3A4F1055D8380C1114E57AB213D39013EFBEC5368EF38CF7E5B2937EA6208 + E19C03CBC8E59EF6E6633FC31C3DF64F6AA200ECDCFDCE8595AB1F8B000089E0 + A836132D5ADA16C0E1AF3A8923DD37D80386FC59740A4DC159836EA9E3870268 + 11DF7E7B1C3E3E7284BA5594F02B42606B3B06E6E9D1E187CED67F7DC5A57114 + 80D7B7EEBAB066EDFA1BC231206C05B105871839E1649600D1963523B864C70F + 4D5034EB1BE81D3743CF20E6F32E3524F8B5B0ECE6BF8392A2627876E37FC3D8 + B829DAC765039ED8F4DD382D4F8CF63FDF72FC8BFF128C637C0036BF56DBF8D8 + FABFBE55F886BC99332218A1F01EBD407CD852D8D7C2A3A3B7192AE79D80204E + FBC32E33F43BA7A0AD671896AB37C1821B17C0732FBC4097C4F18D3AFF9E02CC + 18472CA6B1CD674F7CFD1F10C71105E0A59AD70FAD5AB37E15BF150D525F178C + 70F4480BDAE1F718113CFEA223A67EE8B17E04FE8471F0A8CDE049F18271700A + 56A5D6C0CD0B16C08B9B36816962327AAA8B11F54920759827C182006CD3D377 + 77B5371FBF2A00CF6F7EEDD08A956B5625A7248B5D4062CAB14486447D6220B2 + 57C77E9BCD0223E65E18B51961BE6E09549497C1E69A1A16401CA68F4B61705A + A7E9C96CE669705826EEB978EEF4B742038EE50A51009E7DF195430F3EBC7295 + 3A354D640100723E1EDD960A17BA86F0B28A2B2CC372B332A0E68D2D30313979 + 45FF2787CB6606AFDB1976131B5AC1F4F8C8433D1D67BFE34E17129420573391 + 3B911CCFBCB0E9C939736ED8A6331441B646431F4B45054239F3978C7AB81D8A + CC1C0AD92B0A6F84FD9B9793095BB66F07D3E45458985262FA41CC211C962908 + 05032277B04E4DC0404FE79D23FDC63E8168520292128A793BFFFE9F1B56EA0D + FA8FCA6657D0F93411D7FE64F32109A7AA64CCC995DC8A4D1CFCE484472C43F6 + 69500C5B2CD064C3B65DBB61229CF8882DC0EBB283DB6E659F234AA6400BA6DF + 17CE34DC6D9DC2298415EAC7E2E36A2F57FBB9F782B2009E7BB9665165656553 + F99C4A98365B70C1E3A7AB2DB206087069A82A2909AD2399C2494430C0FD1E30 + 14125A0223097EB1ED5EB89D5E98974301586C365100241720BE4E525C715E10 + 5904997151D6D9F88735569206B2423D5C710BDA3E1E8AEC1DD5ECDEADB9A174 + F6D49FDFF517744568C63C7D0A41982D569A98905D580282AFE9D31B4502BB7B + C3EDDC24E0CA8D89215821AF3C7C18F27361D7DB7560B1DAC322033E2F38D1DF + 81FC084A225A6805E8FFD076EA9B5F3BAC561337E244B00B8B038B9303E1E6AD + 41F60E5FDEB327E3FA0283EDE777FF2570EE4FFF10B1169B838220A34361F020 + D03A486E4F7E9E12E0FA19BC311648126B296439CBEFE6443F280A1FC585F998 + 92EFC76BD829200F26365E9723F20C909C4321331D623D393604B8FC7DDA65B7 + 8E7382ED1C0052DBB83E1707C0270B60F3E6BD69651539D67B96DE9FC0136040 + 981502156D7338D13A6C60C51B25793D05E0E760085EF360883591F8415C87C4 + 93A4148C2BE84AD4BC054729AEF7F7BEFF21BADF342E84CC18F0FC22A1204C7B + 45101430DADFEB3FFBDD179B7C3ECF0427D82A106F15580201E08DE994070EFD + 7E60E9030F16F3AFC50BA3C8B448FC9CEC03D8EC0E0AC3E670D0D711E1010A23 + 208011E4AC86D4E4FB64AF8F065804429E30579695C0DB7BF7C1D8C810E72562 + A120E3FFE4CEC687FA3CDDE71A8FE232BB153B2C9C60B3403C0FC0C5C7829800 + EADEFB7060F9C32B8B85E903FF90929FD6F88047463618620B11492CC38AAE62 + 27BFD8128110C70F0A820BAEC120FB3A88EDCBC66EF28F11B11740FC462A171C + C95438DC7BC976F14CE3170EEBF40027D822283C00A90B046202D8F9F6DE81D5 + 6BD6150BE5F3C94C583C9620B76718E4DA040659CD919A58821D61D89D2EFA4B + 0F7F400880151DE044077800583ADA5AC1E1B08B5778D2151F6711240BECEB3A + 3F72E96CE3973E8F6B921B611B57CC32E61F1E7D222326801DBBDE39FEE8DA75 + 3F17EEE1F3C610533C0F800809913AC44D9D211A235C6E37160FB8BDDEB06816 + 4490B306B66E3BDB0276BB4D5EB4E0B5133FD3DB71A6BBA7FDF437F83DAB403C + 2FDAC1B5A5E2E9E8CB05E0F0B165C7EEAF56FFD5FA7BC58B22FE97DBAC6839F1 + ACF060184480AF8950EE3BC4123C08C1E361FF1D8617CE4338D7D22CDADB9746 + 7BA009CF38D37DAEA1B9BFBBB3811329146FE74C9DEF738278E4FDFC78C604F0 + DCCBD58FEB748657F586A2DCFC8242D0E617D020C56F914BC587B8110F5B4018 + 000F81B716714DC010081EAF8F0D96E83E679A9BC086B94774A2C3CE1613C3FD + 818EE6EF8F62DD29186DBB00042F9E1F75B79CF82B0120FD9538FA2B8B4B4BCB + ABAA6EAC441005F3E6DF58525C52AACED31680264F4B7FB8241C795A13C121C1 + E873D963C4652296109440E181359CAC078BC51215F8C86786FBBADD179BBEFF + D43C396E14F83A0FC00991B9DF2911EEE3CC9E910A8D75A8B16463C9C3528045 + 8F498C2EBFB0B0645ED5FCCAA2E25986F2CA4A5D595945564E9E56A1C94520B8 + 8214C601D6F4D9A0C802C03A1892C48F50F8E10B7F67271180D96C11657B7ECC + 0407BA3BA6CF377CF791C7E51883C8B4C6FBBA74D4795FE7475DF67F88E27938 + 4A3E431222B241407E079FCB03C1A2C315635155D54DD7EB8A8AF4A56515FAE2 + B2F29C9C5CAD324B930BEAD4740832D2D166C28285108407F97194CD6E0F0370 + 3BED603CDFD2D7D952FF71281020919E9FE3AD31CC9D17EE83C81238A6B8AB39 + 08902401907C0E883E333BBBA8ACA2B2426F2829D29794E98ACB66E76972F355 + 59B8B44E4DCFA497148EBA543C394E3534D07F85A35BDB5326A6BBB5A9BDA7AD + F92B7C8B889F864876C74779A9B987577BF18CEEB538940220399C85E8B018D4 + 6969FAA2D2B2F2E2D2F232ADCEA02D299F8356A3556566E7405A6616FBDC5F72 + 343435811D13A989D181C085E6EF4F0C192F91486FE20058401CF078E1C2A5AE + 68D3632600C80149C492C601095B484A4A8ABE1089E88A67CDCA2FD41512201A + 6D611271992C84429EFF353436C1A5B6163746FAAF274706CEE2F7C604E28573 + 3A112F0C70911F15C679CCC8FF0E73D7214052810DAC3C1003CE3485DA427D69 + 51D9ECF2824283CE30ABBCC068EC75371DFFE273BB65AA1D3F3382650AC43E1F + 5ECE5EADF0990620775D62FBFC4CA3E58100EB3E24C674033BF2BCC913E1C2C8 + CE6F6B5D95F09F1A402C20E4473F59C0BA8E17C47ECD8F76783FEF5A1CFF0316 + 075E21615603D50000002B74455874436F7079726967687400436F7079726967 + 687420A920323030382D3230313120494E434F525320476D6248108E214F0000 + 000049454E44AE426082} + ExplicitLeft = 6 + ExplicitWidth = 105 + end + object btnMaatwerketiket: TButton + Left = 6 + Top = 118 + Width = 115 + Height = 25 + Caption = 'Maatwerketiket' + TabOrder = 0 + OnClick = btnMaatwerketiketClick + end + object btnKlantEtiket: TButton + Left = 6 + Top = 149 + Width = 115 + Height = 25 + Caption = 'Klantetiket' + TabOrder = 1 + OnClick = btnKlantEtiketClick + end + object btnProboxetiket: TButton + Left = 6 + Top = 180 + Width = 115 + Height = 25 + Caption = 'Proboxetiket' + TabOrder = 2 + Visible = False + OnClick = btnProboxetiketClick + end + end + object pnlZoekKnoppen: TPanel + Left = 0 + Top = 0 + Width = 765 + Height = 73 + Align = alTop + BevelEdges = [] + BevelOuter = bvNone + TabOrder = 2 + object lblDnaCode: TLabel + Left = 8 + Top = 12 + Width = 57 + Height = 16 + Caption = 'DNA Code' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblPallet: TLabel + Left = 103 + Top = 12 + Width = 31 + Height = 16 + Caption = 'Pallet' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblToelevering: TLabel + Left = 198 + Top = 12 + Width = 67 + Height = 16 + Caption = 'Toelevering' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblKlantNummer: TLabel + Left = 293 + Top = 12 + Width = 76 + Height = 16 + Caption = 'Klantnummer' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblOrderNummer: TLabel + Left = 388 + Top = 12 + Width = 81 + Height = 16 + Caption = 'Ordernummer' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblLadeCode: TLabel + Left = 483 + Top = 12 + Width = 54 + Height = 16 + Caption = 'Ladecode' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object btnZoeken: TButton + Left = 655 + Top = 25 + Width = 75 + Height = 25 + Caption = 'Zoeken' + TabOrder = 0 + OnClick = btnZoekenClick + end + object edtDnaCode: TEdit + Left = 8 + Top = 34 + Width = 89 + Height = 21 + TabOrder = 1 + OnChange = edtDnaCodeChange + end + object edtPallet: TEdit + Left = 103 + Top = 34 + Width = 89 + Height = 21 + TabOrder = 2 + OnChange = edtDnaCodeChange + end + object edtToelevering: TEdit + Left = 198 + Top = 34 + Width = 89 + Height = 21 + TabOrder = 3 + OnChange = edtDnaCodeChange + end + object edtKlantNummer: TEdit + Left = 293 + Top = 34 + Width = 89 + Height = 21 + TabOrder = 4 + OnChange = edtDnaCodeChange + end + object edtOrderNummer: TEdit + Left = 388 + Top = 34 + Width = 89 + Height = 21 + TabOrder = 5 + OnChange = edtDnaCodeChange + end + object edtLadeCode: TEdit + Left = 483 + Top = 34 + Width = 89 + Height = 21 + TabOrder = 6 + OnChange = edtDnaCodeChange + end + end + object cdsDnaCodes: TClientDataSet + Active = True + Aggregates = <> + FieldDefs = < + item + Name = 'cdsDnaCodesDnaCode' + DataType = ftString + Size = 10 + end + item + Name = 'cdsDnaCodesPallet' + DataType = ftString + Size = 10 + end + item + Name = 'cdsDnaCodesToelevering' + DataType = ftString + Size = 10 + end + item + Name = 'cdsDnaCodesStatus' + DataType = ftString + Size = 10 + end + item + Name = 'cdsDnaCodesBatch' + DataType = ftString + Size = 6 + end + item + Name = 'cdsDnaCodesScantijdstip' + DataType = ftString + Size = 20 + end + item + Name = 'cdsDnaCodesInitialen' + DataType = ftString + Size = 3 + end> + IndexDefs = <> + Params = <> + StoreDefs = True + Left = 32 + Top = 240 + Data = { + 320100009619E0BD010000001800000007000000000003000000320112636473 + 446E61436F646573446E61436F64650100490000000100055749445448020002 + 000A0011636473446E61436F64657350616C6C65740100490000000100055749 + 445448020002000A0016636473446E61436F646573546F656C65766572696E67 + 0100490000000100055749445448020002000A0011636473446E61436F646573 + 5374617475730100490000000100055749445448020002000A0010636473446E + 61436F6465734261746368010049000000010005574944544802000200060017 + 636473446E61436F6465735363616E74696A6473746970010049000000010005 + 574944544802000200140014636473446E61436F646573496E697469616C656E + 01004900000001000557494454480200020003000000} + end + object dsDnaCodes: TDataSource + DataSet = cdsDnaCodes + Left = 32 + Top = 192 + end +end Index: PlanScan/UI/frmDnaCodes.dfm =================================================================== diff -u --- PlanScan/UI/frmDnaCodes.dfm (revision 0) +++ PlanScan/UI/frmDnaCodes.dfm (revision 361) @@ -0,0 +1,143 @@ +object Frame1: TFrame1 + Left = 0 + Top = 0 + Width = 640 + Height = 480 + TabOrder = 0 + object dbgDnaCodes: TDBGrid + Left = 0 + Top = 41 + Width = 513 + Height = 439 + Align = alClient + Options = [dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgRowSelect, dgConfirmDelete, dgCancelOnExit, dgMultiSelect, dgTitleClick, dgTitleHotTrack] + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'Tahoma' + TitleFont.Style = [] + Columns = < + item + Expanded = False + FieldName = 'cdsDnaCodesDnaCode' + Title.Caption = 'DnaCode' + Visible = True + end + item + Expanded = False + FieldName = 'cdsDnaCodesPallet' + Title.Caption = 'Pallet' + Visible = True + end + item + Expanded = False + FieldName = 'cdsDnaCodesToelevering' + Title.Caption = 'Toelevering' + Visible = True + end + item + Expanded = False + FieldName = 'cdsDnaCodesStatus' + Title.Caption = 'Status' + Visible = True + end + item + Expanded = False + FieldName = 'cdsDnaCodesBatch' + Title.Caption = 'Batch' + Visible = True + end + item + Expanded = False + FieldName = 'cdsDnaCodesScantijdstip' + Title.Caption = 'Scantijdstip' + Visible = True + end + item + Expanded = False + FieldName = 'cdsDnaCodesInitialen' + Title.Caption = 'Initialen' + Visible = True + end> + end + object pnlActies: TPanel + Left = 513 + Top = 41 + Width = 127 + Height = 439 + Align = alRight + BevelEdges = [] + BevelOuter = bvNone + TabOrder = 1 + ExplicitLeft = 300 + ExplicitHeight = 311 + object btnMaatwerketiket: TButton + Left = 6 + Top = 6 + Width = 115 + Height = 25 + Caption = 'Maatwerketiket' + TabOrder = 0 + end + object btnKlantEtiket: TButton + Left = 6 + Top = 37 + Width = 115 + Height = 25 + Caption = 'Klantetiket' + TabOrder = 1 + end + object btnProboxetiket: TButton + Left = 6 + Top = 68 + Width = 115 + Height = 25 + Caption = 'Proboxetiket' + TabOrder = 2 + Visible = False + end + end + object pnlZoekKnoppen: TPanel + Left = 0 + Top = 0 + Width = 640 + Height = 41 + Align = alTop + BevelEdges = [] + BevelOuter = bvNone + TabOrder = 2 + ExplicitWidth = 427 + object btnZoekViaToelevering: TButton + Left = 135 + Top = 9 + Width = 75 + Height = 25 + Caption = 'Toelevering' + TabOrder = 0 + end + object edtZoekInput: TEdit + Left = 8 + Top = 10 + Width = 121 + Height = 21 + TabOrder = 1 + end + object btnZoekViaPallet: TButton + Left = 216 + Top = 9 + Width = 75 + Height = 25 + Caption = 'Pallet' + TabOrder = 2 + end + object btnZoekViaDnaCode: TButton + Left = 297 + Top = 9 + Width = 75 + Height = 25 + Caption = 'DnaCode' + TabOrder = 3 + end + end +end Index: PlanScan/UI/frameGebruikers.dfm =================================================================== diff -u --- PlanScan/UI/frameGebruikers.dfm (revision 0) +++ PlanScan/UI/frameGebruikers.dfm (revision 361) @@ -0,0 +1,110 @@ +object frmGebruikers: TfrmGebruikers + Left = 0 + Top = 0 + Width = 640 + Height = 480 + TabOrder = 0 + object dbgGebruikers: TDBGrid + Left = 0 + Top = 0 + Width = 513 + Height = 480 + Align = alClient + DataSource = dsGebruikers + Options = [dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgRowSelect, dgConfirmDelete, dgCancelOnExit, dgMultiSelect, dgTitleClick, dgTitleHotTrack] + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'Tahoma' + TitleFont.Style = [] + Columns = < + item + Expanded = False + FieldName = 'cdsGebruikersInitialen' + Title.Caption = 'Initialen' + Visible = True + end + item + Expanded = False + FieldName = 'cdsGebruikersComputernaam' + Title.Caption = 'Computernaam' + Width = 150 + Visible = True + end + item + Expanded = False + FieldName = 'cdsGebruikersAangemeldSinds' + Title.Caption = 'Aangemeld sinds' + Width = 112 + Visible = True + end + item + Expanded = False + FieldName = 'cdsGebruikersLaatsteActiviteit' + Title.Caption = 'Laatste activiteit' + Width = 155 + Visible = True + end> + end + object Panel1: TPanel + Left = 513 + Top = 0 + Width = 127 + Height = 480 + Align = alRight + BevelEdges = [] + BevelOuter = bvNone + TabOrder = 1 + ExplicitLeft = 300 + ExplicitHeight = 352 + object btnGebruikerAfmelden: TButton + Left = 6 + Top = 6 + Width = 115 + Height = 25 + Caption = 'Afmelden' + TabOrder = 0 + OnClick = btnGebruikerAfmeldenClick + end + end + object cdsGebruikers: TClientDataSet + Aggregates = <> + FieldDefs = < + item + Name = 'cdsGebruikersInitialen' + DataType = ftString + Size = 10 + end + item + Name = 'cdsGebruikersComputernaam' + DataType = ftString + Size = 30 + end + item + Name = 'cdsGebruikersAangemeldSinds' + DataType = ftString + Size = 20 + end + item + Name = 'cdsGebruikersLaatsteActiviteit' + DataType = ftString + Size = 20 + end + item + Name = 'cdsGebruikersLoginCode' + DataType = ftString + Size = 20 + end> + IndexDefs = <> + Params = <> + StoreDefs = True + Left = 120 + Top = 240 + end + object dsGebruikers: TDataSource + DataSet = cdsGebruikers + Left = 120 + Top = 192 + end +end Index: PlanScan/UI/frmDnaCodes.pas =================================================================== diff -u --- PlanScan/UI/frmDnaCodes.pas (revision 0) +++ PlanScan/UI/frmDnaCodes.pas (revision 361) @@ -0,0 +1,32 @@ +unit frmDnaCodes; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, + Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, + Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids; + +type + TFrame1 = class(TFrame) + dbgDnaCodes: TDBGrid; + pnlActies: TPanel; + btnMaatwerketiket: TButton; + btnKlantEtiket: TButton; + btnProboxetiket: TButton; + pnlZoekKnoppen: TPanel; + btnZoekViaToelevering: TButton; + edtZoekInput: TEdit; + btnZoekViaPallet: TButton; + btnZoekViaDnaCode: TButton; + private + { Private declarations } + public + { Public declarations } + end; + +implementation + +{$R *.dfm} + +end. Index: PlanScan/UI/frameDnaCodes.pas =================================================================== diff -u --- PlanScan/UI/frameDnaCodes.pas (revision 0) +++ PlanScan/UI/frameDnaCodes.pas (revision 361) @@ -0,0 +1,220 @@ +unit frameDnaCodes; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, + Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, + Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids, DnaCodeService, Agent, Data.DB, + Datasnap.DBClient, UiContext, typinfo, Vcl.Imaging.pngimage; + +type + TfrmDnaCodes = class(TFrame) + dbgDnaCodes: TDBGrid; + pnlActies: TPanel; + btnMaatwerketiket: TButton; + btnKlantEtiket: TButton; + btnProboxetiket: TButton; + pnlZoekKnoppen: TPanel; + btnZoeken: TButton; + edtDnaCode: TEdit; + cdsDnaCodes: TClientDataSet; + dsDnaCodes: TDataSource; + imgPrinter: TImage; + lblDnaCode: TLabel; + lblPallet: TLabel; + edtPallet: TEdit; + lblToelevering: TLabel; + edtToelevering: TEdit; + lblKlantNummer: TLabel; + edtKlantNummer: TEdit; + lblOrderNummer: TLabel; + edtOrderNummer: TEdit; + edtLadeCode: TEdit; + lblLadeCode: TLabel; + procedure btnZoekViaDnaCodeClick(Sender: TObject); + procedure btnZoekViaPalletClick(Sender: TObject); + procedure btnZoekenClick(Sender: TObject); + procedure btnMaatwerketiketClick(Sender: TObject); + procedure btnKlantEtiketClick(Sender: TObject); + procedure btnProboxetiketClick(Sender: TObject); + procedure edtDnaCodeChange(Sender: TObject); + private + procedure VulDnaCodeGridMetData(DnaCodes: ArrayOfDnaCodeDnaCode); + function BepaalGeselecteerdeDnaCodes: TStringList; + function GeefAlleDnaCodesUitGrid: TStringList; + procedure ZoekveldenLeegmaken(); + public + { Public declarations } + end; + +implementation + +uses + Main, System.StrUtils; + +{$R *.dfm} + +procedure TfrmDnaCodes.btnMaatwerketiketClick(Sender: TObject); +var + DnaCodesStringList: TStringList; +begin + DnaCodesStringList := BepaalGeselecteerdeDnaCodes() + //relevante webmethod oproepen +end; + +procedure TfrmDnaCodes.btnProboxetiketClick(Sender: TObject); +var + DnaCodesStringList: TStringList; + fProboxAfdrukkenResponse: ProboxEtiketAfdrukkenResponse; +begin + DnaCodesStringList := GeefAlleDnaCodesUitGrid(); + fProboxAfdrukkenResponse := TAgent.Create(fmMain.UiContext).ProboxEtiketAfdrukken(DnaCodesStringList); + try + if fProboxAfdrukkenResponse.Header.Status <> '200' then begin + ShowMessage(fProboxAfdrukkenResponse.Header.Omschrijving) + end else begin + ShowMessage('Etiketten afgedrukt') + end; + finally + fProboxAfdrukkenResponse.Free; + end; +end; + +procedure TfrmDnaCodes.btnZoekViaDnaCodeClick(Sender: TObject); +var + fZoekViaDnaCodeResponse: ZoekViaDnaCodeResponse; + DnaCodes: ArrayOfDnaCodeDnaCode; +begin + {fZoekViaDnaCodeResponse := TAgent.Create(fmMain.UiContext).ZoekViaDnaCode(edtZoekInput.Text); + try + if fZoekViaDnaCodeResponse.Header.Status = '200' then begin + SetLength(DnaCodes,1); + DnaCodes[0] := fZoekViaDnaCodeResponse.DnaCodes; + VulDnaCodeGridMetData(DnaCodes); + btnProboxetiket.Visible := false; + end else begin + ShowMessage(fZoekViaDnaCodeResponse.Header.Omschrijving); + end; + finally + fZoekVtiaDnaCodeResponse.Free; + end;} +end; + +procedure TfrmDnaCodes.btnKlantEtiketClick(Sender: TObject); +var + DnaCodesStringList: TStringList; +begin + DnaCodesStringList := BepaalGeselecteerdeDnaCodes(); + //relevante webmethod oproepen +end; + +procedure TfrmDnaCodes.btnZoekViaPalletClick(Sender: TObject); +var + fZoekViaPalletResponse: ZoekViaPalletCodeResponse; + DnaCodes: ArrayOfDnaCodeDnaCode; +begin + {fZoekViaPalletResponse := TAgent.Create(fmMain.UiContext).ZoekViaPalletCode(edtZoekInput.Text); + try + if fZoekViaPalletResponse.Header.Status = '200' then begin + DnaCodes := fZoekViaPalletResponse.DnaCodes; + VulDnaCodeGridMetData(DnaCodes); + if StartsText('TBP',edtZoekInput.Text) then + btnProboxetiket.Visible := true; + end else begin + ShowMessage(fZoekViaPalletResponse.Header.Omschrijving); + end; + finally + fZoekViaPalletResponse.Free; + end;} +end; + +procedure TfrmDnaCodes.edtDnaCodeChange(Sender: TObject); +begin + ZoekveldenLeegmaken(); +end; + +procedure TfrmDnaCodes.btnZoekenClick(Sender: TObject); +var + fZoekViaToeleveringResponse: ZoekViaToeleveringResponse; + DnaCodes: ArrayOfDnaCodeDnaCode; +begin + {fZoekViaToeleveringResponse := TAgent.Create(fmMain.UiContext).ZoekViaToelevering(edtZoekInput.Text); + try + if fZoekViaToeleveringResponse.Header.Status = '200' then begin + DnaCodes := fZoekViaToeleveringResponse.DnaCodes; + VulDnaCodeGridMetData(DnaCodes); + btnProboxetiket.Visible := false; + end else begin + ShowMessage(fZoekViaToeleveringResponse.Header.Omschrijving); + end; + finally + fZoekViaToeleveringResponse.Free; + end; } +end; + +procedure TfrmDnaCodes.VulDnaCodeGridMetData(DnaCodes: ArrayOfDnaCodeDnaCode); +var + ii: integer; + ScanTijdstipAsString: string; +begin + cdsDnaCodes.Close; + cdsDnaCodes.CreateDataSet; + + ii := 0; + while ii <= length(DnaCodes)-1 do begin + if DnaCodes[ii].ScanTijdstip = nil then + ScanTijdstipAsString := '' + else + ScanTijdstipAsString := DateTimeToStr(DnaCodes[ii].ScanTijdstip.AsUTCDateTime); + + cdsDnaCodes.InsertRecord([DnaCodes[ii].DnaCode, + DnaCodes[ii].PalletCode, + DnaCodes[ii].Toelevering, + GetEnumName(typeInfo(DnaCodeStatus),Ord(DnaCodes[ii].Status)), + DnaCodes[ii].BatchId, + ScanTijdstipAsString, + DnaCodes[ii].InitialenScanner]); + ii := ii + 1; + end; +end; + +procedure TfrmDnaCodes.ZoekveldenLeegmaken; +begin + edtToelevering.Text := ''; + edtPallet.Text := ''; + edtDNACode.Text := ''; + edtKlantNummer.Text := ''; + edtOrderNummer.Text := ''; + edtLadeCode.Text := ''; +end; + +function TfrmDnaCodes.BepaalGeselecteerdeDnaCodes: TStringList; +var + DnaCodesStringList: TStringList; + RijTeller: integer; +begin + DnaCodesStringList := TStringList.Create(); + if dbgDnaCodes.SelectedRows.Count > 0 then begin + for rijteller := 0 to dbgDnaCodes.SelectedRows.Count - 1 do begin + dbgDnaCodes.DataSource.DataSet.GotoBookmark(Pointer(dbgDnaCodes.SelectedRows.Items[rijteller])); + DnaCodesStringList.Add(dbgDnaCodes.DataSource.DataSet.FieldByName('cdsDnaCodesDnaCode').AsString); + end; + end; + result := DnaCodesStringList; +end; + +function TfrmDnaCodes.GeefAlleDnaCodesUitGrid: TStringList; +var + DnaCodesStringList: TStringList; +begin + DnaCodesStringList := TStringList.Create(); + dbgDnaCodes.DataSource.DataSet.First; + while not dbgDnaCodes.DataSource.DataSet.Eof do begin + DnaCodesStringList.Add(dbgDnaCodes.DataSource.DataSet.FieldByName('cdsDnaCodesDnaCode').AsString); + dbgDnaCodes.DataSource.DataSet.Next; + end; + result := DnaCodesStringList; +end; + +end.