예제 #1
0
 /**
  * 商品規格情報を更新
  */
 protected function updateProductClass($row, Product $Product, ProductClass $ProductClass, $app, $data)
 {
     $ProductClass->setProduct($Product);
     if ($row['商品種別(ID)'] == '') {
         $this->addErrors($data->key() + 1 . '行目の商品種別(ID)が設定されていません。');
     } else {
         if (preg_match('/^\\d+$/', $row['商品種別(ID)'])) {
             $ProductType = $app['eccube.repository.master.product_type']->find($row['商品種別(ID)']);
             if (!$ProductType) {
                 $this->addErrors($data->key() + 1 . '行目の商品種別(ID)が存在しません。');
             } else {
                 $ProductClass->setProductType($ProductType);
             }
         } else {
             $this->addErrors($data->key() + 1 . '行目の商品種別(ID)が存在しません。');
         }
     }
     // 規格分類1、2をそれぞれセットし作成
     if ($row['規格分類1(ID)'] != '') {
         if (preg_match('/^\\d+$/', $row['規格分類1(ID)'])) {
             $ClassCategory = $app['eccube.repository.class_category']->find($row['規格分類1(ID)']);
             if (!$ClassCategory) {
                 $this->addErrors($data->key() + 1 . '行目の規格分類1(ID)が存在しません。');
             } else {
                 $ProductClass->setClassCategory1($ClassCategory);
             }
         } else {
             $this->addErrors($data->key() + 1 . '行目の規格分類1(ID)が存在しません。');
         }
     }
     if ($row['規格分類2(ID)'] != '') {
         if (preg_match('/^\\d+$/', $row['規格分類2(ID)'])) {
             $ClassCategory = $app['eccube.repository.class_category']->find($row['規格分類2(ID)']);
             if (!$ClassCategory) {
                 $this->addErrors($data->key() + 1 . '行目の規格分類2(ID)が存在しません。');
             } else {
                 $ProductClass->setClassCategory2($ClassCategory);
             }
         } else {
             $this->addErrors($data->key() + 1 . '行目の規格分類2(ID)が存在しません。');
         }
     }
     if ($row['発送日目安(ID)'] != '') {
         if (preg_match('/^\\d+$/', $row['発送日目安(ID)'])) {
             $DeliveryDate = $app['eccube.repository.delivery_date']->find($row['発送日目安(ID)']);
             if (!$DeliveryDate) {
                 $this->addErrors($data->key() + 1 . '行目の発送日目安(ID)が存在しません。');
             } else {
                 $ProductClass->setDeliveryDate($DeliveryDate);
             }
         } else {
             $this->addErrors($data->key() + 1 . '行目の発送日目安(ID)が存在しません。');
         }
     }
     if (Str::isNotBlank($row['商品コード'])) {
         $ProductClass->setCode(Str::trimAll($row['商品コード']));
     } else {
         $ProductClass->setCode(null);
     }
     if ($row['在庫数無制限フラグ'] == '') {
         $this->addErrors($data->key() + 1 . '行目の在庫数無制限フラグが設定されていません。');
     } else {
         if ($row['在庫数無制限フラグ'] == (string) Constant::DISABLED) {
             $ProductClass->setStockUnlimited(Constant::DISABLED);
             // 在庫数が設定されていなければエラー
             if ($row['在庫数'] == '') {
                 $this->addErrors($data->key() + 1 . '行目の在庫数が設定されていません。');
             } else {
                 $stock = str_replace(',', '', $row['在庫数']);
                 if (preg_match('/^\\d+$/', $stock) && $stock >= 0) {
                     $ProductClass->setStock($row['在庫数']);
                 } else {
                     $this->addErrors($data->key() + 1 . '行目の在庫数は0以上の数値を設定してください。');
                 }
             }
         } else {
             if ($row['在庫数無制限フラグ'] == (string) Constant::ENABLED) {
                 $ProductClass->setStockUnlimited(Constant::ENABLED);
                 $ProductClass->setStock(null);
             } else {
                 $this->addErrors($data->key() + 1 . '行目の在庫数無制限フラグが設定されていません。');
             }
         }
     }
     if ($row['販売制限数'] != '') {
         $saleLimit = str_replace(',', '', $row['販売制限数']);
         if (preg_match('/^\\d+$/', $saleLimit) && $saleLimit >= 0) {
             $ProductClass->setSaleLimit($saleLimit);
         } else {
             $this->addErrors($data->key() + 1 . '行目の販売制限数は0以上の数値を設定してください。');
         }
     }
     if ($row['通常価格'] != '') {
         $price01 = str_replace(',', '', $row['通常価格']);
         if (preg_match('/^\\d+$/', $price01) && $price01 >= 0) {
             $ProductClass->setPrice01($price01);
         } else {
             $this->addErrors($data->key() + 1 . '行目の通常価格は0以上の数値を設定してください。');
         }
     }
     if ($row['販売価格'] == '') {
         $this->addErrors($data->key() + 1 . '行目の販売価格が設定されていません。');
     } else {
         $price02 = str_replace(',', '', $row['販売価格']);
         if (preg_match('/^\\d+$/', $price02) && $price02 >= 0) {
             $ProductClass->setPrice02($price02);
         } else {
             $this->addErrors($data->key() + 1 . '行目の販売価格は0以上の数値を設定してください。');
         }
     }
     if ($row['商品規格削除フラグ'] == '') {
         $ProductClass->setDelFlg(Constant::DISABLED);
     } else {
         if ($row['商品規格削除フラグ'] == (string) Constant::DISABLED || $row['商品規格削除フラグ'] == (string) Constant::ENABLED) {
             $ProductClass->setDelFlg($row['商品規格削除フラグ']);
         } else {
             $this->addErrors($data->key() + 1 . '行目の商品規格削除フラグが設定されていません。');
         }
     }
     $ProductStock = $ProductClass->getProductStock();
     if (!$ProductClass->getStockUnlimited()) {
         $ProductStock->setStock($ProductClass->getStock());
     } else {
         // 在庫無制限時はnullを設定
         $ProductStock->setStock(null);
     }
     return $ProductClass;
 }
예제 #2
0
 public function testTrimAll()
 {
     $text = '     a ';
     $this->expected = 'a';
     $this->actual = Str::trimAll($text);
     $this->assertEquals($this->expected, $this->actual);
     $text = '     a a ';
     $this->expected = 'a a';
     $this->actual = Str::trimAll($text);
     $this->assertEquals($this->expected, $this->actual);
     $text = '';
     $this->actual = Str::trimAll($text);
     $this->assertNotNull($this->actual);
     $this->assertEmpty($this->actual);
     $text = null;
     $this->actual = Str::trimAll($text);
     $this->assertNull($this->actual);
     $text = 0;
     $this->expected = 0;
     $this->actual = Str::trimAll($text);
     $this->assertTrue($this->expected === $this->actual);
     $text = '0';
     $this->expected = '0';
     $this->actual = Str::trimAll($text);
     $this->assertTrue($this->expected === $this->actual);
     $text = " 0\n0\r\n\t";
     $this->expected = "0\n0";
     $this->actual = Str::trimAll($text);
     $this->assertTrue($this->expected === $this->actual);
 }