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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20