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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20