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

📄 ar_m_cash_batch_approval.dml

📁 著名的Handle
💻 DML
📖 第 1 页 / 共 4 页
字号:
            IF    (%STATUS = %FAILURE)
                  ROLLBACK
                  EXIT
            END_IF

            IF    (CASH_RECEIPT_BATCH_HEADERS(BATCH_CR_TOTAL) = 0)
                  CASH_RECEIPT_BATCH_HEADERS(STATUS_FLAG) = (PARAMETER("STATUS_DELETE"))
            ELSE
                  CASH_RECEIPT_BATCH_HEADERS(STATUS_FLAG) = (PARAMETER("STATUS_APPROVE"))
            END_IF
      END_BLOCK

      BEGIN_BLOCK DUMMY
      END_BLOCK

END_FORM


PROCEDURE_FORM GL_ACCESS_CHECK &
      /TABLE=CASH_RECEIPT_BATCHES &
      /WITH=COMPANY_CODE=#COMPANY_CODE &
      /WITH=DIVISION = CASH_RECEIPT_BATCH_HEADERS(DIVISION) &
      /WITH=CR_BATCH_NUMBER=CASH_RECEIPT_BATCH_HEADERS(CR_BATCH_NUMBER)


      BEGIN_BLOCK CHECK_ACCOUNT
            IF  (CASH_RECEIPT_BATCHES(CUSTOMER_NUMBER) = #CASH_SALES)
                PERFORM "GEMLB:LB_SECURITY_ACCOUNT_CHECK" &
                              ((CASH_RECEIPT_BATCHES(GL_SHORT_CODE)), &
                               (CASH_RECEIPT_BATCHES(ACCOUNT_NUMBER)), &
                               (PARAMETER("MODULE_AR")), &
                               (PARAMETER("TTYPE_CR")), &
                               MESSAGE("P_26011"),"","",#COMPANY_CODE)
                IF  (%STATUS = %FAILURE)  EXIT (%FAILURE)
            END_IF
            IF    (#CURRENCY_METHOD = '0')
                  #TOTAL_VALUE = CASH_RECEIPT_BATCHES(AR_TRAN_TOTAL_CURRENCY)
            ELSE
                  #TOTAL_VALUE = CASH_RECEIPT_BATCHES(AR_TRAN_TOTAL_BASE)
            END_IF

            IF  (#SECURITY_ACTIVE = #YES  AND ABS(#TOTAL_VALUE) > #TRANSACTION_MAX)
                MESSAGE/IDENTIFIER/BELL/WAIT P_22300,CASH_RECEIPT_BATCHES(CR_BATCH_SEQ_NUMBER)
                EXIT(%FAILURE)
            END_IF
      END_BLOCK

END_FORM


PROCEDURE_FORM MAKE_GL_POSTINGS


      BEGIN_BLOCK GL_POSTINGS

            FIND IN SYS_CURRENCY_CODES &
                  /LOCK=NONE &
                  /WITH=SYS_CURRENCY_CODE = CASH_RECEIPT_BATCHES(SYS_CURRENCY_CODE)

            #CURRENCY_DECIMAL = SYS_CURRENCY_CODES(SYS_CURRENCY_DECIMALS)
            #CURRENCY_RATIO_INDIC = CASH_RECEIPT_BATCHES(SYS_CURRENCY_RATIO_INDIC)

            CLEAR_BUFFER GL_POSTINGS

            #POSTING_TOTAL_CURRENCY = CASH_RECEIPT_BATCHES(AR_TRAN_TOTAL_CURRENCY)
            #POSTING_TOTAL_BASE = CASH_RECEIPT_BATCHES(AR_TRAN_TOTAL_BASE)

            IF    (CASH_RECEIPT_BATCHES(CUSTOMER_NUMBER)=#CASH_SALES)
                  #TAX = CASH_RECEIPT_BATCHES(TAX)
            ELSE
                  #TAX = 0
            END_IF

            IF  (#CURRENCY_METHOD > '0' AND #TAX > 0)
                  IF    (CASH_RECEIPT_BATCHES(CUSTOMER_NUMBER)=#CASH_SALES)
                        IF    (#CURRENCY_RATIO_INDIC = (PARAMETER("MULTIPLY_RATIO_INDIC")))
                              #TAX_BASE = ROUND(#TAX * &
                                    CASH_RECEIPT_BATCHES(SYS_CURRENCY_RATE),#BASE_CURRENCY_DECIMAL)
                        ELSE
                              #TAX_BASE = ROUND(#TAX / &
                                    CASH_RECEIPT_BATCHES(SYS_CURRENCY_RATE),#BASE_CURRENCY_DECIMAL)
                        END_IF
                  ELSE
                        #TAX_BASE = 0
                  END_IF
            ELSE
                  #TAX_BASE = 0
            END_IF

            GL_POSTINGS(GL_SHORT_CODE)   = CASH_RECEIPT_BATCH_HEADERS(GL_BANK_SHORT_CODE)
            GL_POSTINGS(ACCOUNT_NUMBER)  = CASH_RECEIPT_BATCH_HEADERS(BANK_FULL_ACCOUNT)
            GL_POSTINGS(COMPANY_CODE)    = #COMPANY_CODE
            GL_POSTINGS(DIVISION)        = CASH_RECEIPT_BATCHES(DIVISION)
            GL_POSTINGS(POSTING_DATE)    = CASH_RECEIPT_BATCH_HEADERS(BANK_DATE)
            GL_POSTINGS(SOURCE_MODULE)   = (PARAMETER("MODULE_AR"))
            GL_POSTINGS(MODULE_TRANSACTION_TYPE)= (PARAMETER("TTYPE_CR"))
            GL_POSTINGS(POSTING_DATE)    = CASH_RECEIPT_BATCH_HEADERS(BANK_DATE)

            GL_POSTINGS(SYS_CURRENCY_CODE) = CASH_RECEIPT_BATCHES(SYS_CURRENCY_CODE)
            GL_POSTINGS(SYS_CURRENCY_RATE) = CASH_RECEIPT_BATCHES(SYS_CURRENCY_RATE)
            GL_POSTINGS(SYS_BASE_CURRENCY_CODE)=#BASE_CURRENCY_CODE
            GL_POSTINGS(SYS_CURRENCY_METHOD)=#CURRENCY_METHOD
            GL_POSTINGS(SYS_CURRENCY_RATIO_INDIC)=#CURRENCY_RATIO_INDIC

! mod by oil 1030
!           GL_POSTINGS(GL_POSTING_CURRENCY_DR) = #POSTING_TOTAL_CURRENCY
!           GL_POSTINGS(GL_POSTING_BASE_DR) = #POSTING_TOTAL_BASE

            IF (#POSTING_TOTAL_CURRENCY >= 0)
                  GL_POSTINGS(GL_POSTING_CURRENCY_DR) = #POSTING_TOTAL_CURRENCY
                  GL_POSTINGS(GL_POSTING_BASE_DR) = #POSTING_TOTAL_BASE
            ELSE
                  GL_POSTINGS(GL_POSTING_CURRENCY_CR) = #POSTING_TOTAL_CURRENCY * (-1)
                  GL_POSTINGS(GL_POSTING_BASE_CR) = #POSTING_TOTAL_BASE * (-1)
            END_IF
! end of mod

            IF    (CASH_RECEIPT_BATCHES(CUSTOMER_NUMBER)=#CASH_SALES)
                  GL_POSTINGS(POSTING_REFERENCE)=MESSAGE("P_00094",CASH_RECEIPT_BATCHES(CR_BATCH_NUMBER))
            ELSE
                  GL_POSTINGS(POSTING_REFERENCE) = #CASH_RECEIPT_NUMBER
            END_IF

            GL_POSTINGS(SOURCE_REFERENCE) = CASH_RECEIPT_BATCHES(CUSTOMER_NUMBER)
            GL_POSTINGS(BATCH_NUMBER)=CASH_RECEIPT_BATCHES(CR_BATCH_NUMBER)
            GL_POSTINGS(PERIOD)         = CASH_RECEIPT_BATCH_HEADERS(PERIOD)
            GL_POSTINGS(YEAR)           = CASH_RECEIPT_BATCH_HEADERS(YEAR)
            GL_POSTINGS(COST_CENTER)      = CASH_RECEIPT_BATCHES(COST_CENTER)
            IF  (CASH_RECEIPT_BATCHES(CUSTOMER_NUMBER) = #CASH_SALES)
                  GL_POSTINGS(POSTING_DESCRIPTION)=CASH_RECEIPT_BATCHES(CUSTOMER_REFERENCE)
            ELSE
                  GL_POSTINGS(POSTING_DESCRIPTION) = MESSAGE("P_2CASH_RECEIPT_BATCH_1",CASH_RECEIPT_BATCHES(CR_BATCH_NUMBER), &
                                    CASH_RECEIPT_BATCHES(CR_BATCH_SEQ_NUMBER))
            END_IF
            GL_POSTINGS(ACCOUNT_IDENT)  = (PARAMETER("ACCOUNT_IDENT_ACTUAL"))
            GL_POSTINGS(ACTIVATION_STATUS) = (PARAMETER("STATUS_ACTIVE"))

            ADD TO GL_POSTINGS
            IF (%STATUS <> %SUCCESS) EXIT (%FAILURE)

            CLEAR_BUFFER GL_POSTINGS

            IF  (CASH_RECEIPT_BATCHES(CUSTOMER_NUMBER) = #CASH_SALES)
                  GL_POSTINGS(GL_SHORT_CODE) = &
                                    CASH_RECEIPT_BATCHES(GL_SHORT_CODE)
                  GL_POSTINGS(ACCOUNT_NUMBER) = &
                                    CASH_RECEIPT_BATCHES(ACCOUNT_NUMBER)
            ELSE
                  GL_POSTINGS(GL_SHORT_CODE) = #AR_SHORT_CODE
                  GL_POSTINGS(ACCOUNT_NUMBER) = #AR_FULL_ACCOUNT
            END_IF
            GL_POSTINGS(COMPANY_CODE)    = #COMPANY_CODE
            GL_POSTINGS(DIVISION)        = CASH_RECEIPT_BATCHES(DIVISION)
            GL_POSTINGS(POSTING_DATE)    = &
                              CASH_RECEIPT_BATCH_HEADERS(BANK_DATE)
            GL_POSTINGS(SOURCE_MODULE)   = (PARAMETER("MODULE_AR"))
            GL_POSTINGS(MODULE_TRANSACTION_TYPE)= (PARAMETER("TTYPE_CR"))

            GL_POSTINGS(SYS_CURRENCY_CODE) = CASH_RECEIPT_BATCHES(SYS_CURRENCY_CODE)
            GL_POSTINGS(SYS_CURRENCY_RATE) = CASH_RECEIPT_BATCHES(SYS_CURRENCY_RATE)
            GL_POSTINGS(SYS_CURRENCY_METHOD)=#CURRENCY_METHOD
            GL_POSTINGS(SYS_BASE_CURRENCY_CODE)=#BASE_CURRENCY_CODE
            GL_POSTINGS(SYS_CURRENCY_RATIO_INDIC)=#CURRENCY_RATIO_INDIC
! mod by oil 1030
!           GL_POSTINGS(GL_POSTING_CURRENCY_CR) = (#POSTING_TOTAL_CURRENCY-#TAX)
!           GL_POSTINGS(GL_POSTING_BASE_CR) = (#POSTING_TOTAL_BASE-#TAX_BASE)
            
            IF (#POSTING_TOTAL_CURRENCY >= 0)
                  GL_POSTINGS(GL_POSTING_CURRENCY_CR) = (#POSTING_TOTAL_CURRENCY-#TAX)
                  GL_POSTINGS(GL_POSTING_BASE_CR) = (#POSTING_TOTAL_BASE-#TAX_BASE)
            ELSE
                  GL_POSTINGS(GL_POSTING_CURRENCY_DR) = ((#POSTING_TOTAL_CURRENCY -#TAX) * (-1))
                  GL_POSTINGS(GL_POSTING_BASE_DR) = ((#POSTING_TOTAL_BASE -#TAX_BASE) * (-1))
            END_IF
! end of mod
            IF    (CASH_RECEIPT_BATCHES(CUSTOMER_NUMBER)=#CASH_SALES)
                  GL_POSTINGS(POSTING_REFERENCE)=MESSAGE("P_00094",CASH_RECEIPT_BATCHES(CR_BATCH_NUMBER))
            ELSE
                  GL_POSTINGS(POSTING_REFERENCE) = #CASH_RECEIPT_NUMBER
            END_IF

            GL_POSTINGS(SOURCE_REFERENCE) = CASH_RECEIPT_BATCHES(CUSTOMER_NUMBER)
            GL_POSTINGS(BATCH_NUMBER)=CASH_RECEIPT_BATCHES(CR_BATCH_NUMBER)
            GL_POSTINGS(PERIOD)         = CASH_RECEIPT_BATCH_HEADERS(PERIOD)
            GL_POSTINGS(YEAR)           = CASH_RECEIPT_BATCH_HEADERS(YEAR)
            GL_POSTINGS(COST_CENTER)      = CASH_RECEIPT_BATCHES(COST_CENTER)
            GL_POSTINGS(POSTING_DESCRIPTION) = MESSAGE("P_2CASH_RECEIPT_BATCH_1",CASH_RECEIPT_BATCHES(CR_BATCH_NUMBER), &
                                    CASH_RECEIPT_BATCHES(CR_BATCH_SEQ_NUMBER))
            GL_POSTINGS(ACCOUNT_IDENT)  = (PARAMETER("ACCOUNT_IDENT_ACTUAL"))
            GL_POSTINGS(ACTIVATION_STATUS) = (PARAMETER("STATUS_ACTIVE"))
            GL_POSTINGS(SYS_POST_TYPE) = (PARAMETER('GL_POSTING_AUTOMATIC'))


            ADD TO GL_POSTINGS
            IF (%STATUS <> %SUCCESS) EXIT (%FAILURE)
      END_BLOCK

      BEGIN_BLOCK POST_TAX_AMOUNTS
            IF    (CASH_RECEIPT_BATCHES(CUSTOMER_NUMBER) = #CASH_SALES)
                  PERFORM POST_TAX

            ELSE_IF (#CUST_TAX_ON_CASH = #YES AND #DIV_TAX_ON_CASH = #YES)
                  
                  FIND IN TAX_RATES &
                        /LOCK=NONE &
                        /WITH=COMPANY_CODE    = #COMPANY_CODE &
                        /WITH=CUSTOMER_TAX_CODE = #CUST_TAX_CODE &
                        /WITH=PRODUCT_TAX_CODE=""

                  IF  (%STATUS = %FAILURE) 
                        GOTO END

                  ELSE_IF (TAX_RATES(SYS_TAX_ON_CASH) = #YES)

                        FIND IN AT:AR_TRANSACTION_TYPES &
                              /SECONDARY &
                              /LOCK=NONE &
                              /WITH=COMPANY_CODE=#COMPANY_CODE &
                              /WITH=DIVISION=#DIVISION &
                              /WITH=TRANSACTION_TYPE=(PARAMETER("TTYPE_AT"))

                        IF    (%STATUS = %FAILURE)
                              MESSAGE/IDENTIFIER/BELL/WAIT P_00878,(PARAMETER("TTYPE_AT"))
                              EXIT(%FAILURE)
                        END_IF

                              IF (AT:AR_TRANSACTION_TYPES(AR_CASH_ALLOCATION_ACCOUNT) <> "" OR &
                                 AT:AR_TRANSACTION_TYPES(AR_CASH_ALLOCATION_CODE) <> "")
                                    #TEMP_TAX_CODE = AT:AR_TRANSACTION_TYPES(AR_CASH_ALLOCATION_CODE)
                                    #TEMP_TAX_ACCOUNT = AT:AR_TRANSACTION_TYPES(AR_CASH_ALLOCATION_ACCOUNT)

                                    #AR_TAX_CODE = TAX_RATES(AR_TAX_CODE)
                                    #AR_TAX_ACCOUNT = TAX_RATES(AR_TAX_FULL_ACCOUNT)

                              ELSE
                                    #TEMP_TAX_CODE = TAX_RATES(AR_TEMP_TAX_CODE)
                                    #TEMP_TAX_ACCOUNT = TAX_RATES(AR_TEMP_TAX_ACCOUNT)
                                    #TAX_RATE   = TAX_RATES(SYS_TAX_RATE)

                                    #AR_TAX_CODE = TAX_RATES(AR_TAX_CODE)
                                    #AR_TAX_ACCOUNT = TAX_RATES(AR_TAX_FULL_ACCOUNT)
                                    END_IF

                        PERFORM POST_TAX_ON_CASH
                  END_IF
            END_IF
      END_BLOCK
      BEGIN_BLOCK END
      END_BLOCK
END_FORM

PROCEDURE_FORM POST_TAX &
      /TABLE=CASH_RECEIPT_TAX_DETAILS &
      /WITH=COMPANY_CODE=#COMPANY_CODE &
      /WITH=DIVISION=CASH_RECEIPT_BATCH_HEADERS(DIVISION) &
      /WITH=CR_BATCH_NUMBER=CASH_RECEIPT_BATCH_HEADERS(CR_BATCH_NUMBER) &
      /WITH=CR_BATCH_SEQ_NUMBER=CASH_RECEIPT_BATCHES(CR_BATCH_SEQ_NUMBER)


      BEGIN_BLOCK TAX_POSTINGS
            IF  (CASH_RECEIPT_TAX_DETAILS(AR_POSTING_FORMAT) <> "")

                  #AMOUNT_CR = CASH_RECEIPT_TAX_DETAILS(TAX)
                  #AMOUNT_DR = 0

                  PERFORM CALL_FORMAT_SPLIT
            ELSE
            CLEAR_BUFFER GL_POSTINGS

            GL_POSTINGS(COMPANY_CODE) = #COMPANY_CODE
            GL_POSTINGS(DIVISION) = CASH_RECEIPT_BATCHES(DIVISION)
            GL_POSTINGS(POSTING_DATE) = CASH_RECEIPT_BATCH_HEADERS(BANK_DATE)
            GL_POSTINGS(SOURCE_MODULE) = (PARAMETER("MODULE_AR"))
            GL_POSTINGS(MODULE_TRANSACTION_TYPE) = (PARAMETER("TTYPE_CR"))
            IF    (CASH_RECEIPT_BATCHES(CUSTOMER_NUMBER)=#CASH_SALES)
                  GL_POSTINGS(POSTING_REFERENCE)=MESSAGE("P_00094",CASH_RECEIPT_BATCHES(CR_BATCH_NUMBER))
            ELSE
                  GL_POSTINGS(POSTING_REFERENCE) = #CASH_RECEIPT_NUMBER

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -