如何向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');
这对于行总计非常有用。但不是整个货物。我需要做的是为装运中的每个项目“添加”这段代码,以创建整批货物的总重量。非常重要的是,我只有货物的总数 - 而不是订单,因为我将拆分货物。
答案 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
);