会計時に一般品目の照合を行うことにより、請求書の処理をスムーズに行えるようになります。たとえば、サプライヤーに誤った金額を支払うことがなくなります。
請求書の照合については、企業ごとに様々な種類をご利用いただけます。たとえば 3 点照合では、請求書を納品書や発注書などのその他 2 種類の書類と照合します。3 つの書類の項目がすべて一致していれば、お支払いは完了です。商品が問題なく会社に到着している場合のみ、お支払いの対象となります。
以下の構成の例では、DocuWare Workflow Designer で 3 点照合を構成する方法について順を追って説明しています。DocuWare Workflow Manager のバージョン 7.8 以降に搭載されているテーブルデータの照合機能を使用し、請求書、納品書、発注書を対象に説明を行います。
前提条件
このワークフローの手順を DocuWare で再現するために、まずは DocuWare のファイルキャビネットに以下の 3 つの文書を配置します。
ドキュメント番号と、インデックステーブルに一般品目が記載された発注書 (下記のファイルキャビネットの例「Line Items」もご参照ください)
注文番号と、インデックステーブルに一般品目が記載された納品書 (下記のファイルキャビネットの例「Line Items」もご参照ください)
注文番号と、インデックステーブルに一般品目が記載された請求書 (下記のファイルキャビネットの例「Line Items」もご参照ください)
少なくとも以下のようなデータベースフィールドを持つファイルキャビネットが必要となります。
Document Type (テキスト)
Document Number (テキスト)
Order Number (テキスト)
Status (テキスト)
以下の列を持つ Line Items (テーブル)。
ID (テキスト)
Name (テキスト)
Quantity (10 進数)
Unit Price (10 進数)
Amount (10 進数)
また、ワークフローで照合を行うには以下の列が必要です。PO は 発注書 (Purchase Order)、DN は納品書 (Delivery Note) を意味しています。
PO Unit Price (10 進数)
PO Quantity (10 進数)
DN Quantity (10 進数)
Amount Deviation (10 進数)
Quantity Deviation (10 進数)
Match Status (テキスト)
ファイルキャビネットの構成は、以下のようになります。
請求書、発注書、納品書ごとに、3 点照合に使用するすべての一般品目を以下の列に格納する必要があります。
ID (テキスト)
Name (テキスト)
Quantity (10 進数)
Unit Price (10 進数)
Amount (10 進数)
ワークフローの構成
DocuWare では、Workflow Designer を使用して 3 点照合を構成します。そのためには、「前提条件」の章で説明したファイルキャビネットの構成が必要となります。以下の説明におけるインデックスフィールド、テーブル、パラメーターの名前については、そこに記載されている名称を使用しています。
オリエンテーションを目的として、構成が完了したワークフローの概要を最初にこちらで確認することができます。
I. トリガーを定義する
新しい請求書が保存された際にワークフローを起動する開始条件を選択します。
II. 注文番号を取得するためのアクティビティを作成する
最初に、テキスト型のグローバル変数 "GV_myPONumber" を作成します。
次に、アクティビティ "データの割り当て" を "Get PO Number" という名前で作成します。
このアクティビティでは、グローバル変数をインデックスエントリ "注文番号" とともに保存します。これにより、新しい請求書ごとに発注書番号が読み出され、ワークフローで利用できるようになります。注文番号は、請求書、納品書、発注書を明確に割り当てるために使用されます。
III. 発注書、納品書と請求書の照合を構成する
別のアクティビティ "データの割り当て" では、以下の手順で実際の 3 点照合が定義されます。
発注書から単価と数量を取得し、ドキュメント番号 (ここでは注文番号) で照合を行う
納品書から数量を取得し、注文番号で照合を行う
各品目の数量と価格を比較する
照合状況を導出する
請求書のドキュメント状態を設定する
これらの手順を行った後、"データの割り当て" ダイアログはこのようになっています。8 つの行の定義については、以下で詳しく説明します。
1 行目: 発注書から単価と数量を取得する
"データの割り当て" アクティビティのダイアログの 1 行目として、インデックステーブルを選択します。フィールド/変数 "Line items" に複数列を、エントリの種類として インデックステーブルを選択します。
鉛筆のアイコンを使ってテーブルフィールドのデータ割り当てダイアログを開きます。ソースに、前の手順「前提条件」で作成したファイルキャビネットを指定し、インデックステーブル (この例では "Line items") を選択します。
以下の WHERE 句を追加します。
DW_DOCUMENT_TYPE = 'Purchase Order Out' AND DW_DOCUMENTNO = 'GV_myPONumber'
これにより、現在ワークフローにある請求書に対応する発注書をファイルキャビネットから取得できるようになります。
そして、注文のデータを請求書の同じデータへと割り当てます。"行" タブに切り替え、"Matchcode で行を構成する" を有効にします。
並べ替えるために、Matchcode として "Line Items[ID]" 列を選択します。
"列" タブに移動し、照合先と照合元の列を割り当てます。
2 行目: 単価と数量を請求書の金額に一致させる
"データの割り当て" アクティビティのダイアログで、発注書の単価と数量のデータが請求書と一致しているかどうかを計算するための新しい行を追加します。請求書の金額 − (注文の単価 * 注文の数量)。
照合先としてインデックステーブル - 単一列 > Line Items - 一致金額 > 演算式を入力します。
以下の式を追加します。
DW_LINE_ITEMS[LINE__LINE_AMOUNT]-
(DW_LINE_ITEMS[LINE__PO_QUANTITY]*DW_LINE_ITEMS[LINE__PO_UNIT_PRICE])
この式は、金額が一致した場合は "0" を、一致しなかった場合には差額を返します。
3 行目: 納品書から数量を取得する
3 行目を追加します。照合先は、インデックステーブル - 単一列 > Line Items - DN Quantity > インデックステーブルです。
鉛筆アイコンからテーブルフィールドのデータ割り当てダイアログを開きます。ソースファイルキャビネットと "Line Items" テーブルを指定します。
以下の WHERE 句を追加します。
DW_DOCUMENT_TYPE = 'Delivery Note In' AND DW_ORDER_NUMBER = 'GV_myPONumber'
これにより、適切な納品書が取得されます。
"行" タブに切り替え、"Matchcode で行を構成する" を有効にします。並べ替えるために、Matchcode として "Line Items[ID]" 列を選択します。
"列" タブに移動し、照合先と照合元の列を割り当てます。
4 行目: 納品書のデータを請求書と比較する
新しいデータ割り当てを追加し、以下のような一致しない組み合わせがないかどうかを確認します。
請求書の数量が発注書の数量に一致しない
請求書の数量が納品書の数量に一致しない
発注書の数量が納品書の数量に一致しない
このために、照合先として以下を選択します。インデックステーブル - 単一列 > Line Items - Match Quantity > 演算式
以下の式を追加します。
iif(DW_LINE_ITEMS[LINE__QUANTITY]<>DW_LINE_ITEMS[LINE__PO_QUANTITY],DW_LINE_ITEMS[LINE__QUANTITY]-DW_LINE_ITEMS[LINE__PO_QUANTITY],iif(DW_LINE_ITEMS[LINE__QUANTITY]<>DW_LINE_ITEMS[LINE__DN_QUANTITY], DW_LINE_ITEMS[LINE__QUANTITY]-DW_LINE_ITEMS[LINE__DN_QUANTITY],iif(DW_LINE_ITEMS[LINE__PO_QUANTITY]<>DW_LINE_ITEMS[LINE__DN_QUANTITY],DW_LINE_ITEMS[LINE__PO_QUANTITY]-DW_LINE_ITEMS[LINE__DN_QUANTITY],0)))
この式は、数量が一致した場合は "0" を、それ以外の場合には一致しなかった組み合わせの差を返します。
5、6、7 行目: 請求書の状態を導出する
新しいデータ割り当てを 3 つ追加します。照合先として、インデックステーブル - 単一列 > Line Items - Match Status > 固定エントリを選択し、各行の一致状況を以下のように入力します。
フィルターを使用して検索し、正しい行に以下のように記述します。
✓ OK
Amount Deviation!
Quantity Deviation!
8 行目: ドキュメントの状態を "Review" に設定する
最後のデータ割り当てでは、照合中にデータの不一致が検出された場合、請求書のドキュメント状態をデフォルトで "Review" に設定します。
IV. 照合の評価
すべての行が一致しているかどうかを評価するために、"状態" アクティビティを追加します。
このために "照合状態" 列の値がカウントされますが、これは基本的に "Amount Deviation!" と "Quantity Deviation!" がどの程度発生しているかをカウントしています。もしもカウントが "0" であれば、すべての一般品目が一致していることを意味しています。
ここでは、パラメータの綴りに上記と全く同じものを使用することが重要となります。
以下の式を追加します。
Count(Filter(DW_LINE_ITEMS[LINE__MATCH_STATUS], "Amount Deviation!")) = 0 AND Count(Filter(DW_LINE_ITEMS[LINE__MATCH_STATUS], "Quantity Deviation!")) = 0
タスクアクティビティ "Review Invoice" に一致しない請求書をすべてルーティングします。
その他の請求書については、ドキュメントの状態を "Approved" に設定している "データの割り当て" アクティビティへとルーティングを行います。これにより、請求書の支払いが完了していることが確認されます。