DBA Data[Home] [Help]

PACKAGE BODY: APPS.FV_CROSS_DOC_REF

Source


1 PACKAGE BODY fv_cross_doc_ref as
2 /* $Header: FVDOCCRB.pls 120.12 2003/12/17 21:20:05 ksriniva ship $  */
3   g_module_name VARCHAR2(100) := 'fv.plsql.fv_cross_doc_ref.';
4 
5 	vp_vendor_id      po_vendors.vendor_id%TYPE;
6 	vp_vendor_site_id po_vendor_sites.vendor_site_id%TYPE;
7 	vp_po_header_id	  po_headers.po_header_id%TYPE;
8 	vp_po_date po_headers.creation_date%TYPE;
9 	vp_requisition_header_id po_requisition_headers.requisition_header_id%TYPE;
10 	vp_requisition_line_id po_requisition_lines.requisition_line_id%TYPE;
11 	vp_req_date po_requisition_headers.creation_date%TYPE;
12 	vp_shipment_header_id rcv_shipment_headers.shipment_header_id%TYPE;
13 	vp_rec_date rcv_shipment_headers.creation_date%TYPE;
14 	vp_buyer po_headers.agent_id%TYPE;
15 	vp_invoice_id ap_invoices.invoice_id%TYPE;
16 	vp_invoice_date ap_invoices.invoice_date%TYPE;
17 	vp_invoice_amount ap_invoices.invoice_amount%TYPE;
18 	vp_invoice_type ap_invoices.invoice_type_lookup_code%TYPE;
19 	vp_check_id ap_checks.check_id%TYPE;
20 	vp_check_date ap_checks.creation_date%TYPE;
21 	vp_amount ap_checks.amount%TYPE;
22 	vp_treasury_pay_number ap_checks.treasury_pay_number%TYPE;
23 	vp_treasury_pay_date ap_checks.treasury_pay_date%TYPE;
24 	vp_valid_req_supplier NUMBER;
25 	vp_supplier_name po_vendors.vendor_name%TYPE;
26 	vp_supplier_site po_vendor_sites.vendor_site_code%TYPE;
27         vp_session_id NUMBER;
28 
29  PROCEDURE po_master;
30  PROCEDURE req_master;
31  PROCEDURE rec_master;
32  PROCEDURE inv_master;
33  PROCEDURE pay_master;
34 
35 
36 -----------------------------------------------------------------------
37 --				MAIN
38 ----------------------------------------------------------------------
39 
40 PROCEDURE main
41 	(
42 		p_vendor_id		  IN po_vendors.vendor_id%TYPE ,
43 		p_vendor_site_id	  IN po_vendor_sites.vendor_site_id%TYPE ,
44 		p_po_header_id		  IN  po_headers.po_header_id%TYPE,
45 		p_po_date		  IN po_headers.creation_date%TYPE,
46 		p_requisition_header_id   IN po_requisition_headers.requisition_header_id%TYPE,
47 		p_requisition_line_id     IN po_requisition_lines.requisition_line_id%TYPE,
48 		p_req_date		  IN po_requisition_headers.creation_date%TYPE,
49 		p_shipment_header_id	  IN rcv_shipment_headers.shipment_header_id%TYPE,
50 		p_receipt_date		  IN rcv_shipment_headers.creation_date%TYPE,
51 		p_buyer			  IN po_headers.agent_id%TYPE,
52 		p_invoice_id		  IN ap_invoices.invoice_id%TYPE,
53 		p_invoice_date		  IN ap_invoices.invoice_date%TYPE ,
54 		p_invoice_amount	  IN ap_invoices.invoice_amount%TYPE ,
55 		p_invoice_type	          IN ap_invoices.invoice_type_lookup_code%TYPE ,
56 		p_check_id	          IN ap_checks.check_id%TYPE,
57 		p_check_date		  IN ap_checks.creation_date%TYPE,
58 		p_amount		  IN ap_checks.amount%TYPE,
59 		p_treasury_pay_number     IN ap_checks.treasury_pay_number%TYPE,
60 		p_treasury_pay_date       IN ap_checks.treasury_pay_date%TYPE,
61 		p_valid_req_supplier      IN NUMBER,
62 		p_supplier_name           IN po_vendors.vendor_name%TYPE,
63 		p_supplier_site           IN po_vendor_sites.vendor_site_code%TYPE,
64 		p_result 		  IN VARCHAR2,
65 		p_err_code    		  OUT NOCOPY NUMBER,
66 	        p_session_id	          IN  NUMBER
67 
68 
69  	) IS
70   l_module_name VARCHAR2(200) := g_module_name || 'main';
71   l_errbuf      VARCHAR2(1024);
72 
73 BEGIN
74 
75 	vp_vendor_id	         :=  p_vendor_id;
76 	vp_vendor_site_id	 := p_vendor_site_id;
77 	vp_po_header_id		 := p_po_header_id;
78 	vp_po_date		 := p_po_date;
79 	vp_requisition_header_id := p_requisition_header_id;
80 	vp_req_date		 := p_req_date;
81 	vp_shipment_header_id    := p_shipment_header_id;
82 	vp_rec_date		 := p_receipt_date;
83 	vp_buyer		 := p_buyer;
84 	vp_invoice_id := p_invoice_id;
85 	vp_invoice_date := p_invoice_date;
86 	vp_invoice_amount := p_invoice_amount;
87 	vp_invoice_type := p_invoice_type;
88 	vp_check_id :=	p_check_id;
89 	vp_check_date := p_check_date;
90 	vp_amount := p_amount;
91 	vp_treasury_pay_number := p_treasury_pay_number;
92 	vp_treasury_pay_date :=	p_treasury_pay_date;
93 	vp_valid_req_supplier	 :=	p_valid_req_supplier;
94 	vp_supplier_name := p_supplier_name;
95 	vp_supplier_site := p_supplier_site;
96 	vp_session_id := p_session_id;
97 	IF    p_result = 'PO'  THEN
98 	   po_master;
99 	ELSIF p_result = 'REQ' THEN
100 	   req_master;
101 	ELSIF p_result = 'REC' THEN
102 	   rec_master;
103 	ELSIF p_result = 'INV' THEN
104 	   inv_master;
105 	ELSIF p_result = 'PAY' THEN
106 	   pay_master;
107 	END IF;
108 EXCEPTION
109    WHEN OTHERS THEN
110      p_err_code := -1;
111      l_errbuf := SQLERRM;
112      FV_UTILITY.LOG_MESG(FND_LOG.LEVEL_UNEXPECTED, l_module_name||'.final_exception',l_errbuf);
113 
114 END MAIN;
115 
116 
117 PROCEDURE po_master  IS
118   l_module_name VARCHAR2(200) := g_module_name || 'po_master';
119   l_errbuf      VARCHAR2(1024);
120 
121 	CURSOR po_cur IS
122 	SELECT ph.po_header_id,pl.po_line_id,pll.line_location_id
123 	FROM po_headers ph,po_lines pl,po_line_locations pll
124 	WHERE ph.po_header_id = pl.po_header_id
125 	AND pl.po_line_id = pll.po_line_id
126 	AND vendor_id = vp_vendor_id
127 	AND vendor_site_id = vp_vendor_site_id
128 	AND ph.po_header_id = NVL(vp_po_header_id,ph.po_header_id)
129 	AND TRUNC(ph.creation_date) = nvl(vp_po_date,TRUNC(ph.creation_date))
130 	AND ph.agent_id = nvl(vp_buyer,ph.agent_id)
131 	AND NOT EXISTS(SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
132 	UNION
133 	SELECT ph.po_header_id,pl.po_line_id,pll.line_location_id
134 	FROM po_headers ph,po_lines pl,po_line_locations pll
135 	WHERE ph.po_header_id = pl.po_header_id
136 	AND pl.po_line_id = pll.po_line_id
137 	AND vendor_id = vp_vendor_id
138 	AND vendor_site_id = vp_vendor_site_id
139 	AND ph.po_header_id = NVL(vp_po_header_id,ph.po_header_id)
140 	AND TRUNC(ph.creation_date) = nvl(vp_po_date,TRUNC(ph.creation_date))
141 	AND ph.agent_id = nvl(vp_buyer,ph.agent_id)
142 	AND  EXISTS(SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id
143 		    AND po_header_id = ph.po_header_id AND po_line_id = pl.po_line_id);
144 	po_rec    po_cur%ROWTYPE;
145 
146 	 CURSOR req_cur IS
147 	SELECT ph.po_header_id,pl.po_line_id, pll.line_location_id
148 	FROM po_headers ph,po_lines pl,po_line_locations pll
149 	WHERE ph.po_header_id = pl.po_header_id
150 	AND pl.po_line_id = pll.po_line_id
151 	AND EXISTS(SELECT   prh.requisition_header_id,prl.requisition_line_id
152 		FROM po_requisition_headers prh,po_requisition_lines prl
153 		WHERE prh.requisition_header_id = prl.requisition_header_id
154 		AND authorization_status = 'APPROVED'
155 		AND prl.line_location_id = pll.line_location_id
156 		AND prl.suggested_vendor_location = vp_supplier_site
157 		AND prl.suggested_vendor_name = vp_supplier_name
158 		AND prh.requisition_header_id = NVL(vp_requisition_header_id,prh.requisition_header_id)
159 		AND TRUNC(prh.creation_date) = NVL(vp_req_date,TRUNC(prh.creation_date))
160      UNION
161 	SELECT  rh.requisition_header_id,rh.requisition_line_id
162 	FROM (SELECT DISTINCT  prh.requisition_header_id,
163 		prl.requisition_line_id,prl.line_location_id
164 		FROM po_requisition_headers prh,po_requisition_lines prl
165 		WHERE prl.requisition_header_id = prh.requisition_header_id
166 		AND authorization_status = 'APPROVED'
167 		AND prh.requisition_header_id = NVL(vp_requisition_header_id,prh.requisition_header_id)
168 		AND TRUNC(prh.creation_date) = NVL(vp_req_date,TRUNC(prh.creation_date))) rh,
169 	po_line_locations plx,po_headers ph
170 	WHERE  plx.line_location_id = rh.line_location_id
171 	AND plx.po_header_id = ph.po_header_id
172 	AND ph.vendor_id = vp_vendor_id
173 	AND rh.line_location_id = pll.line_location_id
174 	AND ph.vendor_site_id = vp_vendor_site_id
175 	AND NOT EXISTS (SELECT 1 FROM po_vendors pv,po_requisition_lines prl,po_vendor_sites pvs
176           WHERE prl.suggested_vendor_name = pv.vendor_name
177           AND prl.suggested_vendor_location = pvs.vendor_site_code
178           AND prl.requisition_line_id = rh.requisition_line_id ));
179 
180 
181       req_rec    req_cur%ROWTYPE;
182 
183      CURSOR rec_cur IS
184 		SELECT ph.po_header_id,pll.po_line_id,pll.line_location_id
185 			FROM po_headers ph,po_line_locations pll
186 		WHERE ph.po_header_id = pll.po_header_id
187 		AND vendor_id = vp_vendor_id
188 		AND vendor_site_id = vp_vendor_site_id
189 		AND NOT EXISTS(SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
190 		AND EXISTS (SELECT 1 FROM rcv_transactions rt
191 		    WHERE rt.po_header_id = ph.po_header_id
192 		    AND rt.po_line_id = pll.po_line_id
193 		    AND rt.po_line_location_id = pll.line_location_id
194 		    AND EXISTS (SELECT 1 from rcv_shipment_headers rsh
195 		       WHERE rsh.shipment_header_id = rt.shipment_header_id
196 		       AND rsh.shipment_header_id = NVL(vp_shipment_header_id,rsh.shipment_header_id)
197 		       AND TRUNC(rsh.creation_date) = NVL(vp_rec_date,TRUNC(rsh.creation_date))))
198 			UNION
199 		SELECT ph.po_header_id,pll.po_line_id ,pll.line_location_id
200 			FROM po_headers ph,po_line_locations pll
201 		WHERE ph.po_header_id = pll.po_header_id
202 		AND vendor_id = vp_vendor_id
203 		AND vendor_site_id = vp_vendor_site_id
204 		AND EXISTS (SELECT 1 FROM fv_doc_cr_temp  fst
205 		   WHERE fst.po_header_id = ph.po_header_id
206 		   AND fst.po_line_id = pll.po_line_id
207 		   AND fst.po_line_location_id = pll.line_location_id
208                    AND fst.session_id = vp_session_id)
209 		AND EXISTS (SELECT 1 FROM rcv_transactions rt
210 		    WHERE rt.po_header_id = ph.po_header_id
211 		    AND rt.po_line_id = pll.po_line_id
212 		    AND rt.po_line_location_id = pll.line_location_id
213 		    AND EXISTS (SELECT 1 from rcv_shipment_headers rsh
214 		       WHERE rsh.shipment_header_id = rt.shipment_header_id
215 		       AND rsh.shipment_header_id = NVL(vp_shipment_header_id,rsh.shipment_header_id)
216 		       AND TRUNC(rsh.creation_date) = NVL(vp_rec_date,TRUNC(rsh.creation_date))));
217 
218 		     rec_rec    rec_cur%ROWTYPE;
219      CURSOR inv_cur IS
220 	SELECT ph.po_header_id,pll.po_line_id,pll.line_location_id FROM po_headers ph,po_line_locations pll
221 	WHERE ph.po_header_id = pll.po_header_id
222 	 AND vendor_id = vp_vendor_id
223 	 AND vendor_site_id = vp_vendor_site_id
224 	 AND NOT EXISTS(SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
225 	 AND (EXISTS (SELECT 1 FROM po_distributions pd
226 	   WHERE pd.po_header_id = ph.po_header_id
227 	   AND pd.line_location_id = pll.line_location_id
228 	   AND EXISTS (SELECT 1 FROM ap_invoice_distributions ia
229 	    WHERE ia.po_distribution_id= pd.po_distribution_id
230 	    AND EXISTS (SELECT 1 FROM ap_invoices ap
231 	     WHERE invoice_id = ia.invoice_id
232 	     AND invoice_id = NVL(vp_invoice_id,invoice_id)
233 	     AND TRUNC(ap.invoice_date) = NVL(vp_invoice_date,TRUNC(ap.invoice_date))
234 	     AND invoice_type_lookup_code = NVL(vp_invoice_type,invoice_type_lookup_code)
235 	     AND invoice_amount = nvl(vp_invoice_amount,invoice_amount))))
236 	     OR EXISTS (SELECT 1 FROM rcv_transactions rt
237 		WHERE rt.po_header_id = ph.po_header_id
238 		AND rt.po_line_location_id = pll.line_location_id
239 		AND EXISTS (SELECT 1 FROM ap_invoice_distributions ia
240 		 WHERE ia.rcv_transaction_id= rt.transaction_id
241 		 AND EXISTS (SELECT 1 FROM ap_invoices ap
242 		  WHERE invoice_id = ia.invoice_id
243 		  AND invoice_id = NVL(vp_invoice_id,invoice_id)
244 		  AND TRUNC(ap.invoice_date) = NVL(vp_invoice_date,TRUNC(ap.invoice_date))
245 		  AND invoice_type_lookup_code = nvl(vp_invoice_type,invoice_type_lookup_code)
246 		  AND invoice_amount = nvl(vp_invoice_amount,invoice_amount)))))
247 	UNION
248 	SELECT ph.po_header_id,pll.po_line_id ,pll.line_location_id FROM po_headers ph,po_line_locations pll
249 	WHERE vendor_id = vp_vendor_id
250 	AND ph.po_header_id = pll.po_header_id
251 	AND vendor_site_id = vp_vendor_site_id
252 	AND EXISTS (SELECT 1 FROM fv_doc_cr_temp  fst
253 	 WHERE fst.po_header_id = ph.po_header_id
254 	 AND fst.po_line_id = pll.po_line_id
255 	 AND fst.po_line_location_id = pll.line_location_id
256 	 AND fst.session_id = vp_session_id)
257 	 AND (EXISTS (SELECT 1 FROM po_distributions pd
258 	  WHERE pd.po_header_id = ph.po_header_id
259 	  AND pd.line_location_id = pll.line_location_id
260 	  AND EXISTS (SELECT 1 FROM ap_invoice_distributions ia
261 	   WHERE ia.po_distribution_id= pd.po_distribution_id
262 	   AND EXISTS (SELECT 1 FROM ap_invoices ap
263 	    WHERE invoice_id = ia.invoice_id
264 	    AND invoice_id = NVL(vp_invoice_id,invoice_id)
265 	    AND TRUNC(ap.invoice_date) =NVL(vp_invoice_date,TRUNC(ap.invoice_date))
266 	    AND invoice_type_lookup_code =NVL(vp_invoice_type,invoice_type_lookup_code)
267 	    AND invoice_amount = nvl(vp_invoice_amount,invoice_amount))))
268 	    OR EXISTS (SELECT 1 FROM rcv_transactions rt
269 	     WHERE rt.po_header_id = ph.po_header_id
270 	     AND rt.po_line_location_id = pll.line_location_id
271 	     AND EXISTS (SELECT 1 FROM ap_invoice_distributions ia
272 	      WHERE ia.rcv_transaction_id= rt.transaction_id
273 	      AND EXISTS (SELECT 1 FROM ap_invoices ap
274 	       WHERE invoice_id = ia.invoice_id
275 	       AND invoice_id = NVL(vp_invoice_id,invoice_id)
276 	       AND TRUNC(ap.invoice_date) = nvl(vp_invoice_date,TRUNC(ap.invoice_date))
277 	       AND invoice_type_lookup_code = nvl(vp_invoice_type,invoice_type_lookup_code)
278 	       AND invoice_amount = nvl(vp_invoice_amount,invoice_amount)))));
279 
280       inv_rec inv_cur%ROWTYPE;
281 
282       CURSOR pay_cur IS
283       SELECT ph.po_header_id,pll.po_line_id,pll.line_location_id
284 	FROM po_headers ph,po_line_locations pll
285 	WHERE ph.po_header_id = pll.po_header_id
286 	AND vendor_id = vp_vendor_id
287 	AND vendor_site_id = vp_vendor_site_id
288 	AND NOT EXISTS(SELECT 1 FROM fv_doc_cr_temp
289                        WHERE session_id = vp_session_id)
290 	AND EXISTS (SELECT   1 from po_distributions pd
291 	 WHERE pd.po_header_id = ph.po_header_id
292 	 AND pd.line_location_id = pll.line_location_id
293 	 AND (EXISTS (SELECT 1 FROM ap_invoice_distributions aid
294 	   WHERE aid.po_distribution_id = pd.po_distribution_id
295 	   AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
296 	    WHERE aip.invoice_id = aid.invoice_id
297 	    AND EXISTS (SELECT 1 FROM ap_checks ac
298 	     WHERE ac.check_id = aip.check_id
299 	     AND ac.check_id =  NVL(vp_check_id,ac.check_id)
300 	     AND TRUNC(ac.check_date) = NVL(vp_check_date,TRUNC(ac.check_date))
301 	     AND ac.amount = nvl(vp_amount,ac.amount)
302 	     AND NVL(ac.treasury_pay_number,-1) =NVL(vp_treasury_pay_number,NVL(ac.treasury_pay_number,-1))
303 	     AND (TRUNC(ac.treasury_pay_date) = TRUNC(vp_treasury_pay_date)
304                   OR vp_treasury_pay_date IS NULL)))))
305 	    OR EXISTS (SELECT   1 from rcv_transactions rt
306 	    WHERE rt.po_header_id = ph.po_header_id
307 	    AND rt.po_line_location_id = pll.line_location_id
308 	    AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
309 	     WHERE aid.rcv_transaction_id = rt.transaction_id
310 	     AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
311 	      WHERE aip.invoice_id = aid.invoice_id
312 	      AND EXISTS (SELECT 1 FROM ap_checks ac
313 	       WHERE ac.check_id = aip.check_id
314 	       AND ac.check_id =  NVL(vp_check_id,ac.check_id)
315 	       AND TRUNC(ac.check_date) = NVL(vp_check_date,TRUNC(ac.check_date))
316 	       AND ac.amount = nvl(vp_amount,ac.amount)
317 	       AND NVL(ac.treasury_pay_number,-1) =NVL(vp_treasury_pay_number,NVL(ac.treasury_pay_number,-1))
318 	       AND (TRUNC(ac.treasury_pay_date) = TRUNC(vp_treasury_pay_date)
319                     OR vp_treasury_pay_date IS NULL))))))
320       UNION
321 	SELECT ph.po_header_id,pll.po_line_id,pll.line_location_id
322 	FROM po_headers ph,po_line_locations pll
323 	WHERE ph.po_header_id = pll.po_header_id
324 	AND EXISTS (SELECT 1 FROM fv_doc_cr_temp  fst
325 	 WHERE fst.po_header_id = ph.po_header_id
326 	 AND fst.po_line_id = pll.po_line_id
327          AND fst.po_line_location_id = pll.line_location_id
328          AND fst.session_id = vp_session_id)
329 	AND vendor_id = vp_vendor_id
330 	AND vendor_site_id = vp_vendor_site_id
331 	AND EXISTS (SELECT   1 from po_distributions pd
332 	 WHERE pd.po_header_id = ph.po_header_id
333 	 AND pd.line_location_id = pll.line_location_id
334 	 AND (EXISTS (SELECT 1 FROM ap_invoice_distributions aid
335 	      WHERE aid.po_distribution_id = pd.po_distribution_id
336 	      AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
337 	       WHERE aip.invoice_id = aid.invoice_id
338 	       AND EXISTS (SELECT 1 FROM ap_checks ac
339 	        WHERE ac.check_id = aip.check_id
340 		AND ac.check_id =  NVL(vp_check_id,ac.check_id)
341 		AND TRUNC(ac.check_date) = NVL(vp_check_date,TRUNC(ac.check_date))
342 		AND ac.amount = nvl(vp_amount,ac.amount)
343 		AND NVL(ac.treasury_pay_number,-1) =NVL(vp_treasury_pay_number,NVL(ac.treasury_pay_number,-1))
344 		AND (TRUNC(ac.treasury_pay_date) = TRUNC(vp_treasury_pay_date)
345                       OR vp_treasury_pay_date IS NULL)))))
346 	OR EXISTS (SELECT   1 from rcv_transactions rt
347 	    WHERE rt.po_header_id = ph.po_header_id
348 	    AND rt.po_line_location_id = pll.line_location_id
349 	    AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
350 		WHERE aid.rcv_transaction_id = rt.transaction_id
351 		AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
352 	         WHERE aip.invoice_id = aid.invoice_id
353 		 AND EXISTS (SELECT 1 FROM ap_checks ac
354 		  WHERE ac.check_id = aip.check_id
355 		  AND ac.check_id =  NVL(vp_check_id,ac.check_id)
356 		  AND TRUNC(ac.check_date) = NVL(vp_check_date,TRUNC(ac.check_date))
357 		  AND ac.amount = nvl(vp_amount,ac.amount)
358 		  AND NVL(ac.treasury_pay_number,-1) =NVL(vp_treasury_pay_number,NVL(ac.treasury_pay_number,-1))
359 	          AND (TRUNC(ac.treasury_pay_date) = TRUNC(vp_treasury_pay_date)
360                        OR vp_treasury_pay_date IS NULL))))));
361 
362 	pay_rec  pay_cur%ROWTYPE;
363   BEGIN
364      DELETE FROM fv_doc_cr_temp
365 	WHERE session_id = vp_session_id;
366  	LOOP
367           IF (vp_requisition_header_id  IS NOT NULL OR  vp_req_date IS NOT NULL) THEN
368 	      OPEN req_cur;
369 	      DELETE FROM fv_doc_cr_temp
370 		WHERE session_id = vp_session_id;
371 	         LOOP
372 	              FETCH req_cur INTO req_rec;
373 	              EXIT WHEN   req_cur%NOTFOUND;
374 		     INSERT INTO fv_doc_cr_temp (po_header_id,po_line_id,po_line_location_id,session_id)
375 		     VALUES (req_rec.po_header_id,req_rec.po_line_id,req_rec.line_location_id,vp_session_id);
376 	         END LOOP;
377 	         IF NOT (req_cur%rowcount <> 0 ) THEN
378 		    DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
379 		    CLOSE req_cur;
380 		    EXIT;
381 	         END IF;
382 	         CLOSE req_cur;
383 	      END IF;
384 	  IF  (vp_po_header_id   IS NOT NULL OR vp_po_date IS NOT NULL OR  vp_buyer IS NOT NULL) THEN
385   	    OPEN po_cur;
386     	    DELETE FROM fv_doc_cr_temp
387 	    WHERE session_id = vp_session_id;
388 	    LOOP
389 	       FETCH po_cur INTO po_rec;
390 	       EXIT WHEN po_cur%NOTFOUND;
391 	       INSERT INTO fv_doc_cr_temp (po_header_id,po_line_id,po_line_location_id,session_id)
392 		 VALUES(po_rec.po_header_id,po_rec.po_line_id,po_rec.line_location_id,vp_session_id);
393 	    END LOOP;
394 	    IF  (po_cur%rowcount = 0 ) THEN
395 	        DELETE FROM fv_doc_cr_temp
396 		 WHERE session_id = vp_session_id;
397 		 CLOSE po_cur;
398 		 EXIT;
399 	    END IF;
400 	    CLOSE po_cur;
401 	   END IF ;
402 
403 	      IF  (vp_shipment_header_id  IS NOT NULL OR  vp_rec_date  is NOT NULL) THEN
404 	          OPEN rec_cur;
405 	          DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
406 	          LOOP
407 	               FETCH rec_cur INTO rec_rec;
408 	               EXIT WHEN   rec_cur%NOTFOUND;
409 	              INSERT INTO fv_doc_cr_temp (po_header_id,po_line_id,po_line_location_id,session_id)
410 		      VALUES (rec_rec.po_header_id,rec_rec.po_line_id,rec_rec.line_location_id,vp_session_id);
411  	          END LOOP;
412 	          IF NOT (rec_cur%rowcount <> 0 ) THEN
413 			   DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
414 			   CLOSE rec_cur;
415 		           EXIT;
416 	           END IF;
417 	           CLOSE rec_cur;
418 	     END IF;
419 	    IF  (vp_invoice_id  IS NOT NULL OR vp_invoice_date  IS NOT NULL OR  vp_invoice_type  IS NOT NULL
420 	              OR  vp_invoice_amount IS NOT NULL) THEN
421 	          OPEN inv_cur;
422 	          DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
423 	          LOOP
424 	               FETCH inv_cur INTO inv_rec;
425 	               EXIT WHEN   inv_cur%NOTFOUND;
426 	               INSERT INTO fv_doc_cr_temp (po_header_id,po_line_id,po_line_location_id,session_id)
427 			VALUES (inv_rec.po_header_id,inv_rec.po_line_id,inv_rec.line_location_id,vp_session_id);
428  	         END LOOP;
429 	         IF (inv_cur%rowcount = 0 ) THEN
430 		     DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
431 		     CLOSE inv_cur;
432 		     EXIT;
433 	        END IF;
434 	        CLOSE inv_cur;
435 	     END IF;
436 	     IF (vp_check_id IS NOT NULL  OR vp_check_date  IS NOT NULL
437 	        OR   vp_amount   IS NOT NULL OR  vp_treasury_pay_number  IS NOT NULL
438 	        OR   vp_treasury_pay_date IS NOT NULL) THEN
439 	        OPEN pay_cur;
440 	        DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
441 	        LOOP
442 	             FETCH pay_cur INTO pay_rec;
443 	             EXIT WHEN   pay_cur%NOTFOUND;
444 	             INSERT INTO fv_doc_cr_temp (po_header_id,po_line_id,po_line_location_id,session_id)
445 		     VALUES (pay_rec.po_header_id,pay_rec.po_line_id,pay_rec.line_location_id,vp_session_id);
446  	         END LOOP;
447 	         IF NOT  (pay_cur%rowcount <> 0 ) THEN
448 		   DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
449      	           CLOSE pay_cur;
450  	           EXIT;
451  	         END IF;
452  	         CLOSE pay_cur;
453 	      END IF;
454 	      EXIT;
455         END LOOP;
456 EXCEPTION
457    WHEN OTHERS THEN
458      l_errbuf := SQLERRM;
459      FV_UTILITY.LOG_MESG(FND_LOG.LEVEL_UNEXPECTED, l_module_name||'.final_exception',l_errbuf);
460      RAISE;
461 
462 END po_master;
463 
464 PROCEDURE req_master  IS
465   l_module_name VARCHAR2(200) := g_module_name || 'req_master';
466   l_errbuf      VARCHAR2(1024);
467 
468 	CURSOR po_cur IS
469 	SELECT prh.requisition_header_id ,prl.requisition_line_id
470 	FROM po_requisition_headers  prh,po_requisition_lines  prl,po_line_locations pll,po_headers ph
471 	WHERE 	prh.requisition_header_id =prl.requisition_header_id
472 	AND pll.line_location_id = prl.line_location_id
473         AND ph.po_header_id = pll.po_header_id
474 	AND ph.vendor_id = vp_vendor_id
475 	AND ph.vendor_site_id = vp_vendor_site_id
476 	AND ph.po_header_id = NVL(vp_po_header_id,ph.po_header_id)
477 	AND TRUNC(ph.creation_date) = NVL(vp_po_date,TRUNC(ph.creation_date))
478 	AND ph.agent_id = nvl(vp_buyer,ph.agent_id)
479 	AND NOT EXISTS(SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
480 		UNION
481 	SELECT prh.requisition_header_id ,prl.requisition_line_id
482 	FROM po_requisition_headers  prh,po_requisition_lines  prl,po_line_locations pll,po_headers ph
483 	WHERE 	prh.requisition_header_id = prl.requisition_header_id
484 	AND pll.line_location_id = prl.line_location_id
485         AND ph.po_header_id = pll.po_header_id
486 	AND ph.vendor_id = vp_vendor_id
487 	AND ph.vendor_site_id = vp_vendor_site_id
488 	AND ph.po_header_id = NVL(vp_po_header_id,ph.po_header_id)
489 	AND TRUNC(ph.creation_date) = NVL(vp_po_date,TRUNC(ph.creation_date))
490 	AND ph.agent_id = nvl(vp_buyer,ph.agent_id)
491 	AND EXISTS (SELECT 1 FROM fv_doc_cr_temp  fst
492 		 WHERE  fst.requisition_header_id = prh.requisition_header_id
493 		 AND  requisition_line_id = prl.requisition_line_id
494 		 AND fst.session_id = vp_session_id);
495 
496 	po_rec    po_cur%ROWTYPE;
497 
498 
499       CURSOR req_cur IS
500 	SELECT   prh.requisition_header_id,prl.requisition_line_id
501 		FROM po_requisition_headers prh,po_requisition_lines prl
502 		WHERE prh.requisition_header_id = prl.requisition_header_id
503 		AND prh.requisition_header_id = NVL(vp_requisition_header_id,prh.requisition_header_id)
504 		AND authorization_status = 'APPROVED'
505 		AND prl.suggested_vendor_location = vp_supplier_site
506 		AND prl.suggested_vendor_name = vp_supplier_name
507 		AND TRUNC(prh.creation_date) = NVL(vp_req_date,TRUNC(prh.creation_date))
508      UNION
509 	SELECT  rh.requisition_header_id,rh.requisition_line_id
510 	FROM (SELECT DISTINCT  prh.requisition_header_id,
511 		prl.requisition_line_id,prl.line_location_id
512 		FROM po_requisition_headers prh,po_requisition_lines prl
513 		WHERE prl.requisition_header_id = prh.requisition_header_id
514 		AND prh.requisition_header_id = NVL(vp_requisition_header_id,prh.requisition_header_id)
515 		AND authorization_status = 'APPROVED'
516 		AND TRUNC(prh.creation_date) = NVL(vp_req_date,TRUNC(prh.creation_date))) rh,
517 	po_line_locations plx,po_headers ph
518 	WHERE  plx.line_location_id = rh.line_location_id
519 	AND plx.po_header_id = ph.po_header_id
520 	AND ph.vendor_id = vp_vendor_id
521 	AND ph.vendor_site_id = vp_vendor_site_id
522 	AND NOT EXISTS (SELECT 1 FROM po_vendors pv,po_requisition_lines prl,po_vendor_sites pvs
523           WHERE prl.suggested_vendor_name = pv.vendor_name
524           AND prl.suggested_vendor_location = pvs.vendor_site_code
525           AND prl.requisition_line_id = rh.requisition_line_id );
526 
527 
528       req_rec    req_cur%ROWTYPE;
529 
530     CURSOR rec_cur IS
531 	SELECT requisition_header_id,prl.requisition_line_id FROM po_requisition_lines prl
532 	WHERE NOT EXISTS(SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
533 	AND (EXISTS (SELECT 1 FROM po_req_distributions prd
534 		WHERE prd.requisition_line_id = prl.requisition_line_id
535 		AND EXISTS (SELECT 1 FROM rcv_transactions rt,po_headers ph
536 		   WHERE rt.po_header_id = ph.po_header_id
537 		   AND rt.req_distribution_id = prd.distribution_id
538 		   AND ph.vendor_site_id = vp_vendor_site_id
539 		   AND 	EXISTS (SELECT 1 FROM rcv_shipment_headers rsh
540 		   	WHERE rsh.vendor_id = vp_vendor_id
541 		    	AND rsh.shipment_header_id = rt.shipment_header_id
542    		    	AND rsh.shipment_header_id = NVL(vp_shipment_header_id,rsh.shipment_header_id)
543 			AND TRUNC(rsh.creation_date) = NVL(vp_rec_date,TRUNC(rsh.creation_date)))))
544 	   OR EXISTS (SELECT 1 FROM po_distributions pd
545 		WHERE pd.line_location_id = prl.line_location_id
546 		AND EXISTS (SELECT 1 FROM rcv_transactions rt,po_headers ph
547 		   WHERE rt.po_header_id = ph.po_header_id
548 		   AND rt.po_line_location_id = pd.line_location_id
549 		   AND ph.vendor_site_id = vp_vendor_site_id
550 		   AND 	EXISTS (SELECT 1 FROM rcv_shipment_headers rsh
551 		   	WHERE rsh.vendor_id = vp_vendor_id
552 		    	AND rsh.shipment_header_id = rt.shipment_header_id
553    		    	AND rsh.shipment_header_id = NVL(vp_shipment_header_id,rsh.shipment_header_id)
554 			AND TRUNC(rsh.creation_date) = NVL(vp_rec_date,TRUNC(rsh.creation_date))))))
555 
556 			UNION
557 	SELECT requisition_header_id,prl.requisition_line_id   FROM po_requisition_lines prl
558 	WHERE  EXISTS(SELECT 1 FROM fv_doc_cr_temp
559 		WHERE requisition_header_id = prl.requisition_header_id
560 		AND  requisition_line_id = prl.requisition_line_id
561 		AND  session_id = vp_session_id)
562 	AND (EXISTS (SELECT 1 FROM po_req_distributions prd
563 		WHERE prd.requisition_line_id = prl.requisition_line_id
564 		AND EXISTS (SELECT 1 FROM rcv_transactions rt,po_headers ph
565 		   WHERE rt.po_header_id = ph.po_header_id
566 		   AND rt.req_distribution_id = prd.distribution_id
567 		   AND ph.vendor_site_id = vp_vendor_site_id
568 		   AND 	EXISTS (SELECT 1 FROM rcv_shipment_headers rsh
569 		   	WHERE rsh.vendor_id = vp_vendor_id
570 		    	AND rsh.shipment_header_id = rt.shipment_header_id
571    		    	AND rsh.shipment_header_id = NVL(vp_shipment_header_id,rsh.shipment_header_id)
572 			AND TRUNC(rsh.creation_date) = NVL(vp_rec_date,TRUNC(rsh.creation_date)))))
573 	   OR EXISTS (SELECT 1 FROM po_distributions pd
574 		WHERE pd.line_location_id = prl.line_location_id
575 		AND EXISTS (SELECT 1 FROM rcv_transactions rt,po_headers ph
576 		   WHERE rt.po_header_id = ph.po_header_id
577 		   AND rt.po_line_location_id = pd.line_location_id
578 		   AND ph.vendor_site_id = vp_vendor_site_id
579 		   AND 	EXISTS (SELECT 1 FROM rcv_shipment_headers rsh
580 		   	WHERE rsh.vendor_id = vp_vendor_id
581 		    	AND rsh.shipment_header_id = rt.shipment_header_id
582    		    	AND rsh.shipment_header_id = NVL(vp_shipment_header_id,rsh.shipment_header_id)
583 			AND TRUNC(rsh.creation_date) = NVL(vp_rec_date,TRUNC(rsh.creation_date))))));
584 
585 
586        rec_rec rec_cur%ROWTYPE;
587 
588 
589       CURSOR inv_cur IS
590 	SELECT prl.requisition_header_id,prl.requisition_line_id FROM po_requisition_lines prl
591 	WHERE  NOT EXISTS(SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
592 	AND EXISTS (SELECT 1 FROM po_req_distributions prd
593 	    WHERE prd.requisition_line_id = prl.requisition_line_id
594 	    AND EXISTS (SELECT 1 FROM po_distributions pd
595 	        WHERE pd.req_distribution_id = prd.distribution_id
596 	        AND (EXISTS (SELECT 1 FROM ap_invoice_distributions aid
597 	 		WHERE aid.po_distribution_id= pd.po_distribution_id
598 			AND EXISTS (SELECT 1 FROM ap_invoices ai
599 			    WHERE ai.invoice_id = aid.invoice_id
600 			    AND ai.vendor_id = vp_vendor_id
601  	                    AND ai.vendor_site_id = vp_vendor_site_id
602 			    AND ai.invoice_id = NVL(vp_invoice_id,invoice_id)
603 			    AND TRUNC(ai.invoice_date) = nvl(vp_invoice_date,TRUNC(ai.invoice_date))
604 			    AND ai.invoice_type_lookup_code = nvl(vp_invoice_type,invoice_type_lookup_code)
605 			    AND ai.invoice_amount = nvl(vp_invoice_amount,invoice_amount)))
606 	            OR EXISTS (SELECT 1 FROM po_line_locations pll
607 	             	WHERE  pll.line_location_id  = pd.line_location_id
608 	               	AND EXISTS ( SELECT 1 FROM rcv_transactions rt
609 	               	    WHERE rt.po_line_location_id = pll.line_location_id
610 	                    AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
611 	                        WHERE aid.rcv_transaction_id = rt.transaction_id
612 	                	AND EXISTS (SELECT 1 FROM ap_invoices ai
613 				    WHERE ai.invoice_id = aid.invoice_id
614 				    AND ai.vendor_id = vp_vendor_id
615  	                            AND ai.vendor_site_id = vp_vendor_site_id
616 				    AND ai.invoice_id = NVL(vp_invoice_id,invoice_id)
617 				    AND TRUNC(ai.invoice_date) = nvl(vp_invoice_date,TRUNC(ai.invoice_date))
618 				    AND ai.invoice_type_lookup_code = nvl(vp_invoice_type,invoice_type_lookup_code)
619 				    AND ai.invoice_amount = nvl(vp_invoice_amount,invoice_amount))))))))
620 		UNION
621 	SELECT prl.requisition_header_id,prl.requisition_line_id FROM po_requisition_lines prl
622 	WHERE   EXISTS(SELECT 1 FROM fv_doc_cr_temp
623 	  WHERE requisition_header_id = prl.requisition_header_id
624 	  AND  requisition_line_id = prl.requisition_line_id
625 	  AND session_id = vp_session_id)
626 	  AND EXISTS (SELECT 1 FROM po_req_distributions prd
627             WHERE prd.requisition_line_id = prl.requisition_line_id
628 	    AND EXISTS (SELECT 1 FROM po_distributions pd
629 	     WHERE pd.req_distribution_id = prd.distribution_id
630 	     AND (EXISTS (SELECT 1 FROM ap_invoice_distributions aid
631 	      WHERE aid.po_distribution_id= pd.po_distribution_id
632 	      AND EXISTS (SELECT 1 FROM ap_invoices ai
633 		WHERE ai.invoice_id = aid.invoice_id
634 		AND ai.vendor_id = vp_vendor_id
635  		AND ai.vendor_site_id = vp_vendor_site_id
636 		AND ai.invoice_id = NVL(vp_invoice_id,invoice_id)
637 		AND trunc(ai.invoice_date) = nvl(vp_invoice_date,trunc(ai.invoice_date))
638 		AND ai.invoice_type_lookup_code = NVL(vp_invoice_type,invoice_type_lookup_code)
639                 AND ai.invoice_amount = nvl(vp_invoice_amount,invoice_amount)))
640                 OR EXISTS (SELECT 1 FROM po_line_locations pll
641 		   WHERE pll.line_location_id  = pd.line_location_id
642                	   AND EXISTS (SELECT 1 FROM rcv_transactions rt
643 		    WHERE rt.po_line_location_id = pll.line_location_id
644                     AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
645 		     WHERE aid.rcv_transaction_id = rt.transaction_id
646 		     AND EXISTS (SELECT 1 FROM ap_invoices ai
647 		      WHERE ai.invoice_id = aid.invoice_id
648 		      AND ai.vendor_id = vp_vendor_id
649  		      AND ai.vendor_site_id = vp_vendor_site_id
650 		      AND ai.invoice_id = NVL(vp_invoice_id,invoice_id)
651 		      AND TRUNC(ai.invoice_date) = NVL(vp_invoice_date,TRUNC(ai.invoice_date))
652 		      AND ai.invoice_type_lookup_code =NVL(vp_invoice_type,invoice_type_lookup_code)
653 		      AND ai.invoice_amount = nvl(vp_invoice_amount,invoice_amount))))))));
654 
655             inv_rec inv_cur%ROWTYPE;
656 
657 	CURSOR pay_cur IS
658 	SELECT prl.requisition_header_id,prl.requisition_line_id FROM po_requisition_lines prl
659 	WHERE   NOT EXISTS(SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
660 	AND EXISTS (SELECT 1 FROM po_req_distributions prd WHERE prd.requisition_line_id = prl.requisition_line_id
661 	AND EXISTS (SELECT 1 FROM po_distributions pd
662 	 WHERE pd.req_distribution_id = prd.distribution_id
663 	 AND (EXISTS (SELECT 1 FROM ap_invoice_distributions aid
664 	  WHERE aid.po_distribution_id = pd.po_distribution_id
665 	  AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
666 	   WHERE aip.invoice_id = aid.invoice_id
667 	   AND EXISTS (SELECT 1 FROM ap_checks ac
668 	    WHERE ac.check_id = aip.check_id
669 	    AND ac.vendor_id = vp_vendor_id
670 	    AND ac.vendor_site_id = vp_vendor_site_id
671 	    AND ac.check_id =  NVL(vp_check_id,ac.check_id)
672 	    AND ac.check_date = NVL(vp_check_date,ac.check_date)
673             AND ac.amount = nvl(vp_amount,ac.amount)
674 	    AND NVL(ac.treasury_pay_number,-1) =NVL(vp_treasury_pay_number,NVL(ac.treasury_pay_number,-1))
675  	    AND (TRUNC(ac.treasury_pay_date) = TRUNC(vp_treasury_pay_date)
676 		 OR vp_treasury_pay_date IS NULL))))
677 	    OR EXISTS (SELECT 1 FROM po_line_locations pll
678 	     WHERE  pll.line_location_id  = pd.line_location_id
679 	     AND EXISTS (SELECT 1 FROM rcv_transactions rt
680 	      WHERE rt.po_line_location_id = pll.line_location_id
681               AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
682                WHERE aid.rcv_transaction_id = rt.transaction_id
683 	       AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
684 	        WHERE aip.invoice_id = aid.invoice_id
685 	        AND EXISTS (SELECT 1 FROM ap_checks ac
686 		 WHERE ac.check_id = aip.check_id
687 		 AND ac.vendor_id = vp_vendor_id
688 		 AND ac.vendor_site_id = vp_vendor_site_id
689 		 AND ac.check_id =  NVL(vp_check_id,ac.check_id)
690 		 AND ac.check_date = NVL(vp_check_date,ac.check_date)
691 	         AND ac.amount = nvl(vp_amount,ac.amount)
692 		 AND NVL(ac.treasury_pay_number,-1) = NVL(vp_treasury_pay_number,NVL(ac.treasury_pay_number,-1))
693  		 AND (TRUNC(ac.treasury_pay_date) = TRUNC(vp_treasury_pay_date)
694                       OR vp_treasury_pay_date IS NULL)))))))))
695 				UNION
696 		SELECT prl.requisition_header_id,prl.requisition_line_id  FROM po_requisition_lines prl
697 		WHERE EXISTS(SELECT 1 FROM fv_doc_cr_temp
698 		     WHERE requisition_header_id = prl.requisition_header_id
699 		     AND  requisition_line_id = prl.requisition_line_id
700 		     AND session_id = vp_session_id)
701 		AND EXISTS (SELECT 1 FROM po_req_distributions prd
702 		 WHERE prd.requisition_line_id = prl.requisition_line_id
703 		 AND EXISTS (SELECT 1 FROM po_distributions pd
704 		  WHERE pd.req_distribution_id = prd.distribution_id
705 		  AND (EXISTS (SELECT 1 FROM ap_invoice_distributions aid
706  		   WHERE aid.po_distribution_id = pd.po_distribution_id
707 	           AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
708 		    WHERE aip.invoice_id = aid.invoice_id
709 		    AND EXISTS (SELECT 1 FROM ap_checks ac
710 		     WHERE ac.check_id = aip.check_id
711 		     AND ac.check_id =  NVL(vp_check_id,ac.check_id)
712 		     AND ac.check_date = NVL(vp_check_date,ac.check_date)
713 		     AND ac.amount = nvl(vp_amount,ac.amount)
714 		     AND NVL(ac.treasury_pay_number,-1) =NVL(vp_treasury_pay_number,NVL(ac.treasury_pay_number,-1))
715 	   	     AND (TRUNC(ac.treasury_pay_date) = TRUNC(vp_treasury_pay_date)
716                          OR vp_treasury_pay_date IS NULL))))
717 		   OR EXISTS (SELECT 1 FROM po_line_locations pll
718 		    WHERE  pll.line_location_id  = pd.line_location_id
719 		    AND EXISTS (SELECT 1 FROM rcv_transactions rt
720 		     WHERE rt.po_line_location_id = pll.line_location_id
721 		     AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
722 		      WHERE aid.rcv_transaction_id = rt.transaction_id
723 		      AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
724 		       WHERE aip.invoice_id = aid.invoice_id
725 		       AND EXISTS (SELECT 1 FROM ap_checks ac
726 			WHERE ac.check_id = aip.check_id
727 			AND ac.vendor_id = vp_vendor_id
728 			AND ac.vendor_site_id = vp_vendor_site_id
729 			AND ac.check_id =  NVL(vp_check_id,ac.check_id)
730 			AND ac.check_date = NVL(vp_check_date,ac.check_date)
731 			AND ac.amount = nvl(vp_amount,ac.amount)
732 			AND NVL(ac.treasury_pay_number,-1) =NVL(vp_treasury_pay_number,NVL(ac.treasury_pay_number,-1))
733  			AND (TRUNC(ac.treasury_pay_date) = TRUNC(vp_treasury_pay_date)
734 			     OR vp_treasury_pay_date IS NULL)))))))));
735         pay_rec pay_cur%ROWTYPE;
736      BEGIN
737         DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
738 	LOOP
739 
740 	IF (vp_requisition_header_id  IS NOT NULL OR  vp_req_date is NOT NULL) THEN
741 	      OPEN req_cur;
742 	      DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
743 	      LOOP
744 		  FETCH req_cur INTO req_rec;
745 		  EXIT WHEN  req_cur%NOTFOUND;
746 		  INSERT INTO fv_doc_cr_temp (requisition_header_id,requisition_line_id,session_id )
747 			      VALUES (req_rec.requisition_header_id,req_rec.requisition_line_id,vp_session_id );
748 	      END LOOP;
749 	      IF NOT (req_cur%rowcount <> 0 ) THEN
750 		DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
751 		CLOSE req_cur;
752 		EXIT;
753 	      END IF;
754 	      CLOSE req_cur;
755         END IF;
756 
757      IF  (vp_po_header_id   IS NOT NULL OR vp_po_date IS NOT NULL OR  vp_buyer IS NOT NULL) THEN
758 	  OPEN po_cur;
759 	  LOOP
760 	      FETCH po_cur INTO po_rec;
761 	      EXIT WHEN po_cur%NOTFOUND;
762 	      INSERT INTO fv_doc_cr_temp (requisition_header_id ,requisition_line_id,session_id)
763 			VALUES (po_rec.requisition_header_id,po_rec.requisition_line_id,vp_session_id );
764 	   END LOOP;
765 	   IF NOT (po_cur%rowcount <> 0 ) THEN
766 	      DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
767 	      CLOSE po_cur;
768 	      EXIT;
769 	   END IF;
770 	   CLOSE po_cur;
771       END IF ;
772 
773       IF  (vp_shipment_header_id  IS NOT NULL OR  vp_rec_date  is NOT NULL) THEN
774 	      OPEN rec_cur;
775               DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
776 	      LOOP
777 		  FETCH rec_cur INTO rec_rec;
778 		  EXIT WHEN   rec_cur%NOTFOUND;
779 	          INSERT INTO fv_doc_cr_temp (requisition_header_id ,requisition_line_id,session_id)
780 				VALUES (rec_rec.requisition_header_id,rec_rec.requisition_line_id,vp_session_id );
781 	      END LOOP;
782 	      IF NOT (rec_cur%rowcount <> 0 ) THEN
783 		   DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
784 		   CLOSE rec_cur;
785  		   EXIT;
786               END IF;
787               CLOSE rec_cur;
788       END IF;
789 
790       IF  (vp_invoice_id  IS NOT NULL OR vp_invoice_date  IS NOT NULL OR  vp_invoice_type  IS NOT NULL
791               OR  vp_invoice_amount IS NOT NULL) THEN
792               OPEN inv_cur;
793               DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
794               LOOP
795                   FETCH inv_cur INTO inv_rec;
796                   EXIT WHEN   inv_cur%NOTFOUND;
797 	          INSERT INTO fv_doc_cr_temp (requisition_header_id ,requisition_line_id,session_id)
798 	   		      VALUES (inv_rec.requisition_header_id,inv_rec.requisition_line_id,vp_session_id);
799        	      END LOOP;
800               IF (inv_cur%rowcount = 0 ) THEN
801                   CLOSE inv_cur;
802                   DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
803                   EXIT;
804               END IF;
805               CLOSE inv_cur;
806 	END IF;
807 	IF (vp_check_id IS NOT NULL  OR vp_check_date  IS NOT NULL OR   vp_amount   IS NOT NULL
808 	    OR  vp_treasury_pay_number  IS NOT NULL OR  vp_treasury_pay_date IS NOT NULL) THEN
809 	    OPEN pay_cur;
810 	    DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
811 	    LOOP
812 		  FETCH pay_cur INTO pay_rec;
813 		  EXIT WHEN   pay_cur%NOTFOUND;
814 	          INSERT INTO fv_doc_cr_temp (requisition_header_id ,requisition_line_id,session_id)
815 			VALUES (pay_rec.requisition_header_id,pay_rec.requisition_line_id,vp_session_id );
816 	      END LOOP;
817 	      IF NOT (pay_cur%rowcount <> 0 ) THEN
818 		   DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
819 	           CLOSE pay_cur;
820 		   EXIT;
821 	      END IF;
822 	      CLOSE pay_cur;
823 	   END IF;
824 	   EXIT;
825     END LOOP;
826 EXCEPTION
827    WHEN OTHERS THEN
828      l_errbuf := SQLERRM;
829      FV_UTILITY.LOG_MESG(FND_LOG.LEVEL_UNEXPECTED, l_module_name||'.final_exception',l_errbuf);
830      RAISE;
831 
832 END req_master;
833 
834 PROCEDURE rec_master  IS
835   l_module_name VARCHAR2(200) := g_module_name || 'rec_master';
836   l_errbuf      VARCHAR2(1024);
837 
838   CURSOR rec_cur IS
839      SELECT shipment_header_id FROM fv_receipt_master_v frm
840      WHERE shipment_header_id = NVL(vp_shipment_header_id,shipment_header_id)
841      AND TRUNC(receipt_date) = NVL(vp_rec_date,TRUNC(receipt_date))
842      AND vendor_id = vp_vendor_id
843      AND  vendor_site_id = vp_vendor_site_id;
844    rec_rec rec_cur%ROWTYPE;
845 
846    CURSOR po_cur IS
847     SELECT rsh.shipment_header_id FROM rcv_shipment_headers rsh
848           WHERE EXISTS (SELECT 1 FROM rcv_transactions rt
849           	WHERE rt.shipment_header_id = rsh.shipment_header_id
850           	AND EXISTS (select 1 FROM po_headers ph
851 	     	    WHERE ph.po_header_id = rt.po_header_id
852 	   	    AND vendor_id = vp_vendor_id
853 		    AND vendor_site_id = vp_vendor_site_id
854 		    AND ph.po_header_id = NVL(vp_po_header_id,ph.po_header_id)
855 		    AND TRUNC(ph.creation_date) = nvl(vp_po_date,TRUNC(ph.creation_date))
856 		    AND ph.agent_id = NVL(vp_buyer,ph.agent_id)))
857 		AND NOT EXISTS(SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
858 			UNION
859 	SELECT shipment_header_id FROM rcv_shipment_headers rsh
860           WHERE EXISTS (SELECT 1 FROM rcv_transactions rt
861           	WHERE rt.shipment_header_id = rsh.shipment_header_id
862           	AND EXISTS (select 1 FROM po_headers ph
863 	     	    WHERE ph.po_header_id = rt.po_header_id
864 	   	    AND vendor_id = vp_vendor_id
865 		    AND vendor_site_id = vp_vendor_site_id
866 		    AND ph.po_header_id = NVL(vp_po_header_id,ph.po_header_id)
867 		    AND TRUNC(ph.creation_date) = nvl(vp_po_date,TRUNC(ph.creation_date))
868 		    AND ph.agent_id = NVL(vp_buyer,ph.agent_id)))
869      	       AND  EXISTS(SELECT 1 FROM fv_doc_cr_temp
870 		   WHERE shipment_header_id = rsh.shipment_header_id
871 		   AND session_id = vp_session_id);
872       po_rec rec_cur%ROWTYPE;
873   CURSOR req_cur IS
874   SELECT rsh.shipment_header_id FROM rcv_shipment_headers rsh
875 	 WHERE  rsh.vendor_id = vp_vendor_id
876 	 AND NOT EXISTS (SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
877 	 AND EXISTS(SELECT 1 FROM rcv_transactions rt,po_headers ph
878 	     WHERE ph.po_header_id = rt.po_header_id
879 	     AND rt.shipment_header_id = rsh.shipment_header_id
880 	     AND ph.vendor_site_id = vp_vendor_site_id
881 	     AND (EXISTS (SELECT 1 FROM po_req_distributions prd
882 	          WHERE prd.distribution_id = rt.req_distribution_id
883 	          AND EXISTS (SELECT 1 FROM po_requisition_lines prl,po_requisition_headers prh
884 	              WHERE prl.requisition_header_id = prh.requisition_header_id
885 		      AND prl.requisition_line_id  = prd.requisition_line_id
886       		      AND prh.requisition_header_id = NVL(vp_requisition_header_id ,prh.requisition_header_id)
887       		      AND TRUNC(prh.creation_date) = NVL(vp_req_date,TRUNC(prh.creation_date))))
888 	       OR EXISTS (SELECT 1 FROM po_requisition_lines prl ,po_requisition_headers prh
889 	              WHERE prl.requisition_header_id = prh.requisition_header_id
890 		      AND prl.line_location_id  = rt.po_line_location_id
891       		      AND prh.requisition_header_id = NVL(vp_requisition_header_id ,prh.requisition_header_id)
892       		      AND TRUNC(prh.creation_date) = NVL(vp_req_date,TRUNC(prh.creation_date)))))
893 
894 	UNION
895 	SELECT shipment_header_id FROM rcv_shipment_headers rsh
896 	 WHERE  rsh.vendor_id = vp_vendor_id
897 	 AND  EXISTS (SELECT 1 FROM fv_doc_cr_temp fdct
898 		WHERE fdct.shipment_header_id = rsh.shipment_header_id
899 		AND fdct.session_id = vp_session_id)
900 	 AND EXISTS(SELECT 1 FROM rcv_transactions rt,po_headers ph
901 	     WHERE rt.po_header_id = ph.po_header_id
902 	     AND rt.shipment_header_id = rsh.shipment_header_id
903 	     AND ph.vendor_site_id = vp_vendor_site_id
904 	     AND (EXISTS (SELECT 1 FROM po_req_distributions prd
905 	          WHERE prd.distribution_id = rt.req_distribution_id
906 	          AND EXISTS (SELECT 1 FROM po_requisition_lines prl ,po_requisition_headers prh
907 	              WHERE prl.requisition_header_id = prh.requisition_header_id
908 		      AND prl.requisition_line_id  = prd.requisition_line_id
909       		      AND prh.requisition_header_id = NVL(vp_requisition_header_id ,prh.requisition_header_id)
910 	              AND TRUNC(prh.creation_date) = NVL(vp_req_date,TRUNC(prh.creation_date))))
911 	       OR EXISTS (SELECT 1 FROM po_requisition_lines prl ,po_requisition_headers prh
912 	              WHERE prl.requisition_header_id = prh.requisition_header_id
913 		      AND prl.line_location_id  = rt.po_line_location_id
914       		      AND prh.requisition_header_id = NVL(vp_requisition_header_id ,prh.requisition_header_id)
915 	              AND TRUNC(prh.creation_date) = NVL(vp_req_date,TRUNC(prh.creation_date)))));
916 
917 
918     req_rec req_cur%ROWTYPE;
919 
920 
921   CURSOR inv_cur IS
922 	SELECT shipment_header_id FROM rcv_shipment_headers rsh
923   	WHERE vendor_id = vp_vendor_id
924 	AND NOT EXISTS(SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
925 	AND EXISTS (SELECT 1 FROM rcv_transactions rt,po_headers ph
926 	    WHERE ph.po_header_id = rt.po_header_id
927             AND rt.shipment_header_id = rsh.shipment_header_id
928 	    AND ph.vendor_site_id = vp_vendor_site_id
929 	    AND EXISTS (SELECT 1 FROM po_distributions pd WHERE pd.line_location_id = rt.po_line_location_id
930 	    	AND EXISTS (SELECT 1 FROM ap_invoice_distributions ia
931 	    	    WHERE ia.po_distribution_id= pd.po_distribution_id
932 		    AND EXISTS (SELECT 1 FROM ap_invoices ap
933 			WHERE invoice_id = ia.invoice_id
934 			AND invoice_id = NVL(vp_invoice_id,invoice_id)
935 			AND TRUNC(ap.invoice_date) = nvl(vp_invoice_date,TRUNC(ap.invoice_date))
936 			AND invoice_type_lookup_code = nvl(vp_invoice_type,invoice_type_lookup_code)
937 			AND invoice_amount = nvl(vp_invoice_amount,invoice_amount)))))
938 		UNION
939 	SELECT shipment_header_id FROM rcv_shipment_headers rsh
940 	WHERE vendor_id = vp_vendor_id
941 	AND  EXISTS(SELECT 1 FROM fv_doc_cr_temp
942 		WHERE shipment_header_id = rsh.shipment_header_id
943 		AND session_id = vp_session_id)
944 	AND EXISTS (SELECT 1 FROM rcv_transactions rt ,po_headers ph
945 	    WHERE rt.po_header_id = ph.po_header_id
946 	    AND rt.shipment_header_id = rsh.shipment_header_id
947 	    AND ph.vendor_site_id = vp_vendor_site_id
948 	    AND EXISTS (SELECT 1 FROM po_distributions pd WHERE pd.line_location_id = rt.po_line_location_id
949 	    	AND EXISTS (SELECT 1 FROM ap_invoice_distributions ia
950 	    	    WHERE ia.po_distribution_id= pd.po_distribution_id
951 		    AND EXISTS (SELECT 1 FROM ap_invoices ap
952 			WHERE invoice_id = ia.invoice_id
953 			AND invoice_id = NVL(vp_invoice_id,invoice_id)
954 			AND TRUNC(ap.invoice_date) = nvl(vp_invoice_date,TRUNC(ap.invoice_date))
955 			AND invoice_type_lookup_code = nvl(vp_invoice_type,invoice_type_lookup_code)
956 			AND invoice_amount = nvl(vp_invoice_amount,invoice_amount)))));
957 
958        inv_rec inv_cur%ROWTYPE;
959      CURSOR pay_cur IS
960 	SELECT shipment_header_id FROM rcv_shipment_headers rsh
961 	WHERE vendor_id = vp_vendor_id
962 	AND NOT EXISTS(SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
963 	AND EXISTS (SELECT 1 FROM rcv_transactions rt,po_headers ph
964      	    WHERE rt.po_header_id = ph.po_header_id
965 	    AND rt.shipment_header_id = rsh.shipment_header_id
966      	    AND ph.vendor_site_id = vp_vendor_site_id
967 	    AND EXISTS (SELECT 1  FROM po_distributions pd WHERE pd.line_location_id = rt.po_line_location_id
968 	    	AND EXISTS( SELECT 1 FROM ap_invoice_distributions aid
969 		WHERE aid.po_distribution_id= pd.po_distribution_id
970 		AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
971 		    WHERE aip.invoice_id = aid.invoice_id
972 		    AND EXISTS (SELECT 1 FROM ap_checks ac
973 			WHERE ac.check_id = aip.check_id
974 			AND ac.check_id =  NVL(vp_check_id,ac.check_id)
975 			AND TRUNC(ac.check_date) = NVL(vp_check_date,TRUNC(ac.check_date))
976 			AND ac.amount = nvl(vp_amount,ac.amount)
977 			AND NVL(ac.treasury_pay_number,-1) = nvl(vp_treasury_pay_number,NVL(ac.treasury_pay_number,-1))
978 			AND (TRUNC(ac.treasury_pay_date) = TRUNC(vp_treasury_pay_date) OR vp_treasury_pay_date IS NULL))))))
979 	   UNION
980 	SELECT shipment_header_id FROM rcv_shipment_headers rsh
981   	WHERE vendor_id = vp_vendor_id
982 	AND EXISTS(SELECT 1 FROM fv_doc_cr_temp
983 		WHERE shipment_header_id = rsh.shipment_header_id
984 		AND session_id = vp_session_id)
985 	AND EXISTS (SELECT 1 FROM rcv_transactions rt,po_headers ph
986      	    WHERE rt.po_header_id = ph.po_header_id
987 	    AND rt.shipment_header_id = rsh.shipment_header_id
988      	    AND ph.vendor_site_id = vp_vendor_site_id
989 	    AND EXISTS (SELECT 1  FROM po_distributions pd
990                 WHERE pd.line_location_id = rt.po_line_location_id
991 	    	AND EXISTS( SELECT 1 FROM ap_invoice_distributions aid
992 		WHERE aid.po_distribution_id= pd.po_distribution_id
993 		AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
994 		    WHERE aip.invoice_id = aid.invoice_id
995 		    AND EXISTS (SELECT 1 FROM ap_checks ac
996 			WHERE ac.check_id = aip.check_id
997 			AND ac.check_id =  NVL(vp_check_id,ac.check_id)
998 			AND TRUNC(ac.check_date) = NVL(vp_check_date,TRUNC(ac.check_date))
999 			AND ac.amount = nvl(vp_amount,ac.amount)
1000 			AND NVL(ac.treasury_pay_number,-1) = NVL(vp_treasury_pay_number,NVL(ac.treasury_pay_number,-1))
1001 			AND (TRUNC(ac.treasury_pay_date) = TRUNC(vp_treasury_pay_date) OR vp_treasury_pay_date IS NULL))))));
1002 
1003 
1004     pay_rec pay_cur%ROWTYPE;
1005 BEGIN
1006       DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1007       LOOP
1008      IF  (vp_shipment_header_id  IS NOT NULL OR  vp_rec_date  is NOT NULL) THEN
1009          OPEN rec_cur;
1010          DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1011          LOOP
1012              FETCH rec_cur INTO rec_rec;
1013              EXIT WHEN  rec_cur%NOTFOUND;
1014              INSERT INTO fv_doc_cr_temp (shipment_header_id,session_id)
1015 				VALUES (rec_rec.shipment_header_id,vp_session_id);
1016          END LOOP;
1017          IF NOT (rec_cur%rowcount <> 0 ) THEN
1018 	   DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1019            CLOSE rec_cur;
1020            EXIT;
1021          END IF;
1022          CLOSE rec_cur;
1023     END IF;
1024     IF  (vp_po_header_id   IS NOT NULL OR vp_po_date IS NOT NULL OR  vp_buyer IS NOT NULL) THEN
1025         OPEN po_cur;
1026         LOOP
1027             FETCH po_cur INTO po_rec;
1028             EXIT WHEN po_cur%NOTFOUND;
1029             INSERT INTO fv_doc_cr_temp (shipment_header_id,session_id)
1030 			VALUES	  (po_rec.shipment_header_id,vp_session_id);
1031         END LOOP;
1032         IF NOT (po_cur%rowcount <> 0 ) THEN
1033           DELETE from fv_doc_cr_temp WHERE session_id = vp_session_id;
1034           CLOSE po_cur;
1035           EXIT;
1036         END IF;
1037         CLOSE po_cur;
1038      END IF ;
1039      IF (vp_requisition_header_id  IS NOT NULL OR  vp_req_date is NOT NULL) THEN
1040         OPEN req_cur;
1041         DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1042         LOOP
1043              FETCH req_cur INTO req_rec;
1044              EXIT WHEN   req_cur%NOTFOUND;
1045              INSERT INTO fv_doc_cr_temp (shipment_header_id,session_id)
1046 			VALUES (req_rec.shipment_header_id,vp_session_id);
1047         END LOOP;
1048         IF NOT (req_cur%rowcount <> 0 ) THEN
1049           DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1050 	  CLOSE req_cur;
1051 	  EXIT;
1052 	END IF;
1053 	CLOSE req_cur;
1054     END IF;
1055     IF  (vp_invoice_id  IS NOT NULL OR vp_invoice_date  IS NOT NULL OR  vp_invoice_type  IS NOT NULL
1056              OR  vp_invoice_amount IS NOT NULL) THEN
1057         OPEN inv_cur;
1058         DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1059         LOOP
1060            FETCH inv_cur INTO inv_rec;
1061            EXIT WHEN   inv_cur%NOTFOUND;
1062            INSERT INTO fv_doc_cr_temp (shipment_header_id,session_id)
1063 			VALUES (inv_rec.shipment_header_id,vp_session_id);
1064         END LOOP;
1065         IF NOT (inv_cur%rowcount <> 0 ) THEN
1066            DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1067 	   CLOSE inv_cur;
1068  	   EXIT;
1069 	END IF;
1070 	CLOSE inv_cur;
1071     END IF;
1072    IF (vp_check_id IS NOT NULL  OR vp_check_date  IS NOT NULL
1073       OR   vp_amount   IS NOT NULL OR  vp_treasury_pay_number  IS NOT NULL
1074       OR   vp_treasury_pay_date IS NOT NULL) THEN
1075       OPEN pay_cur;
1076       DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1077       LOOP
1078           FETCH pay_cur INTO pay_rec;
1079           EXIT WHEN   pay_cur%NOTFOUND;
1080           INSERT INTO fv_doc_cr_temp (shipment_header_id,session_id)
1081 		VALUES (pay_rec.shipment_header_id,vp_session_id);
1082       END LOOP;
1083       IF NOT (pay_cur%rowcount <> 0 ) THEN
1084         DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1085         CLOSE pay_cur;
1086         EXIT;
1087      END IF;
1088      CLOSE pay_cur;
1089   END IF;
1090   EXIT;
1091  END LOOP;
1092 EXCEPTION
1093    WHEN OTHERS THEN
1094      l_errbuf := SQLERRM;
1095      FV_UTILITY.LOG_MESG(FND_LOG.LEVEL_UNEXPECTED, l_module_name||'.final_exception',l_errbuf);
1096      RAISE;
1097 
1098 END rec_master;
1099 
1100 
1101 PROCEDURE inv_master  IS
1102   l_module_name VARCHAR2(200) := g_module_name || 'inv_master';
1103   l_errbuf      VARCHAR2(1024);
1104 
1105 CURSOR req_cur IS
1106    SELECT invoice_id FROM ap_invoices ai
1107    WHERE vendor_id = vp_vendor_id
1108    AND vendor_site_id = vp_vendor_site_id
1109    AND NOT EXISTS (SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
1110    AND (EXISTS (SELECT 1 FROM ap_invoice_distributions aid
1111 	WHERE aid.invoice_id = ai.invoice_id
1112 	AND EXISTS (SELECT 1 FROM po_distributions pd
1113 	    WHERE pd.po_distribution_id = aid.po_distribution_id
1114 	    AND EXISTS(SELECT 1 FROM po_req_distributions prd
1115 		WHERE prd.distribution_id = pd.req_distribution_id
1116 		AND EXISTS (SELECT 1 FROM po_requisition_lines prl
1117 		    WHERE prl.requisition_line_id = prd.requisition_line_id
1118 		    AND EXISTS (SELECT 1 FROM po_requisition_headers prh
1119 			WHERE prh.requisition_header_id = prl.requisition_header_id
1120 			AND prh.requisition_header_id = NVL(vp_requisition_header_id,prh.requisition_header_id )
1121 			AND TRUNC(prh.creation_date) = NVL(vp_req_date,TRUNC(prh.creation_date))))))
1122 	OR EXISTS (SELECT 1 FROM rcv_transactions rt
1123 	           WHERE rt.transaction_id = aid.rcv_transaction_id
1124 	           AND EXISTS (SELECT 1 FROM po_line_locations pll
1125 	           	WHERE rt.po_line_location_id = pll.line_location_id
1126 	           	AND EXISTS(SELECT 1 FROM po_distributions pd
1127 	           	      WHERE pd.line_location_id = pll.line_location_id
1128 	           	      AND EXISTS (SELECT 1 FROM po_req_distributions prd
1129 			WHERE prd.distribution_id = pd.req_distribution_id
1130 			AND EXISTS (SELECT 1 FROM po_requisition_lines prl
1131 				WHERE prl.requisition_line_id = prd.requisition_line_id
1132 				AND EXISTS (SELECT 1 FROM po_requisition_headers prh
1133 					WHERE prh.requisition_header_id = prl.requisition_header_id
1134 					AND prh.requisition_header_id =     NVL(vp_requisition_header_id,prh.requisition_header_id )
1135 					AND TRUNC(prh.creation_date) = NVL(vp_req_date,TRUNC(prh.creation_date))))))))))
1136      UNION
1137    SELECT invoice_id FROM ap_invoices ai
1138    WHERE vendor_id = vp_vendor_id
1139    AND vendor_site_id = vp_vendor_site_id
1140    AND  EXISTS (SELECT 1 FROM fv_doc_cr_temp
1141           WHERE invoice_id= ai.invoice_id
1142 	  AND session_id = vp_session_id)
1143    AND (EXISTS (SELECT 1 FROM ap_invoice_distributions aid
1144 	WHERE aid.invoice_id = ai.invoice_id
1145 	AND EXISTS (SELECT 1 FROM po_distributions pd
1146 	   WHERE pd.po_distribution_id = aid.po_distribution_id
1147 	   AND EXISTS(SELECT 1 FROM po_req_distributions prd
1148 	     WHERE prd.distribution_id = pd.req_distribution_id
1149 	     AND EXISTS (SELECT 1 FROM po_requisition_lines prl
1150 		WHERE prl.requisition_line_id = prd.requisition_line_id
1151 		AND EXISTS (SELECT 1 FROM po_requisition_headers prh
1152 		   WHERE prh.requisition_header_id = prl.requisition_header_id
1153 		   AND prh.requisition_header_id =NVL(vp_requisition_header_id,prh.requisition_header_id )
1154 		   AND TRUNC(prh.creation_date) = NVL(vp_req_date,TRUNC(prh.creation_date))))))
1155 	OR EXISTS (SELECT 1 FROM rcv_transactions rt
1156 	           WHERE rt.transaction_id = aid.rcv_transaction_id
1157 	           AND EXISTS (SELECT 1 FROM po_line_locations pll
1158 	           	WHERE rt.po_line_location_id = pll.line_location_id
1159 	           	AND EXISTS(SELECT 1 FROM po_distributions pd
1160 	           	      WHERE pd.line_location_id = pll.line_location_id
1161 	           	      AND EXISTS (SELECT 1 FROM po_req_distributions prd
1162 			WHERE prd.distribution_id = pd.req_distribution_id
1163 			AND EXISTS (SELECT 1 FROM po_requisition_lines prl
1164 				WHERE prl.requisition_line_id = prd.requisition_line_id
1165 				AND EXISTS (SELECT 1 FROM po_requisition_headers prh
1166 					WHERE prh.requisition_header_id = prl.requisition_header_id
1167 					AND prh.requisition_header_id =     NVL(vp_requisition_header_id,prh.requisition_header_id )
1168 					AND TRUNC(prh.creation_date) = NVL(vp_req_date,TRUNC(prh.creation_date))))))))));
1169 
1170 req_rec req_cur%ROWTYPE;
1171 
1172 CURSOR po_cur IS
1173    SELECT invoice_id FROM ap_invoices ai
1174    WHERE vendor_id = vp_vendor_id
1175    AND vendor_site_id = vp_vendor_site_id
1176    AND NOT EXISTS (SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
1177    AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
1178 		WHERE aid.invoice_id = ai.invoice_id
1179 		AND EXISTS (SELECT 1 FROM po_distributions pd
1180 			WHERE pd.po_distribution_id = aid.po_distribution_id
1181    			AND EXISTS(SELECT 1 FROM po_headers ph
1182 			WHERE ph.po_header_id = pd.po_header_id
1183 			AND ph.po_header_id = NVL(vp_po_header_id,ph.po_header_id )
1184 			AND TRUNC(ph.creation_date) = NVL( vp_po_date,TRUNC(ph.creation_date))))
1185 	        OR EXISTS (SELECT 1 FROM rcv_transactions rt
1186 			WHERE rt.transaction_id = aid.rcv_transaction_id
1187    			AND EXISTS(SELECT 1 FROM po_headers ph
1188 			WHERE ph.po_header_id = rt.po_header_id
1189 			AND ph.po_header_id = NVL(vp_po_header_id,rt.po_header_id )
1190 			AND TRUNC(ph.creation_date) = NVL( vp_po_date,TRUNC(ph.creation_date)))))
1191 	UNION
1192    SELECT invoice_id FROM ap_invoices ai
1193    WHERE vendor_id = vp_vendor_id
1194    AND vendor_site_id = vp_vendor_site_id
1195    AND  EXISTS (SELECT 1 FROM fv_doc_cr_temp
1196 	WHERE invoice_id = ai.invoice_id
1197         AND session_id = vp_session_id)
1198    AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
1199 		WHERE aid.invoice_id = ai.invoice_id
1200 		AND EXISTS (SELECT 1 FROM po_distributions pd
1201 			WHERE pd.po_distribution_id = aid.po_distribution_id
1202    			AND EXISTS(SELECT 1 FROM po_headers ph
1203 			WHERE ph.po_header_id = pd.po_header_id
1204 			AND ph.po_header_id = NVL(vp_po_header_id,ph.po_header_id )
1205 			AND TRUNC(ph.creation_date) = NVL( vp_po_date,TRUNC(ph.creation_date))))
1206 	        OR EXISTS (SELECT 1 FROM rcv_transactions rt
1207 			WHERE rt.transaction_id = aid.rcv_transaction_id
1208    			AND EXISTS(SELECT 1 FROM po_headers ph
1209 			WHERE ph.po_header_id = rt.po_header_id
1210 			AND ph.po_header_id = NVL(vp_po_header_id,rt.po_header_id )
1211 			AND TRUNC(ph.creation_date) = NVL( vp_po_date,TRUNC(ph.creation_date)))));
1212 
1213 
1214 
1215 
1216  po_rec po_cur%ROWTYPE;
1217 
1218 CURSOR rec_cur IS
1219    SELECT invoice_id FROM ap_invoices ai
1220 	   WHERE vendor_id = vp_vendor_id
1221 	   AND vendor_site_id = vp_vendor_site_id
1222 	   AND NOT EXISTS (SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
1223 	   AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
1224 		WHERE aid.invoice_id = ai.invoice_id
1225 		AND (EXISTS (SELECT 1 FROM rcv_transactions rt
1226 		    WHERE rt.transaction_id = aid.rcv_transaction_id
1227 		    AND EXISTS(SELECT 1 FROM rcv_shipment_headers rsh
1228 			WHERE rt.shipment_header_id = rsh.shipment_header_id
1229 			AND rsh.shipment_header_id = NVL(vp_shipment_header_id,rsh.shipment_header_id )
1230 			AND TRUNC(rsh.creation_date) = NVL( vp_rec_date,TRUNC(rsh.creation_date))))
1231 		OR EXISTS (SELECT 1 FROM po_distributions pd
1232 		    WHERE pd.po_distribution_id = aid.po_distribution_id
1233 		    AND EXISTS(SELECT 1 FROM rcv_shipment_lines rsl,rcv_shipment_headers rsh
1234 			WHERE rsl.po_line_location_id = pd.line_location_id
1235 			AND rsl.shipment_header_id = rsh.shipment_header_id
1236 			AND rsh.shipment_header_id = NVL(vp_shipment_header_id,rsh.shipment_header_id )
1237 			AND TRUNC(rsh.creation_date) = NVL( vp_rec_date,TRUNC(rsh.creation_date))))))
1238 	UNION
1239 	 SELECT invoice_id FROM ap_invoices ai
1240 	   WHERE vendor_id = vp_vendor_id
1241 	   AND vendor_site_id = vp_vendor_site_id
1242 	   AND  EXISTS (SELECT 1 FROM fv_doc_cr_temp
1243                 WHERE invoice_id = ai.invoice_id
1244 		AND session_id = vp_session_id)
1245 	   AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
1246 		WHERE aid.invoice_id = ai.invoice_id
1247 		AND (EXISTS (SELECT 1 FROM rcv_transactions rt
1248 		    WHERE rt.transaction_id = aid.rcv_transaction_id
1249 		    AND EXISTS(SELECT 1 FROM rcv_shipment_headers rsh
1250 			WHERE rt.shipment_header_id = rsh.shipment_header_id
1251 			AND rsh.shipment_header_id = NVL(vp_shipment_header_id,rsh.shipment_header_id )
1252 			AND TRUNC(rsh.creation_date) = NVL( vp_rec_date,TRUNC(rsh.creation_date))))
1253 		OR EXISTS (SELECT 1 FROM po_distributions pd
1254 		    WHERE pd.po_distribution_id = aid.po_distribution_id
1255 		    AND EXISTS(SELECT 1 FROM rcv_shipment_lines rsl,rcv_shipment_headers rsh
1256 			WHERE rsl.po_line_location_id = pd.line_location_id
1257 			AND rsl.shipment_header_id = rsh.shipment_header_id
1258 			AND rsh.shipment_header_id = NVL(vp_shipment_header_id,rsh.shipment_header_id )
1259 			AND TRUNC(rsh.creation_date) = NVL( vp_rec_date,TRUNC(rsh.creation_date))))));
1260 
1261       rec_rec  rec_cur%ROWTYPE;
1262 
1263 
1264  CURSOR inv_cur IS
1265   SELECT invoice_id FROM ap_invoices
1266 	   WHERE vendor_id = vp_vendor_id
1267 	   AND vendor_site_id = vp_vendor_site_id
1268 	   AND  invoice_id = NVL(vp_invoice_id,invoice_id)
1269 	   AND invoice_type_lookup_code = NVL(vp_invoice_type,invoice_type_lookup_code)
1270 	   AND invoice_amount = NVL(vp_invoice_amount,invoice_amount)
1271 	   AND   TRUNC(invoice_date) = NVL(TRUNC(vp_invoice_date), TRUNC(invoice_date)) ;
1272   inv_rec inv_cur%ROWTYPE;
1273 
1274 CURSOR pay_cur IS
1275  SELECT invoice_id FROM ap_invoices ai
1276 	   WHERE vendor_id = vp_vendor_id
1277 	   AND vendor_site_id = vp_vendor_site_id
1278 	   AND NOT EXISTS (SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
1279            AND EXISTS ( SELECT 1 FROM ap_invoice_payments aip
1280 		WHERE aip.invoice_id = ai.invoice_id
1281 		AND EXISTS (SELECT 1 FROM ap_checks ac
1282 		    WHERE ac.check_id = aip.check_id
1283 		    AND ac.check_id =  NVL(vp_check_id,ac.check_id)
1284 		    AND TRUNC(ac.check_date) = NVL(vp_check_date,TRUNC(ac.check_date))
1285 		    AND ac.amount = nvl(vp_amount,ac.amount)
1286 		    AND NVL(ac.treasury_pay_number,-1) = nvl(vp_treasury_pay_number,NVL(ac.treasury_pay_number,-1))
1287 		    AND (TRUNC(ac.treasury_pay_date) = TRUNC(vp_treasury_pay_date) OR vp_treasury_pay_date IS NULL)
1288 				))
1289 UNION
1290  SELECT invoice_id FROM ap_invoices ai
1291 	   WHERE vendor_id = vp_vendor_id
1292 	   AND vendor_site_id = vp_vendor_site_id
1293 	   AND  EXISTS (SELECT 1 FROM fv_doc_cr_temp
1294 		WHERE invoice_id = ai.invoice_id
1295 		AND session_id = vp_session_id)
1296            AND EXISTS ( SELECT 1 FROM ap_invoice_payments aip
1297 		WHERE aip.invoice_id = ai.invoice_id
1298 		AND EXISTS (SELECT 1 FROM ap_checks ac
1299 			WHERE ac.check_id = aip.check_id
1300 			AND ac.check_id =  NVL(vp_check_id,ac.check_id)
1301 			AND TRUNC(ac.check_date) = NVL(vp_check_date,TRUNC(ac.check_date))
1302 			AND ac.amount = nvl(vp_amount,ac.amount)
1303 			AND NVL(ac.treasury_pay_number,-1) = nvl(vp_treasury_pay_number,NVL(ac.treasury_pay_number,-1))
1304 			AND (TRUNC(ac.treasury_pay_date) = TRUNC(vp_treasury_pay_date) OR vp_treasury_pay_date IS NULL)
1305 					));
1306 pay_rec  pay_cur%ROWTYPE;
1307 
1308 
1309 BEGIN
1310      DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1311      LOOP
1312      IF  (vp_invoice_id  IS NOT NULL OR vp_invoice_date  IS NOT NULL OR
1313 	  vp_invoice_type  IS NOT NULL OR  vp_invoice_amount IS NOT NULL) THEN
1314        OPEN inv_cur;
1315        LOOP
1316              FETCH inv_cur INTO inv_rec;
1317              EXIT WHEN   inv_cur%NOTFOUND;
1318             INSERT INTO fv_doc_cr_temp (invoice_id,session_id)
1319 			VALUES (inv_rec.invoice_id,vp_session_id);
1320        END LOOP;
1321        IF  (inv_cur%rowcount = 0 ) THEN
1322 	   DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1323 	   CLOSE inv_cur;
1324            EXIT;
1325         END IF;
1326         CLOSE inv_cur;
1327     END IF;
1328     IF  (vp_po_header_id   IS NOT NULL OR vp_po_date IS NOT NULL OR  vp_buyer IS NOT NULL) THEN
1329          OPEN po_cur;
1330          LOOP
1331              FETCH po_cur INTO po_rec;
1332              EXIT WHEN po_cur%NOTFOUND;
1333              INSERT INTO fv_doc_cr_temp (invoice_id,session_id)
1334 			VALUES  (po_rec.invoice_id,vp_session_id);
1335           END LOOP;
1336           IF  (po_cur%rowcount = 0 ) THEN
1337                DELETE from fv_doc_cr_temp WHERE session_id = vp_session_id;
1338 	       CLOSE po_cur;
1339 	       EXIT;
1340 	   END IF;
1341 	   CLOSE po_cur;
1342       END IF ;
1343       IF (vp_requisition_header_id  IS NOT NULL OR  vp_req_date is NOT NULL) THEN
1344           OPEN req_cur;
1345           DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1346           LOOP
1347               FETCH req_cur INTO req_rec;
1348               EXIT WHEN   req_cur%NOTFOUND;
1349               INSERT INTO fv_doc_cr_temp (invoice_id,session_id)
1350 					VALUES (req_rec.invoice_id,vp_session_id);
1351           END LOOP;
1352           IF  (req_cur%rowcount =0 ) THEN
1353              DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1354 	     CLOSE req_cur;
1355 	     EXIT;
1356 	   END IF;
1357 	   CLOSE req_cur;
1358       END IF;
1359       IF  (vp_shipment_header_id  IS NOT NULL OR  vp_rec_date  is NOT NULL) THEN
1360           OPEN rec_cur;
1361           DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1362           LOOP
1363                FETCH rec_cur INTO rec_rec;
1364                EXIT WHEN   rec_cur%NOTFOUND;
1365                INSERT INTO fv_doc_cr_temp (invoice_id,session_id)
1366 				VALUES (rec_rec.invoice_id,vp_session_id);
1367           END LOOP;
1368           IF  (rec_cur%rowcount = 0 ) THEN
1369 	     DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1370 	     CLOSE rec_cur;
1371 	     EXIT;
1372 	  END IF;
1373 	  CLOSE rec_cur;
1374        END IF;
1375        IF (vp_check_id IS NOT NULL  OR vp_check_date  IS NOT NULL
1376           OR   vp_amount   IS NOT NULL OR  vp_treasury_pay_number  IS NOT NULL
1377           OR  vp_treasury_pay_date IS NOT NULL) THEN
1378            OPEN pay_cur;
1379            DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1380            LOOP
1381                FETCH pay_cur INTO pay_rec;
1382                EXIT WHEN   pay_cur%NOTFOUND;
1383                INSERT INTO fv_doc_cr_temp (invoice_id,session_id)
1384 			VALUES (pay_rec.invoice_id,vp_session_id);
1385             END LOOP;
1386             IF  (pay_cur%rowcount = 0 ) THEN
1387                DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1388 	       CLOSE pay_cur;
1389  	       EXIT;
1390 	    END IF;
1391 	    CLOSE pay_cur;
1392        END IF;
1393        EXIT;
1394     END LOOP;
1395 EXCEPTION
1396    WHEN OTHERS THEN
1397      l_errbuf := SQLERRM;
1398      FV_UTILITY.LOG_MESG(FND_LOG.LEVEL_UNEXPECTED, l_module_name||'.final_exception',l_errbuf);
1399      RAISE;
1400 
1401 END inv_master;
1402 
1403 
1404 PROCEDURE pay_master  IS
1405   l_module_name VARCHAR2(200) := g_module_name || 'pay_master';
1406   l_errbuf      VARCHAR2(1024);
1407 
1408 CURSOR req_cur IS
1409    SELECT check_id FROM ap_checks ac
1410    WHERE vendor_id = vp_vendor_id
1411    AND vendor_site_id = vp_vendor_site_id
1412    AND NOT EXISTS (SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
1413    AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
1414        WHERE aip.check_id = ac.check_id
1415        AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
1416 	   WHERE aid.invoice_id = aip.invoice_id
1417 	   AND (EXISTS (SELECT 1 FROM po_distributions pd
1418 		WHERE pd.po_distribution_id = aid.po_distribution_id
1419 		AND EXISTS(SELECT 1 FROM po_req_distributions prd
1420 			WHERE prd.distribution_id = pd.req_distribution_id
1421 			AND EXISTS (SELECT 1 FROM po_requisition_lines prl
1422 				WHERE prl.requisition_line_id = prd.requisition_line_id
1423 				AND EXISTS (SELECT 1 FROM po_requisition_headers prh
1424 				    WHERE prh.requisition_header_id = prl.requisition_header_id
1425 				    AND prh.requisition_header_id = NVL(vp_requisition_header_id,prh.requisition_header_id )
1426 				    AND TRUNC(prh.creation_date) = NVL(vp_req_date,TRUNC(prh.creation_date))))))
1427 		OR EXISTS (SELECT 1 FROM rcv_transactions rt
1428 			WHERE rt.transaction_id = aid.rcv_transaction_id
1429 			AND EXISTS (SELECT 1 FROM po_line_locations pll
1430 			    WHERE pll.line_location_id = rt.po_line_location_id
1431 			    AND EXISTS (SELECT 1 FROM  po_distributions pd
1432 			        WHERE pd.line_location_id = pll.line_location_id
1433 				AND EXISTS(SELECT 1 FROM po_req_distributions prd
1434 				    WHERE prd.distribution_id = pd.req_distribution_id
1435 				    AND EXISTS (SELECT 1 FROM po_requisition_lines prl
1436 					WHERE prl.requisition_line_id = prd.requisition_line_id
1437 					AND EXISTS (SELECT 1 FROM po_requisition_headers prh
1438 				    	  WHERE prh.requisition_header_id = prl.requisition_header_id
1439 				    	  AND prh.requisition_header_id =     NVL(vp_requisition_header_id,prh.requisition_header_id )
1440 				          AND TRUNC(prh.creation_date) = NVL(vp_req_date,TRUNC(prh.creation_date)))))))))))
1441 
1442 UNION
1443    SELECT check_id FROM ap_checks ac
1444    WHERE vendor_id = vp_vendor_id
1445    AND vendor_site_id = vp_vendor_site_id
1446    AND EXISTS (SELECT 1 FROM fv_doc_cr_temp
1447 		WHERE check_id = ac.check_id
1448 		AND session_id = vp_session_id)
1449       AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
1450        WHERE aip.check_id = ac.check_id
1451        AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
1452 	   WHERE aid.invoice_id = aip.invoice_id
1453 	   AND (EXISTS (SELECT 1 FROM po_distributions pd
1454 		WHERE pd.po_distribution_id = aid.po_distribution_id
1455 		AND EXISTS(SELECT 1 FROM po_req_distributions prd
1456 			WHERE prd.distribution_id = pd.req_distribution_id
1457 			AND EXISTS (SELECT 1 FROM po_requisition_lines prl
1458 				WHERE prl.requisition_line_id = prd.requisition_line_id
1459 				AND EXISTS (SELECT 1 FROM po_requisition_headers prh
1460 				    WHERE prh.requisition_header_id = prl.requisition_header_id
1461 				    AND prh.requisition_header_id = NVL(vp_requisition_header_id,prh.requisition_header_id )
1462 				    AND TRUNC(prh.creation_date) = NVL(vp_req_date,TRUNC(prh.creation_date))))))
1463 		OR EXISTS (SELECT 1 FROM rcv_transactions rt
1464 			WHERE rt.transaction_id = aid.rcv_transaction_id
1465 			AND EXISTS (SELECT 1 FROM po_line_locations pll
1466 			    WHERE pll.line_location_id = rt.po_line_location_id
1467 			    AND EXISTS (SELECT 1 FROM  po_distributions pd
1468 			        WHERE pd.line_location_id = pll.line_location_id
1469 				AND EXISTS(SELECT 1 FROM po_req_distributions prd
1470 				    WHERE prd.distribution_id = pd.req_distribution_id
1471 				    AND EXISTS (SELECT 1 FROM po_requisition_lines prl
1472 					WHERE prl.requisition_line_id = prd.requisition_line_id
1473 					AND EXISTS (SELECT 1 FROM po_requisition_headers prh
1474 				    	  WHERE prh.requisition_header_id = prl.requisition_header_id
1475 				    	  AND prh.requisition_header_id =     NVL(vp_requisition_header_id,prh.requisition_header_id )
1476 				          AND TRUNC(prh.creation_date) = NVL(vp_req_date,TRUNC(prh.creation_date)))))))))));
1477 req_rec req_cur%ROWTYPE;
1478 
1479 CURSOR po_cur IS
1480 	SELECT check_id FROM ap_checks ac
1481 	 WHERE  vendor_id =  vp_vendor_id
1482 	 AND vendor_site_id = vp_vendor_site_id
1483 	 AND NOT EXISTS (SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
1484 	 AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
1485 	      WHERE aip.check_id = ac.check_id
1486  	      AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
1487 		    WHERE aid.invoice_id = aip.invoice_id
1488 		    AND (EXISTS (SELECT 1 FROM po_distributions pd
1489 			   WHERE pd.po_distribution_id = aid.po_distribution_id
1490 			   AND EXISTS(SELECT 1 FROM po_headers ph
1491 				WHERE ph.po_header_id = pd.po_header_id
1492 				AND ph.po_header_id = NVL(vp_po_header_id,ph.po_header_id )
1493 				AND TRUNC(ph.creation_date) = NVL( vp_po_date,TRUNC(ph.creation_date))))
1494 		        OR EXISTS (SELECT 1 FROM rcv_transactions rt
1495 			   WHERE rt.transaction_id = aid.rcv_transaction_id
1496 			   AND EXISTS(SELECT 1 FROM po_headers ph
1497 				WHERE ph.po_header_id = rt.po_header_id
1498 				AND ph.po_header_id = NVL(vp_po_header_id,ph.po_header_id )
1499 				AND TRUNC(ph.creation_date) = NVL( vp_po_date,TRUNC(ph.creation_date)))))))
1500 
1501 	UNION
1502 	SELECT check_id FROM ap_checks ac
1503          WHERE  vendor_id =  vp_vendor_id
1504 	 AND vendor_site_id = vp_vendor_site_id
1505 	 AND  EXISTS (SELECT 1 FROM fv_doc_cr_temp
1506 		WHERE  check_id= ac.check_id
1507 		AND session_id = vp_session_id)
1508 	 AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
1509 	      WHERE aip.check_id = ac.check_id
1510  	      AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
1511 		    WHERE aid.invoice_id = aip.invoice_id
1512 		    AND (EXISTS (SELECT 1 FROM po_distributions pd
1513 			   WHERE pd.po_distribution_id = aid.po_distribution_id
1514 			   AND EXISTS(SELECT 1 FROM po_headers ph
1515 				WHERE ph.po_header_id = pd.po_header_id
1516 				AND ph.po_header_id = NVL(vp_po_header_id,ph.po_header_id )
1517 				AND TRUNC(ph.creation_date) = NVL( vp_po_date,TRUNC(ph.creation_date))))
1518 		        OR EXISTS (SELECT 1 FROM rcv_transactions rt
1519 			   WHERE rt.transaction_id = aid.rcv_transaction_id
1520 			   AND EXISTS(SELECT 1 FROM po_headers ph
1521 				WHERE ph.po_header_id = rt.po_header_id
1522 				AND ph.po_header_id = NVL(vp_po_header_id,ph.po_header_id )
1523 				AND TRUNC(ph.creation_date) = NVL( vp_po_date,TRUNC(ph.creation_date)))))));
1524 
1525   po_rec po_cur%ROWTYPE;
1526 
1527   CURSOR rec_cur IS
1528 	SELECT check_id FROM ap_checks ac
1529 	 WHERE  vendor_id =  vp_vendor_id
1530 	 AND vendor_site_id = vp_vendor_site_id
1531 	 AND NOT EXISTS (SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
1532 	 AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
1533 	        WHERE aip.check_id = ac.check_id
1534 	 	AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
1535 		    WHERE aid.invoice_id = aip.invoice_id
1536 		    AND EXISTS (SELECT 1 FROM po_distributions pd WHERE pd.po_distribution_id = aid.po_distribution_id
1537 		    	AND EXISTS( SELECT 1 FROM rcv_transactions rt
1538 			      WHERE rt.po_line_location_id = pd.line_location_id
1539 			      AND EXISTS(SELECT 1 FROM rcv_shipment_headers rsh
1540 					WHERE rt.shipment_header_id = rsh.shipment_header_id
1541 					AND rsh.shipment_header_id = NVL(vp_shipment_header_id,rsh.shipment_header_id )
1542 					AND TRUNC(rsh.creation_date) = NVL( vp_rec_date,TRUNC(rsh.creation_date)))))))
1543 	UNION
1544 	SELECT check_id FROM ap_checks ac
1545 	 WHERE  vendor_id =  vp_vendor_id
1546 	 AND vendor_site_id = vp_vendor_site_id
1547 	 AND  EXISTS (SELECT 1 FROM fv_doc_cr_temp
1548 		WHERE check_id = ac.check_id
1549 		AND session_id = vp_session_id)
1550 	 AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
1551 	        WHERE aip.check_id = ac.check_id
1552 	 	AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
1553 		    WHERE aid.invoice_id = aip.invoice_id
1554 		    AND EXISTS (SELECT 1 FROM po_distributions pd WHERE pd.po_distribution_id = aid.po_distribution_id
1555 		    	AND EXISTS( SELECT 1 FROM rcv_transactions rt
1556 			      WHERE rt.po_line_location_id = pd.line_location_id
1557 			      AND EXISTS(SELECT 1 FROM rcv_shipment_headers rsh
1558 					WHERE rt.shipment_header_id = rsh.shipment_header_id
1559 					AND rsh.shipment_header_id = NVL(vp_shipment_header_id,rsh.shipment_header_id )
1560 					AND TRUNC(rsh.creation_date) = NVL( vp_rec_date,TRUNC(rsh.creation_date)))))));
1561 
1562 rec_rec rec_cur%ROWTYPE;
1563 
1564 
1565       CURSOR inv_cur IS
1566       SELECT check_id FROM ap_checks ac
1567 	   WHERE  vendor_id =  vp_vendor_id
1568 		 AND vendor_site_id = vp_vendor_site_id
1569 		 AND NOT EXISTS (SELECT 1 FROM fv_doc_cr_temp WHERE session_id = vp_session_id)
1570 	         AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
1571 		             WHERE aip.check_id = ac.check_id
1572 			     AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
1573 			         WHERE aid.invoice_id = aip.invoice_id
1574 			         AND EXISTS (SELECT 1 FROM ap_invoices ai
1575 			  	     WHERE  ai.invoice_id = aid.invoice_id
1576 			  	     AND invoice_type_lookup_code = NVL(vp_invoice_type,invoice_type_lookup_code)
1577 				     AND ai.invoice_id = NVL(vp_invoice_id,ai.invoice_id )
1578 				     AND ai.invoice_amount = NVL(vp_invoice_amount,ai.invoice_amount)
1579 				     AND TRUNC(ai.invoice_date) = NVL( vp_invoice_date,TRUNC(ai.invoice_date)))))
1580 	UNION
1581 	SELECT check_id FROM ap_checks ac
1582 	   WHERE  vendor_id =  vp_vendor_id
1583 		 AND vendor_site_id = vp_vendor_site_id
1584 		 AND  EXISTS (SELECT 1 FROM fv_doc_cr_temp
1585 			WHERE check_id = ac.check_id
1586 			AND session_id = vp_session_id)
1587 	         AND EXISTS (SELECT 1 FROM ap_invoice_payments aip
1588 		     WHERE aip.check_id = ac.check_id
1589 		     AND EXISTS (SELECT 1 FROM ap_invoice_distributions aid
1590 			WHERE aid.invoice_id = aip.invoice_id
1591 			AND EXISTS (SELECT 1 FROM ap_invoices ai
1592 			    WHERE  ai.invoice_id = aid.invoice_id
1593 			    AND invoice_type_lookup_code = NVL(vp_invoice_type,invoice_type_lookup_code)
1594 			    AND ai.invoice_id = NVL(vp_invoice_id,ai.invoice_id )
1595 			    AND ai.invoice_amount = NVL(vp_invoice_amount,ai.invoice_amount)
1596 			    AND TRUNC(ai.invoice_date) = NVL(    TRUNC(vp_invoice_date),TRUNC(ai.invoice_date)))));
1597      inv_rec inv_cur%ROWTYPE;
1598 
1599      CURSOR pay_cur IS
1600 	SELECT check_id FROM ap_checks ac
1601 		WHERE vendor_id =  vp_vendor_id
1602 		AND vendor_site_id = vp_vendor_site_id
1603 		AND ac.check_id =  NVL(vp_check_id,ac.check_id)
1604 		AND ac.check_date = NVL(vp_check_date,ac.check_date)
1605 		AND ac.amount = nvl(vp_amount,ac.amount)
1606 		AND  (TRUNC(ac.treasury_pay_date) = TRUNC(vp_treasury_pay_date) OR vp_treasury_pay_date IS NULL)
1607 		AND  NVL(ac.treasury_pay_number,-1) = NVL(vp_treasury_pay_number,NVL(ac.treasury_pay_number,-1));
1608    pay_rec pay_cur%ROWTYPE;
1609 
1610 BEGIN
1611 	DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1612  	LOOP
1613 	IF (vp_check_id IS NOT NULL  OR vp_check_date  IS NOT NULL
1614 	   OR vp_amount   IS NOT NULL OR  vp_treasury_pay_date IS NOT NULL OR vp_treasury_pay_number IS NOT NULL) THEN
1615 	   OPEN pay_cur;
1616 	   DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1617 	   LOOP
1618 	       FETCH pay_cur INTO pay_rec;
1619 	       EXIT WHEN   pay_cur%NOTFOUND;
1620 	       INSERT INTO fv_doc_cr_temp (check_id,session_id)
1621 			VALUES (pay_rec.check_id,vp_session_id);
1622 	  END LOOP;
1623 	  IF NOT (pay_cur%rowcount <> 0 ) THEN
1624 	     DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1625 	     CLOSE pay_cur;
1626 	     EXIT;
1627 	  END IF;
1628 	  CLOSE pay_cur;
1629         END IF;
1630       	IF  (vp_po_header_id   IS NOT NULL OR vp_po_date IS NOT NULL OR  vp_buyer IS NOT NULL) THEN
1631              OPEN po_cur;
1632              LOOP
1633                 FETCH po_cur INTO po_rec;
1634                 EXIT WHEN po_cur%NOTFOUND;
1635                 INSERT INTO fv_doc_cr_temp (check_id,session_id)
1636 			VALUES	  (po_rec.check_id,vp_session_id);
1637 	    END LOOP;
1638 	   IF NOT (po_cur%rowcount <> 0 ) THEN
1639 	       DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1640 	       CLOSE po_cur;
1641 	       EXIT;
1642 	   END IF;
1643 	   CLOSE po_cur;
1644        END IF ;
1645        IF (vp_requisition_header_id  IS NOT NULL OR  vp_req_date is NOT NULL) THEN
1646           OPEN req_cur;
1647           DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1648           LOOP
1649                FETCH req_cur INTO req_rec;
1650                EXIT WHEN   req_cur%NOTFOUND;
1651                INSERT INTO fv_doc_cr_temp (check_id,session_id)
1652 			VALUES (req_rec.check_id,vp_session_id);
1653 	  END LOOP;
1654 	  IF NOT (req_cur%rowcount <> 0 ) THEN
1655 	       DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1656 	       CLOSE req_cur;
1657 	       EXIT;
1658 	  END IF;
1659       	  CLOSE req_cur;
1660        END IF;
1661        IF  (vp_shipment_header_id  IS NOT NULL OR  vp_rec_date  is NOT NULL) THEN
1662 	      OPEN rec_cur;
1663               DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1664               LOOP
1665                   FETCH rec_cur INTO rec_rec;
1666                   EXIT WHEN   rec_cur%NOTFOUND;
1667   		  INSERT INTO fv_doc_cr_temp (check_id,session_id)
1668 				VALUES (rec_rec.check_id,vp_session_id);
1669  	       END LOOP;
1670                IF NOT (rec_cur%rowcount <> 0 ) THEN
1671 		   DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1672                    CLOSE rec_cur;
1673                    EXIT;
1674                END IF;
1675                CLOSE rec_cur;
1676         END IF;
1677         IF  (vp_invoice_id  IS NOT NULL OR vp_invoice_date  IS NOT NULL
1678 	           OR  vp_invoice_type  IS NOT NULL OR  vp_invoice_amount IS NOT NULL) THEN
1679               OPEN inv_cur;
1680               DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1681               LOOP
1682                     FETCH inv_cur INTO inv_rec;
1683                     EXIT WHEN   inv_cur%NOTFOUND;
1684  		   INSERT INTO fv_doc_cr_temp (check_id,session_id)
1685 				VALUES (inv_rec.check_id,vp_session_id);
1686  	      END LOOP;
1687 	      IF NOT (inv_cur%rowcount <> 0 ) THEN
1688 		   DELETE FROM fv_doc_cr_temp WHERE session_id = vp_session_id;
1689 		   CLOSE inv_cur;
1690  	           EXIT;
1691 	      END IF;
1692 	      CLOSE inv_cur;
1693         END IF;
1694         EXIT;
1695     END LOOP;
1696 
1697 EXCEPTION
1698    WHEN OTHERS THEN
1699      l_errbuf := SQLERRM;
1700      FV_UTILITY.LOG_MESG(FND_LOG.LEVEL_UNEXPECTED, l_module_name||'.final_exception',l_errbuf);
1701      RAISE;
1702 
1703  end pay_master;
1704 
1705 
1706 END fv_cross_doc_ref;
1707 
1708 
1709 ----------------------------------------------------------------------
1710 --				END OF PACKAGE BODY
1711 ----------------------------------------------------------------------
1712