2016-03-13 73 views
0

我創建了一個自定義模塊,用於計算每個客戶或供應商付款憑證的總髮票。每當我調用報告時它都會返回一個錯誤。QWebException:解析時意外的EOF(,第1行)[Odoo/Openerp]

QWebException: unexpected EOF while parsing (, line 1) 

模塊:module_pdc

型號/ outstanding_pdc.py

from openerp import fields, api, models, exceptions 
from datetime import datetime 
from openerp.tools.translate import _ 
import openerp.addons.decimal_precision as dp 

class AccountOutstandingPostDatedCheck(models.Model): 
    _name = 'account.post.dated.check.outstanding' 
    _description = 'Outstanding Receivable' 

    name = fields.Char(string='Reference No.')  
    is_customer = fields.Boolean('Customers') 
    is_supplier = fields.Boolean('Suppliers')  
    outstanding_pdc_line_ids = fields.One2many('account.post.dated.check.outstanding.line', 'outstanding_line_id', 'Outstanding Receivable Line') 

    @api.model  
    def create(self, values): 
     sequence_obj = self.env['ir.sequence']  
     values.update({'name' : sequence_obj.next_by_code('pdc.outstanding.ref')})  
     return super(AccountOutstandingPostDatedCheck,self).create(values) 

    @api.multi  
    def check_outstanding_pdc(self): 
     customer = self.is_customer 
     supplier = self.is_supplier  


     # Create object classes to access records. 
     account_voucher = self.env['account.voucher']  
     outstanding_pdc_line_ids = self.env['account.post.dated.check.outstanding.line'] 


     # Clear the list before execution of the main process:  
     if self.outstanding_pdc_line_ids.ids != []:  
      self.outstanding_pdc_line_ids.unlink() 

     #Search the voucher within the selected period  
     date_today = datetime.now().date()  
     date_today = date_today.strftime("%Y-%m-%d") 

     pdc_vouchers = [] 
     if customer and supplier:  
      raise exceptions.ValidationError(_('Select only one partner.'))  
     if not customer and not supplier:  
      raise exceptions.ValidationError(_('Select one partner.')) 
     elif customer:  
      pdc_vouchers = account_voucher.search([('post_dated', '=', True), ('state','=','posted'), ('partner_id.customer', '=', True), ('payment_details.type', '=', 'check'), ('payment_details.date_due', '>', date_today)]) 
     elif supplier: 
      pdc_vouchers = account_voucher.search([('post_dated', '=', True), ('state','=','posted'), ('partner_id.supplier', '=', True), ('payment_details.type', '=', 'check'), ('payment_details.date_due', '>', date_today)])  

     # Loop through each Voucher and collect its Partner Ids.  
     partners = []  
     for voucher in pdc_vouchers:  
      if voucher.partner_id not in partners: partners.append(voucher.partner_id) 
     receivable = 0.00 
     envelope = 0.00  
     pdc = 0.00 

     for partner in partners: 
      for pdc_voucher in pdc_vouchers:  
       if pdc_voucher.partner_id == partner:  
        for voucher_line in pdc_voucher.line_ids:  
         receivable += voucher_line.amount_original  
         if not voucher_line.move_line_id.invoice.reconciled:  
          envelope += voucher_line.move_line_id.invoice.residual      

        pdc = receivable - envelope 
       vals = { 
        'outstanding_line_id' : self.ids[0], 
        'partner_id': partner.id,  
        'receivable': receivable, 
        'pdc': pdc,  
        'envelope': envelope  
       } 

      receivable = 0.00  
      envelope = 0.00  
      pdc = 0.00 
      outstanding_pdc_line_ids.create(vals) 



class AccountPostDatedCheckOutstandingLine(models.Model): 
    _name = "account.post.dated.check.outstanding.line" 
    _description = "Outstanding Receivable Line" 


    outstanding_line_id = fields.Many2one('account.post.dated.check.outstanding', 'Outstanding Receivable Line')  
    partner_id = fields.Many2one('res.partner', 'Partner')  
    receivable = fields.Float('Receivable')  
    pdc= fields.Float('PDC')  
    envelope = fields.Float('Envelope') 

的意見/ report_outstanding_pdc.xml

<?xml version="1.0" encoding="utf-8"?> 

<openerp>  
<data>  
<template id="report_outstanding_pdc_document"> 
    <t t-call="report.html_container">  
     <t t-foreach="docs" t-as="o">  
      <t t-call="module_pdc.outstanding_pdc_layout">  
       <div class="page"> 
        <table class="table table-condensed">  
         <thead>  
          <tr> 
           <th class="col-xs-3">Name</th> 
           <th class="col-xs-3">Receivable</th> 
           <th class="col-xs-3">PDC</th> 
           <th class="col-xs-3">Envelope</th> 
          </tr> 
         </thead> 

         <tr t-foreach="o.outstanding_pdc_line_ids" t-as="or"> 
          <td class="col-xs-3"> 
           <span t-field="or.partner_id"/>  
          </td> 

          <td class="col-xs-3">  
           <span t-field="or.receivable"/>  
          </td> 

          <td class="col-xs-3"> 
           <span t-field="or.pdc"/> 
          </td> 

          <td class="col-xs-3"> 
           <span t-field="or.envelope"/> 
          </td> 
         </tr> 

         <t t-set="rec" t-value="0.00"/> 
          <t t-foreach="o.outstanding_pdc_line_ids" t-as="r"> 
          <t t-set="rec" t-value="rec+r.receivable"/>  
          </t> 

         <t t-set="pd" t-value="0.00"/>  
          <t t-foreach="o.outstanding_pdc_line_ids" t-as="p"> 
           <t t-set="pd" t-value="pd+p.pdc"/>  
          </t> 

         <t t-set="env" t-value="0.00"/>  
          <t t-foreach="o.outstanding_pdc_line_ids" t-as="e"> 
           <t t-set="env" t-value="env+e.envelope"/>  
          </t> 

         <tr>  
           <th class="col-xs-3"><strong>Total:</strong></th>  
           <th class="col-xs-3" t-esc="rec"/>  
           <th class="col-xs-3" t-esc="pd"/>  
           <th class="col-xs-3" t-esc="env"/>  
         </tr>  
        </table>   
       </div>  
      </t> 
     </t>  
    </t>  
</template>  
</data>  
</openerp> 
+0

請在發佈這樣的代碼時確保它沒有那些惱人的空行。 –

回答

0

您的qweb模板代碼似乎有問題。

試試這個代碼

<openerp> 
<data> 

    <template id="report_outstanding_pdc_document"> 

     <div class="page"> 
      <table class="table table-condensed"> 
       <thead> 
        <tr> 
         <th class="col-xs-3">Name</th> 
         <th class="col-xs-3">Receivable</th> 
         <th class="col-xs-3">PDC</th> 
         <th class="col-xs-3">Envelope</th> 
        </tr> 
       </thead> 

       <tr t-foreach="o.outstanding_pdc_line_ids" t-as="or"> 
        <td class="col-xs-3"> 
         <span t-field="or.partner_id" /> 
        </td> 

        <td class="col-xs-3"> 
         <span t-field="or.receivable" /> 
        </td> 

        <td class="col-xs-3"> 
         <span t-field="or.pdc" /> 
        </td> 

        <td class="col-xs-3"> 
         <span t-field="or.envelope" /> 
        </td> 
       </tr> 

       <t t-set="rec" t-value="0.00" /> 
       <t t-foreach="o.outstanding_pdc_line_ids" t-as="r"> 
        <t t-set="rec" t-value="rec+r.receivable" /> 
       </t> 

       <t t-set="pd" t-value="0.00" /> 
       <t t-foreach="o.outstanding_pdc_line_ids" t-as="p"> 
        <t t-set="pd" t-value="pd+p.pdc" /> 
       </t> 

       <t t-set="env" t-value="0.00" /> 
       <t t-foreach="o.outstanding_pdc_line_ids" t-as="e"> 
        <t t-set="env" t-value="env+e.envelope" /> 
       </t> 

       <tr> 
        <th class="col-xs-3"> 
         <strong>Total:</strong> 
        </th> 
        <th class="col-xs-3" t-esc="rec" /> 
        <th class="col-xs-3" t-esc="pd" /> 
        <th class="col-xs-3" t-esc="env" /> 
       </tr> 
      </table> 
     </div> 
    </template> 


    <template id="report_outstanding_pdc"> 
     <t t-foreach="docs" t-as="o"> 
      <t t-call="module_pdc.report_outstanding_pdc_document" /> 
     </t> 
    </template> 

</data></openerp> 

也會改變你的Python腳本按本qweb模板。 希望這會解決你的問題。

+0

感謝您的回覆,但我發現我的模板中有什麼問題:) – wannabe

+0

好。享受代碼 –

0

我發現我的模板中有什麼問題。

<tr t-foreach="o.outstanding_pdc_line_ids" t-as="or"> 

代替,我爲我的one2many領域使用不​​同的名稱。