source: temp/trunk/html/admin/total/index.php @ 2887

Revision 2887, 22.3 KB checked in by naka, 20 years ago (diff)

* empty log message *

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