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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2703 - (hide annotations) (download)
Fri Sep 4 09:36:19 2015 UTC (8 years, 8 months ago) by torben
File size: 178068 byte(s)
Simplificer URLcheck koden
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     // 20150309: startr
286     StaticTextManglendePakker.Caption := '';
287     // 20150309: slut
288    
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     // 20150310: slut
1892     ListBox2.items.delete(i);
1893     end;
1894     end;
1895     end;
1896    
1897     procedure TMainForm.StartScreen();
1898     begin
1899     if Org_RuteNummerST = '' then
1900     Org_RuteNummerST := RuteNummerST.Caption;
1901     if Org_BoghandlerNavnST = '' then
1902     Org_BoghandlerNavnST := BoghandlerNavnST.Caption;
1903     if Org_KommentarST = '' then
1904     Org_KommentarST := KommentarST.Caption;
1905     RuteNummerST.Caption := Org_RuteNummerST;
1906     BoghandlerNavnST.Caption := Org_BoghandlerNavnST;
1907     KommentarST.Caption := Org_KommentarST;
1908     end;
1909    
1910     procedure TMainForm.InitScreen();
1911     begin
1912     RuteNummerST.Caption := '';
1913     KommentarST.Caption := '';
1914     BoghandlerNavnST.Caption := '';
1915     end;
1916    
1917     procedure TMainForm.InitBladhus();
1918    
1919     begin
1920     Altidprintepakkelabel1.Enabled := false;
1921     Pakkernormal1.Visible := false;
1922     ReturpakkerfraDAO1.Visible := false;
1923     Returpakkerfraboghandler1.Visible := false;
1924     Sprgefterboghandlernummer1.Enabled := false;
1925     ListBox1.Visible := true;
1926     // TestFunktionen := '1';
1927     // 20150317: start
1928     (*
1929     if TestFunktionen = '1' then
1930     begin
1931     Testforbindelsen1.Visible := true;
1932     Testprinter1.Visible := true;
1933     Testlyd1.Visible := true;
1934     Testlyd2.Visible := true;
1935     end
1936     else if TestFunktionen = '2' then
1937     begin
1938     Testforbindelsen1.Enabled := false;
1939     Testprinter1.Enabled := false;
1940     Testlyd1.Enabled := false;
1941     Testlyd2.Enabled := false;
1942     end
1943     else
1944     begin
1945     Testforbindelsen1.Visible := false;
1946     Testprinter1.Visible := false;
1947     Testlyd1.Visible := false;
1948     Testlyd2.Visible := false;
1949     end;
1950     Testprinter1.Visible := false;
1951     AlarmLyd := 'Sounds\Alarm.wav';
1952     if not FileExists(AlarmLyd) then
1953     begin
1954     AlarmLyd := '';
1955     end;
1956     ScannetOkLyd := 'Sounds\Ok.wav';
1957     if not FileExists(ScannetOkLyd) then
1958     begin
1959     ScannetOkLyd := '';
1960     end;
1961     ScannetOkStorLyd := 'Sounds\Ok_stor.wav';
1962     if not FileExists(ScannetOkStorLyd) then
1963     begin
1964     ScannetOkStorLyd := '';
1965     end;
1966     *)
1967     // 20150317: slut
1968     if Budlevering1.Checked then
1969     begin
1970     IndlesScanningLogFil();
1971     end;
1972    
1973     //
1974     // Bladhus ***
1975     //
1976     case BladhusSted of
1977     01 :
1978     begin; // NS
1979     Testprinter1.Visible := true;
1980 torben 2691 BtnDownloadKontrolfil.Enabled := true;
1981 torben 2699 BtnOpdaterListen.Enabled := true;
1982 torben 2645 IdFTP1.Passive := true;
1983     IdFTP1.PassiveUseControlHost := true;
1984     BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
1985     BladhusKontrolfil_lokal := 'RuteKontrol.txt';
1986     DownloadBladhusKontrolfil();
1987     IndlesManglendeScanninger();
1988     end;
1989     02 :
1990     begin; // BK
1991     Testprinter1.Visible := true;
1992     Smpakker1.Enabled := true;
1993     Storepakker1.Enabled := true;
1994 torben 2655 radioStorPakke.Enabled := true;
1995     radioLillePakke.Enabled := true;
1996 torben 2691 BtnDownloadKontrolfil.Enabled := false; // kontrolfil bruges ikke her
1997 torben 2699 BtnOpdaterListen.Enabled := true;
1998 torben 2645 IdFTP1.Passive := true;
1999     IdFTP1.PassiveUseControlHost := true;
2000     IndlesManglendeScanninger();
2001     end;
2002     03 :
2003     begin; // FD
2004     Testprinter1.Visible := true;
2005     if (getProddag() = 'lørdag') then
2006     begin
2007 torben 2696 BtnDownloadRuteskiftFil.Visible := false;
2008 torben 2645 end
2009     else
2010     begin
2011 torben 2696 BtnDownloadRuteskiftFil.Visible := false;
2012 torben 2645 end;
2013 torben 2691 BtnDownloadKontrolfil.Enabled := true;
2014 torben 2699 BtnOpdaterListen.Enabled := true;
2015 torben 2645 IdFTP1.Passive := true;
2016     IdFTP1.PassiveUseControlHost := true;
2017     BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
2018     BladhusRuteskiftfil_lokal := 'RuteSkift.txt';
2019     if (getProddag() = 'lørdag') then
2020     begin
2021     //DownloadBladhusRuteskiftfil(); // Skal ikke bruges endnu
2022     end;
2023     BladhusKontrolfil_server := 'frafd/RuteKontrol.txt';
2024     BladhusKontrolfil_lokal := 'RuteKontrol.txt';
2025     DownloadBladhusKontrolfil();
2026     IndlesManglendeScanninger();
2027     end;
2028     04 : begin; // DBK
2029     Testprinter1.Visible := true;
2030     Smpakker1.Enabled := true;
2031     Storepakker1.Enabled := true;
2032 torben 2655 radioStorPakke.Enabled := true;
2033     radioLillePakke.Enabled := true;
2034 torben 2691 BtnDownloadKontrolfil.Enabled := false; // kontrolfil bruges ikke her
2035 torben 2699 BtnOpdaterListen.Enabled := true;
2036 torben 2645 IdFTP1.Passive := true;
2037     IdFTP1.PassiveUseControlHost := true;
2038     end;
2039     else
2040     //ShowMessage('Ukendt Bladhus sted ???') ;
2041     end;
2042    
2043     end;
2044    
2045     procedure TMainForm.HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
2046     var
2047     WebSvar : String;
2048     URLStr : String;
2049     pakkestorrelse : String;
2050     PrintNyLabelInteger : Integer;
2051 torben 2678
2052     PakkeshopLabel: TPakkeshopLabel;
2053 torben 2645 begin
2054 torben 2655 if radioStorPakke.Checked then
2055 torben 2645 begin
2056     pakkestorrelse := 'Stor';
2057     end;
2058 torben 2655 if radioLillePakke.Checked then
2059 torben 2645 begin
2060     pakkestorrelse := 'Lille';
2061     end;
2062 torben 2668
2063    
2064 torben 2645 if Pakkernormal1.Checked then
2065     begin
2066     if (BoghandlerTjekkode = '') then
2067     begin
2068     BoghandlerTjekkode := '-1';
2069     end;
2070     URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
2071     end
2072     else if ReturpakkerfraDAO1.Checked then
2073     begin
2074     URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
2075     end
2076     else if Returpakkerfraboghandler1.Checked then
2077     begin
2078     URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
2079     end
2080     else if Budlevering1.Checked then
2081     begin
2082     URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
2083     end
2084     else if Pakkeshoplevering1.Checked then
2085     begin
2086     URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
2087     end
2088     else if Returpakkerfrapakkeshop1.Checked then
2089     begin
2090     URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2091     end
2092 torben 2668 else if menuIndlevering.Checked then
2093     begin
2094     URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);
2095     end
2096 torben 2645 else
2097     begin
2098     exit;
2099     end;
2100     try
2101     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
2102     WebSvar := IdHTTP1.Get(URLStr);
2103     //IdHTTP1.Disconnect();
2104     except on e:EIdConnClosedGracefully do
2105     begin
2106     // Her skal vi ikke gøre noget - men vi skal forespørge igen
2107     logTekst := 'EIdConnClosedGracefully i HentPakkeInfoFraServer';
2108     SkrivScanningLogFil(logTekst);
2109     try
2110     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
2111     WebSvar := IdHTTP1.Get(URLStr);
2112     except on e:EIdConnClosedGracefully do
2113     begin
2114     logTekst := 'EIdConnClosedGracefully i HentPakkeInfoFraServer igen';
2115     SkrivScanningLogFil(logTekst);
2116     WebSvar := IdHTTP1.Get(URLStr);
2117     end;
2118     end;
2119     end;
2120     end;
2121     XMLDocument1.LoadFromXML(WebSvar);
2122     try
2123     if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
2124     begin
2125     RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2126     Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2127     BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;
2128     BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2129     PrintNyLabel := False;
2130 torben 2656
2131 torben 2645 if Pakkeshoplevering1.Checked then
2132     begin
2133     try
2134     PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2135     except on e:exception do
2136     PrintNyLabelInteger := 0;
2137     end;
2138     if (PrintNyLabelInteger = 1) then
2139     begin
2140     PrintNyLabel := True;
2141     end;
2142     end;
2143     end
2144 torben 2668 else if menuIndlevering.Checked then
2145     begin
2146    
2147    
2148    
2149    
2150     Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2151     if (Kommentar = 'Ok') then
2152     begin
2153     PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2154     PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2155 torben 2703 RuteNummer := PakkeshopLabel.Koreliste + ' -> ' + PakkeshopLabel.PakkeshopTurid;
2156 torben 2701 Stregkode := PakkeshopLabel.Stregkode;
2157 torben 2668
2158     PrintPakkeshopLabel( PakkeshopLabel );
2159    
2160     end;
2161    
2162    
2163     end
2164 torben 2645 else
2165     begin
2166     RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
2167     Koreliste := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Koreliste').Text;
2168     Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2169     BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2170     Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2171     if Budlevering1.Checked then
2172     begin
2173     try
2174     SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
2175     except on e:exception do
2176     SmsKode := '';
2177     end;
2178     try
2179     DBKbane := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('DBKbane').Text;
2180     except on e:exception do
2181     DBKbane := '';
2182     end;
2183     end;
2184     PrintNyLabel := False;
2185     try
2186     PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('PrintPakkeLabel').Text);
2187     except on e:exception do
2188     PrintNyLabelInteger := 0;
2189     end;
2190     PrintNyLabel := False;
2191     if (PrintNyLabelInteger = 1) then
2192     begin
2193     PrintNyLabel := True;
2194     end;
2195     end;
2196 torben 2668
2197    
2198 torben 2645 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2199     begin
2200     if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2201     begin
2202     Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';
2203     PrintNyLabel := False;
2204     end;
2205     end
2206     else if (Budlevering1.Checked) and (Leveringssted <> Sted) then
2207     begin
2208     if (Leveringssted = 'E') and (Sted = 'DBK') then
2209     begin
2210     // Det er ok at DBK scanner pakker til E (Schenker)
2211     end
2212     else
2213     begin
2214     Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';
2215     PrintNyLabel := False;
2216     end;
2217     end;
2218     except on e:exception do
2219     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
2220     end;
2221     end;
2222    
2223    
2224     procedure TMainForm.UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghNr : String);
2225     var
2226     List1Msg, List1Pakkestorrelse : String;
2227     begin
2228     RuteNummerST.Caption := RuteNummer;
2229     KommentarST.Caption := Kommentar;
2230     KommentarST.Caption := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2231     KommentarST.Caption := StringReplace(KommentarST.Caption, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2232     //Label1.Caption := Kommentar; // bruges hvis der skal vises linieskift - det kan man ikke i en staticText
2233     BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2234     List1msg := TimeToStr(now) + '; ';
2235     if Pakkeshoplevering1.Checked then
2236     List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2237     List1Pakkestorrelse := '';
2238 torben 2655 if radioStorPakke.Checked then
2239 torben 2645 begin
2240     List1Pakkestorrelse := 'Stor pakke';
2241     end;
2242 torben 2655 if radioLillePakke.Checked then
2243 torben 2645 begin
2244     List1Pakkestorrelse := 'Lille pakke';
2245     end;
2246     List1msg := List1msg + BoghandlerNavn + '; ';
2247     if ReturpakkerfraDAO1.Checked then
2248     begin
2249     List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2250     end;
2251     if Returpakkerfraboghandler1.Checked then
2252     begin
2253     List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2254     end;
2255     if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then
2256     List1msg := List1msg + '; ' + List1Pakkestorrelse;
2257     if length(BoghNr) > 0 then
2258     begin
2259     List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2260     end;
2261     if Budlevering1.Checked then
2262     begin
2263     List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2264 torben 2655 if (radioStorPakke.Checked) then
2265 torben 2645 begin
2266     List1msg := List1msg + '; Stor pakke';
2267     end;
2268 torben 2655 if (radioLillePakke.Checked) then
2269 torben 2645 begin
2270     List1msg := List1msg + '; Lille pakke';
2271     end;
2272     end;
2273     if Returpakkerfrapakkeshop1.Checked then
2274     begin
2275     List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2276     end;
2277     if Pakkernormal1.Checked then
2278     begin
2279     if (Kommentar = '***** Kommentar *****') // fra test printer funktionen
2280     or (BoghandlerNavn = 'Forbindelse ok') // fra test forbindelse funktionen
2281     or (BoghandlerNavn = 'Fejl i forbindelse til server') then // fra test forbindelse funktionen
2282     begin
2283     List1msg := List1msg + '; ' + Stregkode + '; ' + Kommentar;
2284     end
2285     else
2286     begin
2287     List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2288     end;
2289     end;
2290 torben 2701 if menuIndlevering.Checked then
2291     begin
2292     List1Msg := Stregkode;
2293     end;
2294    
2295    
2296 torben 2645 ListBox1.Items.Insert(0,List1Msg);
2297     logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2298     SkrivScanningLogFil(logTekst);
2299     end;
2300    
2301 torben 2697 procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2302 torben 2645 begin
2303     UploadLogfilTilDAO();
2304     UploadInifilTilDAO();
2305     ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
2306     end;
2307    
2308     procedure TMainForm.PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
2309     var
2310     ClickedOK: Boolean;
2311     pakkeErScannet : Integer;
2312     pakkeForkertSted : Integer;
2313     List1Msg : String;
2314     kontrolKoreliste : string;
2315     nytRuteNummer, nyFarve : String;
2316     begin
2317     if Budlevering1.Checked then
2318 torben 2682 RuteNummerST.Color := TUtils.HexToTColor(Farve);
2319 torben 2645
2320     pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2321     if pakkeErScannet = 0 then
2322     begin
2323     pakkeErScannet := pos('PAKKE ER SCANNET', Kommentar);
2324     end;
2325     if pakkeErScannet = 0 then
2326     begin
2327     pakkeErScannet := pos('PAKKE ER SCANNET', BoghandlerNavn);
2328     end;
2329     pakkeForkertSted := pos('burde være hos', Kommentar);
2330    
2331 torben 2656
2332 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
2333 torben 2656
2334 torben 2645 begin
2335     if (RuteNummer = 'Ukendt') then
2336     begin
2337     repeat
2338     begin
2339     ClickedOK := InputQuery('Ukendt pakke', 'Indtast kundenummer', BoghandlerNummer);
2340     end
2341     until (ClickedOK and (Length(BoghandlerNummer) > 2) and (Length(BoghandlerNummer) < 9)) or not ClickedOK;
2342     if not ClickedOK then
2343     begin
2344     exit;
2345     end;
2346     if (Length(BoghandlerNummer) > 2) then
2347     begin
2348     InitScreen();
2349     HentPakkeInfoFraServer(Sted, StregKode, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2350     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghandlerNummer);
2351     end;
2352     end;
2353     end
2354     else
2355     if Budlevering1.Checked then
2356     begin
2357     if (BoghandlerNavn = 'Ukendt pakke') then
2358     begin
2359     PrintNyLabel := false;
2360 torben 2656
2361 torben 2645 PlaySound(PWideChar(AlarmLyd));
2362     MainForm.Color := clRed;
2363 torben 2668 btnNulstil.Visible := true;
2364 torben 2656
2365 torben 2645 end
2366     else
2367     begin
2368     nytRuteNummer := retRutenummer(RuteNummer);
2369     if (nytRuteNummer <> RuteNummer) then
2370     begin
2371     PrintNyLabel := true;
2372     RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2373     nyFarve := Farve;
2374 torben 2682 RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2375 torben 2645 List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2376     RuteNummer := nytRuteNummer;
2377     ListBox1.Items.Insert(0,List1Msg);
2378     logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2379     SkrivScanningLogFil(logTekst);
2380 torben 2656
2381 torben 2645 if (PrinterNavn = 'Ingen') then
2382     begin
2383     PrintNyLabel := false;
2384     end;
2385 torben 2656
2386 torben 2645 if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2387     begin
2388     PlaySound(PWideChar(AlarmLyd));
2389     MainForm.Color := clRed;
2390 torben 2668 btnNulstil.Visible := true;
2391 torben 2645 end;
2392 torben 2656
2393 torben 2645 end;
2394     kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2395     if (kontrolKoreliste <> RuteNummer) then
2396     begin
2397     PrintNyLabel := true;
2398     List1msg := TimeToStr(now) + '; ' + BoghandlerNavn + '; ' + 'Forkert køreliste ' + '; ' + Koreliste + ' -> ' + kontrolKoreliste;
2399     if (length(kontrolKoreliste) > 20) then // Skal ikke printe label når 'Køreliste ikke i kontrolfil'
2400     begin
2401     PrintNyLabel := false;
2402     RuteNummerST.Caption := RuteNummerST.Caption + ' -> ' + kontrolKoreliste;
2403     end
2404     else
2405     begin
2406     RuteNummerST.Caption := RuteNummerST.Caption + ' -> Ny køreliste: ' + kontrolKoreliste;
2407     end;
2408     ListBox1.Items.Insert(0,List1Msg);
2409     logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2410     SkrivScanningLogFil(logTekst);
2411 torben 2656
2412 torben 2645 if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2413     begin
2414     PlaySound(PWideChar(AlarmLyd));
2415     MainForm.Color := clRed;
2416 torben 2668 btnNulstil.Visible := true;
2417 torben 2645 end;
2418 torben 2656
2419 torben 2645 end;
2420     end;
2421    
2422     end;
2423    
2424     if Budlevering1.Checked then
2425     begin
2426     case BladhusSted of
2427     00 : begin;
2428     // 20150304: start
2429     // if PrintNyLabel and (kontrolKoreliste <> '') or (RuteNummer = 'Rutenr') then
2430     // // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2431     // // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2432     // // Det holder dog ikke for DAO DIREKTE fordi Schenker altid skal printes, da deres label mangler DAO ruteoplysninger553915076624451294
2433     if PrintNyLabel or (RuteNummer = 'Rutenr') then
2434     // 20150304: slut
2435     begin
2436     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2437     end;
2438     end;
2439     01 : begin;
2440 torben 2661 if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2441 torben 2645 // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2442     // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2443     begin
2444     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2445     end;
2446     end;
2447     02 : begin;
2448     if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2449     begin
2450     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2451     end;
2452     end;
2453     03 : begin;
2454 torben 2661 if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2455 torben 2645 // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2456     // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2457     begin
2458     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2459     end;
2460     end;
2461     04 : begin;
2462     if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2463     begin
2464     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2465     end;
2466     end;
2467     else
2468     ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
2469     end;
2470     end;
2471    
2472     // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her
2473     if Pakkernormal1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
2474     begin
2475     exit;
2476     end;
2477    
2478 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
2479 torben 2645 begin
2480     end
2481     else
2482     begin
2483 torben 2652 if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2484 torben 2645 begin
2485     logTekst := 'Printer label type ';
2486 torben 2652 if (chkAltidPrintLabel.Checked) then
2487 torben 2645 begin
2488     logTekst := logTekst + 'Alle ';
2489     end
2490     else if (PrintNyLabel) then
2491     begin
2492     logTekst := logTekst + 'Rute ';
2493     end
2494     else
2495     begin
2496     logTekst := logTekst + 'Ukendt ';
2497     end;
2498     logTekst := logTekst + ' for '+BoghandlerNavn;
2499     SkrivScanningLogFil(logTekst);
2500     with Printer do
2501     begin
2502     BeginDoc;
2503     Canvas.Font.Size := FontSizeRute;
2504     if (Length(RuteNummer) > 7) then
2505     begin
2506     Canvas.Font.Size := FontSizeRuteLille;
2507     end;
2508     Canvas.TextOut(XPosRute,YPosRute, RuteNummer);
2509     Canvas.Font.Size := FontSizeKommentar;
2510     Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2511     if (Kommentar = 'Ok') or (Kommentar = 'ALLEREDE SCANNET') then
2512     begin
2513     Kommentar := '';
2514     end;
2515     if (BoghandlerNavn = 'PAKKE ER SCANNET') then
2516     begin
2517     BoghandlerNavn := '';
2518     end;
2519     Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar); // Kan ikke lave linieskift (se tidligere kommentar om samme)
2520     Canvas.Font.Size := FontSizeBoghandler;
2521     Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);
2522     EndDoc;
2523     end;
2524     end;
2525     end;
2526    
2527     end;
2528    
2529     procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
2530     begin
2531     with Printer do
2532     begin
2533     BeginDoc;
2534     Canvas.Font.Size := FontSizeRuteLille;
2535     if (kontrolKoreliste <> '') then
2536     begin
2537     Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);
2538     end
2539     else
2540     begin
2541     Canvas.TextOut(XPosRute,YPosRute, RuteNummer);
2542     end;
2543     Canvas.Font.Size := FontSizeKorelisteLille;
2544     Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste);
2545     if (Sted = 'DBK') or (Sted = '04') then
2546     begin
2547     Canvas.Font.Size := FontSizeSorteringsfelt1;
2548     Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane); // sorteringsoplysning 1
2549     Canvas.Font.Size := FontSizeSorteringsfelt1;
2550     Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted); // sorteringsoplysning 2
2551     end;
2552     Canvas.Font.Size := FontSizeKommentar;
2553 torben 2656
2554 torben 2645 Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2555     Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);
2556 torben 2656
2557 torben 2645 Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar); // Kan ikke lave linieskift (se tidligere kommentar om samme)
2558     if SmsKode <> '' then
2559     begin
2560     Canvas.Font.Size := FontSizeSmskode;
2561     Canvas.TextOut(XPosKommentar,YPosSmskode, concat('CODE: ', SmsKode));
2562     end;
2563     Canvas.Font.Size := FontSizeBoghandler;
2564     Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);
2565     EndDoc;
2566     end;
2567     end;
2568    
2569    
2570 torben 2655 procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2571 torben 2645 begin
2572     Storepakker1.Checked := true;
2573 torben 2655 radioStorPakke.Checked := true;
2574 torben 2645 end;
2575    
2576 torben 2655 procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2577 torben 2645 begin
2578     Smpakker1.Checked := true;
2579 torben 2655 radioLillePakke.Checked := true;
2580 torben 2645 end;
2581    
2582    
2583 torben 2653 procedure TMainForm.chkSporgEfterKundeClick(Sender: TObject);
2584 torben 2645 begin
2585 torben 2653 if chkSporgEfterKunde.Checked then
2586 torben 2645 begin
2587     Sprgefterboghandlernummer1.Checked := true;
2588     end
2589     else
2590     begin
2591     Sprgefterboghandlernummer1.Checked := false;
2592     end;
2593     end;
2594    
2595    
2596 torben 2652 procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2597 torben 2645 begin
2598 torben 2652 if chkAltidPrintLabel.Checked then
2599 torben 2645 begin
2600     Altidprintepakkelabel1.Checked := true;
2601     end
2602     else
2603     begin
2604     Altidprintepakkelabel1.Checked := false;
2605     end;
2606    
2607     end;
2608    
2609 torben 2654 procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2610 torben 2645 begin
2611 torben 2654 if chkScanTjekkode.Checked then
2612 torben 2645 begin
2613     Scanogstjekkoden1.Checked := true;
2614     end
2615     else
2616     begin
2617     Scanogstjekkoden1.Checked := false;
2618     end;
2619     end;
2620    
2621     procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);
2622     begin
2623     Scanningtype := '5';
2624     InitPakkeshoplevering();
2625     NulstilAutomatiskValg();
2626     end;
2627    
2628     procedure TMainForm.NulstilAutomatiskValg();
2629     begin
2630     Automatiskvalg1.Checked := false;
2631     PanelValgA.Color := clBtnFace;
2632     PanelValgA.Font.Color := clWindowText;
2633 torben 2656
2634 torben 2645 if (SpecialVersionSted = '01')
2635 torben 2656 or (SpecialVersionSted = '02')
2636     or (SpecialVersionSted = '03')
2637     or (SpecialVersionSted = '04') then
2638 torben 2645 begin
2639     // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)
2640     PanelValgA.Enabled := false;
2641     PanelValgA.Font.Color := clInactiveCaption;
2642     Automatiskvalg1.Enabled := false;
2643     end;
2644     // 20150317: slut
2645     end;
2646    
2647     procedure TMainForm.TjekkerUrls();
2648     const
2649     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2650     var
2651     urlFejl : Integer;
2652     begin
2653     urlFejl := 0;
2654     //UpdateScreen('', '', 'Tjekker forbindelsen...', '', ''); // virker ikke
2655     ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');
2656    
2657 torben 2703 try
2658     // Tjekker urls
2659     logTekst := 'Tjekker urls.';
2660     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2661     SkrivScanningLogFil(logTekst);
2662 torben 2645
2663    
2664    
2665 torben 2703 // Tjekker UrlNormal
2666     if PanelValg1.Enabled = true then
2667     begin
2668     TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2669     end;
2670 torben 2645
2671 torben 2703 // Tjekker UrlReturDAO
2672     if PanelValg2.Enabled = true then
2673     begin
2674     TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2675     end;
2676 torben 2645
2677 torben 2703 // Tjekker UrlReturBoghandler
2678     if PanelValg3.Enabled = true then
2679     begin
2680     TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2681     end;
2682 torben 2645
2683 torben 2703 // Tjekker UrlBudlevering
2684     if PanelValg4.Enabled = true then
2685     begin
2686     TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2687     end;
2688 torben 2645
2689 torben 2703 // Tjekker UrlPakkeshoplevering
2690     if PanelValg5.Enabled = true then
2691     begin
2692     TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2693     end;
2694 torben 2645
2695 torben 2703 // Tjekker UrlReturPakkeshop
2696     if PanelValg6.Enabled = true then
2697     begin
2698     TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2699     end;
2700 torben 2645
2701 torben 2703 // Tjekker UrlManglendeScanninger
2702     if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2703     begin
2704     TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2705     end;
2706 torben 2645
2707 torben 2703 // Tjekker UrlPakkeshopManglendeScanninger
2708     if PanelValg5.Enabled = true then
2709     begin
2710     TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2711     end;
2712 torben 2689
2713 torben 2703 // Tjekker UrlPakkeshopManglendeReturScanninger
2714     if PanelValg6.Enabled = true then
2715     begin
2716     TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2717     end;
2718 torben 2689
2719 torben 2703 // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2720     if PanelValg7.Enabled = true then
2721     begin
2722     TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2723     TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2724     end;
2725 torben 2645
2726 torben 2703 // Tjekker UrlEKLoverforsel
2727     if PanelValg1.Enabled = true then
2728     begin
2729     TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2730     end;
2731 torben 2656
2732 torben 2645
2733 torben 2703 // Tjekker UrlEKLoverforselPakkeshop
2734     if PanelValg5.Enabled = true then
2735     begin
2736     TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2737     end;
2738 torben 2656
2739 torben 2645
2740 torben 2703 // Tjekker UrlFindPakketype
2741     TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2742 torben 2645
2743 torben 2703 // Tjekker UrlSendPrograminfo
2744     TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2745 torben 2645
2746 torben 2703
2747    
2748     logTekst := 'urls er ok';
2749     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2750     SkrivScanningLogFil(logTekst);
2751    
2752     Except
2753     TjekUrls := '-'; // markerer at der var fejl
2754    
2755     end;
2756 torben 2645 end;
2757    
2758 torben 2703 procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2759     const
2760     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2761     begin
2762     if TUtils.CheckUrl(Url) then
2763    
2764     begin
2765     logTekst := UrlNavn + ' accepteret: ' + Url;
2766     SkrivScanningLogFil(logTekst);
2767     end
2768     else
2769     begin
2770     inc(urlFejl); // Optæller antal fejl
2771     logTekst := UrlNavn + ' svarer ikke: ' + Url;
2772     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2773     if TjekUrls = '1' then
2774     begin
2775     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2776     end;
2777    
2778     SkrivScanningLogFil(logTekst);
2779    
2780     if TjekUrls = '1' then
2781     begin
2782     ShowMessage(logTekst);
2783     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2784     Application.Terminate;
2785    
2786     raise Exception.Create('UrlFejl');
2787    
2788     end;
2789     end;
2790    
2791     end;
2792    
2793    
2794    
2795 torben 2645 procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2796     var
2797     SR: TSearchRec;
2798     dt: TDateTime;
2799     CreationTime: TFileTime;
2800     dtCreation: TDateTime;
2801     BemTxt : String;
2802     begin
2803     logTekst := 'Logfiler tjekkes for sletning.';
2804     SkrivScanningLogFil(logTekst);
2805     FileList.Insert(0,logTekst);
2806     if FindFirst(Path + '*.log', faAnyFile, SR) = 0 then // finder log filer
2807     begin
2808     repeat
2809     if (SR.Attr <> faDirectory) then
2810     begin
2811 torben 2677
2812 torben 2645 dt := fileDateToDateTime(SR.Time); // finder filens timestamp for seneste ændring
2813     CreationTime := SR.FindData.ftCreationTime; // finder filens timestamp for oprettelse
2814 torben 2695 dtCreation := TUtils.FileTime2DateTime(CreationTime); // finder filens timestamp for oprettelse
2815 torben 2645 // Selvom creation date godt kan være forskellig fra modified date,
2816     // skal vi alligevel altid tjekke filens alder ud fra modified date
2817     // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
2818     BemTxt := '';
2819     if (DaysBetween(now, dt) > 14) then // så er filen kandidat til at blive slettet
2820     begin
2821     BemTxt := ' (skal slettes)';
2822     end;
2823     logTekst := SR.Name + ' Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dt) + ' ' + BemTxt + ' ' + IntToStr(DaysBetween(now, dt)) + ' dage gammel';
2824     if DaysBetween(dtCreation, dt) > 1 then
2825     begin
2826     logTekst := logTekst + ' (Oprettet ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dtCreation) + ')';
2827     end;
2828     FileList.Insert(0,logTekst);
2829     SkrivScanningLogFil(logTekst);
2830     if BemTxt = ' (skal slettes)' then
2831     begin
2832     if DeleteFile(Path + SR.Name) then
2833     begin
2834     logTekst := 'Logfil er slettet.';
2835     FileList.Insert(0,logTekst);
2836     SkrivScanningLogFil(logTekst);
2837     end
2838     else
2839     begin
2840     logTekst := 'Logfil kunne IKKE slettes.';
2841     FileList.Insert(0,logTekst);
2842     SkrivScanningLogFil(logTekst);
2843     end;
2844     end;
2845     end;
2846     until FindNext(SR) <> 0;
2847     FindClose(SR);
2848     end;
2849     end;
2850    
2851 torben 2668 procedure TMainForm.btnNulstilClick(Sender: TObject);
2852 torben 2645 begin
2853     PakkeshopStregkode := '';
2854     PakkeshopTjekkode := '';
2855 torben 2668 btnNulstil.Visible := false;
2856 torben 2645 PakkeshopText1.Caption := 'Stregkode';
2857     BoghandlerStregkode := '';
2858     BoghandlerTjekkode := '';
2859     Stregkode := '';
2860     // 20150312: start
2861     if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2862     begin
2863     ShowMessage('Programmet afbrydes...');
2864     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2865     Application.Terminate;
2866     exit;
2867     end;
2868     // 20150312: slut
2869     InitScreen();
2870     // MainForm.Color := HexToTColor(Farve);
2871     if Farve <> '' then
2872     begin
2873 torben 2682 MainForm.Color := TUtils.HexToTColor(Farve);
2874 torben 2645 // 20150312: start
2875     (*
2876     end
2877     else
2878     begin
2879     ShowMessage('Programmet afbrydes...');
2880     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2881     Application.Terminate;
2882     *)
2883     // 20150312: slut
2884     end;
2885     if (Budlevering1.Checked) then
2886     begin
2887     InitLillePakke();
2888     end;
2889     PrinterstatusStaticText1.Caption := '';
2890     PrinterstatusStaticText1.Color := MainForm.Color;
2891     end;
2892    
2893 torben 2650
2894 torben 2645 procedure TMainForm.PanelValg1Click(Sender: TObject);
2895     begin
2896     Scanningtype := '1';
2897     InitNatxpresslevering();
2898     NulstilAutomatiskValg();
2899     end;
2900    
2901     procedure TMainForm.PanelValg2Click(Sender: TObject);
2902     begin
2903     Scanningtype := '2';
2904     InitReturFraDao();
2905     NulstilAutomatiskValg();
2906     end;
2907    
2908     procedure TMainForm.PanelValg3Click(Sender: TObject);
2909     begin
2910     Scanningtype := '3';
2911     InitReturFraKunde();
2912     NulstilAutomatiskValg();
2913     end;
2914    
2915     procedure TMainForm.PanelValg4Click(Sender: TObject);
2916     begin
2917     Scanningtype := '4';
2918     InitDirektelevering();
2919     NulstilAutomatiskValg();
2920     end;
2921    
2922     procedure TMainForm.PanelValg5Click(Sender: TObject);
2923     begin
2924     Scanningtype := '5';
2925     InitPakkeshoplevering();
2926     NulstilAutomatiskValg();
2927     end;
2928    
2929     procedure TMainForm.PanelValg6Click(Sender: TObject);
2930     begin
2931     Scanningtype := '6';
2932     InitReturFraPakkeshop();
2933     NulstilAutomatiskValg();
2934     end;
2935    
2936 torben 2650
2937     procedure TMainForm.PanelValg7Click(Sender: TObject);
2938     begin
2939     Scanningtype := '7';
2940     InitIndleveringskode();
2941     NulstilAutomatiskValg();
2942    
2943     end;
2944    
2945 torben 2645 procedure TMainForm.PanelValgAClick(Sender: TObject);
2946     begin
2947     // Skal ikke toggle men bare sætte funktionen on
2948     // Fravælges ved at vælge en scanningstype
2949 torben 2692 AutomatiskValg1.Checked := true;
2950     PanelValgA.Color := clGreen;
2951     PanelValgA.Font.Color := clWhite;
2952    
2953    
2954    
2955 torben 2645 end;
2956    
2957     procedure TMainForm.Pakkernormal1Click(Sender: TObject);
2958     begin
2959     Scanningtype := '1';
2960     NulstilAutomatiskValg();
2961     InitNatxpresslevering();
2962     end;
2963    
2964     procedure TMainForm.Testforbindelsen1Click(Sender: TObject);
2965     var
2966     RuteNummer : String;
2967     Kommentar : String;
2968     BoghandlerNavn : String;
2969     Koreliste : String;
2970     Falsk : Boolean;
2971     SmsKode : String;
2972     DBKbane : String;
2973     Leveringssted : String;
2974     orgTjekUrls : String;
2975     begin
2976     orgTjekUrls := TjekUrls;
2977     if (TjekUrls = '1') or (TjekUrls = '2') then
2978     begin
2979     TjekkerUrls();
2980     end;
2981     if TjekUrls = '-' then
2982     begin
2983     //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
2984     RuteNummer := '';
2985     Kommentar := 'Se log vinduet';
2986     BoghandlerNavn := 'Fejl i forbindelse til server';
2987     Koreliste := '';
2988     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2989     // Her kommer en alarm og rød skærm
2990     PlaySound(PWideChar(AlarmLyd));
2991     MainForm.Color := clRed;
2992 torben 2668 btnNulstil.Visible := true;
2993 torben 2645 end
2994     else
2995     begin
2996     Falsk := False;
2997 torben 2660
2998 torben 2645 HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
2999     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3000     SmsKode := '999999';
3001     DBKbane := '999';
3002     Leveringssted := 'XXX';
3003     PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
3004     FocusControl(StregkodeST);
3005     end;
3006     TjekUrls := orgTjekUrls;
3007    
3008     end;
3009    
3010     procedure TMainForm.Testprinter1Click(Sender: TObject);
3011     var
3012     RuteNummer : String;
3013     Kommentar : String;
3014     BoghandlerNavn : String;
3015     Koreliste : String;
3016     Falsk : Boolean;
3017     SmsKode : String;
3018     DBKbane : String;
3019     Leveringssted : String;
3020     begin
3021     RuteNummer := 'Rutenr';
3022     Kommentar := '***** Kommentar *****';
3023     BoghandlerNavn := 'Modtagernavn';
3024     Falsk := False;
3025    
3026 torben 2660
3027 torben 2645 if (Printer.Printers.Count = 0) then
3028     begin
3029     ShowMessage('Der er ikke installeret en printer på denne PC.');
3030     end
3031     else if PrinterNavn = 'Ingen' then
3032     begin
3033     ShowMessage('Der er fravalgt printer i dette program.');
3034     end
3035     else
3036     begin
3037     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3038     SmsKode := '999999';
3039     DBKbane := '999';
3040     Leveringssted := 'XXX';
3041     PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
3042     CheckPrintQue('Test');
3043     end;
3044     FocusControl(StregkodeST);
3045     end;
3046    
3047     procedure TMainForm.Timer1Timer(Sender: TObject);
3048     begin
3049     if (TjekPrinter = '1') then
3050     begin
3051     CheckPrintQue('Timer');
3052     end
3053     else
3054     begin
3055     PrinterstatusStaticText1.Caption := '';
3056     PrinterstatusStaticText1.Color := MainForm.Color;
3057     end;
3058     end;
3059    
3060    
3061    
3062     procedure TMainForm.Om1Click(Sender: TObject);
3063     const
3064     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3065     var
3066     tekst, filversion : String;
3067     begin
3068    
3069 torben 2693 filversion := TUtils.Sto_GetFmtFileVersion('');
3070 torben 2645 tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';
3071    
3072     tekst := tekst+crlf+crlf;
3073     tekst := tekst+'Programmet er installeret som:'+crlf+ParamStr(0);
3074     tekst := tekst+crlf;
3075    
3076     if SpecialVersionSted = '' then
3077     begin
3078     tekst := tekst+crlf+crlf+'Scanningssted: '+StringReplace(Stednavn, ':', '', [rfReplaceAll, rfIgnoreCase])+' ('+Sted+')';
3079     end;
3080    
3081     if SpecialVersionSted <> '' then
3082     begin
3083     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
3084     begin
3085     if Stednavn = '' then
3086     begin
3087     tekst := tekst+crlf+crlf+'Speciel version til: '+BladhusStedNavn[BladhusSted]+' ('+BladhusStedKode[BladhusSted]+')';
3088     end
3089     else
3090     begin
3091 torben 2682 tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
3092 torben 2645 end;
3093     end
3094     else
3095     begin
3096 torben 2682 tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
3097 torben 2645 end;
3098     end;
3099    
3100     if (Pos('omdeling.info',Url) = 0) then
3101     begin
3102     tekst := tekst+crlf+crlf;
3103     tekst := tekst+crlf+crlf+' ********** DETTE ER KUN EN TEST VERSION **********';
3104     tekst := tekst+crlf+crlf;
3105     tekst := tekst+crlf+crlf+'Url: '+url;
3106     end;
3107    
3108     MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
3109    
3110     end;
3111    
3112     procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3113     Rect: TRect; State: TOwnerDrawState);
3114     var
3115     ListBox1MaxLinLgd,i : Integer;
3116     myColor: TColor;
3117     myBrush: TBrush;
3118     begin
3119     ListBox1MaxLinLgd := 0;
3120     myBrush := TBrush.Create;
3121     with (Control as TListBox).Canvas do
3122     begin
3123     if not Odd(Index) then
3124     myColor := clWhite
3125     else
3126     myColor := clSilver;
3127    
3128     if odSelected in State then
3129     begin
3130     myColor := MainForm.Color;
3131     font.Color := clBlack;
3132     end;
3133    
3134     myBrush.Style := bsSolid;
3135     myBrush.Color := myColor;
3136     Windows.FillRect(handle, Rect, myBrush.Handle) ;
3137     Brush.Style := bsClear;
3138     TextOut(Rect.Left, Rect.Top,
3139     (Control as TListBox).Items[Index]) ;
3140     MyBrush.Free;
3141     end;
3142    
3143     for i := 0 to (ListBox1.Items.Count - 1) do
3144     if (ListBox1.Canvas.TextWidth(ListBox1.Items[i]) > ListBox1MaxLinLgd) then
3145     ListBox1MaxLinLgd := ListBox1.Canvas.TextWidth(ListBox1.Items[i]);
3146     ListBox1.ScrollWidth := ListBox1MaxLinLgd;
3147     end;
3148    
3149     procedure TMainForm.Lukprogrammet1Click(Sender: TObject);
3150     begin
3151    
3152     Application.Terminate;
3153    
3154     end;
3155    
3156     procedure TMainForm.Manual1Click(Sender: TObject);
3157     var
3158     fileName : string;
3159     begin
3160     fileName := 'Docs\Manual_' + Scanningtype + '.pdf';
3161    
3162     if FileExists(fileName) then
3163     begin
3164 torben 2685 if TUtils.AdobeReaderExists then
3165 torben 2645 begin
3166     //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3167     ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3168     end
3169     else
3170     begin
3171     ShowMessage('Acrobat Reader er ikke installeret!');
3172     end;
3173     end
3174     else
3175     begin
3176     ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3177     end;
3178     end;
3179    
3180     procedure TMainForm.Manualgenerel1Click(Sender: TObject);
3181     var
3182     fileName : string;
3183     begin
3184     fileName := 'Docs\Manual_0.pdf';
3185    
3186     if FileExists(fileName) then
3187     begin
3188 torben 2685 if TUtils.AdobeReaderExists then
3189 torben 2645 begin
3190     //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3191     ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3192     end
3193     else
3194     begin
3195 torben 2700 ShowMessage('Adobe Reader er ikke installeret!');
3196 torben 2645 end;
3197     end
3198     else
3199     begin
3200     ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3201     end;
3202     end;
3203    
3204 torben 2664 procedure TMainForm.menuIndleveringClick(Sender: TObject);
3205     begin
3206     Scanningtype := '7';
3207     NulstilAutomatiskValg();
3208     InitIndleveringskode();
3209     end;
3210    
3211 torben 2645 procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3212     begin
3213    
3214     if Sprgefterboghandlernummer1.Checked then
3215     begin
3216 torben 2653 chkSporgEfterKunde.Checked := true;
3217 torben 2645 end
3218     else
3219     begin
3220 torben 2653 chkSporgEfterKunde.Checked := false;
3221 torben 2645 end;
3222    
3223    
3224     end;
3225    
3226     procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);
3227     begin
3228     Scanningtype := '2';
3229     NulstilAutomatiskValg();
3230     InitReturFraDao();
3231     end;
3232    
3233     procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);
3234     begin
3235     Scanningtype := '6';
3236     InitReturFraPakkeshop();
3237     NulstilAutomatiskValg();
3238     end;
3239    
3240     procedure TMainForm.InitNatxpresslevering();
3241     begin
3242     AutomatiskTjekkodeStyring1.Enabled := true;
3243 torben 2668 btnNulstil.Visible := false;
3244 torben 2645 Pakkernormal1.Checked := true;
3245     InitForm(FarveNormal,TitelNormal,UrlNormal);
3246     PanelValg1.Color := clGreen;
3247     PanelValg1.Font.Color := clWhite;
3248 torben 2653
3249 torben 2652 chkAltidPrintLabel.Enabled := true;
3250 torben 2645 Altidprintepakkelabel1.Enabled := true;
3251     Altidprintepakkelabel1.Checked := false;
3252 torben 2652 chkAltidPrintLabel.Checked := false;
3253 torben 2645 Sprgefterboghandlernummer1.Checked := false;
3254 torben 2653 chkSporgEfterKunde.Checked := false;
3255 torben 2645 Sprgefterboghandlernummer1.Enabled := true;
3256     Smpakker1.Enabled := false;
3257     Storepakker1.Enabled := false;
3258 torben 2655 radioStorPakke.Enabled := false;
3259     radioLillePakke.Enabled := false;
3260 torben 2645 ListBox1.Visible := true;
3261 torben 2699 BtnOpdaterListen.Enabled := true;
3262 torben 2698 BtnEKLoverforsel.Enabled := true;
3263 torben 2645 InitLillePakke();
3264     ListBox1.Items.Clear;
3265     if BladhusSted = 0 then
3266     begin
3267     IndlesScanningLogFil();
3268     IndlesManglendeScanninger();
3269     end;
3270     end;
3271    
3272     procedure TMainForm.InitReturFraDao();
3273     begin
3274     AutomatiskTjekkodeStyring1.Enabled := false;
3275     ReturpakkerfraDAO1.Checked := true;
3276 torben 2668 btnNulstil.Visible := false;
3277 torben 2645 InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3278     PanelValg2.Color := clGreen;
3279     PanelValg2.Font.Color := clWhite;
3280 torben 2653
3281 torben 2652 chkAltidPrintLabel.Enabled := false;
3282 torben 2645 Altidprintepakkelabel1.Enabled := false;
3283 torben 2652
3284 torben 2645 Altidprintepakkelabel1.Checked := false;
3285     Sprgefterboghandlernummer1.Checked := false;
3286 torben 2653 chkSporgEfterKunde.Checked := false;
3287 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3288     Smpakker1.Enabled := true;
3289     Storepakker1.Enabled := true;
3290 torben 2655 radioStorPakke.Enabled := true;
3291     radioLillePakke.Enabled := true;
3292 torben 2645 ListBox1.Visible := true;
3293     ListBox1.Items.Clear;
3294     ListBox2.Items.Clear;
3295 torben 2698 BtnEKLoverforsel.Enabled := false;
3296 torben 2645 InitLillePakke();
3297     end;
3298    
3299     procedure TMainForm.InitReturFraKunde();
3300     begin
3301     AutomatiskTjekkodeStyring1.Enabled := false;
3302     Returpakkerfraboghandler1.Checked := true;
3303 torben 2668 btnNulstil.Visible := false;
3304 torben 2645 InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3305     PanelValg3.Color := clGreen;
3306     PanelValg3.Font.Color := clWhite;
3307 torben 2653
3308 torben 2652 chkAltidPrintLabel.Enabled := false;
3309 torben 2645 Altidprintepakkelabel1.Enabled := false;
3310     Altidprintepakkelabel1.Checked := false;
3311     Sprgefterboghandlernummer1.Checked := false;
3312 torben 2653 chkSporgEfterKunde.Checked := false;
3313 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3314     Smpakker1.Enabled := true;
3315     Storepakker1.Enabled := true;
3316 torben 2655 radioStorPakke.Enabled := true;
3317     radioLillePakke.Enabled := true;
3318 torben 2645 ListBox1.Visible := true;
3319     ListBox1.Items.Clear;
3320     ListBox2.Items.Clear;
3321 torben 2698 BtnEKLoverforsel.Enabled := false;
3322 torben 2645 InitLillePakke();
3323     end;
3324    
3325     procedure TMainForm.InitDirektelevering();
3326     begin
3327     AutomatiskTjekkodeStyring1.Enabled := false;
3328     Budlevering1.Checked := true;
3329 torben 2668 btnNulstil.Visible := false;
3330 torben 2645 InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3331     PanelValg4.Color := clGreen;
3332     PanelValg4.Font.Color := clWhite;
3333 torben 2653
3334 torben 2652 chkAltidPrintLabel.Enabled := false;
3335 torben 2645 Altidprintepakkelabel1.Enabled := false;
3336 torben 2652
3337 torben 2645 Altidprintepakkelabel1.Checked := false;
3338     Sprgefterboghandlernummer1.Checked := false;
3339 torben 2653 chkSporgEfterKunde.Checked := false;
3340 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3341     Smpakker1.Enabled := true;
3342     Storepakker1.Enabled := true;
3343 torben 2655 radioStorPakke.Enabled := true;
3344     radioLillePakke.Enabled := true;
3345 torben 2645 ListBox1.Visible := true;
3346     ListBox1.Items.Clear;
3347 torben 2691 BtnDownloadKontrolfil.Enabled := false;
3348 torben 2699 BtnOpdaterListen.Enabled := true;
3349 torben 2696 BtnDownloadRuteskiftFil.Visible := false;
3350 torben 2698 BtnEKLoverforsel.Enabled := false;
3351 torben 2645 IdFTP1.Passive := true;
3352     IdFTP1.PassiveUseControlHost := true;
3353     if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3354     begin
3355     IndlesScanningLogFil();
3356     IndlesManglendeScanninger();
3357     end;
3358    
3359     end;
3360    
3361     procedure TMainForm.InitPakkeshoplevering();
3362     begin
3363     AutomatiskTjekkodeStyring1.Enabled := true;
3364     Pakkeshoplevering1.Checked := true;
3365 torben 2668 btnNulstil.Visible := false;
3366 torben 2645 InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3367     PanelValg5.Color := clGreen;
3368     PanelValg5.Font.Color := clWhite;
3369 torben 2653
3370 torben 2652 chkAltidPrintLabel.Enabled := false;
3371 torben 2645 Altidprintepakkelabel1.Enabled := false;
3372 torben 2652
3373 torben 2645 Altidprintepakkelabel1.Checked := false;
3374     Sprgefterboghandlernummer1.Checked := false;
3375 torben 2653 chkSporgEfterKunde.Checked := false;
3376 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3377     Smpakker1.Enabled := false;
3378     Storepakker1.Enabled := false;
3379 torben 2655 radioStorPakke.Enabled := false;
3380     radioLillePakke.Enabled := false;
3381 torben 2645 ListBox1.Visible := true;
3382     ListBox1.Items.Clear;
3383 torben 2691 BtnDownloadKontrolfil.Enabled := false;
3384 torben 2699 BtnOpdaterListen.Enabled := true;
3385 torben 2656
3386 torben 2698 BtnEKLoverforsel.Enabled := true;
3387 torben 2656
3388 torben 2645 InitLillePakke();
3389     IndlesScanningLogFil();
3390     if BladhusSted = 0 then
3391     begin
3392     IndlesManglendeScanninger();
3393     end;
3394     IdFTP1.Passive := true;
3395     IdFTP1.PassiveUseControlHost := true;
3396     end;
3397    
3398     procedure TMainForm.InitReturFraPakkeshop();
3399     begin
3400     AutomatiskTjekkodeStyring1.Enabled := false;
3401     Returpakkerfrapakkeshop1.Checked := true;
3402 torben 2668 btnNulstil.Visible := false;
3403 torben 2645 InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3404     PanelValg6.Color := clGreen;
3405     PanelValg6.Font.Color := clWhite;
3406 torben 2653
3407 torben 2652 chkAltidPrintLabel.Enabled := false;
3408 torben 2645 Altidprintepakkelabel1.Enabled := false;
3409 torben 2652
3410 torben 2645 Altidprintepakkelabel1.Checked := false;
3411     Sprgefterboghandlernummer1.Checked := false;
3412 torben 2653 chkSporgEfterKunde.Checked := false;
3413 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3414     Smpakker1.Enabled := false;
3415     Storepakker1.Enabled := false;
3416 torben 2655 radioStorPakke.Enabled := false;
3417     radioLillePakke.Enabled := false;
3418 torben 2645 ListBox1.Visible := true;
3419     ListBox1.Items.Clear;
3420 torben 2691 BtnDownloadKontrolfil.Enabled := false;
3421 torben 2699 BtnOpdaterListen.Enabled := true;
3422 torben 2698 BtnEKLoverforsel.Enabled := false;
3423 torben 2645 InitLillePakke();
3424     IndlesScanningLogFil();
3425     if BladhusSted = 0 then
3426     begin
3427     IndlesManglendeScanninger();
3428     end;
3429     IdFTP1.Passive := true;
3430     IdFTP1.PassiveUseControlHost := true;
3431     end;
3432    
3433     procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);
3434     begin
3435     Scanningtype := '3';
3436     NulstilAutomatiskValg();
3437     InitReturFraKunde();
3438     end;
3439    
3440 torben 2650 procedure TMainForm.InitIndleveringskode();
3441     begin
3442 torben 2664 menuIndlevering.Checked := true;
3443 torben 2650 AutomatiskTjekkodeStyring1.Enabled := false;
3444 torben 2664
3445 torben 2668 btnNulstil.Visible := false;
3446 torben 2656 InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3447 torben 2650 PanelValg7.Color := clGreen;
3448     PanelValg7.Font.Color := clWhite;
3449 torben 2653
3450 torben 2652 chkAltidPrintLabel.Enabled := false;
3451 torben 2650 Altidprintepakkelabel1.Enabled := false;
3452 torben 2652
3453 torben 2650 Altidprintepakkelabel1.Checked := false;
3454     Sprgefterboghandlernummer1.Checked := false;
3455 torben 2656 Sprgefterboghandlernummer1.Enabled := false;
3456 torben 2653 chkSporgEfterKunde.Checked := false;
3457 torben 2656
3458    
3459    
3460 torben 2650 Smpakker1.Enabled := false;
3461     Storepakker1.Enabled := false;
3462 torben 2655 radioStorPakke.Enabled := false;
3463     radioLillePakke.Enabled := false;
3464 torben 2650 ListBox1.Visible := true;
3465 torben 2656 ListBox1.Items.Clear();
3466    
3467 torben 2691 BtnDownloadKontrolfil.Enabled := false;
3468 torben 2699 BtnOpdaterListen.Enabled := true;
3469 torben 2698 BtnEKLoverforsel.Enabled := false;
3470 torben 2664 InitLillePakke();
3471     IndlesScanningLogFil();
3472     if BladhusSted = 0 then
3473     begin
3474     IndlesManglendeScanninger();
3475     end;
3476 torben 2650 IdFTP1.Passive := true;
3477     IdFTP1.PassiveUseControlHost := true;
3478     end;
3479    
3480    
3481 torben 2645 procedure TMainForm.Storepakker1Click(Sender: TObject);
3482     begin
3483     InitStorPakke();
3484     end;
3485    
3486     procedure TMainForm.Smpakker1Click(Sender: TObject);
3487     begin
3488     InitLillePakke();
3489     end;
3490    
3491     procedure TMainForm.InitLillePakke();
3492     begin
3493 torben 2655 radioLillePakke.Checked := true;
3494 torben 2645 Smpakker1.Checked := true;
3495     // Stregkode := '';
3496     end;
3497    
3498     procedure TMainForm.InitStorPakke();
3499     begin
3500 torben 2655 radioStorPakke.Checked := true;
3501 torben 2645 Storepakker1.Checked := true;
3502     // 20150310: start
3503     // Stregkode := '';
3504     // 20150310: slut
3505     end;
3506    
3507 torben 2677
3508 torben 2645
3509     procedure TMainForm.PlaySound(filename : PWideChar);
3510     begin
3511     if (filename <> '') then
3512     begin
3513     sndPlaySound(filename,
3514     SND_NODEFAULT Or SND_ASYNC);
3515     end;
3516     end;
3517    
3518     procedure TMainForm.Testlyd1Click(Sender: TObject);
3519     begin
3520     if AlarmLyd <> '' then
3521     begin
3522     PlaySound(PWideChar(AlarmLyd));
3523     end
3524     else
3525     begin
3526     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (alarm)'), 'Information', MB_OK);
3527     end;
3528     end;
3529    
3530     procedure TMainForm.Testlyd2Click(Sender: TObject);
3531     begin
3532     if (PakkeshopText1.Caption = 'Tjekkode') then
3533     begin
3534     if ScannetOkTilTjekkodeLyd <> '' then
3535     begin
3536     PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
3537     end
3538     else
3539     begin
3540     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkTilTjekkodeLyd)'), 'Information', MB_OK);
3541     end;
3542     exit;
3543     end;
3544    
3545     if Smpakker1.Checked then
3546     if ScannetOkLyd <> '' then
3547     begin
3548     PlaySound(PWideChar(ScannetOkLyd));
3549     end
3550     else
3551     begin
3552     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3553     end;
3554     if Storepakker1.Checked then
3555     if ScannetOkStorLyd <> '' then
3556     begin
3557     PlaySound(PWideChar(ScannetOkStorLyd));
3558     end
3559     else
3560     begin
3561     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
3562     end;
3563     end;
3564    
3565    
3566     procedure TMainForm.Budlevering1Click(Sender: TObject);
3567     begin
3568     Scanningtype := '4';
3569     NulstilAutomatiskValg();
3570     InitDirektelevering();
3571     end;
3572    
3573     procedure TMainForm.Button1Click(Sender: TObject);
3574     begin;
3575     CheckCode();
3576     end;
3577    
3578 torben 2698 procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3579 torben 2645 var
3580     WebSvar : String;
3581     URLStr : String;
3582     StedKode : String;
3583     Node: IXMLNode;
3584     I: Integer;
3585     status, kommentar : String;
3586    
3587     begin
3588 torben 2698 BtnEKLoverforsel.Enabled := false;
3589 torben 2645
3590     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
3591     logTekst := 'Overfører de scannede pakker til EKL';
3592     SkrivScanningLogFil(logTekst);
3593     StedKode := Sted;
3594     URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3595     // 20150330: start
3596     if PanelValg5.Color = clGreen then
3597     begin
3598     URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3599     end;
3600     // 20150330: slut
3601    
3602     try
3603     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3604     WebSvar := IdHTTP1.Get(URLStr);
3605     except
3606     on e:EIdConnClosedGracefully do
3607     begin
3608     // Her skal vi ikke gøre noget - men vi skal forespørge igen
3609     WebSvar := IdHTTP1.Get(URLStr);
3610     end;
3611     on e:exception do
3612     begin
3613     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
3614     logTekst := 'Fejl i web forespørgsel: '+e.Message;
3615     SkrivScanningLogFil(logTekst);
3616     raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
3617     end;
3618     end;
3619     try
3620     XMLDocument1.LoadFromXML(WebSvar);
3621     for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
3622     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
3623     if Node.NodeType = ntElement then begin
3624     if Node.NodeName = 'Status' then begin
3625     if not VarIsNull(Node.NodeValue) then
3626     status := Node.NodeValue;
3627     end;
3628     if Node.NodeName = 'Kommentar' then begin
3629     if not VarIsNull(Node.NodeValue) then
3630     kommentar := Node.NodeValue;
3631     end;
3632     end;
3633     end;
3634    
3635     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status+' '+kommentar);
3636     logTekst := 'Overførsel til EKL: ' + status;
3637     SkrivScanningLogFil(logTekst);
3638    
3639     except on e:exception do
3640     begin
3641     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status);
3642     logTekst := 'Overførsel til EKL: ' + status;
3643     SkrivScanningLogFil(logTekst);
3644     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
3645     logTekst := 'Fejl i XML-format: '+e.Message;
3646     SkrivScanningLogFil(logTekst);
3647     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
3648     end;
3649     end;
3650    
3651 torben 2698 BtnEKLoverforsel.Enabled := true;
3652 torben 2645
3653     ListBox1.SetFocus; // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
3654    
3655     // Hvis der var fejl i overførslen skal dette fejlmeldes her
3656     if status = 'Fejl' then
3657     begin // Her skal komme en alarm og rød skærm
3658     PlaySound(PWideChar(AlarmLyd));
3659     MainForm.Color := clRed;
3660     RutenummerST.Caption := 'EKL overførsel';
3661     BoghandlerNavnST.Caption := 'Fejl:';
3662     if (pos('Deadlock', Kommentar) > 0) then
3663     begin
3664     RutenummerST.Caption := 'EKL overførsel fejlet';
3665     BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3666     end;
3667     KommentarST.Caption := Kommentar;
3668 torben 2668 btnNulstil.Visible := true;
3669 torben 2645 end;
3670    
3671     end;
3672    
3673     procedure TMainForm.CheckCode();
3674     var
3675     Barcode, Svar : String;
3676     ClickedOK : Boolean;
3677     begin
3678     ClickedOK := InputQuery('Barcode check', 'Indtast stregkode', Barcode);
3679     if ClickedOk then
3680     begin
3681     { if (BarCodeValid(Barcode)) then
3682     MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
3683     else
3684     MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3685     }
3686     // MessageBox(Handle, PAnsiChar(CheckSumModulo10(Barcode)), 'Stregkode', MB_OK);
3687     { if (CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1)) = Barcode) then
3688     MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
3689     else
3690     MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3691     }
3692 torben 2682 Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3693 torben 2645
3694     MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3695     CheckCode();
3696     end;
3697    
3698     end;
3699    
3700    
3701     //
3702     // Bladhus ***
3703     //
3704     procedure TMainForm.DownloadBladhusRuteskiftfil();
3705     const
3706     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3707    
3708     var
3709     filnavn_input : string;
3710     filnavn_output : string;
3711     buttonSelected : Integer;
3712    
3713     begin
3714     filnavn_input := BladhusRuteskiftfil_server; // hvis filen ikke findes vises 'no such file or directory'
3715     filnavn_output := BladhusRuteskiftfil_lokal;
3716    
3717     case BladhusSted of
3718     00 : begin;
3719     end;
3720     01 : begin;
3721     buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3722     if buttonSelected = mrOK then
3723     begin
3724     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3725     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3726     SkrivScanningLogFil(logTekst);
3727     try
3728     try
3729    
3730     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3731     IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
3732     IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
3733     IdFTP1.Connect;
3734    
3735     //IdFTP1.TransferType := ftASCII;
3736     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3737     try
3738     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3739     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3740     except on e:EIdConnClosedGracefully do
3741     begin
3742     // Her skal vi ikke gøre noget - men vi skal forespørge igen
3743     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3744     end;
3745     end;
3746     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3747    
3748     ListBox1.Items.Insert(0,TimeToStr(now) + ': Ruteskift fil gemt lokalt som ' + filnavn_output + '.');
3749     logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
3750     SkrivScanningLogFil(logTekst);
3751    
3752     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
3753     logTekst := 'Ruteskift fil tjekkes.';
3754     SkrivScanningLogFil(logTekst);
3755    
3756     finally
3757     IdFTP1.Disconnect;
3758     end;
3759    
3760     except on e:exception do
3761     begin
3762     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3763     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3764     SkrivScanningLogFil(logTekst);
3765     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3766     [e.Message
3767     + CrLf + 'Host: '+IdFTP1.host
3768     + CrLf + 'Username: '+IdFTP1.Username
3769     ]
3770     );
3771     end;
3772     end;
3773     end
3774     else
3775     begin
3776     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
3777     logTekst := 'Download af ruteskiftfil annulleret';
3778     SkrivScanningLogFil(logTekst);
3779     end;
3780     IndlesRuteskiftFil(filnavn_output);
3781     end;
3782     02 : begin;
3783     end;
3784     03 : begin;
3785     buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3786     if buttonSelected = mrOK then
3787     begin
3788     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3789     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3790     SkrivScanningLogFil(logTekst);
3791     try
3792     try
3793    
3794     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3795     IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
3796     IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
3797     IdFTP1.Connect;
3798    
3799     //IdFTP1.TransferType := ftASCII;
3800     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3801     try
3802     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3803     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3804     except on e:EIdConnClosedGracefully do
3805     begin
3806     // Her skal vi ikke gøre noget - men vi skal forespørge igen
3807     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3808     end;
3809     end;
3810     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3811    
3812     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute ruteskift fil gemt lokalt som ' + filnavn_output + '.');
3813     logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
3814     SkrivScanningLogFil(logTekst);
3815    
3816     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
3817     logTekst := 'Ruteskift fil tjekkes.';
3818     SkrivScanningLogFil(logTekst);
3819    
3820     finally
3821     IdFTP1.Disconnect;
3822     end;
3823    
3824     except on e:exception do
3825     begin
3826     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3827     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3828     SkrivScanningLogFil(logTekst);
3829     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3830     [e.Message
3831     + CrLf + 'Host: '+IdFTP1.host
3832     + CrLf + 'Username: '+IdFTP1.Username
3833     ]
3834     );
3835     end;
3836     end;
3837     end
3838     else
3839     begin
3840     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
3841     logTekst := 'Download af ruteskiftfil annulleret';
3842     SkrivScanningLogFil(logTekst);
3843     end;
3844     IndlesRuteskiftFil(filnavn_output);
3845     end;
3846     04 : begin;
3847     end;
3848     else
3849     ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
3850     end;
3851    
3852     end;
3853    
3854     procedure TMainForm.DownloadBladhusKontrolfil();
3855     const
3856     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3857    
3858     var
3859     filnavn_input : string;
3860     filnavn_output : string;
3861     buttonSelected : Integer;
3862    
3863     begin
3864     filnavn_input := BladhusKontrolfil_server; // hvis filen ikke findes vises 'no such file or directory'
3865     filnavn_output := BladhusKontrolfil_lokal;
3866    
3867     case BladhusSted of
3868     01 :
3869     begin;
3870     buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3871     if buttonSelected = mrOK then
3872     begin
3873     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3874     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3875     SkrivScanningLogFil(logTekst);
3876     try
3877     try
3878    
3879     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3880     IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
3881     IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
3882     IdFTP1.Connect;
3883    
3884     //IdFTP1.TransferType := ftASCII;
3885     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3886     try
3887     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3888     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3889     except on e:EIdConnClosedGracefully do
3890     begin
3891     // Her skal vi ikke gøre noget - men vi skal forespørge igen
3892     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3893     end;
3894     end;
3895     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3896    
3897     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
3898     logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
3899     SkrivScanningLogFil(logTekst);
3900    
3901     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
3902     logTekst := 'Rute kontrol fil tjekkes.';
3903     SkrivScanningLogFil(logTekst);
3904    
3905     finally
3906     IdFTP1.Disconnect;
3907     end;
3908    
3909     except on e:exception do
3910     begin
3911     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3912     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3913     SkrivScanningLogFil(logTekst);
3914     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3915     [e.Message
3916     + CrLf + 'Host: '+IdFTP1.host
3917     + CrLf + 'Username: '+IdFTP1.Username
3918     ]
3919     );
3920     end;
3921     end;
3922     end
3923     else
3924     begin
3925     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
3926     logTekst := 'Download af kontrolfil annulleret';
3927     SkrivScanningLogFil(logTekst);
3928     end;
3929     IndlesKontrolFil(filnavn_output);
3930     end;
3931     02 : begin;
3932     end;
3933     03 : begin;
3934     buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3935     if buttonSelected = mrOK then
3936     begin
3937     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3938     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3939     SkrivScanningLogFil(logTekst);
3940     try
3941     try
3942    
3943     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3944     IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
3945     IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
3946     IdFTP1.Connect;
3947    
3948     //IdFTP1.TransferType := ftASCII;
3949     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3950     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3951    
3952     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
3953     logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
3954     SkrivScanningLogFil(logTekst);
3955    
3956     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
3957     logTekst := 'Rute kontrol fil tjekkes.';
3958     SkrivScanningLogFil(logTekst);
3959    
3960     finally
3961     IdFTP1.Disconnect;
3962     end;
3963    
3964     except on e:exception do
3965     begin
3966     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3967     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3968     SkrivScanningLogFil(logTekst);
3969     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3970     [e.Message
3971     + CrLf + 'Host: '+IdFTP1.host
3972     + CrLf + 'Username: '+IdFTP1.Username
3973     ]
3974     );
3975     end;
3976     end;
3977     end
3978     else
3979     begin
3980     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
3981     logTekst := 'Download af kontrolfil annulleret';
3982     SkrivScanningLogFil(logTekst);
3983     end;
3984     IndlesKontrolFil(filnavn_output);
3985     end;
3986     04 : begin;
3987     end;
3988     else
3989     ShowMessage('Ukendt Bladhus sted ???') ;
3990     end;
3991    
3992     end;
3993    
3994     procedure TMainForm.SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
3995     const
3996     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3997    
3998     var
3999     testsystem : String;
4000    
4001     begin
4002     testsystem := '';
4003     if (Pos('omdeling.info',Url) = 0) then
4004     begin
4005     testsystem := 'TEST_';
4006     end;
4007     filnavn_output := testsystem + filnavn_output;
4008    
4009     ListBox1.Items.Insert(0,TimeToStr(now) + ': Sender ' + filnavn_input + ' til DAO ftp serveren.');
4010     logTekst := 'Sender ' + filnavn_input + ' til DAO ftp serveren.';
4011     SkrivScanningLogFil(logTekst);
4012     try
4013     try
4014    
4015     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4016     IdFTP1.Username:='scannerprogram'; // hvis forkert vises 'login incorrect'
4017     IdFTP1.Password:='DaoScan2015'; // hvis forkert vises 'login incorrect'
4018     IdFTP1.Connect;
4019    
4020     //IdFTP1.TransferType := ftASCII;
4021     try
4022     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4023     IdFTP1.ChangeDir('fraScannerprogram');
4024     IdFTP1.Put(filnavn_input, filnavn_output, True);
4025     except on e:EIdConnClosedGracefully do
4026     begin
4027     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4028     IdFTP1.Put(filnavn_input, filnavn_output, True);
4029     end;
4030     end;
4031     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4032    
4033     logTekst := fil_type + ' fil sendt til DAO som ' + filnavn_output + '.';
4034     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4035     SkrivScanningLogFil(logTekst);
4036    
4037     finally
4038     IdFTP1.Disconnect;
4039     end;
4040    
4041     except on e:exception do
4042     begin
4043     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4044     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4045     SkrivScanningLogFil(logTekst);
4046     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4047     [e.Message
4048     + CrLf + 'Host: '+IdFTP1.host
4049     + CrLf + 'Username: '+IdFTP1.Username
4050     ]
4051     );
4052     end;
4053     end;
4054     end;
4055    
4056     procedure TMainForm.UploadLogfilTilDAO();
4057     const
4058     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4059    
4060     var
4061     idag, imorgen : TDateTime;
4062     imorgenYmd : string;
4063     logFilnavn : string;
4064     filnavn_input : string;
4065     filnavn_output : string;
4066     buttonSelected : Integer;
4067     openDialog : TOpenDialog;
4068    
4069     begin
4070     idag := Now;
4071     imorgen := IncDay(idag, 1); //adds 1 day(s)
4072     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4073     if (FormatDateTime('hh:nn',idag) < '12:00') then
4074     begin
4075     imorgen := idag;
4076     end;
4077     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4078     logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4079     filnavn_input := logFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4080     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4081    
4082     buttonSelected := MessageDlg('Sender den aktuelle log fil (' + filnavn_input + ') til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4083     if buttonSelected = mrOK then
4084     begin
4085     SendFilTilDao('Log', filnavn_input, filnavn_output);
4086     end
4087     else
4088     begin
4089     buttonSelected := MessageDlg('Vil du sende en anden logfil til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4090     if buttonSelected = mrOK then
4091     begin
4092     // Create the open dialog object - assign to our open dialog variable
4093     openDialog := TOpenDialog.Create(self);
4094    
4095     // Set up the starting directory to be the current one
4096     openDialog.InitialDir := GetCurrentDir + '\Logs';
4097    
4098     // Only allow existing files to be selected
4099     openDialog.Options := [ofFileMustExist];
4100    
4101     // Allow only .log files to be selected
4102     openDialog.Filter := 'Log filer|*.log';
4103    
4104     // Display the open file dialog
4105     if openDialog.Execute then
4106     begin
4107     filnavn_input := openDialog.FileName; // hvis filen ikke findes vises 'no such file or directory'
4108     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4109     SendFilTilDao('Log', filnavn_input, filnavn_output);
4110     end
4111     else
4112     begin
4113     logTekst := 'Upload af log fil annulleret';
4114     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4115     SkrivScanningLogFil(logTekst);
4116     end;
4117    
4118     // Free up the dialog
4119     openDialog.Free;
4120     end
4121     else
4122     begin
4123     logTekst := 'Upload af log fil annulleret';
4124     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4125     SkrivScanningLogFil(logTekst);
4126     end;
4127     end;
4128    
4129     end;
4130    
4131     procedure TMainForm.UploadInifilTilDAO();
4132     const
4133     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4134    
4135     var
4136     idag, imorgen : TDateTime;
4137     imorgenYmd : string;
4138     iniFilnavn : string;
4139     filnavn_input : string;
4140     filnavn_output : string;
4141     buttonSelected : Integer;
4142    
4143     begin
4144     idag := Now;
4145     imorgen := IncDay(idag, 1); //adds 1 day(s)
4146     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4147     if (FormatDateTime('hh:nn',idag) < '12:00') then
4148     begin
4149     imorgen := idag;
4150     end;
4151     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4152     iniFilnavn := ChangeFileExt(ExtractFileName(ExtractFileName(ParamStr(0))), '.ini');
4153     filnavn_input := iniFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4154     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.ini';
4155    
4156     buttonSelected := MessageDlg('Sender ini filen ' + filnavn_input + ' til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4157     if buttonSelected = mrOK then
4158     begin
4159     SendFilTilDao('Ini', filnavn_input, filnavn_output);
4160     end
4161     else
4162     begin
4163     logTekst := 'Upload af ini fil annulleret';
4164     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4165     SkrivScanningLogFil(logTekst);
4166     end;
4167    
4168     end;
4169    
4170     procedure TMainForm.Uploadlogfil1Click(Sender: TObject);
4171     begin
4172     UploadLogfilTilDAO();
4173     UploadInifilTilDAO();
4174     ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4175     end;
4176    
4177 torben 2691 procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4178 torben 2645 begin
4179     DownloadBladhusKontrolfil();
4180     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4181     end;
4182    
4183 torben 2699 procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4184 torben 2645 const
4185     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4186    
4187     begin
4188     IndlesManglendeScanninger();
4189     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4190     end;
4191    
4192 torben 2696 procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4193 torben 2645 begin
4194     if (getProddag() = 'lørdag') then
4195     begin
4196     DownloadBladhusRuteskiftfil();
4197     end;
4198     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4199     end;
4200    
4201    
4202 torben 2677 // ToDo: PrintPakkeshopLabel()
4203 torben 2668 procedure TMainForm.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);
4204 torben 2677 var
4205     XForm, XFormOld: TXForm; //Bruges til rotate X-formation
4206     Angle: integer;
4207     gMode: integer;
4208     Dirigering: string;
4209    
4210 torben 2668 begin
4211     with Printer do
4212     begin
4213     BeginDoc();
4214    
4215    
4216 torben 2677 Canvas.Font.Size := 16;
4217     Canvas.TextOut(15,10, 'Code: ' + PakkeshopLabel.Tjekkode + ' ' + PakkeshopLabel.Overskrift);
4218 torben 2668
4219 torben 2677
4220    
4221     Canvas.TextOut(25, 90, PakkeshopLabel.Navn );
4222     Canvas.TextOut(25, 135, PakkeshopLabel.Vejnavn );
4223     Canvas.TextOut(25, 180, PakkeshopLabel.Postnr );
4224    
4225    
4226     Canvas.Font.Size := 9;
4227     Canvas.TextOut(110, 240, 'Pakkeshop:');
4228     Canvas.TextOut(110, 270, PakkeshopLabel.PakkeshopNavn);
4229     Canvas.TextOut(110, 300, PakkeshopLabel.PakkeshopAddr);
4230     Canvas.TextOut(110, 330, PakkeshopLabel.PakkeshopPostnr);
4231    
4232     Canvas.TextOut(350, 240, 'Afsender:');
4233     Canvas.TextOut(350, 270, PakkeshopLabel.AfsenderNavn);
4234     Canvas.TextOut(350, 300, PakkeshopLabel.AfsenderAdresse);
4235     Canvas.TextOut(350, 330, PakkeshopLabel.AfsenderPostnr);
4236    
4237     Dirigering := PakkeshopLabel.PakkeshopSted + ' | ' + PakkeshopLabel.PakkeshopTurid + ' | ' + PakkeshopLabel.PakkeshopNr;
4238     if ( PakkeshopLabel.Koreliste <> '') then
4239     begin
4240     Dirigering := Dirigering + ' > ' + PakkeshopLabel.Koreliste;
4241     end;
4242    
4243    
4244     Canvas.Font.Size := 12;
4245     Canvas.TextOut(15, 370, Dirigering);
4246    
4247    
4248    
4249    
4250    
4251     //Tegn adskillelses linier
4252     Canvas.Pen.Width := 2;
4253     //Øverste linie
4254     Canvas.MoveTo(20,80);
4255     Canvas.LineTo(600,80);
4256    
4257     // Midterste linie
4258     Canvas.MoveTo( 20, 240);
4259     Canvas.LineTo(600, 240);
4260    
4261     //Nederste linie
4262     Canvas.MoveTo( 20, 370);
4263     Canvas.LineTo(600, 370);
4264    
4265    
4266     //Tegn skrå streger over afsender
4267     Canvas.Pen.Width := 1;
4268     Canvas.MoveTo(600, 250);
4269     Canvas.LineTo(350, 360);
4270     Canvas.MoveTo(600, 360);
4271     Canvas.LineTo(350, 250);
4272    
4273    
4274    
4275    
4276     // Resten af rutinen vedr genering og placering af Barcode
4277    
4278     BarCode.BarCodeType := bcCode128;
4279     BarCode.Code128Subset := csCodeC;
4280     BarCode.Code := PakkeshopLabel.Stregkode;
4281     BarCode.Validate(True);
4282    
4283     //Start X-formation
4284     //ShowMessage( Format('%d %d', [PageWidth, PageHeight]) );
4285     GetWorldTransform(Canvas.Handle, XFormOld);
4286    
4287     Angle := 270;
4288     XForm.eM11 := Cos(DegToRad(Angle));
4289     XForm.eM12 := Sin(DegToRad(Angle));
4290     XForm.eM21 := -Sin(DegToRad(Angle));
4291     XForm.eM22 := Cos(DegToRad(Angle));
4292     XForm.eDx := 0;
4293     XForm.eDy := 0;
4294    
4295     gMode := SetGraphicsMode(Canvas.Handle, GM_ADVANCED);
4296     SetWorldTransform(Canvas.Handle, XForm);
4297    
4298     // PaintToCanvasSize arbejder i Inches
4299     // Første pos argument bliver nu Y og skal være negativ for at rykke den ned
4300     //Anden pos er X og skal være positiv for at justere ind fra venstre mod højre
4301    
4302     BarCode.PaintToCanvasSize(Printer.Canvas, -1.8, 3.3, 0.4);
4303    
4304    
4305     SetWorldTransform(Canvas.Handle, XFormOld);
4306     SetGraphicsMode(Canvas.Handle, gMode);
4307    
4308 torben 2668 EndDoc();
4309     end;
4310    
4311 torben 2677
4312 torben 2668 end;
4313    
4314 torben 2677 function GetPixelsPerInchX(): Integer;
4315     begin
4316     Result := GetDeviceCaps(Printer.Handle, LOGPIXELSX)
4317     end;
4318 torben 2668
4319 torben 2677 function GetPixelsPerInchY(): Integer;
4320     begin
4321     Result := GetDeviceCaps(Printer.Handle, LOGPIXELSY)
4322     end;
4323    
4324    
4325 torben 2645 procedure TMainForm.IndlesManglendeScanninger();
4326     var
4327     WebSvar : String;
4328     URLStr : String;
4329     StedKode : String;
4330     Node: IXMLNode;
4331     I: Integer;
4332     stregkode, modtagernavn, modtageradresse, kommentar : string;
4333     pakketype, tjekkodestatus : String;
4334     pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4335     pakketyper : TStrings;
4336     antlin : Integer;
4337 torben 2656
4338 torben 2645 antlinIdag, antlinSenere : Integer;
4339 torben 2656
4340 torben 2645 XmlFelter : TStrings;
4341    
4342     begin
4343     XmlFelter := TStringList.Create;
4344     pakketyper := TStringList.Create;
4345     linienr := 0;
4346     ListBox2.Clear;
4347     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
4348     logTekst := 'Henter oversigt over pakker der endnu ikke er modtaget';
4349     SkrivScanningLogFil(logTekst);
4350     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4351     begin
4352     StedKode := BladhusStedKode[BladhusSted];
4353     end
4354     else
4355     begin
4356     StedKode := Sted;
4357     end;
4358    
4359 torben 2656
4360 torben 2689
4361     if (Scanningtype = '7') then
4362 torben 2645 begin
4363 torben 2689 URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4364 torben 2645 end
4365 torben 2689 else if (Scanningtype = '6') then
4366     begin
4367     URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4368     end
4369 torben 2645 else if (Scanningtype = '5') then
4370     begin
4371 torben 2689 URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4372 torben 2645 end
4373     else if (Scanningtype = '1') then
4374     begin
4375     URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);
4376     end
4377     else if (Scanningtype = '4') then
4378     begin
4379     URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']); // Budleveringer
4380     end
4381     else
4382     begin
4383     exit;
4384     end;
4385     // 20150310: slut
4386    
4387     try
4388     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4389     // URLStr := string(Utf8Encode(URLStr));
4390     WebSvar := IdHTTP1.Get(URLStr);
4391     except
4392     on e:EIdConnClosedGracefully do
4393     begin
4394     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4395     WebSvar := IdHTTP1.Get(URLStr);
4396     end;
4397     on e:exception do
4398     begin
4399     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4400     logTekst := 'Fejl i web forespørgsel: '+e.Message;
4401     SkrivScanningLogFil(logTekst);
4402     raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4403     end;
4404     end;
4405     try
4406     XMLDocument1.LoadFromXML(WebSvar);
4407    
4408 torben 2656
4409 torben 2645 antlin := 0;
4410     antlinIdag := 0;
4411     antlinSenere := 0;
4412 torben 2656
4413 torben 2645 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4414     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4415     if Node.NodeType = ntElement then begin
4416     if Node.NodeName = 'Stregkode' then
4417     begin
4418     antlin := antlin + 1;
4419     // 20150306: start
4420     if not VarIsNull(Node.NodeValue) then
4421     begin
4422     if (pos('(', Node.NodeValue) = 0) then
4423     begin
4424     antlinIdag := antlinIdag + 1;
4425     end
4426     else
4427     begin
4428     antlinSenere := antlinSenere + 1;
4429     end;
4430     end;
4431     // 20150306: slut
4432     end;
4433     end;
4434     if (XmlFelter.values[Node.NodeName] <> '') then
4435     XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)
4436     else
4437     XmlFelter.values[Node.NodeName] := '1';
4438    
4439     end;
4440     antalLiniefelter := XmlFelter.Count;
4441     antalFelterFundet := 0;
4442     SetLength(stregkoderMedTjekkodeArray, 0); // reset fra tidligere brug
4443     SetLength(stregkoderMedTjekkodeArray, antlin); // sæt antal elementer i array
4444 torben 2656
4445 torben 2645 logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4446     if (antlinSenere > 0) then
4447     begin
4448     logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4449     end;
4450     logTekst := logTekst + '.';
4451 torben 2656
4452 torben 2645 SkrivScanningLogFil(logTekst);
4453     for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4454     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4455     if Node.NodeType = ntElement then begin
4456     if Node.NodeName = 'Stregkode' then begin
4457     if not VarIsNull(Node.NodeValue) then
4458     stregkode := Node.NodeValue;
4459     antalFelterFundet := antalFelterFundet + 1;
4460     end;
4461     if Node.NodeName = 'ModtagerNavn' then begin
4462     if not VarIsNull(Node.NodeValue) then
4463     modtagernavn := Node.NodeValue;
4464     antalFelterFundet := antalFelterFundet + 1;
4465     end;
4466     if Node.NodeName = 'ModtagerAdresse' then begin
4467     if not VarIsNull(Node.NodeValue) then
4468     modtageradresse := Node.NodeValue;
4469     antalFelterFundet := antalFelterFundet + 1;
4470     end;
4471     if Node.NodeName = 'Kommentar' then begin
4472     if not VarIsNull(Node.NodeValue) then
4473     kommentar := Node.NodeValue;
4474     antalFelterFundet := antalFelterFundet + 1;
4475     end;
4476     if Node.NodeName = 'PakkeType' then begin
4477     if not VarIsNull(Node.NodeValue) then
4478     pakketype := Node.NodeValue;
4479     antalFelterFundet := antalFelterFundet + 1;
4480     if (pakketyper.values[pakketype] <> '') then
4481     pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)
4482     else
4483     pakketyper.values[pakketype] := '1';
4484     end;
4485     if Node.NodeName = 'TjekkodeStatus' then begin
4486     if not VarIsNull(Node.NodeValue) then
4487     tjekkodestatus := Node.NodeValue;
4488     antalFelterFundet := antalFelterFundet + 1;
4489     if (tjekkodestatus = '-1') then
4490     begin
4491     // 20150306: start
4492     // stregkoderMedTjekkodeArray[linienr] := stregkode;
4493     if (pos(' ', stregkode) > 0) then
4494     begin
4495 torben 2682 stregkoderMedTjekkodeArray[linienr] := TUtils.split(stregkode, ' ', 2); // Fjerner lige en evt. fremtidig dato fra feltet
4496 torben 2645 end
4497     else
4498     begin
4499     stregkoderMedTjekkodeArray[linienr] := stregkode;
4500     end;
4501 torben 2656 linienr := linienr + 1;
4502 torben 2645 end;
4503     end;
4504     if antalFelterFundet = antalLiniefelter then
4505     begin
4506     if (ScanningType = '1') then
4507     ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4508     else if (ScanningType = '4') then
4509     ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
4510     else if (ScanningType = '5') then
4511     ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4512     else
4513     ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar);
4514     antalFelterFundet := 0;
4515     tjekkodestatus := '';
4516     end;
4517     end;
4518     end;
4519     for pakketypeix := 0 to pakketyper.Count-1 do
4520     begin
4521     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');
4522     end;
4523    
4524     // Free up the list object
4525     pakketyper.Free;
4526     // ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
4527     logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4528     if (antlinSenere > 0) then
4529     begin
4530     logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4531     end;
4532     logTekst := logTekst + '.';
4533     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4534     if (antlinSenere > 0) then
4535     begin
4536     StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
4537     end
4538     else
4539     begin
4540     StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4541     end;
4542    
4543     if (Scanningtype = '1') then
4544     begin
4545     //antlinIdag := 9876; // til test af boksens udseende ved stort tal
4546     PanelManglendePakker1.Caption := IntToStr(antlinIdag + antlinSenere);
4547     if (antlinIdag + antlinSenere > 0) then
4548     begin
4549     PanelManglendePakker1.Visible := true;
4550     end
4551     else
4552     begin
4553     PanelManglendePakker1.Visible := false;
4554     end;
4555     end;
4556    
4557     if (Scanningtype = '2') then
4558     begin
4559     PanelManglendePakker2.Caption := IntToStr(antlinIdag + antlinSenere);
4560     if (antlinIdag + antlinSenere > 0) then
4561     begin
4562     PanelManglendePakker2.Visible := true;
4563     end
4564     else
4565     begin
4566     PanelManglendePakker2.Visible := false;
4567     end;
4568     end;
4569    
4570     if (Scanningtype = '3') then
4571     begin
4572     PanelManglendePakker3.Caption := IntToStr(antlinIdag + antlinSenere);
4573     if (antlinIdag + antlinSenere > 0) then
4574     begin
4575     PanelManglendePakker3.Visible := true;
4576     end
4577     else
4578     begin
4579     PanelManglendePakker3.Visible := false;
4580     end;
4581     end;
4582    
4583     if (Scanningtype = '4') then
4584     begin
4585     PanelManglendePakker4.Caption := IntToStr(antlinIdag + antlinSenere);
4586     if (antlinIdag + antlinSenere > 0) then
4587     begin
4588     PanelManglendePakker4.Visible := true;
4589     end
4590     else
4591     begin
4592     PanelManglendePakker4.Visible := false;
4593     end;
4594     end;
4595    
4596     if (Scanningtype = '5') then
4597     begin
4598     PanelManglendePakker5.Caption := IntToStr(antlinIdag + antlinSenere);
4599     if (antlinIdag + antlinSenere > 0) then
4600     begin
4601     PanelManglendePakker5.Visible := true;
4602     end
4603     else
4604     begin
4605     PanelManglendePakker5.Visible := false;
4606     end;
4607     end;
4608    
4609     if (Scanningtype = '6') then
4610     begin
4611     PanelManglendePakker6.Caption := IntToStr(antlinIdag + antlinSenere);
4612     if (antlinIdag + antlinSenere > 0) then
4613     begin
4614     PanelManglendePakker6.Visible := true;
4615     end
4616     else
4617     begin
4618     PanelManglendePakker6.Visible := false;
4619     end;
4620     end;
4621    
4622     except on e:exception do
4623     begin
4624     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4625     logTekst := 'Fejl i XML-format: '+e.Message;
4626     SkrivScanningLogFil(logTekst);
4627     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4628     end;
4629     end;
4630    
4631     end;
4632    
4633     procedure TMainForm.IndlesScanningLogFil();
4634     var
4635     SomeTxtFile : TextFile;
4636     buffer : string;
4637     S: string;
4638     idag, imorgen : TDateTime;
4639     imorgenYmd : string;
4640     logFilnavn : string;
4641    
4642     begin
4643     idag := Now;
4644     imorgen := IncDay(idag, 1); //adds 1 day(s)
4645     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4646     if (FormatDateTime('hh:nn',idag) < '12:00') then
4647     begin
4648     imorgen := idag;
4649     end;
4650     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4651     logFilnavn := 'Logs/Scanning' + imorgenYmd + '.log';
4652     if FileExists(logFilnavn) then
4653     begin
4654     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæses.');
4655     logTekst := logFilnavn+' indlæses.';
4656     SkrivScanningLogFil(logTekst);
4657     AssignFile(SomeTxtFile, logFilnavn);
4658     try
4659     Reset(SomeTxtFile);
4660     while not EOF(SomeTxtFile) do
4661     begin
4662     ReadLn(SomeTxtFile, buffer) ;
4663     S := buffer;
4664     ListBox1.Items.Insert(0, S);
4665     end;
4666     finally
4667     CloseFile(SomeTxtFile);
4668     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæst.');
4669     ListBox1.Items.Insert(0,'');
4670     ListBox1.Items.Insert(0,'');
4671     ListBox1.Items.Insert(0,'');
4672     ListBox1.Items.Insert(0,'');
4673     ListBox1.Items.Insert(0,'');
4674     ListBox1.Items.Insert(0,'');
4675     end;
4676     end;
4677     end;
4678    
4679     procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4680     var
4681     SomeTxtFile : TextFile;
4682     idag, imorgen : TDateTime;
4683     imorgenYmd : string;
4684     logFilnavn : string;
4685 torben 2677 //error : Integer;
4686 torben 2645
4687     begin
4688     if (SkrivLog = '1') then
4689     begin
4690     idag := Now;
4691     imorgen := IncDay(idag, 1); //adds 1 day(s)
4692     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4693     if (FormatDateTime('hh:nn',idag) < '12:00') then
4694     begin
4695     imorgen := idag;
4696     end;
4697     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4698     logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4699     // Get the current directory
4700     // dir := GetCurrentDir;
4701     // ShowMessage('Current directory = '+dir);
4702     // logFilnavn := dir + '\Logs\' + 'Scanning' + imorgenYmd + '.log';
4703     // ShowMessage('logFilnavn = '+logFilnavn);
4704    
4705     if not DirectoryExists('Logs') then
4706     begin
4707     CreateDir('Logs');
4708     end;
4709    
4710     AssignFile(SomeTxtFile, logFilnavn);
4711     if FileExists(logFilnavn) then
4712     begin
4713     try
4714     try
4715     Append(SomeTxtFile);
4716     WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
4717     except on e:exception do
4718     //ShowMessageFmt('File create failed with error %d',[error]);
4719     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke skrive til log filen...');
4720     end;
4721     finally
4722     CloseFile(SomeTxtFile);
4723     end;
4724     end
4725     else
4726     begin
4727     try
4728     try
4729     ReWrite(SomeTxtFile);
4730     WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
4731     except on e:exception do
4732     // ShowMessageFmt('File create failed with error %d',[error]);
4733     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke oprette/skrive til log filen...');
4734     end;
4735     finally
4736     CloseFile(SomeTxtFile);
4737     end;
4738     end;
4739     end;
4740     end;
4741    
4742     procedure TMainForm.IndlesRuteskiftFil(var filnavn : string);
4743     var
4744     SomeTxtFile : TextFile;
4745     buffer : string;
4746     linnr : integer;
4747     S: string;
4748     A: TStrArray;
4749     idag, imorgen : TDateTime;
4750     imorgenYmd : string;
4751    
4752     begin
4753     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
4754     logTekst := filnavn+' indlæses.';
4755     SkrivScanningLogFil(logTekst);
4756     SetLength(ruteHverdagArray, 1);
4757     SetLength(ruteLordagArray, 1);
4758     idag := Now;
4759     imorgen := IncDay(idag, 1); //adds 1 day(s)
4760     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4761     if (FormatDateTime('hh:nn',idag) < '12:00') then
4762     begin
4763     imorgen := idag;
4764     end;
4765     imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
4766     if FileExists(filnavn) then
4767     begin
4768     AssignFile(SomeTxtFile, filnavn);
4769     linnr := 0;
4770     try
4771     Reset(SomeTxtFile);
4772     while not EOF(SomeTxtFile) do
4773     begin
4774     ReadLn(SomeTxtFile, buffer) ;
4775     S := buffer;
4776     SetLength(A,0);
4777 torben 2682 TUtils.Explode(A, ';', S);
4778 torben 2645 if (length(A) < 2) then
4779     begin
4780 torben 2682 TUtils.Explode(A, ',', S);
4781 torben 2645 end;
4782     if (length(A) > 1) then
4783     begin
4784     SetLength(ruteHverdagArray, linnr+1);
4785     SetLength(ruteLordagArray, linnr+1);
4786     ruteHverdagArray[linnr] := A[0];
4787     ruteLordagArray[linnr] := A[1];
4788     linnr := linnr+1;
4789     end;
4790     end;
4791     finally
4792     //ShowMessage(IntToStr(length(A)));
4793     CloseFile(SomeTxtFile);
4794     //ShowMessage(IntToStr(length(ruteHverdagArray)));
4795     if (linnr > 0) then
4796     begin
4797     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
4798     logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
4799     SkrivScanningLogFil(logTekst);
4800     end
4801     else
4802     begin
4803     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4804     logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4805     SkrivScanningLogFil(logTekst);
4806     PlaySound(PWideChar(AlarmLyd));
4807     end;
4808     end;
4809     end
4810     else
4811     begin
4812     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
4813     logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
4814     SkrivScanningLogFil(logTekst);
4815     PlaySound(PWideChar(AlarmLyd));
4816     end;
4817     end;
4818    
4819     procedure TMainForm.IndlesKontrolFil(var filnavn : string);
4820     var
4821     SomeTxtFile : TextFile;
4822     buffer : string;
4823     linnr : integer;
4824     S: string;
4825     A: TStrArray;
4826     idag, imorgen : TDateTime;
4827     imorgenYmd : string;
4828    
4829     begin
4830     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
4831     logTekst := filnavn+' indlæses.';
4832     SkrivScanningLogFil(logTekst);
4833     SetLength(ruteArray, 1);
4834     SetLength(korelisteArray, 1);
4835     idag := Now;
4836     imorgen := IncDay(idag, 1); //adds 1 day(s)
4837     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4838     if (FormatDateTime('hh:nn',idag) < '12:00') then
4839     begin
4840     imorgen := idag;
4841     end;
4842     imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
4843     if FileExists(filnavn) then
4844     begin
4845     AssignFile(SomeTxtFile, filnavn);
4846     linnr := 0;
4847     try
4848     Reset(SomeTxtFile);
4849     while not EOF(SomeTxtFile) do
4850     begin
4851     ReadLn(SomeTxtFile, buffer) ;
4852     S := buffer;
4853     SetLength(A,0);
4854 torben 2682 TUtils.Explode(A, ';', S);
4855 torben 2645 if (length(A) < 3) then
4856     begin
4857 torben 2682 TUtils.Explode(A, ',', S);
4858 torben 2645 end;
4859     if (A[0]=imorgenYmd) then
4860     begin
4861     if (length(A) > 2) then
4862     begin
4863     SetLength(ruteArray, linnr+1);
4864     SetLength(korelisteArray, linnr+1);
4865     ruteArray[linnr] := A[1];
4866     korelisteArray[linnr] := A[2];
4867     linnr := linnr+1;
4868     end;
4869     end;
4870     end;
4871     finally
4872     //ShowMessage(IntToStr(length(A)));
4873     CloseFile(SomeTxtFile);
4874     //ShowMessage(IntToStr(length(ruteArray)));
4875     if (linnr > 0) then
4876     begin
4877     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
4878     logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
4879     SkrivScanningLogFil(logTekst);
4880     end
4881     else
4882     begin
4883     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4884     logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4885     SkrivScanningLogFil(logTekst);
4886     PlaySound(PWideChar(AlarmLyd));
4887     end;
4888     end;
4889     end
4890     else
4891     begin
4892     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
4893     logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
4894     SkrivScanningLogFil(logTekst);
4895     PlaySound(PWideChar(AlarmLyd));
4896     end;
4897     end;
4898    
4899     //
4900     // Bladhus ***
4901     //
4902     function TMainForm.TjekKoreliste(var RuteNummer, Koreliste : string) : string;
4903     var
4904     i : Integer;
4905     svar : String;
4906    
4907     begin
4908     //ShowMessage('Køreliste 1: '+korelisteArray[0]);
4909     // ShowMessage('Kontrollerer rute ' + RuteNummer + ' og køreliste ' + Koreliste + ' i kontrolfilen');
4910     // NB. Der er rod i begreberne RuteNummer og Koreliste - nogle steder er de byttet rundt!
4911     //ShowMessage('Kontrollerer rute ' + Koreliste + ' og køreliste ' + RuteNummer + ' i kontrolfilen');
4912    
4913     svar := 'Køreliste ikke i kontrolfil';
4914     case BladhusSted of
4915     01 :
4916     begin;
4917     for i := 0 to length(ruteArray)-1 do
4918     begin
4919     if (Koreliste=ruteArray[i]) then
4920     begin
4921     svar := korelisteArray[i]; // returnerer den forventede køreliste
4922     end;
4923     end;
4924     end;
4925     // 02 : begin;
4926     //ShowMessage('02') ;
4927     // end;
4928     03 : begin;
4929     for i := 0 to length(ruteArray)-1 do
4930     begin
4931     if (Koreliste=ruteArray[i]) then
4932     begin
4933     svar := korelisteArray[i]; // returnerer den forventede køreliste
4934     end;
4935     end;
4936     end;
4937     // 04 : begin;
4938     //ShowMessage('04') ;
4939     // end;
4940     else
4941     svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
4942     end;
4943     if (RuteNummer = 'Rutenr') then // fra printertest funktionen
4944     svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
4945    
4946     result := svar;
4947     end;
4948    
4949 torben 2659 procedure TMainForm.VisAlarmSkaerm(strMessage: string);
4950 torben 2657 begin
4951     //ShowMessage('Ændring ikke tilladt');
4952     // Her skal komme en 'rød skærm' alarm
4953     PlaySound(PWideChar(AlarmLyd));
4954 torben 2662 MainForm.Color := clRed;
4955 torben 2659
4956 torben 2662
4957 torben 2657 RuteNummerST.Caption := '';
4958     BoghandlerNavnST.Caption := '';
4959 torben 2668 btnNulstil.Visible := true;
4960 torben 2662
4961     if (strMessage <> '') then
4962     begin
4963     ListBox1.Items.Insert(0, strMessage);
4964     KommentarST.Caption := strMessage;
4965     end;
4966    
4967 torben 2657 end;
4968    
4969 torben 2645 function TMainForm.getProddato() : TDate;
4970     var
4971     idag, imorgen : TDateTime;
4972     imorgenYmd : string;
4973    
4974     begin
4975     idag := Now;
4976     imorgen := IncDay(idag, 1); //adds 1 day(s)
4977     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4978     if (FormatDateTime('hh:nn',idag) < '12:00') then
4979     begin
4980     imorgen := idag;
4981     end;
4982     imorgenYmd := FormatDateTime('dd-mm-yyyy',imorgen);
4983     result := StrToDateTime(imorgenYmd);
4984     end;
4985    
4986     function TMainForm.getProddag() : String;
4987     begin
4988     // ShowMessage(LongDayNames[DayOfWeek(getProddato())]);
4989 torben 2650 result := FormatSettings.LongDayNames[DayOfWeek(getProddato())];
4990 torben 2645 //result := 'lørdag'; // MENS VI TESTER kan vi fremtvinge lørdag situation her
4991     end;
4992    
4993     function TMainForm.retRutenummer(rutenummer : String) : String;
4994     var
4995     i : Integer;
4996     svar : String;
4997    
4998     begin
4999     svar := rutenummer;
5000     case BladhusSted of
5001     01 :
5002     begin;
5003     //ShowMessage('01') ;
5004     end;
5005     // 02 : begin;
5006     //ShowMessage('02') ;
5007     // end;
5008     03 : begin;
5009     for i := 0 to length(ruteHverdagArray)-1 do
5010     begin
5011     if (rutenummer=ruteHverdagArray[i]) then
5012     begin
5013     svar := ruteLordagArray[i]; // returnerer den forventede lørdagsrute
5014     end;
5015     end;
5016     end;
5017     // 04 : begin;
5018     //ShowMessage('04') ;
5019     // end;
5020     else
5021     svar := rutenummer; // Dette svarer til at rute ikke skal ændres
5022     end;
5023     result := svar;
5024     end;
5025    
5026     function TMainForm.GetCurrentPrinterHandle: THandle;
5027     var
5028     Device, Driver, Port: array[0..255] of Char;
5029     hDeviceMode: THandle;
5030     begin
5031     Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
5032     if not OpenPrinter(@Device, Result, nil) then
5033     RaiseLastWin32Error;
5034     end;
5035    
5036     function TMainForm.SavePChar(p: PChar): PChar;
5037     const
5038     error: PChar = 'Nil';
5039     begin
5040     if not Assigned(p) then
5041     Result := error
5042     else
5043     Result := p;
5044     end;
5045    
5046     procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
5047     begin
5048     if Scanogstjekkoden1.Checked then
5049     begin
5050 torben 2654 chkScanTjekkode.Checked := true;
5051 torben 2645 end
5052     else
5053     begin
5054 torben 2654 chkScanTjekkode.Checked := false;
5055 torben 2645 end;
5056     end;
5057    
5058    
5059 torben 2668
5060 torben 2685
5061 torben 2668
5062    
5063    
5064 torben 2645 procedure TMainForm.CheckPrintQue(tjektype : string);
5065     type
5066     TJobs = array [0..1000] of JOB_INFO_1;
5067     PJobs = ^TJobs;
5068     var
5069     hPrinter: THandle;
5070     bytesNeeded, numJobs, i: Cardinal;
5071     pJ: PJobs;
5072     printerTxt, statusTxt, dokumentTxt: String;
5073     begin
5074    
5075     // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1
5076     // 'Test' skal vise alarmlinie, samt opdatere listbox1
5077     // 'Timer' skal kun vise alarmlinie
5078    
5079     if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then
5080     begin
5081     printerTxt := 'Der er fravalgt printer i dette program';
5082     ListBox1.Items.Insert(0,printerTxt);
5083     SkrivScanningLogFil(printerTxt);
5084     end
5085     else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then
5086     begin
5087     printerTxt := 'Der er ikke installeret en printer på denne PC';
5088     ListBox1.Items.Insert(0,printerTxt);
5089     SkrivScanningLogFil(printerTxt);
5090     end
5091     else
5092     begin
5093     hPrinter := GetCurrentPrinterHandle;
5094     try
5095     EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);
5096     pJ := AllocMem(bytesNeeded);
5097     if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then
5098     RaiseLastWin32Error;
5099    
5100     if numJobs = 0 then
5101     begin
5102     if (tjektype = 'Test') then
5103     begin
5104     logTekst := printerTxt + ': Ingen dokumenter i kø';
5105     ListBox1.Items.Insert(0,logTekst);
5106     SkrivScanningLogFil(logTekst);
5107     end;
5108     PrinterstatusStaticText1.Caption := '';
5109     PrinterstatusStaticText1.Color := MainForm.Color;
5110     end
5111     else // så er der kø til printeren
5112     begin
5113     printerTxt := SavePChar(pJ^[0].pPrinterName);
5114     if (tjektype = 'Opstart') or (tjektype = 'Test') then
5115     begin
5116     logTekst := IntToStr(numJobs) + ' dokument(er) i kø til printer: ' + printerTxt;
5117     ListBox1.Items.Insert(0,logTekst);
5118     SkrivScanningLogFil(logTekst);
5119     end;
5120     for i := 0 to Pred(numJobs) do
5121     begin
5122     printerTxt := SavePChar(pJ^[i].pPrinterName);
5123     statusTxt := 'Ukendt';
5124     if (IntToStr(pJ^[i].Status) = '0') then
5125     statusTxt := 'Venter...';
5126     if (IntToStr(pJ^[i].Status) = '4096') then
5127     statusTxt := 'Printer...';
5128     if (IntToStr(pJ^[i].Status) = '8210') then
5129     statusTxt := 'Printerfejl';
5130     if (IntToStr(pJ^[i].Status) = '8214') then
5131     statusTxt := 'Sletter print...';
5132    
5133     dokumentTxt := SavePChar(pJ^[i].pDocument);
5134     if (dokumentTxt = '') then
5135     dokumentTxt := 'Uden navn';
5136    
5137     if (tjektype = 'Opstart') or (tjektype = 'Test') then
5138     begin
5139     logTekst := Format('Printer %s, Dokument %d: %s, Status (%d): %s',
5140     [printerTxt, i+1, dokumentTxt, pJ^[i].Status, statusTxt]);
5141     ListBox1.Items.Insert(0,logTekst);
5142     SkrivScanningLogFil(logTekst);
5143     end;
5144    
5145     if (i = 0) then
5146     begin
5147     PrinterstatusStaticText1.Caption := printerTxt + ': ' + IntToStr(numJobs) + ' dokument(er) in kø. Dokument status: ' + statusTxt;
5148     PrinterstatusStaticText1.Font.Color := clBlack;
5149     PrinterstatusStaticText1.Color := MainForm.Color;
5150     PrinterstatusStaticText1.Transparent := True;
5151     if (numJobs > 3) then
5152     begin
5153     PrinterstatusStaticText1.Font.Color := clRed;
5154     PrinterstatusStaticText1.Color := clWhite;
5155     PrinterstatusStaticText1.Transparent := true;
5156     end;
5157     end;
5158    
5159     end;
5160     end
5161     finally
5162     ClosePrinter(hPrinter);
5163     end;
5164     end;
5165     end;
5166    
5167    
5168     end.
5169    

  ViewVC Help
Powered by ViewVC 1.1.20