コードを書いてくらす

プログラミングについて書いてます。

在庫管理サンプルを作ってみます

cakePHPをベースに在庫管理システムのサンプルを作ってみます。
機能は以下の通り。

  • 在庫入力:材料名(容量、単位)、数量、入庫日を登録
  • 在庫情報編集:登録済み情報の編集
  • 出庫:材料の数量を減らす

今回はbakeコマンドを使わずに手作業で追加しました。
作成したクラスやファイルは以下の通り。

  • Stocks(データベステーブル):材料名、容量、単位、数量、入庫日を持つテーブル
  • StocksTable(モデルクラス):Stocksテーブルのモデルクラス
  • StocksController:Stocksのアクションを実装するコントローラークラス
  • index.ctp:在庫一覧を表示するテンプレートファイル(/Stocks)
  • add.ctp:在庫追加の画面用テンプレートファイル(/Stocks/add)
  • edit.ctp:登録済み情報の編集用テンプレートファイル(/Stocks/edit)
  • issue.ctp:出庫画面用テンプレートファイル(/Stocks/issue)

画面はこのような感じで。
f:id:matildatilda:20160203140550p:plain
f:id:matildatilda:20160203140600p:plain
f:id:matildatilda:20160203140606p:plain

ソースコードはこちら(実装分のみ)
https://github.com/matildatilda/stocksample


先週、本を見ながらフレームワークを実装したのがかなり良かったのか、さほどつまづかずにすんなりと作成できました。

課題として見えてきたのは

  • テーブルクラスの操作(patchEntity, saveなど)を把握すること
  • テンプレートでできることを把握すること(CSSの設定、JavaScriptの動作など)

です。

実はコントローラークラスを作ってしまった後からStocksテーブルに列(volume, unit)を追加したのですが、1行もコードを修正することなく動作していますね。普通ならSQLまわりで修正もれが出てきそうですが。こういう手軽さはとても楽ですが、思わぬところで動作不良が起きていても気づかなかったりしないか少し不安です。

cakePHPにはテスト環境もあるみたいなのでそちらも少し調べる予定です。

次回は、複数の出庫を一度に行うrecipeアクション(例:「ケーキ」を選択したら小麦粉、砂糖、バターなどをまとめて出庫)を実装する予定です。あと見た目も少し変えたい。

今日はこの辺で。