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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20