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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20