0

構成可能な製品の SKU は人が読めるものですが、単純な製品は 16 桁の数字のバーコードなので、製品を選ぶのは悪夢です。

ドキュメントを書いている /app/code/core/Mage/Sales/Model/Order/Pdf/Invoice.php を見つけました。その中には、ファイルを作成すると思われる次のものが含まれています。

    $page->drawText(Mage::helper('sales')->__('Product'), 35, $this->y, 'UTF-8');
    $page->drawText(Mage::helper('sales')->__('SKU'), 255, $this->y, 'UTF-8');
    $page->drawText(Mage::helper('sales')->__('Price'), 380, $this->y, 'UTF-8');
    $page->drawText(Mage::helper('sales')->__('Qty'), 430, $this->y, 'UTF-8');
    $page->drawText(Mage::helper('sales')->__('Tax'), 480, $this->y, 'UTF-8');
    $page->drawText(Mage::helper('sales')->__('Subtotal'), 535, $this->y, 'UTF-8');

私の質問は、「SKU」を構成可能な製品 SKU に変更するにはどうすればよいかということです。私のストアのすべての製品は構成可能であるため、単純な製品 sku を上書きしても問題ありません。

ありがとう。

4

3 に答える 3

1

Magentoは、販売された構成可能な製品ごとに2つの注文アイテムを保存します。これはsales_flat_order_itemテーブルで確認できます。ただし、これらのアイテムの両方のSKUが同じであることに気付くでしょう...単純なSKU。そのため、残念ながら、構成可能な製品のSKUを取得する簡単な方法はありませんが、それは可能です。

  1. 注文アイテムが読み込まれる場所を見つけます*。探す:

    $order/$invoice->getAllItems()

  2. で保存されたproduct_idを使用して構成可能な製品のを取得しますproduct_idorder_item

    $item->getProductId()

  3. 構成可能な製品をロードする

    $product = Mage::getModel('catalog/product')->load($product_id_from_step2)

  4. order_itemSKUを実際の製品のSKUに設定**します

    $item->setSku($product->getSku())

*-これは、質問で参照したファイルのどこかにあります。ただし、上記のコードは、実際の製品データではなく、実際にはテーブルのヘッダー行を表示していることに注意してください。

**-を呼び出さない限り、これはデータベースに何も保存しません$item->save()。メモリにロードされたオブジェクトを一時的に変更しているだけです

于 2012-12-16T15:33:03.713 に答える
0

このファイル app\code\core\Mage\Sales\Model\Order\Pdf\Items\Invoice\Default.php に移動するだけで、ここで sku フィールドを見つけることができ、$item配列を印刷すると、必要なものが得られます

于 2012-12-17T07:39:43.113 に答える
0

シンプルな製品タイプに独自の PDF レンダラーを提供してから、構成可能な製品などを検索できます。

カスタム拡張機能を作成し、これを config.xml に追加します

<global>

    <pdf>
        <invoice>
            <simple>invoice/sales_order_pdf_items_invoice_simple</simple>
        </invoice>
    </pdf>
</global>

拡張機能でファイルを作成します。Sales\Order\Pdf\Items\Invoice\Simple.pdf

<?php
class YourModule_Invoice_Model_Sales_Order_Pdf_Items_Invoice_Simple extends     Mage_Sales_Model_Order_Pdf_Items_Abstract
{

    public function draw()
    {
        $order  = $this->getOrder();
        $item   = $this->getItem();
        $pdf    = $this->getPdf();
        $page   = $this->getPage();
        $lines  = array();

        // Render your PDF. Look in parent class for examples.
    }
}
于 2012-12-18T13:34:59.213 に答える