1

組み込みの OpenERP 6.1 モジュール crm をインストールしました。

その結果、res.lead がアクティブになり、「Sales->Opportunities」に表示されるようになりました。

このオブジェクト/ビューを編集して、パートナーの請求先住所を表示したいと考えています。

Opporunities フォームでこれを行いたいので、既に partner_id があります。

別のモジュールをコピーして、新しいモジュールを次のように定義しました。

class crm_lead(osv.osv):
    _name = _inherit = 'crm.lead'
    _columns = {
    'billing_address_id': fields.many2one('res.partner.address', 'Partner Billing Address', domain="[('partner_id','=',partner_id),('type','in',['invoice', 'default'])]"),
    }

そして、update_xml を次のように変更しました。

    <record model="ir.ui.view" id="crm_case_form_view_oppor">
        <field name="name">Opportunity form (inherit)</field>
        <field name="model">crm.lead</field>
        <field name="inherit_id" ref="crm.crm_case_form_view_oppor"/>
        <field name="arch" type="xml">
            <data>
                <separator string="Details" position="replace" />
                <field name="description" position="replace">
                    <group colspan="2" col="4">
                        <separator colspan="4" string="Billing" />
                        <field widget="one2many_list" mode="form,tree" name="billing_address_id" colspan="4" nolabel="1" />
                    </group>
                    <group colspan="2" col="4">
                        <separator colspan="4" string="Details" />
                        <field name="description" nolabel="1" colspan="4" />
                    </group>
                </field>
            </data>
        </field>
    </record>

問題は、関連するオブジェクトが関連するすべてのフィールドを表示することです (予想どおりです)。特に、partner_id フィールドと company フィールドが表示されますが、これらはデフォルトでこの機会 (またはリンクされたパートナー) から継承する必要があるため、非表示にしたいと考えています。

これらのフィールドを非表示にするにはどうすればよいですか? 複数の請求先住所が存在する可能性があるため、「関連する」フィールドを単純に追加することはできません。

助けてくれてありがとう!


編集: 明確にするために、オポチュニティには、パートナーの請求書/デフォルトの住所から選択された単一の選択された請求先住所のみが必要です。簡単に編集できるように、インラインで表示する必要があります。

4

4 に答える 4

3

このような関連フィールドのビューを指定するには、いくつかの方法があります。次のようなコンテキストを使用できます。

<field 
    name="order_line" 
    colspan="4" 
    nolabel="1"
    context="{'form_view_ref': 'module.view_id', 'tree_view_ref': 'model.view_id'}"/>

次のように、子レコードのビュー全体を親ビュー内のサブビューとして指定することもできます。

    <!-- <=== order_line is a one2many field -->
    <field name="order_line" colspan="4" nolabel="1">
        <form>
            <field name="qty"/>
            ...
        </form>
        <tree>
            <field name="qty"/>
            ...
        </tree>
    </field>
于 2012-06-21T17:57:03.207 に答える
0

わかりました。one2many ウィジェットを many2one フィールドに配置したので、少し混乱しました。

one2many フィールドの表示方法を制御したい場合は、別の回答で述べたサブビューまたはコンテキスト メソッドを使用します。

many2one フィールドがどのように表示されるかを制御したい場合は、選択したレコードからフィールドを引き出す関連フィールドを使用できるかもしれませんが、私はそうは思いません。読み取り専用は機能するかもしれませんが、関連する複数のフィールドを編集して、選択したレコードを変更できるようにすることは意味がないと思います。関連するレコードに書き戻すことができる store 関数を使用して、いくつかの関数フィールドをハックできるかもしれませんが、ユーザーを本当に混乱させるようです。

于 2012-06-22T00:15:59.330 に答える
0

どの OE 関係フィールドでも、次のように内部ビューを定義できます。

  <field name=""  mode="tree,form">
        <!--Internal tree view for your Relation field model-->
        <tree>
        </tree>

        <!--Internal Form view for your Relation field model-->
        <form>
        </form>
  </field>

アドオンの下の例1 クリックして例 2 クリックして例を表示

これがお役に立てば幸いです。

于 2012-06-22T04:37:27.497 に答える
0

ここで、m2o ファイルに特定の詳細を追加したい場合はdef name_get、リレーショナル モデルを上書きする必要があるオプションの方法がいくつかあります。名前は次のようになります。

name_get(cr, user, ids, context=None)
   Returns the preferred display value (text representation) for the records with 
   the given ids. By default this will be the value of the name column, unless the
   model implements a custom behavior. Can sometimes be seen as the inverse function
   of name_search(), but it is not guaranteed to be.

   Rtype :  list(tuple)
   Return : list of pairs (id,text_repr) for all records with the given ids.

したがって、このメソッドでは、リレーショナル フィールドに表示する文字列を決定できます。

これにより、問題が部分的に修正されると思います。

于 2012-06-22T05:12:54.783 に答える