summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2024-09-20 08:07:57 +0000
committerIT Fixcomart <it@fixcomart.co.id>2024-09-20 08:07:57 +0000
commit5d24bf5ef0b60ac90fb007c0e21981789603f1e1 (patch)
tree6226da5e38ad44673a1bb5d7d4e2b0fd5df1fada /indoteknik_custom/models
parentd2bb21ae878db2a3b77dbb3341046c9d12ba1de5 (diff)
parent79bf9729d10c8fb37ef9071ab6df2b6644ddea49 (diff)
Merged in iman/new-register (pull request #223)
Iman/new register
Diffstat (limited to 'indoteknik_custom/models')
-rw-r--r--indoteknik_custom/models/res_partner.py60
-rwxr-xr-xindoteknik_custom/models/res_users.py19
-rwxr-xr-xindoteknik_custom/models/sale_order.py35
-rw-r--r--indoteknik_custom/models/user_company_request.py26
4 files changed, 127 insertions, 13 deletions
diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py
index ac126337..ef857c55 100644
--- a/indoteknik_custom/models/res_partner.py
+++ b/indoteknik_custom/models/res_partner.py
@@ -18,7 +18,8 @@ class ResPartner(models.Model):
('pkp', 'PKP'),
('nonpkp', 'Non PKP')
])
- sppkp = fields.Char(string="SPPKP")
+ sppkp = fields.Char(string="SPPKP", tracking=3)
+ npwp = fields.Char(string="NPWP", tracking=3)
counter = fields.Integer(string="Counter", default=0)
leadtime = fields.Integer(string="Leadtime", default=0)
digital_invoice_tax = fields.Boolean(string="Digital Invoice & Faktur Pajak")
@@ -58,20 +59,59 @@ class ResPartner(models.Model):
default=_default_payment_term
)
- def write(self, vals):
- res = super(ResPartner, self).write(vals)
+ @api.depends("street", "street2", "city", "state_id", "country_id", "blok", "nomor", "rt", "rw", "kelurahan_id",
+ "kecamatan_id")
+ def _alamat_lengkap_text(self):
+ for partner in self:
+ if partner.company_type == 'person' and not partner.parent_id:
+ partner.alamat_lengkap_text = partner.street
+ # if partner.company_type == 'person' and partner.parent_id:
+ # partner.alamat_lengkap_text = partner.parent_id.alamat_lengkap_text
- # if 'property_payment_term_id' in vals:
- # if not self.env.user.is_accounting and vals['property_payment_term_id'] != 26:
- # raise UserError('Hanya Finance Accounting yang dapat merubah payment term')
- # group_id = self.env.ref('indoteknik_custom.group_role_merchandiser').id
- # users_in_group = self.env['res.users'].search([('groups_id', 'in', [group_id])])
- # if self.env.user.id not in users_in_group.mapped('id'):
- # raise UserError('You name it')
+ alamat_lengkap_text = fields.Text(string="Alamat Lengkap", required=False , tracking=3)
+ def write(self, vals):
+ res = super(ResPartner, self).write(vals)
+ #
+ # # if 'property_payment_term_id' in vals:
+ # # if not self.env.user.is_accounting and vals['property_payment_term_id'] != 26:
+ # # raise UserError('Hanya Finance Accounting yang dapat merubah payment term')
+ #
+ # # group_id = self.env.ref('indoteknik_custom.group_role_merchandiser').id
+ # # users_in_group = self.env['res.users'].search([('groups_id', 'in', [group_id])])
+ # # if self.env.user.id not in users_in_group.mapped('id'):
+ # # raise UserError('You name it')
+ #
return res
+ # def write(self, vals):
+ # if self.company_type == 'person':
+ # if self.parent_id:
+ # parent = self.parent_id
+ # vals['customer_type'] = parent.customer_type
+ # vals['nama_wajib_pajak'] = parent.nama_wajib_pajak
+ # vals['npwp'] = parent.npwp
+ # vals['sppkp'] = parent.sppkp
+ # vals['alamat_lengkap_text'] = parent.alamat_lengkap_text
+ # vals['industry_id'] = parent.industry_id.id
+ # vals['company_type_id'] = parent.company_type_id.id
+ #
+ # res = super(ResPartner, self).write(vals)
+ # return res
+
+ @api.depends('company_type', 'parent_id', 'npwp', 'sppkp', 'nama_wajib_pajak','alamat_lengkap_text', 'industry_id', 'company_type_id')
+ def _related_fields(self):
+ for partner in self:
+ if partner.company_type == 'person' and partner.parent_id:
+ partner.customer_type = partner.parent_id.customer_type
+ partner.npwp = partner.parent_id.npwp
+ partner.sppkp = partner.parent_id.sppkp
+ partner.nama_wajib_pajak = partner.parent_id.nama_wajib_pajak
+ partner.alamat_lengkap_text = partner.parent_id.alamat_lengkap_text
+ partner.industry_id = partner.parent_id.industry_id.id
+ partner.company_type_id = partner.parent_id.company_type_id.id
+
@api.constrains('property_payment_term_id')
def updated_by_payment_term(self):
for rec in self:
diff --git a/indoteknik_custom/models/res_users.py b/indoteknik_custom/models/res_users.py
index 70a7dc53..d8eb348a 100755
--- a/indoteknik_custom/models/res_users.py
+++ b/indoteknik_custom/models/res_users.py
@@ -12,6 +12,8 @@ class ResUsers(models.Model):
otp_code = fields.Char(string='OTP Code')
otp_create_date = fields.Datetime(string='OTP Create Date')
payment_terms_id = fields.Many2one('account.payment.term', related='partner_id.property_payment_term_id', string='Payment Terms')
+ user_company_name = fields.Char(string="User Company Name")
+
def _generate_otp(self):
for user in self:
@@ -29,7 +31,22 @@ class ResUsers(models.Model):
user._generate_otp()
user._generate_activation_token()
template.send_mail(user.id, force_send=True)
-
+
+ def send_company_request_mail(self):
+ template = self.env.ref('indoteknik_custom.mail_template_res_user_company_request')
+ for user in self:
+ template.send_mail(user.id, force_send=True)
+
+ def send_company_request_approve_mail(self):
+ template = self.env.ref('indoteknik_custom.mail_template_res_user_company_request_approve')
+ for user in self:
+ template.send_mail(user.id, force_send=True)
+
+ def send_company_request_reject_mail(self):
+ template = self.env.ref('indoteknik_custom.mail_template_res_user_company_request_reject')
+ 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/sale_order.py b/indoteknik_custom/models/sale_order.py
index bd0fb75e..aa5443c5 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -1036,3 +1036,38 @@ class SaleOrder(models.Model):
order_line.tax_id = tax_id
order_line.discount = discount
order_line.order_id.use_button = True
+
+ @api.model
+ def create(self, vals):
+ # Ensure partner details are updated when a sale order is created
+ order = super(SaleOrder, self).create(vals)
+ order._update_partner_details()
+ return order
+
+ def write(self, vals):
+ # Call the super method to handle the write operation
+ res = super(SaleOrder, self).write(vals)
+
+ # Check if the update is coming from a save operation
+ if any(field in vals for field in ['sppkp', 'npwp', 'email', 'customer_type']):
+ self._update_partner_details()
+
+ return res
+
+ def _update_partner_details(self):
+ for order in self:
+ partner = order.partner_id.parent_id or order.partner_id
+ if partner:
+ # Update partner details
+ partner.sppkp = order.sppkp
+ partner.npwp = order.npwp
+ partner.email = order.email
+ partner.customer_type = order.customer_type
+
+ # Save changes to the partner record
+ partner.write({
+ 'sppkp': partner.sppkp,
+ 'npwp': partner.npwp,
+ 'email': partner.email,
+ 'customer_type': partner.customer_type,
+ }) \ No newline at end of file
diff --git a/indoteknik_custom/models/user_company_request.py b/indoteknik_custom/models/user_company_request.py
index 2467261a..8122c6a0 100644
--- a/indoteknik_custom/models/user_company_request.py
+++ b/indoteknik_custom/models/user_company_request.py
@@ -1,6 +1,6 @@
from odoo import models, fields
from odoo.exceptions import UserError
-
+from odoo.http import request
class UserCompanyRequest(models.Model):
_name = 'user.company.request'
@@ -15,6 +15,8 @@ class UserCompanyRequest(models.Model):
], string='Approval')
def write(self, vals):
+ user = self.get_user_by_email(self.user_id.email)
+ user.user_company_name = self.user_input
is_approve = vals.get('is_approve')
if self.is_approve and is_approve:
raise UserError('Tidak dapat mengubah approval yang sudah diisi')
@@ -22,10 +24,30 @@ class UserCompanyRequest(models.Model):
if not self.is_approve and is_approve:
if is_approve == 'approved':
self.user_id.parent_id = self.user_company_id.id
+ self.user_id.customer_type = self.user_company_id.customer_type
+ self.user_id.npwp = self.user_company_id.npwp
+ self.user_id.sppkp = self.user_company_id.sppkp
+ self.user_id.nama_wajib_pajak = self.user_company_id.nama_wajib_pajak
+ self.user_id.alamat_lengkap_text = self.user_company_id.alamat_lengkap_text
+ self.user_id.industry_id = self.user_company_id.industry_id.id
+ self.user_id.company_type_id = self.user_company_id.company_type_id.id
+ self.user_id.user_id = self.user_company_id.user_id
+ self.user_id.property_account_receivable_id = self.user_company_id.property_account_receivable_id
+ self.user_id.property_account_payable_id = self.user_company_id.property_account_payable_id
+ self.user_company_id.active = True
+ # tambahkan send email kalau bisnis berhsil di buat
+ user.send_company_request_approve_mail()
else:
new_company = self.env['res.partner'].create({
'name': self.user_input
})
self.user_id.parent_id = new_company.id
+ # tambahkan send email kalau bisnis ditolak di buat
+ user.send_company_request_reject_mail()
return super(UserCompanyRequest, self).write(vals)
- \ No newline at end of file
+
+ 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