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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20