DBA Data[Home] [Help]

PACKAGE BODY: APPS.JAI_AR_CR_TRIGGER_PKG

Source


1 PACKAGE BODY jai_ar_cr_trigger_pkg AS
2 /* $Header: jai_arcr_trg_pkg.plb 120.3 2012/01/20 10:17:38 qioliu ship $ */
3 
4 	PROCEDURE ARI_T1 	(pr_old 	IN	t_rec%type ,
5 				 pr_new 	IN	t_rec%type ,
6 				 pv_action 	IN	VARCHAR2 ,
7 				 pv_return_code OUT NOCOPY VARCHAR2 ,
8 				 pv_return_message OUT NOCOPY VARCHAR2 )
9 	IS
10 
11 	CURSOR C_CURRENT_SID
12 	IS
13 	SELECT	JAI_AR_CASH_RECEIPTS_S1.CURRVAL
14 	FROM DUAL;
15 
16 	CURSOR C_CHECK_TMP_DATA(PN_TEMP_SEQUENCE_ID	NUMBER)
17 	IS
18 	SELECT	LOC_CASH_RECEIPT_ID,
19 		RECEIPT_AMOUNT,
20 		CUSTOMER_ID,
21 		CONFIRM_FLAG,
22 		CURRENCY_CODE,
23 		EXCHANGE_RATE
24 	FROM 	JAI_AR_CASH_RECEIPTS_ALL
25 	WHERE 	TEMP_SEQUENCE_ID = PN_TEMP_SEQUENCE_ID
26 	AND 	CASH_RECEIPT_ID IS NULL;
27 
28 	r_check_tmp_data	c_check_tmp_data%ROWTYPE;
29 	ln_session_id		NUMBER;
30 	lv_process_flag		VARCHAR2(2);
31 	lv_process_message 	VARCHAR2(1000);
32 
33   /*Added by Qinglei for the Advanced Receipt for Service Tax enhancement Bug 13361952 Begin*/
34   CURSOR c_get_regime_code (cp_receipt_method_id NUMBER)
35 	 IS
36 	   SELECT b.regime_code
37 	     FROM JAI_RGM_REGISTRATIONS a,
38 	          JAI_RGM_DEFINITIONS b
39 	     WHERE a.attribute_code = 'AR_RECEIPT_CLASS'
40 	     AND   a.registration_type = 'OTHERS'
41 	     AND   a.attribute_type_code = 'OTHERS'
42 	     AND   a.regime_id = b.regime_id
43 	     AND a.attribute_value IN
44 	   (SELECT r_class.name
45 	      FROM ar_receipt_classes r_class,
46 	           ar_receipt_methods r_method
47 	      WHERE r_class.receipt_class_id = r_method.receipt_class_id
48 	        AND r_method.receipt_method_id = cp_receipt_method_id
49 	    );
50 	 lv_regime_code varchar2(50);
51    /*Added by Qinglei for the Advanced Receipt for Service Tax enhancement Bug 13361952 End*/
52 
53 	BEGIN
54 		pv_return_code := jai_constants.successful;
55 
56 		BEGIN
57 			OPEN c_current_sid;
58 			FETCH c_current_sid INTO ln_session_id;
59 			CLOSE c_current_sid;
60 		EXCEPTION
61 			WHEN OTHERS THEN
62 				NULL;
63 		END;
64 
65 		OPEN c_check_tmp_data(ln_session_id);
66 		FETCH c_check_tmp_data INTO r_check_tmp_data;
67 		CLOSE c_check_tmp_data;
68 
69     OPEN c_get_regime_code(pr_new.receipt_method_id);
70     FETCH c_get_regime_code INTO lv_regime_code;
71     CLOSE c_get_regime_code;
72 
73 		IF r_check_tmp_data.loc_cash_receipt_id IS NOT NULL THEN
74 
75 			IF r_check_tmp_data.receipt_amount <> pr_new.amount OR
76 					r_check_tmp_data.customer_id <> pr_new.pay_from_customer OR
77 					r_check_tmp_data.currency_code <> pr_new.currency_code OR
78 					r_check_tmp_data.exchange_rate <> pr_new.exchange_rate
79 			THEN
80 				--raise_application_error(-20010,'Either of Receipt Amount or customer details or currency details are changed. Delete the record using Zoom function');
81 				pv_return_code 		:= jai_constants.expected_error;
82 				pv_return_message := 'Either of Receipt Amount or customer details or currency details are changed. Delete the record using Tools Menu';
83 				return;
84 			END IF;
85 
86 			UPDATE	jai_ar_cash_receipts_all
87 			SET 		cash_receipt_id = pr_new.cash_receipt_id,
88 							temp_sequence_id = NULL
89 			WHERE 	loc_cash_receipt_id = r_check_tmp_data.loc_cash_receipt_id;
90 
91 			UPDATE	jai_cmn_document_taxes
92 			SET 		source_doc_id = pr_new.cash_receipt_id,
93 							source_doc_line_id = NULL
94 			WHERE 	source_doc_line_id = r_check_tmp_data.loc_cash_receipt_id
95 			AND 		source_table_name = 'JAI_AR_CASH_RECEIPTS_ALL';
96 
97 			IF r_check_tmp_data.confirm_flag = 'Y' THEN
98 				jai_ar_cr_pkg.process_cm_dm(
99 												p_event							=>	jai_constants.trx_type_adv_rcpts,--Changed by Qiong from ar_cash_tax_confirmed to trx_type_adv_rcpts for bug13569249
100 												p_new								=>	pr_new,
101 												p_old								=> 	pr_old,
102 												p_process_flag			=> 	lv_process_flag,
103 												p_process_message 	=> 	lv_process_message);
104 
105 				IF NVL(lv_process_flag,'XX') <> jai_constants.successful THEN
106 					--raise_application_error(-20011,	lv_process_message);
107 					pv_return_code 		:= jai_constants.expected_error;
108 					pv_return_message := lv_process_message;
109 					return;
110 				END IF;
111 
112 
113 			END IF;
114 
115 		ELSIF r_check_tmp_data.loc_cash_receipt_id IS NULL AND upper(nvl(lv_regime_code,'####')) = 'TCS' THEN
116     --Added by Qinglei for the Advanced Receipt for Service Tax enhancement Bug 13361952
117 			--raise_application_error(-20010,'First process the taxes using Zoom function and then save the form');
118 			pv_return_code 		:= jai_constants.expected_error;
119 			pv_return_message := 'First process the taxes using Tools Menu and then save the form';
120 			return;
121 		END IF;
122 	EXCEPTION
123 	   WHEN OTHERS THEN
124 	     pv_return_code     :=  jai_constants.unexpected_error;
125 	     pv_return_message  := 'Encountered an error in jai_ar_cash_receipts_trg_pkg.ARI_T1 '  || substr(sqlerrm,1,1900);
126 
127 	END ARI_T1;
128 
129 
130 	PROCEDURE ARU_T1 (pr_old		IN	t_rec%type ,
131 			  pr_new 		IN	t_rec%type ,
132 			  pv_action 		IN	VARCHAR2 ,
133 			  pv_return_code 	OUT NOCOPY VARCHAR2 ,
134 			  pv_return_message 	OUT NOCOPY VARCHAR2 )
135 	IS
136 
137 	CURSOR c_ar_cash_receipts(cp_cash_receipt_id	NUMBER)
138 	IS
139 	SELECT	confirm_flag
140 	FROM 		jai_ar_cash_receipts_all
141 	WHERE 	cash_receipt_id = cp_cash_receipt_id;
142 
143 	r_ar_cash_receipts	c_ar_cash_receipts%ROWTYPE;
144 	lv_process_flag			VARCHAR2(2);
145 	lv_process_message 	VARCHAR2(1000);
146 
147 	BEGIN
148 		OPEN c_ar_cash_receipts(pr_old.cash_receipt_id);
149 		FETCH c_ar_cash_receipts INTO r_ar_cash_receipts;
150 		CLOSE c_ar_cash_receipts;
151 
152 		IF pr_old.amount <> pr_new.amount OR
153 			 pr_old.pay_from_customer <> pr_new.pay_from_customer OR
154 			 pr_old.reversal_date IS NULL AND pr_new.reversal_date is NOT NULL THEN
155 
156 			IF NVL(r_ar_cash_receipts.confirm_flag,'N') IN ('N','I') THEN
157 
158 				DELETE 	jai_cmn_document_taxes
159 				WHERE 	source_table_name = 'JAI_AR_CASH_RECEIPTS_ALL'
160 				AND 		source_doc_id = pr_old.cash_receipt_id;
161 
162 				DELETE 	jai_ar_cash_receipts_all
163 				WHERE 	cash_receipt_id = pr_old.cash_receipt_id;
164 			ELSE
165 				IF pr_old.reversal_date IS NULL AND pr_new.reversal_date is NOT NULL THEN
166 
167 					jai_ar_cr_pkg.process_cm_dm(
168 										p_event		=>	jai_constants.trx_type_rct_rvs,
169 										p_new		=>	pr_new,
170 										p_old		=> 	pr_old,
171 										p_process_flag	=> 	lv_process_flag,
172 										p_process_message => 	lv_process_message);
173 
174 					IF NVL(lv_process_flag,'XX') <> jai_constants.successful THEN
175 						--raise_application_error(-20011,	lv_process_message);
176 						pv_return_code 		:= jai_constants.expected_error;
177 						pv_return_message := lv_process_message;
178 						return;
179 					END IF;
180 				ELSE
181 					--raise_application_error(-20011, 'Either receipt amount or customer details are changed. You can''t change these details. Reverse the receipt');
182 					pv_return_code 		:= jai_constants.expected_error;
183 					pv_return_message := 'Either receipt amount or customer details are changed. You can''t change these details. Reverse the receipt';
184 					return;
185 				END IF;
186 			END IF;
187 
188 		ELSE
189 			NULL;
190 		END IF;
191 	EXCEPTION
192 	   WHEN OTHERS THEN
193 	     pv_return_code     :=  jai_constants.unexpected_error;
194 	     pv_return_message  := 'Encountered an error in jai_ar_cash_receipts_trg_pkg.ARU_T1 '  || substr(sqlerrm,1,1900);
195 	END ARU_T1;
196 
197 	PROCEDURE ARD_T1 			 (pr_old 							IN	t_rec%type ,
198 													pr_new 							IN	t_rec%type ,
199 													pv_action 					IN	VARCHAR2 ,
200 													pv_return_code 			OUT NOCOPY VARCHAR2 ,
201 													pv_return_message 	OUT NOCOPY VARCHAR2 )
202 	IS
203 
204 	CURSOR c_ar_cash_receipts(cp_cash_receipt_id	NUMBER)
205 	IS
206 	SELECT	confirm_flag
207 	FROM 		jai_ar_cash_receipts_all
208 	WHERE 	cash_receipt_id = cp_cash_receipt_id;
209 
210 	r_ar_cash_receipts	c_ar_cash_receipts%ROWTYPE;
211 	lv_process_flag			VARCHAR2(2);
212 	lv_process_message 	VARCHAR2(1000);
213 
214 	BEGIN
215 		OPEN c_ar_cash_receipts(pr_old.cash_receipt_id);
216 		FETCH c_ar_cash_receipts INTO r_ar_cash_receipts;
217 		CLOSE c_ar_cash_receipts;
218 
219 		IF NVL(r_ar_cash_receipts.confirm_flag,'N') IN ('N','I') THEN
220 			DELETE 	jai_cmn_document_taxes
221 			WHERE 	source_table_name = 'JAI_AR_CASH_RECEIPTS_ALL'
222 			AND 		source_doc_id = pr_old.cash_receipt_id;
223 
224 			DELETE 	jai_ar_cash_receipts_all
225 			WHERE 	cash_receipt_id = pr_old.cash_receipt_id;
226 		ELSE
227 			--raise_application_error(-20011, 'You can''t delete this receipt. Reverse the receipt');
228 			pv_return_code 		:= jai_constants.expected_error;
229 			pv_return_message := 'You can''t delete this receipt. Reverse the receipt';
230 			return;
231 		END IF;
232 	EXCEPTION
233 	   WHEN OTHERS THEN
234 	     pv_return_code     :=  jai_constants.unexpected_error;
235 	     pv_return_message  := 'Encountered an error in jai_ar_cash_receipts_trg_pkg.ARD_T1 '  || substr(sqlerrm,1,1900);
236 	END ARD_T1;
237 
238 END;
239