Xero連携ガイド SkyPlanner APSによる生産スケジューリング
このガイドでは、Xeroのアドバイザー、コンサルタント、ITチームに向けて、XeroとSkyPlanner APSを接続する方法を説明します。SkyPlannerは、Xero Accounting APIとProjects APIを通じて、Xeroと次のデータを双方向で連携します。
- 取引先、手持在庫数量を含む在庫管理対象品目、承諾済みの見積書、入荷日を含む発注書を取り込みます。
- 完了予定日を各見積書の履歴にメモとして書き戻します。
- 完了した受注は、見積書の明細と参照情報を引き継いだ売上請求書の下書きとして書き戻し、見積書のステータスをInvoicedに変更します。
- プロジェクト作業で記録した工数を、Xero Projectsの時間エントリとして書き戻します。
- XeroのWebhookは取引先と請求書の変更を通知し、SkyPlannerのWebhookはスケジュールの変更をその都度プッシュ通知します。
Xeroは会計ソフトウェアのため、部品表、工順、設備、製造指図のデータは保持しません。リソース、工程、シフト、段取り時間はSkyPlannerで管理します。導入時にSkyPlannerチームがお客様のXero組織に合わせて連携を設定し、本稼働後もサポートします。このガイドは、連携に携わるアドバイザーや開発者、または公開ドキュメントのあるSkyPlannerのREST API(APIリファレンス)を使って独自に開発したい方を対象としています。
Xero Accounting API
Xeroはマルチテナント型の単一クラウド製品で、すべての組織が同じAPIを使用します。Accounting APIはhttps://api.xero.com/api.xro/2.0/で提供されるREST APIで、JSONまたはXMLに対応しています。各呼び出しでは、Xero-tenant-idヘッダーで対象の組織を指定します。(出典)
生産スケジューリングに必要なエンドポイントは次のとおりです。
- マスタデータ:
/Contacts(顧客と仕入先)、/Items(Code、IsTrackedAsInventory、QuantityOnHand)。 - 需要:
/Quotes(StatusがACCEPTED、LineItems)。先に請求する工場では、TypeがACCRECの/Invoicesも使用します。 - 供給:
/PurchaseOrders(DeliveryDate、ExpectedArrivalDate、ItemCodeを含むLineItems)。 - 書き戻し:
/Quotes/{QuoteID}/History、/Invoices、/Quotes、およびProjects APIのhttps://api.xero.com/projects.xro/2.0/projects/{projectId}/time。
すべての一覧取得エンドポイントがIf-Modified-Sinceヘッダーに対応しているため、各同期では変更分だけを読み取れます。作成と更新はバッチで行います。部品表、工順、製造指図のエンドポイントはありません。
認証、スコープ、制限
XeroはOAuth 2.0を使用します。Xeroの管理者が一度サインインし、アプリを承認して組織を選択します。アプリはoffline_accessを要求し、リフレッシュトークンで接続を維持します。(出典)
Xeroでは、広範な権限を持つスコープから細分化されたスコープへの移行を進めており、新しいアプリには細分化されたスコープが適用されます。生産スケジューリングの連携には、次のスコープが必要です。
accounting.invoices:見積書、請求書、発注書、品目用accounting.contacts:顧客と仕入先用accounting.settings.read:品目設定用projects:時間エントリ用offline_access
Xeroは組織ごとに同時呼び出し数、分単位・日単位の呼び出し数を制限し、アプリごとの制限も設けています。アプリが上限を超えると、Retry-Afterヘッダー付きのHTTP 429を返します。日次上限と接続可能な組織数は、アプリのパートナーティアによって異なります。どちらもXeroのAPI制限のページに記載されています。Webhook、If-Modified-Sinceによる読み取り、バッチ書き込みを使えば、生産スケジューリングの連携でこれらの上限に十分な余裕を持って運用できます。
SkyPlanner側のREST APIは、Authorization-Tokenヘッダーに設定するAPIトークンで認証します(SkyPlanner Settings > API)。仕様はSwagger/OpenAPIで公開されています。最初のAPI呼び出しの手順は、連携チュートリアルで説明しています。
Webhook
“Webhooks allow you to subscribe to certain events that happen in Xero.”(Webhookを使うと、Xeroで発生する特定のイベントを購読できます。)(出典)生産スケジューリングに関わるイベントはContactとInvoiceで、それぞれCREATEとUPDATEがあります。
仕組みは次のとおりです。
- アプリごとに一つのWebhookで、接続済みのすべての組織をカバーします。
- 各配信には、リソースIDとイベント種別を含むevents配列が格納されます。受信側は、その後で対象リソースを読み取ります。
- 各配信には、アプリのWebhookキーから生成した署名が
x-xero-signatureヘッダーに付与されます。Xeroは配信を開始する前に、”Intent to receive”の受信確認を送信します。 - Xeroは配信に失敗すると再試行し、失敗が続くWebhookは無効にします。そのため、受信側はすぐに応答を返し、実際の処理はその後に行います。
見積書、品目、発注書にはWebhookイベントがありません。SkyPlannerはIf-Modified-Sinceを使って短い間隔でポーリングします。変更がなければ、必要な呼び出しはエンティティごとに一回です。
データのマッピング
| Xeroのオブジェクト(エンドポイント) | SkyPlannerのオブジェクト | 連携方向 | 連携頻度 |
|---|---|---|---|
Contact、IsCustomer(/Contacts) | Customer(external_identifier、delivery_priority) | Xero → SkyPlanner | 初回取り込み後、Webhook受信時 |
在庫管理対象・対象外のItem、QuantityOnHandを含む(/Items) | 製品、資材、在庫 | Xero → SkyPlanner | 初回取り込み後、If-Modified-Sinceで取得 |
StatusがACCEPTEDのQuote、LineItemsを含む(/Quotes) | Order(external_order_number、delivery_date)、明細ごとの作業 | Xero → SkyPlanner | If-Modified-Sinceによるポーリング |
TypeがACCRECのInvoice(先に請求する工場)(/Invoices) | 受注と作業 | Xero → SkyPlanner | Webhookでリアルタイムに反映 |
ExpectedArrivalDateまたはDeliveryDateを含むPurchaseOrder(/PurchaseOrders) | 入荷予定資材(estimated_delivery_date) | Xero → SkyPlanner | If-Modified-Sinceによるポーリング |
見積書の履歴メモ(PUT /Quotes/{QuoteID}/History) | 完了予定日 | SkyPlanner → Xero | スケジュール変更時 |
Invoice、TypeはACCREC、StatusはDRAFT、Referenceは見積番号(POST /Invoices) | 完了した受注 | SkyPlanner → Xero | 受注完了時 |
QuoteのStatusをINVOICEDに変更(POST /Quotes) | 完了した受注 | SkyPlanner → Xero | 請求書作成時 |
Projectsの時間エントリ(POST /projects/{projectId}/time) | Mobile Confirmations、作業時間記録 | SkyPlanner → Xero | 作業記録時 |
| Xeroには存在しないデータ | リソース、工程、シフト、不在、段取り時間マトリクス、工具、作業者数、代替リソース | SkyPlannerで管理 | 導入時に設定 |
連携パターン
1. マスタデータの初回取り込み。取引先と品目をページ単位で取得し、続いて未完了の発注書と承諾済みの見積書を取得します。XeroのContactIDをexternal_identifierとしてSkyPlannerの顧客を作成し、品目コードをキーとして製品と資材を作成します。その後、Xeroにないデータを設定します。リソース、製品ごとの工程、シフト、休暇、段取り時間がこれに当たります。工程はCSVまたはExcelからインポートするのが最も速い方法です。
2. 受注の同期。If-Modified-Sinceを使って見積書をポーリングします。見積書がACCEPTEDになると、SkyPlannerは見積番号をexternal_order_numberとして受注を作成します。delivery_dateには、工場で約束納期の管理に使っているフィールドの値を設定します。この対応付けは導入時に行います。各明細から、製品の工程に沿って作業が作成されます。発注書の各明細は、入荷予定日を設定した入荷予定資材として登録されるため、作業はその入荷を待ちます。毎晩、未完了の見積書と発注書を全件読み取り、取りこぼしを補います。
3. スケジュールと完了情報の書き戻し。三回の呼び出しで結果をXeroに反映します。
- PUT
/Quotes/{QuoteID}/Historyで、完了予定日を記載したメモを追加します。承諾済みの見積書で変更できるのは取引先とメモだけなので、日付は履歴メモに記録します。(出典) - 受注が完了すると、POST
/Invoicesで売上請求書を作成します。TypeをACCREC、StatusをDRAFTとし、見積書の取引先と明細を引き継ぎ、Referenceに見積番号を設定します。経理担当者がXeroで承認し、送信します。 - QuoteIDとStatus INVOICEDを指定してPOST
/Quotesを呼び出し、見積書をクローズします。AcceptedからInvoicedへの変更は、Accounting APIで認められているステータス遷移です。
4. 現場の実績報告とプロジェクト工数。作業者はSkyPlanner Mobile Confirmations、Production Timer、Quick Log Modeで作業を記録します。進捗はスケジュールに即座に反映され、Autopilotが残りの作業を再計画します。プロジェクト作業では、SkyPlannerがXeroのユーザー、日付、作業時間を指定し、プロジェクトタスクに時間エントリとして工数を登録します。(出典)
5. データの管理責任と競合時のルール。本稼働前に、次の内容を明文化してください。
| データ | 管理元 |
|---|---|
| 取引先、品目、価格、見積書、発注書、請求書、会計 | Xero |
| リソース、工程、シフト、不在、段取り時間マトリクス、工具、代替リソース | SkyPlanner |
| 作業順序、開始・終了時刻、作業ごとのリソース | SkyPlanner |
| 見積書の完了予定日メモ | SkyPlannerで管理し、Xeroに書き込み |
| 完了した受注の請求書ドラフト、プロジェクトの作業時間 | SkyPlannerで作成し、承認後はXeroで管理 |
導入プロジェクトの標準的な流れ
通常、導入はオンボーディング開始から数週間で完了します。それに先立つ30日間の無料トライアルでは、Xeroから連絡先、製品、未処理の見積書をCSV形式でエクスポートし、自社のデータで試すことができます。
導入プロジェクトでは、以下の作業を行います。
- 接続。 Xeroの管理者がSkyPlannerを承認し、接続する組織を選択します。
- 需要の起点となるオブジェクト。 承諾済みの見積書と売上請求書のどちらを生産開始の起点にするかを合意します。
- マッピング。 マッピング表、品目コード、請求書の勘定科目、税の既定値、データの管理主体に関するルールを確定します。
- 初期データの取り込み。 連絡先、品目、未処理の発注書、承諾済みの見積書を取り込みます。
- 生産モデル。 SkyPlannerでリソース、製品ごとの工程、シフト、段取り時間マトリクス、工具、作業者数を設定します。
- 同期。 連絡先と請求書にはWebhookを使い、見積書、品目、発注書には
If-Modified-Sinceによるポーリングを使います。さらに、毎晩データを照合します。 - 書き戻し。 まず見積書のメモ、次に請求書ドラフトと見積書のステータス、最後に利用している場合はプロジェクトの作業時間を対象にします。
- 並行テストと本番稼働。 SkyPlannerの日程を現在の計画と比較し、最初の請求書ドラフトを経理担当者に確認してもらってから、書き戻しを有効にします。
Xero連携で事前に検討すべきこと
- Xeroには生産用のオブジェクトがありません。 製品ごとの工程は、Xeroの品目コードをキーとしてSkyPlannerで管理します。品目コードは変更せずに維持してください。
- 見積書にはWebhookがありません。 分単位と日単位の上限を守りながら、
If-Modified-Sinceを使って短い間隔でポーリングします。 - 承諾済みの見積書はロックされます。 承諾後に変更できるのは連絡先情報とメモだけです。そのため、確約した納期は承諾時に一度だけ読み取り、計画上の日付は履歴メモに書き込みます。
- 在庫は売上・仕入請求書に連動します。 Xeroでは、在庫追跡対象品目の手持在庫数量が、売上請求書、仕入請求書、クレジットノートによって増減します。完成品と使用済み材料の会計処理について、経理担当者と合意しておいてください。
- プロジェクトの作業時間にはXeroユーザーが必要です。 作業時間の記録はXeroユーザーに紐づきます。どの作業者の時間をXero Projectsに登録するかを決め、それ以外はSkyPlannerで管理します。
- 細分化されたスコープ。 広範な権限を持つスコープは廃止が進んでいるため、最初から細分化されたスコープを要求してください。
- アプリのティア。 パートナーティアによって、アプリが接続できる組織数と一日あたりのAPI呼び出し回数が決まります。工場数を踏まえてティアを選んでください。
Xero連携の設定とサポートは誰が担当するか
連携の構築では、品目、見積書、発注書に加え、作業完了から請求に至るまでの流れを整えます。さらに、Xeroでは保持していないリソース、工程、シフト、段取り時間マトリクス、工具、作業者数、代替リソースを設定します。
- SkyPlannerチームがオンボーディング時に設定し、本番稼働後もサポートします。 Xeroでの品目、見積書、在庫の設定方法は工場ごとに異なります。その運用ノウハウを連携の設定に反映します。
- ご利用のXeroアドバイザーや連携パートナーが構築することもできます。 SkyPlannerはREST API、Swagger/OpenAPIドキュメント、Webhookを提供しています。
- 自社の開発者が連携を構築することもできます。 APIトークンがあれば着手でき、必要に応じてSkyPlannerチームが支援します。発注書や製品・材料のAPIを含む製品ドキュメントは、SkyPlannerドキュメントをご覧ください。
SkyPlannerは5リソースを含み、月額199 €から、月払いで利用できます。連携費用は、お客様の業務プロセスと要件に応じて、ご利用プランと併せて事前にお見積もりします。開始前に総費用を確認できます。料金と機能をご確認ください。Xero単体で対応できる範囲は、「Xeroには生産スケジューリング機能がありますか?」で解説しています。連携の概要はXeroのページ、ほかのシステムとの連携は連携一覧をご覧ください。
製造業のお客様によるSkyPlannerの評価
2時間毎週削減
「SkyPlannerによって、当社の生産計画はExcelの表計算からリアルタイムの生産最適化へと変わりました。」
Kalle Kalliomäki、サプライチェーンスペシャリスト
UTU · 配電盤・開閉装置
生産計画にかかる作業時間を毎週2時間削減し、新しい作業順序も数秒でラインに届くようになりました。
+90%生産効率
「生産効率が90%向上しました。」
Abdul Rucyinga、IT部門責任者
Laboratory & Allied · 医薬品製造
生産効率が90%向上し、全リソースを対象に三か月分の生産計画を最適化して、30分未満で作成できるようになりました。
削減材料不足による生産停止
「SkyPlannerの価値は、日々の業務で使えるツールであることです。特に納期の設定に役立っています。」
Tommi Männistö、生産計画マネージャー
Eskomatic · 機械加工受託
負荷を自動でスケジューリングすることで納期の精度が高まり、材料不足による生産停止が大幅に減りました。
1,000件単位製造指図を自動スケジューリング
「生産をこれまでとは違う形で管理できるようになり、生産能力に対する理解もまったく別の水準になりました。」
Hannu Ryynänen、CEO
Mamec · 産業用ミキサー、ポンプ、高度技術を要する受託製造
数千件の製造指図を自動でスケジューリングし、組織全体で生産状況をリアルタイムに把握できるようになりました。
よくある質問
Xeroには生産データ用のAPIがありますか?
XeroにはAccounting APIとProjects APIがあり、どちらもOAuth 2.0を使うREST APIです。連絡先、品目、見積書、請求書、発注書、作業時間の記録を扱えます。リソースや工程などの生産データはSkyPlannerで管理します。
SkyPlannerからXeroにデータを書き戻せますか?
はい。SkyPlannerは各見積書の履歴に完了予定日を追加し、受注の生産が完了すると、見積明細を引き継いだ売上請求書の下書きを作成します。また、見積書のステータスをInvoicedに変更し、プロジェクトの作業時間を登録します。
Xeroは変更をリアルタイムにプッシュ通知しますか?
XeroのWebhookは連絡先と請求書に対応しています。SkyPlannerはIf-Modified-Sinceを使い、前回の同期以降に変更された見積書、品目、発注書を読み取り、毎晩データを照合します。そのため、新たに承諾された見積書は速やかにスケジュールに反映されます。
Xeroに部品表、工順、機械の情報がない場合、それらはどこで用意しますか?
SkyPlannerで用意します。リソース、製品ごとの工程、シフト、段取り時間を、手入力またはCSV・Excelのインポートで一度設定します。各製品はXeroの品目コードに紐づくため、新たに承諾された見積書は自動でスケジューリングされます。