เอกสารนี้แปลโดย AI หากมีข้อมูลที่ไม่ถูกต้อง โปรดดูเวอร์ชันภาษาอังกฤษ
ในสถานการณ์ที่เกี่ยวข้องกับซัพพลายเชนหรือการค้าขาย เรามักจะต้องสร้าง "สัญญาซื้อขายสินค้า" ที่เป็นมาตรฐานอย่างรวดเร็ว และกรอกข้อมูลลงไปโดยอัตโนมัติจากแหล่งข้อมูล เช่น ข้อมูลผู้ซื้อ ผู้ขาย และรายละเอียดสินค้า ในบทความนี้ เราจะใช้กรณีตัวอย่าง "สัญญา" แบบง่ายๆ เพื่อแสดงให้เห็นถึงวิธีการตั้งค่าและใช้งานฟีเจอร์ "พิมพ์จากเทมเพลต" เพื่อนำข้อมูลไปใส่ในช่องว่าง (placeholder) ของเทมเพลตสัญญา และสร้างเอกสารสัญญาฉบับสมบูรณ์โดยอัตโนมัติครับ/ค่ะ
ในตัวอย่างของเรา มีคอลเลกชันหลักๆ ดังต่อไปนี้ (โดยจะละเว้นฟิลด์อื่นๆ ที่ไม่เกี่ยวข้องครับ/ค่ะ):

เนื่องจากระบบปัจจุบันรองรับการพิมพ์ข้อมูลทีละรายการเท่านั้น เราจะคลิก "พิมพ์" ที่หน้า "รายละเอียดสัญญา" จากนั้นระบบจะดึงบันทึกสัญญาที่เกี่ยวข้อง รวมถึงข้อมูล parties และข้อมูลอื่นๆ ที่เชื่อมโยงกันโดยอัตโนมัติ เพื่อนำไปกรอกในเอกสาร Word หรือ PDF ครับ/ค่ะ
โปรดทราบว่าฟีเจอร์ "พิมพ์จากเทมเพลต" ของเราเป็นปลั๊กอินเชิงพาณิชย์ ซึ่งจำเป็นต้องซื้อและเปิดใช้งานก่อนจึงจะสามารถดำเนินการพิมพ์ได้ครับ/ค่ะ

ยืนยันการเปิดใช้งานปลั๊กอิน:
ในหน้าใดก็ได้ ให้สร้างบล็อกรายละเอียด (เช่น บล็อก users) แล้วตรวจสอบว่ามีการตั้งค่าตัวเลือกเทมเพลตที่เกี่ยวข้องอยู่ในส่วนการตั้งค่าการดำเนินการหรือไม่ครับ/ค่ะ


สร้างคอลเลกชันหลัก คอลเลกชันสัญญา และคอลเลกชันรายการสินค้าตามที่ออกแบบไว้ด้านบน (เลือกเฉพาะฟิลด์หลักๆ ก็พอครับ/ค่ะ)
| หมวดหมู่ฟิลด์ | ชื่อฟิลด์ที่แสดง | ชื่อฟิลด์ | อินเทอร์เฟซฟิลด์ |
|---|---|---|---|
| ฟิลด์ PK & FK | |||
| ID | id | Integer | |
| Buyer ID | buyer_id | Integer | |
| Seller ID | seller_id | Integer | |
| ฟิลด์การเชื่อมโยง | |||
| รายการสัญญา | contract_items | One to many | |
| ผู้ซื้อ (ฝ่าย A) | buyer | Many to one | |
| ผู้ขาย (ฝ่าย B) | seller | Many to one | |
| ฟิลด์ทั่วไป | |||
| เลขที่สัญญา | contract_no | Single line text | |
| วันที่เริ่มต้นจัดส่ง | start_date | Datetime (with time zone) | |
| วันที่สิ้นสุดจัดส่ง | end_date | Datetime (with time zone) | |
| อัตราส่วนเงินมัดจำ (%) | deposit_ratio | Percent | |
| จำนวนวันชำระเงินหลังจัดส่ง | payment_days_after | Integer | |
| ชื่อบัญชีธนาคาร (ผู้รับผลประโยชน์) | bank_account_name | Single line text | |
| ชื่อธนาคาร | bank_name | Single line text | |
| เลขที่บัญชีธนาคาร (ผู้รับผลประโยชน์) | bank_account_number | Single line text | |
| ยอดรวม | total_amount | Number | |
| รหัสสกุลเงิน | currency_codes | Single select | |
| อัตราส่วนยอดคงเหลือ (%) | balance_ratio | Percent | |
| จำนวนวันคงเหลือหลังจัดส่ง | balance_days_after | Integer | |
| สถานที่จัดส่ง | delivery_place | Long text | |
| ชื่อผู้ลงนามฝ่าย A | party_a_signatory_name | Single line text | |
| ตำแหน่งผู้ลงนามฝ่าย A | party_a_signatory_title | Single line text | |
| ชื่อผู้ลงนามฝ่าย B | party_b_signatory_name | Single line text | |
| ตำแหน่งผู้ลงนามฝ่าย B | party_b_signatory_title | Single line text | |
| ฟิลด์ระบบ | |||
| สร้างเมื่อ | createdAt | Created at | |
| สร้างโดย | createdBy | Created by | |
| อัปเดตล่าสุดเมื่อ | updatedAt | Last updated at | |
| อัปเดตล่าสุดโดย | updatedBy | Last updated by |
| หมวดหมู่ฟิลด์ | ชื่อฟิลด์ที่แสดง | ชื่อฟิลด์ | อินเทอร์เฟซฟิลด์ |
|---|---|---|---|
| ฟิลด์ PK & FK | |||
| ID | id | Integer | |
| ฟิลด์ทั่วไป | |||
| ชื่อคู่สัญญา | party_name | Single line text | |
| ที่อยู่ | address | Single line text | |
| ผู้ติดต่อ | contact_person | Single line text | |
| เบอร์โทรศัพท์ผู้ติดต่อ | contact_phone | Phone | |
| ตำแหน่ง | position | Single line text | |
| อีเมล | |||
| เว็บไซต์ | website | URL | |
| ฟิลด์ระบบ | |||
| สร้างเมื่อ | createdAt | Created at | |
| สร้างโดย | createdBy | Created by | |
| อัปเดตล่าสุดเมื่อ | updatedAt | Last updated at | |
| อัปเดตล่าสุดโดย | updatedBy | Last updated by |
| หมวดหมู่ฟิลด์ | ชื่อฟิลด์ที่แสดง | ชื่อฟิลด์ | อินเทอร์เฟซฟิลด์ |
|---|---|---|---|
| ฟิลด์ PK & FK | |||
| ID | id | Integer | |
| Contract ID | contract_id | Integer | |
| ฟิลด์การเชื่อมโยง | |||
| สัญญา | contract | Many to one | |
| ฟิลด์ทั่วไป | |||
| ชื่อสินค้า | product_name | Single line text | |
| รายละเอียด / รุ่น | spec | Single line text | |
| จำนวน | quantity | Integer | |
| ราคาต่อหน่วย | unit_price | Number | |
| ยอดรวม | total_amount | Number | |
| วันที่จัดส่ง | delivery_date | Datetime (with time zone) | |
| หมายเหตุ | remark | Long text | |
| ฟิลด์ระบบ | |||
| สร้างเมื่อ | createdAt | Created at | |
| สร้างโดย | createdBy | Created by | |
| อัปเดตล่าสุดเมื่อ | updatedAt | Last updated at | |
| อัปเดตล่าสุดโดย | updatedBy | Last updated by |
ป้อนข้อมูลตัวอย่าง:


ตั้งค่ากฎการเชื่อมโยงเพื่อคำนวณยอดรวมและยอดชำระคงเหลือโดยอัตโนมัติ:

สร้างบล็อกสำหรับดูข้อมูล ยืนยันข้อมูล แล้วเปิดใช้งานการดำเนินการ "พิมพ์จากเทมเพลต":


เพิ่มการตั้งค่าเทมเพลตใหม่ เช่น "สัญญาซื้อขายสินค้า":


ถัดไป เราจะไปที่แท็บ "รายการฟิลด์" ซึ่งจะแสดงฟิลด์ทั้งหมดของออบเจกต์ปัจจุบัน หลังจากคลิก "คัดลอก" เราก็สามารถเริ่มกรอกข้อมูลลงในเทมเพลตได้เลยครับ/ค่ะ

ไฟล์เทมเพลตสัญญา Word
เตรียมไฟล์เทมเพลตสัญญา (.docx) ไว้ล่วงหน้า เช่น: SUPPLY AND PURCHASE CONTRACT.docx
ในตัวอย่างนี้ เราได้จัดเตรียม "สัญญาซื้อขายสินค้า" ฉบับย่อ ซึ่งมีช่องว่าง (placeholder) ตัวอย่างดังนี้ครับ/ค่ะ:
{d.contract_no}: เลขที่สัญญา{d.buyer.party_name}, {d.seller.party_name}: ชื่อผู้ซื้อ, ชื่อผู้ขาย{d.total_amount}: ยอดรวมสัญญาจากนั้น คุณสามารถคัดลอกฟิลด์จากคอลเลกชันที่คุณสร้างไว้ แล้วนำไปวางในเอกสาร Word ได้เลยครับ/ค่ะ
การกรอกฟิลด์พื้นฐาน:
เช่น เลขที่สัญญาที่อยู่ด้านบน หรือออบเจกต์ของคู่สัญญา เราสามารถคลิกคัดลอก แล้ววางลงในช่องว่างที่เกี่ยวข้องในสัญญาได้เลยครับ/ค่ะ


ในเทมเพลต เรามักจะต้องจัดรูปแบบฟิลด์ โดยเฉพาะฟิลด์วันที่ รูปแบบวันที่ที่คัดลอกมาโดยตรงมักจะยาวเกินไป (เช่น Wed Jan 01 2025 00:00:00 GMT) จึงจำเป็นต้องจัดรูปแบบใหม่ให้แสดงผลตามที่เราต้องการครับ/ค่ะ
สำหรับฟิลด์วันที่ คุณสามารถใช้ฟังก์ชัน formatD() เพื่อระบุรูปแบบการแสดงผลได้ดังนี้:
ตัวอย่าง:
ตัวอย่างเช่น หากฟิลด์ต้นฉบับที่เราคัดลอกมาคือ {d.created_at} และเราต้องการจัดรูปแบบวันที่ให้เป็น 2025-01-01 เราสามารถปรับเปลี่ยนฟิลด์นี้ได้ดังนี้:
รูปแบบการจัดรูปแบบวันที่ที่พบบ่อย:
YYYY - ปี (ตัวเลขสี่หลัก)MM - เดือน (ตัวเลขสองหลัก)DD - วันที่ (ตัวเลขสองหลัก)HH - ชั่วโมง (รูปแบบ 24 ชั่วโมง)mm - นาทีss - วินาทีตัวอย่างที่ 2:
สมมติว่ามีฟิลด์จำนวนเงิน เช่น {d.total_amount} ในสัญญา เราสามารถใช้ฟังก์ชัน formatN() เพื่อจัดรูปแบบตัวเลข โดยระบุจำนวนทศนิยมและตัวคั่นหลักพันได้ครับ/ค่ะ
ไวยากรณ์:
2 หมายถึง ทศนิยมสองตำแหน่งtrue หรือ falseตัวอย่างที่ 1: จัดรูปแบบจำนวนเงินให้มีตัวคั่นหลักพันและทศนิยมสองตำแหน่ง
สิ่งนี้จะจัดรูปแบบ d.amount ให้เป็นทศนิยมสองตำแหน่งและเพิ่มตัวคั่นหลักพันครับ/ค่ะ
ตัวอย่างที่ 2: จัดรูปแบบจำนวนเงินให้เป็นจำนวนเต็มโดยไม่มีทศนิยม
สิ่งนี้จะจัดรูปแบบ d.amount ให้เป็นจำนวนเต็มและเพิ่มตัวคั่นหลักพันครับ/ค่ะ
ตัวอย่างที่ 3: จัดรูปแบบจำนวนเงินให้มีทศนิยมสองตำแหน่งแต่ไม่มีตัวคั่นหลักพัน
ในที่นี้จะปิดใช้งานตัวคั่นหลักพันและคงไว้เพียงทศนิยมสองตำแหน่งครับ/ค่ะ
ความต้องการจัดรูปแบบจำนวนเงินอื่นๆ:
สำหรับฟิลด์สตริง คุณสามารถใช้ :upperCase เพื่อระบุรูปแบบของข้อความ เช่น การแปลงตัวพิมพ์เล็ก-ใหญ่ครับ/ค่ะ
ไวยากรณ์:
วิธีการแปลงที่พบบ่อย:
upperCase - แปลงเป็นตัวพิมพ์ใหญ่ทั้งหมดlowerCase - แปลงเป็นตัวพิมพ์เล็กทั้งหมดupperCase:ucFirst - แปลงตัวอักษรแรกเป็นตัวพิมพ์ใหญ่ตัวอย่าง:
เมื่อเราต้องการพิมพ์ตารางที่มีรายการย่อยหลายรายการ (เช่น รายละเอียดสินค้า) เรามักจะต้องใช้วิธีการพิมพ์แบบวนซ้ำ ด้วยวิธีนี้ ระบบจะสร้างเนื้อหาหนึ่งบรรทัดสำหรับแต่ละรายการในลิสต์ จนกว่าจะวนซ้ำครบทุกรายการครับ/ค่ะ
สมมติว่าเรามีรายการสินค้า (เช่น contract_items) ซึ่งประกอบด้วยออบเจกต์สินค้าหลายรายการ ออบเจกต์สินค้าแต่ละรายการมีคุณสมบัติหลายอย่าง เช่น ชื่อสินค้า, รายละเอียด/รุ่น, จำนวน, ราคาต่อหน่วย, ยอดรวม และหมายเหตุ
ขั้นตอนที่ 1: กรอกฟิลด์ในแถวแรกของตาราง
อันดับแรก ในแถวแรกของตาราง (ไม่ใช่ส่วนหัวตาราง) เราจะคัดลอกและกรอกตัวแปรเทมเพลตโดยตรง ตัวแปรเหล่านี้จะถูกแทนที่ด้วยข้อมูลที่เกี่ยวข้องและแสดงผลออกมาครับ/ค่ะ
ตัวอย่างเช่น แถวแรกของตารางมีลักษณะดังนี้:
| ชื่อสินค้า | รายละเอียด / รุ่น | จำนวน | ราคาต่อหน่วย | ยอดรวม | หมายเหตุ |
|---|---|---|---|---|---|
| {d.contract_items[i].product_name} | {d.contract_items[i].spec} | {d.contract_items[i].quantity} | {d.contract_items[i].unit_price} | {d.contract_items[i].total_amount} | {d.contract_items[i].remark} |
ในที่นี้ d.contract_items[i] หมายถึงรายการที่ i ในรายการสินค้า และ i คือดัชนีที่แสดงถึงลำดับของสินค้าปัจจุบันครับ/ค่ะ
ขั้นตอนที่ 2: แก้ไขดัชนีในแถวที่สอง
ถัดไป ในแถวที่สองของตาราง เราจะแก้ไขดัชนีของฟิลด์เป็น i+1 และกรอกเฉพาะคุณสมบัติแรกเท่านั้น เนื่องจากในการพิมพ์แบบวนซ้ำ เราจะต้องดึงข้อมูลรายการถัดไปจากลิสต์และแสดงผลในแถวถัดไปครับ/ค่ะ
ตัวอย่างเช่น แถวที่สองกรอกข้อมูลดังนี้:
| ชื่อสินค้า | รายละเอียด / รุ่น | จำนวน | ราคาต่อหน่วย | ยอดรวม | หมายเหตุ |
|---|---|---|---|---|---|
| {d.contract_items[i+1].product_name} |
ในตัวอย่างนี้ เราเปลี่ยน [i] เป็น [i+1] เพื่อให้สามารถดึงข้อมูลสินค้าถัดไปในลิสต์ได้ครับ/ค่ะ
ขั้นตอนที่ 3: การพิมพ์แบบวนซ้ำอัตโนมัติเมื่อเรนเดอร์เทมเพลต
เมื่อระบบประมวลผลเทมเพลตนี้ จะดำเนินการตามตรรกะดังต่อไปนี้ครับ/ค่ะ:
d.contract_items โดยจะวนซ้ำเพื่อกรอกข้อมูลแต่ละแถวตามรูปแบบในตาราง จนกว่ารายละเอียดสินค้าทั้งหมดจะถูกพิมพ์เสร็จสมบูรณ์ค่า i ในแต่ละแถวจะเพิ่มขึ้น เพื่อให้แน่ใจว่าแต่ละแถวจะแสดงข้อมูลสินค้าที่แตกต่างกันครับ/ค่ะ


เมื่อถึงขั้นตอนนี้ ให้ออกจากหน้าต่างป๊อปอัปปัจจุบัน แล้วคลิก "ดาวน์โหลดเทมเพลต" เพื่อรับเทมเพลตฉบับสมบูรณ์ที่สร้างขึ้นมาได้เลยครับ/ค่ะ
เคล็ดลับ:
.doc หรือรูปแบบอื่นๆ อาจจำเป็นต้องแปลงเป็น .docx ซึ่งขึ้นอยู่กับการรองรับของปลั๊กอินครับ/ค่ะขอให้ใช้งานได้อย่างราบรื่นนะครับ/คะ! ด้วยฟีเจอร์ "พิมพ์จากเทมเพลต" นี้ คุณจะสามารถลดงานซ้ำซ้อนในการจัดการสัญญาได้อย่างมาก หลีกเลี่ยงข้อผิดพลาดจากการคัดลอกและวางด้วยตนเอง และทำให้การสร้างสัญญาเป็นมาตรฐานและเป็นอัตโนมัติได้ครับ/ค่ะ