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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20