0

我正在尝试做一些应该非常简单的事情,但我被卡住了。

我正在尝试将序列号(1、2、3 等)添加到 Magento 发票 pdf 中名为序列号的列下的项目中。

关于如何做到这一点的任何线索?谢谢!

4

2 回答 2

0

这两个文件负责显示发票pdf内容 app\code\core\Mage\Sales\Model\Order\Pdf\Items\Invoice\Default.php app\code\core\Mage\Sales\Model\Order\Pdf\Invoice .php 覆盖这两个文件或只是放在本地文件夹中

现在在此文件 app\code\core\Mage\Sales\Model\Order\Pdf\Invoice.php 中添加序列号标题,您可以_drawHeader在 products 列之前添加类似这样的功能

$lines[0][] = array(
        'text' => Mage::helper('sales')->__('Serial number'),
        'feed' => 35
    );

现在去 app\code\core\Mage\Sales\Model\Order\Pdf\Items\Invoice\Default.php 这个文件你可以找到draw()函数

$this->getItem();您可以找到项目计数并将您的 for 循环放在这里以显示序列号,例如

for($j=1; $j<=count($this->getItem());$j++)
{
 $lines[$j][] = array(
                'text'  => $j,
                'font'  => 'bold',
                'align' => 'right'
            );
}
于 2013-05-14T11:38:34.257 回答
0

按照步骤


第 1 步:您必须使用两个核心法师文件,因此,复制这些文件及其各自的文件夹结构。并粘贴到本地目录。这两个文件如下:

来自: (1) app\code\core\Mage\Sales\Model\Order\Pdf\Invoice.php (2) app\code\core\Mage\Sales\Model\Order\Pdf\Items\Invoice\Default.php

至: (1) app\code\local\Mage\Sales\Model\Order\Pdf\Invoice.php (2) app\code\local\Mage\Sales\Model\Order\Pdf\Items\Invoice\Default.php

(注意:请将上述两个文件复制到具有相应文件夹结构的本地目录中,而不是直接更改为核心文件。)

第 2 步:现在,首先使用 Invoice.php 文件。

在产品名称添加标题代码之前粘贴以下代码。

//Serial Number
$lines[0][] = array(
‘text’ => Mage::helper(‘sales’)->__(‘#’),
‘feed’ => 35
);

并更改 Product 列的 Feed 值,如下所示:

$lines[0][] = array(
‘text’ => Mage::helper(‘sales’)->__(‘Products’),
‘feed’ => 70
);

所以它看起来像下面这样:

/* Add table head */
$this->_setFontRegular($page, 10);
$page->setFillColor(new Zend_Pdf_Color_RGB(0.93, 0.92, 0.92));
$page->setLineColor(new Zend_Pdf_Color_GrayScale(0.5));
$page->setLineWidth(0.5);
$page->drawRectangle(25, $this->y, 570, $this->y -15);
$this->y -= 10;
$page->setFillColor(new Zend_Pdf_Color_RGB(0, 0, 0));

//columns headers

//Serial Number
$lines[0][] = array(
‘text’ => Mage::helper(‘sales’)->__(‘#’),
‘feed’ => 35
);

$lines[0][] = array(
‘text’ => Mage::helper(‘sales’)->__(‘Products’),
‘feed’ => 70
);

第 3 步:现在,剩下的就是使用 Default.php 文件了。

在产品名称打印代码和 $lines 数组声明之后粘贴以下代码。

$var_srno = Mage::registry(‘sr_no’);
if($var_srno!=0)
{
$new_sr = $var_srno + 1;
$sr_no = $new_sr;
Mage::unregister(‘sr_no’);
}
else{
$new_sr = 1;
}
Mage::register(‘sr_no’, $new_sr);

$lines[0][] = array(
‘text’ => $new_sr,
‘feed’ => 35
);

现在还更改 $lines[0][] 的代码以获取项目名称,如下所示:

$lines[0][] = array(
‘text’ => Mage::helper(‘core/string’)->str_split($item->getName(), 70, true, true),
‘feed’ => 70,
);

所以,现在,它将如下所示:

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

    // draw Product name
    $lines[0] = array(array(
        'text' => Mage::helper('core/string')->str_split($item->getName(), 35, true, true),
        'feed' => 70
    ));

    $var_srno = Mage::registry('sr_no');
    if($var_srno!=0)
    {
        $new_sr = $var_srno + 1;
        $sr_no = $new_sr;
        Mage::unregister('sr_no');
    }
    else{
        $new_sr = 1;
    }
    Mage::register('sr_no', $new_sr);

    $lines[0][] = array(
        'text' => $new_sr,
        'feed' => 35
    );

    // draw SKU
    $lines[0][] = array(
        'text'  => Mage::helper('core/string')->str_split($this->getSku($item), 17),
        'feed'  => 190,
        'align' => 'right'
    );

第 4 步:保存两个文件并清除 Magento 缓存。并查看结果。

于 2016-02-13T06:56:23.060 回答