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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20