很好的一篇理解Oracle的并并发处理机制的文章
获取银行分行所在的省、市信息
之前在做一个银行抽盘文件的时候,需要获取到供应商对应维护的银行分行所在的省市信息,于是记录下获取的sql命令,如下:
记录银行信息的界面:
–银行分行的地址行1和城市数据
SELECT HP.ADDRESS1, HP.CITY
FROM AP_SUPPLIERS ASP,
IBY_EXT_BANK_ACCOUNTS_V IEB,
IBY_EXTERNAL_PAYEES_ALL IEP,
IBY_PMT_INSTR_USES_ALL USES,
IBY_ACCOUNT_OWNERS IAO,
AP_SUPPLIER_SITES_ALL ASS,
HZ_PARTIES HP
WHERE 1 = 1
AND HP.PARTY_ID = IEB.branch_party_id
AND IEP.EXT_PAYEE_ID = USES.EXT_PMT_PARTY_ID
AND IEP.PAYMENT_FUNCTION = 'PAYABLES_DISB'
AND USES.INSTRUMENT_ID = IEB.EXT_BANK_ACCOUNT_ID
AND IEP.PAYEE_PARTY_ID = ASP.PARTY_ID
AND ASP.ENABLED_FLAG = 'Y'
AND ASP.SUMMARY_FLAG = 'N'
AND IEP.PARTY_SITE_ID IS NULL
AND IEP.SUPPLIER_SITE_ID IS NULL
AND IEP.ORG_ID IS NULL
AND (USES.END_DATE IS NULL OR USES.END_DATE > SYSDATE)
AND (IEB.END_DATE IS NULL OR IEB.END_DATE > SYSDATE)
AND (ASP.END_DATE_ACTIVE IS NULL OR ASP.END_DATE_ACTIVE > SYSDATE)
AND (ASS.INACTIVE_DATE IS NULL OR ASS.INACTIVE_DATE > SYSDATE)
AND ASS.VENDOR_ID = ASP.VENDOR_ID
AND USES.INSTRUMENT_TYPE = 'BANKACCOUNT'
AND IAO.ACCOUNT_OWNER_PARTY_ID = ASP.PARTY_ID
AND IAO.EXT_BANK_ACCOUNT_ID(+) = IEB.ext_bank_account_id
–AND IEB.BANK_ACCOUNT_ID = P_BANK_ACC_ID –银行ID
–AND ASP.VENDOR_ID = P_VENDOR_ID –供应商ID
–AND ASS.VENDOR_SITE_ID = P_VENDOR_SITE_ID –供应商地点ID
ORDER BY ASP.VENDOR_TYPE_LOOKUP_CODE;
获取待核销或者待付款的发票信息
select ai.org_id,
ai.invoice_id,
aps.vendor_name,
ai.invoice_num,
–ail.attribute1, –标准发票中存储预付款发票编号
nvl(sum(ail.amount + nvl((select sum(zl.tax_amt)
from zx_lines zl
where ail.invoice_id = zl.trx_id
and ail.line_number = zl.trx_line_id
and (zl.tax_amt_included_flag is null or
zl.tax_amt_included_flag = 'N')),
0)),
0) invoice_amount_remaining,
nvl(sum(ap_prepay_utils_pkg.get_invoice_unpaid_amount(ai.invoice_id) +
nvl(ai.total_tax_amount, 0)),
0) invoice_unpaid, –未付或未核销金额
ai.gl_date,
ai.vendor_id,
ai.vendor_site_id,
ai.invoice_currency_code,
ai.set_of_books_id,
ail.line_number
from ap_invoices_all ai,
ap_invoice_lines_all ail,
gl_code_combinations gcc,
ap_suppliers aps
where 1 = 1
and ai.invoice_id = ail.invoice_id
and aps.vendor_id = ai.vendor_id
and ai.accts_pay_code_combination_id = gcc.code_combination_id
and ail.line_type_lookup_code(+) = 'ITEM'
–只获取已付金额小于总金额的发票
and nvl(ai.amount_paid, 0) < ai.invoice_amount
–根据需要是否需要验证或者不验证核销(排除取消过的发票)
–APPROVED已验证,NEVER APPROVED从未验证
and ap_invoices_utility_pkg.get_approval_status(ai.invoice_id,
ai.invoice_amount,
ai.payment_status_flag,
ai.invoice_type_lookup_code) <>
'CANCELLED'
and ai.invoice_type_lookup_code = 'STANDARD'
— and ail.attribute1 is not null
— and ai.org_id = p_org_id
— and (ai.vendor_id = p_vendor_id or p_vendor_id is null)
group by ai.invoice_id,
ai.invoice_num,
ai.org_id,
ai.gl_date,
ai.vendor_id,
aps.vendor_name,
ai.vendor_site_id,
ai.invoice_currency_code,
ai.set_of_books_id,
ail.line_number,
ai.creation_date
–ail.attribute1
order by ai.creation_date;