วันนี้จะนำเสนอวิธีการอาจจะโกงๆ สักนิด กรณีที่มีการทำกระบวนการ Order Process
ไปแล้ว ข้อมูลถูกส่งไปเพื่อรอออก Invoice ใน AR Interface Line แล้วแต่บังเอิญข้อมูลผิดพลาด
คือผ่านกระบวนการตั้งแต่ Enter->Book Order->Pick Release->Ship Confirm ไปแล้ว
ข้อมูลกำลังจะถูกทำให้เป็น Invoice โดยการ AutoInvoice (ข้อมูลรออยู่ใน AR Interface Line)
จะด้วยเหตุผลอะไรก็ตาม เช่น รัน Auto Invoice แล้วไม่ผ่าน, หรือตรวจเจอว่าข้อมูลผิดพลาด
Ship ผิดวันที่ ผิดจำนวน ต่างๆ โดยวิธีที่ง่ายที่สุดให้เป็นไปตามระบบ คือ รัน Auto Invoice
ให้เกิด Invoice ที่ผิดๆ ขึ้นมาในระบบไปก่อน แล้วค่อยไปทำ RMA คืนของกลับไปและไปหักล้าง
จำนวนเงินใน Invoice วิธีนี้เป็นแบบทั่วๆ ไป ครับ
แต่ถ้าหากว่าไม่อยากจะทำวิธีนี้ ก็สามารถทำวิธี Reverse ข้อมูลกลับแบบ Manual เองก็ได้
ขออธิบายสิ่งที่เกิดขึ้นตามลำดับก่อน
1. Enter ->Book สินค้าจะถูกจองเอาไว้ เช่นของมี 100 เปิดขาย 80 ส่วนของ 80 จะโดนจองไว้
ของที่เหลือไว้ขายมีอีก 20 เท่านั้น จองเท่านั้นของยังไม่ได้โดนตัด
2. Pick Release ขั้นตอนนี้ก็คือ pick เพื่อไปหยิบของ สถานะที่โดนจองไว้ก็จะเปลี่ยน
จากจองไว้ Not Pick เป็น Pick Release
3. Ship Confirm ถึงขั้นตอนนี้เป็นการสั่งตัดของออกจากคลังแล้ว
โดยรายการจะถูกส่งไปรอตัดใน table interface ส่วนของ inventory หากวันที่ตัดเป็นวันเวลาปัจจุบัน
ของจะตัดออกจากระบบได้ทันที แต่หากเป็นวันที่อนาคต (Future Date) ระบบจะตัดไม่ได้
ต้องรอให้ถึงเวลาดังกล่าวก่อน
4. Auto Invoice หลังจาก Ship Confirm ไปแล้ว รอสักพักสถานะจะเปลี่ยนจาก Shipped เป็น Interfaced
นั่นคือรายการพร้อมที่จะถูกส่งไป Generate เป็น Invoice ใน AR แล้ว เพียงแค่ไปรัน Auto Invoice
นี่ก็จะเป็นสิ่งต่างๆ ที่เกิดขึ้นตามลำดับ ฉะนั้น หากต้องการแก้ไขสิ่งที่ผิดพลาดในข้อ 4 ก็ต้องทำไล่ย้อนกลับไป ดังนี้
ขั้นตอนการ Reverse transaction
1. ลบข้อมูลใน Interface Lines นี้ทิ้งโดยกดปุ่มกากบาท Delete จากหน้า App ได้เลย
(แนะนำว่าให้ Export ข้อมูลออกมาก่อน เผื่อไว้ดูในตอนหลัง table : ar.RA_INTERFACE_LINES_all)
2. ตามไปลบข้อมูลการตัด stock จากขั้นตอนการ Ship Confirm
โดยข้อมูลจะอยู่ที่ตาราง INV.MTL_TRANSACTIONS_INTERFACE อยู่ในเงื่อนไขของยังไม่ได้โดนตัดนะครับ
หาข้อมูลที่ตรงกับใน AR Interface Line ให้เจอและทำการลบออกไปจาก table
Link กลับไปด้วย transaction_header_id, transaction_line_id หรือ interface_attribute1 เป็นต้น
3. จากนั้นก็ตามไปลบข้อมูลการจองสินค้า โดยให้ตรวจสอบการจองจากหน้า Item Reservation ก่อน สังเกตว่า
รายการที่เราต้องการ reverse นั้นจะเป็น Pick Released ไปแล้ว ซึ่งไม่สามารถลบได้เองจากหน้านี้
ต้องใช้ script ในการลบ โดยให้ทำดังนี้
- ทำการ Examine เพื่อดูค่า RESERVATION_ID
- นำค่าที่ได้ไปใส่ใน script นี้
DELETE FROM inv.mtl_reservations mr
WHERE mr.RESERVATION_ID = :pReservID;
4. ลองเช็ค Item Onhand ก่อนและหลังดู จะพบว่าของที่โดนจองไว้ ได้ถูกคืนกลับมาแล้ว
จบแล้ว ครับ เมื่อรายการส่งไปเป็น Invoice ใน AR Interface ถูกเคลียร์, รายการตัด Stock ถูกเคลียร์,
รายการจองสินค้าโดนยกเลิก จำนวนสินค้าก็จะคืนกลับมาดังเดิม
ถึงขั้นตอนนี้แล้วก็คือการ Reverse transaction กลับไปโดยสมบูรณ์แล้ว แต่มีนิดนึงคือใน line ของ sale order นั้นๆ
จะต้องเสียไป (โดน closed) ก็ให้ enter line ใหม่ที่ข้อมูลใหม่ถูกต้องแล้วก็ทำตามกระบวนการปกติต่อไป
จุดประสงค์ที่เขียนวิธีทั้งหมดนี้ขึ้นมา ไม่ได้ต้องการให้ Reverse โดยแบบนี้ทุกๆ ครั้งครับ
อย่างที่ได้บอกไว้วิธีที่ง่ายที่สุด การทำ RMA โดยยอมให้เกิด Invoice ผิดๆ ออกมาก่อน
แต่การ Reserve แบบ Manual แบบนี้คงไม่ได้ใช้บ่อยครั้งนัก เพราะว่าค่อนข้างยุ่งยาก ซับซ้อน
และไม่รับประกันนะครับ ในส่วนนี้ผมเคยลองเคยทำแล้ว ยังไม่พบปัญหาใดๆ
แต่ว่ารู้ไว้ดีกว่าไม่รู้ เพราะว่ามันจะทำให้เราเข้าใจกระบวนการและลำดับการทำงานของระบบได้ดียิ่งขึ้น ครับ ...
..................................................................................
สวัสดีปีใหม่ 2554 คร้าบบบบบบบบบบบบบบบบบบบบบบบบ
..................................................................................
edit @ 30 Dec 2010 12:17:03 by ว า ต ะ เ ม ฆ า ส ะ ท้ า น ภ พ