我正在尝试做一些应该非常简单的事情,但我被卡住了。
我正在尝试将序列号(1、2、3 等)添加到 Magento 发票 pdf 中名为序列号的列下的项目中。
关于如何做到这一点的任何线索?谢谢!
这两个文件负责显示发票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'
);
}
按照步骤
第 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 缓存。并查看结果。