JBL + 2011-05-24 Gegevens vanuit een email die via een contactformulier binnenkomen parsen naar gegevens en properties die bruikbaar zijn bij het openen van een klant. https://www.pivotaltracker.com/story/show/9543011 set Inhoud = "programmaoverzicht"_$C(9)_": "_$C(9)_"checked"_$C(13,10)_"stuur-mij-de-orgalux-brochure"_$C(9)_": "_$C(9)_"checked"_$C(13,10)_"aankoopprijzen-orgalux"_$C(9)_": "_$C(9)_"checked"_$C(13,10)_"stuur-mij-dynalog-full-versie"_$C(9)_": "_$C(9)_"checked"_$C(13,10)_"vermeld-mijn-website"_$C(9)_": "_$C(9)_"checked"_$C(13,10)_"neem-contact-met-mij-op-voor-een-afspraak"_$C(9)_": "_$C(9)_"checked"_$C(13,10)_"naam"_$C(9)_": "_$C(9)_"Joren Blancquaert"_$C(13,10)_"functie"_$C(9)_": "_$C(9)_"IT"_$C(13,10)_"bedrijf"_$C(9)_": "_$C(9)_"Van Hoecke"_$C(13,10)_"btw-nr"_$C(9)_": "_$C(9)_"123-456-789"_$C(13,10)_"straat-nr"_$C(9)_": "_$C(9)_"Centrumlaan 1"_$C(13,10)_"gemeente"_$C(9)_": "_$C(9)_"9000 Sint-Niklaas"_$C(13,10)_"telefoon"_$C(9)_": "_$C(9)_"093867459"_$C(13,10)_"fax"_$C(9)_": "_$C(9)_"093867458"_$C(13,10)_"emailfrom"_$C(9)_": "_$C(9)_"jbl@vanhoecke.be"_$C(13,10)_"website"_$C(9)_": "_$C(9)_"www.vanhoecke.be"_$C(13,10)_"opmerkingen"_$C(9)_": "_$C(9)_"Dit is een testmail voor het verwerken van binnenkomende contactformulieren. Kan deze mail worden doorgestuurd naar jbl@vanhoecke.be ? Dank Groeten, Joren "_$C(13,10)_"attachement"_$C(9)_": "_$C(9)_" "_$C(13,10)_"stuur-produkt-info-via-email"_$C(9)_": "_$C(9)_"checked"_$C(13,10) do ##class(APPS.CRM.impl.InlezenKlantGegevens).%New().ParseMail(Inhoud) Do ##class(APPS.CRM.impl.InlezenKlantGegevens).VraagInhoud() 1 %RegisteredObject 0 %String array 1 1 %Status 1 0 [] = OK :" Read Bevestig If (Bevestig = ""){ Write @F11,@F1,@FMTI,"Openen Klant via contactformulier - ",QN,@FMTi Set FP=0303 Write @F,@F1,"Kies een openingspatroon." /// Openingspatroon kiezen Set TemplateID = ..KiesOpeningspatroon() If (TemplateID '= ""){ /// Nieuwe klant aanmaken met geparste gegevens Set KlantAPI = ##class(DOM.DomeinContext).Instance().GeefKlantAPI() Set Klant = KlantAPI.MaakKlant(KlantGegevens,TemplateID) Set KlantIsDirty = 0 If (KlantGegevens.URL '= ""){ Do Klant.ZetURL(KlantGegevens.URL) Set KlantIsDirty = 1 } If (KlantGegevens.KVKNummer '= ""){ Do Klant.ZetHandelsregisterNr(KlantGegevens.KVKNummer) Set KlantIsDirty = 1 } If (KlantIsDirty){ Do Klant.Save() } /// PERSOON /// Indien de naam van persoon gekend, is deze persoon aanmaken. If (KlantGegevens.PersoonNaam '= ""){ Set dtoPersoon = ##class(DOM.common.dto.Persoon).%New() Set dtoPersoon.Naam = KlantGegevens.PersoonNaam Set dtoPersoon.Fax = KlantGegevens.Fax Set dtoPersoon.Email = KlantGegevens.Email Set dtoPersoon.Telefoon = KlantGegevens.Telefoon1 Do Klant.MaakPersoon(dtoPersoon) } /// LOG als klant aangemaakt is Set Persoon = ##class(TECH.Context.RuntimeContext).Instance().GeefGebruikerInitialen() Set Persoon = $Get(Persoon) Do ##class(vhLib.Logger).%New("APPS.CRM").Info("Klant aangemaakt via input contactformulier.","Klant aangemaakt via input contactformulier."_$C(13,10)_Klant.GeefNummer()_$C(13,10)_Persoon_".") /// Wijzig scherm openen van de nieuwe klant. Do WIJZIG^KLANT(Klant.GeefNummer(),1) } } } ]]> Parsen van de input van de email met klantgegevens APPS.CRM.dto.KlantGegevens W") Set Waarde = $ZSTRIP($Piece(Lijn,":",2),"<>W") /// Taal controleren If ((Property = "nom") || (Property = "fonction")) Set TaalFR = TaalFR + 1 If ((Property = "naam") || (Property = "functie")) Set TaalNL = TaalNL + 1 If (..MappingNaarProperty.IsDefined(Property)){ Set Property = ..MappingNaarProperty.GetAt(Property) Set Object = Klant If (Property["Adres."){ Set Object = Klant.Adres Set Property = $Piece(Property,".",2) }ElseIf(Property = "Opmerking1"){ Set i = i + 1 Set Lijn = $Piece(Inhoud,LineFeed,i) While (Lijn '[ ":"){ Set Waarde = Waarde_$ZSTRIP(Lijn,"<>W") Set i = i + 1 Set Lijn = $Piece(Inhoud,LineFeed,i) } Set i = i - 1 } /// Postcode en woonplaats opsplitsen If (Property = "Woonplaats"){ /// Belgische postcodes : Set Deel1 = $Piece(Waarde," ") Set Deel2 = $Piece(Waarde," ",2,99) Set Deel3 = $Piece(Deel2," ") If ((Deel1?4.N) && '(Deel3?2.A)){ set $zobjProperty(Object,"Postcode")=Deel1 set $zobjProperty(Object,Property)=Deel2 set $zobjProperty(Object,"LandNr")=1019 } /// Nederlandse postcodes : ElseIf ((($Length(Deel1)=6) && (Deel1?4.N2.A)) || (($Length(Deel1)=4) && ($Length(Deel3)=2) && (Deel1?4.N) && (Deel3?2.A))){ If ($Length(Deel1)=6){ Set Deel3 = "" }Else{ Set Deel2 = $Piece(Waarde," ",3,99) } set $zobjProperty(Object,"Postcode")=Deel1_Deel3 set $zobjProperty(Object,Property)=Deel2 set $zobjProperty(Object,"LandNr")=1147 }Else{ set $zobjProperty(Object,Property)=Waarde } }Else{ set $zobjProperty(Object,Property)=Waarde } } } } If (TaalNL = 2){ Set Klant.Taal = "N" } Elseif (TaalFR = 2) { Set Klant.Taal = "F" } Quit Klant ]]> 1 1 %Integer