2017-03-01 5 views
0

나는 모듈 fleet에서 stock.location에서 fleet.vehicle 모델에 상속이 방법이 있습니다, 이것은 내보기는자동으로 stock.location 만들기 - Odoo v9의 커뮤니티

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

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

그래서,이 모델 stock.locationfleet.vehicle 모델로 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 양식에서 하나의 위치를 ​​만들도록 요청되었습니다.

보시다시피 모델과 필드를 추가하여 위치를 추가했지만 이미 새 차량을 저장할 때마다이 위치를 만들 수 있습니까?

예를 들어, 나는 다음과 같은 예를 들어, 기본 위치, 소스 및 대상 사람을 선언하는 방법을 알고, 차량 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

자동차 이름을 기반으로 새로운 stock.location을 생성해야합니다. 그러나 나는 왜 당신이 예제에서 데이터 파일을 사용했는지 혼란 스럽습니다.

해야 할 일 : fleet.vehicle 이름이 이미있는 stock.location을 검색하십시오. 검색이 성공한 경우 location_id을 설정하십시오. 새로 작성하지 않을 경우 stock.location을 입력하고 location_id에 지정하십시오. 나는 여기에서 문제를 보지 못한다. 왜 너는 스스로 할 수 없는가?

시스템 작동 방식을 알지 못해서 코드를 제공 할 수 없습니다. 하지만 location_idonchange 방법이 필요합니다. 이름이 설정되어 있다면 stock.location을 검색하거나 새로운 것을 생성하고 지정할 수 있습니다.

+0

안녕하세요, 죄송합니다. 예를 들었습니다. 그래, 그런 식으로 필요한 것이지만, v9 API에 접근하는 방법을 모르겠습니다. 몇 가지 예를 들어 주시겠습니까? – NeoVe

+1

혼자서 글을 쓸 수있을 것입니다. 'self.env ['stock. 'location.location']. create ({ 'name': self.car_name})'이것은 생성 위치에 대한 것이지만 그 전에는'@ api.onchange ('car_name')' self.env [ 'stock.location']. search ([('name', '=', self.car_name]))'검색해야합니다. 그 아주 사소한 생각 –