« 2011年04月 | メイン | 2011年11月 »

2011年06月27日

Ec cube のし設定 メモ書き

Ec cubeのし設定メモ

 

///データベーステーブル追加////////////////////////////////////
CREATE TABLE mtb_gift (
id int NOT NULL default '0',
name text,
rank int NOT NULL default '0',
PRIMARY KEY (id)
);

INSERT INTO mtb_constants values('GIFT_PRICE', '577', '523', 'ギフト包装の税込価格');

マスタ管理から選択肢データを入れる

※ギフト包装の価格はパラメーター管理から GIFT_PRICE をいじる
WEB側のプログラムは保存されたファイルを使用しているようなので一度保存しないとのしが0円のままになる。

///テンプレートの変更////////////////////////////////////

 

PC--templates/default/shopping/payment.tpl

<div class="payarea02">
<h3>ギフト包装と熨斗の指定</h3>
<p>ギフト包装をご希望の方は、選択してください。</p>
<div>
<!--{assign var=key value="memo09"}-->
<span class="attention"><!--{$arrPayment[$key]}--></span>
<select name="<!--{$key}-->" style="<!--{$arrPayment[$key]|sfGetErrorColor}-->">
<option value="0" selected="selected">ギフトなし</option>
<!--{html_options options=$arrGift selected=$arrForm[$key].value}-->
</select>
</div>
</div>

携帯--templates/mobile/shopping/payment.tpl

■ギフト包装と熨斗の指定<br />
<!--{assign var=key value="memo09"}-->
<!--{if $arrPayment[$key] != ""}-->
<font color="red"><!--{$arrPayment[$key]}--></font>
<!--{/if}-->
<select name="<!--{$key}-->">
<option value="0">ギフトなし</option>
<!--{html_options options=$arrGift selected=$arrForm[$key].value}-->
</select>

 

 

///LC_Page_Shopping_Payment_Ex.php/////////////////////////////

function init() {
parent::init();
$this->tpl_title = "お支払方法・お届け時間・ギフト包装の指定";
$masterData = new SC_DB_MasterData_Ex();
$this->arrGift = $masterData->getMasterData( "mtb_gift",
array( "id", "name", "rank" ) );
}

 

 

function lfInitParam(&$objFormParam, $deliv_only, &$arrShipping) {
$objFormParam->addParam("配送業者", "deliv_id", INT_LEN, 'n', array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
$objFormParam->addParam("ポイント", "use_point", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK", "ZERO_START"));
$objFormParam->addParam("その他お問い合わせ", 'message', LTEXT_LEN, 'KVa', array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));
$objFormParam->addParam("ポイントを使用する", "point_check", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"), '2');

if ($deliv_only) {
$objFormParam->addParam("お支払い方法", "payment_id", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"));
} else {
$objFormParam->addParam("お支払い方法", "payment_id", INT_LEN, 'n', array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));

foreach ($arrShipping as $val) {
$objFormParam->addParam("お届け時間", "deliv_time_id" . $val['shipping_id'], INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"));
$objFormParam->addParam("お届け日", "deliv_date" . $val['shipping_id'], STEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK"));
}
}
$objFormParam->addParam( "ギフト・のし", "memo09", INT_LEN, "n", array( "MAX_LENGTH_CHECK", "NUM_CHECK") );

$objFormParam->setParam($arrParam);
$objFormParam->convParam();
}

//////////data/Smarty/templates/default/shopping/confirm.tpl////////////////////確認画面

////PCテンプレート
<!--{if $arrData.memo09 gt 0}-->
<tr>
<th colspan="4" class="resulttd">ギフト包装 : <!--{$arrGift[$arrData.memo09]}--></th>
<td class="pricetd"><!--{$smarty.const.GIFT_PRICE|number_format}-->円</td>
</tr>
<!--{/if}-->

 

////携帯

 

 

////////////////LC_Page_Shopping_Confirm_Ex.php///////

function init() {
parent::init();
$masterData = new SC_DB_MasterData_Ex();
$this->arrGift = $masterData->getMasterData( "mtb_gift",
array( "id", "name", "rank" ) );
}

 

/////合計金額のロジック変更////////////////LC_Page_Shopping_Confirm.php

if($arrOrderTemp["memo09"]){
$arrCalcResults["payment_total"] += GIFT_PRICE;
$arrCalcResults['memo10'] = GIFT_PRICE;
}else{
$arrCalcResults['memo10'] = 0;
}

$this->arrForm = array_merge($arrOrderTemp, $arrCalcResults);

 

◆受注完了メール

//テンプレートにはめ込み
//PC /data/Smarty/templates/default/mail_templates/order_mail.tpl

<!--{if $arrOrder.gift_type}-->ギフト包装:<!--{$arrOrder.gift_type}--> ¥ <!--{$arrOrder.gift_price|number_format|default:0}--><!--{/if}-->

//ロジック class_extends/helper_extends/SC_Helper_Mail_Ex.php

//SC_Helper_Mail_Exをオーバーライド
function SC_Helper_Mail_Ex() {
parent::SC_Helper_Mail();
$masterData = new SC_DB_MasterData_Ex();
$this->arrGift = $masterData->getMasterData("mtb_gift",
array( "id", "name", "rank" ) );
}

//sfSendOrderMail
function sfSendOrderMail をコピって以下追加

// ギフト包装変換
$arrOrder['gift_type'] = $this->arrGift[$arrOrder['memo09']];
$arrOrder['gift_price'] = $arrOrder['memo10'];

//↑この前に入れる
// 顧客情報の取得
$customer_id = $arrOrder['customer_id'];
$objQuery->setOrder('customer_id');

 

//マイページ履歴の詳細画面
/// /data/Smarty/templates/default/mypage/history.tpl

 

<!--{if $tpl_arrOrderData.memo09 != "" && $tpl_arrOrderData.memo09 gt 0}-->
<tr>
<th colspan="5" class="alignR">ギフト包装 : <!--{$arrGift[$tpl_arrOrderData.memo09]}--></th>
<td class="alignR"><!--{$tpl_arrOrderData.memo10|escape|number_format}-->円</td>
</tr>
<!--{/if}-->

//クラス変更 /data/class_extends/page_extends/mypage/LC_Page_Mypage_History_Ex.php

function init() {
parent::init();
$masterData = new SC_DB_MasterData_Ex();
$this->arrGift = $masterData->getMasterData( "mtb_gift",
array( "id", "name", "rank" ) );
}

///携帯用は別ロジック? ///今は同じっぽい?

 

///////////////管理画面/////////////////////

◆home

///data/class/pages/admin/LC_Page_Admin_Home.php

function lfGetNewOrder() {
$objQuery =& SC_Query_Ex::getSingletonInstance();

$sql = "SELECT
ord.order_id,
ord.customer_id,
ord.order_name01 AS name01,
ord.order_name02 AS name02,
ord.total,
ord.create_date,
(SELECT
det.product_name
FROM
dtb_order_detail AS det
WHERE
ord.order_id = det.order_id
ORDER BY det.order_detail_id
LIMIT 1
) AS product_name,
(SELECT
pay.payment_method
FROM
dtb_payment AS pay
WHERE
ord.payment_id = pay.payment_id
) AS payment_method
FROM (
SELECT
order_id,
customer_id,
order_name01,
order_name02,
(total + to_number(memo10, '000000000000')) as total,
create_date,
payment_id
FROM
dtb_order AS ord
WHERE
del_flg = 0 AND status <> " . ORDER_CANCEL . "
ORDER BY
create_date DESC LIMIT 10 OFFSET 0
) AS ord";
$arrNewOrder = $objQuery->getAll($sql);
foreach ($arrNewOrder as $key => $val){
$arrNewOrder[$key]['create_date'] = str_replace("-", "/", substr($val['create_date'], 0,19));

}

//print_r($arrNewOrder);

return $arrNewOrder;
}

//昨日の集計等
//lv data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php の total を変更する
function getOrderYesterdaySql($method) {
// return "SELECT ".$method."(total) FROM dtb_order "
return "SELECT ".$method."(total + to_number(memo10, '000000000000')) FROM dtb_order "
. "WHERE del_flg = 0 "
. "AND to_char(create_date,'YYYY/MM/DD') = to_char(now() - interval '1 days','YYYY/MM/DD') "
. "AND status <> " . ORDER_CANCEL;
}

 

function getOrderMonthSql($method) {
return "SELECT ".$method."(total + to_number(memo10, '000000000000')) FROM dtb_order "
. "WHERE del_flg = 0 "
. "AND to_char(create_date,'YYYY/MM') = ? "
. "AND to_char(create_date,'YYYY/MM/DD') <> to_char(now(),'YYYY/MM/DD') "
. "AND status <> " . ORDER_CANCEL;
}

function getOrderTotalDaysWhereSql($type) {
switch($type){
case 'month':
$format = 'MM';
break;
case 'year':
$format = 'YYYY';
break;
case 'wday':
$format = 'Dy';
break;
case 'hour':
$format = 'HH24';
break;
default:
$format = 'YYYY-MM-DD';
break;
}

return "to_char(create_date, '".$format."') AS str_date,
COUNT(order_id) AS total_order,
SUM(CASE WHEN order_sex = 1 THEN 1 ELSE 0 END) AS men,
SUM(CASE WHEN order_sex = 2 THEN 1 ELSE 0 END) AS women,
SUM(CASE WHEN customer_id <> 0 AND order_sex = 1 THEN 1 ELSE 0 END) AS men_member,
SUM(CASE WHEN customer_id <> 0 AND order_sex = 2 THEN 1 ELSE 0 END) AS women_member,
SUM(CASE WHEN customer_id = 0 AND order_sex = 1 THEN 1 ELSE 0 END) AS men_nonmember,
SUM(CASE WHEN customer_id = 0 AND order_sex = 2 THEN 1 ELSE 0 END) AS women_nonmember,
SUM(total + to_number(memo10, '000000000000')) AS total,
AVG(total + to_number(memo10, '000000000000')) AS total_average";
}

◆検索ページ
//検索結果

////lv data/class/pages/admin/order/LC_Page_Admin_Order.php
function findOrders($where, $arrValues, $limit, $offset, $order) {
$objQuery =& SC_Query_Ex::getSingletonInstance();
$objQuery->setLimitOffset($limit, $offset);
$objQuery->setOrder($order);
// return $objQuery->select('*', 'dtb_order', $where, $arrValues);
return $objQuery->select("order_id,order_temp_id,customer_id,message,order_name01,order_name02,order_kana01,order_kana02,order_email,order_tel01,order_tel02,order_tel03,order_fax01,order_fax02,order_fax03,order_zip01,order_zip02,order_pref,order_addr01,order_addr02,order_sex,order_birth,order_job,subtotal,discount,deliv_id,deliv_fee,charge,use_point,add_point,birth_point,tax,(total + to_number(memo10, '000000000000')) as total,payment_total,payment_id,payment_method,note,status,create_date,update_date,commit_date,payment_date,device_type_id,del_flg,memo01,memo02,memo03,memo04,memo05,memo06,memo07,memo08,memo09,memo10", 'dtb_order', $where, $arrValues);
}

//CSVダウンロード

投稿者 muuming : 20:24 | コメント (0)