DBA Data[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;