0

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

<?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发票上没有任何显示。任何人都可以建议这里有什么问题。谢谢。

4

3 回答 3

2

我解决了我的问题,在我查看我的代码后,有一些错误。但我的问题和你的不一样。

我注意到您的 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>

模型类,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;
   }

}
于 2014-02-22T11:22:37.797 回答
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;
于 2017-01-24T08:28:02.970 回答
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;
    }  
}

这可以帮助我解决我的问题。

于 2014-02-23T05:20:45.603 回答