diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2024-12-03 13:22:55 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2024-12-03 13:22:55 +0700 |
| commit | cf6581d8a9ddfd5a7e3c1c2d7aa5aab8b96f4813 (patch) | |
| tree | 69bada29da6d7929c5342e27ea6413d459266026 /indoteknik_custom/models | |
| parent | 6fbfe31167e6eb66d4995374dadb14774026e8c7 (diff) | |
<iman> pengajuan tempo
Diffstat (limited to 'indoteknik_custom/models')
| -rw-r--r-- | indoteknik_custom/models/user_pengajuan_tempo.py | 2 | ||||
| -rw-r--r-- | indoteknik_custom/models/user_pengajuan_tempo_request.py | 156 |
2 files changed, 125 insertions, 33 deletions
diff --git a/indoteknik_custom/models/user_pengajuan_tempo.py b/indoteknik_custom/models/user_pengajuan_tempo.py index 006bbb55..b527fa4c 100644 --- a/indoteknik_custom/models/user_pengajuan_tempo.py +++ b/indoteknik_custom/models/user_pengajuan_tempo.py @@ -112,6 +112,8 @@ class UserPengajuanTempo(models.Model): display_name = "DETAIL FORM TEMPO" result.append((record.id, display_name)) return result + + # # def _compute_attachment_url(self): # if self.id: diff --git a/indoteknik_custom/models/user_pengajuan_tempo_request.py b/indoteknik_custom/models/user_pengajuan_tempo_request.py index b7526238..2d4875fb 100644 --- a/indoteknik_custom/models/user_pengajuan_tempo_request.py +++ b/indoteknik_custom/models/user_pengajuan_tempo_request.py @@ -1,7 +1,43 @@ -from odoo import models, fields, api +from odoo import models, fields, api, _ from odoo.exceptions import UserError from odoo.http import request +class RejectReasonWizard(models.TransientModel): + _name = 'reject.reason.wizard' + _description = 'Wizard for Reject Reason' + + request_id = fields.Many2one('user.pengajuan.tempo.request', string='Request') + reason_reject = fields.Text(string='Reason for Rejection', required=True) + + def confirm_reject(self): + tempo = self.request_id + if tempo: + tempo.write({'reason_reject': self.reason_reject}) + tempo.state_tempo = 'reject' + template = self.env.ref('indoteknik_custom.mail_template_res_user_company_tempo_reject') + template.send_mail(tempo.id, force_send=True) + return {'type': 'ir.actions.act_window_close'} +class ConfirmApprovalWizard(models.TransientModel): + _name = 'confirm.approval.wizard' + _description = 'Wizard Konfirmasi Approval' + + tempo_id = fields.Many2one('user.pengajuan.tempo.request', string='Tempo', required=True) + + def confirm_approval(self): + tempo = self.tempo_id + if tempo.state_tempo == 'draft': + tempo.state_tempo = 'approval_sales' + template = self.env.ref('indoteknik_custom.mail_template_res_user_company_tempo_approved_by_sales') + template.send_mail(tempo.id, force_send=True) + elif tempo.state_tempo == 'approval_sales': + tempo.state_tempo = 'approval_finance' + template = self.env.ref('indoteknik_custom.mail_template_res_user_company_tempo_to_aprove_director') + template.send_mail(tempo.id, force_send=True) + elif tempo.state_tempo == 'approval_finance': + tempo.state_tempo = 'approval_director' + + + class UserPengajuanTempoRequest(models.Model): _name = 'user.pengajuan.tempo.request' _inherit = ['mail.thread', 'mail.activity.mixin'] @@ -10,26 +46,28 @@ class UserPengajuanTempoRequest(models.Model): user_id = fields.Many2one('res.partner', string='User') user_company_id = fields.Many2one('res.partner', string='Company') pengajuan_tempo_id = fields.Many2one('user.pengajuan.tempo', string='Form Tempo') - tempo_duration = fields.Many2one('account.payment.term', string='Durasi Tempo') - tempo_limit = fields.Char(string='Limit Tempo') + tempo_duration = fields.Many2one('account.payment.term', string='Durasi Tempo', tracking=3, ) + tempo_limit = fields.Char(string='Limit Tempo', tracking=3) state_tempo = fields.Selection([ ('draft', 'Pengajuan Tempo'), ('approval_sales', 'Approved by Sales Manager'), ('approval_finance', 'Approved by Finance'), ('approval_director', 'Approved by Director'), + ('reject', 'Rejected'), ], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='draft') + reason_reject = fields.Char(string='Limit Tempo') @api.onchange('tempo_duration') - def _tempo_duration_change(self): + def _tempo_duration_change(self, vals): for tempo in self: if tempo.env.user.id not in (7, 377): raise UserError("Durasi tempo hanya bisa di ubah oleh Sales Manager atau Direktur") @api.onchange('tempo_limit') - def _tempo_limit_change(self): + def _onchange_tempo_limit(self): for tempo in self: - if tempo.env.user.id not in (7, 377): - raise UserError("Limit tempo hanya bisa di ubah oleh Sales Manager atau Direktur") + if tempo.env.user.id not in (7, 377, 12182): + raise UserError("Limit tempo hanya bisa diubah oleh Sales Manager atau Direktur") def button_approve(self): for tempo in self: @@ -38,39 +76,84 @@ class UserPengajuanTempoRequest(models.Model): raise UserError("Pengajuan tempo harus di approve oleh sales manager terlebih dahulu") else: # if tempo.env.user.id != 377: - if tempo.env.user.id != 25: + if tempo.env.user.id != 12182: raise UserError("Pengajuan tempo hanya bisa di approve oleh sales manager") else: - tempo.state_tempo = 'approval_sales' + return { + 'type': 'ir.actions.act_window', + 'name': 'Konfirmasi Approve', + 'res_model': 'confirm.approval.wizard', + 'view_mode': 'form', + 'target': 'new', + 'context': { + 'default_tempo_id': tempo.id, + }, + } elif tempo.state_tempo == 'approval_sales': if tempo.env.user.id == 7: raise UserError("Pengajuan tempo harus di approve oleh Finence terlebih dahulu") else: # if tempo.env.user.id not in (688, 28): - if tempo.env.user.id not in (101): + if tempo.env.user.id not in (101,288,28,12182): raise UserError("Pengajuan tempo hanya bisa di approve oleh Finence") else: - tempo.state_tempo = 'approval_finance' + return { + 'type': 'ir.actions.act_window', + 'name': 'Konfirmasi Approve', + 'res_model': 'confirm.approval.wizard', + 'view_mode': 'form', + 'target': 'new', + 'context': { + 'default_tempo_id': tempo.id, + }, + } elif tempo.state_tempo == 'approval_finance': # if tempo.env.user.id != 7: if tempo.env.user.id != 12182: raise UserError("Pengajuan tempo hanya bisa di approve oleh Direktur") else: - tempo.state_tempo = 'approval_director' - + return { + 'type': 'ir.actions.act_window', + 'name': 'Konfirmasi Approve', + 'res_model': 'confirm.approval.wizard', + 'view_mode': 'form', + 'target': 'new', + 'context': { + 'default_tempo_id': tempo.id, + }, + } - - res = super(UserPengajuanTempoRequest, self).button_approve() - return res + def button_reject(self): + return { + 'type': 'ir.actions.act_window', + 'name': _('Reject Reason'), + 'res_model': 'reject.reason.wizard', + 'view_mode': 'form', + 'target': 'new', + 'context': {'default_request_id': self.id}, + } def write(self, vals): - user = self.get_user_by_email(self.user_id.email) - is_approve = True if self.state_tempo == 'approval_director' else False + is_approve = True if self.state_tempo == 'approval_director' or vals.get('state_tempo') == 'approval_director' else False # if self.is_approve and is_approve: # raise UserError('Tidak dapat mengubah approval yang sudah diisi') + limit_tempo = '' + if vals.get('tempo_limit'): + limit_tempo = vals.get('tempo_limit') + elif self.tempo_limit: + limit_tempo = self.tempo_limit + else: + limit_tempo = self.pengajuan_tempo_id.tempo_limit + tempo_duration = '' + if vals.get('tempo_duration'): + tempo_duration = vals.get('tempo_duration') + elif self.tempo_duration: + tempo_duration = self.tempo_duration + else: + tempo_duration = self.pengajuan_tempo_id.tempo_duration if is_approve: self.pengajuan_tempo_id.partner_id = self.user_id.id # informasi perusahaan @@ -86,8 +169,8 @@ class UserPengajuanTempoRequest(models.Model): self.user_company_id.account_number_tempo = self.pengajuan_tempo_id.account_number_tempo self.user_company_id.website_tempo = self.pengajuan_tempo_id.website_tempo self.user_company_id.estimasi_tempo = self.pengajuan_tempo_id.estimasi_tempo - self.user_company_id.tempo_duration = vals.get('tempo_duration') if vals.get('tempo_duration') else self.pengajuan_tempo_id.tempo_duration - self.user_company_id.tempo_limit = vals.get('tempo_limit') if vals.get('tempo_limit') else self.pengajuan_tempo_id.tempo_limit + self.user_company_id.tempo_duration = tempo_duration + self.user_company_id.tempo_limit = limit_tempo self.user_company_id.category_produk_ids = self.pengajuan_tempo_id.category_produk_ids # Kontak Perusahaan @@ -120,44 +203,44 @@ class UserPengajuanTempoRequest(models.Model): self.user_company_id.supplier_ids = self.pengajuan_tempo_id.supplier_ids # Dokumen - self.user_company_id.dokumen_nib = self.pengajuan_tempo_id.dokumen_nib + self.user_company_id.dokumen_nib = self.pengajuan_tempo_id.dokumen_nib[0] if self.user_company_id.dokumen_nib: self.user_company_id.message_post(body='Dokumen NIB', attachment_ids=[self.user_company_id.dokumen_nib.id]) - self.user_company_id.dokumen_npwp = self.pengajuan_tempo_id.dokumen_npwp + self.user_company_id.dokumen_npwp = self.pengajuan_tempo_id.dokumen_npwp[0] if self.user_company_id.dokumen_npwp: self.user_company_id.message_post(body='Dokumen NPWP', attachment_ids=[self.user_company_id.dokumen_npwp.id]) - self.user_company_id.dokumen_sppkp = self.pengajuan_tempo_id.dokumen_sppkp + self.user_company_id.dokumen_sppkp = self.pengajuan_tempo_id.dokumen_sppkp[0] if self.user_company_id.dokumen_sppkp: self.user_company_id.message_post(body='Dokumen SPPKP', attachment_ids=[self.user_company_id.dokumen_sppkp.id]) - self.user_company_id.dokumen_akta_perubahan = self.pengajuan_tempo_id.dokumen_akta_perubahan + self.user_company_id.dokumen_akta_perubahan = self.pengajuan_tempo_id.dokumen_akta_perubahan[0] if self.pengajuan_tempo_id.dokumen_akta_perubahan else [] if self.user_company_id.dokumen_akta_perubahan: self.user_company_id.message_post(body='Dokumen Akta Perubahan', attachment_ids=[self.user_company_id.dokumen_akta_perubahan.id]) - self.user_company_id.dokumen_ktp_dirut = self.pengajuan_tempo_id.dokumen_ktp_dirut + self.user_company_id.dokumen_ktp_dirut = self.pengajuan_tempo_id.dokumen_ktp_dirut[0] if self.pengajuan_tempo_id.dokumen_ktp_dirut else [] if self.user_company_id.dokumen_ktp_dirut: self.user_company_id.message_post(body='Dokumen Ktp Dirut', attachment_ids=[self.user_company_id.dokumen_ktp_dirut.id]) - self.user_company_id.dokumen_akta_pendirian = self.pengajuan_tempo_id.dokumen_akta_pendirian + self.user_company_id.dokumen_akta_pendirian = self.pengajuan_tempo_id.dokumen_akta_pendirian[0] if self.pengajuan_tempo_id.dokumen_akta_pendirian else [] if self.user_company_id.dokumen_akta_pendirian: self.user_company_id.message_post(body='Dokumen Akta Pendirian', attachment_ids=[self.user_company_id.dokumen_akta_pendirian.id]) - self.user_company_id.dokumen_laporan_keuangan = self.pengajuan_tempo_id.dokumen_laporan_keuangan + self.user_company_id.dokumen_laporan_keuangan = self.pengajuan_tempo_id.dokumen_laporan_keuangan[0] if self.pengajuan_tempo_id.dokumen_laporan_keuangan else [] if self.user_company_id.dokumen_laporan_keuangan: self.user_company_id.message_post(body='Dokumen Laporan Keuangan', attachment_ids=[self.user_company_id.dokumen_laporan_keuangan.id]) - self.user_company_id.dokumen_foto_kantor = self.pengajuan_tempo_id.dokumen_foto_kantor + self.user_company_id.dokumen_foto_kantor = self.pengajuan_tempo_id.dokumen_foto_kantor[0] if self.pengajuan_tempo_id.dokumen_foto_kantor else [] if self.user_company_id.dokumen_foto_kantor: self.user_company_id.message_post(body='Dokumen Foto Kantor', attachment_ids=[self.user_company_id.dokumen_foto_kantor.id]) - self.user_company_id.dokumen_tempat_bekerja = self.pengajuan_tempo_id.dokumen_tempat_bekerja + self.user_company_id.dokumen_tempat_bekerja = self.pengajuan_tempo_id.dokumen_tempat_bekerja[0] if self.pengajuan_tempo_id.dokumen_tempat_bekerja else [] if self.user_company_id.dokumen_tempat_bekerja: self.user_company_id.message_post(body='Dokumen Tempat Bekerja', attachment_ids=[self.user_company_id.dokumen_tempat_bekerja.id]) @@ -165,10 +248,13 @@ class UserPengajuanTempoRequest(models.Model): # user.send_company_request_approve_mail() self.user_company_id.property_payment_term_id = self.pengajuan_tempo_id.tempo_duration.id self.user_company_id.active_limit = True - self.user_company_id.warning_stage = self.pengajuan_tempo_id.tempo_limit - (int(self.pengajuan_tempo_id.tempo_limit)/2) + self.user_company_id.warning_stage = float(self.pengajuan_tempo_id.tempo_limit) - (float(self.pengajuan_tempo_id.tempo_limit)/2) self.user_company_id.blocking_stage = self.pengajuan_tempo_id.tempo_limit - template = self.env.ref('indoteknik_custom.mail_template_user_cart_reminder_to_checkout') - template.send_mail(latest_cart.id, force_send=True) + # template = self.env.ref('indoteknik_custom.mail_template_res_user_company_tempo_approved') + # tempo = self.pengajuan_tempo_id + # template.send_mail(tempo.id, force_send=True) + template = self.env.ref('indoteknik_custom.mail_template_res_user_company_tempo_approved') + template.send_mail(self.id, force_send=True) # self.user_id.parent_id = new_company.id # user.send_company_request_reject_mail() return super(UserPengajuanTempoRequest, self).write(vals) @@ -177,4 +263,8 @@ class UserPengajuanTempoRequest(models.Model): return request.env['res.users'].search([ ('login', '=', email), ('active', 'in', [True, False]) - ])
\ No newline at end of file + ]) + + def format_currency(self, number): + number = int(number) + return "{:,}".format(number).replace(',', '.')
\ No newline at end of file |
