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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20