見積品目および見積pdfの「並び順(SortOrder)」に関する標準仕様とカスタム制御の追加について

By | May 29, 2020

概要

Salesforce標準の見積PDF機能をご利用の方はご存知かもしれまんが、「見積品目の並び順」と「見積pdfの並び順」、前者を手動で並び替えない限り一致しません。

この記事ではその裏側の仕組みとその一致のズレをなくす方法について解説していきます。

↓見積品目(ProductB→ProductA→ProductCの順に並んでいる。)

↓上記をPDF出力したもの(商品の並び順がA→B→Cに変わっている。)

標準仕様の裏側

商談から見積レコードを生成した段階で、見積レコードページの関連リストに表示される見積品目の一覧の並び順は品目レコードが「INSERTされた順番」です。

実は見積品目には「並び順(SortOrder)」という隠し項目があるのですが、この段階でその「並び順(SortOrder)」項目の値はnullになっています。

この状態(=「並び順」項目がnull)のまま見積PDFを出力すると、品目は自動で昇順に並びます。

商品名並び順
ProductBnull
ProductAnull
ProductCnull

↓PDF出力すると自動で商品名の昇順に変わる

商品名並び順
ProductAnull
ProductBnull
ProductCnull

=============

次に、ユーザが見積品目の順番を「並び替え(Sort)」を用いて並び替えたとします。

すると、見積品目の「並び順(SortOrder)」項目にその順番が記録されます。

その後、PDF出力をすると今度は”商品名の昇順”ではなく上記の”並び順”に従って明細が並びます。

・「Sort」を使って並び替えると「並び順(SortOrder)」が自動入力される

商品名並び順
ProductC1
ProductB2
ProductA3

↓PDF出力すると、(商品名の昇順ではなく)上記の「並び順」に従って品目が並ぶ

商品名並び順
ProductC1
ProductB2
ProductA3

標準仕様の回避策(前書き)

一度手で並び替えないと”見積レコード上の商品の並び順”と”PDF上の明細の並び順”が一致しないという標準仕様は、見積PDFを日常的に利用しているユーザにとってはとても不便だと思います。

以下で回避策をご紹介致します。

標準仕様の回避策(具体策)

見積品目レコードが生成されるタイミングで「並び順(SortOrder)」が入るようにしてしまえば、最初から”見積レコード上の商品の並び順”と”PDF上の明細の並び順”を一致させることが可能です。

具体的には↓

①「商品(Product2)」または「価格表エントリ(PriceBookEntry)」に「並び順(SortOrder__c)」項目をカスタムで作成

※一意にしておく

②見積品目レコード生成時に、参照先「商品(Product2)」の「並び順(SortOrder__c)」項目の値を取得し、それを見積品目の「並び順(SortOrder)」標準項目に反映させるロジックをプロセスビルダーまたはフローで実装する。