[Home] [Help]
PACKAGE BODY: APPS.PO_VAL_PRICE_DIFFS
Source
1 PACKAGE BODY PO_VAL_PRICE_DIFFS AS
2 -- $Header: PO_VAL_PRICE_DIFFS.plb 120.1 2006/08/16 22:46:53 dedelgad noship $
3
4 c_entity_type_PRICE_DIFF CONSTANT VARCHAR2(30) := PO_VALIDATIONS.c_entity_type_PRICE_DIFF;
5
6 -- Constants for columns.
7 c_PRICE_DIFFERENTIAL_NUM CONSTANT VARCHAR2(30) := 'PRICE_DIFFERENTIAL_NUM';
8 c_PRICE_TYPE CONSTANT VARCHAR2(30) := 'PRICE_TYPE';
9 c_MAX_MULTIPLIER CONSTANT VARCHAR2(30) := 'MAX_MULTIPLIER';
10 c_MIN_MULTIPLIER CONSTANT VARCHAR2(30) := 'MIN_MULTIPLIER';
11 c_MULTIPLIER CONSTANT VARCHAR2(30) := 'MULTIPLIER';
12 --<Begin Bug 5415284> Constants for MIN and MAX token names
13 c_MIN CONSTANT VARCHAR2(30) := 'MIN';
14 c_MAX CONSTANT VARCHAR2(30) := 'MAX';
15 --<End Bug 5415284>
16
17 c_PO_LINE CONSTANT VARCHAR2(30) := 'PO LINE';
18 c_BLANKET_LINE CONSTANT VARCHAR2(30) := 'BLANKET LINE';
19 c_PRICE_BREAK CONSTANT VARCHAR2(30) := 'PRICE BREAK';
20
21
22 ---------------------------------------------------------------------------
23 -- Modules for debugging.
24 ---------------------------------------------------------------------------
25
26 -- The module base for this package.
27 D_PACKAGE_BASE CONSTANT VARCHAR2(50) :=
28 PO_LOG.get_package_base('PO_VAL_PRICE_DIFFS');
29
30 -- The module base for the subprogram.
31 D_max_mul_ge_zero CONSTANT VARCHAR2(100) :=
32 PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'max_mul_ge_zero');
33
34 D_max_mul_ge_min_mul CONSTANT VARCHAR2(100) :=
35 PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'max_mul_ge_min_mul');
36
37 D_min_mul_ge_zero CONSTANT VARCHAR2(100) :=
38 PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'min_mul_ge_zero');
39
40 D_mul_ge_zero CONSTANT VARCHAR2(100) :=
41 PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'mul_ge_zero');
42
43 D_unique_price_diff_num CONSTANT VARCHAR2(100) :=
44 PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'unique_price_diff_num');
45
46 D_price_diff_num_gt_zero CONSTANT VARCHAR2(100) :=
47 PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'price_diff_num_gt_zero');
48
49 D_unique_price_type CONSTANT VARCHAR2(100) :=
50 PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'unique_price_type');
51
52 D_spo_price_type_on_src_doc CONSTANT VARCHAR2(100) :=
53 PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'spo_price_type_on_src_doc');
54
55 D_spo_mul_btwn_min_max CONSTANT VARCHAR2(100) :=
56 PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'spo_mul_btwn_min_max');
57
58 D_spo_mul_ge_min CONSTANT VARCHAR2(100) :=
59 PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'spo_mul_ge_min');
60
61
62 -------------------------------------------------------------------------------
63 -- This procedure determines if max mulitipliers are greater than or equal to
64 -- zero. If not, return a failure.
65 -------------------------------------------------------------------------------
66 PROCEDURE max_mul_ge_zero(
67 p_price_differential_id_tbl IN PO_TBL_NUMBER
68 , p_max_multiplier_tbl IN PO_TBL_NUMBER
69 , x_results IN OUT NOCOPY PO_VALIDATION_RESULTS_TYPE
70 , x_result_type OUT NOCOPY VARCHAR2
71 )
72 IS
73 BEGIN
74
75 PO_VALIDATION_HELPER.greater_or_equal_zero(
76 p_calling_module => D_max_mul_ge_zero
77 , p_null_allowed_flag => PO_CORE_S.g_parameter_YES
78 , p_value_tbl => p_max_multiplier_tbl
79 , p_entity_id_tbl => p_price_differential_id_tbl
80 , p_entity_type => c_entity_type_PRICE_DIFF
81 , p_column_name => c_MAX_MULTIPLIER
82 , p_message_name => PO_MESSAGE_S.PO_ALL_ENTER_VALUE_GE_ZERO
83 , x_results => x_results
84 , x_result_type => x_result_type
85 );
86
87 END max_mul_ge_zero;
88
89 -------------------------------------------------------------------------------
90 -- This procedure determines if max multiplier is greater than or equal to
91 -- min multiplier. If not, return a failure.
92 -------------------------------------------------------------------------------
93 PROCEDURE max_mul_ge_min_mul(
94 p_price_differential_id_tbl IN PO_TBL_NUMBER
95 , p_min_multiplier_tbl IN PO_TBL_NUMBER
96 , p_max_multiplier_tbl IN PO_TBL_NUMBER
97 , x_results IN OUT NOCOPY PO_VALIDATION_RESULTS_TYPE
98 , x_result_type OUT NOCOPY VARCHAR2
99 )
100 IS
101 BEGIN
102
103 PO_VALIDATION_HELPER.num1_less_or_equal_num2(
104 p_calling_module => D_max_mul_ge_min_mul
105 , p_num1_tbl => p_min_multiplier_tbl
106 , p_num2_tbl => p_max_multiplier_tbl
107 , p_entity_id_tbl => p_price_differential_id_tbl
108 , p_entity_type => c_entity_type_PRICE_DIFF
109 , p_column_name => NULL
110 , p_message_name => PO_MESSAGE_S.PO_SVC_MAX_LT_MIN_MULTIPLIER
111 , x_results => x_results
112 , x_result_type => x_result_type
113 );
114
115 END max_mul_ge_min_mul;
116
117 -------------------------------------------------------------------------------
118 -- This procedure determines if min mulitipliers are greater than or
119 -- equal to zero. If not, return a failure.
120 -------------------------------------------------------------------------------
121 PROCEDURE min_mul_ge_zero(
122 p_price_differential_id_tbl IN PO_TBL_NUMBER
123 , p_min_multiplier_tbl IN PO_TBL_NUMBER
124 , x_results IN OUT NOCOPY PO_VALIDATION_RESULTS_TYPE
125 , x_result_type OUT NOCOPY VARCHAR2
126 )
127 IS
128 BEGIN
129
130 PO_VALIDATION_HELPER.greater_or_equal_zero(
131 p_calling_module => D_min_mul_ge_zero
132 , p_null_allowed_flag => PO_CORE_S.g_parameter_YES
133 , p_value_tbl => p_min_multiplier_tbl
134 , p_entity_id_tbl => p_price_differential_id_tbl
135 , p_entity_type => c_entity_type_PRICE_DIFF
136 , p_column_name => c_MIN_MULTIPLIER
137 , p_message_name => PO_MESSAGE_S.PO_ALL_ENTER_VALUE_GE_ZERO
138 , x_results => x_results
139 , x_result_type => x_result_type
140 );
141
142 END min_mul_ge_zero;
143
144 -------------------------------------------------------------------------------
145 -- This procedure determines if mulitipliers are greater than or
146 -- equal to zero. If not, return a failure.
147 -------------------------------------------------------------------------------
148 PROCEDURE mul_ge_zero(
149 p_price_differential_id_tbl IN PO_TBL_NUMBER
150 , p_multiplier_tbl IN PO_TBL_NUMBER
151 , x_results IN OUT NOCOPY PO_VALIDATION_RESULTS_TYPE
152 , x_result_type OUT NOCOPY VARCHAR2
153 )
154 IS
155 BEGIN
156
157 PO_VALIDATION_HELPER.greater_or_equal_zero(
158 p_calling_module => D_mul_ge_zero
159 , p_null_allowed_flag => PO_CORE_S.g_parameter_YES
160 , p_value_tbl => p_multiplier_tbl
161 , p_entity_id_tbl => p_price_differential_id_tbl
162 , p_entity_type => c_entity_type_PRICE_DIFF
163 , p_column_name => c_MULTIPLIER
164 , p_message_name => PO_MESSAGE_S.PO_ALL_ENTER_VALUE_GE_ZERO
165 , x_results => x_results
166 , x_result_type => x_result_type
167 );
168
169 END mul_ge_zero;
170
171 -------------------------------------------------------------------------------
172 -- This procedure determines if the price differentials have unique price
173 -- differentials numbers. If not, return a failure.
174 -------------------------------------------------------------------------------
175 -- Assumption:
176 -- All of the unposted data will be passed in
177 -- to this routine in order to get accurate results.
178 PROCEDURE unique_price_diff_num(
179 p_price_differential_id_tbl IN PO_TBL_NUMBER
180 , p_entity_id_tbl IN PO_TBL_NUMBER
181 , p_entity_type_tbl IN PO_TBL_VARCHAR30
182 , p_price_differential_num_tbl IN PO_TBL_NUMBER
183 , x_result_set_id IN OUT NOCOPY NUMBER
184 , x_result_type OUT NOCOPY VARCHAR2
185 )
186 IS
187 BEGIN
188
189 PO_VALIDATION_HELPER.price_diff_value_unique(
190 p_calling_module => D_unique_price_diff_num
191 , p_price_diff_id_tbl => p_price_differential_id_tbl
192 , p_entity_id_tbl => p_entity_id_tbl
193 , p_entity_type_tbl => p_entity_type_tbl
194 , p_unique_value_tbl => PO_TYPE_CONVERTER.to_po_tbl_varchar4000(p_price_differential_num_tbl)
195 , p_column_name => c_PRICE_DIFFERENTIAL_NUM
196 , p_message_name => PO_MESSAGE_S.PO_SVC_NON_UNIQUE_PRC_DIFF_NUM
197 , x_result_set_id => x_result_set_id
198 , x_result_type => x_result_type
199 );
200
201 END unique_price_diff_num;
202
203 -------------------------------------------------------------------------------
204 -- This procedure determines if price differential number are greater than
205 -- zero. If not, return a failure.
206 -------------------------------------------------------------------------------
207 PROCEDURE price_diff_num_gt_zero(
208 p_price_differential_id_tbl IN PO_TBL_NUMBER
209 , p_price_differential_num_tbl IN PO_TBL_NUMBER
210 , x_results IN OUT NOCOPY PO_VALIDATION_RESULTS_TYPE
211 , x_result_type OUT NOCOPY VARCHAR2
212 )
213 IS
214 BEGIN
215
216 PO_VALIDATION_HELPER.greater_than_zero(
217 p_calling_module => D_price_diff_num_gt_zero
218 , p_null_allowed_flag => PO_CORE_S.g_parameter_NO
219 , p_value_tbl => p_price_differential_num_tbl
220 , p_entity_id_tbl => p_price_differential_id_tbl
221 , p_entity_type => c_entity_type_PRICE_DIFF
222 , p_column_name => c_PRICE_DIFFERENTIAL_NUM
223 , p_message_name => PO_MESSAGE_S.PO_ALL_ENTER_VALUE_GT_ZERO
224 , x_results => x_results
225 , x_result_type => x_result_type
226 );
227
228 END price_diff_num_gt_zero;
229
230 -------------------------------------------------------------------------------
231 -- This procedure determines if the price differentials have unique price
232 -- types. If not, return a failure.
233 -------------------------------------------------------------------------------
234 -- Assumption:
235 -- All of the unposted data will be passed in
236 -- to this routine in order to get accurate results.
237 PROCEDURE unique_price_type(
238 p_price_differential_id_tbl IN PO_TBL_NUMBER
239 , p_entity_id_tbl IN PO_TBL_NUMBER
240 , p_entity_type_tbl IN PO_TBL_VARCHAR30
241 , p_price_type_tbl IN PO_TBL_VARCHAR30
242 , x_result_set_id IN OUT NOCOPY NUMBER
243 , x_result_type OUT NOCOPY VARCHAR2
244 )
245 IS
246 BEGIN
247
248 PO_VALIDATION_HELPER.price_diff_value_unique(
249 p_calling_module => D_unique_price_type
250 , p_price_diff_id_tbl => p_price_differential_id_tbl
251 , p_entity_id_tbl => p_entity_id_tbl
252 , p_entity_type_tbl => p_entity_type_tbl
253 , p_unique_value_tbl => PO_TYPE_CONVERTER.to_po_tbl_varchar4000(p_price_type_tbl)
254 , p_column_name => c_PRICE_TYPE
255 , p_message_name => PO_MESSAGE_S.PO_SVC_NON_UNIQUE_PRICE_TYPE
256 , x_result_set_id => x_result_set_id
257 , x_result_type => x_result_type
258 );
259
260 END unique_price_type;
261
262 -------------------------------------------------------------------------------
263 -- This procedure determines if the price type on a SPO line is an enabled
264 -- price type on the referenced BPA line or price break.
265 -- If not, return a failure.
266 -------------------------------------------------------------------------------
267 PROCEDURE spo_price_type_on_src_doc(
268 p_price_differential_id_tbl IN PO_TBL_NUMBER
269 , p_entity_type_tbl IN PO_TBL_VARCHAR30
270 , p_from_line_location_id_tbl IN PO_TBL_NUMBER
271 , p_from_line_id_tbl IN PO_TBL_NUMBER
272 , p_price_type_tbl IN PO_TBL_VARCHAR30
273 , x_result_set_id IN OUT NOCOPY NUMBER
274 , x_result_type OUT NOCOPY VARCHAR2
275 )
276 IS
277 d_mod CONSTANT VARCHAR2(100) := D_spo_price_type_on_src_doc;
278 BEGIN
279
280 IF PO_LOG.d_proc THEN
281 PO_LOG.proc_begin(d_mod,'p_price_differential_id_tbl',p_price_differential_id_tbl);
282 PO_LOG.proc_begin(d_mod,'p_entity_type_tbl',p_entity_type_tbl);
283 PO_LOG.proc_begin(d_mod,'p_from_line_location_id_tbl',p_from_line_location_id_tbl);
284 PO_LOG.proc_begin(d_mod,'p_from_line_id_tbl',p_from_line_id_tbl);
285 PO_LOG.proc_begin(d_mod,'p_price_type_tbl',p_price_type_tbl);
286 PO_LOG.proc_begin(d_mod,'x_result_set_id',x_result_set_id);
287 END IF;
288
289 IF (x_result_set_id IS NULL) THEN
290 x_result_set_id := PO_VALIDATIONS.next_result_set_id();
291 END IF;
292
293 FORALL i IN 1 .. p_price_differential_id_tbl.COUNT
294 INSERT INTO PO_VALIDATION_RESULTS_GT
295 ( result_set_id
296 , entity_type
297 , entity_id
298 , column_name
299 , column_val
300 , message_name
301 )
302 SELECT
303 x_result_set_id
304 , c_entity_type_PRICE_DIFF
305 , p_price_differential_id_tbl(i)
306 , c_PRICE_TYPE
307 , p_price_type_tbl(i)
308 , PO_MESSAGE_S.PO_SVC_PRC_TYPE_NOT_ON_SRC_DOC
309 FROM DUAL
310 WHERE
311 p_entity_type_tbl(i) = c_PO_LINE
312 AND EXISTS
313 ( SELECT null
314 FROM
315 PO_PRICE_DIFFERENTIALS SRC_PRICE_DIFF
316 WHERE
317 SRC_PRICE_DIFF.entity_id =
318 NVL(p_from_line_location_id_tbl(i),p_from_line_id_tbl(i))
319 AND SRC_PRICE_DIFF.entity_type =
320 NVL2(p_from_line_location_id_tbl(i),c_PRICE_BREAK,c_BLANKET_LINE)
321 AND SRC_PRICE_DIFF.enabled_flag = 'N'
322 AND SRC_PRICE_DIFF.price_type = p_price_type_tbl(i)
323 )
324 ;
325
326 IF (SQL%ROWCOUNT > 0) THEN
327 x_result_type := PO_VALIDATIONS.c_result_type_FAILURE;
328 ELSE
329 x_result_type := PO_VALIDATIONS.c_result_type_SUCCESS;
330 END IF;
331
332 IF PO_LOG.d_proc THEN
333 PO_VALIDATIONS.log_validation_results_gt(d_mod,9,x_result_set_id);
334 PO_LOG.proc_end(d_mod,'x_result_type',x_result_type);
335 PO_LOG.proc_end(d_mod,'x_result_set_id',x_result_set_id);
336 END IF;
337
338 EXCEPTION
339 WHEN OTHERS THEN
340 IF PO_LOG.d_exc THEN
341 PO_LOG.exc(d_mod,0,NULL);
342 END IF;
343 RAISE;
344
345 END spo_price_type_on_src_doc;
346
347 -------------------------------------------------------------------------------
348 -- This procedure determines if the multiplier on a SPO line is between
349 -- the min and max multiplier specified on the price differential of the
350 -- referenced BPA line or price break. If not, return a failure.
351 -------------------------------------------------------------------------------
352 PROCEDURE spo_mul_btwn_min_max(
353 p_price_differential_id_tbl IN PO_TBL_NUMBER
354 , p_entity_type_tbl IN PO_TBL_VARCHAR30
355 , p_from_line_location_id_tbl IN PO_TBL_NUMBER
356 , p_from_line_id_tbl IN PO_TBL_NUMBER
357 , p_multiplier_tbl IN PO_TBL_NUMBER
358 , p_price_type_tbl IN PO_TBL_VARCHAR30 --Bug 5415284
359 , x_result_set_id IN OUT NOCOPY NUMBER
360 , x_result_type OUT NOCOPY VARCHAR2
361 )
362 IS
363 d_mod CONSTANT VARCHAR2(100) := D_spo_mul_btwn_min_max;
364 BEGIN
365
366 IF PO_LOG.d_proc THEN
367 PO_LOG.proc_begin(d_mod,'p_price_differential_id_tbl',p_price_differential_id_tbl);
368 PO_LOG.proc_begin(d_mod,'p_entity_type_tbl',p_entity_type_tbl);
369 PO_LOG.proc_begin(d_mod,'p_from_line_location_id_tbl',p_from_line_location_id_tbl);
370 PO_LOG.proc_begin(d_mod,'p_from_line_id_tbl',p_from_line_id_tbl);
371 PO_LOG.proc_begin(d_mod,'p_multiplier_tbl',p_multiplier_tbl);
372 PO_LOG.proc_begin(d_mod,'p_price_type_tbl',p_price_type_tbl);
373 PO_LOG.proc_begin(d_mod,'x_result_set_id',x_result_set_id);
374 END IF;
375
376 IF (x_result_set_id IS NULL) THEN
377 x_result_set_id := PO_VALIDATIONS.next_result_set_id();
378 END IF;
379
380 FORALL i IN 1 .. p_price_differential_id_tbl.COUNT
381 INSERT INTO PO_VALIDATION_RESULTS_GT
382 ( result_set_id
383 , entity_type
384 , entity_id
385 , column_name
386 , column_val
387 , message_name
388 --<Begin Bug 5415284> TOKENS IN PRICE DIFFERNTIAL VALIDATION MESSAGE ARE NOT REPLACED
389 , token1_name
390 , token1_value
391 , token2_name
392 , token2_value
393 --<End Bug 5415284>
394 )
395 SELECT
396 x_result_set_id
397 , c_entity_type_PRICE_DIFF
398 , p_price_differential_id_tbl(i)
399 , c_MULTIPLIER
400 , p_multiplier_tbl(i)
401 , PO_MESSAGE_S.PO_SVC_MULTIPLIER_BTWN_MIN_MAX
402 --<Begin Bug 5415284> Removed the EXISTS statement from the WHERE clause
403 , c_MIN
404 , SRC_PRICE_DIFF.min_multiplier
405 , c_MAX
406 , SRC_PRICE_DIFF.max_multiplier
407 FROM PO_PRICE_DIFFERENTIALS SRC_PRICE_DIFF
408 WHERE
409 p_entity_type_tbl(i) = c_PO_LINE
410 AND
411 SRC_PRICE_DIFF.entity_id =
412 NVL(p_from_line_location_id_tbl(i),p_from_line_id_tbl(i))
413 AND SRC_PRICE_DIFF.entity_type =
414 NVL2(p_from_line_location_id_tbl(i),c_PRICE_BREAK,c_BLANKET_LINE)
415 --Bug 5415284 - Added this filter to insure we retreive a unique price differential.
416 AND SRC_PRICE_DIFF.price_type = p_price_type_tbl(i)
417 AND SRC_PRICE_DIFF.max_multiplier IS NOT NULL
418 AND ( p_multiplier_tbl(i) < SRC_PRICE_DIFF.min_multiplier
419 OR p_multiplier_tbl(i) > SRC_PRICE_DIFF.max_multiplier
420 );
421
422 IF (SQL%ROWCOUNT > 0) THEN
423 x_result_type := PO_VALIDATIONS.c_result_type_FAILURE;
424 ELSE
425 x_result_type := PO_VALIDATIONS.c_result_type_SUCCESS;
426 END IF;
427
428 IF PO_LOG.d_proc THEN
429 PO_VALIDATIONS.log_validation_results_gt(d_mod,9,x_result_set_id);
430 PO_LOG.proc_end(d_mod,'x_result_type',x_result_type);
431 PO_LOG.proc_end(d_mod,'x_result_set_id',x_result_set_id);
432 END IF;
433
434 EXCEPTION
435 WHEN OTHERS THEN
436 IF PO_LOG.d_exc THEN
437 PO_LOG.exc(d_mod,0,NULL);
438 END IF;
439 RAISE;
440
441 END spo_mul_btwn_min_max;
442
443 -------------------------------------------------------------------------------
444 -- This procedure determines if the multiplier on a SPO line is no less than
445 -- the min multiplier specified on the price differential of the referenced
446 -- BPA line or price break (when the max multiplier is null).
447 -- If not, return a failure.
448 -------------------------------------------------------------------------------
449 PROCEDURE spo_mul_ge_min(
450 p_price_differential_id_tbl IN PO_TBL_NUMBER
451 , p_entity_type_tbl IN PO_TBL_VARCHAR30
452 , p_from_line_location_id_tbl IN PO_TBL_NUMBER
453 , p_from_line_id_tbl IN PO_TBL_NUMBER
454 , p_multiplier_tbl IN PO_TBL_NUMBER
455 , p_price_type_tbl IN PO_TBL_VARCHAR30 --Bug 5415284
456 , x_result_set_id IN OUT NOCOPY NUMBER
457 , x_result_type OUT NOCOPY VARCHAR2
458 )
459 IS
460 d_mod CONSTANT VARCHAR2(100) := D_spo_mul_ge_min;
461 BEGIN
462
463 IF PO_LOG.d_proc THEN
464 PO_LOG.proc_begin(d_mod,'p_price_differential_id_tbl',p_price_differential_id_tbl);
465 PO_LOG.proc_begin(d_mod,'p_entity_type_tbl',p_entity_type_tbl);
466 PO_LOG.proc_begin(d_mod,'p_from_line_location_id_tbl',p_from_line_location_id_tbl);
467 PO_LOG.proc_begin(d_mod,'p_from_line_id_tbl',p_from_line_id_tbl);
468 PO_LOG.proc_begin(d_mod,'p_multiplier_tbl',p_multiplier_tbl);
469 PO_LOG.proc_begin(d_mod,'p_price_type_tbl',p_price_type_tbl);
470 PO_LOG.proc_begin(d_mod,'x_result_set_id',x_result_set_id);
471 END IF;
472
473 IF (x_result_set_id IS NULL) THEN
474 x_result_set_id := PO_VALIDATIONS.next_result_set_id();
475 END IF;
476
477 FORALL i IN 1 .. p_price_differential_id_tbl.COUNT
478 INSERT INTO PO_VALIDATION_RESULTS_GT
479 ( result_set_id
480 , entity_type
481 , entity_id
482 , column_name
483 , column_val
484 , message_name
485 --<Begin Bug 5415284> TOKENS IN PRICE DIFFERNTIAL VALIDATION MESSAGE ARE NOT REPLACED
486 , token1_name
487 , token1_value
488 --<End Bug 5415284>
489 )
490 SELECT
491 x_result_set_id
492 , c_entity_type_PRICE_DIFF
493 , p_price_differential_id_tbl(i)
494 , c_MULTIPLIER
495 , p_multiplier_tbl(i)
496 , PO_MESSAGE_S.PO_SVC_MULTIPLIER_GT_MIN
497 --<Begin Bug 5415284> Removed the EXISTS statement from the WHERE clause
498 , c_MIN
499 , SRC_PRICE_DIFF.min_multiplier
500 FROM PO_PRICE_DIFFERENTIALS SRC_PRICE_DIFF
501 WHERE
502 p_entity_type_tbl(i) = c_PO_LINE
503 AND SRC_PRICE_DIFF.entity_id =
504 NVL(p_from_line_location_id_tbl(i),p_from_line_id_tbl(i))
505 AND SRC_PRICE_DIFF.entity_type =
506 NVL2(p_from_line_location_id_tbl(i),c_PRICE_BREAK,c_BLANKET_LINE)
507 --Bug 5415284 - Added this filter to insure we retreive a unique price differential.
508 AND SRC_PRICE_DIFF.price_type = p_price_type_tbl(i)
509 AND SRC_PRICE_DIFF.max_multiplier IS NULL
510 AND p_multiplier_tbl(i) < SRC_PRICE_DIFF.min_multiplier;
511 --<End Bug 5415284>
512
513 IF (SQL%ROWCOUNT > 0) THEN
514 x_result_type := PO_VALIDATIONS.c_result_type_FAILURE;
515 ELSE
516 x_result_type := PO_VALIDATIONS.c_result_type_SUCCESS;
517 END IF;
518
519 IF PO_LOG.d_proc THEN
520 PO_VALIDATIONS.log_validation_results_gt(d_mod,9,x_result_set_id);
521 PO_LOG.proc_end(d_mod,'x_result_type',x_result_type);
522 PO_LOG.proc_end(d_mod,'x_result_set_id',x_result_set_id);
523 END IF;
524
525 EXCEPTION
526 WHEN OTHERS THEN
527 IF PO_LOG.d_exc THEN
528 PO_LOG.exc(d_mod,0,NULL);
529 END IF;
530 RAISE;
531
532 END spo_mul_ge_min;
533
534
535 END PO_VAL_PRICE_DIFFS;