DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_BPD_CAP_ADV_MON_PVT

Source


1 PACKAGE BODY OKL_BPD_CAP_ADV_MON_PVT AS
2  /* $Header: OKLRAMSB.pls 120.5 2007/08/02 07:08:50 dcshanmu noship $ */
3 -- Start of wraper code generated automatically by Debug code generator
4   L_MODULE VARCHAR2(40) := 'LEASE.RECEIVABLES.SETUP';
5   L_DEBUG_ENABLED CONSTANT VARCHAR2(10) := OKL_DEBUG_PUB.CHECK_LOG_ENABLED;
6   L_LEVEL_PROCEDURE NUMBER;
7   IS_DEBUG_PROCEDURE_ON BOOLEAN;
8 -- End of wraper code generated automatically by Debug code generator
9 
10 ---------------------------------------------------------------------------
11 -- PROCEDURE handle_advanced_manual_pay
12 ---------------------------------------------------------------------------
13 ---------------------------------------------------------------------------
14   -- Start of comments
15   --
16   -- Procedure Name  : handle_advanced_manual_pay
17   -- Description     : procedure for inserting the records in
18   --                   table OKL_TRX_CSH_RECEIPT_B and OKL_EXT_CSH_RCPTS_B
19   -- Business Rules  :
20   -- Parameters      : p_api_version, p_init_msg_list, x_return_status,
21   --                   x_msg_count, x_msg_data, p_adv_rcpt_rec, x_adv_rcpt_rec.
22   -- Version         : 1.0
23   -- End of comments
24   ---------------------------------------------------------------------------
25 
26 PROCEDURE handle_advanced_manual_pay ( p_api_version		        IN  NUMBER,
27   				                                 p_init_msg_list	       IN  VARCHAR2 DEFAULT Okc_Api.G_FALSE,
28 					                                  x_return_status	       OUT NOCOPY VARCHAR2,
29 				                                   x_msg_count		          OUT NOCOPY NUMBER,
30 				                                   x_msg_data	            OUT NOCOPY VARCHAR2,
31                                        p_adv_rcpt_rec	        IN adv_rcpt_rec,
32 					                                  x_adv_rcpt_rec         OUT NOCOPY adv_rcpt_rec ) IS
33 
34 ---------------------------
35 -- DECLARE Local Variables
36 ---------------------------
37   lp_adv_rcpt_rec			            adv_rcpt_rec := p_adv_rcpt_rec;
38 
39   l_customer_id			              OKL_TRX_CSH_RECEIPT_V.ILE_id%TYPE DEFAULT lp_adv_rcpt_rec.customer_id;
40   l_customer_num		              AR_CASH_RECEIPTS_ALL.PAY_FROM_CUSTOMER%TYPE DEFAULT lp_adv_rcpt_rec.customer_num;
41 
42   l_contract_id			              OKC_K_HEADERS_V.ID%TYPE DEFAULT lp_adv_rcpt_rec.contract_id;
43   l_last_contract_id		   	      OKC_K_HEADERS_V.ID%TYPE DEFAULT 1;
44   l_contract_num		              OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE DEFAULT lp_adv_rcpt_rec.contract_num;
45   l_contract_number_start_date		OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE DEFAULT NULL;
46   l_contract_number_id			       OKC_K_HEADERS_V.ID%TYPE DEFAULT NULL;
47   --
48   l_currency_conv_type			       OKL_TRX_CSH_RECEIPT_V.EXCHANGE_RATE_TYPE%TYPE DEFAULT lp_adv_rcpt_rec.currency_conv_type;
49   l_currency_conv_date			       OKL_TRX_CSH_RECEIPT_V.EXCHANGE_RATE_DATE%TYPE DEFAULT lp_adv_rcpt_rec.currency_conv_date;
50   l_currency_conv_rate		       	OKL_TRX_CSH_RECEIPT_V.EXCHANGE_RATE%TYPE DEFAULT lp_adv_rcpt_rec.currency_conv_rate;
51   --
52   l_conversion_rate			          GL_DAILY_RATES_V.CONVERSION_RATE%TYPE DEFAULT 0;
53   l_functional_conversion_rate		GL_DAILY_RATES_V.CONVERSION_RATE%TYPE DEFAULT 0;
54   l_inverse_conversion_rate		   GL_DAILY_RATES_V.INVERSE_CONVERSION_RATE%TYPE DEFAULT 0;
55   l_functional_currency		      	OKL_TRX_CSH_RECEIPT_V.CURRENCY_CODE%TYPE DEFAULT NULL;
56   l_invoice_currency_code		     OKL_TRX_CSH_RECEIPT_V.CURRENCY_CODE%TYPE DEFAULT NULL;
57   l_receipt_currency_code	     	OKL_TRX_CSH_RECEIPT_V.CURRENCY_CODE%TYPE DEFAULT lp_adv_rcpt_rec.currency_code;
58   l_irm_id			                   OKL_TRX_CSH_RECEIPT_V.IRM_ID%TYPE DEFAULT lp_adv_rcpt_rec.irm_id;      -- receipt method id
59   l_check_number		              OKL_TRX_CSH_RECEIPT_V.CHECK_NUMBER%TYPE DEFAULT lp_adv_rcpt_rec.check_number;
60   l_rcpt_amount			              OKL_TRX_CSH_RECEIPT_V.AMOUNT%TYPE DEFAULT lp_adv_rcpt_rec.rcpt_amount;
61   l_rcpt_type			                OKL_TRX_CSH_RECEIPT_V.RECEIPT_TYPE%TYPE DEFAULT lp_adv_rcpt_rec.receipt_type;
62   l_rcpt_amount_orig		         	OKL_TRX_CSH_RECEIPT_V.AMOUNT%TYPE DEFAULT lp_adv_rcpt_rec.rcpt_amount;
63   l_converted_receipt_amount	  	OKL_TRX_CSH_RECEIPT_V.AMOUNT%TYPE DEFAULT NULL;
64   l_rcpt_date				               OKL_TRX_CSH_RECEIPT_V.DATE_EFFECTIVE%TYPE DEFAULT lp_adv_rcpt_rec.receipt_date;
65   l_gl_date				                 OKL_TRX_CSH_RECEIPT_V.GL_DATE%TYPE DEFAULT lp_adv_rcpt_rec.gl_date;
66   l_comments				                AR_CASH_RECEIPTS_ALL.COMMENTS%TYPE DEFAULT lp_adv_rcpt_rec.comments;
67   l_fully_applied_flag                OKL_TRX_CSH_RECEIPT_V.FULLY_APPLIED_FLAG%TYPE DEFAULT lp_adv_rcpt_rec.fully_applied_flag;
68   l_expired_flag                      OKL_TRX_CSH_RECEIPT_V.EXPIRED_FLAG%TYPE DEFAULT lp_adv_rcpt_rec.expired_flag;
69   l_cash_receipt_id			          AR_CASH_RECEIPTS_ALL.CASH_RECEIPT_ID%TYPE DEFAULT NULL;
70   l_receivables_invoice_num		   NUMBER DEFAULT NULL;
71 
72   l_over_pay                     VARCHAR(1) := 'O';
73   l_ordered			                  CONSTANT VARCHAR2(3) := 'ODD';
74   l_prorate			                  CONSTANT VARCHAR2(3) := 'PRO';
75   l_start_date			               DATE;
76   l_same_cash_app_rule			       VARCHAR(1) DEFAULT NULL;
77   l_same_date				               VARCHAR(1) DEFAULT NULL;
78   l_org_id			                  	OKL_TRX_CSH_RECEIPT_V.ORG_ID%TYPE DEFAULT MO_GLOBAL.GET_CURRENT_ORG_ID();
79 
80   i				                         NUMBER DEFAULT NULL;
81   d					                        NUMBER DEFAULT NULL;
82   t					                        NUMBER DEFAULT NULL;
83   l_first_prorate_rec			        NUMBER DEFAULT NULL;
84   l_order_count				             NUMBER DEFAULT NULL;
85 
86   l_appl_tolerance		            NUMBER := 0;
87   l_temp_val			                 NUMBER := 0;
88   l_inv_tot			                  NUMBER := 0;
89   l_cont_tot			                 NUMBER := 0;
90   l_stream_tot				              NUMBER := 0;
91   l_pro_rate_inv_total	       		NUMBER := 0;
92 
93   l_rct_id			                   OKL_TRX_CSH_RECEIPT_B.ID%TYPE;
94   l_rca_id			                   OKL_TXL_RCPT_APPS_V.ID%TYPE;
95   l_xcr_id			                   NUMBER;
96 
97   l_dup_rcpt_flag			            NUMBER DEFAULT NULL;
98   l_cash_applied_flag			        VARCHAR2(1) DEFAULT NULL;
99   l_cont_applic				             VARCHAR2(1) DEFAULT 'N';
100   l_cons_bill_applic			         VARCHAR2(1) DEFAULT 'N';
101 
102   l_api_version			              NUMBER := 1.0;
103   l_init_msg_list		             VARCHAR2(1) := Okc_Api.g_false;
104   l_return_status		             VARCHAR2(1);
105   l_msg_count			                NUMBER;
106   l_msg_data			                 VARCHAR2(2000);
107 
108   l_api_name				CONSTANT VARCHAR2(30) := 'handle_advanced_manual_pay';
109 
110 ------------------------------
111 -- DECLARE Record/Table Types
112 ------------------------------
113 
114 -- Internal Trans
115 
116   l_rctv_rec Okl_Rct_Pvt.rctv_rec_type;
117   l_rctv_tbl Okl_Rct_Pvt.rctv_tbl_type;
118 
119   l_rcav_rec Okl_Rca_Pvt.rcav_rec_type;
120   l_rcav_tbl Okl_Rca_Pvt.rcav_tbl_type;
121 
122   x_rctv_rec Okl_Rct_Pvt.rctv_rec_type;
123   x_rctv_tbl Okl_Rct_Pvt.rctv_tbl_type;
124 
125   x_rcav_rec Okl_Rca_Pvt.rcav_rec_type;
126   x_rcav_tbl Okl_Rca_Pvt.rcav_tbl_type;
127 
128 ----------
129 
130 -- External Trans
131 
132   l_xcrv_rec Okl_Xcr_Pvt.xcrv_rec_type;
133   l_xcrv_tbl Okl_Xcr_Pvt.xcrv_tbl_type;
134 
135   l_xcav_rec Okl_Xca_Pvt.xcav_rec_type;
136   l_xcav_tbl Okl_Xca_Pvt.xcav_tbl_type;
137 
138   x_xcrv_rec Okl_Xcr_Pvt.xcrv_rec_type;
139   x_xcrv_tbl Okl_Xcr_Pvt.xcrv_tbl_type;
140 
141   x_xcav_rec Okl_Xca_Pvt.xcav_rec_type;
142   x_xcav_tbl Okl_Xca_Pvt.xcav_tbl_type;
143 
144   t_xcav_tbl Okl_Xca_Pvt.xcav_tbl_type;
145 
146 
147 -------------------
148 -- DECLARE Cursors
149 -------------------
150 -- get a contract id if not known
151   CURSOR   c_get_contract_id (cp_contract_num IN VARCHAR2) IS
152     SELECT  lpt.contract_id
153     FROM	OKL_BPD_LEASING_PAYMENT_TRX_V lpt
154     WHERE	lpt.contract_number = cp_contract_num
155     AND	    lpt.status = 'OP'
156     AND	    lpt.amount_due_remaining > 0
157     ORDER BY lpt.start_date;
158 
159  -- get org_id for contract
160    CURSOR   c_get_org_id (cp_contract_num IN VARCHAR2) IS
161    SELECT  authoring_org_id
162    FROM   OKC_K_HEADERS_B
163    WHERE  contract_number = cp_contract_num;
164 
165 ----------
166 
167  -- check for duplicate receipt numbers
168    CURSOR   c_dup_rcpt( cp_customer_id IN NUMBER
169                        ,cp_check_num IN VARCHAR2
170                        ,cp_receipt_date IN DATE
171                       ) IS
172     SELECT  '1'
173     FROM    OKL_TRX_CSH_RECEIPT_V
174     WHERE   ile_id = cp_customer_id
175     AND     check_number = cp_check_num
176     AND     TRUNC(date_effective) = TRUNC(cp_receipt_date);
177 
178 ----------
179 
180    -- get header and line id's for contract reference
181    CURSOR   c_get_int_id_cont ( cp_customer_id IN NUMBER
182                                ,cp_check_num IN VARCHAR2
183                                ,cp_amount IN NUMBER
184                                ,cp_contract_id IN NUMBER) IS
185     SELECT  a.id, b.id
186     FROM    OKL_TRX_CSH_RECEIPT_V a, OKL_TXL_RCPT_APPS_V b
187     WHERE   a.id = b.rct_id_details
188     AND     a.ile_id = cp_customer_id
189     AND     a.check_number = cp_check_num
190     AND     a.amount = cp_amount
191     AND     b.khr_id = NVL(cp_contract_id, NULL);
192 
193 ----------
194 
195  -- get bank details
196     CURSOR   c_get_remit_bnk_dtls ( cp_irm_id IN NUMBER ) IS
197     SELECT  bank_name, bank_account_num
198     FROM    OKL_BPD_RCPT_MTHDS_UV
199     WHERE   receipt_method_id = cp_irm_id;
200 
201 ----------
202 
203   --get currency code
204     CURSOR l_khr_curr_csr(cp_contract_id IN NUMBER) IS
205     SELECT currency_code
206     FROM okl_k_headers_full_v
207     WHERE id = cp_contract_id;
208 
209     l_currency_code okl_k_headers_full_v.currency_code%type;
210 
211 BEGIN
212 
213     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
214                                               G_PKG_NAME,
215                                               p_init_msg_list,
216                                               l_api_version,
217                                               p_api_version,
218                                               '_PVT',
219                                               l_return_status);
220 
221     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
222        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
223     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
224        RAISE OKC_API.G_EXCEPTION_ERROR;
225     END IF;
226 
227     l_functional_currency := okl_accounting_util.get_func_curr_code;
228 
229 
230    IF  (lp_adv_rcpt_rec.contract_id IS NOT NULL) THEN
231 
232      OPEN c_get_org_id(l_contract_num);
233      FETCH c_get_org_id into l_org_id;
234      CLOSE c_get_org_id;
235 
236      OPEN l_khr_curr_csr(lp_adv_rcpt_rec.contract_id);
237      FETCH l_khr_curr_csr INTO l_currency_code;
238      CLOSE l_khr_curr_csr;
239 
240       IF  (l_currency_code <> lp_adv_rcpt_rec.currency_code) THEN
241           OKC_API.set_message( p_app_name    => G_APP_NAME,
242                             p_msg_name    =>'OKL_BPD_RCPT_KHR_CURR_ERROR');
243 
244           RAISE G_EXCEPTION_HALT_VALIDATION;
245       END IF;
246    END IF;
247 
248    OPEN  c_dup_rcpt(l_customer_id, l_check_number, TRUNC(l_rcpt_date));
249    FETCH c_dup_rcpt INTO l_dup_rcpt_flag;
250    CLOSE c_dup_rcpt;
251 
252    IF l_dup_rcpt_flag = 1 THEN
253      -- Message Text: Duplicate receipt number for customer
254      x_return_status := OKC_API.G_RET_STS_ERROR;
255      OKC_API.set_message( p_app_name      => G_APP_NAME,
256                           p_msg_name      => 'OKL_BPD_DUP_RECEIPT');
257 
258       RAISE G_EXCEPTION_HALT_VALIDATION;
259    END IF;
260 
261  -- If invoice currency code is not equal to the receipt currency code and the conversion tye
262   -- is not specified then display the error.
263    IF  l_functional_currency <> l_receipt_currency_code AND l_currency_conv_type IN ('NONE') THEN
264 
265   -- Message Text: Please enter a currency type.
266         x_return_status := OKC_API.G_RET_STS_ERROR;
267         OKC_API.set_message( p_app_name      => G_APP_NAME,
268                              p_msg_name      => 'OKL_BPD_PLS_ENT_CUR_TYPE');
269 
270         RAISE G_EXCEPTION_HALT_VALIDATION;
271 
272    END IF;
273 
274    IF  l_functional_currency = l_receipt_currency_code THEN
275         IF l_currency_conv_type IN ('CORPORATE', 'SPOT', 'USER') OR l_currency_conv_rate <> '0' THEN
276 
277   -- Message Text: Currency conversion values are not required when the receipt and invoice currency's are the same.
278             x_return_status := OKC_API.G_RET_STS_ERROR;
279             OKC_API.set_message( p_app_name => G_APP_NAME,
280             p_msg_name  => 'OKL_BPD_SAME_CURRENCY');
281 
282             RAISE G_EXCEPTION_HALT_VALIDATION;
283 
284         END IF;
285 
286    END IF;
287 
288   -- If invoice currency code is not equal to the receipt currency code and currency conversion type is not 'USER'....
289    IF  l_functional_currency <> l_receipt_currency_code AND l_currency_conv_type NOT IN ('USER') THEN
290 
291         IF l_currency_conv_date IS NULL OR l_currency_conv_date = '' THEN
292             l_currency_conv_date := l_rcpt_date;
293         END IF;
294 
295         IF l_currency_conv_type = 'CORPORATE' THEN
296             l_currency_conv_type := 'Corporate';
297         ELSE
298             l_currency_conv_type := 'Spot';
299         END IF;
300 
301         l_functional_conversion_rate := okl_accounting_util.get_curr_con_rate( l_receipt_currency_code
302                                                                               ,l_functional_currency
303 	                                                                             ,l_currency_conv_date
304 	                                                                             ,l_currency_conv_type
305                                                                               );
306 
307         l_inverse_conversion_rate := okl_accounting_util.get_curr_con_rate( l_functional_currency
308                                                                            ,l_receipt_currency_code
309 	                                                                          ,l_currency_conv_date
310 	                                                                          ,l_currency_conv_type
311                                                                            );
312 
313        IF  l_functional_conversion_rate IN (0,-1) THEN
314 
315  -- Message Text: No exchange rate defined
316        x_return_status := OKC_API.G_RET_STS_ERROR;
317        OKC_API.set_message( p_app_name      => G_APP_NAME,
318                             p_msg_name      => 'OKL_BPD_NO_EXCHANGE_RATE');
319 
320        RAISE G_EXCEPTION_HALT_VALIDATION;
321        END IF;
322 
323         l_currency_conv_rate := l_functional_conversion_rate;
324 
325    ELSIF  l_functional_currency <> l_receipt_currency_code AND l_currency_conv_type IN ('USER') THEN
326 
327         IF  l_currency_conv_rate IS NULL OR l_currency_conv_rate = '0' THEN
328 
329   -- Message Text: No exchange rate defined for currency conversion type USER.
330             x_return_status := OKC_API.G_RET_STS_ERROR;
331             OKC_API.set_message( p_app_name      => G_APP_NAME,
332                                  p_msg_name      => 'OKL_BPD_USR_RTE_SUPPLIED');
333 
334             RAISE G_EXCEPTION_HALT_VALIDATION;
335 
336         ELSE
337 
338             l_functional_conversion_rate := l_currency_conv_rate;
339             l_inverse_conversion_rate := l_functional_conversion_rate / 1;
340 
341         END IF;
342 
343         l_currency_conv_type := 'User';
344         l_currency_conv_date := SYSDATE;
345 
346    ELSE
347         -- no currency conversion required
348         l_currency_conv_date := NULL;
349         l_currency_conv_type := NULL;
350         l_currency_conv_rate := NULL;
351 
352    END IF;
353 
354    IF  l_rcpt_amount = 0 OR l_rcpt_amount IS NULL THEN
355 -- Message Text: The receipt cannot have a value of zero
356        x_return_status := OKC_API.G_RET_STS_ERROR;
357        OKC_API.set_message( p_app_name      => G_APP_NAME,
358                             p_msg_name      => 'OKL_BPD_ZERO_RECEIPT');
359 
360        RAISE G_EXCEPTION_HALT_VALIDATION;
361     END IF;
362 
363 
364 -- Create record in Internal Transaction Table.
365 
366 	-- CREATE HEADER REC
367 
368   	l_rctv_rec.IRM_ID		        	:= l_irm_id;
369   	l_rctv_rec.ILE_ID		       	    := l_customer_id;
370     l_rctv_rec.CHECK_NUMBER	            := l_check_number;
371     l_rctv_rec.AMOUNT		        	:= l_rcpt_amount_orig;          -- in receipt amount
372 	l_rctv_rec.CURRENCY_CODE		    := l_receipt_currency_code;     -- entered currency
373 
374     l_rctv_rec.EXCHANGE_RATE		    := l_currency_conv_rate;
375   	l_rctv_rec.EXCHANGE_RATE_TYPE		:= l_currency_conv_type;
376 	l_rctv_rec.EXCHANGE_RATE_DATE		:= l_currency_conv_date;
377 
378     l_rctv_rec.DATE_EFFECTIVE		    := l_rcpt_date;
379 	l_rctv_rec.GL_DATE			        := l_gl_date;
380 	l_rctv_rec.ORG_ID		           	:= l_org_id;
381 	l_rctv_rec.RECEIPT_TYPE		     	:= l_rcpt_type;
382 
383     i := 1;
384 
385     IF(l_expired_flag = 'Y') THEN
386       l_rcav_tbl(i).KHR_ID          := l_contract_id;
387       l_rcav_tbl(i).ILE_ID          := l_customer_id;
388       l_rcav_tbl(i).AMOUNT          := l_rcpt_amount_orig;
389       l_rcav_tbl(i).ORG_ID          := l_org_id;
390     END IF;
391   -- This procedure will insert the records in internal transaction table OKL_TRX_CSH_RECEIPT_B.
392     Okl_Rct_Pub.create_internal_trans (l_api_version
393 			    		       ,l_init_msg_list
394 				    	       ,l_return_status
395 				    	       ,l_msg_count
396 				    	       ,l_msg_data
397 					           ,l_rctv_rec
398 					           ,l_rcav_tbl
399     					       ,x_rctv_rec
400 	    				       ,x_rcav_tbl);
401 
402    IF  (IS_DEBUG_PROCEDURE_ON) THEN
403        BEGIN
404        OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRCAPB.pls call Okl_Rct_Pub.create_internal_trans  ');
405        END;
406    END IF;
407 -- End of wraper code generated automatically by Debug code generator for Okl_Rct_Pub.create_internal_trans
408 
409     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
410         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
411         ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
412         RAISE OKL_API.G_EXCEPTION_ERROR;
413     END IF;
414 
415         l_rct_id := x_rctv_rec.ID;
416 
417   	-- Internal Record created.
418 
419     --  **************************************************
420     --  Contract level cash application processing BEGINS
421     --  **************************************************
422 
423    IF  l_contract_num IS NOT NULL THEN -- (1)
424        l_cont_applic := 'Y';
425 
426        IF  l_contract_id IS NULL THEN
427            OPEN c_get_contract_id(l_contract_num);
428            FETCH c_get_contract_id INTO l_contract_id;
429            CLOSE c_get_contract_id;
430         END IF;
431 
432    END IF;
433 
434 -- Create record in External Transaction Table.
435 
436  -- CREATE HEADER REC
437 
438  -- obtain remittance bank details.
439 /*
440     OPEN c_get_remit_bnk_dtls(l_irm_id);
441     FETCH c_get_remit_bnk_dtls
442     INTO l_xcrv_rec.REMITTANCE_BANK_NAME
443 	        ,l_xcrv_rec.ACCOUNT;
444     CLOSE c_get_remit_bnk_dtls;
445 
446     l_xcrv_rec.RCT_ID		          := l_rct_id;
447     l_xcrv_rec.CHECK_NUMBER	     := l_check_number;
448     l_xcrv_rec.RECEIPT_METHOD        := NULL;  -- prefer IRM_ID !
449     l_xcrv_rec.RECEIPT_DATE	         := l_rcpt_date;
450     l_xcrv_rec.RECEIPT_TYPE	         := l_rcpt_type;
451     l_xcrv_rec.GL_DATE               := l_gl_date;
452     l_xcrv_rec.CURRENCY_CODE	     := l_receipt_currency_code;
453 
454 -- store the functional currency at header lvl
455 
456    IF  l_receipt_currency_code <> l_functional_currency THEN
457 
458         l_xcrv_rec.EXCHANGE_RATE_TYPE   := l_currency_conv_type;
459         l_xcrv_rec.EXCHANGE_RATE_DATE   := l_currency_conv_date;
460         l_xcrv_rec.ATTRIBUTE1           := l_functional_conversion_rate;
461          -- in functional currency ...
462    END IF;
463 
464    IF  l_receipt_currency_code         <>  l_invoice_currency_code THEN
465        l_xcrv_rec.EXCHANGE_RATE        :=  l_conversion_rate;
466        l_xcrv_rec.REMITTANCE_AMOUNT    :=  l_converted_receipt_amount;
467  -- in transaction currency ...
468    ELSE
469        l_xcrv_rec.REMITTANCE_AMOUNT    := l_rcpt_amount_orig;
470        -- in receipt currency ...
471    END IF;
472 
473     l_xcrv_rec.CUSTOMER_NUMBER	        := l_customer_num;
474     l_xcrv_rec.COMMENTS                := l_comments;
475     l_xcrv_rec.ORG_ID                  := l_org_id;
476     l_xcrv_rec.fully_applied_flag      := l_fully_applied_flag;
477     l_xcrv_rec.expired_flag            := l_expired_flag;
478 
479    -- Start of wraper code generated automatically by Debug code generator for Okl_Xcr_Pub.create_ext_ar_txns
480    IF  (IS_DEBUG_PROCEDURE_ON) THEN
481        BEGIN
482        OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRCAPB.pls call Okl_Xcr_Pub.create_ext_ar_txns  ');
483        END;
484    END IF;
485 
486   -- This procedure will insert the records in external transaction table OKL_EXT_CSH_RCPTS_B.
487   Okl_Xcr_Pub.create_ext_ar_txns( l_api_version
488   		                          ,l_init_msg_list
489   	                              ,l_return_status
490 				                  ,l_msg_count
491 			    	              ,l_msg_data
492 				                  ,l_xcrv_rec
493 				                  ,l_xcav_tbl
494 				                  ,x_xcrv_rec
495 				                  ,x_xcav_tbl
496                                  );
497 
498    IF  (IS_DEBUG_PROCEDURE_ON) THEN
499     BEGIN
500     OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRCAPB.pls call Okl_Xcr_Pub.create_ext_ar_txns  ');
501     END;
502    END IF;
503 -- End of wraper code generated automatically by Debug code generator for Okl_Xcr_Pub.create_ext_ar_txns
504 
505     x_return_status := l_return_status;
506     x_msg_data      := l_msg_data;
507     x_msg_count     := l_msg_count;
508 
509     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
510         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
511     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
512         RAISE OKL_API.G_EXCEPTION_ERROR;
513     END IF;
514 */
515  -- CREATE RECEIPT IN AR ONCE EVERYTHING IS OKAY AT THIS POINT
516 
517     okl_cash_receipt.CASH_RECEIPT     (p_api_version      => l_api_version
518                                       ,p_init_msg_list    => l_init_msg_list
519                                       ,x_return_status    => l_return_status
520                                       ,x_msg_count        => l_msg_count
521                                       ,x_msg_data         => l_msg_data
522                                       ,p_over_pay         => l_over_pay
523                                       ,p_conc_proc        => NULL
524                                       ,p_xcrv_rec         => l_xcrv_rec
525                                       ,p_xcav_tbl         => l_xcav_tbl
526                                       ,x_cash_receipt_id  => l_cash_receipt_id
527                                       );
528 
529     x_return_status := l_return_status;
530 
531 	   IF  x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
532 
533  -- Message Text: Error creating receipt in AR
534         x_return_status := OKC_API.G_RET_STS_ERROR;
535         OKC_API.set_message( p_app_name      => G_APP_NAME,
536                              p_msg_name      => 'OKL_BPD_ERR_CRT_RCT_AR');
537         RAISE G_EXCEPTION_HALT_VALIDATION;
538 
539 	    END IF;
540 
541  -- UPDATE EXT HEADER WITH CASH RECEIPT ID
542 /*
543      SELECT ID INTO l_xcr_id
544      FROM   okl_ext_csh_rcpts_b
545      WHERE  rct_id = l_rct_id;
546 
547      l_rctv_rec.id := l_xcr_id;
548 */
549      l_rctv_rec := x_rctv_rec;
550      l_rctv_rec.cash_receipt_id := l_cash_receipt_id;
551      l_rctv_rec.fully_applied_flag      := l_fully_applied_flag;
552      l_rctv_rec.expired_flag            := l_expired_flag;
553 
554 --     l_xcrv_rec.attribute1   := NULL;
555 
556    	 x_adv_rcpt_rec := lp_adv_rcpt_rec;
557 --     x_adv_rcpt_rec.rct_id := l_rct_id;
558 --     x_adv_rcpt_rec.xcr_id := l_xcr_id;
559      x_adv_rcpt_rec.icr_id := l_cash_receipt_id;
560 
561 -- Start of wraper code generated automatically by Debug code generator for Okl_Xcr_Pub.update_ext_csh_txns
562    IF (IS_DEBUG_PROCEDURE_ON) THEN
563        BEGIN
564        OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRCAPB.pls call Okl_Rct_Pub.update_internal_trans ');
565        END;
566    END IF;
567 
568   -- Updates the record in the external transactiion table OKL_EXT_CSH_RCPTS_B.
569 /*   Okl_Xcr_Pub.update_ext_csh_txns( p_api_version
570                                     ,p_init_msg_list
571                                     ,x_return_status
572                                     ,x_msg_count
573                                     ,x_msg_data
574                                     ,l_xcrv_rec
575                                     ,x_xcrv_rec
576                                   );
577 */
578     Okl_Rct_Pub.update_internal_trans (l_api_version
579 			    		       ,l_init_msg_list
580 				    	       ,l_return_status
581 				    	       ,l_msg_count
582 				    	       ,l_msg_data
583 					           ,l_rctv_rec
584 					           ,l_rcav_tbl
585     					       ,x_rctv_rec
586 	    				       ,x_rcav_tbl);
587 
588    IF  (IS_DEBUG_PROCEDURE_ON) THEN
589        BEGIN
590        OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRCAPB.pls call Okl_Rct_Pub.update_internal_trans ');
591        END;
592    END IF;
593 -- End of wraper code generated automatically by Debug code generator for Okl_Xcr_Pub.update_ext_csh_txns
594 
595        x_return_status := l_return_status;
596        x_msg_data      := l_msg_data;
597        x_msg_count     := l_msg_count;
598 
599    IF     (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
600           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
601    ELSIF  (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
602           RAISE OKL_API.G_EXCEPTION_ERROR;
603    END IF;
604    okl_api.END_ACTIVITY(x_msg_count, x_msg_data);
605    x_return_status := l_return_status;
606    x_msg_data      := l_msg_data;
607    x_msg_count     := l_msg_count;
608 
609 EXCEPTION
610 
611     WHEN G_EXCEPTION_HALT_VALIDATION THEN
612       x_return_status := OKC_API.HANDLE_EXCEPTIONS
613       (
614         l_api_name,
615         G_PKG_NAME,
616         'OKC_API.G_RET_STS_ERROR',
617         x_msg_count,
618         x_msg_data,
619         '_PVT'
620       );
621 
622 
623     WHEN OKC_API.G_EXCEPTION_ERROR THEN
624       x_return_status := OKC_API.HANDLE_EXCEPTIONS
625       (
626         l_api_name,
627         G_PKG_NAME,
628         'OKC_API.G_EXCEPTION_ERROR',
629         x_msg_count,
630         x_msg_data,
631         '_PVT'
632       );
633 
634     WHEN OTHERS THEN
635       x_return_status := OKC_API.HANDLE_EXCEPTIONS
636       (
637         l_api_name,
638         G_PKG_NAME,
639         'OKC_API.G_OTHERS',
640         x_msg_count,
641         x_msg_data,
642         '_PVT'
643       );
644 
645 END handle_advanced_manual_pay;
646 END OKL_BPD_CAP_ADV_MON_PVT;