# FI Validation ALL Logic ## 1. Val-Header-XXX :::info **เงื่อนไข:** ::: - วันที่บัญชี (`DateAcct`) ต้องมีค่า และรูปแบบ `YYYYMM` มีค่าปีเท่ากับ `2022` , เดือน `04` - **ยกเว้น** ประเภทเอกสาร (`headerDocType`) ค่า `"J9", "O9", "OX"` - วันที่ผ่านรายการต้องอยู่ถัดจากวันที่โอน ข้อมูลสินทรัพย์เดิม(ถ้ามีค่า) - **ยกเว้น** ถ้า User อยู่ในกลุ่มพิเศษ FISET( `ZUSER_EXCEPT_CUTDATE`) :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0713 - NOT_VALID_POST_BEFORE_TAKE_OVER_DATE_PLUS_1` → ไม่สามารถระบุวันที่ผ่านรายการก่อนวันที่โอน ข้อมูลสินทรัพย์เดิมได้ ## 2. Val-Header-002 :::info **เงื่อนไข:** ::: - ต้องมี Period ที่ตรงกับวันที่บัญชี (`DateAcct`) :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0204 - NOT_FOUND_ACCOUNT_DATE_IN_CALENDAR` → Not found posting date {0} :::info **เงื่อนไข:** ::: - ถ้า Period > 12 และต้องอยู่ในช่วงที่เปิดอยู่ :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0013 - DATE_NOT_IN_PERIOD` → วันที่ผ่านรายการ {0} ไม่อยู่ในงวด {1} :::info **เงื่อนไข:** ::: - Period ต้องมีค่าอยู่ในตาราง TH_CAPeriodControl **แจ้งเตือนถ้าผิดเงื่อนไข:** - ❗ `E0002 - PERIOD_IS_CLOSE` → งวดการผ่านรายการ {0} {1} ไม่เปิด ## 3. Val-Line-034:GL01 Check FI Area for all transaction :::info **เงื่อนไข:** ::: - (`FiArea`) ถ้ารหัสพื้นที่เป็นค่าว่าง :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0114 - REQUIRE_FI_AREA` → Please input budget area ## 4. Val-Line-036:Check Cost activity :::info **เงื่อนไข:** ::: - `CostActivity` ถ้ารหัสกิจกรรมย่อยเป็นค่าว่าง :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `I0401 - INFO_COST_ACTIVITY` → กรุณาตรวจสอบรหัสกิจกรรมย่อย {0} ที่ระบบกำหนดให้ !! ## 5. Val-Line-038:Check Payment Center related Cost Center :::info **เงื่อนไขก่อนการตรวจสอบ:** ::: - DocType ไม่ใช่ "JX" หรือ "JZ" - AccountType() เท่ากับ `S` - GlAccount() ต้องมีค่า และไม่เท่ากับ `4307010101` :::info **การตรวจสอบ:** ::: - ถ้า CostCenter() และ PaymentCenter() ขึ้นต้นด้วย "04" ตามด้วยอักขระใด ๆ ก็ได้ (หรือไม่มีเลย) - หรือถ้า CostCenter() และ PaymentCenter() ทั้งสองมีความยาว 10 ตัวอักษร และ 5 ตัวอักษรแรกเหมือนกัน :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `I0402 - INFO_RELATED_COST_CENTER_PAYMENT_CENTER` → กรุณาระบุรหัสหน่วยเบิกจ่ายที่สัมพันธ์กับรหัสศูนย์ต้นทุน ## 6. Val-Line-041:Check FundSource & Posting Date :::info **เงื่อนไข:** ::: - เพิ่มยกเว้น FormID A13 (JV), C01 (JV), J00 (JV), J71 (JV), (J30 (JV) ปีบัญชี 2022) - PostingKey() ต้องเป็น "40" หรือ "50" - FundSource() ต้องไม่ว่าง และ BrDocNo() กับ PoDocNo() ต้องว่าง - FundSource() ต้องไม่ขึ้นต้นด้วย "..28000" - ไม่ใช่ FORMID (C01, J00, J71, J30) ที่เกี่ยวข้องกับ "JV" - DocType ต้องไม่อยู่ในเซ็ตที่กำหนด (ZBLART_FOR_TKK และ ZDOCTYPE_NOT_CHK_FS_DATEACCT) - ตรวจสอบปีงบประมาณ (Fiscal Year) - ตรวจสอบ DocType และ GlAccount() ตามเงื่อนไขต่างๆ ดังนี้ * ถ้า DocType ตรงกับเงื่อนไขขึ้นต้นด้วย "K" และตัวอักษรถัดไป ห้ามเป็น "1", "8", "A", "B", "F", "D", "Y", หรือ "Z" * ถ้า DocType เป็น "K1" และ PostingKey() เป็น "50" * ถ้า DocType เป็น "K1" และ PostingKey() เป็น "40" และ GlAccount() ไม่ตรงกับ "1101010101", "1101010102", "1101010106" หรือ "1101020603" * ถ้า DocType เป็น "K8" และ PostingKey() เป็น "40" * ถ้า DocType เป็น "JE" หรือ "JV" และ GlAccount() ไม่ตรงกับรูปแบบที่กำหนด * ถ้าตรงกับเงื่อนไข isChk และ line.getFundSource() ไม่ขึ้นต้นด้วยปีงบประมาณ (fPost) :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0477 - NOT_VALID_ACCOUNT_DATE_YEAR_SOURCE_OF_FUND` → ระบุแหล่งของเงินไม่ถูกต้องตามวันที่ผ่านรายการ ## 7. Val-Line-042:Check Budget Code & Cost Center :::info **เงื่อนไข:** ::: - รหัสบริษัท (CompCode) ไม่ใช่ "99999" - ประเภทเอกสาร (headerDocType) ไม่ใช่ "AI" - รหัสงบประมาณ (BgCode) ไม่ว่าง - รหัสศูนย์ต้นทุน (CostCenter) ไม่ว่าง - และผู้ใช้งาน ไม่ได้อยู่ในชุดข้อมูลที่อนุญาต (ZUSER_VALID_STEP_42) :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0872 - ZGFMIS_FI_118` → ระบุรหัสงบประมาณและศูนย์ต้นทุนไม่ถูกต้อง ## 8. Val-Line-043:Check FundSource && Budget Code :::info **เงื่อนไข:** ::: - รหัสบริษัท (CompCode) ไม่ใช่ "99999" - ประเภทเอกสาร (headerDocType) ตรงกับรูปแบบ ที่กำหนด (ขึ้นต้นด้วย K, L - หรือ J ตามเงื่อนไขเฉพาะ) - คีย์การลงบัญชี (PostingKey) เท่ากับ "40" - รหัสงบประมาณ (BgCode) และแหล่งเงิน (FundSource) ไม่ว่าง - ถ้า FundSource ตรงกับ ..11310 ต้องไม่ขึ้นต้นด้วย 9 และต้องมี 31 ที่ตำแหน่งที่ 14-15 - ถ้า FundSource ตรงกับ ..11320 เหมือนกัน แต่ใช้ 32 แทน 31 - ถ้า FundSource ตรงกับ ..11410, ..11420, ..11500 ตรวจสอบว่ารหัสงบประมาณมีรูปแบบเฉพาะตามประเภทของแหล่งเงิน เช่น 410, 420, 500 - ถ้า FundSource ตรงกับ ..19... รหัสงบประมาณต้องมีความยาว 5 ตัวอักษร - ถ้า FundSource ตรงกับ ..10... ห้ามใช้รหัสงบประมาณที่ขึ้นต้นด้วย 9090960019 :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0873 - ZGFMIS_FI_119` → ระบุรหัสงบประมาณไม่ถูกต้องตามแหล่งของเงิน ## 9. Val-Line-044:Check Budget Activity & FundSource ( เงินในงบ ) :::info **เงื่อนไข:** ::: - ประเภทเอกสาร (headerDocType) ไม่ใช่ .Z, BE, หรือ BG - และไม่ใช่กรณีที่ headerDocType เป็น "J7" และ PostingKey เป็น "50" - และ FundSource มีรูปแบบที่ตำแหน่งที่ 3-4 เป็น "11" - และ GlAccount ตรงกับรูปแบบที่อนุญาต เช่น 1102010101, 1204xxx, 5xxx เป็นต้น - และ GlAccount ไม่ตรงกับรูปแบบที่ไม่อนุญาต เช่น 5105xxx, 5210xxx, 5301010101 เป็นต้น - และไม่ใช่กรณีพิเศษที่ headerDocType ขึ้นต้นด้วย "A" และ CompCode เป็น "02005" และเลข 2 ตัวแรกของ FundSource ≤ 649090960019 - ถ้า BgActivity ขึ้นต้นด้วย "P" หรือความยาวของ BgActivity ไม่ใช่ 14 หรือ 17 ตัวอักษร หรือ BgActivity ขึ้นต้นด้วย "90909" แต่ BgCode ไม่ได้ ขึ้นต้นด้วย "909090" :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0874 - ZGFMIS_FI_126)` → กรุณาระบุรหัสกิจกรรมที่ถูกต้อง ## 10. Val-Line-138:Check Budget Code, Budget Activity & FundSource ( เงินในงบ ) :::info **เงื่อนไข:** ::: - ประเภทเอกสาร (headerDocType) ไม่ใช่ .Z, BE, BG, A*, หรือ JV - และไม่ใช่กรณีที่ headerDocType เป็น "J7" และ PostingKey เป็น "50" - และ FundSource มีรูปแบบที่ตำแหน่งที่ 3-4 เป็น "11" - และเลข 2 ตัวแรกของ FundSource มีค่ามากกว่าหรือเท่ากับ 64 - และ GlAccount ตรงกับรูปแบบที่อนุญาต เช่น 1102010101, 1204xxx, 5xxx เป็นต้น - และ GlAccount ไม่ตรงกับรูปแบบที่ไม่อนุญาต เช่น 5105xxx, 5210xxx, 5301010101 เป็นต้น - และ BgActivity ไม่ขึ้นต้นด้วย 90909, 80808 หรือ 9, 5, 7 - และถ้า 5 ตัวแรกของ BgCode ไม่ตรงกับ 5 ตัวแรกของ BgActivity :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0918 - NOT_VALID_BG_ACTIVITY_AND_BG_CODE_11` → ระบุรหัสกิจกรรมหลักไม่สัมพันธ์กับรหัสงบประมาณ ## 11. Val-Line-048:Check Budget Code :::info **เงื่อนไข:** ::: - BgCode (รหัสงบประมาณ) ไม่ว่าง และ ไม่ได้ขึ้นต้นด้วยเลข 9 - ถ้า BgCode มีรูปแบบลงท้ายด้วย 310000 หรือ 320000 :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0875 - ZGFMIS_FI_176` → ไม่สามารถระบุรหัสงบประมาณ ## 12. Val-Complete-001:Check Payment Center :::info **เงื่อนไข:** ::: - ถ้าข้อความหัวเอกสาร (DocHeaderText) ว่างเปล่า หรือ - ความยาวของข้อความหัวเอกสาร น้อยกว่า 25 ตัวอักษร หรือ - ความยาวของข้อความหัวเอกสาร มากกว่าหรือเท่ากับ 25 ตัวอักษร แต่ ตำแหน่งที่ 16 ถึง 25 (index 15 ถึง 24) ไม่ใช่คำว่า "GENG2DOC01" :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0102 - REQUIRE_PAYMENT_CENTER` → Please input payment center ## 13. Val-Line-064:Check Close payment center :::info **เงื่อนไข:** ::: - ดึงข้อมูล Payment Center จากระบบ โดยใช้รหัสที่มีอยู๋ - ถ้าไม่พบ Payment Center :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0202 - NOT_FOUND_PAYMENT_CENTER` → Not found payment center :::info **เงื่อนไข:** ::: - ถ้า Payment Center ถูกปิดใช้งาน (Inactive) :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0775 - INACTIVE_PAYMENT_CENTER` → หน่วยเบิกจ่าย {0} ถูก Mark delete ไม่สามารถใช้งานได้ :::info **เงื่อนไข:** ::: - ถ้า Payment Center ถูกปิดบัญชี และวันที่ปิดบัญชี (DateCloseAcct) มีอยู่ และวันปิดบัญชี ≤ วันที่บัญชีของเอกสาร :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0754 - LOSED_PAYMENT_CENTER` → หน่วยเบิกจ่าย {0} ไม่สามารถใช้งานได้หลังวันที่ปิดหน่วยเบิกจ่าย :::info **เงื่อนไข:** ::: - ถ้า Payment Center หมดอายุ (ไม่ valid ณ วันที่บัญชีของเอกสาร) :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0777 - EXPIRED_PAYMENT_CENTER` → หน่วยเบิกจ่าย {0} หมดอายุไม่สามารถใช้งานได้ :::info **เงื่อนไข:** ::: - ถ้า Payment Center ถูกบล็อก :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0758 - ศูนย์เบิกจ่ายถูกบล็อก (BLOCKED_PAYMENT_CENTER` → หน่วยเบิกจ่าย {0} ถูกระงับการผ่านรายการ :::info **เงื่อนไข:** ::: - ถ้า ประเภทเอกสาร (headerDocType) อยู่ในกลุ่มที่อนุญาตให้ใช้ศูนย์เบิกจ่ายที่ปิดแล้ว และรหัสศูนย์เบิกจ่ายในบรรทัดตรงกับของหัวเอกสารและวันปิดตามกฎหมาย (DateCloseLaw) ไม่มี หรือ ยังไม่ถึงวันบัญชี :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0706 - NOT_VALID_CLOSED_PAYMENT_CENTER` → สามารถ ทำรายการของประเภทเอกสาร JT หรือ JS เมื่อปิดหน่วยเบิกจ่ายเท่านั้น ## 14. Val-Complete-026:GL08 ตรวจสอบการบันทึกบัญชี TE/TR เพิ่มยกเว้นจาก C01, J71 :::info **เงื่อนไข:** ::: - ถ้าบรรทัดนี้ ไม่ได้ถูกสร้างขึ้นอัตโนมัติ (isAutoGen()) - และเอกสารนี้ ไม่ใช่เอกสารที่สร้างอัตโนมัติ (isAutoDoc()) - และ FormID ของเอกสาร ไม่ใช่ C01 หรือ J71 - และ headerDocType ไม่อยู่ในชุดประเภทเอกสารที่ยกเว้น (ZGL08_EX_DOCS_TYPE_01) - ถ้า GlAccount อยู่ในชุดบัญชีที่ไม่อนุญาต (ZGL08_LN_ACC_NUM_01) :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0449 - NOT_VALID_GL_TR_TE` → ไม่อนุญาตให้ปรับปรุงรหัส {0} โดยตรง ## 15.Val-Complete-100:GL account is summary :::info **เงื่อนไข:** ::: - ถ้าพบว่าบัญชีนี้มีอยู่จริง (GLAccount != null) และบัญชีนี้ isSummary = True - :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0401 - GL_ACCOUNT_IS_SUMMARY` → GL account is summary ## 16.Val-Line-303:GL ห้ามลงบัญชีตรง (Reconcile) :::info **เงื่อนไข:** ::: - ตรวจสอบว่า GLAccount ไม่เป็น null - ประเภทบัญชี (AccountType) ต้องเป็น S - FormID ของเอกสารต้องไม่ใช่ C01 - ถ้าไม่พบข้อมูลบัญชี (GLAccountInfo) :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0232 - NOT_FOUND_GL_ACCOUNT_INFORMATION ` → Please maintain G/L account information: {0} :::info **เงื่อนไข:** ::: - ถ้าพบว่า Reconcile Account ไม่ว่าง ยกเว้น docType AA, AO ที่ Reconcile Account = A :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0479 - NOT_VALID_GL_RECONCIL_ACCOUNT` → บัญชี {0} ในหน่วยงาน {1} ไม่สามารถผ่านรายการโดยตรง (F5 354) ## 17.Val-Line-076:Check Mark for Delete Deposit account :::info **เงื่อนไข:** ::: - หากบัญชีเงินฝาก (DepositAccount) และเจ้าของบัญชี (DepositAccountOwner) ไม่ว่างเปล่า - ให้ดึงข้อมูลบัญชีเงินฝากจากระบบ ถ้าพบบัญชีดังกล่าว และบัญชีนั้น ไม่อยู่ในสถานะใช้งาน (Inactive) :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0750 - INACTIVE_DEPOSIT_ACCOUNT` → ไม่สามารถใช้ {0} {1} เนื่องจากถูกทำเครื่องหมายลบไว้ (ZGFMIS_FI 186) ## 18.Val-Line-120:GL10:ตรวจสอบการระบุ Trading Part :::info **เงื่อนไข:** ::: - หากค่ารหัสบริษัท (headerCompCode) อยู่ใน FI SET: ZGL10_CHECK_BP_BY_CCODE และ บัญชีแยกประเภท (GL Account) อยู่ใน FI SET: ZGL10_CHECK_BP_BY_ACC - ตรวจสอบถ้า Trading Partner มีค่าว่าง :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0129 - REQUIRE_TRADING_PARTNER` → บัญชี {0} ต้องระบุรหัสหน่วยงานคู่ค้า (Trading Partner) (ZGFMIS_FI 243) ## 19.Val-Line-159:GL10:ตรวจสอบ G/L ที่ต้องระบุ TrdPrt มี GL ตาม list ZGL_TP01 ต้องใส่ Trading Partner เพื่อตัดรายการระหว่างกัน :::info **เงื่อนไข:** ::: - บัญชีแยกประเภท (GL Account) อยู่ในชุด ZGL_TP01 - ประเภทเอกสาร (headerDocType) ไม่อยู่ในชุดที่ยกเว้น การตรวจสอบ Trading Partner (ZDOCTYPE_EXCEPT_BP) - ประเภทเอกสาร ไม่ใช่ "J9" พร้อมกับ ประเภทบัญชี (AccountType) เป็น K - ประเภทเอกสารอยู่ในชุดที่ต้องตรวจสอบ Trading Partner (ZDOCTYPE_CHECK_BP) - ผู้ใช้งานระบบ (จาก Web Online) ไม่อยู่ในชุดที่ยกเว้น การตรวจสอบ Trading Partner (ZUSERNAM_EXCEPT_BP) - ตรวจสอบถ้า Trading Partner มีค่าว่าง :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0129 - REQUIRE_TRADING_PARTNER` → บัญชี {0} ต้องระบุรหัสหน่วยงานคู่ค้า (Trading Partner) (ZGFMIS_FI 243) :::info **เงื่อนไข:** ::: - ตรวจสอบถ้า Trading Partner มีค่าอยู่ในระบบและอยู่ในสถานะ Active หรือไม่ :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0294 - NOT_FOUND_TRADING_PARTER` → ไม่พบรหัสคู่ค้า (Trading Partner) {0} ## 20.Val-Line-307:GL10:ตรวจสอบ TrdPrt. ต้องไม่เหมือนหน่วยงานหัวเอกสาร :::info **เงื่อนไข:** ::: - หากมีการระบุ Trading Partner และ ประเภทเอกสาร (headerDocType) ตรงกับรูปแบบที่กำหนดไว้ (เช่น เริ่มต้นด้วย D1-D7, DE, F, Z หรือ LA,LD,QH,QG,JY เป็นต้น) - ให้ตรวจสอบว่า Trading Partner ไม่ใช่รหัสบริษัทเดียวกันกับ headerCompCode หรือไม่\ :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0876 - NOT_VALID_TRADING_PARTNER_SAME_COMP_CODE` → ไม่สามารถระบุรหัส Trading Partner เป็นรหัสเดียวกันกับหน่วยงานผู้บันทึกได้ ## 21.Val-Line-307:GL10:ตรวจสอบ TrdPrt. ต้องไม่เหมือนหน่วยงานหัวเอกสาร :::info **เงื่อนไข:** ::: - หากมีการระบุ Trading Partner และ ประเภทเอกสาร (headerDocType) ตรงกับรูปแบบที่กำหนดไว้ (เช่น เริ่มต้นด้วย D1-D7, DE, F, Z หรือ LA,LD,QH,QG,JY เป็นต้น `^D[1-7DEFZ]|^L[ADKVGOHILN8QTSWXRUZ]|^Q[HG]|^JY$`) - ให้ตรวจสอบว่า Trading Partner ไม่ใช่รหัสบริษัทเดียวกันกับ headerCompCode :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0876 - NOT_VALID_TRADING_PARTNER_SAME_COMP_CODE` → ไม่สามารถระบุรหัส Trading Partner เป็นรหัสเดียวกันกับหน่วยงานผู้บันทึกได้ ## 22.Val-Line-079:ตรวจสอบ GL 1101020501 :::info **เงื่อนไข:** ::: - หากบัญชีแยกประเภท (GL Account) เท่ากับ "1101020501" - ให้ตรวจสอบว่า ประเภทเอกสาร (headerDocType) ไม่ตรงกับรูปแบบที่อนุญาต (ตาม regex ที่กำหนดไว้ `^J[K01293Q7XZP]|^N[1AD]|^R[IJKLMNOUSTXYZ]|^S[UXYL]|^KZ|^I.|^L[QRSTWX]|^X.|^OX|^E[XYZ]|^Q[GH]|^FY|^VX` ) :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0405 - NOT_ALLOW_GL_FOR_THIS_DOC_TYPE_2` → ไม่สามารถใช้ {0} กับประเภทเอกสารที่ไม่เกี่ยวข้องได้ ## 23.Val-Line-126:ตรวจสอบ GL 1101010112 :::info **เงื่อนไข:** ::: - หากบัญชีแยกประเภท (GL Account) เท่ากับ "1101010112" - ให้ตรวจสอบว่า ประเภทเอกสาร (headerDocType) ไม่ได้อยู่ใน FI SET: ZDOCTYPE_GL_1101010112 :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0405 - NOT_ALLOW_GL_FOR_THIS_DOC_TYPE_2` → ไม่สามารถใช้ {0} กับประเภทเอกสารที่ไม่เกี่ยวข้องได้ ## 24.Val-Line-088:ตรวจสอบ Cost center สำหรับ DocType R* และประเภทเอกสารรับรายได้ และนำส่งรายได้ ให้ใส่รหัสศูนย์ต้นทุน :::info **เงื่อนไข:** ::: - หากประเภทเอกสาร (headerDocType) ขึ้นต้นด้วยตัวอักษร R และตัวถัดไปไม่ใช่ Z - และให้ตรวจสอบว่า ไม่มีการระบุศูนย์ต้นทุน (Cost Center) :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0112 - REQUIRE_COST_CENTER` → กรุณาระบุรหัสศูนย์ต้นทุน (ZGFMIS_FI 105) ## 25.Val-Line-154:Check GL & doc type ห้ามใส่หมวดพัสดุ :::info **เงื่อนไข:** ::: - ประเภทเอกสาร (headerDocType) ไม่ได้อยู่ใน FI SET: ZDOCTYPE_FILL_ZZFIELD1 - บัญชีแยกประเภท (GL Account) ไม่ได้อยู่ใน FI SET: ZGL_CAN_FILL_ZZFIELD1 - ถ้า GpscGroup มีค่าว่าง :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0450 - NOT_FILL_GPSC_GROUP` → ห้ามระบุหมวดพัสดุสำหรับบัญชี {0} (ZGFMIS_FI 272) ## 26.Val-Line-037:Check กิจกรรมหลัก กับ กิจกรรมย่อย :::info **เงื่อนไข:** ::: - หากมีการระบุทั้ง Cost Activity และ Fund Source - ตรวจสอบว่าเลข 2 หลักแรกของ Fund Source มีค่ามากกว่าหรือเท่ากับ 64 - ถ้าใช่ → ตรวจสอบความถูกต้องของ Cost Activity ตามเงื่อนไข - ถ้ายาว 8 หรือ 12 ตัวอักษร → ถือว่าผ่าน - ถ้ายาว 15 ตัวอักษร - ถ้า BgActivity ยาว 17 ตัวอักษร และ ไม่ขึ้นต้นด้วย "90909" - ต้องมีค่าตรงกันระหว่างตำแหน่งที่ 7–16 ของ BgActivity กับตำแหน่งที่ 2–11 ของ CostActivity - ถ้าตรงกัน → ถือว่าผ่าน - ถ้าไม่เข้าเงื่อนไขข้างต้น → ก็ยังถือว่าผ่าน - ถ้าไม่ผ่านเงื่อนไขใดเลย :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `E0548 - NOT_VALID_COST_ACTIVITY_AND_COMP_CODE` → กิจกรรมย่อย {BSEG-PRZNR} ไม่สัมพันธ์กับกรม {BSEG-BUKRS} กรุณาแก้ไข !!! (ZGFMIS_FI 136) ## 27.Val-Line-046:Check แหล่งเงิน YY10XXX & รหัสงบประมาณ (กรณีงบกลาง) :::info **เงื่อนไข:** ::: - หากบัญชีแยกประเภท (GL Account) ตรงกับรูปแบบต่อไปนี้: - เริ่มต้นด้วย 1204 ถึง 1209 หรือ 1210 ถึง 1213 หรือขึ้นต้นด้วย 5 ใด ๆ - และ ไม่ตรงกับรูปแบบที่ยกเว้น เช่น 5105, 5108, 5.09, 5202, 5203, 5204, 5210, หรือ 5301010101 (`^510[58].*|^5.09.*|^520[234].*|^5210.*|^5301010101$`) - และ รหัสแหล่งเงิน (Fund Source) มีรูปแบบที่ตำแหน่งที่ 3–4 เป็น "10": - ตรวจสอบว่ารหัสบริษัท (CompCode) อยู่ในระบบของลูกค้าปัจจุบันหรือไม่ - ถ้าใช่ → ดึงข้อมูลแหล่งเงิน (Fund Source) - ถ้าพบแหล่งเงิน → ดึงข้อมูลรหัสงบประมาณ (Budget Code) ตามปีงบประมาณ - ถ้าไม่พบรหัสงบประมาณ :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: ❗ `E0209 - NOT_FOUND_BUDGET_CODE` → Not found budget code: {0} - ถ้าพบ และประเภท BISPP เป็น "0" หรือ "4": - ตรวจสอบความยาวของรหัสงบประมาณ (BgCode) - ถ้าเป็นงบประมาณ CGD ต้องมีความยาว 13 หรือ 17 ตัวอักษรเท่านั้น :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: ❗ `E0908 - NOT_VALID_FUND_SOURCE_AND_BG_CODE_CGD_BUDGET` → กรุณาระบุรหัสงบประมาณ ที่สัมพันธ์กับ แหล่งของเงิน (งบกลาง) (ZGFMIS_FI 155) หรือความยาวของรหัสงบกลาง ไม่ถูกต้อง - ถ้าไม่ใช่ CGD ต้องมีความยาว 13, 14, 15, 16, 18, 19 หรือ 20 ตัวอักษรเท่านั้น - ถ้าไม่ตรงตามเงื่อนไข :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: ❗ `E0908 - NOT_VALID_FUND_SOURCE_AND_BG_CODE_CGD_BUDGET` → กรุณาระบุรหัสงบประมาณ ที่สัมพันธ์กับ แหล่งของเงิน (งบกลาง) (ZGFMIS_FI 155) หรือความยาวของรหัสงบกลาง ไม่ถูกต้อง ## 28.Val-Line-3XX :::info **เงื่อนไข:** ::: - หากประเภทบัญชี (AccountType) เป็น K (ซึ่งโดยทั่วไปหมายถึงเจ้าหนี้) และ มีการระบุรหัสผู้ขาย (Vendor) - ดึงข้อมูลผู้ขาย (Business Partner) จากระบบ :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: - ❗ `I0404 - INFO_VENDOR` → {0} vendorCode : {1} vendorName (YGFMIS 000) ## 29.Val-Line-121:Check Doc Type B7, J7 :::info **เงื่อนไข:** ::: - หาก ประเภทเอกสารไม่ใช่ "J9" พร้อมกับประเภทบัญชีเป็น K และ รหัสงบประมาณ (BgCode) ขึ้นต้นด้วย "90909" - ตรวจสอบว่าแหล่งเงิน (Fund Source) มีอยู่ในระบบหรือไม่ :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: ❗ `E0201 - NOT_FOUND_SOURCE_OF_FUND` → Not found source of fund: {0} - ถ้าพบแหล่งเงิน ตรวจสอบว่ามีรหัสงบประมาณ (Budget Code) ที่ตรงกับปีงบประมาณของแหล่งเงินหรือไม่ :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: ❗ `E0209 - NOT_FOUND_BUDGET_CODE` → Not found budget code: {0} - ถ้าพบรหัสงบประมาณ และเป็นงบประมาณของ CGD - ตรวจสอบว่า ไม่มีการกำหนดความสัมพันธ์ระหว่างประเภทเอกสารกับรหัสบริษัท (APDocTypeCheck) - และ ไม่มีการกำหนดความสัมพันธ์ระหว่างรหัสงบประมาณกับแหล่งเงิน (APFundSourceCheck) ถ้าทั้งสองเงื่อนไขไม่ผ่าน :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: ❗ `E0737 - NOT_VALID_BGCODE_AND_FUND_SOURCE` → กรุณาตรวจสอบความสัมพันธ์ แหล่งของเงินและรหัสงบประมาณ (ZGFMIS_FI 331) ## 30.Val-Line-049:Check GL & Fund (งบลงทุน) :::info **เงื่อนไข:** ::: - แยกฟังชั่น (validateGLVsFundSourceXX1X3X0) - หากเข้าเงื่อนไขต่อไปนี้ทั้งหมด: - ประเภทเอกสาร (headerDocType) ไม่ใช่กลุ่มที่ยกเว้น (เช่น ขึ้นต้นด้วย E, R, I, S, O, T, P หรือเป็น AF, AI, AJ, AO, AZ, BG, J8, J9, JR, JV, JZ, KY, KZ) เพิ่ม AA ยกเว็นไม่ต้องเช็ค - ไม่ใช่กรณีพิเศษที่ headerDocType เป็น "J7" และ postingKey เป็น "50" - ไม่ใช่กรณีที่บริษัทอยู่ในกลุ่มต่างประเทศ (ZCC_FOREIGN) และบัญชีเป็น "5107030102" - บัญชี (glAccount) ต้องขึ้นต้นด้วย "1" หรือ "5" - บัญชีไม่ได้อยู่ใน FI SET: ZGL_NOT_CHECK_INVESTMENT - รหัสแหล่งเงิน (fundSource) ตรงกับรูปแบบ ..1.3.0 (เช่น 011130, 021130) - จากนั้นตรวจสอบเพิ่มเติมว่า - ถ้า fundSource เป็น ..1.310: - บัญชีต้องขึ้นต้นด้วย "1" หรือเป็น "5209010104" - หรือถ้าบริษัทขึ้นต้นด้วย "02" → บัญชีต้องขึ้นต้นด้วย "1" หรือเป็น "5106010101" - ถ้า fundSource เป็น ..1.320: - บัญชีต้องตรงกับรูปแบบที่กำหนด (เช่น 5101010101, 520201xxxx, 5203xxxx) หรืออยู่ในรายการบัญชีที่ระบุไว้ - ถ้า headerDocType เป็น "AA" หรือ "AT": - บัญชีต้องตรงกับรูปแบบที่กำหนด หรืออยู่ในรายการบัญชีที่ระบุไว้ :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: ❗ `E0903 - NOT_VALID_GL_ACCOUNT_IN_FUND_SOURCE_XX1X30` → กรุณาระบุรหัสบัญชี {0} สำหรับการบันทึกรายการงบลงทุน เท่านั้น (ZGFMIS_FI 157) ## 31.Val-Line-122:valid docType vs GL vs fund :::info **เงื่อนไข:** ::: - หากประเภทเอกสาร (headerDocType) อยู่ใน FI SET: ZDOCTYPE_ZFIVAL02 - ถ้าบรรทัดนั้นถูกสร้างอัตโนมัติ (isAutoGen()) → ข้ามไป - ถ้าไม่ใช่ให้เช็คเงื่อนไขอย่างอื่นต่อดังนี้ - ค้นหาข้อมูลจากตาราง TH_FIVal02 ตามเงื่อนไขที่สร้างขึ้น - ถ้าไม่พบข้อมูล :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: ❗ `E0403 - NOT_MATCH_IN_TH_FIVAL02` → ไม่สามารถทำรายการเอกสาร {0} รหัสบัญชี {1} แหล่งของเงิน {2} คีย์ผ่านรายการ {3} (ZGFMIS_FI 255) ## 32.Val-Line-008:Budget use Control :::info **เงื่อนไข:** ::: - หากประเภทเอกสาร (headerDocType) อยู่ใน FI SET: ZBLART_FOR_BUDGET - แยกฟังชั่น (valComplete008) - นำปีบัญชีของเอกสาร และประเภทเอกสาร ที่กำลังทำ ไปหาในตาราง TH_FIDocTypeControl ถ้าพบข้อมูล ถึงจะตรวจสอบตาม Exit นี้ - ตรวจสอบเฉพาะตอน Create เอกสาร คือ - ทำรายการผ่าน TCode : FB01, FB05, FB1K, FB50, FB65, FB60, FBZ2, FBV1, FBV0, FV50 - เป็นเอกสารที่มีสถานะ Parked - ถ้าเอกสารที่ทำเป็น ประเภทเอกสาร K1 จะตรวจสอบเมื่อตรงตามเงื่อนไขข้อใดข้อหนึ่งต่อไปนี้ - กรณีที่ในเอกสารมีบรรทัดรายการ Posting Key 40 ของรหัสบัญชี ที่ไม่ใช่ 5*, `1105010105` - กรณีที่ในเอกสารมีบรรทัดรายการ Posting Key ที่ไม่ใช่ 40, 50 - กรณีที่ในเอกสารมีบรรทัดรายการ Posting Key 50 ของรหัสบัญชี ที่ไม่ใช่ `1102010101` - ตรวจสอบทุกบรรทัดรายการในเอกสาร ที่ แหล่งเงิน เป็น YY1++++ และรหัสงบประมาณ ไม่ได้ยาว 5 Char โดยสิ่งที่ตรวจสอบคือ - ตรวจสอบว่า ปีบัญชี และ CompCode ที่กำลังทำ Open/Close โดยดูจากตาราง TH_FIBGControlOpen - ถ้ามีค่า - '1' คือ "ปิด ให้เงินในงบประมาณไม่ได้" ==> ให้ผลการตรวจสอบเป็น FALSE และไม่ตรวจสอบต่อ - '2' คือ "เปิด ให้เงินในงบประมาณได้" ==> ให้ผลการตรวจสอบเป็น TRUE และไม่ตรวจสอบต่อ - '3' คือ "เปิด แบบมีเงื่อนไข" ==> ให้ตรวจสอบต่อไป :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: ❗ `E0895 - NOT_FOUND_FI_BG_CONTROL` → โปรดตั้งค่า ZBUD_USE_CON_FI สำหรับปีบัญชี {0} ของหน่วยงาน {1} - นำค่าฟิลด์ จาก Record ที่ได้จากตาราง ZBUD_USE_CON_FI กับค่ารหัสงบประมาณ ของรายการไปตรวจสอบ โดยจะตรวจสอบ เฉพาะชุดของฟิลด์ที่ ZPOSx มีค่า (จะมีข้อมูล 5 ชุด ZPOSx, ZPVALx โดย x คือ 1 ถึง 5 เช่น ZPOS1 = 8 คือให้ตรวจสอบรหัสงบประมาณ หลักที่ 8 , ZVAL1 = 0 คือถ้าค่าที่หลักที่ 8 เป็น 0 คือ เป็นรหัสงบประมาณที่ยัง เปิดอยู่ ให้ผลการตรวจสอบเป็น TRUE) :::danger **แจ้งเตือนถ้าผิดเงื่อนไข:** ::: ❗ `E08956- NOT_VALID_FI_BG_CONTROL` → รหัสงบประมาณ ไม่ถูกต้อง (ZGFMIS_FI 254)