diff options
| author | FIN-IT_AndriFP <it@fixcomart.co.id> | 2025-10-20 11:19:03 +0700 |
|---|---|---|
| committer | FIN-IT_AndriFP <it@fixcomart.co.id> | 2025-10-20 11:19:03 +0700 |
| commit | 4777ebcb87e53b2460661019d70c08aea938dd21 (patch) | |
| tree | 5b925c7002fe1f8471a9ba18de98fd4d5558e7ff | |
| parent | 06e514d5287d2a316787e80648a06b2d92dc0d47 (diff) | |
(andri) fix create
| -rw-r--r-- | indoteknik_custom/models/advance_payment_request.py | 41 | ||||
| -rw-r--r-- | indoteknik_custom/views/advance_payment_request.xml | 4 |
2 files changed, 36 insertions, 9 deletions
diff --git a/indoteknik_custom/models/advance_payment_request.py b/indoteknik_custom/models/advance_payment_request.py index 56d4d24d..d1011e8e 100644 --- a/indoteknik_custom/models/advance_payment_request.py +++ b/indoteknik_custom/models/advance_payment_request.py @@ -664,8 +664,22 @@ class AdvancePaymentRequest(models.Model): } } + def _get_department_titles_mapping(self): + return { + 'sales': 'Sales Manager', + 'merchandiser': 'Merchandiser Manager', + 'marketing': 'Marketing Manager', + 'logistic': 'Logistic Manager', + 'procurement': 'Procurement Manager', + 'fat': 'Finance & Accounting Manager', + 'it': 'IT Manager', + 'hr_ga': 'HR & GA Manager', + } + @api.model def create(self, vals): + jakarta_tz = pytz.timezone('Asia/Jakarta') + now = datetime.now(jakarta_tz).replace(tzinfo=None) user = self.env.user pum_ids = self.search([ @@ -692,8 +706,21 @@ class AdvancePaymentRequest(models.Model): position = vals.get('position_type') if position == 'staff': initial_status = 'pengajuan1' - elif position in ('manager', 'pimpinan'): + elif position == 'manager': + initial_status = 'pengajuan2' + applicant_name = vals.get('applicant_name') + vals['name_approval_departement'] = self.env['res.users'].browse(applicant_name).name or '' + vals['date_approved_department'] = now + department_type = vals.get('departement_type') + department_titles = self._get_department_titles_mapping() + vals['position_department'] = department_titles.get(department_type, 'Departement Manager') + elif position == 'pimpinan': initial_status = 'pengajuan2' + applicant_name = vals.get('applicant_name') + vals['name_approval_pimpinan'] = self.env['res.users'].browse(applicant_name).name or '' + vals['position_pimpinan'] = 'Pimpinan' + vals['date_approved_pimpinan'] = now + vals['status'] = initial_status if not vals.get('number') or vals['number'] == 'New Draft': @@ -803,7 +830,7 @@ class ReimburseLine(models.Model): 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) + price_unit = fields.Float(string='Price', 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') @@ -837,10 +864,10 @@ class ReimburseLine(models.Model): for line in self: line.is_current_user_ap = is_ap - @api.depends('quantity', 'price', 'is_vehicle') + @api.depends('quantity', 'price_unit', 'is_vehicle') def _compute_total(self): for line in self: - line.total = line.quantity * line.price + line.total = line.quantity * line.price_unit @api.onchange('is_vehicle', 'vehicle_type', 'distance_departure', 'distance_return') def _onchange_vehicle_data(self): @@ -848,7 +875,7 @@ class ReimburseLine(models.Model): self.vehicle_type = False self.distance_departure = 0 self.distance_return = 0 - self.price = 0 + self.price_unit = 0 return total_distance = self.distance_departure + self.distance_return @@ -857,10 +884,10 @@ class ReimburseLine(models.Model): biaya_per_km = 0 if self.vehicle_type == 'car': biaya_per_km = 1000 # Rp 10.000 / 10 km - self.price = biaya_per_km + self.price_unit = biaya_per_km elif self.vehicle_type == 'motor': biaya_per_km = 500 # Rp 10.000 / 20 km - self.price = biaya_per_km + self.price_unit = biaya_per_km self.total = total_distance * biaya_per_km self.quantity = total_distance else: diff --git a/indoteknik_custom/views/advance_payment_request.xml b/indoteknik_custom/views/advance_payment_request.xml index b7db4e07..39f8f588 100644 --- a/indoteknik_custom/views/advance_payment_request.xml +++ b/indoteknik_custom/views/advance_payment_request.xml @@ -121,7 +121,7 @@ <field name="account_id"/> <!-- <field name="distance"/> --> <field name="quantity"/> - <field name="price"/> + <field name="price_unit"/> <field name="total" sum="Total"/> <field name="is_checked"/> <field name="currency_id" invisible="1"/> @@ -137,7 +137,7 @@ <field name="distance_departure" attrs="{'invisible': [('is_vehicle', '=', False)]}"/> <field name="distance_return" attrs="{'invisible': [('is_vehicle', '=', False)]}"/> <field name="quantity"/> - <field name="price" attrs="{'readonly': [('is_vehicle', '=', True)]}" force_save ="1"/> + <field name="price_unit" attrs="{'readonly': [('is_vehicle', '=', True)]}" force_save ="1"/> <field name="total" readonly="1"/> <field name="currency_id" invisible="1"/> <field name="attachment_type"/> |
