2013-07-05 51 views
0

我正在尝试编写添加项目到PDF发票中的行总计模块。这是我的模块config.xml中:Magento模块将行添加到pdf发票中的总计

<?xml version="1.0"?> 
<config> 
<modules> 
<Devpassion_Rowtotal> 
    <version>0.0.1</version> 
</Devpassion_Rowtotal> 
</modules> 
<global> 
<pdf> 
    <totals> 
     <rowtotal translate="title"> 
      <title>Subtotal less discount</title> 
      <source_field>rowtotal</source_field> 
      <model>rowtotal_pdf_model_totalpdf</model> 
      <font_size>7</font_size> 
      <display_zero>1</display_zero> 
      <sort_order>200</sort_order> 
     </rowtotal> 
    </totals> 
    </pdf> 

,这是我的模型类:

class Devpassion_Rowtotal_Pdf_Model_Totalpdf extends Mage_Sales_Model_Order_Pdf_Total_Default { 

public function getTotalsForDisplay() { 

$order = $this->getOrder(); 
$item = $this->getItem(); 

$subtotaldisc = $item->getRowTotal() + $item->getTaxAmount() + $item->getHiddenTaxAmount() ; - $item->getDiscountAmount(); 
$result = $order->formatPriceTxt($subtotaldisc) ; 

$totals = array(array(
    'label' => 'Cijena sa popustom', 
    'amount' => $result, 
    'font_size' => $fontSize, 
    ) 
    ); 

return $totals; 



} 

} 

而且什么也不显示的PDF发票。任何人都可以建议请在这里可能是错误的。谢谢。

+0

你有解决方案@srdan?我也有同样的问题。请分享,如果你解决了它。 – Wakanina

+0

请在下面看到我和@Wakanina的答案 – srdan

回答

2

我解决了我的问题,看了我的代码后,出现了一些错误。但我的问题不像你的问题。

我注意到你的config.xml和你的模型类中有错误的代码。尝试这个。

config.xml中

<global> 
    <pdf> 
    <totals> 
     <rowtotal translate="title"> 
      <title>Subtotal less discount</title> 
      <source_field>rowtotal</source_field> 
      <model>Devpassion_Rowtotal_Pdf_Model_Totalpdf</model> 
      <font_size>7</font_size> 
      <display_zero>1</display_zero> 
      <sort_order>200</sort_order> 
     </rowtotal> 
    </totals> 
    </pdf> 
</global> 

Model类,Totalpdf.php

class Devpassion_Rowtotal_Pdf_Model_Totalpdf extends Mage_Sales_Model_Order_Pdf_Total_Default { 

    public function getTotalsForDisplay() { 

     $order = $this->getOrder(); 
     $item = $this->getItem(); 

     $subtotaldisc = $item->getRowTotal() + $item->getTaxAmount() + $item->getHiddenTaxAmount() - $item->getDiscountAmount(); 
     $result = $order->formatPriceTxt($subtotaldisc); 

     if($this->getAmountPrefix()){ 
     $result= $this->getAmountPrefix().$result; 
     } 

     $fontSize = $this->getFontSize() ? $this->getFontSize() : 7; 

     $totals = array(array(
       'label' => 'Cijena sa popustom:', 
       'amount' => $result, 
       'font_size' => $fontSize, 
      ) 
     ); 

     return $totals; 
    } 

} 
0

我跟着@Wakanina答案,并更改config.xml文件 - 以PDF模式路径:

<pdf> 
      <totals> 
       <rowtotalbezpdv translate="title"> 
       <title>Ukupno s popustom</title> 
       <source_field>rowtot_alamount</source_field> 
       <model>Devpassion_Rowtotalbezpdv_Model_Pdf_Total_Totalbezpdf</model> 
       <font_size>7</font_size> 
       <display_zero>0</display_zero> 
       <sort_order>300</sort_order> 
       </rowtotalbezpdv> 
      </totals> 
     </pdf> 

和totalpdf模型等级:

class Devpassion_Rowtotalbezpdv_Model_Pdf_Total_Totalbezpdf extends Mage_Sales_Model_Order_Pdf_Total_Default 
{ 

    public function getTotalsForDisplay(){ 
     $amount = $this->getAmount(); 
     $fontSize = $this->getFontSize() ? $this->getFontSize() : 7; 
     if(floatval($amount)){ 
      $amount = $this->getOrder()->formatPriceTxt($amount); 

      $totals = array(
       array(
        'label' => 'Cijena knjige/a s popustom bez PDV-a', 
        'amount' => $amount, 
        'font_size' => $fontSize, 
       ) 
      ); 

      return $totals; 
     } 
    } 

    public function getAmount(){ 
     $order = $this->getOrder(); 
     $subtotaldiscnopdv = 0; 
     foreach ($order->getAllItems() as $item) { 
      $subtotaldiscnopdv += $item->getRowTotal() - $item->getDiscountAmount(); 
     } 
     return $subtotaldiscnopdv; 
    } 
} 

这有助于我解决问题。

1

我试过上面的代码,它没有得到$item的值。我已经从$ order对象中获得小计值和折扣值,并且它工作正常。

$order = $this->getOrder(); 
    $subtotaldisc = $order ['subtotal'] + $order ['discount_amount']; //discount amount returns negative value, so add 
    $result = $order->formatPriceTxt ($subtotaldisc); 
    $fontSize = $this->getFontSize() ? $this->getFontSize() : 10; 
    $totals = array (
      array (
        'label' => 'Subtotal with Discount', 
        'amount' => $result, 
        'font_size' => $fontSize 
      ) 
    ); 
    return $totals;