The CreatorCon Call for Content is officially open! Get started here.

Transform Script Field Mapping

brostoff17
Tera Contributor

I am trying to map a field from a data source through a transform script, but I keep getting an error after I run the transform.   Any idea what could be wrong here?

I want to map the additional_field (datasource) to the "additional" variable.

When:onBefore

(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {

var cart = new Cart();

//Catalog Item sys_id

var item = cart.addItem('10a2f5dfc6112276018db58138c7a1e0');

//set variables

var dataSource = source.additional_test;

cart.setVariable(item, 'additional', dataSource);

var rc = cart.placeOrder();

     

})(source, map, log, target);

Screenshot of test data source

Capture.PNG

1 ACCEPTED SOLUTION

Finally I figured it out after spending sometime on this.


Basically to create a cart for a specific user I.e set opened_by field you need to place this line above var cart = new Cart(); in your code.



var openedBy = new GlideRecord("sys_user");


openedBy.addQuery("email", source.u_opened_by_work_email);


openedBy.query();


if (openedBy.next()) {


var openedBy = openedBy.sys_id;


}



Now modify the line var cart = new Cart(); as var cart = new Cart(null, openedBy); //This will set the openedBy field on item table.



I think you can also GlideRecord the item table and set the field. I haven't tried that option as of now. Will keep you posted.



P.S : Community is currently down. Will modify your code and update on community once it is up and running.


View solution in original post

27 REPLIES 27

Remove below mentioned lines. This is not required.


var setOpenedBy = cart.getCart();


setOpenedBy.update();


No luck, it still shows the updated by as me on the RITM.


For testing purpose after line 57 put


target.opened_by = 'HARDCODE SYS_ID OF THE USER'; and test once. Let me know.


Opened by is still showing as me. I see there is a dynamic default value on the opened_by field of the RITM table as "sender".   I wonder if this could be causing it to be me.  



Is there a way to override this?


I will check more on this and will get back to you.