1

注文内で定義される「カスタム」製品を使用して、Magento 内で注文を作成する方法はありますか。注文では、カスタム製品を作成する必要はありません。これらのカスタム製品には、注文の作成時に決定されたカスタム価格とカスタム製品タイトルがあります。

したがって、注文を作成するときは、いくつかのカスタム製品と価格を指定して、それらを注文に追加するだけです。

繰り返しになりますが、製品は Magento 内のどこにも定義されないので、xyz を 9.99 に、zxy を 1.99 に追加したいと思います。また、別の xyz を 3.99 に追加したいと思います。

順序は次のように表示されます。

xyz | 9.99

zxy | 1.99

xyz | 3.99

合計 | 15.97

4

1 に答える 1

3

プログラムでカスタム製品の注文を作成できます。コード例を次に示します。

<?php
require_once 'app/Mage.php';
umask(0);
Mage::app('admin');

$order = create();
echo $order;

function create()
{


        $storeId = 1;
        if (!$storeId) {
            $storeIds = Mage::app()->getWebsite($customer->getWebsiteId())->getStoreIds();
            reset($storeIds);
            $storeId = current($storeIds);
        }

        $order = Mage::getModel('sales/order')
                ->setState('new');

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

        $billingAddress = Mage::getModel('sales/order_address');
        $shippingAddress = Mage::getModel('sales/order_address');


        $order->setStoreId($storeId)
              ->setQuoteId(0)
              ->setGlobal_currency_code('EUR')
              ->setBase_currency_code('EUR')
              ->setStore_currency_code('EUR')
              ->setOrder_currency_code('EUR')
              ->setStatus($orderData['status']);

              // set Customer data
              $order->setCustomer_email('a@b.com')
              ->setCustomerFirstname('firstname')
              ->setCustomerLastname('lastname')
              ->setCustomer_is_guest(1);

              // set Billing Address
              $billingAddress
              ->setStoreId($storeId)
              ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_BILLING)
              ->setPrefix('mr')
              ->setFirstname('firstname')
              ->setLastname('lastname')
              ->setCompany('company')
              ->setStreet('street')
              ->setCity('city')
              ->setCountry_id('US')
              ->setPostcode('12345');

              $order->setBillingAddress($billingAddress);

              $shippingAddress
              ->setStoreId($storeId)
              ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING)
              ->setPrefix('mr')
              ->setFirstname('firstname')
              ->setLastname('lastname')
              ->setCompany('company')
              ->setStreet('street')
              ->setCity('city')
              ->setCountry_id('US')
              ->setPostcode('12345');


              $order->setShippingAddress($shippingAddress)
              ->setShipping_method('freeshipping_freeshipping')
              ->setShippingDescription('Free Shipping - Free');


                $orderItem = Mage::getModel('sales/order_item')
                    ->setStoreId(1)
                    ->setQuoteItemId(0)
                    ->setQuoteParentItemId(NULL)
                    ->setQtyBackordered(NULL)
                    ->setTotalQtyOrdered(10)
                    ->setQtyOrdered(10)
                    ->setName('custom product name')
                    ->setPrice(100)
                    ->setBasePrice(10)
                    ->setOriginalPrice(10)
                    ->setRowTotal(1000)
                    ->setBaseRowTotal(1000);

                    $order->addItem($orderItem);


                $order->setSubtotal(2000)
                    ->setSubtotalIncludingTax(2000)
                    ->setBaseSubtotal(2000)
                    ->setGrandTotal(2000)
                    ->setBaseGrandTotal(2000)
                    ->setTaxAmount(0)
                    ->setTotalQtyOrdered(10);

              $order->save();


    return $order;
}

?>

于 2013-02-06T11:32:17.427 に答える