ข้ามไปที่เนื้อหา

เวิร์กโฟลว์

ลำดับออบเจกต์: ผู้ขาย → สถานที่ → ครุภัณฑ์

แถวครุภัณฑ์อ้างอิงผู้ขาย (ด้วยชื่อ) และแผนก (ด้วย complete_name) หากคุณ นำเข้าครุภัณฑ์ก่อน ทุกแถวที่ผู้ขายหรือแผนกยังไม่มีอยู่จะ FAIL พร้อมเหตุผล ที่ชัดเจน "Vendor X not found — run vendor import first"

ลำดับที่แนะนำบนโรงพยาบาลใหม่:

  1. ผู้ขาย — นำผู้ขายทุกรายในทะเบียนเข้า แล้วยืนยันการนำเข้า
  2. สถานที่ — ทุกแผนก / สถานที่ แล้วยืนยันการนำเข้า
  3. ครุภัณฑ์ — เมื่อผู้ขายและสถานที่จับคู่ได้แล้ว แถวครุภัณฑ์จะเป็น OK

TTL แคชตัวอย่างก่อนนำเข้า 1 ชั่วโมงนานพอโดยเจตนาที่คุณสามารถเตรียมทั้งสาม ไฟล์ล่วงหน้า, นำเข้าผู้ขาย, จากนั้นไปต่อที่สถานที่ ฯลฯ ทั้งหมดในเซสชัน เดียวกัน

การนำเข้าซ้ำพร้อมการแก้ไข

กระบวนการนำเข้าข้อมูลจำนวนมากทำซ้ำได้ผลเดิมเต็มรูปแบบ — การอัปโหลดไฟล์เดิม ซ้ำ (หรือเวอร์ชันที่แก้ไขแล้ว) จะ upsert เรกคอร์ดที่มีอยู่แทนที่จะสร้าง รายการซ้ำ

ลำดับความสำคัญของการจับคู่ (ตามแผน D5 / D6):

  1. External ID — หากคอลัมน์ External ID (หรือ id) ถูกเติมบนแถว Odoo จะค้นหา external_id นั้นผ่าน env.ref() ชนะการจับคู่คีย์ธุรกิจ เรกคอร์ดที่โมดูลสร้างในการนำเข้าครั้งแรกค้นหาได้ด้วยวิธีนี้ (Odoo ลง ทะเบียนให้อัตโนมัติภายใต้ __import__.X)
  2. คีย์ธุรกิจ — ต่อประเภทออบเจกต์:
  3. ครุภัณฑ์ — ด้วย ref (เลขครุภัณฑ์ราชการ, บังคับไม่ซ้ำโดย roots_hemms_asset_master)
  4. ผู้ขาย — บันไดแบบเป็นชั้น:
    1. vat หากมี
    2. name + country_id หากมีประเทศ
    3. name เพียงอย่างเดียว (ปล่อย WARN พร้อม candidate ids — ดู การชนกันแบบชื่อผู้ขายอย่างเดียว)
  5. สถานที่ — ด้วย 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.

เวิร์กโฟลว์:

  1. เปิด XLSX ข้อผิดพลาดใน Excel; เรียงตาม Field หรือกรองตาม Severity
  2. แก้ไขปัญหาพื้นฐานในไฟล์ ต้นทาง ของคุณ (ไม่ใช่ไฟล์ข้อผิดพลาด — เป็นรายงาน ไม่ใช่เทมเพลตที่แก้ไขได้)
  3. อัปโหลดไฟล์ต้นทางที่แก้ไขแล้วเข้าสู่ชุดข้อมูล (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) — พวกมันเป็นอิสระต่อกัน