2011-11-08 14 views
5

Wygląda na to, że nie ma solidnego konsensusu w tej sprawie. Jest jeden wątek on the Magento message board, który daje różne warianty i podejścia, z których żaden nie działa dla mnie i żaden z nich nie wyjaśnia, co należy zrobić w tym procesie.Jak programowo importować zamówienia do Magento?

Z tego co wiem, należy zasymulować kroki składane w zamówieniu, które są tworzone na stronie internetowej, tj. Dodać produkty do "koszyka", dodać adres wysyłki i rozliczeniowy, dodać metodę wysyłki, dodać metodę płatności i "kasy".

Czy ktoś może wyjaśnić dokładnie te kroki i pokazać linie kodu, które są odpowiedzialne za wykonanie kroków.

Ponadto, widziałem odniesienia w kodach na tablicy przykładów "koszyka" i "cytatu". Wyjaśnij różnicę (lub podobieństwa) między 2.

+0

Zadałem prawidłowe pytanie. Dlaczego martwisz się traceniem czasu na wysyłanie tego do bzdur? I kto do cholery głosował na moje pytanie? – Billy

+0

Chodzi mi o to, że ktoś musiałby napisać odpowiednik artykułu na blogu, aby w wystarczający sposób odpowiedzieć na wszystko, o co prosiłeś w swoim pytaniu. Co więcej, pisanie pojedynczego zdania naprawdę nie zajmuje tak wiele mojego czasu. Na tej stronie pytanie zazwyczaj nie powinno wymagać odpowiedzi, której wykonanie zajmie więcej niż 30 minut. –

+0

Odpowiedziałem na pół moje pytanie w 10 minut czasu pisania. – Billy

Odpowiedz

6

Skończyłem zadanie programowania. Okazuje się, że nie musisz symulować "dodawania do koszyka", jak sugerują inne posty w innym miejscu. Możesz utworzyć obiekt zamówienia i powiązane obiekty i wypełnić danymi, ale nie jest to tak proste, jak bym chciał.

Tworzenie zamówienia zostało najlepiej opisane przez this blog post.

mam skopiowany kod tutaj:

$id=1; // get Customer Id 
$customer = Mage::getModel('customer/customer')->load($id); 

$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(); 
$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); 

$shipping = $customer->getDefaultShippingAddress(); 
$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()); 

$order->setShippingAddress($shippingAddress) 
    ->setShipping_method('flatrate_flatrate') 
    ->setShippingDescription($this->getCarrierName('flatrate')); 

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

// let say, we have 2 products 
$subTotal = 0; 
    $products = array(
    '1001' => array(
    'qty' => 1 
), 
    '1002' ->array(
    'qty' => 3 
), 
); 
foreach ($products as $productId=>$product) { 
    $_product = Mage::getModel('catalog/product')->load($productId); 
    $rowTotal = $_product->getPrice() * $product['qty']; 
    $orderItem = Mage::getModel('sales/order_item') 
    ->setStoreId($storeId) 
    ->setQuoteItemId(0) 
    ->setQuoteParentItemId(NULL) 
    ->setProductId($productId) 
    ->setProductType($_product->getTypeId()) 
    ->setQtyBackordered(NULL) 
    ->setTotalQtyOrdered($product['rqty']) 
    ->setQtyOrdered($product['qty']) 
    ->setName($_product->getName()) 
    ->setSku($_product->getSku()) 
    ->setPrice($_product->getPrice()) 
    ->setBasePrice($_product->getPrice()) 
    ->setOriginalPrice($_product->getPrice()) 
    ->setRowTotal($rowTotal) 
    ->setBaseRowTotal($rowTotal); 

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

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

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

ja nadal nie mają zdobyć zrozumienie różnicy między wózkiem i cytat.

Powiązane problemy