2016-10-09 3 views
0

Я учусь снова настроить систему Odoo 9. Из-за некоторых характеристик моего собственного бизнеса я должен изменить некоторые моменты в шаблоне счета-фактуры. Я создал новый валютный подал с именем total_residual и его значение вычисляется с помощью функции показа ниже:Как добавить новую денежную подачу в форму счета-фактуры в Odoo 9?

@api.multi 
def _compute_all_residual(self): 
    for invoice in self: 
     invs = self.search([('state', '=', 'open'), ('partner_id', '=', invoice.partner_id.id)]) 
     out_invoice = 0 
     in_invoice = 0 
     out_refund = 0 
     in_refund = 0 
     for inv in invs: 
      if inv.type == 'out_invoice': 
       out_invoice += inv.residual 
      if inv.type == 'in_invoice': 
       in_invoice += inv.residual 
      if inv.type == 'out_refund': 
       out_refund += inv.residual 
      if inv.type == 'in_refund': 
       in_refund += inv.residual 
     invoice.total_residual = out_invoice + in_refund - in_invoice - out_refund 

теперь я хотел бы добавить денежное поле нового поля (old_residual) со значением является общим остаточным исключить сумму текущего счета-фактуры. Какова правильная функция для добавления в модуль? и почему я показываю значение old_residual для отчета qweb? спасибо за ваше время

ответ

1

Просто создать новое денежное поле и переписывают выше методы:

@api.multi 
def _compute_all_residual(self): 
for invoice in self: 
    invs = self.search([('state', '=', 'open'), ('partner_id', '=', invoice.partner_id.id)]) 
    out_invoice = 0 
    in_invoice = 0 
    out_refund = 0 
    in_refund = 0 
    for inv in invs: 
     if inv.type == 'out_invoice': 
      out_invoice += inv.residual 
     if inv.type == 'in_invoice': 
      in_invoice += inv.residual 
     if inv.type == 'out_refund': 
      out_refund += inv.residual 
     if inv.type == 'in_refund': 
      in_refund += inv.residual 
    invoice.total_residual = out_invoice + in_refund - in_invoice - out_refund 
    invoice.old_residual = out_invoice + in_refund - in_invoice - out_refund - invoice.amount_total 

# Define new field 
old_residual = fields.Monetary(string='Amount Due', compute='_compute_all_residual', store=True) 

Чтобы добавить поле выше в отчете Qweb вы должны наследовать шаблон Qweb и добавить это поле в нем.

Попробуйте использовать следующий код в вашем представлении/report_invoice.xml.

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 
     <template id="report_invoice_document_custom" inherit_id="account.report_invoice_document"> 
      <xpath expr="//tr[@class='border-black']" position="after"> 
       <!-- Your Code ---> 
       <tr class="border-black"> 
        <td><strong>Old Residual</strong></td> 
        <td class="text-right"> 
         <span t-field="o.old_residual" t-field-options='{"widget": "monetary", "display_currency": "o.currency_id"}'/> 
        </td> 
       </tr> 
      </xpath> 
     </template> 
    </data> 
</openerp> 

Добавить отчет в YOURE файле "OpenERP .py" в данных.

'data': ['views/report_invoice.xml',], 
+0

Я попробую закончить, следуя вашей кодовой форме. Спасибо за помощь мне. Хорошего дня. –

+0

Привет, господин Малани. Я создал новое поле, но подал заявку только в форме счета, но значение кажется совсем не окутанным, и всегда показывает сумму = 0,00 đ. Я что-то забыл? –