2017-03-01 8 views
0

私はモジュールfleetからfleet.vehicleモデルにstock.locationから継承するこの方法を持っている:自動的stock.locationを作成する - Odoo V9コミュニティ

class fleet_vehicle(models.Model): 
    _inherit = 'fleet.vehicle' 

    location_id = fields.Many2one("stock.location", string="Almacén Origen", store=True) 

だから、これはfleet.vehicleモデルにモデルstock.locationをgrings、これが私の見解です。

<record model='ir.ui.view' id='fleet_vehicle_form'> 
     <field name="name">fleet.vehicle.form</field> 
     <field name="model">fleet.vehicle</field> 
     <field name="inherit_id" ref='fleet.fleet_vehicle_form'/> 
     <field name="arch" type="xml"> 
      <xpath expr="//form/sheet/group" position="after"> 
       <group string="Almacén correspondiente" col="2"> 
       <field name="location_id"/> 
       </group> 
      </xpath> 
     </field> 
    </record> 

これまでのところ、fleet.vehicleフォームから新しい車両がデータベースに追加されるたびに1つの場所を作成するように求められました。

ご覧のとおり、モデルとフィールドを追加して場所を追加しましたが、新しい車両を保存するたびにどのようにこの場所を作成できますか?

例えば、私はこのように、たとえば、デフォルトの場所、送信元と送信先のものを宣言する方法を知って、車両Opel/Astraが、これは自動的に、システムにOpel/Astraと呼ばれる新しい場所を作成する必要があります作成します。

def _static_location(self): 
    return self.env.ref('fleet_stock.location_stock') 

:もちろん同様に、 dataフォルダ内のXMLファイルに宣言されている

x_location_dest_id = fields.Many2one('stock.location', string=u'Ubicacion Destino de Productos', required=True, 
            readonly=False, default=_static_location, 
            help="Location where the system will look for components.") 

は次にように、フィールドから関数を呼び出します

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
<data noupdate="1"> 
<record id="location_stock" model="stock.location"> 
    <field name="name">ReparacionUnidades</field> 
    <field name="location_id" ref="stock.stock_location_locations_virtual"/> 
    <field name="usage">production</field> 
    <field name="company_id"></field> 
</record> 
</data> 
</openerp> 

ここでは、すでに存在する場所ではなく、fleet.vehicle車の名前に応じて新しい動作を作成するにはどうすればよいですか?

答えて

2

私が推測するように、車の名前に基づいて新しい在庫。場所を作成する必要があります。 しかし、なぜ私はあなたの例でデータファイルを使用したのか混乱しています。

あなたがしなければならないこと:fleet.vehicleの名前を既に持っているstock.locationを検索してください。検索が成功した場合は、location_idと設定します。新規作成しない場合はstock.locationとし、location_idに割り当てます。私はここに問題は見当たりません、どうして自分でこれを行うことができないのですか?

私はあなたのシステムがどのように動作するのかわからないので、私はあなたにコードを与えることはできません。しかしlocation_idonchangeメソッドが必要です。名前が設定されている場合は、stock.locationを検索するか、新しいものを作成して割り当てることができます。

+0

こんにちは、申し訳ありませんが、私は必要なものですが、v9 APIにアプローチする方法がわかりません。いくつかの例を教えてください。 – NeoVe

+1

あなた自身で書くことができると確信しています。 'self.env ['stock.location']。create({'name':self.car_name})'これは作成元の位置ですが、前に '' @ api.onchange( 'car_name') 'あなたはそれを検索しなければなりません: 'self.env ['stock.location']。search([( 'name'、 '='、self.car_name)])'。私の思うにそれは非常に自明 –

関連する問題