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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3123 - (hide annotations) (download)
Tue Oct 18 13:57:46 2016 UTC (7 years, 7 months ago) by torben
File size: 164305 byte(s)
6_3_3
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 3123 // if (PrintNyLabel = True OR chkAltidPrintLabel.Checked = True) then
2240     // begin
2241     // LabelPrint.PrintLabel( Stregkode );
2242     // end;
2243     //
2244     // exit;
2245 torben 3100
2246 torben 3054 if menuDaoDirekte1.Checked then
2247 torben 2682 RuteNummerST.Color := TUtils.HexToTColor(Farve);
2248 torben 2645
2249     pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2250     if pakkeErScannet = 0 then
2251     begin
2252     pakkeErScannet := pos('PAKKE ER SCANNET', Kommentar);
2253     end;
2254     if pakkeErScannet = 0 then
2255     begin
2256     pakkeErScannet := pos('PAKKE ER SCANNET', BoghandlerNavn);
2257     end;
2258     pakkeForkertSted := pos('burde være hos', Kommentar);
2259    
2260 torben 2656
2261 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
2262 torben 2656
2263 torben 2645 begin
2264     if (RuteNummer = 'Ukendt') then
2265     begin
2266     repeat
2267     begin
2268     ClickedOK := InputQuery('Ukendt pakke', 'Indtast kundenummer', BoghandlerNummer);
2269     end
2270     until (ClickedOK and (Length(BoghandlerNummer) > 2) and (Length(BoghandlerNummer) < 9)) or not ClickedOK;
2271     if not ClickedOK then
2272     begin
2273     exit;
2274     end;
2275     if (Length(BoghandlerNummer) > 2) then
2276     begin
2277     InitScreen();
2278     HentPakkeInfoFraServer(Sted, StregKode, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2279     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghandlerNummer);
2280     end;
2281     end;
2282     end
2283     else
2284 torben 3054 if menuDaoDirekte1.Checked then
2285 torben 2645 begin
2286     if (BoghandlerNavn = 'Ukendt pakke') then
2287     begin
2288     PrintNyLabel := false;
2289 torben 2656
2290 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
2291 torben 2645 MainForm.Color := clRed;
2292 torben 2668 btnNulstil.Visible := true;
2293 torben 2656
2294 torben 2645 end
2295     else
2296     begin
2297     nytRuteNummer := retRutenummer(RuteNummer);
2298     if (nytRuteNummer <> RuteNummer) then
2299     begin
2300     PrintNyLabel := true;
2301     RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2302     nyFarve := Farve;
2303 torben 2682 RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2304 torben 2645 List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2305     RuteNummer := nytRuteNummer;
2306     ListBox1.Items.Insert(0,List1Msg);
2307     logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2308     SkrivScanningLogFil(logTekst);
2309 torben 2656
2310 torben 3099 // if (Config.PrinterNavn = 'Ingen') then
2311     // begin
2312     // PrintNyLabel := false;
2313     // end;
2314 torben 2656
2315 torben 2645 if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2316     begin
2317 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
2318 torben 2645 MainForm.Color := clRed;
2319 torben 2668 btnNulstil.Visible := true;
2320 torben 2645 end;
2321 torben 2656
2322 torben 2645 end;
2323     kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2324     if (kontrolKoreliste <> RuteNummer) then
2325     begin
2326     PrintNyLabel := true;
2327     List1msg := TimeToStr(now) + '; ' + BoghandlerNavn + '; ' + 'Forkert køreliste ' + '; ' + Koreliste + ' -> ' + kontrolKoreliste;
2328     if (length(kontrolKoreliste) > 20) then // Skal ikke printe label når 'Køreliste ikke i kontrolfil'
2329     begin
2330     PrintNyLabel := false;
2331     RuteNummerST.Caption := RuteNummerST.Caption + ' -> ' + kontrolKoreliste;
2332     end
2333     else
2334     begin
2335     RuteNummerST.Caption := RuteNummerST.Caption + ' -> Ny køreliste: ' + kontrolKoreliste;
2336     end;
2337     ListBox1.Items.Insert(0,List1Msg);
2338     logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2339     SkrivScanningLogFil(logTekst);
2340 torben 2656
2341 torben 2645 if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2342     begin
2343 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
2344 torben 2645 MainForm.Color := clRed;
2345 torben 2668 btnNulstil.Visible := true;
2346 torben 2645 end;
2347 torben 2656
2348 torben 2645 end;
2349     end;
2350    
2351     end;
2352    
2353 torben 3054 if menuDaoDirekte1.Checked then
2354 torben 2645 begin
2355     case BladhusSted of
2356     00 : begin;
2357     // 20150304: start
2358     // if PrintNyLabel and (kontrolKoreliste <> '') or (RuteNummer = 'Rutenr') then
2359     // // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2360     // // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2361     // // Det holder dog ikke for DAO DIREKTE fordi Schenker altid skal printes, da deres label mangler DAO ruteoplysninger553915076624451294
2362     if PrintNyLabel or (RuteNummer = 'Rutenr') then
2363     // 20150304: slut
2364     begin
2365 torben 3123 //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2366     LabelPrint.PrintLabel( Stregkode );
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 3123 //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2375     LabelPrint.PrintLabel( Stregkode );
2376 torben 2645 end;
2377     end;
2378     02 : begin;
2379     if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2380     begin
2381 torben 3123 //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2382     LabelPrint.PrintLabel( Stregkode );
2383 torben 2645 end;
2384     end;
2385     03 : begin;
2386 torben 2661 if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2387 torben 2645 // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2388     // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2389     begin
2390 torben 3123 //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2391     LabelPrint.PrintLabel( Stregkode );
2392 torben 2645 end;
2393     end;
2394     04 : begin;
2395     if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2396     begin
2397 torben 3123 //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2398     LabelPrint.PrintLabel( Stregkode );
2399 torben 2645 end;
2400     end;
2401     else
2402     ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
2403     end;
2404     end;
2405    
2406     // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her
2407 torben 3054 if menuNatXpress1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
2408 torben 2645 begin
2409     exit;
2410     end;
2411    
2412 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
2413 torben 2645 begin
2414     end
2415     else
2416     begin
2417 torben 3090 if ( (Config.PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2418 torben 2645 begin
2419     logTekst := 'Printer label type ';
2420 torben 2652 if (chkAltidPrintLabel.Checked) then
2421 torben 2645 begin
2422     logTekst := logTekst + 'Alle ';
2423     end
2424     else if (PrintNyLabel) then
2425     begin
2426     logTekst := logTekst + 'Rute ';
2427     end
2428     else
2429     begin
2430     logTekst := logTekst + 'Ukendt ';
2431     end;
2432     logTekst := logTekst + ' for '+BoghandlerNavn;
2433     SkrivScanningLogFil(logTekst);
2434 torben 2705
2435 torben 3123 //LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2436     LabelPrint.PrintLabel( Stregkode );
2437 torben 3098
2438 torben 2645 end;
2439     end;
2440    
2441     end;
2442    
2443 torben 2656
2444    
2445 torben 2655 procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2446 torben 2645 begin
2447 torben 3055 menuStorePakker.Checked := true;
2448 torben 2655 radioStorPakke.Checked := true;
2449 torben 2645 end;
2450    
2451 torben 2655 procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2452 torben 2645 begin
2453 torben 3055 menuSmaaPakker.Checked := true;
2454 torben 2655 radioLillePakke.Checked := true;
2455 torben 2645 end;
2456    
2457    
2458 torben 2653 procedure TMainForm.chkSporgEfterKundeClick(Sender: TObject);
2459 torben 2645 begin
2460 torben 2653 if chkSporgEfterKunde.Checked then
2461 torben 2645 begin
2462     Sprgefterboghandlernummer1.Checked := true;
2463     end
2464     else
2465     begin
2466     Sprgefterboghandlernummer1.Checked := false;
2467     end;
2468     end;
2469    
2470    
2471 torben 3117 procedure TMainForm.chkUdenforSpecifikationClick(Sender: TObject);
2472     begin
2473     if (chkUdenforSpecifikation.Checked = true) then
2474     begin
2475     chkEmballageRepareret.Checked := false;
2476     end;
2477     end;
2478    
2479     procedure TMainForm.chkEmballageRepareretClick(Sender: TObject);
2480     begin
2481     if (chkEmballageRepareret.Checked = true) then
2482     begin
2483     chkUdenforSpecifikation.Checked := false;
2484     end;
2485     end;
2486    
2487 torben 2652 procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2488 torben 2645 begin
2489 torben 2652 if chkAltidPrintLabel.Checked then
2490 torben 2645 begin
2491     Altidprintepakkelabel1.Checked := true;
2492     end
2493     else
2494     begin
2495     Altidprintepakkelabel1.Checked := false;
2496     end;
2497    
2498     end;
2499    
2500 torben 3117
2501    
2502 torben 2654 procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2503 torben 2645 begin
2504 torben 2654 if chkScanTjekkode.Checked then
2505 torben 2645 begin
2506     Scanogstjekkoden1.Checked := true;
2507     end
2508     else
2509     begin
2510     Scanogstjekkoden1.Checked := false;
2511     end;
2512     end;
2513    
2514 torben 3054 procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2515 torben 2645 begin
2516     Scanningtype := '5';
2517     InitPakkeshoplevering();
2518     NulstilAutomatiskValg();
2519     end;
2520    
2521     procedure TMainForm.NulstilAutomatiskValg();
2522     begin
2523 torben 3054 menuAutomatiskvalg1.Checked := false;
2524 torben 2645 PanelValgA.Color := clBtnFace;
2525     PanelValgA.Font.Color := clWindowText;
2526 torben 2656
2527 torben 2645 if (SpecialVersionSted = '01')
2528 torben 2656 or (SpecialVersionSted = '02')
2529     or (SpecialVersionSted = '03')
2530     or (SpecialVersionSted = '04') then
2531 torben 2645 begin
2532     // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)
2533     PanelValgA.Enabled := false;
2534     PanelValgA.Font.Color := clInactiveCaption;
2535 torben 3054 menuAutomatiskvalg1.Enabled := false;
2536 torben 2645 end;
2537     // 20150317: slut
2538     end;
2539    
2540     procedure TMainForm.TjekkerUrls();
2541     const
2542     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2543     var
2544     urlFejl : Integer;
2545     begin
2546     urlFejl := 0;
2547     //UpdateScreen('', '', 'Tjekker forbindelsen...', '', ''); // virker ikke
2548     ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');
2549    
2550 torben 2703 try
2551     // Tjekker urls
2552     logTekst := 'Tjekker urls.';
2553     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2554     SkrivScanningLogFil(logTekst);
2555 torben 2645
2556    
2557    
2558 torben 2703 // Tjekker UrlNormal
2559     if PanelValg1.Enabled = true then
2560     begin
2561 torben 3087 TjekkerEnkeltUrl('UrlNormal', Config.UrlNormal, urlFejl);
2562 torben 2703 end;
2563 torben 2645
2564 torben 2703 // Tjekker UrlReturDAO
2565     if PanelValg2.Enabled = true then
2566     begin
2567 torben 3087 TjekkerEnkeltUrl('UrlReturDAO', Config.UrlReturDAO, urlFejl);
2568 torben 2703 end;
2569 torben 2645
2570 torben 2703 // Tjekker UrlReturBoghandler
2571     if PanelValg3.Enabled = true then
2572     begin
2573 torben 3087 TjekkerEnkeltUrl('UrlReturBoghandler', Config.UrlReturBoghandler, urlFejl);
2574 torben 2703 end;
2575 torben 2645
2576 torben 2703 // Tjekker UrlBudlevering
2577     if PanelValg4.Enabled = true then
2578     begin
2579 torben 3087 TjekkerEnkeltUrl('UrlBudlevering', Config.UrlBudlevering, urlFejl);
2580 torben 2703 end;
2581 torben 2645
2582 torben 2703 // Tjekker UrlPakkeshoplevering
2583     if PanelValg5.Enabled = true then
2584     begin
2585 torben 3087 TjekkerEnkeltUrl('UrlPakkeshoplevering', Config.UrlPakkeshoplevering, urlFejl);
2586 torben 2703 end;
2587 torben 2645
2588 torben 2703 // Tjekker UrlReturPakkeshop
2589     if PanelValg6.Enabled = true then
2590     begin
2591 torben 3087 TjekkerEnkeltUrl('UrlReturPakkeshop', Config.UrlReturPakkeshop, urlFejl);
2592 torben 2703 end;
2593 torben 2645
2594 torben 2703 // Tjekker UrlManglendeScanninger
2595     if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2596     begin
2597 torben 3087 TjekkerEnkeltUrl('UrlManglendeScanninger', Config.UrlManglendeScanninger, urlFejl);
2598 torben 2703 end;
2599 torben 2645
2600 torben 2703 // Tjekker UrlPakkeshopManglendeScanninger
2601     if PanelValg5.Enabled = true then
2602     begin
2603 torben 3087 TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', Config.UrlPakkeshopManglendeScanninger, urlFejl);
2604 torben 2703 end;
2605 torben 2689
2606 torben 2703 // Tjekker UrlPakkeshopManglendeReturScanninger
2607     if PanelValg6.Enabled = true then
2608     begin
2609 torben 3087 TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', Config.UrlPakkeshopManglendeReturScanninger, urlFejl);
2610 torben 2703 end;
2611 torben 2689
2612 torben 2703 // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2613     if PanelValg7.Enabled = true then
2614     begin
2615 torben 3087 TjekkerEnkeltUrl('UrlIndleveringsPakke', Config.UrlIndleveringsPakke, urlFejl);
2616     TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', Config.UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2617 torben 2703 end;
2618 torben 2645
2619 torben 2703 // Tjekker UrlEKLoverforsel
2620     if PanelValg1.Enabled = true then
2621     begin
2622 torben 3087 TjekkerEnkeltUrl('UrlEKLoverforsel', Config.UrlEKLoverforsel, urlFejl);
2623 torben 2703 end;
2624 torben 2656
2625 torben 2645
2626 torben 2703 // Tjekker UrlEKLoverforselPakkeshop
2627     if PanelValg5.Enabled = true then
2628     begin
2629 torben 3087 TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', Config.UrlEKLoverforselPakkeshop, urlFejl);
2630 torben 2703 end;
2631 torben 2656
2632 torben 2645
2633 torben 2703 // Tjekker UrlFindPakketype
2634 torben 3087 TjekkerEnkeltUrl('UrlFindPakketype', Config.UrlFindPakketype, urlFejl);
2635 torben 2645
2636 torben 2703 // Tjekker UrlSendPrograminfo
2637 torben 3087 TjekkerEnkeltUrl('UrlSendPrograminfo', Config.UrlSendPrograminfo, urlFejl);
2638 torben 2645
2639 torben 2703
2640    
2641     logTekst := 'urls er ok';
2642     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2643     SkrivScanningLogFil(logTekst);
2644    
2645     Except
2646 torben 3090 Config.TjekUrls := '-'; // markerer at der var fejl
2647 torben 2703
2648     end;
2649 torben 2645 end;
2650    
2651 torben 2703 procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2652     const
2653     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2654     begin
2655     if TUtils.CheckUrl(Url) then
2656    
2657     begin
2658     logTekst := UrlNavn + ' accepteret: ' + Url;
2659     SkrivScanningLogFil(logTekst);
2660     end
2661     else
2662     begin
2663     inc(urlFejl); // Optæller antal fejl
2664     logTekst := UrlNavn + ' svarer ikke: ' + Url;
2665     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2666 torben 3090 if Config.TjekUrls = '1' then
2667 torben 2703 begin
2668     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2669     end;
2670    
2671     SkrivScanningLogFil(logTekst);
2672    
2673 torben 3090 if Config.TjekUrls = '1' then
2674 torben 2703 begin
2675     ShowMessage(logTekst);
2676 torben 3087 Config.UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2677 torben 2703 Application.Terminate;
2678    
2679     raise Exception.Create('UrlFejl');
2680    
2681     end;
2682     end;
2683    
2684     end;
2685    
2686    
2687    
2688 torben 2645 procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2689     var
2690     SR: TSearchRec;
2691     dt: TDateTime;
2692     CreationTime: TFileTime;
2693     dtCreation: TDateTime;
2694     BemTxt : String;
2695     begin
2696     logTekst := 'Logfiler tjekkes for sletning.';
2697     SkrivScanningLogFil(logTekst);
2698     FileList.Insert(0,logTekst);
2699     if FindFirst(Path + '*.log', faAnyFile, SR) = 0 then // finder log filer
2700     begin
2701     repeat
2702     if (SR.Attr <> faDirectory) then
2703     begin
2704 torben 2677
2705 torben 2645 dt := fileDateToDateTime(SR.Time); // finder filens timestamp for seneste ændring
2706     CreationTime := SR.FindData.ftCreationTime; // finder filens timestamp for oprettelse
2707 torben 2695 dtCreation := TUtils.FileTime2DateTime(CreationTime); // finder filens timestamp for oprettelse
2708 torben 2645 // Selvom creation date godt kan være forskellig fra modified date,
2709     // skal vi alligevel altid tjekke filens alder ud fra modified date
2710     // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
2711     BemTxt := '';
2712     if (DaysBetween(now, dt) > 14) then // så er filen kandidat til at blive slettet
2713     begin
2714     BemTxt := ' (skal slettes)';
2715     end;
2716     logTekst := SR.Name + ' Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dt) + ' ' + BemTxt + ' ' + IntToStr(DaysBetween(now, dt)) + ' dage gammel';
2717     if DaysBetween(dtCreation, dt) > 1 then
2718     begin
2719     logTekst := logTekst + ' (Oprettet ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dtCreation) + ')';
2720     end;
2721     FileList.Insert(0,logTekst);
2722     SkrivScanningLogFil(logTekst);
2723     if BemTxt = ' (skal slettes)' then
2724     begin
2725     if DeleteFile(Path + SR.Name) then
2726     begin
2727     logTekst := 'Logfil er slettet.';
2728     FileList.Insert(0,logTekst);
2729     SkrivScanningLogFil(logTekst);
2730     end
2731     else
2732     begin
2733     logTekst := 'Logfil kunne IKKE slettes.';
2734     FileList.Insert(0,logTekst);
2735     SkrivScanningLogFil(logTekst);
2736     end;
2737     end;
2738     end;
2739     until FindNext(SR) <> 0;
2740     FindClose(SR);
2741     end;
2742     end;
2743    
2744 torben 2668 procedure TMainForm.btnNulstilClick(Sender: TObject);
2745 torben 2645 begin
2746     PakkeshopStregkode := '';
2747     PakkeshopTjekkode := '';
2748 torben 2668 btnNulstil.Visible := false;
2749 torben 2645 PakkeshopText1.Caption := 'Stregkode';
2750     BoghandlerStregkode := '';
2751     BoghandlerTjekkode := '';
2752     Stregkode := '';
2753     // 20150312: start
2754     if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2755     begin
2756     ShowMessage('Programmet afbrydes...');
2757 torben 3087 Config.UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2758 torben 2645 Application.Terminate;
2759     exit;
2760     end;
2761     // 20150312: slut
2762     InitScreen();
2763     // MainForm.Color := HexToTColor(Farve);
2764     if Farve <> '' then
2765     begin
2766 torben 2682 MainForm.Color := TUtils.HexToTColor(Farve);
2767 torben 2645 end;
2768 torben 3054 if (menuDaoDirekte1.Checked) then
2769 torben 2645 begin
2770     InitLillePakke();
2771     end;
2772     PrinterstatusStaticText1.Caption := '';
2773     PrinterstatusStaticText1.Color := MainForm.Color;
2774     end;
2775    
2776 torben 2650
2777 torben 2645 procedure TMainForm.PanelValg1Click(Sender: TObject);
2778     begin
2779     Scanningtype := '1';
2780     InitNatxpresslevering();
2781     NulstilAutomatiskValg();
2782     end;
2783    
2784     procedure TMainForm.PanelValg2Click(Sender: TObject);
2785     begin
2786     Scanningtype := '2';
2787     InitReturFraDao();
2788     NulstilAutomatiskValg();
2789     end;
2790    
2791     procedure TMainForm.PanelValg3Click(Sender: TObject);
2792     begin
2793     Scanningtype := '3';
2794     InitReturFraKunde();
2795     NulstilAutomatiskValg();
2796     end;
2797    
2798     procedure TMainForm.PanelValg4Click(Sender: TObject);
2799     begin
2800     Scanningtype := '4';
2801     InitDirektelevering();
2802     NulstilAutomatiskValg();
2803     end;
2804    
2805     procedure TMainForm.PanelValg5Click(Sender: TObject);
2806     begin
2807     Scanningtype := '5';
2808     InitPakkeshoplevering();
2809     NulstilAutomatiskValg();
2810     end;
2811    
2812     procedure TMainForm.PanelValg6Click(Sender: TObject);
2813     begin
2814     Scanningtype := '6';
2815     InitReturFraPakkeshop();
2816     NulstilAutomatiskValg();
2817     end;
2818    
2819 torben 2650
2820     procedure TMainForm.PanelValg7Click(Sender: TObject);
2821     begin
2822     Scanningtype := '7';
2823     InitIndleveringskode();
2824     NulstilAutomatiskValg();
2825    
2826     end;
2827    
2828 torben 2645 procedure TMainForm.PanelValgAClick(Sender: TObject);
2829     begin
2830     // Skal ikke toggle men bare sætte funktionen on
2831     // Fravælges ved at vælge en scanningstype
2832 torben 3054 menuAutomatiskvalg1.Checked := true;
2833 torben 2692 PanelValgA.Color := clGreen;
2834     PanelValgA.Font.Color := clWhite;
2835    
2836    
2837    
2838 torben 2645 end;
2839    
2840 torben 3054 procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2841 torben 2645 begin
2842     Scanningtype := '1';
2843     NulstilAutomatiskValg();
2844     InitNatxpresslevering();
2845     end;
2846    
2847     procedure TMainForm.Testforbindelsen1Click(Sender: TObject);
2848     var
2849     RuteNummer : String;
2850     Kommentar : String;
2851     BoghandlerNavn : String;
2852     Koreliste : String;
2853     Falsk : Boolean;
2854     SmsKode : String;
2855     DBKbane : String;
2856     Leveringssted : String;
2857     orgTjekUrls : String;
2858     begin
2859 torben 3090 orgTjekUrls := Config.TjekUrls;
2860     if (Config.TjekUrls = '1') or (Config.TjekUrls = '2') then
2861 torben 2645 begin
2862     TjekkerUrls();
2863     end;
2864 torben 3090 if Config.TjekUrls = '-' then
2865 torben 2645 begin
2866     //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
2867     RuteNummer := '';
2868     Kommentar := 'Se log vinduet';
2869     BoghandlerNavn := 'Fejl i forbindelse til server';
2870     Koreliste := '';
2871     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2872     // Her kommer en alarm og rød skærm
2873 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
2874 torben 2645 MainForm.Color := clRed;
2875 torben 2668 btnNulstil.Visible := true;
2876 torben 2645 end
2877     else
2878     begin
2879     Falsk := False;
2880 torben 2660
2881 torben 2645 HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
2882     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2883     SmsKode := '999999';
2884     DBKbane := '999';
2885     Leveringssted := 'XXX';
2886 torben 3107
2887    
2888 torben 2645 PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2889     FocusControl(StregkodeST);
2890     end;
2891 torben 3090 Config.TjekUrls := orgTjekUrls;
2892 torben 2645
2893     end;
2894    
2895     procedure TMainForm.Testprinter1Click(Sender: TObject);
2896     var
2897     RuteNummer : String;
2898     Kommentar : String;
2899     BoghandlerNavn : String;
2900     Koreliste : String;
2901     Falsk : Boolean;
2902     SmsKode : String;
2903     DBKbane : String;
2904     Leveringssted : String;
2905 torben 3107 LabelData : TLabelData;
2906 torben 2645 begin
2907     RuteNummer := 'Rutenr';
2908     Kommentar := '***** Kommentar *****';
2909     BoghandlerNavn := 'Modtagernavn';
2910     Falsk := False;
2911    
2912 torben 2660
2913 torben 2705 if (LabelPrint.GetPrinterCount() = 0) then
2914 torben 2645 begin
2915     ShowMessage('Der er ikke installeret en printer på denne PC.');
2916     end
2917 torben 3098 // else if Config.PrinterNavn = 'Ingen' then //Det giver ikke længere mening at kunne fravælge printer
2918     // begin
2919     // ShowMessage('Der er fravalgt printer i dette program.');
2920     // end
2921 torben 2645 else
2922     begin
2923     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2924 torben 3107 // SmsKode := '999999';
2925     // DBKbane := '999';
2926     // Leveringssted := 'XXX';
2927     // PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2928    
2929    
2930     LabelData := TLabelData.Create(nil);
2931     LabelData.LabelType := 'simpel';
2932     LabelData.SimpelLinie1 := '999999';
2933     LabelData.SimpelLinie2 := '999';
2934     LabelData.SimpelLinie3 := 'xxx';
2935     LabelPrint.PrintLabelData(Labeldata);
2936    
2937 torben 3090 LabelPrint.CheckPrintQue('Test', Config.PrinterNavn);
2938 torben 3107
2939     LabelData.Free();
2940    
2941 torben 2645 end;
2942     FocusControl(StregkodeST);
2943     end;
2944    
2945     procedure TMainForm.Timer1Timer(Sender: TObject);
2946     begin
2947 torben 3090 if (Config.TjekPrinter = '1') then
2948 torben 2645 begin
2949 torben 3090 LabelPrint.CheckPrintQue('Timer', Config.PrinterNavn);
2950 torben 2645 end
2951     else
2952     begin
2953     PrinterstatusStaticText1.Caption := '';
2954     PrinterstatusStaticText1.Color := MainForm.Color;
2955     end;
2956     end;
2957    
2958    
2959    
2960     procedure TMainForm.Om1Click(Sender: TObject);
2961     const
2962     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2963     var
2964     tekst, filversion : String;
2965     begin
2966    
2967 torben 2693 filversion := TUtils.Sto_GetFmtFileVersion('');
2968 torben 2645 tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';
2969    
2970     tekst := tekst+crlf+crlf;
2971     tekst := tekst+'Programmet er installeret som:'+crlf+ParamStr(0);
2972     tekst := tekst+crlf;
2973    
2974     if SpecialVersionSted = '' then
2975     begin
2976     tekst := tekst+crlf+crlf+'Scanningssted: '+StringReplace(Stednavn, ':', '', [rfReplaceAll, rfIgnoreCase])+' ('+Sted+')';
2977     end;
2978    
2979     if SpecialVersionSted <> '' then
2980     begin
2981     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2982     begin
2983     if Stednavn = '' then
2984     begin
2985     tekst := tekst+crlf+crlf+'Speciel version til: '+BladhusStedNavn[BladhusSted]+' ('+BladhusStedKode[BladhusSted]+')';
2986     end
2987     else
2988     begin
2989 torben 2682 tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2990 torben 2645 end;
2991     end
2992     else
2993     begin
2994 torben 2682 tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2995 torben 2645 end;
2996     end;
2997    
2998     if (Pos('omdeling.info',Url) = 0) then
2999     begin
3000     tekst := tekst+crlf+crlf;
3001     tekst := tekst+crlf+crlf+' ********** DETTE ER KUN EN TEST VERSION **********';
3002     tekst := tekst+crlf+crlf;
3003 torben 3087 tekst := tekst+crlf+crlf+'Url: ' + Url;
3004 torben 2645 end;
3005    
3006     MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
3007    
3008     end;
3009    
3010 torben 3039
3011 torben 2645 procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3012     Rect: TRect; State: TOwnerDrawState);
3013     var
3014     ListBox1MaxLinLgd,i : Integer;
3015     myColor: TColor;
3016     myBrush: TBrush;
3017     begin
3018     ListBox1MaxLinLgd := 0;
3019     myBrush := TBrush.Create;
3020     with (Control as TListBox).Canvas do
3021     begin
3022     if not Odd(Index) then
3023     myColor := clWhite
3024     else
3025     myColor := clSilver;
3026    
3027     if odSelected in State then
3028     begin
3029     myColor := MainForm.Color;
3030     font.Color := clBlack;
3031     end;
3032    
3033     myBrush.Style := bsSolid;
3034     myBrush.Color := myColor;
3035     Windows.FillRect(handle, Rect, myBrush.Handle) ;
3036     Brush.Style := bsClear;
3037     TextOut(Rect.Left, Rect.Top,
3038     (Control as TListBox).Items[Index]) ;
3039     MyBrush.Free;
3040     end;
3041    
3042     for i := 0 to (ListBox1.Items.Count - 1) do
3043     if (ListBox1.Canvas.TextWidth(ListBox1.Items[i]) > ListBox1MaxLinLgd) then
3044     ListBox1MaxLinLgd := ListBox1.Canvas.TextWidth(ListBox1.Items[i]);
3045     ListBox1.ScrollWidth := ListBox1MaxLinLgd;
3046     end;
3047    
3048     procedure TMainForm.Lukprogrammet1Click(Sender: TObject);
3049     begin
3050    
3051     Application.Terminate;
3052    
3053     end;
3054    
3055     procedure TMainForm.Manual1Click(Sender: TObject);
3056     var
3057     fileName : string;
3058     begin
3059     fileName := 'Docs\Manual_' + Scanningtype + '.pdf';
3060    
3061     if FileExists(fileName) then
3062     begin
3063 torben 2685 if TUtils.AdobeReaderExists then
3064 torben 2645 begin
3065     //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3066     ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3067     end
3068     else
3069     begin
3070     ShowMessage('Acrobat Reader er ikke installeret!');
3071     end;
3072     end
3073     else
3074     begin
3075     ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3076     end;
3077     end;
3078    
3079     procedure TMainForm.Manualgenerel1Click(Sender: TObject);
3080     var
3081     fileName : string;
3082     begin
3083     fileName := 'Docs\Manual_0.pdf';
3084    
3085     if FileExists(fileName) then
3086     begin
3087 torben 2685 if TUtils.AdobeReaderExists then
3088 torben 2645 begin
3089     //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3090     ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3091     end
3092     else
3093     begin
3094 torben 2700 ShowMessage('Adobe Reader er ikke installeret!');
3095 torben 2645 end;
3096     end
3097     else
3098     begin
3099     ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3100     end;
3101     end;
3102    
3103 torben 2664 procedure TMainForm.menuIndleveringClick(Sender: TObject);
3104     begin
3105     Scanningtype := '7';
3106     NulstilAutomatiskValg();
3107     InitIndleveringskode();
3108     end;
3109    
3110 torben 2645 procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3111     begin
3112    
3113     if Sprgefterboghandlernummer1.Checked then
3114     begin
3115 torben 2653 chkSporgEfterKunde.Checked := true;
3116 torben 2645 end
3117     else
3118     begin
3119 torben 2653 chkSporgEfterKunde.Checked := false;
3120 torben 2645 end;
3121    
3122    
3123     end;
3124    
3125 torben 3054 procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3126 torben 2645 begin
3127     Scanningtype := '2';
3128     NulstilAutomatiskValg();
3129     InitReturFraDao();
3130     end;
3131    
3132 torben 3054 procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3133 torben 2645 begin
3134     Scanningtype := '6';
3135     InitReturFraPakkeshop();
3136     NulstilAutomatiskValg();
3137     end;
3138    
3139     procedure TMainForm.InitNatxpresslevering();
3140     begin
3141 torben 3055 menuAutomatiskTjekkodeStyring.Enabled := true;
3142 torben 2668 btnNulstil.Visible := false;
3143 torben 3054 menuNatXpress1.Checked := true;
3144 torben 3089 InitForm(Config.FarveNormal,Config.TitelNormal,Config.UrlNormal);
3145 torben 2645 PanelValg1.Color := clGreen;
3146     PanelValg1.Font.Color := clWhite;
3147 torben 2653
3148 torben 2652 chkAltidPrintLabel.Enabled := true;
3149 torben 2645 Altidprintepakkelabel1.Enabled := true;
3150     Altidprintepakkelabel1.Checked := false;
3151 torben 2652 chkAltidPrintLabel.Checked := false;
3152 torben 2645 Sprgefterboghandlernummer1.Checked := false;
3153 torben 2653 chkSporgEfterKunde.Checked := false;
3154 torben 2645 Sprgefterboghandlernummer1.Enabled := true;
3155 torben 3055 menuSmaaPakker.Enabled := false;
3156     menuStorePakker.Enabled := false;
3157 torben 2655 radioStorPakke.Enabled := false;
3158     radioLillePakke.Enabled := false;
3159 torben 2645 ListBox1.Visible := true;
3160 torben 2699 BtnOpdaterListen.Enabled := true;
3161 torben 2698 BtnEKLoverforsel.Enabled := true;
3162 torben 2645 InitLillePakke();
3163     ListBox1.Items.Clear;
3164 torben 2791
3165     chkForstorTilDirekte.Checked := false;
3166     chkForstorTilDirekte.Enabled := false;
3167    
3168 torben 2645 if BladhusSted = 0 then
3169     begin
3170     IndlesScanningLogFil();
3171     IndlesManglendeScanninger();
3172     end;
3173     end;
3174    
3175     procedure TMainForm.InitReturFraDao();
3176     begin
3177 torben 3055 menuAutomatiskTjekkodeStyring.Enabled := false;
3178 torben 3054 menuNatxpressReturDAO1.Checked := true;
3179 torben 2668 btnNulstil.Visible := false;
3180 torben 3089 InitForm(Config.FarveReturDAO, Config.TitelReturDAO, Config.UrlReturDAO);
3181 torben 2645 PanelValg2.Color := clGreen;
3182     PanelValg2.Font.Color := clWhite;
3183 torben 2653
3184 torben 2652 chkAltidPrintLabel.Enabled := false;
3185 torben 2645 Altidprintepakkelabel1.Enabled := false;
3186 torben 2652
3187 torben 2645 Altidprintepakkelabel1.Checked := false;
3188     Sprgefterboghandlernummer1.Checked := false;
3189 torben 2653 chkSporgEfterKunde.Checked := false;
3190 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3191 torben 3055 menuSmaaPakker.Enabled := true;
3192     menuStorePakker.Enabled := true;
3193 torben 2655 radioStorPakke.Enabled := true;
3194     radioLillePakke.Enabled := true;
3195 torben 2645 ListBox1.Visible := true;
3196     ListBox1.Items.Clear;
3197     ListBox2.Items.Clear;
3198 torben 2698 BtnEKLoverforsel.Enabled := false;
3199 torben 2791
3200     chkForstorTilDirekte.Checked := false;
3201     chkForstorTilDirekte.Enabled := false;
3202    
3203 torben 2645 InitLillePakke();
3204     end;
3205    
3206     procedure TMainForm.InitReturFraKunde();
3207     begin
3208 torben 3055 menuAutomatiskTjekkodeStyring.Enabled := false;
3209 torben 3054 menuNatxpressReturfraKunde1.Checked := true;
3210 torben 2668 btnNulstil.Visible := false;
3211 torben 3089 InitForm(Config.FarveReturBoghandler, Config.TitelReturBoghandler, Config.UrlReturBoghandler);
3212 torben 2645 PanelValg3.Color := clGreen;
3213     PanelValg3.Font.Color := clWhite;
3214 torben 2653
3215 torben 2652 chkAltidPrintLabel.Enabled := false;
3216 torben 2645 Altidprintepakkelabel1.Enabled := false;
3217     Altidprintepakkelabel1.Checked := false;
3218     Sprgefterboghandlernummer1.Checked := false;
3219 torben 2653 chkSporgEfterKunde.Checked := false;
3220 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3221 torben 3055 menuSmaaPakker.Enabled := true;
3222     menuStorePakker.Enabled := true;
3223 torben 2655 radioStorPakke.Enabled := true;
3224     radioLillePakke.Enabled := true;
3225 torben 2645 ListBox1.Visible := true;
3226     ListBox1.Items.Clear;
3227     ListBox2.Items.Clear;
3228 torben 2698 BtnEKLoverforsel.Enabled := false;
3229 torben 2791
3230     chkForstorTilDirekte.Checked := false;
3231     chkForstorTilDirekte.Enabled := false;
3232    
3233 torben 2645 InitLillePakke();
3234     end;
3235    
3236     procedure TMainForm.InitDirektelevering();
3237     begin
3238 torben 3055 menuAutomatiskTjekkodeStyring.Enabled := false;
3239 torben 3054 menuDaoDirekte1.Checked := true;
3240 torben 2668 btnNulstil.Visible := false;
3241 torben 3089 InitForm(Config.FarveBudlevering, Config.TitelBudlevering, Config.UrlBudlevering);
3242 torben 2645 PanelValg4.Color := clGreen;
3243     PanelValg4.Font.Color := clWhite;
3244 torben 2653
3245 torben 2652 chkAltidPrintLabel.Enabled := false;
3246 torben 2645 Altidprintepakkelabel1.Enabled := false;
3247 torben 2652
3248 torben 2645 Altidprintepakkelabel1.Checked := false;
3249     Sprgefterboghandlernummer1.Checked := false;
3250 torben 2653 chkSporgEfterKunde.Checked := false;
3251 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3252 torben 3055 menuSmaaPakker.Enabled := true;
3253     menuStorePakker.Enabled := true;
3254 torben 2655 radioStorPakke.Enabled := true;
3255     radioLillePakke.Enabled := true;
3256 torben 2645 ListBox1.Visible := true;
3257     ListBox1.Items.Clear;
3258 torben 2691 BtnDownloadKontrolfil.Enabled := false;
3259 torben 2699 BtnOpdaterListen.Enabled := true;
3260 torben 2696 BtnDownloadRuteskiftFil.Visible := false;
3261 torben 2698 BtnEKLoverforsel.Enabled := false;
3262 torben 2645 IdFTP1.Passive := true;
3263     IdFTP1.PassiveUseControlHost := true;
3264 torben 2791
3265     chkForstorTilDirekte.Checked := false;
3266     chkForstorTilDirekte.Enabled := true;
3267    
3268 torben 2645 if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3269     begin
3270     IndlesScanningLogFil();
3271     IndlesManglendeScanninger();
3272     end;
3273    
3274     end;
3275    
3276     procedure TMainForm.InitPakkeshoplevering();
3277     begin
3278 torben 3055 menuAutomatiskTjekkodeStyring.Enabled := true;
3279 torben 3054 menuPakkeshop1.Checked := true;
3280 torben 2668 btnNulstil.Visible := false;
3281 torben 3089 InitForm(Config.FarvePakkeshoplevering, Config.TitelPakkeshoplevering, Config.UrlPakkeshoplevering);
3282 torben 2645 PanelValg5.Color := clGreen;
3283     PanelValg5.Font.Color := clWhite;
3284 torben 2653
3285 torben 2652 chkAltidPrintLabel.Enabled := false;
3286 torben 2645 Altidprintepakkelabel1.Enabled := false;
3287 torben 2652
3288 torben 2645 Altidprintepakkelabel1.Checked := false;
3289     Sprgefterboghandlernummer1.Checked := false;
3290 torben 2653 chkSporgEfterKunde.Checked := false;
3291 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3292 torben 3055 menuSmaaPakker.Enabled := false;
3293     menuStorePakker.Enabled := false;
3294 torben 2655 radioStorPakke.Enabled := false;
3295     radioLillePakke.Enabled := false;
3296 torben 2645 ListBox1.Visible := true;
3297     ListBox1.Items.Clear;
3298 torben 2691 BtnDownloadKontrolfil.Enabled := false;
3299 torben 2699 BtnOpdaterListen.Enabled := true;
3300 torben 2656
3301 torben 2698 BtnEKLoverforsel.Enabled := true;
3302 torben 2656
3303 torben 2791 chkForstorTilDirekte.Checked := false;
3304     chkForstorTilDirekte.Enabled := true;
3305    
3306 torben 2645 InitLillePakke();
3307     IndlesScanningLogFil();
3308     if BladhusSted = 0 then
3309     begin
3310     IndlesManglendeScanninger();
3311     end;
3312     IdFTP1.Passive := true;
3313     IdFTP1.PassiveUseControlHost := true;
3314     end;
3315    
3316     procedure TMainForm.InitReturFraPakkeshop();
3317     begin
3318 torben 3055 menuAutomatiskTjekkodeStyring.Enabled := false;
3319 torben 3054 menuPakkeshopRetur1.Checked := true;
3320 torben 2668 btnNulstil.Visible := false;
3321 torben 3089 InitForm(Config.FarveReturPakkeshop, Config.TitelReturPakkeshop, Config.UrlReturPakkeshop);
3322 torben 2645 PanelValg6.Color := clGreen;
3323     PanelValg6.Font.Color := clWhite;
3324 torben 2653
3325 torben 2652 chkAltidPrintLabel.Enabled := false;
3326 torben 2645 Altidprintepakkelabel1.Enabled := false;
3327 torben 2652
3328 torben 2645 Altidprintepakkelabel1.Checked := false;
3329     Sprgefterboghandlernummer1.Checked := false;
3330 torben 2653 chkSporgEfterKunde.Checked := false;
3331 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3332 torben 3055 menuSmaaPakker.Enabled := false;
3333     menuStorePakker.Enabled := false;
3334 torben 2655 radioStorPakke.Enabled := false;
3335     radioLillePakke.Enabled := false;
3336 torben 2645 ListBox1.Visible := true;
3337     ListBox1.Items.Clear;
3338 torben 2691 BtnDownloadKontrolfil.Enabled := false;
3339 torben 2699 BtnOpdaterListen.Enabled := true;
3340 torben 2698 BtnEKLoverforsel.Enabled := false;
3341 torben 2791
3342     chkForstorTilDirekte.Checked := false;
3343     chkForstorTilDirekte.Enabled := false;
3344    
3345    
3346 torben 2645 InitLillePakke();
3347     IndlesScanningLogFil();
3348     if BladhusSted = 0 then
3349     begin
3350     IndlesManglendeScanninger();
3351     end;
3352     IdFTP1.Passive := true;
3353     IdFTP1.PassiveUseControlHost := true;
3354     end;
3355    
3356 torben 3054 procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3357 torben 2645 begin
3358     Scanningtype := '3';
3359     NulstilAutomatiskValg();
3360     InitReturFraKunde();
3361     end;
3362    
3363 torben 2650 procedure TMainForm.InitIndleveringskode();
3364     begin
3365 torben 2664 menuIndlevering.Checked := true;
3366 torben 3055 menuAutomatiskTjekkodeStyring.Enabled := false;
3367 torben 2664
3368 torben 2668 btnNulstil.Visible := false;
3369 torben 3089 InitForm(Config.FarveIndlevering, Config.TitelIndlevering, Config.UrlReturPakkeshop);
3370 torben 2650 PanelValg7.Color := clGreen;
3371     PanelValg7.Font.Color := clWhite;
3372 torben 2653
3373 torben 2652 chkAltidPrintLabel.Enabled := false;
3374 torben 2650 Altidprintepakkelabel1.Enabled := false;
3375 torben 2652
3376 torben 2650 Altidprintepakkelabel1.Checked := false;
3377     Sprgefterboghandlernummer1.Checked := false;
3378 torben 2656 Sprgefterboghandlernummer1.Enabled := false;
3379 torben 2653 chkSporgEfterKunde.Checked := false;
3380 torben 2656
3381    
3382    
3383 torben 3055 menuSmaaPakker.Enabled := false;
3384     menuStorePakker.Enabled := false;
3385 torben 2655 radioStorPakke.Enabled := false;
3386     radioLillePakke.Enabled := false;
3387 torben 2650 ListBox1.Visible := true;
3388 torben 2656 ListBox1.Items.Clear();
3389    
3390 torben 2691 BtnDownloadKontrolfil.Enabled := false;
3391 torben 2699 BtnOpdaterListen.Enabled := true;
3392 torben 2698 BtnEKLoverforsel.Enabled := false;
3393 torben 2791
3394     chkForstorTilDirekte.Checked := false;
3395     chkForstorTilDirekte.Enabled := false;
3396    
3397    
3398 torben 2664 InitLillePakke();
3399     IndlesScanningLogFil();
3400     if BladhusSted = 0 then
3401     begin
3402     IndlesManglendeScanninger();
3403     end;
3404 torben 2650 IdFTP1.Passive := true;
3405     IdFTP1.PassiveUseControlHost := true;
3406     end;
3407    
3408    
3409 torben 3055 procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3410 torben 2645 begin
3411     InitStorPakke();
3412     end;
3413    
3414 torben 3055 procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3415 torben 2645 begin
3416     InitLillePakke();
3417     end;
3418    
3419     procedure TMainForm.InitLillePakke();
3420     begin
3421 torben 2655 radioLillePakke.Checked := true;
3422 torben 3055 menuSmaaPakker.Checked := true;
3423 torben 2645 // Stregkode := '';
3424     end;
3425    
3426     procedure TMainForm.InitStorPakke();
3427     begin
3428 torben 2655 radioStorPakke.Checked := true;
3429 torben 3055 menuStorePakker.Checked := true;
3430 torben 2645 // 20150310: start
3431     // Stregkode := '';
3432     // 20150310: slut
3433     end;
3434    
3435 torben 2677
3436 torben 2645
3437     procedure TMainForm.PlaySound(filename : PWideChar);
3438     begin
3439     if (filename <> '') then
3440     begin
3441     sndPlaySound(filename,
3442     SND_NODEFAULT Or SND_ASYNC);
3443     end;
3444     end;
3445    
3446     procedure TMainForm.Testlyd1Click(Sender: TObject);
3447     begin
3448 torben 3090 if Config.AlarmLyd <> '' then
3449 torben 2645 begin
3450 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
3451 torben 2645 end
3452     else
3453     begin
3454     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (alarm)'), 'Information', MB_OK);
3455     end;
3456     end;
3457    
3458     procedure TMainForm.Testlyd2Click(Sender: TObject);
3459     begin
3460     if (PakkeshopText1.Caption = 'Tjekkode') then
3461     begin
3462 torben 3090 if Config.ScannetOkTilTjekkodeLyd <> '' then
3463 torben 2645 begin
3464 torben 3090 PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
3465 torben 2645 end
3466     else
3467     begin
3468     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkTilTjekkodeLyd)'), 'Information', MB_OK);
3469     end;
3470     exit;
3471     end;
3472    
3473 torben 3055 if menuSmaaPakker.Checked then
3474 torben 3090 if Config.ScannetOkLyd <> '' then
3475 torben 2645 begin
3476 torben 3090 PlaySound(PWideChar(Config.ScannetOkLyd));
3477 torben 2645 end
3478     else
3479     begin
3480     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3481     end;
3482 torben 3055 if menuStorePakker.Checked then
3483 torben 3090 if Config.ScannetOkStorLyd <> '' then
3484 torben 2645 begin
3485 torben 3090 PlaySound(PWideChar(Config.ScannetOkStorLyd));
3486 torben 2645 end
3487     else
3488     begin
3489     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
3490     end;
3491     end;
3492    
3493    
3494 torben 3054 procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3495 torben 2645 begin
3496     Scanningtype := '4';
3497     NulstilAutomatiskValg();
3498     InitDirektelevering();
3499     end;
3500    
3501     procedure TMainForm.Button1Click(Sender: TObject);
3502     begin;
3503     CheckCode();
3504     end;
3505    
3506 torben 2698 procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3507 torben 2645 var
3508     WebSvar : String;
3509     URLStr : String;
3510     StedKode : String;
3511     Node: IXMLNode;
3512     I: Integer;
3513     status, kommentar : String;
3514    
3515     begin
3516 torben 2698 BtnEKLoverforsel.Enabled := false;
3517 torben 2645
3518     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
3519     logTekst := 'Overfører de scannede pakker til EKL';
3520     SkrivScanningLogFil(logTekst);
3521     StedKode := Sted;
3522 torben 3087 URLStr := Format(Config.UrlEKLoverforsel,[StedKode,Sted]);
3523 torben 2704
3524 torben 2645 if PanelValg5.Color = clGreen then
3525     begin
3526 torben 3087 URLStr := Format(Config.UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3527 torben 2645 end;
3528    
3529 torben 2704
3530 torben 2645 try
3531     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3532     WebSvar := IdHTTP1.Get(URLStr);
3533     except
3534     on e:EIdConnClosedGracefully do
3535     begin
3536     // Her skal vi ikke gøre noget - men vi skal forespørge igen
3537     WebSvar := IdHTTP1.Get(URLStr);
3538     end;
3539     on e:exception do
3540     begin
3541     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
3542     logTekst := 'Fejl i web forespørgsel: '+e.Message;
3543     SkrivScanningLogFil(logTekst);
3544     raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
3545     end;
3546     end;
3547     try
3548     XMLDocument1.LoadFromXML(WebSvar);
3549     for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
3550     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
3551     if Node.NodeType = ntElement then begin
3552     if Node.NodeName = 'Status' then begin
3553     if not VarIsNull(Node.NodeValue) then
3554     status := Node.NodeValue;
3555     end;
3556     if Node.NodeName = 'Kommentar' then begin
3557     if not VarIsNull(Node.NodeValue) then
3558     kommentar := Node.NodeValue;
3559     end;
3560     end;
3561     end;
3562    
3563     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status+' '+kommentar);
3564     logTekst := 'Overførsel til EKL: ' + status;
3565     SkrivScanningLogFil(logTekst);
3566    
3567     except on e:exception do
3568     begin
3569     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status);
3570     logTekst := 'Overførsel til EKL: ' + status;
3571     SkrivScanningLogFil(logTekst);
3572     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
3573     logTekst := 'Fejl i XML-format: '+e.Message;
3574     SkrivScanningLogFil(logTekst);
3575     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
3576     end;
3577     end;
3578    
3579 torben 2698 BtnEKLoverforsel.Enabled := true;
3580 torben 2645
3581     ListBox1.SetFocus; // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
3582    
3583     // Hvis der var fejl i overførslen skal dette fejlmeldes her
3584     if status = 'Fejl' then
3585     begin // Her skal komme en alarm og rød skærm
3586 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
3587 torben 2645 MainForm.Color := clRed;
3588     RutenummerST.Caption := 'EKL overførsel';
3589     BoghandlerNavnST.Caption := 'Fejl:';
3590     if (pos('Deadlock', Kommentar) > 0) then
3591     begin
3592     RutenummerST.Caption := 'EKL overførsel fejlet';
3593     BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3594     end;
3595     KommentarST.Caption := Kommentar;
3596 torben 2668 btnNulstil.Visible := true;
3597 torben 2645 end;
3598    
3599     end;
3600    
3601     procedure TMainForm.CheckCode();
3602     var
3603     Barcode, Svar : String;
3604     ClickedOK : Boolean;
3605     begin
3606     ClickedOK := InputQuery('Barcode check', 'Indtast stregkode', Barcode);
3607     if ClickedOk then
3608     begin
3609     { if (BarCodeValid(Barcode)) then
3610     MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
3611     else
3612     MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3613     }
3614     // MessageBox(Handle, PAnsiChar(CheckSumModulo10(Barcode)), 'Stregkode', MB_OK);
3615     { if (CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1)) = Barcode) then
3616     MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
3617     else
3618     MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3619     }
3620 torben 2682 Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3621 torben 2645
3622     MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3623     CheckCode();
3624     end;
3625    
3626     end;
3627    
3628    
3629     //
3630     // Bladhus ***
3631     //
3632     procedure TMainForm.DownloadBladhusRuteskiftfil();
3633     const
3634     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3635    
3636     var
3637     filnavn_input : string;
3638     filnavn_output : string;
3639     buttonSelected : Integer;
3640    
3641     begin
3642     filnavn_input := BladhusRuteskiftfil_server; // hvis filen ikke findes vises 'no such file or directory'
3643     filnavn_output := BladhusRuteskiftfil_lokal;
3644    
3645     case BladhusSted of
3646     00 : begin;
3647     end;
3648     01 : begin;
3649     buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3650     if buttonSelected = mrOK then
3651     begin
3652     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3653     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3654     SkrivScanningLogFil(logTekst);
3655     try
3656     try
3657    
3658     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3659     IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
3660     IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
3661     IdFTP1.Connect;
3662    
3663     //IdFTP1.TransferType := ftASCII;
3664     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3665     try
3666     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3667     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3668     except on e:EIdConnClosedGracefully do
3669     begin
3670     // Her skal vi ikke gøre noget - men vi skal forespørge igen
3671     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3672     end;
3673     end;
3674     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3675    
3676     ListBox1.Items.Insert(0,TimeToStr(now) + ': Ruteskift fil gemt lokalt som ' + filnavn_output + '.');
3677     logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
3678     SkrivScanningLogFil(logTekst);
3679    
3680     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
3681     logTekst := 'Ruteskift fil tjekkes.';
3682     SkrivScanningLogFil(logTekst);
3683    
3684     finally
3685     IdFTP1.Disconnect;
3686     end;
3687    
3688     except on e:exception do
3689     begin
3690     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3691     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3692     SkrivScanningLogFil(logTekst);
3693     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3694     [e.Message
3695     + CrLf + 'Host: '+IdFTP1.host
3696     + CrLf + 'Username: '+IdFTP1.Username
3697     ]
3698     );
3699     end;
3700     end;
3701     end
3702     else
3703     begin
3704     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
3705     logTekst := 'Download af ruteskiftfil annulleret';
3706     SkrivScanningLogFil(logTekst);
3707     end;
3708     IndlesRuteskiftFil(filnavn_output);
3709     end;
3710     02 : begin;
3711     end;
3712     03 : begin;
3713     buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3714     if buttonSelected = mrOK then
3715     begin
3716     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3717     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3718     SkrivScanningLogFil(logTekst);
3719     try
3720     try
3721    
3722     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3723     IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
3724     IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
3725     IdFTP1.Connect;
3726    
3727     //IdFTP1.TransferType := ftASCII;
3728     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3729     try
3730     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3731     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3732     except on e:EIdConnClosedGracefully do
3733     begin
3734     // Her skal vi ikke gøre noget - men vi skal forespørge igen
3735     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3736     end;
3737     end;
3738     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3739    
3740     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute ruteskift fil gemt lokalt som ' + filnavn_output + '.');
3741     logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
3742     SkrivScanningLogFil(logTekst);
3743    
3744     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
3745     logTekst := 'Ruteskift fil tjekkes.';
3746     SkrivScanningLogFil(logTekst);
3747    
3748     finally
3749     IdFTP1.Disconnect;
3750     end;
3751    
3752     except on e:exception do
3753     begin
3754     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3755     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3756     SkrivScanningLogFil(logTekst);
3757     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3758     [e.Message
3759     + CrLf + 'Host: '+IdFTP1.host
3760     + CrLf + 'Username: '+IdFTP1.Username
3761     ]
3762     );
3763     end;
3764     end;
3765     end
3766     else
3767     begin
3768     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
3769     logTekst := 'Download af ruteskiftfil annulleret';
3770     SkrivScanningLogFil(logTekst);
3771     end;
3772     IndlesRuteskiftFil(filnavn_output);
3773     end;
3774     04 : begin;
3775     end;
3776     else
3777     ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
3778     end;
3779    
3780     end;
3781    
3782     procedure TMainForm.DownloadBladhusKontrolfil();
3783     const
3784     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3785    
3786     var
3787     filnavn_input : string;
3788     filnavn_output : string;
3789     buttonSelected : Integer;
3790    
3791     begin
3792     filnavn_input := BladhusKontrolfil_server; // hvis filen ikke findes vises 'no such file or directory'
3793     filnavn_output := BladhusKontrolfil_lokal;
3794    
3795     case BladhusSted of
3796     01 :
3797     begin;
3798     buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3799     if buttonSelected = mrOK then
3800     begin
3801     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3802     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3803     SkrivScanningLogFil(logTekst);
3804     try
3805     try
3806    
3807     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3808     IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
3809     IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
3810     IdFTP1.Connect;
3811    
3812     //IdFTP1.TransferType := ftASCII;
3813     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3814     try
3815     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3816     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3817     except on e:EIdConnClosedGracefully do
3818     begin
3819     // Her skal vi ikke gøre noget - men vi skal forespørge igen
3820     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3821     end;
3822     end;
3823     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3824    
3825     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
3826     logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
3827     SkrivScanningLogFil(logTekst);
3828    
3829     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
3830     logTekst := 'Rute kontrol fil tjekkes.';
3831     SkrivScanningLogFil(logTekst);
3832    
3833     finally
3834     IdFTP1.Disconnect;
3835     end;
3836    
3837     except on e:exception do
3838     begin
3839     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3840     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3841     SkrivScanningLogFil(logTekst);
3842     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3843     [e.Message
3844     + CrLf + 'Host: '+IdFTP1.host
3845     + CrLf + 'Username: '+IdFTP1.Username
3846     ]
3847     );
3848     end;
3849     end;
3850     end
3851     else
3852     begin
3853     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
3854     logTekst := 'Download af kontrolfil annulleret';
3855     SkrivScanningLogFil(logTekst);
3856     end;
3857     IndlesKontrolFil(filnavn_output);
3858     end;
3859     02 : begin;
3860     end;
3861     03 : begin;
3862     buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3863     if buttonSelected = mrOK then
3864     begin
3865     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3866     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3867     SkrivScanningLogFil(logTekst);
3868     try
3869     try
3870    
3871     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3872     IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
3873     IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
3874     IdFTP1.Connect;
3875    
3876     //IdFTP1.TransferType := ftASCII;
3877     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3878     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3879    
3880     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
3881     logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
3882     SkrivScanningLogFil(logTekst);
3883    
3884     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
3885     logTekst := 'Rute kontrol fil tjekkes.';
3886     SkrivScanningLogFil(logTekst);
3887    
3888     finally
3889     IdFTP1.Disconnect;
3890     end;
3891    
3892     except on e:exception do
3893     begin
3894     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3895     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3896     SkrivScanningLogFil(logTekst);
3897     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3898     [e.Message
3899     + CrLf + 'Host: '+IdFTP1.host
3900     + CrLf + 'Username: '+IdFTP1.Username
3901     ]
3902     );
3903     end;
3904     end;
3905     end
3906     else
3907     begin
3908     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
3909     logTekst := 'Download af kontrolfil annulleret';
3910     SkrivScanningLogFil(logTekst);
3911     end;
3912     IndlesKontrolFil(filnavn_output);
3913     end;
3914     04 : begin;
3915     end;
3916     else
3917     ShowMessage('Ukendt Bladhus sted ???') ;
3918     end;
3919    
3920     end;
3921    
3922     procedure TMainForm.SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
3923     const
3924     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3925    
3926     var
3927     testsystem : String;
3928    
3929     begin
3930     testsystem := '';
3931     if (Pos('omdeling.info',Url) = 0) then
3932     begin
3933     testsystem := 'TEST_';
3934     end;
3935     filnavn_output := testsystem + filnavn_output;
3936    
3937     ListBox1.Items.Insert(0,TimeToStr(now) + ': Sender ' + filnavn_input + ' til DAO ftp serveren.');
3938     logTekst := 'Sender ' + filnavn_input + ' til DAO ftp serveren.';
3939     SkrivScanningLogFil(logTekst);
3940     try
3941     try
3942    
3943     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3944     IdFTP1.Username:='scannerprogram'; // hvis forkert vises 'login incorrect'
3945     IdFTP1.Password:='DaoScan2015'; // hvis forkert vises 'login incorrect'
3946     IdFTP1.Connect;
3947    
3948     //IdFTP1.TransferType := ftASCII;
3949     try
3950     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3951     IdFTP1.ChangeDir('fraScannerprogram');
3952     IdFTP1.Put(filnavn_input, filnavn_output, True);
3953     except on e:EIdConnClosedGracefully do
3954     begin
3955     // Her skal vi ikke gøre noget - men vi skal forespørge igen
3956     IdFTP1.Put(filnavn_input, filnavn_output, True);
3957     end;
3958     end;
3959     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3960    
3961     logTekst := fil_type + ' fil sendt til DAO som ' + filnavn_output + '.';
3962     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3963     SkrivScanningLogFil(logTekst);
3964    
3965     finally
3966     IdFTP1.Disconnect;
3967     end;
3968    
3969     except on e:exception do
3970     begin
3971     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3972     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3973     SkrivScanningLogFil(logTekst);
3974     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3975     [e.Message
3976     + CrLf + 'Host: '+IdFTP1.host
3977     + CrLf + 'Username: '+IdFTP1.Username
3978     ]
3979     );
3980     end;
3981     end;
3982     end;
3983    
3984     procedure TMainForm.UploadLogfilTilDAO();
3985     const
3986     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3987    
3988     var
3989     idag, imorgen : TDateTime;
3990     imorgenYmd : string;
3991     logFilnavn : string;
3992     filnavn_input : string;
3993     filnavn_output : string;
3994     buttonSelected : Integer;
3995     openDialog : TOpenDialog;
3996    
3997     begin
3998     idag := Now;
3999     imorgen := IncDay(idag, 1); //adds 1 day(s)
4000     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4001     if (FormatDateTime('hh:nn',idag) < '12:00') then
4002     begin
4003     imorgen := idag;
4004     end;
4005     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4006     logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4007     filnavn_input := logFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4008     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4009    
4010     buttonSelected := MessageDlg('Sender den aktuelle log fil (' + filnavn_input + ') til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4011     if buttonSelected = mrOK then
4012     begin
4013     SendFilTilDao('Log', filnavn_input, filnavn_output);
4014     end
4015     else
4016     begin
4017     buttonSelected := MessageDlg('Vil du sende en anden logfil til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4018     if buttonSelected = mrOK then
4019     begin
4020     // Create the open dialog object - assign to our open dialog variable
4021     openDialog := TOpenDialog.Create(self);
4022    
4023     // Set up the starting directory to be the current one
4024     openDialog.InitialDir := GetCurrentDir + '\Logs';
4025    
4026     // Only allow existing files to be selected
4027     openDialog.Options := [ofFileMustExist];
4028    
4029     // Allow only .log files to be selected
4030     openDialog.Filter := 'Log filer|*.log';
4031    
4032     // Display the open file dialog
4033     if openDialog.Execute then
4034     begin
4035     filnavn_input := openDialog.FileName; // hvis filen ikke findes vises 'no such file or directory'
4036     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4037     SendFilTilDao('Log', filnavn_input, filnavn_output);
4038     end
4039     else
4040     begin
4041     logTekst := 'Upload af log fil annulleret';
4042     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4043     SkrivScanningLogFil(logTekst);
4044     end;
4045    
4046     // Free up the dialog
4047     openDialog.Free;
4048     end
4049     else
4050     begin
4051     logTekst := 'Upload af log fil annulleret';
4052     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4053     SkrivScanningLogFil(logTekst);
4054     end;
4055     end;
4056    
4057     end;
4058    
4059     procedure TMainForm.UploadInifilTilDAO();
4060     const
4061     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4062    
4063     var
4064     idag, imorgen : TDateTime;
4065     imorgenYmd : string;
4066     iniFilnavn : string;
4067     filnavn_input : string;
4068     filnavn_output : string;
4069     buttonSelected : Integer;
4070    
4071     begin
4072     idag := Now;
4073     imorgen := IncDay(idag, 1); //adds 1 day(s)
4074     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4075     if (FormatDateTime('hh:nn',idag) < '12:00') then
4076     begin
4077     imorgen := idag;
4078     end;
4079     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4080     iniFilnavn := ChangeFileExt(ExtractFileName(ExtractFileName(ParamStr(0))), '.ini');
4081     filnavn_input := iniFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4082     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.ini';
4083    
4084     buttonSelected := MessageDlg('Sender ini filen ' + filnavn_input + ' til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4085     if buttonSelected = mrOK then
4086     begin
4087     SendFilTilDao('Ini', filnavn_input, filnavn_output);
4088     end
4089     else
4090     begin
4091     logTekst := 'Upload af ini fil annulleret';
4092     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4093     SkrivScanningLogFil(logTekst);
4094     end;
4095    
4096     end;
4097    
4098     procedure TMainForm.Uploadlogfil1Click(Sender: TObject);
4099     begin
4100     UploadLogfilTilDAO();
4101     UploadInifilTilDAO();
4102     ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4103     end;
4104    
4105 torben 2691 procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4106 torben 2645 begin
4107     DownloadBladhusKontrolfil();
4108     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4109     end;
4110    
4111 torben 2699 procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4112 torben 2645 const
4113     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4114    
4115     begin
4116     IndlesManglendeScanninger();
4117     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4118     end;
4119    
4120 torben 2696 procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4121 torben 2645 begin
4122     if (getProddag() = 'lørdag') then
4123     begin
4124     DownloadBladhusRuteskiftfil();
4125     end;
4126     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4127     end;
4128    
4129    
4130 torben 2677
4131 torben 2645 procedure TMainForm.IndlesManglendeScanninger();
4132     var
4133     WebSvar : String;
4134     URLStr : String;
4135     StedKode : String;
4136     Node: IXMLNode;
4137     I: Integer;
4138     stregkode, modtagernavn, modtageradresse, kommentar : string;
4139     pakketype, tjekkodestatus : String;
4140 torben 3056 antalLiniefelter, antalFelterFundet, linienr : Integer;
4141 torben 2791 //pakketyper : TStrings;
4142     pakketyper : TDictionary<String, Integer>;
4143     tmpAntal : Integer;
4144    
4145 torben 3076 time, timeSamlet : TTimingHelper;
4146 torben 2791
4147    
4148 torben 2645 antlin : Integer;
4149 torben 2656
4150 torben 2645 antlinIdag, antlinSenere : Integer;
4151 torben 2656
4152 torben 2792 //XmlFelter : TStrings;
4153     XmlFelter : TDictionary<String, Integer>;
4154 torben 2645
4155     begin
4156 torben 2791
4157    
4158 torben 2792 XmlFelter := TDictionary<String, Integer>.Create;
4159 torben 2791 pakketyper := TDictionary<String, Integer>.Create;
4160 torben 2792
4161 torben 2645 linienr := 0;
4162     ListBox2.Clear;
4163     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
4164     logTekst := 'Henter oversigt over pakker der endnu ikke er modtaget';
4165     SkrivScanningLogFil(logTekst);
4166     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4167     begin
4168     StedKode := BladhusStedKode[BladhusSted];
4169     end
4170     else
4171     begin
4172     StedKode := Sted;
4173     end;
4174    
4175 torben 2791 Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4176 torben 2656
4177 torben 2689
4178 torben 2791
4179 torben 2689 if (Scanningtype = '7') then
4180 torben 2645 begin
4181 torben 3087 URLStr := Format(Config.UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4182 torben 2645 end
4183 torben 2689 else if (Scanningtype = '6') then
4184     begin
4185 torben 3087 URLStr := Format(Config.UrlPakkeshopManglendeReturScanninger, [StedKode]);
4186 torben 2689 end
4187 torben 2645 else if (Scanningtype = '5') then
4188     begin
4189 torben 3087 URLStr := Format(Config.UrlPakkeshopManglendeScanninger, [StedKode]);
4190 torben 2645 end
4191     else if (Scanningtype = '1') then
4192     begin
4193 torben 3087 URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'B2']);
4194 torben 2645 end
4195     else if (Scanningtype = '4') then
4196     begin
4197 torben 3087 URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'A2']); // Budleveringer
4198 torben 2645 end
4199     else
4200     begin
4201     exit;
4202     end;
4203     // 20150310: slut
4204    
4205 torben 3076 time := TTimingHelper.create(); //DEBUG
4206     timeSamlet := TTimingHelper.create(); //DEBUG
4207    
4208 torben 2645 try
4209     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4210     // URLStr := string(Utf8Encode(URLStr));
4211     WebSvar := IdHTTP1.Get(URLStr);
4212     except
4213     on e:EIdConnClosedGracefully do
4214     begin
4215     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4216     WebSvar := IdHTTP1.Get(URLStr);
4217 torben 3048
4218    
4219    
4220 torben 2645 end;
4221     on e:exception do
4222     begin
4223     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4224     logTekst := 'Fejl i web forespørgsel: '+e.Message;
4225     SkrivScanningLogFil(logTekst);
4226     raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4227     end;
4228     end;
4229     try
4230 torben 3076 time.stop('HTTP Load'); //DEBUG
4231    
4232 torben 2645 XMLDocument1.LoadFromXML(WebSvar);
4233    
4234 torben 3076 time.stop('XML Load'); //DEBUG
4235 torben 2656
4236 torben 3076
4237    
4238    
4239    
4240    
4241 torben 2645 antlin := 0;
4242     antlinIdag := 0;
4243     antlinSenere := 0;
4244 torben 2656
4245 torben 2645 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4246     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4247     if Node.NodeType = ntElement then begin
4248     if Node.NodeName = 'Stregkode' then
4249     begin
4250 torben 2792 Inc(antlin);
4251 torben 2645 // 20150306: start
4252     if not VarIsNull(Node.NodeValue) then
4253     begin
4254     if (pos('(', Node.NodeValue) = 0) then
4255     begin
4256 torben 2792 Inc(antlinIdag);
4257 torben 2645 end
4258     else
4259     begin
4260 torben 2792 Inc(antlinSenere);
4261 torben 2645 end;
4262     end;
4263     // 20150306: slut
4264     end;
4265     end;
4266 torben 2792 if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4267     begin
4268     XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4269     XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4270     end
4271 torben 2645 else
4272 torben 2792 begin
4273     XmlFelter.Add(Node.NodeName, 1);
4274     end;
4275 torben 2645
4276     end;
4277     antalLiniefelter := XmlFelter.Count;
4278     antalFelterFundet := 0;
4279     SetLength(stregkoderMedTjekkodeArray, 0); // reset fra tidligere brug
4280     SetLength(stregkoderMedTjekkodeArray, antlin); // sæt antal elementer i array
4281 torben 2656
4282 torben 3076 time.stop('Antal Linier');//DEBUG
4283 torben 2791
4284     Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4285    
4286 torben 2645 logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4287     if (antlinSenere > 0) then
4288     begin
4289     logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4290     end;
4291     logTekst := logTekst + '.';
4292 torben 2656
4293 torben 2645 SkrivScanningLogFil(logTekst);
4294 torben 3123 time.stop('Antal Linier2');//DEBUG
4295 torben 2794
4296    
4297 torben 2645 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4298     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4299     if Node.NodeType = ntElement then begin
4300     if Node.NodeName = 'Stregkode' then begin
4301     if not VarIsNull(Node.NodeValue) then
4302     stregkode := Node.NodeValue;
4303     antalFelterFundet := antalFelterFundet + 1;
4304 torben 2794 end
4305     else if Node.NodeName = 'ModtagerNavn' then begin
4306 torben 2645 if not VarIsNull(Node.NodeValue) then
4307     modtagernavn := Node.NodeValue;
4308     antalFelterFundet := antalFelterFundet + 1;
4309 torben 2794 end
4310     else if Node.NodeName = 'ModtagerAdresse' then begin
4311 torben 2645 if not VarIsNull(Node.NodeValue) then
4312     modtageradresse := Node.NodeValue;
4313     antalFelterFundet := antalFelterFundet + 1;
4314 torben 2794 end
4315     else if Node.NodeName = 'Kommentar' then begin
4316 torben 2645 if not VarIsNull(Node.NodeValue) then
4317     kommentar := Node.NodeValue;
4318     antalFelterFundet := antalFelterFundet + 1;
4319 torben 2794 end
4320     else if Node.NodeName = 'PakkeType' then begin
4321 torben 2645 if not VarIsNull(Node.NodeValue) then
4322     pakketype := Node.NodeValue;
4323     antalFelterFundet := antalFelterFundet + 1;
4324 torben 2791 if ( pakketyper.ContainsKey(pakketype) ) then
4325     begin
4326     pakketyper.TryGetValue(pakketype, tmpAntal);
4327     pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4328     end
4329 torben 2645 else
4330 torben 2791 pakketyper.Add(pakketype, 1);
4331 torben 2794 end
4332     else if Node.NodeName = 'TjekkodeStatus' then begin
4333 torben 2645 if not VarIsNull(Node.NodeValue) then
4334     tjekkodestatus := Node.NodeValue;
4335     antalFelterFundet := antalFelterFundet + 1;
4336     if (tjekkodestatus = '-1') then
4337     begin
4338 torben 2704
4339 torben 2645 if (pos(' ', stregkode) > 0) then
4340     begin
4341 torben 2682 stregkoderMedTjekkodeArray[linienr] := TUtils.split(stregkode, ' ', 2); // Fjerner lige en evt. fremtidig dato fra feltet
4342 torben 2645 end
4343     else
4344     begin
4345     stregkoderMedTjekkodeArray[linienr] := stregkode;
4346     end;
4347 torben 2656 linienr := linienr + 1;
4348 torben 2645 end;
4349     end;
4350 torben 2794
4351    
4352 torben 2645 if antalFelterFundet = antalLiniefelter then
4353     begin
4354     if (ScanningType = '1') then
4355 torben 3123 //ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4356 torben 2645 else if (ScanningType = '4') then
4357 torben 3123 //ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
4358 torben 2645 else if (ScanningType = '5') then
4359 torben 3123 //ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4360 torben 2645 else
4361 torben 3123 //ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar);
4362 torben 2645 antalFelterFundet := 0;
4363     tjekkodestatus := '';
4364     end;
4365     end;
4366     end;
4367    
4368 torben 2794
4369 torben 3076 time.stop('Fyld Listbox2');//DEBUG
4370    
4371    
4372 torben 2792 Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4373 torben 2791
4374 torben 2792
4375 torben 2791 for pakketype in pakketyper.Keys do
4376     begin
4377     pakketyper.TryGetValue(pakketype, tmpAntal);
4378     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4379     end;
4380    
4381     // Free up the dictionary object
4382 torben 2645 pakketyper.Free;
4383 torben 2791
4384    
4385    
4386 torben 2645 // ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
4387     logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4388     if (antlinSenere > 0) then
4389     begin
4390     logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4391     end;
4392     logTekst := logTekst + '.';
4393     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4394     if (antlinSenere > 0) then
4395     begin
4396     StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
4397     end
4398     else
4399     begin
4400     StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4401     end;
4402    
4403     if (Scanningtype = '1') then
4404     begin
4405     //antlinIdag := 9876; // til test af boksens udseende ved stort tal
4406     PanelManglendePakker1.Caption := IntToStr(antlinIdag + antlinSenere);
4407     if (antlinIdag + antlinSenere > 0) then
4408     begin
4409     PanelManglendePakker1.Visible := true;
4410     end
4411     else
4412     begin
4413     PanelManglendePakker1.Visible := false;
4414     end;
4415     end;
4416    
4417     if (Scanningtype = '2') then
4418     begin
4419     PanelManglendePakker2.Caption := IntToStr(antlinIdag + antlinSenere);
4420     if (antlinIdag + antlinSenere > 0) then
4421     begin
4422     PanelManglendePakker2.Visible := true;
4423     end
4424     else
4425     begin
4426     PanelManglendePakker2.Visible := false;
4427     end;
4428     end;
4429    
4430     if (Scanningtype = '3') then
4431     begin
4432     PanelManglendePakker3.Caption := IntToStr(antlinIdag + antlinSenere);
4433     if (antlinIdag + antlinSenere > 0) then
4434     begin
4435     PanelManglendePakker3.Visible := true;
4436     end
4437     else
4438     begin
4439     PanelManglendePakker3.Visible := false;
4440     end;
4441     end;
4442    
4443     if (Scanningtype = '4') then
4444     begin
4445     PanelManglendePakker4.Caption := IntToStr(antlinIdag + antlinSenere);
4446     if (antlinIdag + antlinSenere > 0) then
4447     begin
4448     PanelManglendePakker4.Visible := true;
4449     end
4450     else
4451     begin
4452     PanelManglendePakker4.Visible := false;
4453     end;
4454     end;
4455    
4456     if (Scanningtype = '5') then
4457     begin
4458     PanelManglendePakker5.Caption := IntToStr(antlinIdag + antlinSenere);
4459     if (antlinIdag + antlinSenere > 0) then
4460     begin
4461     PanelManglendePakker5.Visible := true;
4462     end
4463     else
4464     begin
4465     PanelManglendePakker5.Visible := false;
4466     end;
4467     end;
4468    
4469     if (Scanningtype = '6') then
4470     begin
4471     PanelManglendePakker6.Caption := IntToStr(antlinIdag + antlinSenere);
4472     if (antlinIdag + antlinSenere > 0) then
4473     begin
4474     PanelManglendePakker6.Visible := true;
4475     end
4476     else
4477     begin
4478     PanelManglendePakker6.Visible := false;
4479     end;
4480     end;
4481    
4482     except on e:exception do
4483     begin
4484     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4485     logTekst := 'Fejl i XML-format: '+e.Message;
4486     SkrivScanningLogFil(logTekst);
4487     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4488     end;
4489     end;
4490    
4491 torben 3076 time.stop('Done');//DEBUG
4492     timeSamlet.stop('SamletTid');//DEBUG
4493    
4494    
4495 torben 2645 end;
4496    
4497     procedure TMainForm.IndlesScanningLogFil();
4498     var
4499     SomeTxtFile : TextFile;
4500     buffer : string;
4501     S: string;
4502     idag, imorgen : TDateTime;
4503     imorgenYmd : string;
4504     logFilnavn : string;
4505    
4506     begin
4507     idag := Now;
4508     imorgen := IncDay(idag, 1); //adds 1 day(s)
4509     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4510     if (FormatDateTime('hh:nn',idag) < '12:00') then
4511     begin
4512     imorgen := idag;
4513     end;
4514     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4515     logFilnavn := 'Logs/Scanning' + imorgenYmd + '.log';
4516     if FileExists(logFilnavn) then
4517     begin
4518     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæses.');
4519     logTekst := logFilnavn+' indlæses.';
4520     SkrivScanningLogFil(logTekst);
4521     AssignFile(SomeTxtFile, logFilnavn);
4522     try
4523     Reset(SomeTxtFile);
4524     while not EOF(SomeTxtFile) do
4525     begin
4526     ReadLn(SomeTxtFile, buffer) ;
4527     S := buffer;
4528     ListBox1.Items.Insert(0, S);
4529     end;
4530     finally
4531     CloseFile(SomeTxtFile);
4532     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæst.');
4533     ListBox1.Items.Insert(0,'');
4534     ListBox1.Items.Insert(0,'');
4535     ListBox1.Items.Insert(0,'');
4536     ListBox1.Items.Insert(0,'');
4537     ListBox1.Items.Insert(0,'');
4538     ListBox1.Items.Insert(0,'');
4539     end;
4540     end;
4541     end;
4542    
4543     procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4544     var
4545     SomeTxtFile : TextFile;
4546     idag, imorgen : TDateTime;
4547     imorgenYmd : string;
4548     logFilnavn : string;
4549 torben 2677 //error : Integer;
4550 torben 2645
4551     begin
4552     if (SkrivLog = '1') then
4553     begin
4554     idag := Now;
4555     imorgen := IncDay(idag, 1); //adds 1 day(s)
4556     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4557     if (FormatDateTime('hh:nn',idag) < '12:00') then
4558     begin
4559     imorgen := idag;
4560     end;
4561     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4562     logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4563     // Get the current directory
4564     // dir := GetCurrentDir;
4565     // ShowMessage('Current directory = '+dir);
4566     // logFilnavn := dir + '\Logs\' + 'Scanning' + imorgenYmd + '.log';
4567     // ShowMessage('logFilnavn = '+logFilnavn);
4568    
4569     if not DirectoryExists('Logs') then
4570     begin
4571     CreateDir('Logs');
4572     end;
4573    
4574     AssignFile(SomeTxtFile, logFilnavn);
4575     if FileExists(logFilnavn) then
4576     begin
4577     try
4578     try
4579     Append(SomeTxtFile);
4580     WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
4581     except on e:exception do
4582     //ShowMessageFmt('File create failed with error %d',[error]);
4583     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke skrive til log filen...');
4584     end;
4585     finally
4586     CloseFile(SomeTxtFile);
4587     end;
4588     end
4589     else
4590     begin
4591     try
4592     try
4593     ReWrite(SomeTxtFile);
4594     WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
4595     except on e:exception do
4596     // ShowMessageFmt('File create failed with error %d',[error]);
4597     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke oprette/skrive til log filen...');
4598     end;
4599     finally
4600     CloseFile(SomeTxtFile);
4601     end;
4602     end;
4603     end;
4604     end;
4605    
4606     procedure TMainForm.IndlesRuteskiftFil(var filnavn : string);
4607     var
4608     SomeTxtFile : TextFile;
4609     buffer : string;
4610     linnr : integer;
4611     S: string;
4612     A: TStrArray;
4613     idag, imorgen : TDateTime;
4614     imorgenYmd : string;
4615    
4616     begin
4617     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
4618     logTekst := filnavn+' indlæses.';
4619     SkrivScanningLogFil(logTekst);
4620     SetLength(ruteHverdagArray, 1);
4621     SetLength(ruteLordagArray, 1);
4622     idag := Now;
4623     imorgen := IncDay(idag, 1); //adds 1 day(s)
4624     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4625     if (FormatDateTime('hh:nn',idag) < '12:00') then
4626     begin
4627     imorgen := idag;
4628     end;
4629     imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
4630     if FileExists(filnavn) then
4631     begin
4632     AssignFile(SomeTxtFile, filnavn);
4633     linnr := 0;
4634     try
4635     Reset(SomeTxtFile);
4636     while not EOF(SomeTxtFile) do
4637     begin
4638     ReadLn(SomeTxtFile, buffer) ;
4639     S := buffer;
4640     SetLength(A,0);
4641 torben 2682 TUtils.Explode(A, ';', S);
4642 torben 2645 if (length(A) < 2) then
4643     begin
4644 torben 2682 TUtils.Explode(A, ',', S);
4645 torben 2645 end;
4646     if (length(A) > 1) then
4647     begin
4648     SetLength(ruteHverdagArray, linnr+1);
4649     SetLength(ruteLordagArray, linnr+1);
4650     ruteHverdagArray[linnr] := A[0];
4651     ruteLordagArray[linnr] := A[1];
4652     linnr := linnr+1;
4653     end;
4654     end;
4655     finally
4656     //ShowMessage(IntToStr(length(A)));
4657     CloseFile(SomeTxtFile);
4658     //ShowMessage(IntToStr(length(ruteHverdagArray)));
4659     if (linnr > 0) then
4660     begin
4661     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
4662     logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
4663     SkrivScanningLogFil(logTekst);
4664     end
4665     else
4666     begin
4667     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4668     logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4669     SkrivScanningLogFil(logTekst);
4670 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
4671 torben 2645 end;
4672     end;
4673     end
4674     else
4675     begin
4676     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
4677     logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
4678     SkrivScanningLogFil(logTekst);
4679 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
4680 torben 2645 end;
4681     end;
4682    
4683     procedure TMainForm.IndlesKontrolFil(var filnavn : string);
4684     var
4685     SomeTxtFile : TextFile;
4686     buffer : string;
4687     linnr : integer;
4688     S: string;
4689     A: TStrArray;
4690     idag, imorgen : TDateTime;
4691     imorgenYmd : string;
4692    
4693     begin
4694     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
4695     logTekst := filnavn+' indlæses.';
4696     SkrivScanningLogFil(logTekst);
4697     SetLength(ruteArray, 1);
4698     SetLength(korelisteArray, 1);
4699     idag := Now;
4700     imorgen := IncDay(idag, 1); //adds 1 day(s)
4701     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4702     if (FormatDateTime('hh:nn',idag) < '12:00') then
4703     begin
4704     imorgen := idag;
4705     end;
4706     imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
4707     if FileExists(filnavn) then
4708     begin
4709     AssignFile(SomeTxtFile, filnavn);
4710     linnr := 0;
4711     try
4712     Reset(SomeTxtFile);
4713     while not EOF(SomeTxtFile) do
4714     begin
4715     ReadLn(SomeTxtFile, buffer) ;
4716     S := buffer;
4717     SetLength(A,0);
4718 torben 2682 TUtils.Explode(A, ';', S);
4719 torben 2645 if (length(A) < 3) then
4720     begin
4721 torben 2682 TUtils.Explode(A, ',', S);
4722 torben 2645 end;
4723     if (A[0]=imorgenYmd) then
4724     begin
4725     if (length(A) > 2) then
4726     begin
4727     SetLength(ruteArray, linnr+1);
4728     SetLength(korelisteArray, linnr+1);
4729     ruteArray[linnr] := A[1];
4730     korelisteArray[linnr] := A[2];
4731     linnr := linnr+1;
4732     end;
4733     end;
4734     end;
4735     finally
4736     //ShowMessage(IntToStr(length(A)));
4737     CloseFile(SomeTxtFile);
4738     //ShowMessage(IntToStr(length(ruteArray)));
4739     if (linnr > 0) then
4740     begin
4741     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
4742     logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
4743     SkrivScanningLogFil(logTekst);
4744     end
4745     else
4746     begin
4747     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4748     logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4749     SkrivScanningLogFil(logTekst);
4750 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
4751 torben 2645 end;
4752     end;
4753     end
4754     else
4755     begin
4756     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
4757     logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
4758     SkrivScanningLogFil(logTekst);
4759 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
4760 torben 2645 end;
4761     end;
4762    
4763     //
4764     // Bladhus ***
4765     //
4766     function TMainForm.TjekKoreliste(var RuteNummer, Koreliste : string) : string;
4767     var
4768     i : Integer;
4769     svar : String;
4770    
4771     begin
4772     //ShowMessage('Køreliste 1: '+korelisteArray[0]);
4773     // ShowMessage('Kontrollerer rute ' + RuteNummer + ' og køreliste ' + Koreliste + ' i kontrolfilen');
4774     // NB. Der er rod i begreberne RuteNummer og Koreliste - nogle steder er de byttet rundt!
4775     //ShowMessage('Kontrollerer rute ' + Koreliste + ' og køreliste ' + RuteNummer + ' i kontrolfilen');
4776    
4777     svar := 'Køreliste ikke i kontrolfil';
4778     case BladhusSted of
4779     01 :
4780     begin;
4781     for i := 0 to length(ruteArray)-1 do
4782     begin
4783     if (Koreliste=ruteArray[i]) then
4784     begin
4785     svar := korelisteArray[i]; // returnerer den forventede køreliste
4786     end;
4787     end;
4788     end;
4789     // 02 : begin;
4790     //ShowMessage('02') ;
4791     // end;
4792     03 : begin;
4793     for i := 0 to length(ruteArray)-1 do
4794     begin
4795     if (Koreliste=ruteArray[i]) then
4796     begin
4797     svar := korelisteArray[i]; // returnerer den forventede køreliste
4798     end;
4799     end;
4800     end;
4801     // 04 : begin;
4802     //ShowMessage('04') ;
4803     // end;
4804     else
4805     svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
4806     end;
4807     if (RuteNummer = 'Rutenr') then // fra printertest funktionen
4808     svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
4809    
4810     result := svar;
4811     end;
4812    
4813 torben 2659 procedure TMainForm.VisAlarmSkaerm(strMessage: string);
4814 torben 2657 begin
4815     //ShowMessage('Ændring ikke tilladt');
4816     // Her skal komme en 'rød skærm' alarm
4817 torben 3090 PlaySound(PWideChar(Config.AlarmLyd));
4818 torben 2662 MainForm.Color := clRed;
4819 torben 2659
4820 torben 2662
4821 torben 2657 RuteNummerST.Caption := '';
4822     BoghandlerNavnST.Caption := '';
4823 torben 2668 btnNulstil.Visible := true;
4824 torben 2662
4825     if (strMessage <> '') then
4826     begin
4827     ListBox1.Items.Insert(0, strMessage);
4828     KommentarST.Caption := strMessage;
4829     end;
4830    
4831 torben 3036 Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4832    
4833 torben 2657 end;
4834    
4835 torben 2645 function TMainForm.getProddato() : TDate;
4836     var
4837     idag, imorgen : TDateTime;
4838     imorgenYmd : string;
4839    
4840     begin
4841     idag := Now;
4842     imorgen := IncDay(idag, 1); //adds 1 day(s)
4843     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4844     if (FormatDateTime('hh:nn',idag) < '12:00') then
4845     begin
4846     imorgen := idag;
4847     end;
4848     imorgenYmd := FormatDateTime('dd-mm-yyyy',imorgen);
4849     result := StrToDateTime(imorgenYmd);
4850     end;
4851    
4852     function TMainForm.getProddag() : String;
4853     begin
4854     // ShowMessage(LongDayNames[DayOfWeek(getProddato())]);
4855 torben 2650 result := FormatSettings.LongDayNames[DayOfWeek(getProddato())];
4856 torben 2645 //result := 'lørdag'; // MENS VI TESTER kan vi fremtvinge lørdag situation her
4857     end;
4858    
4859     function TMainForm.retRutenummer(rutenummer : String) : String;
4860     var
4861     i : Integer;
4862     svar : String;
4863    
4864     begin
4865     svar := rutenummer;
4866     case BladhusSted of
4867     01 :
4868     begin;
4869     //ShowMessage('01') ;
4870     end;
4871     // 02 : begin;
4872     //ShowMessage('02') ;
4873     // end;
4874     03 : begin;
4875     for i := 0 to length(ruteHverdagArray)-1 do
4876     begin
4877     if (rutenummer=ruteHverdagArray[i]) then
4878     begin
4879     svar := ruteLordagArray[i]; // returnerer den forventede lørdagsrute
4880     end;
4881     end;
4882     end;
4883     // 04 : begin;
4884     //ShowMessage('04') ;
4885     // end;
4886     else
4887     svar := rutenummer; // Dette svarer til at rute ikke skal ændres
4888     end;
4889     result := svar;
4890     end;
4891    
4892    
4893     procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4894     begin
4895     if Scanogstjekkoden1.Checked then
4896     begin
4897 torben 2654 chkScanTjekkode.Checked := true;
4898 torben 2645 end
4899     else
4900     begin
4901 torben 2654 chkScanTjekkode.Checked := false;
4902 torben 2645 end;
4903     end;
4904    
4905    
4906 torben 3038 //Nedarvet fra IParentForm
4907     procedure TMainForm.Msg( msg : string);
4908     begin
4909     ShowMessage(msg);
4910     end;
4911 torben 2668
4912 torben 2705 //Nedarvet fra IParentForm
4913     procedure TMainForm.LogMessage( msg : string);
4914     begin
4915     ListBox1.Items.Insert(0, msg);
4916     SkrivScanningLogFil(msg);
4917     end;
4918 torben 2685
4919 torben 2668
4920 torben 2705 //Nedarvet fra IParentForm
4921     procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4922 torben 2645 begin
4923    
4924 torben 2705 PrinterstatusStaticText1.Caption := txt;
4925     if (alert) then
4926 torben 2645 begin
4927 torben 2705 PrinterstatusStaticText1.Font.Color := clBlack;
4928     PrinterstatusStaticText1.Color := MainForm.Color;
4929     PrinterstatusStaticText1.Transparent := True;
4930 torben 2645 end
4931     else
4932     begin
4933 torben 2705 PrinterstatusStaticText1.Font.Color := clRed;
4934     PrinterstatusStaticText1.Color := clWhite;
4935     PrinterstatusStaticText1.Transparent := true;
4936 torben 2645 end;
4937     end;
4938    
4939 torben 2705 //Nedarvet fra IParentForm
4940     function TMainForm.GetFormObject() : TForm;
4941     begin
4942     Result := self;
4943     end;
4944 torben 2645
4945 torben 3095 //Nedarvet fra IParentForm
4946     function TMainForm.GetXMLDocument() : TXMLDocument;
4947     begin
4948     Result := XMLDocument1
4949     end;
4950    
4951    
4952 torben 2645 end.
4953    

  ViewVC Help
Powered by ViewVC 1.1.20