Odoo Menambahkan Attachment Pada Sebuah Record

Dalam sebuah record data, adakalanya kita membutuhkan berkas (attachment) yang berisi informasi tambahan pada record data tersebut.

Suatu misal, saat kita melakukan rekrutmen karyawan, biasanya terdapat dokument data riwayat hidup, ijazah, transkrip nilai dan lain-lain. Untuk menyimpannya kita bisa mengubah dokumen tersebut menjadi sebuah dokumen digital berformat pdf, dan kemudian mengunggah (upload) dokumen tersebut ke dalam record data karyawan.

Sekarang kita akan melakukan percobaan untuk membuat berkas (attachment) pada aplikasi Odoo kita. Langkah – langkahnya adalah:

Install modul ‘document’.

Modul ‘document’ adalah modul yang akan digunakan untuk penyimpanan berkas (attachment) pada Odoo.

Install modul ‘hr’.

Odoo employee
Odoo employee

Modul ‘hr’ adalah modul manajemen / pengaturan karyawan pada Odoo.

Setelah meng-install kedua modul diatas, sekarang coba lihat tampilan yang ada pada menu ‘Employees’. Pilih salah satu ‘employee’ (jika tidak ada record maka anda bisa menambahkan record terlebih dahulu), maka akan ada sebuah ‘dropdown attachment’. Dropdown itulah yang digunakan untuk mengunggah (upload) berkas – berkas karyawan.

Saya akan mencoba mengunggah sebuah file berekstensi gif pada record tersebut.

Setelah proses unggah berhasil maka terdapat keterangan bahwa ada berkas (attachment) pada record tersebut.

Dalam penambahan fitur unggah berkas (attachment), sebenarnya langkah – langkah diatas sudah cukup. Karena hanya dengan meng-install modul ‘document’ maka setiap record dari sebuah model akan dapat kita tambahkan berkas.

Berkas yang kita unggah bisa dalam bermacam – macam ekstensi. Baik pdf, gambar, docx, odt, dan lain-lain.

Menambahkan tautan (link) ke berkas (attachment).

Untuk menambahkan tautan ke berkas dan agar UI dan UX aplikasi semakin bagus, maka kita bisa melakukan langkah – langkah berikut:

  • Buat suatu model yang meng-inherit dari model ‘hr.employee’.
from odoo import models, fields, api

class HrEmployeeInherit(models.Model):
	_inherit = 'hr.employee'

	# buat field count_attachment, untuk menampilkan jumlah berkas yang ada.
	count_attachment = fields.Integer(compute='_compute_attachment', string="Berkas")

	@api.multi
	def _compute_attachment(self):
		for employee in self:
			employee.count_attachment = self.env['ir.attachment'].search_count([
				('res_model', '=', employee._name),
				('res_id', '=', employee.id),
			])

	@api.multi
	def action_view_employee_attachment(self):
		"""
		Sebuah action untuk sebuah button,
		yang digunakan untuk menampilkan daftar berkas yang diunggah
		"""
		return {
			'name': 'Attachment',
			'domain': [('res_model', '=', self._name), ('res_id', '=', self.id)],
			'res_model': 'ir.attachment',
			'type': 'ir.actions.act_window',
			'view_mode': 'kanban,tree,form',
			'view_type': 'form',
			'limit': 80,
			'context': {
				'default_res_model': self._name,
				'default_res_id': self.id,
			}
		}
  • Buat sebuah view yang meng-inherit view ‘hr.employee’ bawaan dari Odoo.
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
	<data>
		<record model="ir.ui.view" id="view_employee_form_inherit">
			<field name="name">hr.employee.form.inherit</field>
			<field name="model">hr.employee</field>
			<field name="inherit_id" ref="hr.view_employee_form"/>
			<field name="arch" type="xml">
				<xpath expr="//div[@name='button_box']" position="inside">
					<button class="oe_stat_button" type="object" name="action_view_employee_attachment" icon="fa-file">
						<field name="count_attachment" widget="statinfo"/>
					</button>
				</xpath>
			</field>
		</record>
	</data>
</odoo>

Hasil dari kustomisasi diatas dapat dilihat pada gambar dibawah ini.

Terdapat tombol yang juga berisi infomasi jumlah berkas yang diunggah. Jika di-klik tombol tersebut maka akan mengarah ke sebuah action untuk menampilkan daftar berkas dalam mode kanban, tree dan form.

Untuk referensi kodingan diatas, bisa dicek di github saya.

Sekian tutorial dari saya. Selamat mencoba. Semoga bermanfaat.

Comments