Changes

Pandora - Sample - Create Company Hierarchy

3,981 bytes added, 17:07, 23 March 2011
Created page with 'The following Pandora script can be used to create a company hierarchy. ==Steps Required== * Import or Autoload the companies into a company container. * Add the script to a…'
The following Pandora script can be used to create a company hierarchy.

==Steps Required==
* Import or [[Autoload]] the companies into a company container.
* Add the script to a static HTML page in a [[SmartFolder]], including a button to trigger the script

The script works as follows:
* For each company found within the '''CompanyContainer''', move the company under the parent company (match parent company name in a custom field on the autoloaded company)
* A maximum of 200 companies will be moved. For more click the button multiple times.
* The '''rootCompany''' must not be within the '''companyContainer''' so that the companies are moved out as the script runs.


<pre>
function goMove(){
ss_developer_key="12345sdgagfi+Cf8Kwg3eA=";

var parentCompanyName="cf_555555"; //fieldid of the company custom field with the name of the parent company for each company.
var companyContainer=605040; //[[companyid]] of the company containing the imported/autoloaded companies to be moved into a hierarchy.
var rootCompany=501000; //[[companyid]] of the container the companies should be placed into.

var crs=company_find(false,"","name,catlist,parentlist,companyid,"+parentCompanyName," parentlist like '%,"+companyContainer+",%'","",0,200,"");
for(var i=1;i<=crs.recordcount;i++){
var cpname=crs.getfieldbyname(i,'name');
var pname=crs.getfieldbyname(i,parentCompanyName);
if(pname==""){
//alert("No parent so move "+cpname+" to root");
moveCompany(crs.getfieldbyname(i,'companyid'),rootCompany);
}else{
var ncp=company_find(false,"","name,catlist,parentlist,companyid,"+parentCompanyName," name='"+pname+"'","",0,200,"");
if(ncp.recordcount==1){
//alert("Parent is "+crs.getfieldbyname(i,parentCompanyName)+" so move "+cpname+" to "+ncp.getfieldbyname(1,'name'));
moveCompany(crs.getfieldbyname(i,'companyid'),ncp.getfieldbyname(1,'companyid'));
}else
alert("Error: "+ncp.recordcount+" companies match parent company name "+pname);
}
}


function moveCompany(coid,pcoid){
ss_developer_key="12345sdgagfi+Cf8Kwg3eA=";
var companyCategoryAdd=1940; //company category to be added to companies

ss_developer_key="12345sdgagfi+Cf8Kwg3eA=";
var rset=new ssRecordSet();
rset.addfieldnames("catlist,companyid,pcompany");
var idx=rset.getnewrecnumber();
rset.addfieldvaluebyname(idx,'companyid',coid);
rset.addfieldvaluebyname(idx,'pcompany',pcoid);
rset.addfieldvaluebyname(idx,"catlist",","+companyCategoryAdd+",");
var rsc = company_update(false,'',rset);
var rsc2=category_update(false,"",rset);
}
</pre>


Move contact under parent company field (match company name in a custom field on the contact to the company)

<pre>
function goMove(){
ss_developer_key="12345sdgagfi+Cf8Kwg3eA=";
var userContainer=407080; //companyid of the company the users to be moved are within.
var parentCompanyName="cf_1340001" //id of contact custom field with the name of the parent company.

var contactrs = contact_find(false,'',"firstname,lastname,userid,companyid,"+parentCompanyName,"companyid='"+userContainer+"'",'',0,200,'');
for(var j=1;j<=contactrs.recordcount;j++){
var pname=contactrs.getfieldbyname(j,parentCompanyName);
var crs=company_find(false,"","name,companyid"," name='"+pname+"'","",0,2,"");
if((crs) && crs.recordcount==1)
moveUser(contactrs.getfieldbyname(j,'userid'),crs.getfieldbyname(1,'companyid'));
else
alert("Cannot move user "+contactrs.getfieldbyname(j,'firstname')+" "+contactrs.getfieldbyname(j,'lastname')+". Company "+pname+" not found.")
}


function moveUser(uid,pcoid){
ss_developer_key="12345sdgagfi+Cf8Kwg3eA=";
var rset=new ssRecordSet();
var idx=rset.getnewrecnumber();
rset.addfieldnames("userid,companyid,isexternal");
rset.addfieldvaluebyname(idx,'userid',uid);
rset.addfieldvaluebyname(idx,'companyid',pcoid);
rset.addfieldvaluebyname(idx,'isexternal','1');
var rsc = contact_update(false,'',rset);
}

</pre>

[[Category:Pandora]]
0
edits