Skip to main content.

Thursday, October 25, 2007

Ethnaで販売管理システムを部分的に開発してみる(その5)受注業務処理

「Ethnaで販売管理システムを部分的に開発してみる」の続きです。今回は、受注業務の処理部分についてです。今のところ、受注入力と受注一覧があります。

受注入力画面


受注一覧画面


まずは、テーブルの構造についてです。以下は受注データと受注明細データのテーブル定義です。一般的な受注データと受注明細データのテーブル構造になっていると思います。受注データテーブルには、顧客、受注日等の受注全般に関する情報、受注明細データテーブルには、その受注の商品名、数量などの明細情報が商品ごとに格納されます。キーとなる受注番号(orderId)は、ここでは auto_increment で対応しています。開発実務では採番テーブルを用意して管理するという方法の方が一般的でしょうか。以下、テーブル定義です。
-- --------------------------------------------------------
--
-- テーブルの構造 `torder`
--

DROP TABLE IF EXISTS `torder`;
CREATE TABLE IF NOT EXISTS `torder` (
  `orderId` int(11) NOT NULL auto_increment,
  `orderDate` date NOT NULL,
  `customer` varchar(12) NOT NULL,
  `orderName` varchar(50) default NULL,
  `tantou` varchar(10) NOT NULL,
  `kingakuGoukei` int(11) NOT NULL,
  `taxGoukei` int(11) NOT NULL,
  PRIMARY KEY  (`orderId`),
  KEY `fk_ct` (`customer`),
  KEY `fk_shn` (`tantou`)
) ENGINE=InnoDB DEFAULT CHARSET=eucjpms AUTO_INCREMENT=1 ;

-- --------------------------------------------------------
--
-- テーブルの構造 `tordermeisai`
--

DROP TABLE IF EXISTS `tordermeisai`;
CREATE TABLE IF NOT EXISTS `tordermeisai` (
  `orderId` int(11) NOT NULL,
  `lineNo` int(11) NOT NULL,
  `shohinCode` varchar(12) NOT NULL,
  `num` int(11) NOT NULL,
  PRIMARY KEY  (`orderId`,`lineNo`),
  KEY `fk_odsc` (`shohinCode`)
) ENGINE=InnoDB DEFAULT CHARSET=eucjpms;

-- --------------------------------------------------------

次に、Ethnaでの実装についてです。今までマスタメンテの処理ではアプリケーションオブジェクトを使ってきましたが、今回は使っていません。今回は、PEAR::DB を直接使っているという実装です。以下、関連する主なクラスと処理についてです。

Salesmgr_OrderManager クラス
受注データと受注明細データの実際のデータ操作のメソッドがあります。PEAR::DB を使って、SQL文(prepare statement)でデータ操作をしています。尚、ここでは、受注番号(orderId)の扱いは簡単に行っています。上でも書きましたが、開発実務では採番テーブルを用意して更新時はロックをかけて等の厳密な処理が必要となってきます。あと、受注チェックシート(PDF出力)があります。PDF出力に関しては、PDFファイルの出力を参照して下さい。

Salesmgr_Form_WorkOrderInputdo クラス
受注入力のアクションフォームです。フォームの定義を記述しています。

Salesmgr_Action_WorkOrderInputdo クラス
受注入力のアクションクラスです。入力チェックと実際のアクションです。トランザクションを開始して、コミットまでの処理、エラー時はロールバックの処理を行っています。

実際のスクリプトは以下を参照して下さい。(※PHPの書き方ですが、私が書くとforeachが使えるところも全部C言語の配列操作のようなfor文で書いてしまうようです。ご了承ください。)
Salesmgr_OrderManager.php(PEAR::DBを使用したデータ操作の実装部分)の表示
Work/Order/Inputdo.php(アクションでのトランザクションの部分)の表示

今回作成したプロジェクト一式は以下からダウンロードしてご覧いただけます。
「Ethnaで販売管理システムを部分的に開発してみる」のプロジェクト一式

次は、Ethnaで販売管理システムを部分的に開発してみる(その6)PDFファイルの出力です。

当サイトでのEthna関連記事一覧


参考書籍
EthnaPHP [LL???Books] (LL???BOOKS # 2)
EthnaPHP [LL???Books] (LL???BOOKS # 2)
? ? ľ?
?

1,980 (定価)
¥ 1,980 (Amazon価格)
19pt (Amazonポイント)
 (Amazonおすすめ度)
ñ????С
通常24時間以内に発送
(価格・在庫状況は1月6日 14:33現在)


??????~?? (DBMagazine SELECTION)
??????~?? (DBMagazine SELECTION)
?
??

2,520 (定価)
¥ 2,520 (Amazon価格)
25pt (Amazonポイント)
★★★★☆ (Amazonおすすめ度)
ñ
通常24時間以内に発送
(価格・在庫状況は1月6日 14:33現在)