2017-09-30 4 views
0

お客様は、単一フォームで複数のリードを管理できるように、私はOdooのCRMモジュールを変更したいと考えています。そのために私は親子関係を作りました。フォームビューはこのように見ているOdooの親から子にデータを複製する方法は?

#Parent save id of child. 
parent_id = fields.Many2one('crm.lead', string="Parent Lead", ondelete="cascade") 
# Child save id of parent. 
child_ids = fields.One2many('crm.lead', 'parent_id', string="Child Lead", ondelete="cascade") 

同じモデルでcrm.modelある両方:Form View

は今、私はそのようなコードを書きたいユーザーは、親にデータを入力するたびに、それはそれをリード子供のリードに自動的に記入されます。

はこれまでのところ、私は、次の試してみました:

  1. はのonchange関数を追加しますが、実行されているが、フィールドに私の子を更新しません。

    @api.onchange('child_ids','net_net_all') 
    def _update_values(self): 
    detail = [] 
    if not self.parent_id: 
        partner_probability = self.probability 
        self.balance = self.net_net_all 
        for record in self.child_ids: 
         self.balance -= record.net_net_child_all 
         detail.append((0,0,{ 
          'reference': self.reference, 
          'partner_id': self.partner_id, 
          'agency': self.agency, 
          'partner_contact': self.partner_contact, 
          'agency_contact': self.agency_contact, 
          'agent_commission': self.agent_commission, 
          'email_from': self.email_from, 
          'phone': self.phone, 
          'user_id': self.user_id, 
          'team_id': self.team_id, 
          'region': self.region, 
          'segement': self.segement, 
          'type_of_advertisement': self.type_of_advertisement, 
          'planned_revenue_all': record.net_net_child_all * partner_probability, 
          'planned_revenue': record.net_net_child * partner_probability, 
          })) 
        return {'value' : {'child_ids' : detail}} 
    
  2. を変更関数を作成したが、リードが変更されたときに、リードが作成されていないときにのみ影響します。また、適切に実行するために多くの時間を取る。

    if len(vals) == 1 and 'message_follower_ids' in vals.keys(): 
        for record in self.child_ids: 
         record.reference = self.reference 
         record.partner_id = self.partner_id 
         record.agency = self.agency 
         record.partner_contact = self.partner_contact 
         record.agency_contact = self.agency_contact 
         record.agent_commission = self.agent_commission 
         record.email_from = self.email_from 
         record.phone = self.phone 
         record.user_id = self.user_id 
         record.team_id = self.team_id 
         record.region = self.region 
         record.segement = self.segement 
         record.type_of_advertisement = self.type_of_advertisement 
    

仕事を周りに勧めてください。 ありがとうございます。

答えて

2

あなたのフィールドにrelated属性を使用してみませんか? Odooがあなたの検索を行います。

reference = fields.Char(related='parent_id.reference') 

詳細については、documentationを確認してください。

+0

私は同じモデル** crm.lead **を使用しており、同じフィールドにあるデータを親から子にコピーする必要があります。 例: 親IDのuser_idフィールドのデータは、child_idのuser_idフィールドにコピーする必要があります。 報告の目的で必要です。 – Vikas

+1

@Vikasに関連しています。 – travisw

+0

email_from = fields.Char( 'Email'、related = 'parent_id.email_from'、help = "顧客の担当者のメールアドレス"、index = True、track_visibility = "onchange"、store = True) RuntimeError: Pythonオブジェクトを呼び出すときに最大再帰深度を超えました – Vikas

関連する問題