Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Use Business Maps to fill in fields from related modules
#1
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?
Reply
#2
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 : (Accountsship_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 : (Accountsship_street)</OrgfieldName>
        <
OrgfieldID>FIELD</OrgfieldID>
      </
Orgfield>
     </
Orgfields>
  </
field>
  <
field>
    <
fieldname>bill_street</fieldname>
    <
Orgfields>
      <
Orgfield>
        <
OrgfieldName>$(parent_id : (Accountsbill_street)</OrgfieldName>
        <
OrgfieldID>FIELD</OrgfieldID>
      </
Orgfield>
     </
Orgfields>
  </
field>
  <
field>
    <
fieldname>bill_city</fieldname>
    <
Orgfields>
      <
Orgfield>
        <
OrgfieldName>$(parent_id : (Accountsbill_city)</OrgfieldName>
        <
OrgfieldID>FIELD</OrgfieldID>
      </
Orgfield>
     </
Orgfields>
  </
field>
  <
field>
    <
fieldname>ship_city</fieldname>
    <
Orgfields>
      <
Orgfield>
        <
OrgfieldName>$(parent_id : (Accountsship_city)</OrgfieldName>
        <
OrgfieldID>FIELD</OrgfieldID>
      </
Orgfield>
     </
Orgfields>
  </
field>
  <
field>
    <
fieldname>bill_code</fieldname>
    <
Orgfields>
      <
Orgfield>
        <
OrgfieldName>$(parent_id : (Accountsbill_code)</OrgfieldName>
        <
OrgfieldID>FIELD</OrgfieldID>
      </
Orgfield>
     </
Orgfields>
  </
field>
  <
field>
    <
fieldname>ship_code</fieldname>
    <
Orgfields>
      <
Orgfield>
        <
OrgfieldName>$(parent_id : (Accountsship_code)</OrgfieldName>
        <
OrgfieldID>FIELD</OrgfieldID>
      </
Orgfield>
     </
Orgfields>
  </
field>
  <
field>
    <
fieldname>ship_country</fieldname>
    <
Orgfields>
      <
Orgfield>
        <
OrgfieldName>$(parent_id : (Accountsship_country)</OrgfieldName>
        <
OrgfieldID>FIELD</OrgfieldID>
      </
Orgfield>
     </
Orgfields>
  </
field>
  <
field>
    <
fieldname>bill_country</fieldname>
    <
Orgfields>
      <
Orgfield>
        <
OrgfieldName>$(parent_id : (Accountsbill_country)</OrgfieldName>
        <
OrgfieldID>FIELD</OrgfieldID>
      </
Orgfield>
     </
Orgfields>
  </
field>
  </
fields>
</
map
Reply
#3
Nice!! :-)
Joe
TSolucio
Reply
#4
I added it to the wiki: http://corebos.org/documentation/doku.php?id=en:adminmanual:businessmappings:store:businessmap_helpdesk2salesorder

Thanks!
Joe
TSolucio
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)