Jai Ar Trx Headers

download Jai Ar Trx Headers

If you can't read please download the document

description

AR Transaction Header Query

Transcript of Jai Ar Trx Headers

REM +======================================================================+REM | Copyright (c) 1996, 2015 Oracle Corporation Redwood Shores, California, USA|REM | All rights reserved. |REM +======================================================================+REM NAME : JAI_AR_TRX_HEADERS_PKGREMREM DESCRIPTION : Replace trigger package, process tax for AR transaction, integrated with ZX REM REMREM NOTESREMREM +======================================================================+REM dbdrv: sql ~PROD ~PATH ~FILE none none none sqlplus &phase=plb checkfile(120.0.12010000.10=120.0.12020000.5):~PROD:~PATH:~FILESET VERIFY OFFWHENEVER SQLERROR EXIT FAILURE ROLLBACK;WHENEVER OSERROR EXIT FAILURE ROLLBACK;CREATE OR REPLACE PACKAGE BODY JAI_AR_TRX_HEADERS_PKG AS/* $Header: jai_ar_trx_headers.plb 120.0.12020000.5 2015/06/18 10:48:28 nkodakan noship $ *//*------------------------------------------------------------------------------------------------------------ CHANGE HISTORY ------------------------------------------------------------------------------------------------------------ Sl.No. Date Developer BugNo Version Remarks ------------------------------------------------------------------------------------------------------------ 1. 13-June-2012 qinglei 14040855 115.1 Created the initial version --------------------------------------------------------------------------------------------------------------*/ G_CURRENT_RUNTIME_LEVEL CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL; G_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED; G_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR; G_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION; G_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT; G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE; G_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT; G_MODULE_NAME CONSTANT VARCHAR2(100) := 'JAI.PLSQL.JAI_AR_TRX_HEADERS_PKG.'; G_PACKAGE_NAME CONSTANT VARCHAR2(100) := 'JAI_AR_TRX_HEADERS_PKG'; FUNCTION check_reg_dealer(pn_customer_id NUMBER, pn_site_use_id NUMBER) return boolean IS ln_address_id NUMBER; lv_regno JAI_CMN_CUS_ADDRESSES.vat_Reg_no%type; CURSOR c_get_address is SELECT hzcas.cust_acct_site_id FROM hz_cust_site_uses_all hzcsu, hz_cust_acct_sites_all hzcas WHERE hzcas.cust_acct_site_id = hzcsu.cust_acct_site_id AND hzcsu.site_use_id = pn_site_use_id AND hzcas.cust_account_id = pn_customer_id; CURSOR c_regno(pn_address_id NUMBER) IS SELECT vat_Reg_no FROM JAI_CMN_CUS_ADDRESSES WHERE customer_id = pn_customer_id AND address_id = pn_address_id; BEGIN open c_get_address; fetch c_get_address into ln_address_id; close c_get_address; IF ln_address_id IS NOT NULL THEN open c_regno(ln_address_id); fetch c_regno into lv_regno; close c_regno; END IF; IF lv_regno IS NULL THEN return(false); ELSE return(true); END IF; END check_reg_dealer; PROCEDURE POPULATE_JAI_AR_TRXS(pr_new T_REC%TYPE, pv_action VARCHAR2, pv_return_code OUT NOCOPY VARCHAR2, pv_return_message OUT NOCOPY VARCHAR2) IS v_org_id NUMBER; v_loc_id NUMBER; v_reg_code VARCHAR2(30); v_excise_invoice_no NUMBER; v_update_rg VARCHAR2(1); v_update_rg23d_flag VARCHAR2(1); v_reg_type VARCHAR2(10); v_complete_flag VARCHAR2(1); v_parent_trx_number VARCHAR2(20); v_trans_type VARCHAR2(30); lv_api_name CONSTANT VARCHAR2(200) := 'POPULATE_AR_TRXS'; lv_debug_info VARCHAR2(4000); CURSOR loc_app_cur IS SELECT organization_id, location_id FROM JAI_AR_TRX_APPS_RELS_T; CURSOR register_code_cur(p_org_id IN NUMBER, p_loc_id IN NUMBER) IS SELECT register_code FROM JAI_OM_OE_BOND_REG_HDRS WHERE organization_id = p_org_id AND location_id = p_loc_id AND register_id in (SELECT register_id FROM JAI_OM_OE_BOND_REG_DTLS WHERE order_type_id = pr_new.batch_source_id AND order_flag = 'N'); CURSOR organization_cur IS SELECT organization_id, location_id FROM JAI_AR_TRXS WHERE trx_number = v_parent_trx_number; CURSOR transaction_type_cur IS SELECT type FROM RA_CUST_TRX_TYPES_ALL WHERE cust_trx_type_id = pr_new.cust_trx_type_id AND NVL(org_id, 0) = NVL(pr_new.org_id, 0); CURSOR localization_header_info IS SELECT organization_id, location_id, update_rg_flag FROM JAI_AR_TRXS WHERE customer_trx_id = pr_new.previous_customer_trx_id; v_currency_code gl_sets_of_books.currency_code%TYPE; CURSOR curr(c_sob NUMBER) IS SELECT currency_code FROM gl_sets_of_books WHERE set_of_books_id = c_sob; V_CURR CURR%ROWTYPE; BEGINjai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','POPULATE_JAI_AR_TRXS begin '); IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, G_PACKAGE_NAME || ':' || lv_api_name || '.BEGIN()+'); END IF; pv_return_code := jai_constants.successful; v_update_rg := 'Y'; v_update_rg23d_flag := 'Y'; v_org_id := -1; v_parent_trx_number := pr_new.recurred_from_trx_number; OPEN curr(pr_new.set_of_books_id); FETCH curr into v_curr; CLOSE curr; OPEN transaction_type_cur; FETCH transaction_type_cur INTO v_trans_type; CLOSE transaction_type_cur; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'v_trans_type = ' || v_trans_type); END IF; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','POPULATE_JAI_AR_TRXS 148 v_trans_type '||v_trans_type||', pr_new.created_from '||pr_new.created_from); IF NVL(v_trans_type, 'N') NOT IN ('CM', 'INV', 'DM') THEN RETURN; END IF; IF pr_new.created_from = 'ARXREC' THEN /*IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN lv_debug_info := 'Insert table JAI_AR_TRX_COPY_HDR_T. pr_new.trx_number = ' || pr_new.trx_number || 'pr_new.CUSTOMER_TRX_ID = ' || pr_new.CUSTOMER_TRX_ID || 'v_parent_trx_number = ' || v_parent_trx_number || 'pr_new.BATCH_SOURCE_ID = ' || pr_new.BATCH_SOURCE_ID || 'pr_new.CREATED_FROM = ' || pr_new.CREATED_FROM || 'pr_new.CREATION_DATE = ' || pr_new.CREATION_DATE || 'pr_new.CREATED_BY = ' || pr_new.CREATED_BY || 'pr_new.LAST_UPDATE_DATE = ' || pr_new.LAST_UPDATE_DATE || 'pr_new.LAST_UPDATED_BY = ' || pr_new.LAST_UPDATED_BY || 'pr_new.LAST_UPDATE_LOGIN = ' || pr_new.LAST_UPDATE_LOGIN; FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, lv_debug_info); END IF; INSERT INTO JAI_AR_TRX_COPY_HDR_T (TRX_NUMBER, CUSTOMER_TRX_ID, RECURRED_FROM_TRX_NUMBER, BATCH_SOURCE_ID, CREATED_FROM, CREATION_DATE, CREATED_BY, LAST_UPDATE_DATE, LAST_UPDATED_BY, LAST_UPDATE_LOGIN) VALUES (pr_new.trx_number, pr_new.CUSTOMER_TRX_ID, v_parent_trx_number, pr_new.BATCH_SOURCE_ID, pr_new.CREATED_FROM, pr_new.CREATION_DATE, pr_new.CREATED_BY, pr_new.LAST_UPDATE_DATE, pr_new.LAST_UPDATED_BY, pr_new.LAST_UPDATE_LOGIN);*/ NULL; ELSE IF pr_new.created_from = 'ARXTWCMI' THEN IF pr_new.previous_customer_trx_id IS NOT NULL Then OPEN localization_header_info; FETCH localization_header_info INTO v_org_id, v_loc_id, v_update_rg; CLOSE localization_header_info; ELSE RETURN; END IF; ELSE OPEN loc_app_cur; FETCH loc_app_cur INTO v_org_id, v_loc_id; CLOSE loc_app_cur; IF NVL(v_org_id, 999999) = 999999 THEN IF v_parent_trx_number IS NULL THEN RETURN; ELSE OPEN organization_cur; FETCH organization_cur INTO v_org_id, v_loc_id; CLOSE organization_cur; END IF; END IF; IF NVL(v_org_id, 999999) = 999999 THEN RETURN; END IF; OPEN register_code_cur(v_org_id, v_loc_id); FETCH register_code_cur INTO v_reg_code; CLOSE register_code_cur;IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'v_reg_code = ' || v_reg_code); END IF; IF v_reg_code IS NULL THEN v_update_rg := 'N'; v_update_rg23d_flag := 'N'; ELSIF v_reg_code IN ('23D_DOMESTIC_EXCISE', '23D_EXPORT_EXCISE', '23D_EXPORT_WITHOUT_EXCISE', '23D_DOM_WITHOUT_EXCISE') THEN v_update_rg23d_flag := 'Y'; v_update_rg := 'N'; ELSIF v_reg_code IN ('DOMESTIC_EXCISE', 'EXPORT_EXCISE', 'BOND_REG', 'DOM_WITHOUT_EXCISE') THEN v_update_rg := 'Y'; v_update_rg23d_flag := 'N'; END IF; END IF; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN lv_debug_info := 'Insert table JAI_AR_TRXS. pr_new.CUSTOMER_TRX_ID = ' || pr_new.CUSTOMER_TRX_ID || ', V_ORG_ID = ' || V_ORG_ID || ', V_LOC_ID = ' || V_LOC_ID || ', pr_new.TRX_NUMBER = ' || pr_new.TRX_NUMBER || ', V_UPDATE_RG = ' || V_UPDATE_RG || ', v_update_rg23d_flag = ' || v_update_rg23d_flag || ', pr_new.COMPLETE_FLAG = ' || pr_new.COMPLETE_FLAG || ', pr_new.BATCH_SOURCE_ID = ' || pr_new.BATCH_SOURCE_ID || ', pr_new.SET_OF_BOOKS_ID = ' || pr_new.SET_OF_BOOKS_ID || ', pr_new.PRIMARY_SALESREP_ID = ' || pr_new.PRIMARY_SALESREP_ID || ', pr_new.INVOICE_CURRENCY_CODE = ' || pr_new.INVOICE_CURRENCY_CODE || ', pr_new.EXCHANGE_RATE_TYPE = ' || pr_new.EXCHANGE_RATE_TYPE || ', pr_new.EXCHANGE_DATE = ' || pr_new.EXCHANGE_DATE || ', pr_new.EXCHANGE_RATE = ' || pr_new.EXCHANGE_RATE || ', pr_new.CREATED_FROM = ' || pr_new.CREATED_FROM || ', pr_new.CREATION_DATE = ' || pr_new.CREATION_DATE || ', pr_new.CREATED_BY = ' || pr_new.CREATED_BY || ', pr_new.LAST_UPDATE_DATE = ' || pr_new.LAST_UPDATE_DATE || ', pr_new.LAST_UPDATE_LOGIN = ' || pr_new.LAST_UPDATE_LOGIN || ', pr_new.LAST_UPDATED_BY = ' || pr_new.LAST_UPDATED_BY || ', pr_new.LEGAL_ENTITY_ID ' || pr_new.LEGAL_ENTITY_ID; FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, lv_debug_info); END IF; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','POPULATE_JAI_AR_TRXS 288 before insert into INSERT INTO JAI_AR_TRXS '); INSERT INTO JAI_AR_TRXS (CUSTOMER_TRX_ID, ORGANIZATION_ID, LOCATION_ID, TRX_NUMBER, UPDATE_RG_FLAG, UPDATE_RG23d_FLAG, ONCE_COMPLETED_FLAG, BATCH_SOURCE_ID, SET_OF_BOOKS_ID, PRIMARY_SALESREP_ID, INVOICE_CURRENCY_CODE, EXCHANGE_RATE_TYPE, EXCHANGE_DATE, EXCHANGE_RATE, CREATED_FROM, CREATION_DATE, CREATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN, LAST_UPDATED_BY, LEGAL_ENTITY_ID, COMPLETE_FLAG, SHIP_TO_CUSTOMER_ID, SHIP_TO_SITE_USE_ID) VALUES (pr_new.CUSTOMER_TRX_ID, V_ORG_ID, V_LOC_ID, pr_new.TRX_NUMBER, V_UPDATE_RG, v_update_rg23d_flag, pr_new.COMPLETE_FLAG, pr_new.BATCH_SOURCE_ID, pr_new.SET_OF_BOOKS_ID, pr_new.PRIMARY_SALESREP_ID, pr_new.INVOICE_CURRENCY_CODE, pr_new.EXCHANGE_RATE_TYPE, pr_new.EXCHANGE_DATE, pr_new.EXCHANGE_RATE, pr_new.CREATED_FROM, pr_new.CREATION_DATE, pr_new.CREATED_BY, pr_new.LAST_UPDATE_DATE, pr_new.LAST_UPDATE_LOGIN, pr_new.LAST_UPDATED_BY, pr_new.LEGAL_ENTITY_ID, pr_new.COMPLETE_FLAG, pr_new.SHIP_TO_CUSTOMER_ID, pr_new.SHIP_TO_SITE_USE_ID);jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','POPULATE_JAI_AR_TRXS 340 no of rows inserted '||sql%rowcount); IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, SQL%ROWCOUNT || ' rows inserted in JAI_AR_TRXS');END IF; END IF; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, G_PACKAGE_NAME || ':' || lv_api_name || '.END()-'); END IF;jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','POPULATE_JAI_AR_TRXS 349 end of procedure '); EXCEPTION WHEN OTHERS THEN Pv_return_code := jai_constants.unexpected_error; Pv_return_message := 'Encountered an error in JAI_AR_TRX_HEADERS_PKG.POPULATE_AR_TRXS. ' || substr(SQLERRM, 1, 1900); IF G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL THEN FND_LOG.STRING(G_LEVEL_UNEXPECTED, G_MODULE_NAME || lv_api_name, SUBSTR('Encountered an error in JAI_AR_TRX_HEADERS_PKG.POPULATE_AR_TRXS. ' || SQLERRM, 1, 4000)); END IF; END POPULATE_JAI_AR_TRXS; PROCEDURE POPULATE_COPIED_TRANSACTIONS(PR_NEW T_REC%TYPE, PV_ACTION VARCHAR2, PV_RETURN_CODE OUT NOCOPY VARCHAR2, PV_RETURN_MESSAGE OUT NOCOPY VARCHAR2) IS t_jai_line_rec_old JAI_AR_TRX_LINES%ROWTYPE; t_jai_line_rec_new JAI_AR_TRX_LINES%ROWTYPE; CURSOR c_jai_ar_trx_lines(pn_customer_trx_line_id NUMBER) IS SELECT * FROM jai_ar_trx_lines WHERE customer_trx_line_id = pn_customer_trx_line_id; lv_action VARCHAR2(20); lv_return_message VARCHAR2(2000); lv_return_code VARCHAR2(100); le_error EXCEPTION; v_created_from Varchar2(30); v_header_id Number; v_customer_trx_line_id Number; v_recurred_from_trx_number Varchar2(20); v_trx_number Varchar2(20); v_once_completed_flag Varchar2(1); x Number; v_batch_source_id Number := 0; v_parent_header_id Number; v_line_tax_amount Number := 0; v_header_tax_amount Number := 0; v_last_update_date Date; v_last_updated_by Number; v_creation_date Date; v_created_by Number; v_last_update_login Number; v_service_type VARCHAR2(30); lv_api_name CONSTANT VARCHAR2(100) := 'POPULATE_COPIED_TRANSACTIONS';lv_debug_info VARCHAR2(4000); /* CURSOR temp_fetch IS SELECT trx_number, customer_trx_id, recurred_from_trx_number, batch_source_id, created_from, creation_date, created_by, last_update_date, last_updated_by, last_update_login FROM JAI_AR_TRX_COPY_HDR_T ORDER BY customer_trx_id;*/ CURSOR temp_fetch IS SELECT trx_number, customer_trx_id, recurred_from_trx_number, batch_source_id, created_from, creation_date, created_by, last_update_date, last_updated_by, last_update_login FROM RA_CUSTOMER_TRX_ALL WHERE customer_trx_id = pr_new.customer_trx_id ORDER BY customer_trx_id; CURSOR ONCE_COMPLETE_FLAG_CUR(p_header_id IN NUMBER, p_batch_source_id IN Number) IS SELECT once_completed_flag, 1 FROM JAI_AR_TRXS WHERE customer_trx_id = p_header_id AND NVL(batch_source_id, 0) = p_batch_source_id; CURSOR parent_header_id(p_recurred_from_trx_number IN Varchar2, p_batch_source_id IN Number) IS SELECT a.customer_trx_id FROM JAI_AR_TRXS a WHERE a.trx_number = p_recurred_from_trx_number AND NVL(batch_source_id, 0) = p_batch_source_id; CURSOR LINES_INFO_CUR(p_parent_header_id IN Number) IS SELECT customer_trx_line_id, line_number, description, inventory_item_id, unit_code, quantity, tax_category_id, auto_invoice_flag, unit_selling_price, line_amount, gl_date, tax_amount, total_amount, assessable_value FROM JAI_AR_TRX_LINES WHERE customer_trx_id = p_parent_header_id ORDER BY customer_trx_line_id; CURSOR TAX_INFO_CUR(p_parent_line_id IN NUMBER) IS SELECT a.tax_line_no, a.precedence_1, a.precedence_2, a.precedence_3, a.precedence_4, a.precedence_5, a.precedence_6, a.precedence_7, a.precedence_8, a.precedence_9, a.precedence_10, a.tax_id, a.tax_rate, a.qty_rate, a.uom, a.tax_amount, a.base_tax_amount, a.func_tax_amount, b.end_date valid_date, b.tax_type FROM JAI_AR_TRX_TAX_LINES a, JAI_CMN_TAXES_ALL b WHERE a.link_to_cust_trx_line_id = p_parent_line_id AND a.tax_id = b.tax_id ORDER BY a.tax_line_no; CURSOR HEADER_INFO_CUR(p_recurred_from_trx_number IN Varchar2, p_batch_source_id IN Number) IS SELECT CUSTOMER_TRX_ID, ORGANIZATION_ID, LOCATION_ID, UPDATE_RG_FLAG, UPDATE_RG23D_FLAG, TAX_AMOUNT, LINE_AMOUNT, TOTAL_AMOUNT, BATCH_SOURCE_ID, legal_entity_id, complete_flag, ship_to_customer_id, ship_to_site_use_id FROM JAI_AR_TRXS WHERE trx_number = p_recurred_from_trx_number AND NVL(batch_source_id, 0) = p_batch_source_id; BEGIN IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, G_PACKAGE_NAME || ':' || lv_api_name || '.BEGIN()+'); END IF; pv_return_code := jai_constants.successful; OPEN temp_fetch; FETCH temp_fetch INTO v_trx_number, v_header_id, v_recurred_from_trx_number, v_batch_source_id, v_created_from, v_creation_date, v_created_by, v_last_update_date, v_last_updated_by, v_last_update_login; CLOSE temp_fetch; --DELETE JAI_AR_TRX_COPY_HDR_T WHERE customer_trx_id = v_header_id; IF v_trx_number IS NULL THEN Return; END IF; IF v_created_from 'ARXREC' THEN RETURN; END IF; OPEN ONCE_COMPLETE_FLAG_CUR(v_header_id, v_batch_source_id); FETCH ONCE_COMPLETE_FLAG_CUR INTO v_once_completed_flag, x; CLOSE ONCE_COMPLETE_FLAG_CUR; IF NVL(v_once_completed_flag, 'N') = 'Y' THEN RETURN; END IF; OPEN parent_header_id(v_recurred_from_trx_number, v_batch_source_id); FETCH parent_header_id INTO v_parent_header_id; CLOSE parent_header_id; IF NVL(x, 0) 1 THEN FOR hdr in HEADER_INFO_CUR(v_recurred_from_trx_number, v_batch_source_id) LOOP IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN lv_debug_info := 'Insert table JAI_AR_TRXS. v_header_id = ' || v_header_id || ', hdr.organization_id = ' || hdr.organization_id || ', hdr.location_id = ' || hdr.location_id || ', hdr.update_rg23d_flag = ' || hdr.update_rg23d_flag || ', hdr.update_rg_flag = ' || hdr.update_rg_flag || ', v_trx_number = ' || v_trx_number || ', hdr.line_amount = ' || hdr.line_amount || ', hdr.batch_source_id = ' || hdr.batch_source_id; FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, lv_debug_info); END IF; INSERT INTO JAI_AR_TRXS (customer_trx_id, organization_id, location_id, update_rg23d_flag, update_rg_flag, trx_number, once_completed_flag, line_amount, batch_source_id, created_from, creation_date, created_by, last_update_date, last_updated_by, last_update_login, legal_entity_id, COMPLETE_FLAG, SHIP_TO_CUSTOMER_ID, SHIP_TO_SITE_USE_ID) VALUES (v_header_id, hdr.organization_id, hdr.location_id, hdr.update_rg23d_flag, hdr.update_rg_flag, v_trx_number, 'N', hdr.line_amount, hdr.batch_source_id, v_created_from, v_creation_date, v_created_by, v_last_update_date, v_last_updated_by, v_last_update_login, hdr.legal_entity_id, hdr.COMPLETE_FLAG, hdr.SHIP_TO_CUSTOMER_ID, hdr.SHIP_TO_SITE_USE_ID); IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, SQL%ROWCOUNT || ' rows inserted in JAI_AR_TRXS');END IF; END LOOP; END IF; v_service_type := JAI_AR_RCTLA_TRIGGER_PKG.get_service_type(NVL(pr_new.SHIP_TO_CUSTOMER_ID, pr_new.BILL_TO_CUSTOMER_ID), NVL(pr_new.SHIP_TO_SITE_USE_ID, pr_new.BILL_TO_SITE_USE_ID), 'C'); FOR rec in LINES_INFO_CUR(v_parent_header_id) LOOPIF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN lv_debug_info := 'Insert table JAI_AR_TRX_LINES. rec.line_number = ' || rec.line_number || ', v_header_id = ' || v_header_id || ', rec.inventory_item_id = ' || rec.inventory_item_id || ', rec.quantity = ' || rec.quantity || ', rec.unit_selling_price = ' || rec.unit_selling_price || ', rec.line_amount = ' || rec.line_amount || ', rec.assessable_value = ' || rec.assessable_value || ', v_customer_trx_line_id = ' || v_customer_trx_line_id; FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, lv_debug_info); END IF; INSERT INTO JAI_AR_TRX_LINES (customer_trx_line_id, line_number, customer_trx_id, description, inventory_item_id, unit_code, quantity, tax_category_id, auto_invoice_flag, unit_selling_price, line_amount, gl_date, assessable_value, creation_date, created_by, last_update_date, last_updated_by, last_update_login, service_type_code) VALUES (ra_customer_trx_lines_s.nextval, rec.line_number, v_header_id, rec.description, rec.inventory_item_id, rec.unit_code, rec.quantity, rec.tax_category_id, rec.auto_invoice_flag, rec.unit_selling_price, rec.line_amount, rec.gl_date, rec.assessable_value, v_creation_date, v_created_by, v_last_update_date, v_last_updated_by, v_last_update_login, v_service_type) returning customer_trx_line_id into v_customer_trx_line_id; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, SQL%ROWCOUNT || ' rows inserted in JAI_AR_TRX_LINES');END IF; OPEN c_jai_ar_trx_lines(v_customer_trx_line_id); FETCH c_jai_ar_trx_lines INTO t_jai_line_rec_new; CLOSE c_jai_ar_trx_lines; lv_action := JAI_CONSTANTS.INSERTING; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'Calling JAI_AR_TAX_LINES_PKG.POPULATE_TAX_LINES_WRAPPER with lv_action = JAI_CONSTANTS.INSERTING'); END IF; JAI_AR_TAX_LINES_PKG.POPULATE_TAX_LINES_WRAPPER(pr_old => t_jai_line_rec_old, pr_new => t_jai_line_rec_new, pv_action => lv_action, pv_return_code => lv_return_code, pv_return_message => lv_return_message); IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'Returned from JAI_AR_TAX_LINES_PKG.POPULATE_TAX_LINES_WRAPPER'); END IF; IF PV_RETURN_CODE JAI_CONSTANTS.successful THEN RAISE le_error; END IF; FOR rec1 in TAX_INFO_CUR(rec.customer_trx_line_id) LOOP IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'rec1.valid_date = ' || rec1.valid_date); END IF; IF rec1.valid_date < sysdate THEN rec1.tax_amount := 0; rec1.base_tax_amount := 0; rec1.func_tax_amount := 0; END IF;IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN lv_debug_info := 'Insert table JAI_AR_TRX_TAX_LINES. v_customer_trx_line_id = ' || v_customer_trx_line_id || ', rec1.tax_line_no = ' || rec1.tax_line_no || ', rec1.tax_rate = ' || rec1.tax_rate || ', rec1.qty_rate = ' || rec1.qty_rate || ', rec1.tax_amount = ' || rec1.tax_amount || ', rec1.base_tax_amount = ' || rec1.base_tax_amount || ', rec1.func_tax_amount = ' || rec1.func_tax_amount || ', rec1.tax_type = ' || rec1.tax_type; FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, lv_debug_info); END IF; INSERT INTO JAI_AR_TRX_TAX_LINES (customer_trx_line_id, link_to_cust_trx_line_id, tax_line_no, precedence_1, precedence_2, precedence_3, precedence_4, precedence_5, precedence_6, precedence_7, precedence_8, precedence_9, precedence_10, tax_id, tax_rate, qty_rate, uom, tax_amount, base_tax_amount, func_tax_amount, creation_date, created_by, last_update_date, last_updated_by, last_update_login) VALUES (ra_customer_trx_lines_s.nextval, v_customer_trx_line_id, rec1.tax_line_no, rec1.precedence_1, rec1.precedence_2, rec1.precedence_3, rec1.precedence_4, rec1.precedence_5, rec1.precedence_6, rec1.precedence_7, rec1.precedence_8, rec1.precedence_9, rec1.precedence_10, rec1.tax_id, rec1.tax_rate, rec1.qty_rate, rec1.uom, rec1.tax_amount, rec1.base_tax_amount, rec1.func_tax_amount, v_creation_date, v_created_by, v_last_update_date, v_last_updated_by, v_last_update_login); IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, SQL%ROWCOUNT || ' rows inserted in JAI_AR_TRX_TAX_LINES');END IF; IF rec1.tax_type 'TDS' THEN v_line_tax_amount := nvl(v_line_tax_amount, 0) + nvl(rec1.tax_amount, 0); END IF; IF rec1.tax_type in ('Excise', 'Addl. Excise', 'Other Excise') THEN v_header_tax_amount := nvl(v_header_tax_amount, 0) + nvl(rec1.tax_amount, 0); END IF; END LOOP; OPEN c_jai_ar_trx_lines(v_customer_trx_line_id); FETCH c_jai_ar_trx_lines INTO t_jai_line_rec_old; CLOSE c_jai_ar_trx_lines; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'UPDATE JAI_AR_TRX_LINES with v_line_tax_amount = ' || v_line_tax_amount); END IF; UPDATE JAI_AR_TRX_LINES SET tax_amount = v_line_tax_amount, total_amount = nvl(line_amount, 0) + v_line_tax_amount WHERE customer_trx_line_id = v_customer_trx_line_id; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, SQL%ROWCOUNT || ' rows updated in JAI_AR_TRX_LINES');END IF; OPEN c_jai_ar_trx_lines(v_customer_trx_line_id); FETCH c_jai_ar_trx_lines INTO t_jai_line_rec_new; CLOSE c_jai_ar_trx_lines; lv_action := JAI_CONSTANTS.UPDATING; IF (((t_jai_line_rec_new.AUTO_INVOICE_FLAG 'Y' AND t_jai_line_rec_old.AUTO_INVOICE_FLAG 'Y') AND (t_jai_line_rec_new.Excise_Invoice_No IS NULL) AND (t_jai_line_rec_new.payment_Register IS NULL) AND (t_jai_line_rec_new.Excise_Invoice_Date IS NULL)) OR (t_jai_line_rec_new.Customer_Trx_Id t_jai_line_rec_old.Customer_Trx_Id)) THEN JAI_AR_TAX_LINES_PKG.POPULATE_TAX_LINES_WRAPPER(pr_old => t_jai_line_rec_old, pr_new => t_jai_line_rec_new, pv_action => lv_action, pv_return_code => lv_return_code, pv_return_message => lv_return_message); IF lv_return_code jai_constants.successful then RAISE le_error; END IF; END IF; v_line_tax_amount := 0; END LOOP;IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'UPDATE JAI_AR_TRXS with v_header_tax_amount = ' || v_header_tax_amount); END IF; UPDATE JAI_AR_TRXS SET tax_amount = v_header_tax_amount, total_amount = nvl(line_amount, 0) + v_header_tax_amount WHERE customer_trx_id = v_header_id; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, SQL%ROWCOUNT || ' rows updated in JAI_AR_TRXS');END IF; v_header_tax_amount := 0; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, G_PACKAGE_NAME || ':' || lv_api_name || '.END()-'); END IF; EXCEPTION WHEN OTHERS THEN Pv_return_code := jai_constants.unexpected_error; Pv_return_message := 'Encountered an error in JAI_AR_TRX_HEADERS_PKG.POPULATE_COPIED_TRANSACTIONS. ' || substr(SQLERRM, 1, 1900); IF G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL THEN FND_LOG.STRING(G_LEVEL_UNEXPECTED, G_MODULE_NAME || lv_api_name, SUBSTR('Encountered an error in JAI_AR_TRX_HEADERS_PKG.POPULATE_COPIED_TRANSACTIONS. ' || SQLERRM, 1, 4000)); END IF; END POPULATE_COPIED_TRANSACTIONS; PROCEDURE UPDATE_TRX_NUMBER(pr_old t_jai_rec%type, pr_new t_rec%type, pv_action varchar2, pv_return_code out NOCOPY varchar2, pv_return_message out NOCOPY varchar2) IS v_trans_type Varchar2(30); v_trx_number varchar2(30); v_ref_line_id varchar2(30); Cursor transaction_type_cur IS Select type From RA_CUST_TRX_TYPES_ALL Where cust_trx_type_id = pr_new.cust_trx_type_id And NVL(org_id, 0) = NVL(pr_new.org_id, 0); v_currency_code gl_sets_of_books.currency_code%type; lv_api_name CONSTANT VARCHAR2(200) := 'UPDATE_TRX_NUMBER'; lv_debug_info VARCHAR2(4000); t_jai_line_rec_old JAI_AR_TRX_LINES%ROWTYPE; t_jai_line_rec_new JAI_AR_TRX_LINES%ROWTYPE; CURSOR c_jai_ar_trx_lines(pn_customer_trx_line_id NUMBER) IS SELECT * FROM jai_ar_trx_lines WHERE customer_trx_line_id = pn_customer_trx_line_id; lv_action VARCHAR2(20); lv_return_message VARCHAR2(2000); lv_return_code VARCHAR2(100); le_error EXCEPTION; BEGIN jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','UPDATE_TRX_NUMBER 824 begin of procedure'); IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, G_PACKAGE_NAME || ':' || lv_api_name || '.BEGIN()+'); END IF; pv_return_code := jai_constants.successful; v_trx_number := pr_new.Trx_Number; v_ref_line_id := pr_new.interface_header_attribute7; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','UPDATE_TRX_NUMBER 834 pr_new.created_from '||pr_new.created_from|| ', pr_new.CUSTOMER_TRX_ID '||pr_new.CUSTOMER_TRX_ID|| ', pr_old.CUSTOMER_TRX_ID '||pr_old.CUSTOMER_TRX_ID); IF pr_new.created_from = 'RAXTRX' THEN IF pr_new.CUSTOMER_TRX_ID pr_old.CUSTOMER_TRX_ID THEN Update JAI_AR_TRXS Set Customer_Trx_ID = pr_new.Customer_Trx_ID Where Customer_Trx_ID = pr_old.Customer_Trx_ID; FOR c_jai_ar_trx_lines_rec IN (SELECT customer_trx_line_id FROM JAI_AR_TRX_LINES WHERE customer_trx_id = pr_old.customer_trx_id) LOOP OPEN c_jai_ar_trx_lines(c_jai_ar_trx_lines_rec.customer_trx_line_id); FETCH c_jai_ar_trx_lines INTO t_jai_line_rec_old; CLOSE c_jai_ar_trx_lines; Update JAI_AR_TRX_LINES Set Customer_Trx_Id = pr_new.Customer_Trx_ID Where Customer_Trx_ID = pr_old.Customer_Trx_ID AND customer_trx_line_id = c_jai_ar_trx_lines_rec.customer_trx_line_id; OPEN c_jai_ar_trx_lines(c_jai_ar_trx_lines_rec.customer_trx_line_id); FETCH c_jai_ar_trx_lines INTO t_jai_line_rec_new; CLOSE c_jai_ar_trx_lines; lv_action := JAI_CONSTANTS.UPDATING; IF (((t_jai_line_rec_new.AUTO_INVOICE_FLAG 'Y' AND t_jai_line_rec_old.AUTO_INVOICE_FLAG 'Y') AND (t_jai_line_rec_new.Excise_Invoice_No IS NULL) AND (t_jai_line_rec_new.payment_Register IS NULL) AND (t_jai_line_rec_new.Excise_Invoice_Date IS NULL)) OR (t_jai_line_rec_new.Customer_Trx_Id t_jai_line_rec_old.Customer_Trx_Id)) THEN jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','UPDATE_TRX_NUMBER before 873 JAI_AR_TAX_LINES_PKG.POPULATE_TAX_LINES_WRAPPER '); JAI_AR_TAX_LINES_PKG.POPULATE_TAX_LINES_WRAPPER(pr_old => t_jai_line_rec_old, pr_new => t_jai_line_rec_new, pv_action => lv_action, pv_return_code => lv_return_code, pv_return_message => lv_return_message);jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','UPDATE_TRX_NUMBER after 873 JAI_AR_TAX_LINES_PKG.POPULATE_TAX_LINES_WRAPPER '); IF lv_return_code jai_constants.successful then RAISE le_error; END IF; END IF; END LOOP; END IF; Update JAI_AR_TRXS Set Trx_Number = pr_new.Trx_Number Where Customer_Trx_ID = pr_new.Customer_Trx_ID; END IF; OPEN transaction_type_cur; FETCH transaction_type_cur INTO v_trans_type; CLOSE transaction_type_cur;jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','UPDATE_TRX_NUMBER 898 v_trans_type '||v_trans_type||', pr_new.created_from '||pr_new.created_from); IF NVL(v_trans_type, 'N') in ('CM', 'DM') THEN -- IF pr_new.created_from = 'RAXTRX' THEN -- Added ARXTWMAI for bug 21211319 IF pr_new.created_from in ('RAXTRX','ARXTWMAI') THEN Update JAI_AR_TRXS Set Trx_Number = pr_new.Trx_Number Where Customer_Trx_ID = pr_new.Customer_Trx_ID; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','UPDATE_TRX_NUMBER 905 updating the JAI_AR_TRXS table with '||pr_new.Trx_Number); ELSE Update JAI_AR_TRXS Set Trx_Number = pr_new.Trx_Number, Once_Completed_Flag = NVL(pr_new.Complete_Flag, 'N') Where Customer_Trx_ID = pr_new.Customer_Trx_ID; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','UPDATE_TRX_NUMBER 913 updating the JAI_AR_TRXS table with '||pr_new.Trx_Number); END IF; ELSIF NVL(v_trans_type, 'N') = 'INV' THEN Update JAI_AR_TRXS Set Trx_Number = pr_new.Trx_Number Where Customer_Trx_ID = pr_new.Customer_Trx_ID; END IF; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, G_PACKAGE_NAME || ':' || lv_api_name || '.END()-'); END IF;jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','UPDATE_TRX_NUMBER end of procedure '); EXCEPTION WHEN OTHERS THEN Pv_return_code := jai_constants.unexpected_error; Pv_return_message := 'Encountered an error in ' || G_PACKAGE_NAME || '.' || lv_api_name || substr(sqlerrm, 1, 1900); END UPDATE_TRX_NUMBER; PROCEDURE RECALCULATE_TAX(pr_old t_jai_rec%type, pr_new t_rec%type, pv_action varchar2, pv_return_code out NOCOPY varchar2, pv_return_message out NOCOPY varchar2) IS lv_api_name CONSTANT VARCHAR2(200) := 'RECALCULATE_TAX'; lv_debug_info VARCHAR2(4000); t_jai_line_rec_old JAI_AR_TRX_LINES%ROWTYPE; t_jai_line_rec_new JAI_AR_TRX_LINES%ROWTYPE; CURSOR c_jai_ar_trx_lines(pn_customer_trx_line_id NUMBER) IS SELECT * FROM jai_ar_trx_lines WHERE customer_trx_line_id = pn_customer_trx_line_id; lv_action VARCHAR2(20); lv_return_message VARCHAR2(2000); lv_return_code VARCHAR2(100); le_error EXCEPTION; v_customer_id Number; v_org_id Number; v_header_id Number; v_ship_to_site_use_id Number; v_created_from Varchar2(30); v_last_update_date Date; v_last_updated_by Number; v_creation_date Date; v_created_by Number; v_last_update_login Number; c_from_currency_code Varchar2(15); c_conversion_type Varchar2(30); c_conversion_date Date; c_conversion_rate Number; v_books_id Number; v_inventory_item_id Number; v_address_id Number; v_once_completed_flag Varchar2(1); v_organization_id Number; v_location_id NUMBER; v_tax_category_id Number; v_price_list Number := 0; v_price_list_uom_code Varchar2(10); v_conversion_rate Number; v_price_list_val Number := 0; v_converted_rate Number; v_line_tax_amount Number := 0; v_trx_date Date; v_service_type VARCHAR2(30); Cursor address_cur(p_ship_to_site_use_id IN Number) IS SELECT cust_acct_site_id address_id FROM hz_cust_site_uses_all A WHERE A.site_use_id = p_ship_to_site_use_id; CURSOR price_list_cur(p_customer_id IN Number, p_inventory_item_id IN Number, p_address_id IN Number DEFAULT 0, v_uom_code VARCHAR2, p_trx_date DATE) IS select list_price, unit_code from so_price_list_lines where price_list_id in (select price_list_id from JAI_CMN_CUS_ADDRESSES where customer_id = p_customer_id and address_id = p_address_id) and inventory_item_id = p_inventory_item_id and unit_code = v_uom_code AND NVL(end_date_active, SYSDATE) >= p_trx_date; CURSOR ORG_CUR IS SELECT organization_id, location_id FROM JAI_AR_TRX_APPS_RELS_T; CURSOR organization_cur IS SELECT organization_id, location_id FROM JAI_AR_TRXS WHERE trx_number = pr_new.recurred_from_trx_number; CURSOR ONCE_COMPLETE_FLAG_CUR IS SELECT once_completed_flag FROM JAI_AR_TRXS WHERE customer_trx_id = v_header_id; v_trans_type Varchar2(30); Cursor transaction_type_cur IS Select a.type From RA_CUST_TRX_TYPES_ALL a Where a.cust_trx_type_id = pr_new.cust_trx_type_id And a.org_id = v_org_id; Cursor Ar_Line_Cur IS Select Customer_Trx_Line_ID, Inventory_Item_ID, Unit_Code, Line_Amount, Quantity, unit_selling_price From JAI_AR_TRX_LINES Where Customer_Trx_ID = v_header_id; ln_vat_assessable_value JAI_AR_TRX_LINES.VAT_ASSESSABLE_VALUE%TYPE; LN_TCS_EXISTS NUMBER; LN_TCS_REGIME_ID JAI_RGM_DEFINITIONS.REGIME_ID%TYPE; LN_THRESHOLD_SLAB_ID JAI_AP_TDS_THHOLD_SLABS.THRESHOLD_SLAB_ID%TYPE; LN_THRESHOLD_TAX_CAT_ID JAI_AP_TDS_THHOLD_TAXES.TAX_CATEGORY_ID%TYPE; CURSOR GC_CHK_RGM_TAX_EXISTS(CP_REGIME_CODE JAI_RGM_DEFINITIONS.REGIME_CODE%TYPE, CP_RGM_TAX_TYPE JAI_CMN_TAXES_ALL.TAX_TYPE%TYPE, CP_TAX_CATEGORY_ID JAI_CMN_TAX_CTGS_ALL.TAX_CATEGORY_ID%TYPE) IS SELECT COUNT(1) FROM JAI_CMN_TAX_CTG_LINES CATL, JAI_CMN_TAXES_ALL CODES, JAI_REGIME_TAX_TYPES_V JRTTV WHERE CATL.TAX_CATEGORY_ID = CP_TAX_CATEGORY_ID AND CATL.TAX_ID = CODES.TAX_ID AND CODES.TAX_TYPE = JRTTV.TAX_TYPE AND JRTTV.REGIME_CODE = CP_REGIME_CODE; CURSOR GC_GET_REGIME_ID(CP_REGIME_CODE JAI_RGM_DEFINITIONS.REGIME_CODE%TYPE) IS SELECT REGIME_ID FROM JAI_RGM_DEFINITIONS WHERE REGIME_CODE = CP_REGIME_CODE; LV_PROCESS_FLAG VARCHAR2(2); LV_PROCESS_MESSAGE VARCHAR2(1998); BEGIN IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, G_PACKAGE_NAME || ':' || lv_api_name || '.BEGIN()+'); END IF; pv_return_code := jai_constants.successful; v_customer_id := pr_new.Ship_To_Customer_ID; v_org_id := NVL(pr_new.Org_ID, 0); v_header_id := pr_new.customer_trx_id; v_ship_to_site_use_id := NVL(pr_new.Ship_To_Site_Use_ID, 0); v_created_from := pr_new.Created_From; v_last_update_date := pr_new.last_update_date; v_last_updated_by := pr_new.last_updated_by; v_creation_date := pr_new.creation_date; v_created_by := pr_new.created_by; v_last_update_login := pr_new.last_update_login; c_from_currency_code := pr_new.invoice_currency_code; c_conversion_type := pr_new.exchange_rate_type; c_conversion_date := NVL(pr_new.exchange_date, pr_new.trx_date); c_conversion_rate := NVL(pr_new.exchange_rate, 0); v_books_id := pr_new.set_of_books_id; v_trx_date := pr_new.trx_date; OPEN transaction_type_cur; FETCH transaction_type_cur INTO v_trans_type; CLOSE transaction_type_cur; IF NVL(v_trans_type, 'N') 'INV' THEN Return; END IF; OPEN ONCE_COMPLETE_FLAG_CUR; FETCH ONCE_COMPLETE_FLAG_CUR INTO v_once_completed_flag; CLOSE ONCE_COMPLETE_FLAG_CUR; IF NVL(v_once_completed_flag, 'N') = 'Y' THEN RETURN; END IF; IF v_created_from in ('RAXTRX', 'ARXREC') THEN RETURN; END IF; IF pr_new.invoice_currency_code pr_old.invoice_currency_code THEN UPDATE JAI_AR_TRXS SET invoice_currency_code = pr_new.invoice_currency_code, exchange_rate_type = pr_new.exchange_rate_type, exchange_date = pr_new.exchange_date, exchange_rate = pr_new.exchange_rate WHERE customer_trx_id = pr_new.customer_trx_id; END IF; IF (pr_new.ship_to_customer_id pr_old.ship_to_customer_id) OR (pr_new.ship_to_site_use_id pr_old.ship_to_site_use_id) THEN UPDATE JAI_AR_TRXS SET ship_to_customer_id = pr_new.ship_to_customer_id, ship_to_site_use_id = pr_new.ship_to_site_use_id WHERE customer_trx_id = pr_new.customer_trx_id; END IF; OPEN ORG_CUR; FETCH ORG_CUR INTO v_organization_id, v_location_id; CLOSE ORG_CUR; IF NVL(v_organization_id, 999999) = 999999 THEN OPEN organization_cur; FETCH organization_cur INTO v_organization_id, v_location_id; CLOSE organization_cur; END IF; IF NVL(v_organization_id, 999999) = 999999 THEN RETURN; END IF; OPEN address_cur(v_ship_to_site_use_id); FETCH address_cur INTO v_address_id; CLOSE address_cur; FOR rec In Ar_Line_Cur LOOP v_tax_category_id := ''; v_price_list := ''; v_price_list_uom_code := ''; v_conversion_rate := ''; v_price_list_val := ''; v_converted_rate := ''; v_line_tax_amount := 0; DELETE JAI_AR_TRX_TAX_LINES WHERE LINK_TO_CUST_TRX_LINE_ID = Rec.CUSTOMER_TRX_LINE_ID; IF v_customer_id IS NOT NULL AND v_address_id IS NOT NULL THEN jai_cmn_tax_defaultation_pkg.ja_in_cust_default_taxes(v_organization_id, v_customer_id, v_ship_to_site_use_id, rec.inventory_item_id, v_header_id, rec.customer_trx_line_id, v_tax_category_id); ELSE jai_cmn_tax_defaultation_pkg.ja_in_org_default_taxes(v_organization_id, rec.inventory_item_id, v_tax_category_id); END IF; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'v_tax_category_id = ' || v_tax_category_id); END IF; IF v_tax_category_id IS NOT NULL THEN OPEN price_list_cur(v_customer_id, rec.inventory_item_id, v_address_id, rec.unit_code, v_trx_date); FETCH price_list_cur INTO v_price_list, v_price_list_uom_code; CLOSE price_list_cur;IF v_price_list IS NULL THEN OPEN price_list_cur(v_customer_id, rec.inventory_item_id, 0, rec.unit_code, v_trx_date); FETCH price_list_cur INTO v_price_list, v_price_list_uom_code; CLOSE price_list_cur; END IF; ln_vat_assessable_value := jai_general_pkg.ja_in_vat_assessable_value(p_party_id => v_customer_id, p_party_site_id => v_ship_to_site_use_id, p_inventory_item_id => rec.inventory_item_id, p_uom_code => rec.unit_code, p_default_price => nvl(rec.unit_selling_price, 0), p_ass_value_date => pr_new.trx_date, p_party_type => 'C'); ln_vat_assessable_value := NVL(ln_vat_assessable_value, 0) * rec.quantity; v_line_tax_amount := nvl(rec.line_amount, 0);IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'ln_vat_assessable_value = ' || ln_vat_assessable_value || ', v_line_tax_amount = ' || v_line_tax_amount); END IF; IF NVL(v_price_list, 0) > 0 THEN IF v_price_list_uom_code IS NOT NULL THEN INV_CONVERT.inv_um_conversion(rec.unit_code, v_price_list_uom_code, rec.inventory_item_id, v_conversion_rate); IF nvl(v_conversion_rate, 0) JAI_CONSTANTS.TCS_REGIME, CP_RGM_TAX_TYPE => JAI_CONSTANTS.TAX_TYPE_TCS, CP_TAX_CATEGORY_ID => V_TAX_CATEGORY_ID); FETCH GC_CHK_RGM_TAX_EXISTS INTO LN_TCS_EXISTS; CLOSE GC_CHK_RGM_TAX_EXISTS;IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'LN_TCS_EXISTS = ' || LN_TCS_EXISTS); END IF; IF LN_TCS_EXISTS IS NOT NULL THEN OPEN GC_GET_REGIME_ID(CP_REGIME_CODE => JAI_CONSTANTS.TCS_REGIME); FETCH GC_GET_REGIME_ID INTO LN_TCS_REGIME_ID; CLOSE GC_GET_REGIME_ID; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'LN_TCS_REGIME_ID = ' || LN_TCS_REGIME_ID); END IF; jai_rgm_thhold_proc_pkg.get_threshold_slab_id(p_regime_id => ln_tcs_regime_id, p_organization_id => v_organization_id, p_party_type => jai_constants.party_type_customer, p_party_id => v_customer_id, p_org_id => v_org_id, p_source_trx_date => v_trx_date, p_threshold_slab_id => ln_threshold_slab_id, p_process_flag => lv_process_flag, p_process_message => lv_process_message); IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'ln_threshold_slab_id = ' || ln_threshold_slab_id); END IF; if lv_process_flag jai_constants.successful then app_exception.raise_exception(exception_type => 'APP', exception_code => -20275, exception_text => lv_process_message); end if; if ln_threshold_slab_id is not null then jai_rgm_thhold_proc_pkg.get_threshold_tax_cat_id(p_threshold_slab_id => ln_threshold_slab_id, p_org_id => v_org_id, p_threshold_tax_cat_id => ln_threshold_tax_cat_id, p_process_flag => lv_process_flag, p_process_message => lv_process_message); if lv_process_flag jai_constants.successful then app_exception.raise_exception(exception_type => 'APP', exception_code => -20275, exception_text => lv_process_message); end if; end if; end if;IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'Calling jai_cmn_tax_defaultation_pkg.ja_in_calc_prec_taxes, ln_threshold_tax_cat_id = ' || ln_threshold_tax_cat_id); END IF; jai_cmn_tax_defaultation_pkg.ja_in_calc_prec_taxes('AR_LINES', v_tax_category_id, v_header_id, rec.customer_trx_line_id, v_price_list_val, v_line_tax_amount, rec.inventory_item_id, NVL(rec.quantity, 0), rec.unit_code, NULL, NULL, v_converted_rate, v_creation_date, v_created_by, v_last_update_date, v_last_updated_by, v_last_update_login, null, ln_vat_assessable_value, p_thhold_cat_base_tax_typ => jai_constants.tax_type_tcs, p_threshold_tax_cat_id => ln_threshold_tax_cat_id, p_source_trx_type => null, p_source_table_name => null, p_action => jai_constants.default_taxes); IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'Returned from jai_cmn_tax_defaultation_pkg.ja_in_calc_prec_taxes'); END IF; END IF; v_service_type := JAI_AR_RCTLA_TRIGGER_PKG.get_service_type(v_customer_id, v_ship_to_site_use_id, 'C'); OPEN c_jai_ar_trx_lines(rec.customer_trx_line_id); FETCH c_jai_ar_trx_lines INTO t_jai_line_rec_old; CLOSE c_jai_ar_trx_lines; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'Updating JAI_AR_TRX_LINES with v_line_tax_amount = ' || v_line_tax_amount); END IF; UPDATE JAI_AR_TRX_LINES SET tax_category_id = v_tax_category_id, service_type_code = v_service_type, assessable_value = nvl(v_price_list, 0), vat_assessable_value = ln_vat_assessable_value, tax_amount = v_line_tax_amount, total_amount = nvl(rec.line_amount, 0) + v_line_tax_amount, last_update_date = v_last_update_date, last_updated_by = v_last_updated_by, last_update_login = v_last_update_login WHERE Customer_Trx_Line_ID = rec.customer_trx_line_id; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, SQL%ROWCOUNT || ' rows updated in JAI_AR_TRX_LINES');END IF; OPEN c_jai_ar_trx_lines(rec.customer_trx_line_id); FETCH c_jai_ar_trx_lines INTO t_jai_line_rec_new; CLOSE c_jai_ar_trx_lines; lv_action := JAI_CONSTANTS.UPDATING; IF (((t_jai_line_rec_new.AUTO_INVOICE_FLAG 'Y' AND t_jai_line_rec_old.AUTO_INVOICE_FLAG 'Y') AND (t_jai_line_rec_new.Excise_Invoice_No IS NULL) AND (t_jai_line_rec_new.payment_Register IS NULL) AND (t_jai_line_rec_new.Excise_Invoice_Date IS NULL)) OR (t_jai_line_rec_new.Customer_Trx_Id t_jai_line_rec_old.Customer_Trx_Id)) THEN IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'Calling JAI_AR_TAX_LINES_PKG.POPULATE_TAX_LINES_WRAPPER');END IF; JAI_AR_TAX_LINES_PKG.POPULATE_TAX_LINES_WRAPPER(pr_old => t_jai_line_rec_old, pr_new => t_jai_line_rec_new, pv_action => lv_action, pv_return_code => lv_return_code, pv_return_message => lv_return_message); IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'Returned from JAI_AR_TAX_LINES_PKG.POPULATE_TAX_LINES_WRAPPER');END IF;IF lv_return_code jai_constants.successful then RAISE le_error; END IF; END IF; END LOOP; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, G_PACKAGE_NAME || ':' || lv_api_name || '.END()-'); END IF; EXCEPTION WHEN OTHERS THEN Pv_return_code := jai_constants.unexpected_error; Pv_return_message := 'Encountered an error in JAI_AR_RCTA_TRIGGER_PKG.ARI_T7 ' || substr(sqlerrm, 1, 1900); END RECALCULATE_TAX; --DELETING PROCEDURE DELETE_AR_TRXS(pr_old t_jai_rec%type, pv_action varchar2, pv_return_code out NOCOPY varchar2, pv_return_message out NOCOPY varchar2) IS lv_api_name CONSTANT VARCHAR2(100) := 'DELETE_AR_TRXS'; lv_debug_info VARCHAR2(4000); BEGIN IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, G_PACKAGE_NAME || ':' || lv_api_name || '.BEGIN()+'); END IF; DELETE JAI_AR_TRXS WHERE customer_trx_id = pr_old.customer_trx_id; pv_return_message := ''; pv_return_code := jai_constants.successful; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, G_PACKAGE_NAME || ':' || lv_api_name || '.END()-'); END IF; EXCEPTION when others then Pv_return_message := 'Encountered an error in ' || G_MODULE_NAME || '.' || lv_api_name || ':' || substr(sqlerrm, 1, 1900); pv_return_code := jai_constants.unexpected_error; END DELETE_AR_TRXS; --COMPLETING PROCEDURE GENERATE_VAT_INVOICE_NUMBER(pr_old t_jai_rec%type, pr_new t_rec%type, pv_action varchar2, pv_return_code out NOCOPY varchar2, pv_return_message out NOCOPY varchar2) IS lv_api_name CONSTANT VARCHAR2(100) := 'GENERATE_VAT_INVOICE_NUMBER'; lv_debug_info VARCHAR2(4000); v_vat_start_num JAI_CMN_INVENTORY_ORGS.current_number%Type; v_vat_jump_by JAI_CMN_INVENTORY_ORGS.jump_by%type; v_vat_prefix JAI_CMN_INVENTORY_ORGS.prefix%type; v_vat_invoice_no JAI_AR_TRXS.tax_invoice_no%type; v_vat_reg_no JAI_CMN_INVENTORY_ORGS.vat_reg_no%type; v_organization_id Number; v_loc_id Number; v_vat_taxes_exist Number; v_trans_type VARCHAR2(30); v_loc_vat_inv_no JAI_AR_TRXS.tax_invoice_no%type; CURSOR organization_cur IS SELECT organization_id, location_id FROM JAI_AR_TRXS where customer_trx_id = pr_new.customer_trx_id; CURSOR C_VAT_INVOICE_CUR IS SELECT TAX_INVOICE_NO FROM JAI_AR_TRXS WHERE Customer_Trx_Id = pr_new.customer_trx_id; cursor c_vat_taxes_exist is select 1 from JAI_AR_TRX_TAX_LINES where link_to_cust_trx_line_id in (select customer_trx_line_id from JAI_AR_TRX_LINES where customer_trx_id = pr_new.customer_trx_id) and tax_id in (select tax_id from JAI_CMN_TAXES_ALL where vat_flag = 'Y' and org_id = pr_new.org_id); CURSOR transaction_type_cur IS SELECT TYPE FROM RA_CUST_TRX_TYPES_ALL WHERE cust_trx_type_id = pr_new.cust_trx_type_id AND NVL(org_id, 0) = NVL(pr_new.org_id, 0); Procedure Generate_Tax_Invoice_no(p_organization_id Number, p_loc_id Number) is Cursor c_get_vat_reg_no is select vat_reg_no from JAI_CMN_INVENTORY_ORGS where organization_id = p_organization_id and location_id = p_loc_id; cursor c_get_vat_invoice_no is select current_number, jump_by, prefix from JAI_CMN_INVENTORY_ORGS where organization_id = p_organization_id and location_id = p_loc_id; --Added by Zhiwei for JAI Trigger elimination begin --------------------------------------------------------- cursor c_get_rec(cn_customer_trx_id number) is select * from jai_ar_trxs where customer_trx_id = cn_customer_trx_id; t_rec_new jai_ar_trxs%rowtype; t_rec_old jai_ar_trxs%rowtype; lv_action VARCHAR2(20); lv_return_message VARCHAR2(2000); lv_return_code VARCHAR2(100); le_error EXCEPTION; --------------------------------------------------------- --Added by Zhiwei for JAI Trigger elimination end Begin jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','Generate_Tax_Invoice_no begin '); open c_get_vat_reg_no; fetch c_get_vat_reg_no into v_vat_reg_no; close c_get_vat_reg_no; if v_vat_reg_no is null then return; end if; update JAI_CMN_INVENTORY_ORGS set last_update_date = last_update_date where vat_reg_no = v_vat_reg_no; Open c_get_vat_invoice_no; Fetch c_get_vat_invoice_no into v_vat_start_num, v_vat_jump_by, v_vat_prefix; close c_get_vat_invoice_no; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'v_vat_reg_no = ' || v_vat_reg_no || ', v_vat_start_num = ' || v_vat_start_num || ', v_vat_jump_by = ' || v_vat_jump_by || ', v_vat_prefix = ' || v_vat_prefix); END IF; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','Generate_Tax_Invoice_no v_vat_start_num '||v_vat_start_num||', v_vat_jump_by '||v_vat_jump_by); v_vat_start_num := NVL(v_vat_start_num, 0) + NVL(v_vat_jump_by, 1); if v_vat_prefix is not null then v_vat_invoice_no := v_vat_prefix || '/' || v_vat_start_num; else v_vat_invoice_no := v_vat_start_num; end if; --Added by Qinglei for JAI Trigger elimination begin --------------------------------------------------------- open c_get_rec(pr_new.customer_trx_id); fetch c_get_rec into t_rec_old; close c_get_rec; --------------------------------------------------------- --Added by Qinglei for JAI Trigger elimination end jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','Generate_Tax_Invoice_no before update jai_ar_trxs pr_new.customer_trx_id '||pr_new.customer_trx_id); update JAI_AR_TRXS set tax_invoice_no = v_vat_invoice_no where customer_trx_id = pr_new.customer_trx_id; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','Generate_Tax_Invoice_no no of rows updated '||sql%rowcount); IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, SQL%ROWCOUNT || ' rows updated in JAI_AR_TRXS with v_vat_invoice_no = ' || v_vat_invoice_no);END IF; --Added by Qinglei for JAI Trigger elimination begin --------------------------------------------------------- open c_get_rec(pr_new.customer_trx_id); fetch c_get_rec into t_rec_new; close c_get_rec; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','Generate_Tax_Invoice_no t_rec_new.once_completed_flag '||t_rec_new.once_completed_flag); if (t_rec_new.once_completed_flag = 'Y') then lv_action := jai_constants.updating; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','Generate_Tax_Invoice_no before update JAI_AR_TRXS_PKG.UPDATE_EXCISE_REGISTERS '); JAI_AR_TRXS_PKG.UPDATE_EXCISE_REGISTERS(pr_old => t_rec_old, pr_new => t_rec_new, pv_action => lv_action, pv_return_code => lv_return_code, pv_return_message => lv_return_message);jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','Generate_Tax_Invoice_no 1524 after update JAI_AR_TRXS_PKG.UPDATE_EXCISE_REGISTERS '); IF lv_return_code jai_constants.successful then RAISE le_error; END IF; end if; --------------------------------------------------------- --Added by Qinglei for JAI Trigger elimination end update JAI_CMN_INVENTORY_ORGS set current_number = NVL(v_vat_start_num, 0), prefix = v_vat_prefix, jump_by = v_vat_jump_by where vat_Reg_no = v_vat_reg_no; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','Generate_Tax_Invoice_no 15399 no of rows update in JAI_CMN_INVENTORY_ORGS are '||sql%rowcount); End; BEGIN jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','GENERATE_VAT_INVOICE_NUMBER procedure begin '); IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, G_PACKAGE_NAME || ':' || lv_api_name || '.BEGIN()+'); END IF; pv_return_code := jai_constants.successful; Open C_VAT_INVOICE_CUR; Fetch C_VAT_INVOICE_CUR into v_loc_vat_inv_no; close C_VAT_INVOICE_CUR; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','GENERATE_VAT_INVOICE_NUMBER 1557 v_loc_vat_inv_no '||v_loc_vat_inv_no); if v_loc_vat_inv_no is not null then return; end if; OPEN transaction_type_cur; FETCH transaction_type_cur INTO v_trans_type; CLOSE transaction_type_cur; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','GENERATE_VAT_INVOICE_NUMBER 1567 v_trans_type '||v_trans_type); IF NVL(v_trans_type, 'N') 'INV' THEN RETURN; END IF; OPEN organization_cur; FETCH organization_cur INTO v_organization_id, v_loc_id; CLOSE organization_cur; Open c_vat_taxes_exist; Fetch c_vat_taxes_exist into v_vat_taxes_exist; Close c_vat_taxes_exist; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','GENERATE_VAT_INVOICE_NUMBER 1582 v_vat_taxes_exist '||v_vat_taxes_exist||', v_organization_id '||v_organization_id|| ', v_loc_id '||v_loc_id); if v_vat_taxes_exist = 1 then Generate_Tax_Invoice_no(v_organization_id, v_loc_id); end if; IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, G_PACKAGE_NAME || ':' || lv_api_name || '.END()-'); END IF;jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','GENERATE_VAT_INVOICE_NUMBER end of procedure '); EXCEPTION WHEN OTHERS THEN Pv_return_code := jai_constants.unexpected_error; Pv_return_message := 'Encountered an error in JAI_AR_RCTA_TRIGGER_PKG.ARU_T1 ' || substr(sqlerrm, 1, 1900); END GENERATE_VAT_INVOICE_NUMBER; PROCEDURE VAT_ACCOUNTING(pr_old t_jai_rec%type, pr_new t_rec%type, pv_action varchar2, pv_return_code out NOCOPY varchar2, pv_return_message out NOCOPY varchar2) IS lv_api_name CONSTANT VARCHAR2(100) := 'VAT_ACCOUNTING_FOR_CM'; lv_debug_info VARCHAR2(4000); v_organization_id NUMBER; v_loc_id NUMBER; v_trans_type RA_CUST_TRX_TYPES_ALL.TYPE%TYPE; lv_vat_invoice_no JAI_AR_TRXS.VAT_INVOICE_NO%TYPE; ln_regime_id JAI_RGM_DEFINITIONS.REGIME_ID%TYPE; ln_regime_code JAI_RGM_DEFINITIONS.REGIME_CODE%TYPE; lv_process_flag VARCHAR2(10); lv_process_message VARCHAR2(4000); ld_gl_date RA_CUST_TRX_LINE_GL_DIST_ALL.GL_DATE%TYPE; ld_vat_invoice_date JAI_AR_TRXS.VAT_INVOICE_DATE%TYPE; CURSOR organization_cur IS SELECT organization_id, location_id, vat_invoice_no, vat_invoice_date FROM JAI_AR_TRXS WHERE customer_trx_id = pr_new.customer_trx_id; CURSOR transaction_type_cur IS SELECT type FROM ra_cust_trx_types_all WHERE cust_trx_type_id = pr_new.cust_trx_type_id AND NVL(org_id, 0) = NVL(pr_new.org_id, 0); CURSOR cur_vat_taxes_exist IS SELECT regime_id, regime_code FROM JAI_AR_TRX_TAX_LINES jcttl, JAI_AR_TRX_LINES jctl, JAI_CMN_TAXES_ALL jtc, jai_regime_tax_types_v jrttv WHERE jcttl.link_to_cust_trx_line_id = jctl.customer_trx_line_id AND jctl.customer_trx_id = pr_new.customer_trx_id AND jcttl.tax_id = jtc.tax_id AND jtc.tax_type = jrttv.tax_type AND regime_code = jai_constants.vat_regime AND jtc.org_id = pr_new.org_id; CURSOR cur_get_gl_date(cp_acct_class ra_cust_trx_line_gl_dist_all.account_class%type) IS SELECT gl_date FROM ra_cust_trx_line_gl_dist_all WHERE customer_trx_id = pr_new.customer_trx_id AND account_class = cp_acct_class AND latest_rec_flag = 'Y'; CURSOR cur_get_in_vat_no IS SELECT vat_invoice_no FROM JAI_AR_TRXS WHERE customer_trx_id = pr_new.previous_customer_trx_id; CURSOR c_chk_vat_reversal(cp_tax_type jai_cmn_taxes_all.tax_type%TYPE) IS SELECT 1 FROM JAI_AR_TRX_TAX_LINES jcttl, JAI_AR_TRX_LINES jctl, JAI_CMN_TAXES_ALL jtc WHERE jcttl.link_to_cust_trx_line_id = jctl.customer_trx_line_id AND jctl.customer_trx_id = pr_new.customer_trx_id AND jcttl.tax_id = jtc.tax_id AND jtc.org_id = pr_new.org_id AND jtc.tax_type = cp_tax_type; lv_vat_reversal VARCHAR2(30); ln_vat_reversal_exists NUMBER; CURSOR c_get_regime_id IS SELECT regime_id FROM jai_regime_tax_types_v WHERE regime_code = jai_constants.vat_regime AND rownum = 1; cursor c_get_rec(cn_customer_trx_id number) is select * from jai_ar_trxs where customer_trx_id = cn_customer_trx_id; t_rec_new jai_ar_trxs%rowtype; t_rec_old jai_ar_trxs%rowtype; lv_action VARCHAR2(20); lv_return_message VARCHAR2(2000); lv_return_code VARCHAR2(100); le_error EXCEPTION;BEGINjai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','begin of PROCEDURE VAT_ACCOUNTING 1664 '); IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, G_PACKAGE_NAME || ':' || lv_api_name || '.BEGIN()+'); END IF; pv_return_code := jai_constants.successful; OPEN organization_cur; FETCH organization_cur INTO v_organization_id, v_loc_id, lv_vat_invoice_no, ld_vat_invoice_date; CLOSE organization_cur;jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','PROCEDURE VAT_ACCOUNTING 1680 lv_vat_invoice_no '||lv_vat_invoice_no||', ld_vat_invoice_date '||ld_vat_invoice_date); IF lv_vat_invoice_no IS NOT NULL OR ld_vat_invoice_date IS NOT NULL THENjai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','PROCEDURE VAT_ACCOUNTING 1682 return '); return; END IF; OPEN transaction_type_cur; FETCH transaction_type_cur INTO v_trans_type; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','PROCEDURE VAT_ACCOUNTING 1689 v_trans_type '||v_trans_type); CLOSE transaction_type_cur; IF NVL(v_trans_type, 'N') 'CM' THENjai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','PROCEDURE VAT_ACCOUNTING 1693 before return '); return; END IF; OPEN cur_vat_taxes_exist; FETCH cur_vat_taxes_exist into ln_regime_id, ln_regime_code; CLOSE cur_vat_taxes_exist; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','PROCEDURE VAT_ACCOUNTING 1702 ln_regime_code '||ln_regime_code); IF UPPER(nvl(ln_regime_code, '####')) UPPER(jai_constants.vat_regime) THEN jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','PROCEDURE VAT_ACCOUNTING 1705 before return '); return; END IF; IF ln_regime_id IS NULL THEN lv_vat_reversal := 'VAT REVERSAL'; OPEN c_chk_vat_reversal(lv_vat_reversal); FETCH c_chk_vat_reversal INTO ln_vat_reversal_exists; CLOSE c_chk_vat_reversal; IF ln_vat_reversal_exists = 1 THEN OPEN c_get_regime_id; FETCH c_get_regime_id INTO ln_regime_id; CLOSE c_get_regime_id; IF ln_regime_id IS NOT NULL THEN ln_regime_code := jai_constants.vat_regime; END IF; END IF; END IF; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','PROCEDURE VAT_ACCOUNTING 1728 pr_new.previous_customer_trx_id '||pr_new.previous_customer_trx_id); IF pr_new.previous_customer_trx_id is NOT NULL THEN OPEN cur_get_in_vat_no; FETCH cur_get_in_vat_no INTO lv_vat_invoice_no;jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','PROCEDURE VAT_ACCOUNTING 1733 lv_vat_invoice_no '||lv_vat_invoice_no); CLOSE cur_get_in_vat_no; END IF; OPEN cur_get_gl_date('REC'); FETCH cur_get_gl_date INTO ld_gl_date; CLOSE cur_get_gl_date;IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'Calling jai_cmn_rgm_vat_accnt_pkg.process_order_invoice with parameters as. ln_regime_id = ' || ln_regime_id || ',v_organization_id = ' || v_organization_id || ',v_loc_id = ' || v_loc_id || ',v_trans_type = ' || v_trans_type || ',lv_vat_invoice_no = ' || lv_vat_invoice_no);END IF; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','vat accouting before call to JAI_CMN_RGM_VAT_ACCNT_PKG.process_order_invoice ln_regime_id '||ln_regime_id|| ', v_organization_id '||v_organization_id|| ', v_loc_id '||v_loc_id|| ', pr_new.customer_trx_id '||pr_new.customer_trx_id|| ', v_trans_type '||v_trans_type|| ', lv_vat_invoice_no '||lv_vat_invoice_no|| ', ld_gl_date '||ld_gl_date); jai_cmn_rgm_vat_accnt_pkg.process_order_invoice(p_regime_id => ln_regime_id, p_source => jai_constants.source_ar, p_organization_id => v_organization_id, p_location_id => v_loc_id, p_delivery_id => NULL, p_customer_trx_id => pr_new.customer_trx_id, p_transaction_type => v_trans_type, p_vat_invoice_no => lv_vat_invoice_no, p_default_invoice_date => nvl(ld_gl_date, pr_new.trx_date), p_batch_id => NULL, p_called_from => 'JA_IN_LOC_AR_HDR_UPD_TRG_VAT', /* The string 'JA_IN_LOC_AR_HDR_UPD_TRG_VAT' is also being used in jai_cmn_rgm_vat_accnt_pkg.process_order_invoice*/ p_debug => jai_constants.no, p_process_flag => lv_process_flag, p_process_message => lv_process_message); IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, 'Returned from jai_cmn_rgm_vat_accnt_pkg.process_order_invoice'); END IF; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','vat accouting after the call JAI_CMN_RGM_VAT_ACCNT_PKG.process_order_invoice ');IF lv_process_flag = jai_constants.expected_error OR lv_process_flag = jai_constants.unexpected_error THEN pv_return_code := jai_constants.expected_error; pv_return_message := lv_process_message; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','vat accouting before return '); return; END IF; --Added by Zhiwei for JAI Trigger elimination begin --------------------------------------------------------- open c_get_rec(pr_new.customer_trx_id); fetch c_get_rec into t_rec_old; close c_get_rec; --------------------------------------------------------- --Added by Zhiwei for JAI Trigger elimination end jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','vat accouting before UPDATE JAI_AR_TRXS '); UPDATE JAI_AR_TRXS SET vat_invoice_no = lv_vat_invoice_no, vat_invoice_date = nvl(ld_gl_date, pr_new.trx_date) WHERE customer_trx_id = pr_new.customer_trx_id; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','vat accouting no of rows updated sql%rowcount '||sql%rowcount); --Added by Zhiwei for JAI Trigger elimination begin --------------------------------------------------------- open c_get_rec(pr_new.customer_trx_id); fetch c_get_rec into t_rec_new; close c_get_rec; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','vat accouting t_rec_new.once_completed_flag '||t_rec_new.once_completed_flag); if (t_rec_new.once_completed_flag = 'Y') then lv_action := jai_constants.updating; jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','vat accouting before call to JAI_AR_TRXS_PKG.UPDATE_EXCISE_REGISTERS '); JAI_AR_TRXS_PKG.UPDATE_EXCISE_REGISTERS(pr_old => t_rec_old, pr_new => t_rec_new, pv_action => lv_action, pv_return_code => lv_return_code, pv_return_message => lv_return_message);jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','vat accouting after call to JAI_AR_TRXS_PKG.UPDATE_EXCISE_REGISTERS '); IF lv_return_code jai_constants.successful then RAISE le_error; END IF; end if; --------------------------------------------------------- --Added by Zhiwei for JAI Trigger elimination end IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME || lv_api_name, G_PACKAGE_NAME || ':' || lv_api_name || '.END()-'); END IF;jai_cmn_utils_pkg.write_fnd_log_msg('JAI_AR_TRX_HEADERS_PKG','vat accouting end of vat accouting 1787'); EXCEPTION WHEN OTHERS THEN Pv_return_code := jai_constants.unexpected_error; Pv_return_message := 'Encountered an error in JAI_AR_RCTA_TRIGGER_PKG.ARU_T3 ' || substr(sqlerrm, 1, 1900); END VAT_ACCOUNTING; PROCEDURE PROCESS_EXCISE_TAXES(pr_old t_jai_rec%type, pr_new t_rec%type, pv_action varchar2, pv_return_code out NOCOPY varchar2, pv_return_message out NOCOPY varchar2) IS lv_api_name CONSTANT VARCHAR2(100) := 'VAT_ACCOUNTING_FOR_CM'; lv_debug_info VARCHAR2(4000); v_org_id NUMBER; v_loc_id NUMBER; v_reg_code VARCHAR2(30); v_update_rg VARCHAR2(1); v_reg_type VARCHAR2(10); v_excise_paid_register VARCHAR2(10); v_rg23a_type VARCHAR2(10); v_rg23c_type VARCHAR2(10); v_complete_flag VARCHAR2(1); v_rg_flag VARCHAR2(1); v_update_rg_flag VARCHAR2(1); v_tax_amount NUMBER := 0; v_rg23a_tax_amount NUMBER := 0; v_rg23c_tax_amount NUMBER := 0; v_other_tax_amount NUMBER := 0; v_basic_ed NUMBER := 0; v_additional_ed NUMBER := 0; v_other_ed NUMBER := 0; v_item_class VARCHAR2(10); v_excise_flag VARCHAR2(1); v_fin_year NUMBER; v_gp_1 NUMBER := 0; v_gp_2 NUMBER := 0; v_rg23a_bal NUMBER := 0; v_rg23c_bal NUMBER := 0; v_pla_bal NUMBER := 0; v_invoice_no VARCHAR2(200); v_other_invoice_no NUMBER; v_rg23a_invoice_no NUMBER; v_rg23c_invoice_no NUMBER; rg23a NUMBER := 0; rg23c NUMBER := 0; pla NUMBER := 0; v_parent_trx_number VARCHAR2(20); v_register_balance NUMBER := 0; v_rg23d_register_balance NUMBER := 0; v_customer_trx_id NUMBER; v_converted_rate NUMBER := 1; v_ssi_unit_flag VARCHAR2(1); v_trans_type VARCHAR2(30); v_last_update_date DATE; v_last_updated_by NUMBER; v_creation_date DATE; v_created_by NUMBER; v_last_update_login NUMBER; v_bond_tax_amount NUMBER := 0; V_rg23d_tax_amount NUMBER := 0; v_modvat_tax_rate NUMBER; v_exempt_bal NUMBER; v_matched_qty NUMBER; VSQLERRM VARCHAR2(240); v_trans_type_up VARCHAR2(3); v_order_invoice_type_up VARCHAR2(25); v_register_code_up VARCHAR2(25); v_errbuf VARCHAR2(250); v_register_id JAI_OM_OE_BOND_REG_HDRS.register_id%type; v_register_exp_date JAI_OM_OE_BOND_REG_HDRS.bond_expiry_date%type; v_lou_flag JAI_OM_OE_BOND_REG_HDRS.lou_flag%type; v_trading_flag JAI_CMN_INVENTORY_ORGS.TRADING%TYPE; v_update_rg23d_flag JAI_AR_TRXS.UPDATE_RG23D_FLAG%TYPE; CURSOR complete_cur IS SELECT organization_id, location_id, once_completed_flag, decode(once_completed_flag, 'A', 'RG23A', 'C', 'RG23C', 'P', 'PLA') register_type, update_rg_flag, nvl(update_rg23d_flag, 'N') FROM JAI_AR_TRXS WHERE customer_trx_id = v_customer_trx_id; CURSOR REG_BALANCE_CUR(p_org_id IN NUMBER, p_loc_id IN NUMBER) IS SELECT NVL(rg23a_balance, 0) rg23a_balance, NVL(rg23c_balance, 0) rg23c_balance, NVL(pla_balance, 0) pla_balance FROM JAI_CMN_RG_BALANCES WHERE organization_id = p_org_id AND location_id = p_loc_id; CURSOR register_code_cur(p_org_id IN NUMBER, p_loc_id IN NUMBER) IS SELECT register_code FROM JAI_OM_OE_BOND_REG_HDRS WHERE organization_id = p_org_id AND location_id = p_loc_id AND register_id IN (SELECT register_id FROM JAI_OM_OE_BOND_REG_DTLS WHERE order_type_id = pr_new.batch_source_id AND order_flag = 'N'); CURSOR fin_year_cur(p_org_id IN NUMBER) IS SELECT MAX(A.fin_year) FROM JAI_CMN_FIN_YEARS A WHERE organization_id = p_org_id AND fin_active_flag = 'Y'; CURSOR tax_amount_cur IS SELECT NVL(tax_amount, 0) tax_amount FROM JAI_AR_TRXS WHERE customer_trx_id = v_customer_trx_id; CURSOR preference_reg_cur(p_org_id IN NUMBER, p_loc_id IN NUMBER) IS SELECT pref_rg23a, pref_rg23c, pref_pla FROM JAI_CMN_INVENTORY_ORGS WHERE organization_id = p_org_id AND location_id = p_loc_id; CURSOR item_class_cur(P_ORG_ID IN NUMBER, P_Item_id IN NUMBER) IS SELECT item_class, excise_flag FROM JAI_INV_ITM_SETUPS WHERE inventory_item_id = P_Item_Id AND ORGANIZATION_ID = P_ORG_ID; CURSOR organization_cur IS SELECT organization_id, location_id FROM JAI_AR_TRXS WHERE trx_number = v_parent_trx_number; CURSOR register_balance_cur(p_org_id IN NUMBER, p_loc_id IN NUMBER) IS SELECT NVL(register_balance, 0)