summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2024-12-30 14:09:50 +0700
committerit-fixcomart <it@fixcomart.co.id>2024-12-30 14:09:50 +0700
commit7d5204a92422848f617af2d0e50d7069bf9f7824 (patch)
tree139718306bb1be2d9cccd3de8fb4c56c0a5b6b1b /indoteknik_custom/models
parentefe91d5ed3170b1d8e2dc217a05261dfbd9687d5 (diff)
<iman> add form merchant
Diffstat (limited to 'indoteknik_custom/models')
-rwxr-xr-xindoteknik_custom/models/__init__.py2
-rw-r--r--indoteknik_custom/models/res_partner.py76
-rw-r--r--indoteknik_custom/models/user_form_merchant.py42
-rw-r--r--indoteknik_custom/models/user_merchant_request.py96
4 files changed, 215 insertions, 1 deletions
diff --git a/indoteknik_custom/models/__init__.py b/indoteknik_custom/models/__init__.py
index ad6d75dd..25f56052 100755
--- a/indoteknik_custom/models/__init__.py
+++ b/indoteknik_custom/models/__init__.py
@@ -134,3 +134,5 @@ from . import find_page
from . import approval_retur_picking
from . import va_multi_approve
from . import va_multi_reject
+from . import user_form_merchant
+from . import user_merchant_request
diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py
index da4a6cb6..79962c2b 100644
--- a/indoteknik_custom/models/res_partner.py
+++ b/indoteknik_custom/models/res_partner.py
@@ -75,6 +75,30 @@ class ResPartner(models.Model):
"Set its value to 0.00 to disable "
"this feature", tracking=3)
+ # MERCHANT
+ name_merchant = fields.Char(string='Name')
+ address_merchant = fields.Char(string='Alamat')
+ state_merchant = fields.Many2one('res.country.state', string='State')
+ city_merchant = fields.Many2one('vit.kota', string='Kota')
+ district_merchant = fields.Many2one('vit.kecamatan', string='Kecamatan')
+ subDistrict_merchant = fields.Many2one('vit.kelurahan', string='Kelurahan')
+ zip_merchant = fields.Char(string='Kode Pos')
+ bank_name_merchant = fields.Char(string='Nama Bank')
+ rekening_name_merchant = fields.Char(string='Nama Rekening')
+ account_number_merchant = fields.Char(string='Nomor Rekening Bank')
+ email_company_merchant = fields.Char(string='Email Perusahaan')
+ email_sales_merchant = fields.Char(string='Email Sales')
+ email_finance_merchant = fields.Char(string='Email Finance')
+ phone_merchant = fields.Char(string='No. Telepon Perusahaan')
+ mobile_merchant = fields.Char(string='No. Handphone')
+ file_dokumenKtpDirut = fields.Binary(string="KTP Dirut/Direktur", tracking=True, track_visibility="onchange")
+ file_kartuNama = fields.Binary(string="Kartu Nama", tracking=True, track_visibility="onchange")
+ file_npwp = fields.Binary(string="NPWP", tracking=True, track_visibility="onchange")
+ file_sppkp = fields.Binary(string="SPPKP", tracking=True, track_visibility="onchange")
+ file_suratPernyataan = fields.Binary(string="Surat Pernyataan Nomor Rekening", tracking=True, track_visibility="onchange")
+ file_fotoKantor = fields.Binary(string="Foto Gudang / Kantor Bagian Depan", tracking=True, track_visibility="onchange")
+ description = fields.Text(string='Deskripsi')
+
@api.model
def _default_payment_term(self):
return self.env.ref('__export__.account_payment_term_26_484409e2').id
@@ -136,6 +160,31 @@ class ResPartner(models.Model):
vals['company_type_id'] = vals.get('company_type_id',
self.company_type_id.id if self.company_type_id else None)
+ # Merchant
+ vals['name_merchant'] = vals.get('name_merchant', self.name_merchant)
+ vals['address_merchant'] = vals.get('address_merchant', self.address_merchant)
+ vals['state_merchant'] = vals.get('state_merchant', self.state_merchant)
+ vals['city_merchant'] = vals.get('city_merchant', self.city_merchant)
+ vals['district_merchant'] = vals.get('district_merchant', self.district_merchant)
+ vals['subDistrict_merchant'] = vals.get('subDistrict_merchant', self.subDistrict_merchant)
+ vals['zip_merchant'] = vals.get('zip_merchant', self.zip_merchant)
+ vals['bank_name_merchant'] = vals.get('bank_name_merchant', self.bank_name_merchant)
+ vals['rekening_name_merchant'] = vals.get('rekening_name_merchant', self.rekening_name_merchant)
+ vals['account_number_merchant'] = vals.get('account_number_merchant', self.account_number_merchant)
+ vals['email_company_merchant'] = vals.get('email_company_merchant', self.email_company_merchant)
+ vals['email_sales_merchant'] = vals.get('email_sales_merchant', self.email_sales_merchant)
+ vals['email_finance_merchant'] = vals.get('email_finance_merchant', self.email_finance_merchant)
+ vals['phone_merchant'] = vals.get('phone_merchant', self.phone_merchant)
+ vals['mobile_merchant'] = vals.get('mobile_merchant', self.mobile_merchant)
+ vals['file_dokumenKtpDirut'] = vals.get('file_dokumenKtpDirut', self.file_dokumenKtpDirut)
+ vals['file_kartuNama'] = vals.get('file_kartuNama', self.file_kartuNama)
+ vals['file_npwp'] = vals.get('file_npwp', self.file_npwp)
+ vals['file_sppkp'] = vals.get('file_sppkp', self.file_sppkp)
+ vals['file_suratPernyataan'] = vals.get('file_suratPernyataan', self.file_suratPernyataan)
+ vals['file_fotoKantor'] = vals.get('file_fotoKantor', self.file_fotoKantor)
+ vals['description'] = vals.get('description', self.description)
+
+
# Simpan hanya field yang perlu di-update pada child
vals_for_child = {
'customer_type': vals.get('customer_type'),
@@ -144,7 +193,32 @@ class ResPartner(models.Model):
'sppkp': vals.get('sppkp'),
'alamat_lengkap_text': vals.get('alamat_lengkap_text'),
'industry_id': vals.get('industry_id'),
- 'company_type_id': vals.get('company_type_id')
+ 'company_type_id': vals.get('company_type_id'),
+
+ # Merchant
+ 'name_merchant': vals.get('name_merchant'),
+ 'address_merchant': vals.get('address_merchant'),
+ 'state_merchant': vals.get('state_merchant'),
+ 'city_merchant': vals.get('city_merchant'),
+ 'district_merchant': vals.get('district_merchant'),
+ 'subDistrict_merchant': vals.get('subDistrict_merchant'),
+ 'zip_merchant': vals.get('zip_merchant'),
+ 'bank_name_merchant': vals.get('bank_name_merchant'),
+ 'rekening_name_merchant': vals.get('rekening_name_merchant'),
+ 'account_number_merchant': vals.get('account_number_merchant'),
+ 'email_company_merchant': vals.get('email_company_merchant'),
+ 'email_sales_merchant': vals.get('email_sales_merchant'),
+ 'email_finance_merchant': vals.get('email_finance_merchant'),
+ 'phone_merchant': vals.get('phone_merchant'),
+ 'mobile_merchant': vals.get('mobile_merchant'),
+ 'file_dokumenKtpDirut': vals.get('file_dokumenKtpDirut'),
+ 'file_kartuNama': vals.get('file_kartuNama'),
+ 'file_npwp': vals.get('file_npwp'),
+ 'file_sppkp': vals.get('file_sppkp'),
+ 'file_suratPernyataan': vals.get('file_suratPernyataan'),
+ 'file_fotoKantor': vals.get('file_fotoKantor'),
+ 'description': vals.get('description'),
+
}
# Lakukan update pada semua child secara rekursif
diff --git a/indoteknik_custom/models/user_form_merchant.py b/indoteknik_custom/models/user_form_merchant.py
new file mode 100644
index 00000000..96568f6c
--- /dev/null
+++ b/indoteknik_custom/models/user_form_merchant.py
@@ -0,0 +1,42 @@
+from odoo import models, fields, api
+from odoo.exceptions import UserError
+from odoo.http import request
+
+
+class UserFormMerchant(models.Model):
+ _name = 'user.form.merchant'
+ _inherit = ['mail.thread', 'mail.activity.mixin']
+ name = fields.Char(string='Name', required=True)
+ name_merchant = fields.Char(string='Name')
+ address = fields.Char(string='Alamat')
+ state = fields.Many2one('res.country.state', string='State')
+ city = fields.Many2one('vit.kota', string='Kota')
+ district = fields.Many2one('vit.kecamatan', string='Kecamatan')
+ subDistrict = fields.Many2one('vit.kelurahan', string='Kelurahan')
+ zip = fields.Char(string='Kode Pos')
+ bank_name = fields.Char(string='Nama Bank')
+ rekening_name = fields.Char(string='Nama Rekening')
+ account_number = fields.Char(string='Nomor Rekening Bank')
+ email_company = fields.Char(string='Email Perusahaan')
+ email_sales = fields.Char(string='Email Sales')
+ email_finance = fields.Char(string='Email Finance')
+ phone = fields.Char(string='No. Telepon Perusahaan')
+ mobile = fields.Char(string='No. Handphone')
+ file_dokumenKtpDirut = fields.Binary(string="KTP Dirut/Direktur", tracking=True, track_visibility="onchange")
+ file_kartuNama = fields.Binary(string="Kartu Nama", tracking=True, track_visibility="onchange")
+ file_npwp = fields.Binary(string="NPWP", tracking=True, track_visibility="onchange")
+ file_sppkp = fields.Binary(string="SPPKP", tracking=True, track_visibility="onchange")
+ file_suratPernyataan = fields.Binary(string="Surat Pernyataan Nomor Rekening", tracking=True, track_visibility="onchange")
+ file_fotoKantor = fields.Binary(string="Foto Gudang / Kantor Bagian Depan", tracking=True, track_visibility="onchange")
+ description = fields.Text(string='Deskripsi')
+
+ @api.depends('name', 'name_merchant')
+ def name_get(self):
+ result = []
+ for record in self:
+ if record.name_merchant:
+ display_name = record.name_merchant
+ else:
+ display_name = "DETAIL FORM MERCHANT"
+ result.append((record.id, display_name))
+ return result \ No newline at end of file
diff --git a/indoteknik_custom/models/user_merchant_request.py b/indoteknik_custom/models/user_merchant_request.py
new file mode 100644
index 00000000..b47f6d1d
--- /dev/null
+++ b/indoteknik_custom/models/user_merchant_request.py
@@ -0,0 +1,96 @@
+from odoo import models, fields, api, _
+from odoo.exceptions import UserError
+from odoo.http import request
+
+
+class RejectReasonWizardMerchant(models.TransientModel):
+ _name = 'reject.reason.wizard.merchant'
+ _description = 'Wizard for Reject Reason'
+
+ request_id = fields.Many2one('user.merchant.request', string='Request')
+ reason_reject = fields.Text(string='Reason for Rejection', required=True)
+
+ def confirm_reject(self):
+ merchant = self.request_id
+ if merchant:
+ merchant.write({'reason_reject': self.reason_reject})
+ merchant.state_merchant = 'reject'
+ return {'type': 'ir.actions.act_window_close'}
+
+
+class ConfirmApprovalWizardMerchant(models.TransientModel):
+ _name = 'confirm.approval.wizard.merchant'
+ _description = 'Wizard Konfirmasi Approval'
+
+ merchant_id = fields.Many2one('user.merchant.request', string='Merchant', required=True)
+
+ def confirm_approval(self):
+ merchant = self.merchant_id
+ if merchant.state_merchant == 'draft':
+ merchant.state_merchant = 'approved'
+
+
+class UserMerchantRequest(models.Model):
+ _name = 'user.merchant.request'
+ _inherit = ['mail.thread', 'mail.activity.mixin']
+ _rec_name = 'user_id'
+
+ user_id = fields.Many2one('res.partner', string='User')
+ merchant_id = fields.Many2one('user.form.merchant', string='Form Merchant')
+ user_company_id = fields.Many2one('res.partner', string='Company')
+ state_merchant = fields.Selection([
+ ('draft', 'Pengajuan Merchant'),
+ ('approved', 'Approved Merchant'),
+ ('reject', 'Rejected'),
+ ], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='draft')
+ reason_reject = fields.Char(string='Reaject Reason')
+
+ def button_approve(self):
+ for merchant in self:
+ return {
+ 'type': 'ir.actions.act_window',
+ 'name': 'Konfirmasi Approve',
+ 'res_model': 'confirm.approval.wizard.merchant',
+ 'view_mode': 'form',
+ 'target': 'new',
+ 'context': {
+ 'default_merchant_id': merchant.id,
+ }}
+
+ def button_reject(self):
+ return {
+ 'type': 'ir.actions.act_window',
+ 'name': _('Reject Reason'),
+ 'res_model': 'reject.reason.wizard.merchant',
+ 'view_mode': 'form',
+ 'target': 'new',
+ 'context': {'default_request_id': self.id},
+ }
+
+ def write(self, vals):
+ is_approve = True if self.state_merchant == 'approved' or vals.get('state_merchant') == 'approved' else False
+ if is_approve:
+ self.user_company_id.name_merchant = self.merchant_id.name_merchant
+ self.user_company_id.address_merchant = self.merchant_id.address
+ self.user_company_id.state_merchant = self.merchant_id.state
+ self.user_company_id.city_merchant = self.merchant_id.city
+ self.user_company_id.district_merchant = self.merchant_id.district
+ self.user_company_id.subDistrict_merchant = self.merchant_id.subDistrict
+ self.user_company_id.zip_merchant = self.merchant_id.zip
+ self.user_company_id.bank_name_merchant = self.merchant_id.bank_name
+ self.user_company_id.rekening_name_merchant = self.merchant_id.rekening_name
+ self.user_company_id.account_number_merchant = self.merchant_id.account_number
+ self.user_company_id.email_company_merchant = self.merchant_id.email_company
+ self.user_company_id.email_sales_merchant = self.merchant_id.email_sales
+ self.user_company_id.email_finance_merchant = self.merchant_id.email_finance
+ self.user_company_id.phone_merchant = self.merchant_id.phone
+ self.user_company_id.mobile_merchant = self.merchant_id.mobile
+ self.user_company_id.file_dokumenKtpDirut = self.merchant_id.file_dokumenKtpDirut
+ self.user_company_id.file_kartuNama = self.merchant_id.file_kartuNama
+ self.user_company_id.file_npwp = self.merchant_id.file_npwp
+ self.user_company_id.file_sppkp = self.merchant_id.file_sppkp
+ self.user_company_id.file_suratPernyataan = self.merchant_id.file_suratPernyataan
+ self.user_company_id.file_fotoKantor = self.merchant_id.file_fotoKantor
+ self.user_company_id.description = self.merchant_id.description
+
+ return super(UserMerchantRequest, self).write(vals) \ No newline at end of file