Hi, I am a complete novice with all of this, so please pretend I'm 5 years old.
I have a Purchase Request form that gets circulated around my company.
A user has the form generator on their desktop and one of the fields is a date/time field that I use to create a "serial number" for traceability.
I've assigned it an action to return a serial number in the following format:
//+ ActionName: DateTimeField1.initialize
this.resolveNode("$").rawValue = util.printd("yyyy-mm-dd", new Date());
//-
this.resolveNode("$").rawValue = util.printd("yyyymmddHHMMss", new Date());
which provides the following number: 20200421113111 (year 2020, month 04, day 21, hour 11, minute 31, seconds 11). Basically, the "Serial number" is snapshot of when the form was created.
This Purchase Requisition Form also has an "Email Submit Button" that will be used to send the form to the Purchasing Agents in the company.
I want the form to keep the serial number (the snapshot, in this example 20200421113111) in the DateTimeField1 locked down, so when the Purchasing Agent (or anyone else) opens the form in the future, that field always reads that serial number snapshot.
Is this possible?
Also bonus points if when the Email Submit Button is clicked, it actually reads that serial number from the DateTimeField1 location, and saves the file as a .pdf with that serial number as the file name.
Can anyone help me? Thank you so much in advance.
Solved! Go to Solution.
Views
Replies
Total Likes
Don't use the Action Build if possible. It creates very complex scripts, that are hard to read.
Just add the following JavaScript with the script editor.
if (this.isNull) {
this.rawValue = util.printd("yyyymmddHHMMss", new Date());
}
Views
Replies
Total Likes
To execute a script just once use an if expression. Here's an example.
// Only if the field is blank, execute the following script!
if (this.isNull) {
// Put the script to be executed here!
}
The e-mail can be populated with values from form fields. I made a small macro, that helps you to create such script easily.
Here you go: https://thelivecycle.blogspot.com/2012/05/mailto-maker-marco-v1.html
Views
Replies
Total Likes
Hi Radzmar,
Thanks for the response, I really really appreciate it. Like I said, I'm pretty new at this.
So I've taken what did look like this:
topmostSubform.Page1.DateTimeField1::initialize - (JavaScript, client)
//+ GENERATED - DO NOT EDIT (ID:B8F51925-FDEE-463A-A99D-9ECC39F9124A CRC:1146231519)
//+ Type: Action
//+ Result1: SetFieldValue("$Node1","totoday","")
//+ Node1: topmostSubform[0].Page1[0].DateTimeField1[0]
//+ Condition1: DateField("$Node1","initialized","")
//+ ActionName: DateTimeField1.initialize
this.resolveNode("$").rawValue = util.printd("yyyy-mm-dd", new Date());
//-
this.resolveNode("$").rawValue = util.printd("yyyymmddHHMMss", new Date());
and based on what you've said, I've changed it to this:
topmostSubform.Page1.DateTimeField1::initialize - (JavaScript, client)
if (this.isNull) {this.resolveNode("$").rawValue = util.printd("yyyy-mm-dd", new Date())};
this.resolveNode("$").rawValue = util.printd("yyyymmddHHMMss", new Date());
Is that the intent?
Views
Replies
Total Likes
Don't use the Action Build if possible. It creates very complex scripts, that are hard to read.
Just add the following JavaScript with the script editor.
if (this.isNull) {
this.rawValue = util.printd("yyyymmddHHMMss", new Date());
}
Views
Replies
Total Likes
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies