Shopware\DataGenerator\Resources\Orders::create PHP Method

create() public method

public create ( Shopware\DataGenerator\Writer\WriterInterface $writer )
$writer Shopware\DataGenerator\Writer\WriterInterface
    public function create(WriterInterface $writer)
    {
        $orderCSVWriter = $this->writerManager->createWriter('order', 'csv');
        $number = $this->config->getNumberOrders();
        $this->createProgressBar($number);
        if (!$this->articleResource) {
            throw new \RuntimeException('Article resource not available');
        }
        // Force order numbers to start at 10001
        $this->ids['ordernumber'] = 1000;
        $valueData = array('orderValues' => array(), 'orderDetailValues' => array(), 'customerBillingValues' => array(), 'customerShippingValues' => array(), 'customerBillingAttributeValues' => array());
        $articleDetails = $this->articleResource->getArticleDetailsFlat();
        $totalNumberCustomers = $this->config->getNumberCustomers();
        $orderNumbers = array();
        for ($orderCounter = 0; $orderCounter < $number; $orderCounter++) {
            $id = $this->getUniqueId('order');
            $orderNumber = $this->getUniqueId('ordernumber');
            $orderNumbers[] = $orderNumber;
            $currentCustomer = rand(1, $totalNumberCustomers);
            $currentCustomerNumber = 20002 + $currentCustomer;
            // Create a large order for the first order
            $numArticles = $id === 1 ? 100 : rand(1, 4);
            $totalPrice = $numArticles * 47.9;
            $totalPricePreTax = $totalPrice / 1.19;
            // Create faster inserts by using dummy data instead of INSERT..SELECTING the data from s_user_billingaddress/shippingaddress
            $valueData['customerBillingValues'][] = "( {$currentCustomer}, {$id}, '', '', 'mr', {$currentCustomerNumber}, 'dummyFirst', 'dummyLast', 'street 1', '48153', 'Münster', '', 2, 0 )";
            $valueData['customerShippingValues'][] = "( {$currentCustomer}, {$id}, '', '', 'mr', 'dummyFirst', 'dummyLast', 'street 1', '48153', 'Münster', 2, 0)";
            $valueData['customerBillingAttributeValues'][] = "({$id}, {$id})";
            $cleared = rand(9, 21);
            $state = rand(0, 8);
            $valueData['orderValues'][] = "({$id}, {$orderNumber}, {$currentCustomer}, {$totalPrice}, {$totalPricePreTax}, 0, 0, '2012-08-30 10:15:54', {$state}, {$cleared}, 4, '', '', '', '', 1, 0, '', '', '', NULL, '', '1', 9, 'EUR', 1, 1, '217.86.205.141')";
            for ($detailCounter = 1; $detailCounter <= $numArticles; $detailCounter++) {
                $detailId = $this->getUniqueId('orderDetail');
                $articleId = $articleDetails[rand(1, $this->articleResource->getIds('article'))];
                $valueData['orderDetailValues'][] = "({$detailId}, {$id}, '{$orderNumber}', '{$articleId}', 'sw-not-real', 47.90, 1, '{$this->generator->getSentence(3)}', 1, 0, 0)";
            }
        }
        $writer->write($this->createSQL($valueData));
        $orderCSVWriter->write($orderNumbers);
        $this->finishProgressBar();
    }