86: l_doc_line_loc_id IN NUMBER,
87: l_doc_shipment_num IN NUMBER,
88: l_action IN VARCHAR2,
89: l_action_date IN DATE,
90: l_cancel_reason IN PO_LINES.cancel_reason%TYPE,
91: l_cancel_reqs_flag IN VARCHAR2,
92: l_print_flag IN VARCHAR2,
93: l_note_to_vendor IN PO_HEADERS.note_to_vendor%TYPE,
94: l_use_gldate IN VARCHAR2 DEFAULT NULL,
319: l_rejected_flag NUMBER:=0;
320: l_po_number po_headers_interface.document_num%type;
321: l_release_num po_headers_interface.release_num%type:=NULL;
322: l_revision_num po_headers_interface.revision_num%type;
323: l_line_num po_lines_interface.line_num%type:=NULL;
324: CURSOR l_csr_lines
325: (
326: p_interface_header_id NUMBER,p_process_code VARCHAR2
327: )
333: unit_price,
334: promised_date,
335: need_by_date,
336: organization_id
337: FROM po_lines_interface
338: WHERE interface_header_id=p_interface_header_id
339: AND process_code =p_process_code
340: ORDER BY line_num FOR UPDATE OF po_lines_interface.process_code;
341:
336: organization_id
337: FROM po_lines_interface
338: WHERE interface_header_id=p_interface_header_id
339: AND process_code =p_process_code
340: ORDER BY line_num FOR UPDATE OF po_lines_interface.process_code;
341:
342: type po_lines_rec
343: IS
344: record
338: WHERE interface_header_id=p_interface_header_id
339: AND process_code =p_process_code
340: ORDER BY line_num FOR UPDATE OF po_lines_interface.process_code;
341:
342: type po_lines_rec
343: IS
344: record
345: (
346: interface_line_id po_lines_interface.interface_line_id%type,
342: type po_lines_rec
343: IS
344: record
345: (
346: interface_line_id po_lines_interface.interface_line_id%type,
347: line_num po_lines_interface.line_num%type,
348: shipment_num po_lines_interface.shipment_num%type,
349: quantity po_lines_interface.quantity%type,
350: unit_price po_lines_interface.unit_price%type,
343: IS
344: record
345: (
346: interface_line_id po_lines_interface.interface_line_id%type,
347: line_num po_lines_interface.line_num%type,
348: shipment_num po_lines_interface.shipment_num%type,
349: quantity po_lines_interface.quantity%type,
350: unit_price po_lines_interface.unit_price%type,
351: promised_date po_lines_interface.promised_date%type,
344: record
345: (
346: interface_line_id po_lines_interface.interface_line_id%type,
347: line_num po_lines_interface.line_num%type,
348: shipment_num po_lines_interface.shipment_num%type,
349: quantity po_lines_interface.quantity%type,
350: unit_price po_lines_interface.unit_price%type,
351: promised_date po_lines_interface.promised_date%type,
352: need_by_date po_lines_interface.need_by_date%type,
345: (
346: interface_line_id po_lines_interface.interface_line_id%type,
347: line_num po_lines_interface.line_num%type,
348: shipment_num po_lines_interface.shipment_num%type,
349: quantity po_lines_interface.quantity%type,
350: unit_price po_lines_interface.unit_price%type,
351: promised_date po_lines_interface.promised_date%type,
352: need_by_date po_lines_interface.need_by_date%type,
353: organization_id po_lines_interface.organization_id%type );
346: interface_line_id po_lines_interface.interface_line_id%type,
347: line_num po_lines_interface.line_num%type,
348: shipment_num po_lines_interface.shipment_num%type,
349: quantity po_lines_interface.quantity%type,
350: unit_price po_lines_interface.unit_price%type,
351: promised_date po_lines_interface.promised_date%type,
352: need_by_date po_lines_interface.need_by_date%type,
353: organization_id po_lines_interface.organization_id%type );
354: l_po_lines_rec po_lines_rec;
347: line_num po_lines_interface.line_num%type,
348: shipment_num po_lines_interface.shipment_num%type,
349: quantity po_lines_interface.quantity%type,
350: unit_price po_lines_interface.unit_price%type,
351: promised_date po_lines_interface.promised_date%type,
352: need_by_date po_lines_interface.need_by_date%type,
353: organization_id po_lines_interface.organization_id%type );
354: l_po_lines_rec po_lines_rec;
355: L_LAUNCH_APPROVALS_FLAG VARCHAR2(1):='N';
348: shipment_num po_lines_interface.shipment_num%type,
349: quantity po_lines_interface.quantity%type,
350: unit_price po_lines_interface.unit_price%type,
351: promised_date po_lines_interface.promised_date%type,
352: need_by_date po_lines_interface.need_by_date%type,
353: organization_id po_lines_interface.organization_id%type );
354: l_po_lines_rec po_lines_rec;
355: L_LAUNCH_APPROVALS_FLAG VARCHAR2(1):='N';
356: po_process_inbound EXCEPTION;
349: quantity po_lines_interface.quantity%type,
350: unit_price po_lines_interface.unit_price%type,
351: promised_date po_lines_interface.promised_date%type,
352: need_by_date po_lines_interface.need_by_date%type,
353: organization_id po_lines_interface.organization_id%type );
354: l_po_lines_rec po_lines_rec;
355: L_LAUNCH_APPROVALS_FLAG VARCHAR2(1):='N';
356: po_process_inbound EXCEPTION;
357: BEGIN
350: unit_price po_lines_interface.unit_price%type,
351: promised_date po_lines_interface.promised_date%type,
352: need_by_date po_lines_interface.need_by_date%type,
353: organization_id po_lines_interface.organization_id%type );
354: l_po_lines_rec po_lines_rec;
355: L_LAUNCH_APPROVALS_FLAG VARCHAR2(1):='N';
356: po_process_inbound EXCEPTION;
357: BEGIN
358: l_interface_header_id := itemkey;
404: END IF;
405: BEGIN
406: SELECT COUNT(1)
407: INTO l_rec_count
408: FROM po_lines_interface
409: WHERE interface_header_id= l_interface_header_id
410: AND process_code IS NULL;
411: EXCEPTION
412: WHEN OTHERS THEN
411: EXCEPTION
412: WHEN OTHERS THEN
413: l_rec_count:=0;
414: IF(l_debug =1) THEN
415: trace('Unable retrieve record count of po lines creation. '||SQLERRM,l_module);
416: END IF;
417: END;
418: IF(l_debug=1) THEN
419: trace('Record count of po lines creation: '||l_rec_count,l_module);
415: trace('Unable retrieve record count of po lines creation. '||SQLERRM,l_module);
416: END IF;
417: END;
418: IF(l_debug=1) THEN
419: trace('Record count of po lines creation: '||l_rec_count,l_module);
420: END IF;
421: IF l_po_number IS NOT NULL THEN
422: BEGIN
423: SELECT COUNT(1)
421: IF l_po_number IS NOT NULL THEN
422: BEGIN
423: SELECT COUNT(1)
424: INTO l_rec_upd_count
425: FROM po_lines_interface
426: WHERE interface_header_id= l_interface_header_id
427: AND process_code ='UPDATE';
428: EXCEPTION
429: WHEN OTHERS THEN
428: EXCEPTION
429: WHEN OTHERS THEN
430: l_rec_upd_count:=0;
431: IF(l_debug =1) THEN
432: trace('Unable retrieve record count of po lines updation. '||SQLERRM,l_module);
433: END IF;
434: END;
435: IF(l_debug=1) THEN
436: trace('Record count of po lines updation: '||l_rec_upd_count,l_module);
432: trace('Unable retrieve record count of po lines updation. '||SQLERRM,l_module);
433: END IF;
434: END;
435: IF(l_debug=1) THEN
436: trace('Record count of po lines updation: '||l_rec_upd_count,l_module);
437: END IF;
438: BEGIN
439: SELECT COUNT(1)
440: INTO l_rec_can_count
437: END IF;
438: BEGIN
439: SELECT COUNT(1)
440: INTO l_rec_can_count
441: FROM po_lines_interface
442: WHERE interface_header_id= l_interface_header_id
443: AND process_code ='CANCEL';
444: EXCEPTION
445: WHEN OTHERS THEN
444: EXCEPTION
445: WHEN OTHERS THEN
446: l_rec_can_count:=0;
447: IF(l_debug =1) THEN
448: trace('Unable retrieve record count of po lines cancellation. '||SQLERRM,l_module);
449: END IF;
450: END;
451: IF(l_debug=1) THEN
452: trace('Record count of po lines updation: '||l_rec_can_count,l_module);
448: trace('Unable retrieve record count of po lines cancellation. '||SQLERRM,l_module);
449: END IF;
450: END;
451: IF(l_debug=1) THEN
452: trace('Record count of po lines updation: '||l_rec_can_count,l_module);
453: END IF;
454: IF l_rec_upd_count>0 THEN
455: IF(l_debug =1) THEN
456: trace('Started processing Update - PO Line',l_module);
457: END IF;
458: BEGIN
459: OPEN l_csr_lines(l_interface_header_id,'UPDATE');
460: LOOP
461: FETCH l_csr_lines INTO l_po_lines_rec;
462: EXIT
463: WHEN l_csr_lines%notfound;
464: IF l_line_num IS NULL OR l_line_num<>l_po_lines_rec.line_num THEN
465: l_line_num :=l_po_lines_rec.line_num;
460: LOOP
461: FETCH l_csr_lines INTO l_po_lines_rec;
462: EXIT
463: WHEN l_csr_lines%notfound;
464: IF l_line_num IS NULL OR l_line_num<>l_po_lines_rec.line_num THEN
465: l_line_num :=l_po_lines_rec.line_num;
466: IF(l_debug =1) THEN
467: trace('Processing Update - PO Line at line level. Line Num: '||l_line_num,l_module);
468: END IF;
461: FETCH l_csr_lines INTO l_po_lines_rec;
462: EXIT
463: WHEN l_csr_lines%notfound;
464: IF l_line_num IS NULL OR l_line_num<>l_po_lines_rec.line_num THEN
465: l_line_num :=l_po_lines_rec.line_num;
466: IF(l_debug =1) THEN
467: trace('Processing Update - PO Line at line level. Line Num: '||l_line_num,l_module);
468: END IF;
469: BEGIN
481: RAISE po_process_inbound;
482: END;
483: l_result_lines :=update_po (P_PO_NUMBER =>l_po_number, --Mandatory
484: P_RELEASE_NUMBER =>l_release_num, P_REVISION_NUMBER =>l_revision_num, --Mandatory
485: P_LINE_NUMBER =>l_po_lines_rec.line_num, --Mandatory
486: P_SHIPMENT_NUMBER =>NULL,
487: P_NEW_QUANTITY =>NULL,
488: P_NEW_PRICE =>l_po_lines_rec.unit_price,
489: P_NEW_PROMISED_DATE =>NULL,
484: P_RELEASE_NUMBER =>l_release_num, P_REVISION_NUMBER =>l_revision_num, --Mandatory
485: P_LINE_NUMBER =>l_po_lines_rec.line_num, --Mandatory
486: P_SHIPMENT_NUMBER =>NULL,
487: P_NEW_QUANTITY =>NULL,
488: P_NEW_PRICE =>l_po_lines_rec.unit_price,
489: P_NEW_PROMISED_DATE =>NULL,
490: P_NEW_NEED_BY_DATE =>NULL,
491: P_LAUNCH_APPROVALS_FLAG=>L_LAUNCH_APPROVALS_FLAG,
492: P_UPDATE_SOURCE =>NULL, P_VERSION =>1.0,
493: P_OVERRIDE_DATE =>NULL, P_API_ERRORS =>x_msg,
494: P_BUYER_NAME =>NULL,
495: P_secondary_quantity =>NULL,
496: P_preferred_grade =>NULL,
497: P_org_id =>l_po_lines_rec.organization_id );
498: IF l_result_lines<>1 THEN
499: UPDATE po_lines_interface
500: SET process_code = 'REJECTED'
501: WHERE CURRENT OF l_csr_lines;
495: P_secondary_quantity =>NULL,
496: P_preferred_grade =>NULL,
497: P_org_id =>l_po_lines_rec.organization_id );
498: IF l_result_lines<>1 THEN
499: UPDATE po_lines_interface
500: SET process_code = 'REJECTED'
501: WHERE CURRENT OF l_csr_lines;
502:
503: log_err_msg (x_msg, p_userid, p_applid , p_respid,l_argument8, l_interface_header_id, l_po_lines_rec.interface_line_id);
499: UPDATE po_lines_interface
500: SET process_code = 'REJECTED'
501: WHERE CURRENT OF l_csr_lines;
502:
503: log_err_msg (x_msg, p_userid, p_applid , p_respid,l_argument8, l_interface_header_id, l_po_lines_rec.interface_line_id);
504: l_rejected_flag:=1;
505: END IF;
506: END IF;
507: IF l_result_lines=1 THEN
519: END IF;
520: RAISE po_process_inbound;
521: END;
522: IF(l_debug=1) THEN
523: trace('Processing Update - PO Line at shipment level. Line Num, Shipment Num: '||l_line_num||', '||l_po_lines_rec.shipment_num,l_module);
524: END IF;
525: IF l_csr_lines%ROWCOUNT = l_rec_upd_count THEN
526: L_LAUNCH_APPROVALS_FLAG:='Y';
527: END IF;
526: L_LAUNCH_APPROVALS_FLAG:='Y';
527: END IF;
528: l_result :=update_po ( P_PO_NUMBER =>l_po_number, --Mandatory
529: P_RELEASE_NUMBER =>l_release_num, P_REVISION_NUMBER =>l_revision_num, --Mandatory
530: P_LINE_NUMBER =>l_po_lines_rec.line_num, --Mandatory
531: P_SHIPMENT_NUMBER =>l_po_lines_rec.shipment_num,
532: P_NEW_QUANTITY =>l_po_lines_rec.quantity,
533: P_NEW_PRICE =>NULL,
534: P_NEW_PROMISED_DATE =>l_po_lines_rec.promised_date,
527: END IF;
528: l_result :=update_po ( P_PO_NUMBER =>l_po_number, --Mandatory
529: P_RELEASE_NUMBER =>l_release_num, P_REVISION_NUMBER =>l_revision_num, --Mandatory
530: P_LINE_NUMBER =>l_po_lines_rec.line_num, --Mandatory
531: P_SHIPMENT_NUMBER =>l_po_lines_rec.shipment_num,
532: P_NEW_QUANTITY =>l_po_lines_rec.quantity,
533: P_NEW_PRICE =>NULL,
534: P_NEW_PROMISED_DATE =>l_po_lines_rec.promised_date,
535: P_NEW_NEED_BY_DATE =>l_po_lines_rec.need_by_date,
528: l_result :=update_po ( P_PO_NUMBER =>l_po_number, --Mandatory
529: P_RELEASE_NUMBER =>l_release_num, P_REVISION_NUMBER =>l_revision_num, --Mandatory
530: P_LINE_NUMBER =>l_po_lines_rec.line_num, --Mandatory
531: P_SHIPMENT_NUMBER =>l_po_lines_rec.shipment_num,
532: P_NEW_QUANTITY =>l_po_lines_rec.quantity,
533: P_NEW_PRICE =>NULL,
534: P_NEW_PROMISED_DATE =>l_po_lines_rec.promised_date,
535: P_NEW_NEED_BY_DATE =>l_po_lines_rec.need_by_date,
536: P_LAUNCH_APPROVALS_FLAG=>L_LAUNCH_APPROVALS_FLAG,
530: P_LINE_NUMBER =>l_po_lines_rec.line_num, --Mandatory
531: P_SHIPMENT_NUMBER =>l_po_lines_rec.shipment_num,
532: P_NEW_QUANTITY =>l_po_lines_rec.quantity,
533: P_NEW_PRICE =>NULL,
534: P_NEW_PROMISED_DATE =>l_po_lines_rec.promised_date,
535: P_NEW_NEED_BY_DATE =>l_po_lines_rec.need_by_date,
536: P_LAUNCH_APPROVALS_FLAG=>L_LAUNCH_APPROVALS_FLAG,
537: P_UPDATE_SOURCE =>NULL, P_VERSION =>1.0,
538: P_OVERRIDE_DATE =>NULL, P_API_ERRORS =>x_msg,
531: P_SHIPMENT_NUMBER =>l_po_lines_rec.shipment_num,
532: P_NEW_QUANTITY =>l_po_lines_rec.quantity,
533: P_NEW_PRICE =>NULL,
534: P_NEW_PROMISED_DATE =>l_po_lines_rec.promised_date,
535: P_NEW_NEED_BY_DATE =>l_po_lines_rec.need_by_date,
536: P_LAUNCH_APPROVALS_FLAG=>L_LAUNCH_APPROVALS_FLAG,
537: P_UPDATE_SOURCE =>NULL, P_VERSION =>1.0,
538: P_OVERRIDE_DATE =>NULL, P_API_ERRORS =>x_msg,
539: p_BUYER_NAME =>NULL,
538: P_OVERRIDE_DATE =>NULL, P_API_ERRORS =>x_msg,
539: p_BUYER_NAME =>NULL,
540: p_secondary_quantity =>NULL,
541: p_preferred_grade =>NULL,
542: p_org_id =>l_po_lines_rec.organization_id );
543: IF l_result=1 THEN
544: UPDATE po_lines_interface
545: SET process_code = 'ACCEPTED'
546: WHERE CURRENT OF l_csr_lines;
540: p_secondary_quantity =>NULL,
541: p_preferred_grade =>NULL,
542: p_org_id =>l_po_lines_rec.organization_id );
543: IF l_result=1 THEN
544: UPDATE po_lines_interface
545: SET process_code = 'ACCEPTED'
546: WHERE CURRENT OF l_csr_lines;
547: ELSE
548: UPDATE po_lines_interface
544: UPDATE po_lines_interface
545: SET process_code = 'ACCEPTED'
546: WHERE CURRENT OF l_csr_lines;
547: ELSE
548: UPDATE po_lines_interface
549: SET process_code = 'REJECTED'
550: WHERE CURRENT OF l_csr_lines;
551:
552: log_err_msg ( x_msg, p_userid, p_applid , p_respid,l_argument8, l_interface_header_id, l_po_lines_rec.interface_line_id);
548: UPDATE po_lines_interface
549: SET process_code = 'REJECTED'
550: WHERE CURRENT OF l_csr_lines;
551:
552: log_err_msg ( x_msg, p_userid, p_applid , p_respid,l_argument8, l_interface_header_id, l_po_lines_rec.interface_line_id);
553: l_rejected_flag:=1;
554: END IF;
555: END IF;
556: END LOOP;
572: END IF;
573: BEGIN
574: OPEN l_csr_lines ( l_interface_header_id, 'CANCEL' ) ;
575: LOOP
576: FETCH l_csr_lines INTO l_po_lines_rec;
577: EXIT
578: WHEN l_csr_lines%notfound;
579: IF(l_debug=1) THEN
580: trace('Processing Cancel - PO Line. Line Num: '||l_po_lines_rec.line_num,l_module);
576: FETCH l_csr_lines INTO l_po_lines_rec;
577: EXIT
578: WHEN l_csr_lines%notfound;
579: IF(l_debug=1) THEN
580: trace('Processing Cancel - PO Line. Line Num: '||l_po_lines_rec.line_num,l_module);
581: END IF;
582: cancel_po (l_api_version =>1.0,
583: l_init_msg_list =>x_cancel_msg,
584: l_commit =>FND_API.G_TRUE,
589: l_doc_num =>l_po_number,
590: l_release_id =>NULL,
591: l_release_num =>NULL,
592: l_doc_line_id =>NULL,
593: l_doc_line_num =>l_po_lines_rec.line_num,
594: l_doc_line_loc_id =>NULL,
595: l_doc_shipment_num =>NULL,
596: l_action =>'CANCEL',
597: l_action_date =>sysdate,
599: l_cancel_reqs_flag =>'N',
600: l_print_flag =>'N',
601: l_note_to_vendor =>NULL,
602: l_use_gldate =>NULL,
603: l_org_id =>l_po_lines_rec.organization_id );
604: IF x_return_status=FND_API.g_ret_sts_success THEN
605: UPDATE po_lines_interface
606: SET process_code = 'ACCEPTED'
607: WHERE CURRENT OF l_csr_lines;
601: l_note_to_vendor =>NULL,
602: l_use_gldate =>NULL,
603: l_org_id =>l_po_lines_rec.organization_id );
604: IF x_return_status=FND_API.g_ret_sts_success THEN
605: UPDATE po_lines_interface
606: SET process_code = 'ACCEPTED'
607: WHERE CURRENT OF l_csr_lines;
608: ELSE
609: UPDATE po_lines_interface
605: UPDATE po_lines_interface
606: SET process_code = 'ACCEPTED'
607: WHERE CURRENT OF l_csr_lines;
608: ELSE
609: UPDATE po_lines_interface
610: SET process_code = 'REJECTED'
611: WHERE CURRENT OF l_csr_lines;
612:
613: l_rejected_flag:=1;
660: DELETE
661: FROM po_distributions_interface
662: WHERE interface_line_id IN
663: (SELECT interface_line_id
664: FROM po_lines_interface
665: WHERE interface_header_id =l_interface_header_id
666: AND process_code ='ACCEPTED'
667: );
668: DELETE
665: WHERE interface_header_id =l_interface_header_id
666: AND process_code ='ACCEPTED'
667: );
668: DELETE
669: FROM po_lines_interface
670: WHERE interface_header_id =l_interface_header_id
671: AND process_code ='ACCEPTED';
672: IF l_rec_count =0 THEN
673: SELECT COUNT(*)
671: AND process_code ='ACCEPTED';
672: IF l_rec_count =0 THEN
673: SELECT COUNT(*)
674: INTO l_lns_count
675: FROM po_lines_interface
676: WHERE interface_header_id =l_interface_header_id;
677: IF l_lns_count =0 THEN
678: DELETE
679: FROM po_headers_interface