[Home] [Help]
79: x_responsibility_id number := null;
80: x_application_id number := null;
81:
82: x_language_code VARCHAR2(3);
83: x_last_update_date pon_auction_headers_all.last_update_date%TYPE;
84: x_progress FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
85: x_origination_code pon_auction_headers_all.auction_origination_code%TYPE;
86: x_return_code VARCHAR2(10);
87:
81:
82: x_language_code VARCHAR2(3);
83: x_last_update_date pon_auction_headers_all.last_update_date%TYPE;
84: x_progress FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
85: x_origination_code pon_auction_headers_all.auction_origination_code%TYPE;
86: x_return_code VARCHAR2(10);
87:
88: l_api_name VARCHAR2(30) := ' AUTO_ALLOC_AND_SPLIT_REQ';
89: l_debug_enabled VARCHAR2(1) := 'N';
159: -- Lock auction table to prevent concurrency errors
160:
161: SELECT last_update_date
162: INTO x_last_update_date
163: FROM pon_auction_headers_all
164: WHERE auction_header_id = p_auction_header_id
165: FOR UPDATE;
166:
167: -- Determine whether we are sourcing requisition lines against the
169: -- not, do not automatically allocate or call po's split api
170:
171: SELECT nvl(source_reqs_flag,'N'), contract_type, nvl(auction_origination_code, 'NONE')
172: into x_source_reqs_flag, x_contract_type, x_origination_code
173: FROM pon_auction_headers_all
174: where auction_header_id = p_auction_header_id;
175:
176:
177: if(l_debug_enabled = 'Y') then
306: -- double check the setting of alloc_error below
307:
308:
309: -- update outcome_status of auction
310: UPDATE PON_AUCTION_HEADERS_ALL
311: SET OUTCOME_STATUS = 'ALLOCATION_FAILED'
312: WHERE AUCTION_HEADER_ID = p_auction_header_id;
313:
314: if(l_exception_enabled = 'Y') then
347: log_error(x_progress);
348: end if;
349:
350: -- update outcome_status of auction
351: UPDATE PON_AUCTION_HEADERS_ALL
352: SET OUTCOME_STATUS = 'ALLOCATION_FAILED'
353: WHERE AUCTION_HEADER_ID = p_auction_header_id;
354:
355: if(l_exception_enabled = 'Y') then
908: l_login_id NUMBER;
909: l_bid_price_col dbms_sql.number_table;
910: l_order_type_lookup_code pon_auction_item_prices_all.order_type_lookup_code%TYPE;
911: l_purchase_basis pon_auction_item_prices_all.purchase_basis%TYPE;
912: l_contract_type pon_auction_headers_all.contract_type%TYPE;
913:
914:
915: l_api_name VARCHAR2(30) := ' AUTO_REQ_ALLOCATION ';
916: l_debug_enabled VARCHAR2(1) := 'N';
957: l_bid_price_col := l_empty_table;
958:
959: SELECT paip.order_type_lookup_code, paip.purchase_basis, pah.contract_type
960: INTO l_order_type_lookup_code, l_purchase_basis, l_contract_type
961: FROM pon_auction_item_prices_all paip, pon_auction_headers_all pah
962: WHERE paip.auction_header_id = pah.auction_header_id
963: AND paip.auction_header_id = p_auctionid
964: AND paip.line_number = p_line_number;
965:
987: BULK COLLECT INTO l_award_col, l_bid_number_col, l_bid_price_col
988: FROM pon_auction_item_prices_all itm,
989: pon_bid_item_prices bl,
990: pon_bid_headers bh,
991: pon_auction_headers_all pah
992: WHERE itm.auction_header_id = p_auctionID AND
993: itm.line_number = p_line_number AND
994: bl.line_number = itm.line_number AND
995: bl.auction_header_id = itm.auction_header_id AND
1140: x_progress VARCHAR2(4000);
1141: x_language_code VARCHAR2(3);
1142: x_msg_suffix VARCHAR2(3) := '';
1143: x_doctype_group_name pon_auc_doctypes.doctype_group_name%TYPE;
1144: x_doctype_id pon_auction_headers_all.doctype_id%TYPE;
1145: x_responsibility_id NUMBER;
1146: x_application_id NUMBER;
1147: x_doc_number_dsp VARCHAR2(60);
1148: x_contract_type pon_auction_headers_all.contract_type%TYPE;
1144: x_doctype_id pon_auction_headers_all.doctype_id%TYPE;
1145: x_responsibility_id NUMBER;
1146: x_application_id NUMBER;
1147: x_doc_number_dsp VARCHAR2(60);
1148: x_contract_type pon_auction_headers_all.contract_type%TYPE;
1149: x_current_round NUMBER;
1150:
1151: x_timezone VARCHAR2(80);
1152: x_newstarttime DATE;
1160: x_award_summary_url_buyer VARCHAR2(2000);
1161: x_alloc_summary_url_buyer VARCHAR2(2000);
1162: x_alloc_byitem_url_buyer VARCHAR2(2000);
1163: x_po_summary_url_buyer VARCHAR2(2000);
1164: p_doctype_id PON_AUCTION_HEADERS_ALL.DOCTYPE_ID%TYPE;
1165: p_trading_partner_name PON_AUCTION_HEADERS_ALL.TRADING_PARTNER_NAME%TYPE;
1166: p_trading_partner_contact_name PON_AUCTION_HEADERS_ALL.TRADING_PARTNER_CONTACT_NAME%TYPE;
1167: x_purchase_order VARCHAR2(30);
1168: x_purchase_orders VARCHAR2(30);
1161: x_alloc_summary_url_buyer VARCHAR2(2000);
1162: x_alloc_byitem_url_buyer VARCHAR2(2000);
1163: x_po_summary_url_buyer VARCHAR2(2000);
1164: p_doctype_id PON_AUCTION_HEADERS_ALL.DOCTYPE_ID%TYPE;
1165: p_trading_partner_name PON_AUCTION_HEADERS_ALL.TRADING_PARTNER_NAME%TYPE;
1166: p_trading_partner_contact_name PON_AUCTION_HEADERS_ALL.TRADING_PARTNER_CONTACT_NAME%TYPE;
1167: x_purchase_order VARCHAR2(30);
1168: x_purchase_orders VARCHAR2(30);
1169: p_preview_date DATE;
1162: x_alloc_byitem_url_buyer VARCHAR2(2000);
1163: x_po_summary_url_buyer VARCHAR2(2000);
1164: p_doctype_id PON_AUCTION_HEADERS_ALL.DOCTYPE_ID%TYPE;
1165: p_trading_partner_name PON_AUCTION_HEADERS_ALL.TRADING_PARTNER_NAME%TYPE;
1166: p_trading_partner_contact_name PON_AUCTION_HEADERS_ALL.TRADING_PARTNER_CONTACT_NAME%TYPE;
1167: x_purchase_order VARCHAR2(30);
1168: x_purchase_orders VARCHAR2(30);
1169: p_preview_date DATE;
1170: x_requistion_based VARCHAR2(12);
1167: x_purchase_order VARCHAR2(30);
1168: x_purchase_orders VARCHAR2(30);
1169: p_preview_date DATE;
1170: x_requistion_based VARCHAR2(12);
1171: x_has_items PON_AUCTION_HEADERS_ALL.HAS_ITEMS_FLAG%TYPE;
1172:
1173:
1174: l_api_name VARCHAR2(30) := ' START_PO_WORKFLOW ';
1175: l_debug_enabled VARCHAR2(1) := 'N';
1193: p_doctype_id,
1194: p_trading_partner_name,
1195: p_trading_partner_contact_name,
1196: x_has_items
1197: from pon_auction_headers_all
1198: where auction_header_id = p_auction_header_id;
1199:
1200: x_itemkey := p_itemkey;
1201: x_itemtype:= 'PONCOMPL';
1446: dt.doctype_group_name, auh.contract_type,
1447: nvl(auh.wf_poncompl_current_round, 0), auh.doctype_id
1448: INTO x_doc_number_dsp, x_doctype_group_name, x_contract_type,
1449: x_current_round, x_doctype_id
1450: FROM pon_auction_headers_all auh, pon_auc_doctypes dt
1451: WHERE auh.auction_header_id = p_auction_header_id and
1452: auh.doctype_id = dt.doctype_id;
1453:
1454: x_msg_suffix := PON_AUCTION_PKG.GET_MESSAGE_SUFFIX (x_doctype_group_name);
1669: x_quantity NUMBER;
1670: x_amount NUMBER;
1671: x_pdoi_header PDOIheader;
1672: x_pdoi_line PDOIline;
1673: x_hasBackingReqs pon_auction_headers_all.auction_origination_code%TYPE;
1674: x_source_reqs_flag VARCHAR2(1);
1675: x_sum_requisitions NUMBER;
1676: sum_of_alloc_quantities sumOfReqLineAllocQuantities;
1677:
1720: pbh.acceptance_required_flag,
1721: pah.po_style_id,
1722: pah.progress_payment_type,
1723: pah.supplier_enterable_pymt_flag
1724: FROM pon_auction_headers_all pah,
1725: pon_bid_headers pbh,
1726: fnd_currencies fc
1727: WHERE pah.auction_header_id = p_auction_header_id and
1728: pbh.auction_header_id = pah.auction_header_id and
2957: fnd_global.login_id -- last_update_login
2958: FROM pon_price_differentials ppd,
2959: pon_bid_item_prices pbip,
2960: pon_bid_price_differentials pbpd,
2961: pon_auction_headers_all pah,
2962: po_lines_interface pli
2963: WHERE pbip.bid_number = p_bid_number
2964: AND nvl(pbip.award_status, 'NO') = 'AWARDED'
2965: AND pbip.auction_header_id = ppd.auction_header_id
3018: where pbs.bid_number = p_bid_number
3019: and pbs.line_number = pbpd.line_number
3020: and pbs.shipment_number = pbpd.shipment_number) pbpd,
3021: pon_bid_shipments pbs,
3022: pon_auction_headers_all pah,
3023: po_lines_interface pli
3024: WHERE pbip.bid_number = p_bid_number
3025: AND nvl(pbip.award_status, 'NO') = 'AWARDED'
3026: AND pbip.bid_number = pbs.bid_number
3169: l_cur_item_description pon_auction_item_prices_all.item_description%TYPE;
3170: l_cur_ip_category_id NUMBER;
3171: l_cur_item_id NUMBER;
3172: l_cur_org_id NUMBER;
3173: l_language_code pon_auction_headers_all.language_code%TYPE;
3174:
3175: l_po_attr_values_stmt VARCHAR2(32767);
3176: l_po_attr_values_tlp_stmt VARCHAR2(32767);
3177:
3230: BEGIN
3231:
3232: select language_code
3233: into l_language_code
3234: from pon_auction_headers_all
3235: where auction_header_id = p_auction_header_id;
3236:
3237:
3238: l_cursorName := DBMS_SQL.Open_Cursor;
3458: x_progress FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
3459: x_po_header_id NUMBER;
3460: x_order_number pon_bid_headers.order_number%TYPE;
3461: x_interface_header_id NUMBER;
3462: x_last_update_date pon_auction_headers_all.last_update_date%TYPE;
3463: x_auction_start_date DATE;
3464: x_auction_end_date DATE;
3465: x_tp_time_zone VARCHAR2(80);
3466: x_tp_time_zone1 VARCHAR2(80);
3469: x_allocate_item_url VARCHAR2(2000);
3470: x_auction_org_name VARCHAR2(80);
3471:
3472: x_doctype_id NUMBER;
3473: x_conterms_exist_flag pon_auction_headers_all.conterms_exist_flag%TYPE;
3474: x_contract_doc_name VARCHAR(20);
3475:
3476: /* Error code can take on the following values:
3477:
3529: view_by_date
3530: into x_auction_start_date,
3531: x_auction_end_date,
3532: x_preview_date
3533: from pon_auction_headers_all
3534: where auction_header_id = p_auction_header_id;
3535:
3536: /* Lock auction table to prevent concurrency errors */
3537: /* added doctype_id, conterms_exist_flag for contract terms */
3537: /* added doctype_id, conterms_exist_flag for contract terms */
3538:
3539: SELECT last_update_date, doctype_id, conterms_exist_flag
3540: INTO x_last_update_date, x_doctype_id, x_conterms_exist_flag
3541: FROM pon_auction_headers_all
3542: WHERE auction_header_id = p_auction_header_id
3543: FOR UPDATE;
3544:
3545: x_contract_doc_name := PON_CONTERMS_UTL_PVT.get_response_doc_type(x_doctype_id);
4090:
4091: IF (x_number_of_failed_pos > 0) THEN
4092: resultout := 'N';
4093: -- setting auction outcome status to outcome failed
4094: UPDATE PON_AUCTION_HEADERS_ALL
4095: SET OUTCOME_STATUS = 'OUTCOME_FAILED'
4096: WHERE AUCTION_HEADER_ID = x_auction_header_id;
4097: ELSE
4098: /* update auction outcome status to outcome_completed */
4095: SET OUTCOME_STATUS = 'OUTCOME_FAILED'
4096: WHERE AUCTION_HEADER_ID = x_auction_header_id;
4097: ELSE
4098: /* update auction outcome status to outcome_completed */
4099: UPDATE PON_AUCTION_HEADERS_ALL
4100: SET OUTCOME_STATUS = 'OUTCOME_COMPLETED'
4101: WHERE AUCTION_HEADER_ID = x_auction_header_id;
4102: resultout := 'Y';
4103:
4148: beginBold VARCHAR2(10);
4149: endBold VARCHAR2(10);
4150: x_count NUMBER;
4151: x_progress FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
4152: itemkey pon_auction_headers_all.wf_poncompl_item_key%TYPE;
4153: x_purchase_orders VARCHAR2(30);
4154: x_contract_type pon_auction_headers_all.contract_type%TYPE;
4155:
4156: /* Selects all relevant information for the first 10 successful POs of the current round*/
4150: x_count NUMBER;
4151: x_progress FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
4152: itemkey pon_auction_headers_all.wf_poncompl_item_key%TYPE;
4153: x_purchase_orders VARCHAR2(30);
4154: x_contract_type pon_auction_headers_all.contract_type%TYPE;
4155:
4156: /* Selects all relevant information for the first 10 successful POs of the current round*/
4157:
4158: CURSOR successfulPOs is
4201: x_user_name := substr(x_substr, x_index+1);
4202:
4203: SELECT wf_poncompl_item_key, contract_type
4204: INTO itemkey, x_contract_type
4205: FROM pon_auction_headers_all
4206: WHERE auction_header_id = x_auction_header_id;
4207:
4208: PON_PROFILE_UTIL_PKG.GET_WF_LANGUAGE(x_user_name, x_language_code);
4209: PON_AUCTION_PKG.SET_SESSION_LANGUAGE(null, x_language_code);
4315: beginBold VARCHAR2(10);
4316: endBold VARCHAR2(10);
4317: x_count NUMBER;
4318: x_progress FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
4319: itemkey pon_auction_headers_all.wf_poncompl_item_key%TYPE;
4320: x_purchase_orders VARCHAR2(30);
4321: x_contract_type pon_auction_headers_all.contract_type%TYPE;
4322: x_error_msg pon_bid_headers.po_error_msg%type;
4323:
4317: x_count NUMBER;
4318: x_progress FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
4319: itemkey pon_auction_headers_all.wf_poncompl_item_key%TYPE;
4320: x_purchase_orders VARCHAR2(30);
4321: x_contract_type pon_auction_headers_all.contract_type%TYPE;
4322: x_error_msg pon_bid_headers.po_error_msg%type;
4323:
4324: CURSOR failedPOs is
4325: SELECT pbh.bid_number,
4365:
4366:
4367: SELECT wf_poncompl_item_key, contract_type
4368: INTO itemkey, x_contract_type
4369: FROM pon_auction_headers_all
4370: WHERE auction_header_id = x_auction_header_id;
4371:
4372: x_progress := '20: GENERATE_PO_FAILURE_EMAIL auction id: ' || x_auction_header_id || ', ' || 'message suffix: ' || x_msg_suffix || ', ' || 'user name: ' || x_user_name;
4373:
4501: x_itemkey wf_items.ITEM_KEY%TYPE;
4502: x_sequence NUMBER;
4503: x_current_round NUMBER;
4504: x_requistion_based VARCHAR2(12);
4505: x_has_items PON_AUCTION_HEADERS_ALL.HAS_ITEMS_FLAG%TYPE;
4506: x_number_of_failed_pos NUMBER;
4507: x_email_type VARCHAR2(240);
4508: x_allocation_error VARCHAR2(2000);
4509: x_line_number NUMBER;
4517:
4518: x_open_bidding_date date;
4519: x_close_bidding_date date;
4520: x_trading_partner_contact_id number;
4521: x_doctype_id PON_AUCTION_HEADERS_ALL.DOCTYPE_ID%TYPE;
4522: x_trading_partner_name PON_AUCTION_HEADERS_ALL.TRADING_PARTNER_NAME%TYPE;
4523: x_trading_partner_contact_name PON_AUCTION_HEADERS_ALL.TRADING_PARTNER_CONTACT_NAME%TYPE;
4524:
4525: l_workflow_failure VARCHAR2(1);
4518: x_open_bidding_date date;
4519: x_close_bidding_date date;
4520: x_trading_partner_contact_id number;
4521: x_doctype_id PON_AUCTION_HEADERS_ALL.DOCTYPE_ID%TYPE;
4522: x_trading_partner_name PON_AUCTION_HEADERS_ALL.TRADING_PARTNER_NAME%TYPE;
4523: x_trading_partner_contact_name PON_AUCTION_HEADERS_ALL.TRADING_PARTNER_CONTACT_NAME%TYPE;
4524:
4525: l_workflow_failure VARCHAR2(1);
4526:
4519: x_close_bidding_date date;
4520: x_trading_partner_contact_id number;
4521: x_doctype_id PON_AUCTION_HEADERS_ALL.DOCTYPE_ID%TYPE;
4522: x_trading_partner_name PON_AUCTION_HEADERS_ALL.TRADING_PARTNER_NAME%TYPE;
4523: x_trading_partner_contact_name PON_AUCTION_HEADERS_ALL.TRADING_PARTNER_CONTACT_NAME%TYPE;
4524:
4525: l_workflow_failure VARCHAR2(1);
4526:
4527: l_api_name VARCHAR2(30) := ' START_PO_CREATION ';
4585: x_trading_partner_name,
4586: x_trading_partner_contact_name,
4587: x_has_items,
4588: x_current_round
4589: from pon_auction_headers_all
4590: where auction_header_id = p_auction_header_id;
4591:
4592:
4593: if(l_debug_enabled = 'Y') then
4632: end if;
4633:
4634: BEGIN -- main try-catch block --{
4635:
4636: -- since we havent set wf_poncompl_current_round in pon_auction_headers_all
4637: -- as yet, x_current_round will be zero if there was no failure reported earlier
4638:
4639: UPDATE pon_auction_headers_all set
4640: outcome_status = decode(x_current_round, 0, 'OUTCOME_INITIATED', 'OUTCOME_REINITIATED'),
4635:
4636: -- since we havent set wf_poncompl_current_round in pon_auction_headers_all
4637: -- as yet, x_current_round will be zero if there was no failure reported earlier
4638:
4639: UPDATE pon_auction_headers_all set
4640: outcome_status = decode(x_current_round, 0, 'OUTCOME_INITIATED', 'OUTCOME_REINITIATED'),
4641: last_update_date = sysdate
4642: WHERE auction_header_id = p_auction_header_id;
4643:
4760: || p_auction_header_id || ' initiated by ' || p_user_name || ' at '
4761: || to_char(sysdate, 'Dy DD-Mon-YYYY hh24:mi:ss'));
4762: end if;
4763:
4764: UPDATE PON_AUCTION_HEADERS_ALL
4765: SET OUTCOME_STATUS = 'OUTCOME_FAILED'
4766: WHERE AUCTION_HEADER_ID = p_auction_header_id;
4767:
4768: IF(x_requistion_based = 'REQUISITION') THEN
4781:
4782:
4783: log_message('70. generate_pos successful');
4784: /* update auction outcome status to outcome_completed */
4785: UPDATE PON_AUCTION_HEADERS_ALL
4786: SET OUTCOME_STATUS = 'OUTCOME_COMPLETED'
4787: WHERE AUCTION_HEADER_ID = p_auction_header_id;
4788:
4789: l_resultout := 'SUCCESS';
4806: rollback;
4807:
4808: l_resultout := 'FAILURE';
4809:
4810: UPDATE PON_AUCTION_HEADERS_ALL
4811: SET OUTCOME_STATUS = 'OUTCOME_FAILED'
4812: WHERE AUCTION_HEADER_ID = p_auction_header_id;
4813:
4814: x_email_type := 'PON_AUC_PO_CREATE_PO_FAIL';
4847: FROM dual;
4848:
4849: x_itemkey := (to_char(p_auction_header_id)||'-'||to_char(x_sequence));
4850:
4851: -- update pon_auction_headers_all.wf_poncompl_current_round by incrementing by one
4852: -- update pon_bid_headers.po_wf_creation_rnd by incrementing by one
4853:
4854: UPDATE pon_auction_headers_all set
4855: wf_poncompl_item_key = x_itemkey,
4850:
4851: -- update pon_auction_headers_all.wf_poncompl_current_round by incrementing by one
4852: -- update pon_bid_headers.po_wf_creation_rnd by incrementing by one
4853:
4854: UPDATE pon_auction_headers_all set
4855: wf_poncompl_item_key = x_itemkey,
4856: wf_poncompl_current_round = x_current_round+1,
4857: last_update_date = sysdate
4858: WHERE auction_header_id = p_auction_header_id;