2014-10-23

受注・受注残管理モジュールを作る(3)受注残タブの実装― FMEasy在庫のカスタマイズ


 本稿では受注管理モジュールを作成します。受注レイアウトには受注品目入力用の「受注」タブと、受注残管理用の「受注残」タブを配置します。


仕上がりイメージ

受注残関連仕様

下表は上図の受注残関連オブジェクトの仕様になります。
オブジェクト タイプ 説明
伝票区分 数値FD レコード確定時、1:全残(納品した商品無)、2:残有(受注残の商品有)、3:過納(過剰納品した商品有)、4:完納(受注した商品を全て納品)の何れかの値がセットされる。
OnRecordCommitを使用しスクリプトを起動。尚、本フィールドを計算フィールドにすることもできるが、索引が設定できずレコードが増えるに従い検索速度が劣化してしまう。
Id 数値FD
(主キー)
「受発注明細」テーブルの主キー。“出庫移行”ボタン実行時、このキーの値を移行先のテーブルである「入出明細」テーブルの[受注明細ID]に貼り付け、納品数算出用のTO(入出明細_受注#注残)の外部キーとして使用。下表及び下のリレーション図参照。
受注数 数値 =受注タブの[数量]
納品数 計算FD(数値) 当該商品の出庫への移行数合計、下表及び下のリレーション図参照。
受注残 計算FD(数値) 受注数-納品数、本値が0以外(受注残がある)の場合、本フィールドの背面が赤くなるように条件書式を設定すと、受注残がある商品が一目で解る。
移行数 数値FD 当該商品を出庫移行する数量をユーザが指定する。
ボタン 上記[受注残]を[移行数]に貼りつける。
出庫移行 ボタン 各商品を[移行数]分、出庫へ移行・登録する。
FD:フィールド


EasyData15.fmp12 のテーブル定義

名称 タイプ 補足
■受注テーブ
伝票区分 数値 上表参照
■受発注明細テーブル
ID 数値(主キー) 上表参照
納品計 計算(数値) Sum(入出明細_受注#注残::出庫数量)、上表及び下表参照
受注残 計算(数値) 上表参照
移行数 数値 上表参照
■入出明細テーブル
受注明細ID 数値(外部キー) 上表及び下表参照

EasyData15.fmp のリレーション

受発注明細テーブルに、[納品数]=Sum(入出明細_受注#注残::出庫数量)、を作成

EasyApp15.fmpの出庫移行ボタンのスクリプト

出庫移行ボタンは[移行数]で指定した数量分の商品を出庫に移行します ― つまり、受注画面で入力されたデータの一部を出庫(出庫/入出明細テーブル)にコピーします。ポータルを含むデータを他のテーブルにコピーする場合、1.元のデータを一旦変数に格納して変数をコピー先のテーブルに貼りつける方法と、2.元のデータを格納するテーブルからコピー先のテーブルへ取り込む方法、の2つがありますが、後者の方が高速になります。

 以下は後者の方法を用いたスクリプト例です。
(当スクリプトは検証不十分です。利用は自己責任でお願いします。 m( _ _ )m




#
#事前チェック
#
スクリプト実行 [ 「gブラウズ以外実行不可-IwpWD」 ]
スクリプト実行 [ 「gレコード無CK-IwpWD」 ]
スクリプト実行 [ 「gレコード確定強制-IwpWD」 ]
#
#受注ヘッダ情報をUIのグローバルフィールドにセット(後でUIを取り込み、出庫ヘッダを作成する前処理)
#
フィールド設定 [ UI::gCompId; 受注::得意先ID ]
フィールド設定 [ UI::gDeptId; 受注::請求部署ID ]
フィールド設定 [ UI::gPicId; 受注::担当ID ]
フィールド設定 [ UI::gTaxRate; 受注::消費税率 ]
フィールド設定 [ UI::gDate; Get(日付) ]
変数を設定 [ $oriWinName; 値:Get ( ウインドウ名 ) //スクリプトの最後でこのウインドウに戻る為、記憶する ]
#
#移行する受注明細を抽出
#
関連レコードへ移動 [ テーブル: 「受発注明細_受注」; 使用するレイアウト: 「受注明細#取込」 (受発注明細_受注) ] [ 関連レコードのみを表示; 新規ウインドウ ]
変数を設定 [ $orderNo; 値:受注::受注No ]
検索実行 [ 指定された検索条件: レコードの検索; 条件: 受発注明細_受注::受注No: 「$orderNo」 AND 受発注明細_受注::移行数量: 「>-9999999999」 ] [ 記憶する ]
#
#UI→出庫取込
#

関連レコードへ移動 [ テーブル: 「出庫」; 使用するレイアウト: 「出庫」 (出庫) ] [ 関連レコードのみを表示 ]
レコードのインポート [ ソース: 「file:EasyApp15_p」; ターゲット: 「出庫」; 方法: 追加; 文字セット: 「シフト JIS」; フィールドデータのインポート順: ソースフィールド 37 のインポート 出庫::得意先ID ソースフィールド 38 のインポート 出庫::請求部署ID ソースフィールド 39 のインポート 出庫::担当ID ソースフィールド 40 のインポート 出庫::消費税率 ソースフィールド 41 のインポート 出庫::出庫日 ] [ ダイアログなし ]
変数を設定 [ $shipNo; 値:出庫::出庫No ]
#
#受注明細→出庫明細を取込
#
レイアウト切り替え [ 「出庫伝票」 (入出明細_出庫) ]
レコードのインポート [ ソース: 「file:EasyApp15_p」; ターゲット: 「入出明細_出庫」; 方法: 追加; 文字セット: 「シフト JIS」; フィールドデータのインポート順: ソースフィールド 2 のインポート 入出明細_出庫::商品ID ソースフィールド 3 のインポート 入出明細_出庫::販売単価 ソースフィールド 13 のインポート 入出明細_出庫::備考 ソースフィールド 14 のインポート 入出明細_出庫::単位 ソースフィールド 15 のインポート 入出明細_出庫::受注明細ID ソースフィールド 20 のインポート 入出明細_出庫::出庫数量 ] [ ダイアログなし ]
フィールド内容の全置換 [ 入出明細_出庫::出庫No; 計算で置き換える: $shipNo ] [ ダイアログなし ]
フィールド内容の全置換 [ 入出明細_出庫::入出庫日; 計算で置き換える: Get(日付) ] [ ダイアログなし ]
関連レコードへ移動 [ テーブル: 「出庫」; 使用するレイアウト: 「出庫」 (出庫) ] [ 関連レコードのみを表示 ]
ウインドウの調整 [ 収まるようにサイズ変更 ]
ウインドウを選択 [ 名前: $oriWinName; 現在のファイル ]
フィールドへ移動 [ 受発注明細_受注::移行数量 ]
#
#移行数FDはクリアしておく
#
Loop
  Exit Loop If [ 受発注明細_受注::Id = "" ]
  フィールド設定 [ 受発注明細_受注::移行数量; "" ]
  ポータル内の行へ移動 [ 次の; 最後まできたら終了 ]
End Loop
レコード/検索条件確定 [ ダイアログなし ]


以上


(土屋)

2014-10-08

iPad のバーコードスキャンで入庫伝票を作成 ― FMEasy在庫のカスタマイズ

FileMaker Go 13 を使ったバーコード読み取り機能について

 FileMaker Go 13 にはバーコード読み取り機能が付属しています。
 専用のバーコードリーダーをお持ちであれば、もともとデスクトップからバーコード入力できますが、バーコードリーダーをお持ちでなくても、iPhone や iPad のカメラ機能でバーコードを読み取れるようになったのは嬉しいですね。



 外回りが多い営業さんや、倉庫管理をする際にも、モバイル操作でバーコード読み取りができれば、適用範囲も広がりそうです。

 今回は、弊社製品『FMEasy在庫』をカスタマイズすることによって、iPad から商品バーコード(JAN)を読み取りながら、入庫登録ができるようにする方法をご紹介します。


【開発レベル】
中級(レイアウト修正、テーブル修正、スクリプト修正について理解している)

【用意するもの】
1. 『FMEasy在庫 R1.0』または『FMEasy在庫 IWP/WD R1.5』
『FMEasy在庫』はこちらからダウンロードできます。
2. iPad/iPad Mini
3. FileMaker Go 13 (iPad にインストール)
FileMaker Go 13 はこちらからダウンロードできます。


注意:
1. 作業を始めるまえに、必ず『FMEasy在庫』のバックアップをお取りください。
バックアップのしかたはこちらを参照
2. 作業の際、修正場所を間違えると、既存の機能が動作しなくなる可能性があります。細心の注意を払い、ご自身の責任で行ってください。

『FMEasy在庫』に JAN 読み取り機能を追加する

 今回は、『FMEasy在庫 IWP/WD R1.5』を使って説明を進めていきますが、『FMEasy在庫 R1.0』開発版をご利用の方も、操作は同様となります。

1. 商品レイアウトに [JAN] フィールドを配置

 『FMEasy 在庫』には、[JAN] という名前の予備フィールドがあらかじめ用意されていますので、FileMaker Pro 12/13 を起動して開発者パスワードで EasyApp15.fmp12/EasyApp.fmp12 を開き、下図のように、お好みの位置に [JAN] フィールドを配置してください。



2. iPad からのJAN コード読み取り機能を商品レイアウトに追加


 iPad からから上図の[JAN]フィールドをタップしたときに、バーコード読み取り機能が走るようにします。

 スクリプトエディタを開き、「デバイスから挿入」スクリプトステップを使って[JAN]フィールドにバーコードが挿入されるように指定します。




 このとき、FileMaker Go で [JAN] フィールドをタップしたときのみ、このスクリプトが実行されるようにしますので、一行目の If 文に PatternCount(Get ( アプリケーションバージョン ); "Go") が指定されているところに注目してください。

 バーコードの読み取りが終わったら、次のフィールドに移動するように設計しておくと、システム運用時に使いやすくなるでしょう。

 これをスクリプトトリガとして、商品画面の [JAN] フィールドに設定します。
 イベント発生のタイミングは、OnObjectEnter (タップ時)になります。



 ここまでできたらレイアウトを保存します。

 FileMaker Go 13 で商品レコードにアクセスし、[JAN] フィールドをタップするとカメラに切り替わりますので、JAN のバーコードを読み取ると、JAN コードが登録されます。



 同じ要領で、JAN コードを商品マスタに登録していきましょう。



3. 入出明細テーブルに [JAN] フィールドを追加

 EasyData15.fmp12/EasyData.fmp12 のフィールド定義を開き、入出明細テーブルに [JAN] フィールドをテキスト型で追加します。



4. 入出明細の [JAN] から商品マスタの [商品ID]を呼び出すためのリレーションを追加

 EasyApp15.fmp12/EasyApp.fmp12 のリレーション定義を開き、「入庫レイアウト TOG」のセクションに下図のようにリレーションを追加します。

 入庫_商品#JAN TO の参照テーブルは商品テーブルです。
 商品と入出明細の [JAN] を関連づけます。



5. iPad 用の入庫管理レイアウトを作る

 EasyApp15.fmp12/EasyApp.fmp12 のレイアウトモードで新規レイアウトを作成します。
 FileMaker Pro 13 では、下図のように視覚的にレイアウトを作成できます。

 このとき、表示するレコードは「入庫」、レイアウト名は ipad 用の入庫画面とわかる名前を指定しておきます。

 また、ここでは縦置きを前提にしたレイアウト選択を行っていますが、運用時に縦置きと横置きとでどちらが使い勝手が良くなるかを事前によく検討しておくと、後々のレイアウト調整の手間が省けます。



 レイアウトのテーマや体裁はお好みで結構ですが、明細部分に [入出明細_入庫::JAN] フィールドを配置するのを忘れないようにしてください。

 たとえば、できあがったレイアウトを FileMaker Go 13 で閲覧してみると、以下のようになります。


 上図のように、[商品ID]と[JAN]フィールドは両方配置してください。

6. [JAN] のバーコード読み取りスクリプトを作り、OnObjectEnter のスクリプトトリガとして動作させる

 前述「2. iPad からのJAN コード読み取り機能を商品レイアウトに追加」と同じ操作になりますので、ここでは説明を省略します。
 
7. [商品ID]/[JAN] 相互呼び出しのスクリプトトリガを追加する

 iPad入庫画面で、[商品ID] を入力したら [JAN] を自動的に呼び出し、また[JAN]を入力したら [商品ID]を自動的に呼び出すようにスクリプトを作成します。

 『FMEasy在庫』のような分離モデルを採用したシステムの場合、レコード未確定状態ではフィールド定義のルックアップが正常に動作しないことがありますので、このスクリプトを考慮されるとよいでしょう。

備考: [仕入単価]、[単位]の呼び出しも用意しておくとより確実でしょう。



 スクリプトができたら、iPad入庫画面の [商品ID] と [JAN] のそれぞれに、OnObjectSave のタイミングでスクリプトトリガを設定します。



 これで準備が整いました。


 以降はデモビデオで実際の操作感をご覧ください。

『FMEasy在庫』に iPad から入庫登録をするデモ動画

商品を仕入れたという前提で、iPad入庫画面で商品のバーコードを読み取って JAN コードを入力しているところです。

 

 JAN コードの入力のタイミングで、[商品ID] が自動入力されます。
[数量]を入力すると、制御が次の行に移ることによって[JAN] 読み取りのスタンバイ状態になりますので、連続的な操作でバーコード読み取りができます。


 実際にやってみてわかったことですが、カメラ機能のフォーカスを合せるのに少々コツがいります。
 今回は手ブレ対策として、このように鉄アレイで本体を固定してバーコード読み取りをしました。



補足:
 このような iPad スタンドを使ってみると作業しやすくなるかもしれません。
 鉄アレイに比べれば見た目もグーーーンとおシャレですし、何と言っても角度を変えられますから^^。



※『FMEasy在庫』をカスタマイズするには、開発版が必要となります。


参考記事:
FileMaker Go による iPad/iPhone 向けソリューションの開発ヒント集


『FMEasy在庫』カスタマイズ関連記事:
受注・受注残管理モジュールを作る ― FMEasy在庫のカスタマイズ (1)
受注・受注残管理モジュールを作る ― FMEasy在庫のカスタマイズ (2)



2014-10-07

土屋企画のソフトウェア販売サイトのご案内

 本稿土屋企画の製品購入サイトの説明となります。購入サイトをご利用いただくには、こちらをクリックして以下のページを表示します。


注:
本システムは FileMakerインスタントWeb(IWP)と SQL Server 2000 により開発・運用されています。


1. 新規購入と登録ユーザによる購入

上図のページで新規のお客様は“新規購入”ボタンをクリックしてください(以下、「2-A 新規購入」参照)。土屋企画製品の登録ユーザの方は“ログイン”ボタンをクリックし、次の画面で[アカウント名]と[パスワード]を入力して“ログイン”をクリックします(以下、「2-B 登録ユーザによる購入」参照)。

2-A. 新規購入

“新規購入”ボタンをクリックすると、下記のページが表示されます。

  1. まず「お客様情報」欄の各項目に必要な情報を入力してください。*が付いている項目は入力が必須です。
  2. 次に希望の商品を「買い物カゴ」タブに入れます。[新規購入]タブ内の商品の右端にある“カゴへ”をクリックすると、その商品が「買い物カゴ」タブ内に表示されます(以下、「3.買い物カゴ」参照)。

    注:
    [製品名]をクリックすると、製品の案内ページが表示されます。

2-B. 登録ユーザによる購入

ログインに成功する以下のページが表示されます。ウインドウ右上部にある“製品購入申込”ボタンをクリックします。

「購入/アップグレード ― 入力」のページに、お客様の情報が入力された状態で表示されます。
必要に応じて「お客様情報」欄の項目を変更してください。 本システムにログインするときに必要となる[アカウント名]および[パスワード]もこちらのページで変更が可能です。

本ページ下部には4つのタブがあります。
タブ 説明
アップグレード アップグレード可能な製品がある場合、表示される
新規購入 新規購入可能な製品が表示される
お得意様優待 優待販売がある場合、表示される
買い物カゴ 他の3つのタブ上にある“カゴへ”ボタンで選択された製品が表示される


■アップグレードタブ

[対象ライセンス]が複数ある場合、つまりアップグレード可能なライセンスが複数ある場合、
目的のライセンスをクリックして選択すると、右にアップグレード可能な製品が表示される

アップグレード可能な製品がある場合は、「アップグレード」タブ内にその製品が表示されます。アップグレードする製品の右にある“カゴへ”をクリックすると、その商品が「買い物カゴ」タブ内に表示されます(以下、「3.買い物カゴ」参照)。

注:
[対象ライセンス]が複数行ある場合、アップグレードするライセンスをクリックして選択してください。選択したライセンスに対するアップグレード可能な製品が右側に表示されます。

■新規購入タブ
上記「2-A 新規購入」参照。

■お得意様優待タブ
お得意様を対象とした優待販売製品が表示されます。製品の右にある“カゴへ”をクリックすると、その製品が「買い物カゴ」タブ内に表示されます(以下、「3.買い物カゴ」参照)。
注:
優待販売は期間限定の為、本タブには何も表示されないことがあります。

3. 買い物カゴ

上述の各タブにある“カゴへ”ボタンをクリックすると、その製品が[買い物カゴ]タブ内に移動します。他にも購入する製品がある場合は、適切なタブをクリックして購入する製品の“カゴへ”ボタンをクリックして、その製品を[買い物カゴ]タブへ移動します。購入する製品を登録し終えたら、“確認画面へ”ボタンをクリックします。 


項目説明

項目 説明 補足
クリックすると数量が1増す アップグレード製品の場合、本ボタンは動作せず
クリックすると数量が1減る アップグレード製品の場合、本ボタンは動作せず
× 製品を買い物カゴから削除する
確認画面へ 確認画面へ移動

4. ご注文確認ページ

 本ページで注文内容をご確認頂き、修正が必要であれば“前画面へ戻る”を、修正が不要であれば“注文を確定する”をクリックしてください。 “注文を確定する”をクリックすると、注文完了ページが表示されます。



5. 注文完了ページ

注文が完了しました。お客様には注文の確認のメールが自動送信されます。



以上



【IWP関連記事】

【IWP関連の製品・サービス】