function execute($params) { $this->executeImpl("Stock", "Menu", "menu_id"); $post = Vizualizer::request(); $loader = new Vizualizer_Plugin("stock"); $model = $loader->loadModel("Menu"); $model->findByPrimaryKey($post["menu_id"]); if ($model->menu_id > 0 && $model->fixed_flg == "1") { $orderDetail = $loader->loadModel("OrderDetail"); $orderDetails = $orderDetail->findAllBy(array("set_id" => $model->set_id, "choice_id" => $model->choice_id, "ne:provision_flg" => "1")); foreach ($orderDetails as $orderDetail) { $orderDetail->provision(); } } }
protected function executeImpl($params, $type, $name, $key) { if (!$params->check("upload") || isset($_POST[$params->get("upload")])) { $loader = new Vizualizer_Plugin($type); // アップされたファイルのデータを取得する。 if ($_FILES[$key]["error"] == UPLOAD_ERR_OK) { // Excelファイルを読み込む $book = PHPExcel_IOFactory::load($_FILES[$key]["tmp_name"]); // 処理を実行する $data = $this->process($params, $book); // トランザクションの開始 $connection = Vizualizer_Database_Factory::begin(strtolower($type)); try { foreach ($data as $item) { $model = $loader->loadModel($name); foreach ($item as $col => $value) { $model->{$col} = $value; } $model->save(); } // エラーが無かった場合、処理をコミットする。 Vizualizer_Database_Factory::commit($connection); // 画面をリロードする。 if (!$this->continue) { // 登録に使用したキーを無効化 $this->removeInput("upload"); $this->reload(); } } catch (Exception $e) { Vizualizer_Database_Factory::rollback($connection); throw new Vizualizer_Exception_Database($e); } } } }
public function material() { $loader = new Vizualizer_Plugin("stock"); $model = $loader->loadModel("Material"); $model->findByPrimaryKey($this->material_id); return $model; }
protected function executeImpl($type, $name, $key) { $post = Vizualizer::request(); if ($post["delete"]) { // サイトデータを取得する。 $loader = new Vizualizer_Plugin($type); $model = $loader->loadModel($name); $model->findByPrimaryKey($post[$key]); // データが検索された場合のみ削除処理を実施 if ($model->{$key} > 0) { // トランザクションデータベースの取得 $connection = Vizualizer_Database_Factory::begin(strtolower($type)); try { $model->delete(); // エラーが無かった場合、処理をコミットする。 Vizualizer_Database_Factory::commit($connection); // 画面をリロードする。 if (!$this->continue) { // 登録に使ったキーを無効化 $this->removeInput("delete"); $this->removeInput($key); $this->reload(); } } catch (Exception $e) { Vizualizer_Database_Factory::rollback($connection); throw new Vizualizer_Exception_Database($e); } } } }
public function purchase() { $loader = new Vizualizer_Plugin("stock"); $model = $loader->loadModel("Purchase"); $model->findByPrimaryKey($this->purchase_id); return $model; }
function execute($params) { // パラメータを調整 $post = Vizualizer::request(); $month = $post["ym"]; if (empty($month) || preg_match("/[0-9]{4}-[0-9]{2}/", $month) == 0) { $month = date("Y-m"); } // クエリを生成 $loader = new Vizualizer_Plugin("stock"); $orders = $loader->loadTable("Orders"); $select = new Vizualizer_Query_Select($orders); $select->addColumn("SUBSTR(" . $orders->order_date . ", 1, 10)", "order_date"); $select->addColumn("SUM(" . $orders->price . ")", "price"); $select->where("order_date LIKE ?", array($month . "-%")); $select->group("SUBSTR(" . $orders->order_date . ", 1, 10)"); // 生成したクエリに対して検索を実行し、結果をモデルとして取得 $order = $loader->loadModel("Order"); $orders = $order->queryAllBy($select); // 結果を属性に設定 $attr = Vizualizer::attr(); $attr["sales"] = $orders; $attr["thismonth"] = date("Y-m-01", strtotime($month . "-01")); $attr["nextmonth"] = date("Y-m", strtotime("+1 month", strtotime($month . "-01"))); $attr["lastmonth"] = date("Y-m", strtotime("-1 month", strtotime($month . "-01"))); }
protected function executeImpl($type, $name, $primary_key) { $post = Vizualizer::request(); if ($post["add"] || $post["save"]) { // サイトデータを取得する。 $loader = new Vizualizer_Plugin($type); $model = $loader->loadModel($name); if (!empty($post[$this->key_prefix . $primary_key])) { $model->findByPrimaryKey($post[$this->key_prefix . $primary_key]); if (!($model->{$primary_key} > 0)) { $model = $loader->loadModel($name, array($primary_key => $post[$this->key_prefix . $primary_key])); } } foreach ($post as $key => $value) { if (!empty($this->key_prefix)) { if (substr($key, 0, strlen($this->key_prefix)) == $this->key_prefix) { $key = preg_replace("/^" . $this->key_prefix . "/", "", $key); $model->{$key} = $value; } } else { $model->{$key} = $value; } } // トランザクションの開始 $connection = Vizualizer_Database_Factory::begin(strtolower($type)); try { $model->save(); if (!empty($this->key_prefix)) { $post->set($this->key_prefix . $primary_key, $model->{$primary_key}); } else { $post->set($primary_key, $model->{$primary_key}); } // エラーが無かった場合、処理をコミットする。 Vizualizer_Database_Factory::commit($connection); // 画面をリロードする。 if (!$this->continue) { // 登録に使用したキーを無効化 $this->removeInput("add"); $this->removeInput("save"); $this->reload(); } } catch (Exception $e) { Vizualizer_Database_Factory::rollback($connection); throw new Vizualizer_Exception_Database($e); } } }
protected function executeImpl($type, $name, $value, $result) { // サイトデータを取得する。 $loader = new Vizualizer_Plugin($type); $model = $loader->loadModel($name); $model->setIgnoreOperator(true); $model->findByPrimaryKey($value); $attr = Vizualizer::attr(); $attr[$result] = $model; }
public function purchases($status = "") { $loader = new Vizualizer_Plugin("stock"); $model = $loader->loadModel("Purchase"); $condition = array("material_id" => $this->material_id); if (!empty($status)) { $condition["purchase_status"] = $status; } return $model->findAllBy($condition); }
private function updateDetails() { $loader = new Vizualizer_Plugin("stock"); foreach ($this->details as $purchase_id => $volume) { $model = $loader->loadModel("ReportDetail"); $model->findBy(array("report_id" => $this->report_id, "purchase_id" => $purchase_id)); $purchase = $loader->loadModel("Purchase"); $purchase->findByPrimaryKey($purchase_id); if (!($model->report_detail_id > 0)) { $model->report_id = $this->report_id; $model->purchase_id = $purchase_id; $model->original_volume = $purchase->volume - $purchase->consumed; } $model->fixed_volume = $volume; $model->save(); $purchase->consumed = $purchase->volume - $volume; if ($purchase->volume == $purchase->consumed) { $purchase->purchase_status = "consumed"; } $purchase->save(); } }
protected function executeImpl($params, $type, $name, $key) { if (!$params->check("upload") || isset($_POST[$params->get("upload")])) { $loader = new Vizualizer_Plugin($type); // アップされたファイルのデータを取得する。 if ($_FILES[$key]["error"] == UPLOAD_ERR_OK) { if (($fp = fopen($_FILES[$key]["tmp_name"], "r")) !== FALSE) { // 1行目はタイトル行とする。 $data = $this->getCsvData($fp); if ($this->checkTitle($data)) { $line = 2; // トランザクションの開始 $connection = Vizualizer_Database_Factory::begin(strtolower($type)); try { while (($data = $this->getCsvData($fp)) !== FALSE) { $model = $loader->loadModel($name); $model = $this->check($line, $model, $data); if ($model != null) { $model->save(); } $line++; } if (count($this->errors) > 0) { throw new Vizualizer_Exception_Invalid($key, $this->errors); } // エラーが無かった場合、処理をコミットする。 Vizualizer_Database_Factory::commit($connection); // 画面をリロードする。 if (!$this->continue) { // 登録に使用したキーを無効化 $this->removeInput("upload"); $this->reload(); } } catch (Exception $e) { Vizualizer_Database_Factory::rollback($connection); throw new Vizualizer_Exception_Database($e); } } else { throw new Vizualizer_Exception_Invalid($key, array("アップされたファイルのタイトル行が正しくありません")); } fclose($fp); } } } }
function execute($params) { $post = Vizualizer::request(); $attr = Vizualizer::attr(); if ($params->check("daily")) { $search = $post["search"]; if (empty($search["pre:order_date"])) { $search["pre:order_date"] = date("Y-m-d"); $post->set("search", $search); } $attr["thisday"] = date("Y-m-d", strtotime($search["pre:order_date"])); $attr["lastday"] = date("Y-m-d", strtotime("-1 day", strtotime($attr["thisday"]))); $attr["nextday"] = date("Y-m-d", strtotime("+1 day", strtotime($attr["thisday"]))); } $loader = new Vizualizer_Plugin("stock"); $model = $loader->loadModel("Order"); $attr["total"] = $model->summeryBy("price", $post["search"]); $this->executeImpl($params, "Stock", "Order", $params->get("result", "orders")); }
/** * 注文詳細のデータを元に在庫の引き当てを実施 */ public function provision() { $loader = new Vizualizer_Plugin("stock"); $menu = $loader->loadModel("Menu"); $menu->findBy(array("set_id" => $this->set_id, "choice_id" => $this->choice_id)); if ($menu->menu_id > 0 && $menu->fixed_flg == "1") { // トランザクションの開始 $connection = Vizualizer_Database_Factory::begin("stock"); try { // メニューが確定されている場合は引き当てを実行 $components = $menu->components(); foreach ($components as $component) { if ($component->quantity <= 0) { break; } $quantity = $component->quantity; $purchase = $loader->loadModel("Purchase"); $purchases = $purchase->findAllBy(array("material_id" => $component->material_id, "purchase_status" => "stocked"), "production_date", false); foreach ($purchases as $purchase) { if ($quantity < $purchase->volume - $purchase->consumed) { $purchase->consumed += $quantity; $quantity = 0; } else { $quantity -= $purchase->volume - $purchase->consumed; $purchase->consumed = $purchase->volume; $purchase->purchase_status = "consumed"; } $purchase->save(); } } $this->provision_flg = 1; $this->save(); Vizualizer_Database_Factory::commit($connection); } catch (Exception $e) { Vizualizer_Database_Factory::rollback($connection); throw new Vizualizer_Exception_Database($e); } } }
public function components() { $loader = new Vizualizer_Plugin("stock"); $model = $loader->loadModel("Component"); return $model->findAllBy(array("menu_id" => $this->menu_id)); }
/** * 注文データ */ public function orderDetail() { $loader = new Vizualizer_Plugin("stock"); $model = $loader->loadModel("OrderDetail"); return $model->findAllByOrderId($this->order_id); }
/** * PDF出力の処理を実行する。 * 出力処理にはHaruを使用します。 * @param $type モデルクラスのタイプ * @param $name モデルクラスの名前 * @param $value 取得する主キー */ protected function getData($type, $name, $value) { // データを取得する。 $loader = new Vizualizer_Plugin($type); $model = $loader->loadModel($name); $model->findByPrimaryKey($value); return $model; }
/** * レジからの注文データを取り込む。 * @param $params バッチ自体のパラメータ * @param $data バッチで引き回すデータ * @return バッチで引き回すデータ */ protected function importOrders($params, $data) { try { // Use the us-west-2 region and latest version of each client. $sharedConfig = array('region' => 'ap-northeast-1', 'version' => 'latest'); // Create an SDK class used to share configuration across clients. $sdk = new Aws\Sdk($sharedConfig); // Create an Amazon S3 client using the shared configuration data. $client = $sdk->createS3(); if (count($params) > 3) { if ($params[3] == "today") { $time = time(); } elseif ($params[3] == "yesterday") { $time = strtotime("-1 day"); } else { $time = strtotime($params[3]); } } else { $time = time(); } // Get the object $result = $client->getObject(array('Bucket' => "oder-report", 'Key' => "150/" . date("Ym", $time) . "/sales-" . date("Y-m-d", $time) . ".csv")); Vizualizer_Logger::writeDebug($result['Body']); $lines = explode("\n", $result['Body']); $columns = array(); $data = array(); foreach ($lines as $index => $line) { if (!empty($line)) { if ($index > 0) { $item = str_getcsv($line); $record = array(); foreach ($columns as $i => $key) { $record[$key] = $item[$i]; } $data[] = $record; } else { $columns = str_getcsv($line); } } } Vizualizer_Logger::writeDebug(print_r($data, true)); $sets = array(); foreach ($data as $item) { if ($item["type"] == "summary") { // トランザクションの開始 $connection = Vizualizer_Database_Factory::begin("stock"); try { $loader = new Vizualizer_Plugin("stock"); $model = $loader->loadModel("Order"); $model->findByPrimaryKey($item["order_id"]); if (!($model->order_id > 0)) { $model = $loader->loadModel("Order", array("order_id" => $item["order_id"])); } $model->user_id = $item["user_id"]; $model->payment_type = $item["payment_type"]; $model->order_date = $item["purchase_date"]; $model->price = $item["price"]; $model->save(); // エラーが無かった場合、処理をコミットする。 Vizualizer_Database_Factory::commit($connection); } catch (Exception $e) { Vizualizer_Database_Factory::rollback($connection); throw new Vizualizer_Exception_Database($e); } } if ($item["type"] == "set") { $sets[$item["order_id"] . "-" . $item["set_id"]] = $item; // トランザクションの開始 $connection = Vizualizer_Database_Factory::begin("stock"); try { $loader = new Vizualizer_Plugin("stock"); $model = $loader->loadModel("OrderDetail"); $model->order_id = $item["order_id"]; $model->set_id = $item["set_id"]; $model->set_menu_name = $item["set_menu_name"]; $model->order_date = $item["purchase_date"]; $model->price = $item["price"]; $model->quantity = $item["count"]; $model->save(); $model = $loader->loadModel("Menu"); $model->findBy(array("set_id" => $item["set_id"], "choice_id" => 0)); $model->set_id = $item["set_id"]; $model->set_menu_name = $sets[$item["order_id"] . "-" . $item["set_id"]]["set_menu_name"]; $model->menu_name = $item["menu_name"]; $model->price = $item["price"]; $model->fixed_flg = "1"; $model->save(); // エラーが無かった場合、処理をコミットする。 Vizualizer_Database_Factory::commit($connection); } catch (Exception $e) { Vizualizer_Database_Factory::rollback($connection); throw new Vizualizer_Exception_Database($e); } // 在庫の引き当てを実施 $model = $loader->loadModel("OrderDetail"); $models = $model->findAllBy(array("set_id" => $item["set_id"], "ne:provision_flg" => "1")); foreach ($models as $model) { $model->provision(); } } if ($item["type"] == "choice") { // トランザクションの開始 $connection = Vizualizer_Database_Factory::begin("stock"); try { $loader = new Vizualizer_Plugin("stock"); $model = $loader->loadModel("OrderDetail"); $model->order_id = $item["order_id"]; $model->set_id = $item["set_id"]; $model->choice_id = $item["choice_id"]; $model->set_menu_name = $sets[$item["order_id"] . "-" . $item["set_id"]]["set_menu_name"]; $model->menu_name = $item["menu_name"]; $model->price = $item["price"]; $model->quantity = $sets[$item["order_id"] . "-" . $item["set_id"]]["count"]; $model->save(); $model = $loader->loadModel("Menu"); $model->findBy(array("set_id" => $item["set_id"], "choice_id" => $item["choice_id"])); $model->set_id = $item["set_id"]; $model->choice_id = $item["choice_id"]; $model->set_menu_name = $sets[$item["order_id"] . "-" . $item["set_id"]]["set_menu_name"]; $model->menu_name = $item["menu_name"]; $model->price = $item["price"]; $model->fixed_flg = "1"; $model->save(); // エラーが無かった場合、処理をコミットする。 Vizualizer_Database_Factory::commit($connection); } catch (Exception $e) { Vizualizer_Database_Factory::rollback($connection); throw new Vizualizer_Exception_Database($e); } // 在庫の引き当てを実施 $model = $loader->loadModel("OrderDetail"); $models = $model->findAllBy(array("set_id" => $item["set_id"], "choice_id" => $item["choice_id"], "ne:provision_flg" => "1")); foreach ($models as $model) { $model->provision(); } } } } catch (S3Exception $e) { echo $e->getMessage() . "\n"; } return $data; }
protected function executeImpl($params, $type, $name, $result, $defaultSortKey = "create_time") { $post = Vizualizer::request(); // セレクトモードの時は通常の検索条件を適用しない if ($params->check("mode", "normal") == "select") { $savedPost = $post->export(); $selectSearch = array(); if ($params->check("selectSearchKeys") && array_key_exists("search", $savedPost) && is_array($savedPost["search"])) { $selectKeys = explode(",", $params->get("selectSearchKeys")); foreach ($selectKeys as $key) { if (array_key_exists($key, $savedPost["search"])) { $selectSearch[$key] = $savedPost["search"][$key]; } } } Vizualizer::request()->set("search", $selectSearch); } if (!$params->check("search") || isset($post[$params->get("search")])) { // サイトデータを取得する。 $loader = new Vizualizer_Plugin($type); $model = $loader->loadModel($name); // カテゴリが選択された場合、カテゴリの商品IDのリストを使う $conditions = $this->condition; if (is_array($post["search"])) { foreach ($post["search"] as $key => $value) { if (!$this->isEmpty($value)) { if ($params->get("mode", "list") != "select" || !$params->check("select") || $key != substr($params->get("select"), 0, strpos($params->get("select"), "|"))) { $conditions[$key] = $value; } } } } // 追加の検索条件があれば設定 if ($params->check("wkey")) { $conditions[$params->check("wkey")] = $params->check("wvalue"); } if ($params->check("wkey2")) { $conditions[$params->check("wkey2")] = $params->check("wvalue2"); } if ($params->check("wkey3")) { $conditions[$params->check("wkey3")] = $params->check("wvalue3"); } if ($params->check("wkey4")) { $conditions[$params->check("wkey4")] = $params->check("wvalue4"); } if ($params->check("wkey5")) { $conditions[$params->check("wkey5")] = $params->check("wvalue5"); } if ($params->check("wkey6")) { $conditions[$params->check("wkey6")] = $params->check("wvalue6"); } if ($params->check("wkey7")) { $conditions[$params->check("wkey7")] = $params->check("wvalue7"); } if ($params->check("wkey8")) { $conditions[$params->check("wkey8")] = $params->check("wvalue8"); } if ($params->check("wkey9")) { $conditions[$params->check("wkey9")] = $params->check("wvalue9"); } $attr = Vizualizer::attr(); if ($this->groupBy) { $model->setGroupBy($this->groupBy); } // 並べ替え順序が指定されている場合に適用 $sortOrder = ""; $sortReverse = false; if ($params->check("sort_key")) { $sortOrder = $post[$params->get("sort_key")]; if ($this->isEmpty($sortOrder)) { $sortOrder = $defaultSortKey; $sortReverse = true; } elseif (strpos($sortOrder, "rev@") === 0) { list($dummy, $sortOrder) = explode("@", $sortOrder); $sortReverse = true; } } elseif ($params->check("sort")) { $sortOrder = $params->check("sort"); if (strpos($sortOrder, "rev@") === 0) { list($dummy, $sortOrder) = explode("@", $sortOrder); $sortReverse = true; } } if ($params->get("force_operator", "0") == "1") { $model->setIgnoreOperator(true); } $models = $model->findAllBy($conditions, $sortOrder, $sortReverse); if ($params->get("mode", "list") == "list") { $attr[$result] = $models; } elseif ($params->get("mode", "list") == "select") { $attr[$result] = array(); if ($params->check("select")) { list($select_key, $select_value) = explode("|", $params->get("select")); $selection = array(); foreach ($models as $model) { $selection[$model->{$select_key}] = $model->{$select_value}; } $attr[$result] = $selection; } } if ($params->check("mode", "normal") == "select") { Vizualizer::request()->import($savedPost); } } }