あなたの受注から入金までのプロセス(請求および会計)データ``テンプレート
あなたの受注から入金までのプロセス(請求および会計)データ``テンプレート
- 収集を推奨する項目
- 追跡すべき主要アクティビティ
- NetSuite向け抽出ガイド
受注から現金化までのプロセス - 請求・入金管理属性
| 名前 | 説明 | ||
|---|---|---|---|
| アクティビティ名 ActivityName | 請求書ライフサイクル内の特定の時点で発生したビジネス`イベント`の名前。 | ||
| 説明 アクティビティ名は、請求プロセス内の特定のステップや これらのアクティビティの順序と頻度を分析することは、 その重要性 この 取得元 NetSuiteの請求書トランザクションに関連付けられたシステムログ、ステータス変更、または特定のイベントレコードから導き出されます。これは多くの場合、トランザクションステータスの変更または関連するレコードの作成を定義された活動名にマッピングする必要があります。 例 請求書作成請求書承認済み顧客からの入金受領請求書全額支払い済み | |||
| イベントのタイムスタンプ EventTimestamp | 特定のアクティビティやイベントが発生した正確な日時。 | ||
| 説明 この
その重要性 イベントの時系列順序を提供し、これはすべての期間ベースのメトリクスを計算し、ボトルネックを特定し、経時的なプロセスパフォーマンスを分析するために不可欠です。 取得元
例 2023-10-26T10:00:00Z2023-10-27T14:30:00Z2023-11-15T09:05:00Z | |||
| 請求書番号 InvoiceNumber | 各請求書文書の一意の識別子であり、請求プロセスの主要な`ケース`識別子として機能します。 | ||
| 説明 請求書番号は、請求プロセス分析の要であり、各請求書を作成から最終的な完了まで一意に識別します。承認、送付、支払い適用といった関連するすべてのアクティビティを、一つのまとまったケースとしてグループ化します。
その重要性 各請求書のエンドツーエンドのライフサイクルを追跡するために不可欠であり、請求プロセス全体を再構築し、詳細なパフォーマンス分析を可能にします。 取得元 これは通常、NetSuiteの請求書取引レコードにある「取引ID」または同様の一意の識別子フィールドです。 例 INV-0012345INV-0012346INV-0012347 | |||
| ソースシステム SourceSystem | データを抽出した元システム。 | ||
| 説明 この より広範な分析の文脈では、特に複数のERPや統合システムを持つ組織において、この その重要性 データの出所とガバナンスに関する重要なコンテキストを提供し、特に複数のシステムが統合されている環境では不可欠です。 取得元 これは、データ抽出および変換プロセス中に付加される静的な値(「NetSuite」)です。 例 NetSuite | |||
| 最終データ更新 LastDataUpdate | ソースシステムからデータが最後に更新されたことを示すタイムスタンプです。 | ||
| 説明 この アナリストやビジネスステークホルダーは、この情報を使用して、洞察が最新の運用状況を反映しているかどうかを理解します。これは、 その重要性 これは、 取得元 この 例 2024-05-21T02:00:00Z | |||
| イベントの終了時刻 EventEndTime | 特定のアクティビティまたは`イベント`が完了した正確な日時。 | ||
| 説明
この その重要性 各活動の完了にかかる時間を正確に計算することを可能にし、これはリソース効率の分析や時間のかかるタスクの特定に不可欠です。 取得元
例 2023-10-26T10:05:14Z2023-10-27T14:32:00Z2023-11-15T09:05:00Z | |||
| ユーザー User | `アクティビティ`を実行した`ユーザー`名または`ID`。 | ||
| 説明 この ユーザー別のプロセス分析は、 その重要性 これは、ワークロード配分、ユーザー固有のパフォーマンス、およびプロセス遵守の分析を可能にし、リソース管理とターゲットを絞ったトレーニングにとって不可欠です。 取得元 NetSuiteの請求書および関連するトランザクションレコードのシステムノートサブタブまたは特定の「変更者」フィールドで利用可能です。 例 Alice SmithBob JohnsonSYSTEM | |||
| 地域 Region | 顧客または取引に関連する地理的地域。 | ||
| 説明 地域 これは比較分析のための強力な側面です。「地域別請求プロセス比較」 その重要性 異なる地理的領域間での比較分析を可能にし、地域ごとのパフォーマンスギャップを特定し、ベストプラクティスを標準化するための鍵となります。 取得元 この 例 北米EMEAAPAC | |||
| 支払期日 DueDate | 請求書の支払い期日。 | ||
| 説明 期日は、請求書発行日と合意された支払い条件に基づいて計算されます。これは、顧客が延滞とみなされずに支払いを行うべき最終期限を示します。 この その重要性 期日内支払いパフォーマンスの測定と顧客支払い行動の分析に不可欠であり、回収業務とキャッシュフロー予測を直接サポートします。 取得元 これは、NetSuiteの請求書取引レコードにある「期日」(duedate)フィールドに対応します。 例 2023-11-252023-11-262023-12-15 | |||
| 自動化 IsAutomated | 活動がシステムによって自動的に実行されたかどうかを示すフラグです。 | ||
| 説明 この この その重要性 プロセスの自動化レベルを測定し、手作業を削減し効率を高める機会を特定するのに役立ちます。 取得元 これは通常、アクティビティに関連付けられた「ユーザー」を 例 truefalse | |||
| 請求合計金額 InvoiceTotalAmount | 税金およびその他の料金を含む、請求書の合計金額。 | ||
| 説明 この 請求金額に基づいてプロセスを分析することで、 その重要性 価値ベースのプロセス分析を可能にし、高価値の請求書を優先し、プロセス非効率性の財務的影響を理解するのに役立ちます。 取得元 これは、NetSuiteの請求書取引レコードにある「合計」(total)フィールドに対応します。 例 1500.0089.9912500.50 | |||
| 請求日 InvoiceDate | 顧客に発行された請求書の正式な日付。 | ||
| 説明 請求書発行日、つまり取引日は、多くの請求関連財務計算の起点となります。これは通常、支払い条件や期日が計算される基準日です。 分析において、この日付は売掛金回収期間(DSO)や請求書滞留期間といった主要な財務KPIを計算するための主要な基準となります。コホート分析を可能にし、月次や年次など異なる期間での請求パフォーマンスの比較を可能にします。 その重要性 この日付は、売掛金回収期間(DSO)や請求書滞留期間のような重要な財務 取得元 これは、NetSuiteの請求書取引レコードにある「日付」(trandate)フィールドに対応します。 例 2023-10-262023-10-272023-11-15 | |||
| 顧客名 CustomerName | 請求書が発行された顧客の名前。 | ||
| 説明 この 顧客別の請求プロセスを分析することで、特定のクライアントに対する支払い行動、紛争、または請求書の複雑さのパターンを特定できます。これにより、顧客セグメンテーション戦略、信用限度額の決定、およびカスタマイズされた回収アプローチに役立つ情報が得られます。例えば、特定の顧客が常に再作業を必要とする請求書を持っているかどうかを明らかにすることができます。 その重要性 顧客中心の分析を可能にし、特定の顧客に固有の支払いパターン、頻繁な問題、またはプロセス逸脱を特定するのに役立ちます。 取得元 これは、NetSuiteの請求書取引レコードにある「顧客」または「 例 `Global Tech Inc.`Innovate Solutions LLCCornerstone Corp | |||
| `売上債権回転日数` DaysSalesOutstanding | 請求書発行日から支払い受領日までの日数。 | ||
| 説明 売上債権回転日数 (DSO) は、請求書発行後、支払い回収にかかる平均日数を測定する主要な財務指標です。この属性は、詳細な分析を可能にするために個々の請求書ごとに計算されます。 DSOは、しばしば高レベルのKPIとして集計されますが、個々の請求書レベルでDSOを持つことで、強力な分析が可能になります。どの顧客、地域、または請求書タイプが最も高いDSOを持っているかを特定するために使用できます。「DSOトレンド」ダッシュボードは、この指標に依存して、経時的な回収効率を視覚化し、運転資金管理に関する重要な洞察を提供します。 その重要性 個々の請求書レベルでの回収効率を定量化し、高いDSOの根本原因分析とキャッシュフローへの影響の詳細な分析を可能にします。 取得元 「顧客からの支払い受領」活動のタイムスタンプから「請求書日付」を差し引いて計算されます。 例 294562 | |||
| アクティビティ処理時間 ActivityProcessingTime | 特定のアクティビティに積極的に費やした時間の長さです。 | ||
| 説明 この計算 これは、「アクティビティ その重要性 各タスクの実際の労力を定量化し、実作業時間とアイドル待機時間を区別し、非効率な活動を特定するのに役立ちます。 取得元 各活動レコードのEventEndTimeからEventTimestamp(StartTime)を差し引いて計算されます。 例 300601200 | |||
| 手戻り IsRework | 手戻りや修正ループとみなされる活動を識別するための計算フラグです。 | ||
| 説明 この この その重要性 非効率な手戻りループにフラグを立てることでプロセス品質を直接測定し、請求エラーの根本原因と財務的影響の分析を可能にします。 取得元 これは、 例 truefalse | |||
| 支払条件 PaymentTerms | 企業と顧客の間で合意された支払い条件。 | ||
| 説明 支払い条件は、顧客が請求書をいつ、どのように支払うべきかを定義します。例えば、「Net 30」や「受領時払い」などです。この情報は、請求書の支払期日を自動的に計算するために使用されます。 この属性は、「支払い条件遵守」ダッシュボードにとって極めて重要です。異なる支払い条件ごとの期日内支払い率を分析することで、その有効性を評価できます。例えば、「Net 15」の条件を持つ顧客が「Net 30」の顧客よりも早く支払うかどうかを示し、将来の契約交渉や信用方針に役立てることができます。 その重要性 異なる支払い条件の有効性と、それが顧客の支払い時期に与える影響を分析するために不可欠です。 取得元 これは、NetSuiteの請求書取引レコードにある「支払い条件」フィールドに対応します。 例 支払条件:正味30日支払条件:正味60日受領時支払い | |||
| 期日内支払い IsOnTimePayment | 顧客からの支払いが請求書の支払期日までに受領されたかどうかを示すフラグです。 | ||
| 説明 この計算された この その重要性 これは回収における明確な成功 取得元 これは計算された 例 truefalse | |||
| 請求書ステータス InvoiceStatus | 請求書ライフサイクルにおける現在のステータス。 | ||
| 説明 この 「未決済請求書ステータス概要」 その重要性 売掛金の現状のスナップショットを提供し、未払い請求書と全体的な請求進捗を監視するダッシュボードを可能にします。 取得元 これは、NetSuiteの請求書取引レコードにある「 例 オープン全額支払い済み取消済み承認待ち | |||
| 販売オーダー番号 SalesOrderNumber | 請求書が発行された販売注文の識別子。 | ||
| 説明 この 販売注文番号を含めることで、受注から入金までのサイクル全体をより包括的に把握できます。これにより、請求における問題を販売プロセスの発生源まで遡って追跡する分析が可能になります。例えば、頻繁な請求書修正が特定の種類の販売注文における その重要性 請求プロセスを販売プロセスにリンクさせ、より広範なエンドツーエンドの受注から現金化までの分析を可能にし、請求問題の根本原因を特定します。 取得元 NetSuiteの請求書トランザクションの「作成元」フィールドまたは「関連レコード」サブタブにあります。 例 SO-0009876SO-0009877SO-0009878 | |||
| 通貨 Currency | 請求金額の通貨コード。 | ||
| 説明 この 多国籍企業にとって、通貨別に分析することは、異なる市場全体の財務パフォーマンスを理解するために重要です。これにより、金銭的価値が正しく解釈され、必要に応じて通貨換算後の適切な集計と比較が可能になります。 その重要性 すべての金額にわたる必要なコンテキストを提供し、これは正確な財務報告と分析、特に多国籍業務において極めて重要です。 取得元 これは、NetSuiteの請求書取引レコードにある「通貨」フィールドに対応します。 例 USDEURGBP | |||
| 部署 Department | 請求書に関連付けられた内部部署です。 | ||
| 説明 この 部門別のプロセス分析は、内部 その重要性 異なる内部部門間でプロセスパフォーマンスを比較することを可能にし、バリエーションと内部プロセス標準化の機会を浮き彫りにします。 取得元 これは、NetSuiteの請求書取引の 例 営業 - エンタープライズプロフェッショナルサービスハードウェア | |||
受注から現金化までのプロセス - 請求・入金管理活動
| アクティビティ | 説明 | ||
|---|---|---|---|
| 請求書作成 | NetSuiteにおける請求書トランザクションレコードの正式な作成を示します。このイベントは、各一意の請求書番号に対する請求プロセスの開始点であり、トランザクションの作成タイムスタンプから捕捉されます。 | ||
| その重要性 これは、請求プロセスの主要な開始 取得元 請求書トランザクションレコードの「作成日」タイムスタンプから捕捉されます。NetSuiteの請求書システムノートにも、作成イベントとユーザーが明示的に記録されます。 取得 請求書トランザクションレコード作成時にログに記録されたイベント。 イベントタイプ explicit | |||
| 請求書全額支払い済み | 請求書のステータスが「全額支払い済み」に変更され、残高がゼロになったことを示します。これは、請求書の請求および回収サイクルの成功裏の完了です。 | ||
| その重要性 これはプロセスの主要な成功終了 取得元 請求書レコードの「ステータス」フィールドが「全額支払い済み」に変更されたことから推測されます。このステータス変更のタイムスタンプは、トランザクションのシステムノートで利用可能です。 取得 システムノートで「ステータス」フィールドが「全額支払い済み」に変更されたことから推測されます。 イベントタイプ inferred | |||
| 請求書承認済み | 請求書が正式に承認され、顧客に送信される準備ができたことを示します。これは、承認ステータスが「承認待ち」から「承認済み」に更新された際に捕捉され、通常は`ワークフロー`アクションによって行われます。 | ||
| その重要性 請求書が顧客に送信されるのを制限する主要なマイルストーンです。承認サイクルタイムの測定や「自動請求比率」KPIの算出に不可欠です。 取得元 請求書レコードの「承認ステータス」フィールドが「承認済み」に変更されたことから推測されます。正確なタイムスタンプは、トランザクションのシステムノートに記録されています。 取得 システムノートで「承認ステータス」フィールドが「承認済み」に変更されたことから推測されます。 イベントタイプ inferred | |||
| 顧客からの入金受領 | 顧客からの支払いが受領され、システムに記録されました。これはNetSuiteにおける「顧客の支払い」トランザクションの作成によって捕捉され、1つまたは複数の請求書に適用される場合があります。 | ||
| その重要性 現金の受領を示しますが、必ずしも特定の請求書への適用を示すわけではありません。これは現金適用プロセスの最初のステップであり、DSO計算の主要なイベントです。 取得元 「顧客の支払い」トランザクションレコードの作成日から捕捉されます。請求書への接続は、支払いの「適用」サブタブで行われます。 取得 顧客の支払いトランザクションレコードの作成。 イベントタイプ explicit | |||
| 顧客へ請求書送付済み | 請求書が顧客に発送されたこと、通常はメールで送信されたことを示します。この`イベント`は、ユーザーが請求書レコードから「メール」アクションを実行した際に追跡され、捕捉されます。 | ||
| その重要性 これは顧客の回収期間の始まりを示し、売掛金回収期間(DSO)を計算するための主要な出発点です。 取得元 請求書レコードの「最終メール送信日」フィールドが入力されたことから推測されます。あるいは、コミュニケーションサブタブ下の電子メールメッセージレコードの作成から捕捉することもできます。 取得 「最終メール送信日」の入力またはコミュニケーションレコードの作成から推測されます。 イベントタイプ inferred | |||
| クレジットメモ作成 | クレジットメモトランザクションが作成され、請求書に適用され、未払い残高が減額されました。これは通常、製品返品、サービス苦情、または価格修正を示します。 | ||
| その重要性 手戻り、品質問題、または顧客との紛争を浮き彫りにします。頻繁に発生する場合は根本的な問題を示す可能性があり、「請求書の手戻りおよび却下分析」ダッシュボードの鍵となります。 取得元 クレジットメモトランザクションの作成から捕捉されます。元の請求書へのリンクは、「作成元」フィールドまたはクレジットメモの「適用」サブタブにあります。 取得 元の請求書にリンクされたクレジットメモレコードの作成。 イベントタイプ explicit | |||
| 承認のために請求書提出済み | 請求書のステータスが「承認待ち」に変わったことを示します。この`イベント`は、ユーザーが設定された承認`ワークフロー`に請求書を提出した際に捕捉され、これは一般的なカスタマイズです。 | ||
| その重要性 このアクティビティは、潜在的な承認 取得元 請求書レコードの「承認ステータス」フィールドが「承認待ち」に変更されたことから推測されます。この変更のタイムスタンプは、請求書のシステムノート監査証跡で見つけることができます。 取得 システムノートに記録された「承認ステータス」フィールドの変更から推測されます。 イベントタイプ inferred | |||
| 支払いが請求書に適用済み | 受領した顧客の支払いがこの請求書に特定的に適用され、未払い額が減少したことを示します。これは、顧客支払いレコードに適用が保存されたときに記録されます。 | ||
| その重要性 これは、現金受領と請求書決済の間の重要な 取得元 顧客の支払いトランザクションのシステムノートまたは監査証跡から、特に請求書明細への適用が保存されたときに捕捉されます。この適用のタイムスタンプが鍵となります。 取得 顧客の支払いレコードが請求書への適用とともに保存されたときにログに記録されます。 イベントタイプ explicit | |||
| 支払いリマインダー発行済み | 未払い請求に関する連絡が顧客に送信されました。これは、請求書または顧客レコードから送信された活動ログまたは電子メールとして捕捉され、多くの場合、督促ソリューションによって行われます。 | ||
| その重要性 回収戦略の有効性を評価するために不可欠です。この活動がその後の支払いに与える影響を分析することで、リマインダーの頻度とタイミングを最適化できます。 取得元 請求書または顧客レコードのコミュニケーション > メッセージサブタブ上のメールレコードの作成から捕捉されます。自動督促ソリューションもこれらをカスタムレコードまたはタスクとしてログに記録する場合があります。 取得 請求書に関連付けられた電子メールまたは活動レコードとしてログに記録されます。 イベントタイプ explicit | |||
| 支払い期日到達 | 請求書の支払期日と現在の日付が一致した際に発生する計算イベントです。これは直接的なユーザーまたはシステムのアクションに対応するものではなく、分析中に既存データから導き出されます。 | ||
| その重要性 支払いの適時性を測定するための重要なベンチマークとして機能します。「期日内支払い率」KPIの算出や顧客の支払い行動の分析に不可欠です。 取得元 これはNetSuiteにおける明示的な 取得 イベントタイムスタンプが請求書の「期日」フィールドと等しい場合に計算されます。 イベントタイプ calculated | |||
| 請求書がクローズ済み | 請求書の取引がクローズされ、しばしば期末会計プロセスの一部として行われます。このアクションにより、請求書が全額支払いおよび照合された後の取引のさらなる変更が防止されます。 | ||
| その重要性 「全額支払い済み」の後に発生することが多いですが、これは最終的な管理ステップとなることがあります。支払いとクローズの間の遅延を分析することで、財務報告の適時性に影響を与える可能性があります。 取得元 「ステータス」フィールドが「クローズ済み」または同様の状態に変更されたことから推測されます。この変更のタイムスタンプはシステムノートから捕捉されます。 取得 システムノートの「ステータス」フィールド変更から推測されます。 イベントタイプ inferred | |||
| 請求書無効 | 請求書が無効化され、事実上キャンセルされて、総勘定元帳への影響が取り消されたことを示します。この措置は通常、支払われる前に誤って作成された請求書に対して取られます。 | ||
| その重要性 これはプロセス例外であり、終端状態を示します。請求書が無効化される理由を理解することで、 取得元 これは明示的なユーザーアクションです。請求書レコードのシステム 取得 請求書のシステムノートに記録された明示的な「無効」アクション。 イベントタイプ explicit | |||
抽出ガイド
ステップ
- NetSuiteにログイン: トランザクションレコードに対する保存済み検索の作成および実行に十分な権限を持つロールを使用して、NetSuiteアカウントにアクセスします。
- 保存済み検索に移動: Reports > Saved Searches > All Saved Searches > New に移動します。検索タイプの一覧から「Transaction」を選択します。これが、各イベントタイプに対応する複数の検索を作成するための基盤となります。
- 「請求書作成」検索を作成: これは、請求書の作成を捕捉する主要な検索です。
- 「基準」タブの「標準」で、「タイプ」フィルターを「is Invoice」に設定します。
- 「Main Line」に別のフィルターを追加し、「is true」に設定して、請求書ごとに1つのレコードを取得します。
- 「結果」タブで、必要な列を追加します。「ActivityName」などの標準化されたフィールドを作成するために数式を使用します。例えば、
_UTF8'Invoice Created'という数式を持つ「数式 (テキスト)」フィールドを追加します。
- ステータス変更(承認、支払い済み、無効、クローズ済み)の検索を作成: 多くの活動はステータス変更です。正確なタイムスタンプを取得する最も信頼できる方法は、システムノートを介することです。
- 新しいトランザクション保存済み検索を作成します。
- 「基準」タブで、「タイプ」を「is Invoice」に設定します。
- 「標準」サブタブの下で、「System Notes : Field」フィルターを追加し、例えば「Approval Status」などの関連するステータスフィールドを選択します。
- 「System Notes : New Value」に別のフィルターを追加し、例えば「Approved」などのターゲットステータスに設定します。
- 「結果」タブで、「System Notes : Date」を
EventTimestampに、「System Notes : Set by」をUserにマップします。 - 「Invoice Submitted for Approval」、「Invoice Approved」、「Invoice Paid In Full」、「Invoice Voided」、「Invoice Closed」など、各ステータスベースの活動についてこのプロセスを繰り返し、それに応じてフィールドおよび値フィルターを調整します。
- 「顧客への請求書送付」検索を作成: このイベントは通常、請求書レコードから送信された電子メールメッセージを追跡することで捕捉されます。
- 「タイプ」を「is Invoice」に設定した新しいトランザクション保存済み検索を作成します。
- 「基準」タブの「関連レコード」の下で、「Messages : Date Sent」にフィルターを追加し、「is not empty」に設定します。
- 「結果」タブで、「Messages : Date Sent」を
EventTimestampに、「Messages : Author」をUserにマップします。
- 支払いおよびクレジットメモ活動の検索を作成: これらは、請求書にリンクされた個別のトランザクションタイプを含みます。
- 「顧客からの支払い受領」の場合、「タイプ」が「Customer Payment」の検索を作成します。作成日をイベントタイムスタンプとして捕捉します。
- 「請求書への支払い適用」の場合、同じ「Customer Payment」検索を使用しますが、「Applied To Transaction」フィールドに結合します。支払いトランザクションの「作成日」がタイムスタンプとして機能します。請求書の適用ごとに1行取得されます。
- 「クレジットメモ作成」の場合、「タイプ」が「Credit Memo」の検索を作成し、「Created From」フィールドにリンクして元の請求書番号を取得します。
- 各保存済み検索を実行し、エクスポート: 作成した各保存済み検索を実行します。結果ページから、エクスポートアイコン(CSV、Excel、またはPDF)をクリックし、CSVを選択します。結果セットがNetSuiteのエクスポート制限よりも大きい場合、バッチでエクスポートする必要がある場合があります。
- データを結合および変換: エクスポートされたすべてのCSVファイルを、Microsoft Excel、Pythonスクリプト、またはデータ準備ツールなどのツールを使用して単一のファイルに統合します。
- 「支払い期日到達」イベントを導出: 結合されたデータファイルで、「Invoice Created」イベントごとに新しい行を作成します。
ActivityNameを「Payment Due Date Reached」に、EventTimestampを請求書のDueDateフィールドの値に設定し、その他の関連する請求書属性をコピーします。 - イベントログを完成: すべての列ヘッダーを必要なスキーマ(例:
InvoiceNumber、ActivityName、EventTimestamp)に一致させるように標準化します。タイムスタンプの形式が一貫していることを確認します。この抽出バッチの静的値でSourceSystemとLastDataUpdate列を追加します。最終的な統合ファイルをアップロード用にCSVとして保存します。
設定
- 前提条件: 「Transaction」タイプの保存済み検索を作成、編集、実行する権限を持つユーザーロールが必要です。また、請求書、顧客の支払い、クレジットメモ、およびシステムノートのレコードを表示するアクセス権も必要です。
- 検索タイプ: すべての抽出に使用される主要な検索タイプは「Transaction」です。このタイプにより、必要なすべてのレコードとその関連情報にアクセスできます。
- 期間フィルタリング: パフォーマンスとデータ量を管理するため、各検索に期間フィルターを適用します。「作成日」に対して過去3~6ヶ月間のフィルターを設定することが初期分析に推奨されます。
- メインラインフィルター: ドキュメントヘッダーレベルのイベント(「請求書作成」など)には、「Main Line」基準を「true」に設定して使用します。明細行の詳細を分析する必要がある場合は「false」に設定しますが、本プロセスでは不要です。
- システムノート: ステータス変更の捕捉はシステムノートに大きく依存します。NetSuiteの設定(Setup > Company > Enable Features > SuiteCloud > SuiteAudit Trail)で、「Status」や「Approval Status」などの主要なトランザクションフィールドの監査が有効になっていることを確認してください。
- パフォーマンスに関する考慮事項: 多数の結合と計算フィールドを含む複雑な検索を広範囲の期間にわたって実行すると、NetSuite UIでの実行が遅くなる可能性があります。これらの検索はピーク時以外の時間帯に実行およびエクスポートすることが推奨されます。検索がタイムアウトした場合は、期間を短縮し、データをより小さなバッチでエクスポートしてください。
a クエリ例 config
/*
This section describes the configuration for multiple NetSuite Saved Searches needed to generate the complete event log. Each block represents a separate Saved Search that must be created in the UI, exported, and then combined externally.
*/
-- Search 1: Invoice Created
Activity Name: 'Invoice Created'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- Main Line is true
Results Columns (Mapped to Event Log Attributes):
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Created'
- EventTimestamp: Date Created
- User: Created By
- InvoiceDate: Date
- DueDate: Due Date
- InvoiceTotalAmount: Amount (Gross)
- CustomerName: Name
-- Search 2: Invoice Submitted for Approval
Activity Name: 'Invoice Submitted for Approval'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- System Notes : Field is Approval Status
- System Notes : New Value is [Your 'Pending Approval' status]
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Submitted for Approval'
- EventTimestamp: System Notes : Date
- User: System Notes : Set by
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 3: Invoice Approved
Activity Name: 'Invoice Approved'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- System Notes : Field is Approval Status
- System Notes : New Value is [Your 'Approved' status]
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Approved'
- EventTimestamp: System Notes : Date
- User: System Notes : Set by
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 4: Invoice Sent to Customer
Activity Name: 'Invoice Sent to Customer'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- Messages : Date Sent is not empty
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Sent to Customer'
- EventTimestamp: Messages : Date Sent (use Maximum summary type if multiple)
- User: Messages : Author (use Maximum summary type)
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 5: Payment Reminder Issued
Activity Name: 'Payment Reminder Issued'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- User Notes : Note contains [Your dunning/reminder keyword]
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Payment Reminder Issued'
- EventTimestamp: User Notes : Date
- User: User Notes : Author
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 6: Credit Memo Created
Activity Name: 'Credit Memo Created'
Saved Search Type: Transaction
Criteria:
- Type is Credit Memo
- Main Line is true
Results Columns:
- InvoiceNumber: Created From : Document Number
- ActivityName: Formula (Text) = 'Credit Memo Created'
- EventTimestamp: Date Created
- User: Created By
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 7: Customer Payment Received
Activity Name: 'Customer Payment Received'
Saved Search Type: Transaction
Criteria:
- Type is Customer Payment
- Main Line is true
Results Columns:
- InvoiceNumber: Applied to Transaction : Document Number
- ActivityName: Formula (Text) = 'Customer Payment Received'
- EventTimestamp: Date Created
- User: Created By
- CustomerName: Name
-- Search 8: Payment Applied To Invoice
Activity Name: 'Payment Applied To Invoice'
Saved Search Type: Transaction
Criteria:
- Type is Customer Payment
- Main Line is false
Results Columns:
- InvoiceNumber: Applied to Transaction : Document Number
- ActivityName: Formula (Text) = 'Payment Applied To Invoice'
- EventTimestamp: Date Created
- User: Created By
- CustomerName: Name
-- Search 9: Invoice Paid In Full
Activity Name: 'Invoice Paid In Full'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- System Notes : Field is Status
- System Notes : New Value is Paid In Full
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Paid In Full'
- EventTimestamp: System Notes : Date
- User: System Notes : Set by
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 10: Invoice Voided
Activity Name: 'Invoice Voided'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- Status is Invoice : Voided
- System Notes : Field is Status
- System Notes : New Value is Voided
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Voided'
- EventTimestamp: System Notes : Date
- User: System Notes : Set by
- CustomerName: Name
-- Search 11: Invoice Closed
Activity Name: 'Invoice Closed'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- System Notes : Field is Status
- System Notes : New Value contains Closed
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Closed'
- EventTimestamp: System Notes : Date
- User: System Notes : Set by
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Event to be Derived Post-Extraction: Payment Due Date Reached
/*
This event is not extracted directly. After combining all other CSVs, create a new row for each unique invoice.
Set ActivityName to 'Payment Due Date Reached'.
Set EventTimestamp to the DueDate value from the 'Invoice Created' event for that invoice.
Copy other attributes like InvoiceNumber, CustomerName, etc.
*/ ステップ
- 前提条件: SuiteAnalytics Connectを有効化: NetSuiteインスタンスでSuiteAnalytics Connectモジュールがライセンスされ、有効になっていることを確認してください。これは通常、NetSuite管理者が「Setup > Company > Enable Features > Analytics」で行います。
- ODBCドライバーのダウンロードと設定: NetSuiteのホームダッシュボードに移動し、「Settings」ポートレットを見つけます。「Set Up SuiteAnalytics Connect」リンクをクリックして、お使いのオペレーティングシステムに適したODBCドライバーをダウンロードします。NetSuiteが提供するインストール手順に従い、サービスホスト、ポート、アカウントID、ロールID、メールアドレス、パスワードを提供してドライバーをインストールおよび設定してください。
- データベース接続の確立: DBeaver、Tableau、Power BIなどのODBC接続をサポートするSQLクライアントツールを使用します。前のステップで設定したドライバーを使用して新しいODBC接続を作成します。接続をテストし、NetSuiteリードレプリカデータベースに正常に認証してアクセスできることを確認してください。
- SQLクエリの準備: 本ドキュメントの「Query」セクションに記載されている完全なSQLクエリをコピーします。このクエリは、受注から現金化までの請求プロセスに必要なすべてのアクティビティと属性を抽出するように設計されています。
- クエリパラメーターの設定: 実行前に、クエリ内のプレースホルダー値を見つけます。抽出期間の開始日と終了日として、
'YYYY-MM-DD'を希望の期間に置き換える必要があります。また、[Your Subsidiary ID]を分析したいNetSuite子会社の内部IDに置き換えます。 - クエリの実行: SQLクライアントで修正したクエリを実行します。実行時間は、期間とNetSuiteアカウント内のトランザクション量によって異なります。
- 結果の確認: クエリが完了すると、イベントログを表すフラットテーブルが返されます。各行は、請求書ライフサイクル内の特定のアクティビティに対応しています。データが完全で正確であることを確認してください。
- イベントログのエクスポート: SQLクライアントからクエリ結果をCSVファイルにエクスポートします。文字化けを防ぐため、ファイルがUTF-8でエンコードされていることを確認してください。
- アップロードの準備: プロセスマイニングツールにアップロードする前に、列ヘッダーがInvoiceNumber、ActivityName、EventTimestampなどの必要な属性名と一致することを確認してください。日付と時刻の形式が一貫していることを確認します。
設定
- SuiteAnalytics Connectライセンス: NetSuiteのリードレプリカデータベースにアクセスするには、SuiteAnalytics Connectモジュールの有効なライセンスが必須です。これがなければ、直接的なSQLアクセスは不可能です。
- 専用のロールとユーザー: SuiteAnalytics Connectに適切な権限を持つ専用のNetSuiteロールを作成することを強く推奨します。このロールは、トランザクション、顧客、システムノートなど、必要なレコードに対する読み取り専用アクセスを持つべきです。セキュリティと監査性を確保するため、抽出用にこのロールに専用のユーザーを割り当ててください。
- 期間フィルタリング: 提供されているクエリには、請求書作成日(
Transaction.TRANDATE)に関するWHERE句が含まれています。初回抽出では、パフォーマンスとデータ量を管理するため、過去3~6ヶ月間など、より短い期間から開始することをお勧めします。例:AND T.TRANDATE BETWEEN '2023-01-01' AND '2023-06-30'。 - 子会社フィルタリング: 複数の子会社を持つアカウントの場合、特定の子会社によるフィルタリングは、パフォーマンスとデータの関連性の両方にとって重要です。クエリには、設定が必要なプレースホルダー
WHERE T.SUBSIDIARY_ID = [Your Subsidiary ID]が含まれています。 - データの鮮度: SuiteAnalytics Connectデータベースはリードレプリカです。データは通常、1時間に複数回更新されますが、リアルタイムではありません。NetSuiteでトランザクションが発生してからConnectデータベースに表示されるまで、数時間の遅延が発生する可能性があることに注意してください。
a クエリ例 sql
WITH Invoices AS (
SELECT
T.TRANSACTION_ID,
T.TRANID AS InvoiceNumber,
T.TRANDATE AS InvoiceDate,
T.DUEDATE AS DueDate,
T.FOREIGN_TOTAL AS InvoiceTotalAmount,
C.COMPANYNAME AS CustomerName,
BUILTIN.DF(C.LOCATION) AS Region,
T.CREATED_DATE AS InvoiceCreationDate,
CREATOR.FIRST_NAME || ' ' || CREATOR.LAST_NAME AS CreatorUser
FROM
TRANSACTIONS T
JOIN
CUSTOMERS C ON T.ENTITY_ID = C.CUSTOMER_ID
LEFT JOIN
EMPLOYEES CREATOR ON T.CREATED_BY_ID = CREATOR.EMPLOYEE_ID
WHERE
T.TRANSACTION_TYPE = 'Invoice'
AND T.TRANDATE BETWEEN TO_DATE('2023-01-01', 'YYYY-MM-DD') AND TO_DATE('2023-12-31', 'YYYY-MM-DD')
-- AND T.SUBSIDIARY_ID = [Your Subsidiary ID] -- Add your subsidiary filter if needed
)
-- 1. Invoice Created
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Invoice Created' AS "ActivityName",
I.InvoiceCreationDate AS "EventTimestamp",
I.InvoiceCreationDate AS "EventEndTime",
I.CreatorUser AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
CASE WHEN I.CreatorUser LIKE '%System%' THEN 1 ELSE 0 END AS "IsAutomated"
FROM
Invoices I
UNION ALL
-- 2. Invoice Submitted for Approval & 3. Invoice Approved
SELECT
I.InvoiceNumber AS "InvoiceNumber",
CASE WHEN SN.NEW_VALUE = 'Pending Approval' THEN 'Invoice Submitted for Approval' ELSE 'Invoice Approved' END AS "ActivityName",
SN.DATE_CREATED AS "EventTimestamp",
SN.DATE_CREATED AS "EventEndTime",
SN_AUTHOR.FIRST_NAME || ' ' || SN_AUTHOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
CASE WHEN SN.AUTHOR_ID < 0 THEN 1 ELSE 0 END AS "IsAutomated"
FROM
Invoices I
JOIN
SYSTEM_NOTES SN ON I.TRANSACTION_ID = SN.TRANSACTION_ID
LEFT JOIN
EMPLOYEES SN_AUTHOR ON SN.AUTHOR_ID = SN_AUTHOR.EMPLOYEE_ID
WHERE
SN.FIELD = 'TRANSACTION.APPROVALSTATUS' AND SN.NEW_VALUE IN ('Pending Approval', 'Approved')
UNION ALL
-- 4. Invoice Sent to Customer
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Invoice Sent to Customer' AS "ActivityName",
M.MESSAGE_DATE AS "EventTimestamp",
M.MESSAGE_DATE AS "EventEndTime",
MSG_AUTHOR.FIRST_NAME || ' ' || MSG_AUTHOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
0 AS "IsAutomated"
FROM
Invoices I
JOIN
MESSAGES M ON I.TRANSACTION_ID = M.TRANSACTION_ID
LEFT JOIN
EMPLOYEES MSG_AUTHOR ON M.AUTHOR_ID = MSG_AUTHOR.EMPLOYEE_ID
WHERE
M.INCOMING = 'F' -- Indicates an outgoing message
UNION ALL
-- 5. Payment Due Date Reached
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Payment Due Date Reached' AS "ActivityName",
I.DueDate AS "EventTimestamp",
I.DueDate AS "EventEndTime",
'System' AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
1 AS "IsAutomated"
FROM
Invoices I
WHERE
I.DueDate IS NOT NULL AND I.DueDate < SYSDATE
UNION ALL
-- 6. Payment Reminder Issued (based on Messages table, requires a specific subject line convention)
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Payment Reminder Issued' AS "ActivityName",
M.MESSAGE_DATE AS "EventTimestamp",
M.MESSAGE_DATE AS "EventEndTime",
MSG_AUTHOR.FIRST_NAME || ' ' || MSG_AUTHOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
CASE WHEN M.AUTHOR_ID < 0 THEN 1 ELSE 0 END AS "IsAutomated"
FROM
Invoices I
JOIN
MESSAGES M ON I.TRANSACTION_ID = M.TRANSACTION_ID
LEFT JOIN
EMPLOYEES MSG_AUTHOR ON M.AUTHOR_ID = MSG_AUTHOR.EMPLOYEE_ID
WHERE
M.INCOMING = 'F' AND UPPER(M.SUBJECT) LIKE '%PAYMENT REMINDER%'
UNION ALL
-- 7. Credit Memo Created & Applied
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Credit Memo Created' AS "ActivityName",
CM.CREATED_DATE AS "EventTimestamp",
CM.CREATED_DATE AS "EventEndTime",
CM_CREATOR.FIRST_NAME || ' ' || CM_CREATOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
0 AS "IsAutomated"
FROM
Invoices I
JOIN
TRANSACTION_LINES T_LINES ON I.TRANSACTION_ID = T_LINES.APPLIED_TO_TRANSACTION_ID
JOIN
TRANSACTIONS CM ON T_LINES.TRANSACTION_ID = CM.TRANSACTION_ID
LEFT JOIN
EMPLOYEES CM_CREATOR ON CM.CREATED_BY_ID = CM_CREATOR.EMPLOYEE_ID
WHERE
CM.TRANSACTION_TYPE = 'Credit Memo'
UNION ALL
-- 8. Customer Payment Received & 9. Payment Applied to Invoice
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Customer Payment Received' AS "ActivityName", -- Can also create a separate 'Payment Applied' event if needed
PAYMENT.CREATED_DATE AS "EventTimestamp",
PAYMENT.CREATED_DATE AS "EventEndTime",
PMT_CREATOR.FIRST_NAME || ' ' || PMT_CREATOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
0 AS "IsAutomated"
FROM
Invoices I
JOIN
TRANSACTION_LINES T_LINES ON I.TRANSACTION_ID = T_LINES.APPLIED_TO_TRANSACTION_ID
JOIN
TRANSACTIONS PAYMENT ON T_LINES.TRANSACTION_ID = PAYMENT.TRANSACTION_ID
LEFT JOIN
EMPLOYEES PMT_CREATOR ON PAYMENT.CREATED_BY_ID = PMT_CREATOR.EMPLOYEE_ID
WHERE
PAYMENT.TRANSACTION_TYPE = 'Customer Payment'
UNION ALL
-- 10. Invoice Paid In Full, 11. Invoice Voided, 12. Invoice Closed
SELECT
I.InvoiceNumber AS "InvoiceNumber",
CASE
WHEN SN.NEW_VALUE_ID = 'Invoice:B' THEN 'Invoice Paid In Full' -- 'B' is status 'Paid In Full'
WHEN SN.FIELD = 'TRANSACTION.VOIDED' AND SN.NEW_VALUE = 'T' THEN 'Invoice Voided'
WHEN SN.FIELD = 'TRANSACTION.CLOSED' AND SN.NEW_VALUE = 'T' THEN 'Invoice Closed'
END AS "ActivityName",
SN.DATE_CREATED AS "EventTimestamp",
SN.DATE_CREATED AS "EventEndTime",
SN_AUTHOR.FIRST_NAME || ' ' || SN_AUTHOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
CASE WHEN SN.AUTHOR_ID < 0 THEN 1 ELSE 0 END AS "IsAutomated"
FROM
Invoices I
JOIN
SYSTEM_NOTES SN ON I.TRANSACTION_ID = SN.TRANSACTION_ID
LEFT JOIN
EMPLOYEES SN_AUTHOR ON SN.AUTHOR_ID = SN_AUTHOR.EMPLOYEE_ID
WHERE
(SN.FIELD = 'TRANSACTION.STATUS' AND SN.NEW_VALUE_ID = 'Invoice:B')
OR (SN.FIELD = 'TRANSACTION.VOIDED' AND SN.NEW_VALUE = 'T')
OR (SN.FIELD = 'TRANSACTION.CLOSED' AND SN.NEW_VALUE = 'T');