summaryrefslogtreecommitdiff
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
parentefe91d5ed3170b1d8e2dc217a05261dfbd9687d5 (diff)
<iman> add form merchant
-rw-r--r--indoteknik_api/controllers/api_v1/lead.py22
-rwxr-xr-xindoteknik_custom/__manifest__.py2
-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
-rwxr-xr-xindoteknik_custom/security/ir.model.access.csv4
-rw-r--r--indoteknik_custom/views/res_partner.xml38
-rw-r--r--indoteknik_custom/views/user_form_merchant.xml77
-rw-r--r--indoteknik_custom/views/user_merchant_request.xml112
10 files changed, 464 insertions, 7 deletions
diff --git a/indoteknik_api/controllers/api_v1/lead.py b/indoteknik_api/controllers/api_v1/lead.py
index f0cfa1be..7a964b21 100644
--- a/indoteknik_api/controllers/api_v1/lead.py
+++ b/indoteknik_api/controllers/api_v1/lead.py
@@ -32,7 +32,7 @@ class Lead(controller.Controller):
@controller.Controller.must_authorized()
def create_merchant(self, **kw):
params = self.get_request_params(kw, {
- "name": ["required"],
+ "name_merchant": ["required"],
"address": [],
"state": [],
"city": [],
@@ -44,7 +44,7 @@ class Lead(controller.Controller):
"account_number": [],
"email_company": [],
"email_sales": [],
- "email_finnance": [],
+ "email_finance": [],
"phone": [],
"mobile": [],
"file_dokumenKtpDirut ": [],
@@ -53,14 +53,24 @@ class Lead(controller.Controller):
"file_sppkp": [],
"file_suratPernyataan": [],
"file_fotoKantor": [],
- "description": []
+ "description": [],
})
+ filtered_params = {key: value for key, value in params['value'].items() if value}
+ lead = request.env['user.form.merchant'].create(filtered_params)
+
+ partner_id = int(kw.get('partner_id'))
+
+ partner = request.env['res.partner'].search([('id', '=', partner_id)], limit=1)
if not params['valid']:
return self.response(code=400, description=params)
- # params['value']['user_id'] = 20
+ main_partner = partner.get_main_parent()
- # lead = request.env['crm.lead'].create(params['value'])
+ user_merchant_request = request.env['user.merchant.request'].create({
+ 'user_id': partner.id,
+ 'merchant_id': lead.id,
+ 'user_company_id': main_partner.id
+ })
- return self.response(True) \ No newline at end of file
+ return self.response(True)
diff --git a/indoteknik_custom/__manifest__.py b/indoteknik_custom/__manifest__.py
index 89f62524..b0f29747 100755
--- a/indoteknik_custom/__manifest__.py
+++ b/indoteknik_custom/__manifest__.py
@@ -30,6 +30,8 @@
'views/web_logging/user_activity_log.xml',
'views/web_logging/web_utm_source.xml',
'views/user_company_request.xml',
+ 'views/user_form_merchant.xml',
+ 'views/user_merchant_request.xml',
'views/vit_kelurahan.xml',
'views/vit_kecamatan.xml',
'views/vit_kota.xml',
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
diff --git a/indoteknik_custom/security/ir.model.access.csv b/indoteknik_custom/security/ir.model.access.csv
index 2375df9d..7bf84d2c 100755
--- a/indoteknik_custom/security/ir.model.access.csv
+++ b/indoteknik_custom/security/ir.model.access.csv
@@ -148,3 +148,7 @@ access_sales_order_fulfillment_v2,access.sales.order.fulfillment.v2,model_sales_
access_v_move_outstanding,access.v.move.outstanding,model_v_move_outstanding,,1,1,1,1
access_va_multi_approve,access.va.multi.approve,model_va_multi_approve,,1,1,1,1
access_va_multi_reject,access.va.multi.reject,model_va_multi_reject,,1,1,1,1
+access_user_form_merchant,access.user.form.merchant,model_user_form_merchant,,1,1,1,1
+access_user_merchant_request,access.user.merchant.request,model_user_merchant_request,,1,1,1,1
+access_reject_reason_wizard_merchant,reject.reason.wizard.merchant,model_reject_reason_wizard_merchant,,1,1,1,0
+access_confirm_approval_wizard_merchant,confirm.approval.wizard.merchant,model_confirm_approval_wizard_merchant,,1,1,1,0
diff --git a/indoteknik_custom/views/res_partner.xml b/indoteknik_custom/views/res_partner.xml
index 7b13fef7..5fcc7de5 100644
--- a/indoteknik_custom/views/res_partner.xml
+++ b/indoteknik_custom/views/res_partner.xml
@@ -80,6 +80,44 @@
<xpath expr="//field[@name='property_supplier_payment_term_id']" position="attributes">
<attribute name="readonly">1</attribute>
</xpath>
+ <notebook>
+ <page string="Merchant">
+ <group>
+ <group>
+ <field name="name_merchant" />
+ <field name="address_merchant" />
+ <field name="state_merchant" />
+ <field name="city_merchant" />
+ <field name="district_merchant" />
+ <field name="subDistrict_merchant" />
+ <field name="zip_merchant" />
+ </group>
+ <group>
+ <field name="bank_name_merchant" />
+ <field name="rekening_name_merchant" />
+ <field name="account_number_merchant" />
+ </group>
+ <group>
+ <field name="file_dokumenKtpDirut" widget="pdf_viewer"/>
+ <field name="file_kartuNama" widget="pdf_viewer"/>
+ <field name="file_npwp" widget="pdf_viewer"/>
+ <field name="file_sppkp" widget="pdf_viewer"/>
+ <field name="file_suratPernyataan" widget="pdf_viewer"/>
+ <field name="file_fotoKantor" widget="image"/>
+ </group>
+ <group>
+ <field name="email_company_merchant" widget="email"/>
+ <field name="email_sales_merchant" widget="email"/>
+ <field name="email_finance_merchant" widget="email"/>
+ <field name="phone_merchant" widget="phone"/>
+ <field name="mobile_merchant" widget="phone"/>
+ </group>
+ <group>
+ <field name="description" />
+ </group>
+ </group>
+ </page>
+ </notebook>
</field>
</record>
</data>
diff --git a/indoteknik_custom/views/user_form_merchant.xml b/indoteknik_custom/views/user_form_merchant.xml
new file mode 100644
index 00000000..f4f91933
--- /dev/null
+++ b/indoteknik_custom/views/user_form_merchant.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<odoo>
+ <record id="user_form_merchant_tree" model="ir.ui.view">
+ <field name="name">user.form.merchant.tree</field>
+ <field name="model">user.form.merchant</field>
+ <field name="arch" type="xml">
+ <tree create="1" default_order="create_date desc">
+ <field name="name_merchant"/>
+ <field name="email_company"/>
+ <field name="phone"/>
+ <field name="description"/>
+ <field name="create_date"/>
+ </tree>
+ </field>
+ </record>
+
+ <record id="user_form_merchant_form" model="ir.ui.view">
+ <field name="name">user.form.merchant.form</field>
+ <field name="model">user.form.merchant</field>
+ <field name="arch" type="xml">
+ <form create="0">
+ <sheet>
+ <group>
+ <group>
+ <field name="name_merchant" />
+ <field name="address" />
+ <field name="state" />
+ <field name="city" />
+ <field name="district" />
+ <field name="subDistrict" />
+ <field name="zip" />
+ </group>
+ <group>
+ <field name="bank_name" />
+ <field name="rekening_name" />
+ <field name="account_number" />
+ </group>
+ <group>
+ <field name="file_dokumenKtpDirut" widget="pdf_viewer"/>
+ <field name="file_kartuNama" widget="pdf_viewer"/>
+ <field name="file_npwp" widget="pdf_viewer"/>
+ <field name="file_sppkp" widget="pdf_viewer"/>
+ <field name="file_suratPernyataan" widget="pdf_viewer"/>
+ <field name="file_fotoKantor" widget="image"/>
+ </group>
+ <group>
+ <field name="email_company" widget="email"/>
+ <field name="email_sales" widget="email"/>
+ <field name="email_finance" widget="email"/>
+ <field name="phone" widget="phone"/>
+ <field name="mobile" widget="phone"/>
+ </group>
+ <group>
+ <field name="description" />
+ </group>
+ </group>
+ </sheet>
+ </form>
+ </field>
+ </record>
+
+ <record id="action_user_form_merchant" model="ir.actions.act_window">
+ <field name="name">User Form Merchant</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">user.form.merchant</field>
+ <field name="view_mode">tree,form</field>
+ </record>
+
+ <menuitem
+ id="menu_user_form_merchant"
+ name="User Form Merchant"
+ parent="contacts.menu_contacts"
+ sequence="3"
+ action="action_user_form_merchant"
+ />
+
+</odoo> \ No newline at end of file
diff --git a/indoteknik_custom/views/user_merchant_request.xml b/indoteknik_custom/views/user_merchant_request.xml
new file mode 100644
index 00000000..c67daae4
--- /dev/null
+++ b/indoteknik_custom/views/user_merchant_request.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<odoo>
+ <record id="user_merchant_request_tree" model="ir.ui.view">
+ <field name="name">user.merchant.request.tree</field>
+ <field name="model">user.merchant.request</field>
+ <field name="arch" type="xml">
+ <tree create="1" default_order="create_date desc">
+ <field name="user_id"/>
+ <field name="merchant_id"/>
+ <field name="state_merchant" decoration-success="state_merchant == 'approved'" decoration-danger="state_merchant == 'reject'" widget="badge" optional="show"/>
+ <field name="create_date"/>
+ </tree>
+ </field>
+ </record>
+
+ <record id="user_merchant_request_form" model="ir.ui.view">
+ <field name="name">user.merchant.request.form</field>
+ <field name="model">user.merchant.request</field>
+ <field name="arch" type="xml">
+ <form create="0">
+ <header>
+ <button name="button_approve"
+ string="Approve Merchant"
+ attrs="{'invisible': [('state_merchant', 'in', ['approved','reject'])]}"
+ type="object"
+ class="oe_highlight"/>
+ <button name="button_reject"
+ string="Reject"
+ attrs="{'invisible': [('state_merchant', 'in', ['approved','reject'])]}"
+ type="object"
+ groups="purchase.group_purchase_manager"
+ class="oe_highlight"/>
+ <field name="state_merchant" widget="statusbar"
+ statusbar_visible="draft,approved"
+ statusbar_colors='{"reject":"red"}'/>
+ </header>
+ <sheet>
+ <group>
+ <group>
+ <field name="user_id" readonly="1"/>
+ <field name="merchant_id"/>
+ </group>
+ </group>
+ </sheet>
+ <div class="oe_chatter">
+ <field name="message_ids" widget="mail_thread"/>
+ </div>
+ </form>
+ </field>
+</record>
+
+
+
+
+ <!-- Wizard for Reject Reason -->
+<record id="view_reject_reason_wizard_merchant_form" model="ir.ui.view">
+ <field name="name">reject.reason.wizard.merchant.form</field>
+ <field name="model">reject.reason.wizard.merchant</field>
+ <field name="arch" type="xml">
+ <form string="Reject Reason">
+ <group>
+ <field name="reason_reject" widget="text"/>
+ </group>
+ <footer>
+ <button string="Confirm" type="object" name="confirm_reject" class="btn-primary"/>
+ <button string="Cancel" class="btn-secondary" special="cancel"/>
+ </footer>
+ </form>
+ </field>
+</record>
+
+<record id="action_reject_reason_wizard_merchant" model="ir.actions.act_window">
+ <field name="name">Reject Reason</field>
+ <field name="res_model">reject.reason.wizard.merchant</field>
+ <field name="view_mode">form</field>
+ <field name="target">new</field>
+</record>
+
+
+<record id="view_confirm_approval_wizard_merchant_form" model="ir.ui.view">
+ <field name="name">confirm.approval.wizard.merchant.form</field>
+ <field name="model">confirm.approval.wizard.merchant</field>
+ <field name="arch" type="xml">
+ <form string="Konfirmasi Approval">
+ <group>
+ <p>Apakah Anda yakin ingin mengapprove merchant ini?</p>
+ </group>
+ <footer>
+ <button string="Batal" class="btn-secondary" special="cancel"/>
+ <button string="Konfirmasi" type="object" name="confirm_approval" class="btn-primary"/>
+ </footer>
+ </form>
+ </field>
+</record>
+
+
+
+ <record id="action_user_merchant_request" model="ir.actions.act_window">
+ <field name="name">User Merchant Request</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">user.merchant.request</field>
+ <field name="view_mode">tree,form</field>
+ </record>
+
+ <menuitem
+ id="menu_user_merchant_request"
+ name="User Merchant Request"
+ parent="contacts.menu_contacts"
+ sequence="3"
+ action="action_user_merchant_request"
+ />
+</odoo> \ No newline at end of file