I have a use case where I need to do the following:
I've related SalesOrders to HelpDesk. Now I can create an SO from a ticket. Using Business Maps I can make sure some fields are auto-filled during the creation of the SO. But I'd like to do the following through Business Maps: when an SO is created from a ticket, I'd like to be able to fill out the address fields in the new SO, based on the accounts address fields from the account selected in the ticket. Do we have a way of getting fields from related modules like this, without the source fields being present in the source module?
I was reading into
Condition Query Mappings for this. I don't fully understand how to implement these, especially the QueryGenerator part. Could a condition query be used in a Field map to get related fields? And does anyone have an example of this?
Wow, cool stuff this. And it seems I could have known this. I setup a test like this (for anyone looking for something similar):
PHP Code:
<map>
<originmodule>
<originid>13</originid>
<originname>HelpDesk</originname>
</originmodule>
<targetmodule>
<targetid>22</targetid>
<targetname>SalesOrder</targetname>
</targetmodule>
<fields>
<field>
<fieldname>ship_street</fieldname>
<Orgfields>
<Orgfield>
<OrgfieldName>$(parent_id : (Accounts) ship_street)</OrgfieldName>
<OrgfieldID>FIELD</OrgfieldID>
</Orgfield>
</Orgfields>
</field>
</fields>
</map>
Make sure the Orgfield is set to 'FIELD' and test the field selector in an e-mail template in workflows (to get the correct fieldname and syntax). You can create a salesorder from a ticket like this and even fill in fields from the account that the ticket doesn't have!
For anyone looking for a Business Map that auto-fills some address and description data when creating a salesorder from a ticket: here it is:
PHP Code:
<map>
<originmodule>
<originid>13</originid>
<originname>HelpDesk</originname>
</originmodule>
<targetmodule>
<targetid>22</targetid>
<targetname>SalesOrder</targetname>
</targetmodule>
<fields>
<field>
<fieldname>subject</fieldname>
<fieldID>370</fieldID>
<Orgfields>
<Orgfield>
<OrgfieldName>From ticket:</OrgfieldName>
<OrgfieldID>CONST</OrgfieldID>
</Orgfield>
<Orgfield>
<OrgfieldName>ticket_title</OrgfieldName>
<OrgfieldID>159</OrgfieldID>
</Orgfield>
<Orgfield>
<OrgfieldName>ticket_no</OrgfieldName>
<OrgfieldID>146</OrgfieldID>
</Orgfield>
<delimiter> </delimiter>
</Orgfields>
</field>
<field>
<fieldname>account_id</fieldname>
<fieldID>389</fieldID>
<Orgfields>
<Orgfield>
<OrgfieldName>parent_id</OrgfieldName>
<OrgfieldID>148</OrgfieldID>
</Orgfield>
</Orgfields>
</field>
<field>
<fieldname>cf_939</fieldname>
<Orgfields>
<Orgfield>
<OrgfieldName>description</OrgfieldName>
</Orgfield>
</Orgfields>
</field>
<field>
<fieldname>ship_street</fieldname>
<Orgfields>
<Orgfield>
<OrgfieldName>$(parent_id : (Accounts) ship_street)</OrgfieldName>
<OrgfieldID>FIELD</OrgfieldID>
</Orgfield>
</Orgfields>
</field>
<field>
<fieldname>bill_street</fieldname>
<Orgfields>
<Orgfield>
<OrgfieldName>$(parent_id : (Accounts) bill_street)</OrgfieldName>
<OrgfieldID>FIELD</OrgfieldID>
</Orgfield>
</Orgfields>
</field>
<field>
<fieldname>bill_city</fieldname>
<Orgfields>
<Orgfield>
<OrgfieldName>$(parent_id : (Accounts) bill_city)</OrgfieldName>
<OrgfieldID>FIELD</OrgfieldID>
</Orgfield>
</Orgfields>
</field>
<field>
<fieldname>ship_city</fieldname>
<Orgfields>
<Orgfield>
<OrgfieldName>$(parent_id : (Accounts) ship_city)</OrgfieldName>
<OrgfieldID>FIELD</OrgfieldID>
</Orgfield>
</Orgfields>
</field>
<field>
<fieldname>bill_code</fieldname>
<Orgfields>
<Orgfield>
<OrgfieldName>$(parent_id : (Accounts) bill_code)</OrgfieldName>
<OrgfieldID>FIELD</OrgfieldID>
</Orgfield>
</Orgfields>
</field>
<field>
<fieldname>ship_code</fieldname>
<Orgfields>
<Orgfield>
<OrgfieldName>$(parent_id : (Accounts) ship_code)</OrgfieldName>
<OrgfieldID>FIELD</OrgfieldID>
</Orgfield>
</Orgfields>
</field>
<field>
<fieldname>ship_country</fieldname>
<Orgfields>
<Orgfield>
<OrgfieldName>$(parent_id : (Accounts) ship_country)</OrgfieldName>
<OrgfieldID>FIELD</OrgfieldID>
</Orgfield>
</Orgfields>
</field>
<field>
<fieldname>bill_country</fieldname>
<Orgfields>
<Orgfield>
<OrgfieldName>$(parent_id : (Accounts) bill_country)</OrgfieldName>
<OrgfieldID>FIELD</OrgfieldID>
</Orgfield>
</Orgfields>
</field>
</fields>
</map>