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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2692 - (hide annotations) (download)
Thu Sep 3 14:24:23 2015 UTC (8 years, 9 months ago) by torben
File size: 194054 byte(s)
Comment cleanup
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     // Skal ikke toggle men bare sætte funktionen on
3248     // Fravælges ved at vælge en scanningstype
3249 torben 2692 AutomatiskValg1.Checked := true;
3250     PanelValgA.Color := clGreen;
3251     PanelValgA.Font.Color := clWhite;
3252    
3253    
3254    
3255 torben 2645 end;
3256    
3257     procedure TMainForm.Pakkernormal1Click(Sender: TObject);
3258     begin
3259     Scanningtype := '1';
3260     NulstilAutomatiskValg();
3261     InitNatxpresslevering();
3262     end;
3263    
3264     procedure TMainForm.Testforbindelsen1Click(Sender: TObject);
3265     var
3266     RuteNummer : String;
3267     Kommentar : String;
3268     BoghandlerNavn : String;
3269     Koreliste : String;
3270     Falsk : Boolean;
3271     SmsKode : String;
3272     DBKbane : String;
3273     Leveringssted : String;
3274     orgTjekUrls : String;
3275     begin
3276     orgTjekUrls := TjekUrls;
3277     if (TjekUrls = '1') or (TjekUrls = '2') then
3278     begin
3279     TjekkerUrls();
3280     end;
3281     if TjekUrls = '-' then
3282     begin
3283     //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
3284     RuteNummer := '';
3285     Kommentar := 'Se log vinduet';
3286     BoghandlerNavn := 'Fejl i forbindelse til server';
3287     Koreliste := '';
3288     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3289     // Her kommer en alarm og rød skærm
3290     PlaySound(PWideChar(AlarmLyd));
3291     MainForm.Color := clRed;
3292 torben 2668 btnNulstil.Visible := true;
3293 torben 2645 end
3294     else
3295     begin
3296     Falsk := False;
3297 torben 2660
3298 torben 2645 HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
3299     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3300     SmsKode := '999999';
3301     DBKbane := '999';
3302     Leveringssted := 'XXX';
3303     PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
3304     FocusControl(StregkodeST);
3305     end;
3306     TjekUrls := orgTjekUrls;
3307    
3308     end;
3309    
3310     procedure TMainForm.Testprinter1Click(Sender: TObject);
3311     var
3312     RuteNummer : String;
3313     Kommentar : String;
3314     BoghandlerNavn : String;
3315     Koreliste : String;
3316     Falsk : Boolean;
3317     SmsKode : String;
3318     DBKbane : String;
3319     Leveringssted : String;
3320     begin
3321     RuteNummer := 'Rutenr';
3322     Kommentar := '***** Kommentar *****';
3323     BoghandlerNavn := 'Modtagernavn';
3324     Falsk := False;
3325    
3326 torben 2660
3327 torben 2645 if (Printer.Printers.Count = 0) then
3328     begin
3329     ShowMessage('Der er ikke installeret en printer på denne PC.');
3330     end
3331     else if PrinterNavn = 'Ingen' then
3332     begin
3333     ShowMessage('Der er fravalgt printer i dette program.');
3334     end
3335     else
3336     begin
3337     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3338     SmsKode := '999999';
3339     DBKbane := '999';
3340     Leveringssted := 'XXX';
3341     PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
3342     CheckPrintQue('Test');
3343     end;
3344     FocusControl(StregkodeST);
3345     end;
3346    
3347     procedure TMainForm.Timer1Timer(Sender: TObject);
3348     begin
3349     if (TjekPrinter = '1') then
3350     begin
3351     CheckPrintQue('Timer');
3352     end
3353     else
3354     begin
3355     PrinterstatusStaticText1.Caption := '';
3356     PrinterstatusStaticText1.Color := MainForm.Color;
3357     end;
3358     end;
3359    
3360    
3361    
3362     procedure TMainForm.Om1Click(Sender: TObject);
3363     const
3364     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3365     var
3366     tekst, filversion : String;
3367     begin
3368    
3369 torben 2677 filversion := Sto_GetFmtFileVersion('');
3370 torben 2645 tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';
3371    
3372     tekst := tekst+crlf+crlf;
3373     tekst := tekst+'Programmet er installeret som:'+crlf+ParamStr(0);
3374     tekst := tekst+crlf;
3375    
3376     if SpecialVersionSted = '' then
3377     begin
3378     tekst := tekst+crlf+crlf+'Scanningssted: '+StringReplace(Stednavn, ':', '', [rfReplaceAll, rfIgnoreCase])+' ('+Sted+')';
3379     end;
3380    
3381     if SpecialVersionSted <> '' then
3382     begin
3383     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
3384     begin
3385     if Stednavn = '' then
3386     begin
3387     tekst := tekst+crlf+crlf+'Speciel version til: '+BladhusStedNavn[BladhusSted]+' ('+BladhusStedKode[BladhusSted]+')';
3388     end
3389     else
3390     begin
3391 torben 2682 tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
3392 torben 2645 end;
3393     end
3394     else
3395     begin
3396 torben 2682 tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
3397 torben 2645 end;
3398     end;
3399    
3400     if (Pos('omdeling.info',Url) = 0) then
3401     begin
3402     tekst := tekst+crlf+crlf;
3403     tekst := tekst+crlf+crlf+' ********** DETTE ER KUN EN TEST VERSION **********';
3404     tekst := tekst+crlf+crlf;
3405     tekst := tekst+crlf+crlf+'Url: '+url;
3406     end;
3407    
3408     MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
3409    
3410     end;
3411    
3412     procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3413     Rect: TRect; State: TOwnerDrawState);
3414     var
3415     ListBox1MaxLinLgd,i : Integer;
3416     myColor: TColor;
3417     myBrush: TBrush;
3418     begin
3419     ListBox1MaxLinLgd := 0;
3420     myBrush := TBrush.Create;
3421     with (Control as TListBox).Canvas do
3422     begin
3423     if not Odd(Index) then
3424     myColor := clWhite
3425     else
3426     myColor := clSilver;
3427    
3428     if odSelected in State then
3429     begin
3430     myColor := MainForm.Color;
3431     font.Color := clBlack;
3432     end;
3433    
3434     myBrush.Style := bsSolid;
3435     myBrush.Color := myColor;
3436     Windows.FillRect(handle, Rect, myBrush.Handle) ;
3437     Brush.Style := bsClear;
3438     TextOut(Rect.Left, Rect.Top,
3439     (Control as TListBox).Items[Index]) ;
3440     MyBrush.Free;
3441     end;
3442    
3443     for i := 0 to (ListBox1.Items.Count - 1) do
3444     if (ListBox1.Canvas.TextWidth(ListBox1.Items[i]) > ListBox1MaxLinLgd) then
3445     ListBox1MaxLinLgd := ListBox1.Canvas.TextWidth(ListBox1.Items[i]);
3446     ListBox1.ScrollWidth := ListBox1MaxLinLgd;
3447     end;
3448    
3449     procedure TMainForm.Lukprogrammet1Click(Sender: TObject);
3450     begin
3451    
3452     Application.Terminate;
3453    
3454     end;
3455    
3456     procedure TMainForm.Manual1Click(Sender: TObject);
3457     var
3458     fileName : string;
3459     begin
3460     fileName := 'Docs\Manual_' + Scanningtype + '.pdf';
3461    
3462     if FileExists(fileName) then
3463     begin
3464 torben 2685 if TUtils.AdobeReaderExists then
3465 torben 2645 begin
3466     //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3467     ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3468     end
3469     else
3470     begin
3471     ShowMessage('Acrobat Reader er ikke installeret!');
3472     end;
3473     end
3474     else
3475     begin
3476     ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3477     end;
3478     end;
3479    
3480     procedure TMainForm.Manualgenerel1Click(Sender: TObject);
3481     var
3482     fileName : string;
3483     begin
3484     fileName := 'Docs\Manual_0.pdf';
3485    
3486     if FileExists(fileName) then
3487     begin
3488 torben 2685 if TUtils.AdobeReaderExists then
3489 torben 2645 begin
3490     //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3491     ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3492     end
3493     else
3494     begin
3495     ShowMessage('Acrobat Reader er ikke installeret!');
3496     end;
3497     end
3498     else
3499     begin
3500     ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3501     end;
3502     end;
3503    
3504 torben 2664 procedure TMainForm.menuIndleveringClick(Sender: TObject);
3505     begin
3506     Scanningtype := '7';
3507     NulstilAutomatiskValg();
3508     InitIndleveringskode();
3509     end;
3510    
3511 torben 2645 procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3512     begin
3513    
3514     if Sprgefterboghandlernummer1.Checked then
3515     begin
3516 torben 2653 chkSporgEfterKunde.Checked := true;
3517 torben 2645 end
3518     else
3519     begin
3520 torben 2653 chkSporgEfterKunde.Checked := false;
3521 torben 2645 end;
3522    
3523    
3524     end;
3525    
3526     procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);
3527     begin
3528     Scanningtype := '2';
3529     NulstilAutomatiskValg();
3530     InitReturFraDao();
3531     end;
3532    
3533     procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);
3534     begin
3535     Scanningtype := '6';
3536     InitReturFraPakkeshop();
3537     NulstilAutomatiskValg();
3538     end;
3539    
3540     procedure TMainForm.InitNatxpresslevering();
3541     begin
3542     AutomatiskTjekkodeStyring1.Enabled := true;
3543 torben 2668 btnNulstil.Visible := false;
3544 torben 2645 Pakkernormal1.Checked := true;
3545     InitForm(FarveNormal,TitelNormal,UrlNormal);
3546     PanelValg1.Color := clGreen;
3547     PanelValg1.Font.Color := clWhite;
3548 torben 2653
3549 torben 2652 chkAltidPrintLabel.Enabled := true;
3550 torben 2645 Altidprintepakkelabel1.Enabled := true;
3551     Altidprintepakkelabel1.Checked := false;
3552 torben 2652 chkAltidPrintLabel.Checked := false;
3553 torben 2645 Sprgefterboghandlernummer1.Checked := false;
3554 torben 2653 chkSporgEfterKunde.Checked := false;
3555 torben 2645 Sprgefterboghandlernummer1.Enabled := true;
3556     Smpakker1.Enabled := false;
3557     Storepakker1.Enabled := false;
3558 torben 2655 radioStorPakke.Enabled := false;
3559     radioLillePakke.Enabled := false;
3560 torben 2645 ListBox1.Visible := true;
3561     OpdaterListenButton01.Enabled := true;
3562     EKLoverforsel.Enabled := true;
3563     InitLillePakke();
3564     ListBox1.Items.Clear;
3565     if BladhusSted = 0 then
3566     begin
3567     IndlesScanningLogFil();
3568     IndlesManglendeScanninger();
3569     end;
3570     end;
3571    
3572     procedure TMainForm.InitReturFraDao();
3573     begin
3574     AutomatiskTjekkodeStyring1.Enabled := false;
3575     ReturpakkerfraDAO1.Checked := true;
3576 torben 2668 btnNulstil.Visible := false;
3577 torben 2645 InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3578     PanelValg2.Color := clGreen;
3579     PanelValg2.Font.Color := clWhite;
3580 torben 2653
3581 torben 2652 chkAltidPrintLabel.Enabled := false;
3582 torben 2645 Altidprintepakkelabel1.Enabled := false;
3583 torben 2652
3584 torben 2645 Altidprintepakkelabel1.Checked := false;
3585     Sprgefterboghandlernummer1.Checked := false;
3586 torben 2653 chkSporgEfterKunde.Checked := false;
3587 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3588     Smpakker1.Enabled := true;
3589     Storepakker1.Enabled := true;
3590 torben 2655 radioStorPakke.Enabled := true;
3591     radioLillePakke.Enabled := true;
3592 torben 2645 ListBox1.Visible := true;
3593     ListBox1.Items.Clear;
3594     ListBox2.Items.Clear;
3595     EKLoverforsel.Enabled := false;
3596     InitLillePakke();
3597     end;
3598    
3599     procedure TMainForm.InitReturFraKunde();
3600     begin
3601     AutomatiskTjekkodeStyring1.Enabled := false;
3602     Returpakkerfraboghandler1.Checked := true;
3603 torben 2668 btnNulstil.Visible := false;
3604 torben 2645 InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3605     PanelValg3.Color := clGreen;
3606     PanelValg3.Font.Color := clWhite;
3607 torben 2653
3608 torben 2652 chkAltidPrintLabel.Enabled := false;
3609 torben 2645 Altidprintepakkelabel1.Enabled := false;
3610     Altidprintepakkelabel1.Checked := false;
3611     Sprgefterboghandlernummer1.Checked := false;
3612 torben 2653 chkSporgEfterKunde.Checked := false;
3613 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3614     Smpakker1.Enabled := true;
3615     Storepakker1.Enabled := true;
3616 torben 2655 radioStorPakke.Enabled := true;
3617     radioLillePakke.Enabled := true;
3618 torben 2645 ListBox1.Visible := true;
3619     ListBox1.Items.Clear;
3620     ListBox2.Items.Clear;
3621     EKLoverforsel.Enabled := false;
3622     InitLillePakke();
3623     end;
3624    
3625     procedure TMainForm.InitDirektelevering();
3626     begin
3627     AutomatiskTjekkodeStyring1.Enabled := false;
3628     Budlevering1.Checked := true;
3629 torben 2668 btnNulstil.Visible := false;
3630 torben 2645 InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3631     PanelValg4.Color := clGreen;
3632     PanelValg4.Font.Color := clWhite;
3633 torben 2653
3634 torben 2652 chkAltidPrintLabel.Enabled := false;
3635 torben 2645 Altidprintepakkelabel1.Enabled := false;
3636 torben 2652
3637 torben 2645 Altidprintepakkelabel1.Checked := false;
3638     Sprgefterboghandlernummer1.Checked := false;
3639 torben 2653 chkSporgEfterKunde.Checked := false;
3640 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3641     Smpakker1.Enabled := true;
3642     Storepakker1.Enabled := true;
3643 torben 2655 radioStorPakke.Enabled := true;
3644     radioLillePakke.Enabled := true;
3645 torben 2645 ListBox1.Visible := true;
3646     ListBox1.Items.Clear;
3647 torben 2691 BtnDownloadKontrolfil.Enabled := false;
3648 torben 2645 OpdaterListenButton01.Enabled := true;
3649     DownloadButton03.Visible := false;
3650     EKLoverforsel.Enabled := false;
3651     IdFTP1.Passive := true;
3652     IdFTP1.PassiveUseControlHost := true;
3653     if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3654     begin
3655     IndlesScanningLogFil();
3656     IndlesManglendeScanninger();
3657     end;
3658    
3659     end;
3660    
3661     procedure TMainForm.InitPakkeshoplevering();
3662     begin
3663     AutomatiskTjekkodeStyring1.Enabled := true;
3664     Pakkeshoplevering1.Checked := true;
3665 torben 2668 btnNulstil.Visible := false;
3666 torben 2645 InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3667     PanelValg5.Color := clGreen;
3668     PanelValg5.Font.Color := clWhite;
3669 torben 2653
3670 torben 2652 chkAltidPrintLabel.Enabled := false;
3671 torben 2645 Altidprintepakkelabel1.Enabled := false;
3672 torben 2652
3673 torben 2645 Altidprintepakkelabel1.Checked := false;
3674     Sprgefterboghandlernummer1.Checked := false;
3675 torben 2653 chkSporgEfterKunde.Checked := false;
3676 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3677     Smpakker1.Enabled := false;
3678     Storepakker1.Enabled := false;
3679 torben 2655 radioStorPakke.Enabled := false;
3680     radioLillePakke.Enabled := false;
3681 torben 2645 ListBox1.Visible := true;
3682     ListBox1.Items.Clear;
3683 torben 2691 BtnDownloadKontrolfil.Enabled := false;
3684 torben 2645 OpdaterListenButton01.Enabled := true;
3685 torben 2656
3686 torben 2645 EKLoverforsel.Enabled := true;
3687 torben 2656
3688 torben 2645 InitLillePakke();
3689     IndlesScanningLogFil();
3690     if BladhusSted = 0 then
3691     begin
3692     IndlesManglendeScanninger();
3693     end;
3694     IdFTP1.Passive := true;
3695     IdFTP1.PassiveUseControlHost := true;
3696     end;
3697    
3698     procedure TMainForm.InitReturFraPakkeshop();
3699     begin
3700     AutomatiskTjekkodeStyring1.Enabled := false;
3701     Returpakkerfrapakkeshop1.Checked := true;
3702 torben 2668 btnNulstil.Visible := false;
3703 torben 2645 InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3704     PanelValg6.Color := clGreen;
3705     PanelValg6.Font.Color := clWhite;
3706 torben 2653
3707 torben 2652 chkAltidPrintLabel.Enabled := false;
3708 torben 2645 Altidprintepakkelabel1.Enabled := false;
3709 torben 2652
3710 torben 2645 Altidprintepakkelabel1.Checked := false;
3711     Sprgefterboghandlernummer1.Checked := false;
3712 torben 2653 chkSporgEfterKunde.Checked := false;
3713 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3714     Smpakker1.Enabled := false;
3715     Storepakker1.Enabled := false;
3716 torben 2655 radioStorPakke.Enabled := false;
3717     radioLillePakke.Enabled := false;
3718 torben 2645 ListBox1.Visible := true;
3719     ListBox1.Items.Clear;
3720 torben 2691 BtnDownloadKontrolfil.Enabled := false;
3721 torben 2645 OpdaterListenButton01.Enabled := true;
3722     EKLoverforsel.Enabled := false;
3723     InitLillePakke();
3724     IndlesScanningLogFil();
3725     if BladhusSted = 0 then
3726     begin
3727     IndlesManglendeScanninger();
3728     end;
3729     IdFTP1.Passive := true;
3730     IdFTP1.PassiveUseControlHost := true;
3731     end;
3732    
3733     procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);
3734     begin
3735     Scanningtype := '3';
3736     NulstilAutomatiskValg();
3737     InitReturFraKunde();
3738     end;
3739    
3740 torben 2650 procedure TMainForm.InitIndleveringskode();
3741     begin
3742 torben 2664 menuIndlevering.Checked := true;
3743 torben 2650 AutomatiskTjekkodeStyring1.Enabled := false;
3744 torben 2664
3745 torben 2668 btnNulstil.Visible := false;
3746 torben 2656 InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3747 torben 2650 PanelValg7.Color := clGreen;
3748     PanelValg7.Font.Color := clWhite;
3749 torben 2653
3750 torben 2652 chkAltidPrintLabel.Enabled := false;
3751 torben 2650 Altidprintepakkelabel1.Enabled := false;
3752 torben 2652
3753 torben 2650 Altidprintepakkelabel1.Checked := false;
3754     Sprgefterboghandlernummer1.Checked := false;
3755 torben 2656 Sprgefterboghandlernummer1.Enabled := false;
3756 torben 2653 chkSporgEfterKunde.Checked := false;
3757 torben 2656
3758    
3759    
3760 torben 2650 Smpakker1.Enabled := false;
3761     Storepakker1.Enabled := false;
3762 torben 2655 radioStorPakke.Enabled := false;
3763     radioLillePakke.Enabled := false;
3764 torben 2650 ListBox1.Visible := true;
3765 torben 2656 ListBox1.Items.Clear();
3766    
3767 torben 2691 BtnDownloadKontrolfil.Enabled := false;
3768 torben 2650 OpdaterListenButton01.Enabled := true;
3769     EKLoverforsel.Enabled := false;
3770 torben 2664 InitLillePakke();
3771     IndlesScanningLogFil();
3772     if BladhusSted = 0 then
3773     begin
3774     IndlesManglendeScanninger();
3775     end;
3776 torben 2650 IdFTP1.Passive := true;
3777     IdFTP1.PassiveUseControlHost := true;
3778     end;
3779    
3780    
3781 torben 2645 procedure TMainForm.Storepakker1Click(Sender: TObject);
3782     begin
3783     InitStorPakke();
3784     end;
3785    
3786     procedure TMainForm.Smpakker1Click(Sender: TObject);
3787     begin
3788     InitLillePakke();
3789     end;
3790    
3791     procedure TMainForm.InitLillePakke();
3792     begin
3793 torben 2655 radioLillePakke.Checked := true;
3794 torben 2645 Smpakker1.Checked := true;
3795     // Stregkode := '';
3796     end;
3797    
3798     procedure TMainForm.InitStorPakke();
3799     begin
3800 torben 2655 radioStorPakke.Checked := true;
3801 torben 2645 Storepakker1.Checked := true;
3802     // 20150310: start
3803     // Stregkode := '';
3804     // 20150310: slut
3805     end;
3806    
3807     /// <summary>
3808     /// This function reads the file resource of "FileName" and returns
3809     /// the version number as formatted text.</summary>
3810     /// <example>
3811     /// Sto_GetFmtFileVersion() = '4.13.128.0'
3812     /// Sto_GetFmtFileVersion('', '%.2d-%.2d-%.2d') = '04-13-128'
3813     /// </example>
3814     /// <remarks>If "Fmt" is invalid, the function may raise an
3815     /// EConvertError exception.</remarks>
3816     /// <param name="FileName">Full path to exe or dll. If an empty
3817     /// string is passed, the function uses the filename of the
3818     /// running exe or dll.</param>
3819     /// <param name="Fmt">Format string, you can use at most four integer
3820     /// values.</param>
3821     /// <returns>Formatted version number of file, '' if no version
3822     /// resource found.</returns>
3823 torben 2677 function TMainForm.Sto_GetFmtFileVersion(const FileName: String = ''): String;
3824 torben 2645 var
3825     sFileName: String;
3826     iBufferSize: DWORD;
3827     iDummy: DWORD;
3828     pBuffer: Pointer;
3829     pFileInfo: Pointer;
3830 torben 2677 iVer: array[1..4] of Integer;
3831 torben 2645 begin
3832     // set default value
3833     Result := '';
3834     // get filename of exe/dll if no filename is specified
3835     sFileName := Trim(FileName);
3836     if (sFileName = '') then
3837     sFileName := GetModuleName(HInstance);
3838     // get size of version info (0 if no version info exists)
3839     iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);
3840     if (iBufferSize > 0) then
3841     begin
3842     GetMem(pBuffer, iBufferSize);
3843     try
3844     // get fixed file info (language independent)
3845     GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);
3846     VerQueryValue(pBuffer, '\', pFileInfo, iDummy);
3847     // read version blocks
3848     iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
3849     iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
3850     iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
3851     iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
3852     finally
3853     FreeMem(pBuffer);
3854     end;
3855 torben 2677
3856 torben 2645 // format result string
3857 torben 2677 Result := Format('%d.%d.%d.%d', [iVer[1], iVer[2], iVer[3], iVer[4]]);
3858 torben 2645
3859     end;
3860     end;
3861    
3862     procedure TMainForm.PlaySound(filename : PWideChar);
3863     begin
3864     if (filename <> '') then
3865     begin
3866     sndPlaySound(filename,
3867     SND_NODEFAULT Or SND_ASYNC);
3868     end;
3869     end;
3870    
3871     procedure TMainForm.Testlyd1Click(Sender: TObject);
3872     begin
3873     if AlarmLyd <> '' then
3874     begin
3875     PlaySound(PWideChar(AlarmLyd));
3876     end
3877     else
3878     begin
3879     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (alarm)'), 'Information', MB_OK);
3880     end;
3881     end;
3882    
3883     procedure TMainForm.Testlyd2Click(Sender: TObject);
3884     begin
3885     if (PakkeshopText1.Caption = 'Tjekkode') then
3886     begin
3887     if ScannetOkTilTjekkodeLyd <> '' then
3888     begin
3889     PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
3890     end
3891     else
3892     begin
3893     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkTilTjekkodeLyd)'), 'Information', MB_OK);
3894     end;
3895     exit;
3896     end;
3897    
3898     if Smpakker1.Checked then
3899     if ScannetOkLyd <> '' then
3900     begin
3901     PlaySound(PWideChar(ScannetOkLyd));
3902     end
3903     else
3904     begin
3905     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3906     end;
3907     if Storepakker1.Checked then
3908     if ScannetOkStorLyd <> '' then
3909     begin
3910     PlaySound(PWideChar(ScannetOkStorLyd));
3911     end
3912     else
3913     begin
3914     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
3915     end;
3916     end;
3917    
3918    
3919     procedure TMainForm.Budlevering1Click(Sender: TObject);
3920     begin
3921     Scanningtype := '4';
3922     NulstilAutomatiskValg();
3923     InitDirektelevering();
3924     end;
3925    
3926     procedure TMainForm.Button1Click(Sender: TObject);
3927     begin;
3928     CheckCode();
3929     end;
3930    
3931     procedure TMainForm.EKLoverforselClick(Sender: TObject);
3932     var
3933     WebSvar : String;
3934     URLStr : String;
3935     StedKode : String;
3936     Node: IXMLNode;
3937     I: Integer;
3938     status, kommentar : String;
3939    
3940     begin
3941     EKLoverforsel.Enabled := false;
3942    
3943     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
3944     logTekst := 'Overfører de scannede pakker til EKL';
3945     SkrivScanningLogFil(logTekst);
3946     StedKode := Sted;
3947     URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3948     // 20150330: start
3949     if PanelValg5.Color = clGreen then
3950     begin
3951     URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3952     end;
3953     // 20150330: slut
3954    
3955     try
3956     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3957     WebSvar := IdHTTP1.Get(URLStr);
3958     except
3959     on e:EIdConnClosedGracefully do
3960     begin
3961     // Her skal vi ikke gøre noget - men vi skal forespørge igen
3962     WebSvar := IdHTTP1.Get(URLStr);
3963     end;
3964     on e:exception do
3965     begin
3966     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
3967     logTekst := 'Fejl i web forespørgsel: '+e.Message;
3968     SkrivScanningLogFil(logTekst);
3969     raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
3970     end;
3971     end;
3972     try
3973     XMLDocument1.LoadFromXML(WebSvar);
3974     for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
3975     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
3976     if Node.NodeType = ntElement then begin
3977     if Node.NodeName = 'Status' then begin
3978     if not VarIsNull(Node.NodeValue) then
3979     status := Node.NodeValue;
3980     end;
3981     if Node.NodeName = 'Kommentar' then begin
3982     if not VarIsNull(Node.NodeValue) then
3983     kommentar := Node.NodeValue;
3984     end;
3985     end;
3986     end;
3987    
3988     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status+' '+kommentar);
3989     logTekst := 'Overførsel til EKL: ' + status;
3990     SkrivScanningLogFil(logTekst);
3991    
3992     except on e:exception do
3993     begin
3994     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status);
3995     logTekst := 'Overførsel til EKL: ' + status;
3996     SkrivScanningLogFil(logTekst);
3997     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
3998     logTekst := 'Fejl i XML-format: '+e.Message;
3999     SkrivScanningLogFil(logTekst);
4000     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4001     end;
4002     end;
4003    
4004     EKLoverforsel.Enabled := true;
4005    
4006     ListBox1.SetFocus; // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4007    
4008     // Hvis der var fejl i overførslen skal dette fejlmeldes her
4009     if status = 'Fejl' then
4010     begin // Her skal komme en alarm og rød skærm
4011     PlaySound(PWideChar(AlarmLyd));
4012     MainForm.Color := clRed;
4013     RutenummerST.Caption := 'EKL overførsel';
4014     BoghandlerNavnST.Caption := 'Fejl:';
4015     if (pos('Deadlock', Kommentar) > 0) then
4016     begin
4017     RutenummerST.Caption := 'EKL overførsel fejlet';
4018     BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
4019     end;
4020     KommentarST.Caption := Kommentar;
4021 torben 2668 btnNulstil.Visible := true;
4022 torben 2645 end;
4023    
4024     end;
4025    
4026     procedure TMainForm.CheckCode();
4027     var
4028     Barcode, Svar : String;
4029     ClickedOK : Boolean;
4030     begin
4031     ClickedOK := InputQuery('Barcode check', 'Indtast stregkode', Barcode);
4032     if ClickedOk then
4033     begin
4034     { if (BarCodeValid(Barcode)) then
4035     MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
4036     else
4037     MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
4038     }
4039     // MessageBox(Handle, PAnsiChar(CheckSumModulo10(Barcode)), 'Stregkode', MB_OK);
4040     { if (CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1)) = Barcode) then
4041     MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
4042     else
4043     MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
4044     }
4045 torben 2682 Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
4046 torben 2645
4047     MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
4048     CheckCode();
4049     end;
4050    
4051     end;
4052    
4053    
4054     //
4055     // Bladhus ***
4056     //
4057     procedure TMainForm.DownloadBladhusRuteskiftfil();
4058     const
4059     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4060    
4061     var
4062     filnavn_input : string;
4063     filnavn_output : string;
4064     buttonSelected : Integer;
4065    
4066     begin
4067     filnavn_input := BladhusRuteskiftfil_server; // hvis filen ikke findes vises 'no such file or directory'
4068     filnavn_output := BladhusRuteskiftfil_lokal;
4069    
4070     case BladhusSted of
4071     00 : begin;
4072     end;
4073     01 : begin;
4074     buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4075     if buttonSelected = mrOK then
4076     begin
4077     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4078     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4079     SkrivScanningLogFil(logTekst);
4080     try
4081     try
4082    
4083     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4084     IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
4085     IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
4086     IdFTP1.Connect;
4087    
4088     //IdFTP1.TransferType := ftASCII;
4089     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4090     try
4091     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4092     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4093     except on e:EIdConnClosedGracefully do
4094     begin
4095     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4096     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4097     end;
4098     end;
4099     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4100    
4101     ListBox1.Items.Insert(0,TimeToStr(now) + ': Ruteskift fil gemt lokalt som ' + filnavn_output + '.');
4102     logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
4103     SkrivScanningLogFil(logTekst);
4104    
4105     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
4106     logTekst := 'Ruteskift fil tjekkes.';
4107     SkrivScanningLogFil(logTekst);
4108    
4109     finally
4110     IdFTP1.Disconnect;
4111     end;
4112    
4113     except on e:exception do
4114     begin
4115     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4116     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4117     SkrivScanningLogFil(logTekst);
4118     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4119     [e.Message
4120     + CrLf + 'Host: '+IdFTP1.host
4121     + CrLf + 'Username: '+IdFTP1.Username
4122     ]
4123     );
4124     end;
4125     end;
4126     end
4127     else
4128     begin
4129     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
4130     logTekst := 'Download af ruteskiftfil annulleret';
4131     SkrivScanningLogFil(logTekst);
4132     end;
4133     IndlesRuteskiftFil(filnavn_output);
4134     end;
4135     02 : begin;
4136     end;
4137     03 : begin;
4138     buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4139     if buttonSelected = mrOK then
4140     begin
4141     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4142     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4143     SkrivScanningLogFil(logTekst);
4144     try
4145     try
4146    
4147     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4148     IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
4149     IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
4150     IdFTP1.Connect;
4151    
4152     //IdFTP1.TransferType := ftASCII;
4153     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4154     try
4155     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4156     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4157     except on e:EIdConnClosedGracefully do
4158     begin
4159     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4160     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4161     end;
4162     end;
4163     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4164    
4165     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute ruteskift fil gemt lokalt som ' + filnavn_output + '.');
4166     logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
4167     SkrivScanningLogFil(logTekst);
4168    
4169     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
4170     logTekst := 'Ruteskift fil tjekkes.';
4171     SkrivScanningLogFil(logTekst);
4172    
4173     finally
4174     IdFTP1.Disconnect;
4175     end;
4176    
4177     except on e:exception do
4178     begin
4179     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4180     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4181     SkrivScanningLogFil(logTekst);
4182     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4183     [e.Message
4184     + CrLf + 'Host: '+IdFTP1.host
4185     + CrLf + 'Username: '+IdFTP1.Username
4186     ]
4187     );
4188     end;
4189     end;
4190     end
4191     else
4192     begin
4193     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
4194     logTekst := 'Download af ruteskiftfil annulleret';
4195     SkrivScanningLogFil(logTekst);
4196     end;
4197     IndlesRuteskiftFil(filnavn_output);
4198     end;
4199     04 : begin;
4200     end;
4201     else
4202     ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
4203     end;
4204    
4205     end;
4206    
4207     procedure TMainForm.DownloadBladhusKontrolfil();
4208     const
4209     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4210    
4211     var
4212     filnavn_input : string;
4213     filnavn_output : string;
4214     buttonSelected : Integer;
4215    
4216     begin
4217     filnavn_input := BladhusKontrolfil_server; // hvis filen ikke findes vises 'no such file or directory'
4218     filnavn_output := BladhusKontrolfil_lokal;
4219    
4220     case BladhusSted of
4221     01 :
4222     begin;
4223     buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4224     if buttonSelected = mrOK then
4225     begin
4226     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4227     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4228     SkrivScanningLogFil(logTekst);
4229     try
4230     try
4231    
4232     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4233     IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
4234     IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
4235     IdFTP1.Connect;
4236    
4237     //IdFTP1.TransferType := ftASCII;
4238     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4239     try
4240     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4241     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4242     except on e:EIdConnClosedGracefully do
4243     begin
4244     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4245     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4246     end;
4247     end;
4248     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4249    
4250     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
4251     logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
4252     SkrivScanningLogFil(logTekst);
4253    
4254     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
4255     logTekst := 'Rute kontrol fil tjekkes.';
4256     SkrivScanningLogFil(logTekst);
4257    
4258     finally
4259     IdFTP1.Disconnect;
4260     end;
4261    
4262     except on e:exception do
4263     begin
4264     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4265     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4266     SkrivScanningLogFil(logTekst);
4267     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4268     [e.Message
4269     + CrLf + 'Host: '+IdFTP1.host
4270     + CrLf + 'Username: '+IdFTP1.Username
4271     ]
4272     );
4273     end;
4274     end;
4275     end
4276     else
4277     begin
4278     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
4279     logTekst := 'Download af kontrolfil annulleret';
4280     SkrivScanningLogFil(logTekst);
4281     end;
4282     IndlesKontrolFil(filnavn_output);
4283     end;
4284     02 : begin;
4285     end;
4286     03 : begin;
4287     buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4288     if buttonSelected = mrOK then
4289     begin
4290     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4291     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4292     SkrivScanningLogFil(logTekst);
4293     try
4294     try
4295    
4296     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4297     IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
4298     IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
4299     IdFTP1.Connect;
4300    
4301     //IdFTP1.TransferType := ftASCII;
4302     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4303     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4304    
4305     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
4306     logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
4307     SkrivScanningLogFil(logTekst);
4308    
4309     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
4310     logTekst := 'Rute kontrol fil tjekkes.';
4311     SkrivScanningLogFil(logTekst);
4312    
4313     finally
4314     IdFTP1.Disconnect;
4315     end;
4316    
4317     except on e:exception do
4318     begin
4319     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4320     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4321     SkrivScanningLogFil(logTekst);
4322     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4323     [e.Message
4324     + CrLf + 'Host: '+IdFTP1.host
4325     + CrLf + 'Username: '+IdFTP1.Username
4326     ]
4327     );
4328     end;
4329     end;
4330     end
4331     else
4332     begin
4333     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
4334     logTekst := 'Download af kontrolfil annulleret';
4335     SkrivScanningLogFil(logTekst);
4336     end;
4337     IndlesKontrolFil(filnavn_output);
4338     end;
4339     04 : begin;
4340     end;
4341     else
4342     ShowMessage('Ukendt Bladhus sted ???') ;
4343     end;
4344    
4345     end;
4346    
4347     procedure TMainForm.SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
4348     const
4349     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4350    
4351     var
4352     testsystem : String;
4353    
4354     begin
4355     testsystem := '';
4356     if (Pos('omdeling.info',Url) = 0) then
4357     begin
4358     testsystem := 'TEST_';
4359     end;
4360     filnavn_output := testsystem + filnavn_output;
4361    
4362     ListBox1.Items.Insert(0,TimeToStr(now) + ': Sender ' + filnavn_input + ' til DAO ftp serveren.');
4363     logTekst := 'Sender ' + filnavn_input + ' til DAO ftp serveren.';
4364     SkrivScanningLogFil(logTekst);
4365     try
4366     try
4367    
4368     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4369     IdFTP1.Username:='scannerprogram'; // hvis forkert vises 'login incorrect'
4370     IdFTP1.Password:='DaoScan2015'; // hvis forkert vises 'login incorrect'
4371     IdFTP1.Connect;
4372    
4373     //IdFTP1.TransferType := ftASCII;
4374     try
4375     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4376     IdFTP1.ChangeDir('fraScannerprogram');
4377     IdFTP1.Put(filnavn_input, filnavn_output, True);
4378     except on e:EIdConnClosedGracefully do
4379     begin
4380     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4381     IdFTP1.Put(filnavn_input, filnavn_output, True);
4382     end;
4383     end;
4384     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4385    
4386     logTekst := fil_type + ' fil sendt til DAO som ' + filnavn_output + '.';
4387     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4388     SkrivScanningLogFil(logTekst);
4389    
4390     finally
4391     IdFTP1.Disconnect;
4392     end;
4393    
4394     except on e:exception do
4395     begin
4396     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4397     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4398     SkrivScanningLogFil(logTekst);
4399     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4400     [e.Message
4401     + CrLf + 'Host: '+IdFTP1.host
4402     + CrLf + 'Username: '+IdFTP1.Username
4403     ]
4404     );
4405     end;
4406     end;
4407     end;
4408    
4409     procedure TMainForm.UploadLogfilTilDAO();
4410     const
4411     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4412    
4413     var
4414     idag, imorgen : TDateTime;
4415     imorgenYmd : string;
4416     logFilnavn : string;
4417     filnavn_input : string;
4418     filnavn_output : string;
4419     buttonSelected : Integer;
4420     openDialog : TOpenDialog;
4421    
4422     begin
4423     idag := Now;
4424     imorgen := IncDay(idag, 1); //adds 1 day(s)
4425     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4426     if (FormatDateTime('hh:nn',idag) < '12:00') then
4427     begin
4428     imorgen := idag;
4429     end;
4430     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4431     logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4432     filnavn_input := logFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4433     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4434    
4435     buttonSelected := MessageDlg('Sender den aktuelle log fil (' + filnavn_input + ') til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4436     if buttonSelected = mrOK then
4437     begin
4438     SendFilTilDao('Log', filnavn_input, filnavn_output);
4439     end
4440     else
4441     begin
4442     buttonSelected := MessageDlg('Vil du sende en anden logfil til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4443     if buttonSelected = mrOK then
4444     begin
4445     // Create the open dialog object - assign to our open dialog variable
4446     openDialog := TOpenDialog.Create(self);
4447    
4448     // Set up the starting directory to be the current one
4449     openDialog.InitialDir := GetCurrentDir + '\Logs';
4450    
4451     // Only allow existing files to be selected
4452     openDialog.Options := [ofFileMustExist];
4453    
4454     // Allow only .log files to be selected
4455     openDialog.Filter := 'Log filer|*.log';
4456    
4457     // Display the open file dialog
4458     if openDialog.Execute then
4459     begin
4460     filnavn_input := openDialog.FileName; // hvis filen ikke findes vises 'no such file or directory'
4461     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4462     SendFilTilDao('Log', filnavn_input, filnavn_output);
4463     end
4464     else
4465     begin
4466     logTekst := 'Upload af log fil annulleret';
4467     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4468     SkrivScanningLogFil(logTekst);
4469     end;
4470    
4471     // Free up the dialog
4472     openDialog.Free;
4473     end
4474     else
4475     begin
4476     logTekst := 'Upload af log fil annulleret';
4477     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4478     SkrivScanningLogFil(logTekst);
4479     end;
4480     end;
4481    
4482     end;
4483    
4484     procedure TMainForm.UploadInifilTilDAO();
4485     const
4486     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4487    
4488     var
4489     idag, imorgen : TDateTime;
4490     imorgenYmd : string;
4491     iniFilnavn : string;
4492     filnavn_input : string;
4493     filnavn_output : string;
4494     buttonSelected : Integer;
4495    
4496     begin
4497     idag := Now;
4498     imorgen := IncDay(idag, 1); //adds 1 day(s)
4499     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4500     if (FormatDateTime('hh:nn',idag) < '12:00') then
4501     begin
4502     imorgen := idag;
4503     end;
4504     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4505     iniFilnavn := ChangeFileExt(ExtractFileName(ExtractFileName(ParamStr(0))), '.ini');
4506     filnavn_input := iniFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4507     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.ini';
4508    
4509     buttonSelected := MessageDlg('Sender ini filen ' + filnavn_input + ' til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4510     if buttonSelected = mrOK then
4511     begin
4512     SendFilTilDao('Ini', filnavn_input, filnavn_output);
4513     end
4514     else
4515     begin
4516     logTekst := 'Upload af ini fil annulleret';
4517     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4518     SkrivScanningLogFil(logTekst);
4519     end;
4520    
4521     end;
4522    
4523     procedure TMainForm.Uploadlogfil1Click(Sender: TObject);
4524     begin
4525     UploadLogfilTilDAO();
4526     UploadInifilTilDAO();
4527     ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4528     end;
4529    
4530 torben 2691 procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4531 torben 2645 begin
4532     DownloadBladhusKontrolfil();
4533     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4534     end;
4535    
4536     procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);
4537     const
4538     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4539    
4540     begin
4541     IndlesManglendeScanninger();
4542     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4543     end;
4544    
4545     procedure TMainForm.DownloadButton03Click(Sender: TObject);
4546     begin
4547     if (getProddag() = 'lørdag') then
4548     begin
4549     DownloadBladhusRuteskiftfil();
4550     end;
4551     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4552     end;
4553    
4554    
4555 torben 2677 // ToDo: PrintPakkeshopLabel()
4556 torben 2668 procedure TMainForm.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);
4557 torben 2677 var
4558     XForm, XFormOld: TXForm; //Bruges til rotate X-formation
4559     Angle: integer;
4560     gMode: integer;
4561     Dirigering: string;
4562    
4563 torben 2668 begin
4564     with Printer do
4565     begin
4566     BeginDoc();
4567    
4568    
4569 torben 2677 Canvas.Font.Size := 16;
4570     Canvas.TextOut(15,10, 'Code: ' + PakkeshopLabel.Tjekkode + ' ' + PakkeshopLabel.Overskrift);
4571 torben 2668
4572 torben 2677
4573    
4574     Canvas.TextOut(25, 90, PakkeshopLabel.Navn );
4575     Canvas.TextOut(25, 135, PakkeshopLabel.Vejnavn );
4576     Canvas.TextOut(25, 180, PakkeshopLabel.Postnr );
4577    
4578    
4579     Canvas.Font.Size := 9;
4580     Canvas.TextOut(110, 240, 'Pakkeshop:');
4581     Canvas.TextOut(110, 270, PakkeshopLabel.PakkeshopNavn);
4582     Canvas.TextOut(110, 300, PakkeshopLabel.PakkeshopAddr);
4583     Canvas.TextOut(110, 330, PakkeshopLabel.PakkeshopPostnr);
4584    
4585     Canvas.TextOut(350, 240, 'Afsender:');
4586     Canvas.TextOut(350, 270, PakkeshopLabel.AfsenderNavn);
4587     Canvas.TextOut(350, 300, PakkeshopLabel.AfsenderAdresse);
4588     Canvas.TextOut(350, 330, PakkeshopLabel.AfsenderPostnr);
4589    
4590     Dirigering := PakkeshopLabel.PakkeshopSted + ' | ' + PakkeshopLabel.PakkeshopTurid + ' | ' + PakkeshopLabel.PakkeshopNr;
4591     if ( PakkeshopLabel.Koreliste <> '') then
4592     begin
4593     Dirigering := Dirigering + ' > ' + PakkeshopLabel.Koreliste;
4594     end;
4595    
4596    
4597     Canvas.Font.Size := 12;
4598     Canvas.TextOut(15, 370, Dirigering);
4599    
4600    
4601    
4602    
4603    
4604     //Tegn adskillelses linier
4605     Canvas.Pen.Width := 2;
4606     //Øverste linie
4607     Canvas.MoveTo(20,80);
4608     Canvas.LineTo(600,80);
4609    
4610     // Midterste linie
4611     Canvas.MoveTo( 20, 240);
4612     Canvas.LineTo(600, 240);
4613    
4614     //Nederste linie
4615     Canvas.MoveTo( 20, 370);
4616     Canvas.LineTo(600, 370);
4617    
4618    
4619     //Tegn skrå streger over afsender
4620     Canvas.Pen.Width := 1;
4621     Canvas.MoveTo(600, 250);
4622     Canvas.LineTo(350, 360);
4623     Canvas.MoveTo(600, 360);
4624     Canvas.LineTo(350, 250);
4625    
4626    
4627    
4628    
4629     // Resten af rutinen vedr genering og placering af Barcode
4630    
4631     BarCode.BarCodeType := bcCode128;
4632     BarCode.Code128Subset := csCodeC;
4633     BarCode.Code := PakkeshopLabel.Stregkode;
4634     BarCode.Validate(True);
4635    
4636     //Start X-formation
4637     //ShowMessage( Format('%d %d', [PageWidth, PageHeight]) );
4638     GetWorldTransform(Canvas.Handle, XFormOld);
4639    
4640     Angle := 270;
4641     XForm.eM11 := Cos(DegToRad(Angle));
4642     XForm.eM12 := Sin(DegToRad(Angle));
4643     XForm.eM21 := -Sin(DegToRad(Angle));
4644     XForm.eM22 := Cos(DegToRad(Angle));
4645     XForm.eDx := 0;
4646     XForm.eDy := 0;
4647    
4648     gMode := SetGraphicsMode(Canvas.Handle, GM_ADVANCED);
4649     SetWorldTransform(Canvas.Handle, XForm);
4650    
4651     // PaintToCanvasSize arbejder i Inches
4652     // Første pos argument bliver nu Y og skal være negativ for at rykke den ned
4653     //Anden pos er X og skal være positiv for at justere ind fra venstre mod højre
4654    
4655     BarCode.PaintToCanvasSize(Printer.Canvas, -1.8, 3.3, 0.4);
4656    
4657    
4658     SetWorldTransform(Canvas.Handle, XFormOld);
4659     SetGraphicsMode(Canvas.Handle, gMode);
4660    
4661 torben 2668 EndDoc();
4662     end;
4663    
4664 torben 2677
4665 torben 2668 end;
4666    
4667 torben 2677 function GetPixelsPerInchX(): Integer;
4668     begin
4669     Result := GetDeviceCaps(Printer.Handle, LOGPIXELSX)
4670     end;
4671 torben 2668
4672 torben 2677 function GetPixelsPerInchY(): Integer;
4673     begin
4674     Result := GetDeviceCaps(Printer.Handle, LOGPIXELSY)
4675     end;
4676    
4677    
4678 torben 2645 procedure TMainForm.IndlesManglendeScanninger();
4679     var
4680     WebSvar : String;
4681     URLStr : String;
4682     StedKode : String;
4683     Node: IXMLNode;
4684     I: Integer;
4685     stregkode, modtagernavn, modtageradresse, kommentar : string;
4686     pakketype, tjekkodestatus : String;
4687     pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4688     pakketyper : TStrings;
4689     antlin : Integer;
4690 torben 2656
4691 torben 2645 antlinIdag, antlinSenere : Integer;
4692 torben 2656
4693 torben 2645 XmlFelter : TStrings;
4694    
4695     begin
4696     XmlFelter := TStringList.Create;
4697     pakketyper := TStringList.Create;
4698     linienr := 0;
4699     ListBox2.Clear;
4700     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
4701     logTekst := 'Henter oversigt over pakker der endnu ikke er modtaget';
4702     SkrivScanningLogFil(logTekst);
4703     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4704     begin
4705     StedKode := BladhusStedKode[BladhusSted];
4706     end
4707     else
4708     begin
4709     StedKode := Sted;
4710     end;
4711    
4712 torben 2656
4713 torben 2689
4714     if (Scanningtype = '7') then
4715 torben 2645 begin
4716 torben 2689 URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4717 torben 2645 end
4718 torben 2689 else if (Scanningtype = '6') then
4719     begin
4720     URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4721     end
4722 torben 2645 else if (Scanningtype = '5') then
4723     begin
4724 torben 2689 URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4725 torben 2645 end
4726     else if (Scanningtype = '1') then
4727     begin
4728     URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);
4729     end
4730     else if (Scanningtype = '4') then
4731     begin
4732     URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']); // Budleveringer
4733     end
4734     else
4735     begin
4736     exit;
4737     end;
4738     // 20150310: slut
4739    
4740     try
4741     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4742     // URLStr := string(Utf8Encode(URLStr));
4743     WebSvar := IdHTTP1.Get(URLStr);
4744     except
4745     on e:EIdConnClosedGracefully do
4746     begin
4747     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4748     WebSvar := IdHTTP1.Get(URLStr);
4749     end;
4750     on e:exception do
4751     begin
4752     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4753     logTekst := 'Fejl i web forespørgsel: '+e.Message;
4754     SkrivScanningLogFil(logTekst);
4755     raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4756     end;
4757     end;
4758     try
4759     XMLDocument1.LoadFromXML(WebSvar);
4760    
4761 torben 2656
4762 torben 2645 antlin := 0;
4763     antlinIdag := 0;
4764     antlinSenere := 0;
4765 torben 2656
4766 torben 2645 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4767     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4768     if Node.NodeType = ntElement then begin
4769     if Node.NodeName = 'Stregkode' then
4770     begin
4771     antlin := antlin + 1;
4772     // 20150306: start
4773     if not VarIsNull(Node.NodeValue) then
4774     begin
4775     if (pos('(', Node.NodeValue) = 0) then
4776     begin
4777     antlinIdag := antlinIdag + 1;
4778     end
4779     else
4780     begin
4781     antlinSenere := antlinSenere + 1;
4782     end;
4783     end;
4784     // 20150306: slut
4785     end;
4786     end;
4787     if (XmlFelter.values[Node.NodeName] <> '') then
4788     XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)
4789     else
4790     XmlFelter.values[Node.NodeName] := '1';
4791    
4792     end;
4793     antalLiniefelter := XmlFelter.Count;
4794     antalFelterFundet := 0;
4795     SetLength(stregkoderMedTjekkodeArray, 0); // reset fra tidligere brug
4796     SetLength(stregkoderMedTjekkodeArray, antlin); // sæt antal elementer i array
4797 torben 2656
4798 torben 2645 logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4799     if (antlinSenere > 0) then
4800     begin
4801     logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4802     end;
4803     logTekst := logTekst + '.';
4804 torben 2656
4805 torben 2645 SkrivScanningLogFil(logTekst);
4806     for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4807     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4808     if Node.NodeType = ntElement then begin
4809     if Node.NodeName = 'Stregkode' then begin
4810     if not VarIsNull(Node.NodeValue) then
4811     stregkode := Node.NodeValue;
4812     antalFelterFundet := antalFelterFundet + 1;
4813     end;
4814     if Node.NodeName = 'ModtagerNavn' then begin
4815     if not VarIsNull(Node.NodeValue) then
4816     modtagernavn := Node.NodeValue;
4817     antalFelterFundet := antalFelterFundet + 1;
4818     end;
4819     if Node.NodeName = 'ModtagerAdresse' then begin
4820     if not VarIsNull(Node.NodeValue) then
4821     modtageradresse := Node.NodeValue;
4822     antalFelterFundet := antalFelterFundet + 1;
4823     end;
4824     if Node.NodeName = 'Kommentar' then begin
4825     if not VarIsNull(Node.NodeValue) then
4826     kommentar := Node.NodeValue;
4827     antalFelterFundet := antalFelterFundet + 1;
4828     end;
4829     if Node.NodeName = 'PakkeType' then begin
4830     if not VarIsNull(Node.NodeValue) then
4831     pakketype := Node.NodeValue;
4832     antalFelterFundet := antalFelterFundet + 1;
4833     if (pakketyper.values[pakketype] <> '') then
4834     pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)
4835     else
4836     pakketyper.values[pakketype] := '1';
4837     end;
4838     if Node.NodeName = 'TjekkodeStatus' then begin
4839     if not VarIsNull(Node.NodeValue) then
4840     tjekkodestatus := Node.NodeValue;
4841     antalFelterFundet := antalFelterFundet + 1;
4842     if (tjekkodestatus = '-1') then
4843     begin
4844     // 20150306: start
4845     // stregkoderMedTjekkodeArray[linienr] := stregkode;
4846     if (pos(' ', stregkode) > 0) then
4847     begin
4848 torben 2682 stregkoderMedTjekkodeArray[linienr] := TUtils.split(stregkode, ' ', 2); // Fjerner lige en evt. fremtidig dato fra feltet
4849 torben 2645 end
4850     else
4851     begin
4852     stregkoderMedTjekkodeArray[linienr] := stregkode;
4853     end;
4854 torben 2656 linienr := linienr + 1;
4855 torben 2645 end;
4856     end;
4857     if antalFelterFundet = antalLiniefelter then
4858     begin
4859     if (ScanningType = '1') then
4860     ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4861     else if (ScanningType = '4') then
4862     ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
4863     else if (ScanningType = '5') then
4864     ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4865     else
4866     ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar);
4867     antalFelterFundet := 0;
4868     tjekkodestatus := '';
4869     end;
4870     end;
4871     end;
4872     for pakketypeix := 0 to pakketyper.Count-1 do
4873     begin
4874     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');
4875     end;
4876    
4877     // Free up the list object
4878     pakketyper.Free;
4879     // ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
4880     logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4881     if (antlinSenere > 0) then
4882     begin
4883     logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4884     end;
4885     logTekst := logTekst + '.';
4886     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4887     if (antlinSenere > 0) then
4888     begin
4889     StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
4890     end
4891     else
4892     begin
4893     StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4894     end;
4895    
4896     if (Scanningtype = '1') then
4897     begin
4898     //antlinIdag := 9876; // til test af boksens udseende ved stort tal
4899     PanelManglendePakker1.Caption := IntToStr(antlinIdag + antlinSenere);
4900     if (antlinIdag + antlinSenere > 0) then
4901     begin
4902     PanelManglendePakker1.Visible := true;
4903     end
4904     else
4905     begin
4906     PanelManglendePakker1.Visible := false;
4907     end;
4908     end;
4909    
4910     if (Scanningtype = '2') then
4911     begin
4912     PanelManglendePakker2.Caption := IntToStr(antlinIdag + antlinSenere);
4913     if (antlinIdag + antlinSenere > 0) then
4914     begin
4915     PanelManglendePakker2.Visible := true;
4916     end
4917     else
4918     begin
4919     PanelManglendePakker2.Visible := false;
4920     end;
4921     end;
4922    
4923     if (Scanningtype = '3') then
4924     begin
4925     PanelManglendePakker3.Caption := IntToStr(antlinIdag + antlinSenere);
4926     if (antlinIdag + antlinSenere > 0) then
4927     begin
4928     PanelManglendePakker3.Visible := true;
4929     end
4930     else
4931     begin
4932     PanelManglendePakker3.Visible := false;
4933     end;
4934     end;
4935    
4936     if (Scanningtype = '4') then
4937     begin
4938     PanelManglendePakker4.Caption := IntToStr(antlinIdag + antlinSenere);
4939     if (antlinIdag + antlinSenere > 0) then
4940     begin
4941     PanelManglendePakker4.Visible := true;
4942     end
4943     else
4944     begin
4945     PanelManglendePakker4.Visible := false;
4946     end;
4947     end;
4948    
4949     if (Scanningtype = '5') then
4950     begin
4951     PanelManglendePakker5.Caption := IntToStr(antlinIdag + antlinSenere);
4952     if (antlinIdag + antlinSenere > 0) then
4953     begin
4954     PanelManglendePakker5.Visible := true;
4955     end
4956     else
4957     begin
4958     PanelManglendePakker5.Visible := false;
4959     end;
4960     end;
4961    
4962     if (Scanningtype = '6') then
4963     begin
4964     PanelManglendePakker6.Caption := IntToStr(antlinIdag + antlinSenere);
4965     if (antlinIdag + antlinSenere > 0) then
4966     begin
4967     PanelManglendePakker6.Visible := true;
4968     end
4969     else
4970     begin
4971     PanelManglendePakker6.Visible := false;
4972     end;
4973     end;
4974    
4975     except on e:exception do
4976     begin
4977     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4978     logTekst := 'Fejl i XML-format: '+e.Message;
4979     SkrivScanningLogFil(logTekst);
4980     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4981     end;
4982     end;
4983    
4984     end;
4985    
4986     procedure TMainForm.IndlesScanningLogFil();
4987     var
4988     SomeTxtFile : TextFile;
4989     buffer : string;
4990     S: string;
4991     idag, imorgen : TDateTime;
4992     imorgenYmd : string;
4993     logFilnavn : string;
4994    
4995     begin
4996     idag := Now;
4997     imorgen := IncDay(idag, 1); //adds 1 day(s)
4998     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4999     if (FormatDateTime('hh:nn',idag) < '12:00') then
5000     begin
5001     imorgen := idag;
5002     end;
5003     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
5004     logFilnavn := 'Logs/Scanning' + imorgenYmd + '.log';
5005     if FileExists(logFilnavn) then
5006     begin
5007     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæses.');
5008     logTekst := logFilnavn+' indlæses.';
5009     SkrivScanningLogFil(logTekst);
5010     AssignFile(SomeTxtFile, logFilnavn);
5011     try
5012     Reset(SomeTxtFile);
5013     while not EOF(SomeTxtFile) do
5014     begin
5015     ReadLn(SomeTxtFile, buffer) ;
5016     S := buffer;
5017     ListBox1.Items.Insert(0, S);
5018     end;
5019     finally
5020     CloseFile(SomeTxtFile);
5021     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæst.');
5022     ListBox1.Items.Insert(0,'');
5023     ListBox1.Items.Insert(0,'');
5024     ListBox1.Items.Insert(0,'');
5025     ListBox1.Items.Insert(0,'');
5026     ListBox1.Items.Insert(0,'');
5027     ListBox1.Items.Insert(0,'');
5028     end;
5029     end;
5030     end;
5031    
5032     procedure TMainForm.SkrivScanningLogFil(var tekst : string);
5033     var
5034     SomeTxtFile : TextFile;
5035     idag, imorgen : TDateTime;
5036     imorgenYmd : string;
5037     logFilnavn : string;
5038 torben 2677 //error : Integer;
5039 torben 2645
5040     begin
5041     if (SkrivLog = '1') then
5042     begin
5043     idag := Now;
5044     imorgen := IncDay(idag, 1); //adds 1 day(s)
5045     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5046     if (FormatDateTime('hh:nn',idag) < '12:00') then
5047     begin
5048     imorgen := idag;
5049     end;
5050     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
5051     logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
5052     // Get the current directory
5053     // dir := GetCurrentDir;
5054     // ShowMessage('Current directory = '+dir);
5055     // logFilnavn := dir + '\Logs\' + 'Scanning' + imorgenYmd + '.log';
5056     // ShowMessage('logFilnavn = '+logFilnavn);
5057    
5058     if not DirectoryExists('Logs') then
5059     begin
5060     CreateDir('Logs');
5061     end;
5062    
5063     AssignFile(SomeTxtFile, logFilnavn);
5064     if FileExists(logFilnavn) then
5065     begin
5066     try
5067     try
5068     Append(SomeTxtFile);
5069     WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
5070     except on e:exception do
5071     //ShowMessageFmt('File create failed with error %d',[error]);
5072     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke skrive til log filen...');
5073     end;
5074     finally
5075     CloseFile(SomeTxtFile);
5076     end;
5077     end
5078     else
5079     begin
5080     try
5081     try
5082     ReWrite(SomeTxtFile);
5083     WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
5084     except on e:exception do
5085     // ShowMessageFmt('File create failed with error %d',[error]);
5086     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke oprette/skrive til log filen...');
5087     end;
5088     finally
5089     CloseFile(SomeTxtFile);
5090     end;
5091     end;
5092     end;
5093     end;
5094    
5095     procedure TMainForm.IndlesRuteskiftFil(var filnavn : string);
5096     var
5097     SomeTxtFile : TextFile;
5098     buffer : string;
5099     linnr : integer;
5100     S: string;
5101     A: TStrArray;
5102     idag, imorgen : TDateTime;
5103     imorgenYmd : string;
5104    
5105     begin
5106     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
5107     logTekst := filnavn+' indlæses.';
5108     SkrivScanningLogFil(logTekst);
5109     SetLength(ruteHverdagArray, 1);
5110     SetLength(ruteLordagArray, 1);
5111     idag := Now;
5112     imorgen := IncDay(idag, 1); //adds 1 day(s)
5113     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5114     if (FormatDateTime('hh:nn',idag) < '12:00') then
5115     begin
5116     imorgen := idag;
5117     end;
5118     imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
5119     if FileExists(filnavn) then
5120     begin
5121     AssignFile(SomeTxtFile, filnavn);
5122     linnr := 0;
5123     try
5124     Reset(SomeTxtFile);
5125     while not EOF(SomeTxtFile) do
5126     begin
5127     ReadLn(SomeTxtFile, buffer) ;
5128     S := buffer;
5129     SetLength(A,0);
5130 torben 2682 TUtils.Explode(A, ';', S);
5131 torben 2645 if (length(A) < 2) then
5132     begin
5133 torben 2682 TUtils.Explode(A, ',', S);
5134 torben 2645 end;
5135     if (length(A) > 1) then
5136     begin
5137     SetLength(ruteHverdagArray, linnr+1);
5138     SetLength(ruteLordagArray, linnr+1);
5139     ruteHverdagArray[linnr] := A[0];
5140     ruteLordagArray[linnr] := A[1];
5141     linnr := linnr+1;
5142     end;
5143     end;
5144     finally
5145     //ShowMessage(IntToStr(length(A)));
5146     CloseFile(SomeTxtFile);
5147     //ShowMessage(IntToStr(length(ruteHverdagArray)));
5148     if (linnr > 0) then
5149     begin
5150     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
5151     logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
5152     SkrivScanningLogFil(logTekst);
5153     end
5154     else
5155     begin
5156     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
5157     logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
5158     SkrivScanningLogFil(logTekst);
5159     PlaySound(PWideChar(AlarmLyd));
5160     end;
5161     end;
5162     end
5163     else
5164     begin
5165     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
5166     logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
5167     SkrivScanningLogFil(logTekst);
5168     PlaySound(PWideChar(AlarmLyd));
5169     end;
5170     end;
5171    
5172     procedure TMainForm.IndlesKontrolFil(var filnavn : string);
5173     var
5174     SomeTxtFile : TextFile;
5175     buffer : string;
5176     linnr : integer;
5177     S: string;
5178     A: TStrArray;
5179     idag, imorgen : TDateTime;
5180     imorgenYmd : string;
5181    
5182     begin
5183     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
5184     logTekst := filnavn+' indlæses.';
5185     SkrivScanningLogFil(logTekst);
5186     SetLength(ruteArray, 1);
5187     SetLength(korelisteArray, 1);
5188     idag := Now;
5189     imorgen := IncDay(idag, 1); //adds 1 day(s)
5190     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5191     if (FormatDateTime('hh:nn',idag) < '12:00') then
5192     begin
5193     imorgen := idag;
5194     end;
5195     imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
5196     if FileExists(filnavn) then
5197     begin
5198     AssignFile(SomeTxtFile, filnavn);
5199     linnr := 0;
5200     try
5201     Reset(SomeTxtFile);
5202     while not EOF(SomeTxtFile) do
5203     begin
5204     ReadLn(SomeTxtFile, buffer) ;
5205     S := buffer;
5206     SetLength(A,0);
5207 torben 2682 TUtils.Explode(A, ';', S);
5208 torben 2645 if (length(A) < 3) then
5209     begin
5210 torben 2682 TUtils.Explode(A, ',', S);
5211 torben 2645 end;
5212     if (A[0]=imorgenYmd) then
5213     begin
5214     if (length(A) > 2) then
5215     begin
5216     SetLength(ruteArray, linnr+1);
5217     SetLength(korelisteArray, linnr+1);
5218     ruteArray[linnr] := A[1];
5219     korelisteArray[linnr] := A[2];
5220     linnr := linnr+1;
5221     end;
5222     end;
5223     end;
5224     finally
5225     //ShowMessage(IntToStr(length(A)));
5226     CloseFile(SomeTxtFile);
5227     //ShowMessage(IntToStr(length(ruteArray)));
5228     if (linnr > 0) then
5229     begin
5230     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
5231     logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
5232     SkrivScanningLogFil(logTekst);
5233     end
5234     else
5235     begin
5236     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
5237     logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
5238     SkrivScanningLogFil(logTekst);
5239     PlaySound(PWideChar(AlarmLyd));
5240     end;
5241     end;
5242     end
5243     else
5244     begin
5245     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
5246     logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
5247     SkrivScanningLogFil(logTekst);
5248     PlaySound(PWideChar(AlarmLyd));
5249     end;
5250     end;
5251    
5252     //
5253     // Bladhus ***
5254     //
5255     function TMainForm.TjekKoreliste(var RuteNummer, Koreliste : string) : string;
5256     var
5257     i : Integer;
5258     svar : String;
5259    
5260     begin
5261     //ShowMessage('Køreliste 1: '+korelisteArray[0]);
5262     // ShowMessage('Kontrollerer rute ' + RuteNummer + ' og køreliste ' + Koreliste + ' i kontrolfilen');
5263     // NB. Der er rod i begreberne RuteNummer og Koreliste - nogle steder er de byttet rundt!
5264     //ShowMessage('Kontrollerer rute ' + Koreliste + ' og køreliste ' + RuteNummer + ' i kontrolfilen');
5265    
5266     svar := 'Køreliste ikke i kontrolfil';
5267     case BladhusSted of
5268     01 :
5269     begin;
5270     for i := 0 to length(ruteArray)-1 do
5271     begin
5272     if (Koreliste=ruteArray[i]) then
5273     begin
5274     svar := korelisteArray[i]; // returnerer den forventede køreliste
5275     end;
5276     end;
5277     end;
5278     // 02 : begin;
5279     //ShowMessage('02') ;
5280     // end;
5281     03 : begin;
5282     for i := 0 to length(ruteArray)-1 do
5283     begin
5284     if (Koreliste=ruteArray[i]) then
5285     begin
5286     svar := korelisteArray[i]; // returnerer den forventede køreliste
5287     end;
5288     end;
5289     end;
5290     // 04 : begin;
5291     //ShowMessage('04') ;
5292     // end;
5293     else
5294     svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
5295     end;
5296     if (RuteNummer = 'Rutenr') then // fra printertest funktionen
5297     svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
5298    
5299     result := svar;
5300     end;
5301    
5302 torben 2659 procedure TMainForm.VisAlarmSkaerm(strMessage: string);
5303 torben 2657 begin
5304     //ShowMessage('Ændring ikke tilladt');
5305     // Her skal komme en 'rød skærm' alarm
5306     PlaySound(PWideChar(AlarmLyd));
5307 torben 2662 MainForm.Color := clRed;
5308 torben 2659
5309 torben 2662
5310 torben 2657 RuteNummerST.Caption := '';
5311     BoghandlerNavnST.Caption := '';
5312 torben 2668 btnNulstil.Visible := true;
5313 torben 2662
5314     if (strMessage <> '') then
5315     begin
5316     ListBox1.Items.Insert(0, strMessage);
5317     KommentarST.Caption := strMessage;
5318     end;
5319    
5320 torben 2657 end;
5321    
5322 torben 2645 function TMainForm.getProddato() : TDate;
5323     var
5324     idag, imorgen : TDateTime;
5325     imorgenYmd : string;
5326    
5327     begin
5328     idag := Now;
5329     imorgen := IncDay(idag, 1); //adds 1 day(s)
5330     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5331     if (FormatDateTime('hh:nn',idag) < '12:00') then
5332     begin
5333     imorgen := idag;
5334     end;
5335     imorgenYmd := FormatDateTime('dd-mm-yyyy',imorgen);
5336     result := StrToDateTime(imorgenYmd);
5337     end;
5338    
5339     function TMainForm.getProddag() : String;
5340     begin
5341     // ShowMessage(LongDayNames[DayOfWeek(getProddato())]);
5342 torben 2650 result := FormatSettings.LongDayNames[DayOfWeek(getProddato())];
5343 torben 2645 //result := 'lørdag'; // MENS VI TESTER kan vi fremtvinge lørdag situation her
5344     end;
5345    
5346     function TMainForm.retRutenummer(rutenummer : String) : String;
5347     var
5348     i : Integer;
5349     svar : String;
5350    
5351     begin
5352     svar := rutenummer;
5353     case BladhusSted of
5354     01 :
5355     begin;
5356     //ShowMessage('01') ;
5357     end;
5358     // 02 : begin;
5359     //ShowMessage('02') ;
5360     // end;
5361     03 : begin;
5362     for i := 0 to length(ruteHverdagArray)-1 do
5363     begin
5364     if (rutenummer=ruteHverdagArray[i]) then
5365     begin
5366     svar := ruteLordagArray[i]; // returnerer den forventede lørdagsrute
5367     end;
5368     end;
5369     end;
5370     // 04 : begin;
5371     //ShowMessage('04') ;
5372     // end;
5373     else
5374     svar := rutenummer; // Dette svarer til at rute ikke skal ændres
5375     end;
5376     result := svar;
5377     end;
5378    
5379     function TMainForm.GetCurrentPrinterHandle: THandle;
5380     var
5381     Device, Driver, Port: array[0..255] of Char;
5382     hDeviceMode: THandle;
5383     begin
5384     Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
5385     if not OpenPrinter(@Device, Result, nil) then
5386     RaiseLastWin32Error;
5387     end;
5388    
5389     function TMainForm.SavePChar(p: PChar): PChar;
5390     const
5391     error: PChar = 'Nil';
5392     begin
5393     if not Assigned(p) then
5394     Result := error
5395     else
5396     Result := p;
5397     end;
5398    
5399     procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
5400     begin
5401     if Scanogstjekkoden1.Checked then
5402     begin
5403 torben 2654 chkScanTjekkode.Checked := true;
5404 torben 2645 end
5405     else
5406     begin
5407 torben 2654 chkScanTjekkode.Checked := false;
5408 torben 2645 end;
5409     end;
5410    
5411    
5412 torben 2668
5413 torben 2685
5414 torben 2668 function TMainForm.CheckUrl(url:string):boolean;
5415     var
5416 torben 2677 hSession, hfile: hInternet;
5417 torben 2668 dwindex,dwcodelen :dword;
5418     dwcode:array[1..20] of char;
5419     res : pchar;
5420     begin
5421     if pos('http://',lowercase(url))=0 then
5422     url := 'http://'+url;
5423     Result := false;
5424     hSession := InternetOpen('InetURL:/1.0',
5425     INTERNET_OPEN_TYPE_PRECONFIG,
5426     nil,
5427     nil,
5428     0);
5429     if assigned(hsession) then
5430     begin
5431     hfile := InternetOpenUrl(hsession,
5432     pchar(url),
5433     nil,
5434     0,
5435     INTERNET_FLAG_RELOAD,
5436     0);
5437     dwIndex := 0;
5438     dwCodeLen := 10;
5439     HttpQueryInfo(hfile,
5440     HTTP_QUERY_STATUS_CODE,
5441     @dwcode,
5442     dwcodeLen,
5443     dwIndex);
5444     res := pchar(@dwcode);
5445     result:= (res ='200') or (res ='302');
5446     if assigned(hfile) then
5447     InternetCloseHandle(hfile);
5448     InternetCloseHandle(hsession);
5449     end;
5450    
5451     end;
5452    
5453    
5454 torben 2645 procedure TMainForm.CheckPrintQue(tjektype : string);
5455     type
5456     TJobs = array [0..1000] of JOB_INFO_1;
5457     PJobs = ^TJobs;
5458     var
5459     hPrinter: THandle;
5460     bytesNeeded, numJobs, i: Cardinal;
5461     pJ: PJobs;
5462     printerTxt, statusTxt, dokumentTxt: String;
5463     begin
5464    
5465     // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1
5466     // 'Test' skal vise alarmlinie, samt opdatere listbox1
5467     // 'Timer' skal kun vise alarmlinie
5468    
5469     if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then
5470     begin
5471     printerTxt := 'Der er fravalgt printer i dette program';
5472     ListBox1.Items.Insert(0,printerTxt);
5473     SkrivScanningLogFil(printerTxt);
5474     end
5475     else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then
5476     begin
5477     printerTxt := 'Der er ikke installeret en printer på denne PC';
5478     ListBox1.Items.Insert(0,printerTxt);
5479     SkrivScanningLogFil(printerTxt);
5480     end
5481     else
5482     begin
5483     hPrinter := GetCurrentPrinterHandle;
5484     try
5485     EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);
5486     pJ := AllocMem(bytesNeeded);
5487     if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then
5488     RaiseLastWin32Error;
5489    
5490     if numJobs = 0 then
5491     begin
5492     if (tjektype = 'Test') then
5493     begin
5494     logTekst := printerTxt + ': Ingen dokumenter i kø';
5495     ListBox1.Items.Insert(0,logTekst);
5496     SkrivScanningLogFil(logTekst);
5497     end;
5498     PrinterstatusStaticText1.Caption := '';
5499     PrinterstatusStaticText1.Color := MainForm.Color;
5500     end
5501     else // så er der kø til printeren
5502     begin
5503     printerTxt := SavePChar(pJ^[0].pPrinterName);
5504     if (tjektype = 'Opstart') or (tjektype = 'Test') then
5505     begin
5506     logTekst := IntToStr(numJobs) + ' dokument(er) i kø til printer: ' + printerTxt;
5507     ListBox1.Items.Insert(0,logTekst);
5508     SkrivScanningLogFil(logTekst);
5509     end;
5510     for i := 0 to Pred(numJobs) do
5511     begin
5512     printerTxt := SavePChar(pJ^[i].pPrinterName);
5513     statusTxt := 'Ukendt';
5514     if (IntToStr(pJ^[i].Status) = '0') then
5515     statusTxt := 'Venter...';
5516     if (IntToStr(pJ^[i].Status) = '4096') then
5517     statusTxt := 'Printer...';
5518     if (IntToStr(pJ^[i].Status) = '8210') then
5519     statusTxt := 'Printerfejl';
5520     if (IntToStr(pJ^[i].Status) = '8214') then
5521     statusTxt := 'Sletter print...';
5522    
5523     dokumentTxt := SavePChar(pJ^[i].pDocument);
5524     if (dokumentTxt = '') then
5525     dokumentTxt := 'Uden navn';
5526    
5527     if (tjektype = 'Opstart') or (tjektype = 'Test') then
5528     begin
5529     logTekst := Format('Printer %s, Dokument %d: %s, Status (%d): %s',
5530     [printerTxt, i+1, dokumentTxt, pJ^[i].Status, statusTxt]);
5531     ListBox1.Items.Insert(0,logTekst);
5532     SkrivScanningLogFil(logTekst);
5533     end;
5534    
5535     if (i = 0) then
5536     begin
5537     PrinterstatusStaticText1.Caption := printerTxt + ': ' + IntToStr(numJobs) + ' dokument(er) in kø. Dokument status: ' + statusTxt;
5538     PrinterstatusStaticText1.Font.Color := clBlack;
5539     PrinterstatusStaticText1.Color := MainForm.Color;
5540     PrinterstatusStaticText1.Transparent := True;
5541     if (numJobs > 3) then
5542     begin
5543     PrinterstatusStaticText1.Font.Color := clRed;
5544     PrinterstatusStaticText1.Color := clWhite;
5545     PrinterstatusStaticText1.Transparent := true;
5546     end;
5547     end;
5548    
5549     end;
5550     end
5551     finally
5552     ClosePrinter(hPrinter);
5553     end;
5554     end;
5555     end;
5556    
5557    
5558     end.
5559    

  ViewVC Help
Powered by ViewVC 1.1.20