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;
}