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』でのみ利用可。変更難度高し。“選”ボタンを受注対応させない場合、レイアウトから削除すること。


以上

 
(土屋)

0 件のコメント: