Hi all,
I want to create a calendar can show all of my customer birthday. So, when I create a customer and input their birthday in Customer BO, how can it can input automatically into Appointment BO and set repeat every years?
Is it possible?
Thanks
How add Customer Birthday into Appointment?
How add Customer Birthday into Appointment?
Regards,
Suwandy
-----------------
Kisaran - Indonesia
Suwandy
-----------------
Kisaran - Indonesia
Re: How add Customer Birthday into Appointment?
I do this with an extra attribute, and a scheduled process that runs at 00:01 on the 1st of January.
I have DateOfBirth and BirthdayThisYear as two date attributes, then a rule that says
Person.BirthdayThisYear=AS_DATE(
AS_STRING(DAY_OF_MONTH(Person.DateOfBirth))+'-'+
AS_STRING(MONTH(Person.DateOfBirth))+'-'+
AS_STRING(CURRENT_YEAR),'dd-MM-yyyy')
I set this when DateOfBirth attribute is changed, and also in a process at the beginning of each year.
I have DateOfBirth and BirthdayThisYear as two date attributes, then a rule that says
Person.BirthdayThisYear=AS_DATE(
AS_STRING(DAY_OF_MONTH(Person.DateOfBirth))+'-'+
AS_STRING(MONTH(Person.DateOfBirth))+'-'+
AS_STRING(CURRENT_YEAR),'dd-MM-yyyy')
I set this when DateOfBirth attribute is changed, and also in a process at the beginning of each year.
Re: How add Customer Birthday into Appointment?
@Dumas - Example of how context is important.. And since we don’t know the specifics of how the library application was written, it’s hard to make decisions based on what we see in its code. If I have 1 million customers, then I probably do not want 10 million erroneous rows in a table. And I may want to do it at the beginning of the year like Steve said. But if I had to do this in this current app that I’m converting, and I see that My client, in 10 years of legacy data, they only have 750 vendors, then wasting some space in de normalizing data to make programming easier is not gonna have a negative impact on the MSSQL database. Because I know the vendor file isn’t going to grow to tens of thousands.
I would create a birthdays BO, and add it to the appointment group.
Since someone’s birthday is not going to change, you could just decide to create birthday events out in the future. Then they would show up on the calendar.
Personally, I have not explored how recurring events work. If you enter an event to occur 10 times, Does it behind the scenes create 10 records?
If it does, then you could create a process to create 10 years or 50 years worth of birthdays in the file.
(Not being in front of my computer, I don’t know if recurs has a yearly option Or if it’s only days or weeks or months. You can’t say recurs every 365 days because of leap year. So I’m not sure if recurring for a yearly event is even valid.)
50 years probably is an exaggeration. Your App will not be in use in 50 years so that’s irrelevant.
But pre-generating his next 10 birthdays is probably not an issue. How many customers you’re going to have 700? 2500? Then 25,000 birthday records in a file is certainly no big deal. In 10 years if you’re alive and your app is still being used in aware, You can worry about generating 10 more years worth of data.
I would create a birthdays BO, and add it to the appointment group.
Since someone’s birthday is not going to change, you could just decide to create birthday events out in the future. Then they would show up on the calendar.
Personally, I have not explored how recurring events work. If you enter an event to occur 10 times, Does it behind the scenes create 10 records?
If it does, then you could create a process to create 10 years or 50 years worth of birthdays in the file.
(Not being in front of my computer, I don’t know if recurs has a yearly option Or if it’s only days or weeks or months. You can’t say recurs every 365 days because of leap year. So I’m not sure if recurring for a yearly event is even valid.)
50 years probably is an exaggeration. Your App will not be in use in 50 years so that’s irrelevant.
But pre-generating his next 10 birthdays is probably not an issue. How many customers you’re going to have 700? 2500? Then 25,000 birthday records in a file is certainly no big deal. In 10 years if you’re alive and your app is still being used in aware, You can worry about generating 10 more years worth of data.
Click Here to see a collection of my tips & hacks on this forum. Or search for "JaymerTip" in the search bar at the top.
Jaymer
Aware Programming & Consulting - Tampa FL
Jaymer
Aware Programming & Consulting - Tampa FL
-
- Posts: 1463
- Joined: Tue Jan 24, 2017 5:51 am
- Location: 'Stralya
Re: How add Customer Birthday into Appointment?
Create a single Appointment BO and use the recurrence field to set an annual recurrence (controlled by RecRule attribute).
I have a Contact BO that has a field DateOfBirth and off of that I create an owns single relationship to an Appointment Group BO called DateOfBirth, when you add the Date of Birth on the Contact BO a Rule then either creates the DateOfBirth and sets it's ownership to the Contact and sets the RecRule to be:
Or if there is already a Date of Birth (and consequently a DateOfBirth Appointment BO),
This way you end up with one appointment record so that when you accidentally put the wrong date in you can correct it once without reprocessing.
I use Appointment objects extensively and create multiple Appointment BOs for the various different types of date I want to record. I had previously worked with a generic Appointment BO that became overly cumbersome to manage it depending on what type of date it was recording as it required additional fields in the Appointment record and more redundancy. It also makes it easier to manage Forms as I can create different Forms for each Appointment BO and not have to create code to display the correct form when I have multiple Appointment BO. But that is my personal preference, I prefer to not generate code where I can offload it to AIM.
From memory the RecRule only sets one Appointment BO instance.
I have a Contact BO that has a field DateOfBirth and off of that I create an owns single relationship to an Appointment Group BO called DateOfBirth, when you add the Date of Birth on the Contact BO a Rule then either creates the DateOfBirth and sets it's ownership to the Contact and sets the RecRule to be:
Code: Select all
DateOfBirth.RecRule='FREQ=YEARLY;BYMONTH='+MONTH(Contact.DateOfBirth)+';BYMONTHDAY='+DAY_OF_MONTH(Contact.DateOfBirth)+';WKST=SU'
Code: Select all
IF Contact.osDateOfBirth IS DEFINED AND Contact.DateOfBirth WAS CHANGED THEN Contact.osDateOfBirth.StartTime=Contact.DateOfBirth Contact.osDateOfBirth.EndTime=Contact.DateOfBirth
I use Appointment objects extensively and create multiple Appointment BOs for the various different types of date I want to record. I had previously worked with a generic Appointment BO that became overly cumbersome to manage it depending on what type of date it was recording as it required additional fields in the Appointment record and more redundancy. It also makes it easier to manage Forms as I can create different Forms for each Appointment BO and not have to create code to display the correct form when I have multiple Appointment BO. But that is my personal preference, I prefer to not generate code where I can offload it to AIM.
From memory the RecRule only sets one Appointment BO instance.
Re: How add Customer Birthday into Appointment?
Hi PointsWell, many thanks for your respond. I have test and it works for new data created and update the new data.PointsWell wrote:I have a Contact BO that has a field DateOfBirth and off of that I create an owns single relationship to an Appointment Group BO called DateOfBirth, when you add the Date of Birth on the Contact BO a Rule then either creates the DateOfBirth and sets it's ownership to the Contact and sets the RecRule to be:
CODE: SELECT ALL
DateOfBirth.RecRule='FREQ=YEARLY;BYMONTH='+MONTH(Contact.DateOfBirth)+';BYMONTHDAY='+DAY_OF_MONTH(Contact.DateOfBirth)+';WKST=SU'
Or if there is already a Date of Birth (and consequently a DateOfBirth Appointment BO),
CODE: SELECT ALL
IF Contact.osDateOfBirth IS DEFINED AND Contact.DateOfBirth WAS CHANGED THEN Contact.osDateOfBirth.StartTime=Contact.DateOfBirth Contact.osDateOfBirth.EndTime=Contact.DateOfBirth
I have question.
Suppose I have already input a couple of customers data (more than 100) that still have not connection into Appointment BO. I try the above your suggestion but unfortunately the old data (birthday) cannot be create in Appointment. So, I try set it ( Contact.osDateOfBirth IS UNDEFINED ) but I'm still stuck.
Do you have any good idea?
Thank you.
Regards,
Suwandy
-----------------
Kisaran - Indonesia
Suwandy
-----------------
Kisaran - Indonesia
-
- Posts: 1463
- Joined: Tue Jan 24, 2017 5:51 am
- Location: 'Stralya
Re: How add Customer Birthday into Appointment?
Two processescishpix wrote:Hi PointsWell, many thanks for your respond. I have test and it works for new data created and update the new data.PointsWell wrote:I have a Contact BO that has a field DateOfBirth and off of that I create an owns single relationship to an Appointment Group BO called DateOfBirth, when you add the Date of Birth on the Contact BO a Rule then either creates the DateOfBirth and sets it's ownership to the Contact and sets the RecRule to be:Or if there is already a Date of Birth (and consequently a DateOfBirth Appointment BO),Code: Select all
DateOfBirth.RecRule='FREQ=YEARLY;BYMONTH='+MONTH(Contact.DateOfBirth)+';BYMONTHDAY='+DAY_OF_MONTH(Contact.DateOfBirth)+';WKST=SU'
Code: Select all
IF Contact.osDateOfBirth IS DEFINED AND Contact.DateOfBirth WAS CHANGED THEN Contact.osDateOfBirth.StartTime=Contact.DateOfBirth Contact.osDateOfBirth.EndTime=Contact.DateOfBirth
I have question.
Suppose I have already input a couple of customers data (more than 100) that still have not connection into Appointment BO. I try the above your suggestion but unfortunately the old data (birthday) cannot be create in Appointment. So, I try set it ( Contact.osDateOfBirth IS UNDEFINED ) but I'm still stuck.
Do you have any good idea?
Thank you.
Process 1
Code: Select all
FIND Contact where Contact.osDateOfBirth is undefined AND Contact.DateOfBirth is DEFINED
Process2
Input Contact
Code: Select all
Create DateOfBirth With
DateOfBorth.StartDate= ContactDateOfBirth,
DateOfBorth.StartDate= ContactDateOfBirth,
[fill in the rest of the necessary Appointment attributes]
Contact.osDateOfBirth=DateOfBirth
To do it on a one by one basis modify the BO rule for Date Of Birth to be
Code: Select all
IF Contact.DateOfBirth WAS CHANGED and Contact.DateOfBirth IS DEFINED AND Contact.osDateOfBirth IS UNDEFINED THEN
CREATE DateOfBirth with DateOfBirth.obContact etc etc ELSE
IF Contact.DateOfBirth WAS CHANGED and Contact.DateOfBirth IS DEFINED AND Contact.osDateOfBirth IS DEFINED THEN
Contact.osDateOfBirth.StartTime=Contact.DateOfBirth Contact.osDateOfBirth.EndTime=Contact.DateOfBirth Etc etc
[SOLVED] How add Customer Birthday into Appointment?
Many thanks for you, my issue have been solved.PointsWell wrote:call the process1 as a once off This will create all the DateOfBirth Appointment BOs that are missing
Regards,
Suwandy
-----------------
Kisaran - Indonesia
Suwandy
-----------------
Kisaran - Indonesia