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); } } } }
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); } } } }
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($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); } } } }
/** * 注文詳細のデータを元に在庫の引き当てを実施 */ 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); } } }
/** * レジからの注文データを取り込む。 * @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; }