[Home] [Help]
PACKAGE BODY: APPS.PO_LINES_SV7
Source
1 PACKAGE BODY PO_LINES_SV7 AS
2 /* $Header: POXPIVLB.pls 120.1.12000000.2 2007/07/18 12:25:58 puppulur ship $ */
3
4 -- Read the profile option that enables/disables the debug log
5 g_po_pdoi_write_to_file VARCHAR2(1) := NVL(FND_PROFILE.VALUE('PO_PDOI_WRITE_TO_FILE'),'N');
6
7 /*================================================================
8
9 PROCEDURE NAME: validate_item_related_info()
10
11 ==================================================================*/
12 PROCEDURE validate_item_related_info(X_interface_header_id IN NUMBER,
13 X_interface_line_id IN NUMBER,
14 X_item_id IN NUMBER,
15 X_item_description IN VARCHAR2,
16 X_unit_of_measure IN VARCHAR2,
17 X_item_revision IN VARCHAR2,
18 X_category_id IN NUMBER,
19 X_def_inv_org_id IN NUMBER,
20 X_outside_operation_flag IN VARCHAR2,
21 X_create_or_update_item_flag IN VARCHAR2,
22 X_header_processable_flag IN OUT NOCOPY VARCHAR2,
23 X_global_agreement_flag IN VARCHAR2, -- FPI GA
24 X_type_lookup_code IN VARCHAR2) -- Bug 3362369
25 IS
26 X_progress varchar2(3) := NULL;
27 X_valid BOOLEAN;
28 X_allow_item_desc_update_flag
29 mtl_system_items.allow_item_desc_update_flag%TYPE;
30 X_msi_item_description mtl_system_items.description%TYPE;
31 l_bom_item_type mtl_system_items.bom_item_type%TYPE;
32
33 BEGIN
34 X_progress := '010';
35 IF (X_item_id is NOT NULL) THEN
36 X_progress := '020';
37
38 Begin
39 select bom_item_type
40 into l_bom_item_type
41 from mtl_system_items
42 where inventory_item_id = X_item_id
43 and organization_id = X_def_inv_org_id;
44 Exception
45 When others then
46 l_bom_item_type := null;
47 End;
48
49 -- Bug 3362369 : ATO models are not purchasable
50 IF X_type_lookup_code = 'STANDARD' and
51 l_bom_item_type in (1,2) THEN
52 po_interface_errors_sv1.handle_interface_errors(
53 'PO_DOCS_OPEN_INTERFACE',
54 'FATAL',
55 null,
56 X_interface_header_id,
57 X_interface_line_id,
58 'PO_ATO_ITEM_NA',
59 'PO_LINES_INTERFACE',
60 'ITEM_ID',
61 null,
62 null,null,null,null,null,
63 null,
64 null,null,null,null,null,
65 X_header_processable_flag);
66 END IF;
67
68 IF X_global_agreement_flag = 'Y' and X_outside_operation_flag = 'Y' THEN
69 po_interface_errors_sv1.handle_interface_errors(
70 'PO_DOCS_OPEN_INTERFACE',
71 'FATAL',
72 null,
73 X_interface_header_id,
74 X_interface_line_id,
75 'PO_PDOI_GA_ITEM_NA',
76 'PO_LINES_INTERFACE',
77 'ITEM_ID',
78 null,
79 null,null,null,null,null,
80 null,
81 null,null,null,null,null,
82 X_header_processable_flag);
83 END IF;
84
85 x_valid := po_items_sv1.val_item_id(X_item_id,
86 X_def_inv_org_id,
87 X_outside_operation_flag);
88
89 IF (x_valid = FALSE) THEN
90 IF (X_outside_operation_flag = 'N') THEN
91 X_progress := '030';
92 po_interface_errors_sv1.handle_interface_errors(
93 'PO_DOCS_OPEN_INTERFACE',
94 'FATAL',
95 null,
96 X_interface_header_id,
97 X_interface_line_id,
98 'PO_PDOI_INVALID_ITEM_ID',
99 'PO_LINES_INTERFACE',
100 'ITEM_ID',
101 'VALUE',
102 null,null,null,null,null,
103 X_item_id,
104 null,null,null,null,null,
105 X_header_processable_flag);
106
107 ELSIF (X_outside_operation_flag = 'Y') THEN
108 X_progress := '040';
109 po_interface_errors_sv1.handle_interface_errors(
110 'PO_DOCS_OPEN_INTERFACE',
111 'FATAL',
112 null,
113 X_interface_header_id,
114 X_interface_line_id,
115 'PO_PDOI_INVALID_OP_ITEM_ID',
116 'PO_LINES_INTERFACE',
117 'ITEM_ID',
118 'VALUE',
119 null,null,null,null,null,
120 X_item_id,
121 null,null,null,null,null,
122 X_header_processable_flag);
123 END IF;
124 ELSE /* x_valid = TRUE Bug 3109243*/
125
126 /*** also need to find out if item_description is different from
127 what is setup for the item. Would not allow item_description update
128 if item attribute allow_item_desc_update_flag is N
129 ****/
130 X_progress := '090';
131
132 /** Bug 5366732 If foreign language is used then item_desc comparision was always
133 Failing because derived value of X_item_description was coming from
134 mtl_system_items_tl to keep consistency changing below SQL to fetch item desc
135 from mtl_system_items_tl **/
136
137
138 SELECT msi.allow_item_desc_update_flag,
139 mtl.description
140 INTO X_allow_item_desc_update_flag,
141 X_msi_item_description
142 FROM mtl_system_items msi, mtl_system_items_tl mtl
143 WHERE mtl.inventory_item_id = msi.inventory_item_id
144 and mtl.organization_id = msi.organization_id
145 and mtl.language = USERENV('LANG')
146 and mtl.inventory_item_id = X_item_id
147 and msi.organization_id = X_def_inv_org_id;
148 /* Bug 5366732 End */
149
150
151 X_progress := '100';
152 IF (X_allow_item_desc_update_flag = 'N') AND
153 (X_item_description <> X_msi_item_description) AND
154 (X_create_or_update_item_flag = 'N')
155 THEN
156 /*** error because descriptions do not match and item attribute
157 does not allow item description update and update item runtime
158 parameter is not set.
159 ***/
160
161 X_progress := '110';
162 po_interface_errors_sv1.handle_interface_errors(
163 'PO_DOCS_OPEN_INTERFACE',
164 'FATAL',
165 null,
166 X_interface_header_id,
167 X_interface_line_id,
168 'PO_PDOI_DIFF_ITEM_DESC',
169 'PO_LINES_INTERFACE',
170 'ITEM_DESCRIPTION',
171 null, null, null, null, null, null,
172 null, null, null, null, null, null,
173 X_header_processable_flag);
174 END IF;
175
176 END IF; -- x_valid
177
178 X_progress := '050';
179 IF (X_unit_of_measure is not null) THEN
180 X_progress := '060';
181 x_valid := po_unit_of_measures_sv1.val_item_unit_of_measure(
182 X_unit_of_measure,
183 X_item_id,
184 X_def_inv_org_id);
185 IF (x_valid = FALSE) THEN
186 po_interface_errors_sv1.handle_interface_errors(
187 'PO_DOCS_OPEN_INTERFACE',
188 'FATAL',
189 null,
190 X_interface_header_id,
191 X_interface_line_id,
192 'PO_PDOI_ITEM_RELATED_INFO',
193 'PO_LINES_INTERFACE',
194 'UNIT_OF_MEASURE',
195 'COLUMN_NAME',
196 'VALUE',
197 'ITEM',
198 null, null, null,
199 'UNIT_OF_MEASURE',
200 X_unit_of_measure,
201 X_item_id,
202 null, null, null,
203 X_header_processable_flag);
204 END IF;
205 END IF;
206
207 X_progress := '070';
208 IF (X_item_revision is not null) THEN
209 x_valid := mtl_item_revisions_sv1.val_item_revision(
210 X_item_revision,
211 X_item_id,
212 X_def_inv_org_id);
213 IF (x_valid = FALSE) THEN
214 po_interface_errors_sv1.handle_interface_errors(
215 'PO_DOCS_OPEN_INTERFACE',
216 'FATAL',
217 null,
218 X_interface_header_id,
219 X_interface_line_id,
220 'PO_PDOI_ITEM_RELATED_INFO',
221 'PO_LINES_INTERFACE',
222 'ITEM_REVISION',
223 'COLUMN_NAME',
224 'VALUE',
225 'ITEM',
226 null, null, null,
227 'ITEM_REVISION',
228 X_item_revision,
229 X_item_id,
230 null, null, null,
231 X_header_processable_flag);
232 END IF;
233 END IF;
234
235 X_progress := '080';
236 IF (X_category_id is not null) THEN
237 x_valid := po_categories_sv1.val_item_category_id(
238 X_category_id,
239 X_item_id,
240 X_def_inv_org_id);
241 IF (x_valid = FALSE) THEN
242 po_interface_errors_sv1.handle_interface_errors(
243 'PO_DOCS_OPEN_INTERFACE',
244 'FATAL',
245 null,
246 X_interface_header_id,
247 X_interface_line_id,
248 'PO_PDOI_ITEM_RELATED_INFO',
249 'PO_LINES_INTERFACE',
250 'CATEGORY_ID',
251 'COLUMN_NAME',
252 'VALUE',
253 'ITEM',
254 null,null,null,
255 'CATEGORY_ID',
256 X_category_id,
257 X_item_id,
258 null,null,null,
259 X_header_processable_flag);
260 END IF;
261 END IF;
262
263 ELSE /* if x_item_id is null */
264 X_progress := '120';
265 IF (X_unit_of_measure is not null) THEN
266 x_valid := po_unit_of_measures_sv1.val_unit_of_measure(
267 X_unit_of_measure,
268 NULL);
269 IF (x_valid = FALSE) THEN
270 po_interface_errors_sv1.handle_interface_errors(
271 'PO_DOCS_OPEN_INTERFACE',
272 'FATAL',
273 null,
274 X_interface_header_id,
275 X_interface_line_id,
276 'PO_PDOI_INVALID_UOM_CODE',
277 'PO_LINES_INTERFACE',
278 'UNIT_OF_MEASURE',
279 'VALUE',
280 null, null, null, null, null,
281 X_unit_of_measure,
282 null, null, null, null, null,
283 X_header_processable_flag);
284 END IF;
285 END IF;
286
287 X_progress := '110';
288 IF (X_item_revision is not null) THEN
289 po_interface_errors_sv1.handle_interface_errors(
290 'PO_DOCS_OPEN_INTERFACE',
291 'FATAL',
292 null,
293 X_interface_header_id,
294 X_interface_line_id,
295 'PO_PDOI_COLUMN_NULL',
296 'PO_LINES_INTERFACE',
297 'ITEM_REVISION',
298 'COLUMN_NAME',
299 'VALUE',
300 null,null,null,null,
301 'ITEM_REVISION',
302 X_item_revision,
303 null,null,null,null,
304 X_header_processable_flag);
305 END IF;
306
307 X_progress := '120';
308 IF (X_category_id is not null) THEN
309 x_valid := po_categories_sv1.val_category_id(X_category_id);
310
311 IF (x_valid = FALSE) THEN
312 po_interface_errors_sv1.handle_interface_errors(
313 'PO_DOCS_OPEN_INTERFACE',
314 'FATAL',
315 null,
316 X_interface_header_id,
317 X_interface_line_id,
318 'PO_PDOI_INVALID_CATEGORY_ID',
319 'PO_LINES_INTERFACE',
320 'CATEGORY_ID',
321 'VALUE',
322 null,null,null,null,null,
323 X_category_id,
324 null,null,null,null,null,
325 X_header_processable_flag);
326 END IF;
327 END IF;
328 END IF; /* item_id */
329
330 EXCEPTION
331 WHEN others THEN
332 po_message_s.sql_error('validate_item_related_info',
333 X_progress, sqlcode);
334 raise;
335 END validate_item_related_info;
336
337 /*================================================================
338
339 PROCEDURE NAME: validate_item_with_line_type()
340
341 ==================================================================*/
342 PROCEDURE validate_item_with_line_type(
343 X_interface_header_id IN NUMBER,
344 X_interface_line_id IN NUMBER,
345 X_line_type_id IN NUMBER,
346 X_category_id IN NUMBER,
347 X_unit_of_measure IN VARCHAR2,
348 X_unit_price IN NUMBER,
349 X_item_id IN NUMBER,
350 X_item_description IN VARCHAR2,
351 X_item_revision IN VARCHAR2,
352 X_def_inv_org_id IN NUMBER,
353 X_create_or_update_item_flag IN VARCHAR2,
354 X_header_processable_flag IN OUT NOCOPY VARCHAR2,
355 X_global_agreement_flag IN VARCHAR2, -- FPI GA
356 X_type_lookup_code IN VARCHAR2) -- Bug 3362369
357 IS
358 X_progress varchar2(3) := null;
359 X_vs_order_type_lookup_code varchar2(25) := NULL;
360 X_vs_category_id number := NULL;
361 X_vs_unit_meas_lookup_code varchar2(25) := NULL;
362 X_vs_unit_price number := NULL;
363 X_vs_outside_operation_flag varchar2(1) := NULL;
364 X_vs_receiving_flag varchar2(1) := NULL;
365 X_vs_receive_close_tolerance number := null; -- Bug: 1189629
366 BEGIN
367 X_progress := '010';
368 -- Bug: 1189629 Added receive close tolerance to the list of parameters
369 po_line_types_sv.get_line_type_def(X_line_type_id,
370 X_vs_order_type_lookup_code,
371 X_vs_category_id,
372 X_vs_unit_meas_lookup_code,
373 X_vs_unit_price,
374 X_vs_outside_operation_flag,
375 X_vs_receiving_flag,
376 X_vs_receive_close_tolerance);
377
378 X_progress := '020';
379 IF (X_vs_order_type_lookup_code = 'AMOUNT') THEN
380
381 X_progress := '023';
382 IF (X_item_id IS NOT NULL) THEN
383 /** cannot specify item for amount based line type ***/
384 po_interface_errors_sv1.handle_interface_errors(
385 'PO_DOCS_OPEN_INTERFACE',
386 'FATAL',
387 null,
388 X_interface_header_id,
389 X_interface_line_id,
390 'PO_PDOI_COLUMN_NULL',
391 'PO_LINES_INTERFACE',
392 'ITEM_ID',
393 'COLUMN_NAME',
394 'VALUE',
395 null,null,null,null,
396 'ITEM_ID',
397 X_item_id,
398 null,null,null,null,
399 X_header_processable_flag);
400
401 END IF;
402
403 X_progress := '025';
404 IF (X_unit_of_measure <> X_vs_unit_meas_lookup_code) THEN
405 po_interface_errors_sv1.handle_interface_errors(
406 'PO_DOCS_OPEN_INTERFACE',
407 'FATAL',
408 null,
409 X_interface_header_id,
410 X_interface_line_id,
411 'PO_PDOI_INVALID_LINE_TYPE_INFO',
412 'PO_LINES_INTERFACE',
413 'UNIT_OF_MEASURE',
414 'COLUMN_NAME',
415 'VALUE',
416 'LINE_TYPE',
417 null,null,null,
418 'UNIT_OF_MEASURE',
419 X_unit_of_measure,
420 X_vs_unit_meas_lookup_code,
421 null,null,null,
422 X_header_processable_flag);
423 END IF;
424
425 X_progress := '030';
426 IF (X_unit_price <> X_vs_unit_price) THEN
427 po_interface_errors_sv1.handle_interface_errors(
428 'PO_DOCS_OPEN_INTERFACE',
429 'FATAL',
430 null,
431 X_interface_header_id,
432 X_interface_line_id,
433 'PO_PDOI_INVALID_LINE_TYPE_INFO',
434 'PO_LINES_INTERFACE',
435 'UNIT_PRICE',
436 'COLUMN_NAME',
437 'VALUE',
438 'LINE_TYPE',
439 null,null,null,
440 'UNIT_PRICE',
441 X_unit_price,
442 X_vs_unit_price,
443 null,null,null,
444 X_header_processable_flag);
445 END IF;
446
447 ELSIF (X_vs_order_type_lookup_code = 'QUANTITY') AND
448 (X_vs_outside_operation_flag = 'Y') THEN
449 /* item_id must be not null,
450 item must be an outside processing item and puurchasable item.
451 all the item related fields must match what is setup for
452 the item
453 */
454
455 X_progress := '040';
456 IF (X_item_id is NULL) THEN
457 po_interface_errors_sv1.handle_interface_errors(
458 'PO_DOCS_OPEN_INTERFACE',
459 'FATAL',
460 null,
461 x_interface_header_id,
462 x_interface_line_id,
463 'PO_PDOI_ITEM_NOT_NULL',
464 'PO_LINES_INTERFACE',
465 'ITEM_ID',
466 null,null,null,null,null,null,
467 null,null,null,null,null,null,
468 x_header_processable_flag);
469 END IF;
470 END IF;
471
472 /* FPI GA start*/
473 /* For a global agreement OSP lines are not allowed */
474
475 IF nvl(X_vs_outside_operation_flag,'N') = 'Y' AND
476 nvl(X_global_agreement_flag,'N') = 'Y' THEN
477 po_interface_errors_sv1.handle_interface_errors(
478 'PO_DOCS_OPEN_INTERFACE',
479 'FATAL',
480 null,
481 x_interface_header_id,
482 x_interface_line_id,
483 'PO_PDOI_GA_OSP_NA',
484 'PO_LINES_INTERFACE',
485 null,
486 null,null,null,null,null,null,
487 null,null,null,null,null,null,
488 x_header_processable_flag);
489
490 END IF;
491 /* FPI GA end */
492
493 /*** Next is to perform all the common validations regardless of the
494 line type ***/
495
496 X_progress := '050';
497
498 --<SERVICES FPJ>
499 --Do not perform the item related validations for the new services
500 --line types.
501
502 IF (X_vs_order_type_lookup_code NOT IN ('FIXED PRICE', 'RATE')) THEN --<SERVICES FPJ>
503 po_lines_sv7.validate_item_related_info(
504 X_interface_header_id,
505 X_interface_line_id,
506 X_item_id,
507 X_item_description,
508 X_unit_of_measure,
509 X_item_revision,
510 X_category_id,
511 X_def_inv_org_id,
512 X_vs_outside_operation_flag,
513 X_create_or_update_item_flag,
514 X_header_processable_flag,
515 X_global_agreement_flag, -- FPI GA
516 X_type_lookup_code); -- Bug 3362369
517 END IF; --<SERVICES FPJ>
518
519 EXCEPTION
520 WHEN others THEN
521 po_message_s.sql_error('validate_item_with_line_type',
522 X_progress, sqlcode);
523 raise;
524 END validate_item_with_line_type;
525
526 /*================================================================
527
528 PROCEDURE NAME: validate_po_lines()
529
530 ==================================================================*/
531 PROCEDURE validate_po_lines(x_interface_header_id IN NUMBER,
532 x_interface_line_id IN NUMBER,
533 x_current_po_header_id IN NUMBER,
534 x_po_line_id IN NUMBER,
535 x_last_update_date IN DATE,
536 x_last_updated_by IN NUMBER,
537 x_po_header_id IN NUMBER,
538 x_line_type_id IN NUMBER,
539 x_line_num IN NUMBER,
540 x_last_update_login IN NUMBER,
541 x_creation_date IN DATE,
542 x_created_by IN NUMBER,
543 x_item_id IN NUMBER,
544 x_item_revision IN VARCHAR2,
545 x_category_id IN NUMBER,
546 x_item_description IN VARCHAR2,
547 x_unit_meas_lookup_code IN VARCHAR2,
548 x_quantity_committed IN NUMBER,
549 x_committed_amount IN NUMBER,
550 x_allow_price_override_flag IN VARCHAR2,
551 x_not_to_exceed_price IN NUMBER,
552 x_list_price_per_unit IN NUMBER,
553 X_base_unit_price IN NUMBER, -- <FPJ Advanced Price>
554 x_unit_price IN NUMBER,
555 x_quantity IN NUMBER,
556 x_un_number_id IN NUMBER,
557 x_hazard_class_id IN NUMBER,
558 x_note_to_vendor IN VARCHAR2,
559 x_from_header_id IN NUMBER,
560 x_from_line_id IN NUMBER,
561 x_min_order_quantity IN NUMBER,
562 x_max_order_quantity IN NUMBER,
563 x_qty_rcv_tolerance IN NUMBER,
564 x_over_tolerance_error_flag IN VARCHAR2,
565 x_market_price IN NUMBER,
566 x_unordered_flag IN VARCHAR2,
567 x_closed_flag IN VARCHAR2,
568 x_cancel_flag IN VARCHAR2,
569 x_cancelled_by IN NUMBER,
570 x_cancel_date IN DATE,
571 x_cancel_reason IN VARCHAR2,
572 x_vendor_product_num IN VARCHAR2,
573 x_contract_num IN VARCHAR2,
574 x_taxable_flag IN VARCHAR2,
575 x_tax_name IN VARCHAR2,
576 x_tax_code_id IN NUMBER,
577 x_type_1099 IN VARCHAR2,
578 x_capital_expense_flag IN VARCHAR2,
579 x_negotiated_by_preparer_flag IN VARCHAR2,
580 x_attribute_category IN VARCHAR2,
581 x_attribute1 IN VARCHAR2,
582 x_attribute2 IN VARCHAR2,
583 x_attribute3 IN VARCHAR2,
584 x_attribute4 IN VARCHAR2,
585 x_attribute5 IN VARCHAR2,
586 x_attribute6 IN VARCHAR2,
587 x_attribute7 IN VARCHAR2,
588 x_attribute8 IN VARCHAR2,
589 x_attribute9 IN VARCHAR2,
590 x_attribute10 IN VARCHAR2,
591 x_attribute11 IN VARCHAR2,
592 x_attribute12 IN VARCHAR2,
593 x_attribute13 IN VARCHAR2,
594 x_attribute14 IN VARCHAR2,
595 x_attribute15 IN VARCHAR2,
596 x_min_release_amount IN NUMBER,
597 x_price_type_lookup_code IN VARCHAR2,
598 x_closed_code IN VARCHAR2,
599 x_price_break_lookup_code IN VARCHAR2,
600 x_ussgl_transaction_code IN VARCHAR2,
601 x_government_context IN VARCHAR2,
602 x_request_id IN NUMBER,
603 x_program_application_id IN NUMBER,
604 x_program_id IN NUMBER,
605 x_program_update_date IN DATE,
606 x_closed_date IN DATE,
607 x_closed_reason IN VARCHAR2,
608 x_closed_by IN NUMBER,
609 x_transaction_reason_code IN VARCHAR2,
610 x_org_id IN NUMBER,
611 x_line_reference_num IN VARCHAR2,
612 x_terms_id IN NUMBER,
613 x_qty_rcv_exception_code IN VARCHAR2,
614 x_lead_time_unit IN VARCHAR2,
615 x_freight_carrier IN VARCHAR2,
616 x_fob IN VARCHAR2,
617 x_freight_terms IN VARCHAR2,
618 x_release_num IN NUMBER,
619 x_po_release_id IN NUMBER,
620 x_source_shipment_id IN NUMBER,
621 x_inspection_required_flag IN VARCHAR2,
622 x_receipt_required_flag IN VARCHAR2,
623 x_receipt_days_exception_code IN VARCHAR2,
624 x_need_by_date IN DATE,
625 x_promised_date IN DATE,
626 x_lead_time IN NUMBER,
627 x_invoice_close_tolerance IN NUMBER,
628 x_receive_close_tolerance IN NUMBER,
629 x_firm_flag IN VARCHAR2,
630 x_days_early_receipt_allowed IN NUMBER,
631 x_days_late_receipt_allowed IN NUMBER,
632 x_enforce_ship_to_loc_code IN VARCHAR2,
633 x_allow_sub_receipts_flag IN VARCHAR2,
634 x_receiving_routing IN VARCHAR2,
635 x_receiving_routing_id IN NUMBER,
636 x_header_processable_flag IN OUT NOCOPY VARCHAR2,
637 x_def_inv_org_id IN NUMBER,
638 x_uom_code IN VARCHAR2,
639 x_hd_type_lookup_code IN VARCHAR2,
640 x_create_or_update_item_flag IN VARCHAR2,
641 X_global_agreement_flag IN VARCHAR2, -- FPI GA
642 p_shipment_num IN NUMBER, /* <TIMEPHASED FPI> */
643 p_contract_id IN NUMBER, -- <GC FPJ>
644 --<SERVICES FPJ START>
645 p_job_id IN NUMBER,
646 p_effective_date IN DATE,
647 p_expiration_date IN DATE,
648 p_amount IN NUMBER,
649 p_order_type_lookup_code IN VARCHAR2,
650 p_purchase_basis IN VARCHAR2,
651 p_service_uom_class IN VARCHAR2
652 --<SERVICES FPJ END>
653 -- <bug 3325447 start>
654 , p_contractor_first_name IN VARCHAR2
655 , p_contractor_last_name IN VARCHAR2
656 -- <bug 3325447 end>
657 , p_job_business_group_id IN NUMBER --<BUG 3296145>
658 )
659 IS
660
661 x_progress VARCHAR2(3) := null;
662 x_valid BOOLEAN;
663 x_res_terms_id varchar2(25) := null;
664 x_count number;
665
666 /* Bug 2137906. added the below two variables */
667 x_chart_of_accounts_id number;
668 x_temp_val BOOLEAN;
669
670 /* <TIMEPHASED FPI START> */
671 l_header_start_date date := null;
672 l_header_end_date date := null;
673 l_exp_date date := null;
674 l_errormsg varchar2(80) := null;
675 l_rate_type PO_HEADERS_ALL.RATE_TYPE%TYPE;
676 /* <TIMEPHASED FPI END> */
677
678 l_valid_business_group_id VARCHAR2(1) := 'Y'; --<BUG 3296145>
679
680 BEGIN
681
682 x_progress := '010';
683 IF (x_current_po_header_id <> x_po_header_id) THEN
684 /* since the relationship between po_header and po_line
685 is mater-detail relationship, so we need to make sure
686 that they have the same po_header_id */
687
688 po_interface_errors_sv1.handle_interface_errors(
689 'PO_DOCS_OPEN_INTERFACE',
690 'FATAL',
691 null,
692 X_interface_header_id,
693 X_interface_line_id,
694 'PO_PDOI_SPECIF_DIFF_IN_LINES',
695 'PO_LINES_INTERFACE',
696 'PO_HEADER_ID',
697 'COLUMN_NAME',
698 'PO_HEADER_ID',
699 'VALUE',
700 null,null,null,
701 'PO_HEADER_ID',
702 X_po_header_id,
703 X_current_po_header_id,
704 null,null,null,
705 x_header_processable_flag);
706 END IF;
707
708 x_progress := '012';
709 IF (x_hd_type_lookup_code = 'STANDARD') THEN
710
711 IF (x_over_tolerance_error_flag is not null) THEN
712 x_valid :=po_headers_sv6.val_lookup_code(
713 x_over_tolerance_error_flag,
714 'RECEIVING CONTROL LEVEL');
715 IF (x_valid = FALSE) THEN
716 po_interface_errors_sv1.handle_interface_errors(
717 'PO_DOCS_OPEN_INTERFACE',
718 'FATAL',
719 null,
720 x_interface_header_id,
721 x_interface_line_id,
722 'PO_PDOI_INVALID_OVER_TOL_ERROR',
723 'PO_LINES_INTERFACE',
724 'OVER_TOLERANCE_ERROR_FLAG',
725 null,
726 null,
727 null,null,null,null,
728 null,
729 null,
730 null,null,null,null,
731 x_header_processable_flag);
732 END IF;
733 END IF;
734
735 END IF;
736
737 x_progress := '015';
738 IF (x_hd_type_lookup_code = 'QUOTATION') THEN
739 /* check to see if these fields are null , if are not,
740 make a error mark in interface_errors_handle */
741
742 x_progress := '017';
743 IF (x_closed_code is not null) THEN
744 po_interface_errors_sv1.handle_interface_errors(
745 'PO_DOCS_OPEN_INTERFACE',
746 'FATAL',
747 null,
748 x_interface_header_id,
749 x_interface_line_id,
750 'PO_PDOI_COLUMN_NULL',
751 'PO_LINES_INTERFACE',
752 'CLOSED_CODE',
753 'COLUMN_NAME',
754 'VALUE',
755 null,null,null,null,
756 'CLOSED_CODE',
757 x_closed_code,
758 null,null,null,null,
759 x_header_processable_flag);
760 END IF;
761
762
763 IF (x_committed_amount is not null) THEN
764 po_interface_errors_sv1.handle_interface_errors(
765 'PO_DOCS_OPEN_INTERFACE',
766 'FATAL',
767 null,
768 x_interface_header_id,
769 x_interface_line_id,
770 'PO_PDOI_COLUMN_NULL',
771 'PO_LINES_INTERFACE',
772 'COMMITTED_AMOUNT',
773 'COLUMN_NAME',
774 'VALUE',
775 null,null,null,null,
776 'COMMITTED_AMOUNT',
777 x_committed_amount,
778 null,null,null,null,
779 x_header_processable_flag);
780 END IF;
781
782 x_progress := '020';
783 IF (x_market_price is not null) AND
784 (x_create_or_update_item_flag <> 'Y')
785 /*** allow market price to have NOT NULL values because
786 Item Open Interface is to be called ***/
787 THEN
788 po_interface_errors_sv1.handle_interface_errors(
789 'PO_DOCS_OPEN_INTERFACE',
790 'FATAL',
791 null,
792 x_interface_header_id,
793 x_interface_line_id,
794 'PO_PDOI_COLUMN_NULL',
795 'PO_LINES_INTERFACE',
796 'MARKET_PRICE',
797 'COLUMN_NAME',
798 'VALUE',
799 null,null,null,null,
800 'MARKET_PRICE',
801 x_market_price,
802 null,null,null,null,
803 x_header_processable_flag);
804 END IF;
805
806 x_progress := '030';
807 IF (x_allow_price_override_flag is not null) THEN
808 po_interface_errors_sv1.handle_interface_errors(
809 'PO_DOCS_OPEN_INTERFACE',
810 'FATAL',
811 null,
812 x_interface_header_id,
813 x_interface_line_id,
814 'PO_PDOI_COLUMN_NULL',
815 'PO_LINES_INTERFACE',
816 'ALLOW_PRICE_OVERRIDE_FLAG',
817 'COLUMN_NAME',
818 'VALUE',
819 null,null,null,null,
820 'ALLOW_PRICE_OVERRIDE_FLAG',
821 x_allow_price_override_flag,
822 null,null,null,null,
823 x_header_processable_flag);
824 END IF;
825
826 x_progress := '040';
827 IF (x_not_to_exceed_price is not null) THEN
828 po_interface_errors_sv1.handle_interface_errors(
829 'PO_DOCS_OPEN_INTERFACE',
830 'FATAL',
831 null,
832 x_interface_header_id,
833 x_interface_line_id,
834 'PO_PDOI_COLUMN_NULL',
835 'PO_LINES_INTERFACE',
836 'NOT_TO_EXCEED_PRICE',
837 'COLUMN_NAME',
838 'VALUE',
839 null,null,null,null,
840 'NOT_TO_EXCEED_PRICE',
841 x_not_to_exceed_price,
842 null,null,null,null,
843 x_header_processable_flag);
844 END IF;
845
846 x_progress := '050';
847 IF (x_negotiated_by_preparer_flag is not null) THEN
848 po_interface_errors_sv1.handle_interface_errors(
849 'PO_DOCS_OPEN_INTERFACE',
850 'FATAL',
851 null,
852 x_interface_header_id,
853 x_interface_line_id,
854 'PO_PDOI_COLUMN_NULL',
855 'PO_LINES_INTERFACE',
856 'NEGOTIATED_BY_PREPARER_FLAG',
857 'COLUMN_NAME',
858 'VALUE',
859 null,null,null,null,
860 'NEGOTIATED_BY_PREPARER_FLAG',
861 x_negotiated_by_preparer_flag,
862 null,null,null,null,
863 x_header_processable_flag);
864 END IF;
865
866 x_progress := '060';
867 IF (x_capital_expense_flag is not null) THEN
868 po_interface_errors_sv1.handle_interface_errors(
869 'PO_DOCS_OPEN_INTERFACE',
870 'FATAL',
871 null,
872 x_interface_header_id,
873 x_interface_line_id,
874 'PO_PDOI_COLUMN_NULL',
875 'PO_LINES_INTERFACE',
876 'CAPITAL_EXPENSE_FLAG',
877 'COLUMN_NAME',
878 'VALUE',
879 null,null,null,null,
880 'CAPITAL_EXPENSE_FLAG',
881 x_capital_expense_flag,
882 null,null,null,null,
883 x_header_processable_flag);
884 END IF;
885
886 x_progress := '070';
887 IF (x_min_release_amount is not null) THEN
888 po_interface_errors_sv1.handle_interface_errors(
889 'PO_DOCS_OPEN_INTERFACE',
890 'FATAL',
891 null,
892 x_interface_header_id,
893 x_interface_line_id,
894 'PO_PDOI_COLUMN_NULL',
895 'PO_LINES_INTERFACE',
896 'MIN_AMOUNT_RELEASE',
897 'COLUMN_NAME',
898 'VALUE',
899 null,null,null,null,
900 'MIN_AMOUNT_RELEASE',
901 x_min_release_amount,
902 null,null,null,null,
903 x_header_processable_flag);
904 END IF;
905
906 x_progress := '500';
907 IF (x_min_order_quantity < 0) AND (x_min_order_quantity is not null)
908 THEN
909 po_interface_errors_sv1.handle_interface_errors(
910 'PO_DOCS_OPEN_INTERFACE',
911 'FATAL',
912 null,
913 x_interface_header_id,
914 x_interface_line_id,
915 'PO_PDOI_LT_ZERO',
916 'PO_LINES_INTERFACE',
917 'MIN_ORDER_QUANTITY',
918 'COLUMN_NAME',
919 'VALUE',
920 null,null,null,null,
921 'MIN_ORDER_QUANTITY',
922 x_min_order_quantity,
923 null,null,null,null,
924 x_header_processable_flag);
925 END IF;
926
927 x_progress := '510';
928 IF (x_max_order_quantity < 0) AND (x_max_order_quantity is not null)
929 THEN
930 po_interface_errors_sv1.handle_interface_errors(
931 'PO_DOCS_OPEN_INTERFACE',
932 'FATAL',
933 null,
934 x_interface_header_id,
935 x_interface_line_id,
936 'PO_PDOI_LT_ZERO',
937 'PO_LINES_INTERFACE',
938 'MAX_ORDER_QUANTITY',
939 'COLUMN_NAME',
940 'VALUE',
941 null,null,null,null,
942 'MAX_ORDER_QUANTITY',
943 x_max_order_quantity,
944 null,null,null,null,
945 x_header_processable_flag);
946 END IF;
947
948 x_progress := '520';
949 IF (x_min_order_quantity is not null) AND
950 (x_max_order_quantity is not null) THEN
951 x_valid := po_core_sv1.val_max_and_min_qty(x_min_order_quantity,
952 x_max_order_quantity);
953 IF (x_valid = FALSE) THEN
954 po_interface_errors_sv1.handle_interface_errors(
955 'PO_DOCS_OPEN_INTERFACE',
956 'FATAL',
957 null,
958 x_interface_header_id,
959 x_interface_line_id,
960 'PO_PDOI_QT_MIN_GT_MAX',
961 'PO_LINES_INTERFACE',
962 'MIN_ORDER_QUANTITY',
963 'MIN',
964 'MAX',
965 null,null,null,null,
966 x_min_order_quantity,
967 x_max_order_quantity,
968 null,null,null,null,
969 x_header_processable_flag);
970 END IF;
971 END IF;
972
973
974 x_progress := '540';
975 IF (x_over_tolerance_error_flag is not null) THEN
976 x_valid :=po_headers_sv6.val_lookup_code(
977 x_over_tolerance_error_flag,
978 'RECEIVING CONTROL LEVEL');
979 IF (x_valid = FALSE) THEN
980
981 po_interface_errors_sv1.handle_interface_errors(
982 'PO_DOCS_OPEN_INTERFACE',
983 'FATAL',
984 null,
985 x_interface_header_id,
986 x_interface_line_id,
987 'PO_PDOI_INVALID_OVER_TOL_ERROR',
988 'PO_LINES_INTERFACE',
989 'OVER_TOLERANCE_ERROR_FLAG',
990 null,
991 null,
992 null,null,null,null,
993 null,
994 null,
995 null,null,null,null,
996 x_header_processable_flag);
997 END IF;
998 END IF;
999 END IF; --quote
1000
1001 IF (x_hd_type_lookup_code = 'BLANKET') THEN
1002 x_progress := '080';
1003 /* check to see if these fields are null , if are not,
1004 make a error mark in interface_errors_handle */
1005
1006 IF (x_qty_rcv_tolerance is not null) AND
1007 (x_create_or_update_item_flag <> 'Y')
1008 THEN
1009 po_interface_errors_sv1.handle_interface_errors(
1010 'PO_DOCS_OPEN_INTERFACE',
1011 'FATAL',
1012 null,
1013 x_interface_header_id,
1014 x_interface_line_id,
1015 'PO_PDOI_COLUMN_NULL',
1016 'PO_LINES_INTERFACE',
1017 'QTY_RCV_TOLERANCE',
1018 'COLUMN_NAME',
1019 'VALUE',
1020 null,null,null,null,
1021 'QTY_RCV_TOLERANCE',
1022 x_qty_rcv_tolerance,
1023 null,null,null,null,
1024 x_header_processable_flag);
1025 END IF;
1026
1027 x_progress := '090';
1028 IF (x_over_tolerance_error_flag is not null) THEN
1029 po_interface_errors_sv1.handle_interface_errors(
1030 'PO_DOCS_OPEN_INTERFACE',
1031 'FATAL',
1032 null,
1033 x_interface_header_id,
1034 x_interface_line_id,
1035 'PO_PDOI_COLUMN_NULL',
1036 'PO_LINES_INTERFACE',
1037 'OVER_TOLERANCE_ERROR_FLAG',
1038 'COLUMN_NAME',
1039 'VALUE',
1040 null,null,null,null,
1041 'OVER_TOLERANCE_ERROR_FLAG',
1042 x_over_tolerance_error_flag,
1043 null,null,null,null,
1044 x_header_processable_flag);
1045 END IF;
1046
1047 x_progress := '100';
1048 IF (x_qty_rcv_exception_code is not null) AND
1049 (X_create_or_update_item_flag <> 'Y')
1050 THEN
1051 po_interface_errors_sv1.handle_interface_errors(
1052 'PO_DOCS_OPEN_INTERFACE',
1053 'FATAL',
1054 null,
1055 x_interface_header_id,
1056 x_interface_line_id,
1057 'PO_PDOI_COLUMN_NULL',
1058 'PO_LINES_INTERFACE',
1059 'QTY_RCV_EXCEPTION_CODE',
1060 'COLUMN_NAME',
1061 'VALUE',
1062 null,null,null,null,
1063 'QTY_RCV_EXCEPTION_CODE',
1064 x_qty_rcv_exception_code,
1065 null,null,null,null,
1066 x_header_processable_flag);
1067 END IF;
1068 -- BUG 588911
1069 -- Remove the check to see if lead time unit is NULL
1070 /*
1071 x_progress := '110';
1072 IF (x_lead_time_unit is not null) THEN
1073 po_interface_errors_sv1.handle_interface_errors(
1074 'PO_DOCS_OPEN_INTERFACE',
1075 'FATAL',
1076 null,
1077 x_interface_header_id,
1078 x_interface_line_id,
1079 'PO_PDOI_COLUMN_NULL',
1080 'PO_LINES_INTERFACE',
1081 'LEAD_TIME_UNIT',
1082 'COLUMN_NAME',
1083 'VALUE',
1084 null,null,null,null,
1085 'LEAD_TIME_UNIT',
1086 x_lead_time_unit,
1087 null,null,null,null,
1088 x_header_processable_flag);
1089 END IF;
1090 */
1091 x_progress := '120';
1092 IF (x_freight_carrier is not null) THEN
1093 po_interface_errors_sv1.handle_interface_errors(
1094 'PO_DOCS_OPEN_INTERFACE',
1095 'FATAL',
1096 null,
1097 x_interface_header_id,
1098 x_interface_line_id,
1099 'PO_PDOI_COLUMN_NULL',
1100 'PO_LINES_INTERFACE',
1101 'FREIGHT_CARRIER',
1102 'COLUMN_NAME',
1103 'VALUE',
1104 null,null,null,null,
1105 'FREIGHT_CARRIER',
1106 x_freight_carrier,
1107 null,null,null,null,
1108 x_header_processable_flag);
1109 END IF;
1110
1111 x_progress := '130';
1112 IF (x_fob is not null) THEN
1113 po_interface_errors_sv1.handle_interface_errors(
1114 'PO_DOCS_OPEN_INTERFACE',
1115 'FATAL',
1116 null,
1117 x_interface_header_id,
1118 x_interface_line_id,
1119 'PO_PDOI_COLUMN_NULL',
1120 'PO_LINES_INTERFACE',
1121 'FOB',
1122 'COLUMN_NAME',
1123 'VALUE',
1124 null,null,null,null,
1125 'FOB',
1126 x_fob,
1127 null,null,null,null,
1128 x_header_processable_flag);
1129 END IF;
1130
1131 x_progress := '140';
1132 IF (x_freight_terms is not null) THEN
1133 po_interface_errors_sv1.handle_interface_errors(
1134 'PO_DOCS_OPEN_INTERFACE',
1135 'FATAL',
1136 null,
1137 x_interface_header_id,
1138 x_interface_line_id,
1139 'PO_PDOI_COLUMN_NULL',
1140 'PO_LINES_INTERFACE',
1141 'FREIGHT_TERMS',
1142 'COLUMN_NAME',
1143 'VALUE',
1144 null,null,null,null,
1145 'FREIGHT_TERMS',
1146 x_freight_terms,
1147 null,null,null,null,
1148 x_header_processable_flag);
1149 END IF;
1150
1151 X_progress := '150';
1152 IF (x_receipt_required_flag is not null) AND
1153 (x_create_or_update_item_flag <> 'Y' )
1154 THEN
1155 po_interface_errors_sv1.handle_interface_errors(
1156 'PO_DOCS_OPEN_INTERFACE',
1157 'FATAL',
1158 null,
1159 x_interface_header_id,
1160 x_interface_line_id,
1161 'PO_PDOI_COLUMN_NULL',
1162 'PO_LINES_INTERFACE',
1163 'RECEIPT_REQUIRED_FLAG',
1164 'COLUMN_NAME',
1165 'VALUE',
1166 null,null,null,null,
1167 'RECEIPT_REQUIRED_FLAG',
1168 x_receipt_required_flag,
1169 null,null,null,null,
1170 x_header_processable_flag);
1171 END IF;
1172
1173 X_progress := '155';
1174 IF (x_inspection_required_flag is not null) AND
1175 (x_create_or_update_item_flag <> 'Y')
1176 THEN
1177 po_interface_errors_sv1.handle_interface_errors(
1178 'PO_DOCS_OPEN_INTERFACE',
1179 'FATAL',
1180 null,
1181 x_interface_header_id,
1182 x_interface_line_id,
1183 'PO_PDOI_COLUMN_NULL',
1184 'PO_LINES_INTERFACE',
1185 'INSPECTION_REQUIRED_FLAG',
1186 'COLUMN_NAME',
1187 'VALUE',
1188 null,null,null,null,
1189 'INSPECTION_REQUIRED_FLAG',
1190 x_inspection_required_flag,
1191 null,null,null,null,
1192 x_header_processable_flag);
1193 END IF;
1194
1195 IF (x_min_release_amount < 0) AND (x_min_release_amount is not null)
1196 THEN
1197 po_interface_errors_sv1.handle_interface_errors(
1198 'PO_DOCS_OPEN_INTERFACE',
1199 'FATAL',
1200 null,
1201 x_interface_header_id,
1202 x_interface_line_id,
1203 'PO_PDOI_LT_ZERO',
1204 'PO_LINES_INTERFACE',
1205 'MIN_RELEASE_AMOUNT',
1206 'COLUMN_NAME',
1207 'VALUE',
1208 null,null,null,null,
1209 'MIN_RELEASE_AMOUNT',
1210 x_min_release_amount,
1211 null,null,null,null,
1212 x_header_processable_flag);
1213 END IF;
1214
1215 /* <TIMEPHASED FPI START> */
1216 X_progress := '156';
1217 if (p_shipment_num is not null) then
1218 po_interface_errors_sv1.handle_interface_errors(
1219 'PO_DOCS_OPEN_INTERFACE',
1220 'FATAL',
1221 null,
1222 x_interface_header_id,
1223 x_interface_line_id,
1224 'PO_PDOI_CREATE_SUBMISSION',
1225 'PO_LINES_INTERFACE',
1226 'SHIPMENT_NUM',
1227 'COLUMN_NAME',
1228 null,null,null,null,null,
1229 'SHIPMENT_NUM',
1230 null,null,null,null,null,
1231 x_header_processable_flag);
1232 end if;
1233
1234 X_progress := '157';
1235 /* Get the header and line values from the database */
1236 BEGIN
1237 select poh.effective_date, poh.expiration_date, pol.expiration_date
1238 into l_header_start_date, l_header_end_date, l_exp_date
1239 from po_headers_interface poh,
1240 po_lines_interface pol
1241 where poh.interface_header_id = x_interface_header_id
1242 and pol.interface_line_id = x_interface_line_id
1243 and poh.interface_header_id = pol.interface_header_id;
1244 EXCEPTION
1245 when others then
1246 null;
1247 END;
1248
1249 PO_DEBUG.put_line ('Before calling validate_effective_dates()');
1250
1251 /*
1252 Validating the expiration date. Since this is a line, there is no
1253 pricebreak effective dates. Hence, null is being passed.
1254 */
1255 po_shipments_sv8.validate_effective_dates(
1256 l_header_start_date,
1257 l_header_end_date,
1258 null,
1259 null,
1260 l_exp_date,
1261 l_errormsg);
1262
1263 PO_DEBUG.put_line ('After calling validate_effective_dates()');
1264
1265 if (l_errormsg is not null) then
1266 po_interface_errors_sv1.handle_interface_errors(
1267 'PO_DOCS_OPEN_INTERFACE',
1268 'FATAL',
1269 null,
1270 x_interface_header_id,
1271 x_interface_line_id,
1272 l_errormsg,
1273 'PO_LINES_INTERFACE',
1274 'EXPIRATION_DATE',
1275 'COLUMN_NAME',
1276 null,null,null,null,null,
1277 'EXPIRATION_DATE',
1278 null,null,null,null,null,
1279 x_header_processable_flag);
1280 end if;
1281 /* <TIMEPHASED FPI END> */
1282
1283 END IF; --if blanket
1284
1285
1286 --<SERVICES FPJ START>
1287 PO_DEBUG.put_line ('Start validating services line types');
1288
1289 -- Bug 3652094:
1290 -- Services enabled check is extended to all new line types
1291 IF (p_order_type_lookup_code IN ('FIXED PRICE', 'RATE')) THEN
1292
1293 IF (PO_SETUP_S1.get_services_enabled_flag = 'N') THEN
1294
1295 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1296 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1297 X_Error_type => 'FATAL',
1298 X_Batch_id => NULL,
1299 X_Interface_Header_Id => x_interface_header_id,
1300 X_Interface_Line_id => x_interface_line_id,
1301 X_Error_message_name => 'PO_SVC_NOT_ENABLED',
1302 X_Table_name => 'PO_LINES_INTERFACE',
1303 X_Column_name => NULL,
1304 X_TokenName1 => NULL,
1305 X_TokenName2 => NULL,
1306 X_TokenName3 => NULL,
1307 X_TokenName4 => NULL,
1308 X_TokenName5 => NULL,
1309 X_TokenName6 => NULL,
1310 X_TokenValue1 => NULL,
1311 X_TokenValue2 => NULL,
1312 X_TokenValue3 => NULL,
1313 X_TokenValue4 => NULL,
1314 X_TokenValue5 => NULL,
1315 X_TokenValue6 => NULL,
1316 X_header_processable_flag => x_header_processable_flag);
1317 END IF;
1318
1319 END IF;
1320
1321 IF (p_purchase_basis = 'TEMP LABOR') THEN
1322
1323 IF (x_hd_type_lookup_code = 'BLANKET'
1324 AND NVL(x_global_agreement_flag, 'N') = 'N') THEN
1325 --New error: line type not supported for blanket
1326 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1327 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1328 X_Error_type => 'FATAL',
1329 X_Batch_id => NULL,
1330 X_Interface_Header_Id => x_interface_header_id,
1331 X_Interface_Line_id => x_interface_line_id,
1332 X_Error_message_name => 'PO_PDOI_SVC_NO_LOCAL_BLANKET',
1333 X_Table_name => 'PO_LINES_INTERFACE',
1334 X_Column_name => NULL,
1335 X_TokenName1 => NULL,
1336 X_TokenName2 => NULL,
1337 X_TokenName3 => NULL,
1338 X_TokenName4 => NULL,
1339 X_TokenName5 => NULL,
1340 X_TokenName6 => NULL,
1341 X_TokenValue1 => NULL,
1342 X_TokenValue2 => NULL,
1343 X_TokenValue3 => NULL,
1344 X_TokenValue4 => NULL,
1345 X_TokenValue5 => NULL,
1346 X_TokenValue6 => NULL,
1347 X_header_processable_flag => x_header_processable_flag);
1348 END IF;
1349
1350 --<BUG 3296145 START>
1351 --check that business_group_id is valid.
1352
1353 IF (p_job_business_group_id IS NOT NULL) THEN
1354
1355 IF (g_po_pdoi_write_to_file = 'Y') THEN
1356 PO_DEBUG.put_line('**Start validating job_business_group_id: '||
1357 p_job_business_group_id);
1358 END IF;
1359
1360 IF nvl(HR_GENERAL.get_xbg_profile,'N') = 'N' THEN
1361
1362 IF (g_po_pdoi_write_to_file = 'Y') THEN
1363 PO_DEBUG.put_line('Validate against FSP');
1364 END IF;
1365
1366 SELECT COUNT(FSP.business_group_id)
1367 INTO x_count
1368 FROM FINANCIALS_SYSTEM_PARAMETERS FSP
1369 WHERE FSP.business_group_id = p_job_business_group_id;
1370
1371 IF x_count < 1 THEN
1372
1373 IF (g_po_pdoi_write_to_file = 'Y') THEN
1374 PO_DEBUG.put_line('ERROR: xbg profile is N but ' ||
1375 'job_business_group_id not in FSP');
1376 END IF;
1377
1378 l_valid_business_group_id := 'N';
1379
1380 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1381 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1382 X_Error_type => 'FATAL',
1383 X_Batch_id => NULL,
1384 X_Interface_Header_Id => X_interface_header_id,
1385 X_Interface_Line_id => X_interface_line_id,
1386 X_Error_message_name => 'PO_PDOI_SVC_CANNOT_CROSS_BG',
1387 X_Table_name => 'PO_LINES_INTERFACE',
1388 X_Column_name => 'JOB_BUSINESS_GROUP_ID',
1389 X_TokenName1 => 'JOB_BG_ID',
1390 X_TokenName2 => NULL,
1391 X_TokenName3 => NULL,
1392 X_TokenName4 => NULL,
1393 X_TokenName5 => NULL,
1394 X_TokenName6 => NULL,
1395 X_TokenValue1 => p_job_business_group_id,
1396 X_TokenValue2 => NULL,
1397 X_TokenValue3 => NULL,
1398 X_TokenValue4 => NULL,
1399 X_TokenValue5 => NULL,
1400 X_TokenValue6 => NULL,
1401 X_header_processable_flag => x_header_processable_flag);
1402 END IF;
1403
1404 ELSE --nvl(HR_GENERAL.get_xbg_profile,'N') = 'N'
1405
1406 IF (g_po_pdoi_write_to_file = 'Y') THEN
1407 PO_DEBUG.put_line('Validate against PBG');
1408 END IF;
1409
1410 SELECT COUNT(PBG.business_group_id)
1411 INTO x_count
1412 FROM PER_BUSINESS_GROUPS_PERF PBG
1413 WHERE PBG.business_group_id = p_job_business_group_id
1414 AND TRUNC(sysdate) BETWEEN NVL(TRUNC(PBG.date_from), TRUNC(sysdate))
1415 AND NVL(TRUNC(PBG.date_to), TRUNC(sysdate));
1416
1417 IF (x_count < 1) THEN
1418
1419 IF (g_po_pdoi_write_to_file = 'Y') THEN
1420 PO_DEBUG.put_line('ERROR: xbg profile is Y and ' ||
1421 'job_business_group_id not in PBG');
1422 END IF;
1423
1424 l_valid_business_group_id := 'N';
1425
1426 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1427 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1428 X_Error_type => 'FATAL',
1429 X_Batch_id => NULL,
1430 X_Interface_Header_Id => X_interface_header_id,
1431 X_Interface_Line_id => X_interface_line_id,
1432 X_Error_message_name => 'PO_PDOI_SVC_INVALID_BG',
1433 X_Table_name => 'PO_LINES_INTERFACE',
1434 X_Column_name => 'JOB_BUSINESS_GROUP_ID',
1435 X_TokenName1 => 'JOB_BG_ID',
1436 X_TokenName2 => NULL,
1437 X_TokenName3 => NULL,
1438 X_TokenName4 => NULL,
1439 X_TokenName5 => NULL,
1440 X_TokenName6 => NULL,
1441 X_TokenValue1 => p_job_business_group_id,
1442 X_TokenValue2 => NULL,
1443 X_TokenValue3 => NULL,
1444 X_TokenValue4 => NULL,
1445 X_TokenValue5 => NULL,
1446 X_TokenValue6 => NULL,
1447 X_header_processable_flag => x_header_processable_flag);
1448 END IF;
1449
1450 END IF; --nvl(HR_GENERAL.get_xbg_profile,'N') = 'N'
1451
1452 IF (g_po_pdoi_write_to_file = 'Y') THEN
1453 PO_DEBUG.put_line('**Done validating job_business_group_id');
1454 END IF;
1455
1456 END IF; --IF (p_job_business_group_id IS NOT NULL)
1457 --<BUG 3296145 END>
1458
1459 --Job is mandatory for Temp Labor Lines.
1460 IF (p_job_id IS NULL) THEN
1461
1462 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1463 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1464 X_Error_type => 'FATAL',
1465 X_Batch_id => NULL,
1466 X_Interface_Header_Id => x_interface_header_id,
1467 X_Interface_Line_id => x_interface_line_id,
1468 X_Error_message_name => 'PO_PDOI_SVC_MUST_JOB',
1469 X_Table_name => 'PO_LINES_INTERFACE',
1470 X_Column_name => 'JOB_ID',
1471 X_TokenName1 => NULL,
1472 X_TokenName2 => NULL,
1473 X_TokenName3 => NULL,
1474 X_TokenName4 => NULL,
1475 X_TokenName5 => NULL,
1476 X_TokenName6 => NULL,
1477 X_TokenValue1 => NULL,
1478 X_TokenValue2 => NULL,
1479 X_TokenValue3 => NULL,
1480 X_TokenValue4 => NULL,
1481 X_TokenValue5 => NULL,
1482 X_TokenValue6 => NULL,
1483 X_header_processable_flag => x_header_processable_flag);
1484
1485 ELSE --p_job_id is not null
1486
1487 --<BUG 3296145 START>
1488 --check that job_id is valid within the relevant business group.
1489
1490 IF l_valid_business_group_id = 'Y' THEN
1491
1492 IF (g_po_pdoi_write_to_file = 'Y') THEN
1493 PO_DEBUG.put_line('**Start validating job_id: '||p_job_id ||
1494 ' against job_business_group_id: '||
1495 p_job_business_group_id);
1496 END IF;
1497
1498 IF nvl(HR_GENERAL.get_xbg_profile,'N') = 'N'
1499 OR p_job_business_group_id IS NULL THEN
1500
1501 IF (g_po_pdoi_write_to_file = 'Y') THEN
1502 PO_DEBUG.put_line('Validate against FSP since xbg_profile=N '||
1503 'or job_business_group_id is null');
1504 END IF;
1505
1506 SELECT COUNT(PJ.job_id)
1507 INTO x_count
1508 FROM PER_JOBS_VL PJ,
1509 FINANCIALS_SYSTEM_PARAMETERS FSP
1510 WHERE PJ.job_id = p_job_id
1511 AND PJ.business_group_id = FSP.business_group_id
1512 AND FSP.business_group_id = NVL(p_job_business_group_id,
1513 FSP.business_group_id)
1514 AND TRUNC(sysdate) BETWEEN NVL(TRUNC(PJ.date_from), TRUNC(sysdate))
1515 AND NVL(TRUNC(PJ.date_to), TRUNC(sysdate));
1516 ELSE --if HR: xbg profile = 'Y' and x_job_business_group_id not null
1517
1518 IF (g_po_pdoi_write_to_file = 'Y') THEN
1519 PO_DEBUG.put_line('Validate against PBG since xbg_profile=Y '||
1520 'and job_business_group_id not null');
1521 END IF;
1522
1523 SELECT COUNT(PJ.job_id)
1524 INTO x_count
1525 FROM PER_JOBS_VL PJ,
1526 PER_BUSINESS_GROUPS_PERF PBG
1527 WHERE PJ.job_id = p_job_id
1528 AND PJ.business_group_id = p_job_business_group_id
1529 AND PJ.business_group_id = PBG.business_group_id
1530 AND TRUNC(sysdate) BETWEEN NVL(TRUNC(PJ.date_from), TRUNC(sysdate))
1531 AND NVL(TRUNC(PJ.date_to), TRUNC(sysdate))
1532 AND TRUNC(sysdate) BETWEEN NVL(TRUNC(PBG.date_from), TRUNC(sysdate))
1533 AND NVL(TRUNC(PBG.date_to), TRUNC(sysdate));
1534
1535 END IF; --IF nvl(HR_GENERAL.get_xbg_profile,'N')...
1536
1537 IF (x_count < 1) THEN
1538
1539 IF (g_po_pdoi_write_to_file = 'Y') THEN
1540 PO_DEBUG.put_line('ERROR: job_id/business_group_id combination '||
1541 'is invalid');
1542 END IF;
1543
1544 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1545 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1546 X_Error_type => 'FATAL',
1547 X_Batch_id => NULL,
1548 X_Interface_Header_Id => X_interface_header_id,
1549 X_Interface_Line_id => X_interface_line_id,
1550 X_Error_message_name => 'PO_PDOI_SVC_INVALID_JOB',
1551 X_Table_name => 'PO_LINES_INTERFACE',
1552 X_Column_name => 'JOB_ID',
1553 X_TokenName1 => 'JOB_ID',
1554 X_TokenName2 => 'JOB_BG_ID',
1555 X_TokenName3 => NULL,
1556 X_TokenName4 => NULL,
1557 X_TokenName5 => NULL,
1558 X_TokenName6 => NULL,
1559 X_TokenValue1 => p_job_id,
1560 X_TokenValue2 => p_job_business_group_id,
1561 X_TokenValue3 => NULL,
1562 X_TokenValue4 => NULL,
1563 X_TokenValue5 => NULL,
1564 X_TokenValue6 => NULL,
1565 X_header_processable_flag => x_header_processable_flag);
1566 END IF;
1567
1568 IF (g_po_pdoi_write_to_file = 'Y') THEN
1569 PO_DEBUG.put_line('**Done validating job_id/business_group_id');
1570 END IF;
1571
1572 END IF; --IF l_valid_business_group_id = 'Y'
1573 --<BUG 3296145 END>
1574
1575 IF x_category_id IS NOT NULL THEN
1576
1577 --job should be Valid for the Purchasing category
1578 SELECT COUNT(*)
1579 INTO x_count
1580 FROM PO_JOB_ASSOCIATIONS_B PJA,
1581 PER_JOBS_VL PJ
1582 WHERE PJA.job_id = p_job_id
1583 AND PJA.category_id = x_category_id
1584 AND PJA.job_id = PJ.job_id
1585 AND NVL(TRUNC(PJA.inactive_date), TRUNC(sysdate)) >= TRUNC(sysdate)
1586 AND NVL(TRUNC(PJ.date_from), TRUNC(sysdate)) <= TRUNC(sysdate)
1587 AND NVL(TRUNC(PJ.date_to), TRUNC(sysdate)) >= TRUNC(sysdate);
1588
1589 IF (x_count < 1) THEN
1590 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1591 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1592 X_Error_type => 'FATAL',
1593 X_Batch_id => NULL,
1594 X_Interface_Header_Id => X_interface_header_id,
1595 X_Interface_Line_id => X_interface_line_id,
1596 X_Error_message_name => 'PO_PDOI_SVC_INVALID_JOB_CAT',
1597 X_Table_name => 'PO_LINES_INTERFACE',
1598 X_Column_name => 'JOB_ID',
1599 X_TokenName1 => NULL,
1600 X_TokenName2 => NULL,
1601 X_TokenName3 => NULL,
1602 X_TokenName4 => NULL,
1603 X_TokenName5 => NULL,
1604 X_TokenName6 => NULL,
1605 X_TokenValue1 => NULL,
1606 X_TokenValue2 => NULL,
1607 X_TokenValue3 => NULL,
1608 X_TokenValue4 => NULL,
1609 X_TokenValue5 => NULL,
1610 X_TokenValue6 => NULL,
1611 X_header_processable_flag => x_header_processable_flag);
1612
1613 END IF;
1614 END IF;
1615 END IF; --if p_job_id is null
1616
1617 -- Bug 3308164 : capital expense flag is not applicable to
1618 -- temp labor lines
1619 IF (x_capital_expense_flag = 'Y') THEN
1620 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1621 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1622 X_Error_type => 'FATAL',
1623 X_Batch_id => NULL,
1624 X_Interface_Header_Id => x_interface_header_id,
1625 X_Interface_Line_id => x_interface_line_id,
1626 X_Error_message_name => 'PO_SVC_NO_CAP_EXPENSE',
1627 X_Table_name => 'PO_LINES_INTERFACE',
1628 X_Column_name => 'CAPITAL_EXPENSE_FLAG',
1629 X_TokenName1 => 'COLUMN_NAME',
1630 X_TokenName2 => 'VALUE',
1631 X_TokenName3 => NULL,
1632 X_TokenName4 => NULL,
1633 X_TokenName5 => NULL,
1634 X_TokenName6 => NULL,
1635 X_TokenValue1 => NULL,
1636 X_TokenValue2 => NULL,
1637 X_TokenValue3 => NULL,
1638 X_TokenValue4 => NULL,
1639 X_TokenValue5 => NULL,
1640 X_TokenValue6 => NULL,
1641 X_header_processable_flag => x_header_processable_flag);
1642 END IF;
1643
1644 /* Bug 3323281 Start */
1645 -- UN NUmber and Hazard Class not applicable for TEMP LABOR lines
1646
1647 If (x_un_number_id is not NULL) then
1648 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1649 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1650 X_Error_type => 'FATAL',
1651 X_Batch_id => NULL,
1652 X_Interface_Header_Id => x_interface_header_id,
1653 X_Interface_Line_id => x_interface_line_id,
1654 X_Error_message_name => 'PO__PDOI_SVC_NO_UNNUMBER',
1655 X_Table_name => 'PO_LINES_INTERFACE',
1656 X_Column_name => 'UN_NUMBER',
1657 X_TokenName1 => 'COLUMN_NAME',
1658 X_TokenName2 => 'VALUE',
1659 X_TokenName3 => NULL,
1660 X_TokenName4 => NULL,
1661 X_TokenName5 => NULL,
1662 X_TokenName6 => NULL,
1663 X_TokenValue1 => NULL,
1664 X_TokenValue2 => NULL,
1665 X_TokenValue3 => NULL,
1666 X_TokenValue4 => NULL,
1667 X_TokenValue5 => NULL,
1668 X_TokenValue6 => NULL,
1669 X_header_processable_flag => x_header_processable_flag);
1670 End if;
1671
1672 If (x_hazard_class_id is not NULL) then
1673 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1674 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1675 X_Error_type => 'FATAL',
1676 X_Batch_id => NULL,
1677 X_Interface_Header_Id => x_interface_header_id,
1678 X_Interface_Line_id => x_interface_line_id,
1679 X_Error_message_name => 'PO_PDOI_SVC_NO_HAZARD_CLASS',
1680 X_Table_name => 'PO_LINES_INTERFACE',
1681 X_Column_name => 'HAZARD_CLASS',
1682 X_TokenName1 => 'COLUMN_NAME',
1683 X_TokenName2 => 'VALUE',
1684 X_TokenName3 => NULL,
1685 X_TokenName4 => NULL,
1686 X_TokenName5 => NULL,
1687 X_TokenName6 => NULL,
1688 X_TokenValue1 => NULL,
1689 X_TokenValue2 => NULL,
1690 X_TokenValue3 => NULL,
1691 X_TokenValue4 => NULL,
1692 X_TokenValue5 => NULL,
1693 X_TokenValue6 => NULL,
1694 X_header_processable_flag => x_header_processable_flag);
1695 End if;
1696
1697 /* Bug 3323281 End */
1698
1699 -- Bug 3320741 START
1700 --------------------------------------------------------------------
1701 -- Check: Do not allow Need-By Date if purchase basis is Temp Labor.
1702 --------------------------------------------------------------------
1703 IF (x_need_by_date IS NOT NULL) THEN
1704 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1705 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1706 X_Error_type => 'FATAL',
1707 X_Batch_id => NULL,
1708 X_Interface_Header_Id => x_interface_header_id,
1709 X_Interface_Line_id => x_interface_line_id,
1710 X_Error_message_name => 'PO_SVC_NO_NEED_PROMISE_DATE',
1711 X_Table_name => 'PO_LINES_INTERFACE',
1712 X_Column_name => 'NEED_BY_DATE',
1713 X_TokenName1 => NULL,
1714 X_TokenName2 => NULL,
1715 X_TokenName3 => NULL,
1716 X_TokenName4 => NULL,
1717 X_TokenName5 => NULL,
1718 X_TokenName6 => NULL,
1719 X_TokenValue1 => NULL,
1720 X_TokenValue2 => NULL,
1721 X_TokenValue3 => NULL,
1722 X_TokenValue4 => NULL,
1723 X_TokenValue5 => NULL,
1724 X_TokenValue6 => NULL,
1725 X_header_processable_flag => x_header_processable_flag);
1726 END IF;
1727
1728 --------------------------------------------------------------------
1729 -- Check: Do not allow Promised Date if purchase basis is Temp Labor.
1730 --------------------------------------------------------------------
1731 IF (x_promised_date IS NOT NULL) THEN
1732 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1733 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1734 X_Error_type => 'FATAL',
1735 X_Batch_id => NULL,
1736 X_Interface_Header_Id => x_interface_header_id,
1737 X_Interface_Line_id => x_interface_line_id,
1738 X_Error_message_name => 'PO_SVC_NO_NEED_PROMISE_DATE',
1739 X_Table_name => 'PO_LINES_INTERFACE',
1740 X_Column_name => 'PROMISED_DATE',
1741 X_TokenName1 => NULL,
1742 X_TokenName2 => NULL,
1743 X_TokenName3 => NULL,
1744 X_TokenName4 => NULL,
1745 X_TokenName5 => NULL,
1746 X_TokenName6 => NULL,
1747 X_TokenValue1 => NULL,
1748 X_TokenValue2 => NULL,
1749 X_TokenValue3 => NULL,
1750 X_TokenValue4 => NULL,
1751 X_TokenValue5 => NULL,
1752 X_TokenValue6 => NULL,
1753 X_header_processable_flag => x_header_processable_flag);
1754 END IF;
1755 -- Bug 3320741 END
1756
1757 IF (x_hd_type_lookup_code = 'STANDARD') THEN
1758
1759 --Effective date is required for Standard PO with purchase basis
1760 --'TEMP LABOR'
1761
1762 IF (p_effective_date IS NULL) THEN
1763 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1764 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1765 X_Error_type => 'FATAL',
1766 X_Batch_id => NULL,
1767 X_Interface_Header_Id => X_interface_header_id,
1768 X_Interface_Line_id => X_interface_line_id,
1769 X_Error_message_name => 'PO_PDOI_SVC_MUST_START_DATE',
1770 X_Table_name => 'PO_LINES_INTERFACE',
1771 X_Column_name => 'EFFECTIVE_DATE',
1772 X_TokenName1 => NULL,
1773 X_TokenName2 => NULL,
1774 X_TokenName3 => NULL,
1775 X_TokenName4 => NULL,
1776 X_TokenName5 => NULL,
1777 X_TokenName6 => NULL,
1778 X_TokenValue1 => NULL,
1779 X_TokenValue2 => NULL,
1780 X_TokenValue3 => NULL,
1781 X_TokenValue4 => NULL,
1782 X_TokenValue5 => NULL,
1783 X_TokenValue6 => NULL,
1784 X_header_processable_flag => x_header_processable_flag);
1785 End If;
1786
1787 -- Expiration date if provided should be later than the effective date
1788 IF ((p_expiration_date IS NOT NULL)
1789 AND (p_expiration_date < p_effective_date)) THEN
1790 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1791 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1792 X_Error_type => 'FATAL',
1793 X_Batch_id => NULL,
1794 X_Interface_Header_Id => X_interface_header_id,
1795 X_Interface_Line_id => X_interface_line_id,
1796 X_Error_message_name => 'PO_SVC_END_GE_START',
1797 X_Table_name => 'PO_LINES_INTERFACE',
1798 X_Column_name => 'EXPIRATION_DATE',
1799 X_TokenName1 => NULL,
1800 X_TokenName2 => NULL,
1801 X_TokenName3 => NULL,
1802 X_TokenName4 => NULL,
1803 X_TokenName5 => NULL,
1804 X_TokenName6 => NULL,
1805 X_TokenValue1 => NULL,
1806 X_TokenValue2 => NULL,
1807 X_TokenValue3 => NULL,
1808 X_TokenValue4 => NULL,
1809 X_TokenValue5 => NULL,
1810 X_TokenValue6 => NULL,
1811 X_header_processable_flag => x_header_processable_flag);
1812 END IF;
1813
1814 END IF; --IF (x_hd_type_lookup_code = 'STANDARD')
1815
1816 ELSE --p_purchase_basis is not 'TEMP LABOR'
1817
1818 -- For non TEMP LABOR Purchase basis, job should not be provided.
1819 IF (p_job_id IS NOT NULL) THEN
1820 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1821 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1822 X_Error_type => 'FATAL',
1823 X_Batch_id => NULL,
1824 X_Interface_Header_Id => X_interface_header_id,
1825 X_Interface_Line_id => X_interface_line_id,
1826 X_Error_message_name => 'PO_PDOI_SVC_NO_JOB',
1827 X_Table_name => 'PO_LINES_INTERFACE',
1828 X_Column_name => 'JOB_ID',
1829 X_TokenName1 => NULL,
1830 X_TokenName2 => NULL,
1831 X_TokenName3 => NULL,
1832 X_TokenName4 => NULL,
1833 X_TokenName5 => NULL,
1834 X_TokenName6 => NULL,
1835 X_TokenValue1 => NULL,
1836 X_TokenValue2 => NULL,
1837 X_TokenValue3 => NULL,
1838 X_TokenValue4 => NULL,
1839 X_TokenValue5 => NULL,
1840 X_TokenValue6 => NULL,
1841 X_header_processable_flag => x_header_processable_flag);
1842 END IF;
1843
1844 IF (x_hd_type_lookup_code = 'STANDARD') THEN
1845 IF (p_effective_date IS NOT NULL
1846 OR p_expiration_date IS NOT NULL) THEN
1847 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1848 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1849 X_Error_type => 'FATAL',
1850 X_Batch_id => NULL,
1851 X_Interface_Header_Id => X_interface_header_id,
1852 X_Interface_Line_id => X_interface_line_id,
1853 X_Error_message_name => 'PO_SVC_NO_START_END_DATE',
1854 X_Table_name => 'PO_LINES_INTERFACE',
1855 X_Column_name => 'EFFECTIVE_DATE',
1856 X_TokenName1 => NULL,
1857 X_TokenName2 => NULL,
1858 X_TokenName3 => NULL,
1859 X_TokenName4 => NULL,
1860 X_TokenName5 => NULL,
1861 X_TokenName6 => NULL,
1862 X_TokenValue1 => NULL,
1863 X_TokenValue2 => NULL,
1864 X_TokenValue3 => NULL,
1865 X_TokenValue4 => NULL,
1866 X_TokenValue5 => NULL,
1867 X_TokenValue6 => NULL,
1868 X_header_processable_flag => x_header_processable_flag);
1869 END IF;
1870 END IF; --IF (x_hd_type_lookup_code = 'STANDARD')
1871
1872 -- <bug 3325447 start>
1873 -- For non TEMP LABOR Purchase basis, contractor first name or
1874 -- contractor last name should not be provided.
1875 IF (p_contractor_first_name IS NOT NULL) OR
1876 (p_contractor_last_name IS NOT NULL) THEN
1877 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1878 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1879 X_Error_type => 'FATAL',
1880 X_Batch_id => NULL,
1881 X_Interface_Header_Id => X_interface_header_id,
1882 X_Interface_Line_id => X_interface_line_id,
1883 X_Error_message_name => 'PO_PDOI_SVC_NO_NAME',
1884 X_Table_name => 'PO_LINES_INTERFACE',
1885 X_Column_name => 'CONTRACTOR_FIRST/LAST_NAME',
1886 X_TokenName1 => NULL,
1887 X_TokenName2 => NULL,
1888 X_TokenName3 => NULL,
1889 X_TokenName4 => NULL,
1890 X_TokenName5 => NULL,
1891 X_TokenName6 => NULL,
1892 X_TokenValue1 => NULL,
1893 X_TokenValue2 => NULL,
1894 X_TokenValue3 => NULL,
1895 X_TokenValue4 => NULL,
1896 X_TokenValue5 => NULL,
1897 X_TokenValue6 => NULL,
1898 X_header_processable_flag => x_header_processable_flag);
1899 END IF;
1900 -- <bug 3325447 end>
1901
1902 END IF; -- End of Purchase basis TEMP LABOR
1903
1904
1905 IF (p_order_type_lookup_code IN ('FIXED PRICE', 'RATE')) THEN
1906
1907 IF (x_item_id IS NOT NULL) THEN
1908 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1909 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1910 X_Error_type => 'FATAL',
1911 X_Batch_id => NULL,
1912 X_Interface_Header_Id => X_interface_header_id,
1913 X_Interface_Line_id => X_interface_line_id,
1914 X_Error_message_name => 'PO_PDOI_SVC_NO_ITEM',
1915 X_Table_name => 'PO_LINES_INTERFACE',
1916 X_Column_name => 'ITEM_ID',
1917 X_TokenName1 => NULL,
1918 X_TokenName2 => NULL,
1919 X_TokenName3 => NULL,
1920 X_TokenName4 => NULL,
1921 X_TokenName5 => NULL,
1922 X_TokenName6 => NULL,
1923 X_TokenValue1 => NULL,
1924 X_TokenValue2 => NULL,
1925 X_TokenValue3 => NULL,
1926 X_TokenValue4 => NULL,
1927 X_TokenValue5 => NULL,
1928 X_TokenValue6 => NULL,
1929 X_header_processable_flag => x_header_processable_flag);
1930
1931 END IF;
1932
1933 IF (X_item_revision is not null) THEN
1934 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1935 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1936 X_Error_type => 'FATAL',
1937 X_Batch_id => NULL,
1938 X_Interface_Header_Id => X_interface_header_id,
1939 X_Interface_Line_id => X_interface_line_id,
1940 X_Error_message_name => 'PO_PDOI_COLUMN_NULL',
1941 X_Table_name => 'PO_LINES_INTERFACE',
1942 X_Column_name => 'ITEM_REVISION',
1943 X_TokenName1 => 'COLUMN_NAME',
1944 X_TokenName2 => 'VALUE',
1945 X_TokenName3 => NULL,
1946 X_TokenName4 => NULL,
1947 X_TokenName5 => NULL,
1948 X_TokenName6 => NULL,
1949 X_TokenValue1 => 'ITEM_REVISION',
1950 X_TokenValue2 => X_item_revision,
1951 X_TokenValue3 => NULL,
1952 X_TokenValue4 => NULL,
1953 X_TokenValue5 => NULL,
1954 X_TokenValue6 => NULL,
1955 X_header_processable_flag => x_header_processable_flag);
1956 END IF;
1957
1958 IF (x_quantity IS NOT NULL) THEN
1959 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1960 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1961 X_Error_type => 'FATAL',
1962 X_Batch_id => NULL,
1963 X_Interface_Header_Id => X_interface_header_id,
1964 X_Interface_Line_id => X_interface_line_id,
1965 X_Error_message_name => 'PO_SVC_NO_QTY',
1966 X_Table_name => 'PO_LINES_INTERFACE',
1967 X_Column_name => 'QUANTITY',
1968 X_TokenName1 => NULL,
1969 X_TokenName2 => NULL,
1970 X_TokenName3 => NULL,
1971 X_TokenName4 => NULL,
1972 X_TokenName5 => NULL,
1973 X_TokenName6 => NULL,
1974 X_TokenValue1 => NULL,
1975 X_TokenValue2 => NULL,
1976 X_TokenValue3 => NULL,
1977 X_TokenValue4 => NULL,
1978 X_TokenValue5 => NULL,
1979 X_TokenValue6 => NULL,
1980 X_header_processable_flag => x_header_processable_flag);
1981 END IF;
1982
1983 IF ((p_amount IS NULL)
1984 AND (x_hd_type_lookup_code = 'STANDARD')) THEN
1985 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
1986 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
1987 X_Error_type => 'FATAL',
1988 X_Batch_id => NULL,
1989 X_Interface_Header_Id => X_interface_header_id,
1990 X_Interface_Line_id => X_interface_line_id,
1991 X_Error_message_name => 'PO_PDOI_SVC_MUST_AMT',
1992 X_Table_name => 'PO_LINES_INTERFACE',
1993 X_Column_name => 'AMOUNT',
1994 X_TokenName1 => NULL,
1995 X_TokenName2 => NULL,
1996 X_TokenName3 => NULL,
1997 X_TokenName4 => NULL,
1998 X_TokenName5 => NULL,
1999 X_TokenName6 => NULL,
2000 X_TokenValue1 => NULL,
2001 X_TokenValue2 => NULL,
2002 X_TokenValue3 => NULL,
2003 X_TokenValue4 => NULL,
2004 X_TokenValue5 => NULL,
2005 X_TokenValue6 => NULL,
2006 X_header_processable_flag => x_header_processable_flag);
2007 END IF;
2008
2009 IF (p_order_type_lookup_code = 'FIXED PRICE') THEN
2010
2011 -- <BUG 3248161 START> For 'Fixed Price/Services' line types,
2012 -- need to ensure that Oracle AP is on a sufficient family pack
2013 -- to handle the "amount"-based matching.
2014 --
2015 IF ( p_purchase_basis = 'SERVICES' ) THEN -- Fixed Price/Services
2016
2017 IF ( PO_SERVICES_PVT.get_ap_compatibility_flag = 'N' ) THEN
2018
2019 PO_INTERFACE_ERRORS_SV1.handle_interface_errors
2020 ( X_interface_type => 'PO_DOCS_OPEN_INTERFACE'
2021 , X_Error_type => 'FATAL'
2022 , X_Batch_id => NULL
2023 , X_Interface_Header_Id => X_interface_header_id
2024 , X_Interface_Line_id => X_interface_line_id
2025 , X_Error_message_name => 'PO_SVC_AP_NOT_COMPATIBLE'
2026 , X_Table_name => 'PO_LINES_INTERFACE'
2027 , X_Column_name => NULL
2028 , X_TokenName1 => NULL
2029 , X_TokenName2 => NULL
2030 , X_TokenName3 => NULL
2031 , X_TokenName4 => NULL
2032 , X_TokenName5 => NULL
2033 , X_TokenName6 => NULL
2034 , X_TokenValue1 => NULL
2035 , X_TokenValue2 => NULL
2036 , X_TokenValue3 => NULL
2037 , X_TokenValue4 => NULL
2038 , X_TokenValue5 => NULL
2039 , X_TokenValue6 => NULL
2040 , X_header_processable_flag => x_header_processable_flag
2041 );
2042 END IF;
2043
2044 END IF; -- Fixed Price/Services
2045 --
2046 -- <BUG 3248161 END>
2047
2048 IF (x_unit_price IS NOT NULL) THEN
2049 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
2050 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
2051 X_Error_type => 'FATAL',
2052 X_Batch_id => NULL,
2053 X_Interface_Header_Id => X_interface_header_id,
2054 X_Interface_Line_id => X_interface_line_id,
2055 X_Error_message_name => 'PO_PDOI_SVC_NO_PRICE',
2056 X_Table_name => 'PO_LINES_INTERFACE',
2057 X_Column_name => 'UNIT_PRICE',
2058 X_TokenName1 => NULL,
2059 X_TokenName2 => NULL,
2060 X_TokenName3 => NULL,
2061 X_TokenName4 => NULL,
2062 X_TokenName5 => NULL,
2063 X_TokenName6 => NULL,
2064 X_TokenValue1 => NULL,
2065 X_TokenValue2 => NULL,
2066 X_TokenValue3 => NULL,
2067 X_TokenValue4 => NULL,
2068 X_TokenValue5 => NULL,
2069 X_TokenValue6 => NULL,
2070 X_header_processable_flag => x_header_processable_flag);
2071 END IF;
2072
2073 IF (x_unit_meas_lookup_code IS NOT NULL) THEN
2074
2075 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
2076 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
2077 X_Error_type => 'FATAL',
2078 X_Batch_id => NULL,
2079 X_Interface_Header_Id => X_interface_header_id,
2080 X_Interface_Line_id => X_interface_line_id,
2081 X_Error_message_name => 'PO_PDOI_SVC_NO_UOM',
2082 X_Table_name => 'PO_LINES_INTERFACE',
2083 X_Column_name => 'UOM_CODE',
2084 X_TokenName1 => NULL,
2085 X_TokenName2 => NULL,
2086 X_TokenName3 => NULL,
2087 X_TokenName4 => NULL,
2088 X_TokenName5 => NULL,
2089 X_TokenName6 => NULL,
2090 X_TokenValue1 => NULL,
2091 X_TokenValue2 => NULL,
2092 X_TokenValue3 => NULL,
2093 X_TokenValue4 => NULL,
2094 X_TokenValue5 => NULL,
2095 X_TokenValue6 => NULL,
2096 X_header_processable_flag => x_header_processable_flag);
2097 END IF;
2098
2099 ELSE --p_order_type_lookup_code is 'RATE'
2100
2101 /* Bug 3307438 START-- For Rate Based Temp Labor Line, the Currency rate_type
2102 cannot be USER */
2103
2104 Begin
2105 select rate_type
2106 into l_rate_type
2107 from po_headers_all
2108 where po_header_id = X_po_header_id;
2109
2110 Exception
2111
2112 When others then
2113 l_rate_type := Null;
2114 End;
2115
2116 if (l_rate_type = 'User') then
2117 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
2118 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
2119 X_Error_type => 'FATAL',
2120 X_Batch_id => NULL,
2121 X_Interface_Header_Id => X_interface_header_id,
2122 X_Interface_Line_id => X_interface_line_id,
2123 X_Error_message_name => 'PO_PDOI_SVC_RATE_TYPE_NO_USR',
2124 X_Table_name => 'PO_LINES_INTERFACE',
2125 X_Column_name => 'Line Type',
2126 X_TokenName1 => NULL,
2127 X_TokenName2 => NULL,
2128 X_TokenName3 => NULL,
2129 X_TokenName4 => NULL,
2130 X_TokenName5 => NULL,
2131 X_TokenName6 => NULL,
2132 X_TokenValue1 => NULL,
2133 X_TokenValue2 => NULL,
2134 X_TokenValue3 => NULL,
2135 X_TokenValue4 => NULL,
2136 X_TokenValue5 => NULL,
2137 X_TokenValue6 => NULL,
2138 X_header_processable_flag => x_header_processable_flag);
2139 end if;
2140
2141 /* Bug 3307438 End */
2142
2143 IF (x_hd_type_lookup_code = 'BLANKET') THEN
2144 IF (p_amount IS NOT NULL) THEN
2145 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
2146 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
2147 X_Error_type => 'FATAL',
2148 X_Batch_id => NULL,
2149 X_Interface_Header_Id => X_interface_header_id,
2150 X_Interface_Line_id => X_interface_line_id,
2151 X_Error_message_name => 'PO_PDOI_SVC_BLKT_NO_AMT',
2152 X_Table_name => 'PO_LINES_INTERFACE',
2153 X_Column_name => 'AMOUNT',
2154 X_TokenName1 => NULL,
2155 X_TokenName2 => NULL,
2156 X_TokenName3 => NULL,
2157 X_TokenName4 => NULL,
2158 X_TokenName5 => NULL,
2159 X_TokenName6 => NULL,
2160 X_TokenValue1 => NULL,
2161 X_TokenValue2 => NULL,
2162 X_TokenValue3 => NULL,
2163 X_TokenValue4 => NULL,
2164 X_TokenValue5 => NULL,
2165 X_TokenValue6 => NULL,
2166 X_header_processable_flag => x_header_processable_flag);
2167 END IF;
2168 END IF;
2169
2170 IF (x_unit_meas_lookup_code IS NOT NULL) THEN
2171 --Validate UOM against the UOM class specified in profile
2172 SELECT count(*)
2173 INTO x_count
2174 FROM MTL_UNITS_OF_MEASURE_VL
2175 WHERE uom_class = p_service_uom_class
2176 AND unit_of_measure = x_unit_meas_lookup_code
2177 AND sysdate < NVL(disable_date, sysdate + 1);
2178
2179 IF x_count < 1 THEN
2180 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
2181 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
2182 X_Error_type => 'FATAL',
2183 X_Batch_id => NULL,
2184 X_Interface_Header_Id => X_interface_header_id,
2185 X_Interface_Line_id => X_interface_line_id,
2186 X_Error_message_name => 'PO_PDOI_SVC_INVALID_UOM',
2187 X_Table_name => 'PO_LINES_INTERFACE',
2188 X_Column_name => 'UOM_CODE',
2189 X_TokenName1 => NULL,
2190 X_TokenName2 => NULL,
2191 X_TokenName3 => NULL,
2192 X_TokenName4 => NULL,
2193 X_TokenName5 => NULL,
2194 X_TokenName6 => NULL,
2195 X_TokenValue1 => NULL,
2196 X_TokenValue2 => NULL,
2197 X_TokenValue3 => NULL,
2198 X_TokenValue4 => NULL,
2199 X_TokenValue5 => NULL,
2200 X_TokenValue6 => NULL,
2201 X_header_processable_flag => x_header_processable_flag);
2202 END IF;
2203 END IF; --IF (x_unit_meas_lookup_code IS NOT NULL)
2204
2205 END IF; --if p_order_type_lookup_code = 'FIXED PRICE'
2206
2207 ELSE --p_order_type_lookup_code NOT IN ('FIXED PRICE', 'RATE')
2208
2209 IF (p_amount IS NOT NULL) THEN
2210 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
2211 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
2212 X_Error_type => 'FATAL',
2213 X_Batch_id => NULL,
2214 X_Interface_Header_Id => X_interface_header_id,
2215 X_Interface_Line_id => X_interface_line_id,
2216 X_Error_message_name => 'PO_SVC_NO_AMT',
2217 X_Table_name => 'PO_LINES_INTERFACE',
2218 X_Column_name => 'AMOUNT',
2219 X_TokenName1 => NULL,
2220 X_TokenName2 => NULL,
2221 X_TokenName3 => NULL,
2222 X_TokenName4 => NULL,
2223 X_TokenName5 => NULL,
2224 X_TokenName6 => NULL,
2225 X_TokenValue1 => NULL,
2226 X_TokenValue2 => NULL,
2227 X_TokenValue3 => NULL,
2228 X_TokenValue4 => NULL,
2229 X_TokenValue5 => NULL,
2230 X_TokenValue6 => NULL,
2231 X_header_processable_flag => x_header_processable_flag);
2232 END IF;
2233
2234 END IF; -- For Order_type_lookup in FIXED PRICE , RATE
2235
2236 --<SERVICES FPJ END>
2237
2238
2239 --for all lookup types
2240 x_progress := '160';
2241 /* make sure that these fields are being populated */
2242 IF (x_line_num is null) THEN
2243 po_interface_errors_sv1.handle_interface_errors(
2244 'PO_DOCS_OPEN_INTERFACE',
2245 'FATAL',
2246 null,
2247 x_interface_header_id,
2248 x_interface_line_id,
2249 'PO_PDOI_COLUMN_NOT_NULL',
2250 'PO_LINES_INTERFACE',
2251 'LINE_NUM',
2252 'COLUMN_NAME',
2253 null,null,null,null,null,
2254 'LINE_NUM',
2255 null,null,null,null,null,
2256 x_header_processable_flag);
2257 END IF;
2258
2259 X_progress := '163';
2260 IF (X_po_header_id IS NULL) THEN
2261 po_interface_errors_sv1.handle_interface_errors(
2262 'PO_DOCS_OPEN_INTERFACE',
2263 'FATAL',
2264 null,
2265 x_interface_header_id,
2266 x_interface_line_id,
2267 'PO_PDOI_COLUMN_NOT_NULL',
2268 'PO_LINES_INTERFACE',
2269 'PO_LINE_ID',
2270 'COLUMN_NAME',
2271 null,null,null,null,null,
2272 'PO_LINE_ID',
2273 null,null,null,null,null,
2274 x_header_processable_flag);
2275 END IF;
2276
2277
2278 X_progress := '165';
2279 IF (X_po_line_id IS NULL) THEN
2280 po_interface_errors_sv1.handle_interface_errors(
2281 'PO_DOCS_OPEN_INTERFACE',
2282 'FATAL',
2283 null,
2284 x_interface_header_id,
2285 x_interface_line_id,
2286 'PO_PDOI_COLUMN_NOT_NULL',
2287 'PO_LINES_INTERFACE',
2288 'PO_HEADER_ID',
2289 'COLUMN_NAME',
2290 null,null,null,null,null,
2291 'PO_HEADER_ID',
2292 null,null,null,null,null,
2293 x_header_processable_flag);
2294 END IF;
2295
2296 x_progress := '170';
2297 IF (x_line_type_id is null) THEN
2298 po_interface_errors_sv1.handle_interface_errors(
2299 'PO_DOCS_OPEN_INTERFACE',
2300 'FATAL',
2301 null,
2302 x_interface_header_id,
2303 x_interface_line_id,
2304 'PO_PDOI_COLUMN_NOT_NULL',
2305 'PO_LINES_INTERFACE',
2306 'LINE_TYPE_ID',
2307 'COLUMN_NAME',
2308 null,null,null,null,null,
2309 'LINE_TYPE_ID',
2310 null,null,null,null,null,
2311 x_header_processable_flag);
2312 END IF;
2313
2314 x_progress := '180';
2315 IF (x_category_id is null) THEN
2316 po_interface_errors_sv1.handle_interface_errors(
2317 'PO_DOCS_OPEN_INTERFACE',
2318 'FATAL',
2319 null,
2320 x_interface_header_id,
2321 x_interface_line_id,
2322 'PO_PDOI_COLUMN_NOT_NULL',
2323 'PO_LINES_INTERFACE',
2324 'CATEGORY_ID',
2325 'COLUMN_NAME',
2326 null,null,null,null,null,
2327 'CATEGORY_ID',
2328 null,null,null,null,null,
2329 x_header_processable_flag);
2330 END IF;
2331
2332 x_progress := '190';
2333 IF (x_item_description is null) THEN
2334 po_interface_errors_sv1.handle_interface_errors(
2335 'PO_DOCS_OPEN_INTERFACE',
2336 'FATAL',
2337 null,
2338 x_interface_header_id,
2339 x_interface_line_id,
2340 'PO_PDOI_COLUMN_NOT_NULL',
2341 'PO_LINES_INTERFACE',
2342 'ITEM_DESCRIPTION',
2343 'COLUMN_NAME',
2344 null,null,null,null,null,
2345 'ITEM_DESCRIPTION',
2346 null,null,null,null,null,
2347 x_header_processable_flag);
2348 END IF;
2349
2350 x_progress := '195';
2351 IF ((x_unit_meas_lookup_code IS NULL)
2352 AND (p_order_type_lookup_code <> 'FIXED PRICE')) THEN --<SERVICES FPJ>
2353 po_interface_errors_sv1.handle_interface_errors(
2354 'PO_DOCS_OPEN_INTERFACE',
2355 'FATAL',
2356 null,
2357 x_interface_header_id,
2358 x_interface_line_id,
2359 'PO_PDOI_COLUMN_NOT_NULL',
2360 'PO_LINES_INTERFACE',
2361 'UNIT_OF_MEASURE',
2362 'COLUMN_NAME',
2363 null,null,null,null,null,
2364 'UNIT_OF_MEASURE',
2365 null,null,null,null,null,
2366 x_header_processable_flag);
2367 END IF;
2368
2369 x_progress := '200';
2370 IF ((x_unit_price IS NULL)
2371 AND (p_order_type_lookup_code <> 'FIXED PRICE')) THEN --<SERVICES FPJ>
2372 po_interface_errors_sv1.handle_interface_errors(
2373 'PO_DOCS_OPEN_INTERFACE',
2374 'FATAL',
2375 null,
2376 x_interface_header_id,
2377 x_interface_line_id,
2378 'PO_PDOI_COLUMN_NOT_NULL',
2379 'PO_LINES_INTERFACE',
2380 'UNIT_PRICE',
2381 'COLUMN_NAME',
2382 null,null,null,null,null,
2383 'UNIT_PRICE',
2384 null,null,null,null,null,
2385 x_header_processable_flag);
2386 END IF;
2387 --bug 1341322
2388 x_progress := '205';
2389 IF ((x_unit_price < 0)
2390 AND (p_order_type_lookup_code <> 'FIXED PRICE')) THEN --<SERVICES FPJ>
2391 po_interface_errors_sv1.handle_interface_errors(
2392 'PO_DOCS_OPEN_INTERFACE',
2393 'FATAL',
2394 null,
2395 x_interface_header_id,
2396 x_interface_line_id,
2397 'PO_PDOI_LT_ZERO',
2398 'PO_LINES_INTERFACE',
2399 'UNIT_PRICE',
2400 'COLUMN_NAME',
2401 'VALUE',null,null,null,null,
2402 'UNIT_PRICE',
2403 x_unit_price,null,null,null,null,
2404 x_header_processable_flag);
2405 END IF;
2406 x_progress := '210';
2407 IF (x_release_num is not null) THEN
2408 po_interface_errors_sv1.handle_interface_errors(
2409 'PO_DOCS_OPEN_INTERFACE',
2410 'FATAL',
2411 null,
2412 x_interface_header_id,
2413 x_interface_line_id,
2414 'PO_PDOI_COLUMN_NULL',
2415 'PO_LINES_INTERFACE',
2416 'RELEASE_NUM',
2417 'COLUMN_NAME',
2418 'VALUE',
2419 null,null,null,null,
2420 'RELEASE_NUM',
2421 x_release_num,
2422 null,null,null,null,
2423 x_header_processable_flag);
2424 END IF;
2425
2426 x_progress := '220';
2427 IF (x_po_release_id is not null) THEN
2428 po_interface_errors_sv1.handle_interface_errors(
2429 'PO_DOCS_OPEN_INTERFACE',
2430 'FATAL',
2431 null,
2432 x_interface_header_id,
2433 x_interface_line_id,
2434 'PO_PDOI_COLUMN_NULL',
2435 'PO_LINES_INTERFACE',
2436 'PO_RELEASE_ID',
2437 'COLUMN_NAME',
2438 'VALUE',
2439 null,null,null,null,
2440 'PO_RELEASE_ID',
2441 x_po_release_id,
2442 null,null,null,null,
2443 x_header_processable_flag);
2444 END IF;
2445
2446 x_progress := '230';
2447 IF (x_source_shipment_id is not null) THEN
2448 po_interface_errors_sv1.handle_interface_errors(
2449 'PO_DOCS_OPEN_INTERFACE',
2450 'FATAL',
2451 null,
2452 x_interface_header_id,
2453 x_interface_line_id,
2454 'PO_PDOI_COLUMN_NULL',
2455 'PO_LINES_INTERFACE',
2456 'SOURCE_SHIPMENT_ID',
2457 'COLUMN_NAME',
2458 'VALUE',
2459 null,null,null,null,
2460 'SOURCE_SHIPMENT_ID',
2461 x_source_shipment_id,
2462 null,null,null,null,
2463 x_header_processable_flag);
2464 END IF;
2465
2466 x_progress := '240';
2467 IF (x_contract_num is not null) THEN
2468 po_interface_errors_sv1.handle_interface_errors(
2469 'PO_DOCS_OPEN_INTERFACE',
2470 'FATAL',
2471 null,
2472 x_interface_header_id,
2473 x_interface_line_id,
2474 'PO_PDOI_COLUMN_NULL',
2475 'PO_LINES_INTERFACE',
2476 'CONTRACT_NUM',
2477 'COLUMN_NAME',
2478 'VALUE',
2479 null,null,null,null,
2480 'CONTRACT_NUM',
2481 x_contract_num,
2482 null,null,null,null,
2483 x_header_processable_flag);
2484 END IF;
2485
2486 -- <GC FPJ START>
2487 -- PDOI does not support importing contract reference info
2488
2489 x_progress := '245';
2490 IF (p_contract_id IS NOT NULL) THEN
2491 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
2492 'PO_DOCS_OPEN_INTERFACE',
2493 'FATAL',
2494 null,
2495 x_interface_header_id,
2496 x_interface_line_id,
2497 'PO_PDOI_COLUMN_NULL',
2498 'PO_LINES_INTERFACE',
2499 'CONTRACT_ID',
2500 'COLUMN_NAME',
2501 'VALUE',
2502 null,null,null,null,
2503 'CONTRACT_ID',
2504 p_contract_id,
2505 null,null,null,null,
2506 x_header_processable_flag);
2507 END IF;
2508
2509 -- <GC FPJ END>
2510
2511 x_progress := '250';
2512 IF (x_type_1099 is not null) THEN
2513 po_interface_errors_sv1.handle_interface_errors(
2514 'PO_DOCS_OPEN_INTERFACE',
2515 'FATAL',
2516 null,
2517 x_interface_header_id,
2518 x_interface_line_id,
2519 'PO_PDOI_COLUMN_NULL',
2520 'PO_LINES_INTERFACE',
2521 'TYPE_1099',
2522 'COLUMN_NAME',
2523 'VALUE',
2524 null,null,null,null,
2525 'TYPE_1099',
2526 x_type_1099,
2527 null,null,null,null,
2528 x_header_processable_flag);
2529 END IF;
2530
2531 x_progress := '270';
2532 --frkhan not for standards
2533 IF (x_hd_type_lookup_code in ('QUOTATION', 'BLANKET')) THEN
2534
2535 IF (x_receipt_days_exception_code is not null) AND
2536 (x_create_or_update_item_flag <> 'Y')
2537 THEN
2538 po_interface_errors_sv1.handle_interface_errors(
2539 'PO_DOCS_OPEN_INTERFACE',
2540 'FATAL',
2541 null,
2542 x_interface_header_id,
2543 x_interface_line_id,
2544 'PO_PDOI_COLUMN_NULL',
2545 'PO_LINES_INTERFACE',
2546 'RECEIPT_DAYS_EXCEPTION_CODE',
2547 'COLUMN_NAME',
2548 'VALUE',
2549 null,null,null,null,
2550 'RECEIPT_DAYS_EXCEPTION_CODE',
2551 x_receipt_days_exception_code,
2552 null,null,null,null,
2553 x_header_processable_flag);
2554 END IF;
2555
2556 x_progress := '280';
2557 IF (x_need_by_date is not null) THEN -- Bug 3320741
2558
2559 po_interface_errors_sv1.handle_interface_errors(
2560 'PO_DOCS_OPEN_INTERFACE',
2561 'FATAL',
2562 null,
2563 x_interface_header_id,
2564 x_interface_line_id,
2565 'PO_PDOI_COLUMN_NULL',
2566 'PO_LINES_INTERFACE',
2567 'NEED_BY_DATE',
2568 'COLUMN_NAME',
2569 'VALUE',
2570 null,null,null,null,
2571 'NEED_BY_DATE',
2572 x_need_by_date,
2573 null,null,null,null,
2574 x_header_processable_flag);
2575 END IF;
2576
2577 x_progress := '290';
2578 IF (x_promised_date is not null) THEN -- Bug 3320741
2579
2580 po_interface_errors_sv1.handle_interface_errors(
2581 'PO_DOCS_OPEN_INTERFACE',
2582 'FATAL',
2583 null,
2584 x_interface_header_id,
2585 x_interface_line_id,
2586 'PO_PDOI_COLUMN_NULL',
2587 'PO_LINES_INTERFACE',
2588 'PROMISED_DATE',
2589 'COLUMN_NAME',
2590 'VALUE',
2591 null,null,null,null,
2592 'PROMISED_DATE',
2593 x_promised_date,
2594 null,null,null,null,
2595 x_header_processable_flag);
2596 END IF;
2597
2598 x_progress := '360';
2599 IF (x_invoice_close_tolerance is not null) AND
2600 (x_create_or_update_item_flag <> 'Y')
2601 THEN
2602 po_interface_errors_sv1.handle_interface_errors(
2603 'PO_DOCS_OPEN_INTERFACE',
2604 'FATAL',
2605 null,
2606 x_interface_header_id,
2607 x_interface_line_id,
2608 'PO_PDOI_COLUMN_NULL',
2609 'PO_LINES_INTERFACE',
2610 'INVOICE_CLOSE_TOLERANCE',
2611 'COLUMN_NAME',
2612 'VALUE',
2613 null,null,null,null,
2614 'INVOICE_CLOSE_TOLERANCE',
2615 x_invoice_close_tolerance,
2616 null,null,null,null,
2617 x_header_processable_flag);
2618 END IF;
2619
2620 x_progress := '370';
2621 IF (x_receive_close_tolerance is not null) AND
2622 (x_create_or_update_item_flag <> 'Y')
2623 THEN
2624 po_interface_errors_sv1.handle_interface_errors(
2625 'PO_DOCS_OPEN_INTERFACE',
2626 'FATAL',
2627 null,
2628 x_interface_header_id,
2629 x_interface_line_id,
2630 'PO_PDOI_COLUMN_NULL',
2631 'PO_LINES_INTERFACE',
2632 'RECEIVE_CLOSE_TOLERANCE',
2633 'COLUMN_NAME',
2634 'VALUE',
2635 null,null,null,null,
2636 'RECEIVE_CLOSE_TOLERANCE',
2637 x_receive_close_tolerance,
2638 null,null,null,null,
2639 x_header_processable_flag);
2640 END IF;
2641
2642 x_progress := '390';
2643 IF (x_days_early_receipt_allowed is not null) AND
2644 (x_create_or_update_item_flag <> 'Y')
2645 THEN
2646 po_interface_errors_sv1.handle_interface_errors(
2647 'PO_DOCS_OPEN_INTERFACE',
2648 'FATAL',
2649 null,
2650 x_interface_header_id,
2651 x_interface_line_id,
2652 'PO_PDOI_COLUMN_NULL',
2653 'PO_LINES_INTERFACE',
2654 'DAYS_EARLY_RECEIPT_ALLOWED',
2655 'COLUMN_NAME',
2656 'VALUE',
2657 null,null,null,null,
2658 'DAYS_EARLY_RECEIPT_ALLOWED',
2659 x_days_early_receipt_allowed,
2660 null,null,null,null,
2661 x_header_processable_flag);
2662 END IF;
2663
2664 x_progress := '400';
2665 IF (x_days_late_receipt_allowed is not null) AND
2666 (x_create_or_update_item_flag <> 'Y')
2667 THEN
2668 po_interface_errors_sv1.handle_interface_errors(
2669 'PO_DOCS_OPEN_INTERFACE',
2670 'FATAL',
2671 null,
2672 x_interface_header_id,
2673 x_interface_line_id,
2674 'PO_PDOI_COLUMN_NULL',
2675 'PO_LINES_INTERFACE',
2676 'DAYS_LATE_RECEIPT_ALLOWED',
2677 'COLUMN_NAME',
2678 'VALUE',
2679 null,null,null,null,
2680 'DAYS_LATE_RECEIPT_ALLOWED',
2681 x_days_late_receipt_allowed,
2682 null,null,null,null,
2683 x_header_processable_flag);
2684 END IF;
2685
2686 x_progress := '410';
2687 IF (x_enforce_ship_to_loc_code is not null) AND
2688 (x_create_or_update_item_flag <> 'Y')
2689 THEN
2690 po_interface_errors_sv1.handle_interface_errors(
2691 'PO_DOCS_OPEN_INTERFACE',
2692 'FATAL',
2693 null,
2694 x_interface_header_id,
2695 x_interface_line_id,
2696 'PO_PDOI_COLUMN_NULL',
2697 'PO_LINES_INTERFACE',
2698 'ENFORCE_SHIP_TO_LOCATION_CODE',
2699 'COLUMN_NAME',
2700 'VALUE',
2701 null,null,null,null,
2702 'ENFORCE_SHIP_TO_LOCATION_CODE',
2703 x_enforce_ship_to_loc_code,
2704 null,null,null,null,
2705 x_header_processable_flag);
2706 END IF;
2707
2708 x_progress := '420';
2709 IF (x_allow_sub_receipts_flag is not null) AND
2710 (x_create_or_update_item_flag <> 'Y')
2711 THEN
2712 po_interface_errors_sv1.handle_interface_errors(
2713 'PO_DOCS_OPEN_INTERFACE',
2714 'FATAL',
2715 null,
2716 x_interface_header_id,
2717 x_interface_line_id,
2718 'PO_PDOI_COLUMN_NULL',
2719 'PO_LINES_INTERFACE',
2720 'ALLOW_SUBSTITUTE_RECEIPTS_FLAG',
2721 'COLUMN_NAME',
2722 'VALUE',
2723 null,null,null,null,
2724 'ALLOW_SUBSTITUTE_RECEIPTS_FLAG',
2725 x_allow_sub_receipts_flag,
2726 null,null,null,null,
2727 x_header_processable_flag);
2728 END IF;
2729
2730 x_progress := '430';
2731 IF (x_receiving_routing is not null) AND
2732 (x_create_or_update_item_flag <> 'Y')
2733 THEN
2734 po_interface_errors_sv1.handle_interface_errors(
2735 'PO_DOCS_OPEN_INTERFACE',
2736 'FATAL',
2737 null,
2738 x_interface_header_id,
2739 x_interface_line_id,
2740 'PO_PDOI_COLUMN_NULL',
2741 'PO_LINES_INTERFACE',
2742 'RECEIVING_ROUTING',
2743 'COLUMN_NAME',
2744 'VALUE',
2745 null,null,null,null,
2746 'RECEIVING_ROUTING',
2747 x_receiving_routing,
2748 null,null,null,null,
2749 x_header_processable_flag);
2750 END IF;
2751
2752 END IF; --lookup in blanket, quote
2753 -- BUG 588911
2754 -- Remove the check to see if lead time is NULL
2755 /*
2756 x_progress := '300';
2757 IF (x_lead_time is not null) THEN
2758 po_interface_errors_sv1.handle_interface_errors(
2759 'PO_DOCS_OPEN_INTERFACE',
2760 'FATAL',
2761 null,
2762 x_interface_header_id,
2763 x_interface_line_id,
2764 'PO_PDOI_COLUMN_NULL',
2765 'PO_LINES_INTERFACE',
2766 'LEAD_TIME',
2767 'COLUMN_NAME',
2768 'VALUE',
2769 null,null,null,null,
2770 'LEAD_TIME',
2771 x_lead_time,
2772 null,null,null,null,
2773 x_header_processable_flag);
2774 END IF;
2775 */
2776 x_progress := '310';
2777
2778 x_progress := '330';
2779 IF (x_closed_reason is not null) THEN
2780 po_interface_errors_sv1.handle_interface_errors(
2781 'PO_DOCS_OPEN_INTERFACE',
2782 'FATAL',
2783 null,
2784 x_interface_header_id,
2785 x_interface_line_id,
2786 'PO_PDOI_COLUMN_NULL',
2787 'PO_LINES_INTERFACE',
2788 'CLOSED_REASON',
2789 'COLUMN_NAME',
2790 'VALUE',
2791 null,null,null,null,
2792 'CLOSED_REASON',
2793 x_closed_reason,
2794 null,null,null,null,
2795 x_header_processable_flag);
2796 END IF;
2797
2798 x_progress := '340';
2799 IF (x_closed_date is not null) THEN
2800 po_interface_errors_sv1.handle_interface_errors(
2801 'PO_DOCS_OPEN_INTERFACE',
2802 'FATAL',
2803 null,
2804 x_interface_header_id,
2805 x_interface_line_id,
2806 'PO_PDOI_COLUMN_NULL',
2807 'PO_LINES_INTERFACE',
2808 'CLOSED_DATE',
2809 'COLUMN_NAME',
2810 'VALUE',
2811 null,null,null,null,
2812 'CLOSED_DATE',
2813 x_closed_date,
2814 null,null,null,null,
2815 x_header_processable_flag);
2816 END IF;
2817
2818 x_progress := '350';
2819 IF (x_closed_by is not null) THEN
2820 po_interface_errors_sv1.handle_interface_errors(
2821 'PO_DOCS_OPEN_INTERFACE',
2822 'FATAL',
2823 null,
2824 x_interface_header_id,
2825 x_interface_line_id,
2826 'PO_PDOI_COLUMN_NULL',
2827 'PO_LINES_INTERFACE',
2828 'CLOSED_BY',
2829 'COLUMN_NAME',
2830 'VALUE',
2831 null,null,null,null,
2832 'CLOSED_BY',
2833 x_closed_by,
2834 null,null,null,null,
2835 x_header_processable_flag);
2836 END IF;
2837
2838
2839 x_progress := '380';
2840 IF (x_firm_flag is not null) THEN
2841 po_interface_errors_sv1.handle_interface_errors(
2842 'PO_DOCS_OPEN_INTERFACE',
2843 'FATAL',
2844 null,
2845 x_interface_header_id,
2846 x_interface_line_id,
2847 'PO_PDOI_COLUMN_NULL',
2848 'PO_LINES_INTERFACE',
2849 'FIRM_FLAG',
2850 'COLUMN_NAME',
2851 'VALUE',
2852 null,null,null,null,
2853 'FIRM_FLAG',
2854 x_firm_flag,
2855 null,null,null,null,
2856 x_header_processable_flag);
2857 END IF;
2858
2859 X_progress := '445';
2860 /* validate item related attibutes with line_type */
2861 IF (X_line_type_id is not NULL) THEN
2862 po_lines_sv7.validate_item_with_line_type(
2863 X_interface_header_id,
2864 X_interface_line_id,
2865 X_line_type_id,
2866 X_category_id,
2867 X_unit_meas_lookup_code,
2868 X_unit_price,
2869 X_item_id,
2870 X_item_description,
2871 X_item_revision,
2872 X_def_inv_org_id,
2873 X_create_or_update_item_flag,
2874 X_header_processable_flag,
2875 X_global_agreement_flag, -- FPI GA
2876 x_hd_type_lookup_code); -- Bug 3362369
2877
2878 END IF;
2879
2880 x_progress := '450';
2881 IF ((x_quantity < 0) AND (x_quantity is not null)
2882 AND (p_order_type_lookup_code NOT IN ('RATE', 'FIXED PRICE'))) THEN --<SERVICES FPJ>
2883 po_interface_errors_sv1.handle_interface_errors(
2884 'PO_DOCS_OPEN_INTERFACE',
2885 'FATAL',
2886 null,
2887 x_interface_header_id,
2888 x_interface_line_id,
2889 'PO_PDOI_LT_ZERO',
2890 'PO_LINES_INTERFACE',
2891 'QUANTITY',
2892 'COLUMN_NAME',
2893 'VALUE',
2894 null,null,null,null,
2895 'QUANTITY',
2896 x_quantity,
2897 null,null,null,null,
2898 x_header_processable_flag);
2899 END IF;
2900
2901 /* check to see if the line num is unique */
2902 x_progress := '460';
2903 IF (x_line_num is not null) AND (x_po_header_id is not null) THEN
2904 x_valid := po_lines_sv1.val_line_num_uniqueness(x_line_num,
2905 null,
2906 x_po_header_id);
2907 IF (x_valid = FALSE) THEN
2908 po_interface_errors_sv1.handle_interface_errors(
2909 'PO_DOCS_OPEN_INTERFACE',
2910 'FATAL',
2911 null,
2912 x_interface_header_id,
2913 x_interface_line_id,
2914 'PO_PDOI_LINE_NUM_UNIQUE',
2915 'PO_LINES_INTERFACE',
2916 'LINE_NUM',
2917 'VALUE',
2918 null,null,null,null,null,
2919 x_line_num,
2920 null,null,null,null,null,
2921 x_header_processable_flag);
2922 END IF;
2923
2924 x_progress := '470';
2925 IF (x_line_num <= 0) THEN
2926 po_interface_errors_sv1.handle_interface_errors(
2927 'PO_DOCS_OPEN_INTERFACE',
2928 'FATAL',
2929 null,
2930 x_interface_header_id,
2931 x_interface_line_id,
2932 'PO_PDOI_LT_ZERO',
2933 'PO_LINES_INTERFACE',
2934 'LINE_NUM',
2935 'COLUMN_NAME',
2936 'VALUE',
2937 null,null,null,null,
2938 'LINE_NUM',
2939 x_line_num,
2940 null,null,null,null,
2941 x_header_processable_flag);
2942 END IF;
2943 END IF; /* x_line_num is not null */
2944
2945 x_progress := '480';
2946 IF (x_po_line_id is not null) AND (x_po_header_id is not null) THEN
2947 x_valid := po_lines_sv1.val_line_id_uniqueness(x_po_line_id,
2948 null,
2949 x_po_header_id);
2950 IF (x_valid = FALSE) THEN
2951 po_interface_errors_sv1.handle_interface_errors(
2952 'PO_DOCS_OPEN_INTERFACE',
2953 'FATAL',
2954 null,
2955 x_interface_header_id,
2956 x_interface_line_id,
2957 'PO_PDOI_LINE_ID_UNIQUE',
2958 'PO_LINES_INTERFACE',
2959 'PO_LINE_ID',
2960 'VALUE',
2961 null,null,null,null,null,
2962 x_po_line_id,
2963 null,null,null,null,null,
2964 x_header_processable_flag);
2965 END IF;
2966 END IF;
2967
2968 x_progress := '490';
2969 IF (x_line_type_id is not null) THEN
2970 x_valid := po_line_types_sv1.val_line_type_id(x_line_type_id);
2971 IF (x_valid = FALSE) THEN
2972 po_interface_errors_sv1.handle_interface_errors(
2973 'PO_DOCS_OPEN_INTERFACE',
2974 'FATAL',
2975 null,
2976 x_interface_header_id,
2977 x_interface_line_id,
2978 'PO_PDOI_INVALID_LINE_TYPE_ID',
2979 'PO_LINES_INTERFACE',
2980 'LINE_TYPE_ID',
2981 'VALUE',
2982 null,null,null,null,null,
2983 x_line_type_id,
2984 null,null,null,null,null,
2985 x_header_processable_flag);
2986 END IF;
2987 END IF;
2988
2989 --frkhan add standard
2990 IF (x_hd_type_lookup_code in ('BLANKET','STANDARD')) THEN
2991 x_progress := '550';
2992 IF (x_committed_amount < 0) AND (x_committed_amount is not null) THEN
2993 po_interface_errors_sv1.handle_interface_errors(
2994 'PO_DOCS_OPEN_INTERFACE',
2995 'FATAL',
2996 null,
2997 x_interface_header_id,
2998 x_interface_line_id,
2999 'PO_PDOI_LT_ZERO',
3000 'PO_LINES_INTERFACE',
3001 'COMMITTED_AMOUNT',
3002 'COLUMN_NAME',
3003 'VALUE',
3004 null,null,null,null,
3005 'COMMITTED_AMOUNT',
3006 x_committed_amount,
3007 null,null,null,null,
3008 x_header_processable_flag);
3009 END IF;
3010
3011 x_progress := '560';
3012 IF (x_market_price < 0) AND (x_market_price is not null) THEN
3013 po_interface_errors_sv1.handle_interface_errors(
3014 'PO_DOCS_OPEN_INTERFACE',
3015 'FATAL',
3016 null,
3017 x_interface_header_id,
3018 x_interface_line_id,
3019 'PO_PDOI_LT_ZERO',
3020 'PO_LINES_INTERFACE',
3021 'MARKET_PRICE',
3022 'COLUMN_NAME',
3023 'VALUE',
3024 null,null,null,null,
3025 'MARKET_PRICE',
3026 x_market_price,
3027 null,null,null,null,
3028 x_header_processable_flag);
3029 END IF;
3030
3031 x_progress := '570';
3032 IF (x_negotiated_by_preparer_flag is not null) THEN
3033 x_valid := po_core_sv1.val_flag_value(
3034 x_negotiated_by_preparer_flag);
3035 IF (x_valid = FALSE) THEN
3036 po_interface_errors_sv1.handle_interface_errors(
3037 'PO_DOCS_OPEN_INTERFACE',
3038 'FATAL',
3039 null,
3040 x_interface_header_id,
3041 x_interface_line_id,
3042 'PO_PDOI_INVALID_FLAG_VALUE',
3043 'PO_LINES_INTERFACE',
3044 'NEGOTIATED_BY_PREPARER_FLAG',
3045 'COLUMN_NAME',
3046 'VALUE',
3047 null,null,null,null,
3048 'NEGOTIATED_BY_PREPARER_FLAG',
3049 x_negotiated_by_preparer_flag,
3050 null,null,null,null,
3051 x_header_processable_flag);
3052 END IF;
3053 END IF;
3054
3055 x_progress := '580';
3056 IF (x_capital_expense_flag is not null) THEN
3057 x_valid := po_core_sv1.val_flag_value(x_capital_expense_flag);
3058 IF (x_valid = FALSE) THEN
3059 po_interface_errors_sv1.handle_interface_errors(
3060 'PO_DOCS_OPEN_INTERFACE',
3061 'FATAL',
3062 null,
3063 x_interface_header_id,
3064 x_interface_line_id,
3065 'PO_PDOI_INVALID_FLAG_VALUE',
3066 'PO_LINES_INTERFACE',
3067 'CAPITAL_EXPENSE_FLAG',
3068 'COLUMN_NAME',
3069 'VALUE',
3070 null,null,null,null,
3071 'CAPITAL_EXPENSE_FLAG',
3072 x_capital_expense_flag,
3073 null,null,null,null,
3074 x_header_processable_flag);
3075 END IF;
3076 END IF;
3077
3078 X_progress := '600';
3079 IF (x_allow_price_override_flag = 'N') THEN
3080 IF (x_not_to_exceed_price IS NOT NULL) THEN
3081 po_interface_errors_sv1.handle_interface_errors(
3082 'PO_DOCS_OPEN_INTERFACE',
3083 'FATAL',
3084 null,
3085 x_interface_header_id,
3086 x_interface_line_id,
3087 'PO_PDOI_EXCEED_PRICE_NULL',
3088 'PO_LINES_INTERFACE',
3089 'NOT_TO_EXCEED_PRICE',
3090 'VALUE',
3091 null,null,null,null,null,
3092 x_not_to_exceed_price,
3093 null,null,null,null,null,
3094 x_header_processable_flag);
3095 END IF;
3096 END IF;
3097
3098 X_progress := '610';
3099 IF (x_not_to_exceed_price IS NOT NULL) THEN
3100 IF (x_not_to_exceed_price < x_unit_price) THEN
3101 po_interface_errors_sv1.handle_interface_errors(
3102 'PO_DOCS_OPEN_INTERFACE',
3103 'FATAL',
3104 null,
3105 x_interface_header_id,
3106 x_interface_line_id,
3107 'PO_PDOI_INVALID_PRICE',
3108 'PO_LINES_INTERFACE',
3109 'NOT_TO_EXCEED_PRICE',
3110 'VALUE',
3111 'UNIT_PRICE',
3112 null,null,null,null,
3113 x_not_to_exceed_price,
3114 x_unit_price,
3115 null,null,null,null,
3116 x_header_processable_flag);
3117 END IF;
3118 END IF;
3119 END IF; --blanket,standard
3120 --FRKHAN
3121 IF (x_hd_type_lookup_code = 'STANDARD') THEN
3122 x_progress := '620';
3123 IF (x_quantity = 0) AND (x_quantity is not null) THEN
3124 po_interface_errors_sv1.handle_interface_errors(
3125 'PO_DOCS_OPEN_INTERFACE',
3126 'FATAL',
3127 null,
3128 x_interface_header_id,
3129 x_interface_line_id,
3130 'PO_PDOI_ZERO_QTY',
3131 'PO_LINES_INTERFACE',
3132 'QUANTITY',
3133 null,null,null,null,null,null,
3134 null,null,null,null,null,null,
3135 x_header_processable_flag);
3136 END IF;
3137
3138 /* Bug# 1934962
3139 Removed the validation on need_by_date and promised_date to make
3140 it consistent with the Enter PO form */
3141
3142 /*
3143 x_progress := '630';
3144 IF (x_need_by_date < trunc(sysdate)) AND (x_need_by_date is not null) THEN
3145 po_interface_errors_sv1.handle_interface_errors(
3146 'PO_DOCS_OPEN_INTERFACE',
3147 'FATAL',
3148 null,
3149 x_interface_header_id,
3150 x_interface_line_id,
3151 'PO_PDOI_NEED_BY_DATE',
3152 'PO_LINES_INTERFACE',
3153 'NEED_BY_DATE',
3154 'NEED_BY_DATE',
3155 null,null,null,null,null,
3156 x_Need_by_date,
3157 null,null,null,null,null,
3158 x_header_processable_flag);
3159 END IF;
3160
3161 x_progress := '630';
3162 IF (x_promised_date < trunc(sysdate)) AND (x_promised_date is not null) THEN
3163 po_interface_errors_sv1.handle_interface_errors(
3164 'PO_DOCS_OPEN_INTERFACE',
3165 'FATAL',
3166 null,
3167 x_interface_header_id,
3168 x_interface_line_id,
3169 'PO_PDOI_PROMISED_DATE',
3170 'PO_LINES_INTERFACE',
3171 'PROMISED_DATE',
3172 'PROMISED_DATE',
3173 null,null,null,null,null,
3174 x_promised_date,
3175 null,null,null,null,null,
3176 x_header_processable_flag);
3177 END IF;
3178 */
3179
3180 END IF; --standard
3181
3182 /*** The following are validation rules for both blanket and quote ***/
3183 X_progress := '615';
3184
3185 --Bug 1881762:Changing the '<>' to 'is not' in the following IF condiditon
3186
3187 if (NVL(x_taxable_flag, 'NULL') = 'N' and x_tax_name is not null and
3188 x_tax_code_id is not null) then
3189
3190 po_interface_errors_sv1.handle_interface_errors(
3191 'PO_DOCS_OPEN_INTERFACE',
3192 'FATAL',
3193 null,
3194 x_interface_header_id,
3195 x_interface_line_id,
3196 'PO_PDOI_INVALID_TAXABLE_FLAG',
3197 'PO_LINES_INTERFACE',
3198 'TAXABLE_FLAG',
3199 'VALUE',
3200 null,null,null,null,null,
3201 x_taxable_flag,
3202 null,null,null,null,null,
3203 x_header_processable_flag);
3204 end if;
3205
3206 -- IF (x_tax_name is not null or x_tax_code_id is not null) THEN
3207 -- x_valid := po_ap_tax_codes_sv.val_tax_name(x_tax_name);
3208 -- IF (x_valid = FALSE) THEN
3209
3210 if (x_tax_name is not null and x_tax_code_id is null) then
3211
3212 -- something went wrong
3213 po_interface_errors_sv1.handle_interface_errors(
3214 'PO_DOCS_OPEN_INTERFACE',
3215 'FATAL',
3216 null,
3217 x_interface_header_id,
3218 x_interface_line_id,
3219 'PO_PDOI_INVALID_TAX_NAME',
3220 'PO_LINES_INTERFACE',
3221 'TAX_NAME',
3222 'VALUE',
3223 null,null,null,null,null,
3224 x_tax_name,
3225 null,null,null,null,null,
3226 x_header_processable_flag);
3227
3228 elsif (x_tax_name is null and x_tax_code_id is not null) then
3229
3230 -- something went wrong
3231 po_interface_errors_sv1.handle_interface_errors(
3232 'PO_DOCS_OPEN_INTERFACE',
3233 'FATAL',
3234 null,
3235 x_interface_header_id,
3236 x_interface_line_id,
3237 'PO_PDOI_INVALID_TAX_CODE_ID',
3238 'PO_LINES_INTERFACE',
3239 'TAX_CODE_ID',
3240 'VALUE',
3241 null,null,null,null,null,
3242 x_tax_code_id,
3243 null,null,null,null,null,
3244 x_header_processable_flag);
3245
3246 elsif (x_tax_name is not null and x_tax_code_id is not null) then
3247
3248 -- validate tax id
3249
3250 select count(*) into x_count
3251 from ap_tax_codes
3252 where tax_id = x_tax_code_id
3253 and enabled_flag = 'Y';
3254
3255 if x_count = 0 then
3256
3257 -- invalid tax id
3258
3259 po_interface_errors_sv1.handle_interface_errors(
3260 'PO_DOCS_OPEN_INTERFACE',
3261 'FATAL',
3262 null,
3263 x_interface_header_id,
3264 x_interface_line_id,
3265 'PO_PDOI_INVALID_TAX_CODE_ID',
3266 'PO_LINES_INTERFACE',
3267 'TAX_NAME',
3268 'VALUE',
3269 null,null,null,null,null,
3270 x_tax_name,
3271 null,null,null,null,null,
3272 x_header_processable_flag);
3273 end if;
3274
3275
3276 end if;
3277
3278 X_progress := '620';
3279 IF (x_terms_id is not null) THEN
3280 po_terms_sv.val_ap_terms(x_terms_id, x_res_terms_id);
3281 IF (x_res_terms_id is null) THEN
3282 po_interface_errors_sv1.handle_interface_errors(
3283 'PO_DOCS_OPEN_INTERFACE',
3284 'FATAL',
3285 null,
3286 x_interface_header_id,
3287 x_interface_line_id,
3288 'PO_PDOI_INVALID_PAY_TERMS',
3289 'PO_LINES_INTERFACE',
3290 'TERMS_ID',
3291 'VALUE',
3292 null,null,null,null,null,
3293 x_terms_id,
3294 null,null,null,null,null,
3295 x_header_processable_flag);
3296 END IF;
3297 END IF;
3298
3299 x_progress := '630';
3300 IF (x_un_number_id is not null) THEN
3301 x_valid := po_un_numbers_sv1.val_un_number_id(x_un_number_id);
3302 IF (x_valid = FALSE) THEN
3303 po_interface_errors_sv1.handle_interface_errors(
3304 'PO_DOCS_OPEN_INTERFACE',
3305 'FATAL',
3306 null,
3307 x_interface_header_id,
3308 x_interface_line_id,
3309 'PO_PDOI_INVALID_UN_NUMBER_ID',
3310 'PO_LINES_INTERFACE',
3311 'UN_NUMBER_ID',
3312 'VALUE',
3313 null,null,null,null,null,
3314 x_un_number_id,
3315 null,null,null,null,null,
3316 x_header_processable_flag);
3317 END IF;
3318 END IF;
3319
3320 x_progress := '640';
3321 IF (x_hazard_class_id is not null) THEN
3322 x_valid := po_hazard_classes_sv1.val_hazard_class_id(
3323 x_hazard_class_id);
3324 IF (x_valid = FALSE) THEN
3325 po_interface_errors_sv1.handle_interface_errors(
3326 'PO_DOCS_OPEN_INTERFACE',
3327 'FATAL',
3328 null,
3329 x_interface_header_id,
3330 x_interface_line_id,
3331 'PO_PDOI_INVALID_HAZ_ID',
3332 'PO_LINES_INTERFACE',
3333 'HAZARD_CLASS_ID',
3334 'VALUE',
3335 null,null,null,null,null,
3336 x_hazard_class_id,
3337 null,null,null,null,null,
3338 x_header_processable_flag);
3339 END IF;
3340 END IF;
3341
3342 x_progress := '650';
3343
3344 /*
3345 IF (x_taxable_flag is not null) THEN
3346 x_valid := po_core_sv1.val_flag_value(x_taxable_flag);
3347 IF (x_valid = FALSE) THEN
3348 po_interface_errors_sv1.handle_interface_errors(
3349 'PO_DOCS_OPEN_INTERFACE',
3350 'FATAL',
3351 null,
3352 x_interface_header_id,
3353 x_interface_line_id,
3354 'PO_PDOI_INVALID_FLAG_VALUE',
3355 'PO_LINES_INTERFACE',
3356 'TAXABLE_FLAG',
3357 'COLUMN_NAME',
3358 'VALUE',
3359 null,null,null,null,
3360 'TAXABLE_FLAG',
3361 x_taxable_flag,
3362 null,null,null,null,
3363 x_header_processable_flag);
3364 END IF;
3365 END IF;
3366 */
3367 x_progress := '660';
3368 IF (x_price_type_lookup_code is not null) THEN
3369 x_valid :=po_headers_sv6.val_lookup_code(x_price_type_lookup_code,
3370 'PRICE TYPE');
3371 IF (x_valid = FALSE) THEN
3372 po_interface_errors_sv1.handle_interface_errors(
3373 'PO_DOCS_OPEN_INTERFACE',
3374 'FATAL',
3375 null,
3376 x_interface_header_id,
3377 x_interface_line_id,
3378 'PO_PDOI_INVALID_PRICE_TYPE',
3379 'PO_LINES_INTERFACE',
3380 'PRICE_TYPE_LOOKUP_CODE',
3381 'VALUE',
3382 null,null,null,null,null,
3383 x_price_type_lookup_code,
3384 null,null,null,null,null,
3385 x_header_processable_flag);
3386 END IF;
3387 END IF;
3388
3389 x_progress := '670';
3390 IF (x_price_break_lookup_code is not null) THEN
3391 x_valid :=po_headers_sv6.val_lookup_code(x_price_break_lookup_code,
3392 'PRICE BREAK TYPE');
3393 IF (x_valid = FALSE) THEN
3394 po_interface_errors_sv1.handle_interface_errors(
3395 'PO_DOCS_OPEN_INTERFACE',
3396 'FATAL',
3397 null,
3398 x_interface_header_id,
3399 x_interface_line_id,
3400 'PO_PDOI_INVALID_PRICE_BREAK',
3401 'PO_LINES_INTERFACE',
3402 'PRICE_BREAK_LOOKUP_CODE',
3403 'VALUE',
3404 null,null,null,null,null,
3405 x_price_break_lookup_code,
3406 null,null,null,null,null,
3407 x_header_processable_flag);
3408 END IF;
3409
3410 /* FPI GA start*/
3411 /* For a global agreement cumulative price break lines are not allowed */
3412 IF x_price_break_lookup_code = 'CUMULATIVE' THEN
3413 IF nvl(X_global_agreement_flag,'N') = 'Y' THEN
3414 po_interface_errors_sv1.handle_interface_errors(
3415 'PO_DOCS_OPEN_INTERFACE',
3416 'FATAL',
3417 null,
3418 x_interface_header_id,
3419 x_interface_line_id,
3420 'PO_PDOI_GA_PRICE_BREAK_NA',
3421 'PO_LINES_INTERFACE',
3422 null,
3423 null,
3424 null,null,null,null,null,
3425 x_price_break_lookup_code,
3426 null,null,null,null,null,
3427 x_header_processable_flag);
3428 --<SERVICES FPJ START>
3429 ELSIF (p_order_type_lookup_code = 'FIXED PRICE'
3430 AND p_purchase_basis = 'SERVICES') THEN
3431
3432 --You cannot have cumulative price breaks on
3433 --FIXED PRICE/SERVICES line types.
3434 PO_INTERFACE_ERRORS_SV1.handle_interface_errors(
3435 X_interface_type => 'PO_DOCS_OPEN_INTERFACE',
3436 X_Error_type => 'FATAL',
3437 X_Batch_id => NULL,
3438 X_Interface_Header_Id => x_interface_header_id,
3439 X_Interface_Line_id => x_interface_line_id,
3440 X_Error_message_name => 'PO_PDOI_SVC_NO_CUMULATIVE_PB',
3441 X_Table_name => 'PO_LINES_INTERFACE',
3442 X_Column_name => 'PRICE_BREAK_LOOKUP_CODE',
3443 X_TokenName1 => NULL,
3444 X_TokenName2 => NULL,
3445 X_TokenName3 => NULL,
3446 X_TokenName4 => NULL,
3447 X_TokenName5 => NULL,
3448 X_TokenName6 => NULL,
3449 X_TokenValue1 => NULL,
3450 X_TokenValue2 => NULL,
3451 X_TokenValue3 => NULL,
3452 X_TokenValue4 => NULL,
3453 X_TokenValue5 => NULL,
3454 X_TokenValue6 => NULL,
3455 X_header_processable_flag => x_header_processable_flag);
3456 END IF; --IF nvl(X_global_agreement_flag,'N') = 'Y'
3457 --<SERVICES FPJ END>
3458
3459 END IF; --IF x_price_break_lookup_code = 'CUMULATIVE'
3460 /* FPI GA end */
3461
3462 END IF;
3463
3464 EXCEPTION
3465 WHEN others THEN
3466 po_message_s.sql_error('validate_po_lines', x_progress, sqlcode);
3467 raise;
3468 END validate_po_lines;
3469
3470 END PO_LINES_SV7;