OmniShipping Internal:DHL API
ShippingConnect DHL API Versenden einrichten
!! DIES IST EINE INTERNE ANLEITUNG UND NUR INNERHALB DER HTK GmbH & Co. KG zu nutzen !!
BPM Installation
Im ersten Schritt muss man den BPM installieren hierzu unter : \\ellst001.lan.htk.de\Entwicklung\Standard\Tools-Erweiterungen-die-nicht-Add-in-sind\HTKService\Setup-Projekt - hier das letzte Setup nehmen und auf dem entsprechenden Server installieren. In der Regel ist dies der Appserver des Kunden - wobei je nach Kunde durchaus bedacht werden sollte ob es nicht sinnvoller wäre einen eigenen Server für den BPM zu haben denn dieser kann je nach Anzahl der Jobs etc. eine hohe Auslastung mit sich bringen.
Beim ausführen der .exe muss der „Shared“ Ordner des Sage Verzeichnisses ausgewählt werden.
Dann im Anschluss noch die Vollständige Installation auswählen um alle benötigten Module etc. des BPM zu installieren.
Um eine erfolgreiche Installation des BPM zu vollziehen wird, insofern es noch nicht existent ist, das Open XML SDK 2.0 installiert.
Nach einer erfolgreichen Installation muss man sich im Anschluss mit der HTK BPM GUI an der Datenbank anmelden um auch entsprechende Tabellen zu generieren.
Öffnet man den BPM zum ersten mal sind noch keinerlei Daten hinterlegt. Hier müssen dann SQL Server sowie Anmeldename und Kennwort hinterlegt werden. Im Anschluss auf „Verbinden“ drücken.
Sobald die Verbindung hergestellt wurde, kann man nun eine entsprechende Datenbank auswählen und das Feld ist nicht mehr ausgegraut.
Nun bei „Anmelden“ werden Sie bezüglich der Grundlagen und Voraussetzungen gefragt ob diese in der entsprechenden Datenbank.
Sind die Tabellen etc. alle entsprechend angelegt worden sollte man nun im ersten Schritt die Datenbankverbindung im HTK Service hinterlegen.
Installation DHL Versenden Jobs / API
Nun kann man noch das entsprechende Addin [file://ds01/Entwicklung/Standard/Tools-Erweiterungen-die-nicht-Add-in-sind/HTKService/BPM-AddIns \\ellst001.lan.htk.de\Entwicklung\Standard\Tools-Erweiterungen-die-nicht-Add-in-sind\HTKService\BPM-AddIns]
Sich kopieren und in dem Sage Shared Ordner in HTKData unter den Addins reinkopieren. Des Weiteren müssen diese Files auch noch in HTKBPM – Plugins Ordner reinkopiert werden. Ebenso wie in den Shared Ordner der Sage Installation direkt. Sprich an 3 Stellen müssen die Files vorhanden sein.
Nun muss man die .dll.xml der Versenden API
In ein Ordner eines anderen Addins legen um diese zu „installieren“ und noch umbenennen wie das entsprechende Addin des Ordners – entweder dann den Dienst neu starten oder die .xml mit einem .update versehen. Hier im Beispiel HTKVersendenApi.dll.xml umbenannt zu HTKFTP.dll.xml und in das Addinverzeichnis des FTP Addins gelegt.
Im Anschluss den Dienst starten und das Logbuch analysieren ob hier Fehler auftauchen. Kontrollieren kann man auch ob die DHL Versenden API Pluginfiles korrekt geladen wurden in dem man im Logbuch entsprechend.
Nach dem nun das Addin erfolgreich geladen wurde kann man dies als Job hinzufügen:
Als Konfiguration sollte in den DHL Einstellungen die
- ApplikationsID: HTKShippingConnectDHL_1
- Token: xeUuqatLqTVfvtSr9OgYCsQieONPGu
hinterlegt werden. Dies sind die von DHL freigegebenen Daten für uns.
In den Addin-Grundeinstellungen wird lediglich die Pfade sowie die SQL Abfrage für die Stornierung hinterlegt sowie ob die Sendungsnummer an OL übermittelt werden soll.
Dann wird noch ein weiterer Job im BPM benötigt die sogenannte „Datenbank Analyse“ was nur eine SQL Abfrage ist die je nach Kunde eventuell etwas angepasst werden muss.
Als SQL Statement kann man hier folgendes hinterlegen :
ACHTUNG! Hier muss entsprechend der Mandant geprüft werden
DECLARE @MyData TABLE
(
[Mandant]SMALLINT, [BelId]INT, [Benutzer]VARCHAR(128), [PaketId]BIGINT,
[Gewicht]MONEY, [Paketnummer]VARCHAR(MAX), [Versanddienstleister]VARCHAR(MAX), [GepacktAm]VARCHAR(20),
[GepacktUm]VARCHAR(7), [BelegAm]VARCHAR(20), [BelegUm]VARCHAR(7), [ImportAm]VARCHAR(20),
[ImportUm]VARCHAR(7), [Storniert]SMALLINT, [ExportErfolgt]SMALLINT, [Abrechnungsnummer]VARCHAR(max)
)
INSERT INTO @MyData([Mandant], [BelId], [Benutzer], [PaketId], [Gewicht], [Paketnummer], [Versanddienstleister],
[GepacktAm], [GepacktUm], [BelegAm], [BelegUm], [ImportAm], [ImportUm], [Storniert], [ExportErfolgt], [Abrechnungsnummer])
SELECT Mandant, BelId, Bearbeiter,1, Gewicht,,'DHL (Versenden API)',,,,,,,0,0,
FROM KHKVKBelege WITH (NOLOCK)
WHERE Versand IN ('DHL')
AND Belegkennzeichen IN ('VLL','VSL','VSD')
AND Belegdatum >='25.09.2020' AND (ISNULL(USER_HTKVersandExported,0) =0)
AND Mandant='2';
--select * from @MyData
UPDATE HTKBPM_Plugins_Versanddaten SET [Storniert] = -1 WHERE [Paketnummer] <>AND
[BelId] IN (SELECT[BelId] from HTKBPM_Plugins_Versanddaten WITH (NOLOCK) WHERE BelId IN (SELECT [BelId] FROM @MyData))
DECLARE @MyMandant varchar(max)
DECLARE @MyBelid varchar(max)
DECLARE @User varchar(max)
DECLARE contacts_cursor CURSOR FOR
SELECT Mandant, BelId, Benutzer
FROM @MyData;
OPEN contacts_cursor;
FETCH NEXT FROM contacts_cursor INTO @MyMandant,@MyBelid,@User;
WHILE @@FETCH_STATUS=0
BEGIN
if (@MyBelid is not null)
begin
DECLARE @PackageId int
DECLARE @PackageWeight decimal(36,2)
-- select @MyMandant, @MyBelid
declare @counter int
Declare @tableCount int
set @tableCount= (select count(*) from fnHTKShippingCalculatePackages (@MyBelid,@MyMandant))
set @counter=1
While (@counter<=@tableCount)
begin
select @PackageId= PackageId,@PackageWeight= PackageWeight from fnHTKShippingCalculatePackages (@MyBelid,@MyMandant) where PackageId =@counter
INSERT INTO HTKBPM_Plugins_Versanddaten ([Mandant], [BelId], [Benutzer], [PaketId], [Gewicht], [Paketnummer], [Versanddienstleister],
[GepacktAm], [GepacktUm], [BelegAm], [BelegUm], [ImportAm], [ImportUm], [Storniert], [ExportErfolgt], [Abrechnungsnummer])
SELECT @MyMandant,@MyBelid,@User,@PackageId,@PackageWeight,,'DHL (Versenden API)',,,,,,,0,0,
set @counter=@counter+1
end
FETCH NEXT FROMcontacts_cursor INTO @MyMandant,@MyBelid,@User;
end
END;
CLOSE contacts_cursor;
DEALLOCATE contacts_cursor;
UPDATE [KHKVKBelege] SET [USER_HTKVersandExported] =1 WHERE [BelID] in (SELECT [BelID] FROM @MyData)
Im Anschluss daran muss man in der dbo.vwHTKVersenden noch eine Anpassung durchführen. Hier muss im Statement an der Stelle " HIER MUSS DIE ABRECHNUNGSNUMMER REIN" die Abrechnungsnummer des Kunden des DHL-Geschäftskundenportal rein - falls die Kunden nicht wissen was das ist und wo man dies findet HIER gut erklärt.
/****** Object: View [dbo].[vWHTkVersenden] Script Date: 02.03.2021 14:35:40 ******/
SET ANSI_NULLS ON
GOSET QUOTED_IDENTIFIER ON
GO
ALTER VIEW [dbo].[vWHTkVersenden] AS
select
bel.Mandant as [Mandant],
bel.[BelID] as [BelId],
bel.[Belegnummer] as [Belegnummer],
bel.[Belegjahr] as [Belegjahr],
ver.[Storniert] as [Storniert],
ver.[ID] as [VersandDatenId],
ver.[PaketId] as [PaketId],
ver.[Paketnummer] as [Paketnummer],
ver.[Versanddienstleister] as [Versanddienstleister],
(select LieferStrasse from KHKAdressen where mandant = bel.Mandant and adresse = (select adresse from KHKAdressenverweise where mandant = [Mandant] and Verweis = 'Mandant' and Eigentuemer = -1)) as [ShipperStreet],
as [ShipperStreetNr],
(select LieferOrt from KHKAdressen where mandant = bel.Mandant and adresse = (select adresse from KHKAdressenverweise where mandant = [Mandant] and Verweis = 'Mandant' and Eigentuemer = -1)) as [ShipperCity],
(select LieferPLZ from KHKAdressen where mandant = bel.Mandant and adresse = (select adresse from KHKAdressenverweise where mandant = [Mandant] and Verweis = 'Mandant' and Eigentuemer = -1)) as [ShipperZip],
(select LieferLand from KHKAdressen where mandant = bel.Mandant and adresse = (select adresse from KHKAdressenverweise where mandant = [Mandant] and Verweis = 'Mandant' and Eigentuemer = -1)) as [ShipperCountryCode],
as [ShipperEmail],
(select Name1 from KHKAdressen where mandant = bel.Mandant and adresse = (select adresse from KHKAdressenverweise where mandant = [Mandant] and Verweis = 'Mandant' and Eigentuemer = -1)) as [ShipperFirstName],
(select Name2 from KHKAdressen where mandant = bel.Mandant and adresse = (select adresse from KHKAdressenverweise where mandant = [Mandant] and Verweis = 'Mandant' and Eigentuemer = -1)) as [ShipperLastName],
(select Name1 from KHKAdressen where mandant = bel.Mandant and adresse = (select adresse from KHKAdressenverweise where mandant = [Mandant] and Verweis = 'Mandant' and Eigentuemer = -1)) as [ShipperCompanyName],
(select [Telefon] from KHKAdressen where mandant = bel.Mandant and adresse = (select adresse from KHKAdressenverweise where mandant = [Mandant] and Verweis = 'Mandant' and Eigentuemer = -1)) as [ShipperPhone],
bel.[A1Strasse] as [ReceiverStreet],
as [ReceiverStreetNr],
bel.[A1Ort] as [ReceiverCity],
bel.[A1PLZ] as [ReceiverZip],
'goods' as [Comment],bel.[A1Land] as [ReceiverCountryCode],
--'CH' as [ReceiverCountryCode],
as [ReceiverEmail],
bel.[A1Name1] as [ReceiverFirstName],
bel.[A1Name2] as [ReceiverLastName],
as [ReceiverCompanyName],
as ReceiverAdditional,
(select top 1 Telefon from khkadressen where adresse = (select A1AdressNr from khkvkbelege where belid = bel.[BelId])) as [ReceiverPhone],
bel.Liefertermin as [ShippingDate],(case when bel.[A1Land] <> 'DE' then
'V53WPAK'
ELSE
'V01PAK' end) as [ProductCode],
--'V53WPAK' as [ProductCode],
--'22222222220104' as [BillingNumber],
(case when bel.[A1Land] <> 'DE' then
'HIER MUSS DIE ABRECHNUNGSNUMMER REIN' + '5301'
ELSE
'HIER MUSS DIE ABRECHNUNGSNUMMER REIN' + '0104'
end) as [BillingNumber],convert(varchar(255), bel.[Belegnummer]) as [CustomerReference],
ver.[Gewicht] as [WeightInKG],
as [LengthInCm],
as [WidthInCm],
as [HeightInCm],
as [IdentFirstName],
as [IdentLastName],
as [IdentMinAge],
as [IdentBirthday],
USER_HTKVersandPackstationsnummer as [PackingstationNumber],
USER_HTKVersandPostnummer as [Postnumber],
USER_HTKVersandPostfilialnummer as [Postfilialnummer],
USER_HTKVersandPacketshopnummer as [Packetshopnummer],
--(select Zuschlag from KHKVKBelegeZuschlaege as z inner join KHKZuschlagsarten as zu on zu.Mandant = z.Mandant and zu.ZuschlagID = z.ZuschlagID where belid = bel.BelID and z.Mandant = bel.Mandant and zu.Zuschlagsart = 'Versand') + bel.Bruttobetrag + 2 as NachnahmeBetrag
NULL as [NachnahmeBetrag]
from KHKVKBelege as bel
inner join [HTKBPM_Plugins_Versanddaten] as ver ON bel.mandant = ver.Mandant AND bel.BelID = ver.BelId
where ver.Versanddienstleister = 'DHL (Versenden API)' and Convert(date ,bel.Liefertermin) = Convert(date, GETDATE())
GO
Wenn das nun funktioniert hat und entsprechende Belege gefunden werden sollten in dem Root Verzeichnis des API Exports entsprechende .pdf Dateien generiert werden :
Nun muss noch im DHL Geschäftskundenportal des Kunden gepürft werden ob der entsprechende Auftrag auch dort vorhanden ist.