V10에서 어떻게 자동 시퀀스 번호 생성을 제어 할 수 있습니까? 예를 들어 Employee Id를 취하면 Employee Id를 만들면 EMP-0001과 같은 시퀀스가 생성됩니다. 저장하지 않고 폐기했다고 가정합니다. 다음에 우리가 새로운 Employee Id를 만들 때 우리가 얻는 순서는 EMP-0002입니다. 이것을 방지하는 방법? odoo에서 답을주세요. 10Odoo python 프로그래밍 언어
답변
다른 매개 변수는 시퀀스를 만들지 않아야합니다. 다른 버튼을 클릭하면 시스템이 순차적으로 실행됩니다.
작성 방법에 시퀀스 논리를 써야합니다.
예 : 당신이 그것을 판매 할 때
@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)
위의 예제 시스템에서 순서를 읽습니다.
판매 주문 기본 모듈에서 동일한 참조를 찾을 수 있습니다.
이 정보는 도움이됩니다.
이 메서드는 오류를 반환합니다. create 메소드는 필드에서 메소드를 호출하는 두 개의 arguments.how 만 사용합니다. – BHANUPRATAPSINGH
여기에 코드를 쓸 수 있습니까? –
@ 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
먼저 아래의 직원 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 기능 코드는 여기 아래 인 것을 필드와 함께 메인 클래스 내부의 함수를 작성해야합니다. 따라서 당신은 간다 !!!
제목에 질문이 반영되지 않았습니다. 제발 그것을 편집하고 그것을 더 잘 설명하십시오. – Chris