Index: DOM/common/dto/Persoon.cls.xml =================================================================== diff -u --- DOM/common/dto/Persoon.cls.xml (revision 0) +++ DOM/common/dto/Persoon.cls.xml (revision 1334) @@ -0,0 +1,40 @@ + + + +1 +%RegisteredObject,%XML.Adaptor +0 + + +%String + + + +%String + + + +%String + + + +%String + + + +%String + + + +%String + + + +%String + + + +%String + + + Index: JBL InlezenKlantGegevens.prj.xml =================================================================== diff -u --- JBL InlezenKlantGegevens.prj.xml (revision 0) +++ JBL InlezenKlantGegevens.prj.xml (revision 1334) @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + Index: DOM/common/Persoon.cls.xml =================================================================== diff -u -r1264 -r1334 --- DOM/common/Persoon.cls.xml (.../Persoon.cls.xml) (revision 1264) +++ DOM/common/Persoon.cls.xml (.../Persoon.cls.xml) (revision 1334) @@ -3,6 +3,7 @@ 1 1 +0 1 @@ -21,7 +22,6 @@ /********** / Getters /*********/ - ]]> @@ -115,12 +115,16 @@ + +1 +%Integer + + Index: vhUnitTest/DOM/CRM/TestPersoon.cls.xml =================================================================== diff -u -r1074 -r1334 --- vhUnitTest/DOM/CRM/TestPersoon.cls.xml (.../TestPersoon.cls.xml) (revision 1074) +++ vhUnitTest/DOM/CRM/TestPersoon.cls.xml (.../TestPersoon.cls.xml) (revision 1334) @@ -112,6 +112,35 @@ ]]> + + + + + + + +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) + } + + /// 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) + } + /// 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 + } + /// Nederlandse postcodes : + ElseIf ((($Length(Deel1)=6) && (Deel1?4.N2.A)) || (($Length(Deel1)=4) && ($Length(Deel3)=2) && (Deel1?4.N) && (Deel3?2.A))){ + set $zobjProperty(Object,"Postcode")=Deel1_Deel3 + set $zobjProperty(Object,Property)=Deel2 + }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 + + + + Index: DOM/CRM/KlantAPI.cls.xml =================================================================== diff -u -r1133 -r1334 --- DOM/CRM/KlantAPI.cls.xml (.../KlantAPI.cls.xml) (revision 1133) +++ DOM/CRM/KlantAPI.cls.xml (.../KlantAPI.cls.xml) (revision 1334) @@ -7,12 +7,18 @@ 1 -KlantObject:DOM.CRM.dto.Klant +KlantObject:DOM.CRM.dto.Klant,TypeTemplateKlant:DOM.CRM.enu.TypeTemplateKlant DOM.CRM.Klant + +1 +KlantNummer:%Integer,dtoPersoon:DOM.common.dto.Persoon +DOM.common.Persoon + + 1 Nr:%Integer @@ -40,5 +46,10 @@ 1 DOM.CRM.Klant + + +1 +KlantNummer:%Integer,Persoon:DOM.common.Persoon + Index: DOM/CRM/impl/KlantImpl.cls.xml =================================================================== diff -u -r1328 -r1334 --- DOM/CRM/impl/KlantImpl.cls.xml (.../KlantImpl.cls.xml) (revision 1328) +++ DOM/CRM/impl/KlantImpl.cls.xml (.../KlantImpl.cls.xml) (revision 1334) @@ -102,6 +102,12 @@ ]]> + +%String + + + Sleutel:%String %String @@ -251,6 +257,25 @@ ]]> + +Email:%String + + + + +HandelsregisterNr:%String + + + InitialenNaam:%String 1 @@ -270,19 +295,6 @@ ]]> - -Email:%String - - - Tijdstip:%Date 1 @@ -301,5 +313,14 @@ + + +dtoPersoon:DOM.common.dto.Persoon +DOM.common.Persoon + + Index: DOM/CRM/dto/Klant.cls.xml =================================================================== diff -u -r1075 -r1334 --- DOM/CRM/dto/Klant.cls.xml (.../Klant.cls.xml) (revision 1075) +++ DOM/CRM/dto/Klant.cls.xml (.../Klant.cls.xml) (revision 1334) @@ -33,6 +33,10 @@ %String + +%String + + %Integer Index: DOM/CRM/Klant.cls.xml =================================================================== diff -u -r1328 -r1334 --- DOM/CRM/Klant.cls.xml (.../Klant.cls.xml) (revision 1328) +++ DOM/CRM/Klant.cls.xml (.../Klant.cls.xml) (revision 1334) @@ -72,6 +72,11 @@ %String + +1 +%String + + 1 %String @@ -196,6 +201,11 @@ Email:%String + +1 +HandelsregisterNr:%String + + 1 LeveringVoorwaarde:DOM.CRM.enu.LeveringVoorwaarde @@ -221,5 +231,11 @@ 1 %Boolean + + +1 +dtoPersoon:DOM.common.dto.Persoon +DOM.common.Persoon + Index: DOM/CRM/impl/DataM/DataMKlantBase.cls.xml =================================================================== diff -u -r1328 -r1334 --- DOM/CRM/impl/DataM/DataMKlantBase.cls.xml (.../DataMKlantBase.cls.xml) (revision 1328) +++ DOM/CRM/impl/DataM/DataMKlantBase.cls.xml (.../DataMKlantBase.cls.xml) (revision 1334) @@ -179,6 +179,12 @@ ]]> + +%String + + + %String + +Piece:%Integer,Waarde:%String +1 + + + Piece:%Integer,Waarde:%String 1 @@ -361,6 +378,19 @@ ]]> + +Email:%String +%String + + + + +HandelsregisterNr:%String + + + InitialenNaam:%String 1 @@ -380,13 +410,6 @@ ]]> - -Email:%String -%String - - - Telefoon1:%String 1 - + 1 - + 1 - + 1 Index: DOM/CRM/impl/DataM/DataMKlant.cls.xml =================================================================== diff -u -r1328 -r1334 --- DOM/CRM/impl/DataM/DataMKlant.cls.xml (.../DataMKlant.cls.xml) (revision 1328) +++ DOM/CRM/impl/DataM/DataMKlant.cls.xml (.../DataMKlant.cls.xml) (revision 1334) @@ -163,7 +163,7 @@ $$$ThrowError($$$errGeneralError,"Er is geen KlantNummer ingevuld, kan object niet saven.") } - If (..AlgemeneGegevensDirty || ..BetalingsGegevens2Dirty || ..BetalingsGegevens3Dirty || ..Opmerkingen1Dirty || ..Opmerkingen2Dirty || ..Node7Dirty) + If (..AlgemeneGegevensDirty || ..BetalingsGegevens1Dirty || ..BetalingsGegevens2Dirty || ..BetalingsGegevens3Dirty || ..Opmerkingen1Dirty || ..Opmerkingen2Dirty || ..Node7Dirty) { Set OudeKlantIndex = $PIECE(^DKL("K","KL.A",..KlantNummer,0),"\",31) @@ -283,8 +283,10 @@ Index: DOM/CRM/impl/DataM/DataMKlantAPI.cls.xml =================================================================== diff -u -r1133 -r1334 --- DOM/CRM/impl/DataM/DataMKlantAPI.cls.xml (.../DataMKlantAPI.cls.xml) (revision 1133) +++ DOM/CRM/impl/DataM/DataMKlantAPI.cls.xml (.../DataMKlantAPI.cls.xml) (revision 1334) @@ -53,9 +53,17 @@ $$$ThrowError($$$errGeneralError,"Er is geen klant template meegegeven.") } - Set GlobalData = ##class(DOM.CRM.impl.DataM.DataMKlantTemplate).GeefTemplate(TypeTemplateKlant) - /// Data inladen vanuit de template - for i = 0 : 1 : 8 Set Data(i) = GlobalData.GetAt(i) + Set Data(0)="" + /// Template komt uit global ^KBA("%A",1,"KL", + If ($Length(TypeTemplateKlant)=1){ + for i = 0 : 1 : 8 Set Data(i) = $Translate(^KBA("%A",1,"KL",TypeTemplateKlant,i),"?") + } + /// Template is enkel via code bereikbaar via enumeration + Else{ + Set GlobalData = ##class(DOM.CRM.impl.DataM.DataMKlantTemplate).GeefTemplate(TypeTemplateKlant) + /// Data inladen vanuit de template + for i = 0 : 1 : 8 Set Data(i) = GlobalData.GetAt(i) + } Set KlantIndex = $$COMPRES^KLANT(dtoKlant.KlantNaam,KlantNummer) @@ -68,6 +76,7 @@ Set $Piece(Data(0),..#Delimiter,6) = dtoKlant.Adres.GeefPostcode() Set $Piece(Data(0),..#Delimiter,7) = dtoKlant.Adres.GeefGemeente() Set $Piece(Data(0),..#Delimiter,8) = dtoKlant.Adres.GeefLandNr() + Set $Piece(Data(0),..#Delimiter,9) = dtoKlant.Taal Set $Piece(Data(0),..#Delimiter,13) = dtoKlant.Telefoon1 If (dtoKlant.BTWNummer '= ""){ Set $Piece(Data(0),..#Delimiter,16) = dtoKlant.BTWNummer @@ -114,6 +123,79 @@ ]]> + + +Maak een persoon voor de opgegeven klantnummer. +KlantNummer:%Integer,dtoPersoon:DOM.common.dto.Persoon +DOM.common.Persoon + + + + + +Maak een persoon voor de opgegeven klantnummer. +KlantNummer:%Integer,Persoon:DOM.common.Persoon + + + Zoekt tussen de klanten de medewerkers van VanHoecke en Halux Index: vhUnitTest/APPS/CRM/TestInlezenKlantGegevens.cls.xml =================================================================== diff -u --- vhUnitTest/APPS/CRM/TestInlezenKlantGegevens.cls.xml (revision 0) +++ vhUnitTest/APPS/CRM/TestInlezenKlantGegevens.cls.xml (revision 1334) @@ -0,0 +1,94 @@ + + + + +Do ##class(vhUnitTest.Manager).RunTest("/display=all","APPS.CRM.TestInlezenKlantGegevens") +1 +vhUnitTest.TestCase +0 + + + +Test formulier dat binnenkomt op contactformulier@vanhoecke.be (Nederlandstalig) + + + + + +Test formulier dat binnenkomt op contactb2b@vanhoecke.be (Nederlandstalig) + + + + + +Test formulier dat binnenkomt op info-aanvraag@vanhoecke.be (Franstalig) + + + + + +Test formulier dat binnenkomt op pas-encore-client@vanhoecke.be (Franstalig) + + + + Index: APPS/CRM/dto/KlantGegevens.cls.xml =================================================================== diff -u --- APPS/CRM/dto/KlantGegevens.cls.xml (revision 0) +++ APPS/CRM/dto/KlantGegevens.cls.xml (revision 1334) @@ -0,0 +1,21 @@ + + + + +JBL + 2011-05-25 +DOM.CRM.dto.Klant +0 + + +%String + + + +%String + + + +%String + + + Index: DOM/common/impl/DataM/DataMPersoonBase.cls.xml =================================================================== diff -u -r1264 -r1334 --- DOM/common/impl/DataM/DataMPersoonBase.cls.xml (.../DataMPersoonBase.cls.xml) (revision 1264) +++ DOM/common/impl/DataM/DataMPersoonBase.cls.xml (.../DataMPersoonBase.cls.xml) (revision 1334) @@ -147,6 +147,12 @@ ]]> + +%Integer + + + + + +persistent +1 +%Persistent +0 + + + +Toon in de ADMIN een multiline textarea. Als resultaat wordt de input als string terug gegeven. +1 +Label:%String="Inhoud",Rect:%String="5;11;20;60" +0 +%String + + + + +%Library.CacheStorage +^CHUI.ToolKitD +ToolKitDefaultData +^CHUI.ToolKitD +^CHUI.ToolKitI +^CHUI.ToolKitS + +listnode + + +%%CLASSNAME + + + + +