2012年10月2日カテゴリー:未分類

EC-CUBE2.12:「のし」の付加が選択でき、メールや納品書に表示する。

▼ここでのカスタマイズファイルをすべてダウンロードできます。
必要な箇所だけコピーしてご利用ください。
他のカスタマイズも含まれている場合がありますので、ファイルの上書きは絶対におやめください。
こちらから(facebookユーザーのみ)


(1)
データベースを拡張する。

「dtb_products」に「のし」の選択可・不可を保持するためのカラム「noshi」を追加する。

[php]
ALTER TABLE dtb_products ADD noshi smallint NOT NULL DEFAULT 2
[/php]

「dtb_order」に購入時に選択された「のし」情報を保持するためのカラム「gift_paper」を追加する。

[php]
ALTER TABLE dtb_order ADD gift_paper smallint
[/php]

「dtb_order_temp」(受注情報一時保存)に購入時に選択された「のし」情報を保持するためのカラム「gift_paper」を追加する。

[php]
ALTER TABLE dtb_order_temp ADD gift_paper smallint
[/php]


マスターテーブルを2つ追加
■1つめのテーブル(mtb_noshi)を作成する
【MySQL・PostgreSQL】

[php]
CREATE TABLE mtb_noshi (
id smallint,
name text,
rank smallint NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);
[/php]

■2つめのテーブル(mtb_gift_paper)を作成する
【MySQL・PostgreSQL】

[php]
CREATE TABLE mtb_gift_paper (
id smallint,
name text,
rank smallint NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);
[/php]

 ④で作成したテーブルに値を登録する。「システム設定>マスターデータ管理」で開くことになる。
■mtb_noshi

[php]
INSERT INTO mtb_noshi (id, name, rank) VALUES (1, ‘可’, 0);
INSERT INTO mtb_noshi (id, name, rank) VALUES (2, ‘不可’, 1)
[/php]

■mtb_gift_paper

[php]
INSERT INTO mtb_gift_paper (id, name, rank) VALUES (0, ‘希望しない’, 0);
INSERT INTO mtb_gift_paper (id, name, rank) VALUES (1, ‘無地のし(紅白)’, 1);
INSERT INTO mtb_gift_paper (id, name, rank) VALUES (2, ‘内祝(蝶むすび)’, 2);
INSERT INTO mtb_gift_paper (id, name, rank) VALUES (3, ‘内祝(むすび切り)’, 3);
INSERT INTO mtb_gift_paper (id, name, rank) VALUES (4, ‘内祝(婚礼)’, 4);
INSERT INTO mtb_gift_paper (id, name, rank) VALUES (5, ‘快気祝’, 5);
INSERT INTO mtb_gift_paper (id, name, rank) VALUES (6, ‘粗供養’, 6);
INSERT INTO mtb_gift_paper (id, name, rank) VALUES (7, ‘志(蓮のし)’, 7);
INSERT INTO mtb_gift_paper (id, name, rank) VALUES (8, ‘無地のし(仏)’, 8);
INSERT INTO mtb_gift_paper (id, name, rank) VALUES (9, ‘御礼’, 9);
INSERT INTO mtb_gift_paper (id, name, rank) VALUES (10, ‘御挨拶’, 10);
INSERT INTO mtb_gift_paper (id, name, rank) VALUES (11, ‘その他’, 11)
[/php]

管理者が商品を登録する際、のしの選択「可」「不可」の初期値をパラメータ設定で行う。
mtb_constantsにカラムを追加する。

[php]
INSERT INTO mtb_constants (id, name, rank, remarks) VALUES (‘DEFAULT_PRODUCT_NOSHI’, ‘2’, 1418, ‘のしデフォルト選択値(1:可 2:不可)’);
[/php]

★管理画面→パラメーター設定で、「この内容で登録する」をクリックすると反映される。

(2)カートセッションの管理

■data/class/SC_CartSession.php
390行目あたり 「すべてのカートの内容を取得する. function getAllCartList()」の次に。

[php]
//■のし
/**
* カート内の商品IDを取得する
*
* @param $cartKey カートキー名
* @return array カート内の商品IDの配列
*/
function getCartProductID($cartKey) {
// カートキーの最大要素番号を取得する
$max = $this->getMax($cartKey);
// 全てのカートに含まれている商品IDを取得する
for($i = 0; $i <= $max; $i++) { if($this->cartSession[$cartKey][$i][‘cart_no’] != “”) {
$arrRet[] = $this->cartSession[$cartKey][$i][‘productsClass’][‘product_id’];
}
}
return $arrRet;
}
[/php]

(3)DB関連で共通の処理を追加

■data/class/helper/SC_Helper_DB.php
class SC_Helper_DB{}内に挿入(最下部)

[php]
//「のし」
/**
* 指定されたIDの商品にのし選択可能商品が
* 存在するかで「のし選択」項目の表示有無を決定する.
*
* @param array $arrProductid 商品IDの配列
* @return bool true:のし選択可能商品がある false:のし選択可能商品が無し
*/
function sfJudgeShowGiftPaper($arrProductid) {

// 商品IDが一件もない場合、falseで終了
if(strlen($arrProductid[0] < 1)) return false; // カート内にのし選択可能商品が存在する判断する為のSQL用WHERE句を作成する $where = "noshi = 1 AND product_id IN("; $first = true; foreach($arrProductid as $val) { if(!$first) { $where .= ","; } else { $first = false; } $where .= "?"; $sqlval[] = $val; } $where .= ")"; // カート内ののし選択可能商品の件数を取得する $objQuery =& SC_Query_Ex::getSingletonInstance(); $cnt = $objQuery->count(“dtb_products”, $where, $sqlval);

return $cnt > 0;
}
[/php]

(4)管理画面→商品管理に「のし」項目を追加
■data/class/page/admin/products/LC_Page_Admin_Products_Product.php
5カ所追加

[php]
function init() {



$this->arrAllowedTag = $masterData->getMasterData(‘mtb_allowed_tag’);
$this->arrNOSHI = $masterData->getMasterData(‘mtb_noshi’); //■のし①/⑤
[/php]

[php]
function lfInitFormParam(&$objFormParam, $arrPost) {



$objFormParam->addParam(‘公開・非公開’, ‘status’, INT_LEN, ‘n’, array(‘EXIST_CHECK’, ‘NUM_CHECK’, ‘MAX_LENGTH_CHECK’));
$objFormParam->addParam(‘のし’, ‘noshi’, INT_LEN, ‘n’, array(‘EXIST_CHECK’, ‘NUM_CHECK’, ‘MAX_LENGTH_CHECK’)); //■のし②/⑤
[/php]

[php]
function lfSetViewParam_InputPage(&$objUpFile, &$objDownFile, &$arrForm) {



if ($arrForm[‘product_type_id’] == ”) {
$arrForm[‘product_type_id’] = DEFAULT_PRODUCT_DOWN;
}

// ▼のし③/⑤
if($arrForm[‘noshi’] == ”) {
$arrForm[‘noshi’] = DEFAULT_PRODUCT_NOSHI;
}
// ▲のし

// アップロードファイル情報取得(Hidden用)
$arrHidden = $objUpFile->getHiddenFileList();
$arrForm[‘arrHidden’] = array_merge((array)$arrHidden, (array)$objDownFile->getHiddenFileList());
[/php]

[php]
function lfRegistProduct(&$objUpFile, &$objDownFile, $arrList) {



// 配列の添字を定義

‘sale_limit’, ‘deliv_date_id’, ‘maker_id’, ‘note’, ‘noshi’); // ■のし④/⑤



$sqlval[‘creator_id’] = $_SESSION[‘member_id’];
$sqlval[‘noshi’] = $arrList[‘noshi’]; // ■のし⑤/⑤
$arrRet = $objUpFile->getDBFileList();
$sqlval = array_merge($sqlval, $arrRet);
[/php]

■data/Smarty/templates/admin/products/product.tpl

[php]

公開・非公開 * のし選択 *
checked=”checked”/>可  checked=”checked” />不可

[/php]

■data/Smarty/templates/admin/products/confirm.tpl

[php]

公開・非公開 のし選択

[/php]

(5)管理画面→受注管理に「のしの種類」情報を追加
■data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php
3カ所追加

[php]
$this->arrORDERSTATUS = $masterData->getMasterData(‘mtb_order_status’);
$this->arrDeviceType = $masterData->getMasterData(‘mtb_device_type’);
$this->arrGIFTPAPER = $masterData->getMasterData(‘mtb_gift_paper’); //■のし①/③
[/php]

[php]
// 新規受注登録で入力エラーがあった場合の画面表示用に、会員の現在ポイントを取得
if (!SC_Utils_Ex::isBlank($objFormParam->getValue(‘customer_id’))) {
$customer_id = $objFormParam->getValue(‘customer_id’);
$arrCustomer = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($customer_id);
$objFormParam->setValue(‘customer_point’, $arrCustomer[‘point’]);

// 新規受注登録で、ポイント利用できるように現在ポイントを設定
$objFormParam->setValue(‘point’, $arrCustomer[‘point’]);
}

// ▼のし②/③
parent::action();
// 「のしの選択」項目表示フラグ設定
$objDb = new SC_Helper_DB_Ex();
$this->gift_paper_flg = $objDb->sfJudgeShowGiftPaper($this->arrForm[‘product_id’][‘value’]);
// ▲のし
[/php]

[php]
$objFormParam->addParam(‘FAX番号2’, ‘order_fax02’, TEL_ITEM_LEN, ‘n’, array(‘MAX_LENGTH_CHECK’ ,’NUM_CHECK’));
$objFormParam->addParam(‘FAX番号3’, ‘order_fax03’, TEL_ITEM_LEN, ‘n’, array(‘MAX_LENGTH_CHECK’ ,’NUM_CHECK’));
$objFormParam->addParam(‘のしの選択’, ‘gift_paper’, INT_LEN, ‘n’, array(‘NUM_CHECK’, ‘MAX_LENGTH_CHECK’)); //■のし③/③
[/php]

■data/Smarty/templates/admin/order/edit.tpl

[php]

情報


のしの選択




[/php]

■data/Smarty/templates/mobile/shopping/payment.tpl
■その他お問い合わせ
←前に

[php]






のしの種類:


■その他お問い合わせ




[/php]

■data/Smarty/templates/sphone/shopping/payment.tpl
←前に

[php]

のしの選択

ご希望の方は、のしの種類を選択してください。
選択肢の中にご希望のものがございませんでしたら、
「その他」をお選びいただき、その他お問い合わせ欄にお書き添えくださいませ。




のしの種類:





[/php]

(8)「商品購入/ご入力内容のご確認」に「のしの種類」情報を追加
■data/class/pages/shopping/LC_Page_Shopping_Confirm.php

[php]
function init() {
parent::init();
$this->tpl_title = 'ご入力内容のご確認';
$masterData = new SC_DB_MasterData_Ex();
$this->arrPref = $masterData->getMasterData('mtb_pref');
$this->arrSex = $masterData->getMasterData('mtb_sex');
$this->arrMAILMAGATYPE = $masterData->getMasterData('mtb_mail_magazine_type');
$this->arrReminder = $masterData->getMasterData('mtb_reminder');
$this->arrDeliv = SC_Helper_DB_Ex::sfGetIDValueList('dtb_deliv', 'deliv_id', 'service_name');
$this->arrGIFTPAPER = $masterData->getMasterData('mtb_gift_paper'); //■のし
$this->httpCacheControl('nocache');
}
[/php]

■data/Smarty/templates/default/shopping/confirm.tpl

[php]

のしの種類

その他お問い合わせ

[/php]

■data/Smarty/templates/mobile/shopping/confirm.tpl

[php]
【お支払い方法】


【のしの種類】


[/php]

■data/Smarty/templates/sphone/shopping/confirm.tpl

[php]
配送方法

お支払方法:

のしの種類:


[/php]

(9)「のしの種類」情報をメールに反映させる
■data/class/helper/SC_Helper_Mail.php 2カ所に追加

①50行目あたりに追加

[php]
$this->arrPref = $masterData->getMasterData('mtb_pref');
$this->arrGIFTPAPER = $masterData->getMasterData('mtb_gift_paper'); //■のし①/②
[/php]

②181行目あたりに追加

[php]
// 都道府県変換
$arrTplVar->arrPref = $this->arrPref;

//■のし情報の変換 ②/②
$arrTplVar->arrGIFTPAPER = $this->arrGIFTPAPER;
[/php]

▼PC用メール
■data/Smarty/templates/default/mail_templates/order_mail.tpl
34行目あたり

[php]
ご決済方法:
のしの種類:
[/php]

▼携帯用メール
■data/Smarty/templates/mobile/mail_templates/order_mail.tpl
33行目あたり

[php]
ご決済方法:
のしの種類:
[/php]

(10)納品書に反映

■data/class/SC_Fpdf.php 2カ所に追加
① 42行目あたり

[php]
$this->arrPref = $masterData->getMasterData('mtb_pref');
$this->arrGIFTPAPER = $masterData->getMasterData('mtb_gift_paper'); //■のし①/②
[/php]

② 323行目あたり

[php]
// その他支払い情報を表示
if ($this->arrDisp['memo02'] != '') {
$this->arrDisp['payment_info'] = unserialize($this->arrDisp['memo02']);
}
$this->arrDisp['payment_type'] = 'お支払い';

//■のし情報②/②
if ($this->arrDisp['gift_paper'] != 0) {
$text ="のしの種類:". $this->arrGIFTPAPER[$this->arrDisp['gift_paper']];
$this->lfText(125, 120, $text, 10);
}
[/php]