Eccube\Tests\Web\Admin\Order\AbstractEditControllerTestCase::createFormData PHP Method

createFormData() public method

受注編集用フォーム作成.
public createFormData ( Customer $Customer, Product $Product = null ) : array
$Customer Eccube\Entity\Customer
$Product Eccube\Entity\Product
return array
    public function createFormData(Customer $Customer, Product $Product = null)
    {
        $faker = $this->getFaker();
        $tel = explode('-', $faker->phoneNumber);
        $email = $faker->safeEmail;
        $delivery_date = $faker->dateTimeBetween('now', '+ 5 days');
        $OrderDetails = array();
        if (is_object($Product)) {
            $ProductClasses = $Product->getProductClasses();
            $OrderDetails[] = array('Product' => $Product->getId(), 'ProductClass' => $ProductClasses[0]->getId(), 'price' => $ProductClasses[0]->getPrice02(), 'quantity' => $faker->randomNumber(2), 'tax_rate' => 8);
        }
        $Shippings = array(array('name' => array('name01' => $faker->lastName, 'name02' => $faker->firstName), 'kana' => array('kana01' => $faker->lastKanaName, 'kana02' => $faker->firstKanaName), 'company_name' => $faker->company, 'zip' => array('zip01' => $faker->postcode1(), 'zip02' => $faker->postcode2()), 'address' => array('pref' => $faker->numberBetween(1, 47), 'addr01' => $faker->city, 'addr02' => $faker->streetAddress), 'tel' => array('tel01' => $tel[0], 'tel02' => $tel[1], 'tel03' => $tel[2]), 'fax' => array('fax01' => $tel[0], 'fax02' => $tel[1], 'fax03' => $tel[2]), 'Delivery' => 1, 'DeliveryTime' => 1, 'shipping_delivery_date' => array('year' => $delivery_date->format('Y'), 'month' => $delivery_date->format('n'), 'day' => $delivery_date->format('j'))));
        $order = array('_token' => 'dummy', 'Customer' => $Customer->getId(), 'OrderStatus' => 1, 'name' => array('name01' => $faker->lastName, 'name02' => $faker->firstName), 'kana' => array('kana01' => $faker->lastKanaName, 'kana02' => $faker->firstKanaName), 'company_name' => $faker->company, 'zip' => array('zip01' => $faker->postcode1(), 'zip02' => $faker->postcode2()), 'address' => array('pref' => '5', 'addr01' => $faker->city, 'addr02' => $faker->streetAddress), 'tel' => array('tel01' => $tel[0], 'tel02' => $tel[1], 'tel03' => $tel[2]), 'fax' => array('fax01' => $tel[0], 'fax02' => $tel[1], 'fax03' => $tel[2]), 'email' => $email, 'message' => $faker->text, 'Payment' => 1, 'discount' => 0, 'delivery_fee_total' => 0, 'charge' => 0, 'note' => $faker->text, 'OrderDetails' => $OrderDetails, 'Shippings' => $Shippings);
        return $order;
    }

Usage Example

 /**
  * 複数配送用受注編集用フォーム作成.
  *
  * createFormData() との違いは、 $Shipping[N]['ShipmentItems'] がフォームに追加されている.
  * OrderDetails は、 $Shippings[N]['ShipmentItems] から生成される.
  *
  * @param Customer $Customer
  * @param array $Shippings お届け先情報の配列
  * @return array
  */
 public function createFormDataForMultiple(Customer $Customer, array $Shippings)
 {
     $formData = parent::createFormData($Customer, null);
     $formData['Shippings'] = $Shippings;
     $OrderDetails = array();
     foreach ($Shippings as $Shipping) {
         foreach ($Shipping['ShipmentItems'] as $Item) {
             if (empty($OrderDetails[$Item['ProductClass']])) {
                 $OrderDetails[$Item['ProductClass']] = array('Product' => $Item['Product'], 'ProductClass' => $Item['ProductClass'], 'price' => $Item['price'], 'quantity' => $Item['quantity'], 'tax_rate' => 8);
             } else {
                 $OrderDetails[$Item['ProductClass']]['quantity'] += $Item['quantity'];
             }
         }
     }
     $formData['OrderDetails'] = array_values($OrderDetails);
     return $formData;
 }
AbstractEditControllerTestCase