3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle NetSuiteAdvent Calendar 2024

Day 23

URLをつかってレコード情報を制御してみる

Last updated at Posted at 2024-12-20

はじめに

こんにちは。株式会社SuiteUP(スイートアップ)代表取締役の、平木 太郎と申します。
ゆっくりしていってね!!!

さて、NetSuiteは、非常に便利なERPです。
ただ、便利は便利なのですが、発想の転換をすることで、カタログスペック以上の力を発揮できます。
なので「どうにかして便利に使ってやろう」という発想が、NetSuiteを使う上で重要だと私は考えています。
(トンチを利かす、とか裏技見つけ出す、とも言う)

とはいえ、実例が無いとピンとこないかもしれませんので、今回は「URLを使ったレコード情報の制御」として、その一端をご説明させて頂きます。
正直、真っ当な使い方とは言えませんが、プログラマ以外の方には簡単で便利と言えるかもしれません。

注意)6年前から使えることは知ってますが、裏技過ぎていつまでも使えるとは思えないので、その点はご留意下さい

1.大前提としての”NetSuiteのURLの仕組み”

基本的には、httpsリクエストのGETで制御することが出来ます。
GETとは、URLに
  パラメータ名=パラメータ
を追記すると、遷移先に対してパラメータを渡してあげる機能のことです。(複数のパラメータ名を使うときは&で繋げる)
もちろん、遷移先でこのパラメータを受け取る仕組みは必要なのですが、そこはプログラマ向けのお話なので割愛します。

具体的な例をお見せします。
下記の画像は、NetSuiteの見積書トランザクションの画面です。
ChromeのURL欄には、この見積書の内部ID129130がGETのパラメータとして、以下のように記述されています。
  id=129130

Estimate.png

次に、この見積書の中の”受注書”ボタンをクリックして、注文書トランザクション(以下、「トラン」)を生成してみます。
すると、URLの中に、以下のGETパラメータが設定されています。
  transform=estimate&e=T&id=129130

SalesOrder.png

これは、以下を意味します。
 transform=estimate  :この注文書トランは見積書トランから生成されたもの
 e=T         :編集モードで開きなさい
 id=129130      :元となったトランレコードの内部IDは129130

これがNetSuiteのURLの記述ルールなのです。
(基本的に、であって、他のレコードタイプでは、また別のルールもあります)

2.では、どうやってURLでレコード情報を制御するのか?

極端なことを言えば、上記のパラメータの値を変えてあげるだけで、任意の画面を(限度はあるものの)好きなように開くことが出来るのです。
あるいは、このURLを覚えて開けば、先程の見積書の”受注書”ボタンをクリックしなくても、同じ内容の注文書トランをいくらでも生成できるのです。

実際に、発注書トランから注文書トランを作る、という無茶苦茶なルールでGETパラメータを設定、そしてURLを開いてみましょう。
(関係会社間取引で出来ますが、それとは違う形)

 transform=purchord
 e=T
 id=135336

SOfromPO.png

...これでも出来ちゃいます。
流石に作成元フィールドの”発注書”は保存後に消滅しますが、アイテムラインを引き継ぐことは出来ます。
特注とは違うけど発注先行で受注データを作る、ようなお客様には使える技かもしれません。

余談ですが、

 https://[NetSuiteアカウントID].app.netsuite.com/app/accounting/transactions/estimate.nl?id=129130

ですが、

 https://[NetSuiteアカウントID].app.netsuite.com/app/accounting/transactions/transation.nl?id=129130

としても、NetSuiteが自動的にリダイレクトしてくれて、estimateに転送してくれます。
内部IDだけ知ってるけど、トランの種類がわからないときなんかに使える技です。
トランの内部IDがユニークだから出来る技ですね。

3.リンクが動的になるよう作ってみよう

例えば上記の発注書トラン、あるいは他のトランから注文書トランを作るURLは、自動生成させないと、実運用には耐えられません。
また、1発注書ごとにリンクを作ることも妥当とは言えないでしょう。
そこで、SuiteBuilderのカスタムボディフィールドを作る機能と組み合わせます。

SuiteBuilder.png

'<a href="https://1981313.app.netsuite.com/app/accounting/transactions/salesord.nl?memdoc=0&transform=' || {type} || '&e=T&id=' || {id} || '&whence=" target="_new">注文書作成</a>'

これだけで、SuiteScriptを使ってボタンで画面遷移させる、に匹敵することが実現できるのです。
(もちろん見かけは以下のようにショボいですが…)

Vendorbill.png

4.最後に

いかがでしょうか。
皆様もNetSuiteの様々な裏技を見つけて、是非便利に使ってみて下さい。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?