เวิร์กโฟลว์¶
ลำดับออบเจกต์: ผู้ขาย → สถานที่ → ครุภัณฑ์¶
แถวครุภัณฑ์อ้างอิงผู้ขาย (ด้วยชื่อ) และแผนก (ด้วย complete_name) หากคุณ นำเข้าครุภัณฑ์ก่อน ทุกแถวที่ผู้ขายหรือแผนกยังไม่มีอยู่จะ FAIL พร้อมเหตุผล ที่ชัดเจน "Vendor X not found — run vendor import first"
ลำดับที่แนะนำบนโรงพยาบาลใหม่:
- ผู้ขาย — นำผู้ขายทุกรายในทะเบียนเข้า แล้วยืนยันการนำเข้า
- สถานที่ — ทุกแผนก / สถานที่ แล้วยืนยันการนำเข้า
- ครุภัณฑ์ — เมื่อผู้ขายและสถานที่จับคู่ได้แล้ว แถวครุภัณฑ์จะเป็น OK
TTL แคชตัวอย่างก่อนนำเข้า 1 ชั่วโมงนานพอโดยเจตนาที่คุณสามารถเตรียมทั้งสาม ไฟล์ล่วงหน้า, นำเข้าผู้ขาย, จากนั้นไปต่อที่สถานที่ ฯลฯ ทั้งหมดในเซสชัน เดียวกัน
การนำเข้าซ้ำพร้อมการแก้ไข¶
กระบวนการนำเข้าข้อมูลจำนวนมากทำซ้ำได้ผลเดิมเต็มรูปแบบ — การอัปโหลดไฟล์เดิม ซ้ำ (หรือเวอร์ชันที่แก้ไขแล้ว) จะ upsert เรกคอร์ดที่มีอยู่แทนที่จะสร้าง รายการซ้ำ
ลำดับความสำคัญของการจับคู่ (ตามแผน D5 / D6):
- External ID — หากคอลัมน์
External ID(หรือid) ถูกเติมบนแถว Odoo จะค้นหา external_id นั้นผ่านenv.ref()ชนะการจับคู่คีย์ธุรกิจ เรกคอร์ดที่โมดูลสร้างในการนำเข้าครั้งแรกค้นหาได้ด้วยวิธีนี้ (Odoo ลง ทะเบียนให้อัตโนมัติภายใต้__import__.X) - คีย์ธุรกิจ — ต่อประเภทออบเจกต์:
- ครุภัณฑ์ — ด้วย
ref(เลขครุภัณฑ์ราชการ, บังคับไม่ซ้ำโดยroots_hemms_asset_master) - ผู้ขาย — บันไดแบบเป็นชั้น:
vatหากมีname+country_idหากมีประเทศnameเพียงอย่างเดียว (ปล่อย WARN พร้อม candidate ids — ดู การชนกันแบบชื่อผู้ขายอย่างเดียว)
- สถานที่ — ด้วย
complete_nameที่คำนวณได้
คอลัมน์ Match ในตัวอย่างก่อนนำเข้าขั้นที่ 2 แสดงว่าแถวใดจะถูก สร้าง เทียบกับ upsert #X เพื่อให้คุณตรวจสอบก่อนยืนยันการนำเข้า
การลบชุดข้อมูล (batch)¶
เปิดเรกคอร์ดชุดข้อมูล (batch) (Maintenance → Configuration → Mass-Import Batches) แล้วคลิก 🗑 Delete Batch การกระทำจะตรวจสอบทั้งหมดต่อไปนี้:
| การ์ด | ใครข้ามได้ |
|---|---|
สถานะชุดข้อมูล (batch) ต้องเป็น committed | ไม่มีใคร — ชุดข้อมูล (batch) ที่ยังไม่ยืนยันการนำเข้าไม่มีอะไรให้ลบ |
| ภายใน 7 วันหลังยืนยันการนำเข้า | ผู้จัดการครุภัณฑ์บังคับข้ามได้ |
ไม่มี maintenance.request (เหตุการณ์ PM) อ้างอิงครุภัณฑ์ที่แท็กไว้ | ผู้จัดการครุภัณฑ์บังคับข้ามได้ — แต่ unlink จะ cascade-orphan เหตุการณ์ PM |
ไม่มี hemms.service.contract (Q3) อ้างอิงครุภัณฑ์หรือผู้ขายที่แท็กไว้ | ผู้จัดการครุภัณฑ์บังคับข้ามได้ |
| สำหรับชุดข้อมูล (batch) สถานที่: ไม่มีครุภัณฑ์อ้างอิงแผนกที่แท็กไว้ | ผู้จัดการครุภัณฑ์บังคับข้ามได้ |
เมื่อถูกบล็อก ส่วน Delete Audit บนฟอร์มชุดข้อมูล (batch) จะแสดงเหตุผล เฉพาะ (เช่น "3 maintenance request(s) reference equipment in this batch — resolve or archive them before deleting.") ชุดข้อมูล (batch) ยังคงอยู่ใน สถานะ committed — ไม่มีอะไรถูก unlink
เมื่อลบสำเร็จ เรกคอร์ดที่แท็กไว้ทุกรายการจะถูก unlink ผ่านการค้นหา roots_hemms_import_batch_id, ชุดข้อมูล (batch) เปลี่ยนเป็นสถานะ deleted, deleted_at / deleted_by_id ถูกประทับ และแชตเตอร์ (chatter) จะโพสต์บรรทัดการตรวจสอบ
การกู้คืน XLSX ข้อผิดพลาด¶
เมื่อการทดลองรันสร้างแถว FAIL ปุ่ม ⬇ Download Error XLSX บนฟอร์มชุดข้อมูล (batch) (ปรากฏเมื่อ row_count_fail > 0) จะคืน workbook แผ่นเดียว:
| Row | Verdict | Field | Severity | Message | Raw Value |
|---|---|---|---|---|---|
| 17 | fail | partner_id/name | fail | Vendor 'Acme XYZ' not found — run vendor import first. | Acme XYZ |
| 42 | fail | ref | fail | Equipment Ref. No. (ref) is required | (blank) |
| 88 | fail | (business_key) | fail | Duplicate row in this file — business key ('equipment', 'A-0042') already used by an earlier row. |
เวิร์กโฟลว์:
- เปิด XLSX ข้อผิดพลาดใน Excel; เรียงตาม
FieldหรือกรองตามSeverity - แก้ไขปัญหาพื้นฐานในไฟล์ ต้นทาง ของคุณ (ไม่ใช่ไฟล์ข้อผิดพลาด — เป็นรายงาน ไม่ใช่เทมเพลตที่แก้ไขได้)
- อัปโหลดไฟล์ต้นทางที่แก้ไขแล้วเข้าสู่ชุดข้อมูล (batch) ใหม่ แถว OK ที่ ยืนยันการนำเข้าก่อนหน้าจะ upsert (ไม่ซ้ำ); แถวที่เคย FAIL ตอนนี้สำเร็จ
XLSX ข้อผิดพลาดสะท้อนการทดลองรันครั้งล่าสุดเสมอ หากคุณรันการทดลองรันบน ชุดข้อมูล (batch) เดิมซ้ำ (เช่น หลังจากระบบถูกแพตช์) XLSX ข้อผิดพลาดจะอัปเดต ตามนั้น
การชนกันแบบชื่อผู้ขายอย่างเดียว¶
Layer C ของบันไดการจับคู่ผู้ขาย (name เพียงอย่างเดียว) ปล่อยคำตัดสิน WARN มีสองรูปแบบ:
| สถานการณ์ | พฤติกรรม |
|---|---|
มี res.partner ที่มีอยู่หนึ่งรายพอดีที่มีชื่อนั้น | Upsert เข้าไป; ข้อความ WARN ว่า "Matched on name only — consider adding VAT or country to disambiguate future re-imports." |
มีเรกคอร์ด res.partner ที่มีอยู่หลายรายใช้ชื่อนั้น | Upsert เข้าไปยังราย แรก (id ต่ำสุด) อย่างกำหนดได้แน่นอน; ข้อความ WARN ระบุ candidate ids ทั้งหมดและแนะนำเส้นทางการ dedupe หลังนำเข้า |
แถว WARN ยังคงยืนยันการนำเข้า (ไม่บล็อกชุดข้อมูล (batch)) หลังนำเข้า การ ทำความสะอาดที่แนะนำคือ Contacts → Merge Wizard มาตรฐานของ Odoo — หรือ ที่บ่อยกว่านั้น เพียงแก้ไขไฟล์ต้นทางของคุณเพื่อเพิ่ม VAT หรือประเทศให้กับ แถวที่ชนกันแล้วนำเข้าซ้ำ
นี่คือการแลกเปลี่ยนโดยเจตนาที่บันทึกไว้ในแผน §9 — ความสะดวกในการ onboarding ชนะความไม่ซ้ำแบบเข้มงวดสำหรับการย้ายข้อมูลของโรงพยาบาลทั่วไป
การแบ่งทะเบียนขนาดใหญ่ออกเป็นหลายไฟล์¶
ขีดจำกัด 5,000 แถว (แผน D10, ขับเคลื่อนด้วยการกำหนดค่า) คือขอบเขตที่ปลอดภัย สำหรับเวลายืนยันการนำเข้าของทรานแซกชัน ทะเบียนที่ใหญ่กว่าแบ่งได้โดยธรรมชาติ:
- ไฟล์ 1 — แถว 1–5,000
- ไฟล์ 2 — แถว 5,001–10,000
- ...
อัปโหลดตามลำดับในเซสชันเดียวกัน TTL ตัวอย่างก่อนนำเข้า 1 ชั่วโมงรักษาแคช คำตัดสินของแต่ละชุดข้อมูล (batch) ให้อุ่นนานพอที่จะทำการนำเข้าแบบแบ่งก้อน ที่สมจริงโดยไม่ต้องอัปโหลดอะไรซ้ำ
แต่ละก้อนกลายเป็นชุดข้อมูล (batch) ของตัวเอง (ร่องรอยการตรวจสอบของตัวเอง, แท็ก import_batch_id ของตัวเองบนเรกคอร์ด) หากต้องการ "ยกเลิก" ทุกก้อน พร้อมกัน ให้ลบแต่ละชุดข้อมูล (batch) — พวกมันเป็นอิสระต่อกัน