AppSheet 同じパターンの見積書をテンプレート化する

何度も同じような見積書を作成しているうちに、テンプレート化して使いまわしたいと思うことがあると思います。

例えば、1度作成した見積書を、同じような内容で再度見積を行うことはよくあります。見積書に関わらず、請求書・納品書なども同様です。

今回は、作成した帳票をテンプレート化して、次回の作成時に呼び出せるようにする方法をご紹介します。

作成代行も行っておりますので、相談やお問合せは、お問い合わせ よりお願い致します!

テーブル構成

今回は見積書の作成を例に、帳票のテンプレート化をご紹介したいと思います。テーブルは4つで構成されます。

  • 見積書
  • 見積書明細
  • 見積書テンプレート
  • 見積書明細テンプレート

「見積書」と「見積書明細」が基本の構成となります。それと対をなすテンプレート用のテーブルとして「見積書テンプレート」と「見積書明細テンプレート」を作成しています。

見積書テーブル

テンプレートから作成した際に、どのテンプレートから作成したか分かるように「利用見積書テンプレート番号」を設けいています。それ以外は普通の見積書に存在する項目になっています。

  • 見積書管理番号
  • 利用見積書テンプレート番号
  • ステータス
  • 見積作成日
  • 見積作成担当者
  • 顧客ID
  • 合計(税抜)

見積書明細テーブル

どの見積書に紐づくかを判別するために「見積書管理番号」を設け「Ref」で参照させます。これも通常の項目と思います。

  • 見積書管理番号
  • 見積項目ID
  • 単価(税抜)
  • 個数
  • 消費税率

見積書テンプレートテーブル

見積書から作成されるテンプレートになります。テンプレートから見積書を作成する時に、初期値を入れた状態でコピーしたい場合は、項目を追加することで実現可能です。

  • 見積書テンプレート番号
  • コピー元案件
  • 見積書テンプレート名

見積書明細テンプレートテーブル

どの見積書テンプレートと紐づくかを判別するために、「見積書テンプレート番号」をRefタイプとして、見積書テンプレートテーブルに紐づけます。

  • 見積書テンプレート番号
  • 見積項目ID
  • 単価(税抜)
  • 個数
  • 消費税率

処理イメージ

処理のイメージを図で説明します。

①見積書からテンプレートを作成

画面からユーザが「テンプレート化」ボタンを押すことで、見積書のテンプレートを作成します。

ポイントは、見積書テンプレートに「コピー元案件」を「Ref」タイプで保持することで、見積書明細を「Related 見積書明細s」で取得できる点です。

  1. 画面からユーザが「テンプレート化」ボタンを押す
  2. 画面に表示している見積書データが、見積書テンプレートへコピーされる
  3. 見積書テンプレートに新規にデータが追加されたことを検知
  4. 見積書に紐づく見積書明細データを、見積書明細テンプレートへコピー

②テンプレートから見積書を作成

画面から「テンプレートから作成」ボタンを押すことで、新規に見積書を作成し、作成した見積書の入力フォームを表示します。

こちらは、画面遷移を行うため1連の処理(オートメーションは非同期)にしたかったので、少し無理をして(見積明細書作成で前提を置いて)アクションのみで実現しています。

また、見積書のキーである「見積書管理番号」を「見積書明細」に紐づける点でも工夫をしています。

  1. 画面から「テンプレートから作成」ボタンを押す
  2. 見積書テンプレートから、見積書を作成
  3. 上記で作成した見積書の「見積書管理番号」を取得し見積書明細を作成
  4. 作成した見積書の入力フォームを画面に表示

以下では、具体的に作成方法をご説明していきます。

①見積書からテンプレートを作成

画面からユーザが「テンプレート化」ボタンを押す

ここは通常のイベントを作成します。

画面に表示している見積書データが、見積書テンプレートへコピーされる

ボタンを押下することで、以下のアクションを実行します。

  • Action name:テンプレート化
  • For a record of this table:見積書管理
  • Do this:Add a new row to another table using values from the childs rows from this row
  • Table to add to:見積書テンプレート

項目には、後続の処理で見積書明細をコピーする際に必要な「コピー元見積書」に、「見積書管理番号」を入れます。

また「見積書テンプレート番号」は、後続の見積書明細のコピーと一致するように機械的に採番します。

[案件管理番号]&"_"&(COUNT(filter(見積書テンプレート管理,[コピー元案件]=[_THISROW].[案件管理番号])))

(※以下は「コピー元案件」「案件管理番号」となっていますが読み替えてください。)

見積書テンプレートに新規にデータが追加されたことを検知

見積書テンプレートに新規にデータが追加されたことを検知して動くオートメーションを作成します。

When this EVENT occurs:見積書テンプレート管理にデータが追加

以下のCustom actionで「Run action on rows」を作成します。

  • Referenced Table:見積書詳細
  • Referenced rows:filter(見積書詳細,[案件管理番号]=[_THISROW].[コピー元案件])
  • Referenced Action:テンプレート化トリガー
見積書に紐づく見積書明細データを、見積書明細テンプレートへコピー

呼び出す見積書詳細の「テンプレート化トリガー」は、見積書詳細からテンプレート化対象の明細に対して「テンプレートデータコピー」を実行します。

  • Action name:テンプレート化トリガー
  • For a record of this table:見積書詳細
  • Do this:execute an action on a set of rows
  • Referenced Table:見積書詳細
  • Referenced Rows:filter(見積書詳細,[案件管理番号]=[_THISROW].[案件管理番号])
  • Referenced Action:テンプレートデータコピー

テンプレートデータコピーの「見積書テンプレート番号」は、見積書のテンプレート化時に採番した番号と同じとなるようにします。これにより、テンプレート化した見積書と見積書明細を紐づけることが可能になります。

[案件管理番号]&”_”&(COUNT(filter(見積書テンプレート管理,[コピー元案件]=[_THISROW].[案件管理番号])))

②テンプレートから見積書を作成

テンプレートから見積書作成トリガー

以下の一連の処理をグループ化するアクションです。

  1. 見積書作成
  2. 見積書明細作成
  3. 作成後画面遷移

見積書作成

見積書テンプレートから、新規に見積書を作成する処理です。

  • Action name:見積書作成
  • For a record of this table:見積書テンプレート
  • Do this:Add a new row to another table using values from this row
  • Table to add to:見積書管理

見積書明細作成

上記で指定した見積書に紐づく見積書明細の項目「Related 見積書テンプレート詳細s」に対して、「見積書詳細データコピー」を実施します。

見積書詳細データコピーでは、「見積書管理番号」に、新しく採番された「見積書管理番号」を設定するために以下の数式を入れます。

any(select(見積書管理[見積書管理番号],[_rownumber]=max(見積書管理[_rownumber])))

これにより、「見積書管理番号」に新しく追加した番号を採番することが出来ます。

作成後画面遷移

新しくしたら、そのまま見積書を作成したくなるため、新しい見積書の入力フォームへ画面遷移させます。

そのため、以下の処理を行います。

  • Action name:作成後画面遷移
  • For a record of this table:見積書テンプレート管理
  • Do this:go to another view within this app
  • Target:
LINKTOROW(any(select(見積書管理[案件管理番号],[_rownumber]=max(見積書管理[_rownumber]))),"見積書管理_Form")

最後に

以上で、何度も作成する見積書/請求書/納品書/領収書などのビジネス帳票をパターン化して、業務生産性を向上できるようになります。

もし、自社でも利用したいなどのご要望がございましたら、作成代行も行っておりますので、相談やお問合せは、お問い合わせ よりお願い致します!

Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です