การผลิตขั้นต้น ตอน 2

นี่ก็เป็นตอนต่อจากบทความว่าด้วยการสร้างแอนดรอยด์นางฟ้านะครับ
เข้าเรื่องเลยนะครับ

5.สร้างสูตรการผลิต (Bill Of Material:BOM)
จัดเตรียมระบบอยู่นานแล้วเริ่มเข้าสู่กระบวนการของ Manufacturing จริงๆ ซะที จากการทำงานที่ผ่านมาข้างต้น จะเห็นได้ว่าการ Implement ระบบ Manufacturing นั้นต้องทำระบบ Catalog และ Inventory ไปพร้อมกันด้วย
ให้เราคลิกที่แท๊ป Manufacturing → Bill Of Materials → Edit BOM จะเข้าสู่ฟอร์มการสร้างสูตรการผลิต (Bill Of Materials) ในส่วนบนของฟอร์มให้กรอกข้อมูลดังนี้





จากรูปก็ให้ทำตามขั้นตอนของภาพดังนี้
1.ให้เลือก Bom Type เป็น Manufacturing Bill of Material
2.ให้คลิกที่รูปอะไรก็ไม่รู้เพื่อเปิดหน้าต่าง Lookup Product
3.ในช่อง criteria ของ Product ID ให้กรอก im (สองตัวอักษรหน้าของรหัสหุ่นแอนดรอยด์ของเรา)
4.คลิกปุ่ม Lookup เพื่อหารหัสสินค้าที่มีคำ im อยู่
5.record ของสินค้าของเราก็จะโผล่มาตัวเดียว ให้เราคลิกที่ปุ่มที่มีคำว่า im_ji_hye แล้วรหัสนี้ก็จะไปกรอกลงในหน้าจอ Edit BOM โดยอัตโนมัต (ถ้าเราจำรหัสได้ก็ไม่ต้องเปิดหน้าต่าง lookup ก็ได้ ให้กรอกไปตรงๆ เลย)
6.คลิกปุ่ม Show BOM เพื่อกรอกข้อมูลลงไปในฟอร์มส่วนล่าง

เมื่อคลิกปุ่ม Show BOM หน้าจอก็จะเพิ่มส่วนประกอบเข้ามาอีก 2 ส่วน คือ Components of this Product จะเป็นรายการแสดงวัตถุดิบที่ใช้ในสูตรการผลิตสำหรับสินค้าชนิดนี้ และอีกส่วนก็คือ This product is a Component of เป็นรายการแสดงว่าสินค้าชนิดนี้ไปเป็นวัตถุดิบของสินค้าตัวใดบ้าง ซึ่งตอนนี้ว่างทั้งสองส่วน
ให้เรากรอกส่วนผสมลงไปดังนี้

Product ID To: no1
Sequence Num: 10 (ช่องนี้ใช้ในการเรียงลำดับของวัตถุดิบ ตัวเลขน้อยกว่าจะอยู่บน)
Quantity: 36

แล้วคลิก Add

จากนั้นก็ให้กรอกข้อมูลอีกสองตัวดังนี้

Product ID To: no2
Sequence Num: 20
Quantity: 24

Product ID To: no3
Sequence Num: 30
Quantity: 36

แค่นี้เราก็จะได้สูตรการผลิตสำหรับแอนดรอยด์ของเราแล้วซึ่งผลการกรอกทั้งหมดจะแสดงในรูปข้างล่าง





ถ้าเราคลิกไปที่ปุ่มตรงรหัสวัตถุดิบที่เป็นส่วนประกอบในสูตร เช่น no1 ระบบจะพาเราเข้าสู่หน้าจอของรายละเอียดสูตรการผลิตของ no1 ซึ่งในหน้าจอดังกล่าวในส่วนของ This Product is a Component of จะมี record ของแอนดรอยด์ของเราโผล่ขึ้นมา แปลว่าในหน้าจอนี้สามารถเที่ยวกลับไปกลับมาระหว่างเจ้าของสูตรการผลิต และส่วนประกอบของสูตรการผลิตได้ และที่สำคัญระบบ Bill Of Material ของ OFBiz นี้ยังสนับสนุนการใช้ BOM แบบลึกลงไปกี่ชั้นก็ได้ เช่น ถ้าเราสมมติว่า no1 มีสูตรการผลิตของตัวเอง สูตรการผลิตของ no1 นี้จะกลายเป็นสูตรการผลิตชั้นที่สองของสินค้าของเรา ซึ่งรายละเอียดการทำงานดังกล่าวถ้าว่างๆ จะลองเล่นดูแล้วจะมาบอกกล่าวกัน (จริงๆ ผมก็ลองแล้วล่ะแต่เห็นว่า UI มันใช้ได้ค่อนข้างยุ่งยากมากเลย เมื่อต้องนำสินค้าที่มี BOM หลายชั้นมาผลิตจริง)

คราวนี้เราลองคลิกไปที่แท๊ป BOM Simulation เพื่อจำลองการผลิตจากสูตรนี้และดูต้นทุนการผลิต ให้กรอกข้อมูลดังนี้

Product ID: im_ji_hye
Bom Type: Manufacturing Bill of Materials
Quantity: 1
Type: Explosion (คือการคำนวนโดยการแตกรายละเอียดของวัตถุดิบออกมาให้หมด)
Currency Uom Id: THB (จะลองเซตดูเป็น USD ก็ได้นะครับถ้าอยากดูต้นทุนในหน่วยของ USD)

แล้วคลิก Submit ระบบจะคำนวน BOM Simulation แบบกระจายวัตถุดิบดังรูป





ส่วนล่างสุดของหน้าจอจะแสดงรายการปริมาณการใช้ของวัตถุดิบและต้นทุนการผลิต ซึ่งแสดงให้เห็นว่าถ้าเราจะผลิตหุ่นแอนดรอยด์ตัวนี้นาย him_aeng ก็จะ ฮือ ฮือ ขาดทุนครับเพราะต้นทุนรวมมันกลายเป็น 360,000 + 96,000 + 72,000 = 528,000 แต่ดันตั้งราคาไปแค่ 300,000 บาทเท่านั้นเอง เดี๋ยวไปขอต่อรองกับลูกค้าก่อนนะครับแล้วค่อยมาแก้ราคา
ในส่วนกลางของหน้าจอจะเห็นว่ามี column นึ่งที่ชื่อว่า Product Level ซึ่งจะใช้บอกว่าสินค้าในรายการนี้อยู่ใน BOM ระดับที่เท่าไหร่ซึ่งในที่นี้จะมี BOM ความลึกแค่ระดับ 1 เท่านั้น (ส่วนสินค้าอยู่ที่ระดับ 0)

6.สร้าง routing task
อย่างที่ได้บอกไว้ก่อนหน้านี้แล้วว่าการผลิตของแง่มุมของ OFBiz นั้นเขาจะมองเป็นเรื่องของเส้นทางการดำเนินงาน (routing) โดยในเส้นทางนี้ก็จะมีงานย่อย (task) อยู่ ซึ่งในการสร้างหุ่นแอนดรอยด์ของเราจะมีอยู่สองงานย่อยนั่นคือ assembling และ test
ภายใต้โปรแกรม Manufacturing ให้คลิกแท๊ป Routing Task แล้วคลิก New Routing Task จากนั้นกรอกข้อมูลดังนี้

Routing Task Name: Android Assembling
Task Type: Assembling
Fixed Asset Id: [miracle_machine]
Estimated Setup Millis: 7,200,000 (กรอกเครื่องหมาย “,” ได้เลยไม่มีปัญหา)
Estimated Milli Seconds: 3,600,000

จากนั้นก็สร้าง Routing Task อีกตัวหนึ่งข้อมูลดังนี้

Routing Task Name: Android Test
Task Type: Assembling
Fixed Asset Id: [miracle_machine]
Estimated Setup Millis: 0
Estimated Milli Seconds: 10,800,000

7.สร้าง Routing
ภายใต้โปรแกรม Manufacturing ให้คลิกแท๊ป Routing แล้วคลิกปุ่ม New Routing แล้วกรอกข้อมูลดังนี้
Routing Name: Android Routing

ส่วน Quantity To Produce ไม่ต้องกรอกเพราะเราจะไม่กำหนดปริมาณผลิตกันตรงนี้
จากนั้นให้คลิกแท๊ป Edit Routing Task Assoc เพื่อทำการเชื่อมข้อมูลของ Routing Task ที่เราเพิ่งสร้างขึ้นมาทั้งสองตัวให้เข้ามาอยู่ภายใต้ Android Routing นี้ ให้กรอกข้อมูลตัวแรกดังนี้
Routing Task Id: ให้กดปุ่มหา Routing Task ที่ชื่อ Android Assembling แล้วเลือกมา
Sequence Num: 10

แล้วกดปุ่ม Add a existing Routing Task จากนั้นให้กรอกข้อมูลของ Routing ตัวที่สองดังนี้

Routing Task Id: หารหัสของ Andorid Test
Sequence Num: 20

จากนั้นให้คลิกแท๊ป Edit Routing Product Link เพื่อทำการเชื่อมข้อมูลของ Product ที่เราต้องการผลิตเข้ากับ Android Routing ให้กรอกข้อมูลดังนี้

Product ID: im_ji_hye

กรอกแค่นี้ล่ะครับ ไม่ต้องมากมายอะไรแล้วก็คลิก Add ให้เรียบร้อยเท่านี้เราก็ได้ Routing หรือสายการผลิตที่สมบูรณ์แบบที่มีทั้งรายการงานย่อย (Routing Task) และผลิตภัณฑ์ที่จะผลิตในสายการผลิตนี้


8.เริ่มการผลิต
ได้ผลิตกันซะทีนะครับ จัดเตรียมระบบมาตั้งนาน (นี่ขนาดยังไม่ครบทุก Module นะนี่) ในโปรแกรมเดิม (Manufacturing) ให้เลือกแท๊ป Job Shop แล้วคลิกปุ่ม Create a Production Run เพื่อเปิดการผลิตหุ่นแอนดรอยด์ ให้กรอกข้อมูลดังนี้

Production ID: im_ji_hye
Quantity: 1
Start Date: ให้เป็นวันที่ที่คุณเริ่มกรอกเป็นอย่างน้อย เช่นถ้าวันนี้เป็น 3/7/51 ก็ให้กรอกตั้งแต่วันที่ 3/7/51 เป็นต้นไป
Facity Id: Web Store Warehouse [WebStoreWarehouse]
Routing Id: ให้หา Android Routing
Production Run Name: demo im ji hye assembling

ก็จะเข้าสู่หน้าจอที่สำคัญที่สุดในการผลิตคือ หน้าจอ Production Run ซึ่งการทำ Production Run ในหน้าจอนี้เราจะจัดการกับการผลิตนี้ได้ 4 อย่าง คือ
Schedule (น่าจะเป็นการเอารายการนี้เข้าคิวก่อนยังไม่ผลิต)
Confirm (ยืนยันคำสั่งผลิตนี้)
Quick Complete (สั่งให้ผลิตให้เสร็จทันที แต่ยังไม่ปิดบัญชีการผลิต)
Quick Close (ผลิตให้เสร็จ และปิดบัญชีการผลิตไปพร้อมกันด้วย)

ให้คลิกที่ปุ่ม Confirm เพื่อยืนยันการผลิต จากนั้นก็จะเข้าสู่หน้าจอการผลิตซึ่งจะมีรายละเอียดของงานย่อยอยู่สองงานเรียงลำดับกันคือ Android Assembling (งานประกอบ) และ Android Test (ทดสอบ) เราต้องทำงานย่อยแรกให้เสร็จเสียก่อนจึงจะทำงานที่สองให้เสร็จได้ และเมื่องานทั้งสองเสร็จสิ้นเท่านั้นจึงจะถือได้ว่าการผลิตสมบูรณ์ เมื่อจะเริ่มการผลิตจริงๆ ให้คลิกปุ่ม Start ของงานย่อย Android Assemblingดังรูป






เมื่อเราเริ่มการผลิตสิ่งที่เราต้องทำอย่างแรกก็คือการเบิก หรือการจองวัตถุดิบเพื่อใช้ในการผลิตสินค้าในแต่ละ Order ซึ่งศัพท์ที่ทาง OFBiz ใช้ในการเบิก หรือการจองวัตถุดิบนั้นเขาใช้ Issue Components ดังรูป






ในรูปจะมีปุ่มสองปุ่มที่วงกลมไว้คือ Issue Components (ATP) กับ Issue Components ซึ่งปุ่มที่สองนั้นจะเป็นวัตถุดิบที่เรียกว่า QOH (Quantity On Hand) หมายถึงวัตถุดิบที่อยู่ในมือเราทั้งหมด แต่ ATP (Available To Promise) นั้นต่างออกไป นั่นคือเป็นจำนวนสต็อกวัตถุดิบที่อยู่ในมือหักจากที่การผลิตใน Order ได้จองเอาไว้ ดังนั้น ถ้าโรงงานของคุณมีระบบจองวัตถุดิบสำหรับการผลิต ก็ควรจะใช้ ATP แต่โรงงานของนาย him_aeng นี้จะใช้การเบิกแบบธรรมดาคือเบิกผ่านจำนวน QOH นั่นเอง ดังนั้นก็กดปุ่ม Issue Components ซะดีๆ

เมื่อเรา Issue วัตถุดิบออกมาแล้ว (ขออนุญาติใช้ภาษาอังกฤษแทนการเบิกนิดนึงจะได้คุ้นเคยกับศัพท์ของ OFBiz) จะแสดงหน้าจอสถานะการผลิตดังรูป






ที่วงไว้ด้วยวงกลมสีเขียวก็คือจำนวนวัตถุดิบที่ Issued ออกมาแล้ว นั่นหมายความว่าเราเบิกวัตถุดิบ (หรือจอง) ให้เป็นของสินค้าที่จะผลิตนี้เรียบร้อย จากนั้นถ้าเราจะให้ระบบจัดการผลิตให้เสร็จเลยก็ กดปุ่ม Complete ซะ แต่ตอนนี้จะใช้วิธี manual โดยการคลิกปุ่ม Declare

หน้าจอ Declare นี้ก็คล้ายกับการกรอกใบรายงานการผลิตประจำวันในโรงงานนั่นแหละครับ (ซึ่งโรงงานของผมก็ใช้วิธีนี้ ถ้าจะปรับนำไปใช้กับระบบโรงงานของผม ไม่ Process ของผมก็ OFBiz ล่ะครับที่ต้องถูกปรับเปลี่ยน) ให้เลื่อนลงมาตรงส่วน Production Run Declaration ในที่นี้ก็ให้เราเซต From Date กับ Thru Date ตามสบายเลยครับ แล้วก็ใส่ Actual Setup Time กับ Actual Task Time ให้ครบเผื่อตอนทำรายงานถึงประสิทธิภาพของเครื่องจะได้ใช้ข้อมูลตัวนี้เป็นฐานได้ แต่ Qty To Produced ให้ใส่ 1 นะครับจะได้ตรงกับ Order ที่สั่งไว้ จากนั้นก็ Submit Query ซะ

จากนั้นเมื่อเราประกอบหุ่นเสร็จแล้วก็ให้คลิกที่ปุ่ม Complete ก็เป็นอันเสร็จสิ้นงานย่อยในส่วน Assembling จากนั้นก็คลิกที่ปุ่ม start ของงานย่อยในส่วน Test เพื่อเริ่มทำการทดสอบหุ่นแอนดรอยด์ (เอ! ทดสอบยังไงดีน๊า :P) คราวนี้ก็ไม่ต้องไป declare อะไรให้มันวุ่นวายแล้ว กดปุ่ม complete ให้มันหมดเรื่องหมดราวไปซะเท่านี้ก็เป็นอันเสร็จการผลิตในวันนี้



9.นำสินค้าเข้าโกดัง
เมื่อเราทำการรัน routing จนครบแล้วก็ยังเหลือหน้าที่ที่เราต้องทำในโปรแกรมอีกสองสามอย่าง (ถ้าปล่อยระบบออกไปอย่างนี้ให้คนงานของผมกรอกนี่ ผมเตรียมใจรอความผิดพลาดของการกรอกข้อมูลได้เลย เพราะขั้นตอนในการกรอกดูไม่ค่อยจะสอดคล้องกับ Common Sense เลย เพราะเยอะเหลือเกิน) คือการนำสินค้าที่เราเพิ่งผลิตได้เข้าสต็อก และการปิดการผลิต (ก็ไม่รู้ว่ารันการผลิตจนเสร็จแล้วจะยังต้องมาปิดอีกทำไมก็ไม่รู้)

เมื่อเราคลิกปุ่ม complete ในขั้นตอนที่แล้วหน้าจอสำหรับการ Submit ให้สินค้าเราเข้าโกดังดังรูป






จะเห็นว่าในส่วนบนของหน้าจอซึ่งใช้แสดงสถานะของการผลิตนั้น ยังไม่เห็นเลยว่ามีผลผลิตที่เกิดขึ้นเท่าไหร่ เพราะ Produced ยังเป็น 0 อยู่เลย เรายังต้องไปคลิกปุ่ม Add ดังรูปข้างบนเพื่อบอกว่า “ผมผลิตสินค้าที่คุณสั่งเสร็จแล้วนะ มารับเข้าโกดังด้วย” เมื่อคลิก Add แล้ว Produced ก็จะกลายเป็น 1 ทันที

เมื่อทำเสร็จแล้วก็ให้คลิกปุ่ม Close Production Run ซึ่งอยู่ส่วนบนของส่วนแสดงสถานะด้านบน เท่านี้ก็เป็นอันเสร็จสิ้นการประกอบหุ่นแอนดรอยด์

คราวนี้มีโปรแกรมที่จะทำการ update ให้อัตโนมัติเมื่อเราทำการผลิตทุกครั้งนั่นคือ WorkEffort โปรแกรมนี้จะใช้ในการจัดการเกี่ยวกับการทำงานทุกชนิดภายในองค์กร อย่างงานนี้เป็นการทำงานของเครื่องจักร miracle_machine ซึ่ง WorkEffort นี้จะแสดงรายละเอียด และประสิทธิภาพของผู้ทำงาน (ในที่นี้คือเครื่อง miracle_machine) ดังนั้นให้เราคลิกไปที่โปรแกรม WorkEffort → Calendar → WeekView เราก็จะได้เห็นตารางการทำงานที่โปรแกรมนี้ทำให้เราโดยอัตโนมัติ ดังรูป






เท่านี้ก็เป็นอันเสร็จสมบูรณ์ในส่วนของการผลิตขั้นต้น ขอเรียนว่าบทความนี้อ้างอิงวิธีการมาจากเอกสารของ OpenTaps และได้ทำการดัดแปลงไปบางส่วนเพื่อให้เข้าใจได้ง่ายขึ้นโดยมีจุดประสงค์เพือทำการไล่วิธีการทำงานของระบบแบบคร่าวๆ ก่อนที่เราจะลงลึกเข้าไปวิเคราะห์ Data Model ของโปรแกรม Manufacturing ซึ่งอาจจะมีส่วนที่คร่อมเกี่ยว (Overlap) กับโปรแกรม และ Data Model ในส่วนอื่นๆ ด้วย

เมื่อเราผลิตเสร็จเราก็มาดูผลงานของเรากันดีกว่ามั๊ยครับว่า Android ของเราสวยแค่ไหน สวยมากมากเลย

หลับฝันดีนะครับ





ความคิดเห็น

ว่าแต่ว่าไม่เห็นชมสินค้าของผมเลย!

อุตสาห์เชียร์สินค้า ด้วยการติดรูป ไม่เห็นชมเลยว่าสวย อิอิ ขอบคุณครับที่เม้นท์ให้ เชื่อเปล่าบางทีติดอะไรผมก็ยังต้องย้อนกลับมาดูบทความของตัวเองเลย ก็เลยเห็นประโยชน์ของการเขียนบทความอย่างละเอียดเพื่อเอาไว้ใช้อ้างอิงในภายหลัง (คนเขียน Groovy in Action ก็ต้องย้อนกลับมาอ่านหนังสือตัวเองตอนติดเหมือนกัน)

เอ่อ! ทำไมนอนดึกจังครับเนี่ย อายุยังน้อยๆ อย่าใช้ร่างกายจน Overload นะครับ ทางข้างหน้ายังมีเรื่องที่ต้องการใช้สุขภาพของเราอีกเยอะเลย

ตาสว่างจาก "การผลิตขั้นต้น"

ตอนนี้ผมกำลังทำระบบเกี่ยวกับการผลิตอยู่ครับ เป็นระยะเวลา 1 สัปดาห์ที่ผมหลงทางกับการพัฒนาระบบ และแล้วมันก็ถึงทางตันครับ ผมก็ย้อนกลับมาดู OFBiz ว่ามีอะไรที่จะมาช่วยเราได้บ้าง ปรากฎว่าผมได้มองข้ามแก้วสารพัดนึก (อย่างที่คุณ himaeng บอก) ไป ผมก็เลยขอคำปรึกษาจากพี่แซน พี่แซนก็แนะนำให้มาอ่านบทความของคุณ himaeng ควบคู่กันไปด้วย เพียงแค่ 2 ตอนเท่านั้นทำให้โลกนี้มีความสว่างสดใสขึ้นมาทันทีเลยครับ (จากหน้ามือเป็นหลังมือ) ขอบคุณมากๆเลยครับ