' : ''; return '' . $boldXml . '' . '' . '' . '' . xml($text) . ''; } function para(string $text = '', string $align = 'left', bool $bold = false, int $size = 30, int $before = 0, int $after = 80, int $indent = 0): string { return '' . '' . ($indent > 0 ? '' : '') . '' . run($text, $bold, $size) . ''; } function bullet(string $text): string { return '' . run('• ' . $text, false, 29) . ''; } function tableRow(string $label, string $value): string { return '' . '' . para($label, 'left', true, 27, 0, 20) . '' . '' . para($value, 'left', false, 27, 0, 20) . '' . ''; } $header = '' . '' . para('B.R.N. ENTERPRISE CO., LTD.', 'left', true, 29, 0, 0) . para('1011 Supalai Grand Tower, 7th Floor, Unit 6-7, Rama 3 Road,', 'left', false, 19, 0, 0) . para('Chongnonsi, Yannawa, Bangkok 10120', 'left', false, 19, 0, 0) . '' . para('Statement of Work', 'center', false, 29, 0, 0) . ''; $meta = '' . '' . '' . '' . '' . tableRow('รหัสโครงการ', '200-WMS-26-001-00') . tableRow('ชื่อโครงการ', 'โครงการพัฒนาระบบบริหารจัดการคลังสินค้า BRN WMS') . tableRow('ระยะเวลาโครงการ', '5 มกราคม 2569 – 14 สิงหาคม 2569') . tableRow('เอกสาร', 'Statement of Work · Version 1.0 · สถานะ Final') . ''; $body = $header . para('', 'left', false, 10, 0, 80) . para('วันที่ 5 มกราคม 2569', 'center', false, 30, 80, 180) . para('เรื่อง ขอบเขตการดำเนินงานโครงการพัฒนาระบบบริหารจัดการคลังสินค้า BRN WMS', 'left', true, 30, 0, 100) . para('เรียน ผู้บริหารและผู้มีส่วนเกี่ยวข้องในโครงการ', 'left', true, 30, 0, 180) . para('บริษัท บี.อาร์.เอ็น. เอ็นเตอร์ไพรส์ จำกัด มีความประสงค์ดำเนินโครงการพัฒนาระบบบริหารจัดการคลังสินค้า BRN WMS เพื่อเพิ่มความถูกต้องและความรวดเร็วของงานคลังสินค้า ทำให้สามารถติดตามสินค้าคงคลัง การเคลื่อนไหวสินค้า คำสั่งซื้อ เอกสารทางธุรกิจ และข้อมูลบัญชีที่เกี่ยวข้องได้อย่างเป็นระบบ โดยใช้ข้อมูลแบบรวมศูนย์และกำหนดสิทธิ์การเข้าถึงตามบทบาทผู้ใช้งาน', 'both', false, 30, 0, 120, 720) . para('เอกสารฉบับนี้กำหนดขอบเขต ผลส่งมอบ เกณฑ์การยอมรับ หน้าที่ความรับผิดชอบ และกรอบระยะเวลาของโครงการตามแนวทาง ISO/IEC 29110 โดยมีรายละเอียดดังต่อไปนี้', 'both', false, 30, 0, 180, 720) . $meta . para('1. วัตถุประสงค์', 'left', true, 32, 180, 80) . bullet('พัฒนาระบบเว็บสำหรับควบคุมสินค้าคงคลังและการปฏิบัติงานคลังสินค้าแบบหลายคลัง') . bullet('สนับสนุนการรับเข้า เบิกจ่าย โอนย้าย ปรับปรุง และตรวจสอบยอดคงเหลือ พร้อมการติดตาม Lot, Serial Number และวันหมดอายุ') . bullet('ลดความผิดพลาดจากการทำงานด้วยมือและเพิ่มความสามารถในการตรวจสอบย้อนหลัง') . bullet('สนับสนุนการบริหารคำสั่งซื้อ จัดซื้อ คืนสินค้า ใบแจ้งหนี้ รายงาน และรายการบัญชีที่เกี่ยวข้อง') . bullet('จัดให้มีการรักษาความมั่นคงปลอดภัย การแยกข้อมูลรายบริษัท การกำหนดสิทธิ์ และการแจ้งเตือนแบบเรียลไทม์') . para('2. ขอบเขตงาน', 'left', true, 32, 150, 80) . para('2.1 งานวิเคราะห์และออกแบบ', 'left', true, 29, 0, 50) . bullet('รวบรวมและวิเคราะห์ความต้องการของผู้ใช้ กำหนดกระบวนการทำงาน ข้อมูล และกฎทางธุรกิจ') . bullet('ออกแบบสถาปัตยกรรมระบบ ฐานข้อมูล ส่วนติดต่อผู้ใช้ การเชื่อมต่อบริการ และมาตรการความมั่นคงปลอดภัย') . para('2.2 งานพัฒนาระบบ', 'left', true, 29, 80, 50) . bullet('ข้อมูลหลัก: บริษัท ผู้ใช้ ผู้ติดต่อ สินค้า คลังสินค้า โซน ทางเดิน ตำแหน่งจัดเก็บ และหน่วยนับ') . bullet('สินค้าคงคลัง: รับเข้า จ่ายออก โอนย้าย ปรับปรุงยอด ตรวจนับ ยอดคงเหลือ และประวัติการเคลื่อนไหว') . bullet('เอกสารธุรกิจ: Sales Order, Purchase Order, Return, Invoice และลำดับเลขที่เอกสาร') . bullet('การเงินและบัญชี: รายรับ รายจ่าย สมุดรายวัน รายการบัญชี และรายงานที่ระบบรองรับ') . bullet('Dashboard, รายงาน, การส่งออกข้อมูล, Barcode/Label และการแนบไฟล์') . bullet('การยืนยันตัวตน การกำหนดบทบาท Owner/Admin/Staff/Viewer การจำกัดข้อมูลตามบริษัท และการควบคุม session') . bullet('บริการแจ้งเตือนแบบเรียลไทม์และงานตามกำหนดเวลาด้วย Node.js/Socket.IO') . para('2.3 งานทดสอบและส่งมอบ', 'left', true, 29, 80, 50) . bullet('จัดทำและดำเนินการทดสอบตามความต้องการ บันทึกผล แก้ไขข้อบกพร่อง และทดสอบยืนยันผล') . bullet('จัดเตรียมคู่มือผู้ใช้ คู่มือการติดตั้ง/ปฏิบัติการ และเอกสารบำรุงรักษา') . bullet('จัดเตรียมหลักฐานการทวนสอบ การตรวจสอบความใช้ได้ และการยอมรับระบบ') . para('3. ผลส่งมอบ', 'left', true, 32, 150, 80) . para('ผลส่งมอบประกอบด้วยซอฟต์แวร์ BRN WMS ซอร์สโค้ด สคริปต์การติดตั้งและฐานข้อมูล การกำหนดค่า คู่มือ และ Work Products ของกระบวนการ Project Management และ Software Implementation ตาม ISO/IEC 29110 รวม 22 รายการ โดยจัดเก็บใน Project Repository ภายใต้การควบคุมเวอร์ชัน', 'both', false, 30, 0, 100, 720) . para('4. ข้อยกเว้นและข้อสมมติ', 'left', true, 32, 120, 80) . bullet('ไม่รวมการจัดหาเครื่องแม่ข่าย อุปกรณ์เครือข่าย เครื่องสแกน Barcode หรือบริการจากบุคคลภายนอก เว้นแต่ได้รับอนุมัติเพิ่มเติม') . bullet('การย้ายข้อมูลเดิม การเชื่อมต่อ ERP/บริการภายนอก และการปรับแต่งนอกขอบเขตต้องผ่านกระบวนการ Change Request') . bullet('ผู้มีส่วนเกี่ยวข้องต้องให้ข้อมูล ทบทวนเอกสาร และเข้าร่วมการทดสอบ/ยอมรับตามกำหนด') . para('5. แผนงานและจุดควบคุม', 'left', true, 32, 150, 80) . bullet('เริ่มต้นและวางแผนโครงการ: 5 มกราคม – 18 กุมภาพันธ์ 2569') . bullet('พัฒนาและทดสอบภายใน: 19 กุมภาพันธ์ – 29 พฤษภาคม 2569') . bullet('ทดสอบการยอมรับ จัดทำเอกสาร ส่งมอบ และปรับเสถียรภาพ: 30 พฤษภาคม – 14 สิงหาคม 2569') . bullet('วันเสร็จสิ้นโครงการอย่างเป็นทางการ: 14 สิงหาคม 2569') . para('6. เกณฑ์การยอมรับ', 'left', true, 32, 150, 80) . bullet('ฟังก์ชันที่อยู่ในขอบเขตผ่าน Test Cases และเชื่อมโยงกับความต้องการใน Traceability Record') . bullet('ข้อบกพร่องระดับร้ายแรงที่ขัดขวางการใช้งานได้รับการแก้ไขหรือมีแนวทางที่ผู้มีอำนาจยอมรับ') . bullet('เอกสารการติดตั้ง การใช้งาน การปฏิบัติการ และการบำรุงรักษาพร้อมใช้งาน') . bullet('ผลการ Verification, Validation และ Acceptance ได้รับการทบทวนและลงนามโดยผู้มีอำนาจ') . para('7. การบริหารการเปลี่ยนแปลง', 'left', true, 32, 150, 80) . para('การเปลี่ยนแปลงขอบเขต กำหนดการ หรือผลส่งมอบต้องบันทึกใน Change Report ประเมินผลกระทบ และได้รับอนุมัติก่อนดำเนินการ การแก้ไขข้อบกพร่องให้บันทึกใน Correction Register และเชื่อมโยงกับหลักฐานการทดสอบที่เกี่ยวข้อง', 'both', false, 30, 0, 120, 720) . para('จึงจัดทำ Statement of Work ฉบับนี้เพื่อใช้เป็นกรอบดำเนินงานและขอให้ผู้เกี่ยวข้องพิจารณาอนุมัติตามอำนาจหน้าที่', 'both', false, 30, 80, 240, 720) . para('ลงชื่อ ____________________________________', 'center', false, 30, 240, 20) . para('(คุณเสรี วิริยะสกุลธรณ์)', 'center', false, 30, 0, 20) . para('กรรมการผู้จัดการ · Project Sponsor / Customer Representative / Authorized Approver', 'center', false, 26, 0, 20) . para('บริษัท บี.อาร์.เอ็น. เอ็นเตอร์ไพรส์ จำกัด', 'center', false, 30, 0, 20) . para('วันที่ ____________________________________', 'center', false, 30, 0, 80); $document = '' . '' . '' . $body . '' . ''; $contentTypes = '' . '' . '' . '' . '' . '' . '' . '' . ''; $rels = '' . '' . '' . '' . '' . ''; $documentRels = '' . '' . '' . ''; $footer = '' . '' . '' . run('200-WMS-26-001-00 · Statement of Work · V1.0 · Final', false, 18) . ''; $core = '' . '' . '200-WMS-26-001-00 Statement of WorkISO/IEC 29110 Project Management Work Product' . 'BRN WMS Project TeamISO/IEC 29110; Statement of Work; BRN WMS' . 'Editable final document ready for authorized approval and signature.' . '2026-01-05T00:00:00+07:00' . '2026-08-17T00:00:00+07:00' . ''; $app = '' . '' . 'Microsoft Office WordB.R.N. Enterprise Co., Ltd.16.0000' . ''; $zip = new ZipArchive(); if ($zip->open($output, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== true) { throw new RuntimeException('Unable to create ' . $output); } $zip->addFromString('[Content_Types].xml', $contentTypes); $zip->addFromString('_rels/.rels', $rels); $zip->addFromString('word/document.xml', $document); $zip->addFromString('word/_rels/document.xml.rels', $documentRels); $zip->addFromString('word/footer1.xml', $footer); $zip->addFromString('docProps/core.xml', $core); $zip->addFromString('docProps/app.xml', $app); $zip->close(); echo $output . PHP_EOL; require __DIR__ . '/normalize_document_dates.php';