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 change the value of a field which depends on other fields automatically ?

ติดตาม

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

คำถามนี้ถูกตั้งค่าสถานะ
python3odoo11
2 ตอบกลับ
15756 มุมมอง
อวตาร
Dhouha

I have installed a custom module named "bt_hr_overtime" because i want to calculate the overtime of each employee. This module use a scheduled action which called run_overtime_scheduler. The probleme is the overtime hours is depending of the check in hour and check ou hour . So if the employees modify his attendance information the overtime hours don't change which is not correct. Any idea on how to make the overtime hours change automatically when the attendance information changed. i have created a button to recalculate the overtime hours.

overtime.py

@api.model
def run_overtime_scheduler(self):
    """ This Function is called by scheduler. """

current_date = date.today()
working_hours_empl = self.env['hr.contract']
attend_signin_ids = self.env['hr.attendance'].search([('overtime_created', '=', False)])
for obj in attend_signin_ids:
    if obj.check_in and obj.check_out:
        start_date = datetime.datetime.strptime(obj.check_in, DEFAULT_SERVER_DATETIME_FORMAT)
end_date = datetime.datetime.strptime(obj.check_out, DEFAULT_SERVER_DATETIME_FORMAT)
difference = end_date - start_date
hour_diff = str(difference).split(':')[0]
min_diff = str(difference).split(':')[1]
tot_diff = hour_diff + '.' + min_diff
actual_working_hours = float(tot_diff)
contract_obj = self.env['hr.contract'].search([('employee_id', '=', obj.employee_id.id), ('work_hours', '!=', 0)])
for contract in contract_obj:
    working_hours = contract.work_hours
if actual_working_hours > working_hours:
    overtime_hours = actual_working_hours - working_hours
vals = {
    'employee_id': obj.employee_id and obj.employee_id.id or False,
    'manager_id': obj.employee_id and obj.employee_id.parent_id and obj.employee_id.parent_id.id or False,
    'start_date': obj.check_in,
    'overtime_hours': round(overtime_hours, 2),
    'attendance_id': obj.id,
}
self.env['bt.hr.overtime'].create(vals)
obj.overtime_created = True

overtime.xml

<record id="bt_overtime_management_form" model="ir.ui.view">
        <field name="name">bt.hr.overtime.form</field>
        <field name="model">bt.hr.overtime</field>
        <field name="arch" type="xml">
            <form string="Overtime">
            <header>
                <button name="action_submit" type="object" string="Submit" groups="base.group_user" attrs="{'invisible':[('state', '!=', 'draft')]}"/>
                <button name="action_cancel" type="object" string="Cancel" groups="base.group_user,hr.group_hr_manager" attrs="{'invisible':[('state', '!=', 'confirm')]}"/>
                <button name="action_approve" type="object" string="Approve" groups="hr.group_hr_manager" attrs="{'invisible':[('state', '!=', 'confirm')]}"/>
                <button name="action_refuse" type="object" string="Refuse" groups="hr.group_hr_manager" attrs="{'invisible':[('state', '!=', 'confirm')]}"/>
                <field name="state" widget="statusbar" statusbar_visible="draft,confirm,refuse,validate,cancel"/>
                <button name="recalculate" type="object" string="Recalculate" class="oe_highlight"/>
            </header>
            <sheet>
                <div class="oe_button_box" name="button_box">
                    <button name="action_view_attendance" type="object" 
                    class="oe_stat_button" icon="fa-user" string="Attendance">
                    </button>
                </div>
                <group>
                    <group>
                        <field name="employee_id" required="True" readonly="0"/>
                        <field name="manager_id" readonly="0"/>
                    </group>
                    <group>
                        <field name="start_date" readonly="0"/>
                        <field name="overtime_hours" readonly="0" />
                        <field name="attendance_id" invisible="1"/>
                    </group>
                </group>
               <notebook>
                    <page string="Notes">
                        <field name="notes"/>
                    </page>
               </notebook>
            </sheet>
           </form>
        </field>
      </record> 


0
อวตาร
ละทิ้ง
อวตาร
Sudhir Arya (ERP Harbor Consulting Services)
คำตอบที่ดีที่สุด

You can make overtime field as compute field and define other fields in api.depends('field1', 'field2').

If you don't want to use compute field, override create, write methods and check your other fields in the vals. If they are in the vals, then calculate the overtime and update the overtime field by passing it's value to vals.


 

3
อวตาร
ละทิ้ง
Dhouha
ผู้เขียน

But i need to change overtime_hours in everytime the employee modify their check in/out in the model hr.attendance is it possible ?

Dhouha
ผู้เขียน

Can i use @api.onchange as another solution ?

Dhouha
ผู้เขียน

Could you help me please. i'm stuck with this problem and i'm new in odoo and i'm don't know how to make overtime field as a computed field . Should i modify this function run_overtime_scheduler ?

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

Install the base_automation module.
It will allow you to run various actions automatically and depending on what, for example, will be saved in another model and record. Bellow description of this module:

This module allows to implement action rules for any object.
============================================================

Use automated actions to automatically trigger actions for various screens.

**Example:** A lead created by a specific user may be automatically set to a specific
sales channel, or an opportunity which still has status pending after 14 days might
trigger an automatic reminder email.


UPDATE:

1. Install base_automation
2. Enable developer mode
3. Got to menu /Settings/Technical/Automation/Automated actions
4. Click on create, select Trigger Condition = On Creation & Update, select model = hr.attendance
5. Now OR:
5a. Select Action To Do = Execute Python Code and create your code (first you read help info in field)
5b. Select Action To Do = Execute several actions and select server action/s (create a server action beforehand)

​

1
อวตาร
ละทิ้ง
Dhouha
ผู้เขียน

how could i use this model to relate the update of the field overtime_hours to fields check in /out from the hr.attendance model ?

Zbik

You use trigger on_write on model hr.attendance and server action = your action.

Dhouha
ผู้เขียน

can i use @api.onchange as another solution ?

Zbik

onchange is not a good solution. This method shuld be used for manipulate record values presented in the form. See documentation: https://www.odoo.com/documentation/12.0/reference/orm.html#module-odoo.api

Dhouha
ผู้เขียน

Could you help me please. i'm stuck with this problem and i'm new with odoo, i don't know how to use trigger on_write on model hr.attendance

Zbik

My answer is updated - with steps.

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

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

ลงชื่อ
Related Posts ตอบกลับ มุมมอง กิจกรรม
How to set a filter as default filter in odoo แก้ไขแล้ว
python3 odoo11
อวตาร
อวตาร
อวตาร
2
ก.พ. 24
16837
How to set default stage to when recruitement record is created แก้ไขแล้ว
python3 odoo11
อวตาร
อวตาร
1
ธ.ค. 22
5871
how to modify fields of hr.attendance via a modification request automatically แก้ไขแล้ว
python3 odoo11
อวตาร
อวตาร
อวตาร
2
มิ.ย. 22
7938
how to update field of attendance via an attendance request modification
python3 odoo11
อวตาร
อวตาร
อวตาร
2
มิ.ย. 22
5866
Field Value Update In Another Module Depend On Calculation
python3 odoo11
อวตาร
0
พ.ค. 22
4662
คอมมูนิตี้
  • บทเรียน
  • เอกสารกำกับโปรแกรม
  • ฟอรั่ม
โอเพนซอร์ส
  • ดาวน์โหลด
  • 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