Aassalamu’alaikum
wr
wb, biasanya dalam programming ERP timbul masalah pencarian umur,
data yang di perlukan adalah tanggal lahir lalu dari tanggal lahir
tersebut kita bisa menghitung umur seseorang. Namun bagaimana kalau
seseorang lupa tanggal lahirnya dan di form yang tertera wajib
mencantumkan tanggal lahir? Aneh bukan? tapi kasus dan requirement
seperti ini kadang ditemukan.
Solusinya
adalah dari data umur tersebut kita bisa mengambil tahun lahir orang
tersebut lalu tanggal dan bulannya dijadikan tanggal sekarang. Nah
untuk logic dan script akan saya jelaskan dibawah ini.
from dateutil.relativedelta import relativedelta
from datetime import datetime
ini adalah library yang dibutuhkan
tgl_lahir = fields.Date(string='Tanggal Lahir', readonly=False)
umur = fields.Char(string='Usia', readonly=False)
deskripsi_umur = fields.Char(readonly=True)
ini adalah field2 yang dibutuhkan
@api.onchange('umur')
def hitung_tgl_lahir(self):
if self.umur:
if not self.tgl_lahir:
tgl_lahir = (datetime.now() - relativedelta(years=int(self.umur)))
tgl_fix = datetime.strptime(str(tgl_lahir).split(".")[0], '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d')
self.tgl_lahir = tgl_fix
self.age = self.umur
self.umur = self.umur
lalu buat method onchange agar setiap kita isi field umur akan terjadi perubahan
tgl_lahir = (datetime.now() - relativedelta(years=int(self.umur)))
logikanya ada di baris ini. Kita mengurangkan tanggal sekarang dengan data yang ada di
field umur yang telah di konversi menjadi variabel tahun di dalam field type date dengan menggunakan relativedelta.