Posts Tagged “force.com”


弊社では見積書や請求書の作成/管理に ZohoInvoice を使用しています。
これだけの機能が低価格で利用できるのでとても重宝していますが、

  • 見積のタイトルを入力する欄がない (無理やりTermのフィールドをタイトルとして使用しています。)
  • 一覧に見積のタイトルを表示できないので管理がしづらい
  • ステータスが Draft/Sent/Deleted しかないので管理がしづらい

といった難点もありました。

見積書の数も増えてきてさすがにそろそろ管理の限界に近づいたので、ZohoInvoiceで公開されているAPIを使用してSalesforce上にデータを同期するようにしてみました。

一覧管理ができればいいので見積の明細までは同期せず、タイトル、顧客名、見積番号、総額などをカスタムオブジェクトに登録するようにしました。
ざっと以下のような手順です。

  1. 見積管理のカスタムオブジェクトを作成
  2. VisualForce ページを新規に作成して、初期実行メソッドでZohoInvoiceと通信、データを同期するプログラムを作成。
  3. 上記ページをカスタムボタンに割り当て
  4. ボタンをリストビューに表示

これで一覧性が良くなり、またステータスも細かく管理できるようになりました。

Comments ZohoInvoiceのデータをSalesforceに同期してみた はコメントを受け付けていません


概要

sRecordは seasar2の S2JDBC, それをまねて作った拙作teeple2のActiveRecordと似たような使い方でSalesforceのデータを取り扱うことができるPHP5ライブラリです。google codeにオープンソースとして公開していますので是非ご利用ください。
http://code.google.com/p/srecord4p/

SalesforceのAPIでは複数のレコードをまとめて処理することが可能です。これにより通信オーバヘッドを軽減することができます。
Srecord_ActiveRecord#create()が単一レコードの作成だったのに対して、Srecord_Schema::createAll()を使うことで複数レコードを一度に作成できます。

createAll

Srecord_Schema::createAll()は Srecordオブジェクトの配列を引数に取り、それらのデータにしたがって全てのレコードをSalesforceに登録します。各レコードの結果は、各オブジェクトのgetState()メソッドで確認することができます。


$a1 = new Sobject_Account();
$a1->Name = 'Scott';

$a2 = new Sobject_Account();
$a2->Name = 'Tigger';

Srecord_Schema::createAll(array($a1,$a2));

if ($a1->getState() === Srecord_ActiveRecord::STATE_SUCCESS) {
    // success
} else {
    // false
    print_r($a1->getErrors());
}


updateAll, upsertAll, deleteAll, undeleteAll も同様です。

updateAll


$records = Srecord_Account::neu()->eq('Type', 'Prospect')->select();
foreach ($records as $record) {
    $record->Type = 'Other';
}
$successAll = Srecord_Schema::updateAll($records);
if (! $successAll) {
    // handle error
}


upsertAll


$records = array();
for ($i=0; $i<count($_POST['extid']); $i++) {
    $extid = $_POST['extid'][$i];
    $name = $_POST['name'][$i];
    $account = new Sobject_Account();
    $account->extid__c = $extid;
    $account->Name = $name;
    $records[] = $account;
}

$successAll = Srecord_Schema::upsertAll('extid__c', $records);
if (! $successAll) {
    // handle error
}


deleteAll


$records = Srecord_Account::neu()->eq('Type', 'Prospect')->select();
$successAll = Srecord_Schema::deleteAll($records);
if (! $successAll) {
    // handle error
}


undeleteAll



$records = Srecord_Account::neu()->eq('Type', 'Prospect')->select();
$successAll = Srecord_Schema::undeleteAll($records);
if (! $successAll) {
    // handle error
}


Comments SalesforceのデータにアクセスするためのPHP5ライブラリ「sRecord」の使い方(8) はコメントを受け付けていません


概要

sRecordは seasar2の S2JDBC, それをまねて作った拙作teeple2のActiveRecordと似たような使い方でSalesforceのデータを取り扱うことができるPHP5ライブラリです。google codeにオープンソースとして公開していますので是非ご利用ください。
http://code.google.com/p/srecord4p/

今日はdelete, undelete について説明します。非常に簡単です。

delete

delete()の引数にIdを指定する方法と、エンティティのプロパティにIdをセットする方法があります。


$result = Sobject_Account::neu()->delete('xxxxxxxxxxxxxxxx');

または


$account = new Sobject_Account();
$account->Id = 'xxxxxxxxxxxxxxxx';
$result = $account->delete();

undelete

undeleteは削除を取り消す機能です。こちらも使い方はdeleteと同じです。


$result = Sobject_Account::neu()->undelete('xxxxxxxxxxxxxxxx');

または


$account = new Sobject_Account();
$account->Id = 'xxxxxxxxxxxxxxxx';
$result = $account->undelete();

Comments SalesforceのデータにアクセスするためのPHP5ライブラリ「sRecord」の使い方(7) はコメントを受け付けていません


概要

sRecordは seasar2の S2JDBC, それをまねて作った拙作teeple2のActiveRecordと似たような使い方でSalesforceのデータを取り扱うことができるPHP5ライブラリです。google codeにオープンソースとして公開していますので是非ご利用ください。
http://code.google.com/p/srecord4p/

今日はupsertについて説明します。
指定したカラムの値が同じレコードが存在したらUPDATE,存在しなければINSERTを行なう機能です。

使い方

upsert()メソッドの第一引数に`外部ID`となるカラム名をセットします。指定したカラム名でUPDATE or INSERTを判断します。
下記の例では JyugyoinBango__c の値が 123456 でupsertを行ないます。


$extid = '123456';
$j = new Sobject_Jyugyoin__c();
$j->Name = "Test Member";
$j->JyugyoinBango__c = $extid;
$j->Age__c = 30;
$result = $j->upsert('JyugyoinBango__c');

戻り値はBooleanです。成功した場合はエンティティのIdに値がセットされます。
エラーとなった場合は getErrors()メソッドでerrorオブジェクト(エラーに関する情報)を取得できます。

Comments SalesforceのデータにアクセスするためのPHP5ライブラリ「sRecord」の使い方(6) はコメントを受け付けていません


概要

sRecordは seasar2の S2JDBC, それをまねて作った拙作teeple2のActiveRecordと似たような使い方でSalesforceのデータを取り扱うことができるPHP5ライブラリです。google codeにオープンソースとして公開していますので是非ご利用ください。
http://code.google.com/p/srecord4p/

今日はupdate(データの更新)について説明します。
エンティティにセットしたプロパティのみ更新する update()と、全プロパティ(値がセットされていなければNULLになる)を更新するupdateEntity()があります。

使い方

更新したいプロパティに新しい値をセットし update() を実行します。
プロパティにNULLをセットしたいときは fieldnull() を使うか、update()メソッドの第一引数に配列(NULLにしたいプロパティ名)で渡します。


$account = new Sobject_Account();
$account->Id = '0018000000UoDxpAAF';
$account->Name = 'Tigger';
$account->fieldnull('ParentId');
$result = $account->update();
if (! $result) {
    print_r($account->getErrors());
}

updateEntity

update()は空のプロパティを更新しないのに対して updateEntity()は全てのプロパティを更新します。(空のプロパティはNULLになります。)
このメソッドは select()で取得したものを更新するのに役立ちます。


$account = Sobject_Account::neu()->find('0018000000UoDxpAAF');
$account->Name = 'Tigger';
$account->ParentId = NULL;
$result = $account->updateEntity();

Comments SalesforceのデータにアクセスするためのPHP5ライブラリ「sRecord」の使い方(5) はコメントを受け付けていません