SHIP CONFIRM API
作者: moonsoft(http://moonsoft.itpub.net)发表于: 2007.05.11 20:34
分类: 分销
出处: http://moonsoft.itpub.net/post/15182/287082
---------------------------------------------------------------
picked ->shipped 中间的ship confirm 如何通过API实现 研究过程
FORM :
/* Formatted on 2007/05/11 18:21 (Formatter Plus v4.8.7) */
PROCEDURE do_action_ship_confirm (p_input_state IN NUMBER)
IS
BEGIN
-- Ship Confirm Rule Changes
-- If ship confirm rule id is null,then find these values
-- else use defaulted values
-- IF g_dlvy_defaults.sc_rule_id IS NULL THEN
-- END IF;
-- In the code below all the Global values are being used,
-- these should have been set correctly on the basis of SC rule(if not null)
-- in get_delivery_defaults API.
-- Will test for all the fields in UT - BOL flag,defer_interface_flag,close flag
-- set intransit flag,ship method, document set
:parameter.ship_method_name := actions.g_dlvy_defaults.ship_method_name;
-- Navigate to Ship Confirm Block and populate parameters
GO_BLOCK ('ship_confirm');
CLEAR_BLOCK;
IF actions.g_dlvy_defaults.sc_rule_id IS NOT NULL
THEN
:ship_confirm.ship_confirm_rule_id :=
actions.g_dlvy_defaults.sc_rule_id;
:ship_confirm.ship_confirm_rule := actions.g_dlvy_defaults.sc_rule_name;
END IF;
-- Fix for bug 4147636
-- Call this procedure set_ship_confirm_options.
-- This will enable/disable the trip and BOL related checkboxes
-- This will also set parameter.create_trip_option based on intransit flag and close trip flags being 'D' or Not 'D'
actions.set_ship_confirm_options;
IF :parameter.create_trip_option = 'Y'
THEN
:ship_confirm.defer_interface_flag :=
actions.g_dlvy_defaults.defer_interface_flag;
IF actions.g_dlvy_defaults.enforce_ship_method = 'Y'
THEN
app_item_property.set_property ('ship_confirm.ship_method_name',
required,
property_on
);
ELSE
app_item_property.set_property ('ship_confirm.ship_method_name',
required,
property_off
);
END IF;
:ship_confirm.actual_departure_date := fnd_standard.system_date;
END IF;
COPY ('N', 'ship_confirm.bill_of_lading_flag');
:ship_confirm.document_set := actions.g_dlvy_defaults.report_set_name;
:ship_confirm.document_set_id := actions.g_dlvy_defaults.report_set_id;
-- bug 4275493: ship_confirm_rule procedure
-- depends on actions.set_ship_confirm_options
-- setting the parameter create_trip_option value.
IF actions.g_dlvy_defaults.sc_rule_id IS NOT NULL
THEN
-- bug 4258951
actions.ship_confirm_rule ('INIT');
ELSIF (actions.g_dlvy_defaults.sc_rule_id IS NULL)
AND (:parameter.create_trip_option = 'Y')
THEN
:ship_confirm.ship_method_name :=
actions.g_dlvy_defaults.ship_method_name;
:ship_confirm.ship_method_code :=
common.get_ship_method_code (:ship_confirm.ship_method_name);
app_item_property.set_property ('ship_confirm.ship_method_name',
item_is_valid,
property_true
);
END IF;
app_item_property.set_property ('ship_confirm.ship_confirm_rule',
item_is_valid,
property_true
);
-- Open Ship Confirm Window after populating the parameters
app_custom.open_window ('SHIP_CONFIRM');
END do_action_ship_confirm;
*************************************************************
common.get_sc_default(p_ship_confirm_rule_id => :ship_confirm.ship_confirm_rule_id,
x_name => :ship_confirm.ship_confirm_rule,
x_ac_intransit_flag => :ship_confirm.autointransit_flag,
x_ac_close_trip_flag => :ship_confirm.autoclose_flag,
x_ac_bol_flag => :ship_confirm.bill_of_lading_flag,
x_ac_defer_interface_flag => :ship_confirm.defer_interface_flag,
x_action_flag => :ship_confirm.action,
x_stage_del_flag => :ship_confirm.stage_del_flag,
x_ship_method_default_flag => l_ship_method_default_flag,
x_ship_method_code => l_ship_method_code,
x_report_set_id => :ship_confirm.document_set_id
);
******************************************************
PROCEDURE get_sc_default(p_ship_confirm_rule_id IN NUMBER,
x_name OUT VARCHAR2,
x_ac_intransit_flag OUT VARCHAR2,
x_ac_close_trip_flag OUT VARCHAR2,
x_ac_bol_flag OUT VARCHAR2,
x_ac_defer_interface_flag OUT VARCHAR2,
x_action_flag OUT VARCHAR2,
x_stage_del_flag OUT VARCHAR2,
x_ship_method_default_flag OUT VARCHAR2,
x_ship_method_code OUT VARCHAR2,
x_report_set_id OUT NUMBER
) IS
CURSOR c_get_sc_default IS
select name,
ac_intransit_flag,
ac_close_trip_flag,
ac_bol_flag,
ac_defer_interface_flag,
action_flag,
stage_del_flag,
ship_method_default_flag,
ship_method_code,
report_set_id
from wsh_ship_confirm_rules
where ship_confirm_rule_id = p_ship_confirm_rule_id;
BEGIN
FOR rec in c_get_sc_default
LOOP
x_name := rec.name;
x_ac_intransit_flag := rec.ac_intransit_flag;
x_ac_close_trip_flag := rec.ac_close_trip_flag;
x_ac_bol_flag := rec.ac_bol_flag;
x_ac_defer_interface_flag := rec.ac_defer_interface_flag;
x_action_flag := rec.action_flag;
x_stage_del_flag := rec.stage_del_flag;
x_ship_method_default_flag := NVL(rec.ship_method_default_flag, 'R');
x_ship_method_code := rec.ship_method_code;
x_report_set_id := rec.report_set_id;
END LOOP;
END get_sc_default;
********************************************************************
actions.do_action_multi(entity => 'TRIP',
action => 'TRIP-CONFIRM',
p_state => 2,
block_name => :PARAMETER.P_TRIP_MODE);
****************************************************
ELSIF action = 'TRIP-CONFIRM' THEN
go_block('trip_confirm');
clear_block;
:parameter.p_trip_multiple_pickup := g_trip_defaults.trip_multiple_pickup;
:trip_confirm.stop_location_code := g_trip_defaults.stop_location_code;
:trip_confirm.defer_interface_flag := g_trip_defaults.defer_interface_flag ;
:trip_confirm.document_set_id := g_trip_defaults.report_set_id;
:trip_confirm.document_set := g_trip_defaults.report_set_name;
if :parameter.p_trip_multiple_pickup = 'N' then
app_item_property.set_property('trip_confirm.defer_interface_flag', ENABLED, PROPERTY_ON);
app_item_property.set_property('trip_confirm.actual_departure_date', ENABLED, PROPERTY_ON);
app_item_property.set_property('trip_confirm.autointransit_flag', ENABLED, PROPERTY_ON);
app_item_property.set_property('trip_confirm.autoclose_flag', ENABLED, PROPERTY_ON);
:trip_confirm.autointransit_flag := 'Y';
:trip_confirm.autoclose_flag := 'Y';
:trip_confirm.actual_departure_date := fnd_standard.system_date;
else
app_item_property.set_property('trip_confirm.actual_departure_date', ENABLED, PROPERTY_OFF);
app_item_property.set_property('trip_confirm.defer_interface_flag', ENABLED, PROPERTY_OFF);
app_item_property.set_property('trip_confirm.autointransit_flag', ENABLED, PROPERTY_OFF);
app_item_property.set_property('trip_confirm.autoclose_flag', ENABLED, PROPERTY_OFF);
copy('N','trip_confirm.autoclose_flag');
copy('N','trip_confirm.autointransit_flag');
copy('N','trip_confirm.defer_interface_flag');
:trip_confirm.actual_departure_date := NULL;
end if;
app_item_property.set_property('trip_confirm.bill_of_lading_flag', ENABLED, PROPERTY_ON);
--Added for MBOL.
app_item_property.set_property('trip_confirm.mbol_flag', ENABLED, PROPERTY_ON);
:trip_confirm.bill_of_lading_flag := 'Y';
--Added for MBOL.
:trip_confirm.mbol_flag := 'Y';
:parameter.p_defer_interface_flag := :trip_confirm.defer_interface_flag;
app_custom.open_window('TRIP_CONFIRM');
return;
***********************************
SELECT oh.header_id,oh.order_number,ol.line_id, ol.inventory_item_id,
ol.pricing_quantity
FROM oe_order_headers_all oh,
oe_order_lines_all ol,
fnd_lookup_values lv,
wsh_delivery_line_status_v wdl
WHERE oh.header_id = ol.header_id
-- and oh.ORDER_NUMBER='234'
AND oh.attribute1 = 'Y'
--AND ol.flow_status_code = 'AWAITING_SHIPPING'
AND lv.lookup_type = 'SHIP_METHOD'
AND oh.shipping_method_code = lv.lookup_code
AND lv.LANGUAGE = 'ZHS'
AND wdl.source_code = 'OE'
AND NVL (oh.attribute15, 'N') != 'Y'
AND wdl.source_line_id = ol.line_id
AND wdl.pick_status = 'Y'
AND lv.meaning = v_ship_method
AND oh.org_id = 101
/* Formatted on 2007/05/11 10:19 (Formatter Plus v4.8.7) */
--部分PICKED
SELECT wdl.*
FROM wsh_delivery_line_status_v wdl
WHERE wdl.source_header_id = 2444
Ship_Confirm_Rule_Id Number
Ship_Confirm_Rule_Name Varchar2(30)
resp_id 21623
resp_appl_id 660
ship_confirm_rule_id
Should be a valid element of wsh_picking_batches.Ship_Confirm_Rule_Id.
ship_confirm_rule_name
Should be a valid element of wsh_Ship_Confirm_rules.name.
/* Formatted on 2007/05/11 13:21 (Formatter Plus v4.8.7) */
-- ship_confirm_rule_id
SELECT DISTINCT (wpb.ship_confirm_rule_id)
FROM wsh_picking_batches wpb
/* Formatted on 2007/05/11 13:21 (Formatter Plus v4.8.7) */
SELECT NAME
FROM wsh_ship_confirm_rules
发货确认
WSH_PICKING_BATCHES_PUB.create_batch
WSH_PICKING_BATCHES_GRP.Create_Batch
FND_API.G_MISS_CHAR
wsh_util_core
actions_custom.do_action_ship_confirm(p_input_state => 1);
*******************************************************
DECLARE
lr_batch_rec WSH_PICKING_BATCHES_PUB.Batch_Info_Rec;
ln_msg_count NUMBER;
ln_batch_id NUMBER;
lc_msg_data VARCHAR2(32767);
lc_return_status VARCHAR2(1000) := NULL;
ln_request_id NUMBER;
ln_i NUMBER;
BEGIN
FND_GLOBAL.apps_initialize ( user_id => 1133,
resp_id => 50238,
resp_appl_id => 101 );
-- Give the data
lr_batch_rec.ORDER_HEADER_ID := 2947;
lr_batch_rec.CUSTOMER_ID := 12268;
lr_batch_rec.INVENTORY_ITEM_ID := 3165;
lr_batch_rec.ORDER_TYPE_ID := 1001;
lr_batch_rec.ORGANIZATION_ID := 101;
lr_batch_rec.Default_Stage_Locator_Id:=21;
lr_batch_rec.Pick_From_locator_Id:=1;
lr_batch_rec.pick_from_subinventory :='Goods';
lr_batch_rec.Default_Stage_Subinventory:='Stage';
lr_batch_rec. ship_confirm_rule_id:=1;
--lr_batch_rec.ship_confirm_rule_name:='TVSN发货确认';
WSH_PICKING_BATCHES_PUB.create_batch (p_api_version => 1.0, p_init_msg_list =>fnd_api.g_false,
p_commit => fnd_api.g_false, x_return_status =>lc_return_status,
x_msg_count => ln_msg_count,
x_msg_data => lc_msg_data,
p_batch_rec => lr_batch_rec,
x_batch_id => ln_batch_id
);
dbms_output.put_line('ln_batch_id: '||ln_batch_id);
dbms_output.put_line('ln_msg_count: '||ln_msg_count);
dbms_output.put_line('lc_msg_data: '||lc_msg_data);
-- dbms_output.put_line('lc_return_status: '||lc_return_status1);
IF ln_batch_id > 0 AND ln_msg_count = 0 THEN
WSH_PICKING_BATCHES_PUB.release_batch (p_api_version => 1.0,
p_init_msg_list => fnd_api.g_false,
p_commit => fnd_api.g_false,
x_return_status => lc_return_status,
x_msg_count => ln_msg_count,
x_msg_data => lc_msg_data,
p_batch_id => ln_batch_id,
p_release_mode => 'CONCURRENT',
x_request_id => ln_request_id) ;
dbms_output.put_line('lc_return_status: '||lc_return_status);
dbms_output.put_line('ln_request_id: '||ln_request_id);
dbms_output.put_line('ln_msg_count: '||ln_msg_count);
dbms_output.put_line('lc_msg_data: '||lc_msg_data);
IF ln_msg_count = 0 AND lc_return_status = 'S' THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
ELSE
ROLLBACK;
END IF;
END;
******************************************
WSH_DELIVERIES_PUB.DELIVERY_ACTION 好像就是这个
Shipment Processing Using APIs 4-5


