summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorFIN-IT_AndriFP <it@fixcomart.co.id>2025-10-20 10:26:32 +0700
committerFIN-IT_AndriFP <it@fixcomart.co.id>2025-10-20 10:26:32 +0700
commit06e514d5287d2a316787e80648a06b2d92dc0d47 (patch)
treefde84b427a10471ecab4272c45e28cdf4737ea9b /indoteknik_custom/models
parenta4363a5468a5a9d6a3815cb8ae304fe1da3aef30 (diff)
(andri) grandtotal reimburse
Diffstat (limited to 'indoteknik_custom/models')
-rw-r--r--indoteknik_custom/models/advance_payment_request.py40
1 files changed, 26 insertions, 14 deletions
diff --git a/indoteknik_custom/models/advance_payment_request.py b/indoteknik_custom/models/advance_payment_request.py
index ad97755a..56d4d24d 100644
--- a/indoteknik_custom/models/advance_payment_request.py
+++ b/indoteknik_custom/models/advance_payment_request.py
@@ -141,9 +141,10 @@ class AdvancePaymentRequest(models.Model):
compute='_compute_settlement_name'
)
- total_reimburse = fields.Monetary(
+ grand_total_reimburse = fields.Monetary(
string='Total Reimburse',
- compute='_compute_total_reimburse'
+ compute='_compute_grand_total_reimburse',
+ currency_field='currency_id'
)
is_current_user_ap = fields.Boolean(
@@ -158,9 +159,9 @@ class AdvancePaymentRequest(models.Model):
line.is_current_user_ap = is_ap
@api.depends('reimburse_line_ids.total')
- def _compute_total_reimburse(self):
+ def _compute_grand_total_reimburse(self):
for request in self:
- request.total_reimburse = sum(request.reimburse_line_ids.mapped('total'))
+ request.grand_total_reimburse = sum(request.reimburse_line_ids.mapped('total'))
def action_open_create_reimburse_cab(self):
self.ensure_one()
@@ -799,10 +800,12 @@ class ReimburseLine(models.Model):
domain="[('id', 'in', [484, 486, 527, 529, 530, 471, 473, 492, 493, 488, 625, 528, 533, 534])]"
)
description = fields.Char(string='Description', required=True, tracking=3)
- distance = fields.Float(string='Jarak (km)', tracking=3)
+ distance_departure = fields.Float(string='Pergi (Km)', tracking=3)
+ distance_return = fields.Float(string='Pulang (Km)', tracking=3)
quantity = fields.Float(string='Quantity', tracking=3)
price = fields.Float(string='Price', tracking=3)
- total = fields.Float(string='Total', tracking=3)
+ total = fields.Float(string='Total', tracking=3, compute='_compute_total')
+ # total = fields.Float(string='Total', tracking=3)
currency_id = fields.Many2one(related='request_id.currency_id')
is_vehicle = fields.Boolean(string='Berkendara?')
@@ -834,25 +837,34 @@ class ReimburseLine(models.Model):
for line in self:
line.is_current_user_ap = is_ap
+ @api.depends('quantity', 'price', 'is_vehicle')
+ def _compute_total(self):
+ for line in self:
+ line.total = line.quantity * line.price
- @api.onchange('is_vehicle', 'vehicle_type', 'distance')
+ @api.onchange('is_vehicle', 'vehicle_type', 'distance_departure', 'distance_return')
def _onchange_vehicle_data(self):
if not self.is_vehicle:
self.vehicle_type = False
- self.distance = 0
+ self.distance_departure = 0
+ self.distance_return = 0
self.price = 0
return
+
+ total_distance = self.distance_departure + self.distance_return
- if self.vehicle_type and self.distance > 0:
+ if self.vehicle_type and total_distance > 0:
biaya_per_km = 0
if self.vehicle_type == 'car':
biaya_per_km = 1000 # Rp 10.000 / 10 km
+ self.price = biaya_per_km
elif self.vehicle_type == 'motor':
biaya_per_km = 500 # Rp 10.000 / 20 km
- self.price = self.distance * biaya_per_km
- self.quantity = self.distance
+ self.price = biaya_per_km
+ self.total = total_distance * biaya_per_km
+ self.quantity = total_distance
else:
- self.price = 0
+ self.total = 0
class AdvancePaymentSettlement(models.Model):
_name = 'advance.payment.settlement'
@@ -1218,7 +1230,7 @@ class AdvancePaymentSettlement(models.Model):
# Cek sisa PUM
if rec.remaining_value < 0:
raise ValidationError(
- "Sisa uang PUM tidak boleh kurang dari 0.\n"
+ "Sisa uang PUM tidak boleh kurang dari Rp 0.\n"
"Jika ada penggunaan uang pribadi, maka ajukan dengan sistem reimburse."
)
@@ -1317,7 +1329,7 @@ class CreateReimburseCabWizard(models.TransientModel):
# Field untuk menampilkan total agar pengguna bisa konfirmasi
total_reimburse = fields.Monetary(
string='Total Reimburse',
- related='request_id.total_reimburse',
+ related='request_id.grand_total_reimburse',
readonly=True
)
currency_id = fields.Many2one(related='request_id.currency_id', readonly=True)