Apple Retail Store Audit

{{ formInfo.dealer }} ยังไม่เลือก Dealer {{ formInfo.specificStoreType }}

แบบฟอร์มตรวจสอบมาตรฐานร้านค้าตัวแทนจำหน่าย

POS Operations
{{ posPercentage }}% ({{ Math.round(posEarnedPoints) }}/{{ posMaxEligiblePoints }})
Accessories MA
{{ accPercentage }}% ({{ Math.round(accEarnedPoints) }}/{{ accMaxEligiblePoints }})

📍 ข้อมูลสาขาและดีลเลอร์ (Audit Profile)

ระบุตัวแทนจำหน่าย ประเภทสาขา และข้อมูลการตรวจ

{{ googleScriptUrl ? 'เชื่อมต่อ Google Sheets แล้ว' : 'ยังไม่ได้ตั้งค่า Google Sheets' }}
* กรุณาเลือกดีลเลอร์ก่อนเพื่อเลือกสาขา ✔ เลือก: {{ formInfo.dealer }}
แสดง: {{ showAllBranchesOfDealer ? 'ทุกสาขาของ ' + formInfo.dealer : formInfo.dealer + ' (เฉพาะ ' + formInfo.specificStoreType + ')' }} ({{ filteredBranches.length }} สาขา)
⚠️
จะเลือกสาขาได้ก็ต่อเมื่อเลือกดีลเลอร์ก่อน: กรุณาคลิกเลือก UFicon, Copperwide หรือ SPVI ในข้อ 1 ด้านบน
✍️ สาขาที่ระบุเอง
สรุปจำนวนตู้ในร้าน:
Wall case = ตู้
LAC = ตู้

หมวด 1: POS Operations MA Scores (100 คะแนน)

ตรวจมาตรฐานหน้าร้าน, อุปกรณ์เดโม่ทุกหมวด, สื่อกราฟิก และระบบเทคโนโลยี

คะแนนหมวด POS
{{ Math.round(posEarnedPoints) }} / {{ posMaxEligiblePoints }} คะแนน
{{ posPercentage }}%
{{ sec.id }}

{{ sec.title }} ({{ sec.maxPoints }} คะแนน)

{{ Math.round(getSectionEarnedPoints(sec)) }} / {{ Math.round(getSectionMaxPoints(sec)) }} {{ getSectionPercentage(sec) }}
{{ item.num }}

{{ item.question }}

{{ item.subtext }}

{{ getItemEarnedPoints(item) }}/{{ getItemMaxPoints(item) }} ({{ getItemPercentage(item) }}) NS (ไกด์ไลน์)

{{ item.checkInstruction }}

Observation: {{ item.observationText }}
{{ sub.num }} {{ sub.title }} {{ answers[sub.key] === 'yes' ? sub.points : 0 }} / {{ sub.points }} คะแนน ({{ answers[sub.key] === 'yes' ? '100%' : '0%' }})
🚨
ข้อนี้ตอบ "ไม่ผ่าน" หรือถูกหักคะแนน: จำเป็นต้องถ่ายรูปหรือแนบภาพถ่ายหลักฐานยืนยันความไม่ถูกต้องอย่างน้อย 1 รูป (บังคับ)
✓ แนบรูปแล้ว ({{ getPhotos(item.key).length }}/3 รูป)
evidence #{{ pIdx + 1 }}

หมวด 2: Accessories MA Scores (ตู้และชั้นวางอุปกรณ์เสริม)

ตรวจเคส iPhone, iPad, สาย Watch, Apple Essentials, Wall Bay และ LAC (*Apple Brand Only)

คะแนนหมวด Accessories
{{ Math.round(accEarnedPoints) }} / {{ accMaxEligiblePoints }} คะแนน
{{ accPercentage }}%
📸

รูปภาพภาพรวมร้านค้า (Store Overview Photos)

บังคับถ่ายให้ครบทุกข้อ

กรุณาถ่ายรูปหรือเลือกภาพจากคลังให้ครบทุกหัวข้อด้านล่าง อย่างน้อย 1 รูป แต่ไม่เกิน 15 รูปต่อ 1 ข้อ เพื่อนำไปประกอบในรายงาน Email Report และบันทึกประวัติร้านค้า

ความคืบหน้าการถ่ายรูป
{{ overviewCompletedCount }} / {{ overviewTopics.length }} หัวข้อ
{{ overviewPercentage === 100 ? '✓ ครบทุกหัวข้อแล้ว พร้อมส่งรายงาน' : `⚠️ ขาดอีก ${missingOverviewTopics.length} หัวข้อ` }}
📥
ปล่อยรูปภาพที่นี่ (Drop files here)
ลากวางพร้อมกันหลายรูปได้ (สูงสุด 15 รูปต่อข้อ)
{{ t.icon }}

{{ t.title }}

{{ t.desc }}

⚠️ ยังไม่มีรูป (ต้องมี 1-15 รูป) ✓ มี {{ overviewPhotos[t.id].length }}/15 รูป (เพิ่มได้อีก {{ 15 - overviewPhotos[t.id].length }} รูป) ✓ ครบ 15/15 รูปแล้ว (สูงสุด)
🔒 แนบรูปครบ 15 รูปแล้ว (หากต้องการเปลี่ยนให้ลบรูปเดิมออกก่อน)
📥
ลากไฟล์รูปภาพจากคอมพิวเตอร์มาวางในกรอบนี้ได้เลย (Drag & Drop)
หรือคลิกปุ่มถ่ายรูป / คลังภาพด้านบน (ลากหรือเลือกพร้อมกันหลายรูปได้ 1 - 15 รูป)
รูปที่ {{ pIdx + 1 }}
🏢 {{ formInfo.dealer }} {{ formInfo.specificStoreType }} • ตรวจเมื่อ {{ formatDateDisplay(formInfo.dateVisit) }}

{{ formInfo.branch || 'สาขาที่ตรวจ' }}

ผู้ตรวจประเมิน: {{ formInfo.auditor || '-' }} | พนักงาน/ผจก.: {{ formInfo.storeStaff || '-' }}

ตู้ในร้าน: Wall case = {{ formInfo.wallCaseCount || 0 }} | LAC = {{ formInfo.lacCount || 0 }}
Part 1

POS Operations MA

{{ posGradeText }}
{{ posPercentage }}% ({{ Math.round(posEarnedPoints) }} / {{ posMaxEligiblePoints }} คะแนน)
เกณฑ์มาตรฐานผ่าน: ≥ 85% {{ posPercentage >= 85 ? '✓ ผ่านเกณฑ์' : '✗ ไม่ผ่านเกณฑ์' }}
Part 2

Accessories MA

{{ accGradeText }}
{{ accPercentage }}% ({{ Math.round(accEarnedPoints) }} / {{ accMaxEligiblePoints }} คะแนน)
เกณฑ์มาตรฐานผ่าน: ≥ 85% {{ accPercentage >= 85 ? '✓ ผ่านเกณฑ์' : '✗ ไม่ผ่านเกณฑ์' }}
{{ (missingPosProofItems.length === 0 && missingAccProofItems.length === 0 && missingOverviewTopics.length === 0) ? '✅' : '⚠️' }}

{{ (missingPosProofItems.length === 0 && missingAccProofItems.length === 0 && missingOverviewTopics.length === 0) ? 'หลักฐานรูปภาพและข้อมูลครบถ้วนสมบูรณ์ พร้อมส่งรายงาน' : 'ตรวจสอบความครบถ้วนของรูปถ่ายหลักฐาน' }}

Store Overview: {{ overviewCompletedCount }} / {{ overviewTopics.length }} หัวข้อ
1. รูปหลักฐานข้อหัก POS: ✓ ครบถ้วน
2. รูปตู้/ชั้นวาง Accessories: ✓ ครบถ้วนทุกชั้น
3. รูป Store Overview: ✓ ครบ {{ overviewTopics.length }}/{{ overviewTopics.length }}
☁️ บันทึกผลการตรวจเข้า Google Sheets กลาง

ส่งข้อมูลสาขานี้ไปยังระบบรวมดีลเลอร์ {{ formInfo.dealer }} ({{ formInfo.specificStoreType }}) เพื่ออัปเดต Dashboard อัตโนมัติ

📊 สรุปคะแนนของแต่ละข้อย่อยเป็นเปอร์เซ็นต์ (%)

รายละเอียดคะแนนเต็ม คะแนนที่ได้ และการคำนวณ % แยกทุกหัวข้อย่อย

*หัวข้อ N/A จะถูกหักคะแนนเต็มออกจากตัวหาร

ตารางแจกแจงคะแนน หมวด 1: POS Operations (ข้อ A - J)

รหัส & หัวข้อการตรวจประเมิน คะแนนที่ได้ คะแนนเต็ม คิดเป็นเปอร์เซ็นต์ (%) สถานะ
รวมหมวด POS Operations MA {{ Math.round(posEarnedPoints) }} {{ posMaxEligiblePoints }} {{ posPercentage }}% {{ posGradeText }}

ตารางแจกแจงคะแนน หมวด 2: Accessories MA (ข้อ 1 - 8)

ตู้ / ชั้นวางอุปกรณ์เสริม คะแนนที่ได้ คะแนนเต็ม คิดเป็นเปอร์เซ็นต์ (%) สถานะ
{{ acc.title }} *Apple brand only {{ acc.isNA ? '-' : Math.round(acc.earned) }} {{ acc.isNA ? 'N/A' : acc.max }}
{{ acc.percentage }}
ไม่นับคะแนน (N/A)
{{ acc.statusText }}
รวมหมวด Accessories MA {{ Math.round(accEarnedPoints) }} {{ accMaxEligiblePoints }} {{ accPercentage }}% {{ accGradeText }}

⚠️ รายการข้อบกพร่องที่พบ (Non-compliance / Issues Found)

🎉 ไม่พบข้อบกพร่อง ร้านค้าผ่านมาตรฐานครบถ้วน 100%
{{ idx + 1 }}
{{ iss.section }}: {{ iss.title }}
เหตุผล: {{ iss.reason }}
หมายเหตุผู้ตรวจ: {{ iss.note }}
-{{ iss.lostPoints }} คะแนน

✍️ ลายเซ็นรับทราบผลการตรวจประเมิน (Sign-off)

ผู้ตรวจประเมิน (Auditor)
{{ formInfo.auditor || '(ลงชื่อผู้ตรวจ)' }}
วันที่: {{ formatDateDisplay(formInfo.dateVisit) }}
พนักงาน / ผู้จัดการร้าน (Store Staff / Manager)
{{ formInfo.storeStaff || '(ลงชื่อผู้จัดการสาขา)' }}
วันที่: {{ formatDateDisplay(formInfo.dateVisit) }}
POS: {{ posPercentage }}%
|
ACC: {{ accPercentage }}%
⚠️

{{ validationModal.title }}

{{ validationModal.message }}

• {{ it }}

⚙️ ตั้งค่าเชื่อมต่อ Google Sheets กลาง

ลิงก์นี้จะได้จากการ Deploy สคริปต์ใน Google Sheets (ดูไฟล์ google_apps_script.js)

วิธีนำโค้ดไปใส่ใน Google Sheets:
  1. เปิด Google Sheets ใหม่ > เมนู Extensions (ส่วนขยาย) > Apps Script
  2. คัดลอกโค้ดจากไฟล์ google_apps_script.js ไปวางทั้งหมด
  3. กด Deploy > New deployment เลือก Web app
  4. ตั้งค่า Who has access เป็น Anyone (ทุกคน) แล้วกด Deploy
  5. นำ Web App URL ที่ได้มาวางในช่องด้านบนนี้
📧

สร้างรายงานสรุปผลสำหรับส่ง Email (Email Report)

ระบบจะสร้างตารางสรุปผล รูปถ่าย และรายการหักคะแนนอัตโนมัติ ก๊อปปี้ไปวางใน Gmail / Outlook ได้ทันที

หัวข้ออีเมล:
ตัวอย่างหน้าตาใน Email จริง (Preview): ✓ รองรับ Outlook, Gmail, Webmail

เรียน ทุกท่านที่เกี่ยวข้อง

ผลสรุปคะแนนการตรวจ {{ formInfo.specificStoreType }} by {{ formInfo.dealer }} @ {{ formInfo.branch || 'สาขา' }} ({{ formatDateDisplay(formInfo.dateVisit) }}) (รายละเอียดตามเอกสารแนบเพิ่มเติม):

POS Operation MA Score {{ Math.round(posEarnedPoints) }}/{{ posMaxEligiblePoints }} = {{ posPercentage }}%
({{ sec.id }}). {{ sec.title.replace(/^\([A-Z]\)\.\s*/, '') }} ({{ Math.round(getSectionEarnedPoints(sec)) }}/{{ getSectionMaxPoints(sec) }} คะแนน)
({{ sec.id }}). {{ sec.title.replace(/^\([A-Z]\)\.\s*/, '') }} ({{ Math.round(getSectionEarnedPoints(sec)) }}/{{ getSectionMaxPoints(sec) }} คะแนน)
รูปที่ {{ pIdx + 1 }}
• {{ it.question || it.title }} (-{{ it.points }} คะแนน)
{{ it.reason }}
หมายเหตุ: {{ notes[it.key] }}
👁️ Observation: {{ it.observationText }}
Accessories MA Score {{ Math.round(accEarnedPoints) }}/{{ accMaxEligiblePoints }} = {{ accPercentage }}%
Wall case = {{ formInfo.wallCaseCount || 0 }}      LAC = {{ formInfo.lacCount || 0 }}
{{ acc.title }} (N/A ยกเว้น ไม่นับคะแนน)
{{ acc.title }} ({{ Math.round(getAccEarnedPoints(acc)) }}/{{ getAccMaxPoints(acc) }} คะแนน) *เฉพาะ Brand Apple เท่านั้น {{ acc.specialNotice }}
รูปที่ {{ pIdx + 1 }}
📷 ไม่มีรูปถ่ายแนบตู้/ชั้นวาง
☑ {{ c.label }}
☒ {{ c.label }} (-{{ c.points }} คะแนน)
⚠️ ขาดรายการ: {{ getConditionMissingItems(acc.key, c).map(s => s.name).join(', ') }}
หมายเหตุ: {{ notes[acc.key] }}
👁️ Observation: {{ obs }}
Store Overview (รูปภาพภาพรวมร้าน)
{{ t.title }}
รูปที่ {{ item.photoIndex }}
📷 ไม่มีรูปถ่ายแนบ
หมายเหตุ: {{ overviewNotes[t.id] }}
ผู้ตรวจประเมิน: {{ formInfo.auditor || '-' }}
วันที่ตรวจ: {{ formatDateDisplay(formInfo.dateVisit) }}
พนักงาน/ผู้จัดการสาขา: {{ formInfo.storeStaff || '-' }}
ดีลเลอร์: {{ formInfo.dealer }} ({{ formInfo.specificStoreType }})
💡 เคล็ดลับ: กดปุ่ม "คัดลอกตารางสำหรับใส่ Email" ด้านบน แล้วเปิด Gmail หรือ Outlook กด Ctrl + V ได้ทันที
📁

รายการตรวจที่บันทึกไว้ / รอส่ง Email

บันทึกข้อมูลและรูปถ่ายของแต่ละสาขาไว้ในเครื่อง สามารถเปิดส่งอีเมลหรือโหลดกลับมาแก้ไขได้ตลอดเวลา

📭
ยังไม่มีรายการตรวจที่บันทึกไว้

เมื่อตรวจร้านเสร็จแล้ว ให้กดปุ่ม "💾 บันทึกไว้ส่งเมลทีหลัง" ในหน้าสรุปผล เพื่อเก็บข้อมูลสาขาและรูปภาพทั้งหมดไว้ส่งในภายหลังครับ

{{ item.formInfo.dealer }} {{ item.formInfo.specificStoreType }}

{{ item.formInfo.branch || 'ไม่ระบุชื่อสาขา' }}

📅 ตรวจเมื่อ: {{ formatDateDisplay(item.formInfo.dateVisit) }} 🕒 บันทึก: {{ item.displayDate }} 👤 ผู้ตรวจ: {{ item.formInfo.auditor || '-' }}
POS: {{ item.posPercentage }}% Accessories: {{ item.accPercentage }}% 📸 รูปภาพ: {{ item.photoCount }} รูป ⚠️ บกพร่อง: {{ item.issuesCount }} ข้อ ✓ ผ่านเกณฑ์ครบ
✓ {{ saveDraftSuccessToast }}