# フィールドマッピング

Stripe Connector for NetSuite を使用して、NetSuite レコードに同期されたデータをカスタマイズする方法をご紹介します。

フィールドマッピングは、NetSuite でレコードのレポート作成や分類を行う必要がある場合、またはコネクターがレコードを作成する必要がある必須フィールドの値を追加する場合に利用します。

Stripe Connector for NetSuite を使用して NetSuite レコードにデータを追加する方法は 2 つあります。

- [フィールドデフォルト](https://docs.stripe.com/use-stripe-apps/netsuite/field-mappings.md#field-defaults) (静的)
- [フィールドマッピング](https://docs.stripe.com/use-stripe-apps/netsuite/field-mappings.md#field-mappings-values) (動的)

コネクターアプリから**設定** > **フィールドマッピング**に移動すると、両方のマッピング方法を確認できます。これにより、たとえばデフォルトで同期されるデータよりも多くのデータを NetSuite レコードに同期したい場合に、NetSuite に同期するデータをカスタマイズできます。

## フィールドデフォルト

フィールドデフォルト (静的な値) は、Stripe に存在しない場合でも、実装によって作成される任意のレコードに追加できます。NetSuite レコードの 1 つに必須フィールドがある場合、コネクターはそのフィールドの値を含めてレコードを作成する必要があります。これを怠った場合、レコード作成のリクエストがエラーにより失敗します。

たとえば、請求書フォームに必須の `Class` フィールドがある場合、`Class` の値を指定してコネクターがレコードを作成できるようにする必要があります。`Class` は `recordReference` またはドロップダウンフィールドであるため、コネクターにはフィールドデフォルトとして使用する値の内部 ID が必要です。`internalID: 5` が指定された `Corporate` を使用したい場合、次の JSON ハッシュを入力します。

```
invoice: {
  "klass_id": 5
}
```

請求書のラインアイテムに同じフィールドが必要な場合は、次の JSON ハッシュを入力します。

```
invoice_item: {
  "klass_id": 5
}
```

上記の例では、`class` ではなく `klass` を使用しています。これは、このフィールドの NetSuite API に固有のものです。サフィックス `_id` は、フィールド値が `recordReference` (ドロップダウン) であることを NetSuite に示します。もう一つの一般的なサフィックスとして `_date` があります。これは、Unix タイムスタンプ形式にする必要がある NetSuite の日付フィールドを示します。

> 必須フィールド、`invoice` のヘッダーフィールド、または `invoice_item` のラインフィールドが不足している場合、同じエラーメッセージが表示されます。ヘッダー別にマッピングを追加してレコードの同期に失敗した場合は、ライン別のマッピングの追加をお試しください。

## フィールドマッピング

Stripe から NetSuite にフィールドマッピング (動的な値) を渡すことができます。これを実行するために、コネクターは Stripe フィールドからデータを取得し、それを NetSuite フィールドに記録します。

たとえば、Stripe に構築済みのシステムは、各支払いのメタデータに `company_id` を渡します。この ID を NetSuite の顧客への支払いのカスタムフィールドに渡し、トラッキングを行いたいとします。そのためには、以下のフィールドマッピングを設定する必要があります。

```
customer_payment: {
   "metadata.company_id": "custbody_company_identifier"
}
```

上の例では、NetSuite のカスタムフィールドで `_id` ではなく `_identifier` を使用しています。NetSuite は `_id` を使用してレコード参照やドロップダウンフィールドタイプを示すため、カスタムフィールドではサフィックス `_id` 以外の値を使用する必要があります。

たとえば、サービスセールアイテムに収益認識ルールを設定する際のフィールドデフォルトは次のようになります。

```
"service_sale_item": { "revenue_recognition_rule_id": 123 }
```

## カスタマイズを上書きする

コネクターは NetSuite でレコードを作成すると、Stripe レコードの標準のデータセットを NetSuite レコードにマッピングします。たとえば、Stripe 顧客の ID とメールアドレスは、コネクターによって作成される NetSuite 顧客にマッピングされます。

コネクターの標準のデータマッピングを上書きする場合は、フィールドデフォルトまたはフィールドマッピングを使用します。同じ NetSuite フィールドにデフォルトマッピング (静的) とフィールドマッピング (動的) がある場合は、フィールドデフォルトよりもフィールドマッピングが優先されます。

たとえば、コネクターが Stripe 顧客名を NetSuite フィールド `company_name` にマッピングしたとします。NetSuite は、デフォルトで `company_name` の値を法人 ID にコピーします。コネクターはこの機能を上書きし、代わりに Stripe 顧客 ID を使用して、一意の法人 ID を使用するという NetSuite の要件を満たします。このとき、Stripe 顧客 ID は使用しないでください。代わりに一意の ID を使用することをお勧めします。

この場合は、法人 ID を null にすることで、標準のデータマッピングを上書きできます。これにより、NetSuite は顧客の名前を法人 ID としてコピーし、NetSuite のデフォルトの動作を使用できます。

```
"customer": {
    "entity_id": null
  }
```

## See also

- [Stripe フィールドおよび NetSuite フィールドとリファレンス](https://docs.stripe.com/use-stripe-apps/netsuite/fields-references.md)
- [NetSuite スキーマブラウザー](https://www.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2018_2/script/record/campaign.html)
