PT Proweb Indonesia
The City Tower Level 12 Unit 1-N, Jakarta Pusat

Pembuatan Tampilan Kalender pada Kustomisasi Modul Odoo

Apr 7, 2026 | Odoo 17 Development

Kita mungkin membutuhkan tampilan kalender dalam menampilkan data dan informasi pada aplikasi Odoo yang kita kembangkan. Kita dapat membuat tampilan kalender sesuai dengan kebutuhan aplikasi kita.

Pembuatan tampilan calendar pada kustomisasi modul Odoo adalah seperti berikut ini

  1. Start SSH filesystem
  2. Model

    from odoo import api, fields, models, _
    
    class RoomCategory(models.Model):
        _name = 'hotel.room.category'
        _inherit = ['mail.thread','mail.activity.mixin']
        _description = 'Kategori Kamar'
    
        name = fields.Char('Kategori')
        description = fields.Text('Deskripsi')
        parent_id = fields.Many2one(
            'hotel.room.category',
            string='Parent Category',
            ondelete='restrict',
            index=True
        )
    
        child_ids = fields.One2many(
            'hotel.room.category', 'parent_id', 
            string = 'Child Categories'
        )
    
        
        hotel_room_ids = fields.One2many(
            'hotel.room', 'hotel_room_category_id',
            string= 'Kamar-kamar hotel'
        )
        
    
        related_hotel_room = fields.Integer(_compute='_compute_related_hotel_room')
        date_end = fields.Datetime(string='Ending Date', index=True,copy=False)
        date_assign = fields.Datetime(string='Assigning Date', copy=False)
    
        def _compute_related_hotel_room(self):
            for record in self:
                record.related_hotel_room = self.env['hotel.room'].search_count([
                    ('hotel_room_category_id','=',record.id)
                ])
    
        def action_open_related_hotel_room(self):
            related_hotel_room_ids = self.env['hotel.room'].search([
                ('hotel_room_category_id','=',self.id),
            ]).ids
            return {
                'type' : 'ir.actions.act_window',
                'name' : _('Hotel Room'),
                'res_model' : 'hotel.room',
                'view_type' : 'list',
                'view_mode' : 'list',
                'views' : [[False,'list'],[False,'form']],
                'domain' : [('id','in',related_hotel_room_ids)]    
            }
    
  3. View

    <?xml version="1.0" encoding="utf-8"?>
    <odoo>
        <!-- hotel.room.category form view -->
        <record id="hotel_room_category_view_form" model="ir.ui.view">
            <field name="name">Form Kategori Kamar</field>
            <field name="model">hotel.room.category</field>
            <field name="arch" type="xml">
                <form>
                    <sheet>
                        <div class="oe_button_box" name="button_box">
                            <button type="object" class="oe_stat_button" icon="fa-pencil-square-o" name="action_open_related_hotel_room" >
                                <div class="o_form_field o_stat_info">
                                    <span class="o_stat_value">
                                        <field name="related_hotel_room" />
                                    </span>
                                    <span class="o_stat_text">Hotel Room</span>
                                </div>
                            </button>
                        </div>
                        <div class="oe_title">
                            <h1>
                                <field name="name" />
                            </h1>
                        </div>
                        <group>
                            <group>
                                <field name="description" />                       
                            </group>
                            <group>
                                <field name="parent_id" />                       
                            </group>
                        </group>
                        <group>
                            <field name="child_ids" 
                                invisible="not parent_id"
                                required="parent_id"/>
                            <field name="hotel_room_ids">
                                <tree>
                                    <field name="name" />
                                    <field name="room_no" />
                                </tree>
                                <form>
                                    <sheet>
                                        <group>
                                            <field name="name" />
                                            <field name="room_no" />
                                        </group>
                                    </sheet>
                                </form>
                            </field>
                        </group>
                    </sheet>
                    <div class="oe_chatter">
                        <field name="message_follower_ids" widget="mail_followers"/>
                        <field name="message_ids" widget="mail_thread" />
                        <field name="activity_ids" widget="mail_activity" />
                    </div>
                </form>
            </field>
        </record>
    
        <!-- hotel.room.category kanban view -->
        <record id="hotel_room_category_view_kanban" model="ir.ui.view">
            <field name="name">Kanban Kategori Hotel</field>
            <field name="model">hotel.room.category</field>
            <field name="arch" type="xml">
                <kanban class="o_kanban_mobile" sample="1" default_group_by="parent_id">
                    <field name="name" />
                    <field name="description" />
                    <templates>
                        <t t-name="kanban-box">
                            <div t-attf-class="oe_kanban_global_click">
                                <div class="row mb4">
                                    <div class="col-6 o_kanban_record_headings">
                                        <strong>
                                            <span>
                                                <field name="name" />
                                            </span>
                                        </strong>
                                    </div>
                                    <div class="col-6 text-end">
                                        <strong><i role="img" title="description"/> <t t-esc="record.description.value"/> </strong>
                                    </div>
                                </div>
                                <div class="row">
                                    <div class="col-12">
                                        <span> <field name="parent_id" /> </span>
                                    </div>
                                </div>
                            </div>
                        </t>
                    </templates>
                    <!-- Add your fields here -->                
                </kanban>
            </field>
        </record>
    
        <!-- hotel.room.category calendar view -->
        <record id="hotel_room_category_view_calendar" model="ir.ui.view">
            <field name="name">Kategori Kamar Calendar</field>
            <field name="model">hotel.room.category</field>
            <field name="arch" type="xml">
                <calendar date_start="date_assign" date_stop="date_end" color="parent_id">
                    <!-- Add your fields here -->
                    <field name="name" />
                    <field name="parent_id" />                
                </calendar>
            </field>
        </record>
    
        <!-- hotel.room.category tree view -->
        <record id="hotel_room_category_view_tree" model="ir.ui.view">
            <field name="name">Daftar Kategori kamar</field>
            <field name="model">hotel.room.category</field>
            <field name="arch" type="xml">
                <tree>
                    <!-- Add your fields here -->
                    <field name="name" />
                    <field name="description" />          
                </tree>
            </field>
        </record>
    
        <!-- hotel.room.category action window -->
        <record id="hotel_room_category_action" model="ir.actions.act_window">
            <field name="name">Kategori Kamar Hotel</field>
            <field name="res_model">hotel.room.category</field>
            <field name="view_mode">tree,kanban,calendar,form</field>
        </record>
    
        <menuitem
            id="menu_custom_hotel_room"
            name="Hotel Room"
            web_icon="hotelku,static/description/icon.png"/>
    
            <menuitem
            id="menu_hotel_room_category"
            parent="menu_custom_hotel_room"
            action="hotel_room_category_action"
            sequence="20"/>
    
    </odoo>
    
    
  4. Memulai Odoo dengan upgrade modul

  5. Tampilan dengan view calendar

Kunjungi https://www.proweb.co.id/implementasi-odoo/ untuk menambah wawasan anda mengenai Odoo ERP.