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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20