⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ar_m_cash_batch_approval.dml

📁 著名的Handle
💻 DML
📖 第 1 页 / 共 4 页
字号:
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 + -