diff options
| author | FIN-IT_AndriFP <it@fixcomart.co.id> | 2025-10-10 14:01:49 +0700 |
|---|---|---|
| committer | FIN-IT_AndriFP <it@fixcomart.co.id> | 2025-10-10 14:01:49 +0700 |
| commit | 99896ae7999de433837faed09466c06845493770 (patch) | |
| tree | 124ccc8c9f8b521d10978a7d1b31dd097944b542 | |
| parent | ede22cbc80eed8b142457fe9779dcd61374f5c93 (diff) | |
(andri) add reimburse line
| -rw-r--r-- | indoteknik_custom/models/advance_payment_request.py | 31 | ||||
| -rwxr-xr-x | indoteknik_custom/security/ir.model.access.csv | 1 | ||||
| -rw-r--r-- | indoteknik_custom/views/advance_payment_request.xml | 36 |
3 files changed, 63 insertions, 5 deletions
diff --git a/indoteknik_custom/models/advance_payment_request.py b/indoteknik_custom/models/advance_payment_request.py index 578829f2..412afa7a 100644 --- a/indoteknik_custom/models/advance_payment_request.py +++ b/indoteknik_custom/models/advance_payment_request.py @@ -133,6 +133,7 @@ class AdvancePaymentRequest(models.Model): ]) apr_perjalanan = fields.Boolean(string = "PUM Perjalanan?", default = False) + reimburse_line_ids = fields.One2many('reimburse.line', 'request_id', string='Rincian Reimburse') @api.onchange('nominal') def _onchange_nominal_no_minus(self): @@ -315,6 +316,11 @@ class AdvancePaymentRequest(models.Model): def _get_departement_approver(self): mapping = self._get_approver_mapping() return mapping.get(self.departement_type) + + @api.constrains('apr_perjalanan', 'date_back_to_office') + def _check_date_back_to_office(self): + if self.apr_perjalanan and not self.date_back_to_office: + raise ValidationError("Tanggal Kembali ke Kantor wajib diisi jika PUM Perjalanan dicentang.") @api.onchange('applicant_name') def _onchange_applicant_name_set_position(self): @@ -723,6 +729,31 @@ class AdvancePaymentUsageLine(models.Model): } } +class ReimburseLine(models.Model): + _name = 'reimburse.line' + _description = 'Reimburse Line' + + request_id = fields.Many2one('advance.payment.request', string='Request') + date = fields.Date(string='Tanggal', required=True, default=fields.Date.today) + account_id = fields.Many2one( + 'account.account', + string='Jenis Biaya', + required=True, + domain="[('id', 'in', [484, 486, 527, 529, 530, 471, 473, 492, 493, 488, 625, 528, 533, 534])]" + ) + description = fields.Char(string='Description', required=True) + distance = fields.Float(string='Jarak (km)') + quantity = fields.Float(string='Quantity') + price = fields.Float(string='Price') + total = fields.Float(string='Total') + currency_id = fields.Many2one(related='request_id.currency_id') + + is_vehicle = fields.Boolean(string='Berkendara?') + vehicle_type = fields.Selection([ + ('motor', 'Motor'), + ('car', 'Mobil'), + ], string='Tipe Kendaraan') + class AdvancePaymentSettlement(models.Model): _name = 'advance.payment.settlement' _description = 'Advance Payment Settlement' diff --git a/indoteknik_custom/security/ir.model.access.csv b/indoteknik_custom/security/ir.model.access.csv index b30b898b..7ca1f38c 100755 --- a/indoteknik_custom/security/ir.model.access.csv +++ b/indoteknik_custom/security/ir.model.access.csv @@ -188,6 +188,7 @@ access_change_date_planned_wizard,access.change.date.planned.wizard,model_change access_refund_sale_order,access.refund.sale.order,model_refund_sale_order,base.group_user,1,1,1,1 access_refund_sale_order_line,access.refund.sale.order.line,model_refund_sale_order_line,base.group_user,1,1,1,1 access_advance_payment_request,access.advance.payment.request,model_advance_payment_request,,1,1,1,1 +access_reimburse_line,access.reimburse.line,model_reimburse_line,,1,1,1,1 access_advance_payment_settlement,access.advance.payment.settlement,model_advance_payment_settlement,,1,1,1,1 access_advance_payment_settlement_line,access.advance.payment.settlement.line,model_advance_payment_settlement_line,,1,1,1,1 access_advance_payment_usage_line,access.advance.payment.usage.line,model_advance_payment_usage_line,,1,1,1,1 diff --git a/indoteknik_custom/views/advance_payment_request.xml b/indoteknik_custom/views/advance_payment_request.xml index 134ec9bf..0e8c130b 100644 --- a/indoteknik_custom/views/advance_payment_request.xml +++ b/indoteknik_custom/views/advance_payment_request.xml @@ -103,12 +103,38 @@ style="max-width:250px; max-height:250px; object-fit:contain;"/> <br/> </group> - <notebook attrs="{'invisible': [('type_request', '!=', 'reimburse')]}"> - <page string="Reimburse"> - <h1>Hello World HEHE</h1> - </page> - </notebook> </group> + <notebook attrs="{'invisible': [('type_request', '!=', 'reimburse')]}"> + <page string="Reimburse"> + <field name="reimburse_line_ids"> + <tree> + <field name="date"/> + <field name="account_id"/> + <field name="description"/> + <!-- <field name="distance"/> --> + <field name="quantity"/> + <field name="price"/> + <field name="total" sum="Total"/> + <field name="currency_id" invisible="1"/> + </tree> + <form> + <group> + <field name="request_id" invisible="1"/> + <field name="account_id" placeholder="Hanya Finance yang boleh isi"/> + <field name="date"/> + <field name="is_vehicle"/> + <field name="vehicle_type" attrs="{'invisible': [('is_vehicle', '=', False)]}"/> + <field name="description"/> + <field name="distance" attrs="{'invisible': [('is_vehicle', '=', False)]}"/> + <field name="quantity"/> + <field name="price"/> + <field name="total" readonly="1"/> + <field name="currency_id" invisible="1"/> + </group> + </form> + </field> + </page> + </notebook> </sheet> <div class="oe_chatter"> <field name="message_follower_ids" widget="mail_followers"/> |
