バージョン選択

フォーラム

メニュー

オンライン状況

50 人のユーザが現在オンラインです。 (43 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 50
もっと...

サイト内検索

質問 > その他 > SC_Fpdf.phpで注文日が発送日になるのを防ぎたい

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kooji
投稿日時: 2014/10/24 14:20
対応状況: −−−
新米
登録日: 2014/10/24
居住地: 三重
投稿: 3
SC_Fpdf.phpで注文日が発送日になるのを防ぎたい
ec-cube2.13.2
/data/class/SC_Fpdf.php
下記に書き換えお届け先情報は追加できるのですが、ご注文日が発送日に変わってしまいます。
create_dateどう変えればいいんでしょ?

// 受注データの取得
private function lfGetOrderData($order_id)
{
if (SC_Utils_Ex::sfIsInt($order_id)) {
// DBから受注情報を読み込む
$objPurchase = new SC_Helper_Purchase_Ex();
$objQuery =& SC_Query_Ex::getSingletonInstance();
$where = 'o.order_id = ?';
$this->arrDisp = $objPurchase->getOrder($order_id);
$arrRet = $objQuery->select('*', 'dtb_order as o LEFT JOIN dtb_shipping as s ON o.order_id = s.order_id', $where, array($order_id));
$this->arrDisp = $arrRet[0];
list($point) = SC_Helper_Customer_Ex::sfGetCustomerPoint($order_id, $this->arrDisp['use_point'], $this->arrDisp['add_point']);
$this->arrDisp['point'] = $point;

// 受注詳細データの取得
$arrRet = $objPurchase->getOrderDetail($order_id);
$arrRet = SC_Utils_Ex::sfSwapArray($arrRet);
$this->arrDisp = array_merge($this->arrDisp, $arrRet);

// その他支払い情報を表示
if ($this->arrDisp['memo02'] != '') {
$this->arrDisp['payment_info'] = unserialize($this->arrDisp['memo02']);
}
$this->arrDisp['payment_type'] = 'お支払い';
}
}
ec9iii
投稿日時: 2014/10/24 20:50
対応状況: −−−
一人前
登録日: 2014/9/8
居住地:
投稿: 117
Re: SC_Fpdf.phpで注文日が発送日になるのを防ぎたい
まず、整理させて頂くと、追加された箇所は以下でよろしいでしょうか?


$this->arrDisp = $objPurchase->getOrder($order_id);

//--- ▽▽▽ 以下を追加 ▽▽▽ ---
$arrRet = $objQuery->select('*', 'dtb_order as o LEFT JOIN dtb_shipping as s ON o.order_id = s.order_id', $where, array($order_id));
$this->arrDisp = $arrRet[0];
//--- △△△ 以上を追加 △△△ ---

list($point) = SC_Helper_Customer_Ex::sfGetCustomerPoint($order_id, $this->arrDisp['use_point'], $this->arrDisp['add_point']);


原因かどうか未検証ですが、取り急ぎ気になった記述の箇所を書きますね。

■1
$this->arrDisp = $objPurchase->getOrder($order_id);
で値をセットされているものが、

$this->arrDisp = $arrRet[0];
で上書きされると思いますが、これはわざとでしょうか?

■2
$objQuery->select('*', 'dtb_order as o LEFT JOIN dtb_shipping as s ON o.order_id = s.order_id', $where, array($order_id));

の記述で「*」を使用されておりますが、
取得されたcreate_dateが
「dtb_orderのcreate_date」なのか、「dtb_shippingのcreate_date」なのか、
判断できないようなSQLになっている気がしますが、このあたりに原因はありませんでしょうか?
kooji
投稿日時: 2014/10/27 11:15
対応状況: −−−
新米
登録日: 2014/10/24
居住地: 三重
投稿: 3
Re: SC_Fpdf.phpで注文日が発送日になるのを防ぎたい
遅くなって申し訳ありません
■1
このコード、お届け先情報追加で公開されてるコードですが
それを、2.13.2に// 受注データの取得の箇所書き換えて
検証したら
ご注文日が発送日に書き換わってました
お届け先情報は問題なく納品書に連載されます
■2
dtb_orderとdtb_shipping共create_dataが存在してました
原因は以下のとおりが現状です

取得されたcreate_dateが
「dtb_orderのcreate_date」なのか、「dtb_shippingのcreate_date」なのか、
判断できないようなSQLになっている気がしますが、このあたりに原因はありませんでしょうか?

sqlよくわからないんですが対処方あるんですか?
プラグンの競合性のような順位で回避


ec9iii
投稿日時: 2014/10/28 0:47
対応状況: −−−
一人前
登録日: 2014/9/8
居住地:
投稿: 117
Re: SC_Fpdf.phpで注文日が発送日になるのを防ぎたい
こんにちわ。
どこかのURLを参考にされているんですね。

■1に関しては、
少し無駄なコードになっているだけですので、あまり気にされなくて良いと思います。


■2についてですが、
$objQuery->select('*',
の部分を、
$objQuery->select('dtb_order.order_id, dtb_order.create_date, dtb_shipping.shipping_name01 〜 ',
といったように、必要なテーブル項目を項目名が重複しないように
「テーブル名.項目名」の形式でカンマ区切りで記述してあげると、
>「dtb_orderのcreate_date」なのか、「dtb_shippingのcreate_date」なのか、
>判断できないようなSQL
については回避できるはずです。
上記の内容については、プラグインの優先順とかでは解決できませんので、正しいコードを書くしかありません。


ただ、これが直接的な原因かどうかは全体のコードを見ていないので不明です。
もし上記のコードで回避できないようでしたら、
参照されているホームページで直接ご質問できるようなら、その方が良いかもしれません。


機能的なカスタマイズを行う際は、
ある程度SQLの知識は避けられませんので、少しずつでも理解を深めて頂くしかないのですが、
どうしても苦手分野ということでしたら、
機能面を得意とされている製作会社様に部分的にご依頼されるのも良い方法だとは思いますよ〜。
kooji
投稿日時: 2014/11/2 17:58
対応状況: −−−
新米
登録日: 2014/10/24
居住地: 三重
投稿: 3
Re: SC_Fpdf.phpで注文日が発送日になるのを防ぎたい
わかりました。
selectで重複回避ですね
やってみます。ありがとうございました。
ec9iii
投稿日時: 2014/11/2 21:44
対応状況: −−−
一人前
登録日: 2014/9/8
居住地:
投稿: 117
Re: SC_Fpdf.phpで注文日が発送日になるのを防ぎたい
ちょうど、私も同様のカスタマイズを行いましたので、共有いたします。
やはりcreate_dateが、dtb_shippingのcreate_dateで上書きされてしまっているようでした。


        // DBから受注情報を読み込む
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $col = <<< __EOS__
                 o.*
                ,s.shipping_zip01
                ,s.shipping_zip02
                ,s.shipping_pref
                ,s.shipping_addr01
                ,s.shipping_addr02
                ,s.shipping_name01
                ,s.shipping_name02
__EOS__;
        $where = 'o.order_id = ?';
        $arrRet = $objQuery->select($col, 'dtb_order as o LEFT JOIN dtb_shipping as s ON o.order_id = s.order_id', $where, array($order_id));
        $this->arrDisp = $arrRet[0];



s.XXXXX 〜 の部分は、
PDFに出力したいお届け先項目を記載してください。

なお、複数配送先の場合は、結果が2件以上取得されてしまうと思いますので、不具合が出そうに思いますが、
当方案件が1配送先限定のため、とりあえずここまでとさせて頂きます。ご容赦ください。


スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,288名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.