Odoo で配送先住所と請求先住所を含む請求書を印刷しようとしています。配送伝票については、「o.sale_id.client_order_ref」を使用して販売注文から顧客参照を取得できます。「o.sale_id.partner_shipping_id」を試すとエラーが発生します。
これは、請求書にsale.orderとmany2oneの関係を持つsale_idが必要だからだと思います。配送先住所を取得するためにsale_idを使用する代わりに別の方法はありますか?
請求書は受注とは関係ありません。モデル「account.invoice」をオーバーライドし、「partner_shipping_id」を保持するフィールドを追加してから、請求書作成用の値を提供する次のメソッドをオーバーライドする必要があります。
class sale_order_line_make_invoice(osv.Model):
_inherit = 'sale.order.line.make.invoice'
def _prepare_invoice(self, cr, uid, order, lines, context=None):
vals={}
vals = super(sale_order_line_make_invoice, self)._prepare_invoice(cr, uid, order, lines, context=context)
vals.update({'partner_shipping_id':order.partner_shipping_id.id})
return vals
このメソッドに partner_shipping_id を追加します。その後、請求書でこれを取得できます。