วิธีแทนที่วิธีของวิซาร์ดใน odoo 12

ฉันกำลังพยายามแทนที่วิธีเดียวในคลาสของวิซาร์ดที่ถูกดำเนินการเมื่อผู้ใช้คลิกส่ง

account_consolidation_custom/wizard/CustomClass.py

class AccountConsolidationConsolidate(models.TransientModel):
    _name = 'account.consolidation.consolidate_custom'
    _inherit = 'account.consolidation.base'

    def get_account_balance(self, account, partner=False, newParam=False):
    ....my custom code...

account_consolidation_custom/__manifest_.py

{
    'name': "account_consolidation_custom",

    'summary': """""",

    'description': """
    """,

    'author': "My Company",
    'website': "http://www.yourcompany.com",

    'category': 'Uncategorized',
    'version': '0.1',

    'depends': ['base','account_consolidation'],

    # always loaded
    'data': [],
}

ชื่อของวิธีการเหมือนกับต้นฉบับทุกประการ แต่เมื่อฉันคลิกที่ปุ่มส่ง ดูเหมือนว่าจะไม่มีอะไรเกิดขึ้น ยังคงเรียกวิธีการจากโมดูลฐานแทนที่จะเป็นแบบกำหนดเอง

คุณรู้วิธีเขียนทับเมธอดเดียวแทนที่จะเป็นคลาสวิซาร์ดทั้งหมดหรือไม่?


person czuniga    schedule 14.01.2020    source แหล่งที่มา


คำตอบ (2)


คุณกำลังสร้างวิซาร์ด/โมเดลชั่วคราวใหม่เมื่อกำหนดค่าที่แตกต่างกันให้กับแอ็ตทริบิวต์ส่วนตัว _name และ _inherit คุณควรใช้ชื่อรุ่น odoo ดั้งเดิม account.consolidation.consolidate กับแอตทริบิวต์ทั้งสองแทน หรือเพียงแค่ลบแอตทริบิวต์ _name ออกทั้งหมด

Odoo มีกลไกการสืบทอดของตัวเอง ซึ่งได้รับการจัดการโดยแอตทริบิวต์คลาสสามคลาส _name, _inherit และ _inherits

person CZoellner    schedule 14.01.2020
comment
ขอบคุณสำหรับการตอบกลับ มันยังคงเหมือนเดิมหลังจากทำการเปลี่ยนแปลงเหล่านั้น วิธีการพื้นฐานยังคงได้รับการดำเนินการ ไม่ใช่แบบกำหนดเอง - person czuniga; 14.01.2020
comment
คุณมีไฟล์ __init__.py ทั้งหมดหรือไม่ - person CZoellner; 14.01.2020
comment
ใช่ ฉันมี __init__.py อยู่ในโฟลเดอร์ตัวช่วยสร้างพร้อมกับชื่อไฟล์ที่นำเข้า จากนั้นฉันก็เรียกตัวช่วยสร้าง from . import wizard บน __init__.py หลัก - person czuniga; 14.01.2020
comment
อืม โมเดลดั้งเดิมไม่ใช่ Transient แต่เป็น AbstractModel - person CZoellner; 14.01.2020
comment
อ่า และคุณต้องขยายโมเดลชั่วคราวที่สืบทอดมา account.consolidation.consolidate ฉันเปลี่ยนคำตอบแล้ว - person CZoellner; 14.01.2020
comment
ขอบคุณสำหรับการสนับสนุน ฉันสามารถทำให้มันใช้งานได้: class AccountConsolidationConsolidate(models.TransientModel): _inherit = 'account.consolidation.consolidate' ฉันขอขอบคุณสำหรับความช่วยเหลือของคุณ! - person czuniga; 14.01.2020

ฉันสามารถทำให้มันทำงานได้โดยใช้รหัสต่อไปนี้:

class AccountConsolidationConsolidate(models.TransientModel):
    _inherit = 'account.consolidation.consolidate'

   def get_account_balance(self, account, partner=False, newParam=False):
    ....my custom code...

หลังจากนั้นฉันก็สามารถเขียนทับวิธีการพื้นฐานได้

person czuniga    schedule 14.01.2020