[Home] [Help]
PACKAGE BODY: APPS.WIP_DISCRETE_JOB_PROCESSOR
Source
1 PACKAGE BODY wip_discrete_job_processor AS
2 /* $Header: wipcmppb.pls 115.7 2002/11/28 19:28:03 rmahidha ship $ */
3
4
5 PROCEDURE completeAssyItem(p_header_id IN NUMBER,
6 x_err_msg OUT NOCOPY VARCHAR2,
7 x_return_status OUT NOCOPY VARCHAR2) IS
8
9 l_rem_qty NUMBER;
10 l_op_qty NUMBER;
11 l_ret_code NUMBER;
12 l_ret_msg VARCHAR2(240);--size???
13 l_retVal VARCHAR2(4);--retval for inventory update kanban proc, sales order completions
14 l_rowid ROWID;
15 l_wlcRec wip_lpn_completions%ROWTYPE;
16 l_msgCount NUMBER;
17 l_msgData VARCHAR2(240);
18
19 BEGIN
20 SAVEPOINT preProcessing;
21 SELECT *
22 INTO l_wlcRec
23 FROM wip_lpn_completions
24 WHERE p_header_id = header_id;
25
26 WIP_WEIGHTED_AVG.FINAL_COMPLETE(
27 p_org_id => l_wlcRec.organization_id,
28 p_wip_id => l_wlcRec.wip_entity_id,
29 p_pri_qty => l_wlcRec.primary_quantity,
30 p_final_cmp => l_wlcRec.final_completion_flag,
31 p_ret_code => l_ret_code,
32 p_ret_msg => l_ret_msg);
33 if(l_ret_code <> 0) then
34 x_err_msg := fnd_message.get_string('WIP', 'TRANSACTION_FAILED') || ' ' || l_ret_msg;
35 raise FND_API.G_EXC_UNEXPECTED_ERROR;
36 end if;
37
38 UPDATE wip_lpn_completions
39 SET final_completion_flag = nvl(l_wlcRec.final_completion_flag, 'N')
40 WHERE header_id = p_header_id;--rowid = l_wlcRec.rowid;
41
42 SELECT start_quantity - quantity_completed - quantity_scrapped, rowid
43 INTO l_rem_qty, l_rowid
44 FROM wip_discrete_jobs
45 WHERE organization_id = l_wlcRec.organization_id
46 AND wip_entity_id = l_wlcRec.wip_entity_id
47 FOR UPDATE OF quantity_completed;
48
49 --if between the form validation and processing a completion txn was committed
50 --overcompletions not allowed
51 if(l_rem_qty < round(l_wlcRec.primary_quantity, 6)) then
52 x_err_msg := fnd_message.get_string('WIP', 'TRANSACTION_FAILED');
53 raise FND_API.G_EXC_UNEXPECTED_ERROR;
54 end if;
55
56 if(l_wlcRec.operation_seq_num > 0) then
57 SELECT quantity_waiting_to_move
58 INTO l_op_qty
59 FROM wip_operations
60 WHERE organization_id = l_wlcRec.organization_id
61 AND wip_entity_id = l_wlcRec.wip_entity_id
62 AND operation_seq_num = l_wlcRec.operation_seq_num
63 FOR UPDATE OF quantity_waiting_to_move;
64
65 if(l_op_qty < ROUND(l_wlcRec.primary_quantity,6)) then
66 x_err_msg := fnd_message.get_string('WIP', 'TRANSACTION_FAILED') || ' ' || fnd_message.get_string ('WIP', 'OPERATION_PROCESSING_ERROR');
67 raise FND_API.G_EXC_UNEXPECTED_ERROR;
68 end if;
69
70
71 UPDATE wip_operations
72 SET quantity_waiting_to_move = quantity_waiting_to_move -
73 ROUND(l_wlcRec.primary_quantity,6),
74 date_last_moved = l_wlcRec.transaction_date,
75 last_updated_by = l_wlcRec.last_updated_by,
76 last_update_date = sysdate,
77 program_application_id = l_wlcRec.program_application_id,
78 program_id = l_wlcRec.program_id,
79 program_update_date = l_wlcRec.program_update_date
80 WHERE organization_id = l_wlcRec.organization_id
81 AND wip_entity_id = l_wlcRec.wip_entity_id
82 AND operation_seq_num = l_wlcRec.operation_seq_num;
83 end if;
84 if(SQL%NOTFOUND) then
85 x_err_msg := fnd_message.get_string('WIP', 'TRANSACTION_FAILED') || ' ' || fnd_message.get_string('WIP', 'OPERATION_PROCESSING_ERROR');
86 raise FND_API.G_EXC_UNEXPECTED_ERROR;
87 end if;
88
89 if(round(l_wlcRec.primary_quantity, 6) = l_rem_qty) then --txn completes the job
90 UPDATE wip_discrete_jobs
91 SET quantity_completed = quantity_completed +
92 ROUND(l_wlcRec.primary_quantity,6),
93 date_completed = l_wlcRec.transaction_date,
94 status_type = 4,
95 last_updated_by = l_wlcRec.last_updated_by,
96 last_update_date = sysdate,
97 program_application_id = l_wlcRec.program_application_id,
98 program_id = l_wlcRec.program_id,
99 program_update_date = l_wlcRec.program_update_date
100 WHERE rowid = l_rowid;
101 else --txn doesn't complete the job
102 UPDATE wip_discrete_jobs
103 SET quantity_completed = quantity_completed +
104 ROUND(l_wlcRec.primary_quantity,6),
105 last_updated_by = l_wlcRec.last_updated_by,
106 last_update_date = sysdate,
107 program_application_id = l_wlcRec.program_application_id,
108 program_id = l_wlcRec.program_id,
109 program_update_date = l_wlcRec.program_update_date
110 WHERE rowid = l_rowid;
111 end if;
112
113 if(l_wlcRec.kanban_card_id is not null) then
114 inv_kanban_pvt.update_card_supply_status(
115 x_return_status => l_retVal,
116 p_kanban_card_id => l_wlcRec.kanban_card_id,
117 p_supply_status => INV_Kanban_PVT.G_Supply_Status_Full,
118 p_document_type => 5, --discrete job
119 p_document_header_id => l_wlcRec.wip_entity_id);
120
121 if(l_retVal <> fnd_api.G_RET_STS_SUCCESS) then
122 x_err_msg := fnd_message.get_string('WIP', 'TRANSACTION_FAILED') || ' ' || fnd_message.get_string('WIP', 'DISCRETE_JOB_KANBAN_ERROR');
123 raise FND_API.G_EXC_UNEXPECTED_ERROR;
124 end if;
125 end if;
126 /* wip_so_reservations.allocate_completion_to_so(l_wlcRec.organization_id,
127 l_wlcRec.wip_entity_id,
128 l_wlcRec.inventory_item_id,
129 l_wlcRec.header_id,
130 'WLC', --use wip_lpn_completions table
131 l_retVal,
132 l_msgCount,
133 l_msgData);
134 if(l_retVal <> FND_API.G_RET_STS_SUCCESS) then
135 x_err_msg := fnd_message.get_string('WIP', 'TRANSACTION_FAILED') || ' ' || l_msgData;
136 raise FND_API.G_EXC_UNEXPECTED_ERROR;
137 end if;
138 */
139 x_return_status := FND_API.G_RET_STS_SUCCESS;
140
141 EXCEPTION
142 WHEN others Then
143 ROLLBACK TO SAVEPOINT preProcessing;
144 x_return_status := FND_API.G_RET_STS_ERROR;
145
146 END completeAssyItem;
147 END wip_discrete_job_processor;