2017-11-10 9 views
1

나는이 방법을 가지고있다.만들기 stock.picking Odoo의 V8

나는 picking_type_id.id으로 시도했지만 정상적인 addons의 모든 예제에서 작동하지 않는 것 같습니다. 단지 picking_type_id을 참조하십시오. 또한 내 모델에는 정의 된 것이 없지만 하나만 전달할 수는 있습니다. 사용할 수있는 유형은 outgoing (필요한 항목)입니다.

그래서
Integrity Error 

The operation cannot be completed, probably due to the following: 
- deletion: you may be trying to delete a record while other records still reference it 
- creation/update: a mandatory field is not correctly set 

[object with reference: picking_type_id - picking.type.id] 

, 어떻게 필요하지 않은 경우에도, 나는의 stock.picking에이 picking_type_id를 전달할 수 있습니다 내 모델이 필드를 정의해야합니다

는 지금, 그것은 나에게이 발생? 그렇지만 stock.picking 모델이 필요합니다.

답변

4

필드 picking_type_idstock.picking 모델에 필수이며, 대신, 당신은 필드 아니다 picking_type_id.id에 대한 값을 지정하는의 create 방법을 지정하지 (그리고 Odoo 당신이이 사실을 알고 leting되지 않음) . 재고 선택 유형 오브젝트의 ID를 찾아 create 메소드로 전달해야합니다. 발신 유형을 원할 경우이 코드로 유형을 선택하십시오. 여러웨어 하우스가있는 경우 검색 방법은 여러 레코드를 반환해야하므로 첫 번째 레코드를 가져옵니다. 그러나 다른 것을 원하면 더 많은 매개 변수를 search 메서드에 전달해야합니다. 그럼 다음을 시도하십시오 :

@api.multi 
def create_printy(self): 
    copy_record = self.env['stock.picking'] # now you call the method directly 
    for record in self: 
     order_lines = [] 
     for rec in record.order_lines: 
      order_lines.append(
      (0,0, 
      { 
       'product_id': rec.isbn.id, 
       'product_qty': rec.qty, 
       } 
      )) 

     sp_types = self.env['stock.picking.type'].search([ 
      ('code', '=', 'outgoing') 
     ]) 
     if len(sp_types) > 0: 
      copy_record.create({ 
       'origin': order.name, 
       'picking_type_id': sp_types[0].id, 
       'move_lines': order_lines, 
       'move_type': 'direct', 
       'priority': '1', 
       'company_id': record.company_id.id, 
      }) 
+0

킥 엉덩이, 대단히 감사합니다! 나는 의심의 여지가 있지만 새로운 질문을 열 것이다. – NeoVe