2017-12-01 11 views
2

판매 주문의 이름 형식을 변경하는 방법을 알고 계십니까?SaleOrder의 이름 형식을 변경하는 방법은 무엇입니까? Odoo 10

# -*- coding: utf-8 -*- 
from datetime import datetime 
from odoo import models, fields, api, _ 

class SaleOrder(models.Model): 

    _inherit = 'sale.order' 

    name = fields.Char(string='Order Reference', required=True, copy=False, readonly=True, states={'draft': [('readonly', False)]}, index=True, default=lambda self: _('New'), compute='_assign_name') 
    project = fields.Char(string='Project Name') 

    qt_name = fields.Char(string='Quotaion Name', readonly=True, compute='get_qt_name') 
    so_name = fields.Char(string='Sale Order Name', readonly=True, compute='get_so_name') 
    so_number = fields.Integer(string='SO Number', readonly=True) 

    @api.one 
    def _assign_name(self): 
     if self.state != 'sale': 
      self.name = self.qt_name 
     else: 
      self.name = self.so_name 

    @api.one 
    def get_qt_name(self): 
     formated_date = datetime.strptime(self.create_date,'%Y-%m-%d %H:%M:%S').strftime('%Y%m') 
     self.qt_name = 'QT%s%04d' % (formated_date, self.id) 

    @api.one 
    def get_so_name(self): 
     if self.confirmation_date: 
      formated_date = datetime.strptime(self.confirmation_date,'%Y-%m-%d %H:%M:%S').strftime('%Y%m') 
      self.so_name = 'SO%s%04d' % (formated_date, self.so_number) 

    def action_confirm(self): 
     super(SaleOrder,self).action_confirm() 
     if not self.so_number: 
      self.update({'so_number': self.env['ir.sequence'].get('sale.order.number')}) 

    def should_draft(self, old_state, val): 
     return super(SaleOrder,self).should_draft(old_state,val) and 'so_number' not in val 

나는 이름이 누락 된 견적을 인쇄 할 때 작동하지 않습니다하지만 :

는 다음 코드를 사용해보십시오.

더 좋은 해결책이 있습니까?

감사합니다 ~!

+2

계산 방법'_assign_name'에'@ api.depends()'가 필요합니다 – ChesuCR

답변

2

@api.depends 데코레이터 사용, 아래 코드를 시도하십시오.

@api.one 
@api.depends('state') 
def _assign_name(self): 
    if self.state != 'sale': 
     self.name = self.qt_name 
    else: 
     self.name = self.so_name 

희망이 있으면 도움이 될 것입니다.

+0

Thnk! 효과가 있습니다! – ReiiYuki