DBA Data[Home] [Help]

PACKAGE BODY: APPS.INV_CREATE_MOVE_ORDER_PVT

Source


1 PACKAGE BODY inv_create_move_order_pvt AS
2   /* $Header: INVTOMMB.pls 120.0 2005/05/25 04:58:37 appldev noship $ */
3 
4   --  Global constant holding the package name
5 
6   g_pkg_name CONSTANT VARCHAR2(30) := 'INV_Create_Move_Order_PVT';
7   g_version_printed   BOOLEAN      := FALSE;
8 
9   PROCEDURE print_debug(p_message IN VARCHAR2, p_module IN VARCHAR2, p_level NUMBER DEFAULT 9) IS
10   BEGIN
11     IF NOT g_version_printed THEN
12       inv_log_util.TRACE('$Header: INVTOMMB.pls 120.0 2005/05/25 04:58:37 appldev noship $', g_pkg_name, 9);
13       g_version_printed  := TRUE;
14     END IF;
15 
16     inv_log_util.TRACE(p_message, g_pkg_name || '.' || p_module, p_level);
17   END;
18 
19   --
20   -- Create_Move_Order : This procedure would create a move order from
21   --                     minmax planning with source type subinventory transfer
22   --        or replenishment
23 
24   FUNCTION create_move_orders(
25     p_item_id                IN NUMBER
26   , p_quantity               IN NUMBER
27   , p_secondary_quantity     IN NUMBER   DEFAULT NULL          --INVCONV changes
28   , p_need_by_date           IN DATE
29   , p_primary_uom_code       IN VARCHAR2
30   , p_secondary_uom_code     IN VARCHAR2 DEFAULT NULL          --INVCONV changes
31   , p_grade_code             IN VARCHAR2 DEFAULT NULL          --INVCONV changes
32   , p_user_id                IN NUMBER
33   , p_organization_id        IN NUMBER
34   , p_src_type               IN NUMBER
35   , p_src_subinv             IN VARCHAR2
36   , p_subinv                 IN VARCHAR2
37   , p_locator_id             IN NUMBER   DEFAULT NULL
38   , p_reference              IN VARCHAR2 DEFAULT NULL
39   , p_reference_source       IN NUMBER   DEFAULT NULL
40   , p_reference_type         IN NUMBER   DEFAULT NULL
41   )
42     RETURN VARCHAR2 IS
43     l_x_trohdr_rec         inv_move_order_pub.trohdr_rec_type;
44     l_x_trolin_tbl         inv_move_order_pub.trolin_tbl_type;
45     l_trohdr_rec           inv_move_order_pub.trohdr_rec_type;
46     l_trolin_tbl           inv_move_order_pub.trolin_tbl_type;
47     l_return_status        VARCHAR2(1)                        := fnd_api.g_ret_sts_success;
48     l_msg_count            NUMBER;
49     l_msg_data             VARCHAR2(240);
50     msg                    VARCHAR2(2000);
51     l_header_id            NUMBER                             := fnd_api.g_miss_num;
52     l_line_num             NUMBER                             := 0;
53     l_order_count          NUMBER                             := 1;
54     l_approval             NUMBER;
55     l_debug                NUMBER                             := NVL(fnd_profile.VALUE('INV_DEBUG_TRACE'), 0);
56     l_module_name CONSTANT VARCHAR2(30)                       := 'Create_move_orders';
57   BEGIN
58     /*inv_debug.message('In create transfer order');*/
59     IF l_debug = 1 THEN
60       print_debug('Input Parameters are', l_module_name, 3);
61       print_debug('p_item_id           => ' || p_item_id, l_module_name, 3);
62       print_debug('p_quantity          => ' || p_quantity, l_module_name, 3);
63       print_debug('p_need_by_date      => ' || p_need_by_date, l_module_name, 3);
64       print_debug('p_primary_uom_code  => ' || p_primary_uom_code, l_module_name, 3);
65       print_debug('p_user_id           => ' || p_user_id, l_module_name, 3);
66       print_debug('p_organization_id   => ' || p_organization_id, l_module_name, 3);
67       print_debug('p_src_type          => ' || p_src_type, l_module_name, 3);
68       print_debug('p_src_subinv        => ' || p_src_subinv, l_module_name, 3);
69       print_debug('p_subinv            => ' || p_subinv, l_module_name, 3);
70       print_debug('p_locator_id        => ' || p_locator_id, l_module_name, 3);
71       print_debug('p_reference         => ' || p_reference, l_module_name, 3);
72       print_debug('p_reference_source  => ' || p_reference_source, l_module_name, 3);
73       print_debug('p_reference_type    => ' || p_reference_type, l_module_name, 3);
74     END IF;
75 
76     --
77     -- From now onwards(Patchset J), Move Orders should also honor
78     -- the profile value set at the  profile "INV: RC Requisition Approval"
79     -- This profile can have 3 values:
80     -- (Lookup Type 'MTL_REQUISITION_APPROVAL' defined in MFG_LOOKUPS)
81     --  1- Pre-approved
82     --  2- Pre-approve move orders only (Incomplete)
83     --  3- Approval Required
84     --
85     l_approval := to_number(nvl(FND_PROFILE.VALUE('RC_REQUISITION_APPROVAL'),'2'));
86     IF l_debug = 1 THEN
87        print_debug('Approval Status profile is: ' || l_approval
88                    ,l_module_name
89                    ,3);
90     END IF;
91     --
92     -- Converting these codes to the ones defined in MFG_LOOKUPS under the
93     -- lookup type'MTL_TXN_REQUEST_STATUS'.
94     --  IF  l_approval = 3  THEN
95     --    l_approval := 1; -- Incomplete
96     --  ELSE
97     --    l_approval := 7; -- Pre-approved
98     --  END IF;
99     --
100     IF  l_approval = 3  THEN
101       l_approval := 1; -- Incomplete
102     ELSE
103       l_approval := 7; -- Pre Approved
104     END IF;
105     IF l_debug = 1 THEN
106        print_debug('Approval Status for the MO Header and Lines : ' || l_approval
107                    ,l_module_name
108                    ,3);
109     END IF;
110 
111     l_trohdr_rec.created_by                             := p_user_id;
112     l_trohdr_rec.creation_date                          := SYSDATE;
113     l_trohdr_rec.date_required                          := p_need_by_date;
114     l_trohdr_rec.from_subinventory_code                 := p_src_subinv;
115     l_trohdr_rec.header_status                          := l_approval;
116     l_trohdr_rec.last_updated_by                        := p_user_id;
117     l_trohdr_rec.last_update_date                       := SYSDATE;
118     l_trohdr_rec.last_update_login                      := p_user_id;
119     l_trohdr_rec.organization_id                        := p_organization_id;
120     l_trohdr_rec.status_date                            := SYSDATE;
121     l_trohdr_rec.to_subinventory_code                   := p_subinv;
122     l_trohdr_rec.move_order_type                        := inv_globals.g_move_order_replenishment;
123     l_trohdr_rec.transaction_type_id                    := inv_globals.g_type_transfer_order_subxfr;
124     l_trohdr_rec.db_flag                                := fnd_api.g_true;
125     l_trohdr_rec.operation                              := inv_globals.g_opr_create;
126     l_line_num                                          := l_line_num + 1;
127     l_trolin_tbl(l_order_count).created_by              := fnd_global.user_id;
128     l_trolin_tbl(l_order_count).creation_date           := SYSDATE;
129     l_trolin_tbl(l_order_count).date_required           := p_need_by_date;
130     l_trolin_tbl(l_order_count).from_subinventory_code  := p_src_subinv;
131     l_trolin_tbl(l_order_count).inventory_item_id       := p_item_id;
132     l_trolin_tbl(l_order_count).last_updated_by         := fnd_global.user_id;
133     l_trolin_tbl(l_order_count).last_update_date        := SYSDATE;
134     l_trolin_tbl(l_order_count).last_update_login       := fnd_global.login_id;
135     l_trolin_tbl(l_order_count).line_id                 := fnd_api.g_miss_num;
136     l_trolin_tbl(l_order_count).line_number             := l_line_num;
137     l_trolin_tbl(l_order_count).line_status             := l_approval;
138     l_trolin_tbl(l_order_count).organization_id         := p_organization_id;
139     l_trolin_tbl(l_order_count).quantity                := p_quantity;
140     l_trolin_tbl(l_order_count).secondary_quantity      := p_secondary_quantity; 	-- INVCONV changes
141     l_trolin_tbl(l_order_count).status_date             := SYSDATE;
142     l_trolin_tbl(l_order_count).to_subinventory_code    := p_subinv;
143     l_trolin_tbl(l_order_count).uom_code                := p_primary_uom_code;
144     l_trolin_tbl(l_order_count).secondary_uom           := p_secondary_uom_code; 	-- INVCONV changes
145     l_trolin_tbl(l_order_count).grade_code              := p_grade_code;        	-- INVCONV changes
146     l_trolin_tbl(l_order_count).transaction_type_id     := inv_globals.g_type_transfer_order_subxfr;
147 
148     l_trolin_tbl(l_order_count).db_flag                 := fnd_api.g_true;
149     l_trolin_tbl(l_order_count).operation               := inv_globals.g_opr_create;
150 
151     /*Patchset J:Enhancements:Health Care Project*/
152     IF (inv_control.g_current_release_level >= inv_release.g_j_release_level) THEN
153       print_debug('Patchset J:PAR replenish Counts Project', l_module_name, 9);
154       l_trolin_tbl(l_order_count).REFERENCE      := p_reference;
155       l_trolin_tbl(l_order_count).reference_id   := p_reference_source;
156 
157       IF p_reference_type = 10 THEN
158         l_trolin_tbl(l_order_count).reference_type_code  := inv_transfer_order_pvt.g_ref_type_repl_count;
159       ELSE
160         l_trolin_tbl(l_order_count).reference_type_code  := inv_transfer_order_pvt.g_ref_type_reord_point;
161       END IF;
162 
163       l_trolin_tbl(l_order_count).to_locator_id  := p_locator_id;
164     END IF;
165 
166     /*inv_debug.message('calling inv_transfer_order_pvt.process_transfer_order');*/
167     inv_transfer_order_pvt.process_transfer_order(
168       p_api_version_number         => 1.0
169     , p_init_msg_list              => 'T'
170     , x_return_status              => l_return_status
171     , x_msg_count                  => l_msg_count
172     , x_msg_data                   => l_msg_data
173     , p_trohdr_rec                 => l_trohdr_rec
174     , p_trolin_tbl                 => l_trolin_tbl
175     , x_trohdr_rec                 => l_x_trohdr_rec
176     , x_trolin_tbl                 => l_x_trolin_tbl
177     );
178 
179     IF (l_debug = 1) THEN
180       print_debug('Return status from Process Transfer Order is ' || l_return_status, l_module_name, 9);
181     END IF;
182 
183     IF l_return_status = fnd_api.g_ret_sts_unexp_error THEN
184       fnd_msg_pub.add_exc_msg(g_pkg_name, 'Create_move_orders');
185       RAISE fnd_api.g_exc_error;
186     ELSIF l_return_status = fnd_api.g_ret_sts_error THEN
187       fnd_msg_pub.add_exc_msg(g_pkg_name, 'Create_move_orders');
188       RAISE fnd_api.g_exc_error;
189     END IF;
190 
191     RETURN l_return_status;
192   EXCEPTION
193     WHEN fnd_api.g_exc_error THEN
194       RAISE fnd_api.g_exc_error;
195     WHEN OTHERS THEN
196       IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
197         fnd_msg_pub.add_exc_msg(g_pkg_name, 'Create_Move_Orders');
198       END IF;
199 
200       RAISE fnd_api.g_exc_unexpected_error;
201   END create_move_orders;
202 END inv_create_move_order_pvt;