基本となる「販売商品」モデルを定義します。分類コードなど、商品に基本的な属性もあわせて定義します。

次のモデルを用意します。

モデル説明備考
消費税率開始日付と消費税率を管理します。アドオンギャラリーで提供されるモデルを利用します。
分類商品の分類コードです。
単位仕入れの単位です。
販売商品販売商品マスタです。
図1 用意するモデル

消費税率

アドオンギャラリーで提供しているモデルを再利用します。(後述)

図2 消費税率モデル

単位

仕入れの単位を管理するマスタです。選択肢モデルとして用意します。初期値も設定します。

図3 単位モデル
図4 単位モデルの初期値

分類

分類コードを管理します。

図5 分類モデル

販売商品

販売商品を管理します。上で説明した「単位」と「分類」を利用します。

図6 販売商品モデル

メニューへの登録

用意したモデルをそれぞれメニューに登録します。

消費税率モデルは「共通処理」のタブに含めました。

図7 消費税率モデル

分類モデルは一覧更新画面を「マスタ管理」のタブに含めました。

図8 分類モデル

販売商品モデルは新しく用意したタブ「販売管理」に含めるようにしました。

図9 販売商品モデル

単位モデルは初期設定のみを利用するとし、ここではメニューに加えていません。

消費税率の設定

ビルドしたアプリケーションの動作を確認します。消費税率モデルは、アドオン時に含まれる初期データをインポートしてください。

図10 消費税率モデルの初期データ

データをインポートすると、次のような一覧を確認することができます。

図11 消費税率モデルの初期データ (1)
図12 消費税率モデルの初期データ (2)

分類コードの登録

分類コードを事前に登録しておきます。

図13 分類コードの登録 (1)
図14 分類コードの登録 (2)

販売商品の登録

事前の準備が終わりました。販売商品を登録してみます。メニューから「販売商品」を選びます。

図15 販売商品を選ぶ

検索画面が表示されます。ここで「登録画面へ」ボタンを押下します。

図16 検索画面

商品名、写真画像、商品属性、在庫、価格などの情報を登録できます。

図17 登録した商品の例

販売商品モデルの定義を、より詳しくみていきましょう。

「商品コード」の自動設定

商品コードは自由に設定できますが、未入力のまま登録した場合は、内部で自動採番された主キーの値を商品コードとしても使うようにしています。

LEN関数は文字列の長さを求めます。
商品コードは文字列型ですが主キーは数値型のため、TOSTR関数を使って数値を文字列に変換しています。

IF(LEN(${code})>0, ${code}, TOSTR(${id}))
図18 商品コードの計算式

「商品名かな」の入力チェック

「商品名かな」項目はひらがなのみを許容しています。(ひらがな以外の文字が含まれると入力エラーとして扱います。

図19 入力チェックの設定

消費税の計算

アドオンギャラリーが提供する「消費税率」モデルを利用します。詳細はこちらをお読みください。

図20 消費税の設定

価格の計算

今回は「価格(税抜き)」と「価格(税込み)」のいずれか一つを入力できる、としています。「価格(税抜き)」が入力された場合、これをそのまま「税抜き価格」として扱います。しかし「価格(税込み)」のみが入力されていた場合、この値と現在の消費税率を使って、「税抜き価格」を計算によって求めるようにしています。

小数点の計算は、DIV関数やADD関数を用いることで演算誤差を抑えることができます。

IF(${priceWithoutTax}>0,
  ${priceWithoutTax},
  INT(
    VALUE(
      DIV(
        ${priceWithTax},
        ADD("1.0",${taxRate}),
        2
      )
    )
  ) 
)
図21 価格(税抜き)を計算によって求める

分類コードは複数、設定できる

分類コードは、繰り返しコンテナ形式とします。これによって一つの販売商品に、複数の分類コードを付与することができます。

図22 分類コード

さらに、分類モデルの「有効期限」項目を、モデル参照時の無効判定に利用しています。これによって有効期限が設定された値は、選択肢に表示されないようになります。

図23 分類コードの無効判定項目の設定

レイアウト

販売商品モデルのレイアウトは「隠しレイアウトへの入れ子レイアウト」を適用しています。

図24 隠しレイアウトへの入れ子レイアウトを設定