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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20