1 PACKAGE BODY po_req_template_sv2 AS
2 /* $Header: POXRQT2B.pls 115.9 2003/10/21 20:47:18 nipagarw ship $*/
3
4 /*===========================================================================
5
6 PROCEDURE NAME: get_req_line_info
7
8 ===========================================================================*/
9
10 PROCEDURE get_req_line_info (
11 x_rowid IN VARCHAR2,
12 x_inv_org_id IN NUMBER,
13 x_item_id IN OUT NOCOPY NUMBER,
14 x_item_revision IN OUT NOCOPY VARCHAR2,
15 x_item_description IN OUT NOCOPY VARCHAR2,
16 x_category_id IN OUT NOCOPY NUMBER,
17 x_unit_meas_lookup_code IN OUT NOCOPY VARCHAR2,
18 x_unit_price IN OUT NOCOPY NUMBER,
19 x_vendor_id IN OUT NOCOPY NUMBER,
20 x_vendor_site_id IN OUT NOCOPY NUMBER,
21 x_vendor_contact_id IN OUT NOCOPY NUMBER,
22 x_vendor_product_code IN OUT NOCOPY VARCHAR2,
23 x_suggested_buyer_id IN OUT NOCOPY NUMBER,
24 x_source_type_code IN OUT NOCOPY VARCHAR2,
25 x_source_organization_id IN OUT NOCOPY NUMBER,
26 x_source_subinventory IN OUT NOCOPY VARCHAR2,
27 x_line_type_id IN OUT NOCOPY NUMBER,
28 x_rfq_required_flag IN OUT NOCOPY VARCHAR2,
29 x_vendor_source_context IN OUT NOCOPY VARCHAR2,
30 x_org_id IN OUT NOCOPY NUMBER,
31 x_line_type IN OUT NOCOPY VARCHAR2,
32 x_order_type_lookup_code IN OUT NOCOPY VARCHAR2,
33 x_source_type IN OUT NOCOPY VARCHAR2,
34 x_suggested_buyer IN OUT NOCOPY VARCHAR2,
35 x_vendor_name IN OUT NOCOPY VARCHAR2,
36 x_vendor_contact IN OUT NOCOPY VARCHAR2,
37 x_vendor_site IN OUT NOCOPY VARCHAR2,
38 x_source_organization_name IN OUT NOCOPY VARCHAR2,
39 x_amount IN OUT NOCOPY NUMBER, -- <SERVICES FPJ>
40 x_negotiated_by_preparer_flag IN OUT NOCOPY VARCHAR2 --<DBI FPJ>
41 )
42 IS
43 BEGIN
44
45 -- <SERVICES FPJ>
46 -- Added the column amount to retrieve its value for
47 -- Fixed Price Services lines.
48 SELECT porl.item_id,
49 porl.item_revision,
50 porl.item_description,
51 porl.category_id,
52 porl.unit_meas_lookup_code,
53 porl.unit_price,
54 porl.vendor_id,
55 porl.vendor_site_id,
56 porl.vendor_contact_id,
57 porl.suggested_vendor_product_code,
58 porl.suggested_buyer_id,
59 nvl(porl.source_type_code, 'VENDOR'),
60 porl.source_organization_id,
61 porl.source_subinventory,
62 porl.line_type_id,
63 porl.rfq_required_flag,
64 porl.vendor_source_context,
65 porl.org_id,
66 plt.line_type,
67 plt.order_type_lookup_code,
68 plc.displayed_field,
69 po_inq_sv.get_person_name(porl.suggested_buyer_id),
70 nvl(v.vendor_name,porl.suggested_vendor_name),
71 decode (vc.last_name, NULL, porl.suggested_vendor_contact, vc.last_name||', '||vc.first_name),
72 nvl(vs.vendor_site_code,porl.suggested_vendor_location),
73 ood.organization_name,
74 porl.amount,
75 porl.negotiated_by_preparer_flag
76 INTO x_item_id,
77 x_item_revision,
78 x_item_description,
79 x_category_id,
80 x_unit_meas_lookup_code,
81 x_unit_price,
82 x_vendor_id,
83 x_vendor_site_id,
84 x_vendor_contact_id,
85 x_vendor_product_code,
86 x_suggested_buyer_id,
87 x_source_type_code,
88 x_source_organization_id,
89 x_source_subinventory,
90 x_line_type_id,
91 x_rfq_required_flag,
92 x_vendor_source_context,
93 x_org_id, -- debug
94 x_line_type,
95 x_order_type_lookup_code,
96 x_source_type,
97 x_suggested_buyer,
98 x_vendor_name,
99 x_vendor_contact,
100 x_vendor_site,
101 x_source_organization_name,
102 x_amount,
103 x_negotiated_by_preparer_flag
104 FROM po_lookup_codes plc,
105 org_organization_definitions ood,
106 po_line_types plt,
107 po_vendor_contacts vc,
108 po_vendor_sites vs,
109 po_vendors v,
110 mtl_system_items msi,
111 po_requisition_lines porl
112 WHERE porl.rowid = x_rowid
113 AND nvl(porl.cancel_flag,'N') = 'N'
114 AND nvl(porl.closed_code,'OPEN') <> 'FINALLY CLOSED'
115 AND porl.item_id = msi.inventory_item_id (+)
116 AND msi.organization_id (+) = x_inv_org_id
117 AND nvl(msi.outside_operation_flag,'N') = 'N'
118 AND plt.line_type_id = porl.line_type_id
119 AND plc.lookup_type (+) = 'REQUISITION SOURCE TYPE'
120 AND plc.lookup_code (+) = porl.source_type_code
121 AND v.vendor_id (+) = porl.vendor_id
122 AND vc.vendor_contact_id (+) = porl.vendor_contact_id
123 AND vs.vendor_site_id (+) = porl.vendor_site_id
124 AND ood.organization_id(+) = porl.source_organization_id;
125
126
127
128 EXCEPTION
129 WHEN OTHERS THEN RAISE;
130 END;
131
132 /*===========================================================================
133
134 PROCEDURE NAME: duplicate_express_name
135
136 ===========================================================================*/
137
138 FUNCTION duplicate_express_name (x_express_name VARCHAR2)
139 RETURN BOOLEAN
140 IS
141 dummy_char VARCHAR2(1) := '';
142 BEGIN
143
144 IF x_express_name IS NOT NULL THEN
145
146 BEGIN
147
148 SELECT 'Y'
149 INTO dummy_char
150 FROM po_reqexpress_headers porh
151 WHERE porh.express_name = x_express_name;
152
153 return(TRUE);
154
155 EXCEPTION
156 WHEN NO_DATA_FOUND THEN
157 return(false);
158 WHEN OTHERS THEN
159 return(false);
160 END;
161
162 ELSE
163
164 return (FALSE);
165
166 END IF;
167
168 EXCEPTION
169 WHEN OTHERS THEN RAISE;
170 END;
171
172 /*===========================================================================
173
174 PROCEDURE NAME: duplicate_sequence_number ( iali bug 489705 )
175
176 ===========================================================================*/
177
178 FUNCTION duplicate_sequence_number (X_express_name IN VARCHAR2,
179 X_sequence_num IN NUMBER,
180 X_rowid IN VARCHAR2)
181 RETURN BOOLEAN
182 IS
183 dummy NUMBER;
184 BEGIN
185 IF (X_sequence_num IS NOT NULL) THEN
186 BEGIN
187
188 SELECT 1
189 INTO dummy
190 FROM DUAL
191 WHERE not exists (SELECT 'this line num exists already'
192 FROM PO_REQEXPRESS_LINES
193 WHERE EXPRESS_NAME = X_express_name
194 AND SEQUENCE_NUM = X_sequence_num
195 AND (rowid <> X_rowid OR X_rowid is NULL));
196 return (FALSE);
197 EXCEPTION
198 WHEN NO_DATA_FOUND THEN
199 return (TRUE);
200 WHEN OTHERS THEN
201 return (TRUE);
202 END;
203
204 ELSE
205 return (TRUE);
206
207 END IF;
208
209 EXCEPTION
210 WHEN OTHERS THEN RAISE;
211
212 END; -- duplicate_sequence_number
213
214 /*===========================================================================
215
216 PROCEDURE NAME: inventory_item_cost
217
218 ===========================================================================*/
219
220 FUNCTION inventory_item_cost (x_inventory_item_id VARCHAR2,
221 x_organization_id VARCHAR2)
222 RETURN NUMBER
223 IS
224 x_unit_price NUMBER := 0;
225 BEGIN
226
227 IF (x_organization_id IS NOT NULL AND
228 x_inventory_item_id IS NOT NULL) THEN
229
230 BEGIN
231
232 SELECT item_cost
233 INTO x_unit_price
234 FROM cst_item_costs_for_gl_view
235 WHERE inventory_item_id = x_inventory_item_id
236 AND organization_id = x_organization_id;
237
238 return(x_unit_price);
239
240 EXCEPTION
241 WHEN NO_DATA_FOUND THEN
242 return(0);
243 WHEN OTHERS THEN
244 return(0);
245 END;
246
247 ELSE
248 return (0);
249 END IF;
250
251 EXCEPTION
252 WHEN OTHERS THEN RAISE;
253 END;
254
255 -- debug: This procedure is not needed.
256
257
258 -- Bug 1006562
259 -- Fetches the primary unit of measure for an item.
260 /*===========================================================================
261
262 PROCEDURE NAME: primary_unit_of_measure
263
264 ============================================================================*/
265
266 FUNCTION primary_unit_of_measure (x_inventory_item_id IN VARCHAR2,
267 x_organization_id IN VARCHAR2)
268 RETURN VARCHAR2
269 IS
270 x_primary_unit_of_measure VARCHAR2(100) := NULL;
271 BEGIN
272
273 IF (x_organization_id IS NOT NULL AND
274 x_inventory_item_id IS NOT NULL) THEN
275
276 BEGIN
277
278 SELECT primary_unit_of_measure
279 INTO x_primary_unit_of_measure
280 FROM mtl_system_items
281 WHERE inventory_item_id = x_inventory_item_id
282 AND organization_id = x_organization_id;
283
284 return(x_primary_unit_of_measure);
285
286 EXCEPTION
287 WHEN NO_DATA_FOUND THEN
288 return(NULL);
289 WHEN OTHERS THEN
290 return(NULL);
291 END;
292
293 ELSE
294 return(NULL);
295 END IF;
296
297 EXCEPTION
298 WHEN OTHERS THEN RAISE;
299
300 END primary_unit_of_measure;
301
302 /*===========================================================================
303
304 PROCEDURE NAME: get_order_type
305
306 ===========================================================================*/
307
308 PROCEDURE get_order_type (x_line_type_id IN NUMBER,
309 x_order_type_lookup_code IN OUT NOCOPY VARCHAR2)
310 IS
311 BEGIN
312
313 IF (x_line_type_id IS NOT NULL) THEN
314
315 BEGIN
316
317 SELECT order_type_lookup_code
318 INTO x_order_type_lookup_code
319 FROM po_line_types
320 WHERE line_type_id = x_line_type_id;
321
322 EXCEPTION
323 WHEN NO_DATA_FOUND THEN
324 x_order_type_lookup_code := '';
325 WHEN OTHERS THEN
326 raise;
327 END;
328 END IF;
329
330 EXCEPTION
331 WHEN OTHERS THEN RAISE;
332 END;
333
334 END PO_REQ_TEMPLATE_SV2;