2017-01-17 11 views
0

私は通常、デバッグモードを使用して新しいデータベース構造フィールドを作成し、次にEdit FormViewと書いています。 <field name="x_delivery_date"/>。また、私はこのような印刷された報告書で、後でそれを表示することができますOdoo 10: "sales.order"のフィールドを "account.invoice"のフォームビューで表示

<div name="x_delivery_date" t-if="doc.x_delivery_date"> 
    <strong>Delivery Date:</strong> 
    <p t-field="doc.x_delivery_date"/> 
</div> 

しかし、どのように私は別のモデルのFormViewコントロール(account.invoice)に(sale.order)モデルで提供されている、(commitment_date)フィールドを表示していますか?私はオブジェクト関係や関連分野を使わなければならないと思いますが、どうやってそれを知ることはできません。私は誰かが私を助けることを願っています。事前に多くの感謝。

答えて

0

関連するフィールドを使用できます。それを行うには、account.invoiceに2つのフィールドを追加する必要があります。

class AccountInvoice(models.Model): 
    _inherit = "account.invoice" 

    order_id = fields.Many2one('sale.order', 'Related_order') 
    commitment_date = fields.Date(related='order_id.commitment_date') 

次に、account.invoiceフォームのcommitment_dateフィールドを使用できます。 sale.orderのフィールドの値はすぐにフォームに反映されます。ただし、そのフィールドの値を変更すると、sale.orderのフィールドの値も変更されることに注意してください。それはaccount.invoice(そうdoc.commitment_date

+0

エラーが発生しました。「ProgrammingError:column account_invoice.order_id does not exist」 – saitam

+0

サーバの再起動後にモジュールを更新する必要があります。 – Majikat

0

まずの定期的なフィールドがあるようにレポートの場合

EDIT

はちょうどあなたがaccount.invoiceでmany2oneフィールドを追加する必要があるフィールドを使用し

class account_invoice(osv.osv): 
    _inherit = "account.invoice" 

    _columns = { 
     'source_id':fields.many2one('sale.order','Source') 
    } 

次に、_prepare_invoice関数をsale_orderで継承します。この機能では、あなたがaccount.invoiceにソースIDとして販売注文IDを渡ししようとしている

class sale_order(osv.osv): 
    _inherit = "sale.order" 

    def _prepare_invoice(self, cr, uid, order, lines, context=None): 
    if context is None: 
     context = {} 
    journal_id = self.pool['account.invoice'].default_get(cr, uid, ['journal_id'], context=context)['journal_id'] 
    if not journal_id: 
     raise osv.except_osv(_('Error!'), 
      _('Please define sales journal for this company: "%s" (id:%d).') % (order.company_id.name, order.company_id.id)) 
    invoice_vals = { 
     'name': order.client_order_ref or '', 
     'origin': order.name, 
     'type': 'out_invoice', 
#Sale order id as source_id 
     'source_id':order.id, 
     'reference': order.client_order_ref or order.name, 
     'account_id': order.partner_invoice_id.property_account_receivable.id, 
     'partner_id': order.partner_invoice_id.id, 
     'journal_id': journal_id, 
     'invoice_line': [(6, 0, lines)], 
     'currency_id': order.pricelist_id.currency_id.id, 
     'comment': order.note, 
     'payment_term': order.payment_term and order.payment_term.id or False, 
     'fiscal_position': order.fiscal_position.id or order.partner_invoice_id.property_account_position.id, 
     'date_invoice': context.get('date_invoice', False), 
     'company_id': order.company_id.id, 
     'user_id': order.user_id and order.user_id.id or False, 
     'section_id' : order.section_id.id 
    } 

    invoice_vals.update(self._inv_get(cr, uid, order, context=context)) 
    return invoice_vals 

<record id="invoice_form" model="ir.ui.view"> 
      <field name="name">account.invoice.form</field> 
      <field name="model">account.invoice</field> 
      <field name="inherit_id" ref="account.invoice_form"/> 
      <field name="arch" type="xml"> 
       <xpath expr="//field[@name='date_invoice']" position="after"> 
        <field name="source_id"/> 
       </xpath> 
      </field> 
     </record> 

今すぐあなたのレポートファイルに以下を追加ビューファイルでこれを追加

<div name="x_delivery_date" t-if="doc.x_delivery_date"> 
    <strong>Delivery Date:</strong> 
    <p t-field="doc.x_delivery_date"/> 
    <p t-field="doc.source_id.commitment_date"/> 
</div> 
+0

これはOdoo 8にあります.. odoo 10に変換してください。これは確実に機能します。 – sfx

+0

ありがとうございますが、 '_Columns = {...}'行を 'AccountInvoice(models.Model)クラス 'に追加した後、私は500のサーバエラーを受け取ります – saitam

関連する問題