예제 #1
0
파일: Orders.php 프로젝트: kokkez/shineisp
 /**
  * Create an order using only one product
  * @param $product
  * @param $type [domain, service]
  * @param $iddomgen [id of the domain or the id of the generic product]
  * @param $customer_id
  * @param $amount
  * @param $note
  * @return void
  */
 public static function createOrderForSingleProduct(array $product, $type, $iddomgen, $customer_id, $amount, $note = "")
 {
     $order = new Orders();
     $customer = Customers::getAllInfo($customer_id);
     try {
         $tax = Taxes::getTaxbyProductID($product['id']);
         if (is_numeric($amount) && $amount > 0) {
             // Creating a new Order.
             $order->customer_id = $customer_id;
             $order->isp_id = $customer['isp_id'];
             $order->order_date = date('Y-m-d');
             $order->note = $note;
             $order->status_id = Statuses::id("processing", "orders");
             // Processing
             if (isset($tax['percentage']) && $tax['percentage'] > 0 && !Customers::isVATFree($order->customer_id)) {
                 $order->total = $amount / ((100 + $tax['percentage']) / 100);
                 $order->vat = $amount - $order->total;
                 $order->grandtotal = $amount;
             } else {
                 $order->total = $amount;
                 $order->vat = 0;
                 $order->grandtotal = $amount;
             }
             $order->save();
             $id = $order->getIncremented();
             // Attaching the order item to the order previously created.
             $orderitem = new OrdersItems();
             $date_end = Shineisp_Commons_Utilities::add_date(date('d-m-Y'), null, 12);
             // Fixed Renew
             $orderitem->order_id = $id;
             $orderitem->product_id = $product['id'];
             $orderitem->billing_cycle_id = 1;
             $orderitem->date_start = date('Y-m-d');
             $orderitem->date_end = $date_end;
             $orderitem->autorenew = true;
             $orderitem->description = $product['name'];
             $orderitem->cost = $product['cost'];
             $orderitem->quantity = 1;
             if (isset($tax['percentage']) && $tax['percentage'] > 0 && !Customers::isVATFree($order->customer_id)) {
                 $orderitem->price = $amount / ((100 + $tax['percentage']) / 100);
             } else {
                 $orderitem->price = $amount;
             }
             $orderitem->status_id = Statuses::id("processing", "orders");
             // Processing status set
             $orderitem->save();
             $detailid = $orderitem->getIncremented();
             // If the product type is not a domain we have to add a record in the Orders_items_domains table
             // in order to join the domain with the order detail
             if ($type != "domain") {
                 $ordersitemsdomains = new OrdersItemsDomains();
                 $ordersitemsdomains->domain_id = $iddomgen;
                 $ordersitemsdomains->order_id = $id;
                 $ordersitemsdomains->orderitem_id = $detailid;
                 $ordersitemsdomains->save();
                 Domains::setStatus($iddomgen, Statuses::id("processing", "domains"));
                 // Set the domains status as processing
                 Domains::setExpirationDate($iddomgen, $date_end);
                 // Set the new expiration date
             }
             return $id;
         }
     } catch (Exception $e) {
         echo $e->getMessage();
         die;
     }
 }