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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20