summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2024-12-02 09:31:13 +0700
committerit-fixcomart <it@fixcomart.co.id>2024-12-02 09:31:13 +0700
commit6fbfe31167e6eb66d4995374dadb14774026e8c7 (patch)
tree044465ba37c6c6bc47ca2f0d6729ef6a64836397
parent07c14fedc459106189d040e7724e6d7f81051658 (diff)
<iman> pengajuan tempo update
-rw-r--r--indoteknik_api/controllers/api_v1/partner.py34
-rw-r--r--indoteknik_api/controllers/api_v1/user.py16
-rw-r--r--indoteknik_api/models/res_users.py15
-rw-r--r--indoteknik_custom/models/res_partner.py7
-rwxr-xr-xindoteknik_custom/models/res_users.py5
-rw-r--r--indoteknik_custom/models/solr/apache_solr.py2
-rw-r--r--indoteknik_custom/models/user_pengajuan_tempo.py15
-rw-r--r--indoteknik_custom/models/user_pengajuan_tempo_request.py261
-rw-r--r--indoteknik_custom/views/res_users.xml2
-rw-r--r--indoteknik_custom/views/user_pengajuan_tempo.xml205
-rw-r--r--indoteknik_custom/views/user_pengajuan_tempo_request.xml30
11 files changed, 460 insertions, 132 deletions
diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py
index 088f6f5b..19c73aec 100644
--- a/indoteknik_api/controllers/api_v1/partner.py
+++ b/indoteknik_api/controllers/api_v1/partner.py
@@ -265,16 +265,29 @@ class Partner(controller.Controller):
return self.response(data)
+ @http.route(prefix + 'check/<partner_id>/tempo_progress', auth='public', methods=['GET', 'OPTIONS'])
+ @controller.Controller.must_authorized()
+ def get_check_tempo_partner_progres(self, **kw):
+ partner_id = int(kw.get('partner_id'))
+ partner = request.env['res.partner'].search([('id', '=', partner_id)], limit=1)
+ pengajuan_tempo = request.env['user.pengajuan.tempo'].search([('name_tempo', '=', partner.id)], limit=1)
+ if not pengajuan_tempo:
+ return self.response(code=404, description='Partner not found')
+
+ data = True if pengajuan_tempo.id else False
+ return self.response(data)
+
@http.route(prefix + 'partner/pengajuan_tempo', auth='public', methods=['POST'], csrf=False)
@controller.Controller.must_authorized()
def write_pengajuan_tempo(self, **kw):
+ id = int(kw.get('partner_id'))
user_id = int(kw.get('user_id'))
- id = int(kw.get('id'))
- tempo_request = kw.get('tempo_request',False)
+ tempo_request = True if kw.get('tempo_request') == 'true' else False
pengajuan_tempo = request.env['user.pengajuan.tempo'].search([('name_tempo', '=', user_id)], limit=1)
- user = request.env['res.users'].search([('id', '=', user_id)], limit=1)
+ user = request.env['res.partner'].search([('id', '=', id)], limit=1)
company_name = kw.get('name', pengajuan_tempo.name_tempo.name)
partner_id = request.env['res.partner'].search([('name', 'like', company_name)], limit=1)
+ user_account = self.get_user_by_email(user.user_id.email)
params = self.get_request_params(kw, {
@@ -499,10 +512,23 @@ class Partner(controller.Controller):
return http.Response(status=400, json_body={'error': 'Invalid JSON format for formDokumen'})
if tempo_request:
tempo_request = request.env['user.pengajuan.tempo.request'].create({
- 'user_id': user.partner_id.id,
+ 'user_id': user.id,
'pengajuan_tempo_id': pengajuan_tempo.id,
+ 'user_company_id': partner_id.id,
+ 'tempo_duration': pengajuan_tempo.tempo_duration.id,
+ 'tempo_limit': pengajuan_tempo.tempo_limit,
})
+ pengajuan_tempo.user_id = user_account.id
+ template = pengajuan_tempo.env.ref('indoteknik_custom.mail_template_user_cart_reminder_to_checkout')
+ template.send_mail(pengajuan_tempo.id, force_send=True)
+ # user_account.send_activation_mail()
return self.response({
'id': pengajuan_tempo.id,
'user_id': user_id,
})
+
+ def get_user_by_email(self, email):
+ return request.env['res.users'].search([
+ ('login', '=', email),
+ ('active', 'in', [True, False])
+ ]) \ No newline at end of file
diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py
index 3be874fa..f83937ea 100644
--- a/indoteknik_api/controllers/api_v1/user.py
+++ b/indoteknik_api/controllers/api_v1/user.py
@@ -179,7 +179,7 @@ class User(controller.Controller):
if result:
match_company_name = result[0]
- match_company_id = result[2]
+ match_company_id = result[1]
# Create a user company request
request.env['user.company.request'].create({
@@ -403,6 +403,20 @@ class User(controller.Controller):
'user': self.response_with_token(user)
})
+ @http.route(prefix + 'user/<id>/after_request_tempo', auth='public', methods=['PUT', 'OPTIONS'], csrf=False)
+ @controller.Controller.must_authorized()
+ def update_user_tempo(self, **kw):
+ id = kw.get('id')
+
+ user = request.env['res.users'].search([('id', '=', id)], limit=1)
+ if not user:
+ return self.response(code=404, description='User not found')
+
+
+ return self.response({
+ 'user': self.response_with_token(user, payment_tempo='Review')
+ })
+
@http.route(prefix + 'user/<id>/address', auth='public', methods=['GET', 'OPTIONS'])
@controller.Controller.must_authorized()
def get_user_address_by_id(self, **kw):
diff --git a/indoteknik_api/models/res_users.py b/indoteknik_api/models/res_users.py
index 52a044dc..40933957 100644
--- a/indoteknik_api/models/res_users.py
+++ b/indoteknik_api/models/res_users.py
@@ -1,10 +1,10 @@
from odoo import models
-
+from odoo.http import request
class ResUsers(models.Model):
_inherit = 'res.users'
- def api_single_response(self, res_user, with_detail=''):
+ def api_single_response(self, res_user, with_detail='', payment_tempo= ''):
config = self.env['ir.config_parameter']
partner = res_user.partner_id
@@ -14,9 +14,13 @@ class ResUsers(models.Model):
'manager': 2,
'director': 3
}
- partner_tempo = False
+ partner_tempo = ''
+ is_tempo_request = request.env['user.pengajuan.tempo.request'].search([('name_tempo', '=', partner.id)], limit=1)
+ tempo_progres = 'review' if is_tempo_request else ''
if main_partner:
- partner_tempo = main_partner.get_check_tempo_partner()
+ partner_tempo = main_partner.get_check_payment_term()
+ if payment_tempo:
+ tempo_progres = payment_tempo
data = {
'id': res_user.id,
@@ -36,7 +40,8 @@ class ResUsers(models.Model):
'so_approval': main_partner.use_so_approval,
'only_ready_stock': main_partner.use_only_ready_stock
},
- 'partner_tempo': partner_tempo
+ 'partner_tempo': partner_tempo,
+ 'tempo_progres': tempo_progres
}
return data
diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py
index f01ea481..b21b1965 100644
--- a/indoteknik_custom/models/res_partner.py
+++ b/indoteknik_custom/models/res_partner.py
@@ -406,13 +406,10 @@ class ResPartner(models.Model):
if self.customer_type == 'nonpkp':
self.npwp = '00.000.000.0-000.000'
- def get_check_tempo_partner(self):
+ def get_check_payment_term(self):
self.ensure_one()
partner = self.parent_id or self
- if not partner.property_payment_term_id or 'Tempo' not in partner.property_payment_term_id.name:
- return False
- else:
- return True
+ return partner.property_payment_term_id.name if partner.property_payment_term_id.id else 'Cash Before Delivery (C.B.D)'
diff --git a/indoteknik_custom/models/res_users.py b/indoteknik_custom/models/res_users.py
index 5e16aad1..fb9e8bfb 100755
--- a/indoteknik_custom/models/res_users.py
+++ b/indoteknik_custom/models/res_users.py
@@ -46,6 +46,11 @@ class ResUsers(models.Model):
for user in self:
template.send_mail(user.id, force_send=True)
+ def send_company_request_tempo_review(self):
+ template = self.env.ref('indoteknik_custom.mail_template_res_user_company_tempo_review')
+ for user in self:
+ template.send_mail(user.id, force_send=True)
+
def get_activation_token_url(self):
base_url = self.env['ir.config_parameter'].get_param('site.base.url')
return f'{base_url}/register?activation=token&amp;token={self.activation_token}'
diff --git a/indoteknik_custom/models/solr/apache_solr.py b/indoteknik_custom/models/solr/apache_solr.py
index 6560c9b5..d111c1c1 100644
--- a/indoteknik_custom/models/solr/apache_solr.py
+++ b/indoteknik_custom/models/solr/apache_solr.py
@@ -22,7 +22,7 @@ class ApacheSolr(models.Model):
url = ''
if env == 'development':
- url = 'http://192.168.23.5:8983/solr/'
+ url = 'http://localhost:8983/solr/'
elif env == 'production':
url = 'http://34.101.189.218:8983/solr/'
diff --git a/indoteknik_custom/models/user_pengajuan_tempo.py b/indoteknik_custom/models/user_pengajuan_tempo.py
index d8a6d106..006bbb55 100644
--- a/indoteknik_custom/models/user_pengajuan_tempo.py
+++ b/indoteknik_custom/models/user_pengajuan_tempo.py
@@ -18,6 +18,9 @@ class UserPengajuanTempo(models.Model):
_name = 'user.pengajuan.tempo'
_inherit = ['mail.thread', 'mail.activity.mixin']
partner_id = fields.Char()
+ _description = 'User Pengajuan Tempo'
+
+ name = fields.Char(string='Name', required=True)
# informasi perusahaan
# name_tempo = fields.Many2one(
@@ -31,6 +34,7 @@ class UserPengajuanTempo(models.Model):
'res.partner', string='Nama Perusahaan',
tracking=True, # Menambahkan tracking=True
)
+ user_id = fields.Many2one('res.users', string='User')
industry_id_tempo = fields.Many2one('res.partner.industry', 'Customer Industry', readonly=True)
street_tempo = fields.Char(string="Alamat Perusahaan")
state_id_tempo = fields.Many2one('res.country.state', string='State')
@@ -97,6 +101,17 @@ class UserPengajuanTempo(models.Model):
string=" Foto Kantor (Tampak Depan)", tracking=3)
dokumen_tempat_bekerja = fields.Many2many('ir.attachment', 'pengajuan_dokumen_tempat_bekerja_rel',
string="Tempat Bekerja", tracking=3)
+
+ @api.depends('name', 'name_tempo')
+ def name_get(self):
+ result = []
+ for record in self:
+ if record.name_tempo:
+ display_name = f"DETAIL FORM TEMPO - {record.name_tempo.name}"
+ else:
+ 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 438d48cc..b7526238 100644
--- a/indoteknik_custom/models/user_pengajuan_tempo_request.py
+++ b/indoteknik_custom/models/user_pengajuan_tempo_request.py
@@ -4,118 +4,171 @@ from odoo.http import request
class UserPengajuanTempoRequest(models.Model):
_name = 'user.pengajuan.tempo.request'
+ _inherit = ['mail.thread', 'mail.activity.mixin']
_rec_name = 'user_id'
user_id = fields.Many2one('res.partner', string='User')
- is_approve = fields.Selection([
- ('approved', 'Approve'),
- ('rejected', 'Reject'),
- ], string='Approval')
+ 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')
+ state_tempo = fields.Selection([
+ ('draft', 'Pengajuan Tempo'),
+ ('approval_sales', 'Approved by Sales Manager'),
+ ('approval_finance', 'Approved by Finance'),
+ ('approval_director', 'Approved by Director'),
+ ], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='draft')
+
+ @api.onchange('tempo_duration')
+ def _tempo_duration_change(self):
+ 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):
+ 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")
+
+ def button_approve(self):
+ for tempo in self:
+ if tempo.state_tempo == 'draft':
+ if tempo.env.user.id in (688, 28, 7):
+ 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:
+ raise UserError("Pengajuan tempo hanya bisa di approve oleh sales manager")
+ else:
+ tempo.state_tempo = 'approval_sales'
+
+ 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):
+ raise UserError("Pengajuan tempo hanya bisa di approve oleh Finence")
+ else:
+ tempo.state_tempo = 'approval_finance'
+
+ 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'
+
+
+
+ res = super(UserPengajuanTempoRequest, self).button_approve()
+ return res
+
def write(self, vals):
user = self.get_user_by_email(self.user_id.email)
- is_approve = vals.get('is_approve')
- company_id = ''
- if self.is_approve and is_approve:
- raise UserError('Tidak dapat mengubah approval yang sudah diisi')
-
- if not self.is_approve and is_approve:
- if is_approve == 'approved':
- self.pengajuan_tempo_id.partner_id = self.user_id.id
- # informasi perusahaan
- company_id.name_tempo = self.pengajuan_tempo_id.name_tempo
- company_id.industry_id_tempo = self.pengajuan_tempo_id.industry_id_tempo
- company_id.street_tempo = self.pengajuan_tempo_id.street_tempo
- company_id.state_id_tempo = self.pengajuan_tempo_id.state_id_tempo
- company_id.city_id_tempo = self.pengajuan_tempo_id.city_id_tempo
- company_id.zip_tempo = self.pengajuan_tempo_id.zip_tempo
- company_id.mobile_tempo = self.pengajuan_tempo_id.mobile_tempo
- company_id.bank_name_tempo = self.pengajuan_tempo_id.bank_name_tempo
- company_id.account_name_tempo = self.pengajuan_tempo_id.account_name_tempo
- company_id.account_number_tempo = self.pengajuan_tempo_id.account_number_tempo
- company_id.website_tempo = self.pengajuan_tempo_id.website_tempo
- company_id.estimasi_tempo = self.pengajuan_tempo_id.estimasi_tempo
- company_id.tempo_duration = self.pengajuan_tempo_id.tempo_duration
- company_id.tempo_limit = self.pengajuan_tempo_id.tempo_limit
- company_id.category_produk_ids = self.pengajuan_tempo_id.category_produk_ids
-
- # Kontak Perusahaan
- company_id.direktur_name = self.pengajuan_tempo_id.direktur_name
- company_id.direktur_mobile = self.pengajuan_tempo_id.direktur_mobile
- company_id.direktur_email = self.pengajuan_tempo_id.direktur_email
- company_id.purchasing_name = self.pengajuan_tempo_id.purchasing_name
- company_id.purchasing_mobile = self.pengajuan_tempo_id.purchasing_mobile
- company_id.purchasing_email = self.pengajuan_tempo_id.purchasing_email
- company_id.finance_name = self.pengajuan_tempo_id.finance_name
- company_id.finance_mobile = self.pengajuan_tempo_id.finance_mobile
- company_id.finance_email = self.pengajuan_tempo_id.finance_email
-
- # Pengiriman
- company_id.pic_name = self.pengajuan_tempo_id.pic_name
- company_id.street_pengiriman = self.pengajuan_tempo_id.street_pengiriman
- company_id.state_id_pengiriman = self.pengajuan_tempo_id.state_id_pengiriman
- company_id.city_id_pengiriman = self.pengajuan_tempo_id.city_id_pengiriman
- company_id.zip_pengiriman = self.pengajuan_tempo_id.zip_pengiriman
- company_id.invoice_pic = self.pengajuan_tempo_id.invoice_pic
- company_id.street_invoice = self.pengajuan_tempo_id.street_invoice
- company_id.state_id_invoice = self.pengajuan_tempo_id.state_id_invoice
- company_id.city_id_invoice = self.pengajuan_tempo_id.city_id_invoice
- company_id.tukar_invoice = self.pengajuan_tempo_id.tukar_invoice
- company_id.jadwal_bayar = self.pengajuan_tempo_id.jadwal_bayar
- company_id.dokumen_pengiriman = self.pengajuan_tempo_id.dokumen_pengiriman
- company_id.dokumen_invoice = self.pengajuan_tempo_id.dokumen_invoice
-
- # Referensi
- company_id.supplier_ids = self.pengajuan_tempo_id.supplier_ids
-
- # Dokumen
- company_id.dokumen_nib = self.pengajuan_tempo_id.dokumen_nib
- if company_id.dokumen_nib:
- company_id.message_post(body='Dokumen NIB', attachment_ids=[company_id.dokumen_nib.id])
-
- company_id.dokumen_npwp = self.pengajuan_tempo_id.dokumen_npwp
- if company_id.dokumen_npwp:
- company_id.message_post(body='Dokumen NPWP', attachment_ids=[company_id.dokumen_npwp.id])
-
- company_id.dokumen_sppkp = self.pengajuan_tempo_id.dokumen_sppkp
- if company_id.dokumen_sppkp:
- company_id.message_post(body='Dokumen SPPKP', attachment_ids=[company_id.dokumen_sppkp.id])
-
- company_id.dokumen_akta_perubahan = self.pengajuan_tempo_id.dokumen_akta_perubahan
- if company_id.dokumen_akta_perubahan:
- company_id.message_post(body='Dokumen Akta Perubahan',
- attachment_ids=[company_id.dokumen_akta_perubahan.id])
-
- company_id.dokumen_ktp_dirut = self.pengajuan_tempo_id.dokumen_ktp_dirut
- if company_id.dokumen_ktp_dirut:
- company_id.message_post(body='Dokumen Ktp Dirut',
- attachment_ids=[company_id.dokumen_ktp_dirut.id])
-
- company_id.dokumen_akta_pendirian = self.pengajuan_tempo_id.dokumen_akta_pendirian
- if company_id.dokumen_akta_pendirian:
- company_id.message_post(body='Dokumen Akta Pendirian',
- attachment_ids=[company_id.dokumen_akta_pendirian.id])
-
- company_id.dokumen_laporan_keuangan = self.pengajuan_tempo_id.dokumen_laporan_keuangan
- if company_id.dokumen_laporan_keuangan:
- company_id.message_post(body='Dokumen Laporan Keuangan',
- attachment_ids=[company_id.dokumen_laporan_keuangan.id])
-
- company_id.dokumen_foto_kantor = self.pengajuan_tempo_id.dokumen_foto_kantor
- if company_id.dokumen_foto_kantor:
- company_id.message_post(body='Dokumen Foto Kantor',
- attachment_ids=[company_id.dokumen_foto_kantor.id])
-
- company_id.dokumen_tempat_bekerja = self.pengajuan_tempo_id.dokumen_tempat_bekerja
- if company_id.dokumen_tempat_bekerja:
- company_id.message_post(body='Dokumen Tempat Bekerja',
- attachment_ids=[company_id.dokumen_tempat_bekerja.id])
+ is_approve = True if self.state_tempo == 'approval_director' else False
+ # if self.is_approve and is_approve:
+ # raise UserError('Tidak dapat mengubah approval yang sudah diisi')
+
+ if is_approve:
+ self.pengajuan_tempo_id.partner_id = self.user_id.id
+ # informasi perusahaan
+ self.user_company_id.name_tempo = self.pengajuan_tempo_id.name_tempo
+ self.user_company_id.industry_id_tempo = self.pengajuan_tempo_id.industry_id_tempo
+ self.user_company_id.street_tempo = self.pengajuan_tempo_id.street_tempo
+ self.user_company_id.state_id_tempo = self.pengajuan_tempo_id.state_id_tempo
+ self.user_company_id.city_id_tempo = self.pengajuan_tempo_id.city_id_tempo
+ self.user_company_id.zip_tempo = self.pengajuan_tempo_id.zip_tempo
+ self.user_company_id.mobile_tempo = self.pengajuan_tempo_id.mobile_tempo
+ self.user_company_id.bank_name_tempo = self.pengajuan_tempo_id.bank_name_tempo
+ self.user_company_id.account_name_tempo = self.pengajuan_tempo_id.account_name_tempo
+ 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.category_produk_ids = self.pengajuan_tempo_id.category_produk_ids
+
+ # Kontak Perusahaan
+ self.user_company_id.direktur_name = self.pengajuan_tempo_id.direktur_name
+ self.user_company_id.direktur_mobile = self.pengajuan_tempo_id.direktur_mobile
+ self.user_company_id.direktur_email = self.pengajuan_tempo_id.direktur_email
+ self.user_company_id.purchasing_name = self.pengajuan_tempo_id.purchasing_name
+ self.user_company_id.purchasing_mobile = self.pengajuan_tempo_id.purchasing_mobile
+ self.user_company_id.purchasing_email = self.pengajuan_tempo_id.purchasing_email
+ self.user_company_id.finance_name = self.pengajuan_tempo_id.finance_name
+ self.user_company_id.finance_mobile = self.pengajuan_tempo_id.finance_mobile
+ self.user_company_id.finance_email = self.pengajuan_tempo_id.finance_email
+
+ # Pengiriman
+ self.user_company_id.pic_name = self.pengajuan_tempo_id.pic_name
+ self.user_company_id.street_pengiriman = self.pengajuan_tempo_id.street_pengiriman
+ self.user_company_id.state_id_pengiriman = self.pengajuan_tempo_id.state_id_pengiriman
+ self.user_company_id.city_id_pengiriman = self.pengajuan_tempo_id.city_id_pengiriman
+ self.user_company_id.zip_pengiriman = self.pengajuan_tempo_id.zip_pengiriman
+ self.user_company_id.invoice_pic = self.pengajuan_tempo_id.invoice_pic
+ self.user_company_id.street_invoice = self.pengajuan_tempo_id.street_invoice
+ self.user_company_id.state_id_invoice = self.pengajuan_tempo_id.state_id_invoice
+ self.user_company_id.city_id_invoice = self.pengajuan_tempo_id.city_id_invoice
+ self.user_company_id.tukar_invoice = self.pengajuan_tempo_id.tukar_invoice
+ self.user_company_id.jadwal_bayar = self.pengajuan_tempo_id.jadwal_bayar
+ self.user_company_id.dokumen_pengiriman = self.pengajuan_tempo_id.dokumen_pengiriman
+ self.user_company_id.dokumen_invoice = self.pengajuan_tempo_id.dokumen_invoice
+
+ # Referensi
+ 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
+ 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
+ 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
+ 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
+ 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
+ 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
+ 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
+ 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
+ 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
+ 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])
# self.user_company_id.active = True
# user.send_company_request_approve_mail()
- else:
- new_company = self.env['res.partner'].create({
- 'name': self.user_input
- })
+ 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.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)
# self.user_id.parent_id = new_company.id
# user.send_company_request_reject_mail()
return super(UserPengajuanTempoRequest, self).write(vals)
diff --git a/indoteknik_custom/views/res_users.xml b/indoteknik_custom/views/res_users.xml
index 39b9d43e..d7a6b2dd 100644
--- a/indoteknik_custom/views/res_users.xml
+++ b/indoteknik_custom/views/res_users.xml
@@ -254,5 +254,7 @@
</table>
</field>
</record>
+
+
</data>
</odoo> \ No newline at end of file
diff --git a/indoteknik_custom/views/user_pengajuan_tempo.xml b/indoteknik_custom/views/user_pengajuan_tempo.xml
index 9874d79d..5b8ed293 100644
--- a/indoteknik_custom/views/user_pengajuan_tempo.xml
+++ b/indoteknik_custom/views/user_pengajuan_tempo.xml
@@ -116,6 +116,211 @@
</field>
</record>
+ <record id="mail_template_res_user_company_request_tempo_review" model="mail.template">
+ <field name="name">Users: Company Request Tempo Review</field>
+ <field name="model_id" ref="indoteknik_custom.model_user_pengajuan_tempo"/>
+ <field name="subject">Permohonan Tempo Anda Sedang Ditinjau</field>
+ <field name="email_from">"Indoteknik.com" &lt;noreply@indoteknik.com&gt;</field>
+ <field name="reply_to">noreply@indoteknik.com</field>
+ <field name="email_to">${object.user_id.login | safe}</field>
+ <field name="body_html" type="html">
+ <table border="0" cellpadding="0" cellspacing="0" style="padding-top: 16px; background-color: #F1F1F1; font-family:Inter, Helvetica, Verdana, Arial,sans-serif; line-height: 24px; color: #454748; width: 100%; border-collapse:separate;">
+ <tr><td align="center">
+ <table border="0" cellpadding="0" cellspacing="0" width="590" style="font-size: 13px; padding: 16px; background-color: white; color: #454748; border-collapse:separate;">
+ <!-- HEADER -->
+ <tbody>
+ <tr>
+ <td align="center" style="min-width: 590px;">
+ <table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
+ <tr>
+ <td valign="middle">
+ <span></span>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2" style="text-align:center;">
+ <hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;" />
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <!-- CONTENT -->
+ <tr>
+ <td align="center" style="min-width: 590px;">
+ <table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
+ <tr><td style="padding-bottom: 24px;"><b>Hai. ${object.name_tempo.name},</b></td></tr>
+
+ <tr><td style="padding-bottom: 16px;">Terima kasih atas kepercayaan Anda memilih indoteknik.com. Kami telah menerima permohonan pemayaran tempo Anda.</td></tr>
+ <tr><td style="padding-bottom: 16px;">Saat ini, tim kami sedang melakukan peninjauan terhadap permohonan Anda. Proses peninjauan ini membutuhkan waktu.</td></tr>
+ <tr>
+ <td style="padding-bottom: 16px; ">Kami akan informasikan kembali mengenai hasil peninjauan pembayaran tempo anda melalui email ini.</td>
+ </tr>
+
+
+ <tr><td style="padding-bottom: 2px;"><b>Hormat kami,</b></td></tr>
+ <tr><td style="padding-bottom: 2px;">PT. INDOTEKNIK DOTCOM GEMILANG</td></tr>
+ <tr>
+ <td valign="middle" align="center">
+ <img src="https://erp.indoteknik.com/api/image/ir.attachment/datas/2135765" alt="Indoteknik" style="max-width: 100%; height: auto;"></img>
+ </td>
+ </tr>
+ <tr>
+ <td style="text-align:center;">
+ <hr width="100%"
+ style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;" />
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <!-- CONTENT -->
+ </tbody>
+ </table>
+ </td></tr>
+ </table>
+ </field>
+ </record>
+
+ <record id="mail_template_res_user_company_tempo_reject" model="mail.template">
+ <field name="name">Users: Company Tempo Reject</field>
+ <field name="model_id" ref="indoteknik_custom.model_user_pengajuan_tempo"/>
+ <field name="subject">Mohon Maaf Pengajuan Tempo anda kami Tolak</field>
+ <field name="email_from">"Indoteknik.com" &lt;noreply@indoteknik.com&gt;</field>
+ <field name="reply_to">noreply@indoteknik.com</field>
+ <field name="email_to">${object.user_id.login | safe}</field>
+ <field name="body_html" type="html">
+ <table border="0" cellpadding="0" cellspacing="0" style="padding-top: 16px; background-color: #F1F1F1; font-family:Inter, Helvetica, Verdana, Arial,sans-serif; line-height: 24px; color: #454748; width: 100%; border-collapse:separate;">
+ <tr><td align="center">
+ <table border="0" cellpadding="0" cellspacing="0" width="590" style="font-size: 13px; padding: 16px; background-color: white; color: #454748; border-collapse:separate;">
+ <!-- HEADER -->
+ <tbody>
+ <tr>
+ <td align="center" style="min-width: 590px;">
+ <table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
+ <tr>
+ <td valign="middle">
+ <span></span>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2" style="text-align:center;">
+ <hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;" />
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <!-- CONTENT -->
+ <tr>
+ <td align="center" style="min-width: 590px;">
+ <table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
+ <tr><td style="padding-bottom: 24px;"><b>Hai. ${object.name_tempo.name},</b></td></tr>
+
+ <tr><td style="padding-bottom: 16px;">Kami sampaikan dengan sangat menyesal bahwa pengajuan permohonan tempo pembayaran Anda yang diajukan pada tanggal ${format_date(object.create_date, 'dd MMMM yyyy')} tidak dapat kami setujui.</td></tr>
+ <tr><td style="padding-bottom: 16px;">Keputusan ini telah kami pertimbangkan secara matang berdasarkan beberapa faktor, termasuk [alasan penolakan, misal: riwayat pembayaran, profil kredit, atau kebijakan perusahaan].</td></tr>
+ <tr>
+ <td style="padding-bottom: 16px; ">Kami memahami bahwa hal ini mungkin mengecewakan. Namun, kami berharap Anda dapat memahami kebijakan perusahaan kami.</td>
+ </tr>
+
+ <tr><td style="padding-bottom: 16px;">Terima kasih atas pengertiannya.</td></tr>
+
+ <tr><td style="padding-bottom: 2px;"><b>Hormat kami,</b></td></tr>
+ <tr><td style="padding-bottom: 2px;">PT. INDOTEKNIK DOTCOM GEMILANG</td></tr>
+ <tr>
+ <td valign="middle" align="center">
+ <img src="https://erp.indoteknik.com/api/image/ir.attachment/datas/2135765" alt="Indoteknik" style="max-width: 100%; height: auto;"></img>
+ </td>
+ </tr>
+ <tr>
+ <td style="text-align:center;">
+ <hr width="100%"
+ style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;" />
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <!-- CONTENT -->
+ </tbody>
+ </table>
+ </td></tr>
+ </table>
+ </field>
+ </record>
+
+ <record id="mail_template_res_user_company_tempo_approved" model="mail.template">
+ <field name="name">Users: Company Tempo Approved</field>
+ <field name="model_id" ref="indoteknik_custom.model_user_pengajuan_tempo"/>
+ <field name="subject">Pengajuan Tempo kamu di Indoteknik.com Telah Disetujui!</field>
+ <field name="email_from">"Indoteknik.com" &lt;noreply@indoteknik.com&gt;</field>
+ <field name="reply_to">noreply@indoteknik.com</field>
+ <field name="email_to">${object.user_id.login | safe}</field>
+ <field name="body_html" type="html">
+ <table border="0" cellpadding="0" cellspacing="0" style="padding-top: 16px; background-color: #F1F1F1; font-family:Inter, Helvetica, Verdana, Arial,sans-serif; line-height: 24px; color: #454748; width: 100%; border-collapse:separate;">
+ <tr><td align="center">
+ <table border="0" cellpadding="0" cellspacing="0" width="590" style="font-size: 13px; padding: 16px; background-color: white; color: #454748; border-collapse:separate;">
+ <!-- HEADER -->
+ <tbody>
+ <tr>
+ <td align="center" style="min-width: 590px;">
+ <table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
+ <tr>
+ <td valign="middle">
+ <span></span>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2" style="text-align:center;">
+ <hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;" />
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <!-- CONTENT -->
+ <tr>
+ <td align="center" style="min-width: 590px;">
+ <table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
+ <tr><td style="padding-bottom: 24px;"><b>Hai. ${object.name_tempo.name},</b></td></tr>
+
+ <tr><td style="padding-bottom: 16px;">Kabar baik! Kami dengan senang hati menginformasikan bahwa pengajuan tempo pembayaran kamui di Indoteknik.com telah disetujui dengan detail sebagai berikut.</td></tr>
+ <tr><td style="padding-bottom: 4px;">Limit Pembayaran Tempo : Rp ${object.format_currency(object.tempo_limit)}</td></tr>
+
+ <tr><td style="padding-bottom: 16px;">Durasi Pembayaran Tempo : ${object.tempo_duration.name}</td></tr>
+ <tr>
+ <td style="padding-bottom: 16px; ">Kamu dapat melakukan pembayaran sesuai dengan jangka waktu yang telah disepakati. Detail lengkap mengenai transaksi kamu, termasuk tanggal jatuh tempo &amp; Pengajuan Kenaikan Limit Tempo, dapat kamu lihat di akun Profile Indoteknik.com.</td>
+ </tr>
+
+ <tr><td style="padding-bottom: 16px;">Terima kasih atas kepercayaan kamu kepada Indoteknik.com.</td></tr>
+
+ <tr><td style="padding-bottom: 2px;"><b>Hormat kami,</b></td></tr>
+ <tr><td style="padding-bottom: 2px;">PT. INDOTEKNIK DOTCOM GEMILANG</td></tr>
+ <tr>
+ <td valign="middle" align="center">
+ <img src="https://erp.indoteknik.com/api/image/ir.attachment/datas/2135765" alt="Indoteknik" style="max-width: 100%; height: auto;"></img>
+ </td>
+ </tr>
+ <tr>
+ <td style="text-align:center;">
+ <hr width="100%"
+ style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;" />
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <!-- CONTENT -->
+ </tbody>
+ </table>
+ </td></tr>
+ </table>
+ </field>
+ </record>
+
<!-- Action to open form and tree views -->
<record id="action_user_pengajuan_tempo" model="ir.actions.act_window">
<field name="name">Pengajuan Tempo</field>
diff --git a/indoteknik_custom/views/user_pengajuan_tempo_request.xml b/indoteknik_custom/views/user_pengajuan_tempo_request.xml
index 3b08799c..4a8243da 100644
--- a/indoteknik_custom/views/user_pengajuan_tempo_request.xml
+++ b/indoteknik_custom/views/user_pengajuan_tempo_request.xml
@@ -7,12 +7,6 @@
<tree create="1" default_order="create_date desc">
<field name="user_id"/>
<field name="pengajuan_tempo_id"/>
- <field
- name="is_approve"
- widget="badge"
- decoration-success="is_approve == 'approved'"
- decoration-danger="is_approve == 'rejected'"
- />
<field name="create_date"/>
</tree>
</field>
@@ -23,17 +17,29 @@
<field name="model">user.pengajuan.tempo.request</field>
<field name="arch" type="xml">
<form create="0">
+ <header>
+ <button name="button_approve"
+ string="Approve Tempo"
+ attrs="{'visible': [ ('state_tempo', 'in', ['draft', 'approval_sales', 'approval_finance'])]}"
+ type="object"
+ class="oe_highlight"
+ />
+
+<!-- <button name="action_reject"-->
+<!-- string="Reject"-->
+<!-- attrs="{'invisible': [('state_tempo', 'not in', ['approval_director'])]}"-->
+<!-- type="object"-->
+<!-- groups="purchase.group_purchase_manager"-->
+<!-- class="oe_highlight" />-->
+ <field name="state_tempo" widget="statusbar" statusbar_visible="draft,approval_sales,approval_finance,approval_director"/>
+ </header>
<sheet>
<group>
<group>
<field name="user_id" readonly="1"/>
<field name="pengajuan_tempo_id"/>
- <field
- name="is_approve"
- required="1"
- decoration-success="is_approve == 'approved'"
- decoration-danger="is_approve == 'rejected'"
- />
+ <field name="tempo_duration" attrs="{'readonly': [('state_tempo', '=', 'approval_director')]}"/>
+ <field name="tempo_limit" attrs="{'readonly': [('state_tempo', '=', 'approval_director')]}"/>
</group>
</group>
</sheet>