eristoddle
1/16/2013 - 5:07 AM

Random Magento Order Functions

Random Magento Order Functions

<?php

function getActivePaymentMethods(){
  $payments = Mage::getSingleton('payment/config')->getActiveMethods();
  $methods = array(array('value'=>'', 'label'=>Mage::helper('adminhtml')->__('--Please Select--')));
  foreach ($payments as $paymentCode=>$paymentModel) {
    $paymentTitle = Mage::getStoreConfig('payment/'.$paymentCode.'/title');
    $methods[$paymentCode] = array(
      'label'   => $paymentTitle,
      'value' => $paymentCode,
    );
  }
  return $methods;
}

function getOrderIdsByStatus($status){
  $orders = Mage::getModel('sales/order')->getCollection()
    ->addFieldToFilter('status', $status)
    ->addAttributeToSelect('increment_id');
  $ids = array();
  foreach ($orders as $order) {
    $id = $order->getIncrementId();
    $ids[] = $id;
  }
  return $ids;
}

function getOrderLastComment($orderId){
  $order = $order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
  $comments = array();
  foreach ($order->getAllStatusHistory() as $orderComment){
    $comments[] = $orderComment;
  }
  return $comments;
}

function changeOrderDate($orderId, $date){
  $orderObj = Mage::getModel('sales/order')
    ->loadByIncrementId($orderId);
  $orderObj->setData('created_at', $date);
  $orderObj->save();
}

function createOrder($orderOb) {
  if(strlen($orderOb->email) > 1){
    $customer = Mage::getModel('customer/customer');
    $customer->setWebsiteId(Mage::app()->getWebsite()->getId());
    $customer->loadByEmail($orderOb->email);
    $transaction = Mage::getModel('core/resource_transaction');
    $storeId = $customer->getStoreId();
    $reservedOrderId = Mage::getSingleton('eav/config')->getEntityType('order')->fetchNewIncrementId($storeId);

    $order = Mage::getModel('sales/order')
      ->setIncrementId($reservedOrderId)
      ->setStoreId($storeId)
      ->setQuoteId(0)
      ->setGlobal_currency_code('USD')
      ->setBase_currency_code('USD')
      ->setStore_currency_code('USD')
      ->setOrder_currency_code('USD');

    // set Customer data
    $order->setCustomer_email($customer->getEmail())
      ->setCustomerFirstname($customer->getFirstname())
      ->setCustomerLastname($customer->getLastname())
      ->setCustomerGroupId($customer->getGroupId())
      ->setCustomer_is_guest(0)
      ->setCustomer($customer);

    // set Billing Address
    $billing = $customer->getDefaultBillingAddress();
    try{
      $billingAddress = Mage::getModel('sales/order_address')
        ->setStoreId($storeId)
        ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_BILLING)
        ->setCustomerId($customer->getId())
        ->setCustomerAddressId($customer->getDefaultBilling())
        ->setCustomer_address_id($billing->getEntityId())
        ->setPrefix($billing->getPrefix())
        ->setFirstname($billing->getFirstname())
        ->setMiddlename($billing->getMiddlename())
        ->setLastname($billing->getLastname())
        ->setSuffix($billing->getSuffix())
        ->setCompany($billing->getCompany())
        ->setStreet($billing->getStreet())
        ->setCity($billing->getCity())
        ->setCountry_id($billing->getCountryId())
        ->setRegion($billing->getRegion())
        ->setRegion_id($billing->getRegionId())
        ->setPostcode($billing->getPostcode())
        ->setTelephone($billing->getTelephone())
        ->setFax($billing->getFax());
        $order->setBillingAddress($billingAddress);
    }catch(Exception $ex){
      echo $ex;
    }

    $shipping = $customer->getDefaultShippingAddress();
    try{
      $shippingAddress = Mage::getModel('sales/order_address')
        ->setStoreId($storeId)
        ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING)
        ->setCustomerId($customer->getId())
        ->setCustomerAddressId($customer->getDefaultShipping())
        ->setCustomer_address_id($shipping->getEntityId())
        ->setPrefix($shipping->getPrefix())
        ->setFirstname($shipping->getFirstname())
        ->setMiddlename($shipping->getMiddlename())
        ->setLastname($shipping->getLastname())
        ->setSuffix($shipping->getSuffix())
        ->setCompany($shipping->getCompany())
        ->setStreet($shipping->getStreet())
        ->setCity($shipping->getCity())
        ->setCountry_id($shipping->getCountryId())
        ->setRegion($shipping->getRegion())
        ->setRegion_id($shipping->getRegionId())
        ->setPostcode($shipping->getPostcode())
        ->setTelephone($shipping->getTelephone())
        ->setFax($shipping->getFax());
    }catch(Exception $ex){
      echo $ex;
    }

    $order->setShippingAddress($shippingAddress)
      ->setShipping_method('flatrate_flatrate');

    $orderPayment = Mage::getModel('sales/order_payment')
      ->setStoreId($storeId)
      ->setCustomerPaymentId(0)
      ->setMethod($orderOb->payment_method);
    $order->setPayment($orderPayment);

    $subTotal = 0;

    foreach ($orderOb->products as $product) {
      $_product = Mage::getModel('catalog/product');
      $product_id = $_product->getIdBySku($product['sku']);
      $_product->load($product_id);
      $product_price = $_product->getPrice();
      //$product_price = $product['price'];
      $rowTotal = $product_price * $product['qty'];
      $orderItem = Mage::getModel('sales/order_item')
        ->setStoreId($storeId)
        ->setQuoteItemId(0)
        ->setQuoteParentItemId(NULL)
        ->setProductId($product_id)
        ->setProductType($_product->getTypeId())
        ->setQtyBackordered(NULL)
        ->setTotalQtyOrdered($product['qty'])
        ->setQtyOrdered($product['qty'])
        ->setName($_product->getName())
        ->setSku($_product->getSku())
        ->setPrice($product_price)
        ->setBasePrice($product_price)
        ->setOriginalPrice($product_price)
        ->setRowTotal($rowTotal)
        ->setBaseRowTotal($rowTotal);

      $subTotal += $rowTotal;
      $order->addItem($orderItem);
    }

    $order->setSubtotal($subTotal)
      ->setBaseSubtotal($subTotal)
      ->setGrandTotal($subTotal)
      ->setBaseGrandTotal($subTotal);

    //$order->setCustomerNote($orderOb->comment);

    $transaction->addObject($order);
    $transaction->addCommitCallback(array($order, 'place'));
    $transaction->addCommitCallback(array($order, 'save'));
    $transaction->save();
    $order = '';
    $transaction = '';

    $thisorder = Mage::getModel('sales/order')->load($reservedOrderId);
    $itemsQty = $thisorder->getAllItems();
    $thisinvoice = new Mage_Sales_Model_Order_Invoice_Api();
    try{
      $invoiceId = $thisinvoice->create($reservedOrderId, $itemsQty);
    }catch (Exception $ex){
      echo $ex;
    }
    $thisShipment = new Mage_Sales_Model_Order_Shipment_Api();
    try{
      $thisShipment->create($reservedOrderId, $itemsQty);
    }catch (Exception $ex){
      echo $ex;
    }
    $completeorder = new Mage_Sales_Model_Order_Api();
    try{
      $completeorder->addComment($reservedOrderId, 'imported', $orderOb->comment);
    }catch (Exception $ex){
      echo $ex;
    }
  }
}

?>