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



(土屋)