株式会社ZEROBASEでは、販売した商品の外注費を管理するための『発注管理』というオブジェクトがセールスフォース内に作成してあります。
このオブジェクト内の各レコードを元に、自動で発注書のPDFが作成されるという形でAPEXクラスとvisualforceが組んであります。
最近とある従業員の方から、「発注先の企業さんが出してくる請求書内の品目が、うちの出した発注書の品目と名称が違うことが多く、どの発注書に対する請求書なのかわからなくて困っている」との相談を受けました。
発注した名称と統一した名称で請求書をだしてもらえば大方は解決しそうですが、同じような内容を何度も発注していると、少しわかりづらいこともあるかと思い、
昔作成した発注書のPDF(visualforce)と、その定義づけのAPEXクラス(OrderPDFController )を修正し、発注管理オブジェクトの発注管理名(Name・自動採番)を表示するようにしてみました。
SandboxでAPEXクラス&テスト作成→本番環境へデプロイという流れを実行しようとしたのですが・・
最近標準オブジェクト内のとある項目を必須扱いにしたことにより、以前ダウンロードした非公式の未管理パッケージに含まれていたテストクラスが、エラーになってしまい、単体カバー率が0%になってしまっておりました。
その結果、全体で80%超えていたカバー率も53%までダウンしてしまっており、このままでは75%に達していないため過去のAPEXクラスのデプロイもできない状態に。

上記の問題を解消したのち、いつもならSandboxから作り直すのですが、せっかくなので、記事にしてみようということでSalesForce CLI を使って、ローカル環境からOrderPDFController だけを指定してデプロイしてみました。
まずはOrderPDFControllerを修正。SOQLにNameを追加します。

続いて、OrderWrapper にプロパティを追加し、constructor で値をセットしました。
次に、Apexファイルをローカルで準備。

最後に、コマンドプロンプトでデプロイを実行。
無事成功しました。

これでAPEX側に発注管理名(Ordermanagement__c の Name) が定義されましたので、最後にvisualforce側を修正します。
今回はmemo-section に発注管理名(Ordermanagement__c の Name)を表示するようににしたいので、それに合わせて改良しました。
そして完成後がこちら↓
※修正前

※修正後

※わかりづらいですが、下の枠に発注ナンバーが表示されるようになってます。
無事成功しました。
未管理パッケージに含まれているAPEXクラスには注意しないといけなさそうです。
今回はいったん必須入力を外すことで対応しましたが、のちのちのことを考えると、早いうちに修正しておいた方がよさそうです。