private function createorder() { $order = new Order(); $order->UseShippingAddress = true; $order->CustomerOrderNote = "THIS IS AN AUTO-GENERATED ORDER"; $order->write(); $member = new Member(); $member->FirstName = 'Tom'; $member->Surname = 'Cruize'; $member->Email = '*****@*****.**'; $member->Password = '******'; $member->write(); $order->MemberID = $member->ID; $billingAddress = new BillingAddress(); $billingAddress->Prefix = "Dr"; $billingAddress->FirstName = "Tom"; $billingAddress->Surname = "Cruize"; $billingAddress->Address = "Lamp Drive"; $billingAddress->Address2 = "Linux Mountain"; $billingAddress->City = "Apache Town"; $billingAddress->PostalCode = "555"; $billingAddress->Country = "NZ"; $billingAddress->Phone = "555 5555555"; $billingAddress->Email = "*****@*****.**"; $billingAddress->write(); $order->BillingAddressID = $billingAddress->ID; $shippingAddress = new ShippingAddress(); $shippingAddress->ShippingPrefix = "Dr"; $shippingAddress->ShippingFirstName = "Tom"; $shippingAddress->ShippingSurname = "Cruize"; $shippingAddress->ShippingAddress = "Lamp Drive"; $shippingAddress->ShippingAddress2 = "Linux Mountain"; $shippingAddress->ShippingCity = "Apache Town"; $shippingAddress->ShippingPostalCode = "555"; $shippingAddress->ShippingCountry = "NZ"; $shippingAddress->ShippingPhone = "555 5555555"; $shippingAddress->write(); $order->ShippingAddressID = $shippingAddress->ID; //get a random product $extension = ""; if (Versioned::current_stage() == "Live") { $extension = "_Live"; } $count = 0; $noProductYet = true; $triedArray = array(0 => 0); while ($noProductYet && $count < 50) { $product = Product::get()->where("\"ClassName\" = 'Product' AND \"Product{$extension}\".\"ID\" NOT IN (" . implode(",", $triedArray) . ") AND Price > 0")->First(); if ($product) { if ($product->canPurchase()) { $noProductYet = false; } else { $triedArray[] = $product->ID; } } $count++; } //adding product order item $item = new Product_OrderItem(); $item->addBuyableToOrderItem($product, 7); $item->OrderID = $order->ID; $item->write(); //final save $order->write(); $order->tryToFinaliseOrder(); }
/** * creates order from repeatorder for a specific day. * IF it does not already exists. * */ protected function createOrderFromRepeatOrder($orderDateInteger) { if ($order = DataObject::get_one("Order", "\"OrderDateInteger\" = '" . $orderDateInteger . "' AND \"RepeatOrderID\" = " . $this->ID)) { //do nothing } else { $order = new Order(); $order->OrderDate = date("Y-m-d", $orderDateInteger); $order->OrderDateInteger = $orderDateInteger; $order->RepeatOrderID = $this->ID; $order->MemberID = $this->MemberID; $order->CustomerOrderNote = "Created as part of a repeating order."; $order->write(); if ($this->OrderItems()) { foreach ($this->OrderItems() as $repeatOrderOrderItem) { $product = DataObject::get_by_id('Product', $repeatOrderOrderItem->ProductID); if ($product) { //START CHECK AVAILABILITY if (class_exists("ProductStockCalculatedQuantity")) { $numberAvailable = ProductStockCalculatedQuantity::get_quantity_by_product_id($product->ID); if ($numberAvailable < $repeatOrderOrderItem->Quantity) { $alternatives = $repeatOrderOrderItem->AlternativesPerProduct(); $product = null; if ($dos) { foreach ($alternatives as $alternative) { $stillLookingForAlternative = true; $numberAvailable = ProductStockCalculatedQuantity::get_quantity_by_product_id($alternative->ID); if ($numberAvailable > $repeatOrderOrderItem->Quantity && $stillLookingForAlternative) { $stillLookingForAlternative = false; $product = $alternative; } } } } } //END CHECK AVAILABILITY if ($product) { $newProductOrderItem = new Product_OrderItem(); $newProductOrderItem->addBuyableToOrderItem($product, $repeatOrderOrderItem->Quantity); $newProductOrderItem->OrderID = $order->ID; $newProductOrderItem->write(); } } else { USER_ERROR("Product does not exist", E_USER_WARNING); } } } else { USER_ERROR("There are no order items", E_USER_WARNING); } //FINALISE!!! $order->write(); $order->tryToFinaliseOrder(); } }