Ejemplo n.º 1
0
 public function process($values = null)
 {
     //It seems that the parameter $values is not used at all
     //I gave it a default value of null.
     //Anas, 29, October, 2008
     $order = new CartOrder();
     $customer = $_SESSION['authenticated_user'];
     $billing_adr = $_SESSION['cart_checkout']['address']['billing_address'];
     $shipping_adr = $_SESSION['cart_checkout']['address']['shipping_address'];
     $payment = $_SESSION['cart_checkout']['payment'];
     $shipping = $_SESSION['cart_checkout']['shipping'];
     $order->setCustomer($customer->getId());
     $order->setCustomerName($customer->getName());
     $order->setCustomerAddress($billing_adr->getId());
     $order->setCustomerTelephone($customer->getPhone());
     $order->setCustomerEmail($customer->getEmail());
     $order->setBillingName($customer->getName());
     $order->setBillingAddress($billing_adr->getId());
     $order->setDeliveryName($customer->getName());
     $order->setDeliveryAddress($shipping_adr->getId());
     $order->setPaymentMethod($payment->getName());
     $order->setPaymentModuleCode($payment->getClass());
     $order->setShippingMethod($shipping->getName());
     $order->setShippingModuleCode($shipping->getClass());
     $order->setShippingCost($shipping->getCost());
     $order->setCurrency('CAD');
     $order->setCurrencyValue('1.000000');
     $order->setDeliveryDirections($_SESSION['cart_checkout']['delivery_direction']);
     $cartitems = CartBasket::getUserCartBaskets($_SESSION['authenticated_user']->getId());
     $subtotal = 0;
     $tax = 0;
     foreach ($cartitems as $item) {
         $subtotal += $item->getPrice() * $item->getQuantity();
         $taxclass = $item->getProduct()->getTaxClass();
         $taxrate = CartTaxRate::getTaxRate($taxclass, $shipping_adr)->getRate();
         $tax += $taxrate / 100 * ($item->getPrice() * $item->getQuantity());
     }
     $order->setSubTotal($subtotal);
     $order->setTax($tax);
     $order->setTotal($subtotal + $tax + $shipping->getCost());
     $order->setStatus(1);
     $order->setIp_address($_SERVER['REMOTE_ADDR']);
     $order->setDate_purchased(date('Y-m-d H:i:s'));
     $order->setPaypal_ipn_id(@$_REQUEST["txn_id"]);
     $order->save();
     foreach ($cartitems as $item) {
         $product = new CartOrderProduct();
         $product->setOrderId($order->getId());
         $product->setProduct($item->getProduct()->getId());
         $product->setModel($item->getProduct()->getModel());
         $product->setName($item->getProduct()->getName());
         $product->setPrice($item->getPrice());
         $product->setFinalPrice($item->getQuantity() * $item->getPrice());
         $product->setQuantity($item->getQuantity());
         $taxclass = $item->getProduct()->getTaxClass();
         $taxrate = CartTaxRate::getTaxRate($taxclass, $billing_adr)->getRate();
         $product->setTax($taxrate);
         $product->save();
         if ($item->getProduct()->getAttId()) {
             $product_atts = CartBasketAttribute::getCartBasketProductAttributes($item->getProduct()->getId() . ':' . $item->getProduct()->getAttId());
             foreach ($product_atts as $product_att) {
                 $att = new CartOrderProductAttribute();
                 $att->setOrderid($order->getId());
                 $att->setProductid($product->getId());
                 $option = new CartProductOption($product_att['products_options_id']);
                 // works
                 $att->setProducts_options($option->getName());
                 // works
                 $option_value = new CartProductOptionValue($product_att['products_options_value_id']);
                 $att->setProducts_options_values($option_value->getName());
                 $sql = 'select * from cart_products_attributes where options_id=' . $product_att['products_options_id'] . ' and ';
                 $sql .= 'options_values_id=' . $product_att['products_options_value_id'] . ' and ';
                 $sql .= 'products_id=' . $item->getProduct()->getId();
                 $r = Database::singleton()->query_fetch($sql);
                 $att->setOptions_values_price($r['options_values_price']);
                 $att->save();
             }
         }
     }
     $_SESSION['cart_checkout']['order'] = $order;
 }