source: branches/dev/html/admin/total/index.php @ 14459

Revision 14459, 24.0 KB checked in by kakinaka, 19 years ago (diff)
Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7require_once("../require.php");
8require_once("./index_sub.php");
9require_once("../batch/daily.php");
10
11require_once("./class/SC_GraphPie.php");
12require_once("./class/SC_GraphLine.php");
13require_once("./class/SC_GraphBar.php");
14
15// GD¥é¥¤¥Ö¥é¥ê¤Î¥¤¥ó¥¹¥È¡¼¥ëȽÄê
16$install_GD = (function_exists("gd_info"))?true:false;
17
18class LC_Page {
19    var $arrResults;
20    var $keyname;
21    var $tpl_image;
22    var $arrTitle;
23    function LC_Page() {
24        $this->tpl_mainpage = 'total/index.tpl';
25        $this->tpl_subnavi = 'total/subnavi.tpl';
26        $this->tpl_graphsubtitle = 'total/subtitle.tpl';
27        $this->tpl_titleimage = URL_DIR.'img/title/title_sale.jpg';
28        $this->tpl_mainno = 'total';
29        global $arrWDAY;
30        $this->arrWDAY = $arrWDAY;
31        // ¥Ú¡¼¥¸¥¿¥¤¥È¥ë
32        $this->arrTitle[''] = "´ü´ÖÊ̽¸·×";
33        $this->arrTitle['term'] = "´ü´ÖÊ̽¸·×";
34        $this->arrTitle['products'] = "¾¦ÉÊÊ̽¸·×";
35        $this->arrTitle['age'] = "ǯÂåÊ̽¸·×";
36        $this->arrTitle['job'] = "¿¦¶ÈÊ̽¸·×";
37        $this->arrTitle['member'] = "²ñ°÷Ê̽¸·×";
38       
39        // ¥­¥ã¥Ã¥·¥å²óÈò¤Î¤¿¤á¤ËÆüÉÕ¤òÅϤ¹
40        $this->cashtime = time();
41    }
42}
43
44$objPage = new LC_Page();
45$objView = new SC_AdminView();
46$objSess = new SC_Session();
47// ǧ¾Ú²ÄÈݤÎȽÄê
48sfIsSuccess($objSess);
49
50// ÆþÎÏ´ü´Ö¤ò¥»¥Ã¥·¥ç¥ó¤Ëµ­Ï¿¤¹¤ë
51lfSaveDateSession();
52
53if($_GET['draw_image'] != ""){
54    define(DRAW_IMAGE , true);
55}else{
56    define(DRAW_IMAGE , false);
57}
58
59// ¥Ñ¥é¥á¡¼¥¿´ÉÍý¥¯¥é¥¹
60$objFormParam = new SC_FormParam();
61// ¥Ñ¥é¥á¡¼¥¿¾ðÊó¤Î½é´ü²½
62lfInitParam();
63$objFormParam->setParam($_POST);
64$objFormParam->setParam($_GET);
65
66// ¸¡º÷¥ï¡¼¥É¤Î°ú¤­·Ñ¤®
67foreach ($_POST as $key => $val) {
68    if (ereg("^search_", $key)) {
69        $objPage->arrHidden[$key] = $val;       
70    }
71}
72
73$mode = $objFormParam->getValue('mode');
74switch($mode) {
75case 'pdf':
76case 'csv':
77case 'search':
78    // ÆþÎÏÃͤÎÊÑ´¹
79    $objFormParam->convParam();
80    $objPage->arrErr = lfCheckError($arrRet);
81    $arrRet = $objFormParam->getHashArray();
82   
83    // ÆþÎÏ¥¨¥é¡¼¤Ê¤·
84    if (count($objPage->arrErr) == 0) {
85        foreach ($arrRet as $key => $val) {
86            if($val == "") {
87                continue;
88            }
89            switch ($key) {
90            case 'search_startyear':
91                $sdate = $objFormParam->getValue('search_startyear') . "/" . $objFormParam->getValue('search_startmonth') . "/" . $objFormParam->getValue('search_startday');
92                break;
93            case 'search_endyear':
94                $edate = $objFormParam->getValue('search_endyear') . "/" . $objFormParam->getValue('search_endmonth') . "/" . $objFormParam->getValue('search_endday');
95                break;
96            case 'search_startyear_m':
97                list($sdate, $edate) = sfTermMonth($objFormParam->getValue('search_startyear_m'), $objFormParam->getValue('search_startmonth_m'), CLOSE_DAY);
98                break;
99            default:
100                break;
101            }
102        }
103
104        if($objFormParam->getValue('type') != "") {
105            $type = $objFormParam->getValue('type');
106        }
107               
108        $page = $objFormParam->getValue('page');
109       
110        switch($page) {
111        // ¾¦ÉÊÊ̽¸·×
112        case 'products':
113            if($type == "") {
114                $type = 'all';
115            }
116            $objPage->tpl_page_type = "total/page_products.tpl";
117            // ̤½¸·×¥Ç¡¼¥¿¤Î½¸·×¤ò¹Ô¤¦
118            if(!DAILY_BATCH_MODE) {
119                lfRealTimeDailyTotal($sdate, $edate);
120            }
121            // ¸¡º÷·ë²Ì¤Î¼èÆÀ
122            $objPage = lfGetOrderProducts($type, $sdate, $edate, $objPage, $install_GD, $mode);
123            break;
124        // ¿¦¶ÈÊ̽¸·×
125        case 'job':
126            if($type == "") {
127                $type = 'all';
128            }
129            $objPage->tpl_page_type = "total/page_job.tpl";
130            // ̤½¸·×¥Ç¡¼¥¿¤Î½¸·×¤ò¹Ô¤¦
131            if(!DAILY_BATCH_MODE) {
132                lfRealTimeDailyTotal($sdate, $edate);
133            }
134            // ¸¡º÷·ë²Ì¤Î¼èÆÀ
135            $objPage = lfGetOrderJob($type, $sdate, $edate, $objPage, $install_GD);
136            break;
137        // ²ñ°÷Ê̽¸·×
138        case 'member':
139            if($type == "") {
140                $type = 'all';
141            }
142            $objPage->tpl_page_type = "total/page_member.tpl";
143            // ̤½¸·×¥Ç¡¼¥¿¤Î½¸·×¤ò¹Ô¤¦
144            if(!DAILY_BATCH_MODE) {
145                lfRealTimeDailyTotal($sdate, $edate);
146            }
147            // ¸¡º÷·ë²Ì¤Î¼èÆÀ
148            $objPage = lfGetOrderMember($type, $sdate, $edate, $objPage, $install_GD);
149            break;
150        // ǯÂåÊ̽¸·×
151        case 'age':
152            if($type == "") {
153                $type = 'all';
154            }
155           
156            $objPage->tpl_page_type = "total/page_age.tpl";
157            // ̤½¸·×¥Ç¡¼¥¿¤Î½¸·×¤ò¹Ô¤¦
158            if(!DAILY_BATCH_MODE) {
159                lfRealTimeDailyTotal($sdate, $edate);
160            }
161            // ¸¡º÷·ë²Ì¤Î¼èÆÀ
162            $objPage = lfGetOrderAge($type, $sdate, $edate, $objPage, $install_GD);
163            break;
164        // ´ü´ÖÊ̽¸·×
165        default:
166            if($type == "") {
167                $type = 'day';
168            }
169            $objPage->tpl_page_type = "total/page_term.tpl";
170            // ̤½¸·×¥Ç¡¼¥¿¤Î½¸·×¤ò¹Ô¤¦
171            if(!DAILY_BATCH_MODE) {
172                lfRealTimeDailyTotal($sdate, $edate);
173            }
174            // ¸¡º÷·ë²Ì¤Î¼èÆÀ
175            $objPage = lfGetOrderTerm($type, $sdate, $edate, $objPage, $install_GD);
176           
177            break;
178        }
179
180        if($mode == 'csv') {
181            // CSV½ÐÎÏ¥¿¥¤¥È¥ë¹Ô¤Î¼èÆÀ
182            list($arrTitleCol, $arrDataCol) = lfGetCSVColum($page, $objPage->keyname);
183            $head = sfGetCSVList($arrTitleCol);
184            $data = lfGetDataColCSV($objPage->arrResults, $arrDataCol);
185            // CSV¤òÁ÷¿®¤¹¤ë¡£
186            sfCSVDownload($head.$data, $page."_".$type);
187            exit;
188        }
189       
190        if($mode == 'pdf') {
191            // CSV½ÐÎÏ¥¿¥¤¥È¥ë¹Ô¤Î¼èÆÀ
192            list($arrTitleCol, $arrDataCol, $arrColSize, $arrAlign, $title) = lfGetPDFColum($page, $type, $objPage->keyname);
193            $head = sfGetPDFList($arrTitleCol);
194            $data = lfGetDataColPDF($objPage->arrResults, $arrDataCol, 40);
195            // PDF½ÐÎÏÍÑ
196            $graph_name = basename($objPage->tpl_image);
197            lfPDFDownload($graph_name, $head . $data, $arrColSize, $arrAlign, $sdate, $edate, $title, $page);
198            exit;
199        }
200    }
201    break;
202default:
203    if(count($_GET) == 0) {
204        // ¥Ð¥Ã¥Á¥â¡¼¥É¤Î¾ì¹ç¤Î¤ß¼Â¹Ô¤¹¤ë¡ÊÅöÆü¤Î½¸·×¤ò¹Ô¤¦¤¿¤á¡Ë
205        if(DAILY_BATCH_MODE) {
206            // 3ÆüÁ°¤Þ¤Ç¤Î½¸·×
207            lfStartDailyTotal(3,0);
208        }
209    }
210    break;
211}
212
213sfprintr($mode);
214
215
216$objPage->install_GD = $install_GD;
217
218// ÅÐÏ¿¡¦¹¹¿·Æü¸¡º÷ÍÑ
219$objDate = new SC_Date();
220$objDate->setStartYear(RELEASE_YEAR);
221$objDate->setEndYear(DATE("Y"));
222$objPage->arrYear = $objDate->getYear();
223$objPage->arrMonth = $objDate->getMonth();
224$objPage->arrDay = $objDate->getDay();
225// ÆþÎÏÃͤμèÆÀ
226$objPage->arrForm = $objFormParam->getFormParamList();
227
228$objPage->tpl_subtitle = $objPage->arrTitle[$objFormParam->getValue('page')];
229
230$objView->assignobj($objPage);
231$objView->display(MAIN_FRAME);
232
233//---------------------------------------------------------------------------------------------------------------------------
234/* PDF½ÐÎÏ */
235function lfPDFDownload($image, $table, $arrColSize, $arrAlign, $sdate, $edate, $title, $page = "") {
236   
237    $objPdf = new SC_Pdf();
238    $objPdf->setTableColor("CCCCCC", "F0F0F0", "D1DEFE");
239           
240    // ÅÚÂæ¤È¤Ê¤ëPDF¥Õ¥¡¥¤¥ë¤Î»ØÄê
241    $objPdf->setTemplate(PDF_DIR . "total.pdf");
242
243    $disp_sdate = sfDispDBDate($sdate, false);
244    $disp_edate = sfDispDBDate($edate, false);
245               
246    $arrText['title_block'] = $title;
247    $arrText['date_block'] = "$disp_sdate-$disp_edate";
248    $arrImage['graph_block'] = GRAPH_DIR . $image;
249   
250    // ʸËö¤Î\n¤òºï½ü¤¹¤ë
251    $table = ereg_replace("\n$", "", $table);
252    $arrRet = split("\n", $table);
253    $page_max = intval((count($arrRet) / 35) + 1);
254   
255    for($page = 1; $page <= $page_max; $page++) {
256        if($page > 1) {
257            // 2¥Ú¡¼¥¸°Ê¹ß
258            $start_no = 35 * ($page - 1) + 1;
259        } else {
260            // ³«»Ï¥Ú¡¼¥¸
261            $start_no = 1;         
262        }
263               
264        $arrText['page_block'] = $page . " / " . $page_max;
265        $objPdf->setTextBlock($arrText);
266        $objPdf->setImageBlock($arrImage);
267        // ¥Ö¥í¥Ã¥¯ÃÍ¤ÎÆþÎÏ
268        $objPdf->writeBlock();
269        // ºÇ½ª¥Ú¡¼¥¸¤Î¤ß¡¢¾¦ÉÊÊ̽¸·×¤Ï¹ç·×¤¬¤Ê¤¤¤Î¤ÇºÇ½ª¹Ô¤Î¿§¤òÊѹ¹¤·¤Ê¤¤¡£
270        if($page == $page_max && $page != 'products') {
271            $last_color_flg = true;
272        } else {
273            $last_color_flg = false;
274        }   
275        $objPdf->writeTableCenter($table, 500, $arrColSize, $arrAlign, 35, $start_no, $last_color_flg);
276        $objPdf->closePage();
277    }
278
279    // PDF¤Î½ÐÎÏ
280    $objPdf->output(); 
281}
282
283/* ¥»¥Ã¥·¥ç¥ó¤ËÆþÎÏ´ü´Ö¤òµ­Ï¿¤¹¤ë */
284function lfSaveDateSession() {
285    if($_POST['form'] == 1) {
286        $_SESSION['total']['startyear_m'] = $_POST['search_startyear_m'];
287        $_SESSION['total']['startmonth_m'] = $_POST['search_startmonth_m'];
288    }
289   
290    if($_POST['form'] == 2) {
291        $_SESSION['total']['startyear'] = $_POST['search_startyear'];
292        $_SESSION['total']['startmonth'] = $_POST['search_startmonth'];
293        $_SESSION['total']['startday'] = $_POST['search_startday'];
294        $_SESSION['total']['endyear'] = $_POST['search_endyear'];
295        $_SESSION['total']['endmonth'] = $_POST['search_endmonth'];
296        $_SESSION['total']['endday'] = $_POST['search_endday'];
297    }
298}
299
300/* ¥Ç¥Õ¥©¥ë¥ÈÃͤμèÆÀ */
301function lfGetDateDefault() {
302    $year = date("Y");
303    $month = date("m");
304    $day = date("d");
305   
306    $list = $_SESSION['total'];
307   
308    // ¥»¥Ã¥·¥ç¥ó¾ðÊó¤Ë³«»Ï·îÅÙ¤¬Êݸ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
309    if($_SESSION['total']['startyear_m'] == "") {
310        $list['startyear_m'] = $year;
311        $list['startmonth_m'] = $month;
312    }
313   
314    // ¥»¥Ã¥·¥ç¥ó¾ðÊó¤Ë³«»ÏÆüÉÕ¡¢½ªÎ»ÆüÉÕ¤¬Êݸ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
315    if($_SESSION['total']['startyear'] == "" && $_SESSION['total']['endyear'] == "") {
316        $list['startyear'] = $year;
317        $list['startmonth'] = $month;
318        $list['startday'] = $day;
319        $list['endyear'] = $year;
320        $list['endmonth'] = $month;
321        $list['endday'] = $day;
322    }
323   
324    return $list;   
325}
326
327/* ¥Ñ¥é¥á¡¼¥¿¾ðÊó¤Î½é´ü²½ */
328function lfInitParam() {
329    global $objFormParam;
330       
331    // ¥Ç¥Õ¥©¥ë¥ÈÃͤμèÆÀ
332    $arrList = lfGetDateDefault();
333   
334    // ·îÅÙ½¸·×
335    $objFormParam->addParam("·îÅÙ", "search_startyear_m", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startyear_m']);
336    $objFormParam->addParam("·îÅÙ", "search_startmonth_m", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startmonth_m']);
337    // ´ü´Ö½¸·×
338    $objFormParam->addParam("³«»ÏÆü", "search_startyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startyear']);
339    $objFormParam->addParam("³«»ÏÆü", "search_startmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startmonth']);
340    $objFormParam->addParam("³«»ÏÆü", "search_startday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['startday']);
341    $objFormParam->addParam("½ªÎ»Æü", "search_endyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['endyear']);
342    $objFormParam->addParam("½ªÎ»Æü", "search_endmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['endmonth']);
343    $objFormParam->addParam("½ªÎ»Æü", "search_endday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), $arrList['endday']);
344   
345    // hidden¥Ç¡¼¥¿¤Î¼èÆÀÍÑ
346    $objFormParam->addParam("", "page");
347    $objFormParam->addParam("", "type");
348    $objFormParam->addParam("", "mode");
349
350}
351
352/* ÆþÎÏÆâÍÆ¤Î¥Á¥§¥Ã¥¯ */
353function lfCheckError() {
354    global $objFormParam;
355    // ÆþÎϥǡ¼¥¿¤òÅϤ¹¡£
356    $arrRet =  $objFormParam->getHashArray();
357    $objErr = new SC_CheckError($arrRet);
358    $objErr->arrErr = $objFormParam->checkError();
359   
360    // ÆÃ¼ì¹àÌÜ¥Á¥§¥Ã¥¯
361    if($_POST['form'] == 1) {
362        $objErr->doFunc(array("·îÅÙ", "search_startyear_m"), array("ONE_EXIST_CHECK"));
363    }
364   
365    if($_POST['form'] == 2) {
366        $objErr->doFunc(array("´ü´Ö", "search_startyear", "search_endyear"), array("ONE_EXIST_CHECK"));
367    }
368           
369    $objErr->doFunc(array("·îÅÙ", "search_startyear_m", "search_startmonth_m"), array("ALL_EXIST_CHECK"));
370    $objErr->doFunc(array("³«»ÏÆü", "search_startyear", "search_startmonth", "search_startday"), array("CHECK_DATE"));
371    $objErr->doFunc(array("½ªÎ»Æü", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_DATE"));
372    $objErr->doFunc(array("³«»ÏÆü", "½ªÎ»Æü", "search_startyear", "search_startmonth", "search_startday", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_SET_TERM"));
373    return $objErr->arrErr;
374}
375
376/* ÀÞ¤ìÀþ¥°¥é¥Õ¤ÎºîÀ® */
377function lfGetGraphLine($arrResults, $keyname, $type, $xtitle, $ytitle, $sdate, $edate) {
378   
379    $ret_path = "";
380   
381    // ·ë²Ì¤¬0¹Ô°Ê¾å¤¢¤ë¾ì¹ç¤Î¤ß¥°¥é¥Õ¤òÀ¸À®¤¹¤ë¡£
382    if(count($arrResults) > 0) {
383       
384        // ¥°¥é¥Õ¤ÎÀ¸À®
385        $arrList = sfArrKeyValue($arrResults, $keyname, "total");
386
387        // °ì»þ¥Õ¥¡¥¤¥ë̾¤Î¼èÆÀ
388        $pngname = lfGetGraphPng($type);
389       
390        $path = GRAPH_DIR . $pngname;
391       
392        // ¥é¥Ù¥ëɽ¼¨¥¤¥ó¥¿¡¼¥Ð¥ë¤òµá¤á¤ë
393        $interval = intval(count($arrList) / 20);
394        if($interval < 1) {
395            $interval = 1;
396        }
397        $objGraphPie = new SC_GraphPie();
398        $objGraphLine = new SC_GraphLine();
399       
400        // ÃͤΥ»¥Ã¥È
401        $objGraphLine->setData($arrList);
402        $objGraphLine->setXLabel(array_keys($arrList));
403       
404        // ¥é¥Ù¥ë²óž(ÆüËܸìÉÔ²Ä)
405        if($keyname == "key_day"){
406            $objGraphLine->setXLabelAngle(45);
407        }
408
409        // ¥¿¥¤¥È¥ë¥»¥Ã¥È
410        $objGraphLine->setXTitle($xtitle);
411        $objGraphLine->setYTitle($ytitle);
412       
413        // ¥á¥¤¥ó¥¿¥¤¥È¥ëºîÀ®
414        list($sy, $sm, $sd) = split("[/ ]" , $sdate);
415        list($ey, $em, $ed) = split("[/ ]" , $edate);
416        $start_date = $sy . "ǯ" . $sm . "·î" . $sd . "Æü";
417        $end_date = $ey . "ǯ" . $em . "·î" . $ed . "Æü";
418        $objGraphLine->drawTitle("½¸·×´ü´Ö¡§" . $start_date . " - " . $end_date);
419       
420        // ¥°¥é¥ÕÉÁ²è
421        $objGraphLine->drawGraph();
422       
423        // ¥°¥é¥Õ¤Î½ÐÎÏ
424        if(DRAW_IMAGE){
425            $objGraphLine->outputGraph();
426            exit();
427        }
428
429        // ¥Õ¥¡¥¤¥ë¥Ñ¥¹¤òÊÖ¤¹
430        $ret_path = GRAPH_URL . $pngname;
431    }
432    return $ret_path;
433}
434
435// ±ß¥°¥é¥Õ¤ÎºîÀ®
436function lfGetGraphPie($arrResults, $keyname, $type, $title = "", $sdate = "", $edate = "") {
437   
438    $ret_path = "";
439   
440    // ·ë²Ì¤¬0¹Ô°Ê¾å¤¢¤ë¾ì¹ç¤Î¤ß¥°¥é¥Õ¤òÀ¸À®¤¹¤ë¡£
441    if(count($arrResults) > 0) {
442        // ¥°¥é¥Õ¤ÎÀ¸À®
443        $arrList = sfArrKeyValue($arrResults, $keyname, "total", GRAPH_PIE_MAX, GRAPH_LABEL_MAX);
444       
445        // °ì»þ¥Õ¥¡¥¤¥ë̾¤Î¼èÆÀ
446        $pngname = lfGetGraphPng($type);
447        $path = GRAPH_DIR . $pngname;
448       
449        $objGraphPie = new SC_GraphPie();
450       
451        /* ¥Ç¥Ð¥Ã¥°É½¼¨ÍÑ by naka
452        foreach($arrList as $key => $val) {
453            $objGraphPie->debugPrint("key:$key val:$val");
454        }
455        */
456       
457        // ¥Ç¡¼¥¿¤ò¥»¥Ã¥È¤¹¤ë
458        $objGraphPie->setData($arrList);
459        // ËÞÎã¤ò¥»¥Ã¥È¤¹¤ë
460        $objGraphPie->setLegend(array_keys($arrList));
461                               
462        // ¥á¥¤¥ó¥¿¥¤¥È¥ëºîÀ®
463        list($sy, $sm, $sd) = split("[/ ]" , $sdate);
464        list($ey, $em, $ed) = split("[/ ]" , $edate);
465        $start_date = $sy . "ǯ" . $sm . "·î" . $sd . "Æü";
466        $end_date = $ey . "ǯ" . $em . "·î" . $ed . "Æü";
467        $objGraphPie->drawTitle("½¸·×´ü´Ö¡§" . $start_date . " - " . $end_date);
468               
469        // ±ß¥°¥é¥ÕÉÁ²è
470        $objGraphPie->drawGraph();
471       
472        // ¥°¥é¥Õ¤Î½ÐÎÏ
473        if(DRAW_IMAGE){
474            $objGraphPie->outputGraph();
475            exit();
476        }
477
478        // ¥Õ¥¡¥¤¥ë¥Ñ¥¹¤òÊÖ¤¹
479        $ret_path = GRAPH_URL . $pngname;
480    }
481    return $ret_path;
482}
483
484// ËÀ¥°¥é¥Õ¤ÎºîÀ®
485function lfGetGraphBar($arrResults, $keyname, $type, $xtitle, $ytitle, $sdate, $edate) {
486    $ret_path = "";
487   
488    // ·ë²Ì¤¬0¹Ô°Ê¾å¤¢¤ë¾ì¹ç¤Î¤ß¥°¥é¥Õ¤òÀ¸À®¤¹¤ë¡£
489    if(count($arrResults) > 0) {
490        // ¥°¥é¥Õ¤ÎÀ¸À®
491        $arrList = sfArrKeyValue($arrResults, $keyname, "total", GRAPH_PIE_MAX, GRAPH_LABEL_MAX);
492       
493        // °ì»þ¥Õ¥¡¥¤¥ë̾¤Î¼èÆÀ
494        $pngname = lfGetGraphPng($type);
495        $path = GRAPH_DIR . $pngname;
496       
497        $objGraphBar = new SC_GraphBar();
498       
499        foreach(array_keys($arrList) as $val) {
500            $arrKey[] = ereg_replace("¡Á", "-", $val);
501        }
502       
503        // ¥°¥é¥ÕÉÁ²è
504        $objGraphBar->setXLabel($arrKey);
505        $objGraphBar->setXTitle($xtitle);
506        $objGraphBar->setYTitle($ytitle);
507        $objGraphBar->setData($arrList);
508       
509        // ¥á¥¤¥ó¥¿¥¤¥È¥ëºîÀ®
510        $arrKey = array_keys($arrList);
511        list($sy, $sm, $sd) = split("[/ ]" , $sdate);
512        list($ey, $em, $ed) = split("[/ ]" , $edate);
513        $start_date = $sy . "ǯ" . $sm . "·î" . $sd . "Æü";
514        $end_date = $ey . "ǯ" . $em . "·î" . $ed . "Æü";
515        $objGraphBar->drawTitle("½¸·×´ü´Ö¡§" . $start_date . " - " . $end_date);
516       
517        $objGraphBar->drawGraph();
518       
519        if(DRAW_IMAGE){
520            $objGraphBar->outputGraph();
521            exit();
522        }
523       
524        // ¥Õ¥¡¥¤¥ë¥Ñ¥¹¤òÊÖ¤¹
525        $ret_path = GRAPH_URL . $pngname;
526    }
527    return $ret_path;
528}
529
530// ¥°¥é¥ÕÍѤÎPNG¥Õ¥¡¥¤¥ë̾
531function lfGetGraphPng($keyname) {
532    if($_POST['search_startyear_m'] != "") {
533        $pngname = sprintf("%s_%02d%02d.png", $keyname, substr($_POST['search_startyear_m'],2), $_POST['search_startmonth_m']);
534    } else {
535        $pngname = sprintf("%s_%02d%02d%02d_%02d%02d%02d.png", $keyname, substr($_POST['search_startyear'], 2), $_POST['search_startmonth'], $_POST['search_startday'], substr($_POST['search_endyear'],2), $_POST['search_endmonth'], $_POST['search_endday']);
536    }
537    return $pngname;
538}
539
540// ²ñ°÷¡¢Èó²ñ°÷½¸·×¤ÎWHEREʬ¤ÎºîÀ®
541function lfGetWhereMember($col_date, $sdate, $edate, $type, $col_member = "customer_id") {
542    // ¼èÆÀÆüÉդλØÄê
543    if($sdate != "") {
544        if ($where != "") {
545            $where.= " AND ";
546        }           
547        $where.= " $col_date >= '". $sdate ."'";
548    }
549       
550    if($edate != "") {
551        if ($where != "") {
552            $where.= " AND ";
553        }
554        $edate = date("Y/m/d",strtotime("1 day" ,strtotime($edate)));   
555        $where.= " $col_date < date('" . $edate ."')";
556    }
557   
558    // ²ñ°÷¡¢Èó²ñ°÷¤ÎȽÄê
559    switch($type) {
560    // Á´ÂÎ
561    case 'all':
562        break;
563    case 'member':
564        if ($where != "") {
565            $where.= " AND ";
566        }
567        $where.= " $col_member <> 0";
568        break;
569    case 'nonmember':
570        if ($where != "") {
571            $where.= " AND ";
572        }
573        $where.= " $col_member = 0";
574        break;
575    default:
576        break;
577    }
578   
579    return array($where, $arrval);
580}
581
582/** ²ñ°÷Ê̽¸·× **/
583function lfGetOrderMember($type, $sdate, $edate, $objPage, $graph = true) {
584    global $arrSex;
585       
586    list($where, $arrval) = lfGetWhereMember('create_date', $sdate, $edate, $type);
587   
588    // ²ñ°÷½¸·×¤Î¼èÆÀ
589    $col = "COUNT(*) AS order_count, SUM(total) AS total, (AVG(total)) AS total_average, order_sex";
590    $from = "dtb_order";
591    $objQuery = new SC_Query();
592    $objQuery->setGroupBy("order_sex");
593   
594    $tmp_where = $where . " AND customer_id <> 0 AND del_flg = 0 ";
595    $arrRet = $objQuery->select($col, $from, $tmp_where, $arrval);
596   
597    // ²ñ°÷¹ØÆþ¤Ç¤¢¤ë¤³¤È¤òµ­Ï¿¤¹¤ë¡£
598    $max = count($arrRet);
599    for($i = 0; $i < $max; $i++) {
600        $arrRet[$i]['member_name'] = '²ñ°÷'.$arrSex[$arrRet[$i]['order_sex']];
601    }
602    $objPage->arrResults = $arrRet;
603   
604    // Èó²ñ°÷½¸·×¤Î¼èÆÀ
605    $tmp_where = $where . " AND customer_id = 0 AND del_flg = 0 ";
606    $arrRet = $objQuery->select($col, $from, $tmp_where, $arrval);
607    // Èó²ñ°÷¹ØÆþ¤Ç¤¢¤ë¤³¤È¤òµ­Ï¿¤¹¤ë¡£
608    $max = count($arrRet);
609    for($i = 0; $i < $max; $i++) {
610        $arrRet[$i]['member_name'] = 'Èó²ñ°÷'.$arrSex[$arrRet[$i]['order_sex']];
611    }
612   
613    $objPage->arrResults = array_merge($objPage->arrResults, $arrRet);
614   
615    // ±ß¥°¥é¥Õ¤ÎÀ¸À®
616    if($graph) {   
617        $image_key = "member";
618        $objPage->tpl_image = lfGetGraphPie($objPage->arrResults, "member_name", $image_key, "(Çä¾åÈæÎ¨)", $sdate, $edate);
619    }
620   
621    return $objPage;
622}
623
624/** ¾¦ÉÊÊ̽¸·× **/
625function lfGetOrderProducts($type, $sdate, $edate, $objPage, $graph = true, $mode = "") {
626    list($where, $arrval) = lfGetWhereMember('create_date', $sdate, $edate, $type);
627   
628    $where .= " and del_flg=0 and status <> " . ORDER_CANCEL;
629   
630    $sql = "SELECT T1.product_id, T1.product_code, T1.product_name as name, T1.products_count, T1.order_count, T1.price, T1.total ";
631    $sql.= "FROM ( ";
632    $sql.= "SELECT product_id, product_name, product_code, price, ";
633    $sql.= "COUNT(*) AS order_count, ";
634    $sql.= "SUM(quantity) AS products_count, ";
635    $sql.= "(price * sum(quantity)) AS total ";
636    $sql.= "FROM dtb_order_detail WHERE order_id IN (SELECT order_id FROM dtb_order WHERE $where ) ";
637    $sql.= "GROUP BY product_id, product_name, product_code, price ";
638    $sql.= ") AS T1 ";
639    $sql.= "ORDER BY T1.total DESC ";
640   
641    if($mode != "csv") {
642        $sql.= "LIMIT " . PRODUCTS_TOTAL_MAX;
643    }
644   
645    $objQuery = new SC_Query();
646    $objPage->arrResults = $objQuery->getall($sql, $arrval);
647   
648    // ±ß¥°¥é¥Õ¤ÎÀ¸À®
649    if($graph) {
650        $image_key = "products_" . $type;
651        $objPage->tpl_image = lfGetGraphPie($objPage->arrResults, "name", $image_key, "(Çä¾åÈæÎ¨)", $sdate, $edate);
652    }
653   
654    return $objPage;
655}
656
657/** ¿¦¶ÈÊ̽¸·× **/
658function lfGetOrderJob($type, $sdate, $edate, $objPage, $graph = true) {
659    global $arrJob;
660       
661    list($where, $arrval) = lfGetWhereMember('T2.create_date', $sdate, $edate, $type);
662   
663    $sql = "SELECT job, count(*) AS order_count, SUM(total) AS total, (AVG(total)) AS total_average ";
664    $sql.= "FROM dtb_customer AS T1 LEFT JOIN dtb_order AS T2 USING ( customer_id ) WHERE $where AND T2.del_flg = 0 and T2.status <> " . ORDER_CANCEL;
665    $sql.= " GROUP BY job ORDER BY total DESC";
666   
667    $objQuery = new SC_Query();
668    $objPage->arrResults = $objQuery->getall($sql, $arrval);
669   
670    $max = count($objPage->arrResults);
671    for($i = 0; $i < $max; $i++) {
672        $job_key = $objPage->arrResults[$i]['job'];
673        if($job_key != "") {
674            $objPage->arrResults[$i]['job_name'] = $arrJob[$job_key];
675        } else {
676            $objPage->arrResults[$i]['job_name'] = "̤²óÅú";
677        }
678    }
679
680    // ±ß¥°¥é¥Õ¤ÎÀ¸À®   
681    if($graph) {
682        $image_key = "job_" . $type;
683        $objPage->tpl_image = lfGetGraphPie($objPage->arrResults, "job_name", $image_key, "(Çä¾åÈæÎ¨)", $sdate, $edate);
684    }
685   
686    return $objPage;
687}
688
689/** ǯÂåÊ̽¸·× **/
690function lfGetOrderAge($type, $sdate, $edate, $objPage, $graph = true) {
691
692    list($where, $arrval) = lfGetWhereMember('order_date', $sdate, $edate, $type, "member");
693   
694    $sql = "SELECT SUM(order_count) AS order_count, SUM(total) AS total, start_age, end_age ";
695    $sql.= "FROM dtb_bat_order_daily_age WHERE $where ";
696    $sql.= "GROUP BY start_age, end_age ORDER BY start_age, end_age";
697
698    $objQuery = new SC_Query();
699    $objPage->arrResults = $objQuery->getall($sql, $arrval);
700   
701    $max = count($objPage->arrResults);
702    for($i = 0; $i < $max; $i++) {
703        if($objPage->arrResults[$i]['order_count'] > 0) {
704            $objPage->arrResults[$i]['total_average'] = intval($objPage->arrResults[$i]['total'] / $objPage->arrResults[$i]['order_count']);
705        }   
706        $start_age = $objPage->arrResults[$i]['start_age'];
707        $end_age = $objPage->arrResults[$i]['end_age'];
708        if($start_age != "" || $end_age != "") {
709            if($end_age != 999) {
710                $objPage->arrResults[$i]['age_name'] = $start_age . "¡Á" . $end_age . "ºÐ";
711            } else {
712                $objPage->arrResults[$i]['age_name'] = $start_age . "ºÐ¡Á";
713            }
714        } else {
715            $objPage->arrResults[$i]['age_name'] = "̤²óÅú";
716        }
717    }
718   
719    // ËÀ¥°¥é¥Õ¤ÎÀ¸À®
720    if($graph) {
721        $image_key = "age_" . $type;
722        $xtitle = "(ǯÎð)";
723        $ytitle = "(Çä¾å¹ç·×)";
724        $objPage->tpl_image = lfGetGraphBar($objPage->arrResults, "age_name", $image_key, $xtitle, $ytitle, $sdate, $edate);
725    }
726   
727    return $objPage;
728}
729
730/** ´ü´ÖÊ̽¸·× **/
731function lfGetOrderTerm($type, $sdate, $edate, $objPage, $graph = true) {
732       
733        $tmp_col = "sum(total_order) as total_order, sum(men) as men, sum(women) as women,";
734        $tmp_col.= "sum(men_member) as men_member, sum(men_nonmember) as men_nonmember,";
735        $tmp_col.= "sum(women_member) as women_member, sum(women_nonmember) as women_nonmember,";
736        $tmp_col.= "sum(total) as total, (avg(total_average)) as total_average";
737        $objQuery = new SC_Query();
738       
739        switch($type) {
740        // ·îÊÌ
741        case 'month':
742            $col = $tmp_col . ",key_month";
743            $objQuery->setgroupby("key_month");
744            $objQuery->setOrder("key_month");
745            $objPage->keyname = "key_month";
746            $objPage->tpl_tail = "·î";
747            $from = "dtb_bat_order_daily";
748            $xtitle = "(·îÊÌ)";
749            $ytitle = "(Çä¾å¹ç·×)";
750            break;
751        // ǯÊÌ
752        case 'year':
753            $col = $tmp_col . ",key_year";
754            $objQuery->setgroupby("key_year");
755            $objQuery->setOrder("key_year");
756            $objPage->keyname = "key_year";
757            $objPage->tpl_tail = "ǯ";
758            $from = "dtb_bat_order_daily";
759            $xtitle = "(ǯÊÌ)";
760            $ytitle = "(Çä¾å¹ç·×)";
761            break;
762        // ÍËÆüÊÌ
763        case 'wday':
764            $col = $tmp_col . ",key_wday, wday";
765            $objQuery->setgroupby("key_wday, wday");
766            $objQuery->setOrder("wday");
767            $objPage->keyname = "key_wday";
768            $objPage->tpl_tail = "ÍËÆü";
769            $from = "dtb_bat_order_daily";
770            $xtitle = "(ÍËÆüÊÌ)";
771            $ytitle = "(Çä¾å¹ç·×)";
772            break;
773        // »þ´ÖÊÌ
774        case 'hour':
775            $col = $tmp_col . ",hour";
776            $objQuery->setgroupby("hour");
777            $objQuery->setOrder("hour");
778            $objPage->keyname = "hour";
779            $objPage->tpl_tail = "»þ";
780            $from = "dtb_bat_order_daily_hour";
781            $xtitle = "(»þ´ÖÊÌ)";
782            $ytitle = "(Çä¾å¹ç·×)";
783            break;
784        default:
785            $col = "*";
786            $objQuery->setOrder("key_day");
787            $objPage->keyname = "key_day";
788            $from = "dtb_bat_order_daily";
789            $xtitle = "(ÆüÊÌ)";
790            $ytitle = "(Çä¾å¹ç·×)";
791            break;
792        }
793       
794
795    // ¼èÆÀÆüÉդλØÄê
796        if($sdate != "") {
797            if ($where != "") {
798                $where.= " AND ";
799            }           
800            $where.= " order_date >= '". $sdate ."'";
801        }
802       
803        if($edate != "") {
804            if ($where != "") {
805                $where.= " AND ";
806            }
807            $edate_next = date("Y/m/d",strtotime("1 day" ,strtotime($edate)));
808            $where.= " order_date < date('" . $edate_next ."')";
809        }
810       
811        // ¸¡º÷·ë²Ì¤Î¼èÆÀ
812        $objPage->arrResults = $objQuery->select($col, $from, $where, $arrval);
813       
814        // ÀÞ¤ìÀþ¥°¥é¥Õ¤ÎÀ¸À®   
815        if($graph) {
816            $image_key = "term_" . $type;
817            $objPage->tpl_image = lfGetGraphLine($objPage->arrResults, $objPage->keyname, $image_key, $xtitle, $ytitle, $sdate, $edate);
818        }
819       
820        // ¸¡º÷·ë²Ì¤¬0¤Ç¤Ê¤¤¾ì¹ç
821        if(count($objPage->arrResults) > 0) {
822            // ºÇ½ª½¸·×¹Ô¼èÆÀ¤¹¤ë
823            $col = $tmp_col;
824            $objQuery = new SC_Query();
825            $arrRet = $objQuery->select($col, $from, $where, $arrval);
826            $arrRet[0][$objPage->keyname] = "¹ç·×";
827            $objPage->arrResults[] = $arrRet[0];
828        }
829
830        // Ê¿¶ÑÃͤη׻»
831        $max = count($objPage->arrResults);
832        for($i = 0; $i < $max; $i++) {
833            if($objPage->arrResults[$i]['total_order'] > 0) {
834                $objPage->arrResults[$i]['total_average'] = intval($objPage->arrResults[$i]['total'] / $objPage->arrResults[$i]['total_order']);
835            }
836        }
837       
838        return $objPage;
839}
840
841?>
Note: See TracBrowser for help on using the repository browser.