Eccube\Controller\Admin\Product\CsvImportController::createProductClass PHP Метод

createProductClass() защищенный Метод

商品規格分類1、商品規格分類2がnullとなる商品規格情報を作成
protected createProductClass ( $row, Product $Product, $app, $data, $ClassCategory1 = null, $ClassCategory2 = null )
$Product Eccube\Entity\Product
    protected function createProductClass($row, Product $Product, $app, $data, $ClassCategory1 = null, $ClassCategory2 = null)
    {
        // 規格分類1、規格分類2がnullとなる商品を作成
        $ProductClass = new ProductClass();
        $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)が存在しません。');
            }
        }
        $ProductClass->setClassCategory1($ClassCategory1);
        $ProductClass->setClassCategory2($ClassCategory2);
        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($stock);
                    } 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['送料'] != '') {
            $delivery_fee = str_replace(',', '', $row['送料']);
            if (preg_match('/^\\d+$/', $delivery_fee) && $delivery_fee >= 0) {
                $ProductClass->setDeliveryFee($delivery_fee);
            } 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 . '行目の商品規格削除フラグが設定されていません。');
            }
        }
        $Product->addProductClass($ProductClass);
        $ProductStock = new ProductStock();
        $ProductClass->setProductStock($ProductStock);
        $ProductStock->setProductClass($ProductClass);
        if (!$ProductClass->getStockUnlimited()) {
            $ProductStock->setStock($ProductClass->getStock());
        } else {
            // 在庫無制限時はnullを設定
            $ProductStock->setStock(null);
        }
        $this->em->persist($ProductClass);
        $this->em->persist($ProductStock);
        return $ProductClass;
    }