Skip to content

[16.0][IMP] purchase_work_acceptance_todo: rebuild as pure base.automation module - #1218

Open
madara1150 wants to merge 8 commits into
16.0from
madara1150/migrate-work-acceptance-to-base-automation
Open

[16.0][IMP] purchase_work_acceptance_todo: rebuild as pure base.automation module#1218
madara1150 wants to merge 8 commits into
16.0from
madara1150/migrate-work-acceptance-to-base-automation

Conversation

@madara1150

Copy link
Copy Markdown
Collaborator

สรุปการเปลี่ยนแปลง

ย้ายการแจ้งเตือน Todo ของ work.acceptance จาก Python override ไปใช้ base.automation ให้ตรงกับ pattern เดียวกับที่ทำใน agx_approval_*_todo ใน #1210

เหตุผล

โมดูล purchase_work_acceptance_todo เดิมใช้ Python override 4 method เพื่อจัดการ Todo activity:

  • _notify_review_requested — schedule Todo ต่อ reviewer
  • _validate_tier / _rejected_tieractivity_feedback เมื่อรับรอง/ปฏิเสธ
  • write — unlink activities เมื่อออกจาก in_review
  • res_users.review_user_count — ซ่อน WA จาก OCA tier systray

การเปลี่ยนแปลง

เพิ่ม data/base_automation.xml — 3 rules ครอบคลุม lifecycle ทั้งหมด:

Rule Trigger ทำอะไร
automation_notify_wa_review_requested work.acceptance.statein_review Schedule Todo ให้ทุก reviewer ที่ pending
automation_clear_wa_review_on_tier_resolved tier.review.status ออกจาก pending (WA เท่านั้น) Unlink Todo ของ reviewer ที่ act แล้ว (รองรับทั้ง accept/reject — kmitl override เขียน status=approved ทั้งสองกรณี)
automation_clear_wa_review_on_state_exit work.acceptance.state ออกจาก in_review Unlink Todo ทั้งหมด (safety net สำหรับ cancel/auto-accept)

ลด models/work_acceptance.py — เหลือเพียง _notify_review_requestedreturn เพื่อ suppress OCA default subscribe/message_post ไม่ให้ซ้อนกับ automation

ลบ models/res_users.pyreview_user_count override ซ้ำซ้อนกับ base_tier_validation_hide_systray ที่ติดตั้งไว้แล้ว

อัปเดต __manifest__.py — depends: purchase_work_acceptance_tier_validation, mail_activity_todo, base_automation

การทดสอบ

  • Upgrade purchase_work_acceptance_todo
  • สร้าง WA ที่มี 2 tier (tier 1: reviewer 2 คน, tier 2: 1 คน) → request validation → ตรวจว่ามี 3 Todo activities
  • Reviewer A (tier 1) accept → Todo ของ A หายไป, ของ B และ tier 2 ยังอยู่
  • B และ tier 2 accept → Todo หมด, WA → accept
  • ทดสอบ reject: Todo ของ reviewer ที่ reject หายไปหลัง act; automation 3 ล้าง Todo ที่เหลือเมื่อ state เปลี่ยน
  • ทดสอบ cancel กลางคัน → Todo ทั้งหมดถูก unlink

…ation module

ย้ายการแจ้งเตือน Todo ของ work.acceptance จาก Python override
ไปใช้ base.automation ให้ตรงกับ pattern เดียวกับที่ทำใน agx_approval_*_todo (#1210)

- เพิ่ม data/base_automation.xml: 3 rules
  1. แจ้ง Todo แต่ละผู้ตรวจสอบเมื่อ state → in_review
  2. ล้าง Todo ของผู้ตรวจสอบเมื่อ tier.review.status ออกจาก pending (รองรับทั้ง accept/reject)
  3. ล้าง Todo ทั้งหมดเมื่อ state ออกจาก in_review (safety net)
- ลบ models/res_users.py (systray filter ซ้อนกับ base_tier_validation_hide_systray)
- ลด models/work_acceptance.py เหลือเพียง override _notify_review_requested → pass
  เพื่อ suppress OCA default subscribe/message_post
- อัปเดต depends ให้ตรง: purchase_work_acceptance_tier_validation + base_automation
…tier.review

field ที่ถูกต้องบน tier.review คือ 'model' ไม่ใช่ 'res_model'
…trigger ผิด

OCA request_validation() สร้าง tier.review หลังจาก write(state='in_review')
ดังนั้น on_write บน work.acceptance.state จะ fire ตอนที่ review_ids ยังว่าง

แก้: เปลี่ยน automation_notify_wa_review_requested เป็น on_create บน tier.review
แทน เพื่อให้ reviewer_ids พร้อมแล้วตอน fire
…วจรับ

ใช้ review.done_by.id แทน review.reviewer_ids.ids เพื่อให้ลบ
Todo เฉพาะของ reviewer ที่กดจริง ไม่ใช่ทั้งคณะกรรมการ
…ivity_feedback

เมื่อกรรมการตรวจรับแล้ว ให้ mark activity เป็น done แทนการลบทิ้ง
เพื่อให้มี log ปรากฏใน chatter ว่าดำเนินการแล้ว
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant