2017-04-24 4 views
2

V10에서 어떻게 자동 시퀀스 번호 생성을 제어 할 수 있습니까? 예를 들어 Employee Id를 취하면 Employee Id를 만들면 EMP-0001과 같은 시퀀스가 ​​생성됩니다. 저장하지 않고 폐기했다고 가정합니다. 다음에 우리가 새로운 Employee Id를 만들 때 우리가 얻는 순서는 EMP-0002입니다. 이것을 방지하는 방법? odoo에서 답을주세요. 10Odoo python 프로그래밍 언어

+3

제목에 질문이 반영되지 않았습니다. 제발 그것을 편집하고 그것을 더 잘 설명하십시오. – Chris

답변

0

다른 매개 변수는 시퀀스를 만들지 않아야합니다. 다른 버튼을 클릭하면 시스템이 순차적으로 실행됩니다.

작성 방법에 시퀀스 논리를 써야합니다.

예 : 당신이 그것을 판매 할 때

@api.model 
def create(self, vals): 
    if vals.get('name', 'New') == 'New': 
     vals['name'] = self.env['ir.sequence'].next_by_code('sale.order') or 'New' 
    return super(sale_order,self).create(vals) 

위의 예제 시스템에서 순서를 읽습니다.

판매 주문 기본 모듈에서 동일한 참조를 찾을 수 있습니다.

이 정보는 도움이됩니다.

+0

이 메서드는 오류를 반환합니다. create 메소드는 필드에서 메소드를 호출하는 두 개의 arguments.how 만 사용합니다. – BHANUPRATAPSINGH

+0

여기에 코드를 쓸 수 있습니까? –

+0

@ api.model vals.get ('barcode', 'New') == 'New': vals [ 'barcode'] = self.env [ 'ir.sequence '] .next_by_code ('emp.code ') 또는'New ' super (HrEmployee, self) .create (vals) – BHANUPRATAPSINGH

0

먼저 아래의 직원 ID 필드를 삽입해야합니다!

name = fields.Char(string="Employee ID", Index= True, default=lambda self:('New'), readonly=True) 

다음으로보기 폴더에 ir_sequence.xml이라는 파일을 만들어야합니다. 아래 코드와 같이 코드를 작성하십시오. 그것은 끝났어

@api.model 
    def create(self, vals): 
     if vals.get('name', _('New')) == _('New'): 
      if 'company_id' in vals: 
       vals['name'] = self.env['ir.sequence'].with_context(force_company=vals['company_id']).next_by_code('[CLASS_NAME]') or _('New') 
      else: 
       vals['name'] = self.env['ir.sequence'].next_by_code('[CLASS_NAME]') or _('New')  
     result = super([CLASS_NAME], self).create(vals) 
     return result 

:

<odoo> 
    <data> 
    <record id="seq_bi_ticket" model="ir.sequence"> 
      <field name="name"> [NAME] </field> 
      <field name="code">[class_name]</field> 
      <field name="prefix"> EMP </field> 
      <field name="padding"> 5 </field> 
      <!-- The length of the number you need is 5 --> 
      <field name="company_id" eval="False"/> 
     </record> 
    </data> 
</odoo> 

또한 내가 above.The 기능 코드는 여기 아래 인 것을 필드와 함께 메인 클래스 내부의 함수를 작성해야합니다. 따라서 당신은 간다 !!!