NetSuite機能有効化でできること

# ごあいさつ
こんにちは。たかはしでございます。
最近めっきり暖かくなり、桜の蕾もほころぶ時節となりましたね。
私は北の生まれですので、未だゴールデンウィーク前の桜には「文脈通りの春！」と新鮮に驚いてしまいます。
また、私は暑いのが非常に苦手なので、春の向こうの気配に早くも逸る怒りを抑えられません。
今年こそは夏を法規制できるように頑張ってまいりましょう。

# 概要
そんなわけで、今回はoracleのERPシステムNetSuiteの初期セットアップで重要となる、「機能有効化」設定について解説していきたいと思います。
「機能有効化」は、NetSuite内の基本的な「法」のようなもので、どのような機能をどのレベルで使用するのか、データの集計に使用する観点などを定義することができるものです。
「機能有効化」を使う場面としては、下記が考えられます。
* 新たにNetSuiteを使い始めるとき
* 新しい機能を使ってみるとき
* 最適な環境を検討するとき

今回は汎用的に使用する機会が多そうな部分をかいつまんでご紹介していきたいと思います。

## 「機能有効化」画面へ遷移
![スクリーンショット (2094).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992074/1afd31e0-80f2-45b7-8099-bc13546ad7f4.png)

「機能有効化」画面は管理者ロールでのログイン時、
「設定」タブ＞「会社」＞「機能を有効化」から設定画面を開くことができます。

## 「会社」設定
主にNetSuiteで全体のデータを管理する上で基本的な設定を有効化することができます。
 NetSuiteを司る様々な設定の階層の上位に位置するような設定が多いのですが、
そんな中でも特によく使用するものはこちらです。
* 部門：部門を定義するマスタを有効化します。
部門を使用していると、基礎となるマスタの社員データや取引に使用するアイテムから、
取引を登録していくことになるトランザクションと呼ばれるデータまで
幅広くどの部門に所属するものなのかを分類することができます。 
* 場所：場所を定義するマスタを有効化します。
部門同様、場所を使用することで様々なデータがどの場所に存在するものなのかを分類することができます。
在庫管理を行う場合は、場所毎に在庫を管理するため有効化が必須です。
* クラス：部門や場所以外の分類を定義するマスタを有効化します。（例：チーム、業務の種類など）
部門や場所の他に管理上重視する観点がある場合にキャッチしてくれるような機能です。
* プロジェクト：プロジェクトを管理するマスタを有効化します。
* プロジェクト管理：プロジェクトに関して登録された売上や仕入れ、労務費などの情報がプロジェクトに集計されるようになります。

## 「会計」設定
NetSuiteで会計管理を行う場合に、重要になる設定です。
NetSuiteでは自動仕訳という、取引データを登録しているだけでその取引で動いた金額の流れが自動で仕訳登録されるとても便利な機能がありますので、
その魅力に惹かれてNetSuiteに辿り着いた方も多いのではないでしょうか。
「会計」設定では特にこちらの設定が効いてくるのではないかと思います。
* 会計：NetSuiteで会計管理を行う場合に有効化します。
有効化されていると、NetSuite内でお金の管理までできるようになります。
具体的には勘定科目を定義して各取引の仕訳を確認したり、取引後に実際に金銭を支払う・支払われるプロセスの登録を行うことができるようになります。
* 売掛金：顧客に対する取引データの登録により、売掛金に金額を計上できるようになります。
* 買掛金：仕入先に対する取引データの登録により、買掛金に金額を計上できるようになります。
* 会計期間：各勘定科目へ金額を計上していく期間を定義するマスタを有効化します。
会計期間を使用すると特定の期間を締めることができ、締め終わった期間に対して取引データの変更や新規の登録を弾き、金額が動かないようになります。
　
## 「税金」設定
何のひねりなく、「税金」設定を行うことができます。
* アドバンスト税：NetSuiteで税金を管理するならマストの設定です。
有効化している場合、「納税スケジュール」というマスタを使用して
販売・購入それぞれでデフォルトにどの税金コードを使用するのかを定義することができます。

## 「トランザクション」設定
お待たせいたしました。
「トランザクション」こそが普段どんどん登録していくことになる、取引データの受け口になります。
使えるトランザクションはたくさんありますので、かいつまんでご紹介いたします。
* 見積：顧客と検討中の見積を登録する機能を有効化します。
* 注文書：顧客と合意した後の受注情報を載せる機能を有効化します。
見積書を有効化している場合、見積書の内容を引き継いで注文書を作成できます。便利！
* 発注書：仕入先に対して発注する内容を登録する機能を有効化します。
* アドバンスト配送：配送は、商品を顧客へ配送したことを記録する機能です。
配送することで在庫が減少します。
これも、注文書の内容を引き継いで配送を作成できますので、全ての内容を1から入力する必要はありません。
* アドバンスト受領：受領は、仕入先から商品を受け取ったことを記録する機能です。
受領することで在庫が増加します。
受領は発注書を引き継いで受領を作成することができます。
配送・受領の登録により、実際に商品がある倉庫などとリンクして商品の在庫管理を行うことができます。
また、配送・受領は元の取引に対して複数登録できますので、顧客への注文や仕入先への発注に対して分納を記録することも可能です。

## 「アイテムと在庫」設定
在庫管理を行う際に重要な設定が集まっている画面です。
NetSuiteではアイテムをシリアル・ロット、保管する棚など細かな単位で管理することができます。
業務に合わせてアイテムを管理するレベルを定めていきましょう。
* 在庫：NetSuiteで在庫を管理する場合に有効化します。
* 在庫ステータス：在庫のステータス管理します。
ステータスを分けることで、利用可能な在庫と利用不可の在庫を分けて
普段のデータ登録時に入力制御を行うことができます。

## 「従業員」設定
この画面では従業員が業務をする上で発生データについて設定を行うことができます。
その中でもよく使用されるのはこちらです。
* 経費精算書：従業員の経費を登録するトランザクションを有効化します。
* タイム・トラッキング：従業員の作業工数を登録するトランザクションを有効化します。

## 「SuiteCloud」設定
主に開発者が使用するカスタマイズに関わる機能を設定します。
* カスタム・レコード：カスタムレコードは、NetSuiteに存在しないマスタを作成する機能です。
* SuiteFlow：カスタムしたワークフローを作成できる機能です。
ワークフローは、承認フローを作るだけでなくちょっとした自動化機能を作成できます。

# 機能有効化を行う上で気をつけること
ここで、一つ注意点をお話します。
「トランザクション」や「アイテムと在庫」など、
レコード自体やレコード内で利用する機能を一度有効化した後に、
有効化を解こうとするとエラーが発生する場合があります。
それは、有効化時に登録したデータが無効にしたい機能を使用したままになっていることが原因です。
有効化中に登録したデータを削除することで解決できますので、
もし色々試しているうちにエラーが！という場合は落ち着いて影響範囲を消していきましょう。
私は実際に下記のような事例に遭ったことがあり、当時は原因を探るところから始めたのでとても焦りました・・・
■事例：
* 事象
NetSuite環境の設定中、「在庫保管棚」機能の使用を検討するために有効化してしばらく検証を行う。
最終的に使用しないことに決め、「在庫保管棚」機能を無効化をしようとした際にエラーが発生。
無効化することができなかった。
* 解決方法
検証時に作成した、「在庫保管棚」を使用しているトランザクション（注文書、配送、発注書）を全件削除
削除し終わった段階で再度無効化を行ったところ、無効化が成功。

:::note warn 
有効化を解除しようとした際のエラー対処法
機能が有効になっている間に作成したトランザクションを削除した後に、機能有効化設定を解除
:::

# さいごに
というわけで、さらっと機能有効化で設定できる汎用的な機能について解説してみました。
もちろん、今回私がご紹介した機能の他にもたくさんの機能がございますし、
NetSuiteでは環境によって使用できる機能が異なりますので、
自分の環境で行える設定は何だろう？他には何の機能があるんだろう？と思われるかもしれません。
そういったときは、NetSuiteの公式ヘルプから「機能有効化」で設定できる内容を確認できますので、
気になる機能があれば公式ヘルプがヒントになるかもしれません。（※リンク先英文です。）

https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/chapter_N232138.html#procedure_N232150

ここまで駆け足でしたが、皆様の理想のNetSuite環境を構築する参考になりましたら幸いです。