Index: INSTALL.txt =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/salesforcewebform/INSTALL.txt,v retrieving revision 1.2.2.1 diff -u -r1.2.2.1 INSTALL.txt --- INSTALL.txt 11 Jan 2009 05:58:04 -0000 1.2.2.1 +++ INSTALL.txt 25 Jan 2010 01:51:34 -0000 @@ -40,6 +40,8 @@ 7. Create or edit a webform to match your lead form. Under 'SalesForce Settings', select the 'Yes' option to post the form to SalesForce. + At a minimum, a Lead form must include Last Name, Email, and Company fields. + Under 'Webform Advanced Settings', add the following code for 'Additional Processing': '', 'not null' => TRUE)); + break; + } + return $ret; +} + \ No newline at end of file Index: salesforcewebform.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/salesforcewebform/salesforcewebform.module,v retrieving revision 1.14.2.4 diff -u -r1.14.2.4 salesforcewebform.module --- salesforcewebform.module 22 Apr 2009 02:49:16 -0000 1.14.2.4 +++ salesforcewebform.module 25 Jan 2010 01:45:10 -0000 @@ -38,14 +38,24 @@ ); $salesforce_form['salesforcesettings']['use_salesforce'] = array ( - '#type' => 'radios', - '#title' => t('Submit to SalesForce'), - '#options' => array( - 1=>t('Yes'), 0=>t('No') - ), - '#description' => t('If yes, the form will be sent via SOAP to SalesForce. Make sure you have specified the username & password in Administer->Site Configuration->SalesForce Webform first.'), - '#default_value' => ($form['#node']->use_salesforce) ? $form['#node']->use_salesforce : 0, + '#type' => 'radios', + '#title' => t('Submit to SalesForce'), + '#options' => array( + 1=>t('Yes'), 0=>t('No') + ), + '#description' => t('If yes, the form will be sent via SOAP to SalesForce. Make sure you have specified the username & password in Administer->Site Configuration->SalesForce Webform first.'), + '#default_value' => ($form['#node']->use_salesforce) ? $form['#node']->use_salesforce : 0, ); + + $salesforce_form['salesforcesettings']['salesforce_object'] = array( + '#type' => 'select', + '#title' => t('Object Type'), + '#options' => array( + 'l' => t('Lead'), 'c' => t('Contact'), 'a' => t('Account'), + ), + '#description' => t('Select which object type to submit to.'), + '#default_value' => ($form['#node']->salesforce_object) ? $form['#node']->salesforce_object : 'l', + ); /* End SalesForce settings form */ // integrate the SalesForce form into the form @@ -91,21 +101,22 @@ if ( isset($node->use_salesforce) ) { // store the SalesForce fields $result = db_query("DELETE FROM {salesforcewebform} where `vid` = %d", $node->vid); - $result = db_query("INSERT INTO {salesforcewebform} (`vid`, `use`) " . - "VALUES (%d, %d)", $node->vid, $node->use_salesforce); + $result = db_query("INSERT INTO {salesforcewebform} (`vid`, `use`, `object`) " . + "VALUES (%d, %d,'%s')", $node->vid, $node->use_salesforce, $node->salesforce_object); } break; case 'validate': break; case 'load': - $result = db_query("SELECT `use` from {salesforcewebform} ". + $result = db_query("SELECT `use`, `object` from {salesforcewebform} ". "WHERE `vid` = %d", $node->vid); // either $result has 0 or 1 rows, if we have one then add it to the node $row = db_fetch_array($result); if ( $row['use'] == '1' ) { $node->use_salesforce = TRUE; + $node->salesforce_object = $row['object']; } else { $node->use_salesforce = FALSE; @@ -208,8 +219,19 @@ return $spec; } -function salesforcewebform_process($form, $form_state) { - +function salesforcewebform_process($node, $form, $form_state) { + $object_typecode = ($node->salesforce_object) ? $node->salesforce_object : "l"; + switch($object_typecode) { + case "l": + $object_type = "Lead"; + break; + case "c": + $object_type = "Contact"; + break; + case "a": + $object_type = "Account"; + break; + } $form_values = $form_state['values']; //Get the path to the Toolkit, set in the options on install. @@ -275,10 +297,9 @@ $sObjects = array(); $sObject = new sObject(); - $sObject->type = 'Lead'; // Salesforce Table or object that you will perform the upsert on + $sObject->type = $object_type; // Salesforce Table or object that you will perform the upsert on $sObject->fields = $all_fields; array_push($sObjects, $sObject); - //This passes the client = the login to sales force // the $sObjects = data to upsert // $file_updated = accounts which are updated @@ -321,9 +342,9 @@ // The string is the same, regardless of the result $data2 = $sObjects[$k]->fields['NAME'] . ", " . $sObjects[$k]->fields['SA_ID__C']; - if ($result->success) + if (!is_array($result) && !is_object($result)) { - if ($result->created) + if (strlen($result) == 18) { $accounts_created++; // file_put_contents($file_created, $data2 . "\n", FILE_APPEND); @@ -338,7 +359,7 @@ { $accounts_failed++; // The errors object also contains fields and status_code - $errMessage = $result->errors->message; + $errMessage = $result->message; // file_put_contents($file_failed, $data2 . ", " . $errMessage . "\n", FILE_APPEND); } $k++; @@ -346,6 +367,9 @@ // Put the result counts into an array to pass back as the result. $success = array(); array_push($success, $accounts_created, $accounts_updated, $accounts_failed); + if($errMessage) { + drupal_set_message($errMessage); + } return $success; } catch (exception $e) Index: salesforcewebform_fields.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/salesforcewebform/salesforcewebform_fields.inc,v retrieving revision 1.6.2.2 diff -u -r1.6.2.2 salesforcewebform_fields.inc --- salesforcewebform_fields.inc 22 Apr 2009 02:49:16 -0000 1.6.2.2 +++ salesforcewebform_fields.inc 25 Jan 2010 01:34:52 -0000 @@ -48,6 +48,12 @@ 'NumberOfEmployees' => 'Employees', 'Campaign' => 'Campaign_ID', + //Contact settings + 'ContactOwner' => 'Contact Owner', + + //Account settings + 'AccountOwner' => 'Account Owner', + //Special SID Field to map for editing 'WebformSID__c' => 'Webform SID Key',