--- dao/DelphiScanner/Main.pas 2016/08/19 12:28:21 3093 +++ dao/DelphiScanner/Main.pas 2016/10/20 06:56:45 3130 @@ -20,7 +20,7 @@ IdExplicitTLSClientServerBase, IdFTP, IdException, ShellApi, ClipBrd, Buttons, wininet, UITypes, - PakkeshopLabels, + LabelData, Utils, ParentForm, LabelPrint, @@ -202,6 +202,9 @@ procedure LogMessage( msg : string); procedure SetPrinterstatusText( txt: string; alert: boolean); function GetFormObject() : TForm; + function GetXMLDocument() : TXMLDocument; + procedure chkEmballageRepareretClick(Sender: TObject); + procedure chkUdenforSpecifikationClick(Sender: TObject); @@ -244,7 +247,8 @@ procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = ''); procedure CheckCode(); - procedure IndlesManglendeScanninger(); + procedure IndlesManglendeScanningerAntal(); + procedure IndlesManglendeScanningerListe(); procedure IndlesRuteskiftFil(var filnavn : string); procedure IndlesKontrolFil(var filnavn : string); procedure IndlesScanningLogFil(); @@ -538,7 +542,7 @@ // Sætter lige en default panel størrelse MainForm.ClientWidth := 1000; - MainForm.ClientHeight := 820; + MainForm.ClientHeight := 920; Config := TConfiguration.Create(); Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) ); //ToDo: clean up duplicate ini ref @@ -969,41 +973,43 @@ // Opbygger PanelManglendePakker information gemScanningtype := Scanningtype; - if PanelValg6.Enabled then - begin - Scanningtype := '6'; - IndlesManglendeScanninger(); - end; - - if PanelValg5.Enabled then - begin - Scanningtype := '5'; - IndlesManglendeScanninger(); - end; - - if PanelValg4.Enabled then - begin - Scanningtype := '4'; - IndlesManglendeScanninger(); - end; - - if PanelValg3.Enabled then - begin - Scanningtype := '3'; - IndlesManglendeScanninger(); - end; + IndlesManglendeScanningerAntal(); - if PanelValg2.Enabled then - begin - Scanningtype := '2'; - IndlesManglendeScanninger(); - end; - - if PanelValg1.Enabled then - begin - Scanningtype := '1'; - IndlesManglendeScanninger(); - end; +// if PanelValg6.Enabled then +// begin +// Scanningtype := '6'; +// IndlesManglendeScanningerAntal(); +// end; +// +// if PanelValg5.Enabled then +// begin +// Scanningtype := '5'; +// IndlesManglendeScanningerAntal(); +// end; +// +// if PanelValg4.Enabled then +// begin +// Scanningtype := '4'; +// IndlesManglendeScanningerAntal(); +// end; +// +// if PanelValg3.Enabled then +// begin +// Scanningtype := '3'; +// IndlesManglendeScanningerAntal(); +// end; +// +// if PanelValg2.Enabled then +// begin +// Scanningtype := '2'; +// IndlesManglendeScanningerAntal(); +// end; +// +// if PanelValg1.Enabled then +// begin +// Scanningtype := '1'; +// IndlesManglendeScanningerAntal(); +// end; Scanningtype := gemScanningtype; @@ -1429,6 +1435,41 @@ end; end; + // EmballageRepareret skal bare sætte reklamationkoden, + // og så ellers fortsætte med scanning som normalt + if (chkEmballageRepareret.Checked = True) then + begin + URLStr := Format(Config.UrlEmballageRepareret,[Sted,Stregkode]); + WebSvar := IdHTTP1.Get(URLStr); + + chkEmballageRepareret.Checked := False; + end; + + if (chkUdenforSpecifikation.Checked = True) then + begin + URLStr := Format(Config.URLUdenforSpecifikation,[Sted,Stregkode]); + //InputBox( '1', '1', URLStr); + + WebSvar := IdHTTP1.Get(URLStr); + //InputBox( '2', '2', WebSvar ); + + chkUdenforSpecifikation.Checked := False; + LabelPrint.PrintLabel(Stregkode); + + StregkodeST.Caption := ''; + Stregkode := ''; + + RuteNummerST.Caption := ''; + BoghandlerNavnST.Caption := ''; + KommentarST.Caption := 'Retur til leverandør'; + + + + + exit; //leave procedure + end; + + if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then @@ -1533,7 +1574,7 @@ exit; end; - if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked) then + if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked) then begin PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel); pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn); @@ -1867,7 +1908,7 @@ BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt'; BladhusKontrolfil_lokal := 'RuteKontrol.txt'; DownloadBladhusKontrolfil(); - IndlesManglendeScanninger(); + IndlesManglendeScanningerAntal(); end; 02 : begin; // BK @@ -1880,7 +1921,7 @@ BtnOpdaterListen.Enabled := true; IdFTP1.Passive := true; IdFTP1.PassiveUseControlHost := true; - IndlesManglendeScanninger(); + IndlesManglendeScanningerAntal(); end; 03 : begin; // FD @@ -1906,7 +1947,7 @@ BladhusKontrolfil_server := 'frafd/RuteKontrol.txt'; BladhusKontrolfil_lokal := 'RuteKontrol.txt'; DownloadBladhusKontrolfil(); - IndlesManglendeScanninger(); + IndlesManglendeScanningerAntal(); end; 04 : begin; // DBK Testprinter1.Visible := true; @@ -1932,7 +1973,7 @@ pakkestorrelse : String; PrintNyLabelInteger : Integer; - PakkeshopLabel: TPakkeshopLabel; + PakkeshopLabel: TLabelData; begin if radioStorPakke.Checked then begin @@ -2018,18 +2059,16 @@ BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text; PrintNyLabel := False; - if menuPakkeshop1.Checked then + try + PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text); + except on e:exception do + PrintNyLabelInteger := 0; + end; + if (PrintNyLabelInteger = 1) then begin - try - PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text); - except on e:exception do - PrintNyLabelInteger := 0; - end; - if (PrintNyLabelInteger = 1) then - begin - PrintNyLabel := True; - end; + PrintNyLabel := True; end; + end else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then begin @@ -2041,12 +2080,14 @@ if (Kommentar = 'Ok') then begin PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label - PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc + PakkeshopLabel := TLabelData.Create( XMLDocument1 ); //Opret struct og parse xml doc RuteNummer := PakkeshopLabel.Koreliste + ' -> ' + PakkeshopLabel.PakkeshopTurid; Stregkode := PakkeshopLabel.Stregkode; - LabelPrint.PrintFuldPakkeLabel( PakkeshopLabel ); - chkForstorTilDirekte.Checked := false; + LabelPrint.PrintLabel(PakkeshopLabel.Stregkode); + +// LabelPrint.PrintFuldPakkeLabel( PakkeshopLabel ); +// chkForstorTilDirekte.Checked := false; end; @@ -2198,6 +2239,13 @@ kontrolKoreliste : string; nytRuteNummer, nyFarve : String; begin +// if (PrintNyLabel = True OR chkAltidPrintLabel.Checked = True) then +// begin +// LabelPrint.PrintLabel( Stregkode ); +// end; +// +// exit; + if menuDaoDirekte1.Checked then RuteNummerST.Color := TUtils.HexToTColor(Farve); @@ -2262,10 +2310,10 @@ logTekst := RightStr(List1Msg, Length(List1Msg)-10); SkrivScanningLogFil(logTekst); - if (Config.PrinterNavn = 'Ingen') then - begin - PrintNyLabel := false; - end; +// if (Config.PrinterNavn = 'Ingen') then +// begin +// PrintNyLabel := false; +// end; if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm begin @@ -2317,7 +2365,8 @@ if PrintNyLabel or (RuteNummer = 'Rutenr') then // 20150304: slut begin - LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); + //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); + LabelPrint.PrintLabel( Stregkode ); end; end; 01 : begin; @@ -2325,13 +2374,15 @@ // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr') begin - LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); + //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); + LabelPrint.PrintLabel( Stregkode ); end; end; 02 : begin; if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test begin - LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); + //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); + LabelPrint.PrintLabel( Stregkode ); end; end; 03 : begin; @@ -2339,17 +2390,17 @@ // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr') begin - LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); + //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); + LabelPrint.PrintLabel( Stregkode ); end; end; 04 : begin; if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test begin - LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); + //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); + LabelPrint.PrintLabel( Stregkode ); end; end; - else - ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted)); end; end; @@ -2382,8 +2433,18 @@ logTekst := logTekst + ' for '+BoghandlerNavn; SkrivScanningLogFil(logTekst); - LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ; - + //LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ; + LabelPrint.PrintLabel( Stregkode ); + + end; + end; + + // tilføjet 20161020 + if (menuPakkeshop1.Checked OR menuPakkeshopRetur1.Checked) then + begin + if (PrintNyLabel = True OR chkAltidPrintLabel.Checked = True) then + begin + LabelPrint.PrintLabel( Stregkode ); end; end; @@ -2417,6 +2478,22 @@ end; +procedure TMainForm.chkUdenforSpecifikationClick(Sender: TObject); +begin + if (chkUdenforSpecifikation.Checked = true) then + begin + chkEmballageRepareret.Checked := false; + end; +end; + +procedure TMainForm.chkEmballageRepareretClick(Sender: TObject); +begin + if (chkEmballageRepareret.Checked = true) then + begin + chkUdenforSpecifikation.Checked := false; + end; +end; + procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject); begin if chkAltidPrintLabel.Checked then @@ -2430,6 +2507,8 @@ end; + + procedure TMainForm.chkScanTjekkodeClick(Sender: TObject); begin if chkScanTjekkode.Checked then @@ -2814,6 +2893,8 @@ SmsKode := '999999'; DBKbane := '999'; Leveringssted := 'XXX'; + + PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk); FocusControl(StregkodeST); end; @@ -2827,33 +2908,37 @@ Kommentar : String; BoghandlerNavn : String; Koreliste : String; - Falsk : Boolean; - SmsKode : String; - DBKbane : String; - Leveringssted : String; +// Falsk : Boolean; +// SmsKode : String; +// DBKbane : String; +// Leveringssted : String; begin RuteNummer := 'Rutenr'; Kommentar := '***** Kommentar *****'; BoghandlerNavn := 'Modtagernavn'; - Falsk := False; +// Falsk := False; if (LabelPrint.GetPrinterCount() = 0) then begin ShowMessage('Der er ikke installeret en printer på denne PC.'); end - else if Config.PrinterNavn = 'Ingen' then - begin - ShowMessage('Der er fravalgt printer i dette program.'); - end +// else if Config.PrinterNavn = 'Ingen' then //Det giver ikke længere mening at kunne fravælge printer +// begin +// ShowMessage('Der er fravalgt printer i dette program.'); +// end else begin UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, ''); - SmsKode := '999999'; - DBKbane := '999'; - Leveringssted := 'XXX'; - PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk); +// SmsKode := '999999'; +// DBKbane := '999'; +// Leveringssted := 'XXX'; +// PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk); + + LabelPrint.PrintTestLabel(); + LabelPrint.CheckPrintQue('Test', Config.PrinterNavn); + end; FocusControl(StregkodeST); end; @@ -3084,7 +3169,7 @@ if BladhusSted = 0 then begin IndlesScanningLogFil(); - IndlesManglendeScanninger(); + IndlesManglendeScanningerAntal(); end; end; @@ -3184,7 +3269,7 @@ if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then begin IndlesScanningLogFil(); - IndlesManglendeScanninger(); + IndlesManglendeScanningerAntal(); end; end; @@ -3223,7 +3308,7 @@ IndlesScanningLogFil(); if BladhusSted = 0 then begin - IndlesManglendeScanninger(); + IndlesManglendeScanningerAntal(); end; IdFTP1.Passive := true; IdFTP1.PassiveUseControlHost := true; @@ -3263,7 +3348,7 @@ IndlesScanningLogFil(); if BladhusSted = 0 then begin - IndlesManglendeScanninger(); + IndlesManglendeScanningerAntal(); end; IdFTP1.Passive := true; IdFTP1.PassiveUseControlHost := true; @@ -3315,7 +3400,7 @@ IndlesScanningLogFil(); if BladhusSted = 0 then begin - IndlesManglendeScanninger(); + IndlesManglendeScanningerAntal(); end; IdFTP1.Passive := true; IdFTP1.PassiveUseControlHost := true; @@ -4029,7 +4114,7 @@ crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed begin - IndlesManglendeScanninger(); + IndlesManglendeScanningerListe(); ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode end; @@ -4043,8 +4128,118 @@ end; +procedure TMainForm.IndlesManglendeScanningerAntal(); +var + Node: IXMLNode; + + URLStr : String; + StedKode : String; + WebSvar : String; + + i : Integer; + + PakkeType : String; + TotalAntal : String; + AntalProdDato : String; + + CurrentPanel : TPanel; + +begin + ListBox2.Clear(); + + if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then + begin + StedKode := BladhusStedKode[BladhusSted]; + end + else + begin + StedKode := Sted; + end; + + URLStr := Format(Config.UrlHentPakkeAntal, [StedKode]); + + + try + WebSvar := IdHTTP1.Get(URLStr); + except + on e:EIdConnClosedGracefully do + begin + // Her skal vi ikke gøre noget - men vi skal forespørge igen + WebSvar := IdHTTP1.Get(URLStr); + end; + on e:exception do + begin + ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message); + logTekst := 'Fejl i web forespørgsel: '+e.Message; + SkrivScanningLogFil(logTekst); + raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]); + end; + end; + + + + try + + XMLDocument1.LoadFromXML(WebSvar); -procedure TMainForm.IndlesManglendeScanninger(); + for i:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin + Node:= XMLDocument1.DocumentElement.ChildNodes[I]; + + PakkeType := Node.ChildValues['PakkeType']; + TotalAntal := Node.ChildValues['TotalAntal']; + AntalProdDato := Node.ChildValues['AntalProdDato']; + + + CurrentPanel := nil; + + if (PakkeType = 'natxpress') then + begin + CurrentPanel := PanelManglendePakker1; + end; + + if (PakkeType = 'daodirekte') then + begin + CurrentPanel := PanelManglendePakker4; + end; + + if (PakkeType = 'pakkeshop') then + begin + CurrentPanel := PanelManglendePakker5; + end; + + if (CurrentPanel <> nil) then + begin + CurrentPanel.Caption := TotalAntal; + if ( StrToInt(TotalAntal) > 0) then + begin + CurrentPanel.Visible := true; + end + else + begin + CurrentPanel.Visible := false; + end; + end; + + + end; + + + except on e:exception do + begin + ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message); + logTekst := 'Fejl i XML-format: '+e.Message; + SkrivScanningLogFil(logTekst); + raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]); + end; + end; + + + + ListBox1.Items.Insert(0,'Pakkeantal indlæst - klar til scanning'); + +end; + +procedure TMainForm.IndlesManglendeScanningerListe(); var WebSvar : String; URLStr : String; @@ -4207,6 +4402,7 @@ logTekst := logTekst + '.'; SkrivScanningLogFil(logTekst); + time.stop('Antal Linier2');//DEBUG for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin @@ -4267,7 +4463,7 @@ if antalFelterFundet = antalLiniefelter then begin if (ScanningType = '1') then - ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus) + ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus) else if (ScanningType = '4') then ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar) else if (ScanningType = '5') then @@ -4857,5 +5053,12 @@ Result := self; end; +//Nedarvet fra IParentForm +function TMainForm.GetXMLDocument() : TXMLDocument; +begin + Result := XMLDocument1 +end; + + end.