/[projects]/dao/DelphiScanner/Main.pas
ViewVC logotype

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3093 - (hide annotations) (download)
Fri Aug 19 12:28:21 2016 UTC (7 years, 9 months ago) by torben
File size: 161784 byte(s)
ekstra mellemrum i kommentarer
1 torben 2645 unit Main;
2    
3 torben 2705 // ToDo: flyt PrinterNavn til hhv Configuration lg lad TLabelPrint om al håndtering heraf
4     // ToDo: flyt flere parametre til TConfiguration
5    
6     // ToDo: FormKeyPress() trænger til en seriøs oprydning / refactoring
7     // ToDo: flyt mere funktionalitet fra interface layer til application layer klasser
8     // ToDo: vil det give mening at bruge State Pattern ? Så der er en class per scanningstype ?
9     // ToDo: alternativt kan man bruge en Enum til de forskellige typer
10     // ToDo: en enklere måde at håndtere capabilities på de forskellige scannings steder
11    
12    
13 torben 2645 interface
14    
15     uses
16     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
17 torben 2705 Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
18 torben 2645 IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
19     Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
20 torben 2705 IdExplicitTLSClientServerBase, IdFTP, IdException,
21     ShellApi, ClipBrd, Buttons, wininet,
22 torben 2668 UITypes,
23 torben 2677 PakkeshopLabels,
24 torben 2705 Utils,
25     ParentForm,
26     LabelPrint,
27     Configuration,
28 torben 2791 Vcl.Imaging.pngimage,
29 torben 3076 Generics.Collections,
30     TimingHelper
31 torben 2660
32 torben 2645 ;
33    
34     type
35 torben 2705 TMainForm = class(TForm, IParentForm)
36 torben 2645 StregkodeST: TStaticText;
37     RuteNummerST: TStaticText;
38     BoghandlerNavnST: TStaticText;
39     IdHTTP1: TIdHTTP;
40     XMLDocument1: TXMLDocument;
41     ApplicationEvents1: TApplicationEvents;
42 torben 2653 chkSporgEfterKunde: TCheckBox;
43 torben 2645 MainMenu1: TMainMenu;
44     N1: TMenuItem;
45 torben 3054 menuNatXpress1: TMenuItem;
46     menuNatxpressReturDAO1: TMenuItem;
47     menuNatxpressReturfraKunde1: TMenuItem;
48 torben 2645 Hjlp1: TMenuItem;
49     Om1: TMenuItem;
50     Testforbindelsen1: TMenuItem;
51     Testprinter1: TMenuItem;
52     Afslut1: TMenuItem;
53     Sprgefterboghandlernummer1: TMenuItem;
54     Lukprogrammet1: TMenuItem;
55     N2: TMenuItem;
56     N3: TMenuItem;
57 torben 2655 radioStorPakke: TRadioButton;
58     radioLillePakke: TRadioButton;
59 torben 2645 N4: TMenuItem;
60 torben 3055 menuStorePakker: TMenuItem;
61     menuSmaaPakker: TMenuItem;
62 torben 2645 Panel1: TPanel;
63     Testlyd2: TMenuItem;
64     Button1: TButton;
65     Testlyd1: TMenuItem;
66     ListBox1: TListBox;
67 torben 3054 menuDaoDirekte1: TMenuItem;
68 torben 2691 BtnDownloadKontrolfil: TButton;
69 torben 2645 IdFTP1: TIdFTP;
70     Image1: TImage;
71     ListBox2: TListBox;
72 torben 2699 BtnOpdaterListen: TButton;
73 torben 2697 BtnUploadLogfil: TButton;
74 torben 2696 BtnDownloadRuteskiftFil: TButton;
75 torben 3054 menuPakkeshop1: TMenuItem;
76 torben 2645 PakkeshopText1: TStaticText;
77 torben 2668 btnNulstil: TButton;
78 torben 3054 menuPakkeshopRetur1: TMenuItem;
79 torben 2645 Altidprintepakkelabel1: TMenuItem;
80 torben 2652 chkAltidPrintLabel: TCheckBox;
81 torben 2698 BtnEKLoverforsel: TButton;
82 torben 2645 N5: TMenuItem;
83     Uploadlogfil1: TMenuItem;
84     Manual1: TMenuItem;
85     PrinterstatusStaticText1: TStaticText;
86     Timer1: TTimer;
87 torben 2654 chkScanTjekkode: TCheckBox;
88 torben 2645 Scanogstjekkoden1: TMenuItem;
89 torben 3055 menuAutomatiskTjekkodeStyring: TMenuItem;
90 torben 3054 menuAutomatiskvalg1: TMenuItem;
91 torben 2645 PanelValgA: TPanel;
92     PanelValg1: TPanel;
93     PanelValg2: TPanel;
94     PanelValg3: TPanel;
95     PanelValg4: TPanel;
96     PanelValg5: TPanel;
97     PanelValg6: TPanel;
98 torben 2656 PanelValg7: TPanel;
99 torben 2645 Manualgenerel1: TMenuItem;
100     StaticTextManglendePakker: TStaticText;
101     PanelManglendePakker1: TPanel;
102     PanelManglendePakker2: TPanel;
103     PanelManglendePakker3: TPanel;
104     PanelManglendePakker4: TPanel;
105     PanelManglendePakker5: TPanel;
106     PanelManglendePakker6: TPanel;
107 torben 2664 menuIndlevering: TMenuItem;
108 torben 2791 chkForstorTilDirekte: TCheckBox;
109 torben 3038 chkEmballageRepareret: TCheckBox;
110 torben 3039 KommentarST: TLabel;
111 torben 3073 chkUdenforSpecifikation: TCheckBox;
112 torben 2645
113 torben 2705
114    
115 torben 2645 function getProddato() : TDate;
116     function getProddag() : String;
117     function retRutenummer(rutenummer : String) : String;
118 torben 2685
119 torben 2645 procedure PlaySound(filename : PWideChar);
120     procedure StartScreen();
121     procedure InitScreen();
122     procedure InitBladhus();
123     procedure UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, Boghnr : String);
124     procedure InitLillePakke();
125     procedure InitStorPakke();
126     procedure InitForm(Farve,Titel,Url: String);
127     procedure FormKeyPress(Sender: TObject; var Key: Char);
128     procedure FormCreate(Sender: TObject);
129     procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
130 torben 2655 procedure radioStorPakkeClick(Sender: TObject);
131     procedure radioLillePakkeClick(Sender: TObject);
132 torben 2653 procedure chkSporgEfterKundeClick(Sender: TObject);
133 torben 3054 procedure menuNatXpress1Click(Sender: TObject);
134 torben 2645 procedure Testforbindelsen1Click(Sender: TObject);
135     procedure Testprinter1Click(Sender: TObject);
136     procedure Om1Click(Sender: TObject);
137     procedure Lukprogrammet1Click(Sender: TObject);
138     procedure Sprgefterboghandlernummer1Click(Sender: TObject);
139 torben 3054 procedure menuNatxpressReturDAO1Click(Sender: TObject);
140     procedure menuNatxpressReturfraKunde1Click(Sender: TObject);
141 torben 3055 procedure menuStorePakkerClick(Sender: TObject);
142     procedure menuSmaaPakkerClick(Sender: TObject);
143 torben 2645 procedure Testlyd1Click(Sender: TObject);
144     procedure Testlyd2Click(Sender: TObject);
145     procedure Button1Click(Sender: TObject);
146     procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
147 torben 3054 procedure menuDaoDirekte1Click(Sender: TObject);
148 torben 2691 procedure BtnDownloadKontrolfilClick(Sender: TObject);
149 torben 2699 procedure BtnOpdaterListenClick(Sender: TObject);
150 torben 2645 procedure DownloadBladhusRuteskiftfil();
151     procedure DownloadBladhusKontrolfil();
152     procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
153     procedure UploadLogfilTilDAO();
154     procedure UploadInifilTilDAO();
155     procedure SletStregkodelinieFraListboks2(StregKode : String);
156     procedure FormDestroy(Sender: TObject);
157 torben 2697 procedure BtnUploadLogfilClick(Sender: TObject);
158 torben 2696 procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
159 torben 3054 procedure menuPakkeshop1Click(Sender: TObject);
160 torben 2668 procedure btnNulstilClick(Sender: TObject);
161 torben 3054 procedure menuPakkeshopRetur1Click(Sender: TObject);
162 torben 2645 procedure InitNatxpresslevering();
163     procedure InitReturFraDao();
164     procedure InitReturFraKunde();
165     procedure InitDirektelevering();
166     procedure InitPakkeshoplevering();
167     procedure InitReturFraPakkeshop();
168 torben 2650 procedure InitIndleveringskode();
169    
170 torben 2645 procedure Altidprintepakkelabel1Click(Sender: TObject);
171 torben 2652 procedure chkAltidPrintLabelClick(Sender: TObject);
172 torben 2698 procedure BtnEKLoverforselClick(Sender: TObject);
173 torben 2645 procedure Uploadlogfil1Click(Sender: TObject);
174     procedure Manual1Click(Sender: TObject);
175     procedure Timer1Timer(Sender: TObject);
176     procedure Scanogstjekkoden1Click(Sender: TObject);
177 torben 2654 procedure chkScanTjekkodeClick(Sender: TObject);
178 torben 3055 procedure menuAutomatiskTjekkodeStyringClick(Sender: TObject);
179 torben 2645 procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
180 torben 3054 procedure menuAutomatiskvalg1Click(Sender: TObject);
181 torben 2645 procedure PanelValgAClick(Sender: TObject);
182     procedure PanelValg1Click(Sender: TObject);
183     procedure PanelValg2Click(Sender: TObject);
184     procedure PanelValg3Click(Sender: TObject);
185     procedure PanelValg4Click(Sender: TObject);
186     procedure PanelValg5Click(Sender: TObject);
187     procedure PanelValg6Click(Sender: TObject);
188 torben 2656 procedure PanelValg7Click(Sender: TObject);
189    
190 torben 2645 procedure NulstilAutomatiskValg();
191     procedure SletLogfiler(Path: string; FileList: TStrings);
192     procedure Manualgenerel1Click(Sender: TObject);
193     procedure TjekkerUrls();
194 torben 2703 procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
195 torben 2668
196     procedure menuIndleveringClick(Sender: TObject);
197 torben 2650
198 torben 2656
199 torben 2645
200 torben 2705 //Nedarvet fra IParentForm
201 torben 3038 procedure Msg( msg : string);
202 torben 2705 procedure LogMessage( msg : string);
203     procedure SetPrinterstatusText( txt: string; alert: boolean);
204     function GetFormObject() : TForm;
205    
206    
207 torben 3039
208 torben 2645 private
209     SpecialVersionSted, SpecialVersionScanningtype: String; // Bruges når programmet skal bruges udenfor DAO scanningssteder
210     Stregkode : String;
211     SkrivLog : String;
212     Sted : String;
213     StedNavn : String;
214 torben 2705
215 torben 3090 Scanningtype, Pakketype : String;
216 torben 2705
217 torben 3090
218 torben 3087 Url : String;
219    
220 torben 3089 Farve : String;
221 torben 2794
222 torben 3089 Titel : String;
223 torben 2794
224 torben 2683
225    
226 torben 2645 Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
227     BladhusSted : Integer;
228     BladhusStedKode : Array of string;
229     BladhusStedNavn : Array of string;
230     BladhusRuteskiftfil_server : String;
231     BladhusRuteskiftfil_lokal : String;
232     BladhusKontrolfil_server : String;
233     BladhusKontrolfil_lokal : String;
234     logTekst : string;
235     PakkeshopStregkode, PakkeshopTjekkode : String;
236     BoghandlerStregkode, BoghandlerTjekkode : String;
237 torben 3090
238 torben 2705 Config : TConfiguration;
239 torben 2645
240 torben 2677
241 torben 2705 LabelPrint: TLabelPrint;
242 torben 2645
243     procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
244 torben 2705
245 torben 2645 procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');
246     procedure CheckCode();
247     procedure IndlesManglendeScanninger();
248     procedure IndlesRuteskiftFil(var filnavn : string);
249     procedure IndlesKontrolFil(var filnavn : string);
250     procedure IndlesScanningLogFil();
251     procedure SkrivScanningLogFil(var tekst : string);
252     function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
253 torben 2659 procedure VisAlarmSkaerm(strMessage: string);
254 torben 2645
255 torben 3087
256 torben 2645 public
257     { Public declarations }
258     end;
259    
260 torben 2677
261 torben 2645 var
262     MainForm: TMainForm;
263    
264     // Globale variabler
265     ruteHverdagArray : Array of String;
266     ruteLordagArray : Array of String;
267     ruteArray : Array of String;
268     korelisteArray : Array of String;
269     stregkoderMedTjekkodeArray : Array of String;
270    
271     implementation
272     {$R *.dfm}
273    
274    
275 torben 2705 //FormCreate kaldes før InitForm
276    
277 torben 2645 procedure TMainForm.InitForm(Farve,Titel,Url : String);
278     begin
279    
280 torben 3048 IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
281     IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
282    
283    
284    
285    
286 torben 2645 StaticTextManglendePakker.Caption := '';
287    
288 torben 2704
289 torben 2645 PanelValg1.Color := clBtnFace;
290     if PanelValg1.Enabled = true then
291     begin
292     PanelValg1.Font.Color := clWindowText;
293     end;
294    
295     PanelValg2.Color := clBtnFace;
296     if PanelValg2.Enabled = true then
297     begin
298     PanelValg2.Font.Color := clWindowText;
299     end;
300    
301     PanelValg3.Color := clBtnFace;
302     if PanelValg3.Enabled = true then
303     begin
304     PanelValg3.Font.Color := clWindowText;
305     end;
306    
307     PanelValg4.Color := clBtnFace;
308     if PanelValg4.Enabled = true then
309     begin
310     PanelValg4.Font.Color := clWindowText;
311     end;
312    
313     PanelValg5.Color := clBtnFace;
314     if PanelValg5.Enabled = true then
315     begin
316     PanelValg5.Font.Color := clWindowText;
317     end;
318    
319     PanelValg6.Color := clBtnFace;
320     if PanelValg6.Enabled = true then
321     begin
322     PanelValg6.Font.Color := clWindowText;
323     end;
324    
325 torben 2650 PanelValg7.Color := clBtnFace;
326     if PanelValg7.Enabled = true then
327     begin
328     PanelValg7.Font.Color := clWindowText;
329     end;
330    
331 torben 2699 BtnOpdaterListen.Enabled := false;
332 torben 2645
333     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
334     begin
335     if (StedNavn = '') then
336     begin
337     Titel := BladhusStedNavn[BladhusSted]+': '+Titel;
338     end
339     else
340     begin
341     Titel := StedNavn+': '+Titel;
342     end;
343     //Farve := 'D8D8D8'; // her kan vi evt. overrule ini fil
344     end
345     else
346     begin
347     //ShowMessage(Sted);
348     if (StedNavn = '') then
349     begin
350     if (Sted = 'B') then
351     begin StedNavn := 'Brabrand: '; end
352     else if (Sted = 'E') then
353     begin StedNavn := 'Erritsø: '; end
354     else if (Sted = 'AAL') then
355     begin StedNavn := 'Aalborg: '; end
356     else if (Sted = 'BR') then
357     begin StedNavn := 'Brøndby: '; end
358     else if (Sted = 'BK') then
359 torben 2800 begin StedNavn := 'Bladkompagniet/ISV: '; end
360     else if (Sted = 'TK') then
361     begin StedNavn := 'BK/Trykkompagniet: '; end
362 torben 2645 else if (Sted = 'DBK') then
363 torben 2902 begin StedNavn := 'DBK/Køge: '; end
364 torben 2645 else if (Sted = '1') then
365     begin StedNavn := 'Ålborg: '; end
366     else if (Sted = '2') then
367     begin StedNavn := 'Herning: '; end
368     else if (Sted = '3') then
369     begin StedNavn := 'Hinnerup: '; end
370     else if (Sted = '4') then
371     begin StedNavn := 'Vejle: '; end
372     else
373     begin StedNavn := Sted+': '; end
374     end
375     else
376     begin
377     if (RightStr(StedNavn,2) <> ': ') then
378     begin
379     StedNavn := StedNavn + ': ';
380     end;
381     end;
382     Titel := Stednavn + Titel;
383     end;
384    
385     StartScreen();
386     MainForm.Caption := Titel;
387 torben 2682 MainForm.Color := TUtils.HexToTColor(Farve);
388 torben 2645 MainForm.Farve := Farve;
389     MainForm.Titel := Titel;
390     MainForm.Url := Url;
391    
392     if PrinterstatusStaticText1.Color <> clWhite then // Hvis der IKKE er en alarm skal vi tilpasse baggrundsfarven her
393     begin
394     PrinterstatusStaticText1.Color := MainForm.Color;
395     end;
396    
397 torben 3054 if menuPakkeshop1.Checked or menuNatXpress1.Checked then
398 torben 2645 PakkeshopText1.Visible := true
399     else
400     PakkeshopText1.Visible := false;
401    
402 torben 2654 chkScanTjekkode.Checked := false;
403     chkScanTjekkode.Enabled := false;
404 torben 2645 Scanogstjekkoden1.Enabled := false;
405    
406     if (Scanningtype = '1') or (Scanningtype = '5') then
407     begin
408 torben 3090 if (Config.ScanTjekkode = '1') then
409 torben 2645 begin
410 torben 2654 chkScanTjekkode.Checked := true;
411     chkScanTjekkode.Enabled := true;
412 torben 2645 Scanogstjekkoden1.Enabled := true;
413     end
414     else
415     begin
416 torben 2654 chkScanTjekkode.Checked := false;
417     chkScanTjekkode.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning
418 torben 2645 Scanogstjekkoden1.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning
419     end;
420     end;
421    
422 torben 3055 if menuAutomatiskTjekkodeStyring.Checked then
423 torben 2645 begin
424 torben 2654 chkScanTjekkode.Enabled := false;
425 torben 2645 Scanogstjekkoden1.Enabled := false;
426     end;
427    
428     logTekst := 'Overskrift: '+Titel;
429     SkrivScanningLogFil(logTekst);
430    
431     if SpecialVersionSted = '' then
432     begin
433     logTekst := 'Sted: '+Sted+', Stednavn: '+StringReplace(Stednavn, ':', '', [rfReplaceAll, rfIgnoreCase]);
434     SkrivScanningLogFil(logTekst);
435     end;
436    
437     if SpecialVersionSted <> '' then
438     begin
439     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
440     begin
441     if Stednavn = '' then
442     begin
443     logTekst := 'Speciel version til: '+BladhusStedNavn[BladhusSted]+' ('+BladhusStedKode[BladhusSted]+')';
444     end
445     else
446     begin
447 torben 2682 logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
448 torben 2645 end;
449     SkrivScanningLogFil(logTekst);
450     end
451     else
452     begin
453 torben 2682 logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
454 torben 2645 SkrivScanningLogFil(logTekst);
455     end;
456     end;
457    
458 torben 2705
459 torben 2645 end;
460    
461     procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
462     begin
463    
464     if Altidprintepakkelabel1.Checked then
465     begin
466 torben 2652 chkAltidPrintLabel.Checked := true;
467 torben 2645 end
468     else
469     begin
470 torben 2652 chkAltidPrintLabel.Checked := false;
471 torben 2645 end;
472    
473     end;
474    
475     procedure TMainForm.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
476     begin
477     StregkodeST.Caption := Stregkode;
478     end;
479    
480 torben 3055 procedure TMainForm.menuAutomatiskTjekkodeStyringClick(Sender: TObject);
481 torben 2645 begin
482 torben 3055 if menuAutomatiskTjekkodeStyring.Checked then
483 torben 2645 begin
484 torben 2654 chkScanTjekkode.Enabled := false;
485 torben 2645 Scanogstjekkoden1.Enabled := false;
486     end
487     else
488     begin
489 torben 2654 chkScanTjekkode.Enabled := true;
490 torben 2645 Scanogstjekkoden1.Enabled := true;
491     end;
492    
493     end;
494    
495 torben 3054 procedure TMainForm.menuAutomatiskvalg1Click(Sender: TObject);
496 torben 2645 begin
497     // Skal ikke toggle men bare sætte funktionen on
498     // Fravælges ved at vælge en scanningstype
499 torben 3054 menuAutomatiskvalg1.Checked := true;
500 torben 2645 PanelValgA.Color := clGreen;
501     PanelValgA.Font.Color := clWhite;
502     end;
503    
504 torben 2705
505 torben 2996
506 torben 2705 //InitForm kaldes før FormCreate
507 torben 2645 procedure TMainForm.FormCreate(Sender: TObject);
508     const
509     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
510     var
511     gemScanningtype : String;
512    
513     begin
514 torben 2705
515    
516 torben 2645 // Initierer nogle variabler
517     BladhusSted := 00;
518     Application.ShowHint := True;
519     PrinterstatusStaticText1.Caption := '';
520     PrinterstatusStaticText1.Color := MainForm.Color;
521 torben 2656
522 torben 2668 btnNulstil.BringToFront;
523 torben 2656
524 torben 2682 TUtils.RoundCornerOf(PanelManglendePakker1);
525     TUtils.RoundCornerOf(PanelManglendePakker2);
526     TUtils.RoundCornerOf(PanelManglendePakker3);
527     TUtils.RoundCornerOf(PanelManglendePakker4);
528     TUtils.RoundCornerOf(PanelManglendePakker5);
529     TUtils.RoundCornerOf(PanelManglendePakker6);
530 torben 2645
531 torben 2656
532 torben 2645 // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
533     if DirectoryExists('Docs') then
534     begin
535     Manualgenerel1.Enabled := true;
536     Manual1.Enabled := true;
537     end;
538    
539     // Sætter lige en default panel størrelse
540     MainForm.ClientWidth := 1000;
541 torben 3076 MainForm.ClientHeight := 820;
542 torben 2645
543 torben 2705 Config := TConfiguration.Create();
544     Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) ); //ToDo: clean up duplicate ini ref
545     Config.Sted := Sted;
546    
547 torben 2645 // Læser parametre fra ini filen
548     with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
549     try
550 torben 2705
551    
552 torben 2645 SkrivLog := ReadString('Settings','SkrivLog','0');
553     Sted := ReadString('Settings','Sted','');
554     StedNavn := ReadString('Settings','Stednavn','');
555 torben 2996
556 torben 3092 Scanningtype := 'A'; //hardcoded
557     Pakketype := '0';
558 torben 2996
559    
560    
561 torben 2656
562 torben 3092
563 torben 2645 if (SkrivLog = '1') then
564     begin
565 torben 2693 logTekst := 'Program start (Version: ' + TUtils.Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
566 torben 2645 try
567     SkrivScanningLogFil(logTekst);
568     Uploadlogfil1.Enabled := true;
569 torben 2697 BtnUploadLogfil.Enabled := true;
570 torben 2645 logTekst := 'Programmet er installeret som: '+ParamStr(0);
571     SkrivScanningLogFil(logTekst);
572     // Oprydning i gamle logfiler
573     SletLogfiler('Logs\', ListBox1.Items);
574     except
575     SkrivLog := '0';
576     end;
577     end;
578    
579     if Scanningtype = 'A' then
580     begin
581 torben 3054 menuAutomatiskvalg1.Checked := true;
582 torben 2645 Scanningtype := '1';
583     PanelValgA.Color := clGreen;
584     PanelValgA.Font.Color := clWhite;
585     end;
586    
587    
588 torben 2705
589 torben 3090 if Config.SporgEfterBoghandler = '1' then
590 torben 2645 begin
591 torben 2653 chkSporgEfterKunde.Checked := true;
592 torben 2645 Sprgefterboghandlernummer1.Checked := true;
593     end
594     else
595     begin
596 torben 2653 chkSporgEfterKunde.Checked := false;
597 torben 2645 Sprgefterboghandlernummer1.Checked := false;
598     end;
599    
600 torben 3090 if Config.ScanTjekkode = '1' then
601 torben 2645 begin
602 torben 2654 chkScanTjekkode.Checked := true;
603 torben 2645 Scanogstjekkoden1.Checked := true;
604     end
605     else
606     begin
607 torben 2654 chkScanTjekkode.Checked := false;
608 torben 2645 Scanogstjekkoden1.Checked := false;
609     end;
610    
611 torben 3090 if Config.ScanTjekkodeAutomatik = '1' then
612 torben 2645 begin
613 torben 3055 menuAutomatiskTjekkodeStyring.Checked := true;
614 torben 2654 chkScanTjekkode.Enabled := false;
615 torben 2645 Scanogstjekkoden1.Enabled := false;
616     end;
617    
618     //
619     // specialversioner
620     //
621     // Hvis programmet skal bruges af andre distributører/scanningssteder end DAO
622     // skal vi ikke bruge hele ini-filen.
623     // Vi laver derfor en speciel opsætning her.
624    
625     SpecialVersionSted := ''; // Tom indikerer normal version hvor scanningtype er angivet i ini filen
626     SpecialVersionScanningtype := 'A'; // 'Automatisk valg'
627     // bruges sammen med nedenstående SpecialVersionSted for specialversioner af programmet
628    
629     // Ved compilering af en specialversion skal efterfølgende
630     // 2 felter sættes efter behov (SpecialVersionSted og SpecialVersionScanningtype).
631     // Det er p.t. ikke nødvendigt at ændre andre steder...
632    
633     // *************************** //
634     //SpecialVersionSted := 'BK'; // bruges sammen med ovenstående SpecialVersionScanningtype 'Automatisk valg')
635     //SpecialVersionSted := 'DBK'; // bruges sammen med ovenstående SpecialVersionScanningtype 'Automatisk valg')
636     //SpecialVersionSted := 'NS'; // NS - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
637     //SpecialVersionSted := 'FD'; // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
638     // *************************** //
639    
640 torben 2680 {$IfDef STED_BK}
641     SpecialVersionSted := 'BK';
642     {$EndIf}
643 torben 2800 {$IfDef STED_TK}
644     SpecialVersionSted := 'TK';// BK-Trykkompagniet
645     {$EndIf}
646 torben 2680 {$IfDef STED_DBK}
647     SpecialVersionSted := 'DBK';
648     {$EndIf}
649     {$IfDef STED_FD}
650     SpecialVersionSted := 'FD';
651     {$EndIf}
652     {$IfDef STED_NS}
653     SpecialVersionSted := 'NS';
654     {$EndIf}
655    
656 torben 2645 //SpecialVersionSted := '01'; // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
657     //SpecialVersionSted := '02'; // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
658     //SpecialVersionSted := '03'; // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
659     //SpecialVersionSted := '04'; // DBK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted DBK)
660    
661     //SpecialVersionScanningtype := '1'; // NAT X-PRESS (BRUGES IKKE)
662     //SpecialVersionScanningtype := '2'; // Retur fra DAO (BRUGES IKKE)
663     //SpecialVersionScanningtype := '3'; // Retur fra Kunde (BRUGES IKKE)
664     //SpecialVersionScanningtype := '4'; // DIREKTE
665     //SpecialVersionScanningtype := '5'; // PAKKESHOP (BRUGES IKKE)
666     //SpecialVersionScanningtype := '6'; // Retur fra pakkeshop (BRUGES IKKE)
667    
668     // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
669     // ændrer vi Sted og Scanningtype her:
670    
671     if SpecialVersionSted = 'NS' then
672     begin
673 torben 3046 //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
674     //SpecialVersionScanningtype := '4';
675    
676     //FarveNormal := 'A9F5A9'; // her kan vi evt. overrule ini fil
677     Sted := SpecialVersionSted;
678     // her skal vi også disable de knapper BK ikke kan bruge
679     PanelValg2.Enabled := false;
680     PanelValg2.Font.Color := clInactiveCaption;
681     PanelValg3.Enabled := false;
682     PanelValg3.Font.Color := clInactiveCaption;
683     //PanelValg6.Enabled := false;
684     //PanelValg6.Font.Color := clInactiveCaption;
685    
686     // her skal vi også disable de menupunkter FD ikke kan bruge
687 torben 3054 menuNatxpressReturDAO1.Enabled := false;
688     menuNatxpressReturfraKunde1.Enabled := false;
689 torben 3046
690     //Returpakkerfrapakkeshop1.Enabled := false;
691 torben 2645 end;
692 torben 2996
693 torben 2645 if SpecialVersionSted = 'FD' then
694     begin
695 torben 2996 //SpecialVersionSted := '03'; //fra før at FD overtog scanning
696     //SpecialVersionScanningtype := '4';
697    
698    
699     //FarveNormal := 'A9F5A9'; // her kan vi evt. overrule ini fil
700     Sted := SpecialVersionSted;
701     // her skal vi også disable de knapper BK ikke kan bruge
702     PanelValg2.Enabled := false;
703     PanelValg2.Font.Color := clInactiveCaption;
704     PanelValg3.Enabled := false;
705     PanelValg3.Font.Color := clInactiveCaption;
706     //PanelValg6.Enabled := false;
707     //PanelValg6.Font.Color := clInactiveCaption;
708    
709     // her skal vi også disable de menupunkter FD ikke kan bruge
710 torben 3054 menuNatxpressReturDAO1.Enabled := false;
711     menuNatxpressReturfraKunde1.Enabled := false;
712 torben 2996
713     //Returpakkerfrapakkeshop1.Enabled := false;
714    
715 torben 2645 end;
716    
717 torben 2800 if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
718 torben 2645 begin
719     //FarveNormal := 'A9F5A9'; // her kan vi evt. overrule ini fil
720     Sted := SpecialVersionSted;
721     // her skal vi også disable de knapper BK ikke kan bruge
722     PanelValg2.Enabled := false;
723     PanelValg2.Font.Color := clInactiveCaption;
724     PanelValg3.Enabled := false;
725     PanelValg3.Font.Color := clInactiveCaption;
726 torben 2756 //PanelValg6.Enabled := false;
727     //PanelValg6.Font.Color := clInactiveCaption;
728    
729 torben 2645 // her skal vi også disable de menupunkter BK ikke kan bruge
730 torben 3054 menuNatxpressReturDAO1.Enabled := false;
731     menuNatxpressReturfraKunde1.Enabled := false;
732 torben 2756
733     //Returpakkerfrapakkeshop1.Enabled := false;
734    
735 torben 2645 if SpecialVersionScanningtype = 'A' then
736     begin
737     Scanningtype := '1';
738     end
739     else
740     begin
741     Scanningtype := SpecialVersionScanningtype;
742     end;
743     end;
744    
745     if SpecialVersionSted = 'DBK' then
746     begin
747     Sted := SpecialVersionSted;
748     end;
749    
750     if (SpecialVersionSted = '01')
751     or (SpecialVersionSted = '02')
752     or (SpecialVersionSted = '03')
753     or (SpecialVersionSted = '04') then
754     begin
755     BladhusSted := StrToInt(SpecialVersionSted);
756     // her skal vi også disable de knapper 01, 02, 03 og 04 (NS, BK, FD og DBK) ikke kan bruge
757     PanelValg1.Enabled := false;
758     PanelValg1.Font.Color := clInactiveCaption;
759     PanelValg2.Enabled := false;
760     PanelValg2.Font.Color := clInactiveCaption;
761     PanelValg3.Enabled := false;
762     PanelValg3.Font.Color := clInactiveCaption;
763     PanelValg4.Enabled := false;
764     PanelValg4.Font.Color := clInactiveCaption;
765     PanelValg5.Enabled := false;
766     PanelValg5.Font.Color := clInactiveCaption;
767     PanelValg6.Enabled := false;
768     PanelValg6.Font.Color := clInactiveCaption;
769 torben 2668 PanelValg7.Enabled := false;
770     PanelValg7.Font.Color := clInactiveCaption;
771 torben 2645 // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge
772 torben 2656
773 torben 3054 menuAutomatiskvalg1.Enabled := false;
774 torben 2656
775 torben 3054 menuNatXpress1.Enabled := false;
776     menuNatxpressReturDAO1.Enabled := false;
777     menuNatxpressReturfraKunde1.Enabled := false;
778     menuDaoDirekte1.Enabled := false;
779     menuPakkeshop1.Enabled := false;
780     menuPakkeshopRetur1.Enabled := false;
781 torben 2645 if SpecialVersionScanningtype = 'A' then
782     begin
783     Scanningtype := '4';
784 torben 3054 menuDaoDirekte1.Enabled := true;
785 torben 2645 PanelValg4.Font.Color := clWindowText;
786     PanelValg4.Enabled := true;
787     end
788     else
789     begin
790     Scanningtype := SpecialVersionScanningtype;
791     PanelValgA.Enabled := false;
792     PanelValgA.Font.Color := clInactiveCaption;
793 torben 3054 menuAutomatiskvalg1.Checked := false;
794 torben 2645 PanelValgA.Color := clBtnFace;
795     if Scanningtype = '1' then
796     begin
797 torben 3054 menuNatXpress1.Enabled := true;
798 torben 2645 PanelValg1.Enabled := true;
799     PanelValg1.Font.Color := clWindowText;
800     end;
801     if Scanningtype = '2' then
802     begin
803 torben 3054 menuNatxpressReturDAO1.Enabled := true;
804 torben 2645 PanelValg2.Enabled := true;
805     PanelValg2.Font.Color := clWindowText;
806     end;
807     if Scanningtype = '3' then
808     begin
809 torben 3054 menuNatxpressReturfraKunde1.Enabled := true;
810 torben 2645 PanelValg3.Enabled := true;
811     PanelValg3.Font.Color := clWindowText;
812     end;
813     if Scanningtype = '4' then
814     begin
815 torben 3054 menuDaoDirekte1.Enabled := true;
816 torben 2645 PanelValg4.Enabled := true;
817     PanelValg4.Font.Color := clWindowText;
818     end;
819     if Scanningtype = '5' then
820     begin
821 torben 3054 menuPakkeshop1.Enabled := true;
822 torben 2645 PanelValg5.Enabled := true;
823     PanelValg5.Font.Color := clWindowText;
824     end;
825     if Scanningtype = '6' then
826     begin
827 torben 3054 menuPakkeshopRetur1.Enabled := true;
828 torben 2645 PanelValg6.Enabled := true;
829     PanelValg6.Font.Color := clWindowText;
830     end;
831     end;
832     Sted := SysUtils.Format('%.*d', [2, BladhusSted]);
833     //FarveBudlevering := '2E9AFE'; // her kan vi evt. overrule ini fil
834     end;
835    
836     SetLength(BladhusStedNavn, 5);
837     SetLength(BladhusStedKode, 5);
838     BladhusStedNavn[00] := 'bruges ikke';
839     BladhusStedKode[00] := '';
840     BladhusStedNavn[01] := 'Nordjyske';
841     BladhusStedKode[01] := 'NS';
842     BladhusStedNavn[02] := 'Bladkompagniet';
843     BladhusStedKode[02] := 'BK';
844     BladhusStedNavn[03] := 'Fyens Distribution';
845     BladhusStedKode[03] := 'FD';
846     BladhusStedNavn[04] := 'DBK Køge';
847     BladhusStedKode[04] := 'DBK';
848    
849     if (Trim(Sted) = '')
850     or (Length(Sted) > 3) then
851     begin
852     ShowMessage('Scanningsted "' + Sted + '" er ukendt - programmet afbrydes...');
853     Application.Terminate;
854     end;
855    
856 torben 3090 if Config.TjekUrls = '1' then // Tjekker urls
857 torben 2645 begin
858     TjekkerUrls();
859 torben 3090 if Config.TjekUrls = '-' then // så var der fejl i url - så vi stopper her
860 torben 2645 begin
861 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
862 torben 2645 MainForm.Color := clRed;
863     RutenummerST.Caption := '';
864     BoghandlerNavnST.Caption := 'Fejl i urls';
865     KommentarST.Caption := 'Se log vinduet';
866 torben 2668 btnNulstil.Visible := true;
867 torben 2645 exit;
868     end;
869     end
870     else
871     begin // Tjekker ikke urls
872     logTekst := 'Tjekker IKKE urls i denne afvikling.';
873     SkrivScanningLogFil(logTekst);
874     end;
875    
876     if Scanningtype = '6' then
877     begin
878     InitReturFraPakkeshop();
879     end
880     else if Scanningtype = '5' then
881     begin
882     InitPakkeshoplevering();
883     end
884     else if Scanningtype = '4' then
885     begin
886     InitDirektelevering();
887     end
888     else if Scanningtype = '3' then
889     begin
890     InitReturFraKunde();
891     end
892     else if Scanningtype = '2' then
893     begin
894     InitReturFraDao();
895     end
896     else if (Scanningtype = '1') then
897     begin
898     InitNatxpressLevering();
899     end
900     else
901     begin
902     ShowMessage('Scanningtype er af ukendt type - programmet afbrydes...');
903     Application.Terminate;
904     end;
905    
906     if Pakketype = '1' then
907     begin
908 torben 3055 menuStorePakker.Checked := true;
909 torben 2655 radioStorPakke.Checked := true;
910 torben 2645 end
911     else
912     begin
913 torben 3055 menuSmaaPakker.Checked := true;
914 torben 2655 radioLillePakke.Checked := true;
915 torben 2645 end;
916    
917 torben 3090 if Config.TestFunktionen = '1' then
918 torben 2645 begin
919     Testforbindelsen1.Visible := true;
920     Testprinter1.Visible := true;
921     Testlyd1.Visible := true;
922     Testlyd2.Visible := true;
923     end
924 torben 3090 else if Config.TestFunktionen = '2' then
925 torben 2645 begin
926     Testforbindelsen1.Enabled := false;
927     Testprinter1.Enabled := false;
928     Testlyd1.Enabled := false;
929     Testlyd2.Enabled := false;
930     end
931     else
932     begin
933     Testforbindelsen1.Visible := false;
934     Testprinter1.Visible := false;
935     Testlyd1.Visible := false;
936     Testlyd2.Visible := false;
937     end;
938    
939    
940    
941    
942 torben 2656
943 torben 3090 LabelPrint := TLabelPrint.Create( self, Config, Config.PrinterNavn );
944     LabelPrint.CheckPrintQue('Opstart', Config.PrinterNavn);
945 torben 2645
946     finally
947     Free;
948     end;
949    
950     // UBD skal p.t. ikke have adgang til flg. funktioner
951     if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
952     begin
953 torben 3054 menuNatxpressReturDAO1.Visible := false;
954     menuNatxpressReturfraKunde1.Visible := false;
955     menuDaoDirekte1.Visible := false;
956 torben 3055 menuStorePakker.Visible := false;
957     menuSmaaPakker.Visible := false;
958 torben 2645 Testprinter1.Visible := false;
959 torben 3054 menuPakkeshop1.Visible := false;
960     menuPakkeshopRetur1.Visible := false;
961 torben 2645 end;
962    
963     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
964     begin
965     InitBladhus();
966     end;
967    
968 torben 2656
969 torben 2645 // Opbygger PanelManglendePakker information
970     gemScanningtype := Scanningtype;
971    
972     if PanelValg6.Enabled then
973     begin
974     Scanningtype := '6';
975     IndlesManglendeScanninger();
976     end;
977    
978     if PanelValg5.Enabled then
979     begin
980     Scanningtype := '5';
981     IndlesManglendeScanninger();
982     end;
983    
984     if PanelValg4.Enabled then
985     begin
986     Scanningtype := '4';
987     IndlesManglendeScanninger();
988     end;
989    
990     if PanelValg3.Enabled then
991     begin
992     Scanningtype := '3';
993     IndlesManglendeScanninger();
994     end;
995    
996     if PanelValg2.Enabled then
997     begin
998     Scanningtype := '2';
999     IndlesManglendeScanninger();
1000     end;
1001    
1002     if PanelValg1.Enabled then
1003     begin
1004     Scanningtype := '1';
1005     IndlesManglendeScanninger();
1006     end;
1007    
1008     Scanningtype := gemScanningtype;
1009    
1010     SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1011 torben 2693 SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1012 torben 2645
1013     end;
1014    
1015     procedure TMainForm.FormDestroy(Sender: TObject);
1016     begin
1017     logTekst := 'Program slut';
1018     SkrivScanningLogFil(logTekst);
1019     SendInfoTilServer(Sted, Scanningtype, 'End', '');
1020     end;
1021    
1022     procedure TMainForm.FormKeyPress(Sender: TObject; var Key: Char);
1023     var
1024     RuteNummer : String;
1025     Kommentar : String;
1026     BoghandlerNavn : String;
1027     Koreliste : String;
1028     PrintNyLabel : Boolean;
1029     pakkeErScannet : Integer;
1030     pakkeForkertSted : Integer;
1031     tjekkodeMangler : Integer;
1032     SmsKode : String;
1033     DBKbane : String;
1034     Leveringssted : String;
1035     i : Integer;
1036     ClipboardData : String;
1037     numberString : string;
1038     float : Extended;
1039     errorPos : Integer;
1040     GemStregkode : String;
1041     WebSvar : String;
1042     URLStr : String;
1043     Pakketype : String;
1044     Pakkescanningtype : String;
1045    
1046     begin
1047    
1048     if Key = #22 then // ctrl-v
1049     begin
1050     ClipboardData := Clipboard.AsText;
1051     numberString := ClipboardData;
1052     Val(numberString, float, errorPos);
1053 torben 2656
1054     // if (ClipboardData <> '') and (errorPos = 0) then
1055 torben 2645 if (ClipboardData <> '') and (errorPos = 0)
1056     or (NumberString = 'Nulstil')
1057     or (NumberString = 'Indtast kundenummer')
1058     or (NumberString = 'Stor pakke')
1059     or (NumberString = 'Lille pakke')
1060     or (NumberString = 'Scan tjekkode')
1061     or (NumberString = 'Automatisk valg')
1062     or (NumberString = 'DAO NAT X-PRESS')
1063     or (NumberString = 'DAO NAT X+PRESS') // 20150323: pga stregkode programmet bruger et forkert karaktersæt
1064     or (NumberString = 'Retur fra DAO')
1065     or (NumberString = 'Retur fra kunde')
1066     or (NumberString = 'DAO DIREKTE')
1067     or (NumberString = 'DAO PAKKESHOP')
1068 torben 2794 or (NumberString = 'DAO PAKKESHOP')
1069     or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1070 torben 2800 or (LowerCase(NumberString) = 'for stor daodirekte' )
1071 torben 2645 or (NumberString = 'Retur fra pakkeshop') then
1072 torben 2656
1073 torben 2645 begin
1074     Stregkode := Stregkode + ClipboardData;
1075     StregkodeST.Caption := StregKode;
1076     end
1077     else
1078     begin
1079     ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1080     end;
1081 torben 2794 end; // Slut ctrl-v
1082 torben 2645
1083     if Key = #13 then // Enter
1084     begin
1085 torben 2977
1086     // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1087     Stregkode := Trim(Stregkode);
1088    
1089     if (Length(Stregkode) = 0) then
1090 torben 2645 begin
1091 torben 2659 VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1092    
1093 torben 2645 exit;
1094     end;
1095    
1096     if StregKode = 'Nulstil' then
1097     begin
1098 torben 2668 btnNulstil.Click();
1099 torben 2645 exit;
1100     end;
1101    
1102 torben 2668 if btnNulstil.Visible then
1103 torben 2645 begin
1104 torben 2659 VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1105 torben 2656
1106 torben 2645 exit;
1107     end;
1108    
1109     if StregKode = 'Lille pakke' then
1110     begin
1111 torben 2655 if radioLillePakke.Enabled = true then
1112 torben 2645 begin
1113     InitLillePakke();
1114     end
1115     else
1116     begin
1117 torben 2659 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1118 torben 2645 end;
1119     Stregkode := '';
1120     StregkodeST.Caption := StregKode;
1121     exit;
1122     end;
1123    
1124     if StregKode = 'Stor pakke' then
1125     begin
1126 torben 2655 if radioStorPakke.Enabled = true then
1127 torben 2645 begin
1128     InitStorPakke();
1129     end
1130     else
1131     begin
1132 torben 2659 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1133 torben 2645 end;
1134     Stregkode := '';
1135     StregkodeST.Caption := StregKode;
1136     exit;
1137     end;
1138    
1139 torben 2800 if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1140 torben 2794 begin
1141     if chkForstorTilDirekte.Enabled then
1142     begin
1143     chkForstorTilDirekte.Checked := true;
1144     end
1145     else
1146     begin
1147     VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1148     end;
1149     Stregkode := '';
1150     StregkodeST.Caption := StregKode;
1151     exit;
1152     end;
1153    
1154    
1155 torben 2645 if StregKode = 'Indtast kundenummer' then
1156     begin
1157 torben 2653 if chkSporgEfterKunde.Enabled = true then
1158 torben 2645 begin
1159 torben 2653 if (chkSporgEfterKunde.State = cbChecked) then
1160 torben 2645 begin
1161 torben 2653 chkSporgEfterKunde.State := cbUnchecked;
1162 torben 2645 end
1163     else
1164     begin
1165 torben 2653 chkSporgEfterKunde.State := cbChecked;
1166 torben 2645 end;
1167     end
1168     else
1169     begin
1170 torben 2659 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1171 torben 2645 end;
1172     Stregkode := '';
1173     StregkodeST.Caption := StregKode;
1174     exit;
1175     end;
1176    
1177     if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then
1178     begin
1179 torben 2654 if chkScanTjekkode.Enabled = true then
1180 torben 2645 begin
1181 torben 2654 if (chkScanTjekkode.State = cbChecked) then
1182 torben 2645 begin
1183 torben 2654 chkScanTjekkode.State := cbUnchecked;
1184 torben 2645 end
1185     else
1186     begin
1187 torben 2654 chkScanTjekkode.State := cbChecked;
1188 torben 2645 end;
1189     end
1190     else
1191     begin
1192 torben 2659 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1193 torben 2645 end;
1194     Stregkode := '';
1195     StregkodeST.Caption := StregKode;
1196     exit;
1197     end;
1198    
1199     if StregKode = 'Automatisk valg' then
1200     begin
1201     if (PanelValgA.Enabled = true) then
1202     begin
1203     PanelValgAClick(PanelValgA);
1204     end
1205     else
1206     begin
1207 torben 2659 VisAlarmSkaerm(Stregkode + ' kan ikke vælges på dette scanningsted');
1208 torben 2645 end;
1209     Stregkode := '';
1210     StregkodeST.Caption := StregKode;
1211     exit;
1212     end;
1213    
1214 torben 2656
1215 torben 2645 if (StregKode = 'DAO NAT X-PRESS' ) or (StregKode = 'DAO NAT X+PRESS') then
1216     begin
1217     if (PanelValg1.Enabled = true) then
1218     begin
1219     PanelValg1Click(PanelValg1);
1220     end
1221     else
1222     begin
1223 torben 2659 VisAlarmSkaerm(Stregkode + ' kan ikke vælges på dette scanningsted');
1224 torben 2645 end;
1225     Stregkode := '';
1226     StregkodeST.Caption := StregKode;
1227     exit;
1228     end;
1229    
1230     if StregKode = 'Retur fra DAO' then
1231     begin
1232     if (PanelValg2.Enabled = true) then
1233     begin
1234     PanelValg2Click(PanelValg2);
1235     end
1236     else
1237     begin
1238 torben 2659 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1239 torben 2645 end;
1240     Stregkode := '';
1241     StregkodeST.Caption := StregKode;
1242     exit;
1243     end;
1244    
1245     if StregKode = 'Retur fra kunde' then
1246     begin
1247     if (PanelValg3.Enabled = true) then
1248     begin
1249     PanelValg3Click(PanelValg3);
1250     end
1251     else
1252     begin
1253 torben 2659 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1254 torben 2645 end;
1255     Stregkode := '';
1256     StregkodeST.Caption := StregKode;
1257     exit;
1258     end;
1259    
1260     if StregKode = 'DAO DIREKTE' then
1261     begin
1262     if (PanelValg4.Enabled = true) then
1263     begin
1264     PanelValg4Click(PanelValg4);
1265     end
1266     else
1267     begin
1268 torben 2659 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1269 torben 2645 end;
1270     Stregkode := '';
1271     StregkodeST.Caption := StregKode;
1272     exit;
1273     end;
1274    
1275     if StregKode = 'DAO PAKKESHOP' then
1276     begin
1277     if (PanelValg5.Enabled = true) then
1278     begin
1279     PanelValg5Click(PanelValg5);
1280     end
1281     else
1282     begin
1283 torben 2659 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1284 torben 2645 end;
1285     Stregkode := '';
1286     StregkodeST.Caption := StregKode;
1287     exit;
1288     end;
1289    
1290     if StregKode = 'Retur fra pakkeshop' then
1291     begin
1292     if (PanelValg6.Enabled = true) then
1293     begin
1294     PanelValg6Click(PanelValg6);
1295     end
1296     else
1297     begin
1298 torben 2659 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1299 torben 2645 end;
1300     Stregkode := '';
1301     StregkodeST.Caption := StregKode;
1302     exit;
1303     end;
1304    
1305 torben 2656
1306 torben 2645 if (Length(Stregkode) > 8) then
1307     begin
1308     // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet
1309 torben 3087 URLStr := Format(Config.UrlFindPakketype,[Stregkode]);
1310 torben 2645 try
1311     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
1312     WebSvar := IdHTTP1.Get(URLStr);
1313     //IdHTTP1.Disconnect();
1314     except on e:EIdConnClosedGracefully do
1315     begin
1316     // Her skal vi ikke gøre noget - men vi skal forespørge igen
1317     logTekst := 'EIdConnClosedGracefully i FindPakketype';
1318     SkrivScanningLogFil(logTekst);
1319     try
1320     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
1321     WebSvar := IdHTTP1.Get(URLStr);
1322     except on e:EIdConnClosedGracefully do
1323     begin
1324     logTekst := 'EIdConnClosedGracefully i FindPakketype igen';
1325     SkrivScanningLogFil(logTekst);
1326     WebSvar := IdHTTP1.Get(URLStr);
1327     end;
1328     end;
1329     end;
1330     end;
1331     XMLDocument1.LoadFromXML(WebSvar);
1332     try
1333     Pakketype := XMLDocument1.ChildNodes.FindNode('BogpakkePakketype').ChildNodes.FindNode('PakkeType').Text;
1334     except on e:exception do
1335     Pakketype := 'Ukendt';
1336     end;
1337     try
1338     Pakkescanningtype := XMLDocument1.ChildNodes.FindNode('BogpakkePakketype').ChildNodes.FindNode('PakkeScanningtype').Text;
1339     except on e:exception do
1340     Pakketype := 'Ukendt';
1341     end;
1342     if Pakketype = 'Ukendt' then
1343     begin
1344     Pakkescanningtype := Scanningtype;
1345     end;
1346     end
1347     else
1348     begin
1349     Pakkescanningtype := Scanningtype;
1350     end;
1351    
1352 torben 2780 if ( ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1353     or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1354     or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1355     or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1356     or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1357     or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1358 torben 2645 begin // Her skal komme en alarm og rød skærm
1359 torben 2659 VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1360 torben 2656
1361 torben 2645 exit;
1362     end;
1363    
1364 torben 3054 if (menuAutomatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1365 torben 2645 begin
1366     GemStregkode := Stregkode;
1367     if Pakketype = 'NatXpress' then
1368     begin
1369     if Scanningtype <> '1' then
1370     begin
1371     Scanningtype := '1';
1372     InitNatxpresslevering();
1373     end;
1374     end
1375     // Retur kan ikke scannes med 'Automatisk valg'
1376 torben 2656
1377 torben 2645 else if Pakketype = 'Direkte' then
1378     begin
1379     if Scanningtype <> '4' then
1380     begin
1381     Scanningtype := '4';
1382     InitDirektelevering();
1383     end;
1384     end
1385     else if Pakketype = 'Pakkeshop' then
1386     begin
1387     if Scanningtype <> '5' then
1388     begin
1389     Scanningtype := '5';
1390     InitPakkeshoplevering();
1391     end;
1392     end
1393 torben 3039 else if Pakketype = 'PakkeshopRetur' then
1394     begin
1395     if Scanningtype <> '6' then
1396     begin
1397     VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1398 torben 2656
1399 torben 3039 exit;
1400     end;
1401     end
1402    
1403    
1404 torben 2645 else
1405 torben 2659 begin
1406     // Her skal komme en alarm og rød skærm
1407 torben 2780 //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1408     VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1409 torben 2656
1410 torben 2645 exit;
1411     end;
1412     Stregkode := GemStregkode;
1413     end
1414 torben 3054 else if menuAutomatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1415 torben 2645 begin
1416 torben 2659 VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1417 torben 2656
1418 torben 2645 exit;
1419     end;
1420    
1421 torben 3054 if not menuAutomatiskvalg1.Checked then
1422 torben 2645 begin
1423     if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1424     begin
1425 torben 2656
1426 torben 2659 VisAlarmSkaerm( 'Pakke findes som pakketype: ' + Pakketype );
1427 torben 2656
1428 torben 2645 exit;
1429     end;
1430     end;
1431    
1432    
1433    
1434 torben 3055 if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then
1435 torben 2645 begin
1436 torben 2654 chkScanTjekkode.Checked := false;
1437 torben 2645 for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
1438     begin
1439     if (Stregkode=stregkoderMedTjekkodeArray[i]) then
1440     begin
1441 torben 2654 chkScanTjekkode.Checked := true;
1442 torben 2645 Scanogstjekkoden1.Checked := true;
1443     end;
1444     end;
1445     end;
1446    
1447 torben 3054 if menuNatXpress1.Checked and not Scanogstjekkoden1.Checked then
1448 torben 2645 begin
1449     // Når vi ikke kræver tjekkode er alt ok her
1450     BoghandlerStregkode := Stregkode;
1451     BoghandlerTjekkode := '';
1452     PakkeshopText1.Caption := 'Stregkode';
1453 torben 2668 btnNulstil.Visible := false;
1454 torben 2645 Stregkode := '';
1455     InitScreen();
1456     end
1457 torben 3054 else if (menuPakkeshop1.Checked or menuNatXpress1.Checked) and not Scanogstjekkoden1.Checked then
1458 torben 2645 begin
1459     // Når vi ikke kræver tjekkode er alt ok her
1460     PakkeshopStregkode := Stregkode;
1461     PakkeshopTjekkode := '-1';
1462     BoghandlerStregkode := Stregkode;
1463     BoghandlerTjekkode := '-1';
1464     PakkeshopText1.Caption := 'Stregkode';
1465 torben 2668 btnNulstil.Visible := false;
1466 torben 2645 Stregkode := '';
1467     InitScreen();
1468     end
1469 torben 3054 else if menuPakkeshop1.Checked or menuNatXpress1.Checked then
1470 torben 2645 if PakkeshopText1.Caption = 'Stregkode' then
1471     begin
1472     if length(Stregkode) > 5 then
1473     begin
1474     PakkeshopStregkode := Stregkode;
1475     BoghandlerStregkode := Stregkode;
1476     PakkeshopText1.Caption := 'Tjekkode';
1477 torben 2659
1478 torben 3090 PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
1479 torben 2659
1480 torben 2645 end
1481     else
1482     begin
1483 torben 2659 VisAlarmSkaerm( 'Du skal scanne en stregkode' );
1484 torben 2645 end;
1485     Stregkode := '';
1486     InitScreen();
1487     end
1488     else
1489     begin
1490     if length(Stregkode) = 5 then
1491     begin
1492     PakkeshopTjekkode := Stregkode;
1493     BoghandlerTjekkode := Stregkode;
1494     PakkeshopText1.Caption := 'Stregkode';
1495 torben 3054 if (menuPakkeshop1.Checked) then
1496 torben 3089 MainForm.Color := TUtils.HexToTColor(Config.FarvePakkeshoplevering);
1497 torben 3054 if (menuNatXpress1.Checked) then
1498 torben 3089 MainForm.Color := TUtils.HexToTColor(Config.FarveNormal);
1499 torben 2668 btnNulstil.Visible := false;
1500 torben 2645 end
1501     else
1502     begin
1503 torben 3054 if (menuPakkeshop1.Checked) then
1504 torben 2659 VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1505 torben 3054 if (menuNatXpress1.Checked) then
1506 torben 2659 VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1507    
1508 torben 2645 StregKode := '';
1509     StregkodeST.Caption := StregKode;
1510 torben 2660
1511 torben 2645 exit;
1512     end;
1513     Stregkode := '';
1514     InitScreen();
1515     end;
1516    
1517 torben 3054 if not menuPakkeshop1.Checked and not menuNatXpress1.Checked or (menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (menuNatXpress1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then
1518 torben 2645 begin
1519 torben 2701
1520 torben 3054 if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1521 torben 2645 StregKode := PakkeshopStregkode;
1522 torben 3054 if menuNatXpress1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1523 torben 2645 StregKode := BoghandlerStregkode;
1524     StregkodeST.Caption := StregKode;
1525     try
1526     InitScreen();
1527     HentPakkeInfoFraServer(Sted, StregKode, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, '');
1528     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
1529     // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1530     if Rutenummer = 'sql fejl' then
1531     begin // Her skal komme en alarm og rød skærm
1532 torben 2662 VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1533    
1534 torben 2645 exit;
1535     end;
1536 torben 3054 if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked) then
1537 torben 2645 begin
1538     PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1539     pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
1540     if pakkeErScannet = 0 then
1541     begin
1542     pakkeErScannet := pos('PAKKE ER SCANNET', Kommentar);
1543     end;
1544     if pakkeErScannet = 0 then
1545     begin
1546     pakkeErScannet := pos('PAKKE ER SCANNET', BoghandlerNavn);
1547     end;
1548     pakkeForkertSted := pos('burde være hos', Kommentar);
1549     tjekkodemangler := pos('Tjekkode mangler', Kommentar);
1550     if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1551     begin
1552 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
1553 torben 2668 btnNulstil.Visible := true;
1554 torben 2645 MainForm.Color := clRed;
1555     end;
1556     end;
1557 torben 3054 if ( menuNatXpress1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then
1558 torben 2645 begin
1559 torben 2682 MainForm.Color := TUtils.HexToTColor(Farve);
1560 torben 3055 if menuStorePakker.Checked then
1561 torben 2645 begin
1562 torben 3090 PlaySound(PWideChar(Config.ScannetOkStorLyd));
1563 torben 2645 end
1564     else
1565     begin
1566 torben 3090 PlaySound(PWideChar(Config.ScannetOkLyd));
1567 torben 2645 end;
1568 torben 2668 btnNulstil.Visible := false;
1569 torben 2645 end
1570 torben 3054 else if (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1571 torben 2645 begin
1572 torben 2682 MainForm.Color := TUtils.HexToTColor(Farve);
1573 torben 3055 if menuStorePakker.Checked then
1574 torben 2645 begin
1575 torben 3090 PlaySound(PWideChar(Config.ScannetOkStorLyd));
1576 torben 2645 end
1577     else
1578     begin
1579 torben 3090 PlaySound(PWideChar(Config.ScannetOkLyd));
1580 torben 2645 end;
1581 torben 2668 btnNulstil.Visible := false;
1582 torben 2645 end
1583     else if Copy(Kommentar,1,8) = 'OPRETTET' then
1584     begin
1585 torben 2659 VisAlarmSkaerm( 'Pakke ' + PakkeshopStregkode + ' skal gemmes på lager indtil data modtages' );
1586 torben 2645 end
1587     else if Kommentar = StregKode then // budlevering til 'Ukendt tur'
1588     begin
1589     end
1590     else
1591     begin
1592 torben 2662 VisAlarmSkaerm('');
1593 torben 2645 end;
1594 torben 2701
1595 torben 2668 if not btnNulstil.Visible then
1596 torben 2645 begin
1597 torben 2659
1598 torben 3054 If (menuDaoDirekte1.Checked) then
1599 torben 2645 begin
1600 torben 3055 if menuStorePakker.Checked then
1601 torben 2645 begin
1602 torben 3090 PlaySound(PWideChar(Config.ScannetOkStorLyd));
1603 torben 2645 end
1604     else
1605     begin
1606 torben 3090 PlaySound(PWideChar(Config.ScannetOkLyd));
1607 torben 2645 end;
1608     InitLillePakke();
1609     end;
1610     end;
1611 torben 2659
1612 torben 2645 SletStregkodelinieFraListboks2(StregKode);
1613 torben 2659
1614 torben 2645 PakkeshopStregkode := '';
1615     PakkeshopTjekkode := '';
1616     BoghandlerStregkode := '';
1617     BoghandlerTjekkode := '';
1618     finally
1619     Stregkode := '';
1620     end
1621     end
1622     end
1623     else
1624     begin
1625     if (Key <> #22) then
1626     begin
1627     Stregkode := Stregkode + Key;
1628     end;
1629     StregkodeST.Caption := StregKode;
1630     end;
1631    
1632     if Key = #8 then // backspace key
1633     begin
1634     StregKode := LeftStr(StregKode,Length(StregKode)-2);
1635     end;
1636    
1637     if Key = #27 then // esc key
1638     begin
1639     Stregkode := '';
1640     end;
1641    
1642     Key := #0;
1643    
1644 torben 2794
1645    
1646    
1647    
1648    
1649 torben 2656 end; //End of OnKeyPress
1650 torben 2645
1651 torben 2794
1652    
1653 torben 2645 procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1654     const
1655     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
1656     var
1657     WebSvar : String;
1658     URLStr : String;
1659     begin
1660 torben 3087 if Config.UrlSendPrograminfo <> '' then
1661 torben 2645 begin
1662 torben 3087 URLStr := Format(Config.UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);
1663 torben 2645 try
1664     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
1665     WebSvar := IdHTTP1.Get(URLStr);
1666     //IdHTTP1.Disconnect();
1667     except on e:exception do
1668     begin
1669     // ShowMessage(e.Message);
1670     // raise exception.CreateFmt('Fejl i forbindelse til server: %s',[e.Message]);
1671     logTekst := 'Der er opstået en fejl i kommunikationen med serveren.' + crlf + crlf + 'Programmet afsluttes... ' + crlf + crlf + 'Program rutine: SendTilServeren' + crlf + 'Fejl: ' + e.Message;
1672     ShowMessage(logTekst);
1673     SkrivScanningLogFil(logTekst);
1674     // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet
1675 torben 3087 Config.UrlSendPrograminfo := '';
1676 torben 2645 Application.Terminate;
1677     end;
1678     end;
1679     if (WebSvar <> '') and (pos('Error', WebSvar) > 0) then
1680     begin
1681     ShowMessage(WebSvar);
1682     end;
1683     end;
1684     end;
1685    
1686     procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);
1687     var
1688     i : Integer;
1689     wrkAntal : String;
1690     wrkAntalIdag, wrkAntalSenere : Integer;
1691    
1692 torben 2656
1693 torben 2645 begin
1694 torben 3054 if menuDaoDirekte1.Checked or menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked or menuNatXpress1.Checked or menuIndlevering.Checked then
1695 torben 2645 begin
1696     for i := ListBox2.items.count-1 downto 0 do
1697     if pos(StregKode,ListBox2.items[i]) <> 0 then
1698     begin
1699 torben 3056 wrkAntalSenere := 0;//initial Value
1700 torben 2656
1701 torben 2645 // Ajourføring af tæller for manglende pakker (scanninger)
1702     wrkAntal := StaticTextManglendePakker.Caption;
1703     if (pos('/', wrkAntal) > 0) then // både pakker idag og senere
1704     begin
1705     wrkAntal := wrkAntal + '/'; // tilføjer '/' sidst i feltet af hensyn til split funktionen
1706 torben 2682 wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1707 torben 2645 // ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1708     // ShowMessage(SPLIT('data/another/','/',3));
1709     // ShowMessage(SPLIT('data/another','/',3));
1710 torben 2682 wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1711 torben 2645 end
1712     else // kun idag
1713     begin
1714     wrkAntalIdag := StrToInt(wrkAntal);
1715     end;
1716     if pos(StregKode + ' (',ListBox2.items[i]) <> 0 then // pakke til senere levering
1717     begin
1718     //ShowMessage('Senere ' + IntToStr(wrkAntalIdag) + ' ' + IntToStr(wrkAntalSenere));
1719     wrkAntalSenere := wrkAntalSenere - 1;
1720     // StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag) + '/' + IntToStr(wrkAntalSenere);
1721     end
1722     else
1723     begin
1724     // ShowMessage('Idag');
1725     wrkAntalIdag := wrkAntalIdag - 1;
1726     // StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1727     end;
1728     if (wrkAntalSenere > 0) then
1729     begin
1730     StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag) + '/' + IntToStr(wrkAntalSenere);
1731     end
1732     else
1733     begin
1734     StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1735     end;
1736    
1737     if (Scanningtype = '1') then
1738     begin
1739     PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1740     if (wrkAntalIdag + wrkAntalSenere > 0) then
1741     begin
1742     PanelManglendePakker1.Visible := true;
1743     end
1744     else
1745     begin
1746     PanelManglendePakker1.Visible := false;
1747     end;
1748     end;
1749    
1750     if (Scanningtype = '2') then
1751     begin
1752     PanelManglendePakker2.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1753     if (wrkAntalIdag + wrkAntalSenere > 0) then
1754     begin
1755     PanelManglendePakker2.Visible := true;
1756     end
1757     else
1758     begin
1759     PanelManglendePakker2.Visible := false;
1760     end;
1761     end;
1762    
1763     if (Scanningtype = '3') then
1764     begin
1765     PanelManglendePakker3.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1766     if (wrkAntalIdag + wrkAntalSenere > 0) then
1767     begin
1768     PanelManglendePakker3.Visible := true;
1769     end
1770     else
1771     begin
1772     PanelManglendePakker3.Visible := false;
1773     end;
1774     end;
1775    
1776     if (Scanningtype = '4') then
1777     begin
1778     PanelManglendePakker4.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1779     if (wrkAntalIdag + wrkAntalSenere > 0) then
1780     begin
1781     PanelManglendePakker4.Visible := true;
1782     end
1783     else
1784     begin
1785     PanelManglendePakker4.Visible := false;
1786     end;
1787     end;
1788    
1789     if (Scanningtype = '5') then
1790     begin
1791     PanelManglendePakker5.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1792     if (wrkAntalIdag + wrkAntalSenere > 0) then
1793     begin
1794     PanelManglendePakker5.Visible := true;
1795     end
1796     else
1797     begin
1798     PanelManglendePakker5.Visible := false;
1799     end;
1800     end;
1801    
1802     if (Scanningtype = '6') then
1803     begin
1804     PanelManglendePakker6.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1805     if (wrkAntalIdag + wrkAntalSenere > 0) then
1806     begin
1807     PanelManglendePakker6.Visible := true;
1808     end
1809     else
1810     begin
1811     PanelManglendePakker6.Visible := false;
1812     end;
1813     end;
1814 torben 2704
1815 torben 2645 ListBox2.items.delete(i);
1816     end;
1817     end;
1818     end;
1819    
1820     procedure TMainForm.StartScreen();
1821     begin
1822     if Org_RuteNummerST = '' then
1823     Org_RuteNummerST := RuteNummerST.Caption;
1824     if Org_BoghandlerNavnST = '' then
1825     Org_BoghandlerNavnST := BoghandlerNavnST.Caption;
1826     if Org_KommentarST = '' then
1827     Org_KommentarST := KommentarST.Caption;
1828     RuteNummerST.Caption := Org_RuteNummerST;
1829     BoghandlerNavnST.Caption := Org_BoghandlerNavnST;
1830     KommentarST.Caption := Org_KommentarST;
1831     end;
1832    
1833     procedure TMainForm.InitScreen();
1834     begin
1835     RuteNummerST.Caption := '';
1836     KommentarST.Caption := '';
1837     BoghandlerNavnST.Caption := '';
1838     end;
1839    
1840     procedure TMainForm.InitBladhus();
1841    
1842     begin
1843     Altidprintepakkelabel1.Enabled := false;
1844 torben 3054 menuNatXpress1.Visible := false;
1845     menuNatxpressReturDAO1.Visible := false;
1846     menuNatxpressReturfraKunde1.Visible := false;
1847 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
1848     ListBox1.Visible := true;
1849     // TestFunktionen := '1';
1850 torben 2704
1851 torben 3054 if menuDaoDirekte1.Checked then
1852 torben 2645 begin
1853     IndlesScanningLogFil();
1854     end;
1855    
1856     //
1857     // Bladhus ***
1858     //
1859     case BladhusSted of
1860     01 :
1861     begin; // NS
1862     Testprinter1.Visible := true;
1863 torben 2691 BtnDownloadKontrolfil.Enabled := true;
1864 torben 2699 BtnOpdaterListen.Enabled := true;
1865 torben 2645 IdFTP1.Passive := true;
1866     IdFTP1.PassiveUseControlHost := true;
1867     BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
1868     BladhusKontrolfil_lokal := 'RuteKontrol.txt';
1869     DownloadBladhusKontrolfil();
1870     IndlesManglendeScanninger();
1871     end;
1872     02 :
1873     begin; // BK
1874     Testprinter1.Visible := true;
1875 torben 3055 menuSmaaPakker.Enabled := true;
1876     menuStorePakker.Enabled := true;
1877 torben 2655 radioStorPakke.Enabled := true;
1878     radioLillePakke.Enabled := true;
1879 torben 2691 BtnDownloadKontrolfil.Enabled := false; // kontrolfil bruges ikke her
1880 torben 2699 BtnOpdaterListen.Enabled := true;
1881 torben 2645 IdFTP1.Passive := true;
1882     IdFTP1.PassiveUseControlHost := true;
1883     IndlesManglendeScanninger();
1884     end;
1885     03 :
1886     begin; // FD
1887     Testprinter1.Visible := true;
1888     if (getProddag() = 'lørdag') then
1889     begin
1890 torben 2696 BtnDownloadRuteskiftFil.Visible := false;
1891 torben 2645 end
1892     else
1893     begin
1894 torben 2696 BtnDownloadRuteskiftFil.Visible := false;
1895 torben 2645 end;
1896 torben 2691 BtnDownloadKontrolfil.Enabled := true;
1897 torben 2699 BtnOpdaterListen.Enabled := true;
1898 torben 2645 IdFTP1.Passive := true;
1899     IdFTP1.PassiveUseControlHost := true;
1900     BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
1901     BladhusRuteskiftfil_lokal := 'RuteSkift.txt';
1902     if (getProddag() = 'lørdag') then
1903     begin
1904     //DownloadBladhusRuteskiftfil(); // Skal ikke bruges endnu
1905     end;
1906     BladhusKontrolfil_server := 'frafd/RuteKontrol.txt';
1907     BladhusKontrolfil_lokal := 'RuteKontrol.txt';
1908     DownloadBladhusKontrolfil();
1909     IndlesManglendeScanninger();
1910     end;
1911     04 : begin; // DBK
1912     Testprinter1.Visible := true;
1913 torben 3055 menuSmaaPakker.Enabled := true;
1914     menuStorePakker.Enabled := true;
1915 torben 2655 radioStorPakke.Enabled := true;
1916     radioLillePakke.Enabled := true;
1917 torben 2691 BtnDownloadKontrolfil.Enabled := false; // kontrolfil bruges ikke her
1918 torben 2699 BtnOpdaterListen.Enabled := true;
1919 torben 2645 IdFTP1.Passive := true;
1920     IdFTP1.PassiveUseControlHost := true;
1921     end;
1922     else
1923     //ShowMessage('Ukendt Bladhus sted ???') ;
1924     end;
1925    
1926     end;
1927    
1928     procedure TMainForm.HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
1929     var
1930     WebSvar : String;
1931     URLStr : String;
1932     pakkestorrelse : String;
1933     PrintNyLabelInteger : Integer;
1934 torben 2678
1935     PakkeshopLabel: TPakkeshopLabel;
1936 torben 2645 begin
1937 torben 2655 if radioStorPakke.Checked then
1938 torben 2645 begin
1939     pakkestorrelse := 'Stor';
1940     end;
1941 torben 2655 if radioLillePakke.Checked then
1942 torben 2645 begin
1943     pakkestorrelse := 'Lille';
1944     end;
1945 torben 2668
1946    
1947 torben 3054 if menuNatXpress1.Checked then
1948 torben 2645 begin
1949     if (BoghandlerTjekkode = '') then
1950     begin
1951     BoghandlerTjekkode := '-1';
1952     end;
1953 torben 3087 URLStr := Format(Config.UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
1954 torben 2645 end
1955 torben 3054 else if menuNatxpressReturDAO1.Checked then
1956 torben 2645 begin
1957 torben 3087 URLStr := Format(Config.UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
1958 torben 2645 end
1959 torben 3054 else if menuNatxpressReturfraKunde1.Checked then
1960 torben 2645 begin
1961 torben 3087 URLStr := Format(Config.UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
1962 torben 2645 end
1963 torben 3054 else if menuDaoDirekte1.Checked then
1964 torben 2645 begin
1965 torben 3087 URLStr := Format(Config.UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
1966 torben 2645 end
1967 torben 3054 else if menuPakkeshop1.Checked then
1968 torben 2645 begin
1969 torben 3087 URLStr := Format(Config.UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
1970 torben 2645 end
1971 torben 3054 else if menuPakkeshopRetur1.Checked then
1972 torben 2645 begin
1973 torben 3087 URLStr := Format(Config.UrlReturPakkeshop,[Sted, PakkeNr]);
1974 torben 2645 end
1975 torben 2668 else if menuIndlevering.Checked then
1976     begin
1977 torben 3087 URLStr := Format(Config.UrlIndleveringsPakke,[Sted, PakkeNr]);
1978 torben 2668 end
1979 torben 2645 else
1980     begin
1981     exit;
1982     end;
1983 torben 2794
1984     if chkForstorTilDirekte.Checked then // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
1985     begin
1986 torben 3087 URLStr := Format(Config.URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
1987 torben 2794 end;
1988    
1989 torben 2645 try
1990     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
1991     WebSvar := IdHTTP1.Get(URLStr);
1992     //IdHTTP1.Disconnect();
1993     except on e:EIdConnClosedGracefully do
1994     begin
1995     // Her skal vi ikke gøre noget - men vi skal forespørge igen
1996     logTekst := 'EIdConnClosedGracefully i HentPakkeInfoFraServer';
1997     SkrivScanningLogFil(logTekst);
1998     try
1999     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
2000     WebSvar := IdHTTP1.Get(URLStr);
2001     except on e:EIdConnClosedGracefully do
2002     begin
2003     logTekst := 'EIdConnClosedGracefully i HentPakkeInfoFraServer igen';
2004     SkrivScanningLogFil(logTekst);
2005     WebSvar := IdHTTP1.Get(URLStr);
2006     end;
2007     end;
2008     end;
2009     end;
2010 torben 2794
2011 torben 2645 XMLDocument1.LoadFromXML(WebSvar);
2012     try
2013 torben 3054 if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2014 torben 2645 begin
2015     RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2016     Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2017     BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;
2018     BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2019     PrintNyLabel := False;
2020 torben 2656
2021 torben 3054 if menuPakkeshop1.Checked then
2022 torben 2645 begin
2023     try
2024     PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2025     except on e:exception do
2026     PrintNyLabelInteger := 0;
2027     end;
2028     if (PrintNyLabelInteger = 1) then
2029     begin
2030     PrintNyLabel := True;
2031     end;
2032     end;
2033     end
2034 torben 2794 else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2035 torben 2668 begin
2036    
2037    
2038    
2039    
2040     Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2041     if (Kommentar = 'Ok') then
2042     begin
2043     PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2044     PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2045 torben 2703 RuteNummer := PakkeshopLabel.Koreliste + ' -> ' + PakkeshopLabel.PakkeshopTurid;
2046 torben 2701 Stregkode := PakkeshopLabel.Stregkode;
2047 torben 2668
2048 torben 3077 LabelPrint.PrintFuldPakkeLabel( PakkeshopLabel );
2049 torben 2794 chkForstorTilDirekte.Checked := false;
2050 torben 2668
2051     end;
2052    
2053    
2054     end
2055 torben 2645 else
2056     begin
2057     RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
2058     Koreliste := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Koreliste').Text;
2059     Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2060     BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2061     Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2062 torben 3054 if menuDaoDirekte1.Checked then
2063 torben 2645 begin
2064     try
2065     SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
2066     except on e:exception do
2067     SmsKode := '';
2068     end;
2069     try
2070     DBKbane := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('DBKbane').Text;
2071     except on e:exception do
2072     DBKbane := '';
2073     end;
2074     end;
2075     PrintNyLabel := False;
2076     try
2077     PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('PrintPakkeLabel').Text);
2078     except on e:exception do
2079     PrintNyLabelInteger := 0;
2080     end;
2081     PrintNyLabel := False;
2082     if (PrintNyLabelInteger = 1) then
2083     begin
2084     PrintNyLabel := True;
2085     end;
2086     end;
2087 torben 2668
2088    
2089 torben 2645 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2090     begin
2091     if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2092     begin
2093 torben 3093 Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2094 torben 3092 //PrintNyLabel := False; //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
2095 torben 2645 end;
2096     end
2097 torben 3073 else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) And (Leveringssted <> '') then
2098 torben 2645 begin
2099 torben 3093 Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2100 torben 3092 //PrintNyLabel := False; //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
2101 torben 2645 end;
2102     except on e:exception do
2103     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
2104     end;
2105     end;
2106    
2107    
2108     procedure TMainForm.UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghNr : String);
2109     var
2110     List1Msg, List1Pakkestorrelse : String;
2111     begin
2112     RuteNummerST.Caption := RuteNummer;
2113     KommentarST.Caption := Kommentar;
2114     KommentarST.Caption := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2115     KommentarST.Caption := StringReplace(KommentarST.Caption, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2116     //Label1.Caption := Kommentar; // bruges hvis der skal vises linieskift - det kan man ikke i en staticText
2117     BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2118     List1msg := TimeToStr(now) + '; ';
2119 torben 3054 if menuPakkeshop1.Checked then
2120 torben 2645 List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2121     List1Pakkestorrelse := '';
2122 torben 2655 if radioStorPakke.Checked then
2123 torben 2645 begin
2124     List1Pakkestorrelse := 'Stor pakke';
2125     end;
2126 torben 2655 if radioLillePakke.Checked then
2127 torben 2645 begin
2128     List1Pakkestorrelse := 'Lille pakke';
2129     end;
2130     List1msg := List1msg + BoghandlerNavn + '; ';
2131 torben 3054 if menuNatxpressReturDAO1.Checked then
2132 torben 2645 begin
2133     List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2134     end;
2135 torben 3054 if menuNatxpressReturfraKunde1.Checked then
2136 torben 2645 begin
2137     List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2138     end;
2139 torben 3054 if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2140 torben 2645 List1msg := List1msg + '; ' + List1Pakkestorrelse;
2141     if length(BoghNr) > 0 then
2142     begin
2143     List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2144     end;
2145 torben 3054 if menuDaoDirekte1.Checked then
2146 torben 2645 begin
2147     List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2148 torben 2655 if (radioStorPakke.Checked) then
2149 torben 2645 begin
2150     List1msg := List1msg + '; Stor pakke';
2151     end;
2152 torben 2655 if (radioLillePakke.Checked) then
2153 torben 2645 begin
2154     List1msg := List1msg + '; Lille pakke';
2155     end;
2156     end;
2157 torben 3054 if menuPakkeshopRetur1.Checked then
2158 torben 2645 begin
2159     List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2160     end;
2161 torben 3054 if menuNatXpress1.Checked then
2162 torben 2645 begin
2163     if (Kommentar = '***** Kommentar *****') // fra test printer funktionen
2164     or (BoghandlerNavn = 'Forbindelse ok') // fra test forbindelse funktionen
2165     or (BoghandlerNavn = 'Fejl i forbindelse til server') then // fra test forbindelse funktionen
2166     begin
2167     List1msg := List1msg + '; ' + Stregkode + '; ' + Kommentar;
2168     end
2169     else
2170     begin
2171     List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2172     end;
2173     end;
2174 torben 2701 if menuIndlevering.Checked then
2175     begin
2176     List1Msg := Stregkode;
2177     end;
2178    
2179    
2180 torben 2645 ListBox1.Items.Insert(0,List1Msg);
2181     logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2182     SkrivScanningLogFil(logTekst);
2183     end;
2184    
2185 torben 2697 procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2186 torben 2645 begin
2187     UploadLogfilTilDAO();
2188     UploadInifilTilDAO();
2189     ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
2190     end;
2191    
2192     procedure TMainForm.PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
2193     var
2194     ClickedOK: Boolean;
2195     pakkeErScannet : Integer;
2196     pakkeForkertSted : Integer;
2197     List1Msg : String;
2198     kontrolKoreliste : string;
2199     nytRuteNummer, nyFarve : String;
2200     begin
2201 torben 3054 if menuDaoDirekte1.Checked then
2202 torben 2682 RuteNummerST.Color := TUtils.HexToTColor(Farve);
2203 torben 2645
2204     pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2205     if pakkeErScannet = 0 then
2206     begin
2207     pakkeErScannet := pos('PAKKE ER SCANNET', Kommentar);
2208     end;
2209     if pakkeErScannet = 0 then
2210     begin
2211     pakkeErScannet := pos('PAKKE ER SCANNET', BoghandlerNavn);
2212     end;
2213     pakkeForkertSted := pos('burde være hos', Kommentar);
2214    
2215 torben 2656
2216 torben 2653 if Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) ) then
2217 torben 2656
2218 torben 2645 begin
2219     if (RuteNummer = 'Ukendt') then
2220     begin
2221     repeat
2222     begin
2223     ClickedOK := InputQuery('Ukendt pakke', 'Indtast kundenummer', BoghandlerNummer);
2224     end
2225     until (ClickedOK and (Length(BoghandlerNummer) > 2) and (Length(BoghandlerNummer) < 9)) or not ClickedOK;
2226     if not ClickedOK then
2227     begin
2228     exit;
2229     end;
2230     if (Length(BoghandlerNummer) > 2) then
2231     begin
2232     InitScreen();
2233     HentPakkeInfoFraServer(Sted, StregKode, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2234     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghandlerNummer);
2235     end;
2236     end;
2237     end
2238     else
2239 torben 3054 if menuDaoDirekte1.Checked then
2240 torben 2645 begin
2241     if (BoghandlerNavn = 'Ukendt pakke') then
2242     begin
2243     PrintNyLabel := false;
2244 torben 2656
2245 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
2246 torben 2645 MainForm.Color := clRed;
2247 torben 2668 btnNulstil.Visible := true;
2248 torben 2656
2249 torben 2645 end
2250     else
2251     begin
2252     nytRuteNummer := retRutenummer(RuteNummer);
2253     if (nytRuteNummer <> RuteNummer) then
2254     begin
2255     PrintNyLabel := true;
2256     RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2257     nyFarve := Farve;
2258 torben 2682 RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2259 torben 2645 List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2260     RuteNummer := nytRuteNummer;
2261     ListBox1.Items.Insert(0,List1Msg);
2262     logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2263     SkrivScanningLogFil(logTekst);
2264 torben 2656
2265 torben 3090 if (Config.PrinterNavn = 'Ingen') then
2266 torben 2645 begin
2267     PrintNyLabel := false;
2268     end;
2269 torben 2656
2270 torben 2645 if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2271     begin
2272 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
2273 torben 2645 MainForm.Color := clRed;
2274 torben 2668 btnNulstil.Visible := true;
2275 torben 2645 end;
2276 torben 2656
2277 torben 2645 end;
2278     kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2279     if (kontrolKoreliste <> RuteNummer) then
2280     begin
2281     PrintNyLabel := true;
2282     List1msg := TimeToStr(now) + '; ' + BoghandlerNavn + '; ' + 'Forkert køreliste ' + '; ' + Koreliste + ' -> ' + kontrolKoreliste;
2283     if (length(kontrolKoreliste) > 20) then // Skal ikke printe label når 'Køreliste ikke i kontrolfil'
2284     begin
2285     PrintNyLabel := false;
2286     RuteNummerST.Caption := RuteNummerST.Caption + ' -> ' + kontrolKoreliste;
2287     end
2288     else
2289     begin
2290     RuteNummerST.Caption := RuteNummerST.Caption + ' -> Ny køreliste: ' + kontrolKoreliste;
2291     end;
2292     ListBox1.Items.Insert(0,List1Msg);
2293     logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2294     SkrivScanningLogFil(logTekst);
2295 torben 2656
2296 torben 2645 if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2297     begin
2298 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
2299 torben 2645 MainForm.Color := clRed;
2300 torben 2668 btnNulstil.Visible := true;
2301 torben 2645 end;
2302 torben 2656
2303 torben 2645 end;
2304     end;
2305    
2306     end;
2307    
2308 torben 3054 if menuDaoDirekte1.Checked then
2309 torben 2645 begin
2310     case BladhusSted of
2311     00 : begin;
2312     // 20150304: start
2313     // if PrintNyLabel and (kontrolKoreliste <> '') or (RuteNummer = 'Rutenr') then
2314     // // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2315     // // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2316     // // Det holder dog ikke for DAO DIREKTE fordi Schenker altid skal printes, da deres label mangler DAO ruteoplysninger553915076624451294
2317     if PrintNyLabel or (RuteNummer = 'Rutenr') then
2318     // 20150304: slut
2319     begin
2320 torben 2705 LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2321 torben 2645 end;
2322     end;
2323     01 : begin;
2324 torben 2661 if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2325 torben 2645 // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2326     // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2327     begin
2328 torben 2705 LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2329 torben 2645 end;
2330     end;
2331     02 : begin;
2332     if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2333     begin
2334 torben 2705 LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2335 torben 2645 end;
2336     end;
2337     03 : begin;
2338 torben 2661 if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2339 torben 2645 // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2340     // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2341     begin
2342 torben 2705 LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2343 torben 2645 end;
2344     end;
2345     04 : begin;
2346     if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2347     begin
2348 torben 2705 LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2349 torben 2645 end;
2350     end;
2351     else
2352     ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
2353     end;
2354     end;
2355    
2356     // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her
2357 torben 3054 if menuNatXpress1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
2358 torben 2645 begin
2359     exit;
2360     end;
2361    
2362 torben 3054 if menuDaoDirekte1.Checked or ( Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then
2363 torben 2645 begin
2364     end
2365     else
2366     begin
2367 torben 3090 if ( (Config.PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2368 torben 2645 begin
2369     logTekst := 'Printer label type ';
2370 torben 2652 if (chkAltidPrintLabel.Checked) then
2371 torben 2645 begin
2372     logTekst := logTekst + 'Alle ';
2373     end
2374     else if (PrintNyLabel) then
2375     begin
2376     logTekst := logTekst + 'Rute ';
2377     end
2378     else
2379     begin
2380     logTekst := logTekst + 'Ukendt ';
2381     end;
2382     logTekst := logTekst + ' for '+BoghandlerNavn;
2383     SkrivScanningLogFil(logTekst);
2384 torben 2705
2385     LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2386    
2387 torben 2645 end;
2388     end;
2389    
2390     end;
2391    
2392 torben 2656
2393    
2394 torben 2655 procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2395 torben 2645 begin
2396 torben 3055 menuStorePakker.Checked := true;
2397 torben 2655 radioStorPakke.Checked := true;
2398 torben 2645 end;
2399    
2400 torben 2655 procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2401 torben 2645 begin
2402 torben 3055 menuSmaaPakker.Checked := true;
2403 torben 2655 radioLillePakke.Checked := true;
2404 torben 2645 end;
2405    
2406    
2407 torben 2653 procedure TMainForm.chkSporgEfterKundeClick(Sender: TObject);
2408 torben 2645 begin
2409 torben 2653 if chkSporgEfterKunde.Checked then
2410 torben 2645 begin
2411     Sprgefterboghandlernummer1.Checked := true;
2412     end
2413     else
2414     begin
2415     Sprgefterboghandlernummer1.Checked := false;
2416     end;
2417     end;
2418    
2419    
2420 torben 2652 procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2421 torben 2645 begin
2422 torben 2652 if chkAltidPrintLabel.Checked then
2423 torben 2645 begin
2424     Altidprintepakkelabel1.Checked := true;
2425     end
2426     else
2427     begin
2428     Altidprintepakkelabel1.Checked := false;
2429     end;
2430    
2431     end;
2432    
2433 torben 2654 procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2434 torben 2645 begin
2435 torben 2654 if chkScanTjekkode.Checked then
2436 torben 2645 begin
2437     Scanogstjekkoden1.Checked := true;
2438     end
2439     else
2440     begin
2441     Scanogstjekkoden1.Checked := false;
2442     end;
2443     end;
2444    
2445 torben 3054 procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2446 torben 2645 begin
2447     Scanningtype := '5';
2448     InitPakkeshoplevering();
2449     NulstilAutomatiskValg();
2450     end;
2451    
2452     procedure TMainForm.NulstilAutomatiskValg();
2453     begin
2454 torben 3054 menuAutomatiskvalg1.Checked := false;
2455 torben 2645 PanelValgA.Color := clBtnFace;
2456     PanelValgA.Font.Color := clWindowText;
2457 torben 2656
2458 torben 2645 if (SpecialVersionSted = '01')
2459 torben 2656 or (SpecialVersionSted = '02')
2460     or (SpecialVersionSted = '03')
2461     or (SpecialVersionSted = '04') then
2462 torben 2645 begin
2463     // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)
2464     PanelValgA.Enabled := false;
2465     PanelValgA.Font.Color := clInactiveCaption;
2466 torben 3054 menuAutomatiskvalg1.Enabled := false;
2467 torben 2645 end;
2468     // 20150317: slut
2469     end;
2470    
2471     procedure TMainForm.TjekkerUrls();
2472     const
2473     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2474     var
2475     urlFejl : Integer;
2476     begin
2477     urlFejl := 0;
2478     //UpdateScreen('', '', 'Tjekker forbindelsen...', '', ''); // virker ikke
2479     ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');
2480    
2481 torben 2703 try
2482     // Tjekker urls
2483     logTekst := 'Tjekker urls.';
2484     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2485     SkrivScanningLogFil(logTekst);
2486 torben 2645
2487    
2488    
2489 torben 2703 // Tjekker UrlNormal
2490     if PanelValg1.Enabled = true then
2491     begin
2492 torben 3087 TjekkerEnkeltUrl('UrlNormal', Config.UrlNormal, urlFejl);
2493 torben 2703 end;
2494 torben 2645
2495 torben 2703 // Tjekker UrlReturDAO
2496     if PanelValg2.Enabled = true then
2497     begin
2498 torben 3087 TjekkerEnkeltUrl('UrlReturDAO', Config.UrlReturDAO, urlFejl);
2499 torben 2703 end;
2500 torben 2645
2501 torben 2703 // Tjekker UrlReturBoghandler
2502     if PanelValg3.Enabled = true then
2503     begin
2504 torben 3087 TjekkerEnkeltUrl('UrlReturBoghandler', Config.UrlReturBoghandler, urlFejl);
2505 torben 2703 end;
2506 torben 2645
2507 torben 2703 // Tjekker UrlBudlevering
2508     if PanelValg4.Enabled = true then
2509     begin
2510 torben 3087 TjekkerEnkeltUrl('UrlBudlevering', Config.UrlBudlevering, urlFejl);
2511 torben 2703 end;
2512 torben 2645
2513 torben 2703 // Tjekker UrlPakkeshoplevering
2514     if PanelValg5.Enabled = true then
2515     begin
2516 torben 3087 TjekkerEnkeltUrl('UrlPakkeshoplevering', Config.UrlPakkeshoplevering, urlFejl);
2517 torben 2703 end;
2518 torben 2645
2519 torben 2703 // Tjekker UrlReturPakkeshop
2520     if PanelValg6.Enabled = true then
2521     begin
2522 torben 3087 TjekkerEnkeltUrl('UrlReturPakkeshop', Config.UrlReturPakkeshop, urlFejl);
2523 torben 2703 end;
2524 torben 2645
2525 torben 2703 // Tjekker UrlManglendeScanninger
2526     if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2527     begin
2528 torben 3087 TjekkerEnkeltUrl('UrlManglendeScanninger', Config.UrlManglendeScanninger, urlFejl);
2529 torben 2703 end;
2530 torben 2645
2531 torben 2703 // Tjekker UrlPakkeshopManglendeScanninger
2532     if PanelValg5.Enabled = true then
2533     begin
2534 torben 3087 TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', Config.UrlPakkeshopManglendeScanninger, urlFejl);
2535 torben 2703 end;
2536 torben 2689
2537 torben 2703 // Tjekker UrlPakkeshopManglendeReturScanninger
2538     if PanelValg6.Enabled = true then
2539     begin
2540 torben 3087 TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', Config.UrlPakkeshopManglendeReturScanninger, urlFejl);
2541 torben 2703 end;
2542 torben 2689
2543 torben 2703 // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2544     if PanelValg7.Enabled = true then
2545     begin
2546 torben 3087 TjekkerEnkeltUrl('UrlIndleveringsPakke', Config.UrlIndleveringsPakke, urlFejl);
2547     TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', Config.UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2548 torben 2703 end;
2549 torben 2645
2550 torben 2703 // Tjekker UrlEKLoverforsel
2551     if PanelValg1.Enabled = true then
2552     begin
2553 torben 3087 TjekkerEnkeltUrl('UrlEKLoverforsel', Config.UrlEKLoverforsel, urlFejl);
2554 torben 2703 end;
2555 torben 2656
2556 torben 2645
2557 torben 2703 // Tjekker UrlEKLoverforselPakkeshop
2558     if PanelValg5.Enabled = true then
2559     begin
2560 torben 3087 TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', Config.UrlEKLoverforselPakkeshop, urlFejl);
2561 torben 2703 end;
2562 torben 2656
2563 torben 2645
2564 torben 2703 // Tjekker UrlFindPakketype
2565 torben 3087 TjekkerEnkeltUrl('UrlFindPakketype', Config.UrlFindPakketype, urlFejl);
2566 torben 2645
2567 torben 2703 // Tjekker UrlSendPrograminfo
2568 torben 3087 TjekkerEnkeltUrl('UrlSendPrograminfo', Config.UrlSendPrograminfo, urlFejl);
2569 torben 2645
2570 torben 2703
2571    
2572     logTekst := 'urls er ok';
2573     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2574     SkrivScanningLogFil(logTekst);
2575    
2576     Except
2577 torben 3090 Config.TjekUrls := '-'; // markerer at der var fejl
2578 torben 2703
2579     end;
2580 torben 2645 end;
2581    
2582 torben 2703 procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2583     const
2584     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2585     begin
2586     if TUtils.CheckUrl(Url) then
2587    
2588     begin
2589     logTekst := UrlNavn + ' accepteret: ' + Url;
2590     SkrivScanningLogFil(logTekst);
2591     end
2592     else
2593     begin
2594     inc(urlFejl); // Optæller antal fejl
2595     logTekst := UrlNavn + ' svarer ikke: ' + Url;
2596     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2597 torben 3090 if Config.TjekUrls = '1' then
2598 torben 2703 begin
2599     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2600     end;
2601    
2602     SkrivScanningLogFil(logTekst);
2603    
2604 torben 3090 if Config.TjekUrls = '1' then
2605 torben 2703 begin
2606     ShowMessage(logTekst);
2607 torben 3087 Config.UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2608 torben 2703 Application.Terminate;
2609    
2610     raise Exception.Create('UrlFejl');
2611    
2612     end;
2613     end;
2614    
2615     end;
2616    
2617    
2618    
2619 torben 2645 procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2620     var
2621     SR: TSearchRec;
2622     dt: TDateTime;
2623     CreationTime: TFileTime;
2624     dtCreation: TDateTime;
2625     BemTxt : String;
2626     begin
2627     logTekst := 'Logfiler tjekkes for sletning.';
2628     SkrivScanningLogFil(logTekst);
2629     FileList.Insert(0,logTekst);
2630     if FindFirst(Path + '*.log', faAnyFile, SR) = 0 then // finder log filer
2631     begin
2632     repeat
2633     if (SR.Attr <> faDirectory) then
2634     begin
2635 torben 2677
2636 torben 2645 dt := fileDateToDateTime(SR.Time); // finder filens timestamp for seneste ændring
2637     CreationTime := SR.FindData.ftCreationTime; // finder filens timestamp for oprettelse
2638 torben 2695 dtCreation := TUtils.FileTime2DateTime(CreationTime); // finder filens timestamp for oprettelse
2639 torben 2645 // Selvom creation date godt kan være forskellig fra modified date,
2640     // skal vi alligevel altid tjekke filens alder ud fra modified date
2641     // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
2642     BemTxt := '';
2643     if (DaysBetween(now, dt) > 14) then // så er filen kandidat til at blive slettet
2644     begin
2645     BemTxt := ' (skal slettes)';
2646     end;
2647     logTekst := SR.Name + ' Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dt) + ' ' + BemTxt + ' ' + IntToStr(DaysBetween(now, dt)) + ' dage gammel';
2648     if DaysBetween(dtCreation, dt) > 1 then
2649     begin
2650     logTekst := logTekst + ' (Oprettet ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dtCreation) + ')';
2651     end;
2652     FileList.Insert(0,logTekst);
2653     SkrivScanningLogFil(logTekst);
2654     if BemTxt = ' (skal slettes)' then
2655     begin
2656     if DeleteFile(Path + SR.Name) then
2657     begin
2658     logTekst := 'Logfil er slettet.';
2659     FileList.Insert(0,logTekst);
2660     SkrivScanningLogFil(logTekst);
2661     end
2662     else
2663     begin
2664     logTekst := 'Logfil kunne IKKE slettes.';
2665     FileList.Insert(0,logTekst);
2666     SkrivScanningLogFil(logTekst);
2667     end;
2668     end;
2669     end;
2670     until FindNext(SR) <> 0;
2671     FindClose(SR);
2672     end;
2673     end;
2674    
2675 torben 2668 procedure TMainForm.btnNulstilClick(Sender: TObject);
2676 torben 2645 begin
2677     PakkeshopStregkode := '';
2678     PakkeshopTjekkode := '';
2679 torben 2668 btnNulstil.Visible := false;
2680 torben 2645 PakkeshopText1.Caption := 'Stregkode';
2681     BoghandlerStregkode := '';
2682     BoghandlerTjekkode := '';
2683     Stregkode := '';
2684     // 20150312: start
2685     if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2686     begin
2687     ShowMessage('Programmet afbrydes...');
2688 torben 3087 Config.UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2689 torben 2645 Application.Terminate;
2690     exit;
2691     end;
2692     // 20150312: slut
2693     InitScreen();
2694     // MainForm.Color := HexToTColor(Farve);
2695     if Farve <> '' then
2696     begin
2697 torben 2682 MainForm.Color := TUtils.HexToTColor(Farve);
2698 torben 2645 end;
2699 torben 3054 if (menuDaoDirekte1.Checked) then
2700 torben 2645 begin
2701     InitLillePakke();
2702     end;
2703     PrinterstatusStaticText1.Caption := '';
2704     PrinterstatusStaticText1.Color := MainForm.Color;
2705     end;
2706    
2707 torben 2650
2708 torben 2645 procedure TMainForm.PanelValg1Click(Sender: TObject);
2709     begin
2710     Scanningtype := '1';
2711     InitNatxpresslevering();
2712     NulstilAutomatiskValg();
2713     end;
2714    
2715     procedure TMainForm.PanelValg2Click(Sender: TObject);
2716     begin
2717     Scanningtype := '2';
2718     InitReturFraDao();
2719     NulstilAutomatiskValg();
2720     end;
2721    
2722     procedure TMainForm.PanelValg3Click(Sender: TObject);
2723     begin
2724     Scanningtype := '3';
2725     InitReturFraKunde();
2726     NulstilAutomatiskValg();
2727     end;
2728    
2729     procedure TMainForm.PanelValg4Click(Sender: TObject);
2730     begin
2731     Scanningtype := '4';
2732     InitDirektelevering();
2733     NulstilAutomatiskValg();
2734     end;
2735    
2736     procedure TMainForm.PanelValg5Click(Sender: TObject);
2737     begin
2738     Scanningtype := '5';
2739     InitPakkeshoplevering();
2740     NulstilAutomatiskValg();
2741     end;
2742    
2743     procedure TMainForm.PanelValg6Click(Sender: TObject);
2744     begin
2745     Scanningtype := '6';
2746     InitReturFraPakkeshop();
2747     NulstilAutomatiskValg();
2748     end;
2749    
2750 torben 2650
2751     procedure TMainForm.PanelValg7Click(Sender: TObject);
2752     begin
2753     Scanningtype := '7';
2754     InitIndleveringskode();
2755     NulstilAutomatiskValg();
2756    
2757     end;
2758    
2759 torben 2645 procedure TMainForm.PanelValgAClick(Sender: TObject);
2760     begin
2761     // Skal ikke toggle men bare sætte funktionen on
2762     // Fravælges ved at vælge en scanningstype
2763 torben 3054 menuAutomatiskvalg1.Checked := true;
2764 torben 2692 PanelValgA.Color := clGreen;
2765     PanelValgA.Font.Color := clWhite;
2766    
2767    
2768    
2769 torben 2645 end;
2770    
2771 torben 3054 procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2772 torben 2645 begin
2773     Scanningtype := '1';
2774     NulstilAutomatiskValg();
2775     InitNatxpresslevering();
2776     end;
2777    
2778     procedure TMainForm.Testforbindelsen1Click(Sender: TObject);
2779     var
2780     RuteNummer : String;
2781     Kommentar : String;
2782     BoghandlerNavn : String;
2783     Koreliste : String;
2784     Falsk : Boolean;
2785     SmsKode : String;
2786     DBKbane : String;
2787     Leveringssted : String;
2788     orgTjekUrls : String;
2789     begin
2790 torben 3090 orgTjekUrls := Config.TjekUrls;
2791     if (Config.TjekUrls = '1') or (Config.TjekUrls = '2') then
2792 torben 2645 begin
2793     TjekkerUrls();
2794     end;
2795 torben 3090 if Config.TjekUrls = '-' then
2796 torben 2645 begin
2797     //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
2798     RuteNummer := '';
2799     Kommentar := 'Se log vinduet';
2800     BoghandlerNavn := 'Fejl i forbindelse til server';
2801     Koreliste := '';
2802     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2803     // Her kommer en alarm og rød skærm
2804 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
2805 torben 2645 MainForm.Color := clRed;
2806 torben 2668 btnNulstil.Visible := true;
2807 torben 2645 end
2808     else
2809     begin
2810     Falsk := False;
2811 torben 2660
2812 torben 2645 HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
2813     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2814     SmsKode := '999999';
2815     DBKbane := '999';
2816     Leveringssted := 'XXX';
2817     PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2818     FocusControl(StregkodeST);
2819     end;
2820 torben 3090 Config.TjekUrls := orgTjekUrls;
2821 torben 2645
2822     end;
2823    
2824     procedure TMainForm.Testprinter1Click(Sender: TObject);
2825     var
2826     RuteNummer : String;
2827     Kommentar : String;
2828     BoghandlerNavn : String;
2829     Koreliste : String;
2830     Falsk : Boolean;
2831     SmsKode : String;
2832     DBKbane : String;
2833     Leveringssted : String;
2834     begin
2835     RuteNummer := 'Rutenr';
2836     Kommentar := '***** Kommentar *****';
2837     BoghandlerNavn := 'Modtagernavn';
2838     Falsk := False;
2839    
2840 torben 2660
2841 torben 2705 if (LabelPrint.GetPrinterCount() = 0) then
2842 torben 2645 begin
2843     ShowMessage('Der er ikke installeret en printer på denne PC.');
2844     end
2845 torben 3090 else if Config.PrinterNavn = 'Ingen' then
2846 torben 2645 begin
2847     ShowMessage('Der er fravalgt printer i dette program.');
2848     end
2849     else
2850     begin
2851     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2852     SmsKode := '999999';
2853     DBKbane := '999';
2854     Leveringssted := 'XXX';
2855 torben 3049 PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2856 torben 3090 LabelPrint.CheckPrintQue('Test', Config.PrinterNavn);
2857 torben 2645 end;
2858     FocusControl(StregkodeST);
2859     end;
2860    
2861     procedure TMainForm.Timer1Timer(Sender: TObject);
2862     begin
2863 torben 3090 if (Config.TjekPrinter = '1') then
2864 torben 2645 begin
2865 torben 3090 LabelPrint.CheckPrintQue('Timer', Config.PrinterNavn);
2866 torben 2645 end
2867     else
2868     begin
2869     PrinterstatusStaticText1.Caption := '';
2870     PrinterstatusStaticText1.Color := MainForm.Color;
2871     end;
2872     end;
2873    
2874    
2875    
2876     procedure TMainForm.Om1Click(Sender: TObject);
2877     const
2878     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2879     var
2880     tekst, filversion : String;
2881     begin
2882    
2883 torben 2693 filversion := TUtils.Sto_GetFmtFileVersion('');
2884 torben 2645 tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';
2885    
2886     tekst := tekst+crlf+crlf;
2887     tekst := tekst+'Programmet er installeret som:'+crlf+ParamStr(0);
2888     tekst := tekst+crlf;
2889    
2890     if SpecialVersionSted = '' then
2891     begin
2892     tekst := tekst+crlf+crlf+'Scanningssted: '+StringReplace(Stednavn, ':', '', [rfReplaceAll, rfIgnoreCase])+' ('+Sted+')';
2893     end;
2894    
2895     if SpecialVersionSted <> '' then
2896     begin
2897     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2898     begin
2899     if Stednavn = '' then
2900     begin
2901     tekst := tekst+crlf+crlf+'Speciel version til: '+BladhusStedNavn[BladhusSted]+' ('+BladhusStedKode[BladhusSted]+')';
2902     end
2903     else
2904     begin
2905 torben 2682 tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2906 torben 2645 end;
2907     end
2908     else
2909     begin
2910 torben 2682 tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2911 torben 2645 end;
2912     end;
2913    
2914     if (Pos('omdeling.info',Url) = 0) then
2915     begin
2916     tekst := tekst+crlf+crlf;
2917     tekst := tekst+crlf+crlf+' ********** DETTE ER KUN EN TEST VERSION **********';
2918     tekst := tekst+crlf+crlf;
2919 torben 3087 tekst := tekst+crlf+crlf+'Url: ' + Url;
2920 torben 2645 end;
2921    
2922     MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
2923    
2924     end;
2925    
2926 torben 3039
2927 torben 2645 procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
2928     Rect: TRect; State: TOwnerDrawState);
2929     var
2930     ListBox1MaxLinLgd,i : Integer;
2931     myColor: TColor;
2932     myBrush: TBrush;
2933     begin
2934     ListBox1MaxLinLgd := 0;
2935     myBrush := TBrush.Create;
2936     with (Control as TListBox).Canvas do
2937     begin
2938     if not Odd(Index) then
2939     myColor := clWhite
2940     else
2941     myColor := clSilver;
2942    
2943     if odSelected in State then
2944     begin
2945     myColor := MainForm.Color;
2946     font.Color := clBlack;
2947     end;
2948    
2949     myBrush.Style := bsSolid;
2950     myBrush.Color := myColor;
2951     Windows.FillRect(handle, Rect, myBrush.Handle) ;
2952     Brush.Style := bsClear;
2953     TextOut(Rect.Left, Rect.Top,
2954     (Control as TListBox).Items[Index]) ;
2955     MyBrush.Free;
2956     end;
2957    
2958     for i := 0 to (ListBox1.Items.Count - 1) do
2959     if (ListBox1.Canvas.TextWidth(ListBox1.Items[i]) > ListBox1MaxLinLgd) then
2960     ListBox1MaxLinLgd := ListBox1.Canvas.TextWidth(ListBox1.Items[i]);
2961     ListBox1.ScrollWidth := ListBox1MaxLinLgd;
2962     end;
2963    
2964     procedure TMainForm.Lukprogrammet1Click(Sender: TObject);
2965     begin
2966    
2967     Application.Terminate;
2968    
2969     end;
2970    
2971     procedure TMainForm.Manual1Click(Sender: TObject);
2972     var
2973     fileName : string;
2974     begin
2975     fileName := 'Docs\Manual_' + Scanningtype + '.pdf';
2976    
2977     if FileExists(fileName) then
2978     begin
2979 torben 2685 if TUtils.AdobeReaderExists then
2980 torben 2645 begin
2981     //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
2982     ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
2983     end
2984     else
2985     begin
2986     ShowMessage('Acrobat Reader er ikke installeret!');
2987     end;
2988     end
2989     else
2990     begin
2991     ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
2992     end;
2993     end;
2994    
2995     procedure TMainForm.Manualgenerel1Click(Sender: TObject);
2996     var
2997     fileName : string;
2998     begin
2999     fileName := 'Docs\Manual_0.pdf';
3000    
3001     if FileExists(fileName) then
3002     begin
3003 torben 2685 if TUtils.AdobeReaderExists then
3004 torben 2645 begin
3005     //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3006     ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3007     end
3008     else
3009     begin
3010 torben 2700 ShowMessage('Adobe Reader er ikke installeret!');
3011 torben 2645 end;
3012     end
3013     else
3014     begin
3015     ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3016     end;
3017     end;
3018    
3019 torben 2664 procedure TMainForm.menuIndleveringClick(Sender: TObject);
3020     begin
3021     Scanningtype := '7';
3022     NulstilAutomatiskValg();
3023     InitIndleveringskode();
3024     end;
3025    
3026 torben 2645 procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3027     begin
3028    
3029     if Sprgefterboghandlernummer1.Checked then
3030     begin
3031 torben 2653 chkSporgEfterKunde.Checked := true;
3032 torben 2645 end
3033     else
3034     begin
3035 torben 2653 chkSporgEfterKunde.Checked := false;
3036 torben 2645 end;
3037    
3038    
3039     end;
3040    
3041 torben 3054 procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3042 torben 2645 begin
3043     Scanningtype := '2';
3044     NulstilAutomatiskValg();
3045     InitReturFraDao();
3046     end;
3047    
3048 torben 3054 procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3049 torben 2645 begin
3050     Scanningtype := '6';
3051     InitReturFraPakkeshop();
3052     NulstilAutomatiskValg();
3053     end;
3054    
3055     procedure TMainForm.InitNatxpresslevering();
3056     begin
3057 torben 3055 menuAutomatiskTjekkodeStyring.Enabled := true;
3058 torben 2668 btnNulstil.Visible := false;
3059 torben 3054 menuNatXpress1.Checked := true;
3060 torben 3089 InitForm(Config.FarveNormal,Config.TitelNormal,Config.UrlNormal);
3061 torben 2645 PanelValg1.Color := clGreen;
3062     PanelValg1.Font.Color := clWhite;
3063 torben 2653
3064 torben 2652 chkAltidPrintLabel.Enabled := true;
3065 torben 2645 Altidprintepakkelabel1.Enabled := true;
3066     Altidprintepakkelabel1.Checked := false;
3067 torben 2652 chkAltidPrintLabel.Checked := false;
3068 torben 2645 Sprgefterboghandlernummer1.Checked := false;
3069 torben 2653 chkSporgEfterKunde.Checked := false;
3070 torben 2645 Sprgefterboghandlernummer1.Enabled := true;
3071 torben 3055 menuSmaaPakker.Enabled := false;
3072     menuStorePakker.Enabled := false;
3073 torben 2655 radioStorPakke.Enabled := false;
3074     radioLillePakke.Enabled := false;
3075 torben 2645 ListBox1.Visible := true;
3076 torben 2699 BtnOpdaterListen.Enabled := true;
3077 torben 2698 BtnEKLoverforsel.Enabled := true;
3078 torben 2645 InitLillePakke();
3079     ListBox1.Items.Clear;
3080 torben 2791
3081     chkForstorTilDirekte.Checked := false;
3082     chkForstorTilDirekte.Enabled := false;
3083    
3084 torben 2645 if BladhusSted = 0 then
3085     begin
3086     IndlesScanningLogFil();
3087     IndlesManglendeScanninger();
3088     end;
3089     end;
3090    
3091     procedure TMainForm.InitReturFraDao();
3092     begin
3093 torben 3055 menuAutomatiskTjekkodeStyring.Enabled := false;
3094 torben 3054 menuNatxpressReturDAO1.Checked := true;
3095 torben 2668 btnNulstil.Visible := false;
3096 torben 3089 InitForm(Config.FarveReturDAO, Config.TitelReturDAO, Config.UrlReturDAO);
3097 torben 2645 PanelValg2.Color := clGreen;
3098     PanelValg2.Font.Color := clWhite;
3099 torben 2653
3100 torben 2652 chkAltidPrintLabel.Enabled := false;
3101 torben 2645 Altidprintepakkelabel1.Enabled := false;
3102 torben 2652
3103 torben 2645 Altidprintepakkelabel1.Checked := false;
3104     Sprgefterboghandlernummer1.Checked := false;
3105 torben 2653 chkSporgEfterKunde.Checked := false;
3106 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3107 torben 3055 menuSmaaPakker.Enabled := true;
3108     menuStorePakker.Enabled := true;
3109 torben 2655 radioStorPakke.Enabled := true;
3110     radioLillePakke.Enabled := true;
3111 torben 2645 ListBox1.Visible := true;
3112     ListBox1.Items.Clear;
3113     ListBox2.Items.Clear;
3114 torben 2698 BtnEKLoverforsel.Enabled := false;
3115 torben 2791
3116     chkForstorTilDirekte.Checked := false;
3117     chkForstorTilDirekte.Enabled := false;
3118    
3119 torben 2645 InitLillePakke();
3120     end;
3121    
3122     procedure TMainForm.InitReturFraKunde();
3123     begin
3124 torben 3055 menuAutomatiskTjekkodeStyring.Enabled := false;
3125 torben 3054 menuNatxpressReturfraKunde1.Checked := true;
3126 torben 2668 btnNulstil.Visible := false;
3127 torben 3089 InitForm(Config.FarveReturBoghandler, Config.TitelReturBoghandler, Config.UrlReturBoghandler);
3128 torben 2645 PanelValg3.Color := clGreen;
3129     PanelValg3.Font.Color := clWhite;
3130 torben 2653
3131 torben 2652 chkAltidPrintLabel.Enabled := false;
3132 torben 2645 Altidprintepakkelabel1.Enabled := false;
3133     Altidprintepakkelabel1.Checked := false;
3134     Sprgefterboghandlernummer1.Checked := false;
3135 torben 2653 chkSporgEfterKunde.Checked := false;
3136 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3137 torben 3055 menuSmaaPakker.Enabled := true;
3138     menuStorePakker.Enabled := true;
3139 torben 2655 radioStorPakke.Enabled := true;
3140     radioLillePakke.Enabled := true;
3141 torben 2645 ListBox1.Visible := true;
3142     ListBox1.Items.Clear;
3143     ListBox2.Items.Clear;
3144 torben 2698 BtnEKLoverforsel.Enabled := false;
3145 torben 2791
3146     chkForstorTilDirekte.Checked := false;
3147     chkForstorTilDirekte.Enabled := false;
3148    
3149 torben 2645 InitLillePakke();
3150     end;
3151    
3152     procedure TMainForm.InitDirektelevering();
3153     begin
3154 torben 3055 menuAutomatiskTjekkodeStyring.Enabled := false;
3155 torben 3054 menuDaoDirekte1.Checked := true;
3156 torben 2668 btnNulstil.Visible := false;
3157 torben 3089 InitForm(Config.FarveBudlevering, Config.TitelBudlevering, Config.UrlBudlevering);
3158 torben 2645 PanelValg4.Color := clGreen;
3159     PanelValg4.Font.Color := clWhite;
3160 torben 2653
3161 torben 2652 chkAltidPrintLabel.Enabled := false;
3162 torben 2645 Altidprintepakkelabel1.Enabled := false;
3163 torben 2652
3164 torben 2645 Altidprintepakkelabel1.Checked := false;
3165     Sprgefterboghandlernummer1.Checked := false;
3166 torben 2653 chkSporgEfterKunde.Checked := false;
3167 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3168 torben 3055 menuSmaaPakker.Enabled := true;
3169     menuStorePakker.Enabled := true;
3170 torben 2655 radioStorPakke.Enabled := true;
3171     radioLillePakke.Enabled := true;
3172 torben 2645 ListBox1.Visible := true;
3173     ListBox1.Items.Clear;
3174 torben 2691 BtnDownloadKontrolfil.Enabled := false;
3175 torben 2699 BtnOpdaterListen.Enabled := true;
3176 torben 2696 BtnDownloadRuteskiftFil.Visible := false;
3177 torben 2698 BtnEKLoverforsel.Enabled := false;
3178 torben 2645 IdFTP1.Passive := true;
3179     IdFTP1.PassiveUseControlHost := true;
3180 torben 2791
3181     chkForstorTilDirekte.Checked := false;
3182     chkForstorTilDirekte.Enabled := true;
3183    
3184 torben 2645 if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3185     begin
3186     IndlesScanningLogFil();
3187     IndlesManglendeScanninger();
3188     end;
3189    
3190     end;
3191    
3192     procedure TMainForm.InitPakkeshoplevering();
3193     begin
3194 torben 3055 menuAutomatiskTjekkodeStyring.Enabled := true;
3195 torben 3054 menuPakkeshop1.Checked := true;
3196 torben 2668 btnNulstil.Visible := false;
3197 torben 3089 InitForm(Config.FarvePakkeshoplevering, Config.TitelPakkeshoplevering, Config.UrlPakkeshoplevering);
3198 torben 2645 PanelValg5.Color := clGreen;
3199     PanelValg5.Font.Color := clWhite;
3200 torben 2653
3201 torben 2652 chkAltidPrintLabel.Enabled := false;
3202 torben 2645 Altidprintepakkelabel1.Enabled := false;
3203 torben 2652
3204 torben 2645 Altidprintepakkelabel1.Checked := false;
3205     Sprgefterboghandlernummer1.Checked := false;
3206 torben 2653 chkSporgEfterKunde.Checked := false;
3207 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3208 torben 3055 menuSmaaPakker.Enabled := false;
3209     menuStorePakker.Enabled := false;
3210 torben 2655 radioStorPakke.Enabled := false;
3211     radioLillePakke.Enabled := false;
3212 torben 2645 ListBox1.Visible := true;
3213     ListBox1.Items.Clear;
3214 torben 2691 BtnDownloadKontrolfil.Enabled := false;
3215 torben 2699 BtnOpdaterListen.Enabled := true;
3216 torben 2656
3217 torben 2698 BtnEKLoverforsel.Enabled := true;
3218 torben 2656
3219 torben 2791 chkForstorTilDirekte.Checked := false;
3220     chkForstorTilDirekte.Enabled := true;
3221    
3222 torben 2645 InitLillePakke();
3223     IndlesScanningLogFil();
3224     if BladhusSted = 0 then
3225     begin
3226     IndlesManglendeScanninger();
3227     end;
3228     IdFTP1.Passive := true;
3229     IdFTP1.PassiveUseControlHost := true;
3230     end;
3231    
3232     procedure TMainForm.InitReturFraPakkeshop();
3233     begin
3234 torben 3055 menuAutomatiskTjekkodeStyring.Enabled := false;
3235 torben 3054 menuPakkeshopRetur1.Checked := true;
3236 torben 2668 btnNulstil.Visible := false;
3237 torben 3089 InitForm(Config.FarveReturPakkeshop, Config.TitelReturPakkeshop, Config.UrlReturPakkeshop);
3238 torben 2645 PanelValg6.Color := clGreen;
3239     PanelValg6.Font.Color := clWhite;
3240 torben 2653
3241 torben 2652 chkAltidPrintLabel.Enabled := false;
3242 torben 2645 Altidprintepakkelabel1.Enabled := false;
3243 torben 2652
3244 torben 2645 Altidprintepakkelabel1.Checked := false;
3245     Sprgefterboghandlernummer1.Checked := false;
3246 torben 2653 chkSporgEfterKunde.Checked := false;
3247 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3248 torben 3055 menuSmaaPakker.Enabled := false;
3249     menuStorePakker.Enabled := false;
3250 torben 2655 radioStorPakke.Enabled := false;
3251     radioLillePakke.Enabled := false;
3252 torben 2645 ListBox1.Visible := true;
3253     ListBox1.Items.Clear;
3254 torben 2691 BtnDownloadKontrolfil.Enabled := false;
3255 torben 2699 BtnOpdaterListen.Enabled := true;
3256 torben 2698 BtnEKLoverforsel.Enabled := false;
3257 torben 2791
3258     chkForstorTilDirekte.Checked := false;
3259     chkForstorTilDirekte.Enabled := false;
3260    
3261    
3262 torben 2645 InitLillePakke();
3263     IndlesScanningLogFil();
3264     if BladhusSted = 0 then
3265     begin
3266     IndlesManglendeScanninger();
3267     end;
3268     IdFTP1.Passive := true;
3269     IdFTP1.PassiveUseControlHost := true;
3270     end;
3271    
3272 torben 3054 procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3273 torben 2645 begin
3274     Scanningtype := '3';
3275     NulstilAutomatiskValg();
3276     InitReturFraKunde();
3277     end;
3278    
3279 torben 2650 procedure TMainForm.InitIndleveringskode();
3280     begin
3281 torben 2664 menuIndlevering.Checked := true;
3282 torben 3055 menuAutomatiskTjekkodeStyring.Enabled := false;
3283 torben 2664
3284 torben 2668 btnNulstil.Visible := false;
3285 torben 3089 InitForm(Config.FarveIndlevering, Config.TitelIndlevering, Config.UrlReturPakkeshop);
3286 torben 2650 PanelValg7.Color := clGreen;
3287     PanelValg7.Font.Color := clWhite;
3288 torben 2653
3289 torben 2652 chkAltidPrintLabel.Enabled := false;
3290 torben 2650 Altidprintepakkelabel1.Enabled := false;
3291 torben 2652
3292 torben 2650 Altidprintepakkelabel1.Checked := false;
3293     Sprgefterboghandlernummer1.Checked := false;
3294 torben 2656 Sprgefterboghandlernummer1.Enabled := false;
3295 torben 2653 chkSporgEfterKunde.Checked := false;
3296 torben 2656
3297    
3298    
3299 torben 3055 menuSmaaPakker.Enabled := false;
3300     menuStorePakker.Enabled := false;
3301 torben 2655 radioStorPakke.Enabled := false;
3302     radioLillePakke.Enabled := false;
3303 torben 2650 ListBox1.Visible := true;
3304 torben 2656 ListBox1.Items.Clear();
3305    
3306 torben 2691 BtnDownloadKontrolfil.Enabled := false;
3307 torben 2699 BtnOpdaterListen.Enabled := true;
3308 torben 2698 BtnEKLoverforsel.Enabled := false;
3309 torben 2791
3310     chkForstorTilDirekte.Checked := false;
3311     chkForstorTilDirekte.Enabled := false;
3312    
3313    
3314 torben 2664 InitLillePakke();
3315     IndlesScanningLogFil();
3316     if BladhusSted = 0 then
3317     begin
3318     IndlesManglendeScanninger();
3319     end;
3320 torben 2650 IdFTP1.Passive := true;
3321     IdFTP1.PassiveUseControlHost := true;
3322     end;
3323    
3324    
3325 torben 3055 procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3326 torben 2645 begin
3327     InitStorPakke();
3328     end;
3329    
3330 torben 3055 procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3331 torben 2645 begin
3332     InitLillePakke();
3333     end;
3334    
3335     procedure TMainForm.InitLillePakke();
3336     begin
3337 torben 2655 radioLillePakke.Checked := true;
3338 torben 3055 menuSmaaPakker.Checked := true;
3339 torben 2645 // Stregkode := '';
3340     end;
3341    
3342     procedure TMainForm.InitStorPakke();
3343     begin
3344 torben 2655 radioStorPakke.Checked := true;
3345 torben 3055 menuStorePakker.Checked := true;
3346 torben 2645 // 20150310: start
3347     // Stregkode := '';
3348     // 20150310: slut
3349     end;
3350    
3351 torben 2677
3352 torben 2645
3353     procedure TMainForm.PlaySound(filename : PWideChar);
3354     begin
3355     if (filename <> '') then
3356     begin
3357     sndPlaySound(filename,
3358     SND_NODEFAULT Or SND_ASYNC);
3359     end;
3360     end;
3361    
3362     procedure TMainForm.Testlyd1Click(Sender: TObject);
3363     begin
3364 torben 3090 if Config.AlarmLyd <> '' then
3365 torben 2645 begin
3366 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
3367 torben 2645 end
3368     else
3369     begin
3370     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (alarm)'), 'Information', MB_OK);
3371     end;
3372     end;
3373    
3374     procedure TMainForm.Testlyd2Click(Sender: TObject);
3375     begin
3376     if (PakkeshopText1.Caption = 'Tjekkode') then
3377     begin
3378 torben 3090 if Config.ScannetOkTilTjekkodeLyd <> '' then
3379 torben 2645 begin
3380 torben 3090 PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
3381 torben 2645 end
3382     else
3383     begin
3384     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkTilTjekkodeLyd)'), 'Information', MB_OK);
3385     end;
3386     exit;
3387     end;
3388    
3389 torben 3055 if menuSmaaPakker.Checked then
3390 torben 3090 if Config.ScannetOkLyd <> '' then
3391 torben 2645 begin
3392 torben 3090 PlaySound(PWideChar(Config.ScannetOkLyd));
3393 torben 2645 end
3394     else
3395     begin
3396     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3397     end;
3398 torben 3055 if menuStorePakker.Checked then
3399 torben 3090 if Config.ScannetOkStorLyd <> '' then
3400 torben 2645 begin
3401 torben 3090 PlaySound(PWideChar(Config.ScannetOkStorLyd));
3402 torben 2645 end
3403     else
3404     begin
3405     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
3406     end;
3407     end;
3408    
3409    
3410 torben 3054 procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3411 torben 2645 begin
3412     Scanningtype := '4';
3413     NulstilAutomatiskValg();
3414     InitDirektelevering();
3415     end;
3416    
3417     procedure TMainForm.Button1Click(Sender: TObject);
3418     begin;
3419     CheckCode();
3420     end;
3421    
3422 torben 2698 procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3423 torben 2645 var
3424     WebSvar : String;
3425     URLStr : String;
3426     StedKode : String;
3427     Node: IXMLNode;
3428     I: Integer;
3429     status, kommentar : String;
3430    
3431     begin
3432 torben 2698 BtnEKLoverforsel.Enabled := false;
3433 torben 2645
3434     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
3435     logTekst := 'Overfører de scannede pakker til EKL';
3436     SkrivScanningLogFil(logTekst);
3437     StedKode := Sted;
3438 torben 3087 URLStr := Format(Config.UrlEKLoverforsel,[StedKode,Sted]);
3439 torben 2704
3440 torben 2645 if PanelValg5.Color = clGreen then
3441     begin
3442 torben 3087 URLStr := Format(Config.UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3443 torben 2645 end;
3444    
3445 torben 2704
3446 torben 2645 try
3447     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3448     WebSvar := IdHTTP1.Get(URLStr);
3449     except
3450     on e:EIdConnClosedGracefully do
3451     begin
3452     // Her skal vi ikke gøre noget - men vi skal forespørge igen
3453     WebSvar := IdHTTP1.Get(URLStr);
3454     end;
3455     on e:exception do
3456     begin
3457     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
3458     logTekst := 'Fejl i web forespørgsel: '+e.Message;
3459     SkrivScanningLogFil(logTekst);
3460     raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
3461     end;
3462     end;
3463     try
3464     XMLDocument1.LoadFromXML(WebSvar);
3465     for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
3466     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
3467     if Node.NodeType = ntElement then begin
3468     if Node.NodeName = 'Status' then begin
3469     if not VarIsNull(Node.NodeValue) then
3470     status := Node.NodeValue;
3471     end;
3472     if Node.NodeName = 'Kommentar' then begin
3473     if not VarIsNull(Node.NodeValue) then
3474     kommentar := Node.NodeValue;
3475     end;
3476     end;
3477     end;
3478    
3479     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status+' '+kommentar);
3480     logTekst := 'Overførsel til EKL: ' + status;
3481     SkrivScanningLogFil(logTekst);
3482    
3483     except on e:exception do
3484     begin
3485     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status);
3486     logTekst := 'Overførsel til EKL: ' + status;
3487     SkrivScanningLogFil(logTekst);
3488     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
3489     logTekst := 'Fejl i XML-format: '+e.Message;
3490     SkrivScanningLogFil(logTekst);
3491     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
3492     end;
3493     end;
3494    
3495 torben 2698 BtnEKLoverforsel.Enabled := true;
3496 torben 2645
3497     ListBox1.SetFocus; // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
3498    
3499     // Hvis der var fejl i overførslen skal dette fejlmeldes her
3500     if status = 'Fejl' then
3501     begin // Her skal komme en alarm og rød skærm
3502 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
3503 torben 2645 MainForm.Color := clRed;
3504     RutenummerST.Caption := 'EKL overførsel';
3505     BoghandlerNavnST.Caption := 'Fejl:';
3506     if (pos('Deadlock', Kommentar) > 0) then
3507     begin
3508     RutenummerST.Caption := 'EKL overførsel fejlet';
3509     BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3510     end;
3511     KommentarST.Caption := Kommentar;
3512 torben 2668 btnNulstil.Visible := true;
3513 torben 2645 end;
3514    
3515     end;
3516    
3517     procedure TMainForm.CheckCode();
3518     var
3519     Barcode, Svar : String;
3520     ClickedOK : Boolean;
3521     begin
3522     ClickedOK := InputQuery('Barcode check', 'Indtast stregkode', Barcode);
3523     if ClickedOk then
3524     begin
3525     { if (BarCodeValid(Barcode)) then
3526     MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
3527     else
3528     MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3529     }
3530     // MessageBox(Handle, PAnsiChar(CheckSumModulo10(Barcode)), 'Stregkode', MB_OK);
3531     { if (CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1)) = Barcode) then
3532     MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
3533     else
3534     MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3535     }
3536 torben 2682 Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3537 torben 2645
3538     MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3539     CheckCode();
3540     end;
3541    
3542     end;
3543    
3544    
3545     //
3546     // Bladhus ***
3547     //
3548     procedure TMainForm.DownloadBladhusRuteskiftfil();
3549     const
3550     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3551    
3552     var
3553     filnavn_input : string;
3554     filnavn_output : string;
3555     buttonSelected : Integer;
3556    
3557     begin
3558     filnavn_input := BladhusRuteskiftfil_server; // hvis filen ikke findes vises 'no such file or directory'
3559     filnavn_output := BladhusRuteskiftfil_lokal;
3560    
3561     case BladhusSted of
3562     00 : begin;
3563     end;
3564     01 : begin;
3565     buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3566     if buttonSelected = mrOK then
3567     begin
3568     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3569     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3570     SkrivScanningLogFil(logTekst);
3571     try
3572     try
3573    
3574     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3575     IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
3576     IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
3577     IdFTP1.Connect;
3578    
3579     //IdFTP1.TransferType := ftASCII;
3580     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3581     try
3582     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3583     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3584     except on e:EIdConnClosedGracefully do
3585     begin
3586     // Her skal vi ikke gøre noget - men vi skal forespørge igen
3587     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3588     end;
3589     end;
3590     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3591    
3592     ListBox1.Items.Insert(0,TimeToStr(now) + ': Ruteskift fil gemt lokalt som ' + filnavn_output + '.');
3593     logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
3594     SkrivScanningLogFil(logTekst);
3595    
3596     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
3597     logTekst := 'Ruteskift fil tjekkes.';
3598     SkrivScanningLogFil(logTekst);
3599    
3600     finally
3601     IdFTP1.Disconnect;
3602     end;
3603    
3604     except on e:exception do
3605     begin
3606     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3607     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3608     SkrivScanningLogFil(logTekst);
3609     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3610     [e.Message
3611     + CrLf + 'Host: '+IdFTP1.host
3612     + CrLf + 'Username: '+IdFTP1.Username
3613     ]
3614     );
3615     end;
3616     end;
3617     end
3618     else
3619     begin
3620     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
3621     logTekst := 'Download af ruteskiftfil annulleret';
3622     SkrivScanningLogFil(logTekst);
3623     end;
3624     IndlesRuteskiftFil(filnavn_output);
3625     end;
3626     02 : begin;
3627     end;
3628     03 : begin;
3629     buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3630     if buttonSelected = mrOK then
3631     begin
3632     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3633     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3634     SkrivScanningLogFil(logTekst);
3635     try
3636     try
3637    
3638     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3639     IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
3640     IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
3641     IdFTP1.Connect;
3642    
3643     //IdFTP1.TransferType := ftASCII;
3644     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3645     try
3646     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3647     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3648     except on e:EIdConnClosedGracefully do
3649     begin
3650     // Her skal vi ikke gøre noget - men vi skal forespørge igen
3651     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3652     end;
3653     end;
3654     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3655    
3656     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute ruteskift fil gemt lokalt som ' + filnavn_output + '.');
3657     logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
3658     SkrivScanningLogFil(logTekst);
3659    
3660     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
3661     logTekst := 'Ruteskift fil tjekkes.';
3662     SkrivScanningLogFil(logTekst);
3663    
3664     finally
3665     IdFTP1.Disconnect;
3666     end;
3667    
3668     except on e:exception do
3669     begin
3670     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3671     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3672     SkrivScanningLogFil(logTekst);
3673     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3674     [e.Message
3675     + CrLf + 'Host: '+IdFTP1.host
3676     + CrLf + 'Username: '+IdFTP1.Username
3677     ]
3678     );
3679     end;
3680     end;
3681     end
3682     else
3683     begin
3684     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
3685     logTekst := 'Download af ruteskiftfil annulleret';
3686     SkrivScanningLogFil(logTekst);
3687     end;
3688     IndlesRuteskiftFil(filnavn_output);
3689     end;
3690     04 : begin;
3691     end;
3692     else
3693     ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
3694     end;
3695    
3696     end;
3697    
3698     procedure TMainForm.DownloadBladhusKontrolfil();
3699     const
3700     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3701    
3702     var
3703     filnavn_input : string;
3704     filnavn_output : string;
3705     buttonSelected : Integer;
3706    
3707     begin
3708     filnavn_input := BladhusKontrolfil_server; // hvis filen ikke findes vises 'no such file or directory'
3709     filnavn_output := BladhusKontrolfil_lokal;
3710    
3711     case BladhusSted of
3712     01 :
3713     begin;
3714     buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3715     if buttonSelected = mrOK then
3716     begin
3717     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3718     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3719     SkrivScanningLogFil(logTekst);
3720     try
3721     try
3722    
3723     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3724     IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
3725     IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
3726     IdFTP1.Connect;
3727    
3728     //IdFTP1.TransferType := ftASCII;
3729     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3730     try
3731     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3732     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3733     except on e:EIdConnClosedGracefully do
3734     begin
3735     // Her skal vi ikke gøre noget - men vi skal forespørge igen
3736     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3737     end;
3738     end;
3739     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3740    
3741     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
3742     logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
3743     SkrivScanningLogFil(logTekst);
3744    
3745     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
3746     logTekst := 'Rute kontrol fil tjekkes.';
3747     SkrivScanningLogFil(logTekst);
3748    
3749     finally
3750     IdFTP1.Disconnect;
3751     end;
3752    
3753     except on e:exception do
3754     begin
3755     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3756     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3757     SkrivScanningLogFil(logTekst);
3758     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3759     [e.Message
3760     + CrLf + 'Host: '+IdFTP1.host
3761     + CrLf + 'Username: '+IdFTP1.Username
3762     ]
3763     );
3764     end;
3765     end;
3766     end
3767     else
3768     begin
3769     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
3770     logTekst := 'Download af kontrolfil annulleret';
3771     SkrivScanningLogFil(logTekst);
3772     end;
3773     IndlesKontrolFil(filnavn_output);
3774     end;
3775     02 : begin;
3776     end;
3777     03 : begin;
3778     buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3779     if buttonSelected = mrOK then
3780     begin
3781     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3782     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3783     SkrivScanningLogFil(logTekst);
3784     try
3785     try
3786    
3787     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3788     IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
3789     IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
3790     IdFTP1.Connect;
3791    
3792     //IdFTP1.TransferType := ftASCII;
3793     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3794     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3795    
3796     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
3797     logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
3798     SkrivScanningLogFil(logTekst);
3799    
3800     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
3801     logTekst := 'Rute kontrol fil tjekkes.';
3802     SkrivScanningLogFil(logTekst);
3803    
3804     finally
3805     IdFTP1.Disconnect;
3806     end;
3807    
3808     except on e:exception do
3809     begin
3810     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3811     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3812     SkrivScanningLogFil(logTekst);
3813     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3814     [e.Message
3815     + CrLf + 'Host: '+IdFTP1.host
3816     + CrLf + 'Username: '+IdFTP1.Username
3817     ]
3818     );
3819     end;
3820     end;
3821     end
3822     else
3823     begin
3824     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
3825     logTekst := 'Download af kontrolfil annulleret';
3826     SkrivScanningLogFil(logTekst);
3827     end;
3828     IndlesKontrolFil(filnavn_output);
3829     end;
3830     04 : begin;
3831     end;
3832     else
3833     ShowMessage('Ukendt Bladhus sted ???') ;
3834     end;
3835    
3836     end;
3837    
3838     procedure TMainForm.SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
3839     const
3840     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3841    
3842     var
3843     testsystem : String;
3844    
3845     begin
3846     testsystem := '';
3847     if (Pos('omdeling.info',Url) = 0) then
3848     begin
3849     testsystem := 'TEST_';
3850     end;
3851     filnavn_output := testsystem + filnavn_output;
3852    
3853     ListBox1.Items.Insert(0,TimeToStr(now) + ': Sender ' + filnavn_input + ' til DAO ftp serveren.');
3854     logTekst := 'Sender ' + filnavn_input + ' til DAO ftp serveren.';
3855     SkrivScanningLogFil(logTekst);
3856     try
3857     try
3858    
3859     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3860     IdFTP1.Username:='scannerprogram'; // hvis forkert vises 'login incorrect'
3861     IdFTP1.Password:='DaoScan2015'; // hvis forkert vises 'login incorrect'
3862     IdFTP1.Connect;
3863    
3864     //IdFTP1.TransferType := ftASCII;
3865     try
3866     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3867     IdFTP1.ChangeDir('fraScannerprogram');
3868     IdFTP1.Put(filnavn_input, filnavn_output, True);
3869     except on e:EIdConnClosedGracefully do
3870     begin
3871     // Her skal vi ikke gøre noget - men vi skal forespørge igen
3872     IdFTP1.Put(filnavn_input, filnavn_output, True);
3873     end;
3874     end;
3875     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3876    
3877     logTekst := fil_type + ' fil sendt til DAO som ' + filnavn_output + '.';
3878     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3879     SkrivScanningLogFil(logTekst);
3880    
3881     finally
3882     IdFTP1.Disconnect;
3883     end;
3884    
3885     except on e:exception do
3886     begin
3887     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3888     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3889     SkrivScanningLogFil(logTekst);
3890     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3891     [e.Message
3892     + CrLf + 'Host: '+IdFTP1.host
3893     + CrLf + 'Username: '+IdFTP1.Username
3894     ]
3895     );
3896     end;
3897     end;
3898     end;
3899    
3900     procedure TMainForm.UploadLogfilTilDAO();
3901     const
3902     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3903    
3904     var
3905     idag, imorgen : TDateTime;
3906     imorgenYmd : string;
3907     logFilnavn : string;
3908     filnavn_input : string;
3909     filnavn_output : string;
3910     buttonSelected : Integer;
3911     openDialog : TOpenDialog;
3912    
3913     begin
3914     idag := Now;
3915     imorgen := IncDay(idag, 1); //adds 1 day(s)
3916     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
3917     if (FormatDateTime('hh:nn',idag) < '12:00') then
3918     begin
3919     imorgen := idag;
3920     end;
3921     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
3922     logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
3923     filnavn_input := logFilnavn; // hvis filen ikke findes vises 'no such file or directory'
3924     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
3925    
3926     buttonSelected := MessageDlg('Sender den aktuelle log fil (' + filnavn_input + ') til DAO ftp server',mtConfirmation, mbOKCancel, 0);
3927     if buttonSelected = mrOK then
3928     begin
3929     SendFilTilDao('Log', filnavn_input, filnavn_output);
3930     end
3931     else
3932     begin
3933     buttonSelected := MessageDlg('Vil du sende en anden logfil til DAO ftp server',mtConfirmation, mbOKCancel, 0);
3934     if buttonSelected = mrOK then
3935     begin
3936     // Create the open dialog object - assign to our open dialog variable
3937     openDialog := TOpenDialog.Create(self);
3938    
3939     // Set up the starting directory to be the current one
3940     openDialog.InitialDir := GetCurrentDir + '\Logs';
3941    
3942     // Only allow existing files to be selected
3943     openDialog.Options := [ofFileMustExist];
3944    
3945     // Allow only .log files to be selected
3946     openDialog.Filter := 'Log filer|*.log';
3947    
3948     // Display the open file dialog
3949     if openDialog.Execute then
3950     begin
3951     filnavn_input := openDialog.FileName; // hvis filen ikke findes vises 'no such file or directory'
3952     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
3953     SendFilTilDao('Log', filnavn_input, filnavn_output);
3954     end
3955     else
3956     begin
3957     logTekst := 'Upload af log fil annulleret';
3958     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3959     SkrivScanningLogFil(logTekst);
3960     end;
3961    
3962     // Free up the dialog
3963     openDialog.Free;
3964     end
3965     else
3966     begin
3967     logTekst := 'Upload af log fil annulleret';
3968     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3969     SkrivScanningLogFil(logTekst);
3970     end;
3971     end;
3972    
3973     end;
3974    
3975     procedure TMainForm.UploadInifilTilDAO();
3976     const
3977     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3978    
3979     var
3980     idag, imorgen : TDateTime;
3981     imorgenYmd : string;
3982     iniFilnavn : string;
3983     filnavn_input : string;
3984     filnavn_output : string;
3985     buttonSelected : Integer;
3986    
3987     begin
3988     idag := Now;
3989     imorgen := IncDay(idag, 1); //adds 1 day(s)
3990     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
3991     if (FormatDateTime('hh:nn',idag) < '12:00') then
3992     begin
3993     imorgen := idag;
3994     end;
3995     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
3996     iniFilnavn := ChangeFileExt(ExtractFileName(ExtractFileName(ParamStr(0))), '.ini');
3997     filnavn_input := iniFilnavn; // hvis filen ikke findes vises 'no such file or directory'
3998     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.ini';
3999    
4000     buttonSelected := MessageDlg('Sender ini filen ' + filnavn_input + ' til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4001     if buttonSelected = mrOK then
4002     begin
4003     SendFilTilDao('Ini', filnavn_input, filnavn_output);
4004     end
4005     else
4006     begin
4007     logTekst := 'Upload af ini fil annulleret';
4008     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4009     SkrivScanningLogFil(logTekst);
4010     end;
4011    
4012     end;
4013    
4014     procedure TMainForm.Uploadlogfil1Click(Sender: TObject);
4015     begin
4016     UploadLogfilTilDAO();
4017     UploadInifilTilDAO();
4018     ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4019     end;
4020    
4021 torben 2691 procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4022 torben 2645 begin
4023     DownloadBladhusKontrolfil();
4024     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4025     end;
4026    
4027 torben 2699 procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4028 torben 2645 const
4029     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4030    
4031     begin
4032     IndlesManglendeScanninger();
4033     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4034     end;
4035    
4036 torben 2696 procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4037 torben 2645 begin
4038     if (getProddag() = 'lørdag') then
4039     begin
4040     DownloadBladhusRuteskiftfil();
4041     end;
4042     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4043     end;
4044    
4045    
4046 torben 2677
4047 torben 2645 procedure TMainForm.IndlesManglendeScanninger();
4048     var
4049     WebSvar : String;
4050     URLStr : String;
4051     StedKode : String;
4052     Node: IXMLNode;
4053     I: Integer;
4054     stregkode, modtagernavn, modtageradresse, kommentar : string;
4055     pakketype, tjekkodestatus : String;
4056 torben 3056 antalLiniefelter, antalFelterFundet, linienr : Integer;
4057 torben 2791 //pakketyper : TStrings;
4058     pakketyper : TDictionary<String, Integer>;
4059     tmpAntal : Integer;
4060    
4061 torben 3076 time, timeSamlet : TTimingHelper;
4062 torben 2791
4063    
4064 torben 2645 antlin : Integer;
4065 torben 2656
4066 torben 2645 antlinIdag, antlinSenere : Integer;
4067 torben 2656
4068 torben 2792 //XmlFelter : TStrings;
4069     XmlFelter : TDictionary<String, Integer>;
4070 torben 2645
4071     begin
4072 torben 2791
4073    
4074 torben 2792 XmlFelter := TDictionary<String, Integer>.Create;
4075 torben 2791 pakketyper := TDictionary<String, Integer>.Create;
4076 torben 2792
4077 torben 2645 linienr := 0;
4078     ListBox2.Clear;
4079     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
4080     logTekst := 'Henter oversigt over pakker der endnu ikke er modtaget';
4081     SkrivScanningLogFil(logTekst);
4082     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4083     begin
4084     StedKode := BladhusStedKode[BladhusSted];
4085     end
4086     else
4087     begin
4088     StedKode := Sted;
4089     end;
4090    
4091 torben 2791 Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4092 torben 2656
4093 torben 2689
4094 torben 2791
4095 torben 2689 if (Scanningtype = '7') then
4096 torben 2645 begin
4097 torben 3087 URLStr := Format(Config.UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4098 torben 2645 end
4099 torben 2689 else if (Scanningtype = '6') then
4100     begin
4101 torben 3087 URLStr := Format(Config.UrlPakkeshopManglendeReturScanninger, [StedKode]);
4102 torben 2689 end
4103 torben 2645 else if (Scanningtype = '5') then
4104     begin
4105 torben 3087 URLStr := Format(Config.UrlPakkeshopManglendeScanninger, [StedKode]);
4106 torben 2645 end
4107     else if (Scanningtype = '1') then
4108     begin
4109 torben 3087 URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'B2']);
4110 torben 2645 end
4111     else if (Scanningtype = '4') then
4112     begin
4113 torben 3087 URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'A2']); // Budleveringer
4114 torben 2645 end
4115     else
4116     begin
4117     exit;
4118     end;
4119     // 20150310: slut
4120    
4121 torben 3076 time := TTimingHelper.create(); //DEBUG
4122     timeSamlet := TTimingHelper.create(); //DEBUG
4123    
4124 torben 2645 try
4125     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4126     // URLStr := string(Utf8Encode(URLStr));
4127     WebSvar := IdHTTP1.Get(URLStr);
4128     except
4129     on e:EIdConnClosedGracefully do
4130     begin
4131     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4132     WebSvar := IdHTTP1.Get(URLStr);
4133 torben 3048
4134    
4135    
4136 torben 2645 end;
4137     on e:exception do
4138     begin
4139     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4140     logTekst := 'Fejl i web forespørgsel: '+e.Message;
4141     SkrivScanningLogFil(logTekst);
4142     raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4143     end;
4144     end;
4145     try
4146 torben 3076 time.stop('HTTP Load'); //DEBUG
4147    
4148 torben 2645 XMLDocument1.LoadFromXML(WebSvar);
4149    
4150 torben 3076 time.stop('XML Load'); //DEBUG
4151 torben 2656
4152 torben 3076
4153    
4154    
4155    
4156    
4157 torben 2645 antlin := 0;
4158     antlinIdag := 0;
4159     antlinSenere := 0;
4160 torben 2656
4161 torben 2645 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4162     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4163     if Node.NodeType = ntElement then begin
4164     if Node.NodeName = 'Stregkode' then
4165     begin
4166 torben 2792 Inc(antlin);
4167 torben 2645 // 20150306: start
4168     if not VarIsNull(Node.NodeValue) then
4169     begin
4170     if (pos('(', Node.NodeValue) = 0) then
4171     begin
4172 torben 2792 Inc(antlinIdag);
4173 torben 2645 end
4174     else
4175     begin
4176 torben 2792 Inc(antlinSenere);
4177 torben 2645 end;
4178     end;
4179     // 20150306: slut
4180     end;
4181     end;
4182 torben 2792 if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4183     begin
4184     XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4185     XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4186     end
4187 torben 2645 else
4188 torben 2792 begin
4189     XmlFelter.Add(Node.NodeName, 1);
4190     end;
4191 torben 2645
4192     end;
4193     antalLiniefelter := XmlFelter.Count;
4194     antalFelterFundet := 0;
4195     SetLength(stregkoderMedTjekkodeArray, 0); // reset fra tidligere brug
4196     SetLength(stregkoderMedTjekkodeArray, antlin); // sæt antal elementer i array
4197 torben 2656
4198 torben 3076 time.stop('Antal Linier');//DEBUG
4199 torben 2791
4200     Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4201    
4202 torben 2645 logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4203     if (antlinSenere > 0) then
4204     begin
4205     logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4206     end;
4207     logTekst := logTekst + '.';
4208 torben 2656
4209 torben 2645 SkrivScanningLogFil(logTekst);
4210 torben 2794
4211    
4212 torben 2645 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4213     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4214     if Node.NodeType = ntElement then begin
4215     if Node.NodeName = 'Stregkode' then begin
4216     if not VarIsNull(Node.NodeValue) then
4217     stregkode := Node.NodeValue;
4218     antalFelterFundet := antalFelterFundet + 1;
4219 torben 2794 end
4220     else if Node.NodeName = 'ModtagerNavn' then begin
4221 torben 2645 if not VarIsNull(Node.NodeValue) then
4222     modtagernavn := Node.NodeValue;
4223     antalFelterFundet := antalFelterFundet + 1;
4224 torben 2794 end
4225     else if Node.NodeName = 'ModtagerAdresse' then begin
4226 torben 2645 if not VarIsNull(Node.NodeValue) then
4227     modtageradresse := Node.NodeValue;
4228     antalFelterFundet := antalFelterFundet + 1;
4229 torben 2794 end
4230     else if Node.NodeName = 'Kommentar' then begin
4231 torben 2645 if not VarIsNull(Node.NodeValue) then
4232     kommentar := Node.NodeValue;
4233     antalFelterFundet := antalFelterFundet + 1;
4234 torben 2794 end
4235     else if Node.NodeName = 'PakkeType' then begin
4236 torben 2645 if not VarIsNull(Node.NodeValue) then
4237     pakketype := Node.NodeValue;
4238     antalFelterFundet := antalFelterFundet + 1;
4239 torben 2791 if ( pakketyper.ContainsKey(pakketype) ) then
4240     begin
4241     pakketyper.TryGetValue(pakketype, tmpAntal);
4242     pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4243     end
4244 torben 2645 else
4245 torben 2791 pakketyper.Add(pakketype, 1);
4246 torben 2794 end
4247     else if Node.NodeName = 'TjekkodeStatus' then begin
4248 torben 2645 if not VarIsNull(Node.NodeValue) then
4249     tjekkodestatus := Node.NodeValue;
4250     antalFelterFundet := antalFelterFundet + 1;
4251     if (tjekkodestatus = '-1') then
4252     begin
4253 torben 2704
4254 torben 2645 if (pos(' ', stregkode) > 0) then
4255     begin
4256 torben 2682 stregkoderMedTjekkodeArray[linienr] := TUtils.split(stregkode, ' ', 2); // Fjerner lige en evt. fremtidig dato fra feltet
4257 torben 2645 end
4258     else
4259     begin
4260     stregkoderMedTjekkodeArray[linienr] := stregkode;
4261     end;
4262 torben 2656 linienr := linienr + 1;
4263 torben 2645 end;
4264     end;
4265 torben 2794
4266    
4267 torben 2645 if antalFelterFundet = antalLiniefelter then
4268     begin
4269     if (ScanningType = '1') then
4270     ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4271     else if (ScanningType = '4') then
4272     ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
4273     else if (ScanningType = '5') then
4274     ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4275     else
4276     ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar);
4277     antalFelterFundet := 0;
4278     tjekkodestatus := '';
4279     end;
4280     end;
4281     end;
4282    
4283 torben 2794
4284 torben 3076 time.stop('Fyld Listbox2');//DEBUG
4285    
4286    
4287 torben 2792 Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4288 torben 2791
4289 torben 2792
4290 torben 2791 for pakketype in pakketyper.Keys do
4291     begin
4292     pakketyper.TryGetValue(pakketype, tmpAntal);
4293     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4294     end;
4295    
4296     // Free up the dictionary object
4297 torben 2645 pakketyper.Free;
4298 torben 2791
4299    
4300    
4301 torben 2645 // ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
4302     logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4303     if (antlinSenere > 0) then
4304     begin
4305     logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4306     end;
4307     logTekst := logTekst + '.';
4308     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4309     if (antlinSenere > 0) then
4310     begin
4311     StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
4312     end
4313     else
4314     begin
4315     StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4316     end;
4317    
4318     if (Scanningtype = '1') then
4319     begin
4320     //antlinIdag := 9876; // til test af boksens udseende ved stort tal
4321     PanelManglendePakker1.Caption := IntToStr(antlinIdag + antlinSenere);
4322     if (antlinIdag + antlinSenere > 0) then
4323     begin
4324     PanelManglendePakker1.Visible := true;
4325     end
4326     else
4327     begin
4328     PanelManglendePakker1.Visible := false;
4329     end;
4330     end;
4331    
4332     if (Scanningtype = '2') then
4333     begin
4334     PanelManglendePakker2.Caption := IntToStr(antlinIdag + antlinSenere);
4335     if (antlinIdag + antlinSenere > 0) then
4336     begin
4337     PanelManglendePakker2.Visible := true;
4338     end
4339     else
4340     begin
4341     PanelManglendePakker2.Visible := false;
4342     end;
4343     end;
4344    
4345     if (Scanningtype = '3') then
4346     begin
4347     PanelManglendePakker3.Caption := IntToStr(antlinIdag + antlinSenere);
4348     if (antlinIdag + antlinSenere > 0) then
4349     begin
4350     PanelManglendePakker3.Visible := true;
4351     end
4352     else
4353     begin
4354     PanelManglendePakker3.Visible := false;
4355     end;
4356     end;
4357    
4358     if (Scanningtype = '4') then
4359     begin
4360     PanelManglendePakker4.Caption := IntToStr(antlinIdag + antlinSenere);
4361     if (antlinIdag + antlinSenere > 0) then
4362     begin
4363     PanelManglendePakker4.Visible := true;
4364     end
4365     else
4366     begin
4367     PanelManglendePakker4.Visible := false;
4368     end;
4369     end;
4370    
4371     if (Scanningtype = '5') then
4372     begin
4373     PanelManglendePakker5.Caption := IntToStr(antlinIdag + antlinSenere);
4374     if (antlinIdag + antlinSenere > 0) then
4375     begin
4376     PanelManglendePakker5.Visible := true;
4377     end
4378     else
4379     begin
4380     PanelManglendePakker5.Visible := false;
4381     end;
4382     end;
4383    
4384     if (Scanningtype = '6') then
4385     begin
4386     PanelManglendePakker6.Caption := IntToStr(antlinIdag + antlinSenere);
4387     if (antlinIdag + antlinSenere > 0) then
4388     begin
4389     PanelManglendePakker6.Visible := true;
4390     end
4391     else
4392     begin
4393     PanelManglendePakker6.Visible := false;
4394     end;
4395     end;
4396    
4397     except on e:exception do
4398     begin
4399     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4400     logTekst := 'Fejl i XML-format: '+e.Message;
4401     SkrivScanningLogFil(logTekst);
4402     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4403     end;
4404     end;
4405    
4406 torben 3076 time.stop('Done');//DEBUG
4407     timeSamlet.stop('SamletTid');//DEBUG
4408    
4409    
4410 torben 2645 end;
4411    
4412     procedure TMainForm.IndlesScanningLogFil();
4413     var
4414     SomeTxtFile : TextFile;
4415     buffer : string;
4416     S: string;
4417     idag, imorgen : TDateTime;
4418     imorgenYmd : string;
4419     logFilnavn : string;
4420    
4421     begin
4422     idag := Now;
4423     imorgen := IncDay(idag, 1); //adds 1 day(s)
4424     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4425     if (FormatDateTime('hh:nn',idag) < '12:00') then
4426     begin
4427     imorgen := idag;
4428     end;
4429     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4430     logFilnavn := 'Logs/Scanning' + imorgenYmd + '.log';
4431     if FileExists(logFilnavn) then
4432     begin
4433     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæses.');
4434     logTekst := logFilnavn+' indlæses.';
4435     SkrivScanningLogFil(logTekst);
4436     AssignFile(SomeTxtFile, logFilnavn);
4437     try
4438     Reset(SomeTxtFile);
4439     while not EOF(SomeTxtFile) do
4440     begin
4441     ReadLn(SomeTxtFile, buffer) ;
4442     S := buffer;
4443     ListBox1.Items.Insert(0, S);
4444     end;
4445     finally
4446     CloseFile(SomeTxtFile);
4447     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæst.');
4448     ListBox1.Items.Insert(0,'');
4449     ListBox1.Items.Insert(0,'');
4450     ListBox1.Items.Insert(0,'');
4451     ListBox1.Items.Insert(0,'');
4452     ListBox1.Items.Insert(0,'');
4453     ListBox1.Items.Insert(0,'');
4454     end;
4455     end;
4456     end;
4457    
4458     procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4459     var
4460     SomeTxtFile : TextFile;
4461     idag, imorgen : TDateTime;
4462     imorgenYmd : string;
4463     logFilnavn : string;
4464 torben 2677 //error : Integer;
4465 torben 2645
4466     begin
4467     if (SkrivLog = '1') then
4468     begin
4469     idag := Now;
4470     imorgen := IncDay(idag, 1); //adds 1 day(s)
4471     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4472     if (FormatDateTime('hh:nn',idag) < '12:00') then
4473     begin
4474     imorgen := idag;
4475     end;
4476     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4477     logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4478     // Get the current directory
4479     // dir := GetCurrentDir;
4480     // ShowMessage('Current directory = '+dir);
4481     // logFilnavn := dir + '\Logs\' + 'Scanning' + imorgenYmd + '.log';
4482     // ShowMessage('logFilnavn = '+logFilnavn);
4483    
4484     if not DirectoryExists('Logs') then
4485     begin
4486     CreateDir('Logs');
4487     end;
4488    
4489     AssignFile(SomeTxtFile, logFilnavn);
4490     if FileExists(logFilnavn) then
4491     begin
4492     try
4493     try
4494     Append(SomeTxtFile);
4495     WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
4496     except on e:exception do
4497     //ShowMessageFmt('File create failed with error %d',[error]);
4498     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke skrive til log filen...');
4499     end;
4500     finally
4501     CloseFile(SomeTxtFile);
4502     end;
4503     end
4504     else
4505     begin
4506     try
4507     try
4508     ReWrite(SomeTxtFile);
4509     WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
4510     except on e:exception do
4511     // ShowMessageFmt('File create failed with error %d',[error]);
4512     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke oprette/skrive til log filen...');
4513     end;
4514     finally
4515     CloseFile(SomeTxtFile);
4516     end;
4517     end;
4518     end;
4519     end;
4520    
4521     procedure TMainForm.IndlesRuteskiftFil(var filnavn : string);
4522     var
4523     SomeTxtFile : TextFile;
4524     buffer : string;
4525     linnr : integer;
4526     S: string;
4527     A: TStrArray;
4528     idag, imorgen : TDateTime;
4529     imorgenYmd : string;
4530    
4531     begin
4532     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
4533     logTekst := filnavn+' indlæses.';
4534     SkrivScanningLogFil(logTekst);
4535     SetLength(ruteHverdagArray, 1);
4536     SetLength(ruteLordagArray, 1);
4537     idag := Now;
4538     imorgen := IncDay(idag, 1); //adds 1 day(s)
4539     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4540     if (FormatDateTime('hh:nn',idag) < '12:00') then
4541     begin
4542     imorgen := idag;
4543     end;
4544     imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
4545     if FileExists(filnavn) then
4546     begin
4547     AssignFile(SomeTxtFile, filnavn);
4548     linnr := 0;
4549     try
4550     Reset(SomeTxtFile);
4551     while not EOF(SomeTxtFile) do
4552     begin
4553     ReadLn(SomeTxtFile, buffer) ;
4554     S := buffer;
4555     SetLength(A,0);
4556 torben 2682 TUtils.Explode(A, ';', S);
4557 torben 2645 if (length(A) < 2) then
4558     begin
4559 torben 2682 TUtils.Explode(A, ',', S);
4560 torben 2645 end;
4561     if (length(A) > 1) then
4562     begin
4563     SetLength(ruteHverdagArray, linnr+1);
4564     SetLength(ruteLordagArray, linnr+1);
4565     ruteHverdagArray[linnr] := A[0];
4566     ruteLordagArray[linnr] := A[1];
4567     linnr := linnr+1;
4568     end;
4569     end;
4570     finally
4571     //ShowMessage(IntToStr(length(A)));
4572     CloseFile(SomeTxtFile);
4573     //ShowMessage(IntToStr(length(ruteHverdagArray)));
4574     if (linnr > 0) then
4575     begin
4576     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
4577     logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
4578     SkrivScanningLogFil(logTekst);
4579     end
4580     else
4581     begin
4582     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4583     logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4584     SkrivScanningLogFil(logTekst);
4585 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
4586 torben 2645 end;
4587     end;
4588     end
4589     else
4590     begin
4591     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
4592     logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
4593     SkrivScanningLogFil(logTekst);
4594 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
4595 torben 2645 end;
4596     end;
4597    
4598     procedure TMainForm.IndlesKontrolFil(var filnavn : string);
4599     var
4600     SomeTxtFile : TextFile;
4601     buffer : string;
4602     linnr : integer;
4603     S: string;
4604     A: TStrArray;
4605     idag, imorgen : TDateTime;
4606     imorgenYmd : string;
4607    
4608     begin
4609     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
4610     logTekst := filnavn+' indlæses.';
4611     SkrivScanningLogFil(logTekst);
4612     SetLength(ruteArray, 1);
4613     SetLength(korelisteArray, 1);
4614     idag := Now;
4615     imorgen := IncDay(idag, 1); //adds 1 day(s)
4616     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4617     if (FormatDateTime('hh:nn',idag) < '12:00') then
4618     begin
4619     imorgen := idag;
4620     end;
4621     imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
4622     if FileExists(filnavn) then
4623     begin
4624     AssignFile(SomeTxtFile, filnavn);
4625     linnr := 0;
4626     try
4627     Reset(SomeTxtFile);
4628     while not EOF(SomeTxtFile) do
4629     begin
4630     ReadLn(SomeTxtFile, buffer) ;
4631     S := buffer;
4632     SetLength(A,0);
4633 torben 2682 TUtils.Explode(A, ';', S);
4634 torben 2645 if (length(A) < 3) then
4635     begin
4636 torben 2682 TUtils.Explode(A, ',', S);
4637 torben 2645 end;
4638     if (A[0]=imorgenYmd) then
4639     begin
4640     if (length(A) > 2) then
4641     begin
4642     SetLength(ruteArray, linnr+1);
4643     SetLength(korelisteArray, linnr+1);
4644     ruteArray[linnr] := A[1];
4645     korelisteArray[linnr] := A[2];
4646     linnr := linnr+1;
4647     end;
4648     end;
4649     end;
4650     finally
4651     //ShowMessage(IntToStr(length(A)));
4652     CloseFile(SomeTxtFile);
4653     //ShowMessage(IntToStr(length(ruteArray)));
4654     if (linnr > 0) then
4655     begin
4656     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
4657     logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
4658     SkrivScanningLogFil(logTekst);
4659     end
4660     else
4661     begin
4662     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4663     logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4664     SkrivScanningLogFil(logTekst);
4665 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
4666 torben 2645 end;
4667     end;
4668     end
4669     else
4670     begin
4671     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
4672     logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
4673     SkrivScanningLogFil(logTekst);
4674 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
4675 torben 2645 end;
4676     end;
4677    
4678     //
4679     // Bladhus ***
4680     //
4681     function TMainForm.TjekKoreliste(var RuteNummer, Koreliste : string) : string;
4682     var
4683     i : Integer;
4684     svar : String;
4685    
4686     begin
4687     //ShowMessage('Køreliste 1: '+korelisteArray[0]);
4688     // ShowMessage('Kontrollerer rute ' + RuteNummer + ' og køreliste ' + Koreliste + ' i kontrolfilen');
4689     // NB. Der er rod i begreberne RuteNummer og Koreliste - nogle steder er de byttet rundt!
4690     //ShowMessage('Kontrollerer rute ' + Koreliste + ' og køreliste ' + RuteNummer + ' i kontrolfilen');
4691    
4692     svar := 'Køreliste ikke i kontrolfil';
4693     case BladhusSted of
4694     01 :
4695     begin;
4696     for i := 0 to length(ruteArray)-1 do
4697     begin
4698     if (Koreliste=ruteArray[i]) then
4699     begin
4700     svar := korelisteArray[i]; // returnerer den forventede køreliste
4701     end;
4702     end;
4703     end;
4704     // 02 : begin;
4705     //ShowMessage('02') ;
4706     // end;
4707     03 : begin;
4708     for i := 0 to length(ruteArray)-1 do
4709     begin
4710     if (Koreliste=ruteArray[i]) then
4711     begin
4712     svar := korelisteArray[i]; // returnerer den forventede køreliste
4713     end;
4714     end;
4715     end;
4716     // 04 : begin;
4717     //ShowMessage('04') ;
4718     // end;
4719     else
4720     svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
4721     end;
4722     if (RuteNummer = 'Rutenr') then // fra printertest funktionen
4723     svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
4724    
4725     result := svar;
4726     end;
4727    
4728 torben 2659 procedure TMainForm.VisAlarmSkaerm(strMessage: string);
4729 torben 2657 begin
4730     //ShowMessage('Ændring ikke tilladt');
4731     // Her skal komme en 'rød skærm' alarm
4732 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
4733 torben 2662 MainForm.Color := clRed;
4734 torben 2659
4735 torben 2662
4736 torben 2657 RuteNummerST.Caption := '';
4737     BoghandlerNavnST.Caption := '';
4738 torben 2668 btnNulstil.Visible := true;
4739 torben 2662
4740     if (strMessage <> '') then
4741     begin
4742     ListBox1.Items.Insert(0, strMessage);
4743     KommentarST.Caption := strMessage;
4744     end;
4745    
4746 torben 3036 Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4747    
4748 torben 2657 end;
4749    
4750 torben 2645 function TMainForm.getProddato() : TDate;
4751     var
4752     idag, imorgen : TDateTime;
4753     imorgenYmd : string;
4754    
4755     begin
4756     idag := Now;
4757     imorgen := IncDay(idag, 1); //adds 1 day(s)
4758     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4759     if (FormatDateTime('hh:nn',idag) < '12:00') then
4760     begin
4761     imorgen := idag;
4762     end;
4763     imorgenYmd := FormatDateTime('dd-mm-yyyy',imorgen);
4764     result := StrToDateTime(imorgenYmd);
4765     end;
4766    
4767     function TMainForm.getProddag() : String;
4768     begin
4769     // ShowMessage(LongDayNames[DayOfWeek(getProddato())]);
4770 torben 2650 result := FormatSettings.LongDayNames[DayOfWeek(getProddato())];
4771 torben 2645 //result := 'lørdag'; // MENS VI TESTER kan vi fremtvinge lørdag situation her
4772     end;
4773    
4774     function TMainForm.retRutenummer(rutenummer : String) : String;
4775     var
4776     i : Integer;
4777     svar : String;
4778    
4779     begin
4780     svar := rutenummer;
4781     case BladhusSted of
4782     01 :
4783     begin;
4784     //ShowMessage('01') ;
4785     end;
4786     // 02 : begin;
4787     //ShowMessage('02') ;
4788     // end;
4789     03 : begin;
4790     for i := 0 to length(ruteHverdagArray)-1 do
4791     begin
4792     if (rutenummer=ruteHverdagArray[i]) then
4793     begin
4794     svar := ruteLordagArray[i]; // returnerer den forventede lørdagsrute
4795     end;
4796     end;
4797     end;
4798     // 04 : begin;
4799     //ShowMessage('04') ;
4800     // end;
4801     else
4802     svar := rutenummer; // Dette svarer til at rute ikke skal ændres
4803     end;
4804     result := svar;
4805     end;
4806    
4807    
4808     procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4809     begin
4810     if Scanogstjekkoden1.Checked then
4811     begin
4812 torben 2654 chkScanTjekkode.Checked := true;
4813 torben 2645 end
4814     else
4815     begin
4816 torben 2654 chkScanTjekkode.Checked := false;
4817 torben 2645 end;
4818     end;
4819    
4820    
4821 torben 3038 //Nedarvet fra IParentForm
4822     procedure TMainForm.Msg( msg : string);
4823     begin
4824     ShowMessage(msg);
4825     end;
4826 torben 2668
4827 torben 2705 //Nedarvet fra IParentForm
4828     procedure TMainForm.LogMessage( msg : string);
4829     begin
4830     ListBox1.Items.Insert(0, msg);
4831     SkrivScanningLogFil(msg);
4832     end;
4833 torben 2685
4834 torben 2668
4835 torben 2705 //Nedarvet fra IParentForm
4836     procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4837 torben 2645 begin
4838    
4839 torben 2705 PrinterstatusStaticText1.Caption := txt;
4840     if (alert) then
4841 torben 2645 begin
4842 torben 2705 PrinterstatusStaticText1.Font.Color := clBlack;
4843     PrinterstatusStaticText1.Color := MainForm.Color;
4844     PrinterstatusStaticText1.Transparent := True;
4845 torben 2645 end
4846     else
4847     begin
4848 torben 2705 PrinterstatusStaticText1.Font.Color := clRed;
4849     PrinterstatusStaticText1.Color := clWhite;
4850     PrinterstatusStaticText1.Transparent := true;
4851 torben 2645 end;
4852     end;
4853    
4854 torben 2705 //Nedarvet fra IParentForm
4855     function TMainForm.GetFormObject() : TForm;
4856     begin
4857     Result := self;
4858     end;
4859 torben 2645
4860     end.
4861    

  ViewVC Help
Powered by ViewVC 1.1.20