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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20