Table of Contents |
---|
...
Warning |
---|
Dieser Provider ist ab Vertec Version 6.7 nicht mehr funktionsfähig, da die Authentifizierung sind in Vertec geändert hat. |
...
Vertec 6.7
Dieser AddressProvider funktioniert ab Version 6.7 nicht mehr.
Als Alternative kann der HttpProvider des AddressService genutzt werden.
Wichtigstes Unterscheidungsmerkmal: Die Authentifizierung ging bisher über die eingegenen Benutzerdaten. Mit dem HttpProvider muss ein Service Account im Vertec erstellt werden und von diesem Service Account wird der API Token
benötigt.
Die Nachfolgende Konfiguration zeigt den Zugriff auf Vertec, angepasst werden muss:
<https://KUNDE.vertec-mobile.com/xml>
mit der Vertec URLBearer ...
mitBearer [API TOKEN des Service Accounts]
Code Block |
---|
<!-- Vertec via AddressService -->
<!-- Vertec address provider - neue Konfiguration ab Vertec 6.7 -->
<AddressProvider id="E10A8313-A92D-4CB2-A12B-9AEB58F39207" order="1" active="true">
<!-- Vertec, Server -->
<AddressProvider id="09C886F1-4B5A-4372-8CB4-4AA6D2F7A47B" Title="Vertec">
<!-- Vertec, Applikation -->
<Icon>iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIASURBVDhPfVLbahNBGJ6d2c02BxsTU2qibSqNJ4hiqIiIXgleeOuFeOU7+Bo+iFfeV7Gl0BuVGiEgZouSDbHbbEqSTTbLHmfGfw8EVsWPn53Zb77/OCO83kchBMT81rT3itMVhHhE/Rs4WZf4nzgE9hgC8ynyaMf1AyegDnz9wA1oIkFwyryA8iiWoJ61oZ4QHFOnghAR4JcjLwjeHrSnlk0wfvH4LnBv9o8YQ+K30/eRA4fqnfEOo+LGevn+7euTmWk6LkQUCd6srpXOFdpKv6MOSfPZB90C29Nmn4+P7ym/5qWc1GxsKn3tU7cvSwTKW5iLZmND1UaqPsUSRqERlCFbsiRmRHyjXoOMPW1EcJhaIvj7YGRatuv5AhJSU+Kc52Xp8noloLR3OoZigGScF3Mr0LE+NUWcdqCMV0uFUrEADQyNBbQLJIxou1axXfdkYuKYWoIydrG8CuRoYkDpyfA4v3Ot/nMwjJmUA2TPyRnYzBd2PHXbC3a2L104v3rY+SGLIjApB+hyZtmwyWVliGc6Xq1cePqw9bGjDA0rnkHotIRESHdwpo+NW1e3nj+aCwJu3byi9E7efVGymURJnryMVgFxVnWMB64vqJq+Vsw36rV8Vj782t096kIx4fXHwr9fa8AopRyuLH5OskgiRYJUDzFEjEENTYP0DzVC6DclJP5kwEd/SAAAAABJRU5ErkJggg==</Icon>
<SearchParameters>
<SearchParameter Name="searchTerm" Label="Suchbegriff" Type="String" Length="100" Sort="1" />
</SearchParameters>
<Debug>true</Debug>
<Configuration>
<Step>
<Request Method="Post" Url="<https://KUNDE.vertec-mobile.com/xml>">
<!-- API Token -->
<Header Name="Authorization" Value="Bearer ..." />
<!--
Zum Testen:
Mit Browser <https://KUNDE.vertec-mobile.com/xml/query> besuchen, dann das ganze "<Body>"-Element dort reinkopieren.
«'%{0}%'» ersetzen mit Test-Suchbegriff.
-->
<Body><![CDATA[<Envelope>
<Body>
<Query>
<Selection>
<ocl>Adresseintrag</ocl>
<sqlwhere>
aktiv = 1
and
(
(alias like '%{searchTerm}%') or (name like '%{searchTerm}%') or (nameA like '%{searchTerm}%') or (nameB like '%{searchTerm}%') or (standardadresse like '%{searchTerm}%') or (standardPLZ like '%{searchTerm}%') or (standardOrt like '%{searchTerm}%')
or
(firma in (select bold_id from adresseintrag where (name like '%{searchTerm}%') or (alias like '%{searchTerm}%') or (standardadresse like '%{searchTerm}%') or (standardPLZ like '%{searchTerm}%') or (standardOrt like '%{searchTerm}%')))
)
</sqlwhere>
</Selection>
<Resultdef>
<member>Personenkonto</member>
<member>Alias</member>
<member>LieferantenNr</member>
<member>Standardadresse</member>
<member>Stellung</member>
<member>Zusatz</member>
<member>StandardKanton</member>
<member>StandardTelefon</member>
<member>Bankverbindung</member>
<member>StandardMobile</member>
<member>Geburtsdatum</member>
<member>StandardHomepage</member>
<member>StandardLand</member>
<member>MWSTNR</member>
<member>StandardFax</member>
<member>Briefanrede</member>
<member>IsMale</member>
<member>Grussformel</member>
<expression>
<alias>Grussformel</alias>
<ocl>
if self.oclistypeof(Person) then self.oclastype(Person).grussformel
else
if self.oclistypeof(Kontakt) then
if self.oclastype(Kontakt).person->notempty then self.oclastype(Kontakt).person.grussformel
else self.oclastype(Kontakt).grussformel
endif
else
if self.oclistypeof(Firma) then self.oclastype(Firma).grussformel
else
if sprache.asstring = 'DE' then
'Freundliche Grüsse'
else
'Greetings,'
endif
endif
endif
endif
</ocl>
</expression>
<member>StandardEMail</member>
<member>Titel</member>
<member>StandardOrt</member>
<member>Name</member>
<member>Anrede</member>
<member>StandardPLZ</member>
<expression>
<alias>Sprache</alias>
<ocl>sprache.asstring</ocl>
</expression>
<member>KundenNR</member>
<expression>
<alias>firmenname</alias>
<ocl>
if self.oclistypeof(Firma) then self.oclastype(Firma).name
else
if self.oclistypeof(Kontakt) and self.oclastype(Kontakt).firma->notempty then self.oclastype(Kontakt).firma.name
else ''
endif
endif
</ocl>
</expression>
<expression>
<alias>kontaktname</alias>
<ocl>
if self.oclistypeof(Person) then self.oclastype(Person).name
else
if self.oclistypeof(Kontakt) then
if self.oclastype(Kontakt).person->notempty then self.oclastype(Kontakt).person.name
else self.oclastype(Kontakt).name
endif
else
<!-- Paar-Adressen -->
if self.oclistypeof(Paar)
then
if self.oclastype(Paar).personA.notNull and self.oclastype(Paar).personB.notNull then
self.oclastype(Paar).personA.vorname + ' ' + self.oclastype(Paar).personA.name + ', ' + self.oclastype(Paar).personB.vorname + ' ' + self.oclastype(Paar).personB.name
else
if self.oclastype(Paar).personA.notNull and self.oclastype(Paar).personB.isNull then
self.oclastype(Paar).personA.vorname + ' ' + self.oclastype(Paar).personA.name + ', ' + self.oclastype(Paar).vornameB + ' ' + self.oclastype(Paar).nameB
else
if self.oclastype(Paar).personA.isNull and self.oclastype(Paar).personB.notNull then
self.oclastype(Paar).vornameA + ' ' + self.oclastype(Paar).nameA + ', ' + self.oclastype(Paar).personB.vorname + ' ' + self.oclastype(Paar).personB.name
else
self.oclastype(Paar).vornameA + ' ' + self.oclastype(Paar).nameA + ', ' + self.oclastype(Paar).vornameB + ' ' + self.oclastype(Paar).nameB
endif
endif
endif
else ''
endif
endif
endif
</ocl>
</expression>
<expression>
<alias>kontaktvorname</alias>
<ocl>
if self.oclistypeof(Person) then self.oclastype(Person).vorname
else
if self.oclistypeof(Kontakt) then
if self.oclastype(Kontakt).person->notempty then self.oclastype(Kontakt).person.vorname
else self.oclastype(Kontakt).vorname
endif
else ''
endif
endif
</ocl>
</expression>
<member>adresstext</member>
<expression>
<alias>Kuerzel</alias>
<ocl>
if self.oclistypeof(Kontakt) then self.oclastype(Kontakt).abteilung else '' endif
</ocl>
</expression>
<expression>
<alias>Abteilung</alias>
<ocl>
if self.oclistypeof(Kontakt) then zusatzfeldasstring('abteilung') else '' endif
</ocl>
</expression>
<!-- TestNameA: Zeigt, wie man bei Paaren auf den Nachnamen kommt (es gibt nämlich 2 Arten von Paaren) -->
<!--
<expression>
<alias>TestNameA</alias>
<ocl>
if self.oclistypeof(Paar)
then
if self.oclastype(Paar).personA.notNull
then self.oclastype(Paar).personA.name
else self.oclastype(Paar).nameA
endif
else 'Blub'
endif
</ocl>
</expression>
-->
</Resultdef>
</Query>
</Body>
</Envelope>
]]></Body>
</Request>
<Response>
<Contacts XPath="/Envelope/Body/QueryResponse/Kontakt | /Envelope/Body/QueryResponse/Firma | /Envelope/Body/QueryResponse/Person | /Envelope/Body/QueryResponse/Paar ">
<Mapping>
<!-- Company -->
<Map Source="standardOrt" Target="Company_City" />
<Map Source="standardLand" Target="Company_Country" />
<Map SourceValue="CH" Target="Company_CountryShortCode" />
<Map Source="Abteilung" Target="Company_Department" />
<Map Source="standardEMail" Target="Company_EmailCentral" />
<Map Source="standardEMail" Target="Company_EmailDirect" />
<Map Source="standardFax" Target="Company_FaxCentral" />
<Map Source="standardFax" Target="Company_FaxDirect" />
<Map Source="standardHomepage" Target="Company_Homepage" />
<Map Source="firmenname" Target="Company_Name" />
<Map Source="standardTelefon" Target="Company_PhoneCentral" />
<Map Source="standardTelefon" Target="Company_PhoneDirect" />
<!-- Company_PostOfficeBox ToDo -->
<Map Source="standardAdresse" Target="Company_Street" />
<Map Source="standardPLZ" Target="Company_ZipCode" />
<!-- Person -->
<Map Source="geburtsdatum" Target="Person_BirthDate" />
<Map Source="standardLand" Target="Person_Country" />
<Map SourceValue="CH" Target="Person_CountryShortCode" />
<Map Source="standardOrt" Target="Person_City" />
<Map Source="standardEMail" Target="Person_EmailDirect" />
<Map Source="standardOrt" Target="Person_City" />
<Map Source="standardFax" Target="Person_FaxDirect" />
<Map Source="kontaktvorname" Target="Person_FirstName" />
<Map Source="standardHomepage" Target="Person_Homepage" />
<Map Source="kontaktname" Target="Person_LastName" />
<Map Source="standardTelefon" Target="Person_PhoneDirect" />
<Map Source="stellung" Target="Person_Position" />
<!-- Person_PostOfficeBox ToDo -->
<Map Source="standardAdresse" Target="Person_Street" />
<Map Source="titel" Target="Person_Title" />
<Map Source="standardPLZ" Target="Person_ZipCode" />
<!-- Common -->
<Map Source="ID" Target="AddressProviderData_Id" />
<Map Source="anschrift" Target="AddressProviderData_Label_FormattedString" />
<Map Source="briefanrede" Target="Person_Salutation" />
<Map Source="Grussformel" Target="Person_Greeting" />
</Mapping>
</Contacts>
</Response>
</Step>
</Configuration>
</AddressProvider>
</AddressProvider> |
...
Ältere Vertec Versionen
Die Adressschnittstelle für Vertec kann neu auch über Token angesprochen werden. Dazu muss die Konfiguration wie folgt geändert werden:
...