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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20