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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20