📄 ar_m_cash_batch_approval.dml
字号:
TITLE AR_M_002,"Cash Batch Approval"
FORM BATCH_APPROVAL /ROW=3 /COL=2 /HEIGHT=21 /WIDTH=78 &
/TITLE=(MESSAGE("P_20141"))
BEGIN_BLOCK REGISTRATION
PERFORM "GEMLB:INT_LB_REGISTRATION" (%FORM_FILE, #INT_VERSION)
END_BLOCK
BEGIN_BLOCK PARAM_READ
START_TRANSACTION
#COMPANY_CODE = PARAMETER("USER_COMPANY_CODE")
#SECURITY_ACTIVE= PARAMETER("COMPANY_SECURITY_ACTIVE")
#CASH_SALES = PARAMETER("USER_CASH_SALES")
#YES = PARAMETER("LANGUAGE_YES")
#CURRENCY_LEN = PARAMETER("SYS_CURRENCY_LENGTH")
IF (#SECURITY_ACTIVE = #YES)
FIND IN SECURITY_TRAN_TYPES_VT &
/WITH=SOURCE_MODULE=(PARAMETER("MODULE_AR")) &
/WITH=SECURITY_TRANSACTION_TYPE=(PARAMETER("TTYPE_CR")) &
/WITH=CREATE_TRANSACTIONS=#YES
IF (%STATUS = %FAILURE)
MESSAGE/IDENTIFIER/BELL/WAIT P_00897,PARAMETER("TTYPE_CR")
EXIT
END_IF
END_IF
END_BLOCK
BEGIN_BLOCK DIVISION
INPUT_BLOCK /ROW=2 /COL=30 &
/PROMPT=(FIELD_PROMPT(DIVISION)) &
/TARGET=#DIVISION &
/USING=AR_CONTROLS(DIVISION) &
/LOV=SECURITY_PERIOD_ACCESS_VT(SYS_ACCESS_CODE,CODE_DESCRIPTION) &
/LOV_WITH=SYS_ACCESS_TYPE=(PARAMETER("ACCESS_TYPE_DIVISION")) &
/LOV_WITH=SOURCE_MODULE=(PARAMETER("MODULE_AR")) &
/LOV_WITH=SYS_ALLOW_ACCESS=#YES
FIND IN AR_CONTROLS &
/LOCK=NONE &
/WITH=COMPANY_CODE=#COMPANY_CODE &
/WITH=DIVISION=#DIVISION
IF (%STATUS = %FAILURE)
MESSAGE/IDENTIFIER/BELL/WAIT P_00354
GOTO DIVISION
END_IF
FIND IN SECURITY_PERIOD_ACCESS_VT &
/WITH=SYS_ACCESS_TYPE=(PARAMETER("ACCESS_TYPE_DIVISION")) &
/WITH=SYS_ACCESS_CODE= #DIVISION &
/WITH=SOURCE_MODULE=(PARAMETER("MODULE_AR"))
IF (%STATUS = %FAILURE)
MESSAGE/IDENTIFIER/BELL/WAIT P_00447
GOTO DIVISION
END_IF
IF (SECURITY_PERIOD_ACCESS_VT(SYS_ALLOW_ACCESS) <> #YES)
MESSAGE/IDENTIFIER/BELL/WAIT P_00756
GOTO DIVISION
END_IF
#DIVISION = AR_CONTROLS(DIVISION)
#CURRENCY_METHOD = AR_CONTROLS(SYS_CURRENCY_METHOD)
#BASE_CURRENCY_CODE = AR_CONTROLS(SYS_CURRENCY_CODE)
#DEF_AR_SHORT_CODE = AR_CONTROLS(AR_SHORT_CODE)
#DEF_AR_FULL_ACCOUNT = AR_CONTROLS(AR_FULL_ACCOUNT)
#DIV_TAX_ON_CASH = AR_CONTROLS(SYS_TAX_ON_CASH)
FIND IN SYS_CURRENCY_CODES &
/LOCK=NONE &
/WITH=SYS_CURRENCY_CODE=#BASE_CURRENCY_CODE
IF (%STATUS = %FAILURE)
MESSAGE/IDENTIFIER/BELL/WAIT P_82400
EXIT (%FAILURE)
END_IF
#BASE_CURRENCY_DECIMAL = SYS_CURRENCY_CODES(SYS_CURRENCY_DECIMALS)
END_BLOCK
BEGIN_BLOCK SECURITY_CHECK_1
IF (#SECURITY_ACTIVE = #YES)
FIND IN SECURITY_TRAN_TYPES_VT &
/WITH=SOURCE_MODULE=(PARAMETER("MODULE_AR")) &
/WITH=SECURITY_TRANSACTION_TYPE=(PARAMETER("TTYPE_CR"))
IF (%STATUS = %FAILURE OR &
SECURITY_TRAN_TYPES_VT(CREATE_TRANSACTIONS) <> #YES)
MESSAGE/IDENTIFIER/BELL/WAIT P_22371
EXIT(%FAILURE)
ELSE
#TRANSACTION_MAX = SECURITY_TRAN_TYPES_VT(MAXIMUM_VALUE)
END_IF
END_IF
PERFORM "GEMLB:LB_SECURITY_ACCOUNT_CHECK" &
((AR_CONTROLS(AR_SHORT_CODE)), &
(AR_CONTROLS(AR_FULL_ACCOUNT)), &
(PARAMETER("MODULE_AR")), &
(PARAMETER("TTYPE_CR")), &
MESSAGE("P_26002"),"","",#company_code)
IF (%STATUS = %FAILURE) GOTO DIVISION
END_BLOCK
OUTPUT_BLOCK DISP_DIV /ROW=2 /COL=33 &
/SOURCE=(AR_CONTROLS(DIVISION_NAME))
BEGIN_BLOCK CR_BATCH_NUMBER
INPUT_BLOCK /ROW=4 /COL=30 &
/PROMPT=(FIELD_PROMPT(CR_BATCH_NUMBER)) &
/TARGET=#BATCH_NUMBERS &
/TITLE=(FIELD_PROMPT(CR_BATCH_NUMBER)) &
/USING=CASH_RECEIPT_BATCH_HEADERS(CR_BATCH_NUMBER),MULTIPLE &
/LOV=CASH_RECEIPT_BATCH_HEADERS(CR_BATCH_NUMBER,BANK_CODE,BANK_DATE) &
/LOV_WITH=A.COMPANY_CODE=#COMPANY_CODE &
/LOV_WITH=A.DIVISION=AR_CONTROLS(DIVISION) &
/lOV_WITH=A.BATCH_CR_TOTAL=A.ENTERED_CASH_RECEIPT_TOTAL &
/LOV_WITH=A.STATUS_FLAG=(PARAMETER("STATUS_UPDATE"))
END_BLOCK
BEGIN_BLOCK PROCESS
COMMIT
PERFORM PROCESS_BATCH
IF (%STATUS = %EMPTY OR %STATUS = %EXIT OR %STATUS = %BACK) GOTO DIVISION
END_BLOCK
END_FORM
PROCEDURE_FORM PROCESS_BATCH
BEGIN_BLOCK PROCESS
PERFORM SHOW_BATCH_LINES
IF (%STATUS = %EMPTY OR %STATUS = %EXIT OR %STATUS = %BACK) EXIT (%STATUS)
COMMIT
END_BLOCK
MENU_BLOCK PRINT_SELECTION /ROW=12 /COL=26 &
/SOURCE=(MESSAGE("P_00731")) /NOREPEAT &
/ITEM=(MESSAGE("P_00731")),(MESSAGE("P_44255")),(#OPT="UPDATE") &
/ITEM=(MESSAGE("P_00067")),(MESSAGE("P_00087")),(#OPT="BATCH_UPDATE") &
/ITEM=(MESSAGE("P_00257")),(MESSAGE("P_00263")),(EXIT)
BEGIN_BLOCK UPDATE
IF (#OPT = "UPDATE")
PERFORM UPDATE_BATCHES
PERFORM "GEMAR:INT_AR_M_PROCESS_CASH_RB_ALLOCATIONS" ( &
#DIVISION, &
#BATCH_NUMBERS)
END_IF
END_BLOCK
BEGIN_BLOCK BATCH
IF (#OPT = "BATCH_UPDATE")
PERFORM/BATCH 'GEMSYS:SYS_COMPANY_SETUP' BATCH_ENTRY ( &
#COMPANY_CODE, &
"GEMAR:AR_M_CASH_BATCH_APPROVAL", &
'BATCH_SETUP', &
#COMPANY_CODE,&
#DIVISION, &
#BATCH_NUMBERS, &
#TRANSACTION_MAX)
END_IF
EXIT
END_BLOCK
END_FORM
PROCEDURE_FORM BATCH_SETUP (#C,#P1,#P2,#P3)
BEGIN_BLOCK COMPANY_SETUP
START_TRANSACTION
#COMPANY_CODE= #C
#DIVISION = #P1
#BATCH_NUMBERS=#P2
#SECURITY_ACTIVE= PARAMETER('COMPANY_SECURITY_ACTIVE')
#YES = PARAMETER("LANGUAGE_YES")
#CURRENCY_LEN = PARAMETER("SYS_CURRENCY_LENGTH")
#TRANSACTION_MAX = #P3
#CASH_SALES = PARAMETER('USER_CASH_SALES')
FIND IN AR_CONTROLS &
/WITH=COMPANY_CODE=#COMPANY_CODE &
/WITH=DIVISION=#DIVISION &
/LOCK=NONE
IF (%STATUS<>%SUCCESS)
MESSAGE/IDENTIFIER/BELL/WAIT P_00354
exit
END_IF
#CURRENCY_METHOD = AR_CONTROLS(SYS_CURRENCY_METHOD)
#BASE_CURRENCY_CODE = AR_CONTROLS(SYS_CURRENCY_CODE)
#DEF_AR_SHORT_CODE = AR_CONTROLS(AR_SHORT_CODE)
#DEF_AR_FULL_ACCOUNT = AR_CONTROLS(AR_FULL_ACCOUNT)
#DIV_TAX_ON_CASH = AR_CONTROLS(SYS_TAX_ON_CASH)
FIND IN SYS_CURRENCY_CODES &
/LOCK=NONE &
/WITH=SYS_CURRENCY_CODE=#BASE_CURRENCY_CODE
IF (%STATUS = %FAILURE)
MESSAGE/IDENTIFIER/BELL/WAIT P_82400
EXIT (%FAILURE)
END_IF
#BASE_CURRENCY_DECIMAL = SYS_CURRENCY_CODES(SYS_CURRENCY_DECIMALS)
COMMIT
END_BLOCK
BEGIN_BLOCK PROCESS
PERFORM UPDATE_BATCHES
PERFORM "GEMAR:INT_AR_M_PROCESS_CASH_RB_ALLOCATIONS" ( &
#DIVISION, &
#BATCH_NUMBERS)
END_BLOCK
END_FORM
PROCEDURE_FORM UPDATE_BATCHES &
/TABLE=CASH_RECEIPT_BATCH_HEADERS &
/WITH=COMPANY_CODE=#COMPANY_CODE &
/WITH=DIVISION = #DIVISION &
/WITH=CR_BATCH_NUMBER AMONG #BATCH_NUMBERS &
/WITH=CASH_RECEIPT_BATCH_HEADERS(STATUS_FLAG) <> (PARAMETER("STATUS_APPROVE")) &
/WITH=CASH_RECEIPT_BATCH_HEADERS(STATUS_FLAG) = (PARAMETER("STATUS_UPDATE")) &
/SORTED_BY=(CASH_RECEIPT_BATCH_HEADERS(CR_BATCH_NUMBER)) &
/COMMIT_RATE=(1)
BEGIN_BLOCK CHECK_BATCH_TOTALS_AGAIN
#TOTAL_BATCH = 0
PERFORM TOTAL_UP
IF (CASH_RECEIPT_BATCH_HEADERS(ENTERED_CASH_RECEIPT_TOTAL) &
<> #TOTAL_BATCH)
MESSAGE/IDENTIFIER/BELL/WAIT P_01602,CASH_RECEIPT_BATCH_HEADERS(cr_batch_number)
GOTO DUMMY
END_IF
end_block
BEGIN_BLOCK SECURITY_CHECK
PERFORM "GEMLB:LB_SECURITY_ACCOUNT_CHECK" &
((CASH_RECEIPT_BATCH_HEADERS(GL_BANK_SHORT_CODE)), &
(CASH_RECEIPT_BATCH_HEADERS(BANK_FULL_ACCOUNT)), &
(PARAMETER("MODULE_AR")), &
(PARAMETER("TTYPE_CR")), &
FIELD_SHORT_PROMPT(BANK_CODE),"","",#company_code)
IF (%STATUS = %FAILURE) GOTO DUMMY
PERFORM GL_ACCESS_CHECK
IF (%STATUS=%FAILURE) GOTO DUMMY
END_BLOCK
#BANK_CODE=CASH_RECEIPT_BATCH_HEADERS(BANK_CODE)
BEGIN_BLOCK CREATE_RECORDS
FIND IN AR_TRANSACTION_TYPES &
/LOCK=WRITE &
/WITH=COMPANY_CODE=#COMPANY_CODE &
/WITH=DIVISION=#DIVISION &
/WITH=TRANSACTION_TYPE=(PARAMETER("TTYPE_CR"))
IF (%STATUS = %FAILURE)
MESSAGE/IDENTIFIER/BELL/WAIT P_00878,(PARAMETER("TTYPE_CR"))
ROLLBACK
EXIT(%FAILURE)
END_IF
PERFORM CREATE_AR_TRANSACTION_RECORD
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -