วันอังคารที่ 7 กรกฎาคม พ.ศ. 2552

หน้าจอ [MK-SO-02] รายการราคาไม่แสดง เลือกไม่ได้ ทั้งๆ ที่กำหนดรายการราคาไว้มากมาย

Window [MK-SO-02] , Tab Sale Order, Field M_PriceList_ID can not select any PriceList

Fixed: In Table C_Order, Column M_PriceList_ID. It has reference to M_PriceList and dynamic reference is 'M_PriceList is SO/PO'

M_PriceList is SO/PO
From:
M_PriceList.IsSOPriceList = '@IsSOTrx@' and M_PriceList.AD_Org_ID=@AD_Org_ID@

To:
M_PriceList.IsSOPriceList = '@IsSOTrx@' and (M_PriceList.AD_Org_ID=@AD_Org_ID@ or M_PriceList.AD_Org_ID=0)

สาเหตุที่หน้าจอ Sale Order [MK-SO-02] นี้ไม่เป็นรายการราคา สำหรับบาง Organization นั่นก็เนื่องมาจาก เดิม M_PriceList is SO/PO นั้นได้มีการสร้างเงื่อนไขไว้ว่า PriceList ที่จะแสดงได้ต้องมีค่า IsSOTrx ตามหน้าจอ เช่นที่หน้าจอ ซื้อ ก็จะแสดงแต่ PriceList ที่เป็น 'ซื้อ' หรือ ที่หน้าจอขาย ก็จะแสดงเฉพาะที่ PriceList ขาย นั่นเอง ต่อมาก็จะไปเจอเงื่อนไขว่าและต้องเป็น PriceList ของ Organization นั้นๆ ด้วย จึงจะแสดง สำหรับเงื่อนไขนี้ถามว่ากำหนดค่าไว้ในตอนแรกผิดมั๊ย คำตอบคือ ไม่ผิดค่ะ
แล้วทำอย่างไรให้รายการราคาที่กำหนดไว้มาแสดง สามารถทำได้ง่ายๆ ก็คือ ที่หน้าจอ PriceList ที่ฟิลด์หน่วยงาน แทนที่จะกำหนดเป็น * ให้กำหนดเป็น ค่าของหน่วงงานแต่ละหน่วยงานไป ผลก็คือ หน่วยงานหนึ่งๆ จะต้องมีอย่างน้อย 1 PriceList

ส่วนที่แก้ไปสามารถอธิบายได้ง่ายๆ คือ ให้เช็คเพิ่มด้วยว่า ถ้าเป็น PriceList ทีกำหนดให้เป็นของ * ให้แสดงด้วย เนื่องจากการกำหนดค่าใดๆ ในระบบหากกำหนดที่หน่วยงานให้เป็นระดับ * แสดงว่าเราต้องการแชร์ข้อมูล คือให้ข้อมูลเป็นข้อมูลระดับ Client ไม่ได้เป็นของหน่วยงานใดหน่วยงานหนึ่ง และต้องการให้ทุกหน่วยงานเห็นข้อมูลนี้

คำถามถัดมา อาจมีคนสงสัยต่ออีกว่าแล้วระบบรู้ได้ไง ว่าหน้าจอนี้เป็นหน้าจอซื้อ หรือหน้าจอขาย มีตรงไหนระบุไว้หรือ
คำตอบก็คือ มีค่ะ ถ้าคนที่ศึกษา Adempiere หรือ Compiere มาระดับหนึ่ง จะต้องรู้จัก Application Dictionary อย่างแน่นอน
ที่นี่เป็นที่รวบรวมการกำหนดค่าต่างๆ ของระบบไว้ทั้งหมด ทั้งที่เกี่ยวข้องกับฐานข้อมูล และหน้าจอ รายงาน .... (เริ่มนอกเรื่อง) ในส่วนของ Window, Tab and Field จะมีให้กำหนดว่า หน้าจอที่เราสร้างขึ้นนี้เป็นหน้าจอ แบบไหน เป็นหน้าจอเกี่ยวกับการขายหรือไม่ คือว่าง่ายๆ ที่นี่จะมีการกำหนดค่าให้กับตัวแปร IsSOTrx ถ้าเป็น 'Y' ก็แสดงว่าหน้าจอนี้ฉันจะให้เป็นหน้าจอที่ทำรายการเกี่ยวกับการขายนะจ๊ะ แค่นี้ค่ะ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น