获取银行账户分配明细SQL

    今天给客户提取所有银行账户的机构分配信息,写了以下一段SQL命令,记录下来以备后用:

SELECT CBA.BANK_ACCOUNT_NAME 账户名,
       BANK_INFO.BANK_NAME 银行名称,
       BANK_INFO.BRANCH_NAME 分行名称,
       BANK_INFO.BANK_ACCOUNT_NUM 银行账户,
       BANKACCTUSEEO.ORG_ID 机构ID,
       DECODE(BANKACCTUSEEO.LEGAL_ENTITY_ID,
              NULL,
              FND_ACCESS_CONTROL_UTIL.GET_ORG_NAME(BANKACCTUSEEO.ORG_ID),
              (SELECT XLE.NAME
                 FROM XLE_ENTITY_PROFILES XLE
                WHERE XLE.LEGAL_ENTITY_ID = BANKACCTUSEEO.LEGAL_ENTITY_ID)) 机构描述,
       BANKACCTUSEEO.AP_USE_ENABLE_FLAG 应付可用性,
       BANKACCTUSEEO.AR_USE_ENABLE_FLAG 应收可用性,
       BANKACCTUSEEO.END_DATE 失效日期
  FROM CE_BANK_ACCT_USES_ALL BANKACCTUSEEO,
       AR_RECEIVABLES_TRX ARRECEIVABLESTRXEARNED,
       AR_RECEIVABLES_TRX ARRECEIVABLESTRXUNEARNED,
       AR_RECEIVABLES_TRX ARRECEIVABLESTRXCLAIMINV,
       CE_LOOKUPS CL,
       FND_LOOKUPS FL,
       CE_RECEIVABLE_ACTIVITIES_V RA,
       CE_BANK_ACCOUNTS CBA,
       (SELECT BANKPARTY.PARTY_NAME   BANK_NAME,
               BRANCHPARTY.PARTY_NAME BRANCH_NAME,
               TERRITORY_SHORT_NAME   COUNTRY,
               BA.BANK_ACCOUNT_NUM,
               BRANCHPARTY.PARTY_ID   BANK_BRANCH_ID,
               BA.BANK_ACCOUNT_ID,
               CL.MEANING             ACCOUNT_CLASS_MEANING
          FROM HZ_PARTIES               BANKPARTY,
               HZ_PARTIES               BRANCHPARTY,
               HZ_ORGANIZATION_PROFILES BANKORGPROFILE,
               HZ_ORGANIZATION_PROFILES BRANCHORGPROFILE,
               HZ_RELATIONSHIPS         BRREL,
               HZ_CODE_ASSIGNMENTS      BANKCA,
               HZ_CODE_ASSIGNMENTS      BRANCHCA,
               CE_LOOKUPS               CL,
               FND_TERRITORIES_VL       FT,
               CE_BANK_ACCOUNTS         BA
         WHERE BANKPARTY.PARTY_TYPE = 'ORGANIZATION'
           AND BANKPARTY.STATUS = 'A'
           AND BANKPARTY.PARTY_ID = BANKORGPROFILE.PARTY_ID
           AND SYSDATE BETWEEN TRUNC(BANKORGPROFILE.EFFECTIVE_START_DATE) AND
               NVL(TRUNC(BANKORGPROFILE.EFFECTIVE_END_DATE), SYSDATE + 1)
           AND BANKCA.CLASS_CATEGORY = 'BANK_INSTITUTION_TYPE'
           AND BANKCA.CLASS_CODE = 'BANK'
           AND BANKCA.OWNER_TABLE_NAME = 'HZ_PARTIES'
           AND BANKCA.OWNER_TABLE_ID = BANKPARTY.PARTY_ID
           AND NVL(BANKCA.STATUS, 'A') = 'A'
           AND BRANCHPARTY.PARTY_TYPE = 'ORGANIZATION'
           AND BRANCHPARTY.STATUS = 'A'
           AND BRANCHORGPROFILE.PARTY_ID = BRANCHPARTY.PARTY_ID
           AND SYSDATE BETWEEN
               TRUNC(BRANCHORGPROFILE.EFFECTIVE_START_DATE(+)) AND
               NVL(TRUNC(BRANCHORGPROFILE.EFFECTIVE_END_DATE(+)),
                   SYSDATE + 1)
           AND BRANCHCA.CLASS_CATEGORY = 'BANK_INSTITUTION_TYPE'
           AND BRANCHCA.CLASS_CODE = 'BANK_BRANCH'
           AND BRANCHCA.OWNER_TABLE_NAME = 'HZ_PARTIES'
           AND BRANCHCA.OWNER_TABLE_ID = BRANCHPARTY.PARTY_ID
           AND NVL(BRANCHCA.STATUS, 'A') = 'A'
           AND BRREL.OBJECT_ID = BANKPARTY.PARTY_ID
           AND BRANCHPARTY.PARTY_ID = BRREL.SUBJECT_ID
           AND BRREL.RELATIONSHIP_TYPE = 'BANK_AND_BRANCH'
           AND BRREL.RELATIONSHIP_CODE = 'BRANCH_OF'
           AND BRREL.STATUS = 'A'
           AND BRREL.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
           AND BRREL.SUBJECT_TYPE = 'ORGANIZATION'
           AND BRREL.OBJECT_TABLE_NAME = 'HZ_PARTIES'
           AND BRREL.OBJECT_TYPE = 'ORGANIZATION'
           AND CL.LOOKUP_TYPE = 'ACCOUNT_CLASSIFICATION'
           AND CL.LOOKUP_CODE = BA.ACCOUNT_CLASSIFICATION
           AND BANKORGPROFILE.HOME_COUNTRY = TERRITORY_CODE
           AND BA.BANK_BRANCH_ID = BRANCHPARTY.PARTY_ID) BANK_INFO
 WHERE 1 = 1
   AND BANK_INFO.BANK_ACCOUNT_ID = CBA.BANK_ACCOUNT_ID
   AND CBA.BANK_ACCOUNT_ID = BANKACCTUSEEO.BANK_ACCOUNT_ID
   AND BANKACCTUSEEO.EDISC_RECEIVABLES_TRX_ID =
       ARRECEIVABLESTRXEARNED.RECEIVABLES_TRX_ID(+)
   AND BANKACCTUSEEO.UNEDISC_RECEIVABLES_TRX_ID =
       ARRECEIVABLESTRXUNEARNED.RECEIVABLES_TRX_ID(+)
   AND BANKACCTUSEEO.AR_CLAIM_INV_ACT_ID =
       ARRECEIVABLESTRXCLAIMINV.RECEIVABLES_TRX_ID(+)
   AND CL.LOOKUP_TYPE = 'ORGANIZATION_TYPE'
   AND CL.LOOKUP_CODE = 'LEGAL_ENTITY'
   AND FL.LOOKUP_TYPE(+) = 'XTR_DEAL_PRICE_MODELS'
   AND FL.LOOKUP_CODE(+) = BANKACCTUSEEO.PRICING_MODEL
   AND BANKACCTUSEEO.NEW_AR_RCPTS_RECEIVABLE_TRX_ID =
       RA.RECEIVABLES_TRX_ID(+);

供应商维护错误(请求的页包含过时数据)

    有时候在维护供应商信息的时候,会出现如下图所示的错误,错误数据为:
    请求的页包含过时数据。此错误可能是因为使用浏览器的定位按钮(例如浏览器的“后退”按钮)所引起。视图对象 ExtBankAccountsAM.ExtBankBranchesVO1 不包含记录。显示的记录可能已被删除,或者未正确初始化视图对象的当前记录。要继续进行,请选择位于应用产品页顶部的主页链接以返回主菜单。然后,使用应用产品的定位控件(菜单、链接等),而不是浏览器的定位控件(如返回、转发)访问此页。
    实际上在维护数据的时候并没有按照像描述所说的那样操作,且按照描述的解决方法也不继续正常维护。这个时候,需要去后台查询相应的数据,比如截图的数据是在维护供应商银行账号的时候出现,这个时候,通过SQL取查询供应商银行分行信息,在分行的id列会出现错误的数据,比如:branch_id=-1或者其他数字(也遇到过-3的数字)。
    可通过命令:select t.branch_id ,t.* from iby.IBY_EXT_BANK_ACCOUNTS t order by t.branch_id desc;
查询错误数据。此时已经没有办法再从前台再去正常维护分行数据,有两种选择:

    1. 直接将此分行数据信息删除(备份错误数据),重新从界面上维护分行数据;

    2. 查询出需要维护的分行的id,然后直接update进去。

个人建议是直接删除数据,这样不会因为update错误数据而导致其他错误,毕竟从前台页面维护比从后台更新更准确。

pass_data

批量付款发现付款金额为零(折扣金额)

    刚刚处理一个客户批量付款的问题,客户描述说她批量支付的时候,有两笔预付款应付金额为零,但是此批量付款是已经付款完成才发现的问题。要我马上找原因,汗……
    于是赶紧上楼到财务部门,让客户找出那两笔发票,第一眼没有看出是那方面的原因,于是马上在测试环境中测试,也没有出现类似的错误,结果再次对比数据,发现这两笔数据中都有一个折扣金额(如图1),虽然身为技术人员,不太明白折扣金额的含义,但是这明细与其他发票不同,于是再次测试,发现在计划付款中确实录入了折扣日期和折扣金额就会出现这样的问题(如图2)。客户打电话给我的时候,这两笔款在批量付款后,一直没有做任何操作,然后我建议客户将计划付款中的折扣日期去掉(金额自动消失),然后再次去付款,这样就能正常往下进行。

图1: discount

 

图2: batch_payment

技术笔记(小潘的技术记录博客)