如下表中列出了与应收INVOICE导入相关的表和说明:
表名 |
说明 |
其他信息 |
||
RA_BATCH_SOURCES_ALL |
AR事务处理来源表 |
|
|
|
RA_BATCHES_ALL |
AR事务处理批表 |
|
|
对应视图 |
RA_CUST_TRX_TYPES_ALL |
AR事务处理类型 |
|
|
对应视图 |
RA_CUSTOMER_TRX_ALL |
AR事务处理题头表 |
|
|
对应视图 |
RA_CUSTOMER_TRX_LINES_ALL |
AR事务处理明细表 |
|
|
对应视图 |
RA_CUST_TRX_LINE_GL_DIST_ALL |
AR事务处理分配表 |
|
|
对应视图 |
RA_CUST_TRX_LINE_SALESREPS_ALL |
AR事务处理销售业绩表 |
|
|
对应视图 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
如下表中列出了与应收INVOICE导入相关的接口表和说明:
表名 |
说明 |
其他信息 |
||
ra_interface_lines_all |
|
|
|
|
ra_interface_salescredits_all |
|
|
|
|
ra_interface_distributions |
|
|
|
|
ra_interface_errors_all |
错误信息表 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这里只列出了采购相关的大多数常用表。还有一些不经常用到的没有涉及,具体可以参考oracle网站上的
应收INVOICE导入主要包括:INVOICE头信息,INVOICE行信息,INVOICE行税信息,INVOICE行分配信息
INVOICE头信息导入:导入INVOICE头信息
INVOICE行信息导入:导入INVOICE行具体信息
INVOICE行税信息导入:导入INVOICE行税信息
INVOICE行分配信息导入:INVOICE行分配信息
由于数据的先后关联依赖关系,同一供应收INVOICE导入必须按照一定的顺序进行:先导头信息,再行信息,接着导入行发运信息。最后发运的分配等信息。
应收INVOICE导入流程:
第一步:创建需要导入应收INVOICE的中间表,字段上提供供应收INVOICE相关信息。
第二步:向中间表中插入需要导入的应收INVOICE信息,验证需要插入的数据是否满足应收INVOICE信息规则,去除不合规范的数据。
第三步:对在第二部中验证及转化翻译的数据插入到接口中。
第四步:提交并发请求导入应收INVOICE信息。
- AR_INVOICE_API_PUB.create_invoice(
- p_api_version IN NUMBER,
- p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
- p_commit IN VARCHAR2 := FND_API.G_FALSE,
- p_batch_source_rec IN batch_source_rec_type DEFAULT NULL,
- p_trx_header_tbl IN trx_header_tbl_type,
- p_trx_lines_tbl IN trx_line_tbl_type,
- p_trx_dist_tbl IN trx_dist_tbl_type,
- p_trx_salescredits_tbl IN trx_salescredits_tbl_type,
- x_return_status OUT NOCOPY VARCHAR2,
- x_msg_count OUT NOCOPY NUMBER,
- x_msg_data OUT NOCOPY VARCHAR2)
- AR_INVOICE_API_PUB.CREATE_SINGLE_INVOICE(
- p_api_version IN NUMBER,
- p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
- p_commit IN VARCHAR2 := FND_API.G_FALSE,
- p_batch_source_rec IN batch_source_rec_type DEFAULT NULL,
- p_trx_header_tbl IN trx_header_tbl_type,
- p_trx_lines_tbl IN trx_line_tbl_type,
- p_trx_dist_tbl IN trx_dist_tbl_type,
- p_trx_salescredits_tbl IN trx_salescredits_tbl_type,
- p_trx_contingencies_tbl IN trx_contingencies_tbl_type,
- x_customer_trx_id OUT NOCOPY NUMBER,
- x_return_status OUT NOCOPY VARCHAR2,
- x_msg_count OUT NOCOPY NUMBER,
- x_msg_data OUT NOCOPY VARCHAR2);
create_invoice
Use the CREATE_INVOICE procedure to createmultiple invoices in a batch. The
procedure returns a global record typestructure which contains the batch_id to
retrieve the necessary data from thetransaction tables. The structure is defined in
the package specification of ar_invoice_api_pub.Please refer to Example for
Creating Multiple Invoices in a Batch, page6-17for usage.
CREATE_SINGLE_INVOICE
Use the CREATE_SINGLE_INVOICE procedure tocreate a single invoice. The
procedure returns customer_trx_id as an outparameter. Please refer to Example for
Creating a Single Invoice, page 6-19forusage
Creating MultipleInvoices
- 1. DECLARE
- l_return_status varchar2(1);
- l_msg_count number;
- l_msg_data varchar2(2000);
- l_batch_id number;
- l_batch_source_rec ar_invoice_api_pub.batch_source_rec_type;
- l_trx_header_tbl ar_invoice_api_pub.trx_header_tbl_type;
- l_trx_lines_tbl ar_invoice_api_pub.trx_line_tbl_type;
- l_trx_dist_tbl ar_invoice_api_pub.trx_dist_tbl_type;
- l_trx_salescredits_tbl
- ar_invoice_api_pub.trx_salescredits_tbl_type;
- CURSOR cBatch IS
- select customer_trx_id
- from ra_customer_trx_all
- where batch_id = l_batch_id;
- CURSOR cValidTxn IS
- SELECT trx_header_id
- From ar_trx_header_gt
- WHERE trx_header_id not in (
- SELECT trx_header_id
- FROM ar_trx_errors_gt);
- 2. BEGIN
- 1. Set applications context if not already set.
- fnd_global.apps_initialize(1318, 50559, 222,0);
- 2. Populate header information.
- l_trx_header_tbl(1).trx_header_id := 101;
- l_trx_header_tbl(1).trx_number := 'Test Invoice API';
- l_trx_header_tbl(1).bill_to_customer_id := 1006;
- l_trx_header_tbl(1).cust_trx_type_id := 2376;
- 3. Populate batch source information.
- l_batch_source_rec.batch_source_id := 1188;
- 4. Populate line 1 information.
- l_trx_lines_tbl(1).trx_header_id := 101;
- l_trx_lines_tbl(1).trx_line_id := 101;
- l_trx_lines_tbl(1).line_number := 1;
- l_trx_lines_tbl(1).memo_line_id := 8;
- l_trx_lines_tbl(1).quantity_invoiced := 10;
- l_trx_lines_tbl(1).unit_selling_price := 12;
- l_trx_lines_tbl(1).line_type := 'LINE';
- 6-18 Oracle ReceivablesReference Guide
- 5. Populate line 2 information.
- l_trx_lines_tbl(2).trx_header_id := 101;
- l_trx_lines_tbl(2).trx_line_id := 102;
- l_trx_lines_tbl(2).line_number := 2;
- l_trx_lines_tbl(2).description := 'Test';
- l_trx_lines_tbl(2).quantity_invoiced := 12;
- l_trx_lines_tbl(2).unit_selling_price := 12;
- l_trx_lines_tbl(2).line_type := 'LINE';
- 6. Populate freight information and link it to line 1.
- l_trx_lines_tbl(3).trx_header_id := 101;
- l_trx_lines_tbl(3).trx_line_id := 103;
- l_trx_lines_tbl(3).link_to_trx_line_id := 101;
- l_trx_lines_tbl(3).line_number := 1;
- l_trx_lines_tbl(3).line_type := 'FREIGHT';
- l_trx_lines_tbl(3). amount := 25;
- 7. Call the invoice api to create multiple invoices in a batch.
- AR_INVOICE_API_PUB.create_invoice(
- p_api_version => 1.0,
- p_batch_source_rec => l_batch_source_rec,
- p_trx_header_tbl => l_trx_header_tbl,
- p_trx_lines_tbl => l_trx_lines_tbl,
- p_trx_dist_tbl => l_trx_dist_tbl,
- p_trx_salescredits_tbl => l_trx_salescredits_tbl,
- x_return_status => l_return_status,
- x_msg_count => l_msg_count,
- x_msg_data => l_msg_data);
- IF l_return_status = fnd_api.g_ret_sts_error OR
- l_return_status = fnd_api.g_ret_sts_unexp_error THEN
- dbms_output.put_line('unexpected errors found!');
- ELSE
- 8. Check if there are record exist in error table. If no records exist for a
- trx_header_id, then only Invoice will create in the system; otherwise not.
- For cValidTxnRec IN cvalidTxn
- loop
- IF (ar_invoice_api_pub.g_api_outputs.batch_id IS NOT NULL)
- THEN
- dbms_output.put_line('Invoice(s) suceessfully created!') ;
- dbms_output.put_line('Batch ID: ' ||
- ar_invoice_api_pub.g_api_outputs.batch_id);
- l_batch_id := ar_invoice_api_pub.g_api_outputs.batch_id;
- 9. To see all customer_trx_id for this batch:
- Invoice Creation API User Notes 6-19
- for cBatchRec in cBatch
- loop
- dbms_output.put_line ( 'Cust Trx Id '||
- cBatchRec.customer_trx_id );
- end loop;
- ELSE
- dbms_output.put_line('Errors found!');
- END IF;
- End loop;
- END IF;
- END;
- /
- 10. See all the validation errors.
- SET LINESIZE 200
- COLUMN trx_header_id HEADING 'Header ID'
- COLUMN trx_line_id HEADING 'Line ID'
- COLUMN error_message HEADING 'Message'
- COLUMN invalid_value HEADING 'Invalid Value'
- COLUMN trx_header_id FORMAT 9999999
- COLUMN trx_line_id FORMAT 9999999
- COLUMN error_message FORMAT a30
- COLUMN invalid_value FORMAT a20
- SELECT trx_header_id, trx_line_id, error_message, invalid_value
- FROM ar_trx_errors_gt;
Creating a SingleInvoice
- 1. DECLARE
- l_return_status varchar2(1);
- l_msg_count number;
- l_msg_data varchar2(2000);
- l_batch_id number;
- l_cnt number := 0;
- l_batch_source_rec ar_invoice_api_pub.batch_source_rec_type;
- l_trx_header_tbl ar_invoice_api_pub.trx_header_tbl_type;
- l_trx_lines_tbl ar_invoice_api_pub.trx_line_tbl_type;
- l_trx_dist_tbl ar_invoice_api_pub.trx_dist_tbl_type;
- l_trx_salescredits_tbl ar_invoice_api_pub.
- l_customer_trx_id number;
- 2. BEGIN
- 1. Set applications context if not already set.
- fnd_global.apps_initialize(1318, 50559, 222,0);
- 2. Populate header information.
- 6-20 Oracle ReceivablesReference Guide
- l_trx_header_tbl(1).trx_header_id := 101;
- l_trx_header_tbl(1).trx_number := 'Test Invoice API';
- l_trx_header_tbl(1).bill_to_customer_id := 1006;
- l_trx_header_tbl(1).cust_trx_type_id := 2376;
- 3. Populate batch source information.
- l_batch_source_rec.batch_source_id := 1188;
- 4. Populate line 1 information.
- l_trx_lines_tbl(1).trx_header_id := 101;
- l_trx_lines_tbl(1).trx_line_id := 101;
- l_trx_lines_tbl(1).line_number := 1;
- l_trx_lines_tbl(1).memo_line_id := 8;
- l_trx_lines_tbl(1).quantity_invoiced := 10;
- l_trx_lines_tbl(1).unit_selling_price := 12;
- l_trx_lines_tbl(1).line_type := 'LINE';
- 5. Populate line 2 information.
- l_trx_lines_tbl(2).trx_header_id := 101;
- l_trx_lines_tbl(2).trx_line_id := 102;
- l_trx_lines_tbl(2).line_number := 2;
- l_trx_lines_tbl(2).description := 'Test';
- l_trx_lines_tbl(2).quantity_invoiced := 12;
- l_trx_lines_tbl(2).unit_selling_price := 12;
- l_trx_lines_tbl(2).line_type := 'LINE';
- 6. Populate freight information and link it to line 1.
- l_trx_lines_tbl(3).trx_header_id := 101;
- l_trx_lines_tbl(3).trx_line_id := 103;
- l_trx_lines_tbl(3).link_to_trx_line_id := 101;
- l_trx_lines_tbl(3).line_number := 1;
- l_trx_lines_tbl(3).line_type := 'FREIGHT';
- l_trx_lines_tbl(3). amount := 25;
- 7. Call the invoice api to create multiple invoices in a batch.
- AR_INVOICE_API_PUB.create_single_invoice(
- p_api_version => 1.0,
- p_batch_source_rec => l_batch_source_rec,
- p_trx_header_tbl => l_trx_header_tbl,
- p_trx_lines_tbl => l_trx_lines_tbl,
- p_trx_dist_tbl => l_trx_dist_tbl,
- p_trx_salescredits_tbl => l_trx_salescredits_tbl,
- x_customer_trx_id => l_customer_trx_id,
- x_return_status => l_return_status,
- x_msg_count => l_msg_count,
- x_msg_data => l_msg_data);
- IF l_return_status = fnd_api.g_ret_sts_error OR
- l_return_status = fnd_api.g_ret_sts_unexp_error THEN
- dbms_output.put_line('unexpected errors found!');
- ELSE
- 8. Check whether any record exist in error table
- Invoice Creation API User Notes 6-21
- SELECT count(*)
- Into cnt
- From ar_trx_errors_gt;
- IF cnt = 0
- THEN
- dbms_output.put_line ( 'Customer Trx id '|| l_customer_trx_id);
- ELSE
- dbms_output.put_line ( 'Transaction not Created, Please check
- ar_trx_errors_gt table');
- END IF;
- END;
- /
- 9. See all the validation errors.
- SET LINESIZE 200
- COLUMN trx_header_id HEADING 'Header ID'
- COLUMN trx_line_id HEADING 'Line ID'
- COLUMN error_message HEADING 'Message'
- COLUMN invalid_value HEADING 'Invalid Value'
- COLUMN trx_header_id FORMAT 9999999
- COLUMN trx_line_id FORMAT 9999999
- COLUMN error_message FORMAT a30
- COLUMN invalid_value FORMAT a20
- SELECT trx_header_id, trx_line_id, error_message, invalid_value
- FROM ar_trx_errors_gt;
对于API使用参数必输参数参考上面例子就可以知道,应收INVOICE行类型比较特殊有LINE类型,TAX类型等当行类型不同时各个字段的要求并不相同,具体使用参照120arrg.pdf。插入税行的时候行类型为TAX
在将中间表中数据向标准表中导入时,需要检验这条应收INVOICE信息是否已经在系统中存在,这些检验要在程序中进行,并根据检验的结果进行导入或者更新
- SELECT COUNT(*)
- INTO v_count_sys
- FROM ra_customer_trx_all a
- WHERE a.trx_number =rec_oa_ar_invoice.apply_number;
- IF v_count_sys <> 0 THEN
- cux_conc_utl.log_msg('此INVOICE号系统中已存在');
- h_error_msg := '此INVOICE号系统中已存在!';
- h_error_flag := 'Y';
- GOTO validate_header_end;
- END IF;
- 1.参数定义
- --调用系统api需要的标准参数(这是single的Multiple的还需要多加一个)
- l_batch_source_rec ar_invoice_api_pub.batch_source_rec_type; --提交并发请求需要
- l_trx_header_tbl ar_invoice_api_pub.trx_header_tbl_type; --提交并发请求需要
- l_trx_lines_tbl ar_invoice_api_pub.trx_line_tbl_type; --提交并发请求需要
- l_trx_dist_tbl ar_invoice_api_pub.trx_dist_tbl_type; --提交并发请求需要
- l_trx_salescredits_tbl ar_invoice_api_pub.trx_salescredits_tbl_type; --提交并发请求需要
- 2.处理程序
- FOR rec_trx_header IN cur_trx_header LOOP
- --头循环
- cux_conc_utl.log_msg('进入pvt,调用pvt。do_arFOR rec_trx_header IN cur_trx_header LOOP:');
- cux_log.debug('rec_trx_header loop begin:');
- dbms_output.put_line('rec_trx_header loop begin:');
- l_trx_count := 0; --初始化
- --按照客户和币种进行分组
- -- FOR rec_ar_group IN cur_ar_group(x_header_id => rec_trx_header.header_id) LOOP
- /*IF l_debug = 'Y' THEN
- cux_log.debug('rec_ar_group loop begin:');
- dbms_output.put_line('rec_ar_group loop begin:');
- END IF; --IF l_debug ='Y' THEN*/
- l_header_count := l_header_count + 1; --需要创建成功的INVOICE计数
- l_trx_count := l_trx_count + 1;
- --参数初始化
- l_return_status := NULL;
- l_msg_count := NULL;
- l_msg_data := NULL;
- l_batch_id := NULL;
- l_cnt := 0;
- l_batch_source_rec := NULL;
- l_trx_header_tbl.delete; --清空
- l_trx_lines_tbl.delete; --清空
- l_trx_dist_tbl.delete; --清空
- l_trx_salescredits_tbl.delete; --清空
- x_customer_trx_id := NULL;
- l_line_count := 0;
- -- l_header_count :=0;
- x_cust_site_use_id := NULL;
- x_cust_acct_site_id := NULL;
- l_project_num := NULL;
- l_line_num := 0;
- x_payment_term_id := NULL; --付款条件
- --设置多组织访问控制
- mo_global.init('AR');
- mo_global.set_policy_context('S', rec_trx_header.org_id);
- cux_conc_utl.log_msg('进入pvt,调用pvt。rec_trx_header.org_id ' ||
- rec_trx_header.org_id);
- IF rec_trx_header.source_code = 'INV' THEN
- v_batch_name := 'INV INTERCOMPANY';
- ELSIF rec_trx_header.source_code IN ('OA', 'OMS') THEN
- v_batch_name := rec_trx_header.source_code;
- END IF;
- l_batch_source_rec.batch_source_id := get_batch_id(p_batch_name => v_batch_name,
- p_org_id => rec_trx_header.org_id); --redo
- --给参数l_trx_header_tbl赋值 这里写死了应该把1换成count
- l_trx_header_tbl(l_header_count).trx_header_id := rec_trx_header.header_id; --头id
- l_trx_header_tbl(l_header_count).org_id := rec_trx_header.org_id; --OU id
- /*IF rec_trx_header.source_code IN ('OA', 'OMS') THEN --当 v_batch_name := 'Intercompany';时系统自动填充事务处理编号
- l_trx_header_tbl(l_header_count).trx_number := rec_trx_header.trx_number; --(事务处理编号?)
- END IF;*/
- l_trx_header_tbl(l_header_count).trx_number := rec_trx_header.trx_number; --(事务处理编号?)
- l_trx_header_tbl(l_header_count).bill_to_customer_id := rec_trx_header.bill_to_customer_id; --收单客户id
- l_trx_header_tbl(l_header_count).bill_to_site_use_id := rec_trx_header.bill_to_site_use_id; --主要手单方地点用途
- l_trx_header_tbl(l_header_count).bill_to_address_id := rec_trx_header.bill_to_address_id; --收单地点id--不需要?
- --cux_log.debug('rec_ar_group.customer_id:' ||rec_ar_group.customer_id);
- l_trx_header_tbl(l_header_count).sold_to_customer_id := rec_trx_header.sold_to_customer_id; --采购方
- l_trx_header_tbl(l_header_count).cust_trx_type_id := rec_trx_header.cust_trx_type_id; --事务处理类型id
- l_trx_header_tbl(l_header_count).term_id := rec_trx_header.term_id; --付款条件id
- --事务处理日期
- --INVOICE
- --cux_log.debug('rec_trx_header.gl_date:' ||rec_trx_header.gl_date);
- l_trx_header_tbl(l_header_count).gl_date := rec_trx_header.gl_date; --GL日期
- l_trx_header_tbl(l_header_count).trx_date := rec_trx_header.trx_date; --事务处理日期
- --参考字段(此项目用于INVOICE编号)
- l_trx_header_tbl(l_header_count).reference_number := rec_trx_header.reference_number;
- --销售人员
- l_trx_header_tbl(l_header_count).primary_salesrep_id := -3; --rec_trx_header.primary_salesrep_id; --销售人员id (取销售订单头的销售员)
- --汇率
- l_trx_header_tbl(l_header_count).exchange_date := rec_trx_header.conversion_date;
- l_trx_header_tbl(l_header_count).exchange_rate_type := rec_trx_header.conversion_type;
- l_trx_header_tbl(l_header_count).exchange_rate := rec_trx_header.conversion_rate;
- --收入类型
- --l_trx_header_tbl(l_header_count).interface_header_context := 'CUX_SERVICE_INVOICE'; --INVOICE行弹性域上下文:服务结算INVOICE
- l_trx_header_tbl(l_header_count).attribute1 := rec_trx_header.rev_type;
- --票种
- l_trx_header_tbl(l_header_count).attribute2 := rec_trx_header.tax_type;
- --INVOICE金额
- l_trx_header_tbl(l_header_count).attribute3 := rec_trx_header.invoice_amount;
- --摘要
- l_trx_header_tbl(l_header_count).attribute4 := rec_trx_header.remark; --interface_header_attribute1
- l_trx_header_tbl(l_header_count).interface_header_attribute1 := rec_trx_header.trx_number;
- --cux_conc_utl.log_msg('进入pvt,调用pvt。do_ar XXX '|| attribute3);
- -- cux_conc_utl.log_msg('进入pvt,调用pvt。do_ar XXXXXX '|| attribute3);
- --追溯字段(将TRX_HEADER_ID写入到RA_CUSTOMER_TRX_ALL)
- --头信息处理完毕,处理行信息(在分组循环内处理)
- --应收INVOICE(行)
- FOR rec_trx_line IN cur_trx_line(x_header_id => rec_trx_header.header_id) LOOP
- --cux_log.debug('rec_trx_line loop begin:');
- cux_conc_utl.log_msg('进入pvt,调用pvt。do_ar FOR rec_trx_line IN cur_trx_line(x_header_id => rec_trx_header.header_id) LOOP:');
- l_line_count := l_line_count + 1; --一个头多个行
- l_salesrep_id := NULL; --销售人员id
- l_item_uom_code := NULL; --物料主单位
- l_tax_rate := NULL;
- l_line_num := l_line_num + 1;
- --INVOICE行信息
- l_trx_lines_tbl(l_line_count).trx_header_id := rec_trx_line.header_id; --行头id
- l_trx_lines_tbl(l_line_count).trx_line_id := rec_trx_line.line_id; --行id
- l_trx_lines_tbl(l_line_count).line_type := 'LINE'; --rec_trx_line.line_type; --行类型
- l_trx_lines_tbl(l_line_count).amount := rec_trx_line.aomunt; --收入金额
- -- l_trx_lines_tbl(l_line_count).memo_line_id :=1;
- l_trx_lines_tbl(l_line_count).line_number := l_line_num; --行号
- -- l_trx_lines_tbl(l_line_count).sales_order := rec_trx_line.SALES_ORDER; --销售订单编号
- -- l_trx_lines_tbl(l_line_count).sales_order_date := rec_trx_line.SALES_ORDER_DATE; --销售订单日期
- l_trx_lines_tbl(l_line_count).quantity_invoiced := rec_trx_line.quantity_invoiced; --数量为1
- --IF p_ar_type_code = 'INV' THEN
- --INVOICE
- l_trx_lines_tbl(l_line_count).unit_selling_price := rec_trx_line.unit_selling_price; --实际应收金额
- -- ELSIF p_ar_type_code = 'CM' THEN
- --贷项通知单
- --l_trx_lines_tbl(l_line_count).unit_selling_price := (-1) *rec_trx_line.actual_ar_amount; --实际应收金额
- -- END IF; --IF l_type_code = 'INV' THEN
- -- l_trx_lines_tbl(l_line_count).inventory_item_id := rec_trx_line.INVENTORY_ITEM_ID;
- --l_trx_lines_tbl(l_line_count).warehouse_id := rec_trx_line.WAREHOUSE_ID;
- l_trx_lines_tbl(l_line_count).description := 'test'; --rec_trx_line.line_description;
- --主物料
- -- l_trx_lines_tbl(l_line_count).uom_code := rec_trx_line.uom_code; --单位
- --l_trx_lines_tbl(l_line_count).amount := ROUND(rec_trx_line.amount,2);
- l_trx_lines_tbl(l_line_count).link_to_trx_line_id := rec_trx_line.link_to_trx_line_id;
- --cux_conc_utl.log_msg('进入pvt,调用pvt。do_ar XXX '|| attribute3);
- l_trx_lines_tbl(l_line_count).interface_line_context := 'CUX_AR_INVOICE'; --INVOICE行弹性域上下文:服务结算INVOICE
- l_trx_lines_tbl(l_line_count).interface_line_attribute1 := rec_trx_line.header_id; --项目ID
- l_trx_lines_tbl(l_line_count).interface_line_attribute2 := rec_trx_line.line_id; --任务ID
- l_trx_lines_tbl(l_line_count).interface_line_attribute3 := rec_trx_line.source_code; --服务结算头id
- l_trx_lines_tbl(l_line_count).interface_line_attribute4 := rec_trx_line.source_line_id; --服务结算行id
- --插入分配行
- l_trx_dist_tbl(l_line_count).trx_dist_id := rec_trx_line.line_id;
- l_trx_dist_tbl(l_line_count).trx_header_id := rec_trx_line.header_id;
- l_trx_dist_tbl(l_line_count).trx_line_id := rec_trx_line.line_id;
- l_trx_dist_tbl(l_line_count).account_class := 'REV'; --收入--必输字段REDO
- l_trx_dist_tbl(l_line_count).amount := l_trx_lines_tbl(l_line_count)
- .quantity_invoiced * l_trx_lines_tbl(l_line_count)
- .unit_selling_price;
- l_trx_dist_tbl(l_line_count).acctd_amount := l_trx_dist_tbl(l_line_count)
- .amount;
- l_trx_dist_tbl(l_line_count).percent := 100;
- --得到应收事务处理类型的收入账户
- l_trx_dist_tbl(l_line_count).code_combination_id := rec_trx_line.code_combination_id; --账户ID
- --插入销售人员信息(行的销售人员)
- --得到销售人员下面的应收账款id
- l_trx_salescredits_tbl(l_line_count).trx_salescredit_id := rec_trx_line.line_id; --GT表的id
- l_trx_salescredits_tbl(l_line_count).trx_line_id := rec_trx_line.line_id; --行id
- l_trx_salescredits_tbl(l_line_count).salesrep_id := -3; --销售人员id (取销售订单头的销售员)
- l_trx_salescredits_tbl(l_line_count).sales_credit_type_id := 1; --1:Quota Sales Credit 2:Non-quota Sales Credit REDO
- l_trx_salescredits_tbl(l_line_count).salescredit_percent_split := 100; --REDO
- --added by cxy@2013-03-07 begin
- ----(绕过自动计税)it is IMPORTANT to set the flag to N to flag that we want to bypass the tax engine
- l_trx_lines_tbl(l_line_count).taxable_flag := 'N';
- --added by cxy@2013-03-07 end
- cux_log.debug('rec_trx_line loop end:');
- END LOOP; --FOR rec_trx_line IN cur_trx_line ...
- --added by cxy@2013-03-15 begin
- --增加税行
- FOR rec_trx_line IN cur_trx_line(x_header_id => rec_trx_header.header_id
- -- x_customer_id => rec_ar_group.customer_id,
- -- x_currency_code => rec_ar_group.currency_code
- ) LOOP
- --cux_log.debug('rec_trx_line loop begin:');
- cux_conc_utl.log_msg('进入pvt,调用pvt。do_ar FOR rec_trx_line IN cur_trx_line(x_header_id => rec_trx_header.header_id:');
- l_tax_rate := NULL;
- l_inclusive_tax_flag := NULL;
- l_line_count := l_line_count + 1;
- l_line_num := l_line_num + 1;
- -- LINE 2 : line_type = TAX
- -- this is the MANUAL tax line you are creating
- -- unique value within this trx_header_id
- SELECT cux_ar_invoice_line_s.nextval
- INTO l_trx_line_tax_id
- FROM dual;
- --得到税值:
- l_tax_rate := cux_ar_invoice_utl.get_tax_rate(p_tax_rate_code => rec_trx_line.tax_rate_code);
- cux_conc_utl.log_msg('进入pvt,调用pvt。do_ar --得到税值:' || l_tax_rate);
- IF l_tax_rate IS NULL THEN
- cux_api.set_message(p_app_name => 'CUX',
- p_msg_name => 'CUX_COMMON_MSG',
- p_token1 => 'TOKEN',
- p_token1_value => '物料主单位为空!');
- RAISE fnd_api.g_exc_error;
- END IF; --IF l_item_uom_code IS NULL THEN
- l_inclusive_tax_flag := cux_ar_invoice_utl.get_inclusive_tax_flag(p_tax_rate_code => rec_trx_line.tax_rate_code);
- l_trx_lines_tbl(l_line_count).trx_line_id := l_trx_line_tax_id;
- -- this value needs to match the trx_header_id value provided in trx_header_tbl(1).trx_header_id
- l_trx_lines_tbl(l_line_count).trx_header_id := rec_trx_line.header_id;
- l_trx_lines_tbl(l_line_count).line_number := l_line_num; --行号都为1
- -- provide a description
- --l_trx_lines_tbl(l_line_count).description := 'Test Tax';
- -- pass in the tax amount and rate, these both have to be populated, if you pass only one of them
- -- you will get an error
- l_trx_lines_tbl(l_line_count).amount := rec_trx_line.tax_amount; --实际应收金额税值 redo primary_salesrep_id
- /* IF p_ar_type_code = 'INV' THEN
- --INVOICE
- l_trx_lines_tbl(l_line_count).amount := rec_trx_line.actual_ar_amount *
- (l_tax_rate / 100); --实际应收金额税值
- ELSIF p_ar_type_code = 'CM' THEN
- --贷项通知单
- l_trx_lines_tbl(l_line_count).amount := (-1) *
- rec_trx_line.actual_ar_amount *
- (l_tax_rate / 100); --实际应收金额*税值
- END IF; --IF l_type_code = 'INV' THEN */
- -- pass in line_type = TAX
- l_trx_lines_tbl(l_line_count).line_type := 'TAX';
- -- pass in the value associated with the tax RATE
- l_trx_lines_tbl(l_line_count).tax_rate_code := rec_trx_line.tax_rate_code;
- cux_conc_utl.log_msg('进入pvt,rec_trx_line.TAX_RATE_code;' ||
- rec_trx_line.tax_rate_code);
- --行上的金额是否含税
- l_trx_lines_tbl(l_line_count).amount_includes_tax_flag := nvl(l_inclusive_tax_flag,
- 'N');
- -- pass in the value associated with the jurisdiction
- --l_trx_lines_tbl(l_line_count+1).tax_jurisdiction_code := 'CO-FL-DUVAL-11716';
- -- pass in the associated REGIME
- --l_trx_lines_tbl(l_line_count+1).tax_regime_code := 'US-SALES-TAX-101';
- -- pass in the associated TAX
- --l_trx_lines_tbl(l_line_count+1).tax := 'COUNTY';
- -- pass in the associated TAX STATUS
- --l_trx_lines_tbl(l_line_count+1).tax_status_code := 'STANDARD';
- -- link it to the line this tax is associated with
- l_trx_lines_tbl(l_line_count).link_to_trx_line_id := rec_trx_line.line_id;
- --added by cxy@2013-03-07 end
- END LOOP; --FOR rec_trx_line IN cur_trx_line...
- --added by cxy@2013-03-15 end
- --调用系统标准的API创建INVOICE
- cux_log.debug('ar_invoice_api_pub.create_single_invoice BEGIN');
- dbms_output.put_line('ar_invoice_api_pub.create_single_invoice BEGIN');
- ar_invoice_api_pub.create_single_invoice(p_api_version => 1.0,
- p_batch_source_rec => l_batch_source_rec,
- p_trx_header_tbl => l_trx_header_tbl,
- p_trx_lines_tbl => l_trx_lines_tbl,
- p_trx_dist_tbl => l_trx_dist_tbl,
- p_trx_salescredits_tbl => l_trx_salescredits_tbl,
- x_customer_trx_id => x_customer_trx_id,
- x_return_status => l_return_status,
- x_msg_count => l_msg_count,
- x_msg_data => l_msg_data);
相关推荐
基于Qt开发的截图工具.zip 截图工具(QScreenShot) Qt编写的一款截图工具。 特点 - 支持全屏截图 - 支持自定义截图 - 支持捕获窗口截图 - 支持固定大小窗口截图 - 颜色拾取 - 图片编辑 - 图片上传到wordpress 环境 Qt6.2 QtCreate 8
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
基于ASP.NET技术的班级展示网站构建资源,是一套针对教育机构或学生团体,旨在通过ASP.NET框架开发班级风采展示平台的指导资料或教程。此资源详细介绍了如何利用ASP.NET的强大功能,快速搭建一个功能完善、界面友好的在线班级展示平台。 该资源涵盖了从需求分析、数据库设计、前端页面制作到后端逻辑实现的全过程。通过实例演示,指导用户如何设置班级信息、学生风采展示、活动公告、图片上传与浏览等核心功能模块。同时,结合ASP.NET的MVC架构,实现了前后端分离,提高了代码的可维护性和可扩展性。 此外,该资源还提供了丰富的代码示例和注释,帮助开发者深入理解ASP.NET框架的工作原理,掌握如何运用其强大的数据库操作、用户认证与授权等特性。对于初学者来说,这是一份难得的入门教程;而对于有一定经验的开发者,则是一份提升技能的参考资料。 总之,基于ASP.NET技术的班级展示网站构建资源,是教育机构和学生团体实现班级风采在线展示的理想选择,也是开发者学习ASP.NET框架应用的宝贵资源。
基于springboot的流浪动物管理系统源码数据库文档.zip
基于springboot+vue的实践性教学系统源码数据库文档.zip
基于Python+Django家居全屋定制系统源码数据库文档.zip
Umi-OCR-main.zip
基于springboot复兴村医疗管理系统源码数据库文档.zip
基于springboot二手物品交易系统源码数据库文档.zip
2024年西安外事学院数学建模校赛题目.zip
基于springboot医疗废物管理系统源码数据库文档.zip
GEE训练教程
内容概要:本文详细介绍了Spring Boot的设计和应用,涵盖了从基本概念到高级用法的全方位教学。首先通过环境搭建、首个项目创建、核心概念解析等步骤帮助读者快速上手。接着阐述了Spring Boot的设计原则与最佳实践,强调代码整洁和系统可维护性。最后,提供了两个实战案例:构建简单的RESTful API和电商网站后台管理系统,涉及项目结构、依赖配置、数据库设计、实体类与控制器的创建等内容,指导读者进行真实项目的开发。 适合人群:适合初学者到中级开发者的Java开发人员,尤其是对企业级应用开发感兴趣的人士。 使用场景及目标:①帮助开发者全面掌握Spring Boot的基本用法及其设计理念;②提供实用的实战案例和资源,使读者能够在实际项目中熟练应用Spring Boot技术。 阅读建议:跟随文章提供的步骤逐步操作,并结合实际开发需求灵活运用所学知识。建议多动手练习,加强对Spring Boot的理解和掌握。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
内容概要:本文详细介绍了一个课程考试系统的设计与开发过程,涵盖语言教程、实战案例和项目资源。主要内容包括:选择Java作为开发语言,详细讲解Java基础语法和Web开发基础;实战案例包括用户管理、课程管理和考试管理模块的实现;提供了项目结构、数据库设计和依赖管理的详细示例。 适合人群:适用于初学者和有一定经验的开发者,希望通过实际项目掌握课程考试系统的设计与开发。 使用场景及目标:帮助学习者全面提升从理论到实践的能力,最终能够独立完成一个完整的课程考试系统。无论是学习编程基础还是进阶实战,本文都提供了全面的指导。 其他说明:项目涉及多个关键技术和知识点,如Servlet、JSP、JDBC、MVC模式等,有助于深入理解和应用这些技术。此外,还包括项目部署和运行的具体步骤,方便学习者快速搭建和测试系统。
《伯牙鼓琴》教学课件.pptx
基于springboot面向社区的智能化健康管理系统研究源码数据库文档.zip
基于springboot+javaweb宿舍管理系统源码数据库文档.zip
基于SpringBoot的遥感影像共享系统源码数据库文档.zip
门禁系统方案