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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20