![見出し画像](https://assets.st-note.com/production/uploads/images/29900888/rectangle_large_type_2_fb803fab17275b876fbba7be3fc0fcc7.jpeg?width=1200)
NP掛け払い for Salesforceを導入してみた
こんにちは。かなざわです。
もともとこちらのNP掛け払いは社内で利用していたのですが、
NP掛け払い for Salesforceがあるのを見つけて利用してみました。
https://appexchangejp.salesforce.com/appxListingDetail?listingId=a0N3A00000FMdMGUA1
やりたかったこと
自サービスの利用料金はシステム的にNP掛け払いに連携できていたのですが、単発で発生する請求管理(コンサル料など)はスプレッドシードで管理してました。確認漏れや、二重入力等の手間が発生してたので、salesforceでまとめて管理をするために導入しました。
NP掛け払い for Salesforceを利用すると、
・salesforceに登録された住所が請求先情報として利用できる
・salesforceに登録した売上が取引情報として利用できる
ようになり、
(いろいろな人が管理する)スプレッドシート⇒CSVでダウンロード⇒NPへアップロード(請求業務のため)+salesforceへアップロード(売上管理のため)
から、
同じフォーマットのsalesforce⇒ボタン一つでNPへアップロード
へめちゃめちゃ簡略化。
二重入力も不要になり、確認フローもシンプルになりました!
連携の流れ
salesforce上にNP掛け払いの購入企業情報と、取引情報をもつオブジェクトを用意し、それをNPと連携をすることで、データのやり取りができます。
まず、AppExchageから「NP掛け払いforSalesforce」をダウンロードするのですが、現在(2020/6/29)問い合わせが必要みたいです。
連携方法は問い合わせ後マニュアルがあるのでそれを参照。
連携前にsalesforceでいくつか準備をする必要があるので、その部分について。
下準備①オブジェクトの準備
①購入企業情報と連携するオブジェクト
請求書を送付する情報や担当者の情報が登録されたオブジェクトです。
弊社では「取引先」を利用しました
②取引情報と連携するオブジェクト
請求金額や、請求日が登録されたオブジェクトです。
弊社では「請求情報」というカスタムオブジェクトに請求情報を格納していたので、それを利用しました。
取引先が請求情報の親オブジェクトである必要があります。
請求情報に新規参照項目を追加し、取引先が参照できるようにしておきます。
③取引明細と連携するオブジェクト
取引の明細、単価、数量をが登録されたオブジェクトです。
NP登録時の明細になります。「請求明細」を作成しました。
弊社の運用では、明細に消費税を登録するので、最低でも税抜きの利用料+消費税分の2レコードが紐づきます。
請求情報が親オブジェクトである必要があります。
※契約情報のオブジェクトはNP連携には利用しません。
NPの請求書のとの対応はこんな感じ。
下準備②必要な項目を準備する
オブジェクトの準備が終わったら、連携にあたり必須項目を準備します。
取引先に部署名や担当者名がある場合はそのまま使えばよいと思います。
足りない項目は新規で作成します。
<取引先>
●購入企業名(必須)⇒取引先名(既存)
●購入企業ID(必須)⇒(新規)
ー購入企業を識別するIDです。一意である必要があります。
●住所(必須)⇒(新規)
ーsalesforceのデフォルト項目で住所(請求先)がありますが、選択することができない(2020/6/29現在)ので数式項目を追加しました。
BillingState & BillingCity & SUBSTITUTE(BillingStreet, SUBSTITUTE($Label.LineBreak, "-", ""), "")
NPへ連携時改行が含まれると、エラーになるので、SUBSTITUTE~で改行を除く処理を入れています。詳細は下記リンク参照
●電話番号(必須)⇒(既存)
●メールアドレス⇒(既存)
●部署名⇒(既存)
●担当者名⇒(既存)
●郵便番号(必須)⇒(既存)
<請求情報>
●加盟店取引ID(必須)⇒(新規)
⇒取引ごとのIDです。これも一意である必要があります。
弊社では既存のルールがあったのでそれに基づいて作成するようにしましたが、特にルールがなければ、自動採番項目を利用するのがよさそう
●加盟店取引注文日(必須)⇒請求日
⇒弊社では、請求日=請求金額の確定日というニュアンスで利用しています。取引情報登録時に過去⽇付(当⽇を含む)必要があるので注意です。
実際請求する日、請求書の発行日とは異なります。
●取引金額(必須)⇒(新規)
⇒実際請求する金額です。項目タイプが「通貨」である必要があります。初期の段階で、請求金額を数値タイプで作ってしまったゆえに、数式の戻り値のデータ型が「通貨」の数式を追加しました。
<請求明細>
●明細(必須)⇒請求明細名
⇒請求書に○○代と表記される部分です。
●単価
●数量
下準備③ユーザが取引情報を作成できるようにする
ここまで準備すると気づきますが、NPに連携するためには3つのオブジェクトを入力作成する必要があります。
実際salesforceを利用しているとわかると思いますが、普通にめんどくさいですよね?
普通にやろうとすると、
取引先を開いて編集し、請求先住所を入れて保存。
関連オブジェクトから請求情報を新規作成し、請求金額・請求日等を入れて保存。最後請求金額を開いて利用料金+消費税分の明細情報を作成して保存。と、結構めんどくさいです。
なるべくユーザに手間がかからないように自動化したいと思います。
目標は
・ー画面で請求先情報・取引情報入力が完結する
・必要な情報が自動計算される
・請求明細まで自動作成される
・特定の請求情報が作成されたら通知する
です。
自動化にはプロセスビルダーとフローをよく利用しますが
・複数のオブジェクトにまたがる情報を一画面で入力できる
する必要があるので、今回はフローを利用します。
下準備④フローを作成する
完成後の入力画面です。この右側の一画面で、取引先と請求情報を入れられるようにしています。
請求情報の登録は、取引先画面もしくは、契約情報の画面で行えるようにしています。
フローの全体像です。
①新規フローを作成
「設定」⇒「フロー」⇒「新規フロー」⇒「画面フロー」を選択し、フローの設定画面を開きます。
1.取引先・契約情報のIDを入れる変数を作る
マネージャ⇒新規リソースから変数を二つ作成します。この変数には、請求情報登録の作業をするレコードのIDが入ります。
<取引先ID>
リソース種別:変数
API参照名:TargetAccountID
データ型:テキスト
入力で使用可能:check
<契約情報ID>
リソース種別:変数
API参照名:TargetContractID
データ型:テキスト
入力で使用可能:check
2.取引IDを格納する
取引先のページから始まっている場合、自動で取引IDがTargetAccountIDがに格納されます。契約ページから始まっている場合は別途格納する必要があるので、要素から「決定」を追加して、TargetAccountIDがNullかどうか決定します。
TargetAccountIDがNullの場合(契約情報ページから始まっている場合TargetContractIDに契約情報IDが格納されています)、契約情報が紐づく取引先IDをTargetAccountIDに格納します。
要素から「レコードを取得」をドラッグし、
このオブジェクトのレコードを取得:契約情報
条件を満たしている:Id 次の文字列と一致する TargetContractID
最初のレコードのみ:check
項目を選択して変数を割り上げる→個別の変数に保存:Account__c(取引先)→TargetAccountID
上記内容を入力したら、保存します。
決定からやじるしを伸ばして、デフォルトの決定を選択します。
TargetAccountIDにIDが格納された状態になったので、該当の取引先を取得します。(これを行うと入力画面に既存の情報を反映することができるようになります)
表示ラベル:取引先の取得
API 参照名:GetAccount
このオブジェクトのレコードを取得:取引先
条件を満たしている:Id 次の文字列と一致する TargetAccountID
最初のレコードのみ:check
すべての項目を自動的に保存
②入力画面を作成します
要素から「画面」を選択してドラッグします。
画面コンポーネントから、適切な形式の項目をドラックして画面に配置していきます。
デフォルト値の項目で、「GetAccount 取引先>」をクリックすると取引先の情報を引っ張ってくることができます。
一度入力した内容を利用できるので、デフォルト値は設定しておきしょう。
取引先から入力開始した際にはここで、契約情報を選択します。
レコードの選択は「ルックアップ」を使います。取得したレコードIDはTargetContractIDに格納しておきます。
(ルックアップ便利なんですけど、レコード名でしか検索できないのがネックです)
API 参照名:GetContractID(任意)
オブジェクト API 参照名:Billing__c (請求情報のAPI名)
項目 API 参照名:ContractID__c (契約情報のAPI名)
表示ラベル:契約情報選択 (任意)
手動割り当て変数 (詳細):レコードID→{!TargetContractID}
請求料金もろもろを自動計算したかったので、月額/年額の区分、契約期間も入れられるようにしました。こちらの入力したデータはあとで数式で利用するので、わかりやすいAPI名を付けておきます。
③取引先の更新/契約情報の取得
画面で次へをクリックしたら取引先を更新します。
要素から「レコードを更新」をドラックします。
オブジェクト:取引先
条件を満たしている:Id 次の条件と一致する {!TargetAccountID}
取引先レコードの項目値を設定:画面コンポーネントの入力項目を反映
※画面コンポートネントで設定したAPI 参照名
次に、契約情報を取得します。取引先取得と同様です。
表示ラベル:契約情報の取得
API 参照名:GetContract
このオブジェクトのレコードを取得:契約情報
条件を満たしている:Id 次の文字列と一致する TargetContractID
最初のレコードのみ:check
すべての項目を自動的に保存
④確認画面表示後、請求情報を作成します
現時点でユーザは、利用期間と利用料金のみしか入れていませんので、請求金額や売上総額を計算しておきます。
マネージャから新規リソース→数式をクリックします。
例えば、売上総額
API参照名:SalesAmount
数式:{!Imput_UsageFee}*{!First_Period}
※画面で設定した利用料金*期間のAPI名
請求金額
API参照名:BillingAmount
数式:{!Imput_UsageFee}*{!First_Period}*1.1
この計算ができるのもフローを使う利点になります。
画面で入力した値を数式で計算し、その結果を利用できます!
プロセスビルダーだとレコードにあるデータしか使えないですからね。
こんな感じでデフォルト値に入れることもできます。
ここでは、契約終了日の予測値を出しています。
請求日(OrderDate)を利用して、契約期間終了日の前月末日を出す計算式です。
DATE(YEAR({!Imput_OrderDate}),MONTH({!Imput_OrderDate}),1)+365/12*{!First_Period}-1
要素から画面を追加し、作成した数式を表示テキストに張り付けたり、テキストコンポーネントを追加して、デフォルト値の設定をします。
この内容で確定したら、次に請求情報を作成します。要素から「レコードを作成」をドラッグし、
作成するレコード数:1
レコード項目の設定方法:個別のリソース及びリテラル値を使用
オブジェクト:請求情報
請求情報の項目値を設定:入力した項目、数式を反映
手動割り当て変数 (詳細):新規リソースー変数ーAPI名 TargetBillingIDを作成し、{!TargetBillingID}を選択
請求情報を作成したら、次に使用料金と消費税の明細を作成します。
要素から「レコードを作成」を2つドラッグし、明細情報を作成します。
作成するレコード数:1
レコード項目の設定方法:個別のリソース及びリテラル値を使用
オブジェクト:請求明細
請求情報の項目値を設定:入力した項目、数式を反映
●請求情報(Billing__c)←{!TargetBillingID}
●明細(Detail__c)/明細名(name)←商品名 OR 消費税
※明細名(Name)は、お客さん側の請求書の取引明細になります。今回一つは「商品名」、もう一つは「消費税」と入力します。
●数量/単価
最後、完了画面も追加しておきます。
要素から「画面」をドラッグ。表示テキストを右に追加し、「請求情報の登録が完了しました!」などの文言を記載します。
繰り返し請求情報が作られないよう、ナビゲーションを制御から、「前へ」のチェックを外しておきます。
これでフローの作成は完了です。保存をし、有効化します。ランタイム~のようなエラーが出ても問題ないです。
下準備⑤フローを配布する
作成したフローをユーザが利用できるようにします。今回は画面入力のフローなので、Lightning レコードページに追加します。
契約オブジェクト(取引先オブジェクト)のレコードページを開き、右側の歯車マークをクリックし、編集ページを開きます。
編集画面で、左側のコンポーネントから「フロー」を右側にドラッグします。一番右のフローの設定画面で、今回作成したフローを選択します。また、契約オブジェクト(取引先オブジェクト)のIDをフローで作成した、TargetContractID(TargetAccountID)に返すチェックボックスにチェックをしておきます。
ここまでの作業で、NP掛け払いに連携するオブジェクト作成の準備が完了しました!
レコードページがに入力画面が表示され、入力内容に応じて自動で請求情報が登録されます。
やりたかった
・ー画面で請求先情報・取引情報入力が完結する
・必要な情報が自動計算される
・請求明細まで自動作成される
まで完了しました。
下準備編は以上です。
次回は、請求情報登録とNP連携の運用について書いていきたいと思います。