2014-04-23 1 views
2

구매 주문 클래스를 두 가지 유형으로 상속해야합니다. 하나는 으로 만 판매되는 제품의 구매 주문이며 다른 하나는 으로 구입할 수있는 제품의 구매 주문입니다.openerp에서 클래스를 여러 번 상속하는 방법은 무엇입니까?

코어 purchase.order 개체를 두 개의 새로운 사용자 지정 개체로 상속하려고했습니다. 그러나 그것은 작동하지 않습니다.

내 코드가

입니다
from osv import fields, osv 

class purchase_order_saleok(osv.osv): 

    _inherit = 'purchase.order' 
    _name = 'purchase.order.saleok' 

    STATE_SELECTION = [ 
    ('draft', 'Draft PO'), 
    ('pending', 'Pending'), 
    ('sent', 'RFQ Sent'), 
    ('confirmed', 'Waiting Approval'), 
    ('approved', 'Confirmed'), 
    ('except_picking', 'Shipping Exception'), 
    ('except_invoice', 'Invoice Exception'), 
    ('done', 'Ordered'), 
    ('cancel', 'Cancelled')] 

    _columns = { 
    'state': fields.selection(
     STATE_SELECTION, 
     'Status', 
     readonly=True, 
     help="The status of the purchase order or the quotation request. A quotation is a purchase order in a 'Draft' status. Then the order has to be confirmed by the user, the status switch to 'Confirmed'. Then the supplier must confirm the order to change the status to 'Approved'. When the purchase order is paid and received, the status becomes 'Done'. If a cancel action occurs in the invoice or in the reception of goods, the status becomes in exception.", 
     select=True 
    ) 
    } 

    purchase_order_saleok() 

    class purchase_order_line_saleok(osv.osv): 
    _inherit = 'purchase.order.line' 
    _name = 'purchase.order.line.saleok' 

    purchase_order_line_saleok() 

누군가가 나를 도울 수 있습니까?

+1

코드에서 작동하지 않는 항목은 무엇입니까? OpenERP가 데이터베이스에 purchase_order_saleok 테이블을 생성합니까? purchase_order 테이블과 동일합니까? –

+0

데이터베이스에 테이블이 없습니다. – samaswin

+0

내 서버 (6.1)에서 제대로 작동합니다. 그것은'purchase_order_saleok' 테이블을 만들었지 만 하나 이상의 컬럼을 추가 할 때 두번째 테이블이 생성 될 것입니다. 파일을'__init __. py' 파일에 추가 했습니까? 서버와 업데이트 된 모듈을 다시 시작 했습니까? –

답변

1

데이터베이스에 테이블을 추가하려면 서버와 모듈을 다시 시작해야합니다 (Lukasz Puchala가 말했듯이). 코드에서 새 테이블을 만들어야합니다.

하지만 난, 왜 을 판매 할 수있는 것보다 제품에 대한 sale.order 를 사용하지 않는 첫 번째 필요성을 이해하지 않으며, 할 수있는 제품에 대한 purchase.order를 구입?

단지 정보 :

당신의 purchase.order.saleok가 첫 을 유지하기 때문에 당신은 (그것을, 그것을 사용하지 않을 것 같은) purchase.order.line.saleok를 만들 필요가 없습니다 _fields 정의이고, 표준 purchase.order.line을 만들고 너는 purchase.order.line.saleok이 아닙니다. (order.line, one2many 필드를 재정의하지 않으면 purchase.order.line과 관련되지 않습니다. saleok).

+0

Thanks Nonow Dev. 사실 나는 판매 가능한 제품과 구매 가능한 제품을 분리해야합니다. 사용자별로 별도의 화면으로 보여 드리겠습니다. 그러나 나는 그 문제를 해결했다. 상속 된 모듈을 만들고 구매 모듈을 업데이트했습니다. – samaswin