DBA Data[Home] [Help]

PACKAGE BODY: APPS.AP_VENDOR_PUB_PKG

Source


1 PACKAGE BODY AP_VENDOR_PUB_PKG AS
2 /* $Header: appvndrb.pls 120.78.12010000.28 2009/02/02 11:19:33 skyadav ship $ */
3 
4   --Global constants for logging
5   G_PKG_NAME          CONSTANT VARCHAR2(30) := 'AP_VENDOR_PUB_PKG';
6   G_MSG_UERROR        CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR;
7   G_MSG_ERROR         CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_ERROR;
8   G_MSG_SUCCESS       CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_SUCCESS;
9   G_MSG_HIGH          CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH;
10   G_MSG_MEDIUM        CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM;
11   G_MSG_LOW           CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW;
12   G_LINES_PER_FETCH   CONSTANT NUMBER := 1000;
13 
14   G_CURRENT_RUNTIME_LEVEL CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
15   G_LEVEL_UNEXPECTED      CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
16   G_LEVEL_ERROR           CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
17   G_LEVEL_EXCEPTION       CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
18   G_LEVEL_EVENT           CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
19   G_LEVEL_PROCEDURE       CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
20   G_LEVEL_STATEMENT       CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
21   G_MODULE_NAME           CONSTANT VARCHAR2(100) := 'AP.PLSQL.AP_VENDOR_PUB_PKG';
22 
23   G_Vendor_Type_Lookup_Code VARCHAR2(30);
24 
25   -- Global Constants to set null
26   ap_null_num             CONSTANT NUMBER := FND_API.G_NULL_NUM;
27   ap_null_char            CONSTANT VARCHAR2(1) := FND_API.G_NULL_CHAR;
28   ap_null_date            CONSTANT DATE     := FND_API.G_NULL_DATE;
29 
30 --Function: Insert_Rejections
31 --This function is called whenever the process needs to insert a
32 --rejection into new supplier interface rejection table.
33 
34 FUNCTION Insert_Rejections (
35           p_parent_table        IN     VARCHAR2,
36           p_parent_id           IN     NUMBER,
37           p_reject_code         IN     VARCHAR2,
38           p_last_updated_by     IN     NUMBER,
39           p_last_update_login   IN     NUMBER,
40           p_calling_sequence    IN     VARCHAR2)
41 RETURN BOOLEAN IS
42 
43   l_current_calling_sequence    VARCHAR2(2000);
44   l_debug_info                  VARCHAR2(500);
45   l_api_name           CONSTANT VARCHAR2(100) := 'INSERT_REJECTIONS';
46 
47 BEGIN
48   -- Update the calling sequence
49   l_current_calling_sequence := 'AP_VENDOR_PUB_PKG.Insert_rejections<-'
50                               ||P_calling_sequence;
51 
52   IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
53       FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Parameters: '
54                      ||' p_parent_table: '|| p_parent_table
55                      ||', p_parent_id: '||to_char(p_parent_id)
56                      ||', p_reject_code: '||p_reject_code);
57   END IF;
58   --
59   l_debug_info := '(Insert Rejections 1) Insert into AP_SUPPLIER_INT_REJECTIONS, '||
60                 'REJECT CODE:'||p_reject_code;
61   --
62   IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
63     FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,l_debug_info);
64   END IF;
65 
66   INSERT INTO AP_SUPPLIER_INT_REJECTIONS(
67           parent_table,
68           parent_id,
69           reject_lookup_code,
70           last_updated_by,
71           last_update_date,
72           last_update_login,
73           created_by,
74           creation_date)
75   VALUES (
76           p_parent_table,
77           p_parent_id,
78           p_reject_code,
79           p_last_updated_by,
80           SYSDATE,
81           p_last_update_login,
82           p_last_updated_by,
83           SYSDATE);
84 
85   RETURN(TRUE);
86 
87 EXCEPTION
88   WHEN OTHERS THEN
89     IF (SQLCODE <> -20001 ) THEN
90         FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
91         FND_MESSAGE.SET_TOKEN('ERROR', SQLERRM );
92         FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_current_calling_sequence );
93         FND_MESSAGE.SET_TOKEN('DEBUG_INFO', l_debug_info );
94     END IF;
95     --
96     IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
97       FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,SQLERRM);
98     END IF;
99 
100     RETURN (FALSE);
101 
102 END Insert_Rejections;
103 --
104 
105 PROCEDURE Val_Currency_Code(p_currency_code IN         VARCHAR2,
106                             x_valid         OUT NOCOPY BOOLEAN
107                             )
108 IS
109   l_count          NUMBER := 0;
110 
111 BEGIN
112   x_valid := TRUE;
113 
114   IF p_currency_code IS NOT NULL THEN
115      SELECT COUNT(*)
116      INTO   l_count
117      FROM   fnd_currencies_vl
118      WHERE  currency_code = p_currency_code
119      AND    enabled_flag = 'Y'
120      AND    currency_flag = 'Y'
121      AND    TRUNC(NVL(start_date_active, SYSDATE)) <= TRUNC(SYSDATE)
122      AND    TRUNC(NVL(end_date_active, SYSDATE))>= TRUNC(SYSDATE);
123 
124      IF l_count < 1 THEN
125 	x_valid    := FALSE;
126        	FND_MESSAGE.SET_NAME('SQLGL','GL_API_INVALID_CURR');
127 	FND_MSG_PUB.ADD;
128 
129      END IF;
130    END IF;
131 
132 END Val_Currency_Code;
133 
134 PROCEDURE Validate_Lookups(
135         p_column_name          IN      VARCHAR2,
136         p_column_value         IN      VARCHAR2,
137         p_lookup_type          IN      VARCHAR2,
138         p_lookup_table         IN      VARCHAR2,
139  	x_valid            OUT NOCOPY BOOLEAN
140         )
141 
142 	IS
143    	l_dummy_lookup       VARCHAR2(30);
144 
145 BEGIN
146    x_valid    := TRUE;
147 
148    IF p_lookup_table = 'AP_LOOKUP_CODES' THEN
149 
150         Begin
151                 SELECT lookup_code
152                 INTO l_dummy_lookup
153                 FROM ap_lookup_codes
154                 WHERE lookup_type = p_lookup_type
155                 AND lookup_code = p_column_value
156                 AND enabled_flag = 'Y'
157                 AND nvl(inactive_date,sysdate+1) > sysdate;
158 
159 
160 	EXCEPTION
161 	 WHEN NO_DATA_FOUND THEN
162          x_valid    := FALSE;
163          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
164          FND_MESSAGE.SET_TOKEN('COLUMN_NAME', p_column_name );
165 	 FND_MSG_PUB.ADD;
166 
167 	End;
168    ELSIF p_lookup_table = 'PO_LOOKUP_CODES' THEN
169         Begin
170                 SELECT lookup_code
171                 INTO l_dummy_lookup
172                 FROM po_lookup_codes
173                 WHERE lookup_type = p_lookup_type
174                 AND lookup_code = p_column_value
175                 AND enabled_flag = 'Y'
176                 AND nvl(inactive_date,sysdate+1) > sysdate;
177 
178 
179 	       EXCEPTION
180          WHEN NO_DATA_FOUND THEN
181          x_valid    := FALSE;
182          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
183          FND_MESSAGE.SET_TOKEN('COLUMN_NAME', p_column_name );
184 	 FND_MSG_PUB.ADD;
185 
186 	End;
187 
188    ELSIF p_lookup_table = 'FND_LOOKUP_VALUES' THEN
189         Begin
190                 SELECT lookup_code
191                 INTO l_dummy_lookup
192                 FROM fnd_lookup_values
193                 WHERE lookup_type = p_lookup_type
194                 AND lookup_code = p_column_value
195                 AND enabled_flag = 'Y'
196                 AND nvl(end_date_active,sysdate+1) > sysdate;
197 
198                EXCEPTION
199          WHEN NO_DATA_FOUND THEN
200          x_valid    := FALSE;
201          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
202          FND_MESSAGE.SET_TOKEN('COLUMN_NAME', p_column_name );
203 	 FND_MSG_PUB.ADD;
204         End;
205 
206    END IF;
207 
208 END validate_lookups;
209 
210 
211  PROCEDURE Check_dup_vendor_site ( x_vendor_id             IN NUMBER,
212                                    x_vendor_site_code      IN VARCHAR2,
213                                    x_org_name              IN VARCHAR2,
214                                    x_org_id                IN NUMBER,
215                                    x_valid                 OUT NOCOPY BOOLEAN)
216 IS
217 
218         l_dup_count_org_id              number;
219         l_dup_count_org_name            number;
220 
221  BEGIN
222 
223    IF x_org_id is NOT NULL THEN
224        SELECT count(*)
225         INTO   l_dup_count_org_id
226 	-- bug 7430783 Changing validation table to ap_supplier_sites_all
227         --FROM   po_vendor_sites_all SITE
228 	FROM   ap_supplier_sites_all SITE
229         WHERE  SITE.vendor_id = x_vendor_id
230         AND    SITE.org_id = x_org_id
231         AND    UPPER(SITE.vendor_site_code) = UPPER(x_vendor_site_code);
232 
233    ELSIF (x_org_id is NULL and x_org_name is NOT NULL)  THEN
234        SELECT count(*)
235         INTO   l_dup_count_org_name
236 	-- bug 7430783 Changing validation table to ap_supplier_sites_all
237         --FROM   po_vendor_sites_all SITE, HR_OPERATING_UNITS ORG
238 	FROM   ap_supplier_sites_all SITE, HR_OPERATING_UNITS ORG
239         WHERE  SITE.vendor_id = x_vendor_id
240         AND    ORG.name = x_org_name
241         AND    UPPER(vendor_site_code) = UPPER(x_vendor_site_code)
242         AND    SITE.org_id = ORG.organization_id;
243 
244    END IF;
245 
246       IF (l_dup_count_org_id > 0 OR l_dup_count_org_name > 0 ) THEN
247 	 x_valid    := FALSE;
248          fnd_message.set_name('SQLAP','AP_VEN_DUPLICATE_VEN_SITE');
249 	 FND_MSG_PUB.ADD;
250       END IF;
251 
252  END Check_dup_vendor_site;
253 
254  --
255  -- Check if the 1099 type is expected here
256  --
257  PROCEDURE Check_Valid_1099_type(p_1099_type    IN        VARCHAR2,
258                                  p_federal_flag IN        VARCHAR2,
259 				 x_valid         OUT NOCOPY BOOLEAN
260                                  ) IS
261  BEGIN
262     x_valid    := TRUE;
263 
264 
265 	IF (nvl(p_federal_flag,'N') = 'N' and p_1099_type is NOT NULL) THEN
266          x_valid    := FALSE;
267          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMNS_INCONSISTENT');
268          FND_MESSAGE.SET_TOKEN('ID','FEDERAL_REPORTABLE_FLAG');
269          FND_MESSAGE.SET_TOKEN('NAME','1099_TYPE');
270 	 FND_MSG_PUB.ADD;
271         END IF;
272 
273  END Check_Valid_1099_type;
274 
275  --
276  -- Check if the Payment_Priority number is valid
277  --
278  PROCEDURE Check_Payment_Priority(p_payment_priority   IN         NUMBER,
279                               x_valid                   OUT NOCOPY BOOLEAN
280                               ) IS
281  BEGIN
282     x_valid    := TRUE;
283 
284 
285         IF ((p_payment_priority < 1)  OR
286             (p_payment_priority > 99) OR
287             (p_payment_priority <> trunc(p_payment_priority))) THEN
288 
289          x_valid    := FALSE;
290 
291          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
292          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','PAYMENT_PRIORITY' );
293 	 FND_MSG_PUB.ADD;
294         END IF;
295  END Check_Payment_Priority;
296 
297  --
298  -- Check if the Employee is valid
299  --
300  PROCEDURE Check_Valid_Employee(p_employee_id    IN         NUMBER,
301                               x_valid            OUT NOCOPY BOOLEAN
302                               ) IS
303     l_dummy          hr_employees_current_v.employee_id%TYPE;
304 
305  BEGIN
306     x_valid    := TRUE;
307 
308        SELECT employee_id
309        INTO   l_dummy
310        FROM   hr_employees_current_v
311        WHERE  employee_id  = p_employee_id;
312 
313 
314      EXCEPTION
315     -- Trap validation error
316     WHEN NO_DATA_FOUND THEN
317          x_valid    := FALSE;
318 
319          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
320 	 FND_MESSAGE.SET_TOKEN('COLUMN_NAME','EMPLOYEE_ID' );
321 	 FND_MSG_PUB.ADD;
322 
323  END Check_Valid_Employee;
324 
325  --
326  -- Check if Inspection_required_flag and Receipt_required_flag are valid
327  --
328  PROCEDURE Check_Valid_match_level(p_inspection_reqd_flag      IN         VARCHAR2,
329                                    p_receipt_reqd_flag         IN         VARCHAR2,
330                                    x_valid                     OUT NOCOPY BOOLEAN
331                                    ) IS
332 
333  BEGIN
334     x_valid    := TRUE;
335 
336      IF (p_receipt_reqd_flag = 'N' and p_inspection_reqd_flag = 'Y') THEN
337         x_valid    := FALSE;
338          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMNS_INCONSISTENT');
339          FND_MESSAGE.SET_TOKEN('ID','INSPECTION_REQUIRED_FLAG');
340          FND_MESSAGE.SET_TOKEN('NAME','RECEIPT_REQUIRED_FLAG');
341 	 FND_MSG_PUB.ADD;
342      END IF;
343 
344  END Check_Valid_match_level;
345 
346  --
347  -- Check if the Name_control is valid
348  --
349  PROCEDURE Check_Valid_name_control(p_name_control     IN         VARCHAR2,
350                                     x_valid            OUT NOCOPY BOOLEAN
351                                     ) IS
352 
353  BEGIN
354     x_valid    := TRUE;
355 
356 	IF (nvl(NVL(length(ltrim(translate(p_name_control,
357 		'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&- ',
358 		'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'),'X')), 0),0) > 0) THEN
359 
360                 x_valid    := FALSE;
361                 FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
362                 FND_MESSAGE.SET_TOKEN('COLUMN_NAME','NAME_CONTROL' );
363 		FND_MSG_PUB.ADD;
364 	END IF;
365 
366  END Check_Valid_name_control;
367 
368  --
369  -- Check if ship_via_lookup_code is valid
370  --
371  PROCEDURE Check_Valid_ship_via(p_ship_via_lookup_code      IN  VARCHAR2,
372                                 p_inventory_org_id          IN  NUMBER DEFAULT NULL,
373 				x_valid            	    OUT NOCOPY BOOLEAN
374                               ) IS
375     l_dummy          number;
376 
377  BEGIN
378     x_valid    := TRUE;
379 
380        SELECT nvl(count(freight_code),0)
381        INTO   l_dummy
382        FROM   org_freight
383        WHERE  organization_id = p_inventory_org_id
384        AND    nvl(disable_date, sysdate +1 ) > sysdate
385        AND    freight_code = p_ship_via_lookup_code;
386 
387 
388        IF l_dummy < 1 THEN
389          x_valid    := FALSE;
390 
391          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
392          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','SHIP_VIA_LOOKUP_CODE' );
393 	 FND_MSG_PUB.ADD;
394        END IF;
395 
396  END Check_Valid_ship_via;
397 
398  --
399  -- Check if the set_of_books_id is valid
400  --
401  PROCEDURE Check_Valid_Sob_Id(p_sob_id           IN         NUMBER,
402                             x_valid            OUT NOCOPY BOOLEAN
403                             ) IS
404     l_dummy          GL_SETS_OF_BOOKS.set_of_books_id%TYPE;
405 
406  BEGIN
407     x_valid    := TRUE;
408 
409        SELECT set_of_books_id
410        INTO   l_dummy
411        FROM   GL_SETS_OF_BOOKS
412        WHERE  set_of_books_id = p_sob_id;
413 
414 
415  EXCEPTION
416     -- Trap validation error
417     WHEN NO_DATA_FOUND THEN
418          x_valid    := FALSE;
419          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
420          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','SET_OF_BOOKS_ID' );
421 	 FND_MSG_PUB.ADD;
422  END Check_Valid_Sob_Id;
423 
424  --
425  -- Check if the Employee has already been assigned
426  --
427  PROCEDURE Chk_Dup_Employee(p_vendor_id   IN         NUMBER,
428                             p_employee_id IN         NUMBER,
429                             x_valid       OUT NOCOPY BOOLEAN
430                            ) IS
431     l_count          NUMBER := 0;
432 
433  BEGIN
434     x_valid    := TRUE;
435 
436 
437        SELECT COUNT(*)
438        INTO   l_count
439        FROM   po_vendors
440        WHERE  (p_vendor_id IS NULL OR p_vendor_id = ap_null_num OR vendor_id <> p_vendor_id) --bug7023543
441        AND    employee_id = p_employee_id;
442 
443        IF l_count > 0 THEN
444 		x_valid    := FALSE;
445 
446 		FND_MESSAGE.SET_NAME('SQLAP','AP_EMPLOYEE_ASSIGNED');
447 		FND_MSG_PUB.ADD;
448        END IF;
449 
450  END Chk_Dup_Employee;
451 
452  --
453  -- Check for duplicate vendor number
454  --
455  PROCEDURE Chk_Dup_segment1_int(p_segment1      IN VARCHAR2,
456                                 x_valid         OUT NOCOPY BOOLEAN
457                                ) IS
458 
459    l_count          NUMBER := 1;
460 
461  BEGIN
462    x_valid    := TRUE;
463    --Bug 7526020 Validating SEGMENT1 against ap_suppliers instead of ap_suppliers_int
464    SELECT COUNT(*)
465    INTO   l_count
466    FROM   ap_suppliers
467    WHERE segment1 = p_segment1;
468 
469    IF l_count > 1 THEN
470 	x_valid    := FALSE;
471       	FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
472       	FND_MESSAGE.SET_TOKEN('COLUMN_NAME','SEGMENT1' );
473 	FND_MSG_PUB.ADD;
474    END IF;
475 
476  END Chk_Dup_segment1_int;
477 
478 --
479 -- Check for duplicate vendor names
480 --
481 /* Bug 6939863 - Made Chk_Dup_Vendor_Name_new with same logic as update.
482  * Bug 5606948 added a call to Chk_Dup_Vendor_Name_update in
483  * PROCEDURE Validate_Vendor even in Insert mode.
484  * Chk_Dup_Vendor_Name_new is not called from anywhere, so made this similar
485  * to Chk_Dup_Vendor_Name_update and also corrected employee_id logic
486  * in both calls.
487 PROCEDURE Chk_Dup_Vendor_Name_new(p_vendor_name    IN VARCHAR2,
488                               x_valid          OUT NOCOPY BOOLEAN
489                               ) IS
490   l_count          NUMBER := 0;
491 
492 BEGIN
493    x_valid    := TRUE;
494 
495    SELECT COUNT(*)
496    INTO   l_count
497    FROM   ap_suppliers_int
498    WHERE  UPPER(vendor_name) = UPPER(p_vendor_name);
499 
500     IF l_count > 1 THEN
501       x_valid    := FALSE;
502       FND_MESSAGE.SET_NAME('SQLAP','AP_VEN_DUPLICATE_NAME');
503       FND_MSG_PUB.ADD;
504     END IF;
505 
506 END Chk_Dup_Vendor_Name_new;
507 Bug 6939863 */
508 
509 PROCEDURE Chk_Dup_Vendor_Name_new(p_vendor_name    IN VARCHAR2,
510                                   p_vendor_id      IN NUMBER,
511                                   p_vendor_type_lookup_code IN VARCHAR2,
512                                   p_employee_id    IN NUMBER,
513                                   x_valid          OUT NOCOPY BOOLEAN
514                                  ) IS
515   l_count          NUMBER := 0;
516 
517 BEGIN
518 
519    x_valid    := TRUE;
520 
521    --open issue 1 with manoj regarding whether the vendor name
522    --will even be denormalized into po_vendors
523 
524    -- Added following if condition for bug 6775797
525 
526    IF ((p_vendor_type_lookup_code  IS NOT NULL AND
527        p_vendor_type_lookup_code <> 'EMPLOYEE')
528        OR p_vendor_type_lookup_code IS NULL) THEN
529 
530      SELECT COUNT(*)
531      INTO   l_count
532      FROM   ap_suppliers
533      WHERE  UPPER(vendor_name) = UPPER(p_vendor_name)
534      AND    (p_vendor_id IS NULL OR vendor_id <> p_vendor_id);  --bug 5606948
535 
536    ELSE
537 
538      SELECT COUNT(*)
539      INTO   l_count
540      FROM   ap_suppliers
541      WHERE  UPPER(vendor_name) = UPPER(p_vendor_name)
542      AND    (p_vendor_id IS NULL OR vendor_id <> p_vendor_id)
543      --bug 6939863 - changed <> to = for employee_id
544      AND    (p_employee_id IS NULL OR employee_id = p_employee_id);
545 
546    END IF;
547 
548    IF l_count > 0 THEN
549       x_valid    := FALSE;
550       FND_MESSAGE.SET_NAME('SQLAP','AP_VEN_DUPLICATE_NAME');
551       FND_MSG_PUB.ADD;
552     END IF;
553 
554 END Chk_Dup_Vendor_Name_new;
555 
556 
557 --
558 -- Check for duplicate vendor number
559 --
560 PROCEDURE Chk_Dup_Vendor_Number(p_vendor_id     IN NUMBER,
561                                 p_segment1      IN VARCHAR2,
562                                 x_valid         OUT NOCOPY BOOLEAN
563                                ) IS
564 
565    l_count          NUMBER := 0;
566 
567 BEGIN
568    x_valid    := TRUE;
569 
570    SELECT COUNT(*)
571    INTO   l_count
572    FROM   po_vendors
573    WHERE  (p_vendor_id IS NULL OR vendor_id <> p_vendor_id)
574    AND    segment1 = p_segment1;
575 
576    IF l_count = 0 THEN
577      SELECT count(*)
578      INTO   l_count
579      FROM   po_history_vendors
580      WHERE  segment1 = p_segment1;
581    END IF;
582 
583    IF l_count > 0 THEN
584       x_valid    := FALSE;
585       FND_MESSAGE.SET_NAME('SQLAP','AP_VEN_DUPLICATE_VEN_NUM');
586       FND_MSG_PUB.ADD;
587    END IF;
588 
589  END Chk_Dup_Vendor_Number;
590 
591  --
592  -- Check if the receiving_routing_id is valid
593  --
594  PROCEDURE Chk_rcv_routing_id(p_rcv_rtg_id         IN         NUMBER,
595                             x_valid            OUT NOCOPY BOOLEAN
596                             ) IS
597     l_dummy          RCV_ROUTING_HEADERS.routing_header_id%TYPE;
598 
599  BEGIN
600     x_valid    := TRUE;
601 
602        SELECT routing_header_id
603        INTO  l_dummy
604        FROM  RCV_ROUTING_HEADERS
605        WHERE routing_header_id = p_rcv_rtg_id;
606 
607 
608  EXCEPTION
609     -- Trap validation error
610     WHEN NO_DATA_FOUND THEN
611          x_valid    := FALSE;
612 	 FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
613          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','RECEIVING_ROUTING_ID' );
614 	 FND_MSG_PUB.ADD;
615  END Chk_rcv_routing_id;
616 
617    --
618    -- This procedure should perform Other Employee Validations
619    --
620    PROCEDURE employee_type_checks(p_vendor_type     IN         VARCHAR2,
621                                 p_employee_id     IN         NUMBER,
622                                 p_valid           OUT NOCOPY BOOLEAN
623                                ) IS
624 
625    BEGIN
626       p_valid := TRUE;
627 
628       IF ( (p_vendor_type <> 'EMPLOYEE'
629             AND (p_employee_id is Not Null AND p_employee_id <> ap_null_num))
630             OR
631            (p_vendor_type = 'EMPLOYEE'  --bug6050423
632             AND (p_employee_id is Null OR p_employee_id = ap_null_num)) ) THEN
633 
634          p_valid    := FALSE;
635          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMNS_INCONSISTENT');
636          FND_MESSAGE.SET_TOKEN('ID','VENDOR_TYPE_LOOKUP_CODE');
637          FND_MESSAGE.SET_TOKEN('NAME','EMPLOYEE_ID');
638 	 FND_MSG_PUB.ADD;
639       END IF;
640 
641    END employee_type_checks;
642 
643    --
644    --  This procedure should ensure the value for 'payment_currency_code' exists as a valid
645    --  currency_code on the target database
646    --  Bug 2931673, replaced parameter p_vendor_id with p_invoice_currency_code
647    --
648    PROCEDURE payment_currency_code_valid(p_payment_currency_code  IN         VARCHAR2,
649                                          p_invoice_currency_code  IN         VARCHAR2,
650                                          p_valid                  OUT NOCOPY BOOLEAN
651                                         ) IS
652       l_count                  NUMBER := 1;
653 
654    BEGIN
655       p_valid := TRUE;
656 
657 
658       /*
659        * assumes p_invoice_currency_code is valid
660        * only validate if they're different
661        */
662       IF(p_payment_currency_code<>p_invoice_currency_code) THEN
663 
664         SELECT count(*)
665         INTO   l_count
666         FROM   fnd_currencies_vl
667         WHERE  currency_code = p_payment_currency_code
668         AND    (gl_currency_api.is_fixed_rate(p_invoice_currency_code
669                                               ,currency_code
670                                               ,sysdate)= 'Y'
671                AND enabled_flag = 'Y'
672                AND trunc(nvl(start_date_active,sysdate)) <= trunc(sysdate)
673                AND trunc(nvl(end_date_active,sysdate)) >= trunc(sysdate)
674                );
675 
676         IF (l_count = 0) THEN
677 	   FND_MESSAGE.SET_NAME('SQLAP','AP_API_INVALID_PAYMENT_CURR');
678            p_valid := FALSE;
679 	   FND_MSG_PUB.ADD;
680         END IF;
681 
682       END IF;
683 
684    END payment_currency_code_valid;
685 
686  --
687  -- Validate the Income Tax Type
688  --
689  PROCEDURE Val_Income_Tax_Type(p_type_1099 IN         VARCHAR2,
690                                x_valid     OUT NOCOPY BOOLEAN
691                                ) IS
692     l_count          NUMBER := 0;
693 
694  BEGIN
695     x_valid    := TRUE;
696 
697        SELECT COUNT(*)
698        INTO   l_count
699        FROM   ap_income_tax_types
700        WHERE  income_tax_type = p_type_1099
701        AND    TRUNC(SYSDATE) < TRUNC(NVL(inactive_date, SYSDATE+1));
702 
703        IF l_count < 1 THEN
704        	x_valid    := FALSE;
705 	FND_MESSAGE.SET_NAME('SQLAP','AP_API_INVALID_IN_TAX_TYPE');
706 	FND_MSG_PUB.ADD;
707        END IF;
708 
709  END Val_Income_Tax_Type;
710 
711 PROCEDURE Validate_CCIDs(
712         p_column_name          IN      VARCHAR2,
713         p_ccid         	       IN      NUMBER,
714         p_sob_id               IN      NUMBER,
715         x_valid            OUT NOCOPY  BOOLEAN
716         )
717 
718         IS
719         l_ccid       gl_code_combinations.Code_Combination_Id%TYPE;
720 
721 BEGIN
722    x_valid    := TRUE;
723 
724    IF p_column_name = 'ACCTS_PAY_CCID' THEN
725 
726         Begin
727                 SELECT GCC.code_combination_id
728                 INTO l_ccid
729                 FROM GL_CODE_COMBINATIONS GCC, GL_SETS_OF_BOOKS GSOB
730                 WHERE GCC.code_combination_id = p_ccid
731                 AND GCC.account_type = 'L'
732                 AND GCC.enabled_flag = 'Y'
733                 AND GCC.detail_posting_allowed_flag = 'Y'
734                 AND GSOB.set_of_books_id = p_sob_id
735                 AND GSOB.chart_of_accounts_id = GCC.chart_of_accounts_id
736 		AND nvl(GCC.end_date_active,sysdate+1) > sysdate;
737 
738 
739         EXCEPTION
740          WHEN NO_DATA_FOUND THEN
741          x_valid    := FALSE;
742          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
743          FND_MESSAGE.SET_TOKEN('COLUMN_NAME', p_column_name );
744 	 FND_MSG_PUB.ADD;
745         End;
746    ELSE
747         Begin
748 		SELECT GCC.code_combination_id
749                 INTO l_ccid
750                 FROM GL_CODE_COMBINATIONS GCC, GL_SETS_OF_BOOKS GSOB
751                 WHERE GCC.code_combination_id = p_ccid
752                 AND GCC.enabled_flag = 'Y'
753                 AND GCC.detail_posting_allowed_flag = 'Y'
754                 AND GCC.chart_of_accounts_id = GSOB.chart_of_accounts_id
755                 AND GSOB.set_of_books_id = p_sob_id
756 		AND nvl(GCC.end_date_active,sysdate+1) > sysdate;
757 
758          EXCEPTION
759          WHEN NO_DATA_FOUND THEN
760          x_valid    := FALSE;
761          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
762          FND_MESSAGE.SET_TOKEN('COLUMN_NAME', p_column_name );
763 	 FND_MSG_PUB.ADD;
764         End;
765    END IF;
766 
767 END validate_CCIDs;
768 
769 --
770 -- Check for duplicate vendor names
771 --
772 -- Added parameter p_vendor_type_lookup_code and p_employee_id
773 -- for bug 6775797
774 PROCEDURE Chk_Dup_Vendor_Name_update(p_vendor_name    IN VARCHAR2,
775          			     p_vendor_id      IN NUMBER,
776                                      p_vendor_type_lookup_code IN VARCHAR2,
777                                      p_employee_id    IN NUMBER,
778                                      x_valid          OUT NOCOPY BOOLEAN
779                                      ) IS
780   l_count          NUMBER := 0;
781 
782 BEGIN
783 
784    x_valid    := TRUE;
785 
786    --open issue 1 with manoj regarding whether the vendor name
787    --will even be denormalized into po_vendors
788 
789    -- Added following if condition for bug 6775797
790 
791    IF ((p_vendor_type_lookup_code  IS NOT NULL AND
792        p_vendor_type_lookup_code <> 'EMPLOYEE')
793        OR p_vendor_type_lookup_code IS NULL) THEN
794 
795      SELECT COUNT(*)
796      INTO   l_count
797      FROM   ap_suppliers
798      WHERE  UPPER(vendor_name) = UPPER(p_vendor_name)
799      AND    (p_vendor_id IS NULL OR vendor_id <> p_vendor_id);  --bug 5606948
800 
801    ELSE
802 
803      SELECT COUNT(*)
804      INTO   l_count
805      FROM   ap_suppliers
806      WHERE  UPPER(vendor_name) = UPPER(p_vendor_name)
807      AND    (p_vendor_id IS NULL OR vendor_id <> p_vendor_id)
808      --bug 6939863 - changed <> to = for employee_id
809      AND    (p_employee_id IS NULL OR employee_id = p_employee_id);
810 
811    END IF;
812 
813    IF l_count > 0 THEN
814       x_valid    := FALSE;
815       FND_MESSAGE.SET_NAME('SQLAP','AP_VEN_DUPLICATE_NAME');
816       FND_MSG_PUB.ADD;
817     END IF;
818 
819 END Chk_Dup_Vendor_Name_update;
820 
821 --
822 -- Check for duplicate vendor number
823 --
824 PROCEDURE Chk_Null_Vendor_Number(p_segment1     IN  VARCHAR2 default null,
825                                 x_valid         OUT NOCOPY BOOLEAN
826                                ) IS
827 
828    l_ven_num_code    financials_system_parameters.user_defined_vendor_num_code%TYPE;
829 
830  BEGIN
831 
832    x_valid    := TRUE;
833 --sally
834         SELECT supplier_numbering_method
835         INTO   l_ven_num_code
836         FROM   ap_product_setup;
837 
838         IF ((NVL(l_ven_num_code, 'MANUAL') = 'MANUAL') AND
839             (p_segment1 is Null)) THEN
840       		x_valid    := FALSE;
841       		FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
842       		FND_MESSAGE.SET_TOKEN('COLUMN_NAME','SEGMENT1');
843 		FND_MSG_PUB.ADD;
844         ELSIF l_ven_num_code not in ('MANUAL','AUTOMATIC') then
845       		x_valid    := FALSE;
846       		FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
847 		FND_MESSAGE.SET_TOKEN('COLUMN_NAME','USER_DEFINED_VENDOR_NUM_CODE');
848 		FND_MSG_PUB.ADD;
849 	END IF;
850 
851  END Chk_Null_Vendor_Number;
852 
853 -- Method to verify a taxpayer id is valid
854 -- Bug 5291571
855 -- Modified the registration number validation calls to LE Teams API.
856 --
857 function is_taxpayer_id_valid(
858     p_taxpayer_id     IN VARCHAR2,
859     p_country         IN VARCHAR2
860 )
861 RETURN VARCHAR2
862 IS
863     l_ret_value VARCHAR2(1);
864     l_outcome   VARCHAR2(1);
865     l_out_msg   VARCHAR2(255);
866     l_legislative_cat_code VARCHAR2(30);
867     l_required_flag VARCHAR2(1);
868     l_registration_code VARCHAR2(100);
869     l_return_status VARCHAR2(50);
870     l_msg_count     NUMBER;
871     l_msg_data      VARCHAR2(1000);
872 
873 BEGIN
874     l_ret_value := 'Y';
875     l_legislative_cat_code := 'INCOME_TAX';
876     l_required_flag := 'Y';                        --7442513
877     l_return_status := FND_API.G_RET_STS_SUCCESS;
878 
879     IF (p_country = 'US') THEN
880         FV_AP_TIN_PKG.TIN_VALIDATE(p_taxpayer_id, l_outcome, l_out_msg);
881     ELSIF (p_country = 'IT') THEN
882         l_registration_code := 'FCIT';
883         XLE_REGISTRATIONS_VAL_PVT.do_it_regnum_validations
884         (l_legislative_cat_code,
885          l_required_flag,
886          l_registration_code,
887          p_taxpayer_id,
888          l_return_status,
889          l_msg_data,
890          l_msg_count);
891     ELSIF (p_country = 'ES') THEN
892         l_registration_code := 'NIF';
893         XLE_REGISTRATIONS_VAL_PVT.do_es_regnum_validations
894         (l_legislative_cat_code,
895          l_required_flag,
896          l_registration_code,
897          p_taxpayer_id,
898          l_return_status,
899          l_msg_data,
900          l_msg_count);
901     ELSIF (p_country = 'PT') THEN
902         l_registration_code := 'NIPC';
903         XLE_REGISTRATIONS_VAL_PVT.do_pt_regnum_validations
904         (l_legislative_cat_code,
905          l_required_flag,
906          l_registration_code,
907          p_taxpayer_id,
908          l_return_status,
909          l_msg_data,
910          l_msg_count);
911     END IF;
912 
913     IF p_country = 'US' THEN
914        IF (l_outcome = 'F') THEN
915           FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
916           FND_MESSAGE.SET_TOKEN('COLUMN_NAME','NUM_1099' );
917           FND_MSG_PUB.ADD; --bug6050423
918           l_ret_value := 'N';
919        END IF;
920     END IF;
921     IF p_country IN ('IT','ES','PT') THEN
922        IF l_return_status = FND_API.G_RET_STS_ERROR
923        THEN
924          FND_MESSAGE.SET_NAME('XLE', 'XLE_INVALID_REG_NUM_ERR');
925          FND_MESSAGE.SET_TOKEN('REG_CODE', l_registration_code);
926          FND_MESSAGE.SET_TOKEN('REG_NUM', p_taxpayer_id);
927          FND_MSG_PUB.ADD;   --bug6050423
928          l_ret_value := 'N'; --bug6050423
929        END IF;
930      END IF;
931 
932     return l_ret_value;
933 
934 END is_taxpayer_id_valid;
935 
936  --
937  -- Validate and generate Vendor Number.
938  --
939 
940  PROCEDURE Check_valid_vendor_num(p_segment1                     IN VARCHAR2,
941 		                  x_valid                        OUT NOCOPY BOOLEAN
942                                   ) IS
943 
944       l_ven_num_code   ap_product_setup.SUPPLIER_NUMBERING_METHOD%TYPE;
945 
946   BEGIN
947 
948 	/*Open Issue 11 -- This select needs to be adjusted for MOAC*/
949         SELECT nvl(supplier_numbering_method, 'MANUAL')
950         INTO   l_ven_num_code
951         FROM   ap_product_setup;
952 
953        IF ((l_ven_num_code = 'MANUAL') and (p_segment1 is NULL)) THEN
954 
955            x_valid    := FALSE;
956            FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
957            FND_MESSAGE.SET_TOKEN('COLUMN_NAME','SEGMENT1' );
958 	   FND_MSG_PUB.ADD;
959        END IF;
960 
961   END Check_valid_vendor_num;
962 
963  --
964  -- Check if the Match_Option value is valid
965  --
966  PROCEDURE Check_Valid_Match_Option(p_match_option   IN         VARCHAR2,
967                                   x_valid            OUT NOCOPY BOOLEAN
968                                   ) IS
969 
970  BEGIN
971     x_valid    := TRUE;
972 
973 	IF p_match_option not IN ('P','R') THEN
974          x_valid    := FALSE;
975          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
976          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','MATCH_OPTION' );
977 	 FND_MSG_PUB.ADD;
978         END IF;
979 
980  END Check_Valid_Match_Option;
981 
982  --
983  -- Check if the allow_awt_flag is valid
984  --
985  PROCEDURE Chk_allow_awt_flag(p_allow_awt_flag         IN         VARCHAR2,
986 			    p_org_id		       IN NUMBER,
987                             x_valid                    OUT NOCOPY BOOLEAN
988                             ) IS
989     l_asp_awt_flag      VARCHAR2(1);
990 
991  BEGIN
992     x_valid    := TRUE;
993 
994        SELECT allow_awt_flag
995        INTO l_asp_awt_flag
996        FROM ap_system_parameters
997        WHERE org_id = p_org_id;
998 
999        IF l_asp_awt_flag = 'N'
1000           AND p_allow_awt_flag = 'Y' THEN
1001          x_valid    := FALSE;
1002 	 FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
1003          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','ALLOW_AWT_FLAG' );
1004 	 FND_MSG_PUB.ADD;
1005        END IF;
1006 
1007  END Chk_allow_awt_flag;
1008 
1009  --
1010  -- Check if the awt_group_id and name are in sync.
1011  --
1012 
1013  PROCEDURE Chk_awt_grp_id_name(p_awt_id          IN OUT NOCOPY NUMBER,
1014                               p_awt_name         IN         VARCHAR2,
1015                               p_allow_awt_flag   IN         VARCHAR2,
1016                               x_valid            OUT NOCOPY BOOLEAN
1017                            ) IS
1018 
1019     l_dummy_id            AP_AWT_GROUPS.group_id%TYPE;
1020     l_dummy_name          AP_AWT_GROUPS.name%TYPE;
1021 
1022   BEGIN
1023     x_valid    := TRUE;
1024 
1025    IF p_allow_awt_flag = 'N' THEN
1026      BEGIN
1027       If p_awt_id is NOT NULL then
1028 
1029          x_valid    := FALSE;
1030          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMNS_INCONSISTENT');
1031          FND_MESSAGE.SET_TOKEN('ID','ALLOW_AWT_FLAG');
1032          FND_MESSAGE.SET_TOKEN('NAME','AWT_GROUP_ID');
1033          FND_MSG_PUB.ADD;
1034       Elsif p_awt_name is NOT NULL Then
1035 
1036          x_valid    := FALSE;
1037          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMNS_INCONSISTENT');
1038          FND_MESSAGE.SET_TOKEN('ID','ALLOW_AWT_FLAG');
1039          FND_MESSAGE.SET_TOKEN('NAME','AWT_GROUP_NAME');
1040          FND_MSG_PUB.ADD;
1041       End If;
1042 
1043      END;
1044 
1045    ELSIF (p_allow_awt_flag = 'Y' and (p_awt_id is NOT NULL and p_awt_name is NULL)) THEN
1046      BEGIN
1047 
1048        SELECT name
1049        INTO   l_dummy_name
1050        FROM   AP_AWT_GROUPS
1051        WHERE  group_id = p_awt_id
1052        AND    sysdate < nvl(inactive_date, sysdate + 1);
1053 
1054      EXCEPTION
1055      -- Trap validation error
1056      WHEN NO_DATA_FOUND THEN
1057          x_valid    := FALSE;
1058          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
1059          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','AWT_GROUP_ID' );
1060 	 FND_MSG_PUB.ADD;
1061      END;
1062 
1063    ELSIF (p_allow_awt_flag = 'Y' and (p_awt_id is NOT NULL and p_awt_name is NOT NULL)) THEN
1064      BEGIN
1065 
1066        SELECT group_id
1067        INTO   l_dummy_id
1068        FROM   AP_AWT_GROUPS
1069        WHERE  group_id = p_awt_id
1070        AND    name = p_awt_name
1071        AND    sysdate < nvl(inactive_date, sysdate + 1);
1072 
1073      EXCEPTION
1074      -- Trap validation error
1075      WHEN NO_DATA_FOUND THEN
1076          x_valid    := FALSE;
1077 	 FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMNS_NOT_MATCHED');
1078          FND_MESSAGE.SET_TOKEN('ID','AWT_GROUP_ID');
1079          FND_MESSAGE.SET_TOKEN('NAME','AWT_GROUP_NAME');
1080     	 FND_MSG_PUB.ADD;
1081      END;
1082 
1083    ELSIF (p_allow_awt_flag = 'Y' and (p_awt_id is NULL and p_awt_name is NOT NULL)) THEN
1084       BEGIN
1085 
1086        SELECT group_id
1087        INTO   p_awt_id
1088        FROM   AP_AWT_GROUPS
1089        WHERE  name = p_awt_name
1090        AND    sysdate < nvl(inactive_date, sysdate + 1);
1091 
1092       EXCEPTION
1093       -- Trap validation error
1094       WHEN NO_DATA_FOUND THEN
1095          x_valid    := FALSE;
1096          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
1097          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','AWT_GROUP_NAME' );
1098       	 FND_MSG_PUB.ADD;
1099      END;
1100 
1101     END IF;
1102 
1103  END Chk_awt_grp_id_name;
1104 
1105  --
1106  -- Check if the Hold_by is valid
1107  --
1108  PROCEDURE Check_Valid_Hold_by(p_hold_by      IN         NUMBER,
1109                               x_valid            OUT NOCOPY BOOLEAN
1110                               ) IS
1111     l_dummy          hr_employees_current_v.employee_id%TYPE;
1112 
1113  BEGIN
1114     x_valid    := TRUE;
1115 
1116        SELECT employee_id
1117        INTO   l_dummy
1118        FROM   hr_employees_current_v
1119        WHERE  employee_id = p_hold_by;
1120 
1121 
1122  EXCEPTION
1123     -- Trap validation error
1124     WHEN NO_DATA_FOUND THEN
1125          x_valid    := FALSE;
1126 
1127          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
1128          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','HOLD_BY' );
1129 	 FND_MSG_PUB.ADD;
1130  END Check_Valid_Hold_by;
1131 
1132  --
1133  -- Check that terms_id and terms_name are in sync.
1134  --
1135 
1136  PROCEDURE Check_terms_id_code(p_terms_id         IN OUT NOCOPY NUMBER,
1137                               p_terms_name        IN            VARCHAR2,
1138                               p_default_terms_id  IN            NUMBER,
1139                               x_valid             OUT NOCOPY    BOOLEAN
1140                               ) IS
1141 
1142     l_terms_id       AP_TERMS_TL.term_id%TYPE;
1143     l_terms_name     AP_TERMS_TL.name%TYPE;
1144 
1145  BEGIN
1146     x_valid    := TRUE;
1147 
1148   IF (p_terms_id is NULL and p_terms_name is NULL) THEN
1149         p_terms_id := p_default_terms_id;
1150 
1151   ELSIF (p_terms_id is NOT NULL and p_terms_name is NULL) THEN
1152      BEGIN
1153         SELECT name
1154         INTO   l_terms_name
1155         FROM   AP_TERMS_TL
1156         WHERE  term_id = p_terms_id
1157         AND    language = userenv('LANG')
1158         AND    sysdate < nvl(end_date_active, sysdate+1);
1159 
1160     EXCEPTION
1161     -- Trap validation error
1162     WHEN NO_DATA_FOUND THEN
1163          x_valid    := FALSE;
1164 
1165          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
1166          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','TERMS_ID' );
1167          FND_MSG_PUB.ADD;
1168      END;
1169 
1170   ELSIF (p_terms_id is NOT NULL and p_terms_name is NOT NULL) THEN
1171     BEGIN
1172 	SELECT term_id
1173         INTO   l_terms_id
1174         FROM   AP_TERMS_TL
1175         WHERE  term_id = p_terms_id
1176         AND    name = p_terms_name
1177         AND    language = userenv('LANG')
1178         AND    sysdate < nvl(end_date_active, sysdate+1);
1179 
1180     EXCEPTION
1181     -- Trap validation error
1182     WHEN NO_DATA_FOUND THEN
1183          x_valid    := FALSE;
1184 
1185          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMNS_NOT_MATCHED');
1186          FND_MESSAGE.SET_TOKEN('ID','TERMS_ID');
1187          FND_MESSAGE.SET_TOKEN('NAME','TERMS_NAME');
1188 	 FND_MSG_PUB.ADD;
1189      END;
1190 
1191     ELSIF (p_terms_id is NULL and p_terms_name is NOT NULL) THEN
1192     BEGIN
1193         SELECT term_id
1194         INTO   p_terms_id
1195         FROM   AP_TERMS_TL
1196         WHERE  name = p_terms_name
1197         AND    language = userenv('LANG')
1198         AND    sysdate < nvl(end_date_active, sysdate+1);
1199 
1200     EXCEPTION
1201     -- Trap validation error
1202     WHEN NO_DATA_FOUND THEN
1203          x_valid    := FALSE;
1204 
1205          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
1206          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','TERMS_NAME' );
1207 	 FND_MSG_PUB.ADD;
1208       END;
1209 
1210     END IF;
1211 
1212  END Check_terms_id_code;
1213 
1214  --
1215  -- Check that dist_set_id and name are in sync.
1216 
1217  PROCEDURE Check_dist_set_id_name(p_dist_id            IN OUT NOCOPY  NUMBER,
1218    	                         p_dist_name           IN             VARCHAR2,
1219                                  p_default_dist_id     IN             NUMBER,
1220                                  x_valid               OUT NOCOPY     BOOLEAN
1221                                  ) IS
1222 
1223     l_dist_id      AP_DISTRIBUTION_SETS_ALL.distribution_set_id%TYPE;
1224     l_dist_name    AP_DISTRIBUTION_SETS_ALL.distribution_set_name%TYPE;
1225 
1226  BEGIN
1227     x_valid    := TRUE;
1228 
1229   IF (p_dist_id is NULL and p_dist_name is NULL) THEN
1230 
1231         p_dist_id := p_default_dist_id;
1232 
1233   ELSIF p_dist_id is NOT NULL and p_dist_name is NOT NULL THEN
1234       BEGIN
1235        SELECT distribution_set_id
1236        INTO   l_dist_id
1237        FROM   AP_DISTRIBUTION_SETS_ALL
1238        WHERE  distribution_set_id = p_dist_id
1239        AND    distribution_set_name  = p_dist_name
1240        AND    sysdate < nvl(inactive_date, sysdate+1);
1241 
1242     EXCEPTION
1243     -- Trap validation error
1244     WHEN NO_DATA_FOUND THEN
1245     x_valid    := FALSE;
1246 
1247          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMNS_NOT_MATCHED');
1248          FND_MESSAGE.SET_TOKEN('ID','DISTRIBUTION_SET_ID');
1249          FND_MESSAGE.SET_TOKEN('NAME','DISTRIBUTION_SET_NAME');
1250          FND_MSG_PUB.ADD;
1251      END;
1252 
1253     ELSIF p_dist_id is NULL and p_dist_name is NOT NULL THEN
1254      BEGIN
1255        SELECT distribution_set_id
1256        INTO   p_dist_id
1257        FROM   AP_DISTRIBUTION_SETS_ALL
1258        WHERE  distribution_set_name  = p_dist_name
1259        AND    sysdate < nvl(inactive_date, sysdate+1);
1260 
1261     EXCEPTION
1262     -- Trap validation error
1263     WHEN NO_DATA_FOUND THEN
1264     x_valid    := FALSE;
1265 
1266          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
1267          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','DISTRIBUTION_SET_NAME' );
1268          FND_MSG_PUB.ADD;
1269       END;
1270 
1271     ELSIF p_dist_id is NOT NULL and p_dist_name is NULL THEN
1272      BEGIN
1273        SELECT distribution_set_name
1274        INTO   l_dist_name
1275        FROM   AP_DISTRIBUTION_SETS_ALL
1276        WHERE  distribution_set_id = p_dist_id
1277        AND    sysdate < nvl(inactive_date, sysdate+1);
1278 
1279     EXCEPTION
1280     -- Trap validation error
1281     WHEN NO_DATA_FOUND THEN
1282          x_valid    := FALSE;
1283 
1284          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
1285          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','DISTRIBUTION_SET_ID' );
1286          FND_MSG_PUB.ADD;
1287      END;
1288 
1289     END IF;
1290 
1291  END Check_dist_set_id_name;
1292 
1293  --
1294  -- Check that ship_to_location_id and ship_to_location_code are in sync.
1295  --
1296 
1297  PROCEDURE Check_ship_locn_id_code(p_ship_location_id     IN OUT NOCOPY NUMBER,
1298                               p_ship_location_code        IN          VARCHAR2,
1299 			      p_default_ship_to_loc_id    IN          NUMBER,
1300                               x_valid            	  OUT NOCOPY  BOOLEAN
1301                               ) IS
1302 
1303     l_ship_locn_id       HR_LOCATIONS_ALL.ship_to_location_id%TYPE;
1304     l_ship_locn_code     HR_LOCATIONS_ALL.location_code%TYPE;
1305 
1306  BEGIN
1307     x_valid    := TRUE;
1308 
1309   IF (p_ship_location_id is NULL and p_ship_location_code is NULL) THEN
1310 
1311         p_ship_location_id := p_default_ship_to_loc_id;
1312 
1313   ELSIF (p_ship_location_id is NOT NULL and p_ship_location_code is NULL) THEN
1314 
1315      BEGIN
1316      SELECT lot.location_code
1317        INTO   l_ship_locn_code
1318        FROM   HR_LOCATIONS_ALL loc, HR_LOCATIONS_ALL_TL lot
1319        WHERE  loc.location_id = p_ship_location_id
1320        AND     sysdate < nvl(loc.inactive_date, sysdate + 1)
1321        AND     loc.location_id = lot.location_id
1322        AND     lot.language = userenv('LANG')
1323        AND     (nvl(loc.business_group_id,nvl(hr_general.get_business_group_id,-99))=
1324                 nvl(hr_general.get_business_group_id,-99))
1325        AND     loc.ship_to_site_flag = 'Y';
1326 
1327     EXCEPTION
1328     -- Trap validation error
1329       WHEN NO_DATA_FOUND THEN
1330          x_valid    := FALSE;
1331 
1332          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
1333          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','SHIP_TO_LOCATION_ID' );
1334 	 FND_MSG_PUB.ADD;
1335      END;
1336 
1337   ELSIF (p_ship_location_id is NOT NULL and p_ship_location_code is NOT NULL) THEN
1338     BEGIN
1339      SELECT loc.location_id
1340        INTO   l_ship_locn_id
1341        FROM   HR_LOCATIONS_ALL loc, HR_LOCATIONS_ALL_TL lot
1342        WHERE  lot.location_code = p_ship_location_code
1343        AND    loc.location_id = p_ship_location_id
1344        AND     sysdate < nvl(loc.inactive_date, sysdate + 1)
1345        AND     loc.location_id = lot.location_id
1346        AND     lot.language = userenv('LANG')
1347        AND     (nvl(loc.business_group_id,nvl(hr_general.get_business_group_id,-99))=
1348         	nvl(hr_general.get_business_group_id,-99))
1349        AND     loc.ship_to_site_flag = 'Y';
1350 
1351     EXCEPTION
1352     -- Trap validation error
1353     WHEN NO_DATA_FOUND THEN
1354          x_valid    := FALSE;
1355 
1356          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMNS_NOT_MATCHED');
1357          FND_MESSAGE.SET_TOKEN('ID','SHIP_TO_LOCATION_ID');
1358          FND_MESSAGE.SET_TOKEN('NAME','SHIP_TO_LOCATION_CODE');
1359 	 FND_MSG_PUB.ADD;
1360      END;
1361 
1362   ELSIF (p_ship_location_id is NULL and p_ship_location_code is NOT NULL) THEN
1363     BEGIN
1364      SELECT loc.location_id
1365        INTO   p_ship_location_id
1366        FROM   HR_LOCATIONS_ALL loc, HR_LOCATIONS_ALL_TL lot
1367        WHERE  lot.location_code = p_ship_location_code
1368        AND     sysdate < nvl(loc.inactive_date, sysdate + 1)
1369        AND     loc.location_id = lot.location_id
1370        AND     lot.language = userenv('LANG')
1371        AND     (nvl(loc.business_group_id,nvl(hr_general.get_business_group_id,-99))=
1372                 nvl(hr_general.get_business_group_id,-99))
1373        AND     loc.ship_to_site_flag = 'Y';
1374 
1375     EXCEPTION
1376     -- Trap validation error
1377       WHEN NO_DATA_FOUND THEN
1378          x_valid    := FALSE;
1379 
1380          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
1381          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','SHIP_TO_LOCATION_CODE' );
1382 	 FND_MSG_PUB.ADD;
1383       END;
1384 
1385   END IF;
1386 
1387  END Check_ship_locn_id_code;
1388 
1389  --
1390  -- Check that bill_to_location_id and bill_to_location_code are in sync.
1391  --
1392 
1393  PROCEDURE Check_bill_locn_id_code(p_bill_location_id     IN OUT NOCOPY NUMBER,
1394                               p_bill_location_code        IN         VARCHAR2,
1395                               p_default_bill_to_loc_id    IN         NUMBER,
1396                               x_valid                     OUT NOCOPY BOOLEAN
1397                              ) IS
1398 
1399     l_bill_locn_id       HR_LOCATIONS_ALL.location_id%TYPE;
1400     l_bill_locn_code     HR_LOCATIONS_ALL.location_code%TYPE;
1401 
1402  BEGIN
1403     x_valid    := TRUE;
1404 
1405   IF (p_bill_location_id is NULL and p_bill_location_code is NULL) THEN
1406   	p_bill_location_id := p_default_bill_to_loc_id;
1407 
1408   ELSIF (p_bill_location_id is NOT NULL and p_bill_location_code is NULL) THEN
1409      BEGIN
1410      SELECT lot.location_code
1411        INTO  l_bill_locn_code
1412        FROM   HR_LOCATIONS_ALL loc, HR_LOCATIONS_ALL_TL lot
1413        WHERE  loc.location_id = p_bill_location_id
1414        AND     sysdate < nvl(loc.inactive_date, sysdate + 1)
1415        AND     loc.location_id = lot.location_id
1416        AND     lot.language = userenv('LANG')
1417        AND     (nvl(loc.business_group_id,nvl(hr_general.get_business_group_id,-99))=
1418                 nvl(hr_general.get_business_group_id,-99))
1419        AND     loc.bill_to_site_flag = 'Y';
1420 
1421    EXCEPTION
1422     -- Trap validation error
1423       WHEN NO_DATA_FOUND THEN
1424          x_valid    := FALSE;
1425 
1426          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
1427          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','BILL_TO_LOCATION_ID' );
1428 	 FND_MSG_PUB.ADD;
1429      END;
1430 
1431   ELSIF p_bill_location_id is NOT NULL and p_bill_location_code is NOT NULL THEN
1432 
1433      BEGIN
1434        SELECT loc.location_id
1435        INTO   l_bill_locn_id
1436        FROM   HR_LOCATIONS_ALL loc, HR_LOCATIONS_ALL_TL lot
1437        WHERE  loc.location_id = p_bill_location_id
1438        AND    lot.location_code = p_bill_location_code
1439        AND     sysdate < nvl(loc.inactive_date, sysdate + 1)
1440        AND     loc.location_id = lot.location_id
1441        AND     lot.language = userenv('LANG')
1442        AND     (nvl(loc.business_group_id,nvl(hr_general.get_business_group_id,-99))=
1443                 nvl(hr_general.get_business_group_id,-99))
1444        AND     loc.bill_to_site_flag = 'Y';
1445 
1446     EXCEPTION
1447     -- Trap validation error
1448     WHEN NO_DATA_FOUND THEN
1449          x_valid    := FALSE;
1450 
1451          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMNS_NOT_MATCHED');
1452          FND_MESSAGE.SET_TOKEN('ID','BILL_TO_LOCATION_ID');
1453          FND_MESSAGE.SET_TOKEN('NAME','BILL_TO_LOCATION_CODE');
1454  	 FND_MSG_PUB.ADD;
1455      END;
1456 
1457   ELSIF p_bill_location_id is NULL and p_bill_location_code is NOT NULL THEN
1458 
1459      BEGIN
1460        SELECT loc.location_id
1461        INTO   p_bill_location_id
1462        FROM   HR_LOCATIONS_ALL loc, HR_LOCATIONS_ALL_TL lot
1463        WHERE  lot.location_code = p_bill_location_code
1464        AND     sysdate < nvl(loc.inactive_date, sysdate + 1)
1465        AND     loc.location_id = lot.location_id
1466        AND     lot.language = userenv('LANG')
1467        AND     (nvl(loc.business_group_id,nvl(hr_general.get_business_group_id,-99))=
1468                 nvl(hr_general.get_business_group_id,-99))
1469        AND     loc.bill_to_site_flag = 'Y';
1470 
1471     EXCEPTION
1472     -- Trap validation error
1473       WHEN NO_DATA_FOUND THEN
1474          x_valid    := FALSE;
1475 
1476          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
1477          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','BILL_TO_LOCATION_CODE' );
1478 	 FND_MSG_PUB.ADD;
1479       END;
1480 
1481   END IF;
1482 
1483  END Check_bill_locn_id_code;
1484 
1485  --
1486  -- Check if the Default_pay_site_id is valid
1487  --
1488  PROCEDURE Check_Default_pay_site(p_default_pay_site_id    IN         NUMBER,
1489                                   p_vendor_id              IN         NUMBER,
1490                                   p_org_id                 IN         NUMBER,
1491                                   x_valid                  OUT NOCOPY BOOLEAN
1492                                   ) IS
1493     l_dummy          po_vendor_sites_all.vendor_site_id%TYPE;
1494 
1495  BEGIN
1496     x_valid    := TRUE;
1497 
1498        SELECT vendor_site_id
1499        INTO   l_dummy
1500        FROM  po_vendor_sites_all
1501        WHERE  vendor_id = p_vendor_id
1502        AND  vendor_site_id = p_default_pay_site_id
1503        AND  org_id  = p_org_id
1504        AND  nvl(inactive_date, sysdate +1 ) > sysdate
1505        AND  pay_site_flag = 'Y';
1506 
1507 
1508      EXCEPTION
1509     -- Trap validation error
1510     WHEN NO_DATA_FOUND THEN
1511          x_valid    := FALSE;
1512 
1513          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
1514          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','DEFAULT_PAY_SITE_ID' );
1515 	 FND_MSG_PUB.ADD;
1516  END Check_Default_pay_site;
1517 
1518    --
1519    -- This procedure should ensure the value for 'state' exists on the
1520    -- target database.
1521    --
1522    PROCEDURE state_valid(p_state    IN         VARCHAR2,
1523                          p_valid    OUT NOCOPY BOOLEAN
1524                         ) IS
1525       l_count     NUMBER := 0;
1526 
1527    BEGIN
1528       p_valid := TRUE;
1529 
1530       SELECT count(*)
1531       INTO   l_count
1532       FROM   ap_income_tax_regions
1533       WHERE  region_short_name = p_state
1534       AND    sysdate < nvl(inactive_date,sysdate+1);
1535 
1536       IF (l_count = 0) THEN
1537 	 FND_MESSAGE.SET_NAME('SQLAP','AP_API_INVALID_STATE');
1538 	 FND_MSG_PUB.ADD;
1539          p_valid := FALSE;
1540       END IF;
1541 
1542    END state_valid;
1543 
1544 --
1545 -- Check that Org_Id and Operating Unit name are in sync
1546 -- Modified for 11i Import functionality
1547 
1548  PROCEDURE Check_org_id_name(p_org_id          IN OUT NOCOPY NUMBER,
1549                              p_org_name        IN VARCHAR2,
1550                              p_int_table       IN VARCHAR2,
1551                              p_int_key         IN NUMBER,
1552                              x_valid           OUT NOCOPY    BOOLEAN
1553                               ) IS
1554 
1555     l_org_id       HR_OPERATING_UNITS.organization_id%TYPE;
1556     l_org_name     HR_OPERATING_UNITS.name%TYPE;
1557     l_api_name                  CONSTANT VARCHAR2(30)   := 'Check_Org_Id_Name';
1558  BEGIN
1559     x_valid    := TRUE;
1560 
1561     IF (p_org_id is NOT NULL and p_org_name is NOT NULL) THEN
1562     BEGIN
1563      SELECT organization_id
1564        INTO   l_org_id
1565        FROM   HR_OPERATING_UNITS
1566        WHERE  organization_id = p_org_id
1567        AND    name = p_org_name
1568        AND    sysdate < nvl(date_to, sysdate + 1);
1569 
1570      EXCEPTION
1571      -- Trap validation error
1572      WHEN NO_DATA_FOUND THEN
1573        x_valid    := FALSE;
1574        IF g_source = 'IMPORT' THEN
1575          IF (Insert_Rejections(
1576            p_int_table,
1577            p_int_key,
1578            'AP_INCONSISTENT_ORG_INFO',
1579            g_user_id,
1580            g_login_id,
1581            'Check_Org_Id_Name') <> TRUE) THEN
1582           --
1583            IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1584              FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Parameters: '
1585                      ||' P_Org_Id: '|| p_org_id
1586                      ||', P_Org_Name: '||p_org_name
1587                      ||', P_Int_Table: '||p_int_table
1588                      ||', P_Int_Key: '||p_int_key);
1589            END IF;
1590          END IF;
1591        ELSE
1592             -- Bug 5491139 hkaniven start --
1593          FND_MESSAGE.SET_NAME('SQLAP','AP_INCONSISTENT_ORG_INFO');
1594          FND_MSG_PUB.ADD;
1595             -- Bug 5491139 hkaniven end --
1596        END IF;
1597      END;
1598 
1599    ELSIF (p_org_id is NULL and p_org_name is NOT NULL) THEN
1600 
1601      BEGIN
1602        SELECT organization_id
1603        INTO   p_org_id
1604        FROM   HR_OPERATING_UNITS
1605        WHERE  name = p_org_name
1606        AND    sysdate < nvl(date_to, sysdate + 1);
1607 
1608      EXCEPTION
1609      -- Trap validation error
1610      WHEN NO_DATA_FOUND THEN
1611        x_valid    := FALSE;
1612        IF g_source = 'IMPORT' THEN
1613          IF (Insert_Rejections(
1614            p_int_table,
1615            p_int_key,
1616            'AP_INVALID_ORG_INFO',
1617            g_user_id,
1618            g_login_id,
1619            'Check_Org_Id_Name') <> TRUE) THEN
1620           --
1621            IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1622              FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Parameters: '
1623                      ||' P_Org_Id: '|| p_org_id
1624                      ||', P_Org_Name: '||p_org_name
1625                      ||', P_Int_Table: '||p_int_table
1626                      ||', P_Int_Key: '||p_int_key);
1627            END IF;
1628          END IF;
1629        ELSE
1630             -- Bug 5491139 hkaniven start --
1631          FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_ORG_INFO');
1632          FND_MSG_PUB.ADD;
1633             -- Bug 5491139 hkaniven end --
1634        END IF;
1635      END;
1636 
1637     ELSIF (p_org_id is NOT NULL and p_org_name is NULL) THEN
1638 
1639      BEGIN
1640        SELECT name
1641        INTO  l_org_name
1642        FROM  HR_OPERATING_UNITS
1643        WHERE  organization_id = p_org_id
1644        AND    sysdate < nvl(date_to, sysdate + 1);
1645 
1646      EXCEPTION
1647      -- Trap validation error
1648      WHEN NO_DATA_FOUND THEN
1649        x_valid    := FALSE;
1650        IF g_source = 'IMPORT' THEN
1651          IF (Insert_Rejections(
1652            p_int_table,
1653            p_int_key,
1654            'AP_INVALID_ORG_INFO',
1655            g_user_id,
1656            g_login_id,
1657            'Check_Org_Id_Name') <> TRUE) THEN
1658           --
1659            IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1660              FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Parameters: '
1661                      ||' P_Org_Id: '|| p_org_id
1662                      ||', P_Org_Name: '||p_org_name
1663                      ||', P_Int_Table: '||p_int_table
1664                      ||', P_Int_Key: '||p_int_key);
1665            END IF;
1666          END IF;
1667        ELSE
1668             -- Bug 5491139 hkaniven start --
1669         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_ORG_INFO');
1670         FND_MSG_PUB.ADD;
1671             -- Bug 5491139 hkaniven end --
1672        END IF;
1673      END;
1674    END IF;
1675 
1676  END Check_org_id_name;
1677 
1678  PROCEDURE Check_pay_on_rec_sum_code(p_pay_on_code            IN      VARCHAR2,
1679                                 p_pay_on_receipt_summary_code IN OUT NOCOPY VARCHAR2,
1680                                 x_valid                       OUT NOCOPY BOOLEAN
1681                                 ) IS
1682 
1683      e_apps_exception    EXCEPTION;
1684 
1685  BEGIN
1686     x_valid    := TRUE;
1687 
1688    IF p_pay_on_receipt_summary_code is NULL THEN
1689       p_pay_on_receipt_summary_code := 'PAY_SITE';
1690 
1691    ELSIF p_pay_on_receipt_summary_code is NOT NULL THEN
1692 
1693      IF ((p_pay_on_code = 'RECEIPT') AND (p_pay_on_receipt_summary_code not IN
1694                                        ('PACKING_SLIP','PAY_SITE','RECEIPT'))) THEN
1695 
1696          Raise e_apps_exception;
1697 
1698      ELSIF ((p_pay_on_code = 'USE') AND (p_pay_on_receipt_summary_code not IN
1699                                       ('CONSUMPTION_ADVICE','PAY_SITE')))  THEN
1700 
1701          Raise e_apps_exception;
1702 
1703      ELSIF ((p_pay_on_code = 'RECEIPT_AND_USE') AND (p_pay_on_receipt_summary_code not IN
1704                                                   ('PAY_SITE'))) THEN
1705 
1706          Raise e_apps_exception;
1707 
1708      END IF;
1709 
1710    END IF;
1711 
1712      EXCEPTION
1713         WHEN e_apps_exception THEN
1714          x_valid    := FALSE;
1715          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMNS_INCONSISTENT');
1716          FND_MESSAGE.SET_TOKEN('ID','PAY_ON_CODE');
1717          FND_MESSAGE.SET_TOKEN('NAME','PAY_ON_RECEIPT_SUMMARY_CODE');
1718 	 FND_MSG_PUB.ADD;
1719  END Check_pay_on_rec_sum_code;
1720 
1721  --
1722  -- Check if the Shipping_Control value is valid
1723  --
1724 
1725  PROCEDURE Check_Shipping_Control(p_shipping_control    IN  VARCHAR2,
1726                               x_valid            OUT NOCOPY BOOLEAN
1727                               ) IS
1728 
1729  BEGIN
1730     x_valid    := TRUE;
1731 
1732      IF upper(p_shipping_control) NOT IN ('SUPPLIER','BUYER') THEN
1733 
1734 	x_valid    := FALSE;
1735 
1736         FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
1737         FND_MESSAGE.SET_TOKEN('COLUMN_NAME','SHIPPING_CONTROL' );
1738 	FND_MSG_PUB.ADD;
1739      END IF;
1740 
1741  END Check_Shipping_Control;
1742 
1743  --
1744  -- Check the pay_on_code values
1745  --
1746  PROCEDURE Check_Valid_pay_on_code(p_pay_on_code            IN  VARCHAR2,
1747                                 p_purchasing_site_flag      IN  VARCHAR2 DEFAULT NULL,
1748                                 p_pay_site_flag             IN  VARCHAR2,
1749                                 p_default_pay_site_id       IN  NUMBER DEFAULT NULL,
1750                                 x_valid                     OUT NOCOPY BOOLEAN
1751                               ) IS
1752 
1753      l_dummy                VARCHAR2(1);
1754      l_default_pay_site_id  NUMBER;
1755 
1756  BEGIN
1757     x_valid    := TRUE;
1758     -- Bug #7197985 Checking the default pay site id
1759     IF(p_default_pay_site_id IS NULL OR p_default_pay_site_id = ap_null_num) THEN
1760        l_default_pay_site_id := NULL;
1761     ELSE
1762        l_default_pay_site_id := p_default_pay_site_id;
1763     END IF;
1764 
1765 
1766    IF (nvl(p_purchasing_site_flag,'N') = 'N') THEN
1767         x_valid    := FALSE;
1768          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMNS_INCONSISTENT');
1769          FND_MESSAGE.SET_TOKEN('ID','PAY_ON_CODE');
1770          FND_MESSAGE.SET_TOKEN('NAME','PURCHASING_SITE_FLAG');
1771  	 FND_MSG_PUB.ADD;
1772    ELSIF (nvl(p_purchasing_site_flag,'N') = 'Y') THEN
1773 
1774          If p_pay_on_code IN ('RECEIPT','USE','RECEIPT_AND_USE') Then
1775             l_dummy := 'Y';
1776          Else l_dummy := 'N';
1777          End If;
1778 
1779          IF l_dummy = 'N' THEN
1780 		x_valid    := FALSE;
1781          	FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
1782          	FND_MESSAGE.SET_TOKEN('COLUMN_NAME','PAY_ON_CODE' );
1783  		FND_MSG_PUB.ADD;
1784          ELSIF (p_pay_site_flag = 'N' and l_default_pay_site_id IS NULL) THEN
1785 		x_valid    := FALSE;
1786          	FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMNS_INCONSISTENT');
1787          	FND_MESSAGE.SET_TOKEN('ID','PAY_ON_CODE');
1788          	FND_MESSAGE.SET_TOKEN('NAME','PAY_SITE_FLAG');
1789  		FND_MSG_PUB.ADD;
1790          END IF;
1791 
1792    END IF;
1793 
1794  END Check_Valid_pay_on_Code;
1795 
1796    --
1797    -- This procedure should ensure the value for 'pay_on_receipt_summary_code'
1798    -- exists on the target database
1799    --
1800    PROCEDURE pay_on_receipt_summary_valid( p_pay_on_receipt_summary_code IN         VARCHAR2,
1801                                            p_pay_on_code                 IN         VARCHAR2,
1802                                            p_valid                       OUT NOCOPY BOOLEAN
1803                                           ) IS
1804       l_count     NUMBER := 0;
1805 
1806    BEGIN
1807       p_valid := TRUE;
1808 
1809       SELECT count(*)
1810       INTO   l_count
1811       FROM   po_lookup_codes
1812       WHERE  lookup_code = p_pay_on_receipt_summary_code
1813       AND    lookup_type = 'ERS INVOICE_SUMMARY'
1814       AND    sysdate < nvl(inactive_date,sysdate+1)
1815       AND    (lookup_code = 'PAY_SITE'
1816               OR (p_pay_on_code = 'USE' AND lookup_code = 'CONSUMPTION_ADVICE')
1817               OR (p_pay_on_code = 'RECEIPT' and lookup_code IN ('RECEIPT','PACKING_SLIP'))
1818              );
1819 
1820       IF (l_count = 0) THEN
1821 	 FND_MESSAGE.SET_NAME('SQLAP','AP_API_INVALID_RECPT_SUMM');
1822 	 FND_MSG_PUB.ADD;
1823          p_valid := FALSE;
1824       END IF;
1825 
1826    END pay_on_receipt_summary_valid;
1827 
1828  --
1829  -- Check for matching address
1830  --
1831 
1832  PROCEDURE Check_Valid_Location(p_party_site_id    IN OUT NOCOPY  VARCHAR2,
1833                                 p_address_line1     IN    VARCHAR2,
1834                                 p_address_line2     IN    VARCHAR2,
1835                                 p_address_line3     IN    VARCHAR2,
1836                                 p_address_line4     IN    VARCHAR2,
1837                                 p_city              IN    VARCHAR2,
1838                                 p_state             IN    VARCHAR2,
1839                                 p_zip               IN    VARCHAR2,
1840                                 p_province          IN    VARCHAR2,
1841 				p_country	    IN	  VARCHAR2,
1842 				p_county	    IN	  VARCHAR2,
1843 				p_language	    IN	  VARCHAR2,
1844 				p_address_style	    IN 	  VARCHAR2,
1845 				p_vendor_id	    IN 	  NUMBER,
1846 				x_location_id	    OUT NOCOPY NUMBER,
1847                                 x_valid             OUT NOCOPY BOOLEAN,
1848                                 x_loc_count         OUT NOCOPY NUMBER -- Bug 7429668
1849                                       ) IS
1850 
1851 	l_dummy		NUMBER;
1852 	l_sync_count	NUMBER;
1853 
1854  BEGIN
1855     x_valid    := TRUE;
1856     x_loc_count := 0; -- Bug 7429668
1857 
1858     --Open Issue 2 should they match if they are null?
1859     IF p_party_site_id IS NOT NULL THEN
1860     	SELECT hl.location_id
1861     	INTO x_location_id
1862     	FROM HZ_Locations hl, HZ_Party_Sites hps,
1863              fnd_languages fl
1864     	WHERE hl.language = fl.language_code(+) AND
1865         nvl(upper(hl.country), 'dummy') =
1866 		nvl(upper(p_country), 'dummy') AND
1867 	nvl(upper(hl.address1), 'dummy') =
1868 		nvl(upper(p_address_line1), 'dummy') AND
1869 	nvl(upper(hl.address2), 'dummy') =
1870 		nvl(upper(p_address_line2), 'dummy') AND
1871 	nvl(upper(hl.address3), 'dummy') =
1872 		nvl(upper(p_address_line3), 'dummy') AND
1873 	nvl(upper(hl.address4), 'dummy') =
1874 		nvl(upper(p_address_line4), 'dummy') AND
1875 	nvl(upper(hl.city), 'dummy') = nvl(upper(p_city), 'dummy') AND
1876 	nvl(upper(hl.state), 'dummy') = nvl(upper(p_state), 'dummy') AND
1877 	nvl(upper(hl.postal_code), 'dummy') = nvl(upper(p_zip), 'dummy') AND
1878 	nvl(upper(hl.province), 'dummy') =
1879 		 nvl(upper(p_province), 'dummy') AND
1880 	nvl(upper(hl.county), 'dummy') = nvl(upper(p_county), 'dummy') AND
1881 	nvl(upper(fl.nls_language), 'dummy') =
1882 		nvl(upper(p_language), 'dummy') AND
1883 	nvl(upper(hl.address_style), 'dummy') =
1884 		nvl(upper(p_address_style), 'dummy') AND
1885    	hl.location_id = hps.location_id AND
1886      	hps.party_site_id = p_party_site_id ;
1887     ELSE
1888 
1889 	SELECT hl.location_id, hps.party_site_id
1890         INTO x_location_id, p_party_site_id
1891         FROM HZ_Locations hl,
1892              HZ_Party_Sites hps,
1893              po_vendors pv,
1894              fnd_languages fl
1895         WHERE nvl(upper(hl.country), 'dummy') =
1896                 nvl(upper(p_country), 'dummy') AND
1897         nvl(upper(hl.address1), 'dummy') =
1898                 nvl(upper(p_address_line1), 'dummy') AND
1899         nvl(upper(hl.address2), 'dummy') =
1900                 nvl(upper(p_address_line2), 'dummy') AND
1901         nvl(upper(hl.address3), 'dummy') =
1902                 nvl(upper(p_address_line3), 'dummy') AND
1903         nvl(upper(hl.address4), 'dummy') =
1904                 nvl(upper(p_address_line4), 'dummy') AND
1905         nvl(upper(hl.city), 'dummy') = nvl(upper(p_city), 'dummy') AND
1906         nvl(upper(hl.state), 'dummy') = nvl(upper(p_state), 'dummy') AND
1907         nvl(upper(hl.postal_code), 'dummy') = nvl(upper(p_zip), 'dummy') AND
1908         nvl(upper(hl.province), 'dummy') =
1909                  nvl(upper(p_province), 'dummy') AND
1910         nvl(upper(hl.county), 'dummy') = nvl(upper(p_county), 'dummy') AND
1911         nvl(upper(fl.nls_language), 'dummy') =
1912                 nvl(upper(p_language), 'dummy') AND
1913         nvl(upper(hl.address_style), 'dummy') =
1914                 nvl(upper(p_address_style), 'dummy') AND
1915         hl.location_id = hps.location_id AND
1916         hps.party_id = pv.party_id  AND
1917 	pv.vendor_id = p_vendor_id AND
1918         hl.language = fl.language_code(+);
1919     END IF;
1920 
1921     IF x_location_id IS NULL THEN
1922 	x_valid := FALSE;
1923     END IF;
1924 
1925     EXCEPTION
1926     -- Trap validation error
1927       WHEN NO_DATA_FOUND THEN
1928          x_valid    := FALSE;
1929       -- Bug 7429668 Trap validation error when more than 1 row is found
1930       WHEN OTHERS THEN
1931 	    x_valid    := FALSE;
1932 	    x_loc_count := 2;
1933  END Check_Valid_Location;
1934 
1935  --
1936  -- Take care of CCID etc. defaulting from Parameters for SITE Import
1937  --
1938  PROCEDURE Default_CCIDs_for_Site(p_org_id              IN NUMBER DEFAULT NULL,
1939 				  p_org_name            IN VARCHAR2 DEFAULT NULL,
1940                                   p_multi_org_flag      IN            VARCHAR2,
1941                                   p_accts_pay_ccid      IN OUT NOCOPY NUMBER,
1942                                   p_prepay_ccid         IN OUT NOCOPY NUMBER,
1943                                   p_future_pay_ccid     IN OUT NOCOPY NUMBER,
1944                                   p_rfq_site_flag       IN OUT NOCOPY VARCHAR2 ,
1945 				  p_country_code	IN OUT NOCOPY VARCHAR2,
1946 				  p_ship_via_lookup_code IN OUT NOCOPY VARCHAR2
1947                                   ) IS
1948 
1949         l_rfq_only_site    FINANCIALS_SYSTEM_PARAMS_ALL.rfq_only_site_flag%TYPE;
1950         l_accts_pay_ccid   FINANCIALS_SYSTEM_PARAMS_ALL.accts_pay_code_combination_id%TYPE;
1951         l_prepay_ccid      FINANCIALS_SYSTEM_PARAMS_ALL.prepay_code_combination_id%TYPE;
1952         l_future_pay_ccid  FINANCIALS_SYSTEM_PARAMS_ALL.future_dated_payment_ccid%TYPE;
1953 	l_home_country_code  FINANCIALS_SYSTEM_PARAMS_ALL.vat_country_code%TYPE;
1954 	l_default_country_code  FINANCIALS_SYSTEM_PARAMS_ALL.vat_country_code%TYPE;
1955 
1956  BEGIN
1957 
1958        	SELECT FIN.rfq_only_site_flag,
1959               FIN.accts_pay_code_combination_id,
1960               FIN.prepay_code_combination_id,
1961               FIN.future_dated_payment_ccid,
1962 	      fin.vat_country_code,
1963 	      fin.ship_via_lookup_code
1964        	INTO  l_rfq_only_site,
1965              l_accts_pay_ccid,
1966              l_prepay_ccid,
1967              l_future_pay_ccid,
1968 	     l_home_country_code,
1969 	     p_ship_via_lookup_code
1970        	FROM  FINANCIALS_SYSTEM_PARAMS_ALL FIN,
1971              HR_OPERATING_UNITS HR
1972       	WHERE HR.organization_id = FIN.org_id
1973        	AND  ( HR.name = p_org_name  OR
1974              HR.organization_id = p_org_id);
1975 
1976    	fnd_profile.get('DEFAULT_COUNTRY',l_default_country_code);
1977    	--
1978    	--
1979    	if  ( l_default_country_code is null ) then
1980          	p_country_code := l_home_country_code;
1981   	end if;
1982 
1983        IF p_multi_org_flag = 'Y' THEN
1984 
1985 	  IF p_accts_pay_ccid is NULL THEN
1986              p_accts_pay_ccid := l_accts_pay_ccid;
1987           END IF;
1988 
1989           IF p_prepay_ccid is NULL THEN
1990               p_prepay_ccid := l_prepay_ccid;
1991           END IF;
1992 
1993           IF p_future_pay_ccid is NULL THEN
1994              p_future_pay_ccid := l_future_pay_ccid;
1995           END IF;
1996 
1997           IF p_rfq_site_flag is NULL THEN
1998              p_rfq_site_flag := l_rfq_only_site;
1999           END IF;
2000 
2001       END IF;
2002 
2003  END Default_CCIDs_for_Site;
2004 
2005  --
2006  -- Do some validation checks in Apps and in Interface table
2007  --
2008 
2009  PROCEDURE Validate_unique_per_vendor(
2010         p_column_name      IN          VARCHAR2,
2011         p_vendor_id        IN          NUMBER,
2012         p_vendor_site_id   IN NUMBER DEFAULT NULL,
2013         p_org_id           IN NUMBER DEFAULT NULL,
2014         p_org_name         IN VARCHAR2 DEFAULT NULL,
2015         x_valid            OUT NOCOPY  BOOLEAN
2016         )
2017         IS
2018 
2019     l_dummy_1       	NUMBER;
2020     l_dummy_2           NUMBER;
2021 
2022  BEGIN
2023    x_valid    := TRUE;
2024 
2025    IF p_column_name = 'PRIMARY_PAY_SITE_FLAG' THEN
2026 
2027         Begin
2028 
2029                SELECT nvl(count(primary_pay_site_flag),0)
2030                INTO  l_dummy_1
2031                FROM  ap_vendor_sites_v
2032                WHERE nvl(primary_pay_site_flag,'N') = 'Y'
2033                AND   vendor_id = p_vendor_id
2034                AND   nvl(inactive_date, sysdate + 1) > sysdate
2035                AND   nvl(vendor_site_id, -99) <> nvl(p_vendor_site_id, -99);
2036 
2037 		SELECT count(*)
2038                 INTO l_dummy_2
2039                 FROM AP_SUPPLIER_SITES_INT
2040                 WHERE vendor_id = p_vendor_id
2041                 AND nvl(inactive_date ,sysdate+1) > sysdate
2042                 AND primary_pay_site_flag = 'Y'
2043                 AND (org_id = p_org_id OR
2044                      operating_unit_name = p_org_name);
2045 
2046 	 IF (l_dummy_1 > 0 or l_dummy_2 > 1) THEN
2047            x_valid    := FALSE;
2048            FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
2049            FND_MESSAGE.SET_TOKEN('COLUMN_NAME', p_column_name );
2050 	   FND_MSG_PUB.ADD;
2051 	END IF;
2052 
2053 	End;
2054    ELSIF p_column_name = 'TAX_REPORTING_SITE_FLAG' THEN
2055 
2056 	       SELECT nvl(count(tax_reporting_site_flag),0)
2057                INTO  l_dummy_1
2058                FROM  ap_vendor_sites_v
2059                WHERE nvl(tax_reporting_site_flag,'N') = 'Y'
2060                AND   vendor_id = p_vendor_id
2061                AND   nvl(inactive_date, sysdate + 1) > sysdate
2062                AND   nvl(vendor_site_id, -99) <> nvl(p_vendor_site_id, -99);
2063 
2064                 SELECT count(*)
2065                 INTO l_dummy_2
2066                 FROM AP_SUPPLIER_SITES_INT
2067                 WHERE vendor_id = p_vendor_id
2068                 AND nvl(inactive_date ,sysdate+1) > sysdate
2069                 AND tax_reporting_site_flag = 'Y'
2070                 AND (org_id = p_org_id OR
2071                      operating_unit_name = p_org_name);
2072 
2073          IF (l_dummy_1 > 0 or l_dummy_2 > 1) THEN
2074            x_valid    := FALSE;
2075            FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
2076            FND_MESSAGE.SET_TOKEN('COLUMN_NAME', p_column_name );
2077  	   FND_MSG_PUB.ADD;
2078         END IF;
2079 
2080    END IF;
2081 
2082   END Validate_unique_per_vendor;
2083 
2084    --
2085    -- This procedure should ensure the value for 'country_of_origin_code' exists
2086    -- on the target database
2087    --
2088    PROCEDURE country_of_origin_valid(p_country_of_origin_code IN         VARCHAR2,
2089                                      p_valid           OUT NOCOPY BOOLEAN
2090                                     ) IS
2091       l_count     NUMBER := 0;
2092 
2093    BEGIN
2094       p_valid := TRUE;
2095 
2096       SELECT count(*)
2097       INTO   l_count
2098       FROM   fnd_territories_vl
2099       WHERE  territory_code = p_country_of_origin_code;
2100 
2101       IF (l_count = 0) THEN
2102 	 FND_MESSAGE.SET_NAME('SQLAP','AP_API_INVALID_COUNTRY_OF_ORIG');
2103 	 FND_MSG_PUB.ADD;
2104 
2105          p_valid := FALSE;
2106       END IF;
2107 
2108    END country_of_origin_valid;
2109 
2110 -- Bug 5100831
2111 -- Added the validations related the Gapless Invoice Numbering Feature.
2112 -- Validations Performed are:
2113 -- 1) If Gapless Invoice Number is Y then Selling Company Identifier should
2114 --    be populated.
2115 
2116    PROCEDURE Check_Gapless_Inv_Num
2117                 (p_gapless_inv_num_flag       IN         VARCHAR2,
2118                  p_selling_company_identifier IN         VARCHAR2,
2119 		 p_vendor_id	  IN NUMBER, --Bug5260465
2120                  p_valid                      OUT NOCOPY BOOLEAN
2121                                     ) IS
2122    l_column_name VARCHAR2(30);
2123    l_vendor_count   NUMBER := 0; --Bug5260465
2124 
2125 
2126    BEGIN
2127 
2128       p_valid := TRUE;
2129       l_column_name := 'SELLING_COMPANY_IDENTIFIER';
2130       IF nvl(p_gapless_inv_num_flag,'N') = 'Y' THEN
2131          IF (p_selling_company_identifier IS NULL OR
2132             p_selling_company_identifier = ap_null_char) THEN
2133             FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
2134             FND_MESSAGE.SET_TOKEN('COLUMN_NAME', l_column_name);
2135             FND_MSG_PUB.ADD;
2136             p_valid := FALSE;
2137          END IF;
2138       END IF;
2139 
2140 	--Bug5260465 starts Adding validation if Selling company identifier is unique for supplier
2141       IF p_selling_company_identifier is not null THEN
2142 
2143 	   SELECT COUNT(vendor_id)
2144 	   INTO l_vendor_count
2145 	   FROM po_vendor_sites_all
2146 	   WHERE selling_company_identifier = p_selling_company_identifier
2147 	   AND vendor_id <> p_vendor_id;
2148 
2149 	   IF l_vendor_count > 0 THEN
2150 	    FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
2151             FND_MESSAGE.SET_TOKEN('COLUMN_NAME', l_column_name);
2152             FND_MSG_PUB.ADD;
2153             p_valid := FALSE;
2154 	   END IF;
2155 
2156 	END IF;
2157 	--Bud5260465 ends
2158    END Check_Gapless_Inv_Num;
2159 
2160  --
2161  -- Check if the Supplier_Notif_Method is valid
2162  --
2163  PROCEDURE Check_Valid_Sup_Notif_Method(p_sup_notif_method      IN         VARCHAR2,
2164                               x_valid            		OUT NOCOPY BOOLEAN
2165                               ) IS
2166 
2167  BEGIN
2168     x_valid    := TRUE;
2169 
2170 	IF p_sup_notif_method NOT IN ('EMAIL','PRINT','FAX') THEN
2171 
2172          x_valid    := FALSE;
2173 
2174          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
2175          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','SUPPLIER_NOTIF_METHOD' );
2176 	 FND_MSG_PUB.ADD;
2177 	END IF;
2178 
2179  END Check_Valid_Sup_Notif_Method;
2180 
2181  --
2182  -- Validate and default Tolerance_Id and Tolerance_Name.
2183  --
2184 
2185  PROCEDURE Check_tolerance_id_code(p_tolerance_id         IN OUT NOCOPY NUMBER,
2186                               p_tolerance_name            IN            VARCHAR2,
2187                               p_org_id                    IN      NUMBER DEFAULT NULL,
2188                               p_org_name                  IN      VARCHAR2 DEFAULT NULL,
2189                               x_valid                     OUT NOCOPY    BOOLEAN,
2190                               p_tolerance_type            IN  VARCHAR2
2191                               ) IS
2192 
2193     l_tolerance_id       AP_TOLERANCE_TEMPLATES.tolerance_id%TYPE;
2194     l_tolerance_name     AP_TOLERANCE_TEMPLATES.tolerance_name%TYPE;
2195     l_default_tolerance  AP_TOLERANCE_TEMPLATES.tolerance_id%TYPE;
2196 
2197  BEGIN
2198     x_valid    := TRUE;
2199 
2200     IF (p_org_id is NULL and p_org_name is NULL)  THEN
2201 
2202        --bug6335105
2203        IF p_tolerance_type = 'QUANTITY' then
2204 
2205           SELECT tolerance_id
2206           INTO l_default_tolerance
2207           FROM ap_system_parameters;
2208 
2209        ELSE
2210 
2211          SELECT services_tolerance_id
2212          INTO   l_default_tolerance
2213          FROM ap_system_parameters;
2214 
2215        END IF;
2216 
2217    ELSE
2218 
2219        --bug6335105
2220        IF p_tolerance_type = 'QUANTITY' then
2221 
2222           SELECT ASP.tolerance_id
2223           INTO l_default_tolerance
2224           FROM ap_system_parameters_all ASP, HR_OPERATING_UNITS ORG
2225           WHERE ASP.org_id = ORG.organization_id
2226           AND   (ORG.organization_id = p_org_id OR
2227                  ORG.name = p_org_name);
2228 
2229        ELSE
2230 
2231          SELECT ASP.services_tolerance_id
2232          INTO l_default_tolerance
2233          FROM ap_system_parameters_all ASP, HR_OPERATING_UNITS ORG
2234          WHERE ASP.org_id = ORG.organization_id
2235          AND   (ORG.organization_id = p_org_id OR
2236                 ORG.name = p_org_name);
2237 
2238       END IF;
2239 
2240    END IF;
2241 
2242 
2243   IF (p_tolerance_id is NULL and p_tolerance_name is NULL) THEN
2244 
2245         p_tolerance_id := l_default_tolerance;
2246 
2247     ELSIF (p_tolerance_id is NOT NULL and p_tolerance_name is NULL) THEN
2248      BEGIN
2249         SELECT tolerance_name
2250         INTO   l_tolerance_name
2251         FROM   AP_TOLERANCE_TEMPLATES
2252         WHERE  tolerance_id = p_tolerance_id;
2253 
2254     EXCEPTION
2255     -- Trap validation error
2256     WHEN NO_DATA_FOUND THEN
2257          x_valid    := FALSE;
2258 
2259          IF p_tolerance_type = 'QUANTITY' THEN
2260             FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
2261             FND_MESSAGE.SET_TOKEN('COLUMN_NAME','TOLERANCE_ID' );
2262 	    FND_MSG_PUB.ADD;
2263          ELSE
2264             FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
2265             FND_MESSAGE.SET_TOKEN('COLUMN_NAME','SERVICES_TOLERANCE_ID' );
2266             FND_MSG_PUB.ADD;
2267          END IF;
2268      END;
2269 
2270   ELSIF (p_tolerance_id is NOT NULL and p_tolerance_name is NOT NULL) THEN
2271     BEGIN
2272         SELECT tolerance_id
2273         INTO   l_tolerance_id
2274         FROM   AP_TOLERANCE_TEMPLATES
2275         WHERE  tolerance_id = p_tolerance_id
2276         AND    tolerance_name = p_tolerance_name;
2277 
2278     EXCEPTION
2279     -- Trap validation error
2280     WHEN NO_DATA_FOUND THEN
2281          x_valid    := FALSE;
2282 
2283          IF p_tolerance_type = 'QUANTITY' THEN
2284             FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMNS_NOT_MATCHED');
2285             FND_MESSAGE.SET_TOKEN('ID','TOLERANCE_ID');
2286             FND_MESSAGE.SET_TOKEN('NAME','TOLERANCE_NAME');
2287 	    FND_MSG_PUB.ADD;
2288          ELSE
2289             FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMNS_NOT_MATCHED');
2290             FND_MESSAGE.SET_TOKEN('ID','SERVICES_TOLERANCE_ID');
2291             FND_MESSAGE.SET_TOKEN('NAME','SERVICES_TOLERANCE_NAME');
2292             FND_MSG_PUB.ADD;
2293          END IF;
2294      END;
2295 
2296     ELSIF (p_tolerance_id is NULL and p_tolerance_name is NOT NULL) THEN
2297     BEGIN
2298         SELECT tolerance_id
2299         INTO   p_tolerance_id
2300         FROM   AP_TOLERANCE_TEMPLATES
2301         WHERE  tolerance_name = p_tolerance_name;
2302 
2303     EXCEPTION
2304     -- Trap validation error
2305     WHEN NO_DATA_FOUND THEN
2306          x_valid    := FALSE;
2307          IF p_tolerance_type = 'QUANTITY' THEN
2308             FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
2309             FND_MESSAGE.SET_TOKEN('COLUMN_NAME','TOLERANCE_NAME' );
2310 	    FND_MSG_PUB.ADD;
2311          ELSE
2312             FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
2313             FND_MESSAGE.SET_TOKEN('COLUMN_NAME','SERVICES_TOLERANCE_NAME' );
2314             FND_MSG_PUB.ADD;
2315          END IF;
2316       END;
2317     END IF;
2318 
2319  END Check_tolerance_id_code;
2320 
2321 --
2322 -- Check if ship_via_lookup_code is valid for the site
2323 --
2324  PROCEDURE Check_Site_Ship_Via(p_ship_via_lookup_code      IN      VARCHAR2,
2325                                 p_org_id                   IN      NUMBER,
2326                                 x_valid                    OUT NOCOPY BOOLEAN
2327                               ) IS
2328     l_dummy          org_freight.freight_code%TYPE;
2329 
2330  BEGIN
2331     x_valid    := TRUE;
2332 
2333        SELECT FRT.freight_code
2334        INTO   l_dummy
2335        FROM   org_freight FRT, financials_system_params_all FIN
2336        WHERE  FRT.organization_id = FIN.inventory_organization_id
2337        AND    FIN.org_id = p_org_id
2338        AND    nvl(FRT.disable_date, sysdate +1 ) > sysdate
2339        AND    FRT.freight_code = p_ship_via_lookup_code;
2340 
2341  EXCEPTION
2342     -- Trap validation error
2343     WHEN NO_DATA_FOUND THEN
2344          x_valid    := FALSE;
2345 
2346          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
2347          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','SHIP_VIA_LOOKUP_CODE' );
2348 	 FND_MSG_PUB.ADD;
2349  END Check_Site_Ship_Via;
2350 
2351  --
2352  -- Check if the party_id is valid
2353  --
2354  PROCEDURE Check_Valid_Party_Id(p_party_id    IN         NUMBER,
2355                               x_valid            OUT NOCOPY BOOLEAN
2356                               ) IS
2357     l_dummy          NUMBER;
2358     l_count	     NUMBER;
2359 
2360  BEGIN
2361     x_valid    := TRUE;
2362 
2363        SELECT party_id
2364        INTO   l_dummy
2365        FROM   hz_parties
2366        WHERE  party_id  = p_party_id;
2367 
2368 
2369      EXCEPTION
2370     -- Trap validation error
2371     WHEN NO_DATA_FOUND THEN
2372          x_valid    := FALSE;
2373 
2374          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
2375 	 FND_MESSAGE.SET_TOKEN('COLUMN_NAME','PARTY_ID' );
2376 	 FND_MSG_PUB.ADD;
2377 
2378    IF x_valid = TRUE THEN
2379 	--check usage status
2380    	SELECT count(party_id)
2381    	INTO l_count
2382    	FROM HZ_PARTY_USG_ASSIGNMENTS HPUA
2383    	WHERE HPUA.PARTY_USAGE_CODE in
2384 	('SUPPLIER','SUPPLIER_CONTACT', 'ORG_CONTACT')
2385    	AND HPUA.PARTY_ID = p_party_id;
2386 
2387    	IF nvl(l_count, -1) > 0 THEN
2388 		x_valid    := FALSE;
2389 
2390          	FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
2391          	FND_MESSAGE.SET_TOKEN('COLUMN_NAME','PARTY_ID' );
2392          	FND_MSG_PUB.ADD;
2393 	END IF;
2394    END IF;
2395 
2396  END Check_Valid_Party_Id;
2397 
2398  --
2399  -- Check if the location_id is valid
2400  --
2401  PROCEDURE Check_Valid_Location_Id(p_location_id    IN         NUMBER,
2402 				p_party_site_id		IN 	NUMBER,
2403                               x_valid            OUT NOCOPY BOOLEAN
2404                               ) IS
2405     l_dummy          NUMBER;
2406 
2407  BEGIN
2408     x_valid    := TRUE;
2409 
2410     SELECT Count(*)
2411        INTO   l_dummy
2412        FROM   hz_locations hl, hz_party_sites hps
2413        WHERE  hl.location_id  = p_location_id
2414 	AND hl.location_id = hps.location_id
2415 	AND hps.party_site_id = nvl(p_party_site_id, hps.party_site_id);
2416 
2417     IF nvl(l_dummy,0) = 0 THEN
2418          x_valid    := FALSE;
2419 
2420          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
2421 	 FND_MESSAGE.SET_TOKEN('COLUMN_NAME','LOCATION_ID' );
2422 	 FND_MSG_PUB.ADD;
2423     END IF;
2424 
2425  END Check_Valid_Location_Id;
2426 
2427  --
2428  -- Check if the party_site_id is valid
2429  --
2430  PROCEDURE Check_Valid_Party_Site_Id(p_party_Site_id    IN         NUMBER,
2431 				p_location_id IN	NUMBER,
2432                               x_valid            OUT NOCOPY BOOLEAN
2433                               ) IS
2434     l_dummy          NUMBER;
2435 
2436  BEGIN
2437     x_valid    := TRUE;
2438 
2439     SELECT Count(*)
2440        INTO   l_dummy
2441        FROM   hz_party_sites hps
2442        WHERE ( hps.location_id  = nvl(p_location_id, hps.location_id)
2443 	AND hps.party_site_id = p_party_site_id);
2444 
2445     IF nvl(l_dummy,0) = 0 THEN
2446          x_valid    := FALSE;
2447 
2448          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
2449 	 FND_MESSAGE.SET_TOKEN('COLUMN_NAME','PARTY_SITE_ID' );
2450 	 FND_MSG_PUB.ADD;
2451     END IF;
2452 
2453 
2454  END Check_Valid_Party_Site_Id;
2455 
2456  --
2457  -- Check if relationship_id is valid
2458  --
2459  PROCEDURE Check_Valid_Relationship_Id
2460                     (p_relationship_id    IN         NUMBER,
2461                      x_valid              OUT NOCOPY BOOLEAN) IS
2462 
2463     l_dummy          NUMBER;
2464 
2465  BEGIN
2466        x_valid    := TRUE;
2467 
2468        SELECT relationship_id
2469        INTO   l_dummy
2470        FROM   hz_relationships
2471        WHERE  relationship_id = p_relationship_id
2472        AND rownum < 2;
2473 
2474 
2475   EXCEPTION
2476     -- Trap validation error
2477     WHEN NO_DATA_FOUND THEN
2478          x_valid    := FALSE;
2479 
2480          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
2481 	     FND_MESSAGE.SET_TOKEN('COLUMN_NAME','RELATIONSHIP_ID' );
2482 	     FND_MSG_PUB.ADD;
2483 
2484  END Check_Valid_Relationship_Id;
2485 
2486  --
2487  -- Check if org_contact_id is valid
2488  --
2489  PROCEDURE Check_Valid_Org_Contact_Id
2490                     (p_org_contact_id    IN         NUMBER,
2491                      x_valid             OUT NOCOPY BOOLEAN) IS
2492 
2493     l_dummy          NUMBER;
2494 
2495  BEGIN
2496        x_valid    := TRUE;
2497 
2498        SELECT org_contact_id
2499        INTO   l_dummy
2500        FROM   hz_org_contacts
2501        WHERE  org_contact_id = p_org_contact_id;
2502 
2503 
2504   EXCEPTION
2505     -- Trap validation error
2506     WHEN NO_DATA_FOUND THEN
2507          x_valid    := FALSE;
2508 
2509          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
2510 	     FND_MESSAGE.SET_TOKEN('COLUMN_NAME','ORG_CONTACT_ID' );
2511 	     FND_MSG_PUB.ADD;
2512 
2513  END Check_Valid_Org_Contact_Id;
2514 
2515  -- This procedure for Import functionality from 11i
2516  -- Check that If the vendor_site_id is valid in
2517  -- Supplier Site Contact Interface table
2518  PROCEDURE Check_Vendor_site_id
2519                      (p_vendor_site_id         IN  NUMBER,
2520                       p_int_table              IN  VARCHAR2,
2521                       p_int_key                IN  VARCHAR2,
2522                       x_valid                  OUT NOCOPY BOOLEAN) IS
2523 
2524    l_dummy          po_vendor_sites_all.vendor_site_id%TYPE;
2525    l_api_name       CONSTANT VARCHAR2(30)   := 'Check_Vendor_Site_Id';
2526  BEGIN
2527 
2528    x_valid    := TRUE;
2529 
2530    SELECT vendor_site_id
2531    INTO  l_dummy
2532    FROM  po_vendor_sites_all
2533    WHERE vendor_site_id = p_vendor_site_id
2534    AND  nvl(inactive_date, sysdate +1 ) > sysdate;
2535 
2536  EXCEPTION
2537    -- Trap validation error
2538    WHEN NO_DATA_FOUND THEN
2539      x_valid    := FALSE;
2540      IF g_source = 'IMPORT' THEN
2541        IF (Insert_Rejections(
2542            p_int_table,
2543            p_int_key,
2544            'AP_INVALID_VENDOR_SITE_ID',
2545            g_user_id,
2546            g_login_id,
2547            'Check_Vendor_Site_Id') <> TRUE) THEN
2548           --
2549          IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2550            FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Parameters: '
2551                      ||' P_Vendor_Site_Id: '|| p_vendor_site_id
2552                      ||', P_Int_Table: '||p_int_table
2553                      ||', P_Int_Key: '||p_int_key);
2554          END IF;
2555        END IF;
2556      ELSE
2557             -- Bug 5491139 hkaniven start --
2558         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_VENDOR_SITE_ID');
2559         FND_MSG_PUB.ADD;
2560             -- Bug 5491139 hkaniven end --
2561      END IF;
2562      -- Trap unknown errors
2563    WHEN OTHERS THEN
2564      x_valid    := FALSE;
2565      IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2566        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Parameters: '
2567                      ||' P_Vendor_Site_Id: '|| p_vendor_site_id
2568                      ||', P_Int_Table: '||p_int_table
2569                      ||', P_Int_Key: '||p_int_key
2570                      ||', ERROR: '||SUBSTR(SQLERRM,1,200));
2571      END IF;
2572  END Check_Vendor_site_id;
2573 
2574  -- This procedure for Import functionality from 11i
2575  -- Check that If the org_id or operating_unit is
2576  -- sync with vendor site code
2577  -- Supplier Site Contact Interface table
2578  PROCEDURE Check_org_id_name_site_code
2579                      (p_org_id           IN      NUMBER,
2580                       p_org_name         IN      VARCHAR2,
2581                       p_vendor_site_id   IN OUT  NOCOPY NUMBER,
2582                       p_vendor_site_code IN      VARCHAR2,
2583                       p_int_table        IN  VARCHAR2,
2584                       p_int_key          IN  VARCHAR2,
2585                       x_valid            OUT NOCOPY BOOLEAN) IS
2586 
2587     l_org_id           HR_OPERATING_UNITS.organization_id%TYPE;
2588     l_org_name         HR_OPERATING_UNITS.name%TYPE;
2589     l_vendor_site_code PO_VENDOR_SITES_ALL.vendor_site_code%TYPE;
2590     l_api_name       CONSTANT VARCHAR2(30)   := 'Check_Org_Id_Name_Site_Code';
2591  BEGIN
2592    x_valid    := TRUE;
2593 
2594    IF (p_org_id IS NOT NULL AND p_vendor_site_code IS NOT NULL) THEN
2595      BEGIN
2596         /*Bug 4592201.This is to make sure that we don't say that
2597           there is an inconsistency when two different suppliers have same
2598           vendor-site-code*/
2599         /*Since the vendor-site-id can be null in the case when he just passes
2600           the vendor-site-code,we have split the statement into two cases*/
2601         if(p_vendor_site_id is not null) then
2602          SELECT vendor_site_code, vendor_site_id
2603          INTO   l_vendor_site_code,p_vendor_site_id
2604          FROM   PO_VENDOR_SITES_ALL
2605          WHERE  org_id = p_org_id
2606          AND    vendor_site_code  = p_vendor_site_code
2607          AND    vendor_site_id=p_vendor_site_id;
2608         else
2609          SELECT vendor_site_code, vendor_site_id
2610          INTO   l_vendor_site_code,p_vendor_site_id
2611          FROM   PO_VENDOR_SITES_ALL
2612          WHERE  org_id = p_org_id
2613          AND    vendor_site_code=p_vendor_site_code;
2614         end if;
2615         /*Bug4592201*/
2616      EXCEPTION
2617        -- Trap validation error
2618        WHEN NO_DATA_FOUND THEN
2619          x_valid    := FALSE;
2620          IF g_source = 'IMPORT' THEN
2621            IF (Insert_Rejections(
2622              p_int_table,
2623              p_int_key,
2624              'AP_INVALID_VENDOR_SITE_CODE',
2625              g_user_id,
2626              g_login_id,
2627             'Check_Org_Id_Name_Site_Code') <> TRUE) THEN
2628           --
2629              IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2630                 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Parameters: '
2631                      ||' P_Org_Id: '||p_org_id
2632                      ||', P_Org_Name: '||p_org_name
2633                      ||', P_Vendor_Site_Code: '||p_vendor_site_code
2634                      ||', P_Vendor_Site_Id: '|| p_vendor_site_id
2635                      ||', P_Int_Table: '||p_int_table
2636                      ||', P_Int_Key: '||p_int_key);
2637              END IF;
2638            END IF;
2639          ELSE
2640             -- Bug 5491139 hkaniven start --
2641             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_VENDOR_SITE_CODE');
2642             FND_MSG_PUB.ADD;
2643             -- Bug 5491139 hkaniven end --
2644          END IF;
2645      END;
2646 
2647    ELSIF (p_org_id IS NULL AND
2648           p_org_name IS NOT NULL AND
2649           p_vendor_site_code is NOT NULL) THEN
2650 
2651      BEGIN
2652        SELECT SITE.vendor_site_code,vendor_site_id
2653        INTO   l_vendor_site_code,p_vendor_site_id
2654        FROM   PO_VENDOR_SITES_ALL SITE, HR_OPERATING_UNITS ORG
2655        WHERE  ORG.name = p_org_name
2656        AND    SITE.org_id = ORG.organization_id
2657        AND    SITE.vendor_site_code = p_vendor_site_code;
2658 
2659      EXCEPTION
2660        -- Trap validation error
2661        WHEN NO_DATA_FOUND THEN
2662          x_valid    := FALSE;
2663           IF g_source = 'IMPORT' THEN
2664            IF (Insert_Rejections(
2665              p_int_table,
2666              p_int_key,
2667              'AP_INVALID_VENDOR_SITE_CODE',
2668              g_user_id,
2669              g_login_id,
2670             'Check_Org_Id_Name_Site_Code') <> TRUE) THEN
2671           --
2672              IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2673                 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Parameters: '
2674                      ||' P_Org_Id: '||p_org_id
2675                      ||', P_Org_Name: '||p_org_name
2676                      ||', P_Vendor_Site_Code: '||p_vendor_site_code
2677                      ||', P_Vendor_Site_Id: '|| p_vendor_site_id
2678                      ||', P_Int_Table: '||p_int_table
2679                      ||', P_Int_Key: '||p_int_key);
2680              END IF;
2681            END IF;
2682          ELSE
2683             -- Bug 5491139 hkaniven start --
2684             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_VENDOR_SITE_CODE');
2685             FND_MSG_PUB.ADD;
2686             -- Bug 5491139 hkaniven end --
2687          END IF;
2688      END;
2689 
2690    END IF;
2691 
2692  EXCEPTION
2693   -- Trap unknown errors
2694    WHEN OTHERS THEN
2695      x_valid    := FALSE;
2696      IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2697                 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Parameters: '
2698                      ||' P_Org_Id: '||p_org_id
2699                      ||', P_Org_Name: '||p_org_name
2700                      ||', P_Vendor_Site_Code: '||p_vendor_site_code
2701                      ||', P_Vendor_Site_Id: '|| p_vendor_site_id
2702                      ||', P_Int_Table: '||p_int_table
2703                      ||', P_Int_Key: '||p_int_key
2704                      ||', ERROR: '||SUBSTR(SQLERRM,1,200));
2705      END IF;
2706  END Check_org_id_name_site_code;
2707 
2708  /* udhenuko bug 7013954 added procedure
2709  This procedure is used to check if the org_id or operating_unit is in
2710  sync with Party Site Name of hz_parties and ap_supplier_sites
2711  for Supplier Site Contact Interface table*/
2712  PROCEDURE Check_org_id_party_site_name
2713                      (p_org_id           IN      NUMBER,
2714                       p_org_name         IN      VARCHAR2,
2715                       p_party_site_id    IN OUT NOCOPY NUMBER,
2716                       p_party_site_name  IN  VARCHAR2,
2717                       p_vendor_id        IN  NUMBER,
2718                       p_int_table        IN  VARCHAR2,
2719                       p_int_key          IN  VARCHAR2,
2720                       x_valid            OUT NOCOPY BOOLEAN) IS
2721 
2722     l_org_id           HR_OPERATING_UNITS.organization_id%TYPE;
2723     l_org_name         HR_OPERATING_UNITS.name%TYPE;
2724     l_party_site_name hz_party_sites.party_site_name%TYPE;
2725     l_api_name       CONSTANT VARCHAR2(30)   := 'Check_org_id_party_site_name';
2726  BEGIN
2727    x_valid    := TRUE;
2728 
2729    IF (p_org_id IS NOT NULL AND p_party_site_name IS NOT NULL) THEN
2730      BEGIN
2731         /*If party_site_id is null then we derive it based on the
2732 		party_site_name field provided. But in case of Upgraded records there
2733 		can be multiple records in hz_party_sites with same party_site_name
2734 		for the same party. We can link the ap_supplier_sites_all table
2735 		to get unique record based on the input info*/
2736 
2737         if(p_party_site_id is not null) then
2738          SELECT hzps.party_site_name, hzps.party_site_id
2739            INTO   l_party_site_name,p_party_site_id
2740          FROM   hz_party_sites hzps, ap_suppliers aps
2741          WHERE  hzps.party_site_name  = p_party_site_name
2742            AND    hzps.party_site_id = p_party_site_id
2743 		   AND    aps.vendor_id = p_vendor_id;
2744         else
2745          SELECT hzps.party_site_name, hzps.party_site_id
2746            INTO   l_party_site_name,p_party_site_id
2747          FROM   hz_party_sites hzps, ap_supplier_sites_all aps
2748          WHERE  aps.org_id = p_org_id
2749            AND    hzps.party_site_name = p_party_site_name
2750 		   AND    hzps.party_site_id = aps.party_site_id
2751 		   AND    aps.vendor_id = p_vendor_id;
2752         end if;
2753 		IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2754                 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME,'Check_org_id_party_site_name : '
2755                      ||' P_Party_Site_Id: '|| p_party_site_id);
2756 		END IF;
2757      EXCEPTION
2758        -- Trap validation error
2759        WHEN NO_DATA_FOUND THEN
2760          x_valid    := FALSE;
2761      END;
2762 
2763    ELSIF (p_org_id IS NULL AND
2764           p_org_name IS NOT NULL AND
2765           p_party_site_name is NOT NULL) THEN
2766 
2767      BEGIN
2768        SELECT hzps.party_site_name, hzps.party_site_id
2769          INTO   l_party_site_name,p_party_site_id
2770        FROM   hz_party_sites hzps, ap_supplier_sites_all aps,
2771 		 HR_OPERATING_UNITS ORG
2772        WHERE  ORG.name = p_org_name
2773          AND    aps.org_id = ORG.organization_id
2774          AND    hzps.party_site_name = p_party_site_name
2775 	     AND    hzps.party_site_id = aps.party_site_id
2776 	     AND    aps.vendor_id = p_vendor_id;
2777 
2778      EXCEPTION
2779        -- Trap validation error
2780        WHEN NO_DATA_FOUND THEN
2781          x_valid    := FALSE;
2782      END;
2783 
2784    END IF;
2785 
2786  EXCEPTION
2787   -- Trap unknown errors
2788    WHEN OTHERS THEN
2789      x_valid    := FALSE;
2790      IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2791                 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Parameters: '
2792                      ||' P_Org_Id: '||p_org_id
2793                      ||', P_Org_Name: '||p_org_name
2794                      ||', p_party_site_name: '||p_party_site_name
2795                      ||', p_party_site_id: '|| p_party_site_id
2796 					 ||', p_vendor_id: '|| p_vendor_id
2797                      ||', P_Int_Table: '||p_int_table
2798                      ||', P_Int_Key: '||p_int_key
2799                      ||', ERROR: '||SUBSTR(SQLERRM,1,200));
2800      END IF;
2801  END Check_org_id_party_site_name;
2802 
2803 ---------------------------------------------------------------------
2804 --  PROCEDURE : Chk_new_duns_number
2805 --  PURPOSE   : Validates the Duns number passed as argument
2806 --              Added for the FSIO gap in R12(bug6053476)
2807 ---------------------------------------------------------------------
2808 
2809  PROCEDURE Chk_new_duns_number(p_duns_number    IN  VARCHAR2,
2810                                x_valid           OUT NOCOPY BOOLEAN
2811                                ) IS
2812 
2813     e_apps_exception       EXCEPTION;
2814 
2815  BEGIN
2816     x_valid    := TRUE;
2817 
2818     If ((translate(p_duns_number,'1234567890','9999999999') <> '999999999' ) OR
2819         (length(p_duns_number) <> 9)) Then
2820          Raise e_apps_exception;
2821     End If;
2822 
2823  EXCEPTION
2824  -- Trap validation error
2825     WHEN e_apps_exception THEN
2826          x_valid    := FALSE;
2827 
2828          FND_MESSAGE.SET_NAME('SQLAP','AP_IMPORT_COLUMN_INVALID');
2829          FND_MESSAGE.SET_TOKEN('COLUMN_NAME','DUNS_NUMBER' );
2830          FND_MSG_PUB.ADD;
2831  END Chk_new_duns_number;
2832 
2833 
2834 -----------------------------------------------------------------------------
2835 -- PROCEDURE : Update_supplier_JFMIP_checks
2836 -- PURPOSE   : Checks if one is trying to update the restricted fields on a
2837 --             CCR supplier.
2838 --             Added for the R12 FSIO gap.(bug6053476)
2839 ------------------------------------------------------------------------------
2840 
2841 
2842  PROCEDURE update_supplier_JFMIP_checks(p_vendor_rec         IN  r_vendor_rec_type,
2843                                         p_calling_prog       IN  VARCHAR2,
2844                                         x_valid              OUT NOCOPY BOOLEAN
2845                                         ) IS
2846     e_apps_exception  EXCEPTION;
2847 
2848  BEGIN
2849     x_valid    := TRUE;
2850 
2851     IF ((AP_UTILITIES_PKG.get_ccr_status(p_vendor_rec.vendor_id,'S') = 'T')
2852         AND (nvl(p_calling_prog,'NOT CCR') <> 'CCRImport')) THEN
2853       If (p_vendor_rec.jgzz_fiscal_code is NOT NULL) THEN
2854           Raise e_apps_exception;
2855       End If;
2856     END IF;
2857 
2858      EXCEPTION
2859        -- Trap validation error
2860        WHEN e_apps_exception THEN
2861             x_valid    := FALSE;
2862 
2863            FND_MESSAGE.SET_NAME('SQLAP','AP_CCR_NO_UPDATE');
2864 	   FND_MSG_PUB.ADD;
2865  END update_supplier_JFMIP_checks;
2866 
2867 
2868 -----------------------------------------------------------------------------
2869 -- PROCEDURE : Chk_Update_site_CCR_values
2870 -- PURPOSE   : Checks if one is trying to update the restricted fields on a
2871 --             CCR supplier site.
2872 --             Added for the R12 FSIO gap.(bug6053476)
2873 ------------------------------------------------------------------------------
2874 
2875 
2876  PROCEDURE Chk_update_site_ccr_values(p_vendor_site_rec   IN    r_vendor_site_rec_type,
2877        				      p_calling_prog      IN    VARCHAR2,
2878                                       x_valid             OUT   NOCOPY BOOLEAN
2879                                       ) IS
2880   e_apps_exception  EXCEPTION;
2881 
2882  BEGIN
2883     x_valid    := TRUE;
2884 
2885     IF ((AP_UTILITIES_PKG.get_ccr_status(p_vendor_site_rec.vendor_site_id, 'T') = 'T')
2886         AND (nvl(p_calling_prog,'NOT CCR') <> 'CCRImport')) THEN
2887 
2888        If (( p_vendor_site_rec.duns_number is NOT NULL)
2889         OR ( p_vendor_site_rec.country is NOT NULL)
2890         OR ( p_vendor_site_rec.address_line1 is NOT NULL)
2891         OR ( p_vendor_site_rec.address_line2 is NOT NULL)
2892         OR ( p_vendor_site_rec.address_line3 is NOT NULL)
2893         OR ( p_vendor_site_rec.address_line4 is NOT NULL)
2894         OR ( p_vendor_site_rec.city is NOT NULL)
2895         OR ( p_vendor_site_rec.state is NOT NULL)
2896         OR ( p_vendor_site_rec.zip is NOT NULL)
2897         OR ( p_vendor_site_rec.province is NOT NULL)) THEN
2898 
2899        Raise e_apps_exception;
2900       End If;
2901    END IF;
2902 
2903      EXCEPTION
2904      -- Trap validation error
2905      WHEN e_apps_exception THEN
2906          x_valid    := FALSE;
2907          FND_MESSAGE.SET_NAME('SQLAP','AP_CCR_NO_UPDATE');
2908          FND_MSG_PUB.ADD;
2909 
2910  END Chk_update_site_ccr_values;
2911 
2912 
2913 PROCEDURE Create_Vendor
2914 ( 	p_api_version           IN	NUMBER,
2915   	p_init_msg_list		IN	VARCHAR2 := FND_API.G_FALSE	,
2916 	p_commit	    	IN  	VARCHAR2 := FND_API.G_FALSE,
2917 	p_validation_level	IN  	NUMBER	:=
2918 						FND_API.G_VALID_LEVEL_FULL,
2919 	x_return_status		OUT	NOCOPY VARCHAR2		  	,
2920 	x_msg_count		OUT	NOCOPY NUMBER,
2921 	x_msg_data		OUT	NOCOPY VARCHAR2,
2922 	p_vendor_rec		IN	r_vendor_rec_type,
2923 	x_vendor_id		OUT	NOCOPY AP_SUPPLIERS.VENDOR_ID%TYPE,
2924 	x_party_id		OUT	NOCOPY HZ_PARTIES.PARTY_ID%TYPE
2925 )
2926 IS
2927 
2928 
2929     l_api_name			CONSTANT VARCHAR2(30)	:= 'Create_Vendor';
2930     l_api_version           	CONSTANT NUMBER 		:= 1.0;
2931 
2932     l_vendor_rec		r_vendor_rec_type;
2933 
2934     -- define variables for initialization
2935     l_user_defined_vendor_num_code      VARCHAR2(255);
2936     l_manual_vendor_num_type            VARCHAR2(255);
2937     l_rfq_only_site_flag                VARCHAR2(255);
2938     l_ship_to_location_id               NUMBER;
2939     l_ship_to_location_code             VARCHAR2(255);
2940     l_bill_to_location_id               NUMBER;
2941     l_bill_to_location_code             VARCHAR2(255);
2942     l_fob_lookup_code                   VARCHAR2(255);
2943     l_freight_terms_lookup_code         VARCHAR2(255);
2944     l_terms_id                          NUMBER;
2945     l_terms_disp                        VARCHAR2(255);
2946     l_distribution_set_id		NUMBER;
2947     l_always_take_disc_flag             VARCHAR2(1);
2948     l_invoice_currency_code             VARCHAR2(255);
2949     l_org_id                            NUMBER;
2950     l_set_of_books_id                   NUMBER;
2951     l_short_name                        VARCHAR2(255);
2952     l_payment_currency_code             VARCHAR2(255);
2953     l_accts_pay_ccid                    NUMBER;
2954     l_future_dated_payment_ccid         NUMBER;
2955     l_prepay_code_combination_id        NUMBER;
2956     l_vendor_pay_group_lookup_code      VARCHAR2(255);
2957     l_sys_auto_calc_int_flag            VARCHAR2(255);
2958     l_terms_date_basis                  VARCHAR2(255);
2959     l_terms_date_basis_disp             VARCHAR2(255);
2960     l_chart_of_accounts_id              NUMBER;
2961     l_fob_lookup_disp                   VARCHAR2(255);
2962     l_freight_terms_lookup_disp         VARCHAR2(255);
2963     l_vendor_pay_group_disp             VARCHAR2(255);
2964     l_fin_require_matching              VARCHAR2(255);
2965     l_sys_require_matching              VARCHAR2(255);
2966     l_fin_match_option                  VARCHAR2(255);
2967     l_po_create_dm_flag                 VARCHAR2(255);
2968     l_exclusive_payment                 VARCHAR2(255);
2969     l_vendor_auto_int_default           VARCHAR2(255);
2970     l_inventory_organization_id         NUMBER;
2971     l_ship_via_lookup_code              VARCHAR2(255);
2972     l_ship_via_disp                     VARCHAR2(255);
2973     l_sysdate                           DATE;
2974     l_enforce_ship_to_loc_code          VARCHAR2(255);
2975     l_receiving_routing_id              NUMBER;
2976     l_qty_rcv_tolerance                 NUMBER;
2977     l_qty_rcv_exception_code            VARCHAR2(255);
2978     l_days_early_receipt_allowed        NUMBER;
2979     l_days_late_receipt_allowed         NUMBER;
2980     l_allow_sub_receipts_flag           VARCHAR2(255);
2981     l_allow_unord_receipts_flag         VARCHAR2(255);
2982     l_receipt_days_exception_code       VARCHAR2(255);
2983     l_enforce_ship_to_loc_disp          VARCHAR2(255);
2984     l_qty_rcv_exception_disp            VARCHAR2(255);
2985     l_receipt_days_exception_disp       VARCHAR2(255);
2986     l_receipt_required_flag             VARCHAR2(255);
2987     l_inspection_required_flag          VARCHAR2(255);
2988     l_payment_method_lookup_code        VARCHAR2(255);
2989     l_payment_method_disp               VARCHAR2(255);
2990     l_pay_date_basis_lookup_code        VARCHAR2(255);
2991     l_pay_date_basis_disp               VARCHAR2(255);
2992     l_receiving_routing_name            VARCHAR2(255);
2993     l_ap_inst_flag                      VARCHAR2(255);
2994     l_po_inst_flag                      VARCHAR2(255);
2995     l_home_country_code                 VARCHAR2(255);
2996     l_default_awt_group_id              NUMBER;
2997     l_default_awt_group_name            VARCHAR2(255);
2998     l_allow_awt_flag                    VARCHAR2(255);
2999     l_base_currency_code                VARCHAR2(255);
3000     l_address_style                     VARCHAR2(255);
3001     l_obsolete                          VARCHAR2(255);
3002     l_use_bank_charge_flag              VARCHAR2(255);
3003     l_bank_charge_bearer                VARCHAR2(255);
3004     l_hold_unmatched_invoices_flag	VARCHAR2(1);
3005 
3006     l_user_id                		number := FND_GLOBAL.USER_ID;
3007     l_last_update_login      		number := FND_GLOBAL.LOGIN_ID;
3008     l_program_application_id 		number := FND_GLOBAL.prog_appl_id;
3009     l_program_id             		number := FND_GLOBAL.conc_program_id;
3010     l_request_id            	 	number := FND_GLOBAL.conc_request_id;
3011     l_val_return_status      		VARCHAR2(50);
3012     l_val_msg_count	    		NUMBER;
3013     l_val_msg_data			VARCHAR2(1000);
3014     l_creation_date			DATE;
3015     l_created_by			NUMBER;
3016     l_org_return_status                 VARCHAR2(50);
3017     l_org_msg_count                     NUMBER;
3018     l_org_msg_data                      VARCHAR2(1000);
3019     l_pay_return_status                 VARCHAR2(50);
3020     l_pay_msg_count                     NUMBER;
3021     l_pay_msg_data                      VARCHAR2(1000);
3022     l_zx_return_status                  VARCHAR2(50);
3023     l_zx_msg_count                      NUMBER;
3024     l_zx_msg_data                       VARCHAR2(1000);
3025     l_party_valid			VARCHAR2(1);
3026     l_payee_valid                       VARCHAR2(1);
3027     l_row_id				VARCHAR2(255);
3028     l_vendor_id				NUMBER;
3029     l_party_rec			HZ_PARTY_V2PUB.party_rec_type;
3030     l_org_rec			HZ_PARTY_V2PUB.organization_rec_type;
3031     l_org_party_id		NUMBER;
3032     l_org_party_number		VARCHAR2(30);
3033     l_org_profile_ID		NUMBER;
3034     l_party_num			VARCHAR2(1);
3035 
3036     --
3037     -- Added Sync Party Related return variables
3038     --
3039     l_sync_return_status                 VARCHAR2(50);
3040     l_sync_msg_count                     NUMBER;
3041     l_sync_msg_data                      VARCHAR2(1000);
3042 
3043 
3044     /* Variable Declaration for IBY */
3045     ext_payee_tab               IBY_DISBURSEMENT_SETUP_PUB.External_Payee_Tab_Type;
3046     ext_payee_id_tab            IBY_DISBURSEMENT_SETUP_PUB.Ext_Payee_Id_Tab_Type;
3047     ext_payee_create_tab        IBY_DISBURSEMENT_SETUP_PUB.Ext_Payee_Create_Tab_Type;
3048 
3049     l_ext_payee_rec		IBY_DISBURSEMENT_SETUP_PUB.EXTERNAL_PAYEE_REC_TYPE;
3050     l_party_usg_rec   HZ_PARTY_USG_ASSIGNMENT_PVT.party_usg_assignment_rec_type; --Bug6648405
3051     l_party_usg_validation_level NUMBER;
3052     l_debug_info      VARCHAR2(500); -- Bug 6823885
3053 
3054 BEGIN
3055 	-- Standard Start of API savepoint
3056     SAVEPOINT	Create_Vendor_PUB;
3057 
3058     -- Standard call to check for call compatibility.
3059     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
3060         	    	    	    	 	p_api_version        	,
3061    	       	    	 			l_api_name 	    	,
3062 		    	    	    	    	G_PKG_NAME )
3063     THEN
3064 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3065     END IF;
3066 
3067     -- Initialize message list if p_init_msg_list is set to TRUE.
3068     IF FND_API.to_Boolean( p_init_msg_list ) THEN
3069 	FND_MSG_PUB.initialize;
3070     END IF;
3071 
3072     --  Initialize API return status to success
3073     x_return_status := FND_API.G_RET_STS_SUCCESS;
3074     l_org_return_status := FND_API.G_RET_STS_SUCCESS;
3075     l_val_return_status := FND_API.G_RET_STS_SUCCESS;
3076     l_pay_return_status := FND_API.G_RET_STS_SUCCESS;
3077     l_sync_return_status := FND_API.G_RET_STS_SUCCESS;
3078 
3079     -- API body
3080 
3081     -- Run initialize and get required default values
3082     ap_apxvdmvd_pkg.initialize_supplier_attr(
3083         x_user_defined_vendor_num_code  => l_user_defined_vendor_num_code,
3084         x_manual_vendor_num_type        => l_manual_vendor_num_type,
3085         x_terms_id                      => l_terms_id,
3086         x_terms_disp                    => l_terms_disp,
3087         x_always_take_disc_flag         => l_always_take_disc_flag,
3088         x_invoice_currency_code         => l_invoice_currency_code,
3089         x_vendor_pay_group_lookup_code  => l_vendor_pay_group_lookup_code,
3090         x_sys_auto_calc_int_flag        => l_sys_auto_calc_int_flag,
3091         x_terms_date_basis              => l_terms_date_basis,
3092         x_terms_date_basis_disp         => l_terms_date_basis_disp,
3093         x_vendor_pay_group_disp         => l_vendor_pay_group_disp,
3094         x_fin_require_matching          => l_fin_require_matching,
3095         x_fin_match_option              => l_fin_match_option,
3096         x_sysdate                       => l_sysdate,
3097         x_pay_date_basis_lookup_code    => l_pay_date_basis_lookup_code,
3098         x_pay_date_basis_disp           => l_pay_date_basis_disp,
3099         x_ap_inst_flag                  => l_ap_inst_flag,
3100         x_use_bank_charge_flag          => l_use_bank_charge_flag,
3101         x_bank_charge_bearer            => l_bank_charge_bearer,
3102         x_calling_sequence              => ''); --l_calling_sequence
3103 
3104 
3105     l_vendor_rec := p_vendor_rec;
3106 
3107     --All fields that use to be defaulted from po_system_parameters
3108     --in the initialization procedure will no longer be defaulted at
3109     --the supplier level because system parameters are org specific
3110     l_vendor_rec.summary_flag := nvl(l_vendor_rec.summary_flag, 'N');
3111     l_vendor_rec.enabled_flag := nvl(l_vendor_rec.enabled_flag, 'Y');
3112     l_last_update_login := fnd_global.login_id;
3113     l_creation_date := sysdate;
3114     l_created_by := fnd_global.user_id;
3115     l_vendor_rec.one_time_flag   := nvl(l_vendor_rec.one_time_flag,'N');
3116 
3117     -- Bug 6085640 - Terms ID should not be set to default if Terms Name
3118     --               has been given.
3119     -- added by abhsaxen on 06-May-2008 for bug#7008314
3120     IF l_vendor_rec.terms_name IS NULL or l_vendor_rec.terms_name = ap_null_char
3121        THEN l_vendor_rec.terms_id    := nvl(l_vendor_rec.terms_id,
3122                                             l_terms_id);
3123        ELSE l_vendor_rec.terms_id    := l_vendor_rec.terms_id;
3124     END IF;
3125 
3126     l_vendor_rec.always_take_disc_flag
3127 	:= nvl(l_vendor_rec.always_take_disc_flag, l_always_take_disc_flag);
3128     l_vendor_rec.pay_date_basis_lookup_code
3129 	:= nvl(l_vendor_rec.pay_date_basis_lookup_code,
3130 			l_pay_date_basis_lookup_code);
3131     l_vendor_rec.pay_group_lookup_code
3132 	:= nvl(l_vendor_rec.pay_group_lookup_code,
3133 		l_vendor_pay_group_lookup_code);
3134     l_vendor_rec.payment_priority    := nvl(l_vendor_rec.payment_priority, 99);
3135     l_vendor_rec.invoice_currency_code
3136 	:= nvl(l_vendor_rec.invoice_currency_code, l_invoice_currency_code);
3137 
3138     -- Payment Currency Defaulting at the supplier level
3139     -- With the MOAC Project the payment currency defaulting was left
3140     -- out. Added defaulting logic to use invoice currency default from
3141     -- product setup for supplier level payment currency defaulting
3142     -- if a value is not provided in the input vendor record.
3143 
3144     l_vendor_rec.payment_currency_code
3145 	:= nvl(l_vendor_rec.payment_currency_code, l_invoice_currency_code);
3146     l_vendor_rec.hold_all_payments_flag
3147 	:= nvl(l_vendor_rec.hold_all_payments_flag, 'N');
3148     l_vendor_rec.hold_future_payments_flag
3149 	:= nvl(l_vendor_rec.hold_future_payments_flag, 'N');
3150     l_vendor_rec.start_date_active
3151 	:= nvl(l_vendor_rec.start_date_active, SYSDATE);
3152     /*po defaults
3153     l_vendor_rec.qty_rcv_tolerance
3154 	:= nvl(l_vendor_rec.qty_rcv_tolerance, l_qty_rcv_tolerance);
3155     */
3156     l_vendor_rec.women_owned_flag  := NVL(l_vendor_rec.women_owned_flag, 'N');
3157     l_vendor_rec.small_business_flag
3158 	:= NVL(l_vendor_rec.small_business_flag, 'N');
3159     l_vendor_rec.hold_flag  := nvl(l_vendor_rec.hold_flag, 'N');
3160     l_vendor_rec.terms_date_basis
3161 	:= nvl(l_vendor_rec.terms_date_basis, l_terms_date_basis);
3162     /*po defaults
3163     l_vendor_rec.days_early_receipt_allowed
3164 	:= nvl(l_vendor_rec.days_early_receipt_allowed,
3165 		l_days_early_receipt_allowed);
3166     l_vendor_rec.days_late_receipt_allowed
3167 	:= nvl(l_vendor_rec.days_late_receipt_allowed,
3168 		l_days_late_receipt_allowed);
3169     l_vendor_rec.enforce_ship_to_location_code
3170 	:= nvl(l_vendor_rec.enforce_ship_to_location_code,
3171 		l_enforce_ship_to_loc_code);
3172     */
3173     l_vendor_rec.federal_reportable_flag
3174 	:= nvl(l_vendor_rec.federal_reportable_flag, 'N');
3175     --bug6401663
3176     l_vendor_rec.hold_unmatched_invoices_flag
3177 	:= nvl(l_vendor_rec.hold_unmatched_invoices_flag,
3178 	        l_fin_require_matching);
3179     --bug6075649
3180     l_vendor_rec.match_option
3181 	:= nvl(l_vendor_rec.match_option, l_fin_match_option);
3182     /*l_vendor_rec.create_debit_memo_flag
3183 	:= nvl(l_vendor_rec.create_debit_memo_flag, l_po_create_dm_flag);
3184     l_vendor_rec.inspection_required_flag
3185 	:= nvl(l_vendor_rec.inspection_required_flag,
3186 		l_inspection_required_flag);
3187     l_vendor_rec.receipt_required_flag
3188 	:= nvl(l_vendor_rec.receipt_required_flag, l_receipt_required_flag);
3189     l_vendor_rec.receiving_routing_id
3190 	:= nvl(l_vendor_rec.receiving_routing_id, l_receiving_routing_id);
3191     */
3192     l_vendor_rec.auto_calculate_interest_flag
3193 	:= nvl(l_vendor_rec.auto_calculate_interest_flag,
3194 		l_sys_auto_calc_int_flag);
3195     /*po defaults
3196     l_vendor_rec.allow_substitute_receipts_flag
3197 	:= nvl(l_vendor_rec.allow_substitute_receipts_flag,
3198 		l_allow_sub_receipts_flag);
3199     l_vendor_rec.allow_unordered_receipts_flag
3200 	:= nvl(l_vendor_rec.allow_unordered_receipts_flag,
3201 		l_allow_unord_receipts_flag);
3202     l_vendor_rec.qty_rcv_exception_code
3203 	:= nvl(l_vendor_rec.qty_rcv_exception_code, l_qty_rcv_exception_code);
3204     */
3205     l_vendor_rec.exclude_freight_from_discount
3206 	:= nvl(l_vendor_rec.exclude_freight_from_discount, 'N');
3207 
3208     validate_vendor(p_api_version => 1.0,
3209 		p_init_msg_list => FND_API.G_FALSE,
3210 		p_commit  => FND_API.G_FALSE,
3211 		x_return_status => l_val_return_status,
3212 		x_msg_count => l_val_msg_count,
3213 		x_msg_data => l_val_msg_data,
3214 		p_vendor_rec => l_vendor_rec,
3215 		P_mode => 'I',
3216 		P_calling_prog => 'NOT ISETUP',
3217 		x_party_valid => l_party_valid,
3218 		x_payee_valid => l_payee_valid,
3219 		p_vendor_id => x_vendor_id);
3220 
3221 
3222 --bug 6371419.Added the below if clause to create a party in hz,external payee
3223 --in iby,tax code assignment in zx,supplier in AP only if the
3224 --SUPPLIER IS VALID.
3225   IF (l_val_return_status = FND_API.G_RET_STS_SUCCESS) THEN
3226 
3227     IF l_party_valid = 'N' THEN -- party_id was null
3228 
3229 	l_org_rec.created_by_module := 'AP_SUPPLIERS_API';
3230         l_org_rec.application_id := 200;
3231         l_org_rec.organization_name := l_vendor_rec.vendor_name;
3232         l_org_rec.organization_name_phonetic :=
3233 		l_vendor_rec.vendor_name_alt;
3234 
3235         --bug6050423.Pass null value to jgzz_fiscal_code in hz_parties for
3236         --individual contractors and employees.
3237         --taxpayer id of individual contractors is stored only in ap_suppliers.
3238         --bug6691916.commented the below if clause and added the one below that.
3239 	--as per analysis,only organization lookup code of type individual
3240 	--and foreign individual belong to individual suppliers category.
3241          /*IF ( ((UPPER(p_vendor_rec.vendor_type_lookup_code)='CONTRACTOR')
3242                 AND UPPER(p_vendor_rec.organization_type_lookup_code) IN
3243                         ('INDIVIDUAL','FOREIGN INDIVIDUAL',
3244                         'PARTNERSHIP','FOREIGN PARTNERSHIP') )
3245              OR  (UPPER(p_vendor_rec.vendor_type_lookup_code)='EMPLOYEE')) THEN*/
3246 
3247          IF (  UPPER(p_vendor_rec.organization_type_lookup_code) IN
3248                         ('INDIVIDUAL','FOREIGN INDIVIDUAL')
3249                OR
3250                (UPPER(p_vendor_rec.vendor_type_lookup_code)='EMPLOYEE')) THEN
3251                  l_org_rec.jgzz_fiscal_code :=NULL;
3252          ELSE
3253                 l_org_rec.jgzz_fiscal_code := l_vendor_rec.jgzz_fiscal_code;
3254 
3255          END IF;
3256 
3257         -- Discussed with Indrajit. We will not pass the SIC Code
3258         -- TCA as the AP's SIC code is free form entry field.
3259         -- Commenting this code as part of bug 5066199
3260 	-- l_org_rec.sic_code := l_vendor_rec.sic_code;
3261 	l_org_rec.tax_reference := l_vendor_rec.tax_reference;
3262 
3263 	fnd_profile.get('HZ_GENERATE_PARTY_NUMBER', l_party_num);
3264 	IF nvl(l_party_num, 'Y') = 'N' THEN
3265 		SELECT HZ_PARTY_NUMBER_S.Nextval
3266 		INTO l_party_rec.party_number
3267 		FROM DUAL;
3268 	END IF;
3269 
3270 	l_org_rec.party_rec := l_party_rec;
3271 
3272 	hz_party_v2pub.create_organization(
3273 		p_init_msg_list => FND_API.G_FALSE,
3274 		p_organization_rec => l_org_rec,
3275 		p_party_usage_code => 'SUPPLIER',
3276 	--	p_commit => FND_API.G_FALSE,
3277 		x_return_status => l_org_return_status,
3278 		x_msg_count => l_org_msg_count,
3279 		x_msg_data => l_org_msg_data,
3280 		x_party_id => l_org_party_id,
3281 		x_party_number => l_org_party_number,
3282 		x_profile_id => l_org_profile_id);
3283 		IF l_org_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3284       ------------------------------------------------------------------------
3285       l_debug_info := 'After call to hz_party_v2pub.create_organization';
3286       l_debug_info := l_debug_info||' Return status : '||l_org_return_status||' Error : '||l_org_msg_data;
3287       ------------------------------------------------------------------------
3288       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3289             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
3290       END IF;
3291     END IF;
3292 
3293         l_vendor_rec.party_id := l_org_party_id;
3294 
3295     END IF; --party_id was null
3296     --Bug6677806
3297         l_party_usg_validation_level := HZ_PARTY_USG_ASSIGNMENT_PVT.G_VALID_LEVEL_NONE;
3298         l_party_usg_rec.party_id := nvl(l_vendor_rec.party_id,l_org_party_id);
3299         l_party_usg_rec.party_usage_code := 'SUPPLIER';
3300         l_party_usg_rec.created_by_module := 'AP_SUPPLIERS_API';--Bug6678590
3301 
3302         HZ_PARTY_USG_ASSIGNMENT_PVT.assign_party_usage (
3303         p_validation_level          => l_party_usg_validation_level,
3304         p_party_usg_assignment_rec  => l_party_usg_rec,
3305         x_return_status             => l_org_return_status,
3306         x_msg_count                 => l_org_msg_count,
3307         x_msg_data                  => l_org_msg_data);
3308         IF l_org_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3309           ------------------------------------------------------------------------
3310           l_debug_info := 'After call to HZ_PARTY_USG_ASSIGNMENT_PVT.assign_party_usage';
3311           l_debug_info := l_debug_info||' Return status : '||l_org_return_status||' Error : '||l_org_msg_data;
3312           ------------------------------------------------------------------------
3313           IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3314                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
3315           END IF;
3316         END IF;
3317 
3318     IF l_payee_valid = 'N' THEN --payee record is valid
3319 
3320     -- As per the discussion with Omar/Jayanta, we will only
3321     -- have payables payment function and no more employee expenses
3322     -- payment function.
3323 
3324 
3325         IF l_vendor_rec.ext_payee_rec.payment_function IS NULL THEN
3326 
3327 	    l_ext_payee_rec.payee_party_id := l_vendor_rec.party_id;
3328         l_ext_payee_rec.payment_function  := 'PAYABLES_DISB';
3329         l_ext_payee_rec.exclusive_pay_flag   := 'N';
3330 
3331 		-- Bug 6458813
3332         l_ext_payee_rec.default_pmt_method        := l_vendor_rec.ext_payee_rec.default_pmt_method;
3333 		l_ext_payee_rec.ece_tp_loc_code           := l_vendor_rec.ext_payee_rec.ece_tp_loc_code;
3334         l_ext_payee_rec.bank_charge_bearer        := l_vendor_rec.ext_payee_rec.bank_charge_bearer;
3335         l_ext_payee_rec.bank_instr1_code          := l_vendor_rec.ext_payee_rec.bank_instr1_code;
3336         l_ext_payee_rec.bank_instr2_code          := l_vendor_rec.ext_payee_rec.bank_instr2_code;
3337         l_ext_payee_rec.bank_instr_detail         := l_vendor_rec.ext_payee_rec.bank_instr_detail;
3338         l_ext_payee_rec.pay_reason_code           := l_vendor_rec.ext_payee_rec.pay_reason_code;
3339         l_ext_payee_rec.pay_reason_com            := l_vendor_rec.ext_payee_rec.pay_reason_com;
3340         l_ext_payee_rec.pay_message1              := l_vendor_rec.ext_payee_rec.pay_message1;
3341         l_ext_payee_rec.pay_message2              := l_vendor_rec.ext_payee_rec.pay_message2;
3342         l_ext_payee_rec.pay_message3              := l_vendor_rec.ext_payee_rec.pay_message3;
3343         l_ext_payee_rec.delivery_channel          := l_vendor_rec.ext_payee_rec.delivery_channel;
3344         l_ext_payee_rec.pmt_format                := l_vendor_rec.ext_payee_rec.pmt_format;
3345         l_ext_payee_rec.settlement_priority       := l_vendor_rec.ext_payee_rec.settlement_priority;
3346         -- Bug 6458813 ends
3347 
3348            ext_payee_tab(1)   := l_ext_payee_rec;
3349 
3350 	ELSE
3351 
3352            ext_payee_tab(1)   := l_vendor_rec.ext_payee_rec;
3353 
3354         END IF;
3355 
3356         /* Calling IBY Payee Creation API */
3357         IBY_DISBURSEMENT_SETUP_PUB.Create_External_Payee
3358               ( p_api_version         => 1.0,
3359                 p_init_msg_list       => FND_API.G_FALSE,
3360                 p_ext_payee_tab       => ext_payee_tab,
3361                 x_return_status       => l_pay_return_status,
3362                 x_msg_count           => l_pay_msg_count,
3363                 x_msg_data            => l_pay_msg_data,
3364                 x_ext_payee_id_tab    => ext_payee_id_tab,
3365                 x_ext_payee_status_tab => ext_payee_create_tab);
3366         IF l_pay_return_status = FND_API.G_RET_STS_SUCCESS THEN
3367           ------------------------------------------------------------------------
3368           l_debug_info := 'After call to IBY_DISBURSEMENT_SETUP_PUB.Create_External_Payee';
3369           l_debug_info := l_debug_info||' Return status : '||l_pay_return_status||' Error : '||l_pay_msg_data;
3370           ------------------------------------------------------------------------
3371           IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3372             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
3373           END IF;
3374         END IF;
3375 
3376     END IF;
3377 
3378     IF l_vendor_rec.party_id IS NOT NULL AND
3379        p_vendor_rec.vendor_type_lookup_code IS NOT NULL THEN
3380 
3381 	zx_tcm_bes_registration_pvt.synch_ptp_code_assigment(
3382 				p_party_id       => l_vendor_rec.party_id,
3383 				p_class_category => 'SUPPLIER_TYPE',
3384 				p_class_code     => p_vendor_rec.vendor_type_lookup_code,
3385 				x_return_status  => l_zx_return_status,
3386 				x_msg_count      => l_zx_msg_count,
3387 				x_msg_data       => l_zx_msg_data );
3388 			IF l_zx_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3389         ------------------------------------------------------------------------
3390         l_debug_info := 'After call to zx_tcm_bes_registration_pvt.synch_ptp_code_assigment';
3391         l_debug_info := l_debug_info||' Return status : '||l_zx_return_status||' Error : '||l_zx_msg_data;
3392         ------------------------------------------------------------------------
3393         IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3394           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
3395         END IF;
3396       END IF;
3397 
3398     END IF;
3399 
3400    --bug 6371419.commented the below condition as it was checked already
3401    -- IF (l_val_return_status = FND_API.G_RET_STS_SUCCESS) AND
3402         IF      (l_org_return_status = FND_API.G_RET_STS_SUCCESS) AND
3403 		(l_payee_valid = 'N' OR
3404 		l_pay_return_status = FND_API.G_RET_STS_SUCCESS) THEN
3405 
3406 	ap_vendors_pkg.insert_row(
3407 		p_vendor_rec => l_vendor_rec
3408 		,p_last_update_date => sysdate
3409 		,p_last_updated_by => nvl(l_user_id,-1)
3410 		,p_last_update_login => nvl(l_last_update_login,-1)
3411 		,p_creation_date => sysdate
3412 		,p_created_by => nvl(l_user_id,-1)
3413 		,p_request_id => l_request_id
3414 		,p_program_application_id => l_program_application_id
3415 		,p_program_id => l_program_id
3416 		,p_program_update_date => sysdate
3417 		,x_rowid => l_row_id
3418         	,x_vendor_id => l_vendor_id);
3419         ------------------------------------------------------------------------
3420         l_debug_info := 'After call to ap_vendors_pkg.insert_row';
3421         ------------------------------------------------------------------------
3422         IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3423           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
3424         END IF;
3425 
3426         --
3427         -- Added Call to Sync the Party Information into ap_supplier
3428         -- record for the performance reasons.
3429         --
3430         AP_TCA_SUPPLIER_SYNC_PKG.SYNC_Supplier(
3431                         l_sync_return_status,
3432                         l_sync_msg_count,
3433                         l_sync_msg_data,
3434                         l_vendor_rec.party_id);
3435         IF l_sync_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3436           ------------------------------------------------------------------------
3437           l_debug_info := 'After call to AP_TCA_SUPPLIER_SYNC_PKG.SYNC_Supplier';
3438           l_debug_info := l_debug_info||' Return status : '||l_sync_return_status||' Error : '||l_sync_msg_data;
3439           ------------------------------------------------------------------------
3440           IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3441             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
3442           END IF;
3443         END IF;
3444 
3445         IF l_sync_return_status = FND_API.G_RET_STS_SUCCESS THEN
3446            Raise_Supplier_Event( i_vendor_id => l_vendor_id ); -- Bug 7307669
3447 	   x_return_status := FND_API.G_RET_STS_SUCCESS;
3448         END IF;
3449         -- Bug 5570585
3450 	x_party_id := nvl(l_vendor_rec.party_id,l_org_party_id);
3451 	x_vendor_id := l_vendor_id;
3452 
3453       END IF; --bug6371419.end of l_org_return_status SUCCESS
3454 
3455  ELSIF (l_val_return_status = FND_API.G_RET_STS_UNEXP_ERROR) OR
3456 		(l_org_return_status = FND_API.G_RET_STS_UNEXP_ERROR) OR
3457 		(l_pay_return_status = FND_API.G_RET_STS_UNEXP_ERROR) OR
3458                 (l_sync_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3459 
3460 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3461 
3462  ELSE
3463 
3464 	x_return_status := FND_API.G_RET_STS_ERROR;
3465  END IF;  --Supplier Valid
3466 
3467     -- End of API body.
3468 
3469     -- Standard check of p_commit.
3470     IF FND_API.To_Boolean( p_commit ) THEN
3471 	COMMIT WORK;
3472     END IF;
3473 
3474     -- Standard call to get message count and if count is 1,
3475     -- get message info.
3476     FND_MSG_PUB.Count_And_Get(
3477 	p_count         	=>      x_msg_count     	,
3478         p_data          	=>      x_msg_data
3479     	);
3480 
3481 EXCEPTION
3482     WHEN FND_API.G_EXC_ERROR THEN
3483 		ROLLBACK TO Create_Vendor_PUB;
3484 		x_return_status := FND_API.G_RET_STS_ERROR ;
3485 		FND_MSG_PUB.Count_And_Get
3486     		(  	p_count         	=>      x_msg_count,
3487         		p_data          	=>      x_msg_data
3488     		);
3489 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3490 		ROLLBACK TO Create_Vendor_PUB;
3491 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3492 		FND_MSG_PUB.Count_And_Get
3493     		(  	p_count         	=>      x_msg_count,
3494         		p_data          	=>      x_msg_data
3495     		);
3496 	WHEN OTHERS THEN
3497 		ROLLBACK TO Create_Vendor_PUB;
3498 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3499   		IF 	FND_MSG_PUB.Check_Msg_Level
3500 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3501         		FND_MSG_PUB.Add_Exc_Msg
3502     	    		(	G_PKG_NAME  	    ,
3503     	    			l_api_name
3504 	    		);
3505 		END IF;
3506 		FND_MSG_PUB.Count_And_Get
3507     		(  	p_count         	=>      x_msg_count,
3508         		p_data          	=>      x_msg_data
3509     		);
3510 END Create_Vendor;
3511 
3512 PROCEDURE Update_Vendor
3513 ( 	p_api_version           IN	NUMBER,
3514   	p_init_msg_list		IN	VARCHAR2 := FND_API.G_FALSE	,
3515 	p_commit	    	IN  	VARCHAR2 := FND_API.G_FALSE,
3516 	p_validation_level	IN  	NUMBER	:=
3517 						FND_API.G_VALID_LEVEL_FULL,
3518 	x_return_status		OUT	NOCOPY VARCHAR2		  	,
3519 	x_msg_count		OUT	NOCOPY NUMBER,
3520 	x_msg_data		OUT	NOCOPY VARCHAR2,
3521 	p_vendor_rec		IN	r_vendor_rec_type,
3522 	p_vendor_id		IN	NUMBER
3523 )
3524 IS
3525     l_api_name			CONSTANT VARCHAR2(30)	:= 'Update_Vendor';
3526     l_api_version           	CONSTANT NUMBER 		:= 1.0;
3527 
3528     l_def_org_id		NUMBER;
3529     l_org_context		VARCHAR2(1);
3530 
3531     l_user_id                	number := FND_GLOBAL.USER_ID;
3532     l_last_update_login      	number := FND_GLOBAL.LOGIN_ID;
3533     l_program_application_id 	number := FND_GLOBAL.prog_appl_id;
3534     l_program_id             	number := FND_GLOBAL.conc_program_id;
3535     l_request_id             	number := FND_GLOBAL.conc_request_id;
3536 
3537     l_vendor_rec		r_vendor_rec_type;
3538     l_val_return_status                 VARCHAR2(50);
3539     l_val_msg_count                     NUMBER;
3540     l_val_msg_data                      VARCHAR2(1000);
3541     l_party_valid		VARCHAR2(1);
3542     l_payee_valid                       VARCHAR2(1);
3543     l_rowid			VARCHAR2(255);
3544 
3545     l_sync_return_status                 VARCHAR2(50);
3546     l_sync_msg_count                     NUMBER;
3547     l_sync_msg_data                      VARCHAR2(1000);
3548     l_org_party_id                       NUMBER;
3549 
3550 
3551 BEGIN
3552 	-- Standard Start of API savepoint
3553     SAVEPOINT	Update_Vendor_PUB;
3554 
3555     -- Standard call to check for call compatibility.
3556     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
3557         	    	    	    	 	p_api_version        	,
3558    	       	    	 			l_api_name 	    	,
3559 		    	    	    	    	G_PKG_NAME )
3560     THEN
3561 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3562     END IF;
3563 
3564     -- Initialize message list if p_init_msg_list is set to TRUE.
3565     IF FND_API.to_Boolean( p_init_msg_list ) THEN
3566 	FND_MSG_PUB.initialize;
3567     END IF;
3568 
3569     --  Initialize API return status to success
3570     x_return_status := FND_API.G_RET_STS_SUCCESS;
3571     l_sync_return_status := FND_API.G_RET_STS_SUCCESS;
3572 
3573 
3574     -- API body
3575 
3576    /*
3577    If (FV_INSTALL.ENABLED(l_def_org_id)) THEN
3578       g_fed_fin_installed := 'Y';
3579    Else
3580 	g_fed_fin_installed := 'N';
3581    End If;
3582    */
3583 
3584     l_vendor_rec := p_vendor_rec;
3585 
3586    validate_vendor(p_api_version => 1.0,
3587 		p_init_msg_list => FND_API.G_FALSE,
3588 		p_commit  => FND_API.G_FALSE,
3589 		x_return_status => l_val_return_status,
3590 		x_msg_count => l_val_msg_count,
3591 		x_msg_data => l_val_msg_data,
3592 		p_vendor_rec => l_vendor_rec,
3593 		P_mode => 'U',
3594 		P_calling_prog => 'NOT ISETUP',
3595 		x_party_valid => l_party_valid,
3596 		x_payee_valid => l_payee_valid,
3597 		p_vendor_id => p_vendor_id );
3598 
3599     IF (l_val_return_status = FND_API.G_RET_STS_SUCCESS) THEN
3600 
3601 	-- Select all the values needed to pass to update_row
3602 	-- from PO_VENDORS
3603     	SELECT
3604 		decode(l_vendor_rec.allow_awt_flag,
3605                    ap_null_char, NULL,
3606                    nvl(l_vendor_rec.allow_awt_flag, allow_awt_flag))
3607 		,decode(l_vendor_rec.allow_substitute_receipts_flag,
3608                     ap_null_char, NULL,
3609                     nvl(l_vendor_rec.allow_substitute_receipts_flag,
3610                         allow_substitute_receipts_flag))
3611 		,decode(l_vendor_rec.allow_unordered_receipts_flag,
3612                     ap_null_char, NULL,
3613                     nvl(l_vendor_rec.allow_unordered_receipts_flag,
3614                         allow_unordered_receipts_flag))
3615 		,decode(l_vendor_rec.always_take_disc_flag,
3616                     ap_null_char,NULL,
3617                     nvl(l_vendor_rec.always_take_disc_flag,
3618                         always_take_disc_flag))
3619 		,decode(l_vendor_rec.attribute_category,
3620                     ap_null_char, NULL,
3621                     nvl(l_vendor_rec.attribute_category,
3622                         attribute_category))
3623 		,decode(l_vendor_rec.attribute1,
3624                     ap_null_char, NULL,
3625                    nvl(l_vendor_rec.attribute1, attribute1))
3626 		,decode(l_vendor_rec.attribute10,
3627                     ap_null_char, NULL,
3628                    nvl(l_vendor_rec.attribute10, attribute10))
3629 		,decode(l_vendor_rec.attribute11,
3630                     ap_null_char, NULL,
3631                    nvl(l_vendor_rec.attribute11, attribute11))
3632 		,decode(l_vendor_rec.attribute12,
3633                     ap_null_char, NULL,
3634                    nvl(l_vendor_rec.attribute12, attribute12))
3635 		,decode(l_vendor_rec.attribute13,
3636                     ap_null_char, NULL,
3637                    nvl(l_vendor_rec.attribute13, attribute13))
3638 		,decode(l_vendor_rec.attribute14,
3639                     ap_null_char, NULL,
3640                    nvl(l_vendor_rec.attribute14, attribute14))
3641 		,decode(l_vendor_rec.attribute15,
3642                     ap_null_char, NULL,
3643                    nvl(l_vendor_rec.attribute15, attribute15))
3644 		,decode(l_vendor_rec.attribute2,
3645                     ap_null_char, NULL,
3646                    nvl(l_vendor_rec.attribute2, attribute2))
3647 		,decode(l_vendor_rec.attribute3,
3648                     ap_null_char, NULL,
3649                    nvl(l_vendor_rec.attribute3, attribute3))
3650 		,decode(l_vendor_rec.attribute4,
3651                     ap_null_char, NULL,
3652                    nvl(l_vendor_rec.attribute4, attribute4))
3653 		,decode(l_vendor_rec.attribute5,
3654                     ap_null_char, NULL,
3655                    nvl(l_vendor_rec.attribute5, attribute5))
3656 		,decode(l_vendor_rec.attribute6,
3657                     ap_null_char, NULL,
3658                    nvl(l_vendor_rec.attribute6, attribute6))
3659 		,decode(l_vendor_rec.attribute7,
3660                     ap_null_char, NULL,
3661                    nvl(l_vendor_rec.attribute7, attribute7))
3662 		,decode(l_vendor_rec.attribute8,
3663                     ap_null_char, NULL,
3664                    nvl(l_vendor_rec.attribute8, attribute8))
3665 		,decode(l_vendor_rec.attribute9,
3666                     ap_null_char, NULL,
3667                    nvl(l_vendor_rec.attribute9, attribute9))
3668 		,decode(l_vendor_rec.auto_calculate_interest_flag,
3669                     ap_null_char, NULL,
3670                     nvl(l_vendor_rec.auto_calculate_interest_flag,
3671                         auto_calculate_interest_flag))
3672 		,decode(l_vendor_rec.awt_group_id,
3673                     ap_null_num,NULL,
3674                     nvl(l_vendor_rec.awt_group_id,
3675                         awt_group_id))
3676 		,decode(l_vendor_rec.bank_charge_bearer,
3677                     ap_null_char,NULL,
3678                     nvl(l_vendor_rec.bank_charge_bearer,
3679                         bank_charge_bearer))
3680 		,decode(l_vendor_rec.check_digits,
3681                     ap_null_char, NULL,
3682                     nvl(l_vendor_rec.check_digits,
3683                         check_digits))
3684 		,decode(l_vendor_rec.create_debit_memo_flag,
3685                     ap_null_char,NULL,
3686                     nvl(l_vendor_rec.create_debit_memo_flag,
3687                         create_debit_memo_flag))
3688 		,decode(l_vendor_rec.customer_num,
3689                     ap_null_char,NULL,
3690                     nvl(l_vendor_rec.customer_num,
3691                         customer_num))
3692 		,decode(l_vendor_rec.days_early_receipt_allowed,
3693                     ap_null_num,NULL,
3694                     nvl(l_vendor_rec.days_early_receipt_allowed,
3695                         days_early_receipt_allowed))
3696 		,decode(l_vendor_rec.days_late_receipt_allowed,
3697                     ap_null_num,NULL,
3698                     nvl(l_vendor_rec.days_late_receipt_allowed,
3699                         days_late_receipt_allowed))
3700 		,decode(l_vendor_rec.employee_id,
3701                     ap_null_num,NULL,
3702                     nvl(l_vendor_rec.employee_id,
3703                         employee_id))
3704 		,decode(l_vendor_rec.enabled_flag,
3705                     ap_null_char,NULL,
3706                     nvl(l_vendor_rec.enabled_flag,
3707                         enabled_flag))
3708 		,decode(l_vendor_rec.end_date_active,
3709                     ap_null_date,NULL,
3710                     nvl(l_vendor_rec.end_date_active,
3711                         end_date_active))
3712 		,decode(l_vendor_rec.enforce_ship_to_location_code,
3713                     ap_null_char, NULL,
3714                     nvl(l_vendor_rec.enforce_ship_to_location_code,
3715                         enforce_ship_to_location_code ))
3716 		,decode(l_vendor_rec.exclude_freight_from_discount,
3717                     ap_null_char,NULL,
3718                     nvl(l_vendor_rec.exclude_freight_from_discount,
3719                         exclude_freight_from_discount))
3720 		,decode(l_vendor_rec.federal_reportable_flag,
3721                     ap_null_char,NULL,
3722                     nvl(l_vendor_rec.federal_reportable_flag,
3723                         federal_reportable_flag))
3724 		,decode(l_vendor_rec.global_attribute_category,
3725                     ap_null_char,NULL,
3726                     nvl(l_vendor_rec.global_attribute_category,
3727                         global_attribute_category))
3728 		,decode(l_vendor_rec.global_attribute1,
3729                     ap_null_char,NULL,
3730                     nvl(l_vendor_rec.global_attribute1,
3731                         global_attribute1))
3732 		,decode(l_vendor_rec.global_attribute2,
3733                     ap_null_char,NULL,
3734                     nvl(l_vendor_rec.global_attribute2,
3735                         global_attribute2))
3736 		,decode(l_vendor_rec.global_attribute3,
3737                     ap_null_char,NULL,
3738                     nvl(l_vendor_rec.global_attribute3,
3739                         global_attribute3))
3740 		,decode(l_vendor_rec.global_attribute4,
3741                     ap_null_char,NULL,
3742                     nvl(l_vendor_rec.global_attribute4,
3743                         global_attribute4))
3744 		,decode(l_vendor_rec.global_attribute5,
3745                     ap_null_char,NULL,
3746                     nvl(l_vendor_rec.global_attribute5,
3747                         global_attribute5))
3748 		,decode(l_vendor_rec.global_attribute6,
3749                     ap_null_char,NULL,
3750                     nvl(l_vendor_rec.global_attribute6,
3751                         global_attribute6))
3752 		,decode(l_vendor_rec.global_attribute7,
3753                     ap_null_char,NULL,
3754                     nvl(l_vendor_rec.global_attribute7,
3755                         global_attribute7))
3756 		,decode(l_vendor_rec.global_attribute8,
3757                     ap_null_char,NULL,
3758                     nvl(l_vendor_rec.global_attribute8,
3759                         global_attribute8))
3760 		,decode(l_vendor_rec.global_attribute9,
3761                     ap_null_char,NULL,
3762                     nvl(l_vendor_rec.global_attribute9,
3763                         global_attribute9))
3764 		,decode(l_vendor_rec.global_attribute10,
3765                     ap_null_char,NULL,
3766                     nvl(l_vendor_rec.global_attribute10,
3767                         global_attribute10))
3768 		,decode(l_vendor_rec.global_attribute11,
3769                     ap_null_char,NULL,
3770                     nvl(l_vendor_rec.global_attribute11,
3771                         global_attribute11))
3772 		,decode(l_vendor_rec.global_attribute12,
3773                     ap_null_char,NULL,
3774                     nvl(l_vendor_rec.global_attribute12,
3775                         global_attribute12))
3776 		,decode(l_vendor_rec.global_attribute13,
3777                     ap_null_char,NULL,
3778                     nvl(l_vendor_rec.global_attribute13,
3779                         global_attribute13))
3780 		,decode(l_vendor_rec.global_attribute14,
3781                     ap_null_char,NULL,
3782                     nvl(l_vendor_rec.global_attribute14,
3783                         global_attribute14))
3784 		,decode(l_vendor_rec.global_attribute15,
3785                     ap_null_char,NULL,
3786                     nvl(l_vendor_rec.global_attribute15,
3787                         global_attribute15))
3788 		,decode(l_vendor_rec.global_attribute16,
3789                     ap_null_char,NULL,
3790                     nvl(l_vendor_rec.global_attribute16,
3791                         global_attribute16))
3792 		,decode(l_vendor_rec.global_attribute17,
3793                     ap_null_char,NULL,
3794                     nvl(l_vendor_rec.global_attribute17,
3795                         global_attribute17))
3796 		,decode(l_vendor_rec.global_attribute18,
3797                     ap_null_char,NULL,
3798                     nvl(l_vendor_rec.global_attribute18,
3799                         global_attribute18))
3800 		,decode(l_vendor_rec.global_attribute19,
3801                     ap_null_char,NULL,
3802                     nvl(l_vendor_rec.global_attribute19,
3803                         global_attribute19))
3804 		,decode(l_vendor_rec.global_attribute20,
3805                     ap_null_char,NULL,
3806                     nvl(l_vendor_rec.global_attribute20,
3807                         global_attribute20))
3808 		,decode(l_vendor_rec.hold_all_payments_flag,
3809                     ap_null_char,NULL,
3810                     nvl(l_vendor_rec.hold_all_payments_flag,
3811                         hold_all_payments_flag))
3812 		,decode(l_vendor_rec.hold_by,
3813                     ap_null_num, NULL,
3814                     nvl(l_vendor_rec.hold_by, hold_by))
3815 		,decode(l_vendor_rec.hold_date,
3816                     ap_null_date,NULL,
3817                     nvl(l_vendor_rec.hold_date, hold_date))
3818 		,decode(l_vendor_rec.hold_flag,
3819                     ap_null_char,NULL,
3820                     nvl(l_vendor_rec.hold_flag, hold_flag))
3821 		,decode(l_vendor_rec.hold_future_payments_flag,
3822                     ap_null_char,NULL,
3823                     nvl(l_vendor_rec.hold_future_payments_flag,
3824                         hold_future_payments_flag))
3825 		,decode(l_vendor_rec.hold_reason,
3826                     ap_null_char,NULL,
3827                     nvl(l_vendor_rec.hold_reason, hold_reason))
3828 		,decode(l_vendor_rec.hold_unmatched_invoices_flag,
3829                     ap_null_char,NULL,
3830                     nvl(l_vendor_rec.hold_unmatched_invoices_flag,
3831                         hold_unmatched_invoices_flag))
3832 		,decode(l_vendor_rec.inspection_required_flag,
3833                     ap_null_char,NULL,
3834                     nvl(l_vendor_rec.inspection_required_flag,
3835                         inspection_required_flag ))
3836 		,decode(l_vendor_rec.invoice_amount_limit,
3837                     ap_null_num, NULL,
3838                     nvl(l_vendor_rec.invoice_amount_limit,
3839                         invoice_amount_limit))
3840 		,decode(l_vendor_rec.invoice_currency_code,
3841                     ap_null_char,NULL,
3842                     nvl(l_vendor_rec.invoice_currency_code,
3843                         invoice_currency_code))
3844 		,decode(l_vendor_rec.match_option,
3845                     ap_null_char,NULL,
3846                     nvl(l_vendor_rec.match_option, match_option))
3847 		,decode(l_vendor_rec.min_order_amount,
3848                     ap_null_num,NULL,
3849                     nvl(l_vendor_rec.min_order_amount,
3850                         min_order_amount))
3851 		,decode(l_vendor_rec.minority_group_lookup_code,
3852                     ap_null_char,NULL,
3853                     nvl(l_vendor_rec.minority_group_lookup_code,
3854                         minority_group_lookup_code))
3855 		,decode(l_vendor_rec.name_control,
3856                     ap_null_char,NULL,
3857                     nvl(l_vendor_rec.name_control, name_control))
3858 		,decode(l_vendor_rec.one_time_flag,
3859                     ap_null_char,NULL,
3860                     nvl(l_vendor_rec.one_time_flag, one_time_flag ))
3861 		,decode(l_vendor_rec.organization_type_lookup_code,
3862                     ap_null_char,NULL,
3863                     nvl(l_vendor_rec.organization_type_lookup_code,
3864                         organization_type_lookup_code))
3865 		,decode(l_vendor_rec.parent_vendor_id,
3866                     ap_null_num,NULL,
3867                     nvl(l_vendor_rec.parent_vendor_id,
3868                         parent_vendor_id))
3869 		,decode(l_vendor_rec.parent_party_id,
3870                     ap_null_num,NULL,
3871                     nvl(l_vendor_rec.parent_party_id,
3872                         parent_party_id))
3873 		,decode(l_vendor_rec.party_id,
3874                     ap_null_num,NULL,
3875                     nvl(l_vendor_rec.party_id, party_id))
3876 		,decode(l_vendor_rec.pay_date_basis_lookup_code,
3877                     ap_null_char,NULL,
3878                     nvl(l_vendor_rec.pay_date_basis_lookup_code,
3879                         pay_date_basis_lookup_code))
3880 		,decode(l_vendor_rec.pay_group_lookup_code,
3881                     ap_null_char,NULL,
3882                     nvl(l_vendor_rec.pay_group_lookup_code,
3883                         pay_group_lookup_code))
3884 		,decode(l_vendor_rec.payment_currency_code,
3885                     ap_null_char,NULL,
3886                     nvl(l_vendor_rec.payment_currency_code,
3887                         payment_currency_code))
3888 		,decode(l_vendor_rec.payment_priority,
3889                     ap_null_num,NULL,
3890                     nvl(l_vendor_rec.payment_priority,
3891                         payment_priority))
3892 		,decode(l_vendor_rec.purchasing_hold_reason,
3893                     ap_null_char,NULL,
3894                     nvl(l_vendor_rec.purchasing_hold_reason,
3895                         purchasing_hold_reason))
3896 		,decode(l_vendor_rec.qty_rcv_exception_code,
3897                     ap_null_char,NULL,
3898                     nvl(l_vendor_rec.qty_rcv_exception_code,
3899                         qty_rcv_exception_code))
3900 		,decode(l_vendor_rec.qty_rcv_tolerance,
3901                     ap_null_num,NULL,
3902                     nvl(l_vendor_rec.qty_rcv_tolerance,
3903                         qty_rcv_tolerance))
3904 		,decode(l_vendor_rec.receipt_days_exception_code,
3905                     ap_null_char,NULL,
3906                     nvl(l_vendor_rec.receipt_days_exception_code,
3907                         receipt_days_exception_code))
3908 		,decode(l_vendor_rec.receipt_required_flag,
3909                     ap_null_char,NULL,
3910                     nvl(l_vendor_rec.receipt_required_flag,
3911                         receipt_required_flag))
3912 		,decode(l_vendor_rec.receiving_routing_id,
3913                     ap_null_num,NULL,
3914                     nvl(l_vendor_rec.receiving_routing_id,
3915                         receiving_routing_id))
3916 		,decode(l_vendor_rec.segment1,
3917                     ap_null_char,NULL,
3918                     nvl(l_vendor_rec.segment1, segment1 ))
3919 		,decode(l_vendor_rec.segment2,
3920                     ap_null_char,NULL,
3921                     nvl(l_vendor_rec.segment2, segment2 ))
3922 		,decode(l_vendor_rec.segment3,
3923                     ap_null_char,NULL,
3924                     nvl(l_vendor_rec.segment3, segment3 ))
3925 		,decode(l_vendor_rec.segment4,
3926                     ap_null_char,NULL,
3927                     nvl(l_vendor_rec.segment4, segment4 ))
3928 		,decode(l_vendor_rec.segment5,
3929                     ap_null_char,NULL,
3930                     nvl(l_vendor_rec.segment5, segment5 ))
3931 		,decode(l_vendor_rec.set_of_books_id,
3932                     ap_null_num,NULL,
3933                     nvl(l_vendor_rec.set_of_books_id,
3934                         set_of_books_id))
3935 		,decode(l_vendor_rec.small_business_flag,
3936                     ap_null_char,NULL,
3937                     nvl(l_vendor_rec.small_business_flag,
3938                         small_business_flag ))
3939 		,decode(l_vendor_rec.start_date_active,
3940                     ap_null_date,NULL,
3941                     nvl(l_vendor_rec.start_date_active,
3942                         start_date_active))
3943 		,decode(l_vendor_rec.state_reportable_flag,
3944                     ap_null_char,NULL,
3945                     nvl(l_vendor_rec.state_reportable_flag,
3946                         state_reportable_flag))
3947 		,decode(l_vendor_rec.summary_flag,
3948                     ap_null_char,NULL,
3949                     nvl(l_vendor_rec.summary_flag, summary_flag))
3950 		,decode(l_vendor_rec.tax_reporting_name,
3951                     ap_null_char,NULL,
3952                     nvl(l_vendor_rec.tax_reporting_name,
3953                         tax_reporting_name))
3954 		,decode(l_vendor_rec.tax_verification_date,
3955                     ap_null_date,NULL,
3956                     nvl(l_vendor_rec.tax_verification_date,
3957                         tax_verification_date))
3958 		,decode(l_vendor_rec.terms_date_basis,
3959                     ap_null_char,NULL,
3960                     nvl(l_vendor_rec.terms_date_basis,
3961                         terms_date_basis))
3962 		,decode(l_vendor_rec.terms_id,
3963                     ap_null_num,NULL,
3964                     nvl(l_vendor_rec.terms_id, terms_id ))
3965                 --bug6050423 starts.system inserts taxpayer id
3966                 --of individual contractors into ap_suppliers
3967                 ,decode(l_vendor_rec.jgzz_fiscal_code,
3968                     ap_null_char,NULL,
3969                     nvl(l_vendor_rec.jgzz_fiscal_code,nvl(individual_1099,num_1099)))
3970                 --bug6050423 ends
3971 		,decode(l_vendor_rec.type_1099,
3972                     ap_null_char,NULL,
3973                     nvl(l_vendor_rec.type_1099, type_1099))
3974         ,decode(l_vendor_rec.validation_number,
3975                     ap_null_char,NULL,
3976                     nvl(l_vendor_rec.validation_number,
3977 					validation_number))
3978         ,decode(l_vendor_rec.vendor_type_lookup_code,
3979                     ap_null_char,NULL,
3980                     nvl(l_vendor_rec.vendor_type_lookup_code,
3981 					vendor_type_lookup_code))
3982         ,decode(l_vendor_rec.withholding_start_date,
3983                     ap_null_date,NULL,
3984                     nvl(l_vendor_rec.withholding_start_date,
3985 					withholding_start_date))
3986         ,decode(l_vendor_rec.withholding_status_lookup_code,
3987                     ap_null_char,NULL,
3988                     nvl(l_vendor_rec.withholding_status_lookup_code,
3989 					withholding_status_lookup_code))
3990         ,decode(l_vendor_rec.women_owned_flag,
3991                     ap_null_char,NULL,
3992                     nvl(l_vendor_rec.women_owned_flag,women_owned_flag))
3993 		-- bug7561758
3994 		,decode(l_vendor_rec.pay_awt_group_id,
3995                     ap_null_num,NULL,
3996                     nvl(l_vendor_rec.pay_awt_group_id,
3997                         pay_awt_group_id))
3998 		,rowid
3999 	INTO
4000 		l_vendor_rec.allow_awt_flag
4001 		,l_vendor_rec.allow_substitute_receipts_flag
4002 		,l_vendor_rec.allow_unordered_receipts_flag
4003 		,l_vendor_rec.always_take_disc_flag
4004 		,l_vendor_rec.attribute_category
4005 		,l_vendor_rec.attribute1
4006 		,l_vendor_rec.attribute10
4007 		,l_vendor_rec.attribute11
4008 		,l_vendor_rec.attribute12
4009 		,l_vendor_rec.attribute13
4010 		,l_vendor_rec.attribute14
4011 		,l_vendor_rec.attribute15
4012 		,l_vendor_rec.attribute2
4013 		,l_vendor_rec.attribute3
4014 		,l_vendor_rec.attribute4
4015 		,l_vendor_rec.attribute5
4016 		,l_vendor_rec.attribute6
4017 		,l_vendor_rec.attribute7
4018 		,l_vendor_rec.attribute8
4019 		,l_vendor_rec.attribute9
4020 		,l_vendor_rec.auto_calculate_interest_flag
4021 		,l_vendor_rec.awt_group_id
4022 		,l_vendor_rec.bank_charge_bearer
4023 		,l_vendor_rec.check_digits
4024 		,l_vendor_rec.create_debit_memo_flag
4025 		,l_vendor_rec.customer_num
4026 		,l_vendor_rec.days_early_receipt_allowed
4027 		,l_vendor_rec.days_late_receipt_allowed
4028 	    ,l_vendor_rec.employee_id
4029 		,l_vendor_rec.enabled_flag
4030 		,l_vendor_rec.end_date_active
4031 		,l_vendor_rec.enforce_ship_to_location_code
4032 		,l_vendor_rec.exclude_freight_from_discount
4033 		,l_vendor_rec.federal_reportable_flag
4034 		,l_vendor_rec.global_attribute_category
4035 		,l_vendor_rec.global_attribute1
4036 		,l_vendor_rec.global_attribute2
4037 		,l_vendor_rec.global_attribute3
4038 		,l_vendor_rec.global_attribute4
4039 		,l_vendor_rec.global_attribute5
4040 		,l_vendor_rec.global_attribute6
4041 		,l_vendor_rec.global_attribute7
4042 		,l_vendor_rec.global_attribute8
4043 		,l_vendor_rec.global_attribute9
4044 		,l_vendor_rec.global_attribute10
4045 		,l_vendor_rec.global_attribute11
4046 		,l_vendor_rec.global_attribute12
4047 		,l_vendor_rec.global_attribute13
4048 		,l_vendor_rec.global_attribute14
4049 		,l_vendor_rec.global_attribute15
4050 		,l_vendor_rec.global_attribute16
4051 		,l_vendor_rec.global_attribute17
4052 		,l_vendor_rec.global_attribute18
4053 		,l_vendor_rec.global_attribute19
4054 		,l_vendor_rec.global_attribute20
4055 		,l_vendor_rec.hold_all_payments_flag
4056 		,l_vendor_rec.hold_by
4057 		,l_vendor_rec.hold_date
4058 		,l_vendor_rec.hold_flag
4059 		,l_vendor_rec.hold_future_payments_flag
4060 		,l_vendor_rec.hold_reason
4061 		,l_vendor_rec.hold_unmatched_invoices_flag
4062 		,l_vendor_rec.inspection_required_flag
4063 		,l_vendor_rec.invoice_amount_limit
4064 		,l_vendor_rec.invoice_currency_code
4065 		,l_vendor_rec.match_option
4066 		,l_vendor_rec.min_order_amount
4067 		,l_vendor_rec.minority_group_lookup_code
4068 		,l_vendor_rec.name_control
4069 		,l_vendor_rec.one_time_flag
4070 		,l_vendor_rec.organization_type_lookup_code
4071 		,l_vendor_rec.parent_vendor_id
4072 		,l_vendor_rec.parent_party_id
4073 		,l_vendor_rec.party_id
4074 		,l_vendor_rec.pay_date_basis_lookup_code
4075 		,l_vendor_rec.pay_group_lookup_code
4076 		,l_vendor_rec.payment_currency_code
4077 		,l_vendor_rec.payment_priority
4078 		,l_vendor_rec.purchasing_hold_reason
4079 		,l_vendor_rec.qty_rcv_exception_code
4080 		,l_vendor_rec.qty_rcv_tolerance
4081 		,l_vendor_rec.receipt_days_exception_code
4082 		,l_vendor_rec.receipt_required_flag
4083 		,l_vendor_rec.receiving_routing_id
4084 		,l_vendor_rec.segment1
4085 		,l_vendor_rec.segment2
4086 		,l_vendor_rec.segment3
4087 		,l_vendor_rec.segment4
4088 		,l_vendor_rec.segment5
4089 		,l_vendor_rec.set_of_books_id
4090 		,l_vendor_rec.small_business_flag
4091 		,l_vendor_rec.start_date_active
4092 		,l_vendor_rec.state_reportable_flag
4093 		,l_vendor_rec.summary_flag
4094 		,l_vendor_rec.tax_reporting_name
4095 		,l_vendor_rec.tax_verification_date
4096 		,l_vendor_rec.terms_date_basis
4097 		,l_vendor_rec.terms_id
4098         ,l_vendor_rec.jgzz_fiscal_code --bug6050423
4099 		,l_vendor_rec.type_1099
4100 		,l_vendor_rec.validation_number
4101 		,l_vendor_rec.vendor_type_lookup_code
4102 		,l_vendor_rec.withholding_start_date
4103 		,l_vendor_rec.withholding_status_lookup_code
4104 		,l_vendor_rec.women_owned_flag
4105 		,l_vendor_rec.pay_awt_group_id         -- bug7561758
4106 		,l_rowid
4107     	FROM po_vendors
4108     	WHERE vendor_id = p_vendor_id;
4109 
4110 	ap_vendors_pkg.update_row(
4111 		p_vendor_rec => l_vendor_rec,
4112 		p_last_update_date => sysdate,
4113 		p_last_updated_by => l_user_id,
4114 		p_last_update_login => l_last_update_login,
4115 		p_request_id => l_request_id ,
4116 		p_program_application_id => l_program_application_id,
4117 		p_program_id => l_program_id,
4118 		p_program_update_date => sysdate,
4119 		p_rowid => l_rowid,
4120         	p_vendor_id => p_vendor_id);
4121 
4122         --
4123         -- Added Call to Sync the Party Information into ap_supplier
4124         -- record for the performance reasons.
4125         --
4126 
4127         AP_TCA_SUPPLIER_SYNC_PKG.SYNC_Supplier(
4128                         l_sync_return_status,
4129                         l_sync_msg_count,
4130                         l_sync_msg_data,
4131                         l_vendor_rec.party_id);
4132 
4133 	IF l_sync_return_status = FND_API.G_RET_STS_SUCCESS THEN
4134 	   Raise_Supplier_Event( i_vendor_id => p_vendor_id ); -- Bug 7307669
4135            x_return_status := FND_API.G_RET_STS_SUCCESS;
4136         END IF;
4137 
4138     ELSIF (l_val_return_status = FND_API.G_RET_STS_UNEXP_ERROR OR
4139            l_sync_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4140 
4141 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4142 
4143     ELSE
4144 
4145 	x_return_status := FND_API.G_RET_STS_ERROR;
4146     END IF;
4147 
4148     --set access mode back to original value
4149     IF l_org_context <> mo_global.get_access_mode THEN
4150     	MO_GLOBAL.set_policy_context(l_org_context,l_def_org_id);
4151     END IF;
4152 
4153     -- End of API body.
4154 
4155     -- Standard check of p_commit.
4156     IF FND_API.To_Boolean( p_commit ) THEN
4157 	COMMIT WORK;
4158     END IF;
4159 
4160     -- Standard call to get message count and if count is 1,
4161     -- get message info.
4162     FND_MSG_PUB.Count_And_Get(
4163 	p_count         	=>      x_msg_count     	,
4164         p_data          	=>      x_msg_data
4165     	);
4166 
4167 EXCEPTION
4168     WHEN FND_API.G_EXC_ERROR THEN
4169 		ROLLBACK TO Update_Vendor_PUB;
4170 		x_return_status := FND_API.G_RET_STS_ERROR ;
4171 		FND_MSG_PUB.Count_And_Get
4172     		(  	p_count         	=>      x_msg_count,
4173         		p_data          	=>      x_msg_data
4174     		);
4175 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4176 		ROLLBACK TO Update_Vendor_PUB;
4177 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4178 		FND_MSG_PUB.Count_And_Get
4179     		(  	p_count         	=>      x_msg_count,
4180         		p_data          	=>      x_msg_data
4181     		);
4182 	WHEN OTHERS THEN
4183 		ROLLBACK TO Update_Vendor_PUB;
4184 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4185   		IF 	FND_MSG_PUB.Check_Msg_Level
4186 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4187         		FND_MSG_PUB.Add_Exc_Msg
4188     	    		(	G_PKG_NAME  	    ,
4189     	    			l_api_name
4190 	    		);
4191 		END IF;
4192 		FND_MSG_PUB.Count_And_Get
4193     		(  	p_count         	=>      x_msg_count,
4194         		p_data          	=>      x_msg_data
4195     		);
4196 END Update_Vendor;
4197 
4198 PROCEDURE Validate_Vendor
4199 ( 	p_api_version           IN	NUMBER,
4200   	p_init_msg_list		IN	VARCHAR2 := FND_API.G_FALSE	,
4201 	p_commit	    	IN  	VARCHAR2 := FND_API.G_FALSE,
4202 	p_validation_level	IN  	NUMBER	:=
4203 						FND_API.G_VALID_LEVEL_FULL,
4204 	x_return_status		OUT	NOCOPY VARCHAR2		  	,
4205 	x_msg_count		OUT	NOCOPY NUMBER,
4206 	x_msg_data		OUT	NOCOPY VARCHAR2,
4207 	p_vendor_rec		IN OUT	NOCOPY r_vendor_rec_type,
4208 	p_mode			IN	VARCHAR2,
4209 	p_calling_prog		IN	VARCHAR2,
4210 	x_party_valid		OUT	NOCOPY VARCHAR2,
4211 	x_payee_valid		OUT 	NOCOPY VARCHAR2,
4212 	p_vendor_id		IN	NUMBER
4213 
4214 )
4215 IS
4216     l_api_name			CONSTANT VARCHAR2(30)	:= 'Validate_Vendor';
4217     l_api_version           	CONSTANT NUMBER 		:= 1.0;
4218 
4219     l_def_org_id		NUMBER;
4220     l_debug_info		VARCHAR2(2000);
4221     x_valid			BOOLEAN;
4222     l_segment1			VARCHAR2(30);
4223     l_payee_return_status	VARCHAR2(50);
4224     l_payee_msg_count		NUMBER;
4225     l_payee_msg_data		VARCHAR2(1000);
4226     l_default_country_code      VARCHAR2(25); --bug6050423
4227 
4228 
4229 BEGIN
4230 	-- Standard Start of API savepoint
4231     SAVEPOINT	Validate_Vendor_PUB;
4232 
4233     -- Standard call to check for call compatibility.
4234     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
4235         	    	    	    	 	p_api_version        	,
4236    	       	    	 			l_api_name 	    	,
4237 		    	    	    	    	G_PKG_NAME )
4238     THEN
4239 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4240     END IF;
4241 
4242     -- Initialize message list if p_init_msg_list is set to TRUE.
4243     IF FND_API.to_Boolean( p_init_msg_list ) THEN
4244 	FND_MSG_PUB.initialize;
4245     END IF;
4246 
4247     --  Initialize API return status to success
4248     x_return_status := FND_API.G_RET_STS_SUCCESS;
4249 
4250     -- API body
4251 
4252     -- Open Issue 7 Call eTax Validation
4253 
4254     ------------------------------------------------------------------------
4255     l_debug_info := 'Call to Validate inspection_required_flag';
4256     ------------------------------------------------------------------------
4257     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4258           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
4259     END IF;
4260     --
4261     -- Validate inspection_required_flag
4262     --
4263     IF p_vendor_rec.inspection_required_flag is NOT NULL
4264        AND p_vendor_rec.inspection_required_flag <> ap_null_char THEN
4265 
4266       Validate_Lookups( 'INSPECTION_REQUIRED_FLAG', p_vendor_rec.inspection_required_flag,'YES/NO',
4267                                     'PO_LOOKUP_CODES',x_valid);
4268       IF NOT x_valid THEN
4269         x_return_status := FND_API.G_RET_STS_ERROR;
4270         IF g_source = 'IMPORT' THEN
4271           IF (Insert_Rejections(
4272                     'AP_SUPPLIERS_INT',
4273                     p_vendor_rec.vendor_interface_id,
4274                     'AP_INVALID_INSP_REQ_FLAG',
4275                     g_user_id,
4276                     g_login_id,
4277                     'Validate_Vendor') <> TRUE) THEN
4278            --
4279             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4280                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
4281                    l_api_name,'Parameters: '
4282                    ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
4283                    ||' ,Inspection_Required_Flag: '||p_vendor_rec.inspection_required_flag);
4284             END IF;
4285           END IF;
4286          ELSE
4287             -- Bug 5491139 hkaniven start --
4288           FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_INSP_REQ_FLAG');
4289           FND_MSG_PUB.ADD;
4290             -- Bug 5491139 hkaniven end --
4291         END IF;
4292       END IF;
4293     END IF;
4294 
4295     ------------------------------------------------------------------------
4296     l_debug_info := 'Call to Validate receipt_required_flag';
4297     ------------------------------------------------------------------------
4298     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4299           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME|| l_api_name,l_debug_info);
4300     END IF;
4301     --
4302     -- Validate receipt_required_flag
4303     --
4304     IF p_vendor_rec.receipt_required_flag is NOT NULL
4305        AND p_vendor_rec.receipt_required_flag <> ap_null_char THEN
4306 
4307       Validate_Lookups( 'RECEIPT_REQUIRED_FLAG', p_vendor_rec.receipt_required_flag,'YES/NO',
4308                                     'PO_LOOKUP_CODES',x_valid);
4309       IF NOT x_valid THEN
4310       	x_return_status := FND_API.G_RET_STS_ERROR;
4311         IF g_source = 'IMPORT' THEN
4312           IF (Insert_Rejections(
4313                     'AP_SUPPLIERS_INT',
4314                     p_vendor_rec.vendor_interface_id,
4315                     'AP_INVALID_REC_REQ_FLAG',
4316                     g_user_id,
4317                     g_login_id,
4318                     'Validate_Vendor') <> TRUE) THEN
4319            --
4320             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4321                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
4322                    l_api_name,'Parameters: '
4323                    ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
4324                    ||' ,Receipt_Required_Flag: '||p_vendor_rec.receipt_required_flag);
4325             END IF;
4326           END IF;
4327 
4328         ELSE
4329             -- Bug 5491139 hkaniven start --
4330             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_REC_REQ_FLAG');
4331             FND_MSG_PUB.ADD;
4332             -- Bug 5491139 hkaniven end --
4333         END IF;
4334       END IF;
4335     END IF;
4336 
4337     ------------------------------------------------------------------------
4338     l_debug_info := 'Call to Validate Payment_Priority';
4339     ------------------------------------------------------------------------
4340     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4341           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
4342                 l_api_name,l_debug_info);
4343     END IF;
4344     --
4345     -- Validate Payment_Priority
4346     --
4347     IF p_vendor_rec.payment_priority is NOT NULL
4348        AND p_vendor_rec.payment_priority <> ap_null_num THEN
4349 
4350       Check_payment_priority(p_vendor_rec.payment_priority,
4351                              x_valid
4352                             );
4353       IF NOT x_valid THEN
4354         x_return_status := FND_API.G_RET_STS_ERROR;
4355         IF g_source = 'IMPORT' THEN
4356           IF (Insert_Rejections(
4357                     'AP_SUPPLIERS_INT',
4358                     p_vendor_rec.vendor_interface_id,
4359                     'AP_INVALID_PAYMENT_PRIORITY',
4360                     g_user_id,
4361                     g_login_id,
4362                     'Validate_Vendor') <> TRUE) THEN
4363            --
4364             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4365                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
4366                    l_api_name,'Parameters: '
4367                    ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
4368                    ||' ,Payment_Priority: '||p_vendor_rec.payment_priority);
4369             END IF;
4370           END IF;
4371         ELSE
4372             -- Bug 5491139 hkaniven start --
4373             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PAYMENT_PRIORITY');
4374             FND_MSG_PUB.ADD;
4375             -- Bug 5491139 hkaniven end --
4376         END IF;
4377       END IF;
4378     END IF;
4379 
4380     ------------------------------------------------------------------------
4381     l_debug_info := 'Call to Validate the 1099_type value';
4382     ------------------------------------------------------------------------
4383     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4384           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
4385                 l_api_name,l_debug_info);
4386     END IF;
4387     --
4388     -- Validate the 1099_type value
4389     --
4390     IF p_vendor_rec.type_1099 IS NOT NULL
4391        AND p_vendor_rec.type_1099 <> ap_null_char THEN
4392       Check_Valid_1099_type(p_vendor_rec.type_1099,
4393                             p_vendor_rec.federal_reportable_flag,
4394                             x_valid
4395                            );
4396       IF NOT x_valid THEN
4397         x_return_status := FND_API.G_RET_STS_ERROR;
4398         IF g_source = 'IMPORT' THEN
4399           IF (Insert_Rejections(
4400                     'AP_SUPPLIERS_INT',
4401                     p_vendor_rec.vendor_interface_id,
4402                     'AP_INCONSISTENT_1099_TYPE',
4403                     g_user_id,
4404                     g_login_id,
4405                     'Validate_Vendor') <> TRUE) THEN
4406            --
4407             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4408                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
4409                    l_api_name,'Parameters: '
4410                    ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
4411                    ||' ,Type_1099: '||p_vendor_rec.type_1099
4412                    ||' ,Federal_Reportable_Flag: '||p_vendor_rec.federal_reportable_flag);
4413             END IF;
4414           END IF;
4415         ELSE
4416             -- Bug 5491139 hkaniven start --
4417             FND_MESSAGE.SET_NAME('SQLAP','AP_INCONSISTENT_1099_TYPE');
4418             FND_MSG_PUB.ADD;
4419             -- Bug 5491139 hkaniven end --
4420         END IF;
4421       END IF;
4422     END IF;
4423 
4424     --bug6050423.Added the below validation for num_1099 for
4425     --contractor individuals
4426     --bug6691916.commented the below if clause and added the one below that.
4427     --as per analysis,only organization lookup code of type individual
4428     --and foreign individual belong to individual suppliers category.
4429 
4430   /* if ( UPPER(p_vendor_rec.vendor_type_lookup_code)='CONTRACTOR'
4431         AND UPPER(p_vendor_rec.organization_type_lookup_code) IN
4432                 ('INDIVIDUAL','FOREIGN INDIVIDUAL',
4433                 'PARTNERSHIP','FOREIGN PARTNERSHIP') )THEN*/
4434     if ( UPPER(p_vendor_rec.organization_type_lookup_code) IN
4435                 ('INDIVIDUAL','FOREIGN INDIVIDUAL') )THEN
4436     ------------------------------------------------------------------------
4437     l_debug_info := 'Call to Validate the jgzz_fiscal_code value';
4438     ------------------------------------------------------------------------
4439     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4440           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
4441                 l_api_name,l_debug_info);
4442     END IF;
4443     --
4444     -- Validate the jgzz_fiscal_code value
4445     --
4446 
4447 
4448     fnd_profile.get('DEFAULT_COUNTRY',l_default_country_code);
4449 
4450     IF( l_default_country_code is null
4451         AND
4452         p_vendor_rec.set_of_books_id IS NOT NULL) then
4453 
4454 	-- Commented for Bug 6852552
4455 
4456 	/*
4457 	SELECT   FIN.vat_country_code
4458         INTO     l_default_country_code
4459         FROM     FINANCIALS_SYSTEM_PARAMS_ALL FIN,
4460                  AP_SYSTEM_PARAMETERS_ALL ASP
4461         WHERE    ASP.set_of_books_id=p_vendor_rec.set_of_books_id
4462         AND      FIN.org_id = ASP.org_id;
4463 	*/
4464 
4465 	-- Added for Bug 6852552
4466         IF g_source = 'IMPORT' THEN
4467           IF (Insert_Rejections(
4468                     'AP_SUPPLIERS_INT',
4469                     p_vendor_rec.vendor_interface_id,
4470                     'AP_DEFAULT_COUNTRY_CODE_NULL',
4471                     g_user_id,
4472                     g_login_id,
4473                     'Validate_Vendor') <> TRUE) THEN
4474            --
4475         	IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4476                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
4477                    l_api_name,'Default Country is Null');
4478            	END IF;
4479           END IF;
4480 
4481         ELSE
4482             FND_MESSAGE.SET_NAME('SQLAP','AP_DEFAULT_COUNTRY_CODE_NULL');
4483             FND_MSG_PUB.ADD;
4484         END IF;
4485 
4486 	-- End of Bug 6852552
4487 
4488 
4489 
4490     END IF;
4491 
4492 
4493 
4494 
4495 
4496     IF p_vendor_rec.jgzz_fiscal_code IS NOT NULL
4497        AND p_vendor_rec.jgzz_fiscal_code <> ap_null_char
4498        AND l_default_country_code IS NOT NULL  THEN
4499 
4500       IF(is_taxpayer_id_valid(p_vendor_rec.jgzz_fiscal_code,
4501                               l_default_country_code) = 'N') THEN
4502 
4503          x_return_status := FND_API.G_RET_STS_ERROR;
4504         IF g_source = 'IMPORT' THEN
4505           IF (Insert_Rejections(
4506                     'AP_SUPPLIERS_INT',
4507                     p_vendor_rec.vendor_interface_id,
4508                     'AP_INVALID_TAXPAYER_ID',
4509                     g_user_id,
4510                     g_login_id,
4511                     'Validate_Vendor') <> TRUE) THEN
4512            --
4513             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4514                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
4515                    l_api_name,'Parameters: '
4516                    ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
4517                    ||' ,NUM_1099: '||p_vendor_rec.jgzz_fiscal_code
4518                    ||' ,Federal_Reportable_Flag: '||p_vendor_rec.federal_reportable_flag);
4519             END IF;
4520           END IF;
4521         ELSE
4522             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_TAXPAYER_ID');
4523             FND_MSG_PUB.ADD;
4524         END IF;
4525       END IF;
4526     END IF;
4527 
4528   END IF;--end check for contractor type suppliers
4529   --bug6050423 ends
4530 
4531     ------------------------------------------------------------------------
4532     l_debug_info := 'Call to Validate the Employee_Id';
4533     ------------------------------------------------------------------------
4534     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4535           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
4536                 l_api_name,l_debug_info);
4537     END IF;
4538     --
4539     -- Employee_Id validation
4540     --
4541          -- start added by abhsaxen for bug 7147735
4542       IF (p_vendor_rec.employee_id is null AND
4543       UPPER(p_vendor_rec.vendor_type_lookup_code)='EMPLOYEE') THEN
4544          x_return_status := FND_API.G_RET_STS_ERROR;
4545           IF g_source = 'IMPORT' THEN
4546             IF (Insert_Rejections(
4547                       'AP_SUPPLIERS_INT',
4548                       p_vendor_rec.vendor_interface_id,
4549                       'AP_INVALID_EMPLOYEE_ID',
4550                       g_user_id,
4551                       g_login_id,
4552                       'Validate_Vendor') <> TRUE) THEN
4553               IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4554                    FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
4555                      l_api_name,'Parameters: '
4556                      ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
4557                      ||' ,Vendor_Type_Lookup_Code: '||p_vendor_rec.vendor_type_lookup_code
4558                      ||' ,Employee_Id: NULL');
4559               END IF;
4560             END IF;
4561           ELSE
4562               FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_EMPLOYEE_ID');
4563               FND_MSG_PUB.ADD;
4564           END IF;
4565       END IF;
4566       -- end added by abhsaxen for bug 7147735
4567     IF p_vendor_rec.employee_id is NOT NULL
4568        AND p_vendor_rec.employee_id <> fnd_api.g_miss_num THEN
4569       Check_Valid_Employee (p_vendor_rec.employee_id,
4570                             x_valid);
4571       IF NOT x_valid THEN
4572         x_return_status := FND_API.G_RET_STS_ERROR;
4573         IF g_source = 'IMPORT' THEN
4574           IF (Insert_Rejections(
4575                     'AP_SUPPLIERS_INT',
4576                     p_vendor_rec.vendor_interface_id,
4577                     'AP_INVALID_EMPLOYEE_ID',
4578                     g_user_id,
4579                     g_login_id,
4580                     'Validate_Vendor') <> TRUE) THEN
4581            --
4582             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4583                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
4584                    l_api_name,'Parameters: '
4585                    ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
4586                    ||' ,Employee_Id: '||p_vendor_rec.employee_id);
4587             END IF;
4588           END IF;
4589         ELSE
4590             -- Bug 5491139 hkaniven start --
4591             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_EMPLOYEE_ID');
4592             FND_MSG_PUB.ADD;
4593             -- Bug 5491139 hkaniven end --
4594         END IF;
4595       END IF;
4596       -- start added by abhsaxen for bug 7147735
4597      IF x_valid THEN
4598       BEGIN
4599          SELECT PPF.PARTY_ID
4600           INTO P_VENDOR_REC.PARTY_ID
4601          FROM   PER_PEOPLE_F PPF
4602          WHERE  PPF.PERSON_ID  = P_VENDOR_REC.EMPLOYEE_ID
4603          AND TRUNC(SYSDATE) BETWEEN
4604            TRUNC(ppf.effective_start_date) AND
4605            TRUNC(ppf.effective_end_date);
4606       EXCEPTION
4607         WHEN OTHERS THEN
4608          x_return_status := FND_API.G_RET_STS_ERROR;
4609           IF g_source = 'IMPORT' THEN
4610             IF (Insert_Rejections(
4611                       'AP_SUPPLIERS_INT',
4612                       p_vendor_rec.vendor_interface_id,
4613                       'AP_INVALID_EMPLOYEE_ID',
4614                       g_user_id,
4615                       g_login_id,
4616                       'Validate_Vendor') <> TRUE) THEN
4617              --
4618               IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4619                    FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
4620                      l_api_name,'Parameters: '
4621                      ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
4622                      ||' ,Vendor_Type_Lookup_Code: '||p_vendor_rec.vendor_type_lookup_code
4623                      ||' ,Not able to get Party Id From Employee Id.');
4624               END IF;
4625             END IF;
4626           ELSE
4627               FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_EMPLOYEE_ID');
4628               FND_MSG_PUB.ADD;
4629           END IF;
4630       END;
4631       -- end added by abhsaxen for bug 7147735
4632     END IF;
4633     END IF;
4634 
4635     ------------------------------------------------------------------------
4636     l_debug_info := 'Call to Validate inspection_required_flag and receipt_required_flag';
4637     ------------------------------------------------------------------------
4638     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4639           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
4640                 l_api_name,l_debug_info);
4641     END IF;
4642    --
4643    -- Validate inspection_required_flag and receipt_required_flag
4644    --
4645    IF (p_vendor_rec.inspection_required_flag is NOT NULL AND
4646        p_vendor_rec.receipt_required_flag is NOT NULL AND
4647        p_vendor_rec.inspection_required_flag <> ap_null_char AND
4648        p_vendor_rec.receipt_required_flag <> ap_null_char) THEN
4649 
4650     	Check_Valid_match_level(p_vendor_rec.inspection_required_flag,
4651                             p_vendor_rec.receipt_required_flag,
4652                             x_valid
4653                             );
4654       IF NOT x_valid THEN
4655         x_return_status := FND_API.G_RET_STS_ERROR;
4656         IF g_source = 'IMPORT' THEN
4657           IF (Insert_Rejections(
4658                     'AP_SUPPLIERS_INT',
4659                     p_vendor_rec.vendor_interface_id,
4660                     'AP_INCONSISTENT_INSPEC_RECEIPT',
4661                     g_user_id,
4662                     g_login_id,
4663                     'Validate_Vendor') <> TRUE) THEN
4664            --
4665             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4666                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
4667                    l_api_name,'Parameters: '
4668                    ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
4669                    ||' ,Inspection_Required_Flag: '||p_vendor_rec.inspection_required_flag
4670                    ||' ,Receipt_Required_Flag: '||p_vendor_rec.receipt_required_flag);
4671             END IF;
4672           END IF;
4673         ELSE
4674             -- Bug 5491139 hkaniven start --
4675             FND_MESSAGE.SET_NAME('SQLAP','AP_INCONSISTENT_INSPEC_RECEIPT');
4676             FND_MSG_PUB.ADD;
4677             -- Bug 5491139 hkaniven end --
4678         END IF;
4679       END IF;
4680     END IF;
4681 
4682     ------------------------------------------------------------------------
4683     l_debug_info := 'Call to Validate Name Control';
4684     ------------------------------------------------------------------------
4685     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4686           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
4687                 l_api_name,l_debug_info);
4688     END IF;
4689     --
4690     -- Validate the Name Control value
4691     --
4692     IF p_vendor_rec.name_control IS NOT NULL
4693        AND p_vendor_rec.name_control <> ap_null_char THEN
4694      	Check_Valid_name_control(p_vendor_rec.name_control,
4695                              x_valid);
4696        IF NOT x_valid THEN
4697         x_return_status := FND_API.G_RET_STS_ERROR;
4698         IF g_source = 'IMPORT' THEN
4699           IF (Insert_Rejections(
4700                     'AP_SUPPLIERS_INT',
4701                     p_vendor_rec.vendor_interface_id,
4702                     'AP_INVALID_NAME_CONTROL',
4703                     g_user_id,
4704                     g_login_id,
4705                     'Validate_Vendor') <> TRUE) THEN
4706            --
4707             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4708                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
4709                    l_api_name,'Parameters: '
4710                    ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
4711                    ||' ,Name_Control: '||p_vendor_rec.name_control);
4712             END IF;
4713           END IF;
4714         ELSE
4715             -- Bug 5491139 hkaniven start --
4716             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_NAME_CONTROL');
4717             FND_MSG_PUB.ADD;
4718             -- Bug 5491139 hkaniven end --
4719         END IF;
4720       END IF;
4721     END IF;
4722 
4723 /*
4724     ------------------------------------------------------------------------
4725     l_debug_info := 'Call to Validate ship_via_lookup_code';
4726     ------------------------------------------------------------------------
4727     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4728           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
4729                 l_api_name,l_debug_info);
4730     END IF;
4731     --
4732     -- Validate ship_via_lookup_code
4733     --
4734     IF (p_vendor_rec.ship_via_lookup_code is NOT NULL and
4735         p_vendor_rec.inventory_organization_id is NOT NULL AND
4736         p_vendor_rec.ship_via_lookup_code <> ap_null_char AND
4737         p_vendor_rec.inventory_organization_id <> ap_null_num) THEN
4738 
4739       Check_Valid_ship_via(p_vendor_rec.ship_via_lookup_code,
4740                            p_vendor_rec.inventory_organization_id,
4741                            x_valid
4742                            );
4743 
4744        IF NOT x_valid THEN
4745         x_return_status := FND_API.G_RET_STS_ERROR;
4746         IF g_source = 'IMPORT' THEN
4747           IF (Insert_Rejections(
4748                     'AP_SUPPLIERS_INT',
4749                     p_vendor_rec.vendor_interface_id,
4750                     'AP_INCONSISTENT_SHIP_INVENTORY',
4751                     g_user_id,
4752                     g_login_id,
4753                     'Validate_Vendor') <> TRUE) THEN
4754            --
4755             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4756                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
4757                    l_api_name,'Parameters: '
4758                    ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
4759                    ||' ,Ship_Via_Lookup_Code: '||p_vendor_rec.ship_via_lookup_code
4760                    ||' ,Inventory_Organization_Id: '||p_vendor_rec.inventory_organization_id);
4761             END IF;
4762           END IF;
4763         ELSE
4764             -- Bug 5491139 hkaniven start --
4765             FND_MESSAGE.SET_NAME('SQLAP','AP_INCONSISTENT_SHIP_INVENTORY');
4766             FND_MSG_PUB.ADD;
4767             -- Bug 5491139 hkaniven end --
4768         END IF;
4769       END IF;
4770     END IF;
4771 */
4772 
4773     ------------------------------------------------------------------------
4774     l_debug_info := 'Call to Validate set_of_books_id';
4775     ------------------------------------------------------------------------
4776     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4777           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
4778                 l_api_name,l_debug_info);
4779     END IF;
4780     --
4781     -- Set_of_books_Id validation
4782     --
4783     IF p_vendor_rec.set_of_books_id is NOT NULL AND
4784        p_vendor_rec.set_of_books_id <> ap_null_num THEN
4785        	Check_Valid_Sob_Id(p_vendor_rec.set_of_books_id,
4786                            x_valid);
4787 
4788       IF NOT x_valid THEN
4789         x_return_status := FND_API.G_RET_STS_ERROR;
4790         IF g_source = 'IMPORT' THEN
4791           IF (Insert_Rejections(
4792                     'AP_SUPPLIERS_INT',
4793                     p_vendor_rec.vendor_interface_id,
4794                     'AP_INVALID_SOB',
4795                     g_user_id,
4796                     g_login_id,
4797                     'Validate_Vendor') <> TRUE) THEN
4798            --
4799             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4800                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
4801                    l_api_name,'Parameters: '
4802                    ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
4803                    ||' ,Set_Of_Books_Id: '||p_vendor_rec.set_of_books_id);
4804             END IF;
4805           END IF;
4806         ELSE
4807             -- Bug 5491139 hkaniven start --
4808             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_SOB');
4809             FND_MSG_PUB.ADD;
4810             -- Bug 5491139 hkaniven end --
4811         END IF;
4812       END IF;
4813     END IF;
4814 
4815     ------------------------------------------------------------------------
4816     l_debug_info := 'Call to Check for duplicate Employee assignment';
4817     ------------------------------------------------------------------------
4818     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4819           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
4820                 l_api_name,l_debug_info);
4821     END IF;
4822     --
4823     -- Check for duplicate employee assignment
4824     --
4825     IF (p_vendor_rec.employee_id IS NOT NULL and         --bug7023543 removed condition p_vendor_rec.vendor_id
4826         p_vendor_rec.employee_id <> ap_null_num) THEN    --is not null
4827      	Chk_Dup_Employee(p_vendor_id,
4828                       p_vendor_rec.employee_id,
4829                       x_valid);
4830 
4831      	IF NOT x_valid THEN
4832         	x_return_status := FND_API.G_RET_STS_ERROR;
4833      	END IF;
4834     END IF;
4835 
4836     ------------------------------------------------------------------------
4837     l_debug_info := 'Call to Check for duplicate vendor number';
4838     ------------------------------------------------------------------------
4839     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4840           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
4841                 l_api_name,l_debug_info);
4842     END IF;
4843     --
4844     -- Check for potential duplicate vendor numbers in Interface table
4845     --
4846     IF p_vendor_rec.segment1 IS NOT NULL AND
4847        p_vendor_rec.segment1 <> ap_null_char THEN
4848      	Chk_Dup_segment1_int(p_vendor_rec.segment1,
4849                            x_valid);
4850 
4851       IF NOT x_valid THEN
4852         x_return_status := FND_API.G_RET_STS_ERROR;
4853         IF g_source = 'IMPORT' THEN
4854           IF (Insert_Rejections(
4855                     'AP_SUPPLIERS_INT',
4856                     p_vendor_rec.vendor_interface_id,
4857                     --'DUPLICATE SEGMENT1 INT',
4858                     'AP_INVALID_SEGMENT1_INT',
4859                     g_user_id,
4860                     g_login_id,
4861                     'Validate_Vendor') <> TRUE) THEN
4862            --
4863             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4864                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
4865                    l_api_name,'Parameters: '
4866                    ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
4867                    ||' ,Segment1: '||p_vendor_rec.segment1);
4868             END IF;
4869           END IF;
4870         ELSE
4871             -- Bug 5491139 hkaniven start --
4872             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_SEGMENT1_INT');
4873             FND_MSG_PUB.ADD;
4874             -- Bug 5491139 hkaniven end --
4875         END IF;
4876       END IF;
4877     END IF;
4878 
4879    /*Open Issue 1 -- no longer checking name uniqueness
4880     ------------------------------------------------------------------------
4881     l_debug_info := 'Call to Check for duplicate vendor name in interface table';
4882     ------------------------------------------------------------------------
4883     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4884           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
4885                 l_api_name,l_debug_info);
4886     END IF;
4887     --
4888     -- Check for duplicate vendor names in Interface table too
4889     --
4890     IF p_vendor_rec.vendor_name IS NOT NULL THEN
4891      	Chk_Dup_Vendor_Name_new(p_vendor_rec.vendor_name,
4892                            x_valid);
4893 
4894      	IF NOT x_valid THEN
4895         	x_return_status := FND_API.G_RET_STS_ERROR;
4896      	END IF;
4897     END IF;
4898     */
4899 
4900     ------------------------------------------------------------------------
4901     l_debug_info := 'Call to Check Duplicate Vendor Number in PO_VENDORS';
4902     ------------------------------------------------------------------------
4903     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4904           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
4905                 l_api_name,l_debug_info);
4906     END IF;
4907     --
4908     -- Check for duplicate vendor number
4909     --
4910     IF p_vendor_rec.segment1 IS NOT NULL AND
4911        p_vendor_rec.segment1 <> ap_null_char THEN
4912      	Chk_Dup_Vendor_Number(p_vendor_id,
4913                            p_vendor_rec.segment1,
4914                            x_valid);
4915      	IF NOT x_valid THEN
4916         	x_return_status := FND_API.G_RET_STS_ERROR;
4917                 --bug 5606948
4918                 IF g_source = 'IMPORT' THEN
4919                    IF (Insert_Rejections(
4920                                          'AP_SUPPLIERS_INT',
4921                                          p_vendor_rec.vendor_interface_id,
4922                                          'AP_VEN_DUPLICATE_VEN_NUM',
4923                                          g_user_id,
4924                                          g_login_id,
4925                                         'Validate_Vendor') <> TRUE) THEN
4926 
4927                          IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4928                              FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
4929                                             l_api_name,'Parameters: '
4930                                             ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
4931                                             ||' ,Segment1: '||p_vendor_rec.segment1);
4932                          END IF;
4933                     END IF;
4934         	END IF;
4935        END IF;
4936     END IF;
4937 
4938     ------------------------------------------------------------------------
4939     l_debug_info := 'Call to Validate receiving_routing_id';
4940     ------------------------------------------------------------------------
4941     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4942           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
4943                 l_api_name,l_debug_info);
4944     END IF;
4945     --
4946     -- Validate receiving_routing_id
4947     --
4948     IF p_vendor_rec.receiving_routing_id is NOT NULL and
4949        p_vendor_rec.receiving_routing_id <> ap_null_num THEN
4950 
4951       	Chk_rcv_routing_id(p_vendor_rec.receiving_routing_id ,
4952                          x_valid);
4953       IF NOT x_valid THEN
4954         x_return_status := FND_API.G_RET_STS_ERROR;
4955         IF g_source = 'IMPORT' THEN
4956           IF (Insert_Rejections(
4957                     'AP_SUPPLIERS_INT',
4958                     p_vendor_rec.vendor_interface_id,
4959                     'AP_INVALID_RCV_ROUTING',
4960                     g_user_id,
4961                     g_login_id,
4962                     'Validate_Vendor') <> TRUE) THEN
4963            --
4964             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4965                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
4966                    l_api_name,'Parameters: '
4967                    ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
4968                    ||' ,Receiving_Routing_Id: '||p_vendor_rec.receiving_routing_id);
4969             END IF;
4970           END IF;
4971         ELSE
4972             -- Bug 5491139 hkaniven start --
4973         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_RCV_ROUTING');
4974         FND_MSG_PUB.ADD;
4975             -- Bug 5491139 hkaniven end --
4976         END IF;
4977       END IF;
4978     END IF;
4979 
4980     ------------------------------------------------------------------------
4981     l_debug_info := 'Call to Validate Employee type Vendor`';
4982     ------------------------------------------------------------------------
4983     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4984           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
4985                 l_api_name,l_debug_info);
4986     END IF;
4987     --
4988     -- Employee type Vendor validations
4989     --
4990 
4991     --
4992     IF p_vendor_rec.vendor_type_lookup_code is NOT NULL and
4993        p_vendor_rec.vendor_type_lookup_code <> ap_null_char THEN
4994 
4995           employee_type_checks(p_vendor_rec.vendor_type_lookup_code,
4996                                p_vendor_rec.employee_id,
4997                                x_valid
4998                                );
4999 
5000       IF NOT x_valid THEN
5001         x_return_status := FND_API.G_RET_STS_ERROR;
5002         IF g_source = 'IMPORT' THEN
5003           IF (Insert_Rejections(
5004                     'AP_SUPPLIERS_INT',
5005                     p_vendor_rec.vendor_interface_id,
5006                     'AP_INCONSISTENT_VENDOR_TYPE',
5007                     g_user_id,
5008                     g_login_id,
5009                     'Validate_Vendor') <> TRUE) THEN
5010            --
5011             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5012                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5013                    l_api_name,'Parameters: '
5014                    ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
5015                    ||' ,Vendor_Type_Lookup_Code: '||p_vendor_rec.vendor_type_lookup_code
5016                    ||' ,Employee_Id: '||p_vendor_rec.employee_id);
5017             END IF;
5018           END IF;
5019         ELSE
5020 
5021             -- Bug 5491139 hkaniven start --
5022             FND_MESSAGE.SET_NAME('SQLAP','AP_INCONSISTENT_VENDOR_TYPE');
5023             FND_MSG_PUB.ADD;
5024             -- Bug 5491139 hkaniven end --
5025 
5026         END IF;
5027       END IF;
5028     END IF;
5029 
5030     ------------------------------------------------------------------------
5031     l_debug_info := 'Call to Validate Invoice Currency Code';
5032     ------------------------------------------------------------------------
5033     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5034           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5035                 l_api_name,l_debug_info);
5036     END IF;
5037 
5038     IF (p_vendor_rec.invoice_currency_code is not null
5039         and p_vendor_rec.invoice_currency_code <> ap_null_char) THEN
5040       val_currency_code(p_vendor_rec.invoice_currency_code,
5041                         x_valid);
5042       IF NOT x_valid THEN
5043         x_return_status := FND_API.G_RET_STS_ERROR;
5044         IF g_source = 'IMPORT' THEN
5045           IF (Insert_Rejections(
5046                     'AP_SUPPLIERS_INT',
5047                     p_vendor_rec.vendor_interface_id,
5048                     'AP_INVALID_INV_CURRENCY',
5049                     g_user_id,
5050                     g_login_id,
5051                     'Validate_Vendor') <> TRUE) THEN
5052            --
5053             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5054                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5055                    l_api_name,'Parameters: '
5056                    ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
5057                    ||' ,Invoice_Currency_Code: '||p_vendor_rec.invoice_currency_code);
5058             END IF;
5059           END IF;
5060         ELSE
5061 
5062             -- Bug 5491139 hkaniven start --
5063             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_INV_CURRENCY');
5064             FND_MSG_PUB.ADD;
5065             -- Bug 5491139 hkaniven end --
5066 
5067         END IF;
5068       END IF;
5069     END IF;
5070 
5071     ------------------------------------------------------------------------
5072     l_debug_info := 'Call to Validate Payment Currency Code';
5073     ------------------------------------------------------------------------
5074 
5075     IF (p_vendor_rec.payment_currency_code is not null
5076        AND p_vendor_rec.invoice_currency_code is not null and
5077            p_vendor_rec.payment_currency_code <> ap_null_char and
5078            p_vendor_rec.invoice_currency_code <> ap_null_char) THEN
5079       payment_currency_code_valid(p_vendor_rec.payment_currency_code,
5080                                   p_vendor_rec.invoice_currency_code,
5081                                   x_valid);
5082 
5083       IF NOT x_valid THEN
5084         x_return_status := FND_API.G_RET_STS_ERROR;
5085         IF g_source = 'IMPORT' THEN
5086           IF (Insert_Rejections(
5087                     'AP_SUPPLIERS_INT',
5088                     p_vendor_rec.vendor_interface_id,
5089                     'AP_INVALID_PAY_CURRENCY',
5090                     g_user_id,
5091                     g_login_id,
5092                     'Validate_Vendor') <> TRUE) THEN
5093            --
5094             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5095                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5096                    l_api_name,'Parameters: '
5097                    ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
5098                    ||' ,Invoice_Currency_Code: '||p_vendor_rec.invoice_currency_code
5099                    ||' ,Payment_Currency_Code: '||p_vendor_rec.payment_currency_code);
5100             END IF;
5101           END IF;
5102         ELSE
5103 
5104             -- Bug 5491139 hkaniven start --
5105             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PAY_CURRENCY');
5106             FND_MSG_PUB.ADD;
5107             -- Bug 5491139 hkaniven end --
5108 
5109         END IF;
5110       END IF;
5111     END IF;
5112 
5113     ------------------------------------------------------------------------
5114     l_debug_info := 'Call to Validate Income Tax Type';
5115     ------------------------------------------------------------------------
5116     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5117           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5118                 l_api_name,l_debug_info);
5119     END IF;
5120     --
5121     -- Validate the Income Tax Type
5122     --
5123     IF p_vendor_rec.type_1099 IS NOT NULL AND
5124        p_vendor_rec.type_1099 <> ap_null_char THEN
5125      Val_Income_Tax_Type(p_vendor_rec.type_1099,
5126                          x_valid);
5127      	IF NOT x_valid THEN
5128         	x_return_status := FND_API.G_RET_STS_ERROR;
5129         IF g_source = 'IMPORT' THEN
5130           IF (Insert_Rejections(
5131                     'AP_SUPPLIERS_INT',
5132                     p_vendor_rec.vendor_interface_id,
5133                     'AP_INVALID_TYPE_1099',
5134                     g_user_id,
5135                     g_login_id,
5136                     'Validate_Vendor') <> TRUE) THEN
5137            --
5138             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5139                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5140                    l_api_name,'Parameters: '
5141                    ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
5142                    ||' ,Type_1099: '||p_vendor_rec.type_1099);
5143             END IF;
5144           END IF;
5145         ELSE
5146 
5147             -- Bug 5491139 hkaniven start --
5148             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_TYPE_1099');
5149             FND_MSG_PUB.ADD;
5150             -- Bug 5491139 hkaniven end --
5151 
5152         END IF;
5153       END IF;
5154     END IF;
5155 
5156     IF p_mode = 'U' THEN
5157 
5158 	--update validations
5159 
5160         /* open issue 1 -- no longer need to check for name duplicates
5161 	------------------------------------------------------------------------
5162     	l_debug_info := 'Call to Validate vendor name';
5163     	------------------------------------------------------------------------
5164      	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5165           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5166                 l_api_name,l_debug_info);
5167     	END IF;
5168 	--
5169 	-- Check for duplicate vendor names
5170 	--
5171    	IF p_vendor_rec.vendor_name IS NOT NULL THEN
5172      		Chk_Dup_Vendor_Name_update(p_vendor_rec.vendor_name,
5173                                 p_vendor_id,
5174                                 x_valid);
5175 
5176      		IF NOT x_valid THEN
5177         		x_return_status := FND_API.G_RET_STS_ERROR;
5178      		END IF;
5179    	END IF;
5180         */
5181 	null;
5182     ------------------------------------------------------------------------
5183     l_debug_info := 'Call for prohibiting update of CCR vendor';
5184     ------------------------------------------------------------------------
5185     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5186           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME|| l_api_name,l_debug_info);
5187     END IF;
5188 
5189     --
5190     --calling the API to check if we are trying to update
5191     --any restricted field on a CCR vendor. Added for R12
5192     --FSIO gap.(bug6053476)
5193     --
5194 
5195     update_supplier_JFMIP_checks(p_vendor_rec,
5196                                  p_calling_prog,
5197                                  x_valid);
5198 
5199     IF NOT x_valid THEN
5200       	x_return_status := FND_API.G_RET_STS_ERROR;
5201         IF g_source = 'IMPORT' THEN
5202           IF (Insert_Rejections(
5203                     'AP_SUPPLIERS_INT',
5204                      p_vendor_rec.vendor_interface_id,
5205                     'AP_CCR_NO_UPDATE',
5206                      g_user_id,
5207                      g_login_id,
5208                     'Validate_Vendor') <> TRUE) THEN
5209 
5210             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5211                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5212                    l_api_name,'Parameters: '
5213                    ||'Cannot Update CCR vendor, Vendor_id'||p_vendor_rec.vendor_id);
5214             END IF;
5215           END IF;
5216 
5217         ELSE
5218 
5219             FND_MESSAGE.SET_NAME('SQLAP','AP_CANT_UPDATE_CCR_VENDOR');
5220             FND_MSG_PUB.ADD;
5221 
5222         END IF;
5223     END IF;
5224 
5225     ELSIF p_mode = 'I' THEN
5226 
5227         --bug 5606948
5228         ------------------------------------------------------------------------
5229     	l_debug_info := 'Call to Validate vendor name';
5230     	------------------------------------------------------------------------
5231        if g_source= 'IMPORT' Then
5232      	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5233           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5234                 l_api_name,l_debug_info);
5235     	END IF;
5236 	--
5237 	-- Check for duplicate vendor names
5238 	--
5239    	IF p_vendor_rec.vendor_name IS NOT NULL THEN
5240                    -- Bug 6775797. Added parameters vendor type and employee id
5241                    -- Bug 6939863. Changed from update to new since this is
5242                    --              insert mode.
5243 
5244                       Chk_Dup_Vendor_Name_new(p_vendor_rec.vendor_name,
5245                                 p_vendor_id,
5246                                 p_vendor_rec.vendor_type_lookup_code,
5247                                 p_vendor_rec.employee_id,
5248                                 x_valid);
5249 
5250                       IF NOT x_valid THEN
5251         		x_return_status := FND_API.G_RET_STS_ERROR;
5252 
5253 
5254                          IF (Insert_Rejections(
5255                                          'AP_SUPPLIERS_INT',
5256                                          p_vendor_rec.vendor_interface_id,
5257                                          'AP_VEN_DUPLICATE_NAME',
5258                                          g_user_id,
5259                                          g_login_id,
5260                                         'Validate_Vendor') <> TRUE) THEN
5261 
5262                          IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5263                              FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5264                                             l_api_name,'Parameters: '
5265                                             ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
5266                                             ||' ,Vendor_name: '||p_vendor_rec.vendor_name);
5267                          END IF;
5268 
5269                         END IF;
5270                        END IF;
5271 
5272 
5273           END IF;
5274    	END IF;
5275         ------------------------------------------------------------------------
5276         l_debug_info := 'Call to Validate payee';
5277         ------------------------------------------------------------------------
5278         IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5279           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5280                 l_api_name,l_debug_info);
5281         END IF;
5282         --
5283 	--  Calling IBY Payee Validation API
5284 	--
5285 	IF p_vendor_rec.ext_payee_rec.payer_org_type IS NOT NULL THEN
5286           IBY_DISBURSEMENT_SETUP_PUB.Validate_External_Payee
5287             ( p_api_version     => 1.0,
5288               p_init_msg_list   => FND_API.G_FALSE,
5289               p_ext_payee_rec   => p_vendor_rec.ext_payee_rec,
5290               x_return_status   => l_payee_return_status,
5291               x_msg_count       => l_payee_msg_count,
5292               x_msg_data        => l_payee_msg_data);
5293 
5294 	   IF l_payee_return_status = FND_API.G_RET_STS_SUCCESS THEN
5295 		x_payee_valid := 'V';
5296 	   ELSE
5297 		x_payee_valid := 'F';
5298 		x_return_status := l_payee_return_status;
5299 		IF g_source = 'IMPORT' THEN
5300                     IF (Insert_Rejections(
5301                       'AP_SUPPLIERS_INT',
5302                       p_vendor_rec.vendor_interface_id,
5303                       'AP_INVALID_PAYEE',
5304                       g_user_id,
5305                       g_login_id,
5306                       'Validate_Vendor') <> TRUE) THEN
5307                       --
5308                       IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5309                         FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5310                           l_api_name,'Parameters: '
5311                           ||' Vendor_Interface_Id:' ||
5312 				p_vendor_rec.vendor_interface_id);
5313                       END IF;
5314                     END IF;
5315                 ELSE
5316 
5317                     -- Bug 5491139 hkaniven start --
5318                     FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PAYEE');
5319                     FND_MSG_PUB.ADD;
5320                     -- Bug 5491139 hkaniven end --
5321 
5322                 END IF;
5323 	   END IF;
5324  	ELSE
5325 	   x_payee_valid := 'N';
5326 	END IF; --payee valid
5327 
5328 	------------------------------------------------------------------------
5329     	l_debug_info := 'Call to Validate party_id';
5330     	------------------------------------------------------------------------
5331      	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5332           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5333                 l_api_name,l_debug_info);
5334     	END IF;
5335 	--
5336 	-- Check for validity of party_id
5337 	--
5338    	IF p_vendor_rec.party_id IS NOT NULL and
5339          p_vendor_rec.party_id <> ap_null_num THEN
5340      		Check_Valid_Party_ID(p_vendor_rec.party_id,
5341                                 x_valid);
5342 
5343      		IF NOT x_valid THEN
5344        		  x_party_valid := 'F';
5345                   x_return_status := FND_API.G_RET_STS_ERROR;
5346                   IF g_source = 'IMPORT' THEN
5347                     IF (Insert_Rejections(
5348                       'AP_SUPPLIERS_INT',
5349                       p_vendor_rec.vendor_interface_id,
5350                       'AP_INVALID_PARTY_ID',
5351                       g_user_id,
5352                       g_login_id,
5353                       'Validate_Vendor') <> TRUE) THEN
5354                       --
5355                       IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5356                         FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5357                           l_api_name,'Parameters: '
5358                           ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
5359                           ||' ,Party_Id: '||p_vendor_rec.party_id);
5360                       END IF;
5361                     END IF;
5362                   ELSE
5363 
5364                     -- Bug 5491139 hkaniven start --
5365                     FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PARTY_ID');
5366                     FND_MSG_PUB.ADD;
5367                     -- Bug 5491139 hkaniven end --
5368 
5369                   END IF;
5370 		ELSE
5371 			x_party_valid := 'V';
5372      		END IF;
5373 	ELSE
5374 		x_party_valid := 'N';
5375 
5376    	END IF;
5377 
5378 
5379 	--insert validations
5380 
5381 	------------------------------------------------------------------------
5382     	l_debug_info := 'Call to Validate vendor number';
5383     	------------------------------------------------------------------------
5384      	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5385           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5386                 l_api_name,l_debug_info);
5387     	END IF;
5388 	--
5389 	-- Check for Null vendor number
5390 	--
5391    	IF p_vendor_rec.segment1 IS NULL and
5392          p_vendor_rec.segment1 <> ap_null_char THEN
5393      		Chk_Null_Vendor_Number(p_vendor_rec.segment1,
5394                            x_valid);
5395           IF NOT x_valid THEN
5396                   x_return_status := FND_API.G_RET_STS_ERROR;
5397             IF g_source = 'IMPORT' THEN
5398               IF (Insert_Rejections(
5399                     'AP_SUPPLIERS_INT',
5400                     p_vendor_rec.vendor_interface_id,
5401                     'AP_NULL_VENDOR_NUMBER',           --bug 5568861
5402                     g_user_id,
5403                     g_login_id,
5404                     'Validate_Vendor') <> TRUE) THEN
5405            --
5406                 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5407                    FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5408                    l_api_name,'Parameters: '
5409                    ||' Vendor_Interface_Id: '||p_vendor_rec.vendor_interface_id
5410                    ||' ,Segment1: '||p_vendor_rec.segment1);
5411                 END IF;
5412               END IF;
5413             ELSE
5414 
5415                 -- Bug 5491139 hkaniven start --
5416                 FND_MESSAGE.SET_NAME('SQLAP','AP_NULL_VENDOR_NUMBER');
5417                 FND_MSG_PUB.ADD;
5418                 -- Bug 5491139 hkaniven end --
5419 
5420             END IF;
5421           END IF;
5422    	END IF;
5423 
5424 	IF p_calling_prog <> 'ISETUP' THEN
5425 
5426 		--addl insert validations
5427 
5428 		---------------------------------------------------------------
5429     		l_debug_info := 'Call to Validate one_time_flag';
5430     		---------------------------------------------------------------
5431      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5432           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5433                 l_api_name,l_debug_info);
5434     		END IF;
5435 		--
5436 		-- Validate one_time_flag
5437 		--
5438    		IF p_vendor_rec.one_time_flag is NOT NULL and
5439                p_vendor_rec.one_time_flag <> ap_null_char THEN
5440 
5441       			Validate_Lookups(
5442 			'ONE_TIME_FLAG',p_vendor_rec.one_time_flag,'YES/NO',
5443                                     'PO_LOOKUP_CODES',x_valid);
5444                   IF NOT x_valid THEN
5445                     x_return_status := FND_API.G_RET_STS_ERROR;
5446                     IF g_source = 'IMPORT' THEN
5447                       IF (Insert_Rejections(
5448                          'AP_SUPPLIERS_INT',
5449                          p_vendor_rec.vendor_interface_id,
5450                          'AP_INVALID_ONE_TIME_FLAG',
5451                          g_user_id,
5452                          g_login_id,
5453                          'Validate_Vendor') <> TRUE) THEN
5454                        --
5455                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5456                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5457                             l_api_name,'Parameters: '
5458                             ||' Vendor_Interface_Id:'
5459 				||p_vendor_rec.vendor_interface_id
5460                             ||' ,One_Time_Flag: '||p_vendor_rec.one_time_flag);
5461                         END IF;
5462                       END IF;
5463                     ELSE
5464 
5465                         -- Bug 5491139 hkaniven start --
5466                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_ONE_TIME_FLAG');
5467                         FND_MSG_PUB.ADD;
5468                         -- Bug 5491139 hkaniven end --
5469 
5470                     END IF;
5471                   END IF;
5472    		END IF;
5473 
5474     		----------------------------------------------------------------
5475     		l_debug_info := 'Call to Validate Summary_flag';
5476     		---------------------------------------------------------------
5477      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5478           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5479                 l_api_name,l_debug_info);
5480     		END IF;
5481 		--
5482 		-- Validate Summary_flag
5483 		--
5484    		IF p_vendor_rec.summary_flag is NOT NULL AND
5485                p_vendor_rec.summary_flag <> ap_null_char THEN
5486 
5487       			Validate_Lookups(
5488 			'SUMMARY_FLAG',p_vendor_rec.summary_flag,'YES/NO',
5489                                     'PO_LOOKUP_CODES',x_valid);
5490                   IF NOT x_valid THEN
5491                     x_return_status := FND_API.G_RET_STS_ERROR;
5492                     IF g_source = 'IMPORT' THEN
5493                       IF (Insert_Rejections(
5494                          'AP_SUPPLIERS_INT',
5495                          p_vendor_rec.vendor_interface_id,
5496                          'AP_INVALID_SUMMARY_FLAG',
5497                          g_user_id,
5498                          g_login_id,
5499                          'Validate_Vendor') <> TRUE) THEN
5500                        --
5501                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5502                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5503                             l_api_name,'Parameters: '
5504                             ||' Vendor_Interface_Id:'
5505 				||p_vendor_rec.vendor_interface_id
5506                             ||' ,Summary_Flag: '||p_vendor_rec.summary_flag);
5507                         END IF;
5508                       END IF;
5509                     ELSE
5510                         -- Bug 5491139 hkaniven start --
5511                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_SUMMARY_FLAG');
5512                         FND_MSG_PUB.ADD;
5513                         -- Bug 5491139 hkaniven end --
5514                     END IF;
5515                   END IF;
5516    		END IF;
5517 
5518     		----------------------------------------------------------------
5519     		l_debug_info := 'Call to Validate Enabled_flag';
5520     		---------------------------------------------------------------
5521      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5522           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5523                 l_api_name,l_debug_info);
5524     		END IF;
5525 		--
5526 		-- Validate Enabled_flag
5527 		--
5528    		IF p_vendor_rec.enabled_flag is NOT NULL
5529                AND p_vendor_rec.enabled_flag <> ap_null_char THEN
5530 
5531       		   Validate_Lookups(
5532 			'ENABLED_FLAG',p_vendor_rec.enabled_flag,'YES/NO',
5533                                     'PO_LOOKUP_CODES',x_valid);
5534                   IF NOT x_valid THEN
5535                     x_return_status := FND_API.G_RET_STS_ERROR;
5536                     IF g_source = 'IMPORT' THEN
5537                       IF (Insert_Rejections(
5538                          'AP_SUPPLIERS_INT',
5539                          p_vendor_rec.vendor_interface_id,
5540                          'AP_INVALID_ENABLED_FLAG',
5541                          g_user_id,
5542                          g_login_id,
5543                          'Validate_Vendor') <> TRUE) THEN
5544                        --
5545                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5546                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5547                             l_api_name,'Parameters: '
5548                             ||' Vendor_Interface_Id:'
5549 				||p_vendor_rec.vendor_interface_id
5550                             ||' ,Enabled_Flag: '||p_vendor_rec.enabled_flag);
5551                         END IF;
5552                       END IF;
5553                     ELSE
5554                         -- Bug 5491139 hkaniven start --
5555                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_ENABLED_FLAG');
5556                         FND_MSG_PUB.ADD;
5557                         -- Bug 5491139 hkaniven end --
5558                     END IF;
5559                   END IF;
5560    		END IF;
5561 
5562     		---------------------------------------------------------------
5563     		l_debug_info := 'Call to Validate vendor_type_lookup_code';
5564     		---------------------------------------------------------------
5565      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5566           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5567                 l_api_name,l_debug_info);
5568     		END IF;
5569 
5570 		-- Validate vendor_type_lookup_code
5571 		--
5572    		IF p_vendor_rec.vendor_type_lookup_code is NOT NULL
5573                AND p_vendor_rec.vendor_type_lookup_code <> ap_null_char THEN
5574 
5575       			Validate_Lookups( 'VENDOR_TYPE_LOOKUP_CODE',
5576 			p_vendor_rec.vendor_type_lookup_code,'VENDOR TYPE',
5577                                     'PO_LOOKUP_CODES',x_valid);
5578                   IF NOT x_valid THEN
5579                     x_return_status := FND_API.G_RET_STS_ERROR;
5580                     IF g_source = 'IMPORT' THEN
5581                       IF (Insert_Rejections(
5582                          'AP_SUPPLIERS_INT',
5583                          p_vendor_rec.vendor_interface_id,
5584                          'AP_INVALID_VENDOR_TYPE',
5585                          g_user_id,
5586                          g_login_id,
5587                          'Validate_Vendor') <> TRUE) THEN
5588                        --
5589                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5590                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5591                             l_api_name,'Parameters: '
5592                             ||' Vendor_Interface_Id:'
5593 				||p_vendor_rec.vendor_interface_id
5594                             ||' ,Vendor_Type_Lookup_Code: '
5595                             ||p_vendor_rec.vendor_type_lookup_code);
5596                         END IF;
5597                       END IF;
5598                     ELSE
5599                         -- Bug 5491139 hkaniven start --
5600                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_VENDOR_TYPE');
5601                         FND_MSG_PUB.ADD;
5602                         -- Bug 5491139 hkaniven end --
5603                     END IF;
5604                   END IF;
5605    		END IF;
5606 
5607     		---------------------------------------------------------------
5608     		l_debug_info := 'Call to Validate pay_date_basis_lookup_code';
5609     		----------------------------------------------------------------
5610      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5611           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5612                 l_api_name,l_debug_info);
5613     		END IF;
5614 		--
5615 		-- Validate pay_date_basis_lookup_code
5616 		--
5617    		IF p_vendor_rec.pay_date_basis_lookup_code is NOT NULL
5618                AND p_vendor_rec.pay_date_basis_lookup_code <> ap_null_char THEN
5619       			Validate_Lookups( 'PAY_DATE_BASIS_LOOKUP_CODE',
5620 				p_vendor_rec.pay_date_basis_lookup_code,
5621 				'PAY DATE BASIS',
5622 				'PO_LOOKUP_CODES',x_valid);
5623                   IF NOT x_valid THEN
5624                     x_return_status := FND_API.G_RET_STS_ERROR;
5625                     IF g_source = 'IMPORT' THEN
5626                       IF (Insert_Rejections(
5627                          'AP_SUPPLIERS_INT',
5628                          p_vendor_rec.vendor_interface_id,
5629                          'AP_INVALID_PAY_DATE_BASIS',
5630                          g_user_id,
5631                          g_login_id,
5632                          'Validate_Vendor') <> TRUE) THEN
5633                        --
5634                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5635                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5636                             l_api_name,'Parameters: '
5637                             ||' Vendor_Interface_Id:'
5638 				||p_vendor_rec.vendor_interface_id
5639                             ||' ,Pay_Date_Basis_Lookup_Code: '
5640                             || p_vendor_rec.pay_date_basis_lookup_code);
5641                         END IF;
5642                       END IF;
5643                     ELSE
5644                         -- Bug 5491139 hkaniven start --
5645                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PAY_DATE_BASIS');
5646                         FND_MSG_PUB.ADD;
5647                         -- Bug 5491139 hkaniven end --
5648                     END IF;
5649                   END IF;
5650    		END IF;
5651     		---------------------------------------------------------------
5652     		l_debug_info := 'Call to Validate pay_group_lookup_code';
5653     		----------------------------------------------------------------
5654      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5655           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5656                 l_api_name,l_debug_info);
5657     		END IF;
5658 		--
5659 		-- Validate pay_group_lookup_code
5660 		--
5661    		IF p_vendor_rec.pay_group_lookup_code is NOT NULL
5662                AND p_vendor_rec.pay_group_lookup_code <> ap_null_char THEN
5663 
5664       			Validate_Lookups( 'PAY_GROUP_LOOKUP_CODE',
5665 			p_vendor_rec.pay_group_lookup_code,'PAY GROUP',
5666                                     'PO_LOOKUP_CODES',x_valid);
5667                   IF NOT x_valid THEN
5668                     x_return_status := FND_API.G_RET_STS_ERROR;
5669                     IF g_source = 'IMPORT' THEN
5670                       IF (Insert_Rejections(
5671                          'AP_SUPPLIERS_INT',
5672                          p_vendor_rec.vendor_interface_id,
5673                          'AP_INVALID_PAY_GROUP',
5674                          g_user_id,
5675                          g_login_id,
5676                          'Validate_Vendor') <> TRUE) THEN
5677                        --
5678                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5679                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5680                             l_api_name,'Parameters: '
5681                             ||' Vendor_Interface_Id:'
5682 				||p_vendor_rec.vendor_interface_id
5683                             ||' ,Pay_Group_Lookup_Code:'
5684                               ||p_vendor_rec.pay_group_lookup_code);
5685                         END IF;
5686                       END IF;
5687                     ELSE
5688                         -- Bug 5491139 hkaniven start --
5689                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PAY_GROUP');
5690                         FND_MSG_PUB.ADD;
5691                         -- Bug 5491139 hkaniven end --
5692 
5693                     END IF;
5694                   END IF;
5695    		END IF;
5696 
5697     		----------------------------------------------------------------
5698     		l_debug_info := 'Call to Validate org type_lookup code';
5699     		---------------------------------------------------------------
5700      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5701           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5702                 l_api_name,l_debug_info);
5703     		END IF;
5704 		--
5705 		-- Validate organization_type_lookup_code
5706 		--
5707    		IF p_vendor_rec.organization_type_lookup_code is NOT NULL
5708                AND p_vendor_rec.organization_type_lookup_code <> ap_null_char THEN
5709 
5710       		  Validate_Lookups( 'ORGANIZATION_TYPE_LOOKUP_CODE',
5711 			p_vendor_rec.organization_type_lookup_code,
5712 			'ORGANIZATION TYPE',
5713                                     'PO_LOOKUP_CODES',x_valid);
5714    	          IF NOT x_valid THEN
5715                     x_return_status := FND_API.G_RET_STS_ERROR;
5716                     IF g_source = 'IMPORT' THEN
5717                       IF (Insert_Rejections(
5718                          'AP_SUPPLIERS_INT',
5719                          p_vendor_rec.vendor_interface_id,
5720                          'AP_INVALID_ORG_TYPE',
5721                          g_user_id,
5722                          g_login_id,
5723                          'Validate_Vendor') <> TRUE) THEN
5724                        --
5725                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5726                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5727                             l_api_name,'Parameters: '
5728                             ||' Vendor_Interface_Id:'
5729 				||p_vendor_rec.vendor_interface_id
5730                             ||' ,Organization_Type_Lookup_Code:'
5731                               ||p_vendor_rec.organization_type_lookup_code);
5732                         END IF;
5733                       END IF;
5734                     ELSE
5735                         -- Bug 5491139 hkaniven start --
5736                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_ORG_TYPE');
5737                         FND_MSG_PUB.ADD;
5738                         -- Bug 5491139 hkaniven end --
5739                     END IF;
5740                   END IF;
5741                 END IF;
5742 
5743     		---------------------------------------------------------------
5744     		l_debug_info := 'Call to Validate minority_group_lookup_code';
5745     		---------------------------------------------------------------
5746      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5747           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5748                 l_api_name,l_debug_info);
5749     		END IF;
5750 		--
5751 		-- Validate minority_group_lookup_code
5752 		--
5753    		IF p_vendor_rec.minority_group_lookup_code is NOT NULL
5754                AND p_vendor_rec.minority_group_lookup_code <> ap_null_char THEN
5755 
5756       			Validate_Lookups( 'MINORITY_GROUP_LOOKUP_CODE',
5757 		p_vendor_rec.minority_group_lookup_code,'MINORITY GROUP',
5758                                     'PO_LOOKUP_CODES',x_valid);
5759                   IF NOT x_valid THEN
5760                     x_return_status := FND_API.G_RET_STS_ERROR;
5761                     IF g_source = 'IMPORT' THEN
5762                       IF (Insert_Rejections(
5763                          'AP_SUPPLIERS_INT',
5764                          p_vendor_rec.vendor_interface_id,
5765                          'AP_INVALID_MINORITY_GROUP',
5766                          g_user_id,
5767                          g_login_id,
5768                          'Validate_Vendor') <> TRUE) THEN
5769                        --
5770                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5771                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5772                             l_api_name,'Parameters: '
5773                             ||' Vendor_Interface_Id:'
5774 				||p_vendor_rec.vendor_interface_id
5775                             ||' ,Minority_Group_Lookup_Code:'
5776                               ||p_vendor_rec.minority_group_lookup_code);
5777                         END IF;
5778                       END IF;
5779                     ELSE
5780                         -- Bug 5491139 hkaniven start --
5781                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_MINORITY_GROUP');
5782                         FND_MSG_PUB.ADD;
5783                         -- Bug 5491139 hkaniven end --
5784                     END IF;
5785                   END IF;
5786    		END IF;
5787 
5788     		---------------------------------------------------------------
5789     		l_debug_info := 'Call to Validate terms_date_basis';
5790     		----------------------------------------------------------------
5791      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5792           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5793                 l_api_name,l_debug_info);
5794     		END IF;
5795 		--
5796 		-- Validate terms_date_basis
5797 		--
5798    		IF p_vendor_rec.terms_date_basis is NOT NULL
5799                AND p_vendor_rec.terms_date_basis <> ap_null_char THEN
5800 
5801       			Validate_Lookups( 'TERMS_DATE_BASIS',
5802 			p_vendor_rec.terms_date_basis,'TERMS DATE BASIS',
5803                                     'AP_LOOKUP_CODES',x_valid);
5804    	          IF NOT x_valid THEN
5805                     x_return_status := FND_API.G_RET_STS_ERROR;
5806                     IF g_source = 'IMPORT' THEN
5807                       IF (Insert_Rejections(
5808                          'AP_SUPPLIERS_INT',
5809                          p_vendor_rec.vendor_interface_id,
5810                          'AP_INVALID_TERMS_DATE',
5811                          g_user_id,
5812                          g_login_id,
5813                          'Validate_Vendor') <> TRUE) THEN
5814                        --
5815                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5816                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5817                             l_api_name,'Parameters: '
5818                             ||' Vendor_Interface_Id:'
5819 				||p_vendor_rec.vendor_interface_id
5820                             ||' ,Terms_Date_Basis:'
5821                               ||p_vendor_rec.terms_date_basis);
5822                         END IF;
5823                       END IF;
5824                     ELSE
5825                         -- Bug 5491139 hkaniven start --
5826                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_TERMS_DATE');
5827                         FND_MSG_PUB.ADD;
5828                         -- Bug 5491139 hkaniven end --
5829                     END IF;
5830                   END IF;
5831                 END IF;
5832 
5833     		---------------------------------------------------------------
5834     		l_debug_info := 'Call to Validate qty_rcv_exception_code';
5835     		---------------------------------------------------------------
5836      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5837           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5838                 l_api_name,l_debug_info);
5839     		END IF;
5840 		--
5841 		-- Validate qty_rcv_exception_code
5842 		--
5843    		IF p_vendor_rec.qty_rcv_exception_code is NOT NULL
5844                AND p_vendor_rec.qty_rcv_exception_code <> ap_null_char THEN
5845 
5846       			Validate_Lookups( 'QTY_RCV_EXCEPTION_CODE',
5847 			p_vendor_rec.qty_rcv_exception_code,'RCV OPTION',
5848                                     'PO_LOOKUP_CODES',x_valid);
5849                   IF NOT x_valid THEN
5850                     x_return_status := FND_API.G_RET_STS_ERROR;
5851                     IF g_source = 'IMPORT' THEN
5852                       IF (Insert_Rejections(
5853                          'AP_SUPPLIERS_INT',
5854                          p_vendor_rec.vendor_interface_id,
5855                          'AP_INVALID_QTY_RCV_OPTION',
5856                          g_user_id,
5857                          g_login_id,
5858                          'Validate_Vendor') <> TRUE) THEN
5859                        --
5860                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5861                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5862                             l_api_name,'Parameters: '
5863                             ||' Vendor_Interface_Id:'
5864 				||p_vendor_rec.vendor_interface_id
5865                             ||' ,Qty_Rcv_Execption_Code:'
5866                               ||p_vendor_rec.Qty_Rcv_Exception_code);
5867                         END IF;
5868                       END IF;
5869                     ELSE
5870                         -- Bug 5491139 hkaniven start --
5871                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_QTY_RCV_OPTION');
5872                         FND_MSG_PUB.ADD;
5873                         -- Bug 5491139 hkaniven end --
5874                     END IF;
5875                   END IF;
5876    		END IF;
5877 
5878     		------------------------------------------------------------------------
5879     		l_debug_info := 'Call to Validate ship to loc code';
5880     		------------------------------------------------------------------------
5881      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5882           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5883                 l_api_name,l_debug_info);
5884     		END IF;
5885 		--
5886 		-- Validate enforce_ship_to_location_code
5887 		--
5888    		IF p_vendor_rec.enforce_ship_to_location_code is NOT NULL
5889                AND p_vendor_rec.enforce_ship_to_location_code <> ap_null_char THEN
5890 
5891       		  Validate_Lookups( 'ENFORCE_SHIP_TO_LOCATION_CODE',
5892 			p_vendor_rec.enforce_ship_to_location_code,'RCV OPTION',
5893                                     'PO_LOOKUP_CODES',x_valid);
5894                   IF NOT x_valid THEN
5895                     x_return_status := FND_API.G_RET_STS_ERROR;
5896                     IF g_source = 'IMPORT' THEN
5897                       IF (Insert_Rejections(
5898                          'AP_SUPPLIERS_INT',
5899                          p_vendor_rec.vendor_interface_id,
5900                          'AP_INVALID_SHIP_RCV_OPTION',
5901                          g_user_id,
5902                          g_login_id,
5903                          'Validate_Vendor') <> TRUE) THEN
5904                        --
5905                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5906                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5907                             l_api_name,'Parameters: '
5908                             ||' Vendor_Interface_Id:'
5909 				||p_vendor_rec.vendor_interface_id
5910                             ||' ,Enforce_Ship_To_Location_Code:'
5911                               ||p_vendor_rec.enforce_ship_to_location_code);
5912                         END IF;
5913                       END IF;
5914                     ELSE
5915                         -- Bug 5491139 hkaniven start --
5916                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_SHIP_RCV_OPTION');
5917                         FND_MSG_PUB.ADD;
5918                         -- Bug 5491139 hkaniven end --
5919                     END IF;
5920                   END IF;
5921    		END IF;
5922 
5923     		---------------------------------------------------------------
5924     		l_debug_info := 'Call to Validate receipt_days_exception_code';
5925     		----------------------------------------------------------------
5926      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5927           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5928                 l_api_name,l_debug_info);
5929     		END IF;
5930 		--
5931 		-- Validate receipt_days_exception_code
5932 		--
5933    		IF p_vendor_rec.receipt_days_exception_code is NOT NULL
5934                AND p_vendor_rec.receipt_days_exception_code <> ap_null_char THEN
5935 
5936       			Validate_Lookups( 'RECEIPT_DAYS_EXCEPTION_CODE',
5937 			p_vendor_rec.receipt_days_exception_code,'RCV OPTION',
5938                                     'PO_LOOKUP_CODES',x_valid);
5939                   IF NOT x_valid THEN
5940                     x_return_status := FND_API.G_RET_STS_ERROR;
5941                     IF g_source = 'IMPORT' THEN
5942                       IF (Insert_Rejections(
5943                          'AP_SUPPLIERS_INT',
5944                          p_vendor_rec.vendor_interface_id,
5945                          'AP_INVALID_REC_RCV_OPTION',
5946                          g_user_id,
5947                          g_login_id,
5948                          'Validate_Vendor') <> TRUE) THEN
5949                        --
5950                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5951                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5952                             l_api_name,'Parameters: '
5953                             ||' Vendor_Interface_Id:'
5954 				||p_vendor_rec.vendor_interface_id
5955                             ||' ,Receipt_Days_Exception_Code:'
5956                               ||p_vendor_rec.receipt_days_exception_code);
5957                         END IF;
5958                       END IF;
5959                     ELSE
5960                         -- Bug 5491139 hkaniven start --
5961                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_REC_RCV_OPTION');
5962                         FND_MSG_PUB.ADD;
5963                         -- Bug 5491139 hkaniven end --
5964                     END IF;
5965                   END IF;
5966    		END IF;
5967 
5968 		---------------------------------------------------------------
5969     		l_debug_info := 'Call to Validate create_debit_memo_flag';
5970     		----------------------------------------------------------------
5971      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5972           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
5973                 l_api_name,l_debug_info);
5974     		END IF;
5975 		--
5976 		-- Validate create_debit_memo_flag
5977 		--
5978    		IF p_vendor_rec.create_debit_memo_flag is NOT NULL
5979                AND p_vendor_rec.create_debit_memo_flag <> ap_null_char THEN
5980 
5981       			Validate_Lookups( 'CREATE_DEBIT_MEMO_FLAG',
5982 			p_vendor_rec.create_debit_memo_flag ,'YES/NO',
5983                                     'PO_LOOKUP_CODES',x_valid);
5984                   IF NOT x_valid THEN
5985                     x_return_status := FND_API.G_RET_STS_ERROR;
5986                     IF g_source = 'IMPORT' THEN
5987                       IF (Insert_Rejections(
5988                          'AP_SUPPLIERS_INT',
5989                          p_vendor_rec.vendor_interface_id,
5990                          'AP_INVALID_DEBIT_MEMO',
5991                          g_user_id,
5992                          g_login_id,
5993                          'Validate_Vendor') <> TRUE) THEN
5994                        --
5995                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5996                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
5997                             l_api_name,'Parameters: '
5998                             ||' Vendor_Interface_Id:'
5999 				||p_vendor_rec.vendor_interface_id
6000                             ||' ,Create_Debit_Memo_Flag:'
6001                               ||p_vendor_rec.create_debit_memo_flag);
6002                         END IF;
6003                       END IF;
6004                     ELSE
6005                         -- Bug 5491139 hkaniven start --
6006                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_DEBIT_MEMO');
6007                         FND_MSG_PUB.ADD;
6008                         -- Bug 5491139 hkaniven end --
6009                     END IF;
6010                   END IF;
6011    		END IF;
6012 
6013     		---------------------------------------------------------------
6014     		l_debug_info := 'Call to Validate federal_reportable_flag';
6015     		---------------------------------------------------------------
6016      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6017           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6018                 l_api_name,l_debug_info);
6019     		END IF;
6020 		--
6021 		-- Validate federal_reportable_flag
6022 		--
6023    		IF p_vendor_rec.federal_reportable_flag is NOT NULL
6024                AND p_vendor_rec.federal_reportable_flag <> ap_null_char THEN
6025 
6026       			Validate_Lookups( 'FEDERAL_REPORTABLE_FLAG',
6027 			p_vendor_rec.federal_reportable_flag ,'YES/NO',
6028                                     'PO_LOOKUP_CODES',x_valid);
6029                   IF NOT x_valid THEN
6030                     x_return_status := FND_API.G_RET_STS_ERROR;
6031                     IF g_source = 'IMPORT' THEN
6032                       IF (Insert_Rejections(
6033                          'AP_SUPPLIERS_INT',
6034                          p_vendor_rec.vendor_interface_id,
6035                          'AP_INVALID_FED_REPORTABLE',
6036                          g_user_id,
6037                          g_login_id,
6038                          'Validate_Vendor') <> TRUE) THEN
6039                        --
6040                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6041                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
6042                             l_api_name,'Parameters: '
6043                             ||' Vendor_Interface_Id:'
6044 				||p_vendor_rec.vendor_interface_id
6045                             ||' ,Federal_Reportable_Flag:'
6046                               ||p_vendor_rec.federal_reportable_flag);
6047                         END IF;
6048                       END IF;
6049                     ELSE
6050                         -- Bug 5491139 hkaniven start --
6051                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_FED_REPORTABLE');
6052                         FND_MSG_PUB.ADD;
6053                         -- Bug 5491139 hkaniven end --
6054                     END IF;
6055                   END IF;
6056    		END IF;
6057 
6058     		----------------------------------------------------------------
6059     		l_debug_info := 'Call to Validate state_reportable_flag';
6060     		----------------------------------------------------------------
6061      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6062           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6063                 l_api_name,l_debug_info);
6064     		END IF;
6065 		--
6066 		-- Validate state_reportable_flag
6067 		--
6068    		IF p_vendor_rec.state_reportable_flag is NOT NULL
6069                AND p_vendor_rec.state_reportable_flag <> ap_null_char THEN
6070 
6071       			Validate_Lookups('STATE_REPORTABLE_FLAG',
6072 			p_vendor_rec.state_reportable_flag ,'YES/NO',
6073                                     'PO_LOOKUP_CODES', x_valid);
6074                  IF NOT x_valid THEN
6075                     x_return_status := FND_API.G_RET_STS_ERROR;
6076                     IF g_source = 'IMPORT' THEN
6077                       IF (Insert_Rejections(
6078                          'AP_SUPPLIERS_INT',
6079                          p_vendor_rec.vendor_interface_id,
6080                          'AP_INVALID_STATE_REPORTABLE',
6081                          g_user_id,
6082                          g_login_id,
6083                          'Validate_Vendor') <> TRUE) THEN
6084                        --
6085                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6086                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
6087                             l_api_name,'Parameters: '
6088                             ||' Vendor_Interface_Id:'
6089 				||p_vendor_rec.vendor_interface_id
6090                             ||' ,State_Reportable_Flag:'
6091                               ||p_vendor_rec.state_reportable_flag);
6092                         END IF;
6093                       END IF;
6094                     ELSE
6095                         -- Bug 5491139 hkaniven start --
6096                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_STATE_REPORTABLE');
6097                         FND_MSG_PUB.ADD;
6098                         -- Bug 5491139 hkaniven end --
6099                     END IF;
6100                   END IF;
6101    		END IF;
6102 
6103     		---------------------------------------------------------------
6104     		l_debug_info := 'Call to Validate auto_calculate_interest_flag';
6105     		----------------------------------------------------------------
6106      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6107           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6108                 l_api_name,l_debug_info);
6109     		END IF;
6110 		--
6111 		-- Validate auto_calculate_interest_flag
6112 		--
6113    		IF p_vendor_rec.auto_calculate_interest_flag is NOT NULL
6114                AND p_vendor_rec.auto_calculate_interest_flag <> ap_null_char THEN
6115 
6116       			Validate_Lookups('AUTO_CALCULATE_INTEREST_FLAG',
6117 			 p_vendor_rec.auto_calculate_interest_flag,'YES/NO',
6118                                     'PO_LOOKUP_CODES', x_valid);
6119                   IF NOT x_valid THEN
6120                     x_return_status := FND_API.G_RET_STS_ERROR;
6121                     IF g_source = 'IMPORT' THEN
6122                       IF (Insert_Rejections(
6123                          'AP_SUPPLIERS_INT',
6124                          p_vendor_rec.vendor_interface_id,
6125                          'AP_INVALID_CALC_INT',
6126                          g_user_id,
6127                          g_login_id,
6128                          'Validate_Vendor') <> TRUE) THEN
6129                        --
6130                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6131                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
6132                             l_api_name,'Parameters: '
6133                             ||' Vendor_Interface_Id:'
6134 				||p_vendor_rec.vendor_interface_id
6135                             ||' , Auto_Calculate_Interest_Flag'
6136                               ||p_vendor_rec.auto_calculate_interest_flag);
6137                         END IF;
6138                       END IF;
6139                     ELSE
6140                         -- Bug 5491139 hkaniven start --
6141                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_CALC_INT');
6142                         FND_MSG_PUB.ADD;
6143                         -- Bug 5491139 hkaniven end --
6144                     END IF;
6145                   END IF;
6146    		END IF;
6147 
6148     		---------------------------------------------------------------
6149     		l_debug_info := 'Call to Validate excl freight from disc';
6150     		---------------------------------------------------------------
6151      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6152           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6153                 l_api_name,l_debug_info);
6154     		END IF;
6155 		--
6156 		-- Validate exclude_freight_from_discount
6157 		--
6158    		IF p_vendor_rec.exclude_freight_from_discount is NOT NULL
6159                AND p_vendor_rec.exclude_freight_from_discount <> ap_null_char THEN
6160 
6161       			Validate_Lookups( 'EXCLUDE_FREIGHT_FROM_DISCOUNT',
6162 			p_vendor_rec.exclude_freight_from_discount ,'YES/NO',
6163                                     'PO_LOOKUP_CODES',x_valid);
6164                   IF NOT x_valid THEN
6165                     x_return_status := FND_API.G_RET_STS_ERROR;
6166                     IF g_source = 'IMPORT' THEN
6167                       IF (Insert_Rejections(
6168                          'AP_SUPPLIERS_INT',
6169                          p_vendor_rec.vendor_interface_id,
6170                          'AP_INVALID_EXC_FR_DISC',
6171                          g_user_id,
6172                          g_login_id,
6173                          'Validate_Vendor') <> TRUE) THEN
6174                        --
6175                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6176                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
6177                             l_api_name,'Parameters: '
6178                             ||' Vendor_Interface_Id:'
6179 				||p_vendor_rec.vendor_interface_id
6180                             ||' ,Exclude_Freight_From_Discount:'
6181                               ||p_vendor_rec.exclude_freight_from_discount);
6182                         END IF;
6183                       END IF;
6184                     ELSE
6185                         -- Bug 5491139 hkaniven start --
6186                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_EXC_FR_DISC');
6187                         FND_MSG_PUB.ADD;
6188                         -- Bug 5491139 hkaniven end --
6189                     END IF;
6190                   END IF;
6191    		END IF;
6192 
6193 		----------------------------------------------------------------
6194     		l_debug_info := 'Call to Validate hold_unmatched_invoices_flag';
6195     		----------------------------------------------------------------
6196      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6197           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6198                 l_api_name,l_debug_info);
6199     		END IF;
6200 		--
6201 		-- Validate hold_unmatched_invoices_flag
6202 		--
6203    		IF p_vendor_rec.hold_unmatched_invoices_flag is NOT NULL
6204                AND p_vendor_rec.hold_unmatched_invoices_flag <> ap_null_char THEN
6205 
6206       			Validate_Lookups('HOLD_UNMATCHED_INVOICES_FLAG',
6207 			p_vendor_rec.hold_unmatched_invoices_flag ,'YES/NO',
6208                                     'PO_LOOKUP_CODES',x_valid);
6209    	          IF NOT x_valid THEN
6210                     x_return_status := FND_API.G_RET_STS_ERROR;
6211                     IF g_source = 'IMPORT' THEN
6212                       IF (Insert_Rejections(
6213                          'AP_SUPPLIERS_INT',
6214                          p_vendor_rec.vendor_interface_id,
6215                          'AP_INVALID_HOLD_UNMAT_INV',
6216                          g_user_id,
6217                          g_login_id,
6218                          'Validate_Vendor') <> TRUE) THEN
6219                        --
6220                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6221                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
6222                             l_api_name,'Parameters: '
6223                             ||' Vendor_Interface_Id:'
6224 				||p_vendor_rec.vendor_interface_id
6225                             ||' ,Hold_Unmatched_Invoices_Flag:'
6226                               ||p_vendor_rec.hold_unmatched_invoices_flag);
6227                         END IF;
6228                       END IF;
6229                     ELSE
6230                         -- Bug 5491139 hkaniven start --
6231                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_HOLD_UNMAT_INV');
6232                         FND_MSG_PUB.ADD;
6233                         -- Bug 5491139 hkaniven end --
6234                     END IF;
6235                   END IF;
6236                 END IF;
6237 
6238     		---------------------------------------------------------------
6239     		l_debug_info := 'Call to Validate allow_unord_receipts_flag';
6240     		---------------------------------------------------------------
6241      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6242           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6243                 l_api_name,l_debug_info);
6244     		END IF;
6245 		--
6246 		-- Validate allow_unord_receipts_flag
6247 		--
6248    		IF p_vendor_rec.allow_unordered_receipts_flag is NOT NULL
6249                AND p_vendor_rec.allow_unordered_receipts_flag <> ap_null_char THEN
6250 
6251       			Validate_Lookups('ALLOW_UNORDERED_RECEIPTS_FLAG',
6252 				p_vendor_rec.allow_unordered_receipts_flag,'YES/NO',
6253                                     'PO_LOOKUP_CODES', x_valid);
6254                   IF NOT x_valid THEN
6255                     x_return_status := FND_API.G_RET_STS_ERROR;
6256                     IF g_source = 'IMPORT' THEN
6257                       IF (Insert_Rejections(
6258                          'AP_SUPPLIERS_INT',
6259                          p_vendor_rec.vendor_interface_id,
6260                          'AP_INVALID_UNORD_RCV',
6261                          g_user_id,
6262                          g_login_id,
6263                          'Validate_Vendor') <> TRUE) THEN
6264                        --
6265                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6266                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
6267                             l_api_name,'Parameters: '
6268                             ||' Vendor_Interface_Id:'
6269 				||p_vendor_rec.vendor_interface_id
6270                             ||' ,Allow_Unordered_Receipts_Flag:'
6271                               ||p_vendor_rec.allow_unordered_receipts_flag);
6272                         END IF;
6273                       END IF;
6274                     ELSE
6275                         -- Bug 5491139 hkaniven start --
6276                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_UNORD_RCV');
6277                         FND_MSG_PUB.ADD;
6278                         -- Bug 5491139 hkaniven end --
6279                     END IF;
6280                   END IF;
6281    		END IF;
6282 
6283     		---------------------------------------------------------------
6284     		l_debug_info :=
6285 			'Call to Validate allow_substitute_receipts_flag';
6286     		-------------------------------------------------------------
6287      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6288           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6289                 l_api_name,l_debug_info);
6290     		END IF;
6291 		--
6292 		-- Validate allow_substitute_receipts_flag
6293 		--
6294    		IF p_vendor_rec.allow_substitute_receipts_flag is NOT NULL
6295                AND p_vendor_rec.allow_substitute_receipts_flag <> ap_null_char THEN
6296 
6297       			Validate_Lookups('ALLOW_SUBSTITUTE_RECEIPTS_FLAG',
6298 				p_vendor_rec.allow_substitute_receipts_flag,'YES/NO',
6299                                     'PO_LOOKUP_CODES', x_valid);
6300                   IF NOT x_valid THEN
6301                     x_return_status := FND_API.G_RET_STS_ERROR;
6302                     IF g_source = 'IMPORT' THEN
6303                       IF (Insert_Rejections(
6304                          'AP_SUPPLIERS_INT',
6305                          p_vendor_rec.vendor_interface_id,
6306                          'AP_INVALID_SUBS_RCV',
6307                          g_user_id,
6308                          g_login_id,
6309                          'Validate_Vendor') <> TRUE) THEN
6310                        --
6311                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6312                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
6313                             l_api_name,'Parameters: '
6314                             ||' Vendor_Interface_Id:'
6315 				||p_vendor_rec.vendor_interface_id
6316                             ||' ,Allow_Substitute_Receipts_Flag:'
6317                               ||p_vendor_rec.allow_substitute_receipts_flag);
6318                         END IF;
6319                       END IF;
6320                     ELSE
6321                         -- Bug 5491139 hkaniven start --
6322                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_SUB_RCV');
6323                         FND_MSG_PUB.ADD;
6324                         -- Bug 5491139 hkaniven end --
6325                     END IF;
6326                   END IF;
6327    		END IF;
6328 
6329     		---------------------------------------------------------------
6330     		l_debug_info := 'Call to Validate hold_flag';
6331     		----------------------------------------------------------------
6332      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6333           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6334                 l_api_name,l_debug_info);
6335     		END IF;
6336 		--
6337 		-- Validate hold_flag
6338 		--
6339    		IF p_vendor_rec.hold_flag is NOT NULL
6340                AND p_vendor_rec.hold_flag <> ap_null_char THEN
6341 
6342       			Validate_Lookups('HOLD_FLAG', p_vendor_rec.hold_flag,
6343 					'YES/NO',
6344                                     'PO_LOOKUP_CODES', x_valid);
6345                   IF NOT x_valid THEN
6346                     x_return_status := FND_API.G_RET_STS_ERROR;
6347                     IF g_source = 'IMPORT' THEN
6348                       IF (Insert_Rejections(
6349                          'AP_SUPPLIERS_INT',
6350                          p_vendor_rec.vendor_interface_id,
6351                          'AP_INVALID_HOLD',
6352                          g_user_id,
6353                          g_login_id,
6354                          'Validate_Vendor') <> TRUE) THEN
6355                        --
6356                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6357                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
6358                             l_api_name,'Parameters: '
6359                             ||' Vendor_Interface_Id:'
6360 				||p_vendor_rec.vendor_interface_id
6361                             ||' ,Hold_Flag:'
6362                               ||p_vendor_rec.hold_flag);
6363                         END IF;
6364                       END IF;
6365                     ELSE
6366                         -- Bug 5491139 hkaniven start --
6367                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_HOLD');
6368                         FND_MSG_PUB.ADD;
6369                         -- Bug 5491139 hkaniven end --
6370                     END IF;
6371                   END IF;
6372    		END IF;
6373 
6374     		----------------------------------------------------------------
6375     		l_debug_info := 'Call to Validate small_business_flag';
6376     		---------------------------------------------------------------
6377      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6378           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6379                 l_api_name,l_debug_info);
6380     		END IF;
6381 		--
6382 		-- Validate small_business_flag
6383 		--
6384    		IF p_vendor_rec.small_business_flag is NOT NULL
6385                AND p_vendor_rec.small_business_flag <> ap_null_char THEN
6386 
6387       			Validate_Lookups('SMALL_BUSINESS_FLAG',
6388 			p_vendor_rec.small_business_flag,'YES/NO',
6389                                     'PO_LOOKUP_CODES',x_valid);
6390                   IF NOT x_valid THEN
6391                     x_return_status := FND_API.G_RET_STS_ERROR;
6392                     IF g_source = 'IMPORT' THEN
6393                       IF (Insert_Rejections(
6394                          'AP_SUPPLIERS_INT',
6395                          p_vendor_rec.vendor_interface_id,
6396                          'AP_INVALID_SMALL_BUSINESS',
6397                          g_user_id,
6398                          g_login_id,
6399                          'Validate_Vendor') <> TRUE) THEN
6400                        --
6401                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6402                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
6403                             l_api_name,'Parameters: '
6404                             ||' Vendor_Interface_Id:'
6405 				||p_vendor_rec.vendor_interface_id
6406                             ||' ,Small_Business_Flag:'
6407                               ||p_vendor_rec.small_business_flag);
6408                         END IF;
6409                       END IF;
6410                     ELSE
6411                         -- Bug 5491139 hkaniven start --
6412                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_SMALL_BUSINESS');
6413                         FND_MSG_PUB.ADD;
6414                         -- Bug 5491139 hkaniven end --
6415                     END IF;
6416                   END IF;
6417    		END IF;
6418 
6419     		----------------------------------------------------------------
6420     		l_debug_info := 'Call to Validate women_owned_flag';
6421     		---------------------------------------------------------------
6422      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6423           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6424                 l_api_name,l_debug_info);
6425     		END IF;
6426 		--
6427 		-- Validate women_owned_flag
6428 		--
6429    		IF p_vendor_rec.women_owned_flag is NOT NULL
6430                AND p_vendor_rec.women_owned_flag <> ap_null_char THEN
6431 
6432       			Validate_Lookups('WOMEN_OWNED_FLAG',
6433 			p_vendor_rec.women_owned_flag,'YES/NO',
6434                                     'PO_LOOKUP_CODES', x_valid);
6435                   IF NOT x_valid THEN
6436                     x_return_status := FND_API.G_RET_STS_ERROR;
6437                     IF g_source = 'IMPORT' THEN
6438                       IF (Insert_Rejections(
6439                          'AP_SUPPLIERS_INT',
6440                          p_vendor_rec.vendor_interface_id,
6441                          'AP_INVALID_WOMEN_OWNED',
6442                          g_user_id,
6443                          g_login_id,
6444                          'Validate_Vendor') <> TRUE) THEN
6445                        --
6446                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6447                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
6448                             l_api_name,'Parameters: '
6449                             ||' Vendor_Interface_Id:'
6450 				||p_vendor_rec.vendor_interface_id
6451                             ||' ,Women_Owned_Flag:'
6452                               ||p_vendor_rec.women_owned_flag);
6453                         END IF;
6454                       END IF;
6455                     ELSE
6456                         -- Bug 5491139 hkaniven start --
6457                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_WOMEN_OWNED');
6458                         FND_MSG_PUB.ADD;
6459                         -- Bug 5491139 hkaniven end --
6460                     END IF;
6461                   END IF;
6462    		END IF;
6463 
6464     		--------------------------------------------------------------
6465     		l_debug_info := 'Call to Validate hold_future_payments_flag';
6466     		---------------------------------------------------------------
6467      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6468           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6469                 l_api_name,l_debug_info);
6470     		END IF;
6471 		--
6472 		-- Validate hold_future_payments_flag
6473 		--
6474    		IF p_vendor_rec.hold_future_payments_flag is NOT NULL
6475                AND p_vendor_rec.hold_future_payments_flag <> ap_null_char THEN
6476 
6477      			Validate_Lookups('HOLD_FUTURE_PAYMENTS_FLAG',
6478 			p_vendor_rec.hold_future_payments_flag,'YES/NO',
6479                                     'PO_LOOKUP_CODES', x_valid);
6480                   IF NOT x_valid THEN
6481                     x_return_status := FND_API.G_RET_STS_ERROR;
6482                     IF g_source = 'IMPORT' THEN
6483                       IF (Insert_Rejections(
6484                          'AP_SUPPLIERS_INT',
6485                          p_vendor_rec.vendor_interface_id,
6486                          'AP_INVALID_HOLD_FUT_PAY',
6487                          g_user_id,
6488                          g_login_id,
6489                          'Validate_Vendor') <> TRUE) THEN
6490                        --
6491                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6492                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
6493                             l_api_name,'Parameters: '
6494                             ||' Vendor_Interface_Id:'
6495 				||p_vendor_rec.vendor_interface_id
6496                             ||' ,Hold_Future_Payments_Flag:'
6497                               ||p_vendor_rec.hold_future_payments_flag);
6498                         END IF;
6499                       END IF;
6500                     ELSE
6501                         -- Bug 5491139 hkaniven start --
6502                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_HOLD_FUT_PAY');
6503                         FND_MSG_PUB.ADD;
6504                         -- Bug 5491139 hkaniven end --
6505                     END IF;
6506                   END IF;
6507    		END IF;
6508 
6509     		----------------------------------------------------------------
6510     		l_debug_info := 'Call to Validate hold_all_payments_flag';
6511     		----------------------------------------------------------------
6512      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6513           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6514                 l_api_name,l_debug_info);
6515     		END IF;
6516 		--
6517 		-- Validate hold_all_payments_flag
6518 		--
6519    		IF p_vendor_rec.hold_all_payments_flag is NOT NULL
6520                AND p_vendor_rec.hold_all_payments_flag <> ap_null_char THEN
6521 
6522       			Validate_Lookups('HOLD_ALL_PAYMENTS_FLAG',
6523 			p_vendor_rec.hold_all_payments_flag,'YES/NO',
6524                                     'PO_LOOKUP_CODES', x_valid);
6525                   IF NOT x_valid THEN
6526                     x_return_status := FND_API.G_RET_STS_ERROR;
6527                     IF g_source = 'IMPORT' THEN
6528                       IF (Insert_Rejections(
6529                          'AP_SUPPLIERS_INT',
6530                          p_vendor_rec.vendor_interface_id,
6531                          'AP_INVALID_HOLD_ALL_PAY',
6532                          g_user_id,
6533                          g_login_id,
6534                          'Validate_Vendor') <> TRUE) THEN
6535                        --
6536                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6537                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
6538                             l_api_name,'Parameters: '
6539                             ||' Vendor_Interface_Id:'
6540 				||p_vendor_rec.vendor_interface_id
6541                             ||' ,Hold_All_Payments_Flag:'
6542                               ||p_vendor_rec.hold_all_payments_flag);
6543                         END IF;
6544                       END IF;
6545                     ELSE
6546                         -- Bug 5491139 hkaniven start --
6547                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_HOLD_ALL_PAY');
6548                         FND_MSG_PUB.ADD;
6549                         -- Bug 5491139 hkaniven end --
6550                     END IF;
6551                   END IF;
6552    		END IF;
6553 
6554     		---------------------------------------------------------------
6555     		l_debug_info := 'Call to Validate always_take_disc_flag';
6556     		----------------------------------------------------------------
6557      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6558           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6559                 l_api_name,l_debug_info);
6560     		END IF;
6561 		--
6562 		-- Validate always_take_disc_flag
6563 		--
6564    		IF p_vendor_rec.always_take_disc_flag is NOT NULL
6565                AND p_vendor_rec.always_take_disc_flag <> ap_null_char THEN
6566 
6567       			Validate_Lookups( 'ALWAYS_TAKE_DISC_FLAG',
6568 			p_vendor_rec.always_take_disc_flag,'YES/NO',
6569                                     'PO_LOOKUP_CODES', x_valid);
6570                   IF NOT x_valid THEN
6571                     x_return_status := FND_API.G_RET_STS_ERROR;
6572                     IF g_source = 'IMPORT' THEN
6573                       IF (Insert_Rejections(
6574                          'AP_SUPPLIERS_INT',
6575                          p_vendor_rec.vendor_interface_id,
6576                          'AP_INVALID_TAKE_DISC',
6577                          g_user_id,
6578                          g_login_id,
6579                          'Validate_Vendor') <> TRUE) THEN
6580                        --
6581                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6582                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
6583                             l_api_name,'Parameters: '
6584                             ||' Vendor_Interface_Id:'
6585 				||p_vendor_rec.vendor_interface_id
6586                             ||' ,Always_Take_Disc_Flag:'
6587                               ||p_vendor_rec.always_take_disc_flag);
6588                         END IF;
6589                       END IF;
6590                     ELSE
6591                         -- Bug 5491139 hkaniven start --
6592                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_TAKE_DISC');
6593                         FND_MSG_PUB.ADD;
6594                         -- Bug 5491139 hkaniven end --
6595                     END IF;
6596                   END IF;
6597    		END IF;
6598 
6599 		----------------------------------------------------------------
6600     		l_debug_info := 'Call to Validate Vendor Number';
6601     		----------------------------------------------------------------
6602      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6603           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6604                 l_api_name,l_debug_info);
6605     		END IF;
6606 
6607 		-- Generate and validate Vendor Number
6608 
6609         	l_segment1   := p_vendor_rec.segment1;
6610 
6611         	Check_valid_vendor_num(l_segment1,
6612 		                       x_valid);
6613 
6614                    IF NOT x_valid THEN
6615                     x_return_status := FND_API.G_RET_STS_ERROR;
6616                     IF g_source = 'IMPORT' THEN
6617                       IF (Insert_Rejections(
6618                          'AP_SUPPLIERS_INT',
6619                          p_vendor_rec.vendor_interface_id,
6620                          'AP_NULL_VENDOR_NUMBER',     --bug5568861
6621                          g_user_id,
6622                          g_login_id,
6623                          'Validate_Vendor') <> TRUE) THEN
6624                        --
6625                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6626                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
6627                             l_api_name,'Parameters: '
6628                             ||' Vendor_Interface_Id:'
6629 				||p_vendor_rec.vendor_interface_id);
6630                         END IF;
6631                       END IF;
6632                     ELSE
6633                         -- Bug 5491139 hkaniven start --
6634                         FND_MESSAGE.SET_NAME('SQLAP','AP_NULL_VENDOR_NUMBER');
6635                         FND_MSG_PUB.ADD;
6636                         -- Bug 5491139 hkaniven end --
6637                     END IF;
6638                   END IF;
6639 
6640     		----------------------------------------------------------------
6641     		l_debug_info := 'Call to Validate match_option';
6642     		----------------------------------------------------------------
6643      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6644           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6645                 l_api_name,l_debug_info);
6646     		END IF;
6647 		--
6648 		-- Validate match_option
6649 		--
6650    		IF p_vendor_rec.match_option is NOT NULL
6651                AND p_vendor_rec.match_option <> ap_null_char THEN
6652 
6653      			Check_Valid_Match_Option(p_vendor_rec.match_option,
6654                               x_valid
6655                               );
6656                   IF NOT x_valid THEN
6657                     x_return_status := FND_API.G_RET_STS_ERROR;
6658                     IF g_source = 'IMPORT' THEN
6659                       IF (Insert_Rejections(
6660                          'AP_SUPPLIERS_INT',
6661                          p_vendor_rec.vendor_interface_id,
6662                          'AP_INVALID_MATCH_OPTION',
6663                          g_user_id,
6664                          g_login_id,
6665                          'Validate_Vendor') <> TRUE) THEN
6666                        --
6667                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6668                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
6669                             l_api_name,'Parameters: '
6670                             ||' Vendor_Interface_Id:'
6671 				||p_vendor_rec.vendor_interface_id
6672                             ||' ,Match_Option:'
6673                               ||p_vendor_rec.match_option);
6674                         END IF;
6675                       END IF;
6676                     ELSE
6677                         -- Bug 5491139 hkaniven start --
6678                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_MATCH_OPTION');
6679                         FND_MSG_PUB.ADD;
6680                         -- Bug 5491139 hkaniven end --
6681                     END IF;
6682                   END IF;
6683    		END IF;
6684 
6685     		---------------------------------------------------------------
6686     		l_debug_info :=
6687 		'Call to Validate awt_group_id and awt_group_name';
6688     		---------------------------------------------------------------
6689      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6690           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6691                 l_api_name,l_debug_info);
6692     		END IF;
6693 		--
6694 		-- Validate awt_group_id and awt_group_name
6695 		--
6696    		IF ((p_vendor_rec.awt_group_id is NOT NULL AND
6697                  p_vendor_rec.awt_group_id <> ap_null_num)
6698 		or (p_vendor_rec.awt_group_name is NOT NULL AND
6699                 p_vendor_rec.awt_group_name <> ap_null_char)) AND
6700 		(p_vendor_rec.allow_awt_flag = 'Y') THEN
6701 
6702         		Chk_awt_grp_id_name(p_vendor_rec.awt_group_id,
6703                             p_vendor_rec.awt_group_name,
6704                             p_vendor_rec.allow_awt_flag,
6705                             x_valid
6706                             );
6707 
6708                   IF NOT x_valid THEN
6709                     x_return_status := FND_API.G_RET_STS_ERROR;
6710                     IF g_source = 'IMPORT' THEN
6711                       IF (Insert_Rejections(
6712                          'AP_SUPPLIERS_INT',
6713                          p_vendor_rec.vendor_interface_id,
6714                          'AP_INCONSISTENT_AWT_GROUP',
6715                          g_user_id,
6716                          g_login_id,
6717                          'Validate_Vendor') <> TRUE) THEN
6718                        --
6719                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6720                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
6721                             l_api_name,'Parameters: '
6722                             ||' Vendor_Interface_Id:'
6723 				||p_vendor_rec.vendor_interface_id
6724                             ||' ,Awt_Group_Id: '||p_vendor_rec.awt_group_id
6725                             ||' ,Awt_Group_Name:'
6726 				||p_vendor_rec.awt_group_name);
6727                         END IF;
6728                       END IF;
6729                     ELSE
6730                         -- Bug 5491139 hkaniven start --
6731                         FND_MESSAGE.SET_NAME('SQLAP','AP_INCONSISTENT_AWT_GROUP');
6732                         FND_MSG_PUB.ADD;
6733                         -- Bug 5491139 hkaniven end --
6734                     END IF;
6735                   END IF;
6736 
6737   		 END IF;
6738 
6739 		------------------------------------------------------------------------
6740     		l_debug_info := 'Call to Validate Hold_by';
6741     		------------------------------------------------------------------------
6742      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6743           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6744                 l_api_name,l_debug_info);
6745     		END IF;
6746 
6747 		-- Hold_by validation
6748 
6749    		IF p_vendor_rec.hold_by is NOT NULL
6750                AND p_vendor_rec.hold_by <> ap_null_num THEN
6751      			Check_Valid_Hold_by (p_vendor_rec.hold_by,
6752                          x_valid);
6753 
6754 			IF NOT x_valid THEN
6755        				x_return_status := FND_API.G_RET_STS_ERROR;
6756      			END IF;
6757    		END IF;
6758 
6759 		------------------------------------------------------------------------
6760     		l_debug_info := 'Call to Validate Terms_Id and Terms_Name';
6761     		------------------------------------------------------------------------
6762      		IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6763           	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
6764                 l_api_name,l_debug_info);
6765     		END IF;
6766 
6767 		-- Terms_Id and Terms_Name validation
6768 
6769    		IF ((p_vendor_rec.terms_id is NOT NULL AND
6770                  p_vendor_rec.terms_id <> ap_null_num) OR
6771 			    (p_vendor_rec.terms_name is NOT NULL AND
6772                    p_vendor_rec.terms_name <> ap_null_char) OR
6773              (p_vendor_rec.default_terms_id is NOT NULL AND
6774                    p_vendor_rec.default_terms_id <> ap_null_num) --6393761
6775              ) THEN
6776 
6777         		Check_terms_id_code(p_vendor_rec.terms_id,
6778                                p_vendor_rec.terms_name,
6779                                p_vendor_rec.default_terms_id,
6780                                x_valid);
6781 
6782                   IF NOT x_valid THEN
6783                     x_return_status := FND_API.G_RET_STS_ERROR;
6784                     IF g_source = 'IMPORT' THEN
6785                       IF (Insert_Rejections(
6786                          'AP_SUPPLIERS_INT',
6787                          p_vendor_rec.vendor_interface_id,
6788                          'AP_INCONSISTENT_TERM',
6789                          g_user_id,
6790                          g_login_id,
6791                          'Validate_Vendor') <> TRUE) THEN
6792                        --
6793                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6794                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
6795                             l_api_name,'Parameters: '
6796                             ||' Vendor_Interface_Id: '
6797 				||p_vendor_rec.vendor_interface_id
6798                             ||' ,Terms_Id: '||p_vendor_rec.terms_id
6799                             ||' ,Terms_Name: '||p_vendor_rec.terms_name);
6800                         END IF;
6801                       END IF;
6802                     ELSE
6803                         -- Bug 5491139 hkaniven start --
6804                         FND_MESSAGE.SET_NAME('SQLAP','AP_INCONSISTENT_TERM');
6805                         FND_MSG_PUB.ADD;
6806                         -- Bug 5491139 hkaniven end --
6807                     END IF;
6808                   END IF;
6809                 END IF;
6810 
6811 
6812 	END IF; -- not ISETUP
6813     END IF; --p_mode
6814 
6815     -- End of API body
6816 
6817     -- Standard check of p_commit.
6818     IF FND_API.To_Boolean( p_commit ) THEN
6819 	COMMIT WORK;
6820     END IF;
6821 
6822     -- Standard call to get message count and if count is 1,
6823     -- get message info.
6824     FND_MSG_PUB.Count_And_Get(
6825 	p_count         	=>      x_msg_count     	,
6826         p_data          	=>      x_msg_data
6827     	);
6828 
6829 
6830 EXCEPTION
6831     WHEN FND_API.G_EXC_ERROR THEN
6832 		ROLLBACK TO Validate_Vendor_PUB;
6833 		x_return_status := FND_API.G_RET_STS_ERROR ;
6834 		FND_MSG_PUB.Count_And_Get
6835     		(  	p_count         	=>      x_msg_count,
6836         		p_data          	=>      x_msg_data
6837     		);
6838 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6839 		ROLLBACK TO Validate_Vendor_PUB;
6840 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6841 		FND_MSG_PUB.Count_And_Get
6842     		(  	p_count         	=>      x_msg_count,
6843         		p_data          	=>      x_msg_data
6844     		);
6845 	WHEN OTHERS THEN
6846 		ROLLBACK TO Validate_Vendor_PUB;
6847 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6848   		IF 	FND_MSG_PUB.Check_Msg_Level
6849 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
6850         		FND_MSG_PUB.Add_Exc_Msg
6851     	    		(	G_PKG_NAME  	    ,
6852     	    			l_api_name
6853 	    		);
6854 		END IF;
6855 		FND_MSG_PUB.Count_And_Get
6856     		(  	p_count         	=>      x_msg_count,
6857         		p_data          	=>      x_msg_data
6858     		);
6859 END Validate_Vendor;
6860 
6861 PROCEDURE Create_Vendor_Site
6862 ( 	p_api_version           IN	NUMBER,
6863   	p_init_msg_list		IN	VARCHAR2 := FND_API.G_FALSE	,
6864 	p_commit	    	IN  	VARCHAR2 := FND_API.G_FALSE,
6865 	p_validation_level	IN  	NUMBER	:=
6866 						FND_API.G_VALID_LEVEL_FULL,
6867 	x_return_status		OUT	NOCOPY VARCHAR2		  	,
6868 	x_msg_count		OUT	NOCOPY NUMBER,
6869 	x_msg_data		OUT	NOCOPY VARCHAR2,
6870 	p_vendor_site_rec	IN	r_vendor_site_rec_type,
6871 	x_vendor_site_id	OUT	NOCOPY NUMBER,
6872 	x_party_site_id		OUT	NOCOPY NUMBER,
6873 	x_location_id		OUT	NOCOPY NUMBER
6874 )
6875 IS
6876     l_api_name			CONSTANT VARCHAR2(30)	:= 'Create_Vendor_Site';
6877     l_api_version           	CONSTANT NUMBER 		:= 1.0;
6878 
6879     l_def_org_id			NUMBER;
6880     l_party_site_rec			HZ_PARTY_SITE_V2PUB.party_site_rec_type;
6881     l_location_rec			HZ_LOCATION_V2PUB.location_rec_type;
6882 
6883     -- variables for retrieving defaults from PO_VENDORS
6884     l_rowid                         	VARCHAR2(255);
6885     l_vendor_site_id                	NUMBER;
6886     l_vendor_site_code              	VARCHAR2(255);
6887     l_purchasing_site_flag          	VARCHAR2(255);
6888     l_rfq_only_site_flag            	VARCHAR2(255);
6889     l_pay_site_flag                 	VARCHAR2(255);
6890     l_attention_ar_flag             	VARCHAR2(255);
6891     l_customer_num                  	VARCHAR2(255);
6892     l_ship_to_location_id           	NUMBER;
6893     l_bill_to_location_id           	NUMBER;
6894     l_ship_via_lookup_code          	VARCHAR2(255);
6895     l_sys_ship_via_lookup_code          VARCHAR2(255);
6896     l_freight_terms_lookup_code     	VARCHAR2(255);
6897     l_fob_lookup_code               	VARCHAR2(255);
6898     l_fax                           	VARCHAR2(255);
6899     l_fax_area_code                 	VARCHAR2(255);
6900     l_telex                         	VARCHAR2(255);
6901     l_payment_method_lookup_code    	VARCHAR2(255);
6902     l_bank_account_name             	VARCHAR2(255);
6903     l_bank_account_num              	VARCHAR2(255);
6904     l_bank_num                      	VARCHAR2(255);
6905     l_bank_account_type             	VARCHAR2(255);
6906     l_terms_date_basis              	VARCHAR2(255);
6907     l_sup_terms_date_basis                  VARCHAR2(255);
6908     l_current_catalog_num           	VARCHAR2(255);
6909     l_distribution_set_id           	NUMBER;
6910     l_future_pay_ccid     	NUMBER;
6911     l_prepay_code_combination_id    	NUMBER;
6912     l_pay_group_lookup_code         	VARCHAR2(255);
6913     l_sup_pay_group_lookup_code             VARCHAR2(255);
6914     l_payment_priority              	NUMBER;
6915     l_terms_id                      	NUMBER;
6916     l_sup_terms_id                          NUMBER;
6917     l_invoice_amount_limit          	NUMBER;
6918     l_pay_date_basis_lookup_code    	VARCHAR2(255);
6919     l_sup_pay_date_basis_lk_code        VARCHAR2(255);
6920     l_always_take_disc_flag         	VARCHAR2(255);
6921     l_sup_always_take_disc_flag             VARCHAR2(255);
6922     l_invoice_currency_code         	VARCHAR2(255);
6923     l_sup_invoice_currency_code             VARCHAR2(255);
6924     l_payment_currency_code         	VARCHAR2(255);
6925     l_sup_payment_currency_code             VARCHAR2(255);
6926     l_hold_all_payments_flag        	VARCHAR2(255);
6927     l_hold_future_payments_flag     	VARCHAR2(255);
6928     l_hold_reason                   	VARCHAR2(255);
6929     l_hold_unmatched_invoices_flag  	VARCHAR2(255);
6930     l_match_option                  	VARCHAR2(255);
6931     l_create_debit_memo_flag        	VARCHAR2(255);
6932     l_tax_reporting_site_flag       	VARCHAR2(255);
6933     l_attribute_category            	VARCHAR2(255);
6934     l_validation_number             	NUMBER;
6935     l_exclude_freight_from_disc     	VARCHAR2(255);
6936     l_check_digits                  	VARCHAR2(255);
6937     l_address_style                 	VARCHAR2(255);
6938     l_language                      	VARCHAR2(255);
6939     l_allow_awt_flag                	VARCHAR2(255);
6940     l_awt_group_id                  	NUMBER;
6941     l_pay_on_code                   	VARCHAR2(255);
6942     l_default_pay_site_id           	NUMBER;
6943     l_pay_on_receipt_summary_code   	VARCHAR2(255);
6944     l_vendor_site_code_alt          	VARCHAR2(255);
6945     l_address_lines_alt             	VARCHAR2(255);
6946     l_pcard_site_flag               	VARCHAR2(255);
6947     l_country_of_origin_code        	VARCHAR2(255);
6948     l_calling_sequence              	VARCHAR2(255);
6949     l_shipping_location_id          	NUMBER;
6950     l_supplier_notif_method         	VARCHAR2(255);
6951     l_email_address                 	VARCHAR2(255);
6952     l_remittance_email              	VARCHAR2(255);
6953     l_bank_charge_bearer            	VARCHAR2(255);
6954     l_sup_bank_charge_bearer                VARCHAR2(255);
6955 
6956     l_inventory_org_id                  NUMBER;
6957 
6958     l_old_org_id                    	VARCHAR2(255);
6959     l_org_id                            NUMBER;
6960     l_not_used                     	VARCHAR2(2000);
6961     l_default_country               	VARCHAR2(255);
6962     l_federal_reportable_flag		VARCHAR2(1);    -- Supplier Import
6963     l_org_type_lookup_code              VARCHAR2(25);   -- Supplier Import
6964     l_set_of_books_id                   NUMBER;         -- Supplier Import
6965     l_pay_on_rec_summary_code           VARCHAR2(25);   -- Supplier Import
6966 
6967     l_duns_number                       VARCHAR2(30);
6968     l_tolerance_id                      NUMBER;
6969 
6970     l_accts_pay_ccid_def                VARCHAR2(255);
6971     l_prepay_ccid_def                   VARCHAR2(255);
6972     l_future_pay_ccid_def               VARCHAR2(255);
6973 
6974     l_user_id                		number := FND_GLOBAL.USER_ID;
6975     l_last_update_login      		number := FND_GLOBAL.LOGIN_ID;
6976     l_program_application_id 		number := FND_GLOBAL.prog_appl_id;
6977     l_program_id             		number := FND_GLOBAL.conc_program_id;
6978     l_request_id             		number := FND_GLOBAL.conc_request_id;
6979 
6980     l_val_return_status                 VARCHAR2(50);
6981     l_val_msg_count                     NUMBER;
6982     l_val_msg_data                      VARCHAR2(2000);
6983     l_loc_return_status                 VARCHAR2(50);
6984     l_loc_msg_count                     NUMBER;
6985     l_loc_msg_data                      VARCHAR2(2000);
6986     l_site_return_status                 VARCHAR2(50);
6987     l_site_msg_count                     NUMBER;
6988     l_site_msg_data                      VARCHAR2(2000);
6989     l_pay_return_status                 VARCHAR2(50);
6990     l_pay_msg_count                     NUMBER;
6991     l_pay_msg_data                      VARCHAR2(2000);
6992     l_org_context			VARCHAR2(1);
6993     l_multi_org_flag			VARCHAR2(1);
6994     l_debug_info			VARCHAR2(2000);
6995     l_party_id				NUMBER;
6996     l_vendor_type_lookup_code		VARCHAR2(30);
6997     l_vendor_site_rec			r_vendor_site_rec_type;
6998     l_accts_pay_ccid                	NUMBER;
6999     l_prepay_ccid                   	NUMBER;
7000     l_future_ccid                   	NUMBER;
7001     l_last_updated_by			NUMBER;
7002     l_created_by			NUMBER;
7003     l_default_country_code		VARCHAR2(25);
7004     l_home_country_code			VARCHAR2(25);
7005     l_location_valid			VARCHAR2(1);
7006     l_party_site_valid			VARCHAR2(1);
7007     l_payee_valid                  	VARCHAR2(1);
7008     l_loc_id				NUMBER;
7009     l_party_site_id			NUMBER;
7010     l_party_site_number			VARCHAR2(30);
7011     l_org_id_derive                     NUMBER;
7012     x_valid                             BOOLEAN;
7013     -- bug 7371143 start
7014     l_offset_tax_flag	                VARCHAR2(1);
7015     l_auto_tax_calc_flag                VARCHAR2(1);
7016     -- bug 7371143 end
7017 
7018     /* Variable Declaration for IBY */
7019     ext_payee_tab
7020 		IBY_DISBURSEMENT_SETUP_PUB.External_Payee_Tab_Type;
7021     ext_payee_id_tab
7022 		IBY_DISBURSEMENT_SETUP_PUB.Ext_Payee_Id_Tab_Type;
7023     ext_payee_create_tab
7024 		IBY_DISBURSEMENT_SETUP_PUB.Ext_Payee_Create_Tab_Type;
7025 
7026     l_ext_payee_rec IBY_DISBURSEMENT_SETUP_PUB.EXTERNAL_PAYEE_REC_TYPE;
7027 
7028       -- Bug#7506443 start
7029        l_tax_classification_code         ZX_PARTY_TAX_PROFILE.TAX_CLASSIFICATION_CODE%TYPE;
7030        l_pymt_method_code     iby_external_payees_all.default_payment_method_code%TYPE;
7031        l_inactive_date        iby_external_payees_all.Inactive_Date%TYPE;
7032        l_primary_flag         iby_ext_party_pmt_mthds.primary_flag%TYPE;
7033        l_Exclusive_Pay_Flag    IBY_EXTERNAL_PAYEES_ALL.exclusive_payment_flag%TYPE;
7034        -- Bug#7506443 start
7035 
7036     l_sync_return_status                 VARCHAR2(50);
7037     l_sync_msg_count                     NUMBER;
7038     l_sync_msg_data                      VARCHAR2(2000);
7039     l_sup_awt_flag                       VARCHAR2(1);
7040 	-- BUG 6739544 Start
7041 	ORG_ID_EXCEPTION EXCEPTION;
7042 	-- BUG 6739544 End
7043 
7044 	l_party_site_num			VARCHAR2(1); -- Bug 6823885
7045 
7046     L_PARTY_TAX_PROFILE_ID               zx_party_tax_profile.party_tax_profile_id%type; -- Bug 7207314
7047     l_return_status                      VARCHAR2(2000); --Bug 7207314
7048        -- changes for Bug#7506443 start
7049           Cursor get_iby_dtls_csr(p_prty_id NUMBER) is
7050           SELECT pmtmthdAssignmentseo.Payment_Method_Code,
7051                  pmtmthdAssignmentseo.InActive_Date,
7052                  pmtmthdAssignmentseo.Primary_Flag,
7053                  iep.exclusive_payment_flag
7054            FROM iBy_Payment_Methods_vl pmthds,
7055                 iBy_ext_Party_pmt_mthds pmtmthdAssignmentseo,
7056                 iBy_External_Payees_All iep
7057           WHERE pmthds.Payment_Method_Code = pmtmthdAssignmentseo.Payment_Method_Code (+)
7058             AND pmtmthdAssignmentseo.Payment_Flow = 'DISBURSEMENTS'
7059             AND Nvl(pmthds.InActive_Date,Trunc(SYSDATE + 1)) > Trunc(SYSDATE)
7060             AND pmtmthdAssignmentseo.Payment_Function = 'PAYABLES_DISB'
7061             AND pmtmthdAssignmentseo.ext_pmt_Party_Id = iep.ext_payee_id
7062             AND iep.Payee_Party_Id = p_prty_id
7063             AND Party_Site_Id IS NULL
7064             AND Supplier_Site_Id IS NULL;
7065 
7066 
7067 
7068 BEGIN
7069     -- Standard Start of API savepoint
7070     SAVEPOINT	Create_Vendor_Site_PUB;
7071 
7072     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
7073         	    	    	    	 	p_api_version        	,
7074    	       	    	 			l_api_name 	    	,
7075 		    	    	    	    	G_PKG_NAME )
7076     THEN
7077 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7078     END IF;
7079 
7080     -- Initialize message list if p_init_msg_list is set to TRUE.
7081     IF FND_API.to_Boolean( p_init_msg_list ) THEN
7082 	FND_MSG_PUB.initialize;
7083     END IF;
7084     -- Bug 5055120
7085     -- This call is incorrect. The correct call is to have the calling
7086     -- modules set the context and call this API with the right ORG_ID.
7087 
7088     -- Bug 6812010 :Due to 5055120, Payables' own supplier site import program fails
7089     -- because MO initialization is not happening.To fix 6812010 and keep 5055120 intact,
7090     -- strategy is that if calling application id is not AP then we will not call MO_GLOBAL.INIT
7091     -- since it is calling module's responsibility to perform MO initialization.
7092     -- Bug 6930102
7093     If (l_program_application_id = 200 OR l_program_application_id = -1)then
7094     MO_GLOBAL.INIT ('SQLAP');
7095     end if;
7096 
7097     --  Initialize API return status to success
7098     x_return_status := FND_API.G_RET_STS_SUCCESS;
7099     l_val_return_status := FND_API.G_RET_STS_SUCCESS;
7100     l_loc_return_status := FND_API.G_RET_STS_SUCCESS;
7101     l_site_return_status := FND_API.G_RET_STS_SUCCESS;
7102     l_pay_return_status := FND_API.G_RET_STS_SUCCESS;
7103     l_sync_return_status := FND_API.G_RET_STS_SUCCESS;
7104 
7105     -- API body
7106     ------------------------------------------------------------------------
7107     l_debug_info := 'Call Org_Id and Operating_unit_name validation for Import';
7108     ------------------------------------------------------------------------
7109     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7110          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
7111                 l_api_name,l_debug_info);
7112     END IF;
7113 
7114     -- Org_Id and Operating_unit_name validation
7115     -- This is to make sure if org_id is not provided but
7116     -- org_name is provided then derive the org_id from operating_unit
7117 
7118     IF (p_vendor_site_rec.org_id is NULL AND
7119         p_vendor_site_rec.org_name is NOT NULL) THEN
7120 
7121       Check_org_id_name(l_org_id_derive,
7122                         p_vendor_site_rec.org_name,
7123                         'AP_SUPPLIER_SITES_INT',
7124                         p_vendor_site_rec.vendor_site_interface_id,
7125                         x_valid);
7126 
7127       IF NOT x_valid THEN
7128         x_return_status := FND_API.G_RET_STS_ERROR;
7129       END IF;
7130 
7131     END IF;
7132 
7133     IF l_org_id_derive IS NOT NULL THEN
7134          l_def_org_id := l_org_id_derive;
7135     ELSE
7136          l_def_org_id := p_vendor_site_rec.org_id;
7137     END IF;
7138 
7139     IF l_def_org_id IS NULL THEN
7140         x_return_status := FND_API.G_RET_STS_ERROR;
7141         IF g_source = 'IMPORT' THEN
7142           IF (Insert_Rejections(
7143                     'AP_SUPPLIER_SITES_INT',
7144                     p_vendor_site_rec.vendor_site_interface_id,
7145                     'AP_ORG_INFO_NULL',     --bug 5568861
7146                     g_user_id,
7147                     g_login_id,
7148                     'Create_Vendor_Site') <> TRUE) THEN
7149            --
7150             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7151                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
7152                    l_api_name,'Parameters: '
7153                  ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
7154                    ||' ,Vendor_Site_Code: '||p_vendor_site_rec.vendor_site_code);
7155             END IF;
7156           END IF;
7157         ELSE
7158             -- Bug 5491139 hkaniven start --
7159             FND_MESSAGE.SET_NAME('SQLAP','AP_ORG_INFO_NULL');
7160             FND_MSG_PUB.ADD;
7161             -- Bug 5491139 hkaniven end --
7162         END IF;
7163     --    RAISE FND_API.G_EXC_ERROR;         BUG 6739544
7164 	      RAISE ORG_ID_EXCEPTION; -- BUG 6739544
7165     END IF;
7166     -- Bug 5055120
7167     -- Added validation of org_id
7168     BEGIN
7169 
7170       MO_GLOBAL.validate_orgid_pub_api(l_def_org_id,
7171                                      'N',
7172                                      x_return_status);
7173     EXCEPTION
7174       WHEN OTHERS
7175       THEN
7176         IF g_source = 'IMPORT' THEN
7177           IF (Insert_Rejections(
7178                     'AP_SUPPLIER_SITES_INT',
7179                     p_vendor_site_rec.vendor_site_interface_id,
7180                     'AP_ORG_INFO_NULL',  --bug 5568861
7181                     g_user_id,
7182                     g_login_id,
7183                     'Create_Vendor_Site') <> TRUE) THEN
7184            --
7185             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7186                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
7187                    l_api_name,'Parameters: '
7188                  ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
7189                    ||' ,Vendor_Site_Code: '||p_vendor_site_rec.vendor_site_code);
7190             END IF;
7191           END IF;
7192         ELSE
7193             -- Bug 5491139 hkaniven start --
7194             FND_MESSAGE.SET_NAME('SQLAP','AP_ORG_INFO_NULL');
7195             FND_MSG_PUB.ADD;
7196             -- Bug 5491139 hkaniven end --
7197         END IF;
7198       --  RAISE FND_API.G_EXC_ERROR;
7199 		RAISE ORG_ID_EXCEPTION; -- BUG 6739544
7200     END;
7201 
7202 
7203     l_org_context := mo_global.get_access_mode;
7204 
7205     IF nvl(l_org_context, 'K') <> 'S' THEN
7206 	MO_GLOBAL.set_policy_context('S',l_def_org_id);
7207     END IF;
7208 
7209     SELECT nvl(multi_org_flag,'N')
7210     INTO l_multi_org_flag
7211     FROM FND_PRODUCT_GROUPS;
7212 
7213     l_vendor_site_rec := p_vendor_site_rec;
7214 
7215     l_vendor_site_rec.org_id := l_def_org_id;
7216 
7217     --Open Issue 14 -- need to call initialize procedure due to MOAC changes
7218     l_debug_info := 'Call to default CCIDs from FINANCIAL_SYSTEM_PARAMETERS';
7219     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7220 	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
7221     END IF;
7222     --
7223     -- Get default CCIDs from FINANCIAL_SYSTEM_PARAMETERS
7224     --
7225 
7226     ap_apxvdmvd_pkg.initialize(
7227         x_user_defined_vendor_num_code  => l_not_used,
7228         x_manual_vendor_num_type        => l_not_used,
7229         x_rfq_only_site_flag            => l_rfq_only_site_flag,
7230         x_ship_to_location_id           => l_ship_to_location_id,
7231         x_ship_to_location_code         => l_not_used,
7232         x_bill_to_location_id           => l_bill_to_location_id,
7233         x_bill_to_location_code         => l_not_used,
7234         x_fob_lookup_code               => l_fob_lookup_code,
7235         x_freight_terms_lookup_code     => l_freight_terms_lookup_code,
7236         x_terms_id                      => l_terms_id,
7237         x_terms_disp                    => l_not_used,
7238         x_always_take_disc_flag         => l_always_take_disc_flag,
7239         x_invoice_currency_code         => l_invoice_currency_code,
7240         x_org_id                        => l_vendor_site_rec.org_id,
7241         x_set_of_books_id               => l_not_used,
7242         x_short_name                    => l_not_used,
7243         x_payment_currency_code         => l_payment_currency_code,
7244         x_accts_pay_ccid                => l_accts_pay_ccid,
7245         x_future_dated_payment_ccid     => l_future_pay_ccid,
7246         x_prepay_code_combination_id    => l_prepay_ccid,
7247         x_vendor_pay_group_lookup_code  => l_pay_group_lookup_code,
7248         x_sys_auto_calc_int_flag        => l_not_used,
7249         x_terms_date_basis              => l_terms_date_basis,
7250         x_terms_date_basis_disp         => l_not_used,
7251         x_chart_of_accounts_id          => l_not_used,
7252         x_fob_lookup_disp               => l_not_used,
7253         x_freight_terms_lookup_disp     => l_not_used,
7254         x_vendor_pay_group_disp         => l_not_used,
7255         x_fin_require_matching          => l_hold_unmatched_invoices_flag, --Bug 7651872
7256         x_sys_require_matching          => l_not_used,
7257         x_fin_match_option              => l_not_used,
7258         x_po_create_dm_flag             => l_not_used,
7259         x_exclusive_payment             => l_not_used,
7260         x_vendor_auto_int_default       => l_not_used,
7261         x_inventory_organization_id     => l_not_used,
7262         x_ship_via_lookup_code          => l_ship_via_lookup_code,
7263         x_ship_via_disp                 => l_not_used,
7264         x_sysdate                       => l_not_used,
7265         x_enforce_ship_to_loc_code      => l_not_used,
7266         x_receiving_routing_id          => l_not_used,
7267         x_qty_rcv_tolerance             => l_not_used,
7268         x_qty_rcv_exception_code        => l_not_used,
7269         x_days_early_receipt_allowed    => l_not_used,
7270         x_days_late_receipt_allowed     => l_not_used,
7271         x_allow_sub_receipts_flag       => l_not_used,
7272         x_allow_unord_receipts_flag     => l_not_used,
7273         x_receipt_days_exception_code   => l_not_used,
7274         x_enforce_ship_to_loc_disp      => l_not_used,
7275         x_qty_rcv_exception_disp        => l_not_used,
7276         x_receipt_days_exception_disp   => l_not_used,
7277         x_receipt_required_flag         => l_not_used,
7278         x_inspection_required_flag      => l_not_used,
7279         x_payment_method_lookup_code    => l_not_used,
7280         x_payment_method_disp           => l_not_used,
7281         x_pay_date_basis_lookup_code    => l_not_used,
7282         x_pay_date_basis_disp           => l_not_used,
7283         x_receiving_routing_name        => l_not_used,
7284         x_ap_inst_flag                  => l_not_used,
7285         x_po_inst_flag                  => l_not_used,
7286         x_home_country_code             => l_home_country_code,
7287         x_default_country_code          => l_default_country,
7288         x_default_country_disp          => l_not_used,
7289         x_default_awt_group_id          => l_awt_group_id,
7290         x_default_awt_group_name        => l_not_used,
7291         x_allow_awt_flag                => l_allow_awt_flag,
7292         x_base_currency_code            => l_not_used,
7293         x_address_style                 => l_not_used,
7294         x_use_bank_charge_flag          => l_not_used,
7295         x_bank_charge_bearer            => l_bank_charge_bearer,
7296         x_calling_sequence              => null);
7297 
7298     -- Retrieve defaults from the vendor master
7299 
7300     /* Bug 7155121 Modified the below select to get values from both ap_system_parameters_all and po_vendors*/
7301 
7302     SELECT nvl(pv.terms_date_basis, asp.terms_date_basis) -- Bug#7506443
7303         , pv.pay_group_lookup_code
7304         , pv.payment_priority
7305         , asp.always_take_disc_flag
7306         , pv.hold_all_payments_flag
7307         , pv.hold_future_payments_flag
7308         , pv.hold_reason
7309         --Bug6317600 Commenting awt_group_id. AWT should be defaulted from Payables options  and not Supplier
7310         --, pv.awt_group_id
7311         , asp.bank_charge_bearer
7312         , asp.match_option
7313         , asp.pay_date_basis_lookup_code
7314         , pv.invoice_amount_limit
7315         , NVL(pv.invoice_currency_code,asp.invoice_currency_code) --bug:7282105
7316         , NVL(pv.payment_currency_code,asp.payment_currency_code) --bug:7282105
7317         , NVL(pv.terms_id, asp.terms_id)   -- Bug#7506443
7318         , pv.federal_reportable_flag
7319         , pv.organization_type_lookup_code
7320         , asp.set_of_books_id
7321         --Bug 7651872, asp.hold_unmatched_invoices_flag
7322         , pv.exclude_freight_from_discount
7323         , pv.party_id
7324         , pv.vendor_type_lookup_code
7325         , nvl(pv.allow_awt_flag, 'N')
7326     INTO
7327 	 l_sup_terms_date_basis
7328 	, l_sup_pay_group_lookup_code
7329         , l_payment_priority
7330 	, l_sup_always_take_disc_flag
7331 	, l_hold_all_payments_flag
7332         , l_hold_future_payments_flag
7333 	, l_hold_reason
7334 	--Bug6317600
7335 	--, l_awt_group_id
7336 	, l_sup_bank_charge_bearer
7337 	, l_match_option
7338         , l_sup_pay_date_basis_lk_code
7339         , l_invoice_amount_limit
7340 	, l_sup_invoice_currency_code
7341         , l_sup_payment_currency_code
7342 	, l_sup_terms_id
7343         , l_federal_reportable_flag
7344         , l_org_type_lookup_code
7345 	, l_set_of_books_id
7346 	--Bug 7651872, l_hold_unmatched_invoices_flag
7347         , l_exclude_freight_from_disc
7348 	, l_party_id
7349 	, l_vendor_type_lookup_code
7350         , l_sup_awt_flag
7351     FROM  po_vendors pv,
7352           ap_system_parameters_all asp
7353     WHERE pv.vendor_id = p_vendor_site_rec.vendor_id
7354     AND   asp.org_id=l_def_org_id;
7355 
7356     l_last_updated_by               		:=  fnd_global.user_id;
7357     l_last_update_login             		:=  fnd_global.login_id;
7358     l_created_by                    		:=  fnd_global.user_id;
7359 
7360      --Bug6679696
7361     IF l_vendor_type_lookup_code = 'EMPLOYEE' then
7362     l_vendor_site_rec.pay_site_flag := nvl(l_vendor_site_rec.pay_site_flag,'Y');
7363     END IF;
7364     G_vendor_type_lookup_code := l_vendor_type_lookup_code;
7365     l_vendor_site_rec.rfq_only_site_flag
7366 	:=  nvl(l_vendor_site_rec.rfq_only_site_flag, l_rfq_only_site_flag);
7367     l_vendor_site_rec.attention_ar_flag             :=
7368 		nvl(l_vendor_site_rec.attention_ar_flag, 'N');
7369     l_vendor_site_rec.ship_to_location_id
7370 	:=  nvl(l_vendor_site_rec.ship_to_location_id, l_ship_to_location_id);
7371     l_vendor_site_rec.bill_to_location_id
7372 	:=  nvl(l_vendor_site_rec.bill_to_location_id, l_bill_to_location_id);
7373     l_vendor_site_rec.ship_via_lookup_code
7374 	:=  nvl(l_vendor_site_rec.ship_via_lookup_code, l_ship_via_lookup_code);
7375     l_vendor_site_rec.freight_terms_lookup_code
7376 	:=  nvl(l_vendor_site_rec.freight_terms_lookup_code,
7377 		l_freight_terms_lookup_code);
7378     l_vendor_site_rec.fob_lookup_code
7379 	:=  nvl(l_vendor_site_rec.fob_lookup_code, l_fob_lookup_code);
7380      -- Bug#7506443 start
7381     /*    l_vendor_site_rec.terms_date_basis      :=
7382 		nvl(l_vendor_site_rec.terms_date_basis, nvl(l_terms_date_basis,
7383 				l_sup_terms_date_basis));   */
7384     l_vendor_site_rec.terms_date_basis      :=
7385 	 nvl(l_vendor_site_rec.terms_date_basis, nvl(l_sup_terms_date_basis,
7386 	        l_terms_date_basis));
7387     -- Bug#7506443 end
7388     l_vendor_site_rec.accts_pay_code_combination_id
7389 	:=  nvl(l_vendor_site_rec.accts_pay_code_combination_id,
7390 		l_accts_pay_ccid);
7391     l_vendor_site_rec.future_dated_payment_ccid
7392 	:=  nvl(l_vendor_site_rec.future_dated_payment_ccid,
7393 		l_future_pay_ccid);
7394     l_vendor_site_rec.prepay_code_combination_id
7395 	:=  nvl(l_vendor_site_rec.prepay_code_combination_id,
7396 		l_prepay_ccid);
7397     -- Bug 5409457. Pay Group should be based supplier, if there is no value at
7398     -- supplier then from product setup level.
7399     l_vendor_site_rec.pay_group_lookup_code
7400 	:=  nvl(l_vendor_site_rec.pay_group_lookup_code,
7401 		nvl(l_sup_pay_group_lookup_code, l_pay_group_lookup_code));
7402     l_vendor_site_rec.payment_priority
7403 		:=  nvl(l_vendor_site_rec.payment_priority, l_payment_priority);
7404     -- Bug#7506443 start
7405     /*l_vendor_site_rec.terms_id  :=  nvl(l_vendor_site_rec.terms_id,
7406 					nvl(l_terms_id, l_sup_terms_id));  */
7407     l_vendor_site_rec.terms_id  :=  nvl(l_vendor_site_rec.terms_id,
7408 	    nvl(l_sup_terms_id, l_terms_id));
7409     -- Bug#7506443 end
7410     l_vendor_site_rec.invoice_amount_limit
7411 	:=  nvl(l_vendor_site_rec.invoice_amount_limit, l_invoice_amount_limit);
7412     l_vendor_site_rec.pay_date_basis_lookup_code
7413 	:=  nvl(l_vendor_site_rec.pay_date_basis_lookup_code,
7414 		nvl(l_pay_date_basis_lookup_code, l_sup_pay_date_basis_lk_code));
7415     -- bug6680946
7416     l_vendor_site_rec.always_take_disc_flag
7417 	:=  nvl(l_vendor_site_rec.always_take_disc_flag, l_sup_always_take_disc_flag);
7418     l_vendor_site_rec.invoice_currency_code
7419 	:=  nvl(l_vendor_site_rec.invoice_currency_code,
7420 		nvl(l_sup_invoice_currency_code, l_invoice_currency_code )); --bug:7282105
7421     l_vendor_site_rec.payment_currency_code
7422 	:=  nvl(l_vendor_site_rec.payment_currency_code,
7423 		nvl(l_sup_payment_currency_code, l_payment_currency_code)); --bug:7282105
7424     l_vendor_site_rec.hold_all_payments_flag
7425 	:=  nvl(l_vendor_site_rec.hold_all_payments_flag,
7426 		l_hold_all_payments_flag);
7427     l_vendor_site_rec.hold_future_payments_flag
7428 	:=  nvl(l_vendor_site_rec.hold_future_payments_flag,
7429 		l_hold_future_payments_flag);
7430     l_vendor_site_rec.hold_reason
7431 		:=  nvl(l_vendor_site_rec.hold_reason, l_hold_reason);
7432     l_vendor_site_rec.hold_unmatched_invoices_flag
7433 	:=  nvl(l_vendor_site_rec.hold_unmatched_invoices_flag,
7434 		l_hold_unmatched_invoices_flag);
7435     l_vendor_site_rec.match_option
7436 		:=  nvl(l_vendor_site_rec.match_option, l_match_option);
7437     l_vendor_site_rec.create_debit_memo_flag
7438 		:=  nvl(l_vendor_site_rec.create_debit_memo_flag, 'N');
7439     l_vendor_site_rec.tax_reporting_site_flag
7440 		:=  nvl(l_vendor_site_rec.tax_reporting_site_flag, 'N');
7441     l_vendor_site_rec.validation_number
7442 		:=  nvl(l_vendor_site_rec.validation_number, 0);
7443     l_vendor_site_rec.exclude_freight_from_discount
7444 	 :=  nvl(l_vendor_site_rec.exclude_freight_from_discount,
7445 		l_exclude_freight_from_disc);
7446     --Bug 7384699 populate allow_awt_flag only iff Supplier awt_flag is enabled
7447     if(l_sup_awt_flag = 'Y') THEN
7448       l_vendor_site_rec.allow_awt_flag
7449                 :=  nvl(l_vendor_site_rec.allow_awt_flag, l_allow_awt_flag);
7450     else
7451       l_vendor_site_rec.allow_awt_flag := 'N';
7452     end if;
7453     --Bug6317600 Populate awt_group_id only if allow_awt_flag is Y
7454     if nvl( l_vendor_site_rec.allow_awt_flag,'N') = 'Y' THEN
7455     l_vendor_site_rec.awt_group_id
7456 		:=  nvl(l_vendor_site_rec.awt_group_id, l_awt_group_id);
7457     end if;
7458     l_vendor_site_rec.bank_charge_bearer
7459 	:=  nvl(l_vendor_site_rec.bank_charge_bearer,
7460 		nvl(l_bank_charge_bearer, l_sup_bank_charge_bearer));
7461     l_vendor_site_rec.pcard_site_flag
7462 		:=  nvl(l_vendor_site_rec.pcard_site_flag, 'N');
7463     l_vendor_site_rec.country_of_origin_code
7464 	:=  nvl(l_vendor_site_rec.country_of_origin_code, l_default_country);
7465     l_vendor_site_rec.org_id  :=  nvl(l_vendor_site_rec.org_id, l_org_id);
7466     l_vendor_site_rec.duns_number
7467 		:=  nvl(l_vendor_site_rec.duns_number, l_duns_number);
7468 
7469     validate_vendor_site(p_api_version => 1.0,
7470 		p_init_msg_list => FND_API.G_FALSE,
7471 		p_commit  => FND_API.G_FALSE,
7472 		x_return_status => l_val_return_status,
7473 		x_msg_count => l_val_msg_count,
7474 		x_msg_data => l_val_msg_data,
7475 		p_vendor_site_rec => l_vendor_site_rec,
7476 		P_mode => 'I',
7477 		P_calling_prog => 'NOT ISETUP',
7478 		x_party_site_valid => l_party_site_valid,
7479 		x_location_valid => l_location_valid,
7480 		x_payee_valid	=> l_payee_valid,
7481 		p_vendor_site_id => x_vendor_site_id);
7482 
7483     -- Bug 7429668 Adding condition of l_val_return_status to ensure that
7484 	-- locations are created only if the validation passes successfully.
7485 	IF l_location_valid = 'N' AND nvl(l_val_return_status,FND_API.G_RET_STS_SUCCESS) =
7486 			FND_API.G_RET_STS_SUCCESS THEN -- location_id was null
7487 
7488 	l_location_rec.created_by_module := 'AP_SUPPLIERS_API';
7489 	l_location_rec.application_id := 200;
7490 	l_location_rec.address_style := l_vendor_site_rec.address_style;
7491 	l_location_rec.province := l_vendor_site_rec.province;
7492 	l_location_rec.country := l_vendor_site_rec.country;
7493 	l_location_rec.county := l_vendor_site_rec.county;
7494 	l_location_rec.address1 := l_vendor_site_rec.address_line1;
7495 	l_location_rec.address2 := l_vendor_site_rec.address_line2;
7496 	l_location_rec.address3 := l_vendor_site_rec.address_line3;
7497 	l_location_rec.address4 := l_vendor_site_rec.address_line4;
7498 	l_location_rec.address_lines_phonetic := l_vendor_site_rec.address_lines_alt;
7499 	l_location_rec.city := l_vendor_site_rec.city;
7500 	l_location_rec.state := l_vendor_site_rec.state;
7501 	l_location_rec.postal_code := l_vendor_site_rec.zip;
7502 
7503         -- The input language that we get from suppliers
7504         -- open interface will be NLS_LANGUAGE and will not be
7505         -- language code. So it needs to be converted to
7506         -- language_code before passed to TCA API.
7507 
7508         IF l_vendor_site_rec.language IS NOT NULL THEN
7509           BEGIN
7510             SELECT language_code
7511             INTO   l_location_rec.language
7512             FROM   fnd_languages
7513             WHERE  nls_language = l_vendor_site_rec.language;
7514           EXCEPTION
7515             WHEN OTHERS THEN
7516               l_location_rec.language := NULL;
7517           END;
7518         END IF;
7519 
7520 	--Open Issue 4, check for needed parameters
7521         --Bug6648405
7522         --Bug 6753822 - Added NVL on vendor_type_lookup_code
7523        IF (NVL(l_vendor_type_lookup_code,'DUMMY') <> 'EMPLOYEE') then
7524 	hz_location_v2pub.create_location(
7525 	 	p_init_msg_list => FND_API.G_FALSE,
7526 		p_location_rec => l_location_rec,
7527 	--	p_commit => FND_API.G_FALSE,
7528 		x_return_status => l_loc_return_status,
7529 		x_msg_count => l_loc_msg_count,
7530 		x_msg_data => l_loc_msg_data,
7531 		x_location_id => l_loc_id);
7532 		IF l_loc_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7533       ------------------------------------------------------------------------
7534       l_debug_info := 'After call to hz_location_v2pub.create_location';
7535       l_debug_info := l_debug_info||' Return status : '||l_loc_return_status||' Error : '||l_loc_msg_data;
7536       ------------------------------------------------------------------------
7537       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7538         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
7539       END IF;
7540     END IF;
7541         END IF;
7542 	l_vendor_site_rec.location_id := l_loc_id;
7543 
7544     END IF; --location_id was null
7545 
7546     IF l_party_site_valid = 'N' and
7547 		l_location_valid <> 'F' and
7548 		nvl(l_loc_return_status,FND_API.G_RET_STS_SUCCESS) =
7549 			FND_API.G_RET_STS_SUCCESS  AND
7550 		-- Bug 7429668
7551 		nvl(l_val_return_status,FND_API.G_RET_STS_SUCCESS) =
7552 			FND_API.G_RET_STS_SUCCESS THEN
7553 
7554 	--populate party site record
7555 	l_party_site_rec.location_id := l_vendor_site_rec.location_id;
7556 	l_party_site_rec.created_by_module := 'AP_SUPPLIERS_API';
7557 	l_party_site_rec.application_id := 200;
7558 	l_party_site_rec.party_id := l_party_id;
7559 
7560         --Uncommenting the line below for the R12 FSIO gap,
7561         --as we want the duns number to be imported on
7562         --supplier sites(bug6053476)
7563 	l_party_site_rec.duns_number_c := l_vendor_site_rec.duns_number;
7564         --Bug5896973
7565         --Added code to populate City + State + Country in party_site_name field of hz_party_sites table
7566         --l_party_site_rec.party_site_name :=
7567         --        nvl(l_vendor_site_rec.city,'')||' '
7568         --        ||nvl(l_vendor_site_rec.state,'')||' '
7569         --        ||nvl(l_vendor_site_rec.country,'');
7570         --Bug 7316431
7571         l_party_site_rec.party_site_name := nvl(l_vendor_site_rec.vendor_site_code,'');
7572 
7573 	--Open Issue 4, check for needed parameters
7574         --Bug6648405
7575         --Bug 6753822 - Added NVL on vendor_type_lookup_code
7576        IF (NVL(l_vendor_type_lookup_code,'DUMMY') <> 'EMPLOYEE') then
7577           -- udhenuko Bug 6823885 start
7578           --We need to populate the party site number based on profile value.
7579           fnd_profile.get('HZ_GENERATE_PARTY_SITE_NUMBER', l_party_site_num);
7580         	IF nvl(l_party_site_num, 'Y') = 'N' THEN
7581         		SELECT HZ_PARTY_SITE_NUMBER_S.Nextval
7582         		INTO l_party_site_rec.party_site_number
7583         		FROM DUAL;
7584         	END IF;
7585         	-- udhenuko Bug 6823885 End
7586 	hz_party_site_v2pub.create_party_site(
7587 		p_init_msg_list => FND_API.G_FALSE,
7588 		p_party_site_rec => l_party_site_rec,
7589 		--p_commit => FND_API.G_FALSE,
7590 		x_return_status => l_site_return_status,
7591 		x_msg_count => l_site_msg_count,
7592 		x_msg_data => l_site_msg_data,
7593 		x_party_site_id => l_party_site_id,
7594 		x_party_site_number => l_party_site_number);
7595 		  IF l_site_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7596         ------------------------------------------------------------------------
7597         l_debug_info := 'After call to hz_party_site_v2pub.create_party_site';
7598         l_debug_info := l_debug_info||' Return status : '||l_site_return_status||' Error : '||l_site_msg_data;
7599         ------------------------------------------------------------------------
7600         IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7601           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
7602         END IF;
7603       END IF;
7604        END IF;
7605 	l_vendor_site_rec.party_site_id := l_party_site_id;
7606     -- udhenuko Bug 6823885 Added the else condition to populate the party site id.
7607 	  -- If part site is valid then the id can be found in the vendor site rec.
7608     ELSE
7609       -- Assign the Party Site Id and Location Id from the record to the varialbes.
7610       l_party_site_id := l_vendor_site_rec.party_site_id;
7611       l_loc_id := l_vendor_site_rec.location_id;
7612       -- udhenuko Bug 6823885 End
7613     END IF; -- party_site_id was null
7614 
7615      -- Bug#7371143 zrehman changes started
7616            BEGIN
7617            SELECT PROCESS_FOR_APPLICABILITY_FLAG, ALLOW_OFFSET_TAX_FLAG
7618              	   , TAX_CLASSIFICATION_CODE -- Bug#7506443
7619 	     INTO l_auto_tax_calc_flag,l_offset_tax_flag,
7620 	     l_tax_classification_code  -- Bug#7506443
7621              FROM ZX_PARTY_TAX_PROFILE
7622             WHERE PARTY_ID = l_party_id
7623               AND PARTY_TYPE_CODE = 'THIRD_PARTY'
7624               AND ROWNUM = 1;
7625             EXCEPTION
7626                WHEN OTHERS THEN
7627                   l_debug_info := 'No data returned from ZX_PARTY_TAX_PROFILE for party_id = '||l_party_id;
7628                    IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7629                      FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
7630                    END IF;
7631              END;
7632     -- Bug#7642742 start
7633 
7634    -- Bug#7506443 start
7635       l_vendor_site_rec.OFFSET_TAX_FLAG :=  nvl(l_vendor_site_rec.OFFSET_TAX_FLAG, l_offset_tax_flag);
7636       l_vendor_site_rec.AUTO_TAX_CALC_FLAG :=  nvl(l_vendor_site_rec.AUTO_TAX_CALC_FLAG, l_auto_tax_calc_flag);
7637       l_vendor_site_rec.VAT_CODE :=  nvl(l_vendor_site_rec.VAT_CODE, l_tax_classification_code);
7638    -- Bug#7506443 start
7639         l_offset_tax_flag         :=  l_vendor_site_rec.OFFSET_TAX_FLAG;
7640         l_auto_tax_calc_flag      :=  l_vendor_site_rec.AUTO_TAX_CALC_FLAG;
7641         l_tax_classification_code :=  l_vendor_site_rec.VAT_CODE;
7642    -- Bug#7642742 end
7643 
7644 
7645 
7646     -- Start Bug 7207314. Update Tax Registration Number in ZX_PARTY_TAX_PROFILE
7647     -- VAT Registration Number is not stored at site level or HZ Party Site.
7648     -- This info is maintained by ZX Party Profile as 3rd party site tax profile.
7649 
7650         IF (l_vendor_site_rec.vat_registration_num is not null
7651 	    or l_auto_tax_calc_flag is not null or l_offset_tax_flag is not null -- Bug#7371143 zrehman
7652 	    or l_tax_classification_code is not null) then -- Bug#7642742
7653 
7654           IF ( (l_location_valid = 'V' OR (l_location_valid = 'N' and l_loc_return_status = FND_API.G_RET_STS_SUCCESS))
7655            AND (l_party_site_valid = 'V' OR (l_party_site_valid = 'N' and l_site_return_status =
7656                 FND_API.G_RET_STS_SUCCESS)) ) THEN
7657 
7658             BEGIN
7659            SELECT PARTY_TAX_PROFILE_ID INTO L_PARTY_TAX_PROFILE_ID
7660             FROM ZX_PARTY_TAX_PROFILE
7661             WHERE PARTY_ID = l_party_site_id
7662             AND PARTY_TYPE_CODE = 'THIRD_PARTY_SITE'
7663             AND ROWNUM = 1;
7664           EXCEPTION
7665             WHEN OTHERS THEN
7666               L_PARTY_TAX_PROFILE_ID := NULL;
7667           END;
7668 
7669           IF L_PARTY_TAX_PROFILE_ID IS NOT NULL THEN
7670           ZX_PARTY_TAX_PROFILE_PKG.update_row (
7671           P_PARTY_TAX_PROFILE_ID => L_PARTY_TAX_PROFILE_ID,
7672            P_COLLECTING_AUTHORITY_FLAG => null,
7673            P_PROVIDER_TYPE_CODE => null,
7674            P_CREATE_AWT_DISTS_TYPE_CODE => null,
7675            P_CREATE_AWT_INVOICES_TYPE_COD => null,
7676            P_TAX_CLASSIFICATION_CODE => l_tax_classification_code, -- Bug#7506443 zrehman
7677            P_SELF_ASSESS_FLAG => null,
7678            P_ALLOW_OFFSET_TAX_FLAG => l_offset_tax_flag,-- Bug#7371143 zrehman
7679            P_REP_REGISTRATION_NUMBER => l_vendor_site_rec.vat_registration_num,
7680            P_EFFECTIVE_FROM_USE_LE => null,
7681            P_RECORD_TYPE_CODE => null,
7682            P_REQUEST_ID => null,
7683            P_ATTRIBUTE1 => null,
7684            P_ATTRIBUTE2 => null,
7685            P_ATTRIBUTE3 => null,
7686            P_ATTRIBUTE4 => null,
7687            P_ATTRIBUTE5 => null,
7688            P_ATTRIBUTE6 => null,
7689            P_ATTRIBUTE7 => null,
7690            P_ATTRIBUTE8 => null,
7691            P_ATTRIBUTE9 => null,
7692            P_ATTRIBUTE10 => null,
7693            P_ATTRIBUTE11 => null,
7694            P_ATTRIBUTE12 => null,
7695            P_ATTRIBUTE13 => null,
7696            P_ATTRIBUTE14 => null,
7697            P_ATTRIBUTE15 => null,
7698            P_ATTRIBUTE_CATEGORY => null,
7699            P_PARTY_ID => null,
7700            P_PROGRAM_LOGIN_ID => null,
7701            P_PARTY_TYPE_CODE => null,
7702            P_SUPPLIER_FLAG => null,
7703            P_CUSTOMER_FLAG => null,
7704            P_SITE_FLAG => null,
7705            P_PROCESS_FOR_APPLICABILITY_FL => l_auto_tax_calc_flag,-- Bug#7371143 zrehman
7706            P_ROUNDING_LEVEL_CODE => null,
7707            P_ROUNDING_RULE_CODE => null,
7708            P_WITHHOLDING_START_DATE => null,
7709            P_INCLUSIVE_TAX_FLAG => null,
7710            P_ALLOW_AWT_FLAG => null,
7711            P_USE_LE_AS_SUBSCRIBER_FLAG => null,
7712            P_LEGAL_ESTABLISHMENT_FLAG => null,
7713            P_FIRST_PARTY_LE_FLAG => null,
7714            P_REPORTING_AUTHORITY_FLAG => null,
7715            X_RETURN_STATUS => l_return_status,
7716            P_REGISTRATION_TYPE_CODE => null,
7717            P_COUNTRY_CODE => null
7718            );
7719             IF l_return_status <> fnd_api.g_ret_sts_success THEN
7720                 l_debug_info := 'ZX_PARTY_TAX_PROFILE_PKG.update_row';
7721                 l_debug_info := l_debug_info||' Return status : '||l_return_status;
7722                 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7723                         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
7724                 END IF;
7725             END IF;
7726            END IF;
7727           END IF;
7728         END IF;
7729     -- End Bug 7207314
7730 
7731     -- Bug 5244172
7732     -- Allow the vendor site creation even if we do not have
7733     -- location or party site IDs and the vendor type is
7734     -- Employee.
7735 
7736     IF (l_val_return_status = FND_API.G_RET_STS_SUCCESS) AND
7737 		((l_loc_return_status = FND_API.G_RET_STS_SUCCESS) OR
7738                 (l_loc_return_status <> FND_API.G_RET_STS_SUCCESS AND
7739                  l_vendor_site_rec.location_id IS NULL AND
7740                  l_vendor_type_lookup_code = 'EMPLOYEE')) AND
7741 		((l_site_return_status = FND_API.G_RET_STS_SUCCESS) OR
7742                 (l_site_return_status <> FND_API.G_RET_STS_SUCCESS AND
7743                  l_vendor_site_rec.party_site_id IS NULL AND
7744                  l_vendor_type_lookup_code = 'EMPLOYEE')) AND
7745 		(l_payee_valid = 'N' OR
7746                 l_pay_return_status = FND_API.G_RET_STS_SUCCESS) THEN
7747 
7748 	ap_vendor_sites_pkg.insert_row(
7749 		p_vendor_site_rec => l_vendor_site_rec,
7750 		p_last_update_date => sysdate,
7751 		p_last_updated_by => nvl(l_user_id,-1),
7752 		p_last_update_login => nvl(l_last_update_login, -1),
7753 		p_creation_date => sysdate,
7754 		p_created_by => nvl(l_user_id, -1) ,
7755 		p_request_id => l_request_id ,
7756 		p_program_application_id => l_program_application_id,
7757 		p_program_id => l_program_id,
7758 		p_program_update_date => sysdate,
7759 		x_rowid => l_rowid,
7760         	x_vendor_site_id => l_vendor_site_id);
7761         ------------------------------------------------------------------------
7762         l_debug_info := 'After call to ap_vendor_sites_pkg.insert_row';
7763         ------------------------------------------------------------------------
7764         IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7765           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
7766         END IF;
7767         --Bug6648405
7768         --Bug 6753822 - Added NVL on vendor_type_lookup_code
7769        IF (NVL(l_vendor_type_lookup_code,'DUMMY') <> 'EMPLOYEE') then
7770 
7771         AP_TCA_SUPPLIER_SYNC_PKG.SYNC_Supplier_Sites(
7772                 l_sync_return_status,
7773                 l_sync_msg_count,
7774                 l_sync_msg_data,
7775                 l_vendor_site_rec.location_id,
7776                 l_vendor_site_rec.party_site_id);
7777         IF l_sync_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7778           ------------------------------------------------------------------------
7779           l_debug_info := 'After call to AP_TCA_SUPPLIER_SYNC_PKG.SYNC_Supplier_Sites';
7780           l_debug_info := l_debug_info||' Return status : '||l_sync_return_status||' Error : '||l_sync_msg_data;
7781           ------------------------------------------------------------------------
7782           IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7783             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
7784           END IF;
7785         END IF;
7786        END IF;
7787 
7788 	IF l_sync_return_status = FND_API.G_RET_STS_SUCCESS THEN
7789  	   Raise_Supplier_Event( i_vendor_site_id => l_vendor_site_id ); -- Bug 7307669
7790            x_return_status := FND_API.G_RET_STS_SUCCESS;
7791         END IF;
7792 	x_party_site_id := l_party_site_id;
7793 	x_location_id	:= l_loc_id;
7794 	x_vendor_site_id := l_vendor_site_id;
7795 
7796     ELSIF (l_val_return_status = FND_API.G_RET_STS_UNEXP_ERROR) OR
7797 		((l_loc_return_status = FND_API.G_RET_STS_UNEXP_ERROR) AND
7798                 (l_vendor_type_lookup_code <> 'EMPLOYEE') AND
7799                 (l_vendor_site_rec.location_id IS NULL)) OR
7800 		((l_site_return_status = FND_API.G_RET_STS_UNEXP_ERROR) AND
7801                 (l_vendor_type_lookup_code <> 'EMPLOYEE') AND
7802                 (l_vendor_site_rec.party_site_id IS NULL)) OR
7803 		(l_pay_return_status = FND_API.G_RET_STS_UNEXP_ERROR) OR
7804                 (l_sync_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7805 
7806 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7807 
7808     ELSE
7809 
7810 	x_return_status := FND_API.G_RET_STS_ERROR;
7811     END IF;
7812 
7813     IF l_payee_valid = 'N' THEN --payee record is valid
7814 
7815     -- As per the discussion with Omar/Jayanta, we will only
7816     -- have payables payment function and no more employee expenses
7817     -- payment function.
7818 
7819 	 -- changes for Bug#7506443 start
7820            Open get_iby_dtls_csr(l_party_id);
7821           Fetch get_iby_dtls_csr INTO l_pymt_method_code
7822                                      ,l_inactive_date
7823                                      ,l_primary_flag
7824                                      ,l_Exclusive_Pay_Flag;
7825           Close get_iby_dtls_csr;
7826 
7827           -- changes for Bug#7506443 end
7828 
7829 
7830        IF l_vendor_site_rec.ext_payee_rec.payment_function IS NULL THEN
7831 
7832           l_ext_payee_rec.payee_party_id := l_party_id;
7833           l_ext_payee_rec.payee_party_site_id := l_vendor_site_rec.party_site_id;
7834           l_ext_payee_rec.supplier_site_id := l_vendor_site_id;
7835           l_ext_payee_rec.payment_function  := 'PAYABLES_DISB';
7836           l_ext_payee_rec.payer_org_id := l_vendor_site_rec.org_id;
7837           l_ext_payee_rec.payer_org_type       := 'OPERATING_UNIT';
7838           l_ext_payee_rec.exclusive_pay_flag   := 'N';
7839 
7840 		  -- 6458813 starts
7841           -- 7506443 changes start
7842           l_ext_payee_rec.default_pmt_method        := nvl (l_vendor_site_rec.ext_payee_rec.default_pmt_method,
7843 	                                                          l_pymt_method_code);
7844           l_ext_payee_rec.inactive_date             := l_inactive_date;
7845    --     l_ext_payee_rec.Exclusive_Pay_Flag        := l_Exclusive_Pay_Flag;    -- Bug8200842
7846           -- 7506443 changes start
7847 
7848           l_ext_payee_rec.ece_tp_loc_code           := l_vendor_site_rec.ext_payee_rec.ece_tp_loc_code;
7849           l_ext_payee_rec.bank_charge_bearer        := l_vendor_site_rec.ext_payee_rec.bank_charge_bearer;
7850           l_ext_payee_rec.bank_instr1_code          := l_vendor_site_rec.ext_payee_rec.bank_instr1_code;
7851           l_ext_payee_rec.bank_instr2_code          := l_vendor_site_rec.ext_payee_rec.bank_instr2_code;
7852           l_ext_payee_rec.bank_instr_detail         := l_vendor_site_rec.ext_payee_rec.bank_instr_detail;
7853           l_ext_payee_rec.pay_reason_code           := l_vendor_site_rec.ext_payee_rec.pay_reason_code;
7854           l_ext_payee_rec.pay_reason_com            := l_vendor_site_rec.ext_payee_rec.pay_reason_com;
7855           l_ext_payee_rec.pay_message1              := l_vendor_site_rec.ext_payee_rec.pay_message1;
7856           l_ext_payee_rec.pay_message2              := l_vendor_site_rec.ext_payee_rec.pay_message2;
7857           l_ext_payee_rec.pay_message3              := l_vendor_site_rec.ext_payee_rec.pay_message3;
7858           l_ext_payee_rec.delivery_channel          := l_vendor_site_rec.ext_payee_rec.delivery_channel;
7859           l_ext_payee_rec.pmt_format                := l_vendor_site_rec.ext_payee_rec.pmt_format;
7860           l_ext_payee_rec.settlement_priority       := l_vendor_site_rec.ext_payee_rec.settlement_priority;
7861 		  -- 6458813 ends
7862 
7863 		  ext_payee_tab(1)   := l_ext_payee_rec;
7864 
7865         ELSE
7866         -- 7506443 changes start
7867            l_vendor_site_rec.ext_payee_rec.default_pmt_method  :=nvl (l_vendor_site_rec.ext_payee_rec.default_pmt_method,l_pymt_method_code);
7868            l_vendor_site_rec.ext_payee_rec.inactive_date       := l_inactive_date;
7869            l_ext_payee_rec.Exclusive_Pay_Flag                  := l_Exclusive_Pay_Flag;
7870         -- 7506443 changes start
7871           ext_payee_tab(1)   := l_vendor_site_rec.ext_payee_rec;
7872 
7873         END IF;
7874 
7875         /* Calling IBY Payee Creation API */
7876         IBY_DISBURSEMENT_SETUP_PUB.Create_External_Payee
7877               ( p_api_version         => 1.0,
7878                 p_init_msg_list       => FND_API.G_FALSE,
7879                 p_ext_payee_tab       => ext_payee_tab,
7880                 x_return_status       => l_pay_return_status,
7881                 x_msg_count           => l_pay_msg_count,
7882                 x_msg_data            => l_pay_msg_data,
7883                 x_ext_payee_id_tab    => ext_payee_id_tab,
7884                 x_ext_payee_status_tab => ext_payee_create_tab);
7885       IF l_pay_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7886         ------------------------------------------------------------------------
7887         l_debug_info := 'After call to IBY_DISBURSEMENT_SETUP_PUB.Create_External_Payee';
7888         l_debug_info := l_debug_info||' Return status : '||l_pay_return_status||' Error : '||l_pay_msg_data;
7889         ------------------------------------------------------------------------
7890         IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7891           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
7892         END IF;
7893       END IF;
7894      END IF;
7895 
7896     /* Bug 5310356 */
7897     IF l_org_context <> MO_Global.Get_Access_Mode THEN
7898       MO_GLOBAL.Set_Policy_Context(l_org_context, l_def_org_id);
7899     END IF;
7900 
7901     -- End of API body.
7902 
7903     -- Standard check of p_commit.
7904     IF FND_API.To_Boolean( p_commit ) THEN
7905 	COMMIT WORK;
7906     END IF;
7907 
7908     -- Standard call to get message count and if count is 1,
7909     -- get message info.
7910     FND_MSG_PUB.Count_And_Get(
7911 	p_count         	=>      x_msg_count     	,
7912         p_data          	=>      x_msg_data
7913     	);
7914 
7915 EXCEPTION
7916     WHEN FND_API.G_EXC_ERROR THEN
7917 		ROLLBACK TO Create_Vendor_Site_PUB;
7918 		x_return_status := FND_API.G_RET_STS_ERROR ;
7919 		FND_MSG_PUB.Count_And_Get
7920     		(  	p_count         	=>      x_msg_count,
7921         		p_data          	=>      x_msg_data
7922     		);
7923 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7924 		ROLLBACK TO Create_Vendor_Site_PUB;
7925 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7926 		FND_MSG_PUB.Count_And_Get
7927     		(  	p_count         	=>      x_msg_count,
7928         		p_data          	=>      x_msg_data
7929     		);
7930 	-- BUG 6739544 START
7931 	WHEN ORG_ID_EXCEPTION THEN
7932 		x_return_status := FND_API.G_RET_STS_ERROR ;
7933 		FND_MSG_PUB.Count_And_Get
7934 			(  	p_count         	=>      x_msg_count,
7935 				p_data          	=>      x_msg_data
7936 			);
7937     -- BUG 6739544 END.
7938 	WHEN OTHERS THEN
7939 		ROLLBACK TO Create_Vendor_Site_PUB;
7940 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7941   		IF 	FND_MSG_PUB.Check_Msg_Level
7942 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
7943         		FND_MSG_PUB.Add_Exc_Msg
7944     	    		(	G_PKG_NAME  	    ,
7945     	    			l_api_name
7946 	    		);
7947 		END IF;
7948 		FND_MSG_PUB.Count_And_Get
7949     		(  	p_count         	=>      x_msg_count,
7950         		p_data          	=>      x_msg_data
7951     		);
7952 END Create_Vendor_Site;
7953 
7954 PROCEDURE Update_Vendor_Site
7955 ( 	p_api_version           IN	NUMBER,
7956   	p_init_msg_list		IN	VARCHAR2 := FND_API.G_FALSE	,
7957 	p_commit	    	IN  	VARCHAR2 := FND_API.G_FALSE,
7958 	p_validation_level	IN  	NUMBER	:=
7959 						FND_API.G_VALID_LEVEL_FULL,
7960 	x_return_status		OUT	NOCOPY VARCHAR2		  	,
7961 	x_msg_count		OUT	NOCOPY NUMBER,
7962 	x_msg_data		OUT	NOCOPY VARCHAR2,
7963 	p_vendor_site_rec	IN	r_vendor_site_rec_type,
7964 	p_vendor_site_id	IN	NUMBER,
7965 	p_calling_prog		IN	VARCHAR2 DEFAULT 'NOT ISETUP'
7966 )
7967 IS
7968     l_api_name			CONSTANT VARCHAR2(30)	:= 'Update_Vendor_Site';
7969     l_api_version           	CONSTANT NUMBER 		:= 1.0;
7970 
7971     l_def_org_id		NUMBER;
7972 
7973     l_user_id                		number := FND_GLOBAL.USER_ID;
7974     l_last_update_login      		number := FND_GLOBAL.LOGIN_ID;
7975     l_program_application_id 		number := FND_GLOBAL.prog_appl_id;
7976     l_program_id             		number := FND_GLOBAL.conc_program_id;
7977     l_request_id             		number := FND_GLOBAL.conc_request_id;
7978     l_vendor_site_rec				r_vendor_site_rec_type;
7979     l_org_context			VARCHAR2(1);
7980     l_val_return_status                 VARCHAR2(50);
7981     l_val_msg_count                     NUMBER;
7982     l_val_msg_data                      VARCHAR2(1000);
7983     l_org_id				NUMBER;
7984     l_party_site_valid			VARCHAR2(1);
7985     l_location_valid			VARCHAR2(1);
7986     l_payee_valid                       VARCHAR2(1);
7987 
7988     l_sync_return_status                 VARCHAR2(50);
7989     l_sync_msg_count                     NUMBER;
7990     l_sync_msg_data                      VARCHAR2(1000);
7991 
7992 
7993 
7994 BEGIN
7995     -- Standard Start of API savepoint
7996     SAVEPOINT	Update_Vendor_Site_PUB;
7997 
7998     -- Standard call to check for call compatibility.
7999     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
8000         	    	    	    	 	p_api_version        	,
8001    	       	    	 			l_api_name 	    	,
8002 		    	    	    	    	G_PKG_NAME )
8003     THEN
8004 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8005     END IF;
8006 
8007     -- Initialize message list if p_init_msg_list is set to TRUE.
8008     IF FND_API.to_Boolean( p_init_msg_list ) THEN
8009 	FND_MSG_PUB.initialize;
8010     END IF;
8011 
8012     --  Initialize API return status to success
8013     x_return_status := FND_API.G_RET_STS_SUCCESS;
8014     l_val_return_status :=  FND_API.G_RET_STS_SUCCESS;
8015 
8016     -- API body
8017 
8018     -- Bug 5055120
8019     -- This call is incorrect. The correct call is to have the calling
8020     -- modules set the context and call this API with the right ORG_ID.
8021 
8022     -- Bug 6812010 :Due to 5055120, Payables' own supplier site import program fails
8023     -- because MO initialization is not happening.To fix 6812010 and keep 5055120 intact,
8024     -- strategy is that if calling application id is not AP then we will not call MO_GLOBAL.INIT
8025     -- since it is calling module's responsibility to perform MO initialization.
8026 
8027     -- Bug 6930102
8028     If (l_program_application_id = 200 OR l_program_application_id = -1)then
8029     MO_GLOBAL.INIT ('SQLAP');
8030     end if;
8031 
8032     --get org_id from existing record
8033     SELECT org_id
8034     INTO l_org_id
8035     FROM po_vendor_sites_all pvs
8036     WHERE pvs.vendor_site_id = p_vendor_site_id;
8037 
8038     l_org_context := mo_global.get_access_mode;
8039 
8040     IF nvl(l_org_context, 'K') <> 'S' THEN
8041 	MO_GLOBAL.set_policy_context('S',l_org_id);
8042     END IF;
8043 
8044     l_vendor_site_rec := p_vendor_site_rec;
8045 
8046     --added ap_null_num condition by abhsaxen on 06-May-2008 for bug 7008314
8047     IF (l_vendor_site_rec.org_id IS NULL OR l_vendor_site_rec.org_id = ap_null_num) THEN
8048        l_vendor_site_rec.org_id := l_org_id;
8049     END IF;
8050 
8051     validate_vendor_site(p_api_version => 1.0,
8052 		p_init_msg_list => FND_API.G_FALSE,
8053 		p_commit  => FND_API.G_FALSE,
8054 		x_return_status => l_val_return_status,
8055 		x_msg_count => l_val_msg_count,
8056 		x_msg_data => l_val_msg_data,
8057 		p_vendor_site_rec => l_vendor_site_rec,
8058 		P_mode => 'U',
8059 		P_calling_prog => p_calling_prog,
8060 		x_party_site_valid => l_party_site_valid,
8061 		x_location_valid => l_location_valid,
8062 		x_payee_valid 	=> l_payee_valid,
8063 		p_vendor_site_id => p_vendor_site_id);
8064 
8065     IF (l_val_return_status = FND_API.G_RET_STS_SUCCESS) THEN
8066 	--populate existing values
8067 	SELECT
8068 		decode(l_vendor_site_rec.AREA_CODE,
8069                    ap_null_char,NULL,
8070                    nvl(l_vendor_site_rec.AREA_CODE, AREA_CODE))
8071 		,decode(l_vendor_site_rec.PHONE,
8072                     ap_null_char,NULL,
8073                     nvl(l_vendor_site_rec.PHONE, PHONE))
8074 		,decode(l_vendor_site_rec.CUSTOMER_NUM,
8075                     ap_null_char,NULL,
8076                     nvl(l_vendor_site_rec.CUSTOMER_NUM, CUSTOMER_NUM))
8077 		,decode(l_vendor_site_rec.SHIP_TO_LOCATION_ID,
8078                     ap_null_num,NULL,
8079                     nvl(l_vendor_site_rec.SHIP_TO_LOCATION_ID, SHIP_TO_LOCATION_ID))
8080 		,decode(l_vendor_site_rec.BILL_TO_LOCATION_ID,
8081                     ap_null_num,NULL,
8082                     nvl(l_vendor_site_rec.BILL_TO_LOCATION_ID, BILL_TO_LOCATION_ID))
8083 		,decode(l_vendor_site_rec.SHIP_VIA_LOOKUP_CODE,
8084                     ap_null_char,NULL,
8085                     nvl(l_vendor_site_rec.SHIP_VIA_LOOKUP_CODE, SHIP_VIA_LOOKUP_CODE))
8086 		,decode(l_vendor_site_rec.FREIGHT_TERMS_LOOKUP_CODE,
8087                     ap_null_char,NULL,
8088                     nvl(l_vendor_site_rec.FREIGHT_TERMS_LOOKUP_CODE,
8089                         FREIGHT_TERMS_LOOKUP_CODE))
8090 		,decode(l_vendor_site_rec.FOB_LOOKUP_CODE,
8091                     ap_null_char,NULL,
8092                     nvl(l_vendor_site_rec.FOB_LOOKUP_CODE,
8093                         FOB_LOOKUP_CODE))
8094 		,decode(l_vendor_site_rec.INACTIVE_DATE,
8095                     ap_null_date,NULL,
8096                     nvl(l_vendor_site_rec.INACTIVE_DATE,
8097                         INACTIVE_DATE))
8098 		,decode(l_vendor_site_rec.FAX,
8099                     ap_null_char,NULL,
8100                     nvl(l_vendor_site_rec.FAX, FAX))
8101 		,decode(l_vendor_site_rec.FAX_AREA_CODE,
8102                     ap_null_char,NULL,
8103                     nvl(l_vendor_site_rec.FAX_AREA_CODE,
8104                         FAX_AREA_CODE))
8105 		,decode(l_vendor_site_rec.TELEX,
8106                     ap_null_char,NULL,
8107                     nvl(l_vendor_site_rec.TELEX, TELEX))
8108 		,decode(l_vendor_site_rec.TERMS_DATE_BASIS,
8109                     ap_null_char,NULL,
8110                     nvl(l_vendor_site_rec.TERMS_DATE_BASIS,
8111                         TERMS_DATE_BASIS))
8112 		,decode(l_vendor_site_rec.DISTRIBUTION_SET_ID,
8113                     ap_null_num,NULL,
8114                     nvl(l_vendor_site_rec.DISTRIBUTION_SET_ID, DISTRIBUTION_SET_ID))
8115 		,decode(l_vendor_site_rec.ACCTS_PAY_CODE_COMBINATION_ID,
8116                     ap_null_num,NULL,
8117                     nvl(l_vendor_site_rec.ACCTS_PAY_CODE_COMBINATION_ID,
8118                         ACCTS_PAY_CODE_COMBINATION_ID))
8119 		,decode(l_vendor_site_rec.PREPAY_CODE_COMBINATION_ID,
8120                     ap_null_num,NULL,
8121                     nvl(l_vendor_site_rec.PREPAY_CODE_COMBINATION_ID,
8122                         PREPAY_CODE_COMBINATION_ID))
8123 		,decode(l_vendor_site_rec.PAY_GROUP_LOOKUP_CODE,
8124                     ap_null_char,NULL,
8125                     nvl(l_vendor_site_rec.PAY_GROUP_LOOKUP_CODE, PAY_GROUP_LOOKUP_CODE))
8126 		,decode(l_vendor_site_rec.PAYMENT_PRIORITY,
8127                     ap_null_num,NULL,
8128                     nvl(l_vendor_site_rec.PAYMENT_PRIORITY, PAYMENT_PRIORITY))
8129 		,decode(l_vendor_site_rec.TERMS_ID,
8130                     ap_null_num,NULL,
8131                     nvl(l_vendor_site_rec.TERMS_ID, TERMS_ID))
8132 		,decode(l_vendor_site_rec.INVOICE_AMOUNT_LIMIT,
8133                     ap_null_num,NULL,
8134                     nvl(l_vendor_site_rec.INVOICE_AMOUNT_LIMIT, INVOICE_AMOUNT_LIMIT))
8135 		,decode(l_vendor_site_rec.PAY_DATE_BASIS_LOOKUP_CODE,
8136                     ap_null_char,NULL,
8137                     nvl(l_vendor_site_rec.PAY_DATE_BASIS_LOOKUP_CODE, PAY_DATE_BASIS_LOOKUP_CODE))
8138 		,decode(l_vendor_site_rec.ALWAYS_TAKE_DISC_FLAG,
8139                     ap_null_char,NULL,
8140                     nvl(l_vendor_site_rec.ALWAYS_TAKE_DISC_FLAG, ALWAYS_TAKE_DISC_FLAG))
8141 		,decode(l_vendor_site_rec.INVOICE_CURRENCY_CODE,
8142                     ap_null_char,NULL,
8143                     nvl(l_vendor_site_rec.INVOICE_CURRENCY_CODE, INVOICE_CURRENCY_CODE))
8144 		,decode(l_vendor_site_rec.PAYMENT_CURRENCY_CODE,
8145                     ap_null_char,NULL,
8146                     nvl(l_vendor_site_rec.PAYMENT_CURRENCY_CODE, PAYMENT_CURRENCY_CODE))
8147 		,decode(l_vendor_site_rec.VENDOR_SITE_ID,
8148                     ap_null_num,NULL,
8149                     nvl(l_vendor_site_rec.VENDOR_SITE_ID, VENDOR_SITE_ID))
8150 		,decode(l_vendor_site_rec.VENDOR_ID,
8151                     ap_null_num,NULL,
8152                     nvl(l_vendor_site_rec.VENDOR_ID, VENDOR_ID))
8153 		,decode(l_vendor_site_rec.VENDOR_SITE_CODE,
8154                     ap_null_char,NULL,
8155                     nvl(l_vendor_site_rec.VENDOR_SITE_CODE, VENDOR_SITE_CODE))
8156 		,decode(l_vendor_site_rec.VENDOR_SITE_CODE_ALT,
8157                     ap_null_char,NULL,
8158                     nvl(l_vendor_site_rec.VENDOR_SITE_CODE_ALT, VENDOR_SITE_CODE_ALT))
8159 		,decode(l_vendor_site_rec.PURCHASING_SITE_FLAG,
8160                     ap_null_char,NULL,
8161                     nvl(l_vendor_site_rec.PURCHASING_SITE_FLAG, PURCHASING_SITE_FLAG))
8162 		,decode(l_vendor_site_rec.RFQ_ONLY_SITE_FLAG,
8163                     ap_null_char,NULL,
8164                     nvl(l_vendor_site_rec.RFQ_ONLY_SITE_FLAG, RFQ_ONLY_SITE_FLAG))
8165 		,decode(l_vendor_site_rec.PAY_SITE_FLAG,
8166                     ap_null_char,NULL,
8167                     nvl(l_vendor_site_rec.PAY_SITE_FLAG, PAY_SITE_FLAG))
8168 		,decode(l_vendor_site_rec.ATTENTION_AR_FLAG,
8169                     ap_null_char,NULL,
8170                     nvl(l_vendor_site_rec.ATTENTION_AR_FLAG, ATTENTION_AR_FLAG))
8171 		,decode(l_vendor_site_rec.HOLD_ALL_PAYMENTS_FLAG,
8172                     ap_null_char,NULL,
8173                     nvl(l_vendor_site_rec.HOLD_ALL_PAYMENTS_FLAG, HOLD_ALL_PAYMENTS_FLAG))
8174 		,decode(l_vendor_site_rec.HOLD_FUTURE_PAYMENTS_FLAG,
8175                     ap_null_char,NULL,
8176                     nvl(l_vendor_site_rec.HOLD_FUTURE_PAYMENTS_FLAG, HOLD_FUTURE_PAYMENTS_FLAG))
8177 		,decode(l_vendor_site_rec.HOLD_REASON,
8178                     ap_null_char,NULL,
8179                     nvl(l_vendor_site_rec.HOLD_REASON, HOLD_REASON))
8180 		,decode(l_vendor_site_rec.HOLD_UNMATCHED_INVOICES_FLAG,
8181                     ap_null_char,NULL,
8182                     nvl(l_vendor_site_rec.HOLD_UNMATCHED_INVOICES_FLAG, HOLD_UNMATCHED_INVOICES_FLAG))
8183 		,decode(l_vendor_site_rec.TAX_REPORTING_SITE_FLAG,
8184                     ap_null_char,NULL,
8185                     nvl(l_vendor_site_rec.TAX_REPORTING_SITE_FLAG, TAX_REPORTING_SITE_FLAG))
8186 		,decode(l_vendor_site_rec.ATTRIBUTE_CATEGORY,
8187                     ap_null_char,NULL,
8188                     nvl(l_vendor_site_rec.ATTRIBUTE_CATEGORY, ATTRIBUTE_CATEGORY))
8189 		,decode(l_vendor_site_rec.ATTRIBUTE1,
8190                     ap_null_char,NULL,
8191                     nvl(l_vendor_site_rec.ATTRIBUTE1, ATTRIBUTE1))
8192 		,decode(l_vendor_site_rec.ATTRIBUTE2,
8193                     ap_null_char,NULL,
8194                     nvl(l_vendor_site_rec.ATTRIBUTE2, ATTRIBUTE2))
8195 		,decode(l_vendor_site_rec.ATTRIBUTE3,
8196                     ap_null_char,NULL,
8197                     nvl(l_vendor_site_rec.ATTRIBUTE3, ATTRIBUTE3))
8198 		,decode(l_vendor_site_rec.ATTRIBUTE4,
8199                     ap_null_char,NULL,
8200                     nvl(l_vendor_site_rec.ATTRIBUTE4, ATTRIBUTE4))
8201 		,decode(l_vendor_site_rec.ATTRIBUTE5,
8202                     ap_null_char,NULL,
8203                     nvl(l_vendor_site_rec.ATTRIBUTE5, ATTRIBUTE5))
8204 		,decode(l_vendor_site_rec.ATTRIBUTE6,
8205                     ap_null_char,NULL,
8206                     nvl(l_vendor_site_rec.ATTRIBUTE6, ATTRIBUTE6))
8207 		,decode(l_vendor_site_rec.ATTRIBUTE7,
8208                     ap_null_char,NULL,
8209                     nvl(l_vendor_site_rec.ATTRIBUTE7, ATTRIBUTE7))
8210 		,decode(l_vendor_site_rec.ATTRIBUTE8,
8211                     ap_null_char,NULL,
8212                     nvl(l_vendor_site_rec.ATTRIBUTE8, ATTRIBUTE8))
8213 		,decode(l_vendor_site_rec.ATTRIBUTE9,
8214                     ap_null_char,NULL,
8215                     nvl(l_vendor_site_rec.ATTRIBUTE9, ATTRIBUTE9))
8216 		,decode(l_vendor_site_rec.ATTRIBUTE10,
8217                     ap_null_char,NULL,
8218                     nvl(l_vendor_site_rec.ATTRIBUTE10, ATTRIBUTE10))
8219 		,decode(l_vendor_site_rec.ATTRIBUTE11,
8220                     ap_null_char,NULL,
8221                     nvl(l_vendor_site_rec.ATTRIBUTE11, ATTRIBUTE11))
8222 		,decode(l_vendor_site_rec.ATTRIBUTE12,
8223                     ap_null_char,NULL,
8224                     nvl(l_vendor_site_rec.ATTRIBUTE12, ATTRIBUTE12))
8225 		,decode(l_vendor_site_rec.ATTRIBUTE13,
8226                     ap_null_char,NULL,
8227                     nvl(l_vendor_site_rec.ATTRIBUTE13, ATTRIBUTE13))
8228 		,decode(l_vendor_site_rec.ATTRIBUTE14,
8229                     ap_null_char,NULL,
8230                     nvl(l_vendor_site_rec.ATTRIBUTE14, ATTRIBUTE14))
8231 		,decode(l_vendor_site_rec.ATTRIBUTE15,
8232                     ap_null_char,NULL,
8233                     nvl(l_vendor_site_rec.ATTRIBUTE15, ATTRIBUTE15))
8234 		,decode(l_vendor_site_rec.VALIDATION_NUMBER,
8235                     ap_null_char,NULL,
8236                     nvl(l_vendor_site_rec.VALIDATION_NUMBER, VALIDATION_NUMBER))
8237 		,decode(l_vendor_site_rec.EXCLUDE_FREIGHT_FROM_DISCOUNT,
8238                     ap_null_char,NULL,
8239                     nvl(l_vendor_site_rec.EXCLUDE_FREIGHT_FROM_DISCOUNT,
8240                         EXCLUDE_FREIGHT_FROM_DISCOUNT))
8241 		,decode(l_vendor_site_rec.BANK_CHARGE_BEARER,
8242                     ap_null_char,NULL,
8243                     nvl(l_vendor_site_rec.BANK_CHARGE_BEARER, BANK_CHARGE_BEARER))
8244 		,decode(l_vendor_site_rec.ORG_ID,
8245                     ap_null_num,NULL,
8246                     nvl(l_vendor_site_rec.ORG_ID, ORG_ID))
8247 		,decode(l_vendor_site_rec.CHECK_DIGITS,
8248                     ap_null_char,NULL,
8249                     nvl(l_vendor_site_rec.CHECK_DIGITS, CHECK_DIGITS))
8250 		,decode(l_vendor_site_rec.ALLOW_AWT_FLAG,
8251                     ap_null_char,NULL,
8252                     nvl(l_vendor_site_rec.ALLOW_AWT_FLAG, ALLOW_AWT_FLAG))
8253 		,decode(l_vendor_site_rec.AWT_GROUP_ID,
8254                     ap_null_num,NULL,
8255                     nvl(l_vendor_site_rec.AWT_GROUP_ID, AWT_GROUP_ID))
8256 		,decode(l_vendor_site_rec.DEFAULT_PAY_SITE_ID,
8257                     ap_null_num,NULL,
8258                    nvl(l_vendor_site_rec.DEFAULT_PAY_SITE_ID, DEFAULT_PAY_SITE_ID))
8259 		,decode(l_vendor_site_rec.PAY_ON_CODE,
8260                     ap_null_char,NULL,
8261                     nvl(l_vendor_site_rec.PAY_ON_CODE, PAY_ON_CODE))
8262 		,decode(l_vendor_site_rec.PAY_ON_RECEIPT_SUMMARY_CODE,
8263                     ap_null_char,NULL,
8264                     nvl(l_vendor_site_rec.PAY_ON_RECEIPT_SUMMARY_CODE, PAY_ON_RECEIPT_SUMMARY_CODE))
8265 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE_CATEGORY,
8266                     ap_null_char,NULL,
8267                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE_CATEGORY, GLOBAL_ATTRIBUTE_CATEGORY))
8268 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE1,
8269                     ap_null_char,NULL,
8270                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE1, GLOBAL_ATTRIBUTE1))
8271 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE2,
8272                     ap_null_char,NULL,
8273                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE2, GLOBAL_ATTRIBUTE2))
8274 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE3,
8275                     ap_null_char,NULL,
8276                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE3, GLOBAL_ATTRIBUTE3))
8277 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE4,
8278                     ap_null_char,NULL,
8279                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE4, GLOBAL_ATTRIBUTE4))
8280 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE5,
8281                     ap_null_char,NULL,
8282                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE5, GLOBAL_ATTRIBUTE5))
8283 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE6,
8284                     ap_null_char,NULL,
8285                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE6, GLOBAL_ATTRIBUTE6))
8286 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE7,
8287                     ap_null_char,NULL,
8288                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE7, GLOBAL_ATTRIBUTE7))
8289 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE8,
8290                     ap_null_char,NULL,
8291                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE8, GLOBAL_ATTRIBUTE8))
8292 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE9,
8293                     ap_null_char,NULL,
8294                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE9, GLOBAL_ATTRIBUTE9))
8295 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE10,
8296                     ap_null_char,NULL,
8297                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE10, GLOBAL_ATTRIBUTE10))
8298 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE11,
8299                     ap_null_char,NULL,
8300                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE11, GLOBAL_ATTRIBUTE11))
8301 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE12,
8302                     ap_null_char,NULL,
8303                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE12, GLOBAL_ATTRIBUTE12))
8304 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE13,
8305                     ap_null_char,NULL,
8306                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE13, GLOBAL_ATTRIBUTE13))
8307 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE14,
8308                     ap_null_char,NULL,
8309                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE14, GLOBAL_ATTRIBUTE14))
8310 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE15,
8311                     ap_null_char,NULL,
8312                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE15, GLOBAL_ATTRIBUTE15))
8313 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE16,
8314                     ap_null_char,NULL,
8315                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE16, GLOBAL_ATTRIBUTE16))
8316 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE17,
8317                     ap_null_char,NULL,
8318                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE17, GLOBAL_ATTRIBUTE17))
8319 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE18,
8320                     ap_null_char,NULL,
8321                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE18, GLOBAL_ATTRIBUTE18))
8322 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE19,
8323                     ap_null_char,NULL,
8324                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE19, GLOBAL_ATTRIBUTE19))
8325 		,decode(l_vendor_site_rec.GLOBAL_ATTRIBUTE20,
8326                     ap_null_char,NULL,
8327                     nvl(l_vendor_site_rec.GLOBAL_ATTRIBUTE20, GLOBAL_ATTRIBUTE20))
8328 		,decode(l_vendor_site_rec.TP_HEADER_ID,
8329                     ap_null_num,NULL,
8330                     nvl(l_vendor_site_rec.TP_HEADER_ID, TP_HEADER_ID))
8331 		,decode(l_vendor_site_rec.ECE_TP_LOCATION_CODE,
8332                     ap_null_char,NULL,
8333                     nvl(l_vendor_site_rec.ECE_TP_LOCATION_CODE, ECE_TP_LOCATION_CODE))
8334 		,decode(l_vendor_site_rec.PCARD_SITE_FLAG,
8335                     ap_null_char,NULL,
8336                     nvl(l_vendor_site_rec.PCARD_SITE_FLAG, PCARD_SITE_FLAG))
8337 		,decode(l_vendor_site_rec.MATCH_OPTION,
8338                     ap_null_char,NULL,
8339                     nvl(l_vendor_site_rec.MATCH_OPTION, MATCH_OPTION))
8340 		,decode(l_vendor_site_rec.COUNTRY_OF_ORIGIN_CODE,
8341                     ap_null_char,NULL,
8342                    nvl(l_vendor_site_rec.COUNTRY_OF_ORIGIN_CODE, COUNTRY_OF_ORIGIN_CODE))
8343 		,decode(l_vendor_site_rec.FUTURE_DATED_PAYMENT_CCID,
8344                     ap_null_num,NULL,
8345                     nvl(l_vendor_site_rec.FUTURE_DATED_PAYMENT_CCID, FUTURE_DATED_PAYMENT_CCID))
8346 		,decode(l_vendor_site_rec.CREATE_DEBIT_MEMO_FLAG,
8347                     ap_null_char,NULL,
8348                     nvl(l_vendor_site_rec.CREATE_DEBIT_MEMO_FLAG, CREATE_DEBIT_MEMO_FLAG))
8349 		,decode(l_vendor_site_rec.SUPPLIER_NOTIF_METHOD,
8350                     ap_null_char,NULL,
8351                     nvl(l_vendor_site_rec.SUPPLIER_NOTIF_METHOD, SUPPLIER_NOTIF_METHOD))
8352 		,decode(l_vendor_site_rec.EMAIL_ADDRESS,
8353                     ap_null_char,NULL,
8354                     nvl(l_vendor_site_rec.EMAIL_ADDRESS, EMAIL_ADDRESS))
8355 		,decode(l_vendor_site_rec.PRIMARY_PAY_SITE_FLAG,
8356                     ap_null_char,NULL,
8357                     nvl(l_vendor_site_rec.PRIMARY_PAY_SITE_FLAG, PRIMARY_PAY_SITE_FLAG))
8358 		,decode(l_vendor_site_rec.SHIPPING_CONTROL,
8359                     ap_null_char,NULL,
8360                     nvl(l_vendor_site_rec.SHIPPING_CONTROL, SHIPPING_CONTROL))
8361 		,decode(l_vendor_site_rec.SELLING_COMPANY_IDENTIFIER,
8362                     ap_null_char,NULL,
8363                     nvl(l_vendor_site_rec.SELLING_COMPANY_IDENTIFIER, SELLING_COMPANY_IDENTIFIER))
8364 		,decode(l_vendor_site_rec.GAPLESS_INV_NUM_FLAG,
8365                     ap_null_char,NULL,
8366                     nvl(l_vendor_site_rec.GAPLESS_INV_NUM_FLAG, GAPLESS_INV_NUM_FLAG))
8367 		,decode(l_vendor_site_rec.LOCATION_ID,
8368                     ap_null_num,NULL,
8369                     nvl(l_vendor_site_rec.LOCATION_ID, LOCATION_ID))
8370 		,decode(l_vendor_site_rec.PARTY_SITE_ID,
8371                     ap_null_num,NULL,
8372                     nvl(l_vendor_site_rec.PARTY_SITE_ID, PARTY_SITE_ID))
8373 		,decode(l_vendor_site_rec.TOLERANCE_ID,
8374                     ap_null_num,NULL,
8375                     nvl(l_vendor_site_rec.TOLERANCE_ID, TOLERANCE_ID))
8376         ,decode(l_vendor_site_rec.services_tolerance_id,
8377                     ap_null_num,NULL,
8378                     nvl(l_vendor_site_rec.services_tolerance_id,services_tolerance_id))
8379         ,decode(l_vendor_site_rec.retainage_rate,
8380                     ap_null_num,NULL,
8381                     nvl(l_vendor_site_rec.retainage_rate,retainage_rate))
8382         --bug6388041
8383         ,decode(l_vendor_site_rec.duns_number,
8384                     ap_null_char, NULL,
8385                     nvl(l_vendor_site_rec.duns_number,duns_number))
8386 		 -- bug 7437549
8387 	    ,decode(l_vendor_site_rec.EDI_ID_NUMBER,
8388 			        ap_null_char,NULL,
8389 			        nvl(l_vendor_site_rec.EDI_ID_NUMBER, EDI_ID_NUMBER))
8390 		--bug7561758
8391 		,decode(l_vendor_site_rec.PAY_AWT_GROUP_ID,
8392                     ap_null_num,NULL,
8393                     nvl(l_vendor_site_rec.PAY_AWT_GROUP_ID, PAY_AWT_GROUP_ID))
8394 -- bug 7673494 start
8395         ,decode(l_vendor_site_rec.address_line1,
8396                     ap_null_char, NULL,
8397                     nvl(l_vendor_site_rec.address_line1, address_line1))
8398         ,decode(l_vendor_site_rec.address_lines_alt,
8399                     ap_null_char, NULL,
8400                     nvl(l_vendor_site_rec.address_lines_alt, address_lines_alt))
8401         ,decode(l_vendor_site_rec.address_line2,
8402                     ap_null_char, NULL,
8403                     nvl(l_vendor_site_rec.address_line2, address_line2))
8404         ,decode(l_vendor_site_rec.address_line3,
8405                     ap_null_char, NULL,
8406                     nvl(l_vendor_site_rec.address_line3, address_line3))
8407         ,decode(l_vendor_site_rec.city,
8408                     ap_null_char, NULL,
8409                     nvl(l_vendor_site_rec.city, city))
8410         ,decode(l_vendor_site_rec.state,
8411                     ap_null_char, NULL,
8412                     nvl(l_vendor_site_rec.state, state))
8413         ,decode(l_vendor_site_rec.zip,
8414                     ap_null_char, NULL,
8415                     nvl(l_vendor_site_rec.zip, zip))
8416         ,decode(l_vendor_site_rec.province,
8417                     ap_null_char, NULL,
8418                     nvl(l_vendor_site_rec.province, province))
8419         ,decode(l_vendor_site_rec.country,
8420                     ap_null_char, NULL,
8421                     nvl(l_vendor_site_rec.country, country))
8422         ,decode(l_vendor_site_rec.address_line4,
8423                     ap_null_char, NULL,
8424                     nvl(l_vendor_site_rec.address_line4, address_line4))
8425         ,decode(l_vendor_site_rec.county,
8426                     ap_null_char, NULL,
8427                     nvl(l_vendor_site_rec.county, county))
8428         ,decode(l_vendor_site_rec.address_style,
8429                     ap_null_char, NULL,
8430                     nvl(l_vendor_site_rec.address_style, address_style))
8431         ,decode(l_vendor_site_rec.language,
8432                     ap_null_char, NULL,
8433                     nvl(l_vendor_site_rec.language, language))
8434         -- bug 7673494 end
8435 	INTO
8436 		l_vendor_site_rec.AREA_CODE
8437 		,l_vendor_site_rec.PHONE
8438 		,l_vendor_site_rec.CUSTOMER_NUM
8439 		,l_vendor_site_rec.SHIP_TO_LOCATION_ID
8440 		,l_vendor_site_rec.BILL_TO_LOCATION_ID
8441 		,l_vendor_site_rec.SHIP_VIA_LOOKUP_CODE
8442 		,l_vendor_site_rec.FREIGHT_TERMS_LOOKUP_CODE
8443 		,l_vendor_site_rec.FOB_LOOKUP_CODE
8444 		,l_vendor_site_rec.INACTIVE_DATE
8445 		,l_vendor_site_rec.FAX
8446 		,l_vendor_site_rec.FAX_AREA_CODE
8447 		,l_vendor_site_rec.TELEX
8448 		,l_vendor_site_rec.TERMS_DATE_BASIS
8449 		,l_vendor_site_rec.DISTRIBUTION_SET_ID
8450 		,l_vendor_site_rec.ACCTS_PAY_CODE_COMBINATION_ID
8451 		,l_vendor_site_rec.PREPAY_CODE_COMBINATION_ID
8452 		,l_vendor_site_rec.PAY_GROUP_LOOKUP_CODE
8453 		,l_vendor_site_rec.PAYMENT_PRIORITY
8454 		,l_vendor_site_rec.TERMS_ID
8455 		,l_vendor_site_rec.INVOICE_AMOUNT_LIMIT
8456 		,l_vendor_site_rec.PAY_DATE_BASIS_LOOKUP_CODE
8457 		,l_vendor_site_rec.ALWAYS_TAKE_DISC_FLAG
8458 		,l_vendor_site_rec.INVOICE_CURRENCY_CODE
8459 		,l_vendor_site_rec.PAYMENT_CURRENCY_CODE
8460 		,l_vendor_site_rec.VENDOR_SITE_ID
8461 		,l_vendor_site_rec.VENDOR_ID
8462 		,l_vendor_site_rec.VENDOR_SITE_CODE
8463 		,l_vendor_site_rec.VENDOR_SITE_CODE_ALT
8464 		,l_vendor_site_rec.PURCHASING_SITE_FLAG
8465 		,l_vendor_site_rec.RFQ_ONLY_SITE_FLAG
8466 		,l_vendor_site_rec.PAY_SITE_FLAG
8467 		,l_vendor_site_rec.ATTENTION_AR_FLAG
8468 		,l_vendor_site_rec.HOLD_ALL_PAYMENTS_FLAG
8469 		,l_vendor_site_rec.HOLD_FUTURE_PAYMENTS_FLAG
8470 		,l_vendor_site_rec.HOLD_REASON
8471 		,l_vendor_site_rec.HOLD_UNMATCHED_INVOICES_FLAG
8472 		,l_vendor_site_rec.TAX_REPORTING_SITE_FLAG
8473 		,l_vendor_site_rec.ATTRIBUTE_CATEGORY
8474 		,l_vendor_site_rec.ATTRIBUTE1
8475 		,l_vendor_site_rec.ATTRIBUTE2
8476 		,l_vendor_site_rec.ATTRIBUTE3
8477 		,l_vendor_site_rec.ATTRIBUTE4
8478 		,l_vendor_site_rec.ATTRIBUTE5
8479 		,l_vendor_site_rec.ATTRIBUTE6
8480 		,l_vendor_site_rec.ATTRIBUTE7
8481 		,l_vendor_site_rec.ATTRIBUTE8
8482 		,l_vendor_site_rec.ATTRIBUTE9
8483 		,l_vendor_site_rec.ATTRIBUTE10
8484 		,l_vendor_site_rec.ATTRIBUTE11
8485 		,l_vendor_site_rec.ATTRIBUTE12
8486 		,l_vendor_site_rec.ATTRIBUTE13
8487 		,l_vendor_site_rec.ATTRIBUTE14
8488 		,l_vendor_site_rec.ATTRIBUTE15
8489 		,l_vendor_site_rec.VALIDATION_NUMBER
8490 		,l_vendor_site_rec.EXCLUDE_FREIGHT_FROM_DISCOUNT
8491 		,l_vendor_site_rec.BANK_CHARGE_BEARER
8492 		,l_vendor_site_rec.ORG_ID
8493 		,l_vendor_site_rec.CHECK_DIGITS
8494 		,l_vendor_site_rec.ALLOW_AWT_FLAG
8495 		,l_vendor_site_rec.AWT_GROUP_ID
8496 		,l_vendor_site_rec.DEFAULT_PAY_SITE_ID
8497 		,l_vendor_site_rec.PAY_ON_CODE
8498 		,l_vendor_site_rec.PAY_ON_RECEIPT_SUMMARY_CODE
8499 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE_CATEGORY
8500 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE1
8501 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE2
8502 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE3
8503 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE4
8504 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE5
8505 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE6
8506 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE7
8507 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE8
8508 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE9
8509 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE10
8510 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE11
8511 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE12
8512 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE13
8513 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE14
8514 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE15
8515 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE16
8516 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE17
8517 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE18
8518 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE19
8519 		,l_vendor_site_rec.GLOBAL_ATTRIBUTE20
8520 		,l_vendor_site_rec.TP_HEADER_ID
8521 		,l_vendor_site_rec.ECE_TP_LOCATION_CODE
8522 		,l_vendor_site_rec.PCARD_SITE_FLAG
8523 		,l_vendor_site_rec.MATCH_OPTION
8524 		,l_vendor_site_rec.COUNTRY_OF_ORIGIN_CODE
8525 		,l_vendor_site_rec.FUTURE_DATED_PAYMENT_CCID
8526 		,l_vendor_site_rec.CREATE_DEBIT_MEMO_FLAG
8527 		,l_vendor_site_rec.SUPPLIER_NOTIF_METHOD
8528 		,l_vendor_site_rec.EMAIL_ADDRESS
8529 		,l_vendor_site_rec.PRIMARY_PAY_SITE_FLAG
8530 		,l_vendor_site_rec.SHIPPING_CONTROL
8531 		,l_vendor_site_rec.SELLING_COMPANY_IDENTIFIER
8532 		,l_vendor_site_rec.GAPLESS_INV_NUM_FLAG
8533 		,l_vendor_site_rec.LOCATION_ID
8534 		,l_vendor_site_rec.PARTY_SITE_ID
8535 		,l_vendor_site_rec.TOLERANCE_ID
8536         ,l_vendor_site_rec.services_tolerance_id
8537         ,l_vendor_site_rec.retainage_rate
8538         ,l_vendor_site_rec.duns_number     --bug6388041
8539 		,l_vendor_site_rec.EDI_ID_NUMBER   --bug7437549
8540 		,l_vendor_site_rec.PAY_AWT_GROUP_ID    --bug7561758
8541 -- bug 7673494 start
8542                 ,l_vendor_site_rec.address_line1
8543                 ,l_vendor_site_rec.address_lines_alt
8544                 ,l_vendor_site_rec.address_line2
8545                 ,l_vendor_site_rec.address_line3
8546                 ,l_vendor_site_rec.city
8547                 ,l_vendor_site_rec.state
8548                 ,l_vendor_site_rec.zip
8549                 ,l_vendor_site_rec.province
8550                 ,l_vendor_site_rec.country
8551                 ,l_vendor_site_rec.address_line4
8552                 ,l_vendor_site_rec.county
8553                 ,l_vendor_site_rec.address_style
8554                 ,l_vendor_site_rec.language
8555                 -- bug 7673494 end
8556 	FROM po_vendor_sites_all pvs
8557 	WHERE pvs.vendor_site_id = p_vendor_site_id;
8558 	ap_vendor_sites_pkg.update_row(
8559 		p_vendor_site_rec => l_vendor_site_rec,
8560 		p_last_update_date => sysdate,
8561 		p_last_updated_by => l_user_id,
8562 		p_last_update_login => l_last_update_login,
8563 		p_request_id => l_request_id ,
8564 		p_program_application_id => l_program_application_id,
8565 		p_program_id => l_program_id,
8566 		p_program_update_date => sysdate,
8567 		p_vendor_site_id => p_vendor_site_id);
8568 
8569         AP_TCA_SUPPLIER_SYNC_PKG.SYNC_Supplier_Sites(
8570                 l_sync_return_status,
8571                 l_sync_msg_count,
8572                 l_sync_msg_data,
8573                 l_vendor_site_rec.location_id,
8574                 l_vendor_site_rec.party_site_id);
8575 
8576         IF l_sync_return_status = FND_API.G_RET_STS_SUCCESS THEN
8577 	   Raise_Supplier_Event( i_vendor_site_id => p_vendor_site_id ); -- Bug 7307669
8578            x_return_status := FND_API.G_RET_STS_SUCCESS;
8579         END IF;
8580 
8581     ELSIF (l_val_return_status = FND_API.G_RET_STS_UNEXP_ERROR) OR
8582           (l_sync_return_status = FND_API.G_RET_STS_UNEXP_ERROR)THEN
8583 
8584 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8585 
8586     ELSE
8587 
8588 	x_return_status := FND_API.G_RET_STS_ERROR;
8589     END IF;
8590 
8591     --set access mode back to original value
8592     IF l_org_context <> mo_global.get_access_mode THEN
8593     	MO_GLOBAL.set_policy_context(l_org_context,l_def_org_id);
8594     END IF;
8595 
8596     -- End of API body.
8597 
8598     -- Standard check of p_commit.
8599     IF FND_API.To_Boolean( p_commit ) THEN
8600 	COMMIT WORK;
8601     END IF;
8602 
8603     -- Standard call to get message count and if count is 1,
8604     -- get message info.
8605     FND_MSG_PUB.Count_And_Get(
8606 	p_count         	=>      x_msg_count     	,
8607         p_data          	=>      x_msg_data
8608     	);
8609 
8610 EXCEPTION
8611     WHEN FND_API.G_EXC_ERROR THEN
8612 		ROLLBACK TO Update_Vendor_Site_PUB;
8613 		x_return_status := FND_API.G_RET_STS_ERROR ;
8614 		FND_MSG_PUB.Count_And_Get
8615     		(  	p_count         	=>      x_msg_count,
8616         		p_data          	=>      x_msg_data
8617     		);
8618 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8619 		ROLLBACK TO Update_Vendor_Site_PUB;
8620 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8621 		FND_MSG_PUB.Count_And_Get
8622     		(  	p_count         	=>      x_msg_count,
8623         		p_data          	=>      x_msg_data
8624     		);
8625 	WHEN OTHERS THEN
8626 		ROLLBACK TO Update_Vendor_Site_PUB;
8627 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8628   		IF 	FND_MSG_PUB.Check_Msg_Level
8629 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
8630         		FND_MSG_PUB.Add_Exc_Msg
8631     	    		(	G_PKG_NAME  	    ,
8632     	    			l_api_name
8633 	    		);
8634 		END IF;
8635 		FND_MSG_PUB.Count_And_Get
8636     		(  	p_count         	=>      x_msg_count,
8637         		p_data          	=>      x_msg_data
8638     		);
8639 END Update_Vendor_Site;
8640 
8641 PROCEDURE Validate_Vendor_Site
8642 ( 	p_api_version           IN	NUMBER,
8643   	p_init_msg_list		IN	VARCHAR2 := FND_API.G_FALSE	,
8644 	p_commit	    	IN  	VARCHAR2 := FND_API.G_FALSE,
8645 	p_validation_level	IN  	NUMBER	:=
8646 						FND_API.G_VALID_LEVEL_FULL,
8647 	x_return_status		OUT	NOCOPY VARCHAR2		  	,
8648 	x_msg_count		OUT	NOCOPY NUMBER,
8649 	x_msg_data		OUT	NOCOPY VARCHAR2,
8650 	p_vendor_site_rec	IN OUT	NOCOPY r_vendor_site_rec_type,
8651 	p_mode			IN	VARCHAR2,
8652 	p_calling_prog		IN	VARCHAR2,
8653 	x_party_site_valid	OUT	NOCOPY VARCHAR2,
8654 	x_location_valid	OUT	NOCOPY VARCHAR2,
8655         x_payee_valid           OUT     NOCOPY VARCHAR2,
8656 	p_vendor_site_id	IN	NUMBER
8657 )
8658 IS
8659     l_api_name			CONSTANT VARCHAR2(30)	:= 'Validate_Vendor_Site';
8660     l_api_version           	CONSTANT NUMBER 		:= 1.0;
8661 
8662     l_def_org_id		NUMBER;
8663     l_debug_info		VARCHAR2(2000);
8664     x_valid			BOOLEAN;
8665     l_sob			NUMBER;
8666     l_location_id		NUMBER;
8667     l_payee_return_status       VARCHAR2(50);
8668     l_payee_msg_count           NUMBER;
8669     l_payee_msg_data            VARCHAR2(1000);
8670     l_tolerance_type            VARCHAR2(50);
8671     l_status                    NUMBER;
8672     -- Bug 6645014 l_status added to import vat_code
8673     -- Bug 6918411/6808171 CTETALA
8674 	-- l_dummy added for usage in validating country code
8675 	l_dummy                     VARCHAR2(2);
8676     x_loc_count                 NUMBER := 0; -- Bug 7429668
8677 
8678 BEGIN
8679 
8680     l_tolerance_type := 'QUANTITY';
8681 
8682     -- Standard Start of API savepoint
8683     SAVEPOINT	Validate_Vendor_Site_PUB;
8684 
8685     -- Standard call to check for call compatibility.
8686     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
8687         	    	    	    	 	p_api_version        	,
8688    	       	    	 			l_api_name 	    	,
8689 		    	    	    	    	G_PKG_NAME )
8690     THEN
8691 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8692     END IF;
8693 
8694     -- Initialize message list if p_init_msg_list is set to TRUE.
8695     IF FND_API.to_Boolean( p_init_msg_list ) THEN
8696 	FND_MSG_PUB.initialize;
8697     END IF;
8698 
8699     --  Initialize API return status to success
8700     x_return_status := FND_API.G_RET_STS_SUCCESS;
8701 
8702     -- API body
8703 
8704     --get sob
8705     --Bug 4597347
8706     --Bug 5305536
8707     IF p_vendor_site_rec.org_id IS NOT NULL THEN
8708       SELECT Set_Of_Books_Id
8709       INTO l_sob
8710       FROM ap_system_parameters
8711       WHERE org_id = p_vendor_site_rec.org_id;
8712     END IF;
8713 
8714     -- Call eTax Validation
8715 
8716     ------------------------------------------------------------------------
8717     l_debug_info := 'Call to Validate hold_unmatched_invoices_flag';
8718     ------------------------------------------------------------------------
8719     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8720          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
8721                 l_api_name,l_debug_info);
8722     END IF;
8723     --
8724     -- Validate hold_unmatched_invoices_flag
8725     --
8726     IF p_vendor_site_rec.hold_unmatched_invoices_flag is NOT NULL
8727        AND p_vendor_site_rec.hold_unmatched_invoices_flag <> ap_null_char THEN
8728 
8729       Validate_Lookups('HOLD_UNMATCHED_INVOICES_FLAG',
8730                           p_vendor_site_rec.hold_unmatched_invoices_flag ,'YES/NO',
8731                          'PO_LOOKUP_CODES',x_valid);
8732       IF NOT x_valid THEN
8733         x_return_status := FND_API.G_RET_STS_ERROR;
8734         IF g_source = 'IMPORT' THEN
8735           IF (Insert_Rejections(
8736                 'AP_SUPPLIER_SITES_INT',
8737                 p_vendor_site_rec.vendor_site_interface_id,
8738                 'AP_INVALID_HOLD_UNMAT_INV',
8739                 g_user_id,
8740                 g_login_id,
8741                 'Validate_Vendor_Site') <> TRUE) THEN
8742             --
8743             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8744               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
8745                 l_api_name,'Parameters: '
8746                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
8747                 ||' ,Hold_Unmatched_Invoices_Flag: '
8748                 ||p_vendor_site_rec.hold_unmatched_invoices_flag);
8749             END IF;
8750           END IF;
8751         ELSE
8752             -- Bug 5491139 hkaniven start --
8753             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_HOLD_UNMAT_INV');
8754             FND_MSG_PUB.ADD;
8755             -- Bug 5491139 hkaniven end --
8756         END IF;
8757       END IF;
8758     END IF;
8759 
8760     ------------------------------------------------------------------------
8761     l_debug_info := 'Call to Validate tax_reporting_site_flag';
8762     ------------------------------------------------------------------------
8763     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8764          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
8765                 l_api_name,l_debug_info);
8766     END IF;
8767     --
8768     -- Validate tax_reporting_site_flag
8769     --
8770     IF p_vendor_site_rec.tax_reporting_site_flag is NOT NULL
8771        AND p_vendor_site_rec.tax_reporting_site_flag <> ap_null_char THEN
8772 
8773       Validate_Lookups( 'TAX_REPORTING_SITE_FLAG',
8774                          p_vendor_site_rec.tax_reporting_site_flag ,'YES/NO',
8775                         'PO_LOOKUP_CODES',x_valid);
8776       IF NOT x_valid THEN
8777         x_return_status := FND_API.G_RET_STS_ERROR;
8778         IF g_source = 'IMPORT' THEN
8779           IF (Insert_Rejections(
8780                 'AP_SUPPLIER_SITES_INT',
8781                 p_vendor_site_rec.vendor_site_interface_id,
8782                 'AP_INVALID_TAX_RS_FLAG',
8783                 g_user_id,
8784                 g_login_id,
8785                 'Validate_Vendor_Site') <> TRUE) THEN
8786             --
8787             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8788               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
8789                 l_api_name,'Parameters: '
8790                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
8791                 ||' ,Tax_Reporting_Site_Flag: '
8792                 ||p_vendor_site_rec.tax_reporting_site_flag);
8793             END IF;
8794           END IF;
8795         ELSE
8796             -- Bug 5491139 hkaniven start --
8797             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_TAX_RS_FLAG');
8798             FND_MSG_PUB.ADD;
8799             -- Bug 5491139 hkaniven end --
8800         END IF;
8801       END IF;
8802     END IF;
8803 
8804     -- Bug 6645014 starts: To import Vat code
8805     ------------------------------------------------------------------------
8806     l_debug_info := 'Call to Validate vat_code';
8807     ------------------------------------------------------------------------
8808     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8809          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
8810                 l_api_name,l_debug_info);
8811     END IF;
8812     --
8813     -- Validate vat_code
8814     --
8815     IF p_vendor_site_rec.vat_code is NOT NULL THEN
8816     -- Checking the vat code in the tax tables
8817           l_status := 0;
8818           SELECT COUNT(*)  INTO l_status FROM DUAL WHERE EXISTS (
8819             SELECT 'Y'
8820             FROM zx_input_classifications_v
8821             WHERE lookup_type in ('ZX_INPUT_CLASSIFICATIONS', 'ZX_WEB_EXP_TAX_CLASSIFICATIONS')
8822             AND org_id in ( p_vendor_site_rec.org_id, -99)
8823             AND enabled_flag = 'Y'
8824             AND LOOKUP_CODE = p_vendor_site_rec.VAT_CODE );
8825 
8826 
8827       IF l_status = 0  THEN
8828         x_return_status := FND_API.G_RET_STS_ERROR;
8829         IF g_source = 'IMPORT' THEN
8830           IF (Insert_Rejections(
8831                 'AP_SUPPLIER_SITES_INT',
8832                 p_vendor_site_rec.vendor_site_interface_id,
8833                 'AP_INVALID_VAT_CODE',
8834                 g_user_id,
8835                 g_login_id,
8836                 'Validate_Vendor_Site') <> TRUE) THEN
8837             --
8838             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8839               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
8840                 l_api_name,'Parameters: '
8841                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
8842                 ||' ,Vat_Code: '
8843                 ||p_vendor_site_rec.vat_code);
8844             END IF;
8845           END IF;
8846         ELSE
8847             FND_MESSAGE.SET_NAME('SQLAP', 'AP_INVALID_VAT_CODE');
8848             FND_MSG_PUB.ADD;
8849         END IF;
8850       END IF;
8851     END IF;
8852     -- Bug 6645014 ends
8853 
8854 
8855     ------------------------------------------------------------------------
8856     l_debug_info := 'Call to Validate default_pay_site_id';
8857     ------------------------------------------------------------------------
8858     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8859          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
8860                 l_api_name,l_debug_info);
8861     END IF;
8862     --
8863     -- We should check for Valid Sites for any default_pay_site_id
8864     --
8865     IF (p_vendor_site_rec.default_pay_site_id is NOT NULL) AND
8866         (p_vendor_site_rec.default_pay_site_id <> ap_null_num) THEN
8867 
8868       Check_Default_pay_site(p_vendor_site_rec.default_pay_site_id,
8869                              p_vendor_site_rec.vendor_id,
8870                              p_vendor_site_rec.org_id,
8871                              x_valid
8872                              );
8873       IF NOT x_valid THEN
8874         x_return_status := FND_API.G_RET_STS_ERROR;
8875         IF g_source = 'IMPORT' THEN
8876           IF (Insert_Rejections(
8877                 'AP_SUPPLIER_SITES_INT',
8878                 p_vendor_site_rec.vendor_site_interface_id,
8879                 'AP_INVALID_DEF_PAY_SITE',
8880                 g_user_id,
8881                 g_login_id,
8882                 'Validate_Vendor_Site') <> TRUE) THEN
8883             --
8884             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8885               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
8886                 l_api_name,'Parameters: '
8887                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
8888                 ||' ,Vendor_Id: '||p_vendor_site_rec.vendor_id
8889                 ||' ,Org_Id: '||p_vendor_site_rec.org_id
8890                 ||' ,Deafult_Pay_Site_Id: '
8891                 ||p_vendor_site_rec.default_pay_site_id);
8892             END IF;
8893           END IF;
8894         ELSE
8895             -- Bug 5491139 hkaniven start --
8896             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_DEF_PAY_SITE');
8897             FND_MSG_PUB.ADD;
8898             -- Bug 5491139 hkaniven end --
8899         END IF;
8900       END IF;
8901     END IF;
8902 
8903 
8904     -- Validate that no duplicate Vendor Site Code exist in applications
8905     --
8906     ------------------------------------------------------------------------
8907     l_debug_info := 'Call to Validate Vendor Site Code';
8908     ------------------------------------------------------------------------
8909     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8910          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
8911                     l_api_name,l_debug_info);
8912     END IF;
8913 
8914     IF p_vendor_site_rec.vendor_site_code is not null
8915 	AND p_mode = 'I' -- should skip this check for Update, xili, 12/18/2006
8916        AND p_vendor_site_rec.vendor_site_code <> ap_null_char THEN
8917 
8918       Check_dup_vendor_site ( p_vendor_site_rec.vendor_id,
8919                            p_vendor_site_rec.vendor_site_code,
8920                            p_vendor_site_rec.org_name,
8921                            p_vendor_site_rec.org_id,
8922 			   x_valid);
8923       IF NOT x_valid THEN
8924         x_return_status := FND_API.G_RET_STS_ERROR;
8925         IF g_source = 'IMPORT' THEN
8926           IF (Insert_Rejections(
8927                 'AP_SUPPLIER_SITES_INT',
8928                 p_vendor_site_rec.vendor_site_interface_id,
8929                 'AP_DUPLICATE_VENDOR_SITE',
8930                 g_user_id,
8931                 g_login_id,
8932                 'Validate_Vendor_Site') <> TRUE) THEN
8933             --
8934             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8935               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
8936                 l_api_name,'Parameters: '
8937                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
8938                 ||' ,Vendor_Id: '||p_vendor_site_rec.vendor_id
8939                 ||' ,Org_Id: '||p_vendor_site_rec.org_id
8940                 ||' ,Vendor_Site_Code: '
8941                 ||p_vendor_site_rec.vendor_site_code);
8942             END IF;
8943           END IF;
8944         ELSE
8945             -- Bug 5491139 hkaniven start --
8946             FND_MESSAGE.SET_NAME('SQLAP','AP_DUPLICATE_VENDOR_SITE');
8947             FND_MSG_PUB.ADD;
8948             -- Bug 5491139 hkaniven end --
8949         END IF;
8950       END IF;
8951     END IF;
8952 
8953     ------------------------------------------------------------------------
8954     l_debug_info := 'Call Org_Id and Operating_unit_name validation';
8955     ------------------------------------------------------------------------
8956      IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8957          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
8958                 l_api_name,l_debug_info);
8959     END IF;
8960 
8961    -- Org_Id and Operating_unit_name validation
8962     IF (p_vendor_site_rec.org_id is NOT NULL AND
8963         p_vendor_site_rec.org_id <> ap_null_num) OR
8964        (p_vendor_site_rec.org_name is NOT NULL AND
8965         p_vendor_site_rec.org_name <> ap_null_char) THEN
8966 
8967       	Check_org_id_name(p_vendor_site_rec.org_id,
8968                           p_vendor_site_rec.org_name,
8969                           'AP_SUPPLIER_SITES_INT',
8970                           p_vendor_site_rec.vendor_site_interface_id,
8971                           x_valid);
8972 
8973        	IF NOT x_valid THEN
8974        		x_return_status := FND_API.G_RET_STS_ERROR;
8975      	END IF;
8976 
8977     END IF;
8978 
8979 
8980     ------------------------------------------------------------------------
8981     l_debug_info := 'Call to Validate pay_on_receipt_summary_code';
8982     ------------------------------------------------------------------------
8983     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8984          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
8985                 l_api_name,l_debug_info);
8986     END IF;
8987     --
8988     -- Validate and default pay_on_receipt_summary_code
8989     --
8990     IF p_vendor_site_rec.pay_on_code is NOT NULL  AND
8991        p_vendor_site_rec.pay_on_code <> ap_null_char THEN
8992 
8993         Check_pay_on_rec_sum_code(p_vendor_site_rec.pay_on_code,
8994                                 p_vendor_site_rec.pay_on_receipt_summary_code,
8995                                 x_valid);
8996       IF NOT x_valid THEN
8997         x_return_status := FND_API.G_RET_STS_ERROR;
8998         IF g_source = 'IMPORT' THEN
8999           IF (Insert_Rejections(
9000                 'AP_SUPPLIER_SITES_INT',
9001                 p_vendor_site_rec.vendor_site_interface_id,
9002                 'AP_INVALID_PAY_ON_RCE',
9003                 g_user_id,
9004                 g_login_id,
9005                 'Validate_Vendor_Site') <> TRUE) THEN
9006             --
9007             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9008               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9009                 l_api_name,'Parameters: '
9010                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9011                 ||' ,Pay_On_Code: '||p_vendor_site_rec.pay_on_code
9012                 ||' ,Pay_On_Receipt_Summary_Code: '
9013                 ||p_vendor_site_rec.pay_on_receipt_summary_code);
9014             END IF;
9015           END IF;
9016         ELSE
9017             -- Bug 5491139 hkaniven start --
9018             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PAY_ON_RCE');
9019             FND_MSG_PUB.ADD;
9020             -- Bug 5491139 hkaniven end --
9021         END IF;
9022       END IF;
9023     END IF;
9024 
9025     ------------------------------------------------------------------------
9026     l_debug_info := 'Call to Validate shipping_control';
9027     ------------------------------------------------------------------------
9028     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9029          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9030                 l_api_name,l_debug_info);
9031     END IF;
9032     --
9033     -- Validate shipping_control
9034     --
9035     IF p_vendor_site_rec.shipping_control is NOT NULL
9036        AND p_vendor_site_rec.shipping_control  <> ap_null_char THEN
9037 
9038        	Check_Shipping_Control(p_vendor_site_rec.shipping_control,
9039                                 x_valid
9040                                 );
9041 
9042       IF NOT x_valid THEN
9043         x_return_status := FND_API.G_RET_STS_ERROR;
9044         IF g_source = 'IMPORT' THEN
9045           IF (Insert_Rejections(
9046                 'AP_SUPPLIER_SITES_INT',
9047                 p_vendor_site_rec.vendor_site_interface_id,
9048                 'AP_INVALID_SHIPPING_CONTROL',
9049                 g_user_id,
9050                 g_login_id,
9051                 'Validate_Vendor_Site') <> TRUE) THEN
9052             --
9053             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9054               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9055                 l_api_name,'Parameters: '
9056                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9057                 ||' ,Shipping_Control: '||p_vendor_site_rec.shipping_control);
9058             END IF;
9059           END IF;
9060         ELSE
9061             -- Bug 5491139 hkaniven start --
9062             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_SHIPPING_CONTROL');
9063             FND_MSG_PUB.ADD;
9064             -- Bug 5491139 hkaniven end --
9065         END IF;
9066       END IF;
9067     END IF;
9068 
9069     ------------------------------------------------------------------------
9070     l_debug_info := 'Call to Validate Terms_Id and Terms_Name';
9071     ------------------------------------------------------------------------
9072     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9073          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9074                 l_api_name,l_debug_info);
9075     END IF;
9076 
9077     -- Terms_Id and Terms_Name validation
9078 
9079     IF ((p_vendor_site_rec.terms_id is NOT NULL AND
9080          p_vendor_site_rec.terms_id <> ap_null_num) OR
9081         (p_vendor_site_rec.terms_name is NOT NULL AND
9082          p_vendor_site_rec.terms_name <> ap_null_char) OR
9083         (p_vendor_site_rec.default_terms_id is NOT NULL AND
9084          p_vendor_site_rec.default_terms_id <> ap_null_num) --6393761
9085         ) THEN
9086 
9087       Check_terms_id_code(p_vendor_site_rec.terms_id,
9088                                p_vendor_site_rec.terms_name,
9089                                p_vendor_site_rec.default_terms_id,
9090                                x_valid);
9091       IF NOT x_valid THEN
9092         x_return_status := FND_API.G_RET_STS_ERROR;
9093         IF g_source = 'IMPORT' THEN
9094           IF (Insert_Rejections(
9095                 'AP_SUPPLIER_SITES_INT',
9096                 p_vendor_site_rec.vendor_site_interface_id,
9097                 'AP_INCONSISTENT_TERM',
9098                 g_user_id,
9099                 g_login_id,
9100                 'Validate_Vendor_Site') <> TRUE) THEN
9101             --
9102             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9103               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9104                 l_api_name,'Parameters: '
9105                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9106                 ||' ,Terms_Id: '||p_vendor_site_rec.terms_id
9107                 ||' ,Terms_Name: '||p_vendor_site_rec.terms_name
9108                 ||' ,Default_Terms_Id: '||p_vendor_site_rec.default_terms_Id);
9109             END IF;
9110           END IF;
9111         ELSE
9112             -- Bug 5491139 hkaniven start --
9113             FND_MESSAGE.SET_NAME('SQLAP','AP_INCONSISTENT_TERM');
9114             FND_MSG_PUB.ADD;
9115             -- Bug 5491139 hkaniven end --
9116         END IF;
9117       END IF;
9118     END IF;
9119 
9120     ------------------------------------------------------------------------
9121     l_debug_info := 'Call to Validate pay_on_code';
9122     ------------------------------------------------------------------------
9123     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9124          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9125                 l_api_name,l_debug_info);
9126     END IF;
9127     --
9128     -- Validate pay_on_code
9129     --
9130     IF p_vendor_site_rec.pay_on_code is NOT NULL  AND
9131        p_vendor_site_rec.pay_on_code <> ap_null_char THEN
9132 
9133  	Check_Valid_pay_on_code(p_vendor_site_rec.pay_on_code,
9134                                 p_vendor_site_rec.purchasing_site_flag,
9135        				p_vendor_site_rec.pay_site_flag,
9136        				p_vendor_site_rec.default_pay_site_id,
9137                                 x_valid);
9138 
9139       IF NOT x_valid THEN
9140         x_return_status := FND_API.G_RET_STS_ERROR;
9141         IF g_source = 'IMPORT' THEN
9142           IF (Insert_Rejections(
9143                 'AP_SUPPLIER_SITES_INT',
9144                 p_vendor_site_rec.vendor_site_interface_id,
9145                 'AP_INVALID_PAY_ON_CODE',
9146                 g_user_id,
9147                 g_login_id,
9148                 'Validate_Vendor_Site') <> TRUE) THEN
9149             --
9150             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9151               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9152                 l_api_name,'Parameters: '
9153                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9154                 ||' ,Pay_On_Code: '||p_vendor_site_rec.pay_on_code
9155                 ||' ,Purchasing_Site_Flag: '||p_vendor_site_rec.purchasing_site_flag
9156                 ||' ,Pay_Site_Flag: '||p_vendor_site_rec.pay_site_flag);
9157             END IF;
9158           END IF;
9159         ELSE
9160             -- Bug 5491139 hkaniven start --
9161             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PAY_ON_CODE');
9162             FND_MSG_PUB.ADD;
9163             -- Bug 5491139 hkaniven end --
9164         END IF;
9165       END IF;
9166     END IF;
9167 
9168     ------------------------------------------------------------------------
9169     l_debug_info := 'Call to Validate pay_on_code and pay_on_receipt_summary_code';
9170     ------------------------------------------------------------------------
9171     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9172          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9173                 l_api_name,l_debug_info);
9174     END IF;
9175 
9176     IF (p_vendor_site_rec.pay_on_receipt_summary_code is not null AND
9177         p_vendor_site_rec.pay_on_receipt_summary_code <> ap_null_char
9178        AND p_vendor_site_rec.pay_on_code is not null AND
9179            p_vendor_site_rec.pay_on_code <> ap_null_char) THEN
9180       pay_on_receipt_summary_valid(p_vendor_site_rec.pay_on_receipt_summary_code,
9181                                    p_vendor_site_rec.pay_on_code,
9182                                    x_valid);
9183       IF NOT x_valid THEN
9184         x_return_status := FND_API.G_RET_STS_ERROR;
9185         IF g_source = 'IMPORT' THEN
9186           IF (Insert_Rejections(
9187                 'AP_SUPPLIER_SITES_INT',
9188                 p_vendor_site_rec.vendor_site_interface_id,
9189                 'AP_INVALID_PAY_ON_RCE',
9190                 g_user_id,
9191                 g_login_id,
9192                 'Validate_Vendor_Site') <> TRUE) THEN
9193             --
9194             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9195               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9196                 l_api_name,'Parameters: '
9197                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9198                 ||' ,Pay_On_Code: '||p_vendor_site_rec.pay_on_code
9199                 ||' ,Pay_On_Receipt_Summary_Code: '
9200                 ||p_vendor_site_rec.pay_on_receipt_summary_code);
9201             END IF;
9202           END IF;
9203         ELSE
9204             -- Bug 5491139 hkaniven start --
9205             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PAY_ON_RCE');
9206             FND_MSG_PUB.ADD;
9207             -- Bug 5491139 hkaniven end --
9208         END IF;
9209       END IF;
9210     END IF;
9211 
9212     ------------------------------------------------------------------------
9213     l_debug_info := 'Call to Validate Payment_Priority';
9214     ------------------------------------------------------------------------
9215     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9216          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9217                 l_api_name,l_debug_info);
9218     END IF;
9219     --
9220     -- Validate Payment_Priority
9221     --
9222     IF p_vendor_site_rec.payment_priority is NOT NULL AND
9223        p_vendor_site_rec.payment_priority <> ap_null_num THEN
9224 
9225     	Check_payment_priority(p_vendor_site_rec.payment_priority,
9226                            x_valid
9227                            );
9228       IF NOT x_valid THEN
9229         x_return_status := FND_API.G_RET_STS_ERROR;
9230         IF g_source = 'IMPORT' THEN
9231           IF (Insert_Rejections(
9232                 'AP_SUPPLIER_SITES_INT',
9233                 p_vendor_site_rec.vendor_site_interface_id,
9234                 'AP_INVALID_PAY_PRIORITY',
9235                 g_user_id,
9236                 g_login_id,
9237                 'Validate_Vendor_Site') <> TRUE) THEN
9238             --
9239             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9240               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9241                 l_api_name,'Parameters: '
9242                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9243                 ||' ,Payment_Priority: '||p_vendor_site_rec.payment_priority);
9244             END IF;
9245           END IF;
9246         ELSE
9247             -- Bug 5491139 hkaniven start --
9248             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PAYMENT_PRIORITY');
9249             FND_MSG_PUB.ADD;
9250             -- Bug 5491139 hkaniven end --
9251         END IF;
9252       END IF;
9253     END IF;
9254 
9255     ------------------------------------------------------------------------
9256     l_debug_info := 'Call to Validate Invoice Currency Code';
9257     ------------------------------------------------------------------------
9258     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9259          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9260                    l_api_name,l_debug_info);
9261     END IF;
9262 
9263     IF (p_vendor_site_rec.invoice_currency_code is not null AND
9264         p_vendor_site_rec.invoice_currency_code  <> ap_null_char) THEN
9265       	val_currency_code(p_vendor_site_rec.invoice_currency_code,
9266                         x_valid);
9267       IF NOT x_valid THEN
9268         x_return_status := FND_API.G_RET_STS_ERROR;
9269         IF g_source = 'IMPORT' THEN
9270           IF (Insert_Rejections(
9271                 'AP_SUPPLIER_SITES_INT',
9272                 p_vendor_site_rec.vendor_site_interface_id,
9273                 'AP_INVALID_INV_CURRENCY',
9274                 g_user_id,
9275                 g_login_id,
9276                 'Validate_Vendor_Site') <> TRUE) THEN
9277             --
9278             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9279               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9280                 l_api_name,'Parameters: '
9281                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9282                 ||' ,Invoice_Currency_Code: '||p_vendor_site_rec.invoice_currency_code);
9283             END IF;
9284           END IF;
9285         ELSE
9286             -- Bug 5491139 hkaniven start --
9287             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_INV_CURRENCY');
9288             FND_MSG_PUB.ADD;
9289             -- Bug 5491139 hkaniven end --
9290         END IF;
9291       END IF;
9292     END IF;
9293 
9294     ------------------------------------------------------------------------
9295     l_debug_info := 'Call to Validate Payment Currency Code';
9296     ------------------------------------------------------------------------
9297     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9298          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9299                 l_api_name,l_debug_info);
9300     END IF;
9301 
9302     IF (p_vendor_site_rec.payment_currency_code is not null
9303         AND p_vendor_site_rec.payment_currency_code <> ap_null_char
9304        AND p_vendor_site_rec.invoice_currency_code is not null
9305        AND p_vendor_site_rec.invoice_currency_code <> ap_null_char) THEN
9306       	payment_currency_code_valid(p_vendor_site_rec.payment_currency_code,
9307                                   p_vendor_site_rec.invoice_currency_code,
9308                                   x_valid);
9309       IF NOT x_valid THEN
9310         x_return_status := FND_API.G_RET_STS_ERROR;
9311         IF g_source = 'IMPORT' THEN
9312           IF (Insert_Rejections(
9313                 'AP_SUPPLIER_SITES_INT',
9314                 p_vendor_site_rec.vendor_site_interface_id,
9315                 'AP_INVALID_PAY_CURRENCY',
9316                 g_user_id,
9317                 g_login_id,
9318                 'Validate_Vendor_Site') <> TRUE) THEN
9319             --
9320             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9321               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9322                 l_api_name,'Parameters: '
9323                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9324                 ||' ,Invoice_Currency_Code: '||p_vendor_site_rec.invoice_currency_code
9325                 ||' ,Payment_Currency_Code: '||p_vendor_site_rec.payment_currency_code);
9326             END IF;
9327           END IF;
9328         ELSE
9329             -- Bug 5491139 hkaniven start --
9330             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PAY_CURRENCY');
9331             FND_MSG_PUB.ADD;
9332             -- Bug 5491139 hkaniven end --
9333         END IF;
9334       END IF;
9335     END IF;
9336 
9337     ------------------------------------------------------------------------
9338     l_debug_info := 'Call to Validate accts_pay_ccid';
9339     ------------------------------------------------------------------------
9340     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9341          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9342                 l_api_name,l_debug_info);
9343     END IF;
9344     --
9345     -- Validate accts_pay_ccid
9346     --
9347     IF p_vendor_site_rec.accts_pay_code_combination_id is NOT NULL
9348        AND p_vendor_site_rec.accts_pay_code_combination_id <> ap_null_num THEN
9349 
9350      	Validate_CCIDs('ACCTS_PAY_CCID',
9351 		p_vendor_site_rec.accts_pay_code_combination_id, l_sob,
9352                                      x_valid);
9353       IF NOT x_valid THEN
9354         x_return_status := FND_API.G_RET_STS_ERROR;
9355         IF g_source = 'IMPORT' THEN
9356           IF (Insert_Rejections(
9357                     'AP_SUPPLIER_SITES_INT',
9358                     p_vendor_site_rec.vendor_site_interface_id,
9359                     'AP_INVALID_ACCOUNTS_PAY_CCID',
9360                     g_user_id,
9361                     g_login_id,
9362                     'Validate_Vendor_Site') <> TRUE) THEN
9363            --
9364             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9365               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9366                 l_api_name,'Parameters: '
9367                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9368                 ||' ,Accts_Pay_Code_Comb_Id: '
9369                 ||p_vendor_site_rec.accts_pay_code_combination_id
9370                 ||' ,Set_Of_Books_Id: '||l_sob);
9371             END IF;
9372           END IF;
9373         ELSE
9374             -- Bug 5491139 hkaniven start --
9375             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_ACCOUNTS_PAY_CCID');
9376             FND_MSG_PUB.ADD;
9377             -- Bug 5491139 hkaniven end --
9378         END IF;
9379       END IF;
9380     END IF;
9381 
9382     ------------------------------------------------------------------------
9383     l_debug_info := 'Call to Validate prepay_ccid';
9384     ------------------------------------------------------------------------
9385     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9386          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9387                 l_api_name,l_debug_info);
9388     END IF;
9389     --
9390     -- Validate prepay_code_combination_id
9391     --
9392     IF p_vendor_site_rec.prepay_code_combination_id is NOT NULL AND
9393        p_vendor_site_rec.prepay_code_combination_id <> ap_null_num THEN
9394       	Validate_CCIDs( 'PREPAY_CCID',
9395 		p_vendor_site_rec.prepay_code_combination_id, l_sob,
9396                                     x_valid);
9397       IF NOT x_valid THEN
9398         x_return_status := FND_API.G_RET_STS_ERROR;
9399         IF g_source = 'IMPORT' THEN
9400           IF (Insert_Rejections(
9401                     'AP_SUPPLIER_SITES_INT',
9402                     p_vendor_site_rec.vendor_site_interface_id,
9403                     'AP_SUPP_INVALID_CCID',
9404                     g_user_id,
9405                     g_login_id,
9406                     'Validate_Vendor_Site') <> TRUE) THEN
9407            --
9408             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9409               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9410                 l_api_name,'Parameters: '
9411                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9412                 ||' ,Prepay_Code_Combination_Id: '
9413                 ||p_vendor_site_rec.prepay_code_combination_id
9414                 ||' ,Set_Of_Books_Id: '||l_sob);
9415             END IF;
9416           END IF;
9417         ELSE
9418             -- Bug 5491139 hkaniven start --
9419             FND_MESSAGE.SET_NAME('SQLAP','AP_SUPP_INVALID_CCID');
9420             FND_MSG_PUB.ADD;
9421             -- Bug 5491139 hkaniven end --
9422         END IF;
9423       END IF;
9424     END IF;
9425 
9426     ------------------------------------------------------------------------
9427     l_debug_info := 'Call to Validate future_dated_payment_ccid';
9428     ------------------------------------------------------------------------
9429      IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9430          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9431                 l_api_name,l_debug_info);
9432     END IF;
9433     --
9434     -- Validate future_dated_payment_ccid
9435     --
9436     IF p_vendor_site_rec.future_dated_payment_ccid is NOT NULL AND
9437        p_vendor_site_rec.future_dated_payment_ccid <> ap_null_num THEN
9438 	Validate_CCIDs( 'FUTURE_DATED_PAYMENT_CCID',
9439 		p_vendor_site_rec.future_dated_payment_ccid, l_sob,
9440                                     x_valid);
9441       IF NOT x_valid THEN
9442         x_return_status := FND_API.G_RET_STS_ERROR;
9443         IF g_source = 'IMPORT' THEN
9444           IF (Insert_Rejections(
9445                     'AP_SUPPLIER_SITES_INT',
9446                     p_vendor_site_rec.vendor_site_interface_id,
9447                     'AP_SUPP_INVALID_CCID',
9448                     g_user_id,
9449                     g_login_id,
9450                     'Validate_Vendor_Site') <> TRUE) THEN
9451            --
9452             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9453               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9454                 l_api_name,'Parameters: '
9455                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9456                 ||' ,Future_Dated_Payment_Ccid: '
9457                 ||p_vendor_site_rec.future_dated_payment_ccid
9458                 ||' ,Set_Of_Books_Id: '||l_sob);
9459             END IF;
9460           END IF;
9461         ELSE
9462             -- Bug 5491139 hkaniven start --
9463             FND_MESSAGE.SET_NAME('SQLAP','AP_SUPP_INVALID_CCID');
9464             FND_MSG_PUB.ADD;
9465             -- Bug 5491139 hkaniven end --
9466         END IF;
9467       END IF;
9468     END IF;
9469 
9470     ------------------------------------------------------------------------
9471     l_debug_info := 'Call to Validate duns_number';
9472     ------------------------------------------------------------------------
9473     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9474          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9475                 l_api_name,l_debug_info);
9476     END IF;
9477     --
9478     -- Validate supplier site duns number
9479     -- Added for the R12 FSIO gap
9480     --(bug6053476)
9481     IF p_vendor_site_rec.duns_number is NOT NULL
9482        AND p_vendor_site_rec.duns_number <> ap_null_char THEN
9483 
9484        --call the duns number validaton API
9485        Chk_new_duns_number(p_vendor_site_rec.duns_number,
9486                            x_valid);
9487 
9488       IF NOT x_valid THEN
9489         x_return_status := FND_API.G_RET_STS_ERROR;
9490         IF g_source = 'IMPORT' THEN
9491           IF (Insert_Rejections(
9492                 'AP_SUPPLIER_SITES_INT',
9493                 p_vendor_site_rec.vendor_site_interface_id,
9494                 'AP_INVALID_DUNS_NUMBER',
9495                 g_user_id,
9496                 g_login_id,
9497                 'Validate_Vendor_Site') <> TRUE) THEN
9498             --
9499             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9500               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9501                 l_api_name,'Parameters: '
9502                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9503                 ||' ,Invalid_Duns_number: '
9504                 ||p_vendor_site_rec.duns_number);
9505             END IF;
9506           END IF;
9507         ELSE
9508             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_DUNS_NUMBER');
9509             FND_MSG_PUB.ADD;
9510         END IF;
9511       END IF;
9512     END IF;
9513 
9514 
9515     IF p_mode = 'U' THEN
9516 
9517 	--update validations
9518 
9519 	null;
9520 
9521      ------------------------------------------------------------------------
9522     l_debug_info := 'check for prohibiting the update of CCR vendor site';
9523     ------------------------------------------------------------------------
9524     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9525          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9526                 l_api_name,l_debug_info);
9527     END IF;
9528     --
9529     -- Check if there is an attempt to update any restricted
9530     -- fields for a CCR vendor site. Added for the R12 FSIO
9531     -- GAP.(bug6053476)
9532 
9533       Chk_update_site_ccr_values(p_vendor_site_rec,
9534                                  p_calling_prog,
9535 				 x_valid);
9536 
9537       IF NOT x_valid THEN
9538         x_return_status := FND_API.G_RET_STS_ERROR;
9539         IF g_source = 'IMPORT' THEN
9540           IF (Insert_Rejections(
9541                 'AP_SUPPLIER_SITES_INT',
9542                  p_vendor_site_rec.vendor_site_interface_id,
9543                 'AP_CCR_NO_UPDATE',
9544                  g_user_id,
9545                  g_login_id,
9546                 'Validate_Vendor_Site') <> TRUE) THEN
9547 
9548             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9549               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9550                 l_api_name,'Parameters: '
9551                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9552                 ||' ,attempting to update non-updatablee elements on CCR site : '
9553                 ||p_vendor_site_rec.vendor_site_id);
9554             END IF;
9555           END IF;
9556         ELSE
9557             FND_MESSAGE.SET_NAME('SQLAP','AP_CCR_NO_UPDATE');
9558             FND_MSG_PUB.ADD;
9559         END IF;
9560    END IF;
9561 
9562     ELSIF p_mode = 'I' THEN
9563 
9564 	--insert validations
9565 
9566         ------------------------------------------------------------------------
9567         l_debug_info := 'Call to Validate payee';
9568         ------------------------------------------------------------------------
9569         IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9570           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9571                 l_api_name,l_debug_info);
9572         END IF;
9573         --
9574         --  Calling IBY Payee Validation API
9575         --
9576         IF p_vendor_site_rec.ext_payee_rec.payer_org_type IS NOT NULL THEN
9577           IBY_DISBURSEMENT_SETUP_PUB.Validate_External_Payee
9578             ( p_api_version     => 1.0,
9579               p_init_msg_list   => FND_API.G_FALSE,
9580               p_ext_payee_rec   => p_vendor_site_rec.ext_payee_rec,
9581               x_return_status   => l_payee_return_status,
9582               x_msg_count       => l_payee_msg_count,
9583               x_msg_data        => l_payee_msg_data);
9584 
9585            IF l_payee_return_status = FND_API.G_RET_STS_SUCCESS THEN
9586                 x_payee_valid := 'V';
9587            ELSE
9588                 x_payee_valid := 'F';
9589 		x_return_status := l_payee_return_status;
9590                 IF g_source = 'IMPORT' THEN
9591                     IF (Insert_Rejections(
9592                       'AP_SUPPLIER_SITES_INT',
9593                       p_vendor_site_rec.vendor_site_interface_id,
9594                       'AP_INVALID_PAYEE',
9595                       g_user_id,
9596                       g_login_id,
9597                       'Validate_Vendor_Site') <> TRUE) THEN
9598                       --
9599                       IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9600                         FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9601                           l_api_name,'Parameters: '
9602                           ||' Vendor_Site_Interface_Id:' ||
9603                                 p_vendor_site_rec.vendor_interface_id);
9604                       END IF;
9605                     END IF;
9606                 ELSE
9607                     -- Bug 5491139 hkaniven start --
9608                     FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PAYEE');
9609                     FND_MSG_PUB.ADD;
9610                     -- Bug 5491139 hkaniven end --
9611                 END IF;
9612            END IF;
9613         ELSE
9614            x_payee_valid := 'N';
9615         END IF; --payee valid
9616 
9617 	--call location validation to validate entered id
9618 	--and/or compare address componenets
9619 	--and that the location is already in use by existing supplier
9620 
9621 -- Bug 6918411/6808171 CTETALA Begin
9622 -- Added code to validate country code
9623         ----------------------------------------------------------------------------------------------------
9624         l_debug_info := 'Call to Validate country code';
9625         ----------------------------------------------------------------------------------------------------
9626         IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9627          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9628                 l_api_name,l_debug_info);
9629         END IF;
9630 
9631         IF(p_vendor_site_rec.country IS NOT NULL) THEN
9632                 BEGIN
9633                         SELECT null INTO l_dummy
9634                         FROM   FND_TERRITORIES
9635                         WHERE  TERRITORY_CODE = p_vendor_site_rec.country
9636                         AND    OBSOLETE_FLAG = 'N';
9637                         x_valid := TRUE;
9638 
9639                 EXCEPTION
9640                         WHEN NO_DATA_FOUND THEN
9641                             x_valid := FALSE;
9642                 END;
9643 
9644                 IF NOT x_valid THEN
9645                        x_return_status := FND_API.G_RET_STS_ERROR;
9646                        IF g_source = 'IMPORT' THEN
9647                           IF (Insert_Rejections
9648 						        (
9649                                  'AP_SUPPLIER_SITES_INT',
9650                                  p_vendor_site_rec.vendor_site_interface_id,
9651                                  'AP_API_INVALID_COUNTRY',
9652                                  g_user_id,
9653                                  g_login_id,
9654                                  'Validate_Vendor_Site') <> TRUE) THEN
9655                                  IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9656                                      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9657                                                     l_api_name,'Parameters: '
9658                                                     ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9659                                                     ||' ,Country code validation '
9660                                                     ||p_vendor_site_rec.country);
9661                                  END IF;
9662                           END IF;
9663                        ELSE
9664                           FND_MESSAGE.SET_NAME('SQLAP','AP_API_INVALID_COUNTRY');
9665                           FND_MSG_PUB.ADD;
9666                        END IF; --import
9667                 END IF; --country invalid
9668         END IF;
9669 
9670 -- Bug 6918411/6808171 CTETALA End
9671 
9672 	 -- Bug 7429668 If Party_Site_Name is provided, derive the party_site_id.
9673 	 IF (p_vendor_site_rec.party_site_name IS NOT NULL AND
9674               p_vendor_site_rec.party_site_id IS NULL AND
9675               (p_vendor_site_rec.org_id IS NOT NULL OR
9676                p_vendor_site_rec.ORG_NAME IS NOT NULL) AND
9677 			   p_vendor_site_rec.vendor_id IS NOT NULL)THEN
9678        Check_org_id_party_site_name(p_vendor_site_rec.org_id,
9679                                        p_vendor_site_rec.ORG_NAME,
9680                                        p_vendor_site_rec.party_site_id,
9681                                        p_vendor_site_rec.party_site_name,
9682                                        p_vendor_site_rec.vendor_id,
9683                                        'AP_SUPPLIER_SITES_INT',
9684                                        p_vendor_site_rec.vendor_site_interface_id,
9685                                        x_valid);
9686        IF NOT x_valid THEN
9687          x_return_status := FND_API.G_RET_STS_ERROR;
9688 		 IF g_source = 'IMPORT' THEN
9689            IF (Insert_Rejections(
9690              'AP_SUPPLIER_SITES_INT',
9691              p_vendor_site_rec.vendor_site_interface_id,
9692              'AP_INVALID_PARTY_SITE',
9693              g_user_id,
9694              g_login_id,
9695             'Validate_Vendor_Site') <> TRUE) THEN
9696 
9697              IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9698                 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Parameters: '
9699                      ||' Org_Id: '||p_vendor_site_rec.org_id
9700                      ||', Org_Name: '||p_vendor_site_rec.ORG_NAME
9701                      ||', Party_site_name: '||p_vendor_site_rec.party_site_name
9702                      ||', Party_site_id: '|| p_vendor_site_rec.party_site_id
9703 					 ||', Vendor_id: '|| p_vendor_site_rec.vendor_id
9704                      ||', Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id);
9705              END IF;
9706            END IF;
9707          ELSE
9708             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PARTY_SITE');
9709             FND_MSG_PUB.ADD;
9710          END IF;
9711        END IF;
9712 	END IF;
9713 	------------------------------------------------------------------------
9714     	l_debug_info := 'Call to Validate location';
9715     	------------------------------------------------------------------------
9716        IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9717          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9718                 l_api_name,l_debug_info);
9719     	END IF;
9720 	--
9721 	-- Check for validity of location_id
9722 	--
9723    	IF p_vendor_site_rec.location_id IS NOT NULL THEN
9724      		Check_Valid_Location_ID(p_vendor_site_rec.location_id,
9725 				p_vendor_site_rec.party_site_id,
9726                                 x_valid);
9727 
9728      		IF NOT x_valid THEN
9729 			--location_id does not exist
9730         		x_location_valid := 'F';
9731 		ELSE
9732 			--location_id was valid
9733 			x_location_valid := 'V';
9734      		END IF;
9735 	ELSE
9736 
9737 		Check_Valid_Location(
9738 		p_party_site_id  => p_vendor_site_rec.party_site_id,
9739 		p_address_line1  => p_vendor_site_rec.address_line1,
9740 		p_address_line2  => p_vendor_site_rec.address_line2,
9741 		p_address_line3  => p_vendor_site_rec.address_line3,
9742 		p_address_line4  => p_vendor_site_rec.address_line4,
9743 		p_city  => p_vendor_site_rec.city       ,
9744 		p_state => p_vendor_site_rec.state    ,
9745 		p_zip    => p_vendor_site_rec.zip ,
9746 		p_province  => p_vendor_site_rec.province  ,
9747 		p_country => p_vendor_site_rec.country,
9748 		p_county => p_vendor_site_rec.county,
9749 		p_language => p_vendor_site_rec.language,
9750 		p_address_style	=> p_vendor_site_rec.address_style  ,
9751 		p_vendor_id => p_vendor_site_rec.vendor_id,
9752 		x_location_id	 => l_location_id,
9753 		x_valid => x_valid,
9754 		x_loc_count => x_loc_count); -- Bug 7429668
9755 
9756      		IF NOT x_valid THEN
9757 			--no existing matching location
9758         		x_location_valid := 'N';
9759                     -- Bug 7429668 Start
9760                     IF x_loc_count > 1 THEN
9761                       -- We have to ensure that no new locations are created in this case.
9762                       x_location_valid := 'F';
9763                       x_return_status := FND_API.G_RET_STS_ERROR;
9764 
9765                       IF g_source = 'IMPORT' THEN
9766 
9767                          IF (Insert_Rejections(
9768                                                'AP_SUPPLIER_SITES_INT',
9769                                                 p_vendor_site_rec.vendor_site_interface_id,
9770                                                 'AP_MULTIPLE_ADDRESS',
9771                                                 g_user_id,
9772                                                 g_login_id,
9773                                                'Validate_Vendor_Site') <> TRUE) THEN
9774 
9775                                IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9776                                      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9777                                                     l_api_name,'Parameters: '
9778                                                     ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9779                                                     ||' ,Vendor_Id: '||p_vendor_site_rec.vendor_id
9780                                                     ||' ,Party_site_id: '||p_vendor_site_rec.party_site_id);
9781                                END IF;
9782 
9783                          END IF;
9784                      ELSE
9785                        -- Bug 5584046 --
9786                          FND_MESSAGE.SET_NAME('SQLAP','AP_MULTIPLE_ADDRESS');
9787                          FND_MSG_PUB.ADD;
9788                      END IF; --import
9789 				ELSIF x_loc_count = 0 AND
9790 				      p_vendor_site_rec.party_site_id IS NOT NULL THEN
9791                       -- We have to ensure that no new locations are created in this case.
9792                       x_location_valid := 'F';
9793                       x_return_status := FND_API.G_RET_STS_ERROR;
9794 
9795                       IF g_source = 'IMPORT' THEN
9796 
9797                          IF (Insert_Rejections(
9798                                                'AP_SUPPLIER_SITES_INT',
9799                                                 p_vendor_site_rec.vendor_site_interface_id,
9800                                                 'AP_INCONSISTENT_ADDRESS',
9801                                                 g_user_id,
9802                                                 g_login_id,
9803                                                'Validate_Vendor_Site') <> TRUE) THEN
9804 
9805                                IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9806                                      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9807                                                     l_api_name,'Parameters: '
9808                                                     ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9809                                                     ||' ,Vendor_Id: '||p_vendor_site_rec.vendor_id
9810                                                     ||' ,Party_site_id: '||p_vendor_site_rec.party_site_id);
9811                                END IF;
9812 
9813                          END IF;
9814                      ELSE
9815                        -- Bug 5584046 --
9816                          FND_MESSAGE.SET_NAME('SQLAP','AP_INCONSISTENT_ADDRESS');
9817                          FND_MSG_PUB.ADD;
9818                      END IF; --import
9819 				-- Bug 7429668 End
9820         		ELSE
9821                    /*bug 5584046 Before calling the HZ api we need to ensure that
9822                   Country and address_line1 coulumns are not null*/
9823                   IF(p_vendor_site_rec.country IS NULL)
9824                      AND (NVL(G_Vendor_Type_Lookup_Code,'DUMMY') <> 'EMPLOYEE') THEN
9825 
9826                       x_return_status := FND_API.G_RET_STS_ERROR;
9827 
9828                       IF g_source = 'IMPORT' THEN
9829 
9830                          IF (Insert_Rejections(
9831                                                'AP_SUPPLIER_SITES_INT',
9832                                                 p_vendor_site_rec.vendor_site_interface_id,
9833                                                 'AP_NULL_COUNTRY_NAME',
9834                                                 g_user_id,
9835                                                 g_login_id,
9836                                                'Validate_Vendor_Site') <> TRUE) THEN
9837 
9838                                IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9839                                      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9840                                                     l_api_name,'Parameters: '
9841                                                     ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9842                                                     ||' ,Vendor_Id: '||p_vendor_site_rec.vendor_id
9843                                                     ||' ,Org_id: '||p_vendor_site_rec.org_id
9844                                                     ||' ,Org_Name: '||p_vendor_site_rec.org_name);
9845                                END IF;
9846 
9847                          END IF;
9848                      ELSE
9849                        -- Bug 5584046 --
9850                          FND_MESSAGE.SET_NAME('SQLAP','AP_NULL_COUNTRY_NAME');
9851                          FND_MSG_PUB.ADD;
9852                      END IF; --import
9853                   END IF;
9854 
9855                   IF(p_vendor_site_rec.address_line1 IS NULL)
9856                     AND (NVL(G_Vendor_Type_Lookup_Code,'DUMMY') <> 'EMPLOYEE') THEN
9857 
9858                       x_return_status := FND_API.G_RET_STS_ERROR;
9859 
9860                       IF g_source = 'IMPORT' THEN
9861 
9862                          IF (Insert_Rejections(
9863                                                'AP_SUPPLIER_SITES_INT',
9864                                                 p_vendor_site_rec.vendor_site_interface_id,
9865                                                 'AP_NULL_ADDRESS_LINE1',
9866                                                 g_user_id,
9867                                                 g_login_id,
9868                                                'Validate_Vendor_Site') <> TRUE) THEN
9869 
9870                                IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9871                                      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9872                                                     l_api_name,'Parameters: '
9873                                                     ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9874                                                     ||' ,Vendor_Id: '||p_vendor_site_rec.vendor_id
9875                                                     ||' ,Org_id: '||p_vendor_site_rec.org_id
9876                                                     ||' ,Org_Name: '||p_vendor_site_rec.org_name);
9877                                END IF;
9878 
9879                          END IF;
9880                      ELSE
9881                         -- Bug 5584046
9882                          FND_MESSAGE.SET_NAME('SQLAP','AP_NULL_ADDRESS_LINE1');
9883                          FND_MSG_PUB.ADD;
9884                      END IF; --import
9885                     END IF;
9886                      --bug 5584046
9887                   END IF;
9888 
9889 		ELSE
9890 			--found valid matching location
9891 			x_location_valid := 'V';
9892 			p_vendor_site_rec.location_id := l_location_id;
9893      		END IF;
9894 
9895    	END IF;
9896 
9897 	------------------------------------------------------------------------
9898     	l_debug_info := 'Call to Validate party_site_id';
9899     	------------------------------------------------------------------------
9900        IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9901          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9902                 l_api_name,l_debug_info);
9903     	END IF;
9904 	--
9905 	-- Check for validity of party_site_id
9906 	--
9907 
9908    	IF p_vendor_site_rec.party_site_id IS NOT NULL THEN
9909      		Check_Valid_Party_Site_ID(p_vendor_site_rec.party_site_id,
9910 				p_vendor_site_rec.location_id,
9911                                 x_valid);
9912 
9913      		IF NOT x_valid THEN
9914 			--party_site_id does not exist
9915         		x_party_site_valid := 'F';
9916 		ELSE
9917 			--party_site_id was valid
9918 			x_party_site_valid := 'V';
9919      		END IF;
9920 	ELSE
9921 		--party_site_id is null
9922 		x_party_site_valid := 'N';
9923 	END IF;
9924 
9925      	------------------------------------------------------------------------
9926     	l_debug_info := 'Call to Validate primary_pay_site_flag unique per Vendor';
9927     	------------------------------------------------------------------------
9928         IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9929          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9930                 l_api_name,l_debug_info);
9931     	END IF;
9932 	--
9933 	-- Validate primary_pay_site_flag - unique per vendor
9934 	--
9935 
9936    	IF (p_vendor_site_rec.primary_pay_site_flag = 'Y')  THEN
9937 
9938     		Validate_unique_per_vendor('PRIMARY_PAY_SITE_FLAG',
9939         		p_vendor_site_rec.vendor_id,
9940                         p_vendor_site_id,
9941          	        p_vendor_site_rec.org_id,
9942                         p_vendor_site_rec.org_name,
9943                         x_valid
9944         		);
9945           IF NOT x_valid THEN
9946             x_return_status := FND_API.G_RET_STS_ERROR;
9947             IF g_source = 'IMPORT' THEN
9948               IF (Insert_Rejections(
9949                     'AP_SUPPLIER_SITES_INT',
9950                     p_vendor_site_rec.vendor_site_interface_id,
9951                     'AP_INVALID_PRIM_PAY_SITE',
9952                     g_user_id,
9953                     g_login_id,
9954                     'Validate_Vendor_Site') <> TRUE) THEN
9955                --
9956                 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9957                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9958                    l_api_name,'Parameters: '
9959                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
9960                 ||' ,Vendor_Id: '||p_vendor_site_rec.vendor_id
9961                 ||' ,Org_id: '||p_vendor_site_rec.org_id
9962                 ||' ,Org_Name: '||p_vendor_site_rec.org_name);
9963                 END IF;
9964               END IF;
9965             ELSE
9966                 -- Bug 5491139 hkaniven start --
9967                 FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PRIM_PAY_SITE');
9968                 FND_MSG_PUB.ADD;
9969                 -- Bug 5491139 hkaniven end --
9970             END IF;
9971           END IF;
9972    	END IF;
9973 
9974     	------------------------------------------------------------------------
9975     	l_debug_info := 'Call to Validate Country of Origin Code';
9976     	------------------------------------------------------------------------
9977         IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9978          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
9979                 l_api_name,l_debug_info);
9980     	END IF;
9981 
9982    	IF (p_vendor_site_rec.country_of_origin_code is not null) THEN
9983       		country_of_origin_valid(p_vendor_site_rec.country_of_origin_code,
9984                               x_valid);
9985           IF NOT x_valid THEN
9986             x_return_status := FND_API.G_RET_STS_ERROR;
9987             IF g_source = 'IMPORT' THEN
9988               IF (Insert_Rejections(
9989                     'AP_SUPPLIER_SITES_INT',
9990                     p_vendor_site_rec.vendor_site_interface_id,
9991                     'AP_INVALID_COUNTRY_ORIGIN',
9992                     g_user_id,
9993                     g_login_id,
9994                     'Validate_Vendor_Site') <> TRUE) THEN
9995                --
9996                 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9997                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
9998                    l_api_name,'Parameters: '
9999                 ||' Vendor_Site_Interface_Id: '||p_vendor_site_rec.vendor_site_interface_id
10000                 ||' ,Country_Of_Origin_Code: '||p_vendor_site_rec.country_of_origin_code);
10001                 END IF;
10002               END IF;
10003             ELSE
10004                 -- Bug 5491139 hkaniven start --
10005                 FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_COUNTRY_ORIGIN');
10006                 FND_MSG_PUB.ADD;
10007                 -- Bug 5491139 hkaniven end --
10008             END IF;
10009           END IF;
10010    	END IF;
10011 
10012 	IF p_calling_prog <> 'ISETUP' THEN
10013 
10014 		--addl insert validations
10015 
10016     		------------------------------------------------------------------------
10017     		l_debug_info := 'Call to Validate pcard_site_flag';
10018     		------------------------------------------------------------------------
10019         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10020          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10021                 		l_api_name,l_debug_info);
10022     		END IF;
10023 		--
10024 		-- Validate pcard_site_flag
10025 		--
10026    		IF p_vendor_site_rec.pcard_site_flag is NOT NULL THEN
10027 
10028       			Validate_Lookups( 'PCARD_SITE_FLAG', p_vendor_site_rec.pcard_site_flag ,'YES/NO',
10029                                     'PO_LOOKUP_CODES',x_valid);
10030                   IF NOT x_valid THEN
10031                     x_return_status := FND_API.G_RET_STS_ERROR;
10032                     IF g_source = 'IMPORT' THEN
10033                       IF (Insert_Rejections(
10034                        'AP_SUPPLIER_SITES_INT',
10035                         p_vendor_site_rec.vendor_site_interface_id,
10036                        'AP_INVALID_PCARD_FLAG',
10037                         g_user_id,
10038                         g_login_id,
10039                        'Validate_Vendor_Site') <> TRUE) THEN
10040                        --
10041                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10042                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10043                             l_api_name,'Parameters: '
10044                             ||' Vendor_Site_Interface_Id: '
10045                             ||p_vendor_site_rec.vendor_site_interface_id
10046                             ||' ,Pcard_Site_Flag: '
10047                             ||p_vendor_site_rec.pcard_site_flag);
10048                         END IF;
10049                       END IF;
10050                     ELSE
10051                         -- Bug 5491139 hkaniven start --
10052                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PCARD_SITE');
10053                         FND_MSG_PUB.ADD;
10054                         -- Bug 5491139 hkaniven end --
10055                     END IF;
10056                   END IF;
10057    		END IF;
10058 
10059     		------------------------------------------------------------------------
10060     		l_debug_info := 'Call to Validate Purchasing Site Flag';
10061     		------------------------------------------------------------------------
10062         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10063          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10064                 		l_api_name,l_debug_info);
10065     		END IF;
10066 		--
10067 		-- Validate purchasing_site_flag
10068 		--
10069    		IF p_vendor_site_rec.purchasing_site_flag is NOT NULL THEN
10070 
10071       			Validate_Lookups( 'PURCHASING_SITE_FLAG', p_vendor_site_rec.purchasing_site_flag,'YES/NO',
10072                                     'PO_LOOKUP_CODES', x_valid);
10073                   IF NOT x_valid THEN
10074                     x_return_status := FND_API.G_RET_STS_ERROR;
10075                     IF g_source = 'IMPORT' THEN
10076                       IF (Insert_Rejections(
10077                        'AP_SUPPLIER_SITES_INT',
10078                         p_vendor_site_rec.vendor_site_interface_id,
10079                        'AP_INVALID_PURCHASING_FLAG',
10080                         g_user_id,
10081                         g_login_id,
10082                        'Validate_Vendor_Site') <> TRUE) THEN
10083                        --
10084                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10085                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10086                             l_api_name,'Parameters: '
10087                             ||' Vendor_Site_Interface_Id: '
10088                             ||p_vendor_site_rec.vendor_site_interface_id
10089                             ||' ,Purchasing_Site_Flag: '
10090                             ||p_vendor_site_rec.purchasing_site_flag);
10091                         END IF;
10092                       END IF;
10093                     ELSE
10094                         -- Bug 5491139 hkaniven start --
10095                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PURCHASING_FLAG');
10096                         FND_MSG_PUB.ADD;
10097                         -- Bug 5491139 hkaniven end --
10098                     END IF;
10099                   END IF;
10100    		END IF;
10101 
10102     		------------------------------------------------------------------------
10103     		l_debug_info := 'Call to Validate rfq_only_site_flag';
10104     		------------------------------------------------------------------------
10105         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10106          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10107                 		l_api_name,l_debug_info);
10108     		END IF;
10109 		--
10110 		-- Validate rfq_only_site_flag
10111 		--
10112    		IF p_vendor_site_rec.rfq_only_site_flag is NOT NULL THEN
10113 
10114       			Validate_Lookups( 'RFQ_ONLY_SITE_FLAG', p_vendor_site_rec.rfq_only_site_flag,'YES/NO',
10115                                     'PO_LOOKUP_CODES', x_valid);
10116                   IF NOT x_valid THEN
10117                     x_return_status := FND_API.G_RET_STS_ERROR;
10118                     IF g_source = 'IMPORT' THEN
10119                       IF (Insert_Rejections(
10120                        'AP_SUPPLIER_SITES_INT',
10121                         p_vendor_site_rec.vendor_site_interface_id,
10122                        'AP_INVALID_RFQ_FLAG',
10123                         g_user_id,
10124                         g_login_id,
10125                        'Validate_Vendor_Site') <> TRUE) THEN
10126                        --
10127                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10128                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10129                             l_api_name,'Parameters: '
10130                             ||' Vendor_Site_Interface_Id: '
10131                             ||p_vendor_site_rec.vendor_site_interface_id
10132                             ||' ,Rfq_Only_Site_Flag: '
10133                             ||p_vendor_site_rec.rfq_only_site_flag);
10134                         END IF;
10135                       END IF;
10136                     ELSE
10137                         -- Bug 5491139 hkaniven start --
10138                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_RFQ_FLAG');
10139                         FND_MSG_PUB.ADD;
10140                         -- Bug 5491139 hkaniven end --
10141                     END IF;
10142                   END IF;
10143    		END IF;
10144 
10145     		------------------------------------------------------------------------
10146     		l_debug_info := 'Call to Validate pay_site_flag';
10147     		------------------------------------------------------------------------
10148         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10149          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10150                 		l_api_name,l_debug_info);
10151     		END IF;
10152 		--
10153 		-- Validate pay_site_flag
10154 		--
10155    		IF p_vendor_site_rec.pay_site_flag is NOT NULL THEN
10156 
10157       			Validate_Lookups( 'PAY_SITE_FLAG', p_vendor_site_rec.pay_site_flag,'YES/NO',
10158                                     'PO_LOOKUP_CODES', x_valid);
10159                   IF NOT x_valid THEN
10160                     x_return_status := FND_API.G_RET_STS_ERROR;
10161                     IF g_source = 'IMPORT' THEN
10162                       IF (Insert_Rejections(
10163                        'AP_SUPPLIER_SITES_INT',
10164                         p_vendor_site_rec.vendor_site_interface_id,
10165                        'AP_INVALID_PAY_SITE_FLAG',
10166                         g_user_id,
10167                         g_login_id,
10168                        'Validate_Vendor_Site') <> TRUE) THEN
10169                        --
10170                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10171                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10172                             l_api_name,'Parameters: '
10173                             ||' Vendor_Site_Interface_Id: '
10174                             ||p_vendor_site_rec.vendor_site_interface_id
10175                             ||' ,Pay_Site_Flag: '
10176                             ||p_vendor_site_rec.pay_site_flag);
10177                         END IF;
10178                       END IF;
10179                     ELSE
10180                         -- Bug 5491139 hkaniven start --
10181                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PAY_SITE_FLAG');
10182                         FND_MSG_PUB.ADD;
10183                         -- Bug 5491139 hkaniven end --
10184                     END IF;
10185                   END IF;
10186    		END IF;
10187 
10188     		------------------------------------------------------------------------
10189     		l_debug_info := 'Call to Validate attention_ar_flag';
10190     		------------------------------------------------------------------------
10191         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10192          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10193                 		l_api_name,l_debug_info);
10194     		END IF;
10195 		--
10196 		-- Validate attention_ar_flag
10197 		--
10198    		IF p_vendor_site_rec.attention_ar_flag is NOT NULL THEN
10199 
10200       			Validate_Lookups( 'ATTENTION_AR_FLAG', p_vendor_site_rec.attention_ar_flag,'YES/NO',
10201                                     'PO_LOOKUP_CODES', x_valid);
10202                   IF NOT x_valid THEN
10203                     x_return_status := FND_API.G_RET_STS_ERROR;
10204                     IF g_source = 'IMPORT' THEN
10205                       IF (Insert_Rejections(
10206                        'AP_SUPPLIER_SITES_INT',
10207                         p_vendor_site_rec.vendor_site_interface_id,
10208                        'AP_INVALID_ATTN_AR_FLAG',
10209                         g_user_id,
10210                         g_login_id,
10211                        'Validate_Vendor_Site') <> TRUE) THEN
10212                        --
10213                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10214                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10215                             l_api_name,'Parameters: '
10216                             ||' Vendor_Site_Interface_Id: '
10217                             ||p_vendor_site_rec.vendor_site_interface_id
10218                             ||' ,Attention_Ar_Flag: '
10219                             ||p_vendor_site_rec.attention_ar_flag);
10220                         END IF;
10221                       END IF;
10222                     ELSE
10223                         -- Bug 5491139 hkaniven start --
10224                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_ATTN_AR_FLAG');
10225                         FND_MSG_PUB.ADD;
10226                         -- Bug 5491139 hkaniven end --
10227                     END IF;
10228                   END IF;
10229    		END IF;
10230 
10231     		------------------------------------------------------------------------
10232     		l_debug_info := 'Call to Validate primary_pay_site_flag';
10233     		------------------------------------------------------------------------
10234         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10235          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10236                 		l_api_name,l_debug_info);
10237     		END IF;
10238 		--
10239 		-- Validate primary_pay_site_flag
10240 		--
10241    		IF p_vendor_site_rec.primary_pay_site_flag  is NOT NULL THEN
10242 
10243       			Validate_Lookups( 'PRIMARY_PAY_SITE_FLAG', p_vendor_site_rec.primary_pay_site_flag,'YES/NO',
10244                                     'PO_LOOKUP_CODES',x_valid);
10245                   IF NOT x_valid THEN
10246                     x_return_status := FND_API.G_RET_STS_ERROR;
10247                     IF g_source = 'IMPORT' THEN
10248                       IF (Insert_Rejections(
10249                        'AP_SUPPLIER_SITES_INT',
10250                         p_vendor_site_rec.vendor_site_interface_id,
10251                        'AP_INVALID_PRIMPAY_SITE_FLAG',
10252                         g_user_id,
10253                         g_login_id,
10254                        'Validate_Vendor_Site') <> TRUE) THEN
10255                        --
10256                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10257                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10258                             l_api_name,'Parameters: '
10259                             ||' Vendor_Site_Interface_Id: '
10260                             ||p_vendor_site_rec.vendor_site_interface_id
10261                             ||' ,Primary_Pay_Site_Flag: '
10262                             ||p_vendor_site_rec.primary_pay_site_flag);
10263                         END IF;
10264                       END IF;
10265                     ELSE
10266                         -- Bug 5491139 hkaniven start --
10267                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PRIM_PAY_SITE');
10268                         FND_MSG_PUB.ADD;
10269                         -- Bug 5491139 hkaniven end --
10270                     END IF;
10271                   END IF;
10272    		END IF;
10273 
10274     		------------------------------------------------------------------------
10275     		l_debug_info := 'Call to Validate freight_terms_lookup_code';
10276     		------------------------------------------------------------------------
10277         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10278          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10279                 		l_api_name,l_debug_info);
10280     		END IF;
10281 		--
10282 		-- Validate freight_terms_lookup_code
10283 		--
10284    		IF p_vendor_site_rec.freight_terms_lookup_code is NOT NULL THEN
10285 
10286       			Validate_Lookups( 'FREIGHT_TERMS_LOOKUP_CODE',
10287 				p_vendor_site_rec.freight_terms_lookup_code,'FREIGHT TERMS',
10288                                     'PO_LOOKUP_CODES',x_valid);
10289                    IF NOT x_valid THEN
10290                     x_return_status := FND_API.G_RET_STS_ERROR;
10291                     IF g_source = 'IMPORT' THEN
10292                       IF (Insert_Rejections(
10293                        'AP_SUPPLIER_SITES_INT',
10294                         p_vendor_site_rec.vendor_site_interface_id,
10295                        'AP_INVALID_FREIGHT_TERMS',
10296                         g_user_id,
10297                         g_login_id,
10298                        'Validate_Vendor_Site') <> TRUE) THEN
10299                        --
10300                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10301                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10302                             l_api_name,'Parameters: '
10303                             ||' Vendor_Site_Interface_Id: '
10304                             ||p_vendor_site_rec.vendor_site_interface_id
10305                             ||' ,Freight_Terms_Lookup_Code '
10306                             ||p_vendor_site_rec.freight_terms_lookup_code);
10307                         END IF;
10308                       END IF;
10309                     ELSE
10310                         -- Bug 5491139 hkaniven start --
10311                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_FREIGHT_TERMS');
10312                         FND_MSG_PUB.ADD;
10313                         -- Bug 5491139 hkaniven end --
10314                     END IF;
10315                   END IF;
10316                 END IF;
10317 
10318     		------------------------------------------------------------------------
10319     		l_debug_info := 'Call to Validate fob_lookup_code';
10320     		------------------------------------------------------------------------
10321         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10322          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10323                 		l_api_name,l_debug_info);
10324     		END IF;
10325 		--
10326 		-- Validate fob_lookup_code
10327 		--
10328    		IF p_vendor_site_rec.fob_lookup_code is NOT NULL THEN
10329 
10330       			Validate_Lookups( 'FOB_LOOKUP_CODE',p_vendor_site_rec.fob_lookup_code,'FOB',
10331                                     'PO_LOOKUP_CODES',x_valid);
10332                   IF NOT x_valid THEN
10333                     x_return_status := FND_API.G_RET_STS_ERROR;
10334                     IF g_source = 'IMPORT' THEN
10335                       IF (Insert_Rejections(
10336                        'AP_SUPPLIER_SITES_INT',
10337                         p_vendor_site_rec.vendor_site_interface_id,
10338                        'AP_INVALID_FOB',
10339                         g_user_id,
10340                         g_login_id,
10341                        'Validate_Vendor_Site') <> TRUE) THEN
10342                        --
10343                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10344                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10345                             l_api_name,'Parameters: '
10346                             ||' Vendor_Site_Interface_Id: '
10347                             ||p_vendor_site_rec.vendor_site_interface_id
10348                             ||' ,Fob_Lookup_Code '
10349                             ||p_vendor_site_rec.fob_lookup_code);
10350                         END IF;
10351                       END IF;
10352                     ELSE
10353                         -- Bug 5491139 hkaniven start --
10354                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_FOB');
10355                         FND_MSG_PUB.ADD;
10356                         -- Bug 5491139 hkaniven end --
10357                     END IF;
10358                   END IF;
10359    		END IF;
10360 
10361     		------------------------------------------------------------------------
10362     		l_debug_info := 'Call to Validate pay_date_basis_lookup_code';
10363     		------------------------------------------------------------------------
10364         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10365          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10366                 		l_api_name,l_debug_info);
10367     		END IF;
10368 		--
10369 		-- Validate pay_date_basis_lookup_code
10370 		--
10371    		IF p_vendor_site_rec.pay_date_basis_lookup_code is NOT NULL THEN
10372 
10373       			Validate_Lookups( 'PAY_DATE_BASIS_LOOKUP_CODE',
10374 				p_vendor_site_rec.pay_date_basis_lookup_code,'PAY DATE BASIS',
10375                                     'PO_LOOKUP_CODES',x_valid);
10376                   IF NOT x_valid THEN
10377                     x_return_status := FND_API.G_RET_STS_ERROR;
10378                     IF g_source = 'IMPORT' THEN
10379                       IF (Insert_Rejections(
10380                        'AP_SUPPLIER_SITES_INT',
10381                         p_vendor_site_rec.vendor_site_interface_id,
10382                        'AP_INVALID_PAY_DATE_BASIS',
10383                         g_user_id,
10384                         g_login_id,
10385                        'Validate_Vendor_Site') <> TRUE) THEN
10386                        --
10387                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10388                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10389                             l_api_name,'Parameters: '
10390                             ||' Vendor_Site_Interface_Id: '
10391                             ||p_vendor_site_rec.vendor_site_interface_id
10392                             ||' ,Pay_Date_Basis_Lookup_Code '
10393                             ||p_vendor_site_rec.pay_date_basis_lookup_code);
10394                         END IF;
10395                       END IF;
10396                     ELSE
10397                         -- Bug 5491139 hkaniven start --
10398                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PAY_DATE_BASIS');
10399                         FND_MSG_PUB.ADD;
10400                         -- Bug 5491139 hkaniven end --
10401                     END IF;
10402                   END IF;
10403    		END IF;
10404 
10405     		------------------------------------------------------------------------
10406     		l_debug_info := 'Call to Validate pay_group_lookup_code';
10407     		------------------------------------------------------------------------
10408         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10409          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10410                 		l_api_name,l_debug_info);
10411     		END IF;
10412 		--
10413 		-- Validate pay_group_lookup_code
10414 		--
10415    		IF p_vendor_site_rec.pay_group_lookup_code is NOT NULL THEN
10416 
10417       			Validate_Lookups( 'PAY_GROUP_LOOKUP_CODE',
10418 				p_vendor_site_rec.pay_group_lookup_code,'PAY GROUP',
10419                                     'PO_LOOKUP_CODES',x_valid);
10420                   IF NOT x_valid THEN
10421                     x_return_status := FND_API.G_RET_STS_ERROR;
10422                     IF g_source = 'IMPORT' THEN
10423                       IF (Insert_Rejections(
10424                        'AP_SUPPLIER_SITES_INT',
10425                         p_vendor_site_rec.vendor_site_interface_id,
10426                        'AP_INVALID_PAY_GROUP',
10427                         g_user_id,
10428                         g_login_id,
10429                        'Validate_Vendor_Site') <> TRUE) THEN
10430                        --
10431                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10432                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10433                             l_api_name,'Parameters: '
10434                             ||' Vendor_Site_Interface_Id: '
10435                             ||p_vendor_site_rec.vendor_site_interface_id
10436                             ||' ,Pay_Group_Lookup_Code '
10437                             ||p_vendor_site_rec.pay_group_lookup_code);
10438                         END IF;
10439                       END IF;
10440                     ELSE
10441                         -- Bug 5491139 hkaniven start --
10442                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PAY_GROUP');
10443                         FND_MSG_PUB.ADD;
10444                         -- Bug 5491139 hkaniven end --
10445                     END IF;
10446                   END IF;
10447    		END IF;
10448 
10449     		------------------------------------------------------------------------
10450     		l_debug_info := 'Call to Validate terms_date_basis';
10451     		------------------------------------------------------------------------
10452         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10453          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10454                 		l_api_name,l_debug_info);
10455     		END IF;
10456 		--
10457 		-- Validate terms_date_basis
10458 		--
10459    		IF p_vendor_site_rec.terms_date_basis is NOT NULL THEN
10460 
10461       			Validate_Lookups( 'TERMS_DATE_BASIS',p_vendor_site_rec.terms_date_basis,'TERMS DATE BASIS',
10462                                     'AP_LOOKUP_CODES',x_valid);
10463                   IF NOT x_valid THEN
10464                     x_return_status := FND_API.G_RET_STS_ERROR;
10465                     IF g_source = 'IMPORT' THEN
10466                       IF (Insert_Rejections(
10467                        'AP_SUPPLIER_SITES_INT',
10468                         p_vendor_site_rec.vendor_site_interface_id,
10469                        'AP_INVALID_TERMS_DATE',
10470                         g_user_id,
10471                         g_login_id,
10472                        'Validate_Vendor_Site') <> TRUE) THEN
10473                        --
10474                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10475                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10476                             l_api_name,'Parameters: '
10477                             ||' Vendor_Site_Interface_Id: '
10478                             ||p_vendor_site_rec.vendor_site_interface_id
10479                             ||' ,Terms_Date_Basis '
10480                             ||p_vendor_site_rec.terms_date_basis);
10481                         END IF;
10482                       END IF;
10483                     ELSE
10484                         -- Bug 5491139 hkaniven start --
10485                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_TERMS_DATE');
10486                         FND_MSG_PUB.ADD;
10487                         -- Bug 5491139 hkaniven end --
10488                     END IF;
10489                   END IF;
10490    		END IF;
10491 
10492 
10493 		------------------------------------------------------------------------
10494     		l_debug_info := 'Call to Validate create_debit_memo_flag';
10495     		------------------------------------------------------------------------
10496         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10497          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10498                 		l_api_name,l_debug_info);
10499     		END IF;
10500 		--
10501 		-- Validate create_debit_memo_flag
10502 		--
10503    		IF p_vendor_site_rec.create_debit_memo_flag is NOT NULL THEN
10504 
10505       			Validate_Lookups( 'CREATE_DEBIT_MEMO_FLAG',
10506 				p_vendor_site_rec.create_debit_memo_flag ,'YES/NO',
10507                                     'PO_LOOKUP_CODES',x_valid);
10508                   IF NOT x_valid THEN
10509                     x_return_status := FND_API.G_RET_STS_ERROR;
10510                     IF g_source = 'IMPORT' THEN
10511                       IF (Insert_Rejections(
10512                        'AP_SUPPLIER_SITES_INT',
10513                         p_vendor_site_rec.vendor_site_interface_id,
10514                        'AP_INVALID_DEBIT_MEMO',
10515                         g_user_id,
10516                         g_login_id,
10517                        'Validate_Vendor_Site') <> TRUE) THEN
10518                        --
10519                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10520                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10521                             l_api_name,'Parameters: '
10522                             ||' Vendor_Site_Interface_Id: '
10523                             ||p_vendor_site_rec.vendor_site_interface_id
10524                             ||' ,Create_Debit_Memo_Flag '
10525                             ||p_vendor_site_rec.create_debit_memo_flag);
10526                         END IF;
10527                       END IF;
10528                     ELSE
10529                         -- Bug 5491139 hkaniven start --
10530                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_DEBIT_MEMO');
10531                         FND_MSG_PUB.ADD;
10532                         -- Bug 5491139 hkaniven end --
10533                     END IF;
10534                   END IF;
10535    		END IF;
10536 
10537 		------------------------------------------------------------------------
10538     		l_debug_info := 'Call to Validate exclude_freight_from_discount';
10539     		------------------------------------------------------------------------
10540         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10541          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10542                 		l_api_name,l_debug_info);
10543     		END IF;
10544 		--
10545 		-- Validate exclude_freight_from_discount
10546 		--
10547    		IF p_vendor_site_rec.exclude_freight_from_discount is NOT NULL THEN
10548 
10549       			Validate_Lookups( 'EXCLUDE_FREIGHT_FROM_DISCOUNT',
10550 				p_vendor_site_rec.exclude_freight_from_discount ,'YES/NO',
10551                                     'PO_LOOKUP_CODES',x_valid);
10552                   IF NOT x_valid THEN
10553                     x_return_status := FND_API.G_RET_STS_ERROR;
10554                     IF g_source = 'IMPORT' THEN
10555                       IF (Insert_Rejections(
10556                        'AP_SUPPLIER_SITES_INT',
10557                         p_vendor_site_rec.vendor_site_interface_id,
10558                        'AP_INVALID_EXC_FR_DISC',
10559                         g_user_id,
10560                         g_login_id,
10561                        'Validate_Vendor_Site') <> TRUE) THEN
10562                        --
10563                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10564                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10565                             l_api_name,'Parameters: '
10566                             ||' Vendor_Site_Interface_Id: '
10567                             ||p_vendor_site_rec.vendor_site_interface_id
10568                             ||' ,Exclude_Freight_From_Discount '
10569                             ||p_vendor_site_rec.exclude_freight_from_discount);
10570                         END IF;
10571                       END IF;
10572                     ELSE
10573                         -- Bug 5491139 hkaniven start --
10574                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_EXC_FR_DISC');
10575                         FND_MSG_PUB.ADD;
10576                         -- Bug 5491139 hkaniven end --
10577                     END IF;
10578                   END IF;
10579    		END IF;
10580 
10581 
10582     		------------------------------------------------------------------------
10583     		l_debug_info := 'Call to Validate hold_future_payments_flag';
10584     		------------------------------------------------------------------------
10585         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10586          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10587                 		l_api_name,l_debug_info);
10588     		END IF;
10589 		--
10590 		-- Validate hold_future_payments_flag
10591 		--
10592    		IF p_vendor_site_rec.hold_future_payments_flag is NOT NULL THEN
10593 
10594      			Validate_Lookups('HOLD_FUTURE_PAYMENTS_FLAG', p_vendor_site_rec.hold_future_payments_flag,'YES/NO',
10595                                     'PO_LOOKUP_CODES', x_valid);
10596                   IF NOT x_valid THEN
10597                     x_return_status := FND_API.G_RET_STS_ERROR;
10598                     IF g_source = 'IMPORT' THEN
10599                       IF (Insert_Rejections(
10600                        'AP_SUPPLIER_SITES_INT',
10601                         p_vendor_site_rec.vendor_site_interface_id,
10602                         'AP_INVALID_HOLD_FUT_PAY',
10603                         g_user_id,
10604                         g_login_id,
10605                        'Validate_Vendor_Site') <> TRUE) THEN
10606                        --
10607                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10608                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10609                             l_api_name,'Parameters: '
10610                             ||' Vendor_Site_Interface_Id: '
10611                             ||p_vendor_site_rec.vendor_site_interface_id
10612                             ||' ,Hold_Future_Payments_Flag '
10613                             ||p_vendor_site_rec.hold_future_payments_flag);
10614                         END IF;
10615                       END IF;
10616                     ELSE
10617                         -- Bug 5491139 hkaniven start --
10618                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_HOLD_FUT_PAY');
10619                         FND_MSG_PUB.ADD;
10620                         -- Bug 5491139 hkaniven end --
10621                     END IF;
10622                   END IF;
10623    		END IF;
10624 
10625     		------------------------------------------------------------------------
10626     		l_debug_info := 'Call to Validate hold_all_payments_flag';
10627     		------------------------------------------------------------------------
10628         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10629          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10630                 		l_api_name,l_debug_info);
10631     		END IF;
10632 		--
10633 		-- Validate hold_all_payments_flag
10634 		--
10635    		IF p_vendor_site_rec.hold_all_payments_flag is NOT NULL THEN
10636 
10637       			Validate_Lookups('HOLD_ALL_PAYMENTS_FLAG', p_vendor_site_rec.hold_all_payments_flag,'YES/NO',
10638                                     'PO_LOOKUP_CODES', x_valid);
10639                   IF NOT x_valid THEN
10640                     x_return_status := FND_API.G_RET_STS_ERROR;
10641                     IF g_source = 'IMPORT' THEN
10642                       IF (Insert_Rejections(
10643                        'AP_SUPPLIER_SITES_INT',
10644                         p_vendor_site_rec.vendor_site_interface_id,
10645                        'AP_INVALID_HOLD_ALL_PAY',
10646                         g_user_id,
10647                         g_login_id,
10648                        'Validate_Vendor_Site') <> TRUE) THEN
10649                        --
10650                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10651                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10652                             l_api_name,'Parameters: '
10653                             ||' Vendor_Site_Interface_Id: '
10654                             ||p_vendor_site_rec.vendor_site_interface_id
10655                             ||' ,Hold_All_Payments_Flag '
10656                             ||p_vendor_site_rec.hold_all_payments_flag);
10657                         END IF;
10658                       END IF;
10659                     ELSE
10660                         -- Bug 5491139 hkaniven start --
10661                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_HOLD_ALL_PAY');
10662                         FND_MSG_PUB.ADD;
10663                         -- Bug 5491139 hkaniven end --
10664                     END IF;
10665                   END IF;
10666    		END IF;
10667 
10668     		------------------------------------------------------------------------
10669     		l_debug_info := 'Call to Validate always_take_disc_flag';
10670     		------------------------------------------------------------------------
10671         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10672          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10673                 		l_api_name,l_debug_info);
10674     		END IF;
10675 		--
10676 		-- Validate always_take_disc_flag
10677 		--
10678    		IF p_vendor_site_rec.always_take_disc_flag is NOT NULL THEN
10679 
10680       			Validate_Lookups( 'ALWAYS_TAKE_DISC_FLAG', p_vendor_site_rec.always_take_disc_flag,'YES/NO',
10681                                     'PO_LOOKUP_CODES', x_valid);
10682                   IF NOT x_valid THEN
10683                     x_return_status := FND_API.G_RET_STS_ERROR;
10684                     IF g_source = 'IMPORT' THEN
10685                       IF (Insert_Rejections(
10686                        'AP_SUPPLIER_SITES_INT',
10687                         p_vendor_site_rec.vendor_site_interface_id,
10688                        'AP_INVALID_TAKE_DISC',
10689                         g_user_id,
10690                         g_login_id,
10691                        'Validate_Vendor_Site') <> TRUE) THEN
10692                        --
10693                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10694                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10695                             l_api_name,'Parameters: '
10696                             ||' Vendor_Site_Interface_Id: '
10697                             ||p_vendor_site_rec.vendor_site_interface_id
10698                             ||' ,Always_Take_Disc_Flag '
10699                             ||p_vendor_site_rec.always_take_disc_flag);
10700                         END IF;
10701                       END IF;
10702                     ELSE
10703                         -- Bug 5491139 hkaniven start --
10704                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_TAKE_DISC');
10705                         FND_MSG_PUB.ADD;
10706                         -- Bug 5491139 hkaniven end --
10707                     END IF;
10708                   END IF;
10709    		END IF;
10710 
10711     		------------------------------------------------------------------------
10712     		l_debug_info := 'Call to Validate match_option';
10713     		------------------------------------------------------------------------
10714         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10715          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10716                 		l_api_name,l_debug_info);
10717     		END IF;
10718 		--
10719 		-- Validate match_option
10720 		--
10721    		IF p_vendor_site_rec.match_option is NOT NULL THEN
10722 
10723      			Check_Valid_Match_Option(p_vendor_site_rec.match_option,
10724                               x_valid
10725                               );
10726                   IF NOT x_valid THEN
10727                     x_return_status := FND_API.G_RET_STS_ERROR;
10728                     IF g_source = 'IMPORT' THEN
10729                       IF (Insert_Rejections(
10730                        'AP_SUPPLIER_SITES_INT',
10731                         p_vendor_site_rec.vendor_site_interface_id,
10732                        'AP_INVALID_MATCH_OPTION',
10733                         g_user_id,
10734                         g_login_id,
10735                        'Validate_Vendor_Site') <> TRUE) THEN
10736                        --
10737                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10738                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10739                             l_api_name,'Parameters: '
10740                             ||' Vendor_Site_Interface_Id: '
10741                             ||p_vendor_site_rec.vendor_site_interface_id
10742                             ||' ,Match_Option '
10743                             ||p_vendor_site_rec.match_option);
10744                         END IF;
10745                       END IF;
10746                     ELSE
10747                         -- Bug 5491139 hkaniven start --
10748                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_MATCH_OPTION');
10749                         FND_MSG_PUB.ADD;
10750                         -- Bug 5491139 hkaniven end --
10751                     END IF;
10752                   END IF;
10753    		END IF;
10754 
10755     		------------------------------------------------------------------------
10756     		l_debug_info := 'Call to Validate allow_awt_flag';
10757     		------------------------------------------------------------------------
10758         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10759          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10760                 		l_api_name,l_debug_info);
10761     		END IF;
10762 		--
10763 		-- Validate allow_awt_flag
10764 		--
10765    		IF p_vendor_site_rec.allow_awt_flag is NOT NULL THEN
10766 
10767         		Chk_allow_awt_flag(p_vendor_site_rec.allow_awt_flag,
10768 			   p_vendor_site_rec.org_id,
10769                            x_valid
10770                            );
10771                   IF NOT x_valid THEN
10772                     x_return_status := FND_API.G_RET_STS_ERROR;
10773                     IF g_source = 'IMPORT' THEN
10774                       IF (Insert_Rejections(
10775                        'AP_SUPPLIER_SITES_INT',
10776                         p_vendor_site_rec.vendor_site_interface_id,
10777                        'AP_INVALID_ALLOW_AWT',
10778                         g_user_id,
10779                         g_login_id,
10780                        'Validate_Vendor_Site') <> TRUE) THEN
10781                        --
10782                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10783                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10784                             l_api_name,'Parameters: '
10785                             ||' Vendor_Site_Interface_Id: '
10786                             ||p_vendor_site_rec.vendor_site_interface_id
10787                             ||' ,Allow_Awt_Flag '
10788                             ||p_vendor_site_rec.allow_awt_flag);
10789                         END IF;
10790                       END IF;
10791                     ELSE
10792                         -- Bug 5491139 hkaniven start --
10793                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_ALLOW_AWT');
10794                         FND_MSG_PUB.ADD;
10795                         -- Bug 5491139 hkaniven end --
10796                     END IF;
10797                   END IF;
10798    		END IF;
10799 
10800     		------------------------------------------------------------------------
10801     		l_debug_info := 'Call to Validate awt_group_id and awt_group_name';
10802     		------------------------------------------------------------------------
10803         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10804          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10805                 		l_api_name,l_debug_info);
10806     		END IF;
10807 		--
10808 		-- Validate awt_group_id and awt_group_name
10809 		--
10810 		--Bug6317600 Added conditions to resolve the null case for AWT
10811 		--Do not call the AWT validation if AWT_FLAG is not 'Y'
10812   		IF ((p_vendor_site_rec.awt_group_id is NOT NULL AND
10813                  p_vendor_site_rec.awt_group_id <> ap_null_num)
10814 		or (p_vendor_site_rec.awt_group_name is NOT NULL AND
10815                 p_vendor_site_rec.awt_group_name <> ap_null_char)) AND
10816 		(p_vendor_site_rec.allow_awt_flag = 'Y')    THEN
10817 
10818         		Chk_awt_grp_id_name(p_vendor_site_rec.awt_group_id,
10819                             p_vendor_site_rec.awt_group_name,
10820                             p_vendor_site_rec.allow_awt_flag,
10821                             x_valid
10822                             );
10823                   IF NOT x_valid THEN
10824                     x_return_status := FND_API.G_RET_STS_ERROR;
10825                     IF g_source = 'IMPORT' THEN
10826                       IF (Insert_Rejections(
10827                        'AP_SUPPLIER_SITES_INT',
10828                         p_vendor_site_rec.vendor_site_interface_id,
10829                        'AP_INCONSISTENT_AWT_GROUP',
10830                         g_user_id,
10831                         g_login_id,
10832                        'Validate_Vendor_Site') <> TRUE) THEN
10833                        --
10834                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10835                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10836                             l_api_name,'Parameters: '
10837                             ||' Vendor_Site_Interface_Id: '
10838                             ||p_vendor_site_rec.vendor_site_interface_id
10839                             ||' ,Allow_Awt_Flag '
10840                             ||p_vendor_site_rec.allow_awt_flag
10841                             ||' , Awt_Group_Id: '||p_vendor_site_rec.awt_group_id
10842                             ||' ,Awt_Group_Name: '||p_vendor_site_rec.awt_group_name);
10843                         END IF;
10844                       END IF;
10845                     ELSE
10846                         -- Bug 5491139 hkaniven start --
10847                         FND_MESSAGE.SET_NAME('SQLAP','AP_INCONSISTENT_AWT_GROUP');
10848                         FND_MSG_PUB.ADD;
10849                         -- Bug 5491139 hkaniven end --
10850                     END IF;
10851                   END IF;
10852   		END IF;
10853 
10854 		------------------------------------------------------------------------
10855     		l_debug_info := 'Call to Validate Distribution_set_Id and Distribution_set_name';
10856     		------------------------------------------------------------------------
10857         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10858          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10859                 		l_api_name,l_debug_info);
10860     		END IF;
10861 
10862 		-- Distribution_set_Id and Distribution_set_name validation
10863 
10864    		IF (p_vendor_site_rec.distribution_set_id is NOT NULL OR p_vendor_site_rec.distribution_set_name is NOT NULL
10865         		OR p_vendor_site_rec.default_dist_set_id is NOT NULL) THEN
10866 
10867         		Check_dist_set_id_name(p_vendor_site_rec.distribution_set_id,
10868                                p_vendor_site_rec.distribution_set_name,
10869                                p_vendor_site_rec.default_dist_set_id,
10870                                x_valid);
10871                   IF NOT x_valid THEN
10872                     x_return_status := FND_API.G_RET_STS_ERROR;
10873                     IF g_source = 'IMPORT' THEN
10874                       IF (Insert_Rejections(
10875                        'AP_SUPPLIER_SITES_INT',
10876                         p_vendor_site_rec.vendor_site_interface_id,
10877                        'AP_INCONSISTENT_DIST_SET',
10878                         g_user_id,
10879                         g_login_id,
10880                        'Validate_Vendor_Site') <> TRUE) THEN
10881                        --
10882                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10883                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10884                             l_api_name,'Parameters: '
10885                             ||' Vendor_Site_Interface_Id: '
10886                             ||p_vendor_site_rec.vendor_site_interface_id
10887                             ||' ,Distribution_Set_Id '
10888                             ||p_vendor_site_rec.distribution_set_id
10889                             ||' , Distribution_Set_Name: '
10890                             ||p_vendor_site_rec.distribution_set_name
10891                             ||' ,Default_Dist_Set_Id: '
10892                             ||p_vendor_site_rec.default_dist_set_id);
10893                         END IF;
10894                       END IF;
10895                     ELSE
10896                         -- Bug 5491139 hkaniven start --
10897                         FND_MESSAGE.SET_NAME('SQLAP','AP_INCONSISTENT_DIST_SET');
10898                         FND_MSG_PUB.ADD;
10899                         -- Bug 5491139 hkaniven end --
10900                     END IF;
10901                   END IF;
10902    		END IF;
10903 
10904     		------------------------------------------------------------------------
10905     		l_debug_info := 'Call to Validate Ship_to_location_Id and Ship_to_location_code`';
10906     		------------------------------------------------------------------------
10907         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10908          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10909                 		l_api_name,l_debug_info);
10910     		END IF;
10911 
10912 		-- Ship_to_location_Id and Ship_to_location_code validation
10913 
10914    		IF (p_vendor_site_rec.ship_to_location_id is NOT NULL OR p_vendor_site_rec.ship_to_location_code is NOT NULL
10915        			OR p_vendor_site_rec.default_ship_to_loc_id is NOT NULL) THEN
10916 
10917         		Check_ship_locn_id_code(p_vendor_site_rec.ship_to_location_id,
10918                                p_vendor_site_rec.ship_to_location_code,
10919                                p_vendor_site_rec.default_ship_to_loc_id,
10920                                x_valid);
10921                   IF NOT x_valid THEN
10922                     x_return_status := FND_API.G_RET_STS_ERROR;
10923                     IF g_source = 'IMPORT' THEN
10924                       IF (Insert_Rejections(
10925                        'AP_SUPPLIER_SITES_INT',
10926                         p_vendor_site_rec.vendor_site_interface_id,
10927                        'AP_INCONSISTENT_SHIP_LOC',
10928                         g_user_id,
10929                         g_login_id,
10930                        'Validate_Vendor_Site') <> TRUE) THEN
10931                        --
10932                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10933                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10934                             l_api_name,'Parameters: '
10935                             ||' Vendor_Site_Interface_Id: '
10936                             ||p_vendor_site_rec.vendor_site_interface_id
10937                             ||' ,Ship_To_Location_Id '
10938                             ||p_vendor_site_rec.ship_to_location_id
10939                             ||' , Ship_To_Location_Code '
10940                             ||p_vendor_site_rec.ship_to_location_code
10941                             ||' ,Default_ship_to_loc_Id: '
10942                             ||p_vendor_site_rec.default_ship_to_loc_id);
10943                         END IF;
10944                       END IF;
10945                     ELSE
10946                         -- Bug 5491139 hkaniven start --
10947                         FND_MESSAGE.SET_NAME('SQLAP','AP_INCONSISTENT_SHIP_LOC');
10948                         FND_MSG_PUB.ADD;
10949                         -- Bug 5491139 hkaniven end --
10950                     END IF;
10951                   END IF;
10952    		END IF;
10953 
10954     		------------------------------------------------------------------------
10955     		l_debug_info := 'Call to Validate Bill_to_location_Id and Bill_to_location_code';
10956     		------------------------------------------------------------------------
10957         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10958          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
10959                 		l_api_name,l_debug_info);
10960     		END IF;
10961 
10962 		-- Bill_to_location_Id and Bill_to_location_code validation
10963 
10964    		IF (p_vendor_site_rec.bill_to_location_id is NOT NULL OR p_vendor_site_rec.bill_to_location_code is NOT NULL
10965        			OR p_vendor_site_rec.default_bill_to_loc_id is NOT NULL) THEN
10966 
10967         		Check_bill_locn_id_code(p_vendor_site_rec.bill_to_location_id,
10968                                p_vendor_site_rec.bill_to_location_code,
10969                                p_vendor_site_rec.default_bill_to_loc_id,
10970                                x_valid);
10971                   IF NOT x_valid THEN
10972                     x_return_status := FND_API.G_RET_STS_ERROR;
10973                     IF g_source = 'IMPORT' THEN
10974                       IF (Insert_Rejections(
10975                        'AP_SUPPLIER_SITES_INT',
10976                         p_vendor_site_rec.vendor_site_interface_id,
10977                        'AP_INCONSISTENT_BILL_LOC',
10978                         g_user_id,
10979                         g_login_id,
10980                        'Validate_Vendor_Site') <> TRUE) THEN
10981                        --
10982                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10983                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
10984                             l_api_name,'Parameters: '
10985                             ||' Vendor_Site_Interface_Id: '
10986                             ||p_vendor_site_rec.vendor_site_interface_id
10987                             ||' ,Bill_To_Location_Id '
10988                             ||p_vendor_site_rec.bill_to_location_id
10989                             ||' , Bill_To_Location_Code '
10990                             ||p_vendor_site_rec.bill_to_location_code
10991                             ||' ,Default_bill_to_loc_Id: '
10992                             ||p_vendor_site_rec.default_bill_to_loc_id);
10993                         END IF;
10994                       END IF;
10995                     ELSE
10996                         -- Bug 5491139 hkaniven start --
10997                         FND_MESSAGE.SET_NAME('SQLAP','AP_INCONSISTENT_BILL_LOC');
10998                         FND_MSG_PUB.ADD;
10999                         -- Bug 5491139 hkaniven end --
11000                     END IF;
11001                   END IF;
11002    		END IF;
11003 
11004 		------------------------------------------------------------------------
11005     		l_debug_info := 'Call to Validate supplier_notification_method';
11006     		------------------------------------------------------------------------
11007         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11008          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
11009                 		l_api_name,l_debug_info);
11010     		END IF;
11011 		--
11012 		-- Validate supplier_notification_method
11013 		--
11014    		IF p_vendor_site_rec.supplier_notif_method is NOT NULL THEN
11015 
11016    			 Check_Valid_Sup_Notif_Method(p_vendor_site_rec.supplier_notif_method,
11017                                  x_valid
11018                                  );
11019                   IF NOT x_valid THEN
11020                     x_return_status := FND_API.G_RET_STS_ERROR;
11021                     IF g_source = 'IMPORT' THEN
11022                       IF (Insert_Rejections(
11023                        'AP_SUPPLIER_SITES_INT',
11024                         p_vendor_site_rec.vendor_site_interface_id,
11025                         'AP_INVALID_NOTIF_METHOD',
11026                         g_user_id,
11027                         g_login_id,
11028                        'Validate_Vendor_Site') <> TRUE) THEN
11029                        --
11030                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
11031                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
11032                             l_api_name,'Parameters: '
11033                             ||' Vendor_Site_Interface_Id: '
11034                             ||p_vendor_site_rec.vendor_site_interface_id
11035                             ||' ,Supplier_Notif_Method: '
11036                             ||p_vendor_site_rec.supplier_notif_method);
11037                         END IF;
11038                       END IF;
11039                     ELSE
11040                         -- Bug 5491139 hkaniven start --
11041                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_NOTIF_METHOD');
11042                         FND_MSG_PUB.ADD;
11043                         -- Bug 5491139 hkaniven end --
11044                     END IF;
11045                   END IF;
11046    		END IF;
11047 
11048     		------------------------------------------------------------------------
11049     		l_debug_info := 'Checking Tolerance_Id / Name information';
11050    		------------------------------------------------------------------------
11051         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11052          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
11053                 		l_api_name,l_debug_info);
11054     		END IF;
11055                 --bug6335105
11056 		/*IF (p_vendor_site_rec.tolerance_name is NOT NULL
11057        			OR p_vendor_site_rec.tolerance_id is NOT NULL) THEN*/
11058 
11059                         l_tolerance_type := 'QUANTITY';
11060 
11061       			Check_tolerance_id_code(p_vendor_site_rec.tolerance_id,
11062                               p_vendor_site_rec.tolerance_name,
11063                               p_vendor_site_rec.org_id,
11064                               p_vendor_site_rec.org_name,
11065                               x_valid,
11066                               l_tolerance_type
11067                               );
11068                   IF NOT x_valid THEN
11069                     x_return_status := FND_API.G_RET_STS_ERROR;
11070                     IF g_source = 'IMPORT' THEN
11071                       IF (Insert_Rejections(
11072                        'AP_SUPPLIER_SITES_INT',
11073                         p_vendor_site_rec.vendor_site_interface_id,
11074                        'AP_INCONSISTENT_TOLERANCE',
11075                         g_user_id,
11076                         g_login_id,
11077                        'Validate_Vendor_Site') <> TRUE) THEN
11078                        --
11079                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
11080                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
11081                             l_api_name,'Parameters: '
11082                             ||' Vendor_Site_Interface_Id: '
11083                             ||p_vendor_site_rec.vendor_site_interface_id
11084                             ||' ,Toleranace_Id: '
11085                             ||p_vendor_site_rec.tolerance_id
11086                             ||' ,Tolerance_Name: '||p_vendor_site_rec.tolerance_name);
11087                         END IF;
11088                       END IF;
11089                     ELSE
11090                         -- Bug 5491139 hkaniven start --
11091                         FND_MESSAGE.SET_NAME('SQLAP','AP_INCONSISTENT_TOLERANCE');
11092                         FND_MSG_PUB.ADD;
11093                         -- Bug 5491139 hkaniven end --
11094                     END IF;
11095                   END IF;
11096 	        --END IF;
11097 
11098                 ------------------------------------------------------------------------
11099                 l_debug_info := 'Checking Services Tolerance_Id / Name information';
11100                 ------------------------------------------------------------------------
11101                 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11102                         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
11103                                 l_api_name,l_debug_info);
11104                 END IF;
11105                 --bug6335105
11106                 /*IF (p_vendor_site_rec.services_tolerance_name is NOT NULL
11107                         OR p_vendor_site_rec.services_tolerance_id is NOT NULL) THEN*/
11108 
11109                         l_tolerance_type := 'SERVICE';
11110 
11111                         Check_tolerance_id_code(p_vendor_site_rec.services_tolerance_id,
11112                               p_vendor_site_rec.services_tolerance_name,
11113                               p_vendor_site_rec.org_id,
11114                               p_vendor_site_rec.org_name,
11115                               x_valid,
11116                               l_tolerance_type
11117                               );
11118                   IF NOT x_valid THEN
11119                     x_return_status := FND_API.G_RET_STS_ERROR;
11120                     IF g_source = 'IMPORT' THEN
11121                       IF (Insert_Rejections(
11122                        'AP_SUPPLIER_SITES_INT',
11123                         p_vendor_site_rec.vendor_site_interface_id,
11124                        'AP_INCONSISTENT_SERVICE_TOL',
11125                         g_user_id,
11126                         g_login_id,
11127                        'Validate_Vendor_Site') <> TRUE) THEN
11128                        --
11129                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
11130                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
11131                             l_api_name,'Parameters: '
11132                             ||' Vendor_Site_Interface_Id: '
11133                             ||p_vendor_site_rec.vendor_site_interface_id
11134                             ||' ,Toleranace_Id: '
11135                             ||p_vendor_site_rec.services_tolerance_id
11136                             ||' ,Tolerance_Name: '||p_vendor_site_rec.services_tolerance_name);
11137                         END IF;
11138                       END IF;
11139                     ELSE
11140                         -- Bug 5491139 hkaniven start --
11141                         FND_MESSAGE.SET_NAME('SQLAP','AP_INCONSIS_SERVICE_TOL');
11142                         FND_MSG_PUB.ADD;
11143                         -- Bug 5491139 hkaniven end --
11144                     END IF;
11145                   END IF;
11146                 --END IF;
11147 
11148 
11149                 ------------------------------------------------------------------------
11150                 l_debug_info := 'Call to Validate retainage_rate';
11151                 ------------------------------------------------------------------------
11152                 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11153                         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
11154                                 l_api_name,l_debug_info);
11155                 END IF;
11156 
11157                 IF p_vendor_site_rec.retainage_rate is NOT NULL THEN
11158 
11159                    IF NOT (p_vendor_site_rec.retainage_rate <  0    OR
11160 			   p_vendor_site_rec.retainage_rate >  100) THEN
11161 
11162                       x_return_status := FND_API.G_RET_STS_ERROR;
11163                       IF g_source = 'IMPORT' THEN
11164                          IF (Insert_Rejections(
11165                                 'AP_SUPPLIER_SITES_INT',
11166                                 p_vendor_site_rec.vendor_site_interface_id,
11167                                 'AP_INVALID_RETAINAGE_RATE',
11168                                 g_user_id,
11169                                 g_login_id,
11170                                 'Validate_Vendor_Site') <> TRUE) THEN
11171                             --
11172                             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
11173                                FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
11174                                                     l_api_name,'Parameters: '
11175                                                 ||' Vendor_Site_Interface_Id: '
11176                                                 ||p_vendor_site_rec.vendor_site_interface_id
11177                                                 ||' ,Retainage_Rate '
11178                                                 ||p_vendor_site_rec.retainage_rate);
11179                             END IF;
11180                          END IF;
11181                         ELSE
11182                             -- Bug 5491139 hkaniven start --
11183                             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_RETAINAGE_RATE');
11184                             FND_MSG_PUB.ADD;
11185                             -- Bug 5491139 hkaniven end --
11186                       END IF;
11187                    END IF;
11188                 END IF;
11189 
11190     		------------------------------------------------------------------------
11191     		l_debug_info := 'Call to Validate ship_via_lookup_code';
11192     		------------------------------------------------------------------------
11193         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11194          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
11195                 		l_api_name,l_debug_info);
11196     		END IF;
11197 		--
11198 		-- Validate ship_via_lookup_code
11199 		--
11200    		IF p_vendor_site_rec.ship_via_lookup_code is NOT NULL THEN
11201 
11202             		Check_Site_Ship_Via(p_vendor_site_rec.ship_via_lookup_code,
11203                                 p_vendor_site_rec.org_id,
11204                                 x_valid
11205                               );
11206                   IF NOT x_valid THEN
11207                     x_return_status := FND_API.G_RET_STS_ERROR;
11208                     IF g_source = 'IMPORT' THEN
11209                       IF (Insert_Rejections(
11210                        'AP_SUPPLIER_SITES_INT',
11211                         p_vendor_site_rec.vendor_site_interface_id,
11212                        'AP_INVALID_SHIP_VIA',
11213                         g_user_id,
11214                         g_login_id,
11215                        'Validate_Vendor_Site') <> TRUE) THEN
11216                        --
11217                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
11218                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
11219                             l_api_name,'Parameters: '
11220                             ||' Vendor_Site_Interface_Id: '
11221                             ||p_vendor_site_rec.vendor_site_interface_id
11222                             ||' ,Ship_Via_Lookup_Code: '
11223                             ||p_vendor_site_rec.ship_via_lookup_code);
11224                         END IF;
11225                       END IF;
11226                     ELSE
11227                         -- Bug 5491139 hkaniven start --
11228                         FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_SHIP_VIA');
11229                         FND_MSG_PUB.ADD;
11230                         -- Bug 5491139 hkaniven end --
11231                     END IF;
11232                   END IF;
11233    		END IF;
11234 
11235     		------------------------------------------------------------------------
11236     		l_debug_info := 'Call to Validate tax_reporting_site_flag';
11237     		------------------------------------------------------------------------
11238         	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11239          		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
11240                 		l_api_name,l_debug_info);
11241     		END IF;
11242 		--
11243 		-- Validate tax_reporting_site_flag
11244 		--
11245    		IF p_vendor_site_rec.tax_reporting_site_flag = 'Y' THEN
11246 
11247 			Validate_unique_per_vendor('TAX_REPORTING_SITE_FLAG',
11248                         p_vendor_site_rec.vendor_id,
11249                         p_vendor_site_rec.vendor_site_id,
11250   			p_vendor_site_rec.org_id,
11251                         p_vendor_site_rec.org_name,
11252                         x_valid
11253                         );
11254                   IF NOT x_valid THEN
11255                     x_return_status := FND_API.G_RET_STS_ERROR;
11256                     IF g_source = 'IMPORT' THEN
11257                       IF (Insert_Rejections(
11258                        'AP_SUPPLIER_SITES_INT',
11259                         p_vendor_site_rec.vendor_site_interface_id,
11260                        'AP_DUPLICATE_TAX_RS',
11261                         g_user_id,
11262                         g_login_id,
11263                        'Validate_Vendor_Site') <> TRUE) THEN
11264                        --
11265                         IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
11266                           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
11267                             l_api_name,'Parameters: '
11268                             ||' Vendor_Site_Interface_Id: '
11269                             ||p_vendor_site_rec.vendor_site_interface_id
11270                             ||' Vendor_Id: '||p_vendor_site_rec.vendor_id
11271                             ||' Vendor_Site_Id: '||p_vendor_site_rec.vendor_site_id
11272                             ||' Org_Id: '||p_vendor_site_rec.org_id
11273                             ||' Org_Name: '||p_vendor_site_rec.org_name
11274                             ||' ,Tax_Reporting_Site_Flag: '
11275                             ||p_vendor_site_rec.tax_reporting_site_flag);
11276                         END IF;
11277                       END IF;
11278                     ELSE
11279                         -- Bug 5491139 hkaniven start --
11280                         FND_MESSAGE.SET_NAME('SQLAP','AP_DUPLICATE_TAX_RS');
11281                         FND_MSG_PUB.ADD;
11282                         -- Bug 5491139 hkaniven end --
11283                     END IF;
11284                   END IF;
11285    		END IF;
11286 
11287                 IF p_vendor_site_rec.gapless_inv_num_flag is NOT NULL
11288                    AND p_vendor_site_rec.gapless_inv_num_flag  <>
11289                        ap_null_char THEN
11290 
11291                    Check_Gapless_Inv_Num
11292                           (p_vendor_site_rec.gapless_inv_num_flag,
11293                            p_vendor_site_rec.selling_company_identifier,
11294 			   p_vendor_site_rec.vendor_id,--Bug5260465
11295                            x_valid);
11296 
11297                    IF NOT x_valid THEN
11298                       x_return_status := FND_API.G_RET_STS_ERROR;
11299                       IF g_source = 'IMPORT' THEN
11300                          IF (Insert_Rejections(
11301                                      'AP_SUPPLIER_SITES_INT',
11302                                      p_vendor_site_rec.vendor_site_interface_id,
11303                                      'AP_INVALID_SHIPPING_CONTROL',
11304                                      g_user_id,
11305                                      g_login_id,
11306                                      'Validate_Vendor_Site') <> TRUE) THEN
11307                           --
11308                             IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL)
11309                             THEN
11310                                FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
11311                                               l_api_name,'Parameters: '
11312                                               ||' Vendor_Site_Interface_Id: '
11313                                               ||p_vendor_site_rec.vendor_site_interface_id
11314                                               ||' Gapless Invoice Num Flag: '
11315                                               ||p_vendor_site_rec.gapless_inv_num_flag
11316                                               ||' Selling Company Identifier: '
11317                                               ||p_vendor_site_rec.selling_company_identifier);
11318                             END IF;
11319                          END IF;
11320                         ELSE
11321                             -- Bug 5491139 hkaniven start --
11322                             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_SHIPPING_CONTROL');
11323                             FND_MSG_PUB.ADD;
11324                             -- Bug 5491139 hkaniven end --
11325                       END IF;
11326                    END IF;
11327                 END IF;
11328 
11329 
11330 	END IF; -- not ISETUP
11331     END IF; --p_mode
11332 
11333     -- End of API body.
11334 
11335     -- Standard check of p_commit.
11336     IF FND_API.To_Boolean( p_commit ) THEN
11337 	COMMIT WORK;
11338     END IF;
11339 
11340     -- Standard call to get message count and if count is 1,
11341     -- get message info.
11342     FND_MSG_PUB.Count_And_Get(
11343 	p_count         	=>      x_msg_count     	,
11344         p_data          	=>      x_msg_data
11345     	);
11346 
11347 EXCEPTION
11348     WHEN FND_API.G_EXC_ERROR THEN
11349 		ROLLBACK TO Validate_Vendor_Site_PUB;
11350 		x_return_status := FND_API.G_RET_STS_ERROR ;
11351 		FND_MSG_PUB.Count_And_Get
11352     		(  	p_count         	=>      x_msg_count,
11353         		p_data          	=>      x_msg_data
11354     		);
11355 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
11356 		ROLLBACK TO Validate_Vendor_Site_PUB;
11357 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
11358 		FND_MSG_PUB.Count_And_Get
11359     		(  	p_count         	=>      x_msg_count,
11360         		p_data          	=>      x_msg_data
11361     		);
11362 	WHEN OTHERS THEN
11363 		ROLLBACK TO Validate_Vendor_Site_PUB;
11364 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
11365   		IF 	FND_MSG_PUB.Check_Msg_Level
11366 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
11367         		FND_MSG_PUB.Add_Exc_Msg
11368     	    		(	G_PKG_NAME  	    ,
11369     	    			l_api_name
11370 	    		);
11371 		END IF;
11372 		FND_MSG_PUB.Count_And_Get
11373     		(  	p_count         	=>      x_msg_count,
11374         		p_data          	=>      x_msg_data
11375     		);
11376 END Validate_Vendor_Site;
11377 
11378 PROCEDURE Create_Vendor_Contact
11379 ( 	p_api_version           IN	NUMBER,
11380   	p_init_msg_list		IN	VARCHAR2 := FND_API.G_FALSE	,
11381 	p_commit	    	IN  	VARCHAR2 := FND_API.G_FALSE,
11382 	p_validation_level	IN  	NUMBER	:=
11383 						FND_API.G_VALID_LEVEL_FULL,
11384 	x_return_status		OUT	NOCOPY VARCHAR2		  	,
11385 	x_msg_count		OUT	NOCOPY NUMBER,
11386 	x_msg_data		OUT	NOCOPY VARCHAR2,
11387 	p_vendor_contact_rec	IN	r_vendor_contact_rec_type,
11388 	x_vendor_contact_id	OUT	NOCOPY NUMBER,
11389 	x_per_party_id		OUT	NOCOPY NUMBER,
11390 	x_rel_party_id		OUT 	NOCOPY NUMBER,
11391 	x_rel_id		OUT	NOCOPY NUMBER,
11392 	x_org_contact_id	OUT	NOCOPY NUMBER,
11393 	x_party_site_id		OUT	NOCOPY NUMBER
11394 )
11395 IS
11396 
11397 
11398     l_api_name			CONSTANT VARCHAR2(30)	:= 'Create_Vendor_Contact';
11399     l_api_version           	CONSTANT NUMBER 		:= 1.0;
11400 
11401     l_def_org_id		NUMBER;
11402     l_vendor_contact_rec	r_vendor_contact_rec_type;
11403     l_party_rec			HZ_PARTY_V2PUB.party_rec_type;
11404     l_per_rec			HZ_PARTY_V2PUB.person_rec_type;
11405     l_rel_rec			HZ_RELATIONSHIP_V2PUB.relationship_rec_type;
11406     l_org_contact_rec		HZ_PARTY_CONTACT_V2PUB.org_contact_rec_type;
11407     l_party_site_rec		HZ_PARTY_SITE_V2PUB.party_site_rec_type;
11408     l_contact_point_rec		HZ_CONTACT_POINT_V2PUB.contact_point_rec_type;
11409     l_email_rec			HZ_CONTACT_POINT_V2PUB.email_rec_type;
11410     l_phone_rec			HZ_CONTACT_POINT_V2PUB.phone_rec_type;
11411     l_alt_phone_rec		HZ_CONTACT_POINT_V2PUB.phone_rec_type;
11412     l_fax_rec			HZ_CONTACT_POINT_V2PUB.phone_rec_type;
11413     l_url_rec			HZ_CONTACT_POINT_V2PUB.web_rec_type;
11414     l_party_usg_rec   HZ_PARTY_USG_ASSIGNMENT_PVT.party_usg_assignment_rec_type;
11415 
11416     l_user_id                number := FND_GLOBAL.USER_ID;
11417     l_last_update_login      number := FND_GLOBAL.LOGIN_ID;
11418     l_program_application_id number := FND_GLOBAL.prog_appl_id;
11419     l_program_id             number := FND_GLOBAL.conc_program_id;
11420     l_request_id             number := FND_GLOBAL.conc_request_id;
11421 
11422     l_val_return_status VARCHAR2(50);
11423     l_val_msg_count		NUMBER;
11424     l_val_msg_data		VARCHAR2(1000);
11425     l_party_site_valid 	VARCHAR2(1);
11426     l_rel_party_valid	VARCHAR2(1);
11427     l_per_party_valid	VARCHAR2(1);
11428     l_rel_valid		VARCHAR2(1);
11429     l_org_party_valid	VARCHAR2(1);
11430     l_location_valid	VARCHAR2(1);
11431     l_org_contact_valid VARCHAR2(1);
11432     l_per_return_status	VARCHAR2(50);
11433     l_per_msg_count		NUMBER;
11434     l_per_msg_data		VARCHAR2(1000);
11435     l_per_party_id		NUMBER;
11436     l_per_party_number	VARCHAR2(30);
11437     l_per_profile_id	NUMBER;
11438     l_org_contact_return_status	VARCHAR2(50);
11439     l_org_contact_msg_count	NUMBER;
11440     l_org_contact_msg_data	VARCHAR2(1000);
11441     l_org_contact_id	NUMBER;
11442     l_rel_party_id		NUMBER;
11443     l_rel_party_number	VARCHAR2(30);
11444     l_site_return_status	VARCHAR2(50);
11445     l_site_msg_count	NUMBER;
11446     l_site_msg_data		VARCHAR2(1000);
11447     l_party_site_id		NUMBER;
11448     l_phone_return_status	VARCHAR2(50);
11449     l_phone_msg_count	NUMBER;
11450     l_phone_msg_data	VARCHAR2(1000);
11451     l_phone_contact_point_id	NUMBER;
11452     l_alt_phone_return_status	VARCHAR2(50);
11453     l_alt_phone_msg_count	NUMBER;
11454     l_alt_phone_msg_data	VARCHAR2(1000);
11455     l_alt_phone_contact_point_id	NUMBER;
11456     l_fax_return_status	VARCHAR2(50);
11457     l_fax_msg_count		NUMBER;
11458     l_fax_msg_data		VARCHAR2(1000);
11459     l_fax_contact_point_id	NUMBER;
11460     l_email_return_status	VARCHAR2(50);
11461     l_email_msg_count	NUMBER;
11462     l_email_msg_data	VARCHAR2(1000);
11463     l_email_contact_point_id	NUMBER;
11464     l_url_return_status	VARCHAR2(50);
11465     l_url_msg_count		NUMBER;
11466     l_url_msg_data		VARCHAR2(1000);
11467     l_url_contact_point_id	NUMBER;
11468 
11469     l_org_party_id		NUMBER;
11470     l_location_id		NUMBER;
11471     l_rel_id			NUMBER;
11472     l_party_id			NUMBER;
11473     l_party_number		VARCHAR2(30);
11474     l_party_site_number		VARCHAR2(30);
11475     l_party_num			VARCHAR2(1);
11476     l_debug_info    VARCHAR2(500); -- Bug 6823885
11477     l_party_site_num			VARCHAR2(1); -- Bug 6823885
11478 
11479 BEGIN
11480 	-- Standard Start of API savepoint
11481     SAVEPOINT	Create_Vendor_Contact_PUB;
11482 
11483     -- Standard call to check for call compatibility.
11484     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
11485         	    	    	    	 	p_api_version        	,
11486    	       	    	 			l_api_name 	    	,
11487 		    	    	    	    	G_PKG_NAME )
11488     THEN
11489 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11490     END IF;
11491 
11492     -- Initialize message list if p_init_msg_list is set to TRUE.
11493     IF FND_API.to_Boolean( p_init_msg_list ) THEN
11494 	FND_MSG_PUB.initialize;
11495     END IF;
11496 
11497     --  Initialize API return status to success
11498     x_return_status := FND_API.G_RET_STS_SUCCESS;
11499 
11500     -- API body
11501 
11502     --default return stati
11503     l_val_return_status := FND_API.G_RET_STS_SUCCESS;
11504     l_per_return_status := FND_API.G_RET_STS_SUCCESS;
11505     l_org_contact_return_status := FND_API.G_RET_STS_SUCCESS;
11506     l_site_return_status := FND_API.G_RET_STS_SUCCESS;
11507     l_phone_return_status := FND_API.G_RET_STS_SUCCESS;
11508     l_alt_phone_return_status  := FND_API.G_RET_STS_SUCCESS;
11509     l_fax_return_status  := FND_API.G_RET_STS_SUCCESS;
11510     l_email_return_status := FND_API.G_RET_STS_SUCCESS;
11511     l_url_return_status := FND_API.G_RET_STS_SUCCESS;
11512 
11513     l_vendor_contact_rec := p_vendor_contact_rec;
11514 
11515     validate_vendor_contact(p_api_version => 1.0,
11516 		p_init_msg_list => FND_API.G_FALSE,
11517 		p_commit  => FND_API.G_FALSE,
11518 		p_validation_level => FND_API.G_VALID_LEVEL_FULL,
11519 		x_return_status => l_val_return_status,
11520 		x_msg_count => l_val_msg_count,
11521 		x_msg_data => l_val_msg_data,
11522 		p_vendor_contact_rec => l_vendor_contact_rec,
11523 		x_party_site_valid => l_party_site_valid ,
11524 		x_rel_party_valid => l_rel_party_valid,
11525 		x_per_party_valid => l_per_party_valid,
11526 		x_rel_valid => l_rel_valid,
11527 		x_org_contact_valid => l_org_contact_valid,
11528 		x_org_party_id	=> l_org_party_id,
11529 		x_location_id => l_location_id);
11530 
11531     IF  l_per_party_valid = 'N'  THEN
11532 	 -- create new party record
11533 
11534 	l_per_rec.person_first_name := l_vendor_contact_rec.person_first_name;
11535 	l_per_rec.person_middle_name := l_vendor_contact_rec.person_middle_name;
11536 	l_per_rec.person_last_name := l_vendor_contact_rec.person_last_name;
11537 	l_per_rec.person_title := l_vendor_contact_rec.person_title;
11538 	l_per_rec.person_first_name_phonetic := l_vendor_contact_rec.person_first_name_phonetic;
11539 	l_per_rec.person_last_name_phonetic := l_vendor_contact_rec.person_last_name_phonetic;
11540 	l_per_rec.created_by_module := 'AP_SUPPLIERS_API';
11541 	l_per_rec.application_id := 200;
11542 
11543 	-- bug 6745669 - added attribute_category
11544 	l_per_rec.attribute_category := l_vendor_contact_rec.attribute_category;
11545 
11546 	l_per_rec.attribute1 := l_vendor_contact_rec.attribute1;
11547 	l_per_rec.attribute2 := l_vendor_contact_rec.attribute2;
11548 	l_per_rec.attribute3 := l_vendor_contact_rec.attribute3;
11549 	l_per_rec.attribute4 := l_vendor_contact_rec.attribute4;
11550 	l_per_rec.attribute5 := l_vendor_contact_rec.attribute5;
11551 	l_per_rec.attribute6 := l_vendor_contact_rec.attribute6;
11552 	l_per_rec.attribute7 := l_vendor_contact_rec.attribute7;
11553 	l_per_rec.attribute8 := l_vendor_contact_rec.attribute8;
11554 	l_per_rec.attribute9 := l_vendor_contact_rec.attribute9;
11555 	l_per_rec.attribute10 := l_vendor_contact_rec.attribute10;
11556 	l_per_rec.attribute11 := l_vendor_contact_rec.attribute11;
11557 	l_per_rec.attribute12 := l_vendor_contact_rec.attribute12;
11558 	l_per_rec.attribute13 := l_vendor_contact_rec.attribute13;
11559 	l_per_rec.attribute14 := l_vendor_contact_rec.attribute14;
11560 	l_per_rec.attribute15 := l_vendor_contact_rec.attribute15;
11561 
11562         l_per_rec.person_pre_name_adjunct := l_vendor_contact_rec.prefix;
11563         l_per_rec.person_name_phonetic    := l_vendor_contact_rec.contact_name_phonetic;
11564 
11565 	fnd_profile.get('HZ_GENERATE_PARTY_NUMBER', l_party_num);
11566         IF nvl(l_party_num, 'Y') = 'N' THEN
11567                 SELECT HZ_PARTY_NUMBER_S.Nextval
11568                 INTO l_party_rec.party_number
11569                 FROM DUAL;
11570         END IF;
11571 
11572         l_per_rec.party_rec := l_party_rec;
11573 
11574 	hz_party_v2pub.create_person(
11575 		p_init_msg_list => FND_API.G_FALSE,
11576 		p_person_rec => l_per_rec,
11577 		p_party_usage_code => 'SUPPLIER_CONTACT',
11578         	--p_commit => FND_API.G_FALSE,
11579 		x_return_status => l_per_return_status,
11580 		x_msg_count => l_per_msg_count,
11581 		x_msg_data => l_per_msg_data,
11582 		x_party_id => l_per_party_id,
11583 		x_party_number => l_per_party_number,
11584 		x_profile_id => l_per_profile_id);
11585 		IF l_per_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11586       ------------------------------------------------------------------------
11587       l_debug_info := 'After call to hz_party_v2pub.create_person';
11588       l_debug_info := l_debug_info||' Return status : '||l_per_return_status||' Error : '||l_per_msg_data;
11589       ------------------------------------------------------------------------
11590       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11591         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
11592       END IF;
11593     END IF;
11594 
11595 		l_vendor_contact_rec.per_party_id := l_per_party_id;
11596 
11597     END IF; --party did not exist
11598 
11599     IF l_rel_party_valid = 'N' AND
11600 	l_per_party_valid <> 'F' AND
11601 	l_rel_valid = 'N' AND
11602 	l_org_contact_valid = 'N' THEN -- create new org contact
11603 
11604 	/*checking proper approach
11605 	l_party_usg_rec.party_id := l_per_party_id;
11606 	l_party_usg_rec.party_usage_code := 'ORG_CONTACT';
11607 	l_party_usg_rec.created_by_module := 'AP_SUPPLIERS_API';
11608 
11609 	HZ_PARTY_USG_ASSIGNMENT_PVT.assign_party_usage(
11610 		p_init_msg_list => FND_API.G_FALSE,
11611 		p_party_usg_assignment_rec  => l_party_usg_rec,
11612 		x_return_status => l_per_return_status,
11613                 x_msg_count => l_per_msg_count,
11614                 x_msg_data => l_per_msg_data);
11615 	*/
11616 
11617 	--populate relationship record
11618 
11619 	l_rel_rec.end_date := l_vendor_contact_rec.inactive_date;
11620 	l_rel_rec.subject_id := l_per_party_id;
11621 	l_rel_rec.subject_type := 'PERSON';
11622 	l_rel_rec.subject_table_name := 'HZ_PARTIES';
11623 	l_rel_rec.object_id := l_org_party_id;
11624 	l_rel_rec.object_type := 'ORGANIZATION';
11625 	l_rel_rec.object_table_name := 'HZ_PARTIES';
11626 	l_rel_rec.relationship_code := 'CONTACT_OF';
11627 	l_rel_rec.relationship_type := 'CONTACT';
11628 	l_rel_rec.start_date := sysdate;
11629 	l_rel_rec.created_by_module := 'AP_SUPPLIERS_API';
11630 	l_rel_rec.application_id := 200;
11631 
11632         fnd_profile.get('HZ_GENERATE_PARTY_NUMBER', l_party_num);
11633         IF nvl(l_party_num, 'Y') = 'N' THEN
11634                 SELECT HZ_PARTY_NUMBER_S.Nextval
11635                 INTO l_party_rec.party_number
11636                 FROM DUAL;
11637         END IF;
11638 
11639 	l_rel_rec.party_rec := l_party_rec;
11640 
11641 	--populate org contact record
11642 	l_org_contact_rec.department := l_vendor_contact_rec.department;
11643 	-- job title [Bug 6648967]
11644 	l_org_contact_rec.job_title := l_vendor_contact_rec.person_title;
11645 	--contact_number
11646 	l_org_contact_rec.created_by_module := 'AP_SUPPLIERS_API';
11647 	l_org_contact_rec.application_id := 200;
11648 	l_org_contact_rec.party_rel_rec := l_rel_rec;
11649 
11650 	hz_party_contact_v2pub.create_org_contact(
11651 		p_init_msg_list => FND_API.G_FALSE,
11652 		p_org_contact_rec => l_org_contact_rec,
11653 		--p_commit => FND_API.G_FALSE,
11654 		x_return_status => l_org_contact_return_status,
11655 		x_msg_count => l_org_contact_msg_count,
11656 		x_msg_data => l_org_contact_msg_data,
11657 		x_org_contact_id => l_org_contact_id,
11658 		x_party_rel_id => l_rel_id,
11659 		x_party_id => l_rel_party_id,
11660 		x_party_number => l_rel_party_number);
11661 	IF l_org_contact_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11662     ------------------------------------------------------------------------
11663     l_debug_info := 'After call to hz_party_contact_v2pub.create_org_contact';
11664     l_debug_info := l_debug_info||' Return status : '||l_org_contact_return_status||' Error : '||l_org_contact_msg_data;
11665     ------------------------------------------------------------------------
11666     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11667       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
11668     END IF;
11669   END IF;
11670 
11671 	l_vendor_contact_rec.relationship_id := l_rel_id;
11672 	l_vendor_contact_rec.rel_party_id := l_rel_party_id;
11673 	l_vendor_contact_rec.org_contact_id := l_org_contact_id;
11674 
11675     END IF; -- org contact null
11676 
11677     IF l_rel_party_valid <> 'F' AND
11678 	l_per_party_valid <> 'F' AND
11679 	l_rel_valid <> 'F' AND
11680 	l_org_contact_valid <> 'F' AND
11681 	l_party_site_valid = 'N' THEN -- create new party site
11682 
11683 	--populate party site record
11684 	l_party_site_rec.mailstop := l_vendor_contact_rec.mail_stop;
11685 	l_party_site_rec.location_id := l_location_id;
11686 	l_party_site_rec.created_by_module := 'AP_SUPPLIERS_API';
11687 	l_party_site_rec.application_id := 200;
11688 	l_party_site_rec.party_id :=  l_vendor_contact_rec.rel_party_id;
11689 	-- udhenuko Bug 6823885 start. Party site number populated based on profile.
11690   fnd_profile.get('HZ_GENERATE_PARTY_SITE_NUMBER', l_party_site_num);
11691 	IF nvl(l_party_site_num, 'Y') = 'N' THEN
11692 		SELECT HZ_PARTY_SITE_NUMBER_S.Nextval
11693 		INTO l_party_site_rec.party_site_number
11694 		FROM DUAL;
11695 	END IF;
11696 	-- udhenuko Bug 6823885 End
11697 
11698 	hz_party_site_v2pub.create_party_site(
11699 		p_init_msg_list => FND_API.G_FALSE,
11700 		p_party_site_rec => l_party_site_rec,
11701 		--p_commit => FND_API.G_FALSE,
11702 		x_return_status => l_site_return_status,
11703 		x_msg_count => l_site_msg_count,
11704 		x_msg_data => l_site_msg_data,
11705 		x_party_site_id => l_party_site_id,
11706 		x_party_site_number => l_party_site_number);
11707 	IF l_site_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11708     ------------------------------------------------------------------------
11709     l_debug_info := 'After call to hz_party_site_v2pub.create_party_site';
11710     l_debug_info := l_debug_info||' Return status : '||l_site_return_status||' Error : '||l_site_msg_data;
11711     ------------------------------------------------------------------------
11712     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11713       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
11714     END IF;
11715   END IF;
11716 
11717 	l_vendor_contact_rec.party_site_id := l_party_site_id;
11718 
11719     END IF; -- party site null
11720 
11721     IF l_rel_party_valid <> 'F' AND
11722 	l_per_party_valid <> 'F' AND
11723 	l_rel_valid <> 'F' AND
11724 	l_org_contact_valid <> 'F' AND
11725 	l_party_site_valid <> 'F' THEN -- create contact points
11726 
11727 	--populate contact point record
11728 	l_contact_point_rec.owner_table_name := 'HZ_PARTIES';
11729 	l_contact_point_rec.owner_table_id := l_vendor_contact_rec.rel_party_id;
11730 	l_contact_point_rec.created_by_module := 'AP_SUPPLIERS_API';
11731 	l_contact_point_rec.application_id := 200;
11732 
11733 	IF l_vendor_contact_rec.phone IS NOT NULL THEN
11734 
11735 		--populate primary phone record
11736 
11737 		l_contact_point_rec.contact_point_type := 'PHONE';
11738 		l_contact_point_rec.primary_flag := 'Y';
11739 		l_contact_point_rec.contact_point_purpose := 'BUSINESS';
11740 		l_contact_point_rec.primary_by_purpose := 'Y';
11741 		l_phone_rec.phone_area_code := l_vendor_contact_rec.area_code;
11742 		l_phone_rec.phone_number := l_vendor_contact_rec.phone;
11743                 --
11744                 -- Bug 5117377
11745                 -- Changed the phone line type to GEN.
11746                 --
11747 		l_phone_rec.phone_line_type := 'GEN';
11748 
11749 		hz_contact_point_v2pub.create_phone_contact_point(
11750 			p_init_msg_list => FND_API.G_FALSE,
11751 			p_contact_point_rec => l_contact_point_rec,
11752 			p_phone_rec => l_phone_rec,
11753 			--p_commit => FND_API.G_FALSE,
11754 			x_return_status => l_phone_return_status,
11755 			x_msg_count => l_phone_msg_count,
11756 			x_msg_data => l_phone_msg_data,
11757 			x_contact_point_id => l_phone_contact_point_id);
11758 		IF l_phone_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11759       ------------------------------------------------------------------------
11760       l_debug_info := 'After call to hz_contact_point_v2pub.create_phone_contact_point Primary Phone';
11761       l_debug_info := l_debug_info||' Return status : '||l_phone_return_status||' Error : '||l_phone_msg_data;
11762       ------------------------------------------------------------------------
11763       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11764         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
11765       END IF;
11766     END IF;
11767 
11768 
11769 	END IF; --primary phone
11770 
11771 	IF l_vendor_contact_rec.alt_phone IS NOT NULL THEN
11772 
11773 		--populate alt phone record
11774 
11775 		l_contact_point_rec.contact_point_type := 'PHONE';
11776 		l_contact_point_rec.primary_flag := 'N';
11777 		l_contact_point_rec.contact_point_purpose := 'BUSINESS';
11778 		l_contact_point_rec.primary_by_purpose := 'N';
11779 		l_alt_phone_rec.phone_area_code := l_vendor_contact_rec.alt_area_code;
11780 		l_alt_phone_rec.phone_number := l_vendor_contact_rec.alt_phone;
11781                 --
11782                 -- Bug 5117377
11783                 -- Changed the phone line type to GEN.
11784                 --
11785 		l_alt_phone_rec.phone_line_type := 'GEN';
11786 
11787 		hz_contact_point_v2pub.create_phone_contact_point(
11788 			p_init_msg_list => FND_API.G_FALSE,
11789 			p_contact_point_rec => l_contact_point_rec,
11790 			p_phone_rec => l_alt_phone_rec,
11791 			--p_commit => FND_API.G_FALSE,
11792 			x_return_status => l_alt_phone_return_status,
11793 			x_msg_count => l_alt_phone_msg_count,
11794 			x_msg_data => l_alt_phone_msg_data,
11795 			x_contact_point_id => l_alt_phone_contact_point_id);
11796 		IF l_alt_phone_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11797       ------------------------------------------------------------------------
11798       l_debug_info := 'After call to hz_contact_point_v2pub.create_phone_contact_point Alt Phone';
11799       l_debug_info := l_debug_info||' Return status : '||l_alt_phone_return_status||' Error : '||l_alt_phone_msg_data;
11800       ------------------------------------------------------------------------
11801       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11802         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
11803       END IF;
11804     END IF;
11805 
11806 
11807 	END IF; --alt phone
11808 
11809 	IF l_vendor_contact_rec.fax_phone IS NOT NULL THEN
11810 
11811 		--populate fax phone record
11812 
11813 		l_contact_point_rec.contact_point_type := 'PHONE';
11814 		l_contact_point_rec.primary_flag := 'N';
11815 		l_contact_point_rec.contact_point_purpose := 'BUSINESS';
11816 		l_contact_point_rec.primary_by_purpose := 'N';
11817 		l_fax_rec.phone_area_code := l_vendor_contact_rec.fax_area_code;
11818 		l_fax_rec.phone_number := l_vendor_contact_rec.fax_phone;
11819 		l_fax_rec.phone_line_type := 'FAX';
11820 
11821 		hz_contact_point_v2pub.create_phone_contact_point(
11822 			p_init_msg_list => FND_API.G_FALSE,
11823 			p_contact_point_rec => l_contact_point_rec,
11824 			p_phone_rec => l_fax_rec,
11825 			--p_commit => FND_API.G_FALSE,
11826 			x_return_status => l_fax_return_status,
11827 			x_msg_count => l_fax_msg_count,
11828 			x_msg_data => l_fax_msg_data,
11829 			x_contact_point_id => l_fax_contact_point_id);
11830 			IF l_fax_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11831         ------------------------------------------------------------------------
11832         l_debug_info := 'After call to hz_contact_point_v2pub.create_phone_contact_point Fax Phone';
11833         l_debug_info := l_debug_info||' Return status : '||l_fax_return_status||' Error : '||l_fax_msg_data;
11834         ------------------------------------------------------------------------
11835         IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11836           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
11837         END IF;
11838       END IF;
11839 
11840 	END IF; --fax phone
11841 
11842 	IF l_vendor_contact_rec.email_address IS NOT NULL THEN
11843 
11844 		--populate email record
11845 
11846 		l_contact_point_rec.contact_point_type := 'EMAIL';
11847 		l_contact_point_rec.primary_flag := 'Y';
11848 		l_contact_point_rec.contact_point_purpose := 'BUSINESS';
11849 		l_contact_point_rec.primary_by_purpose := 'N';
11850 		l_email_rec.email_address := l_vendor_contact_rec.email_address;
11851 
11852 		hz_contact_point_v2pub.create_email_contact_point(
11853 			p_init_msg_list => FND_API.G_FALSE,
11854 			p_contact_point_rec => l_contact_point_rec,
11855 			p_email_rec => l_email_rec,
11856 			--p_commit => FND_API.G_FALSE,
11857 			x_return_status => l_email_return_status,
11858 			x_msg_count => l_email_msg_count,
11859 			x_msg_data => l_email_msg_data,
11860 			x_contact_point_id => l_email_contact_point_id);
11861 			IF l_email_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11862         ------------------------------------------------------------------------
11863         l_debug_info := 'After call to hz_contact_point_v2pub.create_email_contact_point';
11864         l_debug_info := l_debug_info||' Return status : '||l_email_return_status||' Error : '||l_email_msg_data;
11865         ------------------------------------------------------------------------
11866         IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11867           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
11868         END IF;
11869       END IF;
11870 
11871 	END IF; --email
11872 
11873 	IF l_vendor_contact_rec.url IS NOT NULL THEN
11874 
11875 		--populate url record
11876 
11877 		l_contact_point_rec.contact_point_type := 'WEB';
11878 		l_contact_point_rec.primary_flag := 'Y';
11879 		l_contact_point_rec.contact_point_purpose := 'HOMEPAGE'; --bug5875982
11880 		l_contact_point_rec.primary_by_purpose := 'N';
11881 		--Open Issue 5
11882 		l_url_rec.web_type := 'HTTP';
11883 		l_url_rec.url := l_vendor_contact_rec.url;
11884 
11885 		hz_contact_point_v2pub.create_web_contact_point(
11886 			p_init_msg_list => FND_API.G_FALSE,
11887 			p_contact_point_rec => l_contact_point_rec,
11888 			p_web_rec => l_url_rec,
11889 			--p_commit => FND_API.G_FALSE,
11890 			x_return_status => l_url_return_status,
11891 			x_msg_count => l_url_msg_count,
11892 			x_msg_data => l_url_msg_data,
11893 			x_contact_point_id => l_url_contact_point_id);
11894 			IF l_url_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11895         ------------------------------------------------------------------------
11896         l_debug_info := 'After call to hz_contact_point_v2pub.create_web_contact_point';
11897         l_debug_info := l_debug_info||' Return status : '||l_url_return_status||' Error : '||l_url_msg_data;
11898         ------------------------------------------------------------------------
11899         IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11900           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
11901         END IF;
11902       END IF;
11903 
11904 	END IF; --url
11905 
11906     END IF; --contact points
11907 
11908     IF (l_val_return_status = FND_API.G_RET_STS_SUCCESS) AND
11909 		(l_per_return_status = FND_API.G_RET_STS_SUCCESS) AND
11910 		(l_org_contact_return_status = FND_API.G_RET_STS_SUCCESS) AND
11911 		(l_site_return_status = FND_API.G_RET_STS_SUCCESS) AND
11912 		(l_phone_return_status = FND_API.G_RET_STS_SUCCESS) AND
11913 		(l_alt_phone_return_status  = FND_API.G_RET_STS_SUCCESS) AND
11914 		(l_fax_return_status  = FND_API.G_RET_STS_SUCCESS) AND
11915 		(l_email_return_status = FND_API.G_RET_STS_SUCCESS) AND
11916 		(l_url_return_status  = FND_API.G_RET_STS_SUCCESS) THEN
11917 
11918 
11919 	SELECT po_vendor_contacts_s.nextval
11920     	INTO   l_vendor_contact_rec.vendor_contact_id
11921     	FROM   dual;
11922 
11923 	INSERT INTO ap_supplier_contacts(
11924         	per_party_id,
11925 		relationship_id,
11926 		rel_party_id,
11927 		party_site_id,
11928 		org_contact_id,
11929 		org_party_site_id,
11930 		--vendor_site_id, Bug 7013954 Vendor Site info no longer used
11931 		vendor_contact_id,
11932         	last_update_date,
11933         	last_updated_by,
11934         	creation_date,
11935         	created_by,
11936         	last_update_login,
11937 		request_id,
11938 		program_application_id,
11939 		program_id,
11940 		program_update_date,
11941 	        inactive_date, --Bug 4994974
11942             attribute_category,  --bug 6745669 -- added dff columns
11943                 attribute1,
11944                 attribute2,
11945                 attribute3,
11946                 attribute4,
11947                 attribute5,
11948                 attribute6,
11949                 attribute7,
11950                 attribute8,
11951                 attribute9,
11952                 attribute10,
11953                 attribute11,
11954                 attribute12,
11955                 attribute13,
11956                 attribute14,
11957                 attribute15
11958                 --bug 6745669
11959     	)VALUES(
11960         	l_vendor_contact_rec.per_party_id,
11961 		l_vendor_contact_rec.relationship_id,
11962 		l_vendor_contact_rec.rel_party_id,
11963 		l_vendor_contact_rec.party_site_id,
11964 		l_vendor_contact_rec.org_contact_id,
11965 		l_vendor_contact_rec.org_party_site_id,
11966 		--l_vendor_contact_rec.vendor_site_id, Bug 7013954 Vendor Site info no longer used
11967 		l_vendor_contact_rec.vendor_contact_id,
11968         	SYSDATE,
11969         	nvl(fnd_global.user_id,-1),
11970         	SYSDATE,
11971         	nvl(fnd_global.user_id,-1),
11972         	nvl(fnd_global.login_id,-1),
11973 		nvl(FND_GLOBAL.conc_request_id,-1),
11974 		nvl(FND_GLOBAL.prog_appl_id,-1),
11975 		nvl(FND_GLOBAL.conc_program_id,-1),
11976 		sysdate,
11977                 l_vendor_contact_rec.inactive_date, --Bug 4994974
11978                 l_vendor_contact_rec.attribute_category,  --bug 6745669 -- added dff columns
11979                 l_vendor_contact_rec.attribute1,
11980                 l_vendor_contact_rec.attribute2,
11981                 l_vendor_contact_rec.attribute3,
11982                 l_vendor_contact_rec.attribute4,
11983                 l_vendor_contact_rec.attribute5,
11984                 l_vendor_contact_rec.attribute6,
11985                 l_vendor_contact_rec.attribute7,
11986                 l_vendor_contact_rec.attribute8,
11987                 l_vendor_contact_rec.attribute9,
11988                 l_vendor_contact_rec.attribute10,
11989                 l_vendor_contact_rec.attribute11,
11990                 l_vendor_contact_rec.attribute12,
11991                 l_vendor_contact_rec.attribute13,
11992                 l_vendor_contact_rec.attribute14,
11993                 l_vendor_contact_rec.attribute15
11994     	);
11995 
11996 	x_vendor_contact_id := l_vendor_contact_rec.vendor_contact_id;
11997 	x_per_party_id := l_vendor_contact_rec.per_party_id;
11998 	x_rel_party_id := l_vendor_contact_rec.rel_party_id;
11999 	x_rel_id := l_vendor_contact_rec.relationship_id;
12000 	x_org_contact_id := l_vendor_contact_rec.org_contact_id;
12001 	x_party_site_id := l_vendor_contact_rec.party_site_id;
12002 
12003     Raise_Supplier_Event( i_vendor_contact_id => x_vendor_contact_id ); -- Bug 7307669
12004 
12005     ELSIF (l_val_return_status = FND_API.G_RET_STS_UNEXP_ERROR) OR
12006 		(l_per_return_status = FND_API.G_RET_STS_UNEXP_ERROR) OR
12007 		(l_org_contact_return_status = FND_API.G_RET_STS_UNEXP_ERROR) OR
12008 		(l_site_return_status = FND_API.G_RET_STS_UNEXP_ERROR) OR
12009 		(l_phone_return_status = FND_API.G_RET_STS_UNEXP_ERROR) OR
12010 		(l_alt_phone_return_status  = FND_API.G_RET_STS_UNEXP_ERROR) OR
12011 		(l_fax_return_status  = FND_API.G_RET_STS_UNEXP_ERROR) OR
12012 		(l_email_return_status = FND_API.G_RET_STS_UNEXP_ERROR) OR
12013 		(l_url_return_status  = FND_API.G_RET_STS_UNEXP_ERROR) THEN
12014 
12015 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
12016 
12017     ELSE
12018 
12019 	x_return_status := FND_API.G_RET_STS_ERROR;
12020     END IF;
12021 
12022     -- End of API body.
12023 
12024     -- Standard check of p_commit.
12025     IF FND_API.To_Boolean( p_commit ) THEN
12026 	COMMIT WORK;
12027     END IF;
12028 
12029     -- Standard call to get message count and if count is 1,
12030     -- get message info.
12031     FND_MSG_PUB.Count_And_Get(
12032 	p_count         	=>      x_msg_count     	,
12033         p_data          	=>      x_msg_data
12034     	);
12035 
12036 EXCEPTION
12037     WHEN FND_API.G_EXC_ERROR THEN
12038 		ROLLBACK TO Create_Vendor_Contact_PUB;
12039 		x_return_status := FND_API.G_RET_STS_ERROR ;
12040 		FND_MSG_PUB.Count_And_Get
12041     		(  	p_count         	=>      x_msg_count,
12042         		p_data          	=>      x_msg_data
12043     		);
12044 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
12045 		ROLLBACK TO Create_Vendor_Contact_PUB;
12046 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
12047 		FND_MSG_PUB.Count_And_Get
12048     		(  	p_count         	=>      x_msg_count,
12049         		p_data          	=>      x_msg_data
12050     		);
12051 	WHEN OTHERS THEN
12052 		ROLLBACK TO Create_Vendor_Contact_PUB;
12053 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
12054   		IF 	FND_MSG_PUB.Check_Msg_Level
12055 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
12056         		FND_MSG_PUB.Add_Exc_Msg
12057     	    		(	G_PKG_NAME  	    ,
12058     	    			l_api_name
12059 	    		);
12060 		END IF;
12061 		FND_MSG_PUB.Count_And_Get
12062     		(  	p_count         	=>      x_msg_count,
12063         		p_data          	=>      x_msg_data
12064     		);
12065 END Create_Vendor_Contact;
12066 
12067 PROCEDURE Update_Vendor_Contact
12068 ( 	p_api_version       IN	NUMBER,
12069   	p_init_msg_list		IN	VARCHAR2 := FND_API.G_FALSE	,
12070 	p_commit	    	IN  	VARCHAR2 := FND_API.G_FALSE,
12071 	p_validation_level	IN  	NUMBER	:=  FND_API.G_VALID_LEVEL_FULL,
12072 	p_vendor_contact_rec	IN	r_vendor_contact_rec_type,
12073 	x_return_status		OUT	NOCOPY VARCHAR2		  	,
12074 	x_msg_count		    OUT	NOCOPY NUMBER,
12075 	x_msg_data		    OUT	NOCOPY VARCHAR2
12076 
12077 )
12078 IS
12079     l_api_name	    CONSTANT VARCHAR2(30)	:= 'Update_Vendor_Contact';
12080     l_api_version   CONSTANT NUMBER 		:= 1.0;
12081 
12082 BEGIN
12083 	-- Standard Start of API savepoint
12084     SAVEPOINT	Update_Vendor_Contact_PUB;
12085 
12086     -- Standard call to check for call compatibility.
12087     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
12088         	    	    	    	 	p_api_version        	,
12089    	       	    	 			l_api_name 	    	,
12090 		    	    	    	    	G_PKG_NAME )
12091     THEN
12092 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12093     END IF;
12094 
12095     -- Initialize message list if p_init_msg_list is set to TRUE.
12096     IF FND_API.to_Boolean( p_init_msg_list ) THEN
12097 	FND_MSG_PUB.initialize;
12098     END IF;
12099 
12100     --  Initialize API return status to success
12101     x_return_status := FND_API.G_RET_STS_SUCCESS;
12102 
12103     -- API body
12104 
12105     IF ( p_vendor_contact_rec.PER_PARTY_ID  IS NOT NULL AND
12106          p_vendor_contact_rec.RELATIONSHIP_ID IS NOT NULL AND
12107          p_vendor_contact_rec.REL_PARTY_ID  IS NOT NULL AND
12108          p_vendor_contact_rec.PARTY_SITE_ID IS NOT NULL AND
12109          p_vendor_contact_rec.ORG_CONTACT_ID  IS NOT NULL AND
12110          p_vendor_contact_rec.ORG_PARTY_SITE_ID IS NOT NULL AND
12111          p_vendor_contact_rec.VENDOR_CONTACT_ID IS NOT NULL
12112         )
12113     THEN
12114         UPDATE ap_supplier_contacts set
12115              	last_update_date = SYSDATE,
12116                	last_updated_by = g_user_id,
12117             	last_update_login = g_login_id,
12118                 inactive_date =p_vendor_contact_rec.inactive_date
12119         WHERE per_party_id = p_vendor_contact_rec.per_party_id AND
12120                relationship_id =p_vendor_contact_rec.relationship_id AND
12121                rel_party_id= p_vendor_contact_rec.rel_party_id AND
12122                party_site_id = p_vendor_contact_rec.party_site_id AND
12123                org_contact_id =p_vendor_contact_rec.org_contact_id AND
12124                vendor_contact_id =p_vendor_contact_rec.vendor_contact_id;
12125 
12126 	Raise_Supplier_Event( i_vendor_contact_id => p_vendor_contact_rec.vendor_contact_id ); -- Bug 7307669
12127 
12128     ELSE
12129          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
12130     END IF;
12131 
12132     -- End of API body.
12133 
12134     -- Standard check of p_commit.
12135     IF FND_API.To_Boolean( p_commit ) THEN
12136 	COMMIT WORK;
12137     END IF;
12138 
12139     -- Standard call to get message count and if count is 1,
12140     -- get message info.
12141     FND_MSG_PUB.Count_And_Get(
12142 	p_count         	=>      x_msg_count     	,
12143         p_data          	=>      x_msg_data
12144     	);
12145 
12146 EXCEPTION
12147 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
12148 		ROLLBACK TO Update_Vendor_Contact_PUB;
12149 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
12150 		FND_MSG_PUB.Count_And_Get
12151     		(  	p_count         	=>      x_msg_count,
12152         		p_data          	=>      x_msg_data
12153     		);
12154 	WHEN OTHERS THEN
12155 		ROLLBACK TO Update_Vendor_Contact_PUB;
12156 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
12157   		IF 	FND_MSG_PUB.Check_Msg_Level
12158 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
12159         		FND_MSG_PUB.Add_Exc_Msg
12160     	    		(	G_PKG_NAME  	    ,
12161     	    			l_api_name
12162 	    		);
12163 		END IF;
12164 		FND_MSG_PUB.Count_And_Get
12165     		(  	p_count         	=>      x_msg_count,
12166         		p_data          	=>      x_msg_data
12167     		);
12168 END Update_Vendor_Contact;
12169 
12170 
12171 PROCEDURE Validate_Vendor_Contact
12172 ( 	p_api_version           IN	NUMBER,
12173   	p_init_msg_list		IN	VARCHAR2 := FND_API.G_FALSE	,
12174 	p_commit	    	IN  	VARCHAR2 := FND_API.G_FALSE,
12175 	p_validation_level	IN  	NUMBER	:=
12176 						FND_API.G_VALID_LEVEL_FULL,
12177 	x_return_status		OUT	NOCOPY VARCHAR2		  	,
12178 	x_msg_count		OUT	NOCOPY NUMBER,
12179 	x_msg_data		OUT	NOCOPY VARCHAR2,
12180 	p_vendor_contact_rec	IN OUT	NOCOPY r_vendor_contact_rec_type,
12181 	x_rel_party_valid 	OUT 	NOCOPY VARCHAR2,
12182 	x_per_party_valid 	OUT 	NOCOPY VARCHAR2,
12183 	x_rel_valid 		OUT 	NOCOPY VARCHAR2,
12184         x_org_party_id          OUT     NOCOPY NUMBER,
12185 	x_org_contact_valid 	OUT 	NOCOPY VARCHAR2,
12186 	x_location_id		OUT	NOCOPY NUMBER,
12187 	x_party_site_valid	OUT  	NOCOPY VARCHAR2
12188 )
12189 IS
12190     l_api_name		CONSTANT VARCHAR2(30)	:= 'Validate_Vendor_Contact';
12191     l_api_version       CONSTANT NUMBER 		:= 1.0;
12192 
12193     l_def_org_id		NUMBER;
12194     l_debug_info		VARCHAR2(2000);
12195     x_valid			BOOLEAN;
12196 
12197 BEGIN
12198     -- Bug 7013954 The validation logic is modified to accomodate the changes
12199     -- related to contacts. The Contacts are now associated at Party Site/Address
12200     -- or at Supplier level. Supplier Site level association is deprecated in R12.
12201     -- Standard Start of API savepoint
12202 	SAVEPOINT	Validate_Vendor_Contact_PUB;
12203 
12204     -- Standard call to check for call compatibility.
12205     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
12206         	    	    	    	 	p_api_version        	,
12207    	       	    	 			l_api_name 	    	,
12208 		    	    	    	    	G_PKG_NAME )
12209     THEN
12210 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12211     END IF;
12212 
12213     -- Initialize message list if p_init_msg_list is set to TRUE.
12214     IF FND_API.to_Boolean( p_init_msg_list ) THEN
12215 	FND_MSG_PUB.initialize;
12216     END IF;
12217 
12218     --  Initialize API return status to success
12219     x_return_status := FND_API.G_RET_STS_SUCCESS;
12220 
12221     -- API body
12222 
12223 	-- Special logic for Import
12224     IF g_source = 'IMPORT' THEN
12225      -- Org_Id and Operating_unit_name validation
12226      IF p_vendor_contact_rec.org_id IS NOT NULL OR
12227         p_vendor_contact_rec.operating_unit_name IS NOT NULL THEN
12228 
12229        Check_org_id_name(p_vendor_contact_rec.org_id,
12230                          p_vendor_contact_rec.operating_unit_name,
12231                          'AP_SUP_SITE_CONTACT_INT',
12232                          p_vendor_contact_rec.vendor_contact_interface_id,
12233                          x_valid);
12234        IF NOT x_valid THEN
12235          x_return_status := FND_API.G_RET_STS_ERROR;
12236        END IF;
12237 	 END IF;
12238 
12239 	 -- Bug 7013954 If Party_Site_Name is provided, derive the party_site_id.
12240 	 IF (p_vendor_contact_rec.party_site_name IS NOT NULL AND
12241               p_vendor_contact_rec.org_party_site_id IS NULL AND
12242               (p_vendor_contact_rec.org_id IS NOT NULL OR
12243                p_vendor_contact_rec.operating_unit_name IS NOT NULL) AND
12244 			   p_vendor_contact_rec.vendor_id IS NOT NULL)THEN
12245        Check_org_id_party_site_name(p_vendor_contact_rec.org_id,
12246                                        p_vendor_contact_rec.operating_unit_name,
12247                                        p_vendor_contact_rec.org_party_site_id,
12248                                        p_vendor_contact_rec.party_site_name,
12249                                        p_vendor_contact_rec.vendor_id,
12250                                        'AP_SUP_SITE_CONTACT_INT',
12251                                        p_vendor_contact_rec.vendor_contact_interface_id,
12252                                        x_valid);
12253        IF NOT x_valid THEN
12254          x_return_status := FND_API.G_RET_STS_ERROR;
12255        END IF;
12256 	 -- Vendor_Site_Id Validation
12257 	 -- We need to take vendor_site_id info only when party site info is null
12258      ELSIF p_vendor_contact_rec.vendor_site_id IS NOT NULL AND
12259               p_vendor_contact_rec.org_party_site_id IS NULL AND
12260               p_vendor_contact_rec.PARTY_SITE_NAME IS NULL THEN
12261        Check_Vendor_site_id(p_vendor_contact_rec.vendor_site_id,
12262                                 'AP_SUP_SITE_CONTACT_INT',
12263                                 p_vendor_contact_rec.vendor_contact_interface_id,
12264                                 x_valid);
12265        IF NOT x_valid THEN
12266          x_return_status := FND_API.G_RET_STS_ERROR;
12267        ELSE
12268 		  SELECT hps.party_id,
12269 		    hps.location_id
12270 		  INTO x_org_party_id,
12271 		    x_location_id
12272 		  FROM HZ_Party_Sites hps, po_vendor_sites_all pvs
12273 		  WHERE pvs.vendor_site_id = p_vendor_contact_rec.vendor_site_id
12274 		  AND pvs.party_site_id = hps.party_site_id;
12275 
12276 		  SELECT party_site_id
12277 		  INTO p_vendor_contact_rec.org_party_site_id
12278 		  FROM po_vendor_sites
12279 		  WHERE vendor_site_id = p_vendor_contact_rec.vendor_site_id;
12280 	   END IF;
12281 	 ELSIF (p_vendor_contact_rec.vendor_site_code IS NOT NULL AND
12282               p_vendor_contact_rec.org_party_site_id IS NULL AND
12283               p_vendor_contact_rec.PARTY_SITE_NAME IS NULL AND
12284               (p_vendor_contact_rec.org_id IS NOT NULL OR
12285                p_vendor_contact_rec.operating_unit_name IS NOT NULL))THEN
12286               Check_Org_Id_Name_Site_Code(p_vendor_contact_rec.org_id,
12287                                        p_vendor_contact_rec.operating_unit_name,
12288                                        p_vendor_contact_rec.vendor_site_id,
12289                                        p_vendor_contact_rec.vendor_site_code,
12290                                        'AP_SUP_SITE_CONTACT_INT',
12291                                        p_vendor_contact_rec.vendor_contact_interface_id,
12292                                        x_valid);
12293               IF NOT x_valid THEN
12294                 x_return_status := FND_API.G_RET_STS_ERROR;
12295               END IF;
12296 	 END IF;
12297 	END IF;
12298 
12299 
12300 	------------------------------------------------------------------------
12301 	l_debug_info := 'Call to Validate party_site_id';
12302 	------------------------------------------------------------------------
12303 	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12304 		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
12305 				l_api_name,l_debug_info);
12306 	END IF;
12307 	-- Check for validity of party_site_id
12308 	--
12309 	IF p_vendor_contact_rec.party_site_id IS NOT NULL THEN
12310 		Check_Valid_Party_Site_ID(p_vendor_contact_rec.party_site_id,
12311 						x_location_id,
12312 						x_valid);
12313 
12314 		IF NOT x_valid THEN
12315 				--party_site_id does not exist
12316 		  x_return_status := FND_API.G_RET_STS_ERROR;
12317 		  x_party_site_valid := 'F';
12318 		  -- Special logic for Import
12319 		  IF g_source = 'IMPORT' THEN
12320 			IF (Insert_Rejections(
12321 				  'AP_SUP_SITE_CONTACT_INT',
12322 				  p_vendor_contact_rec.vendor_contact_interface_id,
12323 				  'AP_INVALID_PARTY_SITE',
12324 				  g_user_id,
12325 				  g_login_id,
12326 				  'Validate_Vendor_Contact') <> TRUE) THEN
12327 			 --
12328 			  IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
12329 				FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
12330 				  l_api_name,'Parameters: '
12331 				  ||' Vendor_Contact_Interface_Id: '||
12332 				  p_vendor_contact_rec.vendor_contact_interface_id
12333 				  --||' Vendor_Site_Id: '||p_vendor_contact_rec.vendor_site_id
12334 				  ||', Party_Site_Id: '||p_vendor_contact_rec.party_site_id);
12335 			  END IF;
12336 			END IF;
12337 		  ELSE
12338 			-- Bug 5491139 hkaniven start --
12339 			FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PARTY_SITE');
12340 			FND_MSG_PUB.ADD;
12341 			-- Bug 5491139 hkaniven end --
12342 		  END IF;
12343 		ELSE
12344 				--party_site_id was valid
12345 				x_party_site_valid := 'V';
12346 		END IF;
12347 	ELSE
12348 		--party_site_id is null
12349 		x_party_site_valid := 'N';
12350 	END IF;
12351 
12352 	x_valid := TRUE;
12353 	--set some values
12354 	IF p_vendor_contact_rec.org_party_site_id IS NOT NULL THEN
12355 		Check_Valid_Party_Site_ID(p_vendor_contact_rec.org_party_site_id,
12356 						x_location_id,
12357 						x_valid);
12358 		IF x_valid THEN
12359 
12360 		  SELECT hps.party_id,
12361 		    hps.location_id
12362 		  INTO x_org_party_id,
12363 		    x_location_id
12364 		  FROM HZ_Party_Sites hps
12365 		  WHERE hps.party_site_id =
12366 		    p_vendor_contact_rec.org_party_site_id;
12367 		END if;
12368 		--open issue 12, no way to populate vendor_site_id
12369 
12370 	-- Bug 7013954
12371 	-- If the contact is to be created at supplier level then
12372 	-- party_site_id is null. We need to populate org_party_id
12373 	-- based on the vendor_id value. We should also set party_site_valid
12374 	-- variable as valid because there is no party site associated with	the
12375 	-- contact and we should not create one in create_vendor_contact method.
12376 	ELSIF p_vendor_contact_rec.vendor_site_id IS NULL and
12377 	    p_vendor_contact_rec.vendor_site_code IS NULL and
12378 	    p_vendor_contact_rec.org_party_site_id IS NULL and
12379 	    p_vendor_contact_rec.PARTY_SITE_NAME IS NULL and
12380 	    p_vendor_contact_rec.vendor_id IS NOT NULL THEN
12381 	    SELECT aps.party_id
12382 	       INTO x_org_party_id
12383 	    FROM AP_SUPPLIERS aps
12384 	    WHERE aps.vendor_id = p_vendor_contact_rec.vendor_id;
12385 
12386 	    x_party_site_valid := 'V';
12387 	    x_valid := TRUE;
12388 		/*
12389 		-- new message
12390 		x_return_status := FND_API.G_RET_STS_ERROR;
12391                 -- Special logic for Import
12392                 IF g_source = 'IMPORT' THEN
12393                   IF (Insert_Rejections(
12394                           'AP_SUP_SITE_CONTACT_INT',
12395                           p_vendor_contact_rec.vendor_contact_interface_id,
12396                           'AP_INCONSISTENT_PARTY_SITE',
12397                           g_user_id,
12398                           g_login_id,
12399                           'Validate_Vendor_Contact') <> TRUE) THEN
12400                     --
12401                     IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
12402                        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
12403                           l_api_name,'Parameters: '
12404                           ||' Vendor_Contact_Interface_Id: '||
12405                                    p_vendor_contact_rec.vendor_contact_interface_id
12406                           ||',Vendor_Site_Id: '||p_vendor_contact_rec.vendor_site_id
12407                           ||', Org_Party_Site_Id: '||p_vendor_contact_rec.org_party_site_id);
12408                     END IF;
12409                   END IF;
12410                 ELSE
12411                     -- Bug 5491139 hkaniven start --
12412                     FND_MESSAGE.SET_NAME('SQLAP','AP_INCONSISTENT_PARTY_SITE');
12413                     FND_MSG_PUB.ADD;
12414                     -- Bug 5491139 hkaniven end --
12415                 END IF;*/
12416 	END IF;
12417 
12418 	-- We need to first check if the org_party_site_id provided/ derived is
12419 	-- valid. If x_valid is false then the party site info is invalid.
12420 	IF NOT x_valid THEN
12421 		  --party_site_id does not exist
12422 		  x_return_status := FND_API.G_RET_STS_ERROR;
12423 		  -- Special logic for Import
12424 		  IF g_source = 'IMPORT' THEN
12425 			IF (Insert_Rejections(
12426 				  'AP_SUP_SITE_CONTACT_INT',
12427 				  p_vendor_contact_rec.vendor_contact_interface_id,
12428 				  'AP_INVALID_PARTY_SITE',
12429 				  g_user_id,
12430 				  g_login_id,
12431 				  'Validate_Vendor_Contact') <> TRUE) THEN
12432 			 --
12433 			  IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
12434 				FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
12435 				  l_api_name,'Parameters: '
12436 				  ||' Vendor_Contact_Interface_Id: '||
12437 				  p_vendor_contact_rec.vendor_contact_interface_id
12438 				  --||' Vendor_Site_Id: '||p_vendor_contact_rec.vendor_site_id
12439 				  ||', Org_Party_Site_Id: '||p_vendor_contact_rec.org_party_site_id);
12440 			  END IF;
12441 			END IF;
12442 		  ELSE
12443 			-- Bug 5491139 hkaniven start --
12444 			FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PARTY_SITE');
12445 			FND_MSG_PUB.ADD;
12446 			-- Bug 5491139 hkaniven end --
12447 		  END IF;
12448 		END IF;
12449     -----------------------------------------------------------------------
12450 	l_debug_info := 'Call to Validate party_id';
12451 	--------------------------------------------------------------
12452 	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12453 		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
12454 				l_api_name,l_debug_info);
12455 	END IF;
12456 
12457 	-- Check for validity of party_id
12458 	--
12459 	IF p_vendor_contact_rec.per_party_id IS NOT NULL THEN
12460 		Check_Valid_Party_ID(p_vendor_contact_rec.per_party_id,
12461 						x_valid);
12462 
12463 		IF NOT x_valid THEN
12464 		  x_return_status := FND_API.G_RET_STS_ERROR;
12465 		  x_per_party_valid := 'F';
12466 		  -- Special logic for Import
12467 		  IF g_source = 'IMPORT' THEN
12468 			IF (Insert_Rejections(
12469 				  'AP_SUP_SITE_CONTACT_INT',
12470 				  p_vendor_contact_rec.vendor_contact_interface_id,
12471 				  'AP_INVALID_PARTY_SITE',
12472 				  g_user_id,
12473 				  g_login_id,
12474 				  'Validate_Vendor_Contact') <> TRUE) THEN
12475 			 --
12476 			  IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
12477 				FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
12478 				  l_api_name,'Parameters: '
12479 				  ||' Vendor_Contact_Interface_Id: '||
12480 				  p_vendor_contact_rec.vendor_contact_interface_id
12481 				  --||' Vendor_Site_Id: '||p_vendor_contact_rec.vendor_site_id
12482 				  ||', Party_Site_Id: '||p_vendor_contact_rec.party_site_id);
12483 			  END IF;
12484 			END IF;
12485 		  ELSE
12486 			-- Bug 5491139 hkaniven start --
12487 			FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PARTY_SITE');
12488 			FND_MSG_PUB.ADD;
12489 			-- Bug 5491139 hkaniven end --
12490 		  END IF;
12491 		ELSE
12492 			x_per_party_valid := 'V';
12493 		END IF;
12494 	ELSE
12495 		x_per_party_valid := 'N';
12496 	END IF;
12497 
12498 	-----------------------------------------------------------------------
12499 	l_debug_info := 'Call to Validate rel_party_id';
12500 	--------------------------------------------------------------
12501 	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12502 			FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
12503 					l_api_name,l_debug_info);
12504 	END IF;
12505 
12506 	-- Check for validity of rel_party_id
12507 	--
12508 	IF p_vendor_contact_rec.rel_party_id IS NOT NULL THEN
12509 		Check_Valid_Party_ID(p_vendor_contact_rec.rel_party_id,
12510 						x_valid);
12511 
12512 		IF NOT x_valid THEN
12513 		  x_return_status := FND_API.G_RET_STS_ERROR;
12514 		  x_rel_party_valid := 'F';
12515 		  -- Special logic for Import
12516 		  IF g_source = 'IMPORT' THEN
12517 			IF (Insert_Rejections(
12518 				  'AP_SUP_SITE_CONTACT_INT',
12519 				  p_vendor_contact_rec.vendor_contact_interface_id,
12520 				  'AP_INVALID_REL_PARTY',
12521 				  g_user_id,
12522 				  g_login_id,
12523 				  'Validate_Vendor_Contact') <> TRUE) THEN
12524 			 --
12525 			  IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
12526 				FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
12527 				  l_api_name,'Parameters: '
12528 				  ||' Vendor_Contact_Interface_Id: '||
12529 				  p_vendor_contact_rec.vendor_contact_interface_id
12530 				  ||' Party_Site_Id: '||p_vendor_contact_rec.org_party_site_id
12531 				  ||', rel_party_id: '||p_vendor_contact_rec.rel_party_id);
12532 			  END IF;
12533 			END IF;
12534 		  ELSE
12535 			-- Bug 5491139 hkaniven start --
12536 			FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_REL_PARTY');
12537 			FND_MSG_PUB.ADD;
12538 			-- Bug 5491139 hkaniven end --
12539 		  END IF;
12540 		ELSE
12541 				x_rel_party_valid := 'V';
12542 		END IF;
12543 	ELSE
12544 		x_rel_party_valid := 'N';
12545 	END IF;
12546 
12547 	--call relationship validations
12548 
12549         --------------------------------------------------------------
12550         l_debug_info := 'Call to Validate relationship_id';
12551         --------------------------------------------------------------
12552         IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12553                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
12554                         l_api_name,l_debug_info);
12555         END IF;
12556 
12557 	-- Check for validity of relationship_id
12558 	--
12559 	IF p_vendor_contact_rec.relationship_id IS NOT NULL THEN
12560 
12561 	   Check_Valid_Relationship_ID(p_vendor_contact_rec.relationship_id,
12562 								   x_valid);
12563 
12564 	   IF NOT x_valid THEN
12565 		 x_return_status := FND_API.G_RET_STS_ERROR;
12566 		 x_rel_valid := 'F';
12567 		 IF g_source = 'IMPORT' THEN
12568 		   IF (Insert_Rejections(
12569 					  'AP_SUP_SITE_CONTACT_INT',
12570 					  p_vendor_contact_rec.vendor_contact_interface_id,
12571 					  'AP_INVALID_RELATIONSHIP',
12572 					  g_user_id,
12573 					  g_login_id,
12574 					  'Validate_Vendor_Contact') <> TRUE) THEN
12575 			 --
12576 			 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
12577 					FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
12578 					l_api_name,'Parameters: '
12579 					||' Vendor_Contact_Interface_Id: '||
12580 				  p_vendor_contact_rec.vendor_contact_interface_id
12581 					||' Vendor_Interface_Id: '||p_vendor_contact_rec.vendor_interface_id
12582 					||', Relationship_Id: '||p_vendor_contact_rec.relationship_id);
12583 			 END IF;
12584 		   END IF;
12585 		 ELSE
12586 			-- Bug 5491139 hkaniven start --
12587 			FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_RELATIONSHIP');
12588 			FND_MSG_PUB.ADD;
12589 			-- Bug 5491139 hkaniven end --
12590 		 END IF;
12591 	   ELSE
12592 		  x_rel_valid := 'V';
12593 	   END IF;
12594     ELSE
12595 	  x_rel_valid := 'N';
12596     END IF;
12597 
12598     -- call org contact validation
12599 
12600     --------------------------------------------------------------
12601     l_debug_info := 'Call to Validate org_contact_id';
12602     --------------------------------------------------------------
12603 	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12604 			FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
12605 					l_api_name,l_debug_info);
12606 	END IF;
12607 
12608     -- Check for validity of org_contact_id
12609     --
12610     IF p_vendor_contact_rec.org_contact_id IS NOT NULL THEN
12611 
12612 	  Check_Valid_Org_Contact_ID(p_vendor_contact_rec.org_contact_id,
12613 								 x_valid);
12614 
12615 	  IF NOT x_valid THEN
12616 		x_return_status := FND_API.G_RET_STS_ERROR;
12617 		x_org_contact_valid := 'F';
12618 		-- Special logic for Import
12619 		IF g_source = 'IMPORT' THEN
12620 		  IF (Insert_Rejections(
12621 					  'AP_SUP_SITE_CONTACT_INT',
12622 					  p_vendor_contact_rec.vendor_contact_interface_id,
12623 					  'AP_INVALID_ORG_CONTACT',
12624 					  g_user_id,
12625 					  g_login_id,
12626 					  'Validate_Vendor_Contact') <> TRUE) THEN
12627 		  --
12628 			IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
12629 					FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
12630 					l_api_name,'Parameters: '
12631 					||' Vendor_Contact_Interface_Id: '||
12632 					p_vendor_contact_rec.vendor_contact_interface_id
12633 					||' Vendor_Interface_Id: '||p_vendor_contact_rec.vendor_id
12634 					||', org_contact_id: '||p_vendor_contact_rec.org_contact_id);
12635 			END IF;
12636 		  END IF;
12637 		ELSE
12638 			-- Bug 5491139 hkaniven start --
12639 			FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_ORG_CONTACT');
12640 			FND_MSG_PUB.ADD;
12641 			-- Bug 5491139 hkaniven end --
12642 		END IF;
12643 	  ELSE
12644 		 x_org_contact_valid := 'V';
12645 	  END IF;
12646     ELSE
12647 	  x_org_contact_valid := 'N';
12648     END IF;
12649     -- End of API body.
12650 
12651     -- Standard check of p_commit.
12652     IF FND_API.To_Boolean( p_commit ) THEN
12653 	COMMIT WORK;
12654     END IF;
12655 
12656     -- Standard call to get message count and if count is 1,
12657     -- get message info.
12658     FND_MSG_PUB.Count_And_Get(
12659 	p_count         	=>      x_msg_count     	,
12660         p_data          	=>      x_msg_data
12661     	);
12662 
12663 EXCEPTION
12664     WHEN FND_API.G_EXC_ERROR THEN
12665 		ROLLBACK TO Validate_Vendor_Contact_PUB;
12666 		x_return_status := FND_API.G_RET_STS_ERROR ;
12667 		FND_MSG_PUB.Count_And_Get
12668     		(  	p_count         	=>      x_msg_count,
12669         		p_data          	=>      x_msg_data
12670     		);
12671 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
12672 		ROLLBACK TO Validate_Vendor_Contact_PUB;
12673 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
12674 		FND_MSG_PUB.Count_And_Get
12675     		(  	p_count         	=>      x_msg_count,
12676         		p_data          	=>      x_msg_data
12677     		);
12678 	WHEN OTHERS THEN
12679 		ROLLBACK TO Validate_Vendor_Contact_PUB;
12680 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
12681   		IF 	FND_MSG_PUB.Check_Msg_Level
12682 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
12683         		FND_MSG_PUB.Add_Exc_Msg
12684     	    		(	G_PKG_NAME  	    ,
12685     	    			l_api_name
12686 	    		);
12687 		END IF;
12688 		FND_MSG_PUB.Count_And_Get
12689     		(  	p_count         	=>      x_msg_count,
12690         		p_data          	=>      x_msg_data
12691     		);
12692 END Validate_Vendor_Contact;
12693 
12694 PROCEDURE Import_Vendors
12695 (       p_api_version           IN      NUMBER,
12696         p_source                IN      VARCHAR2 DEFAULT 'IMPORT',
12697         p_what_to_import        IN      VARCHAR2 DEFAULT NULL,
12698         p_commit_size           IN      NUMBER   DEFAULT 1000,
12699         x_return_status         OUT NOCOPY VARCHAR2,
12700         x_msg_count             OUT NOCOPY NUMBER,
12701         x_msg_data              OUT NOCOPY VARCHAR2
12702 )
12703 IS
12704 
12705     l_api_name                  CONSTANT VARCHAR2(30)   := 'Import_Vendors';
12706     l_api_version               CONSTANT NUMBER         := 1.0;
12707 
12708     l_program_application_id    NUMBER  := FND_GLOBAL.prog_appl_id;
12709     l_program_id                NUMBER  := FND_GLOBAL.conc_program_id;
12710     l_request_id                NUMBER  := FND_GLOBAL.conc_request_id;
12711 
12712     l_return_status             VARCHAR2(2000);
12713     l_msg_count                 NUMBER;
12714     l_msg_data                  VARCHAR2(2000);
12715     l_vendor_id                 NUMBER;
12716     l_party_id                  NUMBER;
12717 
12718     CURSOR vendor_int_cur IS
12719     SELECT *
12720     FROM Ap_Suppliers_Int
12721     WHERE import_request_id = l_request_id
12722     AND   vendor_interface_id IS NOT NULL
12723     ORDER BY segment1;
12724 
12725     vendor_int_rec             vendor_int_cur%ROWTYPE;
12726     vendor_rec                 r_vendor_rec_type;
12727 
12728     /* Variable Declaration for IBY */
12729     ext_payee_rec               IBY_DISBURSEMENT_SETUP_PUB.External_Payee_Rec_Type;
12730     ext_payee_tab               IBY_DISBURSEMENT_SETUP_PUB.External_Payee_Tab_Type;
12731     ext_payee_id_rec            IBY_DISBURSEMENT_SETUP_PUB.Ext_Payee_Id_Rec_Type;
12732     ext_payee_id_tab            IBY_DISBURSEMENT_SETUP_PUB.Ext_Payee_Id_Tab_Type;
12733     ext_payee_create_rec        IBY_DISBURSEMENT_SETUP_PUB.Ext_Payee_Create_Rec_Type;
12734     ext_payee_create_tab        IBY_DISBURSEMENT_SETUP_PUB.Ext_Payee_Create_Tab_Type;
12735     l_temp_ext_acct_id          NUMBER;
12736     ext_response_rec            IBY_FNDCPT_COMMON_PUB.Result_Rec_Type;
12737 
12738     l_ext_payee_id              NUMBER;
12739     l_bank_acct_id              NUMBER;
12740 
12741     CURSOR IBY_EXT_ACCTS_CUR (p_unique_ref IN NUMBER) IS
12742     SELECT temp_ext_bank_acct_id
12743     FROM IBY_TEMP_EXT_BANK_ACCTS
12744     WHERE calling_app_unique_ref1 = p_unique_ref
12745     --Bug 7412849 (Base Bug 7387700)  As status can be NULL, this where condition always resolves to FALSE.
12746     --Added NVL around 'status'.
12747     --AND status  <> 'PROCESSED';
12748     AND nvl(status,'NEW')  <> 'PROCESSED';
12749 
12750     l_debug_info                 varchar2(500); -- Bug 6823885
12751 
12752 BEGIN
12753 
12754     -- Standard Start of API savepoint
12755     SAVEPOINT   Import_Vendor_PUB;
12756 
12757     -- Standard call to check for call compatibility.
12758     IF NOT FND_API.Compatible_API_Call (l_api_version,
12759                                         p_api_version,
12760                                         l_api_name,
12761                                         G_PKG_NAME )
12762     THEN
12763         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12764     END IF;
12765 
12766     FND_MSG_PUB.initialize;
12767 
12768     g_user_id       := FND_GLOBAL.USER_ID;
12769     g_login_id      := FND_GLOBAL.LOGIN_ID;
12770     g_source        := p_source;
12771     --  Initialize API return status to success
12772     x_return_status := FND_API.G_RET_STS_SUCCESS;
12773 
12774     -- API body
12775 
12776     IF g_source <> 'IMPORT' THEN
12777       NULL;
12778     ELSE
12779       --udhenuko Bug 6823885 This update statement resets the unprocessed rows so
12780       -- that they get picked in the current run.
12781       UPDATE Ap_Suppliers_Int api
12782       SET import_request_id = NULL
12783       WHERE import_request_id IS NOT NULL
12784         AND NVL(status,'NEW') IN ('NEW', 'REJECTED')
12785         AND EXISTS
12786                 ( SELECT 'Request Completed'
12787                     FROM fnd_concurrent_requests fcr
12788                   WHERE fcr.request_id = api.import_request_id
12789                     AND fcr.phase_code = 'C' );
12790       -- udhenuko Bug 6823885 End
12791       --bug 5591652
12792       DELETE AP_SUPPLIER_INT_REJECTIONS
12793       WHERE PARENT_TABLE='AP_SUPPLIERS_INT';
12794       -- Updating Interface Record with request id
12795 
12796       UPDATE Ap_Suppliers_Int
12797       SET    import_request_id = l_request_id
12798       WHERE  import_request_id IS NULL AND
12799              ((p_what_to_import = 'ALL' AND nvl(status,'NEW') in ('NEW', 'REJECTED')) OR
12800              (p_what_to_import = 'NEW' AND nvl(status,'NEW') = 'NEW') OR
12801              (p_what_to_import = 'REJECTED' AND nvl(status,'NEW') = 'REJECTED'));
12802 
12803       COMMIT;
12804 
12805       -- Cursor processing for vendor contact interface record
12806       OPEN vendor_int_cur;
12807       LOOP
12808 
12809         FETCH vendor_int_cur
12810         INTO vendor_int_rec;
12811         EXIT WHEN vendor_int_cur%NOTFOUND;
12812 
12813         vendor_rec.vendor_interface_id          := vendor_int_rec.vendor_interface_id;
12814         vendor_rec.vendor_name                  := vendor_int_rec.vendor_name;
12815         vendor_rec.segment1                     := vendor_int_rec.segment1;
12816         vendor_rec.vendor_name_alt              := vendor_int_rec.vendor_name_alt;
12817         vendor_rec.summary_flag                 := vendor_int_rec.summary_flag;
12818         vendor_rec.enabled_flag                 := vendor_int_rec.enabled_flag;
12819         vendor_rec.employee_id                  := vendor_int_rec.employee_id;
12820         vendor_rec.vendor_type_lookup_code      := vendor_int_rec.vendor_type_lookup_code;
12821         vendor_rec.customer_num                 := vendor_int_rec.customer_num;
12822         vendor_rec.one_time_flag                := vendor_int_rec.one_time_flag;
12823         vendor_rec.min_order_amount             := vendor_int_rec.min_order_amount;
12824         vendor_rec.terms_id                     := vendor_int_rec.terms_id;
12825         vendor_rec.terms_name                   := vendor_int_rec.terms_name;
12826         vendor_rec.set_of_books_id              := vendor_int_rec.set_of_books_id;
12827         vendor_rec.always_take_disc_flag        := vendor_int_rec.always_take_disc_flag;
12828         vendor_rec.pay_date_basis_lookup_code   := vendor_int_rec.pay_date_basis_lookup_code;
12829         vendor_rec.pay_group_lookup_code        := vendor_int_rec.pay_group_lookup_code;
12830         vendor_rec.payment_priority             := vendor_int_rec.payment_priority;
12831         vendor_rec.invoice_currency_code        := vendor_int_rec.invoice_currency_code;
12832         vendor_rec.payment_currency_code        := vendor_int_rec.payment_currency_code;
12833         vendor_rec.invoice_amount_limit         := vendor_int_rec.invoice_amount_limit;
12834         vendor_rec.hold_all_payments_flag       := vendor_int_rec.hold_all_payments_flag;
12835         vendor_rec.hold_future_payments_flag    := vendor_int_rec.hold_future_payments_flag;
12836         vendor_rec.hold_reason                  := vendor_int_rec.hold_reason;
12837         vendor_rec.jgzz_fiscal_code             := vendor_int_rec.num_1099;--bug6050423
12838         vendor_rec.type_1099                    := vendor_int_rec.type_1099;
12839         vendor_rec.organization_type_lookup_code :=
12840                                          vendor_int_rec.organization_type_lookup_code;
12841         vendor_rec.start_date_active            := vendor_int_rec.start_date_active;
12842         vendor_rec.end_date_active              := vendor_int_rec.end_date_active;
12843         vendor_rec.minority_group_lookup_code   := vendor_int_rec.minority_group_lookup_code;
12844         vendor_rec.women_owned_flag             := vendor_int_rec.women_owned_flag;
12845         vendor_rec.small_business_flag          := vendor_int_rec.small_business_flag;
12846         vendor_rec.SIC_Code      		:= vendor_int_rec.standard_industry_class;
12847         vendor_rec.hold_flag                    := vendor_int_rec.hold_flag;
12848         vendor_rec.purchasing_hold_reason       := vendor_int_rec.purchasing_hold_reason;
12849         vendor_rec.hold_by                      := vendor_int_rec.hold_by;
12850         vendor_rec.hold_date                    := vendor_int_rec.hold_date;
12851         vendor_rec.terms_date_basis             := vendor_int_rec.terms_date_basis;
12852         vendor_rec.inspection_required_flag     := vendor_int_rec.inspection_required_flag;
12853         vendor_rec.receipt_required_flag        := vendor_int_rec.receipt_required_flag;
12854         vendor_rec.qty_rcv_tolerance            := vendor_int_rec.qty_rcv_tolerance;
12855         vendor_rec.qty_rcv_exception_code       := vendor_int_rec.qty_rcv_exception_code;
12856         vendor_rec.enforce_ship_to_location_code :=
12857                                          vendor_int_rec.enforce_ship_to_location_code;
12858         vendor_rec.days_early_receipt_allowed   := vendor_int_rec.days_early_receipt_allowed;
12859         vendor_rec.days_late_receipt_allowed    := vendor_int_rec.days_late_receipt_allowed;
12860         vendor_rec.receipt_days_exception_code := vendor_int_rec.receipt_days_exception_code;
12861         vendor_rec.receiving_routing_id         := vendor_int_rec.receiving_routing_id;
12862         vendor_rec.allow_substitute_receipts_flag :=
12863                                         vendor_int_rec.allow_substitute_receipts_flag;
12864         vendor_rec.allow_unordered_receipts_flag :=
12865                                         vendor_int_rec.allow_unordered_receipts_flag;
12866         vendor_rec.hold_unmatched_invoices_flag  :=
12867                                         vendor_int_rec.hold_unmatched_invoices_flag;
12868         vendor_rec.tax_verification_date        := vendor_int_rec.tax_verification_date;
12869         vendor_rec.name_control                 := vendor_int_rec.name_control;
12870         vendor_rec.state_reportable_flag        := vendor_int_rec.state_reportable_flag;
12871         vendor_rec.federal_reportable_flag      := vendor_int_rec.federal_reportable_flag;
12872         vendor_rec.attribute_category           := vendor_int_rec.attribute_category;
12873         vendor_rec.attribute1                   := vendor_int_rec.attribute1;
12874         vendor_rec.attribute2                   := vendor_int_rec.attribute2;
12875         vendor_rec.attribute3                   := vendor_int_rec.attribute3;
12876         vendor_rec.attribute4                   := vendor_int_rec.attribute4;
12877         vendor_rec.attribute5                   := vendor_int_rec.attribute5;
12878         vendor_rec.attribute6                   := vendor_int_rec.attribute6;
12879         vendor_rec.attribute7                   := vendor_int_rec.attribute7;
12880         vendor_rec.attribute8                   := vendor_int_rec.attribute8;
12881         vendor_rec.attribute9                   := vendor_int_rec.attribute9;
12882         vendor_rec.attribute10                  := vendor_int_rec.attribute10;
12883         vendor_rec.attribute11                  := vendor_int_rec.attribute11;
12884         vendor_rec.attribute12                  := vendor_int_rec.attribute12;
12885         vendor_rec.attribute13                  := vendor_int_rec.attribute13;
12886         vendor_rec.attribute14                  := vendor_int_rec.attribute14;
12887         vendor_rec.attribute15                  := vendor_int_rec.attribute15;
12888         vendor_rec.auto_calculate_interest_flag :=
12889                                        vendor_int_rec.auto_calculate_interest_flag;
12890         vendor_rec.exclude_freight_from_discount :=
12891                                        vendor_int_rec.exclude_freight_from_discount;
12892         vendor_rec.tax_reporting_name           := vendor_int_rec.tax_reporting_name;
12893         vendor_rec.allow_awt_flag               := vendor_int_rec.allow_awt_flag;
12894         vendor_rec.awt_group_id                 := vendor_int_rec.awt_group_id;
12895         vendor_rec.awt_group_name               := vendor_int_rec.awt_group_name;
12896         vendor_rec.global_attribute1            := vendor_int_rec.global_attribute1;
12897         vendor_rec.global_attribute2            := vendor_int_rec.global_attribute2;
12898         vendor_rec.global_attribute3            := vendor_int_rec.global_attribute3;
12899         vendor_rec.global_attribute4            := vendor_int_rec.global_attribute4;
12900         vendor_rec.global_attribute5            := vendor_int_rec.global_attribute5;
12901         vendor_rec.global_attribute6            := vendor_int_rec.global_attribute6;
12902         vendor_rec.global_attribute7            := vendor_int_rec.global_attribute7;
12903         vendor_rec.global_attribute8            := vendor_int_rec.global_attribute8;
12904         vendor_rec.global_attribute9            := vendor_int_rec.global_attribute9;
12905         vendor_rec.global_attribute10           := vendor_int_rec.global_attribute10;
12906         vendor_rec.global_attribute11           := vendor_int_rec.global_attribute11;
12907         vendor_rec.global_attribute12           := vendor_int_rec.global_attribute12;
12908         vendor_rec.global_attribute13           := vendor_int_rec.global_attribute13;
12909         vendor_rec.global_attribute14           := vendor_int_rec.global_attribute14;
12910         vendor_rec.global_attribute15           := vendor_int_rec.global_attribute15;
12911         vendor_rec.global_attribute16           := vendor_int_rec.global_attribute16;
12912         vendor_rec.global_attribute17           := vendor_int_rec.global_attribute17;
12913         vendor_rec.global_attribute18           := vendor_int_rec.global_attribute18;
12914         vendor_rec.global_attribute19           := vendor_int_rec.global_attribute19;
12915         vendor_rec.global_attribute20           := vendor_int_rec.global_attribute20;
12916         vendor_rec.global_attribute_category    := vendor_int_rec.global_attribute_category;
12917         vendor_rec.bank_charge_bearer           := vendor_int_rec.bank_charge_bearer;
12918         vendor_rec.match_option                 := vendor_int_rec.match_option;
12919         vendor_rec.create_debit_memo_flag       := vendor_int_rec.create_debit_memo_flag;
12920         vendor_rec.tax_reference                := vendor_int_rec.vat_registration_num;   --bug6070735
12921 
12922         /* Populating IBY Records and Table */
12923         -- As per the discussion with Omar/Jayanta, we will only
12924         -- have payables payment function and no more employee expenses
12925         -- payment function.
12926 
12927         ext_payee_rec.payment_function        := 'PAYABLES_DISB';
12928         ext_payee_rec.payer_org_type            := 'OPERATING_UNIT';
12929         ext_payee_rec.exclusive_pay_flag        :=NVL(vendor_int_rec.exclusive_payment_flag,'N');
12930         --bug6495364
12931 --CD
12932         ext_payee_rec.default_pmt_method        := vendor_int_rec.payment_method_lookup_code;
12933         ext_payee_rec.ece_tp_loc_code           := vendor_int_rec.ece_tp_location_code;
12934         ext_payee_rec.bank_charge_bearer        := vendor_int_rec.iby_bank_charge_bearer;
12935         ext_payee_rec.bank_instr1_code          := vendor_int_rec.bank_instruction1_code;
12936         ext_payee_rec.bank_instr2_code          := vendor_int_rec.bank_instruction2_code;
12937         ext_payee_rec.bank_instr_detail         := vendor_int_rec.bank_instruction_details;
12938         ext_payee_rec.pay_reason_code           := vendor_int_rec.payment_reason_code;
12939         ext_payee_rec.pay_reason_com            := vendor_int_rec.payment_reason_comments;
12940         ext_payee_rec.pay_message1              := vendor_int_rec.payment_text_message1;
12941         ext_payee_rec.pay_message2              := vendor_int_rec.payment_text_message2;
12942         ext_payee_rec.pay_message3              := vendor_int_rec.payment_text_message3;
12943         ext_payee_rec.delivery_channel          := vendor_int_rec.delivery_channel_code;
12944         ext_payee_rec.pmt_format                := vendor_int_rec.payment_format_code;
12945         ext_payee_rec.settlement_priority       := vendor_int_rec.settlement_priority;
12946 	-- Bug 7437549 Start
12947         -- Note that we must populate these EDI related fields only to ext_payee_rec
12948         -- Because only this record is passed for call to IBY. There is no need
12949         -- to populate vendor_rec.ext_payee_rec. Even if we pass it wont be used.
12950         ext_payee_rec.edi_payment_format         := vendor_int_rec.edi_payment_format;
12951         ext_payee_rec.edi_transaction_handling   := vendor_int_rec.edi_transaction_handling;
12952         ext_payee_rec.edi_payment_method         := vendor_int_rec.edi_payment_method;
12953         ext_payee_rec.edi_remittance_method      := vendor_int_rec.edi_remittance_method;
12954         ext_payee_rec.edi_remittance_instruction := vendor_int_rec.edi_remittance_instruction;
12955         -- Bug 7437549 End
12956 	--6458813 Populating the ext_payee_rec of Vendor_rec
12957 	vendor_rec.ext_payee_rec.default_pmt_method        := vendor_int_rec.payment_method_lookup_code;
12958         --bug6495364
12959         vendor_rec.ext_payee_rec.payment_function          := 'PAYABLES_DISB';
12960         vendor_rec.ext_payee_rec.payer_org_type            := 'OPERATING_UNIT';
12961         vendor_rec.ext_payee_rec.exclusive_pay_flag        := nvl(vendor_int_rec.exclusive_payment_flag,'N');
12962         vendor_rec.ext_payee_rec.ece_tp_loc_code           := vendor_int_rec.ece_tp_location_code;
12963         vendor_rec.ext_payee_rec.bank_charge_bearer        := vendor_int_rec.iby_bank_charge_bearer;
12964         vendor_rec.ext_payee_rec.bank_instr1_code          := vendor_int_rec.bank_instruction1_code;
12965         vendor_rec.ext_payee_rec.bank_instr2_code          := vendor_int_rec.bank_instruction2_code;
12966         vendor_rec.ext_payee_rec.bank_instr_detail         := vendor_int_rec.bank_instruction_details;
12967         vendor_rec.ext_payee_rec.pay_reason_code           := vendor_int_rec.payment_reason_code;
12968         vendor_rec.ext_payee_rec.pay_reason_com            := vendor_int_rec.payment_reason_comments;
12969         vendor_rec.ext_payee_rec.pay_message1              := vendor_int_rec.payment_text_message1;
12970         vendor_rec.ext_payee_rec.pay_message2              := vendor_int_rec.payment_text_message2;
12971         vendor_rec.ext_payee_rec.pay_message3              := vendor_int_rec.payment_text_message3;
12972         vendor_rec.ext_payee_rec.delivery_channel          := vendor_int_rec.delivery_channel_code;
12973         vendor_rec.ext_payee_rec.pmt_format                := vendor_int_rec.payment_format_code;
12974         vendor_rec.ext_payee_rec.settlement_priority       := vendor_int_rec.settlement_priority;
12975 		-- 6458813 ends
12976 
12977         Create_Vendor
12978           ( p_api_version       =>  1.0,
12979             p_init_msg_list     =>  FND_API.G_FALSE,
12980             p_commit            =>  FND_API.G_FALSE,
12981             p_validation_level  =>  FND_API.G_VALID_LEVEL_FULL,
12982             x_return_status     =>  l_return_status,
12983             x_msg_count         =>  l_msg_count,
12984             x_msg_data          =>  l_msg_data,
12985             p_vendor_rec        =>  vendor_rec,
12986             x_vendor_id         =>  l_vendor_id,
12987             x_party_id          =>  l_party_id);
12988 
12989         IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
12990 
12991           UPDATE Ap_Suppliers_Int
12992           SET    status = 'PROCESSED'
12993           WHERE  vendor_interface_id = vendor_rec.vendor_interface_id;
12994 
12995           UPDATE Ap_Supplier_Sites_Int
12996           SET    vendor_id = l_vendor_id
12997           WHERE  vendor_interface_id = vendor_rec.vendor_interface_id;
12998 
12999           UPDATE Ap_Sup_Site_Contact_Int
13000           SET    vendor_id = l_vendor_id
13001           WHERE  vendor_interface_id = vendor_rec.vendor_interface_id;
13002 
13003           ext_payee_rec.payee_party_id         := l_party_id;
13004 
13005           /* Calling IBY Payee Validation API */
13006           IBY_DISBURSEMENT_SETUP_PUB.Validate_External_Payee
13007             ( p_api_version     => 1.0,
13008               p_init_msg_list   => FND_API.G_FALSE,
13009               p_ext_payee_rec   => ext_payee_rec,
13010               x_return_status   => l_return_status,
13011               x_msg_count       => l_msg_count,
13012               x_msg_data        => l_msg_data);
13013 
13014           IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
13015 
13016             --bug 5568861 ext_payee_tab(ext_payee_tab.first)      := ext_payee_rec;
13017             ext_payee_tab(1)      := ext_payee_rec;
13018 
13019            /*Calling IBY Payee Creation API */
13020             IBY_DISBURSEMENT_SETUP_PUB.Create_External_Payee
13021               ( p_api_version         => 1.0,
13022                 p_init_msg_list       => FND_API.G_FALSE,
13023                 p_ext_payee_tab       => ext_payee_tab,
13024                 x_return_status       => l_return_status,
13025                 x_msg_count           => l_msg_count,
13026                 x_msg_data            => l_msg_data,
13027                 x_ext_payee_id_tab    => ext_payee_id_tab,
13028                 x_ext_payee_status_tab => ext_payee_create_tab);
13029 
13030             IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
13031               --bug 5568861
13032               l_ext_payee_id     := ext_payee_id_tab(1).ext_payee_id;
13033 
13034               UPDATE IBY_TEMP_EXT_BANK_ACCTS
13035               SET ext_payee_id = l_ext_payee_id
13036                  ,account_owner_party_id = l_party_id -- bug 6753331
13037               WHERE calling_app_unique_ref1 = vendor_rec.vendor_interface_id;
13038 
13039               -- Cursor processing for iby temp bank account record
13040               OPEN iby_ext_accts_cur(vendor_rec.vendor_interface_id);
13041               LOOP
13042 
13043                 FETCH iby_ext_accts_cur
13044                 INTO l_temp_ext_acct_id;
13045                 EXIT WHEN iby_ext_accts_cur%NOTFOUND;
13046 
13047                 /* Calling IBY Bank Account Validation API */
13048                 IBY_DISBURSEMENT_SETUP_PUB.Validate_Temp_Ext_Bank_Acct
13049                  ( p_api_version         => 1.0,
13050                    p_init_msg_list       => FND_API.G_FALSE,
13051                    x_return_status       => l_return_status,
13052                    x_msg_count           => l_msg_count,
13053                    x_msg_data            => l_msg_data,
13054                    p_temp_ext_acct_id    => l_temp_ext_acct_id);
13055 
13056                 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
13057                   /* Calling IBY Bank Account Creation API */
13058                   -- Bug 6845995. Calling overloaded procedure
13059                   -- which will create the association between
13060                   -- supplier and bank account.
13061                   IBY_DISBURSEMENT_SETUP_PUB.Create_Temp_Ext_Bank_Acct
13062                    ( p_api_version         => 1.0,
13063                      p_init_msg_list       => FND_API.G_FALSE,
13064                      x_return_status       => l_return_status,
13065                      x_msg_count           => l_msg_count,
13066                      x_msg_data            => l_msg_data,
13067                      p_temp_ext_acct_id    => l_temp_ext_acct_id,
13068                      p_association_level   => 'S',
13069                      p_supplier_site_id    => null,
13070                      p_party_site_id       => null,
13071                      p_org_id              => null,
13072                      p_org_type            => null, -- veramach added p_org_type as a new paramter for bug 7153777
13073                      x_bank_acc_id         => l_bank_acct_id,
13074                      x_response            => ext_response_rec);
13075 
13076                   IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
13077                     UPDATE iby_temp_ext_bank_accts
13078                     SET status = 'PROCESSED'
13079                     WHERE temp_ext_bank_acct_id = l_temp_ext_acct_id;
13080 
13081                   ELSE
13082                     UPDATE iby_temp_ext_bank_accts
13083                     SET status = 'REJECTED'
13084                     WHERE temp_ext_bank_acct_id = l_temp_ext_acct_id;
13085 
13086                     IF (Insert_Rejections(
13087                       'IBY_TEMP_EXT_BANK_ACCTS',
13088                        vendor_rec.vendor_interface_id,
13089                       'AP_BANK_ACCT_CREATION',
13090                       g_user_id,
13091                       g_login_id,
13092                       'Import_Vendor') <> TRUE) THEN
13093                      --
13094                       IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13095                         FND_MSG_PUB.Count_And_Get(
13096                           p_count   =>   l_msg_count,
13097                           p_data    =>   l_msg_data);
13098                         FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
13099                           l_api_name,'Parameters: '
13100                           ||' Vendor_Interface_Id: '||vendor_rec.vendor_interface_id
13101                           ||' Acct Validation Msg: '||l_msg_data);
13102                       END IF;
13103                     END IF;
13104 
13105                         -- Bug 5491139 hkaniven start --
13106                         FND_MESSAGE.SET_NAME('SQLAP','AP_BANK_ACCT_CREATION');
13107                         FND_MSG_PUB.ADD;
13108                         -- Bug 5491139 hkaniven end --
13109                   END IF;    -- Bank Account Creation API
13110 
13111                 ELSE
13112                   UPDATE iby_temp_ext_bank_accts
13113                   SET status = 'REJECTED'
13114                   WHERE temp_ext_bank_acct_id = l_temp_ext_acct_id;
13115 
13116                   IF (Insert_Rejections(
13117                     'IBY_TEMP_EXT_BANK_ACCTS',
13118                     vendor_rec.vendor_interface_id,
13119                     'AP_INVALID_BANK_ACCT_INFO',
13120                     g_user_id,
13121                     g_login_id,
13122                     'Import_Vendor') <> TRUE) THEN
13123                    --
13124                     IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13125                       FND_MSG_PUB.Count_And_Get(
13126                         p_count   =>   l_msg_count,
13127                         p_data    =>   l_msg_data);
13128                       FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
13129                         l_api_name,'Parameters: '
13130                         ||' Vendor_Interface_Id: '||vendor_rec.vendor_interface_id
13131                         ||' Acct Validation Msg: '||l_msg_data);
13132                     END IF;
13133                   END IF;
13134 
13135                     -- Bug 5491139 hkaniven start --
13136                     FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_BANK_ACCT_INFO');
13137                     FND_MSG_PUB.ADD;
13138                     -- Bug 5491139 hkaniven end --
13139                 END IF;  -- Bank Account Validation API
13140 
13141               END LOOP;
13142               CLOSE iby_ext_accts_cur;
13143 
13144             ELSE
13145               IF (Insert_Rejections(
13146                     'AP_SUPPLIERS_INT',
13147                     vendor_rec.vendor_interface_id,
13148                     'AP_PAYEE_CREATION',
13149                     g_user_id,
13150                     g_login_id,
13151                     'Import_Vendor') <> TRUE) THEN
13152                --
13153                 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13154                   FND_MSG_PUB.Count_And_Get(
13155                     p_count   =>   l_msg_count,
13156                     p_data    =>   l_msg_data);
13157                   FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
13158                     l_api_name,'Parameters: '
13159                     ||' Vendor_Interface_Id: '||vendor_rec.vendor_interface_id
13160                     ||' Payee Validation Msg: '||l_msg_data);
13161                 END IF;
13162               END IF;
13163 
13164                 -- Bug 5491139 hkaniven start --
13165                 FND_MESSAGE.SET_NAME('SQLAP','AP_PAYEE_CREATION');
13166                 FND_MSG_PUB.ADD;
13167                 -- Bug 5491139 hkaniven end --
13168             END IF;   -- Payee Creation API
13169 
13170           ELSE
13171             IF (Insert_Rejections(
13172                     'AP_SUPPLIERS_INT',
13173                     vendor_rec.vendor_interface_id,
13174                     'AP_INVALID_PAYEE',
13175                     g_user_id,
13176                     g_login_id,
13177                     'Import_Vendor') <> TRUE) THEN
13178            --
13179               IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13180                 FND_MSG_PUB.Count_And_Get(
13181                   p_count   =>   l_msg_count,
13182                   p_data    =>   l_msg_data);
13183                 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
13184                    l_api_name,'Parameters: '
13185                    ||' Vendor_Interface_Id: '||vendor_rec.vendor_interface_id
13186                    ||' Payee Validation Msg: '||l_msg_data);
13187               END IF;
13188             END IF;
13189 
13190             -- Bug 5491139 hkaniven start --
13191             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PAYEE');
13192             FND_MSG_PUB.ADD;
13193             -- Bug 5491139 hkaniven end --
13194           END IF;  -- Payee Validation API
13195 
13196         ELSE
13197 
13198           UPDATE Ap_Suppliers_Int
13199           SET    status = 'REJECTED'
13200           WHERE  vendor_interface_id = vendor_rec.vendor_interface_id;
13201 
13202           IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13203             FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
13204              ' Rejected Vendor_Interface_Id: '
13205              ||vendor_rec.vendor_interface_id
13206              ||', No. of Messages from Create_Vendor API: '|| l_msg_count
13207              ||', Message From Create_Vendor API: '||l_msg_data);
13208           END IF;
13209 
13210         END IF;  -- Supplier Creation API
13211 
13212       END LOOP;
13213 
13214       CLOSE vendor_int_cur;
13215 
13216     END IF;
13217     -- End of API body.
13218 
13219     COMMIT WORK;
13220 
13221     -- Standard call to get message count and if count is 1,
13222     -- get message info.
13223     FND_MSG_PUB.Count_And_Get(
13224         p_count                 =>      x_msg_count,
13225         p_data                  =>      x_msg_data
13226         );
13227 
13228 EXCEPTION
13229   WHEN FND_API.G_EXC_ERROR THEN
13230     ROLLBACK TO Import_Vendor_PUB;
13231     x_return_status := FND_API.G_RET_STS_ERROR ;
13232     FND_MSG_PUB.Count_And_Get
13233                 (       p_count                 =>      x_msg_count,
13234                         p_data                  =>      x_msg_data
13235                 );
13236   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
13237     ROLLBACK TO Import_Vendor_PUB;
13238     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
13239     FND_MSG_PUB.Count_And_Get
13240                 (       p_count                 =>      x_msg_count,
13241                         p_data                  =>      x_msg_data
13242                 );
13243   WHEN OTHERS THEN
13244     ROLLBACK TO Import_Vendor_PUB;
13245     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
13246     IF FND_MSG_PUB.Check_Msg_Level
13247          (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
13248          FND_MSG_PUB.Add_Exc_Msg
13249                         (       G_PKG_NAME,
13250                                 l_api_name
13251                         );
13252     END IF;
13253     FND_MSG_PUB.Count_And_Get
13254                 (       p_count                 =>      x_msg_count,
13255                         p_data                  =>      x_msg_data
13256                 );
13257 END Import_Vendors;
13258 
13259 PROCEDURE Import_Vendor_Sites
13260 (       p_api_version           IN      NUMBER,
13261         p_source                IN      VARCHAR2 DEFAULT 'IMPORT',
13262         p_what_to_import        IN      VARCHAR2 DEFAULT NULL,
13263         p_commit_size           IN      NUMBER   DEFAULT 1000,
13264         x_return_status         OUT NOCOPY VARCHAR2,
13265         x_msg_count             OUT NOCOPY NUMBER,
13266         x_msg_data              OUT NOCOPY VARCHAR2
13267 )
13268 IS
13269 
13270     l_api_name                  CONSTANT VARCHAR2(30)   := 'Import_Vendor_Sites';
13271     l_api_version               CONSTANT NUMBER         := 1.0;
13272 
13273     l_program_application_id    NUMBER  := FND_GLOBAL.prog_appl_id;
13274     l_program_id                NUMBER  := FND_GLOBAL.conc_program_id;
13275     l_request_id                NUMBER  := FND_GLOBAL.conc_request_id;
13276 
13277     l_return_status             VARCHAR2(2000);
13278     l_msg_count                 NUMBER;
13279     l_msg_data                  VARCHAR2(2000);
13280     l_vendor_site_id            NUMBER;
13281     l_party_site_id             NUMBER;
13282     l_location_id               NUMBER;
13283 
13284     CURSOR site_int_cur IS
13285     SELECT *
13286     FROM Ap_Supplier_Sites_Int
13287     WHERE import_request_id = l_request_id
13288     AND  (org_id IS NOT NULL OR operating_unit_name IS NOT NULL)
13289     AND vendor_id IS NOT NULL;
13290 
13291     site_int_rec               site_int_cur%ROWTYPE;
13292     site_rec                   r_vendor_site_rec_type;
13293 
13294     /* Variable Declaration for IBY */
13295     ext_payee_rec               IBY_DISBURSEMENT_SETUP_PUB.External_Payee_Rec_Type;
13296     ext_payee_tab               IBY_DISBURSEMENT_SETUP_PUB.External_Payee_Tab_Type;
13297     ext_payee_id_rec            IBY_DISBURSEMENT_SETUP_PUB.Ext_Payee_Id_Rec_Type;
13298     ext_payee_id_tab            IBY_DISBURSEMENT_SETUP_PUB.Ext_Payee_Id_Tab_Type;
13299     ext_payee_create_rec        IBY_DISBURSEMENT_SETUP_PUB.Ext_Payee_Create_Rec_Type;
13300     ext_payee_create_tab        IBY_DISBURSEMENT_SETUP_PUB.Ext_Payee_Create_Tab_Type;
13301     l_temp_ext_acct_id          NUMBER;
13302     ext_response_rec            IBY_FNDCPT_COMMON_PUB.Result_Rec_Type;
13303 
13304     l_party_id                  NUMBER;
13305     l_ext_payee_id              NUMBER;
13306     l_bank_acct_id              NUMBER;
13307 
13308     CURSOR IBY_EXT_ACCTS_CUR (p_unique_ref IN NUMBER) IS
13309     SELECT temp_ext_bank_acct_id
13310     FROM IBY_TEMP_EXT_BANK_ACCTS
13311     WHERE calling_app_unique_ref2 = p_unique_ref
13312     --Bug 7412849 (Base Bug 7387700)  As status can be NULL, this where condition always resolves to FALSE.
13313     --Added NVL around 'status'.
13314     --AND status  <> 'PROCESSED';
13315     AND nvl(status,'NEW')  <> 'PROCESSED';
13316 
13317     l_debug_info                 varchar2(500); -- Bug 6823885
13318 
13319 BEGIN
13320 
13321     -- Standard Start of API savepoint
13322     SAVEPOINT   Import_Vendor_Sites_PUB;
13323 
13324     -- Standard call to check for call compatibility.
13325     IF NOT FND_API.Compatible_API_Call (l_api_version,
13326                                         p_api_version,
13327                                         l_api_name,
13328                                         G_PKG_NAME )
13329     THEN
13330         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13331     END IF;
13332 
13333     FND_MSG_PUB.initialize;
13334 
13335     g_user_id       := FND_GLOBAL.USER_ID;
13336     g_login_id      := FND_GLOBAL.LOGIN_ID;
13337     g_source        := p_source;
13338     --  Initialize API return status to success
13339     x_return_status := FND_API.G_RET_STS_SUCCESS;
13340 
13341     -- API body
13342 
13343     IF g_source <> 'IMPORT' THEN
13344      NULL;
13345     ELSE
13346       --udhenuko Bug 6823885 This update statement resets the unprocessed rows so
13347       -- that they get picked in the current run.
13348       UPDATE Ap_Supplier_Sites_Int api
13349       SET import_request_id = NULL
13350       WHERE import_request_id IS NOT NULL
13351         AND NVL(status,'NEW') IN ('NEW', 'REJECTED')
13352         AND EXISTS
13353                 ( SELECT 'Request Completed'
13354                     FROM fnd_concurrent_requests fcr
13355                   WHERE fcr.request_id = api.import_request_id
13356                     AND fcr.phase_code = 'C' );
13357       -- udhenuko Bug 6823885 End
13358       --bug 5584046
13359       DELETE AP_SUPPLIER_INT_REJECTIONS
13360       WHERE PARENT_TABLE='AP_SUPPLIER_SITES_INT';
13361 
13362       -- Updating Interface Record with request id
13363 
13364 
13365       UPDATE Ap_Supplier_Sites_Int
13366       SET    import_request_id = l_request_id
13367       WHERE  import_request_id IS NULL AND
13368              ((p_what_to_import = 'ALL' AND nvl(status,'NEW') in ('NEW', 'REJECTED')) OR
13369              (p_what_to_import = 'NEW' AND nvl(status,'NEW') = 'NEW') OR
13370              (p_what_to_import = 'REJECTED' AND nvl(status,'NEW') = 'REJECTED'));
13371 
13372       UPDATE Ap_Supplier_Sites_Int
13373       SET    status = 'REJECTED',
13374              import_request_id = l_request_id
13375       WHERE  (operating_unit_name IS NULL AND org_id IS NULL) OR
13376              vendor_id IS NULL ;
13377 
13378       --bug 5584046
13379       INSERT INTO Ap_Supplier_Int_Rejections
13380       (SELECT 'AP_SUPPLIER_SITES_INT',vendor_site_interface_id,'AP_ORG_INFO_NULL',
13381               g_user_id,SYSDATE,g_login_id,g_user_id,SYSDATE
13382       FROM   Ap_Supplier_Sites_Int
13383       WHERE  STATUS='REJECTED'
13384       AND    import_request_id=l_request_id
13385       AND    (operating_unit_name IS NULL and org_id IS NULL))
13386       UNION
13387       select 'AP_SUPPLIER_SITES_INT',vendor_site_interface_id,'AP_VENDOR_ID_NULL',
13388              g_user_id,SYSDATE,g_login_id,g_user_id,SYSDATE
13389       from   Ap_Supplier_Sites_Int
13390       where status='REJECTED'
13391       AND import_request_id=l_request_id
13392       AND vendor_id IS NULL;
13393       --bug 5584046
13394       COMMIT;
13395 
13396       -- Cursor processing for vendor contact interface record
13397       OPEN site_int_cur;
13398       LOOP
13399 
13400         FETCH site_int_cur
13401         INTO site_int_rec;
13402         EXIT WHEN site_int_cur%NOTFOUND;
13403 
13404         site_rec.vendor_site_interface_id     := site_int_rec.vendor_site_interface_id;
13405         site_rec.vendor_interface_id          := site_int_rec.vendor_interface_id;
13406         site_rec.vendor_id                    := site_int_rec.vendor_id;
13407         site_rec.vendor_site_code             := site_int_rec.vendor_site_code;
13408         site_rec.vendor_site_code_alt         := site_int_rec.vendor_site_code_alt;
13409         site_rec.purchasing_site_flag         := site_int_rec.purchasing_site_flag;
13410         site_rec.rfq_only_site_flag           := site_int_rec.rfq_only_site_flag;
13411         site_rec.pay_site_flag                := site_int_rec.pay_site_flag;
13412         site_rec.attention_ar_flag            := site_int_rec.attention_ar_flag;
13413        /* Bug 6620831. Trimming Trailing Spaces for address related fields */
13414         site_rec.address_line1                := rtrim(site_int_rec.address_line1);
13415         site_rec.address_lines_alt            := rtrim(site_int_rec.address_lines_alt);
13416         site_rec.address_line2                := rtrim(site_int_rec.address_line2);
13417         site_rec.address_line3                := rtrim(site_int_rec.address_line3);
13418         site_rec.city                         := rtrim(site_int_rec.city);
13419         site_rec.state                        := rtrim(site_int_rec.state);
13420         site_rec.zip                          := site_int_rec.zip;
13421         site_rec.province                     := site_int_rec.province;
13422         site_rec.country                      := site_int_rec.country;
13423         site_rec.phone                        := site_int_rec.phone;
13424         site_rec.area_code                    := site_int_rec.area_code;
13425         site_rec.customer_num                 := site_int_rec.customer_num;
13426         site_rec.ship_to_location_id          := site_int_rec.ship_to_location_id;
13427         site_rec.ship_to_location_code        := site_int_rec.ship_to_location_code;
13428         site_rec.bill_to_location_id          := site_int_rec.bill_to_location_id;
13429         site_rec.bill_to_location_code        := site_int_rec.bill_to_location_code;
13430         site_rec.ship_via_lookup_code         := site_int_rec.ship_via_lookup_code;
13431         site_rec.freight_terms_lookup_code    := site_int_rec.freight_terms_lookup_code;
13432         site_rec.fob_lookup_code              := site_int_rec.fob_lookup_code;
13433         site_rec.inactive_date                := site_int_rec.inactive_date;
13434         site_rec.fax                          := site_int_rec.fax;
13435         site_rec.fax_area_code                := site_int_rec.fax_area_code;
13436         site_rec.telex                        := site_int_rec.telex;
13437         site_rec.terms_date_basis             := site_int_rec.terms_date_basis;
13438         site_rec.distribution_set_id          := site_int_rec.distribution_set_id;
13439         site_rec.distribution_set_name        := site_int_rec.distribution_set_name;
13440         site_rec.accts_pay_code_combination_id :=
13441                                               site_int_rec.accts_pay_code_combination_id;
13442         site_rec.prepay_code_combination_id   := site_int_rec.prepay_code_combination_id;
13443         site_rec.pay_group_lookup_code        := site_int_rec.pay_group_lookup_code;
13444         site_rec.payment_priority             := site_int_rec.payment_priority;
13445         site_rec.terms_id                     := site_int_rec.terms_id;
13446         site_rec.terms_name                    := site_int_rec.terms_name;
13447         /* Added for bug#7363316 Start */
13448         site_rec.tolerance_id                 := site_int_rec.tolerance_id;
13449         site_rec.tolerance_name               := site_int_rec.tolerance_name;
13450         /* Added for bug#7363316 End */
13451         site_rec.invoice_amount_limit         := site_int_rec.invoice_amount_limit;
13452         site_rec.pay_date_basis_lookup_code   := site_int_rec.pay_date_basis_lookup_code;
13453         site_rec.always_take_disc_flag        := site_int_rec.always_take_disc_flag;
13454         site_rec.invoice_currency_code        := site_int_rec.invoice_currency_code;
13455         site_rec.payment_currency_code        := site_int_rec.payment_currency_code;
13456         site_rec.hold_all_payments_flag       := site_int_rec.hold_all_payments_flag;
13457         site_rec.hold_future_payments_flag    := site_int_rec.hold_future_payments_flag;
13458         site_rec.hold_reason                  := site_int_rec.hold_reason;
13459         site_rec.hold_unmatched_invoices_flag := site_int_rec.hold_unmatched_invoices_flag;
13460         site_rec.tax_reporting_site_flag      := site_int_rec.tax_reporting_site_flag;
13461         site_rec.attribute_category           := site_int_rec.attribute_category;
13462         site_rec.attribute1                   := site_int_rec.attribute1;
13463         site_rec.attribute2                   := site_int_rec.attribute2;
13464         site_rec.attribute3                   := site_int_rec.attribute3;
13465         site_rec.attribute4                   := site_int_rec.attribute4;
13466         site_rec.attribute5                   := site_int_rec.attribute5;
13467         site_rec.attribute6                   := site_int_rec.attribute6;
13468         site_rec.attribute7                   := site_int_rec.attribute7;
13469         site_rec.attribute8                   := site_int_rec.attribute8;
13470         site_rec.attribute9                   := site_int_rec.attribute9;
13471         site_rec.attribute10                  := site_int_rec.attribute10;
13472         site_rec.attribute11                  := site_int_rec.attribute11;
13473         site_rec.attribute12                  := site_int_rec.attribute12;
13474         site_rec.attribute13                  := site_int_rec.attribute13;
13475         site_rec.attribute14                  := site_int_rec.attribute14;
13476         site_rec.attribute15                  := site_int_rec.attribute15;
13477         site_rec.exclude_freight_from_discount:= site_int_rec.exclude_freight_from_discount;
13478         site_rec.org_id                       := site_int_rec.org_id;
13479         site_rec.org_name                     := site_int_rec.operating_unit_name;
13480         site_rec.address_line4                := rtrim(site_int_rec.address_line4);
13481         site_rec.county                       := site_int_rec.county;
13482         site_rec.address_style                := site_int_rec.address_style;
13483         site_rec.language                     := site_int_rec.language;
13484         site_rec.allow_awt_flag               := site_int_rec.allow_awt_flag;
13485         site_rec.awt_group_id                 := site_int_rec.awt_group_id;
13486         site_rec.awt_group_name               := site_int_rec.awt_group_name;
13487         site_rec.global_attribute1            := site_int_rec.global_attribute1;
13488         site_rec.global_attribute2            := site_int_rec.global_attribute2;
13489         site_rec.global_attribute3            := site_int_rec.global_attribute3;
13490         site_rec.global_attribute4            := site_int_rec.global_attribute4;
13491         site_rec.global_attribute5            := site_int_rec.global_attribute5;
13492         site_rec.global_attribute6            := site_int_rec.global_attribute6;
13493         site_rec.global_attribute7            := site_int_rec.global_attribute7;
13494         site_rec.global_attribute8            := site_int_rec.global_attribute8;
13495         site_rec.global_attribute9            := site_int_rec.global_attribute9;
13496         site_rec.global_attribute10           := site_int_rec.global_attribute10;
13497         site_rec.global_attribute11           := site_int_rec.global_attribute11;
13498         site_rec.global_attribute12           := site_int_rec.global_attribute12;
13499         site_rec.global_attribute13           := site_int_rec.global_attribute13;
13500         site_rec.global_attribute14           := site_int_rec.global_attribute14;
13501         site_rec.global_attribute15           := site_int_rec.global_attribute15;
13502         site_rec.global_attribute16           := site_int_rec.global_attribute16;
13503         site_rec.global_attribute17           := site_int_rec.global_attribute17;
13504         site_rec.global_attribute18           := site_int_rec.global_attribute18;
13505         site_rec.global_attribute19           := site_int_rec.global_attribute19;
13506         site_rec.global_attribute20           := site_int_rec.global_attribute20;
13507         site_rec.global_attribute_category    := site_int_rec.global_attribute_category;
13508         site_rec.bank_charge_bearer           := site_int_rec.bank_charge_bearer;
13509         site_rec.pay_on_code                  := site_int_rec.pay_on_code;
13510         site_rec.pay_on_receipt_summary_code  := site_int_rec.pay_on_receipt_summary_code;
13511         site_rec.default_pay_site_id          := site_int_rec.default_pay_site_id;
13512         site_rec.tp_header_id                 := site_int_rec.tp_header_id;
13513         site_rec.ece_tp_location_code         := site_int_rec.ece_tp_location_code;
13514         site_rec.pcard_site_flag              := site_int_rec.pcard_site_flag;
13515         site_rec.match_option                 := site_int_rec.match_option;
13516         site_rec.country_of_origin_code       := site_int_rec.country_of_origin_code;
13517         site_rec.future_dated_payment_ccid    := site_int_rec.future_dated_payment_ccid;
13518         site_rec.create_debit_memo_flag       := site_int_rec.create_debit_memo_flag;
13519         site_rec.supplier_notif_method        := site_int_rec.supplier_notif_method;
13520         site_rec.email_address                := site_int_rec.email_address;
13521         site_rec.primary_pay_site_flag        := site_int_rec.primary_pay_site_flag;
13522         site_rec.shipping_control             := site_int_rec.shipping_control;
13523         site_rec.duns_number                  := site_int_rec.duns_number;
13524 	site_rec.retainage_rate		      := site_int_rec.retainage_rate;
13525         site_rec.vat_code                     := site_int_rec.vat_code;
13526         -- bug 6645014 To Import VAT Code.
13527 	site_rec.vat_registration_num         := site_int_rec.vat_registration_num; -- Bug 7207314
13528 	site_rec.edi_id_number                  := site_int_rec.edi_id_number;      -- Bug 7437549
13529         ext_payee_rec.payer_org_type            := 'OPERATING_UNIT';
13530         ext_payee_rec.exclusive_pay_flag        :=NVL(site_int_rec.exclusive_payment_flag,'N');
13531             --bug6495364
13532 
13533         -- udhenuko Bug 6823885 Removed the comment for default payment method as this
13534         -- should be populated to create payment methods in IBY tables.
13535         ext_payee_rec.default_pmt_method        := site_int_rec.payment_method_lookup_code;
13536         ext_payee_rec.ece_tp_loc_code           := site_int_rec.ece_tp_location_code;
13537         --BG
13538         ext_payee_rec.bank_charge_bearer        := site_int_rec.iby_bank_charge_bearer;
13539         ext_payee_rec.bank_instr1_code          := site_int_rec.bank_instruction1_code;
13540         ext_payee_rec.bank_instr2_code          := site_int_rec.bank_instruction2_code;
13541         ext_payee_rec.bank_instr_detail         := site_int_rec.bank_instruction_details;
13542         ext_payee_rec.pay_reason_code           := site_int_rec.payment_reason_code;
13543         ext_payee_rec.pay_reason_com            := site_int_rec.payment_reason_comments;
13544         ext_payee_rec.pay_message1              := site_int_rec.payment_text_message1;
13545         ext_payee_rec.pay_message2              := site_int_rec.payment_text_message2;
13546         ext_payee_rec.pay_message3              := site_int_rec.payment_text_message3;
13547         ext_payee_rec.delivery_channel          := site_int_rec.delivery_channel_code;
13548         ext_payee_rec.pmt_format                := site_int_rec.payment_format_code;
13549         ext_payee_rec.settlement_priority       := site_int_rec.settlement_priority;
13550 	-- Bug 7437549 Start
13551         -- Note that we must populate these EDI related fields only to ext_payee_rec
13552         -- Because only this record is passed for call to IBY in case of import.
13553         -- There is no need to populate site_rec.ext_payee_rec.
13554         -- Even if we pass it wont be used.
13555         ext_payee_rec.edi_payment_format         := site_int_rec.edi_payment_format;
13556         ext_payee_rec.edi_transaction_handling   := site_int_rec.edi_transaction_handling;
13557         ext_payee_rec.edi_payment_method         := site_int_rec.edi_payment_method;
13558         ext_payee_rec.edi_remittance_method      := site_int_rec.edi_remittance_method;
13559         ext_payee_rec.edi_remittance_instruction := site_int_rec.edi_remittance_instruction;
13560         -- Bug 7437549 End
13561 		-- 6458813 Populating the ext_payee_rec of site_rec
13562          site_rec.ext_payee_rec.payer_org_type            := 'OPERATING_UNIT';--bug6495364
13563         site_rec.ext_payee_rec.payment_function          := 'PAYABLES_DISB';--bug6495364
13564         site_rec.ext_payee_rec.exclusive_pay_flag        := nvl(site_int_rec.exclusive_payment_flag,'N');--bug6495364
13565         site_rec.ext_payee_rec.default_pmt_method        := site_int_rec.payment_method_lookup_code;
13566         site_rec.ext_payee_rec.ece_tp_loc_code           := site_int_rec.ece_tp_location_code;
13567         site_rec.ext_payee_rec.bank_charge_bearer        := site_int_rec.iby_bank_charge_bearer;
13568         site_rec.ext_payee_rec.bank_instr1_code          := site_int_rec.bank_instruction1_code;
13569         site_rec.ext_payee_rec.bank_instr2_code          := site_int_rec.bank_instruction2_code;
13570         site_rec.ext_payee_rec.bank_instr_detail         := site_int_rec.bank_instruction_details;
13571         site_rec.ext_payee_rec.pay_reason_code           := site_int_rec.payment_reason_code;
13572         site_rec.ext_payee_rec.pay_reason_com            := site_int_rec.payment_reason_comments;
13573         site_rec.ext_payee_rec.pay_message1              := site_int_rec.payment_text_message1;
13574         site_rec.ext_payee_rec.pay_message2              := site_int_rec.payment_text_message2;
13575         site_rec.ext_payee_rec.pay_message3              := site_int_rec.payment_text_message3;
13576         site_rec.ext_payee_rec.delivery_channel          := site_int_rec.delivery_channel_code;
13577         site_rec.ext_payee_rec.pmt_format                := site_int_rec.payment_format_code;
13578         site_rec.ext_payee_rec.settlement_priority       := site_int_rec.settlement_priority;
13579 		-- 6458813 ends
13580 
13581         -- Bug 7429668 start
13582         site_rec.party_site_id                                  := site_int_rec.party_site_id;
13583         site_rec.party_site_name                                := site_int_rec.party_site_name ;
13584         -- Bug 7429668 end
13585 	-- Bug#7642742
13586         site_rec.auto_tax_calc_flag                             := site_int_rec.auto_tax_calc_flag ;
13587         site_rec.offset_tax_flag                                := site_int_rec.offset_tax_flag ;
13588 
13589         Create_Vendor_Site
13590           ( p_api_version       =>  1.0,
13591             p_init_msg_list     =>  FND_API.G_FALSE,
13592             p_commit            =>  FND_API.G_FALSE,
13593             p_validation_level  =>  FND_API.G_VALID_LEVEL_FULL,
13594             x_return_status     =>  l_return_status,
13595             x_msg_count         =>  l_msg_count,
13596             x_msg_data          =>  l_msg_data,
13597             p_vendor_site_rec   =>  site_rec,
13598             x_vendor_site_id    =>  l_vendor_site_id,
13599             x_party_site_id     =>  l_party_site_id,
13600             x_location_id       =>  l_location_id);
13601 
13602         IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
13603 
13604           UPDATE Ap_Supplier_Sites_Int
13605           SET    status = 'PROCESSED'
13606           WHERE  vendor_site_interface_id =
13607                         site_rec.vendor_site_interface_id;
13608 
13609           UPDATE AP_Sup_Site_Contact_Int
13610           SET    vendor_site_id = l_vendor_site_id
13611           WHERE  vendor_id = site_rec.vendor_id
13612           AND    vendor_site_code = site_rec.vendor_site_code
13613           AND    (org_id = site_rec.org_id OR
13614                   operating_unit_name = site_rec.org_name);
13615 
13616           ext_payee_rec.supplier_site_id        := l_vendor_site_id;
13617           ext_payee_rec.payee_party_site_id     := l_party_site_id;
13618 
13619           SELECT org_id
13620           INTO ext_payee_rec.payer_org_id
13621           FROM Po_Vendor_Sites_All
13622           WHERE vendor_site_id = l_vendor_site_id;
13623 
13624           -- As per the discussion with Omar/Jayanta, we will only
13625           -- have payables payment function and no more employee expenses
13626           -- payment function.
13627 
13628 
13629           SELECT party_id, 'PAYABLES_DISB'
13630           INTO ext_payee_rec.payee_party_id,
13631                ext_payee_rec.payment_function
13632           FROM Po_Vendors
13633           WHERE vendor_id = site_rec.vendor_id;
13634 
13635           /* Calling IBY Payee Validation API */
13636           IBY_DISBURSEMENT_SETUP_PUB.Validate_External_Payee
13637             ( p_api_version     => 1.0,
13638               p_init_msg_list   => FND_API.G_FALSE,
13639               p_ext_payee_rec   => ext_payee_rec,
13640               x_return_status   => l_return_status,
13641               x_msg_count       => l_msg_count,
13642               x_msg_data        => l_msg_data);
13643 
13644           IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
13645 
13646             --bug 5569961  ext_payee_tab(ext_payee_tab.first)      := ext_payee_rec;
13647              ext_payee_tab(1)      := ext_payee_rec;
13648 
13649             /* Calling IBY Payee Creation API */
13650             IBY_DISBURSEMENT_SETUP_PUB.Create_External_Payee
13651               ( p_api_version         => 1.0,
13652                 p_init_msg_list       => FND_API.G_FALSE,
13653                 p_ext_payee_tab       => ext_payee_tab,
13654                 x_return_status       => l_return_status,
13655                 x_msg_count           => l_msg_count,
13656                 x_msg_data            => l_msg_data,
13657                 x_ext_payee_id_tab    => ext_payee_id_tab,
13658                 x_ext_payee_status_tab => ext_payee_create_tab);
13659 
13660             IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
13661               --bug 5568861 l_ext_payee_id     := ext_payee_id_tab(ext_payee_id_tab.first).ext_payee_id;
13662                l_ext_payee_id     := ext_payee_id_tab(1).ext_payee_id;
13663 
13664               UPDATE IBY_TEMP_EXT_BANK_ACCTS
13665               SET ext_payee_id = l_ext_payee_id
13666                  ,account_owner_party_id = ext_payee_rec.payee_party_id --bug 6753331
13667               WHERE calling_app_unique_ref2 = site_rec.vendor_site_interface_id;
13668 
13669               -- Cursor processing for iby temp bank account record
13670               OPEN iby_ext_accts_cur(site_rec.vendor_site_interface_id);
13671               LOOP
13672 
13673                 FETCH iby_ext_accts_cur
13674                 INTO l_temp_ext_acct_id;
13675                 EXIT WHEN iby_ext_accts_cur%NOTFOUND;
13676 
13677                  /* Calling IBY Bank Account Validation API */
13678                 IBY_DISBURSEMENT_SETUP_PUB.Validate_Temp_Ext_Bank_Acct
13679                  ( p_api_version         => 1.0,
13680                    p_init_msg_list       => FND_API.G_FALSE,
13681                    x_return_status       => l_return_status,
13682                    x_msg_count           => l_msg_count,
13683                    x_msg_data            => l_msg_data,
13684                    p_temp_ext_acct_id    => l_temp_ext_acct_id);
13685 
13686                 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
13687                   /* Calling IBY Bank Account Creation API */
13688                   -- Bug 6845995. Calling overloaded procedure
13689                   -- which will create the association between
13690                   -- supplier site and bank account.
13691                   IBY_DISBURSEMENT_SETUP_PUB.Create_Temp_Ext_Bank_Acct
13692                    ( p_api_version         => 1.0,
13693                      p_init_msg_list       => FND_API.G_FALSE,
13694                      x_return_status       => l_return_status,
13695                      x_msg_count           => l_msg_count,
13696                      x_msg_data            => l_msg_data,
13697                      p_temp_ext_acct_id    => l_temp_ext_acct_id,
13698                      p_association_level   => 'SS',
13699                      p_supplier_site_id    => l_vendor_site_id,
13700                      p_party_site_id       => ext_payee_rec.payee_party_site_id,
13701                      p_org_id              => ext_payee_rec.payer_org_id,
13702                      p_org_type            => 'OPERATING_UNIT', -- veramach added p_org_type as a new paramter for bug 7153777
13703                      x_bank_acc_id         => l_bank_acct_id,
13704                      x_response            => ext_response_rec);
13705 
13706                   IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
13707                     UPDATE iby_temp_ext_bank_accts
13708                     SET status = 'PROCESSED'
13709                     WHERE temp_ext_bank_acct_id = l_temp_ext_acct_id;
13710 
13711                   ELSE -- Bank Account Creation API
13712                     UPDATE iby_temp_ext_bank_accts
13713                     SET status = 'REJECTED'
13714                     WHERE temp_ext_bank_acct_id = l_temp_ext_acct_id;
13715 
13716                     IF (Insert_Rejections(
13717                       'IBY_TEMP_EXT_BANK_ACCTS',
13718                        site_rec.vendor_site_interface_id,
13719                       'AP_BANK_ACCT_CREATION',
13720                       g_user_id,
13721                       g_login_id,
13722                       'Import_Vendor_Site') <> TRUE) THEN
13723                      --
13724                       IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13725                         FND_MSG_PUB.Count_And_Get(
13726                           p_count   =>   l_msg_count,
13727                           p_data    =>   l_msg_data);
13728                         FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
13729                           l_api_name,'Parameters: '
13730                           ||' Vendor_Site_Interface_Id: '||site_rec.vendor_site_interface_id
13731                           ||' Acct Validation Msg: '||l_msg_data);
13732                       END IF;
13733                     END IF;
13734 
13735                     -- Bug 5491139 hkaniven start --
13736                     FND_MESSAGE.SET_NAME('SQLAP','AP_BANK_ACCT_CREATION');
13737                     FND_MSG_PUB.ADD;
13738                     -- Bug 5491139 hkaniven end --
13739                   END IF;    -- Bank Account Creation API
13740 
13741                 ELSE  -- Bank Account Validation API
13742                   UPDATE iby_temp_ext_bank_accts
13743                   SET status = 'REJECTED'
13744                   WHERE temp_ext_bank_acct_id = l_temp_ext_acct_id;
13745 
13746                   IF (Insert_Rejections(
13747                     'IBY_TEMP_EXT_BANK_ACCTS',
13748                     site_rec.vendor_site_interface_id,
13749                     'AP_INVALID_BANK_ACCT_INFO',
13750                     g_user_id,
13751                     g_login_id,
13752                     'Import_Vendor_Site') <> TRUE) THEN
13753                    --
13754                     IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13755                       FND_MSG_PUB.Count_And_Get(
13756                         p_count   =>   l_msg_count,
13757                         p_data    =>   l_msg_data);
13758                       FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
13759                         l_api_name,'Parameters: '
13760                         ||' Vendor_Site_Interface_Id: '||site_rec.vendor_site_interface_id
13761                         ||' Acct Validation Msg: '||l_msg_data);
13762                     END IF;
13763                   END IF;
13764 
13765                     -- Bug 5491139 hkaniven start --
13766                     FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_BANK_ACCT_INFO');
13767                     FND_MSG_PUB.ADD;
13768                     -- Bug 5491139 hkaniven end --
13769                 END IF;  -- Bank Account Validation API
13770 
13771               END LOOP;
13772               CLOSE iby_ext_accts_cur;
13773 
13774             ELSE  -- Payee Creation API
13775               IF (Insert_Rejections(
13776                     'AP_SUPPLIER_SITES_INT',
13777                     site_rec.vendor_site_interface_id,
13778                     'AP_PAYEE_CREATION',
13779                     g_user_id,
13780                     g_login_id,
13781                     'Import_Vendor_Site') <> TRUE) THEN
13782                --
13783                 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13784                   FND_MSG_PUB.Count_And_Get(
13785                     p_count   =>   l_msg_count,
13786                     p_data    =>   l_msg_data);
13787                   FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
13788                     l_api_name,'Parameters: '
13789                     ||' Vendor_Site_Interface_Id: '||site_rec.vendor_site_interface_id
13790                     ||' Payee Validation Msg: '||l_msg_data);
13791                 END IF;
13792               END IF;
13793 
13794                 -- Bug 5491139 hkaniven start --
13795                 FND_MESSAGE.SET_NAME('SQLAP','AP_PAYEE_CREATION');
13796                 FND_MSG_PUB.ADD;
13797                 -- Bug 5491139 hkaniven end --
13798             END IF;   -- Payee Creation API
13799 
13800           ELSE  -- Payee Validation API
13801             IF (Insert_Rejections(
13802                     'AP_SUPPLIER_SITES_INT',
13803                     site_rec.vendor_site_interface_id,
13804                     'AP_INVALID_PAYEE_INFO',
13805                     g_user_id,
13806                     g_login_id,
13807                     'Import_Vendor_Site') <> TRUE) THEN
13808            --
13809               IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13810                 FND_MSG_PUB.Count_And_Get(
13811                   p_count   =>   l_msg_count,
13812                   p_data    =>   l_msg_data);
13813                 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||
13814                    l_api_name,'Parameters: '
13815                    ||' Vendor_Site_Interface_Id: '||site_rec.vendor_site_interface_id
13816                    ||' Payee Validation Msg: '||l_msg_data);
13817               END IF;
13818             END IF;
13819 
13820             -- Bug 5491139 hkaniven start --
13821             FND_MESSAGE.SET_NAME('SQLAP','AP_INVALID_PAYEE_INFO');
13822             FND_MSG_PUB.ADD;
13823             -- Bug 5491139 hkaniven end --
13824           END IF;  -- Payee Validation API
13825 
13826         ELSE    -- Supplier Site Creation API
13827 
13828           UPDATE Ap_Supplier_Sites_Int
13829           SET    status = 'REJECTED'
13830           WHERE  vendor_site_interface_id =
13831                         site_rec.vendor_site_interface_id;
13832 
13833           IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13834             FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
13835              ' Rejected Vendor_Site_Interface_Id: '
13836              ||site_rec.vendor_site_interface_id
13837              ||', No. of Messages from Create_Vendor_Site API: '|| l_msg_count
13838              ||', Message From Create_Vendor_Site API: '||l_msg_data);
13839           END IF;
13840 
13841         END IF;   -- Supplier Site Creation API
13842 
13843       END LOOP;
13844 
13845       CLOSE site_int_cur;
13846 
13847     END IF;
13848     -- End of API body.
13849 
13850     -- Standard check of p_commit.
13851     COMMIT WORK;
13852 
13853     -- Standard call to get message count and if count is 1,
13854     -- get message info.
13855     FND_MSG_PUB.Count_And_Get(
13856         p_count                 =>      x_msg_count,
13857         p_data                  =>      x_msg_data
13858         );
13859 
13860 EXCEPTION
13861   WHEN FND_API.G_EXC_ERROR THEN
13862     ROLLBACK TO Import_Vendor_Sites_PUB;
13863     x_return_status := FND_API.G_RET_STS_ERROR ;
13864     FND_MSG_PUB.Count_And_Get
13865                 (       p_count                 =>      x_msg_count,
13866                         p_data                  =>      x_msg_data
13867                 );
13868   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
13869     ROLLBACK TO Import_Vendor_Sites_PUB;
13870     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
13871     FND_MSG_PUB.Count_And_Get
13872                 (       p_count                 =>      x_msg_count,
13873                         p_data                  =>      x_msg_data
13874                 );
13875   WHEN OTHERS THEN
13876     ROLLBACK TO Import_Vendor_Sites_PUB;
13877     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
13878     IF FND_MSG_PUB.Check_Msg_Level
13879          (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
13880          FND_MSG_PUB.Add_Exc_Msg
13881                         (       G_PKG_NAME,
13882                                 l_api_name
13883                         );
13884     END IF;
13885     FND_MSG_PUB.Count_And_Get
13886                 (       p_count                 =>      x_msg_count,
13887                         p_data                  =>      x_msg_data
13888                 );
13889 END Import_Vendor_Sites;
13890 
13891 PROCEDURE Import_Vendor_Contacts
13892 (       p_api_version           IN      NUMBER,
13893         p_source                IN      VARCHAR2 DEFAULT 'IMPORT',
13894         p_what_to_import        IN      VARCHAR2 DEFAULT NULL,
13895         p_commit_size           IN      NUMBER   DEFAULT 1000,
13896         x_return_status         OUT NOCOPY VARCHAR2,
13897         x_msg_count             OUT NOCOPY NUMBER,
13898         x_msg_data              OUT NOCOPY VARCHAR2
13899 )
13900 IS
13901 
13902     l_api_name                  CONSTANT VARCHAR2(30)   := 'Import_Vendor_Contacts';
13903     l_api_version               CONSTANT NUMBER         := 1.0;
13904 
13905     l_program_application_id    NUMBER  := FND_GLOBAL.prog_appl_id;
13906     l_program_id                NUMBER  := FND_GLOBAL.conc_program_id;
13907     l_request_id                NUMBER  := FND_GLOBAL.conc_request_id;
13908 
13909     l_return_status             VARCHAR2(2000);
13910     l_msg_count                 NUMBER;
13911     l_msg_data                  VARCHAR2(2000);
13912     l_vendor_contact_id         NUMBER;
13913     l_per_party_id              NUMBER;
13914     l_rel_party_id              NUMBER;
13915     l_rel_id                    NUMBER;
13916     l_org_contact_id            NUMBER;
13917     l_party_site_id             NUMBER;
13918 
13919     CURSOR contact_int_cur IS
13920     SELECT *
13921     FROM Ap_Sup_Site_Contact_Int
13922     WHERE import_request_id = l_request_id
13923     AND vendor_id IS NOT NULL
13924     AND (org_id IS NOT NULL OR operating_unit_name IS NOT NULL )
13925     AND vendor_id not in(select vendor_id from ap_suppliers
13926                          where vendor_type_lookup_code = 'EMPLOYEE') --Bug6648405
13927 
13928     -- Bug 7013954 Contacts can be created at Supplier level. So cannot mandate
13929 	-- the site information to be present.
13930     -- AND (vendor_site_code IS NOT NULL OR vendor_site_id IS NOT NULL)
13931     AND last_name IS NOT NULL
13932 	FOR UPDATE OF status;        --Bug6413297
13933 
13934     contact_int_rec            contact_int_cur%ROWTYPE;
13935     vendor_contact_rec         r_vendor_contact_rec_type;
13936 
13937 BEGIN
13938 
13939     -- Standard call to check for call compatibility.
13940     IF NOT FND_API.Compatible_API_Call (l_api_version,
13941                                         p_api_version,
13942                                         l_api_name,
13943                                         G_PKG_NAME )
13944     THEN
13945         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13946     END IF;
13947 
13948     FND_MSG_PUB.initialize;
13949 
13950     g_user_id       := FND_GLOBAL.USER_ID;
13951     g_login_id      := FND_GLOBAL.LOGIN_ID;
13952     g_source        := p_source;
13953     --  Initialize API return status to success
13954     x_return_status := FND_API.G_RET_STS_SUCCESS;
13955 
13956     -- API body
13957 
13958     IF g_source <> 'IMPORT' THEN
13959       NULL;
13960     ELSE
13961       --udhenuko Bug 6823885 This update statement resets the unprocessed rows so
13962       -- that they get picked in the current run.
13963       UPDATE Ap_Sup_Site_Contact_Int api
13964       SET import_request_id = NULL
13965       WHERE import_request_id IS NOT NULL
13966         AND NVL(status,'NEW') IN ('NEW', 'REJECTED')
13967         AND EXISTS
13968                 ( SELECT 'Request Completed'
13969                     FROM fnd_concurrent_requests fcr
13970                   WHERE fcr.request_id = api.import_request_id
13971                     AND fcr.phase_code = 'C' );
13972       --udhenuko Bug 6823885 End
13973       --bug 5591652
13974        DELETE AP_SUPPLIER_INT_REJECTIONS
13975        WHERE PARENT_TABLE='AP_SUP_SITE_CONTACT_INT';
13976       -- Updating Interface Record with request id
13977 
13978       UPDATE Ap_Sup_Site_Contact_Int
13979       SET    import_request_id = l_request_id
13980       WHERE  import_request_id IS NULL AND
13981              ((p_what_to_import = 'ALL' AND nvl(status,'NEW') in ('NEW', 'REJECTED')) OR
13982              (p_what_to_import = 'NEW' AND nvl(status,'NEW') = 'NEW') OR
13983              (p_what_to_import = 'REJECTED' AND nvl(status,'NEW') = 'REJECTED'));
13984 
13985       UPDATE Ap_Sup_Site_Contact_Int
13986       SET    status = 'REJECTED',
13987              import_request_id = l_request_id
13988       WHERE ((vendor_id IS NULL) OR
13989              (operating_unit_name IS NULL AND org_id IS NULL) OR
13990              -- Bug 7013954 Vendor site info no longer used for validation
13991              -- (vendor_site_code IS NULL and vendor_site_id IS NULL) OR
13992              (last_name IS NULL) OR
13993              --Bug7390094 - rejecting contacts for Employee type suppliers.
13994              (vendor_id in(select vendor_id from ap_suppliers
13995                          where vendor_type_lookup_code = 'EMPLOYEE')));
13996 
13997       --bug 5591652
13998       insert into ap_supplier_int_rejections
13999       (select 'AP_SUP_SITE_CONTACT_INT',vendor_contact_interface_id,'AP_ORG_INFO_NULL',
14000               g_user_id,SYSDATE,g_login_id,g_user_id,SYSDATE
14001       from ap_sup_site_contact_int
14002       where status='REJECTED'
14003       AND import_request_id=l_request_id
14004       AND (operating_unit_name IS NULL and org_id IS NULL))
14005       -- Bug 7013954 Conditions related to supplier site needs to be commented.
14006       /*UNION
14007      (select 'AP_SUP_SITE_CONTACT_INT',vendor_contact_interface_id,'AP_VENDOR_SITE_INFO_NULL',
14008                g_user_id,SYSDATE,g_login_id,g_user_id,SYSDATE
14009       from  ap_sup_site_contact_int
14010       where status='REJECTED'
14011       AND import_request_id=l_request_id
14012       AND (vendor_site_code IS NULL and vendor_site_id IS NULL))*/
14013       UNION
14014      (select 'AP_SUP_SITE_CONTACT_INT',vendor_contact_interface_id,'AP_LAST_NAME_NULL',
14015               g_user_id,SYSDATE,g_login_id,g_user_id,SYSDATE
14016       from  ap_sup_site_contact_int
14017       where status='REJECTED'
14018       AND import_request_id=l_request_id
14019       AND last_name IS NULL)
14020       UNION
14021      (select 'AP_SUP_SITE_CONTACT_INT',vendor_contact_interface_id,'AP_VENDOR_ID_NULL',
14022              g_user_id,SYSDATE,g_login_id,g_user_id,SYSDATE
14023       from  ap_sup_site_contact_int
14024       where status='REJECTED'
14025       AND import_request_id=l_request_id
14026       AND vendor_id IS NULL)
14027       -- Bug 7390094 Prevent contacts import for employee type supplier.
14028       UNION
14029       (select 'AP_SUP_SITE_CONTACT_INT',vendor_contact_interface_id,'AP_EMPLOYEE_CONTACTS',
14030              g_user_id,SYSDATE,g_login_id,g_user_id,SYSDATE
14031       from  ap_sup_site_contact_int
14032       where status='REJECTED'
14033       AND import_request_id=l_request_id
14034       AND vendor_id in(select vendor_id from ap_suppliers
14035                          where vendor_type_lookup_code = 'EMPLOYEE'));
14036 
14037       COMMIT;
14038 
14039 	  -- Bug 7013954 Standard Start of API savepoint
14040       SAVEPOINT   Import_Vendor_Contact_PUB;
14041 
14042       -- Cursor processing for vendor contact interface record
14043       OPEN contact_int_cur;
14044       LOOP
14045 
14046         FETCH contact_int_cur
14047         INTO contact_int_rec;
14048         EXIT WHEN contact_int_cur%NOTFOUND;
14049 
14050         vendor_contact_rec.vendor_contact_interface_id :=
14051                                             contact_int_rec.vendor_contact_interface_id;
14052         vendor_contact_rec.vendor_site_id    := contact_int_rec.vendor_site_id;
14053         vendor_contact_rec.person_first_name := contact_int_rec.first_name;
14054         vendor_contact_rec.person_middle_name:= contact_int_rec.middle_name;
14055         vendor_contact_rec.person_last_name  := contact_int_rec.last_name;
14056         vendor_contact_rec.person_title      := contact_int_rec.title;
14057         vendor_contact_rec.person_first_name_phonetic :=
14058                                                 contact_int_rec.first_name_alt;
14059         vendor_contact_rec.person_last_name_phonetic  :=
14060                                                 contact_int_rec.last_name_alt;
14061         vendor_contact_rec.contact_name_phonetic :=
14062                                              contact_int_rec.contact_name_alt;
14063         vendor_contact_rec.prefix            := contact_int_rec.prefix;
14064         vendor_contact_rec.inactive_date     := contact_int_rec.inactive_date;
14065         vendor_contact_rec.department        := contact_int_rec.department;
14066         vendor_contact_rec.mail_stop         := contact_int_rec.mail_stop;
14067         vendor_contact_rec.area_code         := contact_int_rec.area_code;
14068         vendor_contact_rec.phone             := contact_int_rec.phone;
14069         vendor_contact_rec.alt_area_code     := contact_int_rec.alt_area_code;
14070         vendor_contact_rec.alt_phone         := contact_int_rec.alt_phone;
14071         vendor_contact_rec.fax_area_code     := contact_int_rec.fax_area_code;
14072         vendor_contact_rec.fax_phone         := contact_int_rec.fax;
14073         vendor_contact_rec.email_address     := contact_int_rec.email_address;
14074         vendor_contact_rec.url               := contact_int_rec.url;
14075         vendor_contact_rec.vendor_site_code  := contact_int_rec.vendor_site_code;
14076         vendor_contact_rec.org_id            := contact_int_rec.org_id;
14077         vendor_contact_rec.operating_unit_name  :=
14078                                              contact_int_rec.operating_unit_name;
14079         vendor_contact_rec.vendor_interface_id := contact_int_rec.vendor_interface_id;
14080         vendor_contact_rec.vendor_id         := contact_int_rec.vendor_id;
14081         -- Bug 7013954 start Need to populate party site related info
14082         vendor_contact_rec.org_party_site_id := contact_int_rec.party_site_id;
14083         vendor_contact_rec.party_site_name   := contact_int_rec.party_site_name;
14084         -- Bug 7013954 end
14085 
14086         Create_Vendor_Contact
14087           ( p_api_version       =>  1.0,
14088             p_init_msg_list     =>  FND_API.G_FALSE,
14089             p_commit            =>  FND_API.G_FALSE,
14090             p_validation_level  =>  FND_API.G_VALID_LEVEL_FULL,
14091             x_return_status     =>  l_return_status,
14092             x_msg_count         =>  l_msg_count,
14093             x_msg_data          =>  l_msg_data,
14094             p_vendor_contact_rec => vendor_contact_rec,
14095             x_vendor_contact_id =>  l_vendor_contact_id,
14096             x_per_party_id      =>  l_per_party_id,
14097             x_rel_party_id      =>  l_rel_party_id,
14098             x_rel_id            =>  l_rel_id,
14099             x_org_contact_id    =>  l_org_contact_id,
14100             x_party_site_id     =>  l_party_site_id);
14101 
14102         IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
14103 
14104           UPDATE Ap_Sup_Site_Contact_Int
14105           SET    status = 'PROCESSED'
14106 		  WHERE CURRENT OF contact_int_cur;    --Bug6413297
14107           /*WHERE  vendor_contact_interface_id =
14108                    vendor_contact_rec.vendor_contact_interface_id;*/--Bug6413297
14109 
14110         ELSE
14111 
14112           UPDATE Ap_Sup_Site_Contact_Int
14113           SET    status = 'REJECTED'
14114           WHERE CURRENT OF contact_int_cur;   --Bug6413297
14115 		  /*WHERE  vendor_contact_interface_id =
14116                    vendor_contact_rec.vendor_contact_interface_id;*/--Bug6413297
14117 
14118           IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
14119             FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
14120              ' Rejected Vendor_Contact_Interface_Id: '
14121              ||vendor_contact_rec.vendor_contact_interface_id
14122              ||', No. of Messages from Create_Vendor_Contact API: '|| l_msg_count
14123              ||', Message From Create_Vendor_Contact API: '||l_msg_data);
14124           END IF;
14125 
14126         END IF;
14127 
14128       END LOOP;
14129 
14130       CLOSE contact_int_cur;
14131 
14132     END IF;
14133     -- End of API body.
14134 
14135     COMMIT WORK;
14136 
14137     -- Standard call to get message count and if count is 1,
14138     -- get message info.
14139     FND_MSG_PUB.Count_And_Get(
14140         p_count                 =>      x_msg_count,
14141         p_data                  =>      x_msg_data
14142         );
14143 
14144 EXCEPTION
14145   WHEN FND_API.G_EXC_ERROR THEN
14146     ROLLBACK TO Import_Vendor_Contact_PUB;
14147     x_return_status := FND_API.G_RET_STS_ERROR ;
14148     FND_MSG_PUB.Count_And_Get
14149                 (       p_count                 =>      x_msg_count,
14150                         p_data                  =>      x_msg_data
14151                 );
14152   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
14153     ROLLBACK TO Import_Vendor_Contact_PUB;
14154     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
14155     FND_MSG_PUB.Count_And_Get
14156                 (       p_count                 =>      x_msg_count,
14157                         p_data                  =>      x_msg_data
14158                 );
14159   WHEN OTHERS THEN
14160     ROLLBACK TO Import_Vendor_Contact_PUB;
14161     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
14162     IF FND_MSG_PUB.Check_Msg_Level
14163          (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
14164          FND_MSG_PUB.Add_Exc_Msg
14165                         (       G_PKG_NAME,
14166                                 l_api_name
14167                         );
14168     END IF;
14169     FND_MSG_PUB.Count_And_Get
14170                 (       p_count                 =>      x_msg_count,
14171                         p_data                  =>      x_msg_data
14172                 );
14173 END Import_Vendor_Contacts;
14174 
14175 -- Bug 6745669: Added the API Update_Address_Assignments_DFF to update
14176 --              DFFs of the Vendor Contacts
14177 --
14178 
14179 PROCEDURE Update_Address_Assignments_DFF(
14180         p_api_version           IN	NUMBER,
14181   	p_init_msg_list		IN	VARCHAR2 := FND_API.G_FALSE,
14182 	p_commit	    	IN  	VARCHAR2 := FND_API.G_FALSE,
14183         p_contact_party_id      IN      NUMBER,
14184         p_org_party_site_id     IN      NUMBER,
14185         p_attribute_category    IN      VARCHAR2 DEFAULT NULL,
14186         p_attribute1            IN      VARCHAR2 DEFAULT NULL,
14187         p_attribute2            IN      VARCHAR2 DEFAULT NULL,
14188         p_attribute3            IN      VARCHAR2 DEFAULT NULL,
14189         p_attribute4            IN      VARCHAR2 DEFAULT NULL,
14190         p_attribute5            IN      VARCHAR2 DEFAULT NULL,
14191         p_attribute6            IN      VARCHAR2 DEFAULT NULL,
14192         p_attribute7            IN      VARCHAR2 DEFAULT NULL,
14193         p_attribute8            IN      VARCHAR2 DEFAULT NULL,
14194         p_attribute9            IN      VARCHAR2 DEFAULT NULL,
14195         p_attribute10           IN      VARCHAR2 DEFAULT NULL,
14196         p_attribute11           IN      VARCHAR2 DEFAULT NULL,
14197         p_attribute12           IN      VARCHAR2 DEFAULT NULL,
14198         p_attribute13           IN      VARCHAR2 DEFAULT NULL,
14199         p_attribute14           IN      VARCHAR2 DEFAULT NULL,
14200         p_attribute15           IN      VARCHAR2 DEFAULT NULL,
14201         x_return_status		OUT	NOCOPY VARCHAR2,
14202 	x_msg_count		OUT	NOCOPY NUMBER,
14203 	x_msg_data		OUT	NOCOPY VARCHAR2
14204 
14205 )
14206 
14207 IS
14208     l_api_name	    CONSTANT VARCHAR2(30)	:= 'Update_Address_Assignments_DFF';
14209     l_api_version   CONSTANT NUMBER 		:= 1.0;
14210     l_count         NUMBER                      := 0;
14211     l_event_vendor_contact_id   AP_SUPPLIER_CONTACTS.vendor_contact_id%TYPE; --Bug 7307669
14212 BEGIN
14213 
14214     -- Standard Start of API savepoint
14215     SAVEPOINT	Update_Address_Assign_DFF_PUB;
14216 
14217     -- Standard call to check for call compatibility.
14218     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
14219         	    	    	    	 	p_api_version        	,
14220    	       	    	 			l_api_name 	    	,
14221 		    	    	    	    	G_PKG_NAME )
14222     THEN
14223 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
14224     END IF;
14225 
14226     -- Initialize message list if p_init_msg_list is set to TRUE.
14227     IF FND_API.to_Boolean( p_init_msg_list ) THEN
14228 	FND_MSG_PUB.initialize;
14229     END IF;
14230 
14231     --  Initialize API return status to success
14232     x_return_status := FND_API.G_RET_STS_SUCCESS;
14233 
14234     -- API body
14235 
14236 
14237     IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
14238         FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
14239          'Updating dffs for contact_party_id: ' || p_contact_party_id
14240          || ', org_party_site_id: '|| p_org_party_site_id);
14241     END IF;
14242 
14243 
14244    UPDATE ap_supplier_contacts
14245    SET    attribute_category=p_attribute_category,
14246           attribute1 = p_attribute1,
14247           attribute2 = p_attribute2,
14248           attribute3 = p_attribute3,
14249           attribute4 = p_attribute4,
14250           attribute5 = p_attribute5,
14251           attribute6 = p_attribute6,
14252           attribute7 = p_attribute7,
14253           attribute8 = p_attribute8,
14254           attribute9 = p_attribute9,
14255           attribute10 = p_attribute10,
14256           attribute11 = p_attribute11,
14257           attribute12 = p_attribute12,
14258           attribute13 = p_attribute13,
14259           attribute14 = p_attribute14,
14260           attribute15 = p_attribute15
14261    WHERE  per_party_id=p_contact_party_id
14262    AND    org_party_site_id=p_org_party_site_id
14263    AND    NVL(inactive_date, SYSDATE+1 ) > SYSDATE
14264    ;
14265 
14266    l_count := SQL%ROWCOUNT;
14267 
14268    IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
14269       FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
14270        ' Updated '
14271        ||l_count
14272        ||' rows.');
14273    END IF;
14274 
14275    BEGIN  -- Bug 7307669 : Begin
14276         SELECT  vendor_contact_id
14277         INTO    l_event_vendor_contact_id
14278         FROM    ap_supplier_contacts
14279         WHERE   per_party_id=p_contact_party_id
14280         AND     org_party_site_id=p_org_party_site_id
14281         AND     NVL(inactive_date, SYSDATE+1 ) > SYSDATE ;
14282 
14283 	Raise_Supplier_Event( i_vendor_contact_id => l_event_vendor_contact_id );
14284    EXCEPTION
14285         WHEN NO_DATA_FOUND OR TOO_MANY_ROWS THEN
14286 	    	IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
14287 	            FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME || l_api_name, SQLERRM);
14288 		END IF;
14289     		APP_EXCEPTION.RAISE_EXCEPTION;
14290    END; -- Bug 7307669 : End
14291 
14292     -- End of API body.
14293 
14294     -- Standard check of p_commit.
14295     IF FND_API.To_Boolean( p_commit ) THEN
14296 	COMMIT WORK;
14297     END IF;
14298 
14299     -- Standard call to get message count and if count is 1,
14300     -- get message info.
14301     FND_MSG_PUB.Count_And_Get(
14302 	p_count         	=>      x_msg_count     	,
14303         p_data          	=>      x_msg_data
14304     	);
14305 
14306 EXCEPTION
14307 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
14308 		ROLLBACK TO Update_Address_Assign_DFF_PUB;
14309 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
14310 		FND_MSG_PUB.Count_And_Get
14311     		(  	p_count         	=>      x_msg_count,
14312         		p_data          	=>      x_msg_data
14313     		);
14314 	WHEN OTHERS THEN
14315 		ROLLBACK TO Update_Address_Assign_DFF_PUB;
14316 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
14317   		IF 	FND_MSG_PUB.Check_Msg_Level
14318 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
14319         		FND_MSG_PUB.Add_Exc_Msg
14320     	    		(	G_PKG_NAME  	    ,
14321     	    			l_api_name
14322 	    		);
14323 		END IF;
14324 		FND_MSG_PUB.Count_And_Get
14325     		(  	p_count         	=>      x_msg_count,
14326         		p_data          	=>      x_msg_data
14327     		);
14328 END Update_Address_Assignments_DFF;
14329 
14330 -- Bug 7307669 : Added the procedure Raise_Supplier_Event to raise a worklflow
14331 --		 event whenever a Supplier / Supplier Site / Supplier Contact
14332 --		 is created or updated
14333 
14334 PROCEDURE Raise_Supplier_Event (
14335 				i_vendor_id          IN  NUMBER  DEFAULT NULL,
14336         		        i_vendor_site_id     IN  NUMBER  DEFAULT NULL,
14337 		                i_vendor_contact_id  IN  NUMBER  DEFAULT NULL
14338  	                       )
14339 IS
14340 	l_api_name		CONSTANT VARCHAR2(200) := ' Raise_Supplier_Event';
14341 	l_debug_info		VARCHAR2(2000);
14342 	l_parameter_list	wf_parameter_list_t;
14343 	l_event_key		VARCHAR2(100);
14344 	l_event_name		VARCHAR2(100) := 'oracle.apps.ap.supplier.event';
14345 	l_vendor_id		AP_SUPPLIERS.vendor_id%TYPE;
14346 BEGIN
14347 	l_debug_info := 'Called with parameters : i_vendor_id = '
14348 		        || to_char(i_vendor_id)	     || ', i_vendor_site_id = '
14349 		        || to_char(i_vendor_site_id) || ', i_vendor_contact_id = '
14350 		        || to_char(i_vendor_contact_id);
14351 	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
14352 		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME || l_api_name,
14353                        		l_debug_info);
14354 	END IF;
14355 
14356 	-- If vendor_id was not passed then we should derive it based on
14357 	-- vendor_site_id or vendor_contact_id
14358 	IF i_vendor_id IS NULL THEN
14359 		IF i_vendor_site_id IS NOT NULL THEN
14360 			SELECT	vendor_id
14361 			INTO	l_vendor_id
14362 			FROM	ap_supplier_sites_all
14363 			WHERE	vendor_site_id = i_vendor_site_id;
14364 		END IF;
14365 
14366 		IF i_vendor_contact_id IS NOT NULL THEN
14367 			SELECT	vendor_id
14368 			INTO	l_vendor_id
14369 			FROM	po_vendor_contacts
14370 			WHERE	vendor_contact_id = i_vendor_contact_id
14371 			AND	ROWNUM = 1;
14372 		END IF;
14373 	ELSE
14374 		l_vendor_id := i_vendor_id;
14375 	END IF;
14376 
14377 	l_parameter_list := wf_parameter_list_t(
14378 						wf_parameter_t('VENDOR_ID',
14379 						to_char(l_vendor_id) ),
14380 						wf_parameter_t('VENDOR_SITE_ID',
14381 						to_char(i_vendor_site_id) ),
14382 						wf_parameter_t('VENDOR_CONTACT_ID',
14383 					    	to_char(i_vendor_contact_id) )
14384 					       );
14385 
14386 	SELECT	to_char(ap_supplier_event_s.nextval)
14387 	INTO	l_event_key
14388 	FROM 	dual;
14389 
14390 	wf_event.raise( p_event_name => l_event_name,
14391 		        p_event_key  => l_event_key,
14392 		        p_parameters => l_parameter_list);
14393 
14394 	l_debug_info := 'After raising workflow event : '
14395 		        || 'event_name = ' || l_event_name
14396 		        || ' event_key = ' || l_event_key ;
14397 
14398 	IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
14399 		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
14400                        		l_debug_info);
14401 	END IF;
14402 
14403         EXCEPTION
14404 		WHEN NO_DATA_FOUND OR TOO_MANY_ROWS THEN
14405 			IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
14406 				FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME || l_api_name,
14407                                			SQLERRM);
14408 			END IF;
14409     			APP_EXCEPTION.RAISE_EXCEPTION;
14410 	    WHEN OTHERS THEN
14411 	        	WF_CORE.CONTEXT(G_MODULE_NAME, l_api_name, l_event_name,
14412                                 	l_event_key);
14413 		    	RAISE;
14414 END Raise_Supplier_Event;
14415 
14416 END AP_VENDOR_PUB_PKG;