summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2024-12-03 13:22:55 +0700
committerit-fixcomart <it@fixcomart.co.id>2024-12-03 13:22:55 +0700
commitcf6581d8a9ddfd5a7e3c1c2d7aa5aab8b96f4813 (patch)
tree69bada29da6d7929c5342e27ea6413d459266026 /indoteknik_custom/models
parent6fbfe31167e6eb66d4995374dadb14774026e8c7 (diff)
<iman> pengajuan tempo
Diffstat (limited to 'indoteknik_custom/models')
-rw-r--r--indoteknik_custom/models/user_pengajuan_tempo.py2
-rw-r--r--indoteknik_custom/models/user_pengajuan_tempo_request.py156
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