Example #1
0
 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);
             }
         }
     }
 }
Example #2
0
 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);
             }
         }
     }
 }
Example #3
0
 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);
         }
     }
 }
Example #4
0
 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);
         }
     }
 }
Example #6
0
 /**
  * レジからの注文データを取り込む。
  * @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;
 }