ตัวอย่างรายงาน – ใบเสนอราคาเดือนนี้
รายงานจะเปิดขึ้นโดยตั้งระยะเป็น เดือนนี้ จึงแสดงใบเสนอราคาของเดือนปัจจุบันเสมอ คุณสามารถเลือกระยะอื่นได้ที่ด้านบนของรายงาน คลิกขวาที่ใบเสนอราคาเพื่อเปิดใบเสนอราคานั้น หรือเปิดลูกค้า อีกเวอร์ชันหนึ่งซึ่งกำหนดตายตัวเป็นเดือนปัจจุบัน จะแสดงใบเสนอราคาเป็นแผนภูมิบนแดชบอร์ดแอปพลิเคชันมือถือ
💡ตัวอย่างนี้แสดงวิธีสร้างรายงานที่กำหนดเองซึ่งแสดงรายการใบเสนอราคาของเดือนปัจจุบัน พร้อมลูกค้า สถานะ และยอดรวม
คุณต้องคุ้นเคยกับ SQL จึงจะสร้างรายงานที่กำหนดเองได้ (ดูบทแนะนำจัดการรายงาน)
รายงานที่กำหนดเองจะอ่านข้อมูลจากฐานข้อมูลโดยตรง รายงานนี้แสดงรายการใบเสนอราคาของทุกเอนทิตีให้ผู้ใช้ทุกคนที่คุณให้สิทธิ์เข้าถึงรายงาน ไม่ว่าผู้ใช้นั้นจะมีสิทธิ์เข้าถึงข้อมูลรายการอย่างไร
สิ่งที่รายงานแสดง
| คอลัมน์ | คำอธิบาย |
|---|---|
| ใบเสนอราคา | โค้ดของประเภทข้อมูลรายการและเลขที่ใบเสนอราคา (เช่น QT 62) |
| วันที่ | วันที่ของใบเสนอราคา |
| หมดอายุ | วันที่ใบเสนอราคาหมดอายุ |
| ลูกค้า | ลูกค้าที่ใบเสนอราคานี้ออกให้ |
| คอนแท็กต์ | ผู้ติดต่อของลูกค้า |
| ตัวแทน | ตัวแทนในใบเสนอราคา |
| ข้อมูลอ้างอิง | ข้อมูลอ้างอิงของใบเสนอราคา |
| สถานะ | สถานะของใบเสนอราคา (เช่น รอดำเนินการ) |
| ยอดรวม (ไม่รวมภาษีมูลค่าเพิ่ม) | ยอดรวมไม่รวมภาษีมูลค่าเพิ่ม ในสกุลเงินท้องถิ่น ยอดรวมของคอลัมน์จะแสดงที่ด้านล่าง |
| ภาษีมูลค่าเพิ่ม | ภาษีมูลค่าเพิ่ม ในสกุลเงินท้องถิ่น |
| ยอดรวม (รวมภาษีมูลค่าเพิ่ม) | ยอดรวมรวมภาษีมูลค่าเพิ่ม ในสกุลเงินท้องถิ่น |
ก่อนเริ่มต้น
ค้นหาโค้ดของประเภทข้อมูลรายการใบเสนอราคาของคุณ ซึ่งอยู่ในคอลัมน์ โค้ด ของรายการประเภทข้อมูลรายการ (เช่น QT โดยตัวอย่างการตั้งค่า – ใบเสนอราคาใช้ CUS QT) SQL ด้านล่างใช้ QT ให้แทนที่ด้วยโค้ดของคุณ
วิธีสร้างรายงาน
- ไปที่ จัดการรายงาน
- คลิก ใหม่ (ปุ่ม) แล้วกรอกช่องข้อมูลดังนี้:
- คำอธิบาย = ป้อน ใบเสนอราคา
- โค้ด = ป้อน ใบเสนอราคา
- ประเภทแผนภูมิ = เลือก แผนภูมิคอลัมน์ ไว้ตามเดิม
- หมายเหตุ = ป้อน แสดงรายการใบเสนอราคาของระยะที่เลือก (ค่าเริ่มต้นคือเดือนนี้) (ไม่บังคับ)
- คลิก บันทึก (ปุ่ม)
วิธีเพิ่ม SQL
- คลิก คำสั่ง (ปุ่ม) > แก้ไข SQL
- วาง SQL ด้านล่างลงในตัวแก้ไข แทนที่ QT ในบรรทัด WHERE ด้วยโค้ดของประเภทข้อมูลรายการใบเสนอราคาของคุณ
- คลิก ทดสอบ (ปุ่ม) ข้อความ “ทดสอบผ่าน” จะแสดงขึ้นพร้อมรายการพารามิเตอร์ date_start และ date_end คลิก โอเค (ปุ่ม)
- คลิก บันทึก (ปุ่ม)
- ปิดป๊อปอัป SQL (x ที่มุมบน) แล้วรอสักครู่ขณะที่ระบบสร้างช่องข้อมูล
SELECT
th.trans_header_id,
th.contact_id_entity AS customer_id,
ts.code || ' ' || COALESCE(th.trans_no_text, th.trans_no::varchar) AS quotation_no,
th.date_trans,
th.date_expires,
COALESCE(cus.full_name, cus.nickname) AS customer,
COALESCE(per.full_name, per.nickname) AS contact,
COALESCE(rep.full_name, rep.nickname) AS rep,
th.description AS reference,
st.code AS status,
th.total AS total_exc,
th.vat,
th.total_vat AS total_inc
FROM trans_headers th
JOIN trans_setup ts ON ts.trans_setup_id = th.trans_setup_id
LEFT JOIN contacts cus ON cus.contact_id = th.contact_id_entity
LEFT JOIN contacts per ON per.contact_id = th.contact_id_person
LEFT JOIN contacts rep ON rep.contact_id = th.contact_id_rep
LEFT JOIN status st ON st.status_id = th.status_id
WHERE ts.code = 'QT' -- the code of your Quotations Transaction Type
AND th.deleted_id <> 1 -- leave out deleted quotations
AND (CAST(:date_start AS date) IS NULL
OR th.date_trans BETWEEN CAST(:date_start AS date) AND CAST(:date_end AS date))
ORDER BY th.date_trans, th.trans_no
การทำงานของ SQL
| Part | สิ่งที่ทำ |
|---|---|
FROM trans_headers th | อ่านข้อมูลรายการ (หนึ่งแถวต่อหนึ่งข้อมูลรายการ) |
JOIN trans_setup ts | เพิ่มประเภทข้อมูลรายการ เพื่อให้ ts.code = 'QT' เก็บไว้เฉพาะใบเสนอราคา |
LEFT JOIN contacts (สามครั้ง) | เพิ่มชื่อของลูกค้า ผู้ติดต่อ และตัวแทน LEFT JOIN จะเก็บใบเสนอราคาที่ไม่มีผู้ติดต่อหรือตัวแทนไว้ด้วย |
LEFT JOIN status st | เพิ่มโค้ดสถานะ |
COALESCE(th.trans_no_text, th.trans_no::varchar) | ใช้เลขที่ข้อมูลรายการที่เป็นข้อความหากมีการป้อนไว้ (เลขที่ข้อมูลรายการ = แก้ไข (ข้อความ)) มิฉะนั้นใช้ตัวเลข |
th.deleted_id <> 1 | ไม่รวมใบเสนอราคาที่ถูกลบ |
:date_start และ :date_end | ตัวกรองระยะของรายงาน จัดการรายงานจะสร้างตัวกรองนี้เพราะ SQL ใช้พารามิเตอร์ทั้งสองนี้ และรายงานจะเปิดขึ้นโดยเลือก เดือนนี้ ไว้ หากคุณเลือก ไม่มีวันที่ พารามิเตอร์ทั้งสองจะว่าง และ |
trans_header_id และ customer_id | ID ที่การเจาะลึกใช้เพื่อเปิดใบเสนอราคาและลูกค้า ID เหล่านี้ถูกซ่อนไว้ในรายงาน |
วิธีตั้งค่าช่องข้อมูล
บนแท็บ ช่องข้อมูล คลิก แก้ไข (ปุ่ม) หากปุ่มยังไม่เป็นสีน้ำเงิน แล้วแก้ไขแต่ละช่องข้อมูลดังนี้ คอลัมน์ ชื่อ และ ประเภทข้อมูล ถูกกรอกจาก SQL และไม่สามารถเปลี่ยนได้ คำบรรยายของช่องข้อมูลที่ซ่อนไว้ไม่มีผล
| ช่องข้อมูล | คำบรรยาย | เครื่องมือแก้ไข Editor | การจัดตำแหน่ง | ภาพรวมรายการ | ปรากฏ | ทศนิยม |
|---|---|---|---|---|---|---|
| trans_header_id | ID | หมายเลข | ซ้าย | ไม่มี | ไม่ได้ทำเครื่องหมาย | 0 |
| customer_id | ID ลูกค้า | หมายเลข | ซ้าย | ไม่มี | ไม่ได้ทำเครื่องหมาย | 0 |
| quotation_no | ใบเสนอราคา | ข้อความ | ซ้าย | นับ | เลือกไว้ | 0 |
| date_trans | วันที่ | วันที่ | ซ้าย | ไม่มี | เลือกไว้ | 0 |
| date_expires | หมดอายุ | วันที่ | ซ้าย | ไม่มี | เลือกไว้ | 0 |
| ลูกค้า | ลูกค้า | ข้อความ | ซ้าย | ไม่มี | เลือกไว้ | 0 |
| คอนแท็กต์ | คอนแท็กต์ | ข้อความ | ซ้าย | ไม่มี | เลือกไว้ | 0 |
| ตัวแทน | ตัวแทน | ข้อความ | ซ้าย | ไม่มี | เลือกไว้ | 0 |
| ข้อมูลอ้างอิง | ข้อมูลอ้างอิง | ข้อความ | ซ้าย | ไม่มี | เลือกไว้ | 0 |
| สถานะ | สถานะ | ข้อความ | ซ้าย | ไม่มี | เลือกไว้ | 0 |
| total_exc | ยอดรวม (ไม่รวมภาษีมูลค่าเพิ่ม) | หมายเลข | ขวา | ผลลัพธ์ | เลือกไว้ | 2 |
| ภาษีมูลค่าเพิ่ม | ภาษีมูลค่าเพิ่ม | หมายเลข | ขวา | ผลลัพธ์ | เลือกไว้ | 2 |
| total_inc | ยอดรวม (รวมภาษีมูลค่าเพิ่ม) | หมายเลข | ขวา | ผลลัพธ์ | เลือกไว้ | 2 |

หากต้องการเพิ่มแผนภูมิ ให้เลือก หมวดหมู่แผนภูมิ สำหรับ ลูกค้า และ ชุดข้อมูลแผนภูมิ สำหรับ total_exc (ไม่บังคับ) จากนั้นแท็บแผนภูมิของรายงานจะแสดงหนึ่งแท่งต่อหนึ่งใบเสนอราคา โดยมีชื่อลูกค้ากำกับ คลิก บันทึก (ปุ่ม)
วิธีตรวจสอบตัวกรองระยะ
- คลิก ตัวกรอง & เจาะลึก (แท็บ)
- ตรวจสอบว่าส่วนตัวกรองมีตัวกรอง ระยะ (วันที่เริ่มต้นและวันที่สิ้นสุด) จัดการรายงานจะเพิ่มตัวกรองนี้เมื่อสร้างช่องข้อมูล เพราะ SQL ใช้
:date_startและ:date_endคำบรรยายของตัวกรองนี้ไม่สามารถเปลี่ยนได้
วิธีเพิ่มการเจาะลึก
- บนแท็บ ตัวกรอง & เจาะลึก คลิก แก้ไข (ปุ่ม) หากปุ่มยังไม่เป็นสีน้ำเงิน
- ในส่วนการเจาะลึก ให้เพิ่มแถวสำหรับใบเสนอราคา:
- ไทป์ = เลือก โมดูล
- โมดูล = เลือก ข้อมูลรายการ
- ชื่อช่องข้อมูล = เลือก trans_header_id
- คำบรรยายเมนู = ป้อน เปิดใบเสนอราคา
- คลิก บันทึก (ปุ่ม)
- หมายเหตุ: ระบบจะเพิ่มแถวว่างสำหรับการเจาะลึกถัดไป
- ในแถวใหม่ ให้เพิ่มการเจาะลึกสำหรับลูกค้า:
- ไทป์ = เลือก โมดูล
- โมดูล = เลือก คอนแท็กต์
- ชื่อช่องข้อมูล = เลือก customer_id
- คำบรรยายเมนู = ป้อน เปิดลูกค้า
- คลิก บันทึก (ปุ่ม)

วิธีให้สิทธิ์เข้าถึงแก่ผู้ใช้
- คลิก เมนู (ปุ่ม) > แก้ไขการเข้าถึงของผู้ใช้
- ย้ายผู้ใช้ที่สามารถดูรายงานได้จากส่วน ว่าง ไปยังส่วน เลือกไว้
- คลิก บันทึก (ปุ่ม)
วิธีดูรายงาน
- รายงานใหม่จะแสดงในรายการดรอปดาวน์ของรายงานที่กำหนดเองหลังจากเริ่ม QuickEasy BOS ใหม่เท่านั้น
- แท็บ ข้อมูล แสดงรายการใบเสนอราคา พร้อมจำนวนใบเสนอราคาและยอดรวมที่ด้านล่าง แท็บ แผนภูมิ แสดงแผนภูมิ หากรายงานมีแผนภูมิ
- ปิด QuickEasy BOS แล้วเปิดใหม่อีกครั้ง
- เพิ่มรายงานลงในกลุ่มเมนู โดยแยกเดี่ยวหรือรวมกับรายงานที่กำหนดเองอื่นๆ ของคุณ (ดูกลุ่มเมนู)
- เปิด รายงานที่กำหนดเอง จากเมนู แล้วเลือก ใบเสนอราคา ในตัวกรองรายงาน (หากเมนูมีรายงานมากกว่าหนึ่งรายงาน)
- ตรวจสอบว่าระยะเป็น เดือนนี้ หรือเลือกระยะอื่น
- คลิก แสดงผล (ปุ่ม)
- คลิกขวาที่ใบเสนอราคาแล้วเลือก เปิดใบเสนอราคา หรือ เปิดลูกค้า เพื่อเปิด


วิธีแสดงรายงานบนแอปพลิเคชันมือถือ
แดชบอร์ดแอปพลิเคชันมือถือจะรัน SQL ของรายงานที่กำหนดเองตรงตามที่บันทึกไว้ แดชบอร์ดไม่มีตัวกรองหรือการเจาะลึก ดังนั้น SQL จึงไม่สามารถใช้พารามิเตอร์ เช่น :date_start และจะแสดงแต่ละรายงานเป็นแผนภูมิ ให้สร้างรายงานที่สองสำหรับแอปพลิเคชันมือถือ โดยกำหนดเดือนปัจจุบันไว้ตายตัวใน SQL
- สร้างรายงานใหม่ตามที่อธิบายในวิธีสร้างรายงาน โดยใช้ คำอธิบาย = ใบเสนอราคา (แอปพลิเคชันมือถือ) และ โค้ด = ใบเสนอราคา (มือถือ)
- เพิ่ม SQL ด้านล่างตามที่อธิบายในวิธีเพิ่ม SQL ซึ่งเป็น SQL เดิมโดยแทนที่บรรทัดวันที่สองบรรทัด เพื่อให้รายงานแสดงเดือนปัจจุบันเสมอ เมื่อคุณคลิก ทดสอบ (ปุ่ม) ข้อความ “ทดสอบผ่าน” จะแสดงขึ้น
- บนแท็บ ช่องข้อมูล ให้ตั้งค่าแผนภูมิ:
- หมวดหมู่แผนภูมิ = เลือกสำหรับ quotation_no (หนึ่งแท่งต่อหนึ่งใบเสนอราคา) มีเพียงช่องข้อมูลเดียวเท่านั้นที่เป็นหมวดหมู่ได้
- ชุดข้อมูลแผนภูมิ = เลือกสำหรับ total_exc (และ total_inc หากต้องการแท่งที่สอง)
- หมายเหตุ: การตั้งค่าช่องข้อมูลอื่นๆ รวมถึงคำบรรยาย ไม่มีผล เพราะแอปพลิเคชันมือถือแสดงเฉพาะแผนภูมิ คำบรรยายของช่องข้อมูลที่เป็นชุดข้อมูลแผนภูมิจะแสดงในคำอธิบายแผนภูมิ (เช่น total_exc หรือ Total Exc หากคุณเปลี่ยน)
- คลิก บันทึก (ปุ่ม)
- หมายเหตุ: ระบบจะไม่สร้างตัวกรองระยะเวลา และไม่ต้องใช้การเจาะลึก
- ให้สิทธิ์เข้าถึงรายงานแก่ผู้ใช้ (ดูวิธีให้สิทธิ์เข้าถึงแก่ผู้ใช้)
- สำหรับผู้ใช้แต่ละคนที่ต้องเห็นแผนภูมิ ให้เพิ่มรายงานลงในการตั้งค่าผู้ใช้ มือถือ > แดชบอร์ด (เลือกจากรายงานที่กำหนดเอง) ของผู้ใช้นั้น โดยในผู้ใช้ คลิกขวาที่ผู้ใช้แล้วเลือก แสดงผล/แก้ไข การตั้งค่าผู้ใช้ คลิก แก้ไข (ปุ่ม) ในคอลัมน์ มูลค่า ของการตั้งค่านั้น แล้วย้ายรายงานจาก ว่าง ไปยัง เลือกไว้
- บนแอปพลิเคชันมือถือ เปิด แดชบอร์ด แล้วคลิก รีเฟรช (ปุ่ม)
SELECT
th.trans_header_id,
th.contact_id_entity AS customer_id,
ts.code || ' ' || COALESCE(th.trans_no_text, th.trans_no::varchar) AS quotation_no,
th.date_trans,
th.date_expires,
COALESCE(cus.full_name, cus.nickname) AS customer,
COALESCE(per.full_name, per.nickname) AS contact,
COALESCE(rep.full_name, rep.nickname) AS rep,
th.description AS reference,
st.code AS status,
th.total AS total_exc,
th.vat,
th.total_vat AS total_inc
FROM trans_headers th
JOIN trans_setup ts ON ts.trans_setup_id = th.trans_setup_id
LEFT JOIN contacts cus ON cus.contact_id = th.contact_id_entity
LEFT JOIN contacts per ON per.contact_id = th.contact_id_person
LEFT JOIN contacts rep ON rep.contact_id = th.contact_id_rep
LEFT JOIN status st ON st.status_id = th.status_id
WHERE ts.code = 'QT' -- the code of your Quotations Transaction Type
AND th.deleted_id <> 1 -- leave out deleted quotations
AND th.date_trans >= date_trunc('month', CURRENT_DATE)::date -- from the 1st of this month
AND th.date_trans < (date_trunc('month', CURRENT_DATE) + INTERVAL '1 month')::date -- up to the 1st of next month
ORDER BY th.date_trans, th.trans_no
date_trunc('month', CURRENT_DATE) คือวันที่ 1 ของเดือนปัจจุบัน รายงานจะเก็บใบเสนอราคาตั้งแต่วันที่นั้นจนถึง (ไม่รวม) วันที่ 1 ของเดือนถัดไป จึงเปลี่ยนไปเป็นเดือนใหม่ได้เอง


ในตัวอย่างที่สองด้านล่าง เลือก ลูกค้า เป็นหมวดหมู่แผนภูมิแทน quotation_no และเปลี่ยนคำบรรยายของ total_exc เป็น Total Exc

รูปแบบอื่น
| หากต้องการแสดง | เปลี่ยน SQL |
|---|---|
| เฉพาะใบเสนอราคาที่ยังเปิดอยู่ (ยังไม่เสร็จสมบูรณ์และไม่ได้ถูกยกเลิก) | เพิ่มบรรทัดในส่วน
|
| ประเภทข้อมูลรายการอื่น (เช่น ใบสั่งขาย) | แทนที่ 'QT' ด้วยโค้ดของประเภทข้อมูลรายการนั้น และเปลี่ยนคำอธิบายและคำบรรยายของรายงาน |
| ประเภทข้อมูลรายการหลายประเภท | แทนที่ ts.code = 'QT' ด้วย ts.code IN ('QT', 'SO') |
การแก้ไขปัญหา
| ปัญหา | สิ่งที่ต้องตรวจสอบ |
|---|---|
| รายงานไม่อยู่ในรายการดรอปดาวน์รายงานที่กำหนดเอง | เริ่ม QuickEasy BOS ใหม่ รายงานใหม่จะแสดงในรายการหลังจากเริ่มใหม่เท่านั้น นอกจากนี้ ให้ตรวจสอบว่าคุณมีชื่ออยู่ในการเข้าถึงของผู้ใช้ของรายงาน (เมนู (ปุ่ม) > แก้ไขการเข้าถึงของผู้ใช้) |
| แอปพลิเคชันมือถือแสดง การกำหนดค่าแผนภูมิไม่สมบูรณ์… หรือ รูปแบบแผนภูมินี้รองรับการจัดกลุ่มตามหมวดหมู่เดียวเท่านั้น… | บนแท็บ ช่องข้อมูล ของรายงาน ให้เลือก หมวดหมู่แผนภูมิ สำหรับช่องข้อมูลเพียงช่องเดียว และ ชุดข้อมูลแผนภูมิ สำหรับอย่างน้อยหนึ่งช่องข้อมูล |
| แผนภูมิไม่โหลดบนแอปพลิเคชันมือถือ | ใช้ SQL เวอร์ชันสำหรับแอปพลิเคชันมือถือ แอปพลิเคชันมือถือไม่สามารถกรอกพารามิเตอร์ เช่น :date_start ได้ ดังนั้นรายงานเวอร์ชันเดสก์ท็อปจึงใช้งานไม่ได้บนแอปพลิเคชันมือถือ |
| รายงานว่างเปล่า |
|
| ไม่มีคำสั่ง SQL | SQL ไม่ได้ถูกบันทึก เปิดรายงาน คลิก คำสั่ง (ปุ่ม) > แก้ไข SQL วาง SQL แล้วคลิก บันทึก (ปุ่ม) |
| ไม่มีตัวกรองระยะ | ปิดแล้วเปิดป๊อปอัป SQL ใหม่ เพื่อให้ระบบสร้างช่องข้อมูลและตัวกรองอีกครั้ง และตรวจสอบว่า SQL ยังมี :date_start และ :date_end อยู่ |
| เปิดใบเสนอราคาไม่ทำงาน | ชื่อช่องข้อมูล ของการเจาะลึกต้องเป็น trans_header_id และ โมดูล ต้องเป็น ข้อมูลรายการ |