Skip to Content
Odoo เมนู
  • ลงชื่อเข้าใช้
  • ทดลองใช้ฟรี
  • แอป
    การเงิน
    • ระบบบัญชี
    • ระบบการออกใบแจ้งหนี้
    • ระบบบัญชีรายจ่าย
    • ระบบการจัดการข้อมูลผ่านสเปรดชีต (BI)
    • เอกสาร
    • ระบบลงลายเซ็น
    การขาย
    • ลูกค้าสัมพันธ์
    • การขาย
    • POS ร้านค้า
    • POS ร้านอาหาร
    • ระบบสมัครสมาชิก
    • การเช่า
    การจัดการเว็บไซต์
    • เครื่องมือสร้างเว็บไซต์
    • ระบบการขายออนไลน์
    • บล็อก
    • ฟอรั่ม
    • ไลฟ์แชท
    • ระบบการอบรมออนไลน์
    ซัพพลายเชน
    • คลังสินค้า
    • ระบบการผลิต
    • PLM
    • ระบบการจัดซื้อ
    • การซ่อมบำรุง
    • ระบบจัดการคุณภาพ
    ทรัพยากรบุคคล
    • ข้อมูลพนักงาน
    • ระบบสรรหาบุคลากร
    • ระบบการลา
    • การประเมิน
    • ระบบการแนะนำพนักงาน
    • ระบบจัดการยานพาหนะ
    การตลาด
    • โซเชียลมาร์เก็ตติ้ง
    • การตลาดผ่านอีเมล
    • ระบบการตลาดผ่าน SMS
    • ระบบการจัดงานอีเวนต์
    • การตลาดแบบอัตโนมัติ
    • ระบบแบบสำรวจ
    การบริการ
    • โปรเจกต์
    • ระบบบันทึกเวลา
    • ระบบการจัดการบริการภาคสนาม
    • ระบบดูแลช่วยเหลือ
    • การวางแผน
    • การนัดหมาย
    ประสิทธิผล
    • ระบบแสดงความคิดเห็น
    • ระบบการอนุมัติ
    • ไอโอที
    • VoIP
    • คลังข้อมูล
    • WhatsApp
    แอปพลิเคชันของบุคคลที่สาม Odoo สตูดิโอ แพลตฟอร์มคลาวด์ของ Odoo
  • อุตสาหกรรม
    การค้าปลีก
    • ร้านขายหนังสือ
    • ร้านขายเสื้อผ้า
    • ร้านขายเฟอร์นิเจอร์
    • ร้านขายของชำ
    • ร้านขายฮาร์ดแวร์
    • ร้านขายของเล่น
    Food & Hospitality
    • บาร์และผับ
    • ร้านอาหาร
    • อาหารฟาสต์ฟู้ด
    • Guest House
    • ตัวแทนจำหน่ายเครื่องดื่ม
    • Hotel
    อสังหาริมทรัพย์
    • Real Estate Agency
    • บริษัทสถาปัตยกรรม
    • บริษัทรับเหมา
    • การจัดการอสังหาริมทรัพย์
    • การจัดสวน
    • สมาคมเจ้าของอสังหาริมทรัพย์
    ปรึกษา
    • สำนักงานบัญชี
    • Odoo พาร์ทเนอร์
    • เอเจนซี่การตลาด
    • สำนักงานกฎหมาย
    • บริการสรรหาบุคลากร
    • การตรวจสอบและการรับรอง
    ระบบการผลิต
    • Textile
    • เหล็ก
    • เฟอร์นิเจอร์
    • อาหาร
    • Brewery
    • ของขวัญขององค์กร
    สุขภาพ & ฟิตเนส
    • ชมรมกีฬา
    • ร้านขายแว่นตา
    • ฟิตเนส
    • ผู้ประกอบวิชาชีพด้านสุขภาพ
    • ร้านขายยา
    • ร้านทำผม
    Trades
    • ช่างซ่อม
    • ฮาร์ดแวร์และการสนับสนุนด้านไอที
    • ระบบพลังงานแสงอาทิตย์
    • ช่างทำรองเท้า
    • บริการทำความสะอาด
    • HVAC Services
    อื่น ๆ
    • Nonprofit Organization
    • สำนักงานสิ่งแวดล้อม
    • ร้านเช่าป้ายโฆษณา
    • การถ่ายภาพ
    • ร้านเช่าจักรยาน
    • ตัวแทนจำหน่ายซอฟต์แวร์
    Browse all Industries
  • คอมมูนิตี้
    ศึกษา
    • บทเรียน
    • เอกสารกำกับโปรแกรม
    • การรับรอง
    • การฝึกอบรม
    • บล็อก
    • พอดแคสต์
    เพิ่มศักยภาพให้กับการศึกษา
    • โปรแกรมการศึกษา
    • Scale Up! Business Game
    • เยี่ยมชม Odoo
    รับซอฟต์แวร์
    • ดาวน์โหลด
    • เปรียบเทียบรุ่น
    • เผยแพร่
    ทำงานร่วมกัน
    • Github
    • ฟอรั่ม
    • ระบบการจัดงานอีเวนต์
    • การแปล
    • ร่วมเป็นพาร์ทเนอร์
    • Services for Partners
    • ลงทะเบียนเพื่อสร้างบัญชีบริษัทของคุณ
    รับบริการ
    • ค้นหาพาร์ทเนอร์
    • ค้นหานักบัญชี
    • พบกับที่ปรึกษา
    • บริการติดตั้งระบบเพื่อใช้งาน
    • ข้อมูลอ้างอิงลูกค้า
    • การสนับสนุน
    • อัปเกรด
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    รับการสาธิต
  • ราคา
  • ช่วยเหลือ

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • ลูกค้าสัมพันธ์
  • e-Commerce
  • ระบบบัญชี
  • สินค้าคงคลัง
  • PoS
  • โปรเจกต์
  • MRP
All apps
คุณต้องลงทะเบียนเพื่อโต้ตอบกับคอมมูนิตี้
All Posts คน เหรียญรางวัล
แท็ก (View all)
odoo accounting v14 pos v15
เกี่ยวกับฟอรั่มนี้
คุณต้องลงทะเบียนเพื่อโต้ตอบกับคอมมูนิตี้
All Posts คน เหรียญรางวัล
แท็ก (View all)
odoo accounting v14 pos v15
เกี่ยวกับฟอรั่มนี้
ช่วยเหลือ

How to define custom settings on configuration view?

ติดตาม

รับการแจ้งเตือนเมื่อมีกิจกรรมในโพสต์นี้

คำถามนี้ถูกตั้งค่าสถานะ
configurationodoo8.0
8 ตอบกลับ
13563 มุมมอง
อวตาร
Yenthe Van Ginneken (Mainframe Monkey)

Hi guys,

I've created a new view which should always only allow one record, so I've made a view just like under Settings > Configuration.
1) Create a menu item

 <menuitem id="menu_tech_settings_screen"
                action="technical_details_odoo_installer_action" parent="server_main_menu"
                sequence="30"/>

2) Add an act_window behind it:

 <record id="technical_details_odoo_installer_action" model="ir.actions.act_window">
            <field name="name">Configure settings</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">odoo.environment.technical.settings</field>
            <field name="view_id" ref="configure_technical_settings_odoo_installer"/>
            <field name="view_mode">form</field>
            <field name="target">inline</field>
        </record>

3) Create a view just like under Settings > Configuration > General Settings:

 <record id="configure_technical_settings_odoo_installer" model="ir.ui.view">
            <field name="name">Technical configuration</field>
            <field name="model">odoo.environment.technical.settings</field>
            <field name="arch" type="xml">
                <form string="Configure Sales" class="oe_form_configuration">
                    <header>
                        <button string="Apply" type="object" name="execute" class="oe_highlight"/>
                        or
                        <button string="Cancel" type="object" name="cancel" class="oe_link"/>
                    </header>
		<div name="configuration">
		    <group>
		        <field name="my_custom_field"/>
		    </group>
		</div>
		</form>
	    </field>
	</record>

The view is being rendered fine but I'm now wondering how to proceed. How exactly can I store the new value when a user clicks on the Apply button? There should only be one record at all times and this is used to configure the rest on. I've inherited res.config.settings, created my own model and I have a get and set function for this. Example:

 class my_custom_class(models.Model):
    _name = 'my.custom.model'
    _inherit = 'res.config.settings'
    odoo_username = fields.Char('Ubuntu users password',help='Please fill in the password for the Ubuntu user that runs this Odoo. This password is needed to automatically install a new Odoo server through a shell script. Installing a new Odoo needs sudo rights!',required=True)

    def get_default_username(self, cr, uid, fields, context=None):
        odoo_username=self.pool.get('my.custom.model').browse(cr, uid, uid, context=context).odoo_username
        return {'odoo_username': odoo_username}

    def set_default_username(self, cr, uid, ids, context=None):
        config = self.browse(cr, uid, ids[0], context)
        new_odoo_username=config.odoo_username
        self.pool.get('my.custom.model').write(cr, uid, uid, {'odoo_username': new_odoo_username})

The problem here is that this will still create a new record every time and I'm not sure if this is the correct behaviour for this type of view either.

Thanks,
Yenthe

1
อวตาร
ละทิ้ง
Gautam

Hello yenthe,

I am also facing the same issue in odoo 12. So did you find any solution for that?

อวตาร
Tarek Mohamed Ibrahim
คำตอบที่ดีที่สุด

I checked your code, but since I don't have much experience with inheriting res.config.settings I can't judge if this is not appropriate, or find a bug in it. 

Instead, I came up with a different solution, you don't need to inherit the settings class, you can create a new class for your setup purpose.


Code is below:

This is the class:

class my_custom_class(osv.osv):
    _name = 'my.custom.class'
    _description = 'my_custom_class'
    _columns = {
        'odoo_username':fields.char(string='odoo_username',),
        }
my_custom_class()

 

This is the view, along with the menu and the action

<record id="my_custom_class_view" model="ir.ui.view">
<field name="name">my.custom.class.view</field>
<field name="model">my.custom.class</field>
<field name="arch" type="xml">
<form string="my custom class" create="false" delete="false">
<field name="odoo_username" string="Odoo Username"/>
</form>
</field>
</record>
<record id="act_my_custom_class_view" model="ir.actions.act_window">
<field name="name">my.custom.class.view</field>
<field name="res_model">my.custom.class</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
</record>
<!-- the following is a one record as initial data -->
<record id="my_custom_class_only_one_record" model="my.custom.class">
<field name="odoo_username">"test odoo user name"</field>
</record>

<menuitem action="act_my_custom_class_view" id="menu_act_my_custom_class_view" parent="some_module.some_parent_id" sequence="30"/>

Note that I tagged the view form with 

create="false" delete="false" 

so, no one can add or delete records to this view

I also furnished this class with one data record with initial value(s) user can starts with.

I hope this will help until we get some more experience with the res.config.settings, which is the standard for this purpose.

1
อวตาร
ละทิ้ง
Yenthe Van Ginneken (Mainframe Monkey)
ผู้เขียน

Thanks for your answer Tarek! I gave you a +1 since its another option and it would work but I honestly do not think this is the ideal way to do it.

Tarek Mohamed Ibrahim

I agree with you that this is not the ideal way, and for that I said that "I hope this will help until we get some more experience with the res.config.settings". This is a workaround, I do that when I'm pressed in time and need to deliver to the customer. When got the idea and there is an area to enhance, I provide the customer with the standard solution

Rohit Pandey

Hi @Yenthe, can you tell me how you do this?

อวตาร
Anil Kesariya
คำตอบที่ดีที่สุด

HI Yenthe,

These solution might helps you.

1) Override create method of new model and search all the records created with new model and check length if  already having 1 than either raise warning or just return false instead of retuning result of super. this will stop user to creating more than 1 record in new model.

2) Apply create="false" and edit="false" in both tree and form view of new model. and create of actions todo with trigger your actions in that case open the form view in edit mode which will trigger once you install or upgrade module after adding this feature which will create record as you want than . after that user will not able to add any record inside as create & edit is false already.

Hope this might help.

Rgds,

Anil.




0
อวตาร
ละทิ้ง
Yenthe Van Ginneken (Mainframe Monkey)
ผู้เขียน

Thanks for your answer Anil! While this is a way and it will work I can't imagine that this is the way to go. Sounds like a lot of hassle and code for such a little functionality.

Anil Kesariya

@yenthe: If you don't want to show that record that user than don't create any action or view for that. Just create record in back end by automated actions as simple as that. But if you want to show that records in UI with different view and model than of course you have to create views and action for it.

สนุกกับการพูดคุยนี้ใช่ไหม? เข้าร่วมเลย!

สร้างบัญชีวันนี้เพื่อเพลิดเพลินไปกับฟีเจอร์พิเศษและมีส่วนร่วมกับคอมมูนิตี้ที่ยอดเยี่ยมของเรา!

ลงชื่อ
Related Posts ตอบกลับ มุมมอง กิจกรรม
how to add landed cost per product, such as adding Customs Tariffs fee on product and other products don't have Customs Tariffs??
configuration
อวตาร
0
ธ.ค. 25
14
Installation Odoo 17 Community
configuration
อวตาร
อวตาร
1
พ.ย. 25
1123
Multiple trading names under one legal entity
configuration
อวตาร
0
พ.ย. 25
45
Odoo Lot Location Missing After Partial Stock Move
configuration
อวตาร
0
พ.ย. 25
3
Adding a new security group to an existing module
configuration
อวตาร
0
พ.ย. 25
6
คอมมูนิตี้
  • บทเรียน
  • เอกสารกำกับโปรแกรม
  • ฟอรั่ม
โอเพนซอร์ส
  • ดาวน์โหลด
  • Github
  • Runbot
  • การแปล
บริการ
  • โฮสติ้ง odoo.sh เซิร์ฟเวอร์
  • การสนับสนุน
  • อัปเกรด
  • การพัฒนาที่กำหนดเอง
  • การศึกษา
  • ค้นหานักบัญชี
  • ค้นหาพาร์ทเนอร์
  • ร่วมเป็นพาร์ทเนอร์
เกี่ยวกับเรา
  • บริษัทของเรา
  • ทรัพย์สินในรูปของเครื่องหมายการค้า
  • ติดต่อเรา
  • งาน
  • ระบบการจัดงานอีเวนต์
  • พอดแคสต์
  • บล็อก
  • ลูกค้า
  • กฎหมาย • ความเป็นส่วนตัว
  • ความปลอดภัย
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo เป็นชุดแอปธุรกิจแบบเปิดที่ครอบคลุมทุกความต้องการของบริษัทของคุณ อาธิ CRM eCommerce ระบบบัญชี ระบบสินค้าคงคลัง ระบบการขายหน้าร้าน โปรเจกต์ และ อีกมากมาย

ความเหนือกว่าอันเป็นเอกลักษณ์ของ Odoo คือการใช้งานที่ง่ายดายและผสานการทำงานอย่างสมบูรณ์แบบในเวลาเดียวกัน

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now