I am working on custom SharePoint calendar which uses .NET code to render VCALENDAR payload with the email which I send to all attendees.
So far my implementation is working great except for updating recurring events. Outlook didn't able to recognize modified DTSTART/DTEND when I send updated VCALENDAR with same UID. Look like I am missing particular field for recurring events.
Here is sample of my VCALENDAR which I am sending to all attendees to update existing recurring event:
BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:Microsoft CDO for Microsoft Exchange
VERSION:2.0
BEGIN:VTIMEZONE
TZID:tz
X-MICROSOFT-CDO-TZID:10
LAST-MODIFIED:20111229T172655Z
BEGIN:STANDARD
DTSTART:20111106T020000
TZOFFSETTO:+0000
TZOFFSETFROM:+0000
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:20120313T020000
TZOFFSETTO:+0100
TZOFFSETFROM:+0000
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
SUMMARY:Simple Event\, Attendees:Tin Tin
ORGANIZER:MAILTO:tin.tin#acme.com
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=;X-NUM-GUESTS=0:mailto:tin.tin#acme.com
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=;X-NUM-GUESTS=0:mailto:tin.tin#acme.com
LOCATION:Conference Room
DTSTAMP:20111229T172652Z
UID:D26B0632-8496-4E76-977F-E7A04AF4CF4D
SEQUENCE:1
URL;VALUE=URI:http://acme/Lists/Conf/DispForm.aspx?ID=1178
DTSTART;TZID=tz:20111229T140000
DTEND;TZID=tz:20111229T150000
RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=TH;WKST=SU
END:VEVENT
END:VCALENDAR
To properly update any existing event through VCalendar, always make sure to increment the SEQUENCE value in VEVENT section:
BEGIN:VEVENT
SUMMARY:Simple Event\, Attendees:Tin Tin
ORGANIZER:MAILTO:tin.tin#acme.com
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=;X-NUM-GUESTS=0:mailto:tin.tin#acme.com
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=;X-NUM-GUESTS=0:mailto:tin.tin#acme.com
LOCATION:Conference Room
DTSTAMP:20111229T172652Z
UID:D26B0632-8496-4E76-977F-E7A04AF4CF4D
**SEQUENCE:2**
URL;VALUE=URI:http://acme/Lists/Conf/DispForm.aspx?ID=1178
DTSTART;TZID=tz:20111229T150000
DTEND;TZID=tz:20111229T160000
RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=TH;WKST=SU
END:VEVENT
END:VCALENDAR
Related
I am using the user exit USEREXIT_SAVE_DOCUMENT_PREPARE to check some positions in a delivery for some specific criteria.
I just want to do this whenever PGI is triggered. For this I use this condition in the user-exit:
IF ( sy-tcode EQ 'VL01N' OR
sy-tcode EQ 'VL02N' ) AND
sy-ucomm EQ 'WABU_T'.
But now I am afraid that this is not enough for cases like:
booking the exit directly from vl02n (without checking the positions)
book the exit via "Edit --> Post Good Issue"
editing the positions and book
Are there some further options which can be checked to make sure that there is a booking?
How can I make completely sure that a post of goods was triggered in fact?
You can try to utilize Workflow to cover all possible cases.
Create Workflow event which will be triggered upon delivery creation/change and check for Post Goods Issue there. Delivery BO is LIKP so go to tcode SWU_EWCD and enter data like this
Workflow events are based on change documents so every times smth is written to the table it will be fired. Check that your event is properly created in SWEC transaction.
You can also create events based on NACE conditions. After that use your event to generate your own workflow.
Also BAdI LE_SHP_DELIVERY_PROC may be of interest for you, it has method
SAVE_AND_PUBLISH_BEFORE_OUTPUT which is executed before saving of delivery.
You have to check value in T180-TRTYP. If value is 'H' then it is create booking otherwise it is change booking.It is better to remove transaction code and sy-ucomm condition and condition for T180-TRTYP.
regards,
Umar Abdullah
How to change Sales Order - Send by Email template, not the text but style of the sent mail.
For example, change header/footer color or if possible completely disable HTML and send all e-mail messages as plain text.
Looks like this is pulling from the Sale Order Notification Email. I went into Settings > Technical > Email > Templates, searched for that Notification Email template and replaced the Content with the following:
${object.body | safe}
This is defined in the paynow and other Views that apply to the mail model.
Look in table mail.message and see which layout it's using.
I need to include the value 'PO/Check Num' from the APPLY Sublist, on the PDF template for Customer Payments. This value doesn't show up in the sublist by default, by opening up a Customer Payment in EDIT Mode, you can customize the sublist and show this column. On my other templates this value is available using the script; ${record.otherrefnum}
I have looked in the Netsuite ScriptID guide, but have not found the right tag to include the highlighted values in screenshots attached.
I have tried variations of ${record.apply.otherrefnum} but no luck so far
I just found the following in SuiteAnswers if anyone still needs this answer. Users must customize their payment page to show the PO/Check # column for this solution to work.
Print the PO# in Customer Payment using Advanced PDF/HTML Template
Published 05/28/2021 07:35 PM | Updated 05/28/2021 07:35 PM | Answer Id: 99734
Applies To
Product: NetSuite 2021.1
Scenario
Print the PO# field in the Customer Payment record.
Solution
Navigate to Customization > Forms > Advanced PDF/HTML Templates
Preferred Advanced PDF/HTML Template: Click Edit
Source Code: Click Toggle Switch
Add the code below:
${apply.Transaction_OTHERREFNUM}
Click Save
In Plug or workflow
How to get stage IDs or Names dynamically from entity
How to get current stage Required fields Names dynamically not hard coded Using c# or js or any other method
if any idea, Share please!
You can get an entity's metadata from CRM by issueing a RetrieveEntityRequest. In the response you get an EntityMetadata object having an Attributes collection providing all attribute details you need.
The CRM SDK contains clear example code on this topic. More information about working with attribute metadata can be found on MSDN.
I guess you are talking about the client functions to query the Business Process Flow attributes?
In CRM 2015 there is now clientside functionality implemented to the retrieve process, stage and step information.
With Xrm.Page.data.process.getActiveProcess() you can get the current workflow process and retrieve a Process object.
You can use the following methods to retrieve further and deeper information about the process:
Process:
string: .getId();
string: .getName();
stage[]:.getStages();
bool:.isRendered();
Stage :
string:.getId();
string: .getName();
int: .getCategory().getValue();| stage category Optionset
string: .getStatus(); | „active“ , „inctactive“
step[]:.getSteps();
bool:.isRendered();
Step (the attributes):
string: .getAttribute(); | logical attribute name
string: .getName();
stage[]:.getStages();
This works in CRM 2015 but not in CRM 2013.
You find further information here:
https://technet.microsoft.com/de-de/library/dn531164.aspx
FYI to start, I am aware of how to properly set up an update to a lookup, and am 99% positive I've done this correctly.
I know this because When I set the workflow to automatically start when an Item is Changed, then it works perfectly. But when I simply change this setting so it will automatically start on New Item Creation, it Cancels the workflow and I get a "Coercion Failed: Unable to transform the input lookup data into the requested type." If both options are checked then it fails on creation, but simply clicking edit on the item properties, and the "Save" makes it work.
The workflow is on a Document Library and works as follows;
User selects the Work Task LookUp from a dropdown in the edit properties form after uploading, and then Saves the item (adding it to the document library). The workflow is suppose to then look at the Work Task LookUp selected, and pull the Account and Effective Date-Type lookUp ID's that Work Task item has, and sets the Document's identical fields to the same value.
Here is the code for the workflow if it helps;
If Current Item: Parent Task is not empty
If Current Item: Sub Task is not empty
Log Both are empty to workflow history list
Then Set Account to Work Tasks:Account
The Log Set Account to workflow history list
Then Set Effective Date and Type to WorkTasks: Effective Date and Type
The Log Set EffDateType to the workflow history list
This is all done in one step. I also added additional steps to test if the account and effective date type fields have been set properly, and if not to set them again. But everytime I run the workflow on change and it works, it always correctly sets these fields based upon the first Step (posted above) and the additional check logs to the history that they are not needed.
As an example, The lookUp for Integer for Tasks:Account is set to work as follows;
Date Source: Work Tasks (a list)
Field from Source: Account (a lookup)
Return Field as: Lookup ID (as Integer)
Find the List Item
Field: Title (from the Work Tasks list)
Value: Current Item: Parent Task (Which is a look up of the "Title"
Field from Work Tasks List, and is set to return the Value as a LookUp Value (As Text))
The Effective Date and Type setting is pretty much identical.
So anyone have any insight? I've tried running it as an impersonated Step, setting a workflow pause (for 1 minute), changing the lookup types incase I messed it up to start with, but ultimately the above workflow DOES work, but only when I set it to "Automatically start on the Change (edit) of an Item", NOT "Automatically start on New Item Creation" like I need to to do.
Oh yes, fyi, I am using SPServices CascadingDropDown on the Work Task and Sub Task fields of the doc Library form, but I honestly do not believe this has anything to do with my issue.
UPDATE:
I've talked with another developer, and he believes it is due to the issue that the workflow is occuring too quickly, before the item creates an ID for itself, which it needs to conduct the lookUps. He had me add another "Pause Workflow" to the very top of my workflow code (above the If conditions) and set it for 1 minute.
It then worked properly.
Downside is we want this to labeling to occur as close to item creation as possible. Because a view of the library relies on grouping based upon Account and Effective Date and Type. To add to this downer, Microsoft's Pause Workflow only allows for 1 minute or more, and then the timer used for this is often off, resulting in a pause longer than that. So far, every test is currently showing 2 minutes minimum on the pause.
A possible alternative solution for instantaniously populate the fileds is to use Javascript and SPServices to do the lookUp to the Task list to pull the account and effective date - type fields and then populate, but my Javascript is not very strong and I would need help doing this. If anyone has any suggestions, I would appreciate them.
(Answered in a question edit. Converted to a community wiki answer. See Question with no answers, but issue solved in the comments (or extended in chat) )
The OP wrote:
I don't know if it is the ID for the item after further testing. I changed the start of the workflow to wait until a field in the item changes. I set it to wait until the ID field is not 0 (since you cannot set to null), and it still does not work.
6/14/2012 4:13 PM Comment System Account Waiting on ID
6/14/2012 4:13 PM Comment System Account Waiting complete on ID
6/14/2012 4:13 PM Error System Account Coercion Failed: Unable to transform the input lookup data into the requested type.
I have tried other fields as well, like document ID value is not empty, and it will wait, log it finishing the wait, and then fail.
UPDATE This issue has something to do with the Parent Task field. I have solved the issue without having to wait for a period of time by setting the change from above to wait until the Parent Task field is not empty. It then completes the workflow fine.
Anyone know why there is a delay though? I've solved it, but still don't fully understand what takes it so long.
The main fault has been solved (hence the answer), and the remaining point about the reasons for the delay would probably be a discussion point or not specific enough for SO. Any further clarification can be edited in here.