1 PACKAGE BODY PO_POXRRVDR_XMLP_PKG AS
2 /* $Header: POXRRVDRB.pls 120.1.12010000.5 2008/11/30 10:19:12 mpuranik ship $ */
3 USER_EXIT_FAILURE EXCEPTION;
4
5 FUNCTION BEFOREREPORT RETURN BOOLEAN IS
6 BEGIN
7 DECLARE
8 L_ORG ORG_ORGANIZATION_DEFINITIONS.ORGANIZATION_NAME%TYPE;
9 L_CURRENCY_CODE VARCHAR2(20);
10 RECEIPT_NUMBERING_TYPE VARCHAR2(240);
11 BEGIN
12 P_CONC_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
13 QTY_PRECISION:=PO_COMMON_xmlp_pkg.GET_PRECISION(P_QTY_PRECISION);
14 IF P_ORG_ID IS NOT NULL THEN
15 SELECT
16 ORGANIZATION_NAME
17 INTO
18 L_ORG
19 FROM
20 ORG_ORGANIZATION_DEFINITIONS
21 WHERE ORGANIZATION_ID = P_ORG_ID;
22 P_ORG_DISPLAYED := L_ORG;
23 ELSE
24 P_ORG_DISPLAYED := '';
25 END IF;
26 SELECT
27 CURRENCY_CODE
28 INTO
29 L_CURRENCY_CODE
30 FROM
31 GL_SETS_OF_BOOKS GSB,
32 FINANCIALS_SYSTEM_PARAMETERS FSP
33 WHERE GSB.SET_OF_BOOKS_ID = FSP.SET_OF_BOOKS_ID;
34 P_BASE_CURRENCY := L_CURRENCY_CODE;
35 IF (P_SORT_OPTION = 'ACCOUNT AND ITEM') THEN
36 P_SORT_ID := 1;
37 ELSIF (P_SORT_OPTION = 'ACCOUNT AND VENDOR') THEN
38 P_SORT_ID := 2;
39 ELSIF (P_SORT_OPTION = 'ACCOUNT AND RECEIPT') THEN
40 P_SORT_ID := 3;
41 ELSE
42 P_SORT_ID := 1;
43 END IF;
44
45 P_ACCT_DATE_FROM1 := to_char(P_DATE_FROM,'dd-mon-yy');
46 P_ACCT_DATE_TO1 := to_char(P_DATE_TO,'dd-mon-yy');
47
48
49 P_ACCT_DATE_FROM := P_DATE_FROM;
50 P_ACCT_DATE_TO := P_DATE_TO;
51 P_CAT_SET_ID := P_CATEGORY_SET;
52 IF (P_ACCT_DATE_FROM IS NOT NULL) THEN
53 P_WHERE_ACCOUNTING_DATE_FROM := 'rdv.accounting_date >= ' || '''' || TO_CHAR(P_ACCT_DATE_FROM) || '''';
54 ELSE
55 P_WHERE_ACCOUNTING_DATE_FROM := '1=1';
56 END IF;
57 IF (P_ACCT_DATE_TO IS NOT NULL) THEN
58 P_WHERE_ACCOUNTING_DATE_TO := 'rdv.accounting_date <= ' || '''' || TO_CHAR(P_ACCT_DATE_TO) || '''';
59 ELSE
60 P_WHERE_ACCOUNTING_DATE_TO := '1=1';
61 END IF;
62 IF (P_ACCT_DATE_FROM IS NOT NULL) THEN
63 P_WHERE_TRX_DATE_FROM := 'rdv.transaction_date >= ' || '''' || TO_CHAR(P_ACCT_DATE_FROM - 1) || '''';
64 ELSE
65 P_WHERE_TRX_DATE_FROM := '1=1';
66 END IF;
67 IF (P_ACCT_DATE_TO IS NOT NULL) THEN
68 P_WHERE_TRX_DATE_TO := 'rdv.transaction_date <= ' || '''' || TO_CHAR(P_ACCT_DATE_TO + 1) || '''';
69 ELSE
70 P_WHERE_TRX_DATE_TO := '1=1';
71 END IF;
72 IF (P_VENDOR_FROM IS NOT NULL) THEN
73 IF (P_VENDOR_TO IS NOT NULL) THEN
74 P_WHERE_VENDOR := 'pov.vendor_name BETWEEN ''' || P_VENDOR_FROM || ''' AND ''' || P_VENDOR_TO || '''';
75 ELSE
76 P_WHERE_VENDOR := 'pov.vendor_name >= ''' || P_VENDOR_FROM || '''';
77 END IF;
78 ELSE
79 IF (P_VENDOR_TO IS NOT NULL) THEN
80 P_WHERE_VENDOR := 'pov.vendor_name <= ''' || P_VENDOR_TO || '''';
81 ELSE
82 P_WHERE_VENDOR := '1=1';
83 END IF;
84 END IF;
85 END;
86 BEGIN
87 RETURN TRUE;
88 END;
89 RETURN (TRUE);
90 END BEFOREREPORT;
91
92 FUNCTION C_FLEX_ACC_DESCFORMULA(C_FLEX_ACC_DESC IN VARCHAR2) RETURN VARCHAR2 IS
93 BEGIN
94 RETURN (C_FLEX_ACC_DESC);
95 END C_FLEX_ACC_DESCFORMULA;
96
97 FUNCTION CALC_TRX_VALUE(CURRENCY_CODE IN VARCHAR2
98 ,C_PRECISION IN NUMBER
99 ,EVENT_TYPE_ID IN NUMBER
100 ,C_PRIMARY_UNIT_PRICE1 IN NUMBER
101 ,PRIMARY_QTY IN NUMBER
102 ,CURR_CONV_RATE IN NUMBER
103 /* Support for Landed Cost Management */
104 ,PRIOR_UNIT_PRICE IN NUMBER
105 ,PRIMARY_LANDED_COST NUMBER
106 ,ACCOUNTING_LINE_TYPE VARCHAR2) RETURN NUMBER IS
107 L_DOC_CURR_PRECISION NUMBER;
108 BEGIN
109 BEGIN
110 SELECT
111 PRECISION
112 INTO
113 L_DOC_CURR_PRECISION
114 FROM
115 FND_CURRENCIES
116 WHERE CURRENCY_CODE = CURRENCY_CODE;
117 EXCEPTION
118 WHEN OTHERS THEN
119 L_DOC_CURR_PRECISION := C_PRECISION;
120 END;
121
122 /* Support for Landed Cost Management */
123 IF EVENT_TYPE_ID IN (7,8) THEN
124 RETURN (ROUND(ROUND(ROUND((C_PRIMARY_UNIT_PRICE1 * PRIMARY_QTY)
125 ,L_DOC_CURR_PRECISION) * CURR_CONV_RATE
126 ,C_PRECISION) - ROUND(ROUND((PRIOR_UNIT_PRICE * PRIMARY_QTY)
127 ,L_DOC_CURR_PRECISION) * CURR_CONV_RATE
128 ,C_PRECISION)
129 ,C_PRECISION));
130
131 ELSIF EVENT_TYPE_ID IN (15,16,17) THEN
132 RETURN (ROUND(ROUND(ROUND((C_PRIMARY_UNIT_PRICE1 * PRIMARY_QTY)
133 ,L_DOC_CURR_PRECISION)
134 ,C_PRECISION) - ROUND(ROUND((PRIOR_UNIT_PRICE * PRIMARY_QTY)
135 ,L_DOC_CURR_PRECISION)
136 ,C_PRECISION)
137 ,C_PRECISION));
138
139 ELSIF PRIMARY_LANDED_COST IS NOT NULL THEN
140 IF ACCOUNTING_LINE_TYPE = 'Receiving Inspection' THEN
141 RETURN (ROUND(ROUND((PRIMARY_LANDED_COST * PRIMARY_QTY)
142 ,L_DOC_CURR_PRECISION)
143 ,C_PRECISION));
144
145 ELSIF ACCOUNTING_LINE_TYPE = 'Accrual' THEN
146 RETURN (ROUND(ROUND((C_PRIMARY_UNIT_PRICE1 * PRIMARY_QTY)
147 ,L_DOC_CURR_PRECISION) * CURR_CONV_RATE
148 ,C_PRECISION));
149
150 ELSIF ACCOUNTING_LINE_TYPE = 'Landed Cost Absorption' THEN
151 RETURN (ROUND(ROUND(ROUND((C_PRIMARY_UNIT_PRICE1 * PRIMARY_QTY)
152 ,L_DOC_CURR_PRECISION) * CURR_CONV_RATE
153 ,C_PRECISION) - ROUND(ROUND((PRIMARY_LANDED_COST * PRIMARY_QTY)
154 ,L_DOC_CURR_PRECISION)
155 ,C_PRECISION)
156 ,C_PRECISION));
157
158 END IF;
159
160 ELSE
161 RETURN (ROUND(ROUND((C_PRIMARY_UNIT_PRICE1 * PRIMARY_QTY)
162 ,L_DOC_CURR_PRECISION) * CURR_CONV_RATE
163 ,C_PRECISION));
164
165 END IF;
166 END CALC_TRX_VALUE;
167
168 FUNCTION C_SORTFORMULA RETURN VARCHAR2 IS
169 BEGIN
170 RETURN ('Sorted by account and item');
171 END C_SORTFORMULA;
172
173 FUNCTION C_CAT_SET_NAMEFORMULA RETURN VARCHAR2 IS
174 BEGIN
175 DECLARE
176 CAT_SET_ID NUMBER;
177 CAT_SET_NAME VARCHAR2(30);
178 BEGIN
179 IF P_CAT_SET_ID IS NULL THEN
180 RETURN ('');
181 ELSE
182 CAT_SET_ID := P_CAT_SET_ID;
183 SELECT
184 CATEGORY_SET_NAME
185 INTO
186 CAT_SET_NAME
187 FROM
188 MTL_CATEGORY_SETS
189 WHERE CATEGORY_SET_ID = CAT_SET_ID;
190 RETURN (CAT_SET_NAME);
191 END IF;
192 EXCEPTION
193 WHEN NO_DATA_FOUND THEN
194 RETURN ('');
195 WHEN OTHERS THEN
196 RETURN ('Error');
197 END;
198 RETURN NULL;
199 END C_CAT_SET_NAMEFORMULA;
200
201 FUNCTION C_FUNC_CURRENCY_CODEFORMULA(R_CURRENCY_CODE IN VARCHAR2) RETURN VARCHAR2 IS
202 BEGIN
203 RETURN ('(' || R_CURRENCY_CODE || ')');
204 END C_FUNC_CURRENCY_CODEFORMULA;
205
206 FUNCTION PRICE(ENTERED_DR IN NUMBER
207 ,PRIMARY_UNIT_PRICE IN NUMBER) RETURN NUMBER IS
208 PRICE NUMBER;
209 BEGIN
210 IF (ENTERED_DR IS NULL) THEN
211 PRICE := (-1) * PRIMARY_UNIT_PRICE;
212 RETURN (PRICE);
213 ELSE
214 RETURN (PRIMARY_UNIT_PRICE);
215 END IF;
216 RETURN NULL;
217 END PRICE;
218
219 FUNCTION GET_P_STRUCT_NUM RETURN BOOLEAN IS
220 L_P_STRUCT_NUM NUMBER;
221 BEGIN
222 SELECT
223 STRUCTURE_ID
224 INTO
225 L_P_STRUCT_NUM
226 FROM
227 MTL_DEFAULT_SETS_VIEW
228 WHERE FUNCTIONAL_AREA_ID = 2;
229 P_STRUCT_NUM := L_P_STRUCT_NUM;
230 RETURN (TRUE);
231 RETURN NULL;
232 EXCEPTION
233 WHEN OTHERS THEN
234 RETURN (FALSE);
235 END GET_P_STRUCT_NUM;
236
237 FUNCTION C_SORT_MAIN_DISPFORMULA(C_FLEX_ITEM_DISP IN VARCHAR2) RETURN VARCHAR2 IS
238 BEGIN
239 IF (P_SORT_ID = 1) THEN
240 RETURN (C_FLEX_ITEM_DISP);
241 END IF;
242 RETURN NULL;
243 END C_SORT_MAIN_DISPFORMULA;
244
245 FUNCTION C_CAT_DISPFORMULA(C_FLEX_CAT_DISP IN VARCHAR2) RETURN VARCHAR2 IS
246 BEGIN
247 IF (P_SORT_ID = 1) THEN
248 RETURN (C_FLEX_CAT_DISP);
249 END IF;
250 RETURN NULL;
251 END C_CAT_DISPFORMULA;
252
253 FUNCTION C_VENDORFORMULA(VENDOR_NAME IN VARCHAR2) RETURN VARCHAR2 IS
254 BEGIN
255 IF (P_SORT_ID = 2) THEN
256 RETURN (VENDOR_NAME);
257 END IF;
258 RETURN NULL;
259 END C_VENDORFORMULA;
260
261 FUNCTION C_VENDOR_NUMBERFORMULA(VENDOR_NUMBER IN VARCHAR2) RETURN VARCHAR2 IS
262 BEGIN
263 IF (P_SORT_ID = 2) THEN
264 RETURN (VENDOR_NUMBER);
265 END IF;
266 RETURN NULL;
267 END C_VENDOR_NUMBERFORMULA;
268
269 FUNCTION DISPLAY_COLUMN(DELIVER_TO_LOCATION IN VARCHAR2
270 ,C_FLEX_ITEM_DISP IN VARCHAR2) RETURN CHARACTER IS
271 BEGIN
272 IF (P_SORT_ID = 1) THEN
273 RETURN (DELIVER_TO_LOCATION);
274 ELSE
275 RETURN (C_FLEX_ITEM_DISP);
276 END IF;
277 RETURN NULL;
278 END DISPLAY_COLUMN;
279
280 FUNCTION AFTERPFORM RETURN BOOLEAN IS
281 RECEIPT_NUMBERING_TYPE VARCHAR2(240);
282 BEGIN
283 P_CONC_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
284 IF (P_ORG_ID IS NULL) THEN
285 BEGIN
286 SELECT
287 PSP.MANUAL_RECEIPT_NUM_TYPE
288 INTO
289 RECEIPT_NUMBERING_TYPE
290 FROM
291 PO_SYSTEM_PARAMETERS PSP;
292 END;
293 ELSE
294 BEGIN
295 SELECT
296 DISTINCT
297 MANUAL_RECEIPT_NUM_TYPE
298 INTO
299 RECEIPT_NUMBERING_TYPE
300 FROM
301 RCV_RECEIVING_PARAMETERS_V
302 WHERE ORGANIZATION_ID = P_ORG_ID;
303 EXCEPTION
304 WHEN NO_DATA_FOUND THEN
305 RECEIPT_NUMBERING_TYPE := 'ALPHANUMERIC';
306 END;
307 END IF;
308 IF P_RECEIPT_NUM_FROM = P_RECEIPT_NUM_TO THEN
309 P_WHERE_RECEIPT_NUM_FROM := ' rdv.receipt_number = :p_receipt_num_from ';
310 P_WHERE_RECEIPT_NUM_TO := '1=1';
311 ELSE
312 IF (P_RECEIPT_NUM_FROM IS NOT NULL) THEN
313 IF (RECEIPT_NUMBERING_TYPE = 'ALPHANUMERIC') THEN
314 P_WHERE_RECEIPT_NUM_FROM := ' rdv.receipt_number >= :P_receipt_num_from ';
315 ELSE
316 P_WHERE_RECEIPT_NUM_FROM := ' decode(ltrim(rdv.receipt_number, ''0123456789''), NULL, to_number(rdv.receipt_number), -1) >= :P_receipt_num_from ';
317 END IF;
318 ELSE
319 P_WHERE_RECEIPT_NUM_FROM := '1=1';
320 END IF;
321 IF (P_RECEIPT_NUM_TO IS NOT NULL) THEN
322 IF (RECEIPT_NUMBERING_TYPE = 'ALPHANUMERIC') THEN
323 P_WHERE_RECEIPT_NUM_TO := ' rdv.receipt_number <= :P_receipt_num_to ';
324 ELSE
325 P_WHERE_RECEIPT_NUM_TO := ' decode(ltrim(rdv.receipt_number, ''0123456789''), NULL, to_number(rdv.receipt_number), -1) <= :P_receipt_num_to ';
326 END IF;
327 ELSE
328 P_WHERE_RECEIPT_NUM_TO := '1=1';
329 END IF;
330 END IF;
331 RETURN (TRUE);
332 END AFTERPFORM;
333
334 FUNCTION C_PRIMARY_UNIT_PRICE1FORMULA(ACC_EVENT_ID IN NUMBER
335 ,TRX_ID IN NUMBER
336 ,PRIMARY_UNIT_PRICE IN NUMBER
337 ,PO_TO_PR_UOM_RATE IN NUMBER) RETURN NUMBER IS
338 L_TOT_TAX NUMBER;
339 BEGIN
340 IF ACC_EVENT_ID = -1 THEN
341 SELECT
342 NVL((SUM(NVL(PO_TAX_SV.GET_TAX('PO'
343 ,POD.PO_DISTRIBUTION_ID)
344 ,0)) / SUM(POD.QUANTITY_ORDERED))
345 ,0)
346 INTO
347 L_TOT_TAX
348 FROM
349 PO_DISTRIBUTIONS_ALL POD,
350 RCV_TRANSACTIONS RT
351 WHERE RT.TRANSACTION_ID = TRX_ID
352 AND ( ( RT.PO_DISTRIBUTION_ID IS NOT NULL
353 AND RT.PO_DISTRIBUTION_ID = POD.PO_DISTRIBUTION_ID )
354 OR ( RT.PO_DISTRIBUTION_ID IS NULL
355 AND RT.PO_LINE_LOCATION_ID = POD.LINE_LOCATION_ID ) );
356 SELECT
357 DECODE(SIGN(NVL(SUM(ACCOUNTED_NR_TAX)
358 ,0))
359 ,0
360 ,0
361 ,1) * L_TOT_TAX
362 INTO
363 L_TOT_TAX
364 FROM
365 RCV_RECEIVING_SUB_LEDGER
366 WHERE RCV_TRANSACTION_ID = TRX_ID;
367 RETURN ((PRIMARY_UNIT_PRICE + (L_TOT_TAX * PO_TO_PR_UOM_RATE)));
368 ELSE
369 RETURN (PRIMARY_UNIT_PRICE);
370 END IF;
371 END C_PRIMARY_UNIT_PRICE1FORMULA;
372
373 FUNCTION C_PRIMARY_UNIT_PRICE2FORMULA(EVENT_TYPE_ID IN NUMBER
374 ,C_PRIMARY_UNIT_PRICE1 IN NUMBER
375 /* Support for Landed Cost Management */
376 ,PRIMARY_LANDED_COST IN NUMBER
377 ,PRIOR_UNIT_PRICE IN NUMBER
378 ,ACCOUNTING_LINE_TYPE IN VARCHAR2
379 ,CURR_CONV_RATE IN NUMBER) RETURN NUMBER IS
380 BEGIN
381
382 /* Support for Landed Cost Management */
383 IF (EVENT_TYPE_ID in (7,8)) THEN
384 RETURN (NULL);
385
386 ELSIF (EVENT_TYPE_ID in (15,16,17)) THEN
387 RETURN (ROUND((C_PRIMARY_UNIT_PRICE1 * CURR_CONV_RATE - PRIOR_UNIT_PRICE * CURR_CONV_RATE)
388 ,8));
389
390 ELSIF PRIMARY_LANDED_COST IS NOT NULL THEN
391 IF ACCOUNTING_LINE_TYPE = 'Receiving Inspection' THEN
392 RETURN (ROUND(PRIMARY_LANDED_COST
393 ,8));
394 ELSIF ACCOUNTING_LINE_TYPE = 'Accrual' THEN
395 RETURN (ROUND(C_PRIMARY_UNIT_PRICE1 * CURR_CONV_RATE
396 ,8));
397 ELSIF ACCOUNTING_LINE_TYPE = 'Landed Cost Absorption' THEN
398 RETURN (ROUND((C_PRIMARY_UNIT_PRICE1 * CURR_CONV_RATE - PRIMARY_LANDED_COST)
399 ,8));
400 END IF;
401
402 ELSE
403 RETURN (ROUND(C_PRIMARY_UNIT_PRICE1 * CURR_CONV_RATE
404 ,8));
405
406 END IF;
407 END C_PRIMARY_UNIT_PRICE2FORMULA;
408
409 FUNCTION C_QUANTITYFORMULA(EVENT_TYPE_ID IN NUMBER
410 ,QTY IN NUMBER) RETURN NUMBER IS
411 BEGIN
412 IF (EVENT_TYPE_ID in (7,8)) THEN
413 RETURN NULL;
414 ELSE
415 RETURN QTY;
416 END IF;
417 END C_QUANTITYFORMULA;
418
419 FUNCTION AFTERREPORT RETURN BOOLEAN IS
420 BEGIN
421 RETURN (TRUE);
422 END AFTERREPORT;
423
424
425
426 END PO_POXRRVDR_XMLP_PKG;
427