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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3108 - (hide annotations) (download)
Mon Aug 29 14:03:14 2016 UTC (7 years, 9 months ago) by torben
File size: 163407 byte(s)
Ret fejl i "Uden for specifikation"

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

  ViewVC Help
Powered by ViewVC 1.1.20