売上伝票は見積書をベースに設計します。トランザクション制御と集計処理についても説明します。

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

モデル説明備考
締切売上伝票モデルで利用します。選択肢モデル
売上伝票内訳
売上伝票見積書を参照しつつ、追加項目を加えています。
図1 用意するモデル

締切

売上伝票モデルの「締切」項目が参照するマスタです。選択肢モデルとして用意します。初期値も設定します。

図2 締切モデルの初期値

売上伝票内訳

売上伝票モデルの「内訳」に対応する内容を管理します。

図3 売上伝票内訳モデル

売上伝票

見積書を指定し、参照連動で値を転記する方式として設計しています。繰り返しコンテナ全体を参照連動することもできます。

図4 売上伝票モデル

見積番号項目は、見積書モデルを参照しています。

図5 見積番号項目のモデル参照設定

サジェスト

参照先となる見積書モデルでは、見積番号項目にサジェストを適用しています。 これによって売上伝票では見積番号をサジェスト方式で指定できます。

図6 見積書モデルの見積番号項目の設定

メニューへの登録

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

選択肢モデルは編集しないとして、メニューには追加していません。

図7 売上伝票検索画面をメニューに追加する

メニューから売上伝票を選びます。

図8 メニュー

売上伝票の検索画面が表示されます。「登録画面へ」ボタンを押下します。

図9 登録画面へ遷移する

売上伝票の新規登録画面が開きます。

図10 売上伝票 新規登録画面

伝票番号を手動で入力します。

図11 伝票番号を入力する

見積番号を指定します。サジェスト方式となっているため、"M" と入力すると M ではじまる候補が選択できるようになります。

図12 見積番号を指定する

見積番号を確定させると、見積書に含まれていた値が参照連動で設定されます。今回の売上伝票では、参照連動された値をさらに書き換えることができるようにしています。

業務上、値を書き換えることを許容できない場合は、参照連動項目を読み込み専用としてください。
図13 参照連動で値が転記される

売上伝票を登録した例です。

図14 売上伝票の保存

売上伝票モデルにはトランザクション制御を行っています。具体的には、売上伝票の登録時に、明細に紐づく各商品の在庫数を減らしています。

本来は倉庫への出庫指示で在庫を減らすことが望ましいですが、今回は雛形のアプリケーションとして簡易的に実装しています。

参照元のトレースを使って、売上伝票から商品へ遷移します。

図15 参照元のトレース

初期の在庫数を100としていた場合、これが10減じられ、90になっていることが確認できます。

図16 在庫数の確認 (1)

明細ごとに制御されているため、もう一つの商品の在庫も適切に減じられています。

図17 在庫数の確認 (2)

設定

売上伝票の新規登録と、それに紐づく各商品の更新をひとまとめに行う「トランザクション」を設定します。

図18 トランザクションの設定

スクリプトで、値の変更を行います。return 文で何らかの文字列を返したときは、このトランザクションは失敗し、ロールバックされる仕組みです。スクリプトの書き方の詳細はこちらをお読みください。

var suryou = product4s.stock;
var syukko_num = precord.PNumber;
if (suryou - syukko_num < 0) {
    return precord.PName + "の在庫 "+suryou+" に対して "+syukko_num+" を出庫しようとしました。";
}
product4s.stock = suryou - syukko_num;
return null;
図19 スクリプトの例

この売上伝票モデルには集計ビューを用意しています。

図19 日別の売上を集計する画面

設定

集計ビューを作成します。詳細は集計・グラフをお読みください。

図20 集計ビューを用意する