2014-07-27

受注・受注残管理モジュールを作る(2)テーブル、リレーション、レイアウトの設計 ― FMEasy在庫のカスタマイズ

 受注残は面倒なので脇に置いておき、まず受注モジュールを作ります。
 作業にあたり、カスタマイズする『FMEasy在庫 R1.0/R1.5』は分離モデル(注)を採用しているため、作業するファイルが2つ ― EasyApp15.fmp12とEasyData15.fmp12 ― あることに注意してください。

 EasyData15.fmp12 は業務データ用のファイルで、原則として業務用テーブルに加え、業務用テーブルの計算フィールドに使用する最小限のリレーションを含みます。
 EasyApp15.fmp12 はアプリケーション/システム用のファイルで業務用テーブルは含まず、アプリ用のテーブルとリレーション、レイアウト(画面や帳票)、さらに業務ロジックを組み込んだスクリプトを含んでいます。

 作業に際しては、このことを念頭に混乱のないよう作業を進めてください。

注:『FMEasy在庫 R1.0/R1.5』は テンプレートですので、データファイルとアプリファイルの分離度は高くなっていません。
 分離度を高めるためには、データファイル(EasyData.fmp12)では計算フィールドやフィールド制御は極力行わないように設計します。

受注モジュールのテーブル、リレーション、レイアウト、スクリプトを作る

 受注モジュールは出庫モジュールと類似していますので、出庫関連のテーブル、リレーション、レイアウト、 スクリプトをある時はコピー・変更し、あるときは直接変更し、またあるときは変更することなく共用します。

 『FMEasy在庫 R1.0/R1.5』は、最小限の労力で他の類似モジュールを追加できるよう設計しています。

EasyData15でテーブル/フィールドを作成・定義する

 まずはテーブルから作成します。EasyData12.fmp12の出庫/入出明細テーブルを下図のように選択し、コピペし、それぞれの名称を「受注」と「受発注明細」に変更します。

 入出明細テーブルは、出庫明細と入庫明細の共用テーブルであるため、今後発注モジュールに対応することを想定して「受発注明細」という名称にしておきます。

※本稿では原則として発注には触れませんが、発注関連モジュールも開発する場合、発注関連のテーブル/リレーション/スクリプトも作成しておく方が効率的です。

図1.出庫、および入出明細テーブルをコピー&ペーストして、受注、および受注明細テーブルを作る

 2テーブルの名称を変更したら、その中のフィールド名を変更(図3/4)。

注:
  • フィールド名は後述の図3と図4に準じること(変に変更すると、スクリプトの変更が大変になる)
  • フィールドの変更・削除は極力しない→動作しなくなる
  • 入庫関係のフィールド名は、発注モジュールを作成する場合に備えそれらしく変更しておく(入庫No→発注No)
なお、受注用のリレーションが無いと設定できない計算フィールドは、下記のリレーションシップを設定後に定義します。

EasyData15でリレーションシップを作成する

 EasyData15.fmp12 のリレーションシップは出庫TOG(Table Occurence Group)をコピペし、出庫TOGに準じて下図のオレンジのTOG のように設定します。
なお、、リレーションシップも複数選択してペーストができます。

図2.出庫レイアウトTOG をコピー&ペーストして受注レイアウトTOGをつくる

 リレーションシップを正しく設定すると、<不明>あるいは<フィールドが見つかりません>と表示されていた計算フィールドを定義できるようになりますので、これも出庫/入出明細の計算フィールドに準じて定義していきます。

図3.リレーションシップを設定後、受発注明細テーブルのフィールドを再定義

図4.リレーションシップを設定後、受注テーブルのフィールドを再定義

EasyApp15でリレーションシップを作成する

 EasyApp15.fmp12 のリレーションシップも出庫TOG(Table Occurence Group)をコピペし、出庫TOGに準じて下図のように受注レイアウトTOGを設定します。

 赤枠の部分の「得意先List」と「出庫商品List」はUIテーブルとのリレーションシップであるため各レイアウトから共用できるので、受注側での作成は不要となります。
 また、濃い青の3つのTO(Table Occurence)はIWP(インスタント)専用であるため今回は作成しませんが、受注モジュールをIWPに対応させる方は作成する必要があります。

 なお、TOの名称は下図に準じるようにしてください(変な名称を付けると、スクリプトの変更が大変になってしまいます)。


レイアウト/値一覧を作成する

 受注用レイアウトは EasyApp15 側でのみ作成します。出庫レイアウトをレイアウトモードで表示し、[レイアウト]―[レイアウト複製]を選択します(一種のコピペ)。
図の赤枠内のように、レイアウト名を「出庫のコピー」から「受注」に、レイアウトテーブルを「出庫」から「受注」に変更します。


 この段階ではフィールド/ポータルは出庫または入出明細のものが貼られているので、フィールドをダブルクリックしながら、受注/受注明細関連のものになるように変更していきます。
 また、出庫No/出庫日、出庫などのレーベル名も適当なものに変更しましょう。また、変更漏れがないように注意するようにしてください。

 値一覧は、伝票区分、担当ID、得意先ID、商品ID、請求部署ID、数量、単位の各フィールドで使用されているが、変更する必要があるのは、伝票区分と請求部署IDに割り当てられているもののみ。

 ここまで、慣れている人であれば1~2時間でできると思われますが、次のスクリプトからがかなり作業が複雑になってきます。

注:
 受注一覧、受注伝票の各レイアウトも実務では必要になると思われるので、前者については出庫一覧レイアウトを、後者については入庫伝票レイアウトを上記の要領でコピーして作成してください。

スクリプトを変更する

 さて、出庫レイアウトをコピーして作った受注レイアウトは以下のようになります。
 ボタンに割り振られたスクリプトだけではなく、フィールド/レイアウト等に割り振られたスクリプト(赤枠部)もひとひとつ変更が必要かどうか吟味し、必要があれば変更を加えていきます。

 スクリプト変更はかなり骨が折れる作業で、下手に変更を加えると他のモジュールに障害を与えることがあるので慎重に作業してください。 変更後のテストも十分に行う必要があります。



 下表はスクリプトが割り振られたオブジェクトの一覧です。
 チェックマークが付いてるものは変更が必要になります。
*1 『FMEasy在庫 IWP/WD R1.5』でのみ利用可。変更難度高し。“選”ボタンを受注対応させない場合、レイアウトから削除すること。


以上

 
(土屋)

2014-07-18

受注・受注残管理モジュールを作る(1)概要と開発方針― FMEasy在庫のカスタマイズ

 弊社に寄せられる各種問い合わせで多いのがモジュールの追加 ― 「売上入金残管理モジュールを作りたい」、「受注残管理をしたい」といったものです。
 これらの質問はあまりにカバーする範囲が広く、また漠然としているので、回答も漠然としたものになります。

 そこで今回から数回にわたり、『FMEasy在庫 R1.0/R1.5』をカスタマイズし、受注・受注残管理モジュールを付加する方法の概要ご説明したいと思います。 

機能概要

  • 受注管理
  • 入力支援機能(FMEasy在庫 IWP/WD R1.5 のみ)
  • 受注伝票毎及び得意先毎の受注残管理 
  • 受注明細レベルで分納に対応する


用語

  • 在庫 ― 商品の入庫数計-出庫数計
  • 受注残 ― 商品の受注数計-出庫数計
  • 可用在庫 ― 在庫-受注残


注:
 弊社では商品の[在庫]から[受注残]を差し引いた値を[可用在庫]と呼んでいます。意味としては、倉庫に物理的に存在するだけではなく、買い手が決まっておらず(受注残となっていない)、得意先から注文があればすぐに出庫できる状態にある在庫です。
 逆に、倉庫に物理的に存在していても、買い手が決まっていて何らかの事情により倉庫に留め置かれている在庫は、出庫不能な在庫(非可用在庫)となります。


画面イメージと移植する機能

 弊社が2004年6月にリリースした「FlexManager R1.5」という製品の受注・受注残モジュールの一部を『FMEasy在庫』に移植します。下図はそのオールド製品の画面です。


【受注】

受注画面
 受注情報を入れる画面。この画面から必要最低限の機能を『FMEasy在庫』に移植します。


【受注残管理】
受注残管理画面

 受注残管理画面。受注残管理だけではなく、受注情報を利用した発注処理、その発注に対する入荷情報の表示(画面の[発注数(内入荷)])にも対応していますが、今回は発注・発注残管理機能には触れません。この画面から、受注残管理の必要最低限の機能を『FMEasy在庫』に移植していきます。


【分納管理】

分納管理画面

 受注商品データを売上に移行するための画面。新規に売上伝票を作成して(“新”ボタンを使用)そこへ受注データを移行することも、既存の売上伝票([売上No]をプルダウンメニューから指定)の売上明細に受注データを付加することもできます。なお、『FMEasy在庫』では売上モジュールはなく、代わりに出庫モジュールへ移行することになります。

開発方針

 「FlexManager 1.5」は結構機能がテンコ盛なので、複雑になりすぎないよう、受注残管理に焦点をあてて、必要最低限の機能を移植したいと思います。 (次回へ続く)



(土屋)

2014-06-30

インスタント Web/WebDirect対応在庫管理テンプレート『FMEasy在庫 IWP/WD R1.5』を本日リリース

 本日、『FMEasy在庫 IWP/WD R1.5』(フリー版)のダウンロードと販売を開始。


 ホントは昨年末にインスタントWeb(IWP)に対応の「FMEasy在庫 IWP R1.5」としてリリースする予定が、同時期に IWP の後継WebDirect(WD)を含む FileMaker Pro 13 がリリースされ、「タイミング、悪!ヽ(`Д´)ノ」、 と思いつつ、「WDにも対応させよう」と思い直し、艱難辛苦の末、今日を迎えることができました\( ̄▽ ̄;)/。


 以下、 本製品についての若干のご説明。


製品概要


  『FMEasy在庫 R1.0』 に検索・入力支援機能を付加し、インスタントWebとWebDirectに対応させたのが本製品です。


製品種類

  • フリー版(無料) ― データ入力無制限
  • 開発版(価格:¥54,000、税込) ― FileMaker Pro 12/13 Advancedにより開発可

 本製品リリース後も、在庫管理テンプレート『FMEasy在庫 R1.0』(フリー版/開発版 ¥26,250)は引き続きダウンロード/購入可。

開発方針


こんな感じで開発してみました。

  1. インスタントWeb(IWP)/WebDirect(WD)の両方に対応させる
  2. 入出庫・在庫の基本機能は『FMEasy在庫 R1.0』をそのまま踏襲
  3. FileMaker/IWP/WD間で、できるだけレイアウトを共有する(下記※参照)
  4. 検索・入力支援機能 ― 取引先または商品のレコードが千~1万件を超す場合、FileMaker標準の 関連フィールドによる値一覧は実用に耐えない(特にWeb環境下) ― ので、検索・入力支援機能を搭載する(後述)
  5. 検索・入力支援機能の流用性 ― 本製品をカスタマイズして売上/入金/仕入/支払/受注/発注等々の機能を付加する場合、取引先、得意先、仕入先、商品の入力が必要となるが、その時に検索・入力支援機能を簡単に流用できるように設計する
  6. 検索・入力支援機能は FileMaker/IWP/WD の3プラットフォームで利用できること
  7. WDの実行速度を落とさないように、レイアウトテーマは前版「FMEasy在庫 R1.0」の「レトロ」から「クラッシック」に変更 ― この為、本製品R1.5と前版R1.0の画面がかなり異なっている

※レイアウト共有で工数減?

 レイアウトを共有するとレイアウトだけでなくスクリプトも共有できる可能性が高まり、工数削減につながりそうだが、レイアウトを弄る度にFileMaker/IWP/WD、3つのプラットフォームでレイアウトのズレを気にしなければならなくなり、実際の工数減に繋がるかは微妙です。
 おおざっぱな方 ― 多少、オブジェクトが被ったりズレたりしても気にしない人はレイアウト共有し、細かいことが気になる人はレイアウトを分けた方が幸せかもしれないです。

 それともかく、本製品はIWPの入力更新系画面を除き、できるかぎり3プラットフォーム間でレイアウトを共有しています。

検索・入力支援機能


本製品のキモはなんと言っても検索・入力支援機能。
下図はWebDirect環境のChromeの画面。

[取引先の検索・入力支援機能]

※取引先画面で検索支援機能を使う
“検索支援”クリック検索支援画面が開く→取引先名を入力して“表示”表示された一覧から目的とする取引先を選択クリック元の取引先画面に戻り選択した取引先が表示される。

※出庫/入力画面で入力支援機能を使う
“選”クリック入力支援画面が開く得意先または仕入先名を入力して“表示”表示された一覧から目的とする得意先/仕入先を選択クリック元の出庫/入庫画面に戻り選択した得意先/仕入先が入力される

注:実行元の画面により、検索・入力支援画面に表示されるボタン、表記、機能が若干異なります。



[商品の検索・入力支援機能]

※商品画面で検索支援機能を使う
“検索支援”クリック検索支援画面が開く商品名を入力して“表示”表示された一覧から目的とする商品を選択クリック元の商品画面に戻り選択した商品が表示される

※出庫/入力画面で入力支援機能を使う
明細の“選”クリック入力支援画面が開く商品名を入力して“表示”表示された一覧から目的とする商品を選択クリック元の出庫/入庫画面に戻り選択した商品が入力される
  • 実行元の画面により、検索・入力支援画面に表示されるボタン、表記、機能が若干異なります。
  • 入力支援画面で[伝票単価][数量]を入力すると、その値が入出庫明細の単価と数量に入力されます。



Blog連動


 いくつかの問題もあります。 例えば、インスタントWeb(IWP)/WebDirect(WD)では満足な印刷ができない。これは FileMaker Serverの問題ですが、回避策がないこともないです。
 それは、ネットワーク上に印刷専用の FileMaker クライアント(FileMaker Robot)を常に起動しておき、IWP/WDクライアント(ブラウザ)から印刷リクエストがないか常に監視し、リクエストがあればFileMaker Robotから印刷を行うようにスクリプトを作成し、そのスクリプトを常に実行した状態にしておきます。

 別の問題として、IWPではダイアログボックス表示のスクリプトステップが使用できないため、レコード削除実行時に確認のダイアログが表示されずに即刻レコードが削除されてしまう、ということがある。

 また、 WDは各種ブラウザとの互換性が低いがFileMaker クライアントの再現性が高いのでインストラネットで、IWPは各種ブラウザとの互換性が高いので不特定多数対象のインターネットで使用したいが、WD/IWPの同時使用は可能か…等。 こうした問題・課題について、できるだけ本Blogで取り上げていきたいです。


サポート

前版インシデント2→今版5インシデント(365日間有効)に!

 ご質問については、Blog 記事として回答させて頂くこともあります →例1とか例2とか。


講習とか


 本製品をベースに在庫管理を学んでみたいという方はこんなのとか、IWPをやってみたいという方はこんなのとか、WDとはなんぞやという方はこれとか、あります。

 それでは足りない!、開発支援とかコンサルティングを!という方はこちら

 その他の在庫関連記事を読む
 その他の WebDirect 関連記事を読む

(土屋)