Membuat Tampilan berbeda dalam satu model

Assalamualaikum warahmatullahi wabarakatuh.
Pada kesempatan kali ini saya akan membahas untuk membuat tampilan berbeda dalam satu model. Dimana disini kita akan menampilkan tampilan purchase request pada tiga modul yaitu di accounting, inventory dan purchase nya sendiri 

o  Menambahkan menuitem purchase request pada modul accounting dan inventory dan setiap form nya mempunyai perlakuannya masing-masing, untuk tampilannya sama tapi di accounting khusus untuk form aseet dan di purchase nya sendiri hanya untuk read saja sedangkan untk menambahkan purchase nya ada di menu inventory, pertamanya 
Kita tambahkan field selection bernama purchase_type dimana field nya untuk penanda setiap form masing-masing bida di jadikan domain, dimana ada form asset untuk tampilan purchase request di accounting dan pr untuk domain di tampilan inventory kemudian view_pr nya sendiri untuk tampilan di purchase nya

class PurchaseRequest(models.Model):
_inherit = 'purchase.request'
amount_total = fields.Monetary('amount_total')
partner_id = fields.Many2one('res.partner', string='Vendor')
scheduled = fields.Datetime('Scheduled Date')
purchase_type = fields.Selection(selection=[
('form_asset', 'Form Asset'),
('pr', 'Purchase Request'),
('view_pr', 'Purchase Request View'),
], string='Type',
required=True,
readonly=True,
tracking=True,
change_default=True,
index=True,
default="entry",)


o  Kemudian menambahkan menu action baru untuk masing-masing menu misalnya ini menu action untuk tampilan di accounting dimana kitaa tambahkan domain dan context nya sesuai dengan isi selection yang tadi di buat, dimana untuk tampilannya tinggal meneysuaikan saja dengan menambahkan kondisi nya

<record model="ir.actions.act_window" id="purchase_request_asset_form_action">
<field name="name">Form Asset</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">purchase.request</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('purchase_type', '=', 'form_asset')]</field>
<field name="context">{"default_purchase_type":'form_asset'}</field>
<field name="search_view_id" ref="purchase_request.view_purchase_request_search" />
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to start a new purchase request process.
</p>
<p>
A purchase request is an instruction to Purchasing to procure
a certain quantity of materials services, so that they are
available at a certain point in time.
</p>
</field>
</record>

o  Kemudian untuk tampilan di purchase request yang hanya bisa di liat tidak bisa di edit delete dan update tambahkan kode, kemudian untuk mengaturnya bisa juga di tambahkan akses

@api.model
def get_view(self, view_id=None, view_type='form', **options):
res = super().get_view(view_id=view_id, view_type=view_type, options=options)
if view_type in ('form', 'tree', 'kanban') and res.get('model') == 'purchase.request':
doc = etree.XML(res['arch'])
if self.env.context.get('search_default_requested_by'):
for node in doc.xpath("//tree | //form | //kanban"):
node.set("create", "false")
node.set("edit", "false")
node.set("delete", "false")
res['arch'] = etree.tostring(doc)
return res


o Untuk mengantur purchase request hanya bisa meliha tidak create delete dan update 

<record id="create_master_product_confirm" model="res.groups">
<field name="name">Purchase Request / Create</field>
</record>


untuk tampilan yang lainnya tinggal membuat masing-masing action dengan domain yang berbeda Assalamualaikum warahmatullahi wabarakatuh.

Pada kesempatan kali ini saya akan membahas untuk membuat tampilan berbeda dalam satu model. Dimana disini kita akan menampilkan tampilan purchase request pada tiga modul yaitu di accounting, inventory dan purchase nya sendiri 

o  Menambahkan menuitem purchase request pada modul accounting dan inventory dan setiap form nya mempunyai perlakuannya masing-masing, untuk tampilannya sama tapi di accounting khusus untuk form aseet dan di purchase nya sendiri hanya untuk read saja sedangkan untk menambahkan purchase nya ada di menu inventory, pertamanya 
Kita tambahkan field selection bernama purchase_type dimana field nya untuk penanda setiap form masing-masing bida di jadikan domain, dimana ada form asset untuk tampilan purchase request di accounting dan pr untuk domain di tampilan inventory kemudian view_pr nya sendiri untuk tampilan di purchase nya

class PurchaseRequest(models.Model):
_inherit = 'purchase.request'
amount_total = fields.Monetary('amount_total')
partner_id = fields.Many2one('res.partner', string='Vendor')
scheduled = fields.Datetime('Scheduled Date')
purchase_type = fields.Selection(selection=[
('form_asset', 'Form Asset'),
('pr', 'Purchase Request'),
('view_pr', 'Purchase Request View'),
], string='Type',
required=True,
readonly=True,
tracking=True,
change_default=True,
index=True,
default="entry",)


o  Kemudian menambahkan menu action baru untuk masing-masing menu misalnya ini menu action untuk tampilan di accounting dimana kitaa tambahkan domain dan context nya sesuai dengan isi selection yang tadi di buat, dimana untuk tampilannya tinggal meneysuaikan saja dengan menambahkan kondisi nya

<record model="ir.actions.act_window" id="purchase_request_asset_form_action">
<field name="name">Form Asset</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">purchase.request</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('purchase_type', '=', 'form_asset')]</field>
<field name="context">{"default_purchase_type":'form_asset'}</field>
<field name="search_view_id" ref="purchase_request.view_purchase_request_search" />
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to start a new purchase request process.
</p>
<p>
A purchase request is an instruction to Purchasing to procure
a certain quantity of materials services, so that they are
available at a certain point in time.
</p>
</field>
</record>

o  Kemudian untuk tampilan di purchase request yang hanya bisa di liat tidak bisa di edit delete dan update tambahkan kode, kemudian untuk mengaturnya bisa juga di tambahkan akses

@api.model
def get_view(self, view_id=None, view_type='form', **options):
res = super().get_view(view_id=view_id, view_type=view_type, options=options)
if view_type in ('form', 'tree', 'kanban') and res.get('model') == 'purchase.request':
doc = etree.XML(res['arch'])
if self.env.context.get('search_default_requested_by'):
for node in doc.xpath("//tree | //form | //kanban"):
node.set("create", "false")
node.set("edit", "false")
node.set("delete", "false")
res['arch'] = etree.tostring(doc)
return res


o Untuk mengantur purchase request hanya bisa meliha tidak create delete dan update 

<record id="create_master_product_confirm" model="res.groups">
<field name="name">Purchase Request / Create</field>
</record>


untuk tampilan yang lainnya tinggal membuat masing-masing action dengan domain yang berbeda Assalamualaikum warahmatullahi wabarakatuh.

Pada kesempatan kali ini saya akan membahas untuk membuat tampilan berbeda dalam satu model. Dimana disini kita akan menampilkan tampilan purchase request pada tiga modul yaitu di accounting, inventory dan purchase nya sendiri 

o  Menambahkan menuitem purchase request pada modul accounting dan inventory dan setiap form nya mempunyai perlakuannya masing-masing, untuk tampilannya sama tapi di accounting khusus untuk form aseet dan di purchase nya sendiri hanya untuk read saja sedangkan untk menambahkan purchase nya ada di menu inventory, pertamanya 
Kita tambahkan field selection bernama purchase_type dimana field nya untuk penanda setiap form masing-masing bida di jadikan domain, dimana ada form asset untuk tampilan purchase request di accounting dan pr untuk domain di tampilan inventory kemudian view_pr nya sendiri untuk tampilan di purchase nya

class PurchaseRequest(models.Model):
_inherit = 'purchase.request'
amount_total = fields.Monetary('amount_total')
partner_id = fields.Many2one('res.partner', string='Vendor')
scheduled = fields.Datetime('Scheduled Date')
purchase_type = fields.Selection(selection=[
('form_asset', 'Form Asset'),
('pr', 'Purchase Request'),
('view_pr', 'Purchase Request View'),
], string='Type',
required=True,
readonly=True,
tracking=True,
change_default=True,
index=True,
default="entry",)


o  Kemudian menambahkan menu action baru untuk masing-masing menu misalnya ini menu action untuk tampilan di accounting dimana kitaa tambahkan domain dan context nya sesuai dengan isi selection yang tadi di buat, dimana untuk tampilannya tinggal meneysuaikan saja dengan menambahkan kondisi nya

<record model="ir.actions.act_window" id="purchase_request_asset_form_action">
<field name="name">Form Asset</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">purchase.request</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('purchase_type', '=', 'form_asset')]</field>
<field name="context">{"default_purchase_type":'form_asset'}</field>
<field name="search_view_id" ref="purchase_request.view_purchase_request_search" />
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to start a new purchase request process.
</p>
<p>
A purchase request is an instruction to Purchasing to procure
a certain quantity of materials services, so that they are
available at a certain point in time.
</p>
</field>
</record>

o  Kemudian untuk tampilan di purchase request yang hanya bisa di liat tidak bisa di edit delete dan update tambahkan kode, kemudian untuk mengaturnya bisa juga di tambahkan akses

@api.model
def get_view(self, view_id=None, view_type='form', **options):
res = super().get_view(view_id=view_id, view_type=view_type, options=options)
if view_type in ('form', 'tree', 'kanban') and res.get('model') == 'purchase.request':
doc = etree.XML(res['arch'])
if self.env.context.get('search_default_requested_by'):
for node in doc.xpath("//tree | //form | //kanban"):
node.set("create", "false")
node.set("edit", "false")
node.set("delete", "false")
res['arch'] = etree.tostring(doc)
return res


o Untuk mengantur purchase request hanya bisa meliha tidak create delete dan update 

<record id="create_master_product_confirm" model="res.groups">
<field name="name">Purchase Request / Create</field>
</record>


untuk tampilan yang lainnya tinggal membuat masing-masing action dengan domain yang berbeda 




Cara Menampilkan Field-Field dan Value Debug/Print Yang Mempunyai Nilai ID Agar Dapat Menampilkan Semua Field dan Valuenya Dari ID Tersebut Tanpa Melihat Query Deluxe