Memperluas Fungsi Bisnis pada Kustomisasi Odoo 17

Mar 25, 2025 | Odoo 17 Development

Membagi fungsional-fungsional suatu aplikasi ke dalam modul-modul yang kecil merupakan hal yang baik dilakukan untuk mempermudah pemeliharaan source code selama pembagian itu rapi.  Di sini kita akan memperluar fungasi dari model yang telah dibuat sebelumnya.

Memperluas fungsi bisnis pada kustomisasi Odoo 17 adalah seperti pada langkah-langkah berikut ini

  1. Start SSH file system

  2. Memperluas field dan method

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    from datetime import timedelta
    from email.policy import default
    from odoo import models, fields
     
    class AsramaRoom(models.Model):
        _inherit = 'asrama.room'
     
        date_terminate = fields.Date('Tanggal Terminate')
        category_id = fields.Many2one('asrama.category', string='Category')
     
        def make_closed(self):
            day_to_allocate = self.category_id.max_allow_days or 10
            self.date_terminate = fields.Date.today() + timedelta(days=day_to_allocate)
            return super(AsramaRoom,self).make_closed()
         
        def make_available(self):
            self.date_terminate = False
            return super(AsramaRoom,self).make_available()
     
    class AsramaCategory(models.Model):
        _inherit = 'asrama.category'
     
        max_allow_days = fields.Integer(
            'Naximum allows days',
            help='Berapa dalam hari kamar diberikan',
            default=10
        )
  3. Update models – init

    1
    2
    3
    4
    5
    6
    7
    8
    from . import hostel
    from . import asrama_room
    from . import asrama_student
    from . import asrama_student_copy
    from . import asrama_amenities
    from . import asrama_categ
    from . import res_partner
    from . import asrama_terminate
  4. View asrama_room

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    <?xml version='1.0' encoding='utf-8'?>
    <odoo>
        <!-- asrama.room tree view -->
        <record id="asrama_room_view_tree" model="ir.ui.view">
            <field name="name">asrama.room.view.tree</field>
            <field name="model">asrama.room</field>
            <field name="arch" type="xml">
                <tree string='Room'>
                    <field name="name"/>
                    <field name="room_no" />
                    <field name="floor_no" />
                </tree>
            </field>
        </record>
     
        <!-- asrama.room form view -->
        <record id="asrama_room_view_form" model="ir.ui.view">
            <field name="name">asrama.room.view.form</field>
            <field name="model">asrama.room</field>
            <field name="arch" type="xml">
                <form string="Room">
                    <sheet>
                        <header>
                            <field name="state" widget='statusbar'/>
                        </header>
                        <header>
                            <button name="make_available"  string="Make Available" type="object"/>
                            <button name="make_closed"  string="Make Closed" type="object"/>
                            <button name="log_all_room_members"  string="Log semua kamar members" type="object"/>
                        </header>
                        <header>
                            <button name="create_categories"  string="Create categories" type="object"/>
                            <button name="update_room_no"  string="Update Room No" type="object"/>
                            <button name="find_room"  string="Find Room" type="object"/>
                        </header>
                        <header>
                            <button name="filter_members"  string="Filter Members" type="object"/>
                            <button name="mapped_rooms"  string="Mapped Rooms" type="object"/>
                            <button name="sort_room"  string="Sort Room" type="object"/>
                        </header>
                        <group>
                            <group description='Kamar'>
                                <field name="name" />
                                <field name="room_no" />
                                <field name="hostel_id" required="1"/>
                                <field name="floor_no" />
                                <field name="active" />
                                <field name="category_id" />
                                <field name="date_terminate" />
                            </group>
                            <group description='Harga'>
                                <field name="student_per_room"/>
                                <field name="availability"/>
                                <field name="rent_amount" />
                                <field name="currency_id" />
                            </group>
                        </group>
                        <notebook>
                            <page name="room_studennt" string="Para Pelajar">
                                <field name="student_ids"/>
                            </page>
                            <page name="asrama_amenities" string="Room Amenities">
                                <group>
                                    <field name="asrama_amenities_ids" widget="many2many_tags"/>
                                </group>
                            </page>
                        </notebook>
                    </sheet>
                </form>
            </field>
        </record>
     
        <!-- asrama.room action window -->
        <record id="asrama_room_action" model="ir.actions.act_window">
            <field name="name">Room</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">asrama.room</field>
            <field name="view_mode">tree,form</field>
            <field name="domain">[]</field>
            <field name="context">{}</field>
            <field name="help" type="html">
                <p class="oe_view_nocontent_create">
                    Tambah kamar
                </p>
            </field>
        </record>
     
        <!-- This Menu Item must have a parent and an action -->
        <menuitem id="asrama_room_menu" name="Room Asrama" parent="hostel_main_menu" action="asrama_room_action" sequence="2"/>
    </odoo>
  5. Start Odoo dengan log file


  6. Klik Make Closed
  7. Tanggal terminate terisi otomatis

Kunjungi www.proweb.co.id/implementasi-odoo/ untuk menambah wawasan implementasi Odoo ERP.