Magento定制PDF发票

时间:2012-10-08 21:49:56

标签: magento invoice

我在Magento的pdf发票有问题。我想自定义pdf发票,我用它来发货。所以我需要一个总价格很高的领域(只有总计)。 我怎么能得到这个总价?

1 个答案:

答案 0 :(得分:2)

Magento在PDF中显示总数的方式与购物车和结账时的方式非常相似;它检索总数的数组,在迭代它们时显示它们。

根据我的理解,您只想在发票PDF中显示总计?

可以在名为/app/code/core/Mage/Sales/Order/Pdf/Abstract.php的函数中的insertTotals中找到处理总计的代码。

由于它位于Abstract.php文件中,代码将用于发票,贷项通知单等,因此您不仅必须通过将/app/code/core/Mage/Sales/Order/Pdf/Invoice.php文件复制到/app/code/local/Mage/Sales/Order/Pdf/Invoice.php来覆盖它(不要捣乱核心!),但你还必须覆盖insertTotals功能,只显示总计数据:

public function insertTotals($page, $source){
    $order = $source->getOrder();
    $totals = $this->_getTotalsList($source);
    $lineBlock = array(
        'lines'  => array(),
        'height' => 15
    );


    foreach ($totals as $total) {
        $total->setOrder($order)
            ->setSource($source);

        // only allow Grand Total to be displayed
        if ($total->getSourceField() != 'grand_total')
        {
            continue;
        }

        if ($total->canDisplay()) {
            foreach ($total->getTotalsForDisplay() as $totalData) {
                $lineBlock['lines'][] = array(
                    array(
                        'text'      => $totalData['label'],
                        'feed'      => 475,
                        'align'     => 'right',
                        'font_size' => $totalData['font_size'],
                        'font'      => 'bold'
                    ),
                    array(
                        'text'      => $totalData['amount'],
                        'feed'      => 565,
                        'align'     => 'right',
                        'font_size' => $totalData['font_size'],
                        'font'      => 'bold'
                    ),
                );
            }
        }
    }

    $page = $this->drawLineBlocks($page, array($lineBlock));
    return $page;
}