RayKit よくある質問

バーコードで読み取ったデータを整形したり、詳細ページを表示したりすることはできますか?

読み取りが完了したときのアクションハンドラに指定することで実装できます。
以下は、GcBarcodeScannerVFを使って読み取った値を整形し、その整形したデータとSalesforceの項目の値をマッピングさせ該当するレコードの詳細ページを表示するサンプルとなります。

■Visualforceページ_ProcessAfterScan.vfp

<!-- カスタムコントローラをページと関連付ける。-->
<apex:page controller="_ProcessAfterScanController" docType="html-5.0" applyBodyTag="false" applyHtmlTag="false" sidebar="false" standardStylesheets="false" showHeader="false">
<apex:slds />
<div class="slds-scope" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<article>
<div>
<!-- GcBarcodeScannerVFを配置する。 -->
<gcbc:GcBarcodeScannerVF id="gcBarcodeSanner_single" buttonText="Scan" onScanComplete="{!onSingleScanCompleteAction}" scanResults="{!SingleScanResult}"
reRender="navigationContainer" styleClass="slds-button slds-button_brand" style="width:90px;" />
</div>
<div class="slds-card__body slds-card__body_inner">
<!-- バーコードが検知された後に更新されるセクションを指定する。 -->
<apex:outputPanel id="navigationContainer" layout="block"></apex:outputPanel>
</div>
</article>
</div>
</apex:page>

■Apexクラス_ProcessAfterScanController.cls

public class ProcessAfterScanController {

public string SingleScanResult{get;set;}

//読み取りが完了したときのアクションハンドラを指定する。
public PageReference onSingleScanCompleteAction(){
String recordId = getMatchRecordId();

//詳細ページを表示する。ここでは該当する取引先の詳細ページを表示する。
return (new ApexPages.StandardController (new Account(Id=recordId))).view();
}

private String getMatchRecordId(){

String result = this.SingleScanResult;

//読み取った値を整形する。ここでは読み取った値の後ろの5桁を抽出する。
if(result .length() > 5) {
result = result.substring(result.length() - 5, result.length());
}

//取り出した値を使ってレコードを検索する。ここでは取引先オブジェクトのFax項目とマッピングする。
Account[] accounts = [SELECT Id,Fax FROM Account WHERE Fax = :result];
if(accounts.Size() <= 0) {
return '';
}

//条件に合致したレコードが存在する場合、そのレコードのIDを返却する。
return accounts[0].Id;
}
}
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています

0 コメント

サインインしてコメントを残してください。