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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20