diff options
| author | Mqdd <ahmadmiqdad27@gmail.com> | 2026-03-04 19:08:31 +0700 |
|---|---|---|
| committer | Mqdd <ahmadmiqdad27@gmail.com> | 2026-03-04 19:08:31 +0700 |
| commit | 672b682c602160de8e7ec77232b0a709c6ed2b87 (patch) | |
| tree | 62dad3b6f2ec6df4553b5cc10d0af44e2333bb5f | |
| parent | 3df3f47dd4998d9abb21bfbae5b0f4e78d560c72 (diff) | |
<Miqdad> compute
| -rwxr-xr-x | indoteknik_custom/models/res_users.py | 1 | ||||
| -rw-r--r-- | indoteknik_custom/models/upah_harian_office.py | 30 |
2 files changed, 29 insertions, 2 deletions
diff --git a/indoteknik_custom/models/res_users.py b/indoteknik_custom/models/res_users.py index b0864f2c..8f5b4008 100755 --- a/indoteknik_custom/models/res_users.py +++ b/indoteknik_custom/models/res_users.py @@ -12,6 +12,7 @@ class ResUsers(models.Model): otp_code = fields.Char(string='OTP Code') otp_create_date = fields.Datetime(string='OTP Create Date') payment_terms_id = fields.Many2one('account.payment.term', related='partner_id.property_payment_term_id', string='Payment Terms') + pic = fields.Boolean('PIC') def _generate_otp(self): diff --git a/indoteknik_custom/models/upah_harian_office.py b/indoteknik_custom/models/upah_harian_office.py index cc81530a..b2c12bd5 100644 --- a/indoteknik_custom/models/upah_harian_office.py +++ b/indoteknik_custom/models/upah_harian_office.py @@ -1,11 +1,11 @@ from odoo import models, fields, api +from odoo.exceptions import UserError, ValidationError class UpahHarianOffice(models.Model): _name = 'upah.harian.office' _description = 'Upah Harian Office' name = fields.Char() - upah_harian = fields.Float('Upah Harian', required=True) pemohon = fields.Many2one('res.users', String='Pemohon', required=True) tanggal = fields.Date('Tanggal Pengajuan', required=True) state = fields.Selection([('draft', 'Draft'), ('done', 'Done')], default='draft') @@ -24,20 +24,46 @@ class UpahHarianOffice(models.Model): ('hr_ga', 'HR & GA'), ('pimpinan', 'Pimpinan') ], string='Departement Type', tracking=3, required=True) + total_upah = fields.Float('Total Upah Harian', compute='_compute_total_upah') @api.models def create(self, vals): vals['name'] = self.env['ir.sequence'].next_by_code('upah.harian.office') return super(UpahHarianOffice, self).create(vals) + def action_approve(self): + if self.state == 'draft' and self.env.user.pic: + self.state = 'done' + self.approved_by = self.env.user.name + if not self.env.user.pic: + raise UserError("Only PIC user can approve this document.") + + self.state = 'done' + + def _compute_total_upah(self): + for line in self: + line.total_upah = sum(line.mapped('upah_harian_line').mapped('upah_harian')) + class UpahHarianOfficeLine(models.Model): _name = 'upah.harian.line' _description = 'Upah Harian Line' - name = fields.Char() upah_harian_id = fields.Many2one('upah.harian.office') + upah_harian= fields.Float('Upah Harian', required=True, compute='_compute_upah_harian') + hari = fields.Char('Hari') + jam_masuk = fields.Float('Jam Masuk', required=True) + jam_keluar = fields.Float('Jam Keluar', required=True) tanggal_line = fields.Datetime('Tanggal', required=True) kegiatan = fields.Char('Kegiatan', required=True) jam = fields.Float('Jam', required=True) + total_jam_kerja = fields.Float('Total Jam Kerja', compute='_compute_total_jam_kerja') + + def _compute_total_jam_kerja(self): + for line in self: + line.total_jam_kerja = line.jam + + def _compute_upah_harian(self): + for line in self: + line.upah_harian = line.jam |
