バージョン選択
フォーラム
メニュー
オンライン状況
|
|
64 人のユーザが現在オンラインです。 (54 人のユーザが フォーラム を参照しています。) |
|
|
フロント機能
投稿者 |
スレッド |
yoshiyoshi |
投稿日時: 2008/2/24 18:49
対応状況: −−−
|
新米 登録日: 2007/5/31 居住地: 投稿: 6 |
問屋注文リスト生成 問屋へ発注するリストをcsvで吐き出すプログラムです。 本体のテーブルやシステムの根本的な部分はいじらないです。 ご使用は自己責任でお願いいたします。 ・EC-CUBE1.4.6 ・postgresql8.3使用 ・問屋リストや、セット商品をいじる部分を作っていないので、テーブルをいじるスキルがないと、一部機能が使えません。 ・dtb_products_class > product_codeに、問屋を判別できる文字を入れて、dtb_wholesale > wholesale_codeにその文字を設定してください。 wholesale_order.phpIN:/admin/order 引用: require_once("../require.php"); require_once("./index_csv.php");
/* ステータス */ $arrWHOLESALEORDERSTATUS = array( 1 => "未注文", 2 => "注文済", ); $arrWHOLESALEORDERSTATUS_COLOR = array( 1 => "#FFFFFF", 2 => "#FFDE9B", );
class LC_Page { function LC_Page() { $this->tpl_mainpage = 'order/wholesale_order.tpl'; $this->tpl_subnavi = 'order/subnavi.tpl'; $this->tpl_mainno = 'order'; $this->tpl_subno = 'wholesale_order'; global $arrWHOLESALEORDERSTATUS; global $arrWHOLESALEORDERSTATUS_COLOR; $this->arrWHOLESALEORDERSTATUS = $arrWHOLESALEORDERSTATUS; $this->arrWHOLESALEORDERSTATUS_COLOR = $arrWHOLESALEORDERSTATUS_COLOR; } }
$objPage = new LC_Page(); $objView = new SC_AdminView(); $objSess = new SC_Session(); $objQuery = new SC_Query();
// 認証可否の判定 $objSess = new SC_Session(); sfIsSuccess($objSess);
//ステータス情報(仮定) $objPage->arrForm = $_POST;
switch ($_POST['mode']){
case 'move': switch($_POST['change_status']){ //未注文 case 1: lfStatusMove(1, $_POST['move']); break; //注文済 case 2: lfStatusMove(2, $_POST['move']); break;
default: break; } break;
//csv出力 case 'temp_csv': $objPage->tpl_onload = "fnOnloadCsvModeSubmit();";
//temp_statusを一時的に1にする lfTempStatusMove(1, $_POST['move']);
break; //csv出力 case 'csv': $status = $_POST['status']; $select = "T3.wholesale_order_id, T1.product_id, T1.product_name, T1.quantity, T1.classcategory_name1, T1.classcategory_name2"; $from = "dtb_order_detail AS T1"; $from .= " LEFT JOIN dtb_order AS T2 ON T1.order_id = T2.order_id"; $from .= " LEFT JOIN dtb_wholesale_order AS T3 ON T1.order_id = T3.order_id AND T1.product_id = T3.product_id"; $from .= " LEFT JOIN dtb_products_class AS T4 ON T1.product_id = T4.product_id AND T1.classcategory_id1 = T4.classcategory_id1 AND T1.classcategory_id2 = T4.classcategory_id2"; $from .= " LEFT JOIN dtb_products AS T5 ON T1.product_id = T5.product_id"; $where = "T3.temp_status = ?";
$arrResults = $objQuery->select($select, $from, $where, array(1)); $s_col = "T1.set_product_id, T2.name, T1.set_quantity, T1.set_classcategory_id, T1.set_product_name"; $s_from = "dtb_products_set AS T1"; $s_from .= " LEFT JOIN dtb_products AS T2 ON T1.set_product_id = T2.product_id"; $s_where = "T1.product_id = ?"; $objQuery->setorder("T1.set_product_id"); foreach($arrResults as $arrResult) { //セットの商品かどうか確認 $arrSetResults = $objQuery->select($s_col, $s_from, $s_where, array($arrResult[product_id])); if($arrSetResults[0]){ foreach($arrSetResults as $arrSetResult){ if($arrSetResult[set_product_name] != ""){ $data .= $arrSetResult[set_product_name]; }else{ $data .= $arrSetResult[name]; } //セットの詳細があれば記載 if($arrSetResult[set_classcategory_id] != 0){ $classcategory_column_name = "classcategory_name". $arrSetResult[set_classcategory_id]; $data .= " ". $arrResult[$classcategory_column_name]; } $data .= ","; $data .= $arrSetResult[set_quantity] * $arrResult[quantity]. ","; $data .= "\r\n"; } }else{ $data .= $arrResult[product_name]. ","; if($arrResult[classcategory_name1]){ $data .= " ". $arrResult[classcategory_name1]; } if($arrResult[classcategory_name2]){ $data .= " ". $arrResult[classcategory_name2]; } $data .= $arrResult[quantity]. ","; $data .= "\r\n"; } } //temp_statusを0に戻して、statusを2(注文済)にする $arrUpdate['status'] = 2; $arrUpdate['temp_status'] = 0; foreach ( $arrResults as $val ){ if ( $val != "" ) { $objQuery->update("dtb_wholesale_order", $arrUpdate, "wholesale_order_id = ?", array($val[wholesale_order_id])); } }
// CSVを送信する。 sfCSVDownload($head.$data); exit; break;
//サブナビ検索 case 'search': break;
//デフォルトは未注文 default: $_POST['status'] = 1; break; }
lfWholesaleOrderDisp($_POST['status'], $_POST['search_pageno']); $objPage->SelectedStatus = $_POST['status']; $objPage->arrWholesaleORDERSTATUS = $arrWholesaleORDERSTATUS;
$objView->assignobj($objPage); $objView->display(MAIN_FRAME);
//-----------------------------------------------------------------------------------------------------------------------------------
//注文商品一覧 function lfWholesaleOrderDisp($status, $pageno){
$conn = new SC_DBConn(); global $objPage; global $objQuery; //問屋を取得 $objPage->arrWholesale = $objQuery->select("wholesale_id, wholesale_name, wholesale_code", "dtb_wholesale", "orifax_flg = 0 AND del_flg = 0"); $select = " T3.wholesale_order_id, T3.status, T2.create_date, T1.product_name, T2.order_name01, T2.order_name02, T1.quantity, T4.product_code, T1.order_id, T1.product_id"; $from = "dtb_order_detail AS T1"; $from .= " LEFT JOIN dtb_order AS T2 ON T1.order_id = T2.order_id"; $from .= " LEFT JOIN dtb_wholesale_order AS T3 ON T1.order_id = T3.order_id AND T1.product_id = T3.product_id"; $from .= " LEFT JOIN dtb_products_class AS T4 ON T1.product_id = T4.product_id AND T1.classcategory_id1 = T4.classcategory_id1 AND T1.classcategory_id2 = T4.classcategory_id2"; $from .= " LEFT JOIN dtb_products AS T5 ON T1.product_id = T5.product_id"; $where = "T2.del_flg = 0 AND NOT T2.status = 5 AND (now() - T2.create_date) < '90days'"; $order = "T3.status DESC, T2.create_date DESC";
//表示順序 $objQuery->setorder($order); //検索結果の取得 $arrcheckorder = $objQuery->select($select, $from, $where); foreach($arrcheckorder as $data){
//発注ステータス(dtb_wholesale_order)が無い場合 if($data['status'] == NULL){
$sqlval['order_id'] = $data['order_id']; $sqlval['product_id'] = $data['product_id']; $sqlval['status'] = 1; $objQuery->insert("dtb_wholesale_order",$sqlval); } } $where .= " AND T3.status = $status AND ( T3.temp_status IS NULL OR T3.temp_status = 0 )"; if($_POST[wholesale_id]){ $set_wholesale_code = $conn->getOne("SELECT wholesale_code FROM dtb_wholesale WHERE orifax_flg = 0 AND del_flg = 0 AND wholesale_id = ?",array($_POST[wholesale_id])); $where .= " AND T4.product_code LIKE '%$set_wholesale_code%'"; }
//検索結果の取得 $arrOrder = $objQuery->select($select, $from, $where);
foreach($arrOrder as $data){ if($arrSetWholesale[0]){ foreach($arrSetWholesale as $Wholesale){ if(strpos($data['product_code'], $Wholesale['wholesale_code']) !== false){ $data['wholesale_list_name'] .= $Wholesale['wholesale_name']. " "; } } $objPage->arrOrder[] = $data; }else{
foreach($objPage->arrWholesale as $Wholesale){ if(strpos($data['product_code'], $Wholesale['wholesale_code']) !== false){ $data['wholesale_list_name'] .= $Wholesale['wholesale_name']. " "; } } $objPage->arrOrder[] = $data; } }
$linemax = $objQuery->count($from, $where); $objPage->tpl_linemax = $linemax;
// ページ送りの処理 $page_max = 200; // ページ送りの取得 $objNavi = new SC_PageNavi($pageno, $linemax, $page_max, "fnNaviSearchOnlyPage", NAVI_PMAX); $objPage->tpl_strnavi = $objNavi->strnavi; // 表示文字列 $startno = $objNavi->start_row; $objPage->tpl_pageno = $pageno; // 取得範囲の指定(開始行番号、行数のセット) $objQuery->setlimitoffset($page_max, $startno);
return $objPage; }
//ステータス情報の更新 function lfStatusMove($status_id, $arrMove){ global $objQuery; global $objPage; global $arrWHOLESALEORDERSTATUS; $table = 'dtb_wholesale_order'; $where = 'wholesale_order_id = ?'; $message = ''; // ステータス変更後にポップアップするメッセージの内容 $arrUpdate['status'] = $status_id; $message = $arrWHOLESALEORDERSTATUS[$status_id] . 'へ移動';
if ( isset($arrMove) ){ foreach ( $arrMove as $val ){ if ( $val != "" ) { $objQuery->update($table, $arrUpdate, $where, array($val)); } } } $objPage->tpl_onload = "window.alert('選択項目を" . $message . "しました。');"; }
//一時的ステータス情報の更新 function lfTempStatusMove($status_id, $arrMove){ global $objQuery; global $objPage; global $arrWHOLESALEORDERSTATUS; $table = 'dtb_wholesale_order'; $where = 'wholesale_order_id = ?'; $arrUpdate['temp_status'] = 1; if ( isset($arrMove) ){ foreach ( $arrMove as $val ){ if ( $val != "" ) { $objQuery->update($table, $arrUpdate, $where, array($val)); } } } }
お好きな位置に追加 subnavi.tplIN:/data/Smarty/templates/admin/order 引用:
<tr><td class=<!--{if $tpl_subno != 'wholesale_order'}-->"navi"<!--{else}-->"navi-on"<!--{/if}-->><a href="./wholesale_order.php" onMouseOver="naviStyleChange('wholesale_order', '#a5a5a5')" <!--{if $tpl_subno != 'wholesale_order'}-->onMouseOut="naviStyleChange('wholesale_order', '#636469')"<!--{/if}--> id="wholesale_order"><img src="<!--{$smarty.const.URL_DIR}-->img/contents/icon.jpg" width="15" height="9" alt="" border="0"><span class="navi_text">注文FAX生成</span></a></td></tr> <tr><td><img src="<!--{$smarty.const.URL_DIR}-->img/contents/navi_line.gif" width="140" height="2" alt=""></td></tr> <!--{if $tpl_subno == 'wholesale_order'}--> <!--{foreach key=key item=item from=$arrWHOLESALEORDERSTATUS}--> <tr><td class=<!--{if $key ne $SelectedStatus}-->"subnavi"<!--{else}-->"subnavi-on"<!--{/if}-->><a href="#" onclick="document.form1.search_pageno.value='1'; fnModeSubmit('search','status','<!--{$key}-->' );" onMouseOver="naviStyleChange('status_sub<!--{$key}-->', '#b7b7b7')" <!--{if $key ne $SelectedStatus}-->onMouseOut="naviStyleChange('status_sub<!--{$key}-->', '#818287')"<!--{/if}--> id="status_sub<!--{$key}-->"><span class="subnavi_text"><!--{$item}--></span></a></td></tr> <tr><td><img src="<!--{$smarty.const.URL_DIR}-->img/contents/navi_subline.gif" width="140" height="2" alt=""></td></tr> <!--{/foreach}--> <!--{/if}-->
wholesale_order.tplIN:/data/Smarty/templates/admin/order 引用: <!--★★メインコンテンツ★★--> <table width="878" border="0" cellspacing="0" cellpadding="0" summary=" "> <form name="form1" id="form1" method="POST" action="<!--{$smarty.server.PHP_SELF|escape}-->" > <input type="hidden" name="mode" value=""> <input type="hidden" name="status" value="<!--{if $arrForm.status == ""}-->1<!--{else}--><!--{$arrForm.status}--><!--{/if}-->" > <input type="hidden" name="search_pageno" value="<!--{$tpl_pageno}-->" > <input type="hidden" name="order_id" value=""> <tr valign="top"> <td background="<!--{$smarty.const.URL_DIR}-->img/contents/navi_bg.gif" height="402"> <!-- サブナビ --> <!--{include file=$tpl_subnavi}--> </td> <td class="mainbg"> <table width="737" border="0" cellspacing="0" cellpadding="0" summary=" "> <!--メインエリア--> <tr> <td align="center"> <table width="706" border="0" cellspacing="0" cellpadding="0" summary=" "> <tr><td height="14"></td></tr> <tr> <td colspan="3"><img src="<!--{$smarty.const.URL_DIR}-->img/contents/main_top.jpg" width="706" height="14" alt=""></td> </tr> <tr> <td background="<!--{$smarty.const.URL_DIR}-->img/contents/main_left.jpg"><img src="<!--{$smarty.const.URL_DIR}-->img/common/_.gif" width="14" height="1" alt=""></td> <td bgcolor="#cccccc"> <table width="678" border="0" cellspacing="0" cellpadding="0" summary=" "> <tr> <td colspan="3"><img src="<!--{$smarty.const.URL_DIR}-->img/contents/contents_title_top.gif" width="678" height="7" alt=""></td> </tr> <tr> <td background="<!--{$smarty.const.URL_DIR}-->img/contents/contents_title_left_bg.gif"><img src="<!--{$smarty.const.URL_DIR}-->img/contents/contents_title_left.gif" width="22" height="12" alt=""></td> <td bgcolor="#636469" width="638" class="fs14n"><span class="white"><!--コンテンツタイトル-->ステータス管理</span></td> <td background="<!--{$smarty.const.URL_DIR}-->img/contents/contents_title_right_bg.gif"><img src="<!--{$smarty.const.URL_DIR}-->img/common/_.gif" width="18" height="1" alt=""></td> </tr> <tr> <td colspan="3"><img src="<!--{$smarty.const.URL_DIR}-->img/contents/contents_title_bottom.gif" width="678" height="7" alt=""></td> </tr> <tr> <td colspan="3"><img src="<!--{$smarty.const.URL_DIR}-->img/contents/main_bar.jpg" width="678" height="10" alt=""></td> </tr> </table> <!--登録テーブルここから--> <table width="678" border="0" cellspacing="1" cellpadding="8" summary=" "> <tr bgcolor="#ffffff"> <td bgcolor="#ffffff" align="center" valign="top" height="400"> <!--{if $tpl_linemax > 0 }--> <table border="0" cellspacing="0" cellpadding="0" summary=" "> <tr> <td><input type="button" name="regist" value="CSV出力!" onclick="fnCsvModeSubmit('temp_csv');"></td> <td width="10"></td> <td> <select name="wholesale_id"> <option value="" <!--{if $smarty.post.wholesale_id}-->selected="selected" <!--{/if}-->style="<!--{$Errormes|sfGetErrorColor}-->" >選択してください</option> <!--{section name=cnt loop=$arrWholesale}--> <option value="<!--{$arrWholesale[cnt].wholesale_id}-->"<!--{if $smarty.post.wholesale_id == $arrWholesale[cnt].wholesale_id}--> selected="selected" <!--{/if}-->><!--{$arrWholesale[cnt].wholesale_name}--></option> <!--{/section}--> </select> </td> <td><input type="button" name="regist" value="絞込" onclick="fnWholesaleIdModeSubmit('wholesale');"></td> <td width="10"></td> <td> <select name="change_status"> <option value="" selected="selected" style="<!--{$Errormes|sfGetErrorColor}-->" >選択してください</option> <!--{foreach key=key item=item from=$arrWHOLESALEORDERSTATUS}--> <!--{if $key ne $SelectedStatus}--> <option value="<!--{$key}-->" ><!--{$item}--></option> <!--{/if}--> <!--{/foreach}--> </select> </td> <td><input type="button" name="regist" value="反映" onclick="fnSelectCheckSubmit('move');"></td> </tr> </table>
<table width="650" border="0" cellspacing="0" cellpadding="0" summary=" "> <tr class="fs12"><td align="left"><!--{$tpl_linemax}-->件が該当しました。 </td></tr> <tr class="fs12"> <td align="center"> <!--▼ページナビ--> <!--{$tpl_strnavi}--> <!--▲ページナビ--> </td> </tr> </table> <table width="650" border="0" cellspacing="0" cellpadding="0" summary=" "> <tr> <td align="right"><input type="button" name="btn01" value="全て選択" onclick="fnBoxChecked(true);"> <input type="button" name="btn01" value="全て解除" onclick="fnBoxChecked(false);"></td> </tr> <tr><td height="10"></td></tr> </table> <table width="650" border="0" cellspacing="1" cellpadding="5" summary=" " bgcolor="#cccccc"> <tr bgcolor="#f2f1ec" align="center" class="fs12n"> <td width="60">受注日</td> <td width="250">商品名</td> <td width="40">数</td> <td width="80">問屋</td> <td width="50">状況</td> <td width="30">選択</td> </tr> <!--{section name=cnt loop=$arrOrder}--> <!--{assign var=status value="`$arrOrder[cnt].status`"}--> <tr bgcolor="<!--{$arrWHOLESALEORDERSTATUS_COLOR[$status]}-->" class="fs12"> <td align="center"><!--{$arrOrder[cnt].create_date|sfDispDBDate:false}--></td> <td align="left"><!--{$arrOrder[cnt].product_name|escape}--></td> <td align="right"><!--{$arrOrder[cnt].quantity|number_format}--></td> <td align="left"><!--{$arrOrder[cnt].wholesale_list_name|escape|default:"なし"}--></td> <td align="center"><!--{$arrWHOLESALEORDERSTATUS[$status]}--></td> <td align="center"><input type="checkbox" name="move[]" value="<!--{$arrOrder[cnt].wholesale_order_id}-->" ></td> </tr> <!--{/section}--> </table> <input type="hidden" name="move[]" value="" > <table width="650" border="0" cellspacing="0" cellpadding="0" summary=" "> <tr><td height="10"></td></tr> <tr> <td align="right"><input type="button" name="btn01" value="全て選択" onclick="fnBoxChecked(true);"> <input type="button" name="btn01" value="全て解除" onclick="fnBoxChecked(false);"></td> </tr> <tr><td height="10"></td></tr> </table> <table width="650" border="0" cellspacing="0" cellpadding="0" summary=" "> <tr class="fs12"> <td align="center"> <!--▼ページナビ--> <!--{$tpl_strnavi}--> <!--▲ページナビ--> </td> </tr> </table> <!--{elseif $arrOrder != "" & $tpl_linemax == 0}--> <table width="650" border="0" cellspacing="0" cellpadding="0" summary=" "> <tr class="fs12"><td align="center">該当するデータはありません。</td></tr> </table> <!--{/if}--> </td> </tr> </table> <!--登録テーブルここまで-->
</td> <td background="<!--{$smarty.const.URL_DIR}-->img/contents/main_right.jpg"><img src="<!--{$smarty.const.URL_DIR}-->img/common/_.gif" width="14" height="1" alt=""></td> </tr> <tr> <td colspan="3"><img src="<!--{$smarty.const.URL_DIR}-->img/contents/main_bottom.jpg" width="706" height="14" alt=""></td> </tr> <tr><td height="30"></td></tr>
</table> </td> </tr> <!--メインエリア--> </table> </td> </tr> </form> </table> <!--★★メインコンテンツ★★-->
<script type="text/javascript"> <!-- function fnSelectCheckSubmit(mode){
var selectflag = 0; var fm = document.form1; if(fm.change_status.options[document.form1.change_status.selectedIndex].value == ""){ selectflag = 1; }
if(selectflag == 1){ alert('セレクトボックスが選択されていません'); return false; } var i; var checkflag = 0; var max = fm["move[]"].length; if(max) { for (i=0;i<max;i++){ if(fm["move[]"][i].checked == true){ checkflag = 1; } } } else { if(fm["move[]"].checked == true) { checkflag = 1; } }
if(checkflag == 0){ alert('チェックボックスが選択されていません'); return false; } if(selectflag == 0 && checkflag == 1){ document.form1.mode.value = mode; document.form1.submit(); } } function fnBoxChecked(check){ var count; var fm = document.form1; var max = fm["move[]"].length; for(count=0; count<max; count++){ fm["move[]"][count].checked = check; } }
function fnWholesaleIdModeSubmit(mode){ document.form1.mode.value = mode; document.form1.submit(); }
function fnCsvModeSubmit(mode){
var selectflag = 0; var fm = document.form1;
var i; var checkflag = 0; var max = fm["move[]"].length; if(max) { for (i=0;i<max;i++){ if(fm["move[]"][i].checked == true){ checkflag = 1; } } } else { if(fm["move[]"].checked == true) { checkflag = 1; } }
if(checkflag == 0){ alert('チェックボックスが選択されていません'); return false; } document.form1.mode.value = mode; document.form1.submit(); } function fnOnloadCsvModeSubmit(){ document.form1.mode.value = 'csv'; document.form1.submit(); } //--> </script>
【新規テーブル】 引用: CREATE TABLE dtb_wholesale ( wholesale_id serial NOT NULL, wholesale_name text, wholesale_code text, orifax_flg smallint NOT NULL DEFAULT 0, dropshipping_flg smallint NOT NULL DEFAULT 0, mail_address text, mail_name text, mail_subject text, mail_body text, del_flg smallint NOT NULL DEFAULT 0, create_date timestamp without time zone NOT NULL DEFAULT now() ) WITH OIDS; ALTER TABLE dtb_wholesale OWNER TO postgres;
CREATE TABLE dtb_wholesale_order ( wholesale_order_id serial NOT NULL, order_id integer NOT NULL, product_id integer, wholesale_id integer, temp_status smallint, status smallint, del_flg smallint NOT NULL DEFAULT 0, memo text, create_date timestamp without time zone NOT NULL DEFAULT now() ) WITH OIDS; ALTER TABLE dtb_wholesale_order OWNER TO postgres;
CREATE TABLE dtb_products_set ( products_set_id serial NOT NULL, product_id integer, set_product_id integer, set_quantity integer, set_status smallint NOT NULL DEFAULT 1, set_classcategory_id smallint NOT NULL DEFAULT 0, set_product_name text ) WITH OIDS; ALTER TABLE dtb_products_set OWNER TO postgres;
テーブルの各列は列名を見ていただければ大体分かると思います。(適当…) 分からなかったら、聞いてみてください。
|
|
|
|
統計情報
総メンバー数は88,992名です
総投稿数は110,019件です
|