2
<record id="rule_605" model="ir.actions.server">    
       <field name="name">Example of action server item</field>
       <field name="condition">True</field>
       <field name="state">code</field>  
       <field name="sequence" eval="456"/>
       <field name="code">True</field>
       <field name="model_id" eval="Selling"/>
 </record>

I'm confused with above code fragment inside of my custom module.?

What is the right way to do it? I know some fields maybe are wrong!

How to set the model_id?

4

1 に答える 1

5

サーバー アクションは、Open ERP の最も強力な機能の 1 つです (ただし、あまり文書化されていません)。ここでは、オープン ERP のサーバー アクションについて、できる限り説明したいと思います。

サーバー アクションは、ワークフローの特定の段階に達したときに、サーバー側で実行される 1 つ以上のアクションをトリガーするために使用されます。

例えば。

  1. 販売注文が承認されると、顧客の履歴に追加されます。
  2. 売上請求書が確認されたら、顧客に郵送します。
  3. CRM ケースがクローズされると、クライアント側にウィンドウがポップアップして、やり取りやフィードバックなどの概要が表示されます。

サーバー アクションを作成するには、[管理]>>[カスタマイズ]>>[アクション]>>[サーバー アクション] に移動します。

作成の手順:

ステップ 1: サーバー アクションの定義

  1. アクション名: 名前のとおりわかりやすい

  2. オブジェクト: サーバー アクションがトリガーされるオブジェクト/モデル。例えば。売り注文

  3. アクションの種類: 各ケースが処理されるため、これについては後で詳しく説明します。シーケンス: アクション タイプがマルチ アクションの場合に使用され、一連のアクションがシーケンスの順序で発生します。

  4. 条件: 1 行の Python 条件。例えば。5000 を超えるバウチャーが発生するたびに SMS アラートを送信する場合。object.amount>5000. 条件がない場合は、True を指定して実行する必要があります。

  5. アクションタイプ固有のタブ: ここでは、各アクションタイプについて詳しく説明します

    1. ダミー: ダミー ステージは何もしません。(なぜそこにあるのかは神のみぞ知る..)

    2. クライアント アクション: 開くフォーム、実行するウィザード、または起動するレポートを選択できます。リストからレポートを選択します。

    3. object.move_lines繰り返し: Python ループ式に基づいて、サーバー アクションを繰り返すことができます。履歴作成の仕事をするように言われました。

    4. Python コード: 複数行の Python コードを実行できます。戻り値は変数の値ですaction = {}。これは、コンテキストに固有の特定のウィンドウ (フォーム) をポップしたい場合にのみ意味があります。私見では、戻り値は必要ありません。注: コードは、python の exec 関数を使用して実行されます。この関数は、変数object, time, cr,を使用してディクショナリ名前空間で実行されますuidids

    5. トリガー: これを使用して、ワークフローの遷移をトリガーできます。設定する必要があるオプションは次のとおりです。ワークフロー モデル: ワークフローをトリガーするターゲット オブジェクト。「トリガーオン」フィールドには、ターゲット モデル レコードの ID が必要です。たとえば、請求書の変更をトリガーする場合は、請求書の ID を取得します。「トリガー名」は、遷移を開始するために使用する必要がある信号です。ドロップダウンには、考えられるすべてのトリガーが一覧表示されます。注:トリガー名リストには、モデルからのすべての可能な遷移も表示されるため、正しいトリガーを選択してください。モデルは括弧内に示されています。

    6. メール: メールアドレス、件名、メッセージを設定します。これには、Open ERP building smtpserver を構成する必要があります。Open ERP の一般的な電子メール アーキテクチャである Power email は、より多くの機能と自動化された電子メールを提供するため、電子メール送信に使用できます (サーバー アクションをいじる必要はありません)。http://launchpad.net/poweremailで入手でき、http: //launchpad.net/poweremail/+downloadでダウンロードできます。

    7. SMS: 携帯電話番号を選択してください。例:[[ object.shipping_address.mobile ]]および件名。

    8. オブジェクトの作成: これは、サーバー アクションがトリガーされたときに、任意のモデルで新しいレコードを作成するために使用されます。説明した履歴機能は、これを使用して実装できます。フィールド マッピングは、レコード内のフィールドに値を与えるために使用されます

この例を見てみましょう

<record id="ir_actions_server_timsheet_sheet" model="ir.actions.server">
            <field name="sequence" eval="5"/>
            <field name="state">code</field>
            <field name="type">ir.actions.server</field>
            <field name="model_id" ref="model_hr_timesheet_current_open"/>
            <field name="code">action = pool.get('hr.timesheet.current.open').open_timesheet(cr, uid, None, context)</field>
            <field name="condition">True</field>
            <field name="name">My Timesheet</field>
        </record>

これは、このmodel_hr_timesheet_current_openアクションが実行されたオブジェクトの参照です。あなたの場合、<field name="model_id" eval="Selling"/>model_id は販売されていませんが、これが実行されたオブジェクトの参照です。

于 2013-06-25T06:36:39.290 に答える