向Magento packingslip或Invoice PDF添加更多信息

时间:2011-02-14 17:23:09

标签: pdf magento

如何向Magento Packingslip PDF添加其他信息。我正在使用集成标签纸,所以我想在页脚添加重复客户送货地址,还有一些细节,例如订单中商品的总数量和订单中商品的成本。我目前正在修改本地文件:Mage / Sales / Model / Order / Pdf /但我只是设法改为字体。

编辑:

好的,我已经取得了很好的进展并添加了我需要的大部分信息,但是,我现在偶然发现了一个问题..我想得到每个订单和数量中所有项目的总重量。

我在shipment.php中使用此代码:

在foreach下(如果订单有拆分交货,这很有用 - 因为你可以有一个订单包含多个“货件”所以这就是为什么我在这之后有代码的原因:

foreach ($shipment->getAllItems() as $item){
    if ($item->getOrderItem()->getParentItem()) {
        continue;
...

然后我进一步说:

$shippingweight=0;
$shippingweight= $item->getWeight()*$item->getQty();
$page->drawText($shippingweight . Mage::helper('sales'), $x, $y, 'UTF-8');

这对于行总计非常有用。但不是整个货物。我需要做的是为装运中的每个项目“添加”这段代码,以创建整批货物的总重量。非常重要的是,我只有货物的总数 - 而不是订单,因为我将拆分货物。

2 个答案:

答案 0 :(得分:1)

几乎在getPdf(...)的{​​{1}}末尾,您会找到插入新页面的代码(1.5.0.1中的第93-94行)

Mage_Sales_Model_Order_Pdf_Shipment

发生在for循环中。

您可以在此处更改逻辑以使其更改页面,以便为您的额外信息腾出空间,然后在页面转换之前添加它。如果你想让它出现在最后一页上,你也应该在for-block之后放置代码。

注意:您不应直接更改if($this->y<15) $page = $this->newPage(....) 中的文件。相反,您应该使用相同的文件夹结构将更改的文件放在app/code/code/Mage下。这样,您的更改不会在升级过程中意外被覆盖。

这可以为您提供订单中的项目总数(可能有更快的方式,但不知道它在我的头顶):

app/code/local/Mage

答案 1 :(得分:1)

对于发票PDF

在app / code / local / Mage / Sales / Model / Order / Pdf / Items / Invoice / Default.php 在$ lineBlock

之前添加
 $product = Mage::getModel('catalog/product')->loadByAttribute('sku', $this->getSku($item), array('weight'));

     $lines[][] = array(
       'text'  => 'Weight: '. $product->getData('weight')*1 .'Kg/ea.  Total: ' .$product->getData('weight')*$item->getQty() . 'Kg',
       'feed'  => 400
      );