diff --git a/setup/faker.php b/setup/faker.php index 08da3889a..ffc84ef7d 100644 --- a/setup/faker.php +++ b/setup/faker.php @@ -9,6 +9,8 @@ use Thelia\Coupon\FacadeInterface; use Thelia\Condition\ConditionCollection; use Thelia\Coupon\Type\RemoveXAmount; use Thelia\Coupon\Type\RemoveXPercent; +use Thelia\Model\ModuleQuery; +use Thelia\Model\OrderAddress; if (php_sapi_name() != 'cli') { throw new \Exception('this script can only be launched with cli sapi'); @@ -492,6 +494,87 @@ try { } } + echo "Creating orders"; + + for($i=0; $i < 50; ++$i) { + + $placedOrder = new \Thelia\Model\Order(); + + $deliveryOrderAddress = new OrderAddress(); + $deliveryOrderAddress + ->setCustomerTitleId(mt_rand(1,3)) + ->setCompany($faker->text(15)) + ->setFirstname($faker->firstname) + ->setLastname($faker->lastname) + ->setAddress1($faker->streetAddress) + ->setAddress2($faker->streetAddress) + ->setAddress3($faker->streetAddress) + ->setPhone($faker->phoneNumber) + ->setZipcode($faker->postcode) + ->setCity($faker->city) + ->setCountryId(64) + ->save($con) + ; + + $invoiceOrderAddress = new OrderAddress(); + $invoiceOrderAddress + ->setCustomerTitleId(mt_rand(1,3)) + ->setCompany($faker->text(15)) + ->setFirstname($faker->firstname) + ->setLastname($faker->lastname) + ->setAddress1($faker->streetAddress) + ->setAddress2($faker->streetAddress) + ->setAddress3($faker->streetAddress) + ->setPhone($faker->phoneNumber) + ->setZipcode($faker->postcode) + ->setCity($faker->city) + ->setCountryId(64) + ->save($con) + ; + + $placedOrder + ->setDeliveryOrderAddressId($deliveryOrderAddress->getId()) + ->setInvoiceOrderAddressId($invoiceOrderAddress->getId()) + ->setDeliveryModuleId(ModuleQuery::create()->filterByCode("Colissimo")->findOne()->getId()) + ->setPaymentModuleId(ModuleQuery::create()->filterByCode("Cheque")->findOne()->getId()) + ->setStatusId(mt_rand(1, 5)) + ->setCurrency(\Thelia\Model\CurrencyQuery::create()->findOne()) + ->setCustomerId(getRandomObject(new \Thelia\Model\CustomerQuery())->getId()) + ->setDiscount(mt_rand(0, 10)) + ->setLang(getRandomObject(new \Thelia\Model\LangQuery())) + ->setPostage(mt_rand(1, 50)) + ; + + $placedOrder->save($con); + + for ($j=0; $j < mt_rand(1, 10); ++$j) { + $pse = getRandomObject(new \Thelia\Model\ProductSaleElementsQuery()); + $product = $pse->getProduct(); + + $orderProduct = new \Thelia\Model\OrderProduct(); + + $orderProduct + ->setOrderId($placedOrder->getId()) + ->setProductRef($product->getRef()) + ->setProductSaleElementsRef($pse->getRef()) + ->setTitle($product->getTitle()) + ->setChapo($product->getChapo()) + ->setDescription($product->getDescription()) + ->setPostscriptum($product->getPostscriptum()) + ->setQuantity(mt_rand(1, 10)) + ->setPrice($price=mt_rand(1, 100)) + ->setPromoPrice(mt_rand(1, $price)) + ->setWasNew($pse->getNewness()) + ->setWasInPromo(rand(0,1) == 1) + ->setWeight($pse->getWeight()) + ->setTaxRuleTitle($faker->text(20)) + ->setTaxRuleDescription($faker->text(50)) + ->setEanCode($pse->getEanCode()) + ->save($con); + } + + } + echo "Generating coupons fixtures\n"; generateCouponFixtures($thelia); @@ -814,3 +897,16 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua $coupon3->setIsAvailableOnSpecialOffers(false); $coupon3->save(); } + +function getRandomObject(\Propel\Runtime\ActiveQuery\ModelCriteria $query) +{ + $max = $query->count(); + + if($max === 0) { + throw new Exception("There is no entry in ". get_class($query)); + } + + $first_id = $query->findOne()->getId(); + $obj = $query->findPk(mt_rand($first_id, $first_id+$max-1)); + return $obj; +} \ No newline at end of file