1: package BODY AME_ATTRIBUTES_API as
2: /* $Header: ameatapi.pkb 120.5.12010000.2 2008/12/26 11:01:04 prasashe ship $ */
3: procedure VALIDATE_ROW
4: (X_ATTRIBUTE_TYPE in varchar2) as
5: begin
145: X_LOCK_HANDLE varchar2(500);
146: X_RETURN_VALUE number;
147: begin
148: DBMS_LOCK.ALLOCATE_UNIQUE
149: (LOCKNAME =>'AME_ATTRIBUTES.'||X_ATTRIBUTE_NAME
150: ,LOCKHANDLE => X_LOCK_HANDLE
151: );
152: X_RETURN_VALUE := DBMS_LOCK.REQUEST
153: (LOCKHANDLE => X_LOCK_HANDLE
154: ,TIMEOUT => 0
155: ,RELEASE_ON_COMMIT => true);
156:
157: if X_RETURN_VALUE = 0 then
158: select AME_ATTRIBUTES_S.NEXTVAL
159: into X_ATTRIBUTE_ID
160: from dual;
161:
162: insert into AME_ATTRIBUTES
158: select AME_ATTRIBUTES_S.NEXTVAL
159: into X_ATTRIBUTE_ID
160: from dual;
161:
162: insert into AME_ATTRIBUTES
163: (ATTRIBUTE_ID
164: ,NAME
165: ,ATTRIBUTE_TYPE
166: ,DESCRIPTION
190: X_START_DATE,
191: X_END_DATE,
192: X_OBJECT_VERSION_NUMBER
193: from dual where not exists (select null
194: from AME_ATTRIBUTES
195: where NAME = X_ATTRIBUTE_NAME
196: and sysdate between START_DATE and nvl(END_DATE - (1/86400), sysdate));
197:
198: if not AME_SEED_UTILITY.MLS_ENABLED then
198: if not AME_SEED_UTILITY.MLS_ENABLED then
199: return;
200: end if;
201:
202: insert into AME_ATTRIBUTES_TL
203: (ATTRIBUTE_ID
204: ,DESCRIPTION
205: ,CREATED_BY
206: ,CREATION_DATE
220: userenv('LANG')
221: from FND_LANGUAGES L
222: where L.INSTALLED_FLAG in ('I', 'B')
223: and not exists (select null
224: from AME_ATTRIBUTES_TL T
225: where T.ATTRIBUTE_ID = X_ATTRIBUTE_ID
226: and T.LANGUAGE = L.LANGUAGE_CODE);
227: end if;
228: end INSERT_ROW;
249: l_current_start_date date;
250: begin
251:
252: DBMS_LOCK.ALLOCATE_UNIQUE
253: (LOCKNAME =>'AME_ATTRIBUTES.'||X_ATTRIBUTE_ID
254: ,LOCKHANDLE => X_LOCK_HANDLE
255: );
256: X_RETURN_VALUE := DBMS_LOCK.REQUEST
257: (LOCKHANDLE => X_LOCK_HANDLE
261: if X_RETURN_VALUE = 0 then
262: begin
263: select START_DATE
264: into l_current_start_date
265: from AME_ATTRIBUTES
266: where ATTRIBUTE_ID = X_ATTRIBUTE_ID
267: and sysdate between START_DATE and nvl(END_DATE-(1/86400),sysdate);
268: if l_current_start_date >= X_CREATION_DATE then
269: return;
272: when others then
273: null;
274: end;
275: begin
276: update AME_ATTRIBUTES AA
277: set AA.END_DATE = X_START_DATE
278: where AA.ATTRIBUTE_ID = X_ATTRIBUTE_ID
279: and sysdate between AA.START_DATE and nvl(AA.END_DATE - (1/86400),sysdate);
280: exception
278: where AA.ATTRIBUTE_ID = X_ATTRIBUTE_ID
279: and sysdate between AA.START_DATE and nvl(AA.END_DATE - (1/86400),sysdate);
280: exception
281: when DUP_VAL_ON_INDEX then
282: update AME_ATTRIBUTES AA
283: set END_DATE = X_START_DATE - (1/86400)
284: where AA.ATTRIBUTE_ID = X_ATTRIBUTE_ID
285: and sysdate between AA.START_DATE and nvl(AA.END_DATE - (1/86400),sysdate);
286: end;
284: where AA.ATTRIBUTE_ID = X_ATTRIBUTE_ID
285: and sysdate between AA.START_DATE and nvl(AA.END_DATE - (1/86400),sysdate);
286: end;
287:
288: insert into AME_ATTRIBUTES
289: (ATTRIBUTE_ID
290: ,NAME
291: ,ATTRIBUTE_TYPE
292: ,DESCRIPTION
322: if not AME_SEED_UTILITY.MLS_ENABLED then
323: return;
324: end if;
325:
326: update AME_ATTRIBUTES_TL
327: set DESCRIPTION = nvl(X_DESCRIPTION,DESCRIPTION),
328: SOURCE_LANG = userenv('LANG'),
329: LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
330: LAST_UPDATED_BY = X_LAST_UPDATED_BY,
351: X_END_DATE in DATE,
352: X_OBJECT_VERSION_NUMBER in NUMBER
353: ) is
354: begin
355: update AME_ATTRIBUTES
356: set ATTRIBUTE_TYPE = X_ATTRIBUTE_TYPE,
357: DESCRIPTION = X_DESCRIPTION,
358: LINE_ITEM = X_LINE_ITEM,
359: ITEM_CLASS_ID = X_ITEM_CLASS_ID,
371: if not AME_SEED_UTILITY.MLS_ENABLED then
372: return;
373: end if;
374:
375: update AME_ATTRIBUTES_TL
376: set DESCRIPTION = nvl(X_DESCRIPTION,DESCRIPTION),
377: SOURCE_LANG = userenv('LANG'),
378: LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
379: LAST_UPDATED_BY = X_LAST_UPDATED_BY,
392: ,X_OWNER in varchar2
393: ,X_LAST_UPDATE_DATE in varchar2
394: ,X_CUSTOM_MODE in varchar2
395: ) as
396: L_ATTRIBUTE_NAME AME_ATTRIBUTES.NAME%TYPE;
397: L_ATTRIBUTE_TYPE AME_ATTRIBUTES.ATTRIBUTE_TYPE%TYPE;
398: L_DESCRIPTION AME_ATTRIBUTES_TL.DESCRIPTION%TYPE;
399: L_LINE_ITEM AME_ATTRIBUTES.LINE_ITEM%TYPE;
400: L_ORIG_SYSTEM AME_APPROVER_TYPES.ORIG_SYSTEM%TYPE;
393: ,X_LAST_UPDATE_DATE in varchar2
394: ,X_CUSTOM_MODE in varchar2
395: ) as
396: L_ATTRIBUTE_NAME AME_ATTRIBUTES.NAME%TYPE;
397: L_ATTRIBUTE_TYPE AME_ATTRIBUTES.ATTRIBUTE_TYPE%TYPE;
398: L_DESCRIPTION AME_ATTRIBUTES_TL.DESCRIPTION%TYPE;
399: L_LINE_ITEM AME_ATTRIBUTES.LINE_ITEM%TYPE;
400: L_ORIG_SYSTEM AME_APPROVER_TYPES.ORIG_SYSTEM%TYPE;
401: L_ITEM_CLASS_NAME AME_ITEM_CLASSES.NAME%TYPE;
394: ,X_CUSTOM_MODE in varchar2
395: ) as
396: L_ATTRIBUTE_NAME AME_ATTRIBUTES.NAME%TYPE;
397: L_ATTRIBUTE_TYPE AME_ATTRIBUTES.ATTRIBUTE_TYPE%TYPE;
398: L_DESCRIPTION AME_ATTRIBUTES_TL.DESCRIPTION%TYPE;
399: L_LINE_ITEM AME_ATTRIBUTES.LINE_ITEM%TYPE;
400: L_ORIG_SYSTEM AME_APPROVER_TYPES.ORIG_SYSTEM%TYPE;
401: L_ITEM_CLASS_NAME AME_ITEM_CLASSES.NAME%TYPE;
402: L_ITEM_CLASS_ID number;
395: ) as
396: L_ATTRIBUTE_NAME AME_ATTRIBUTES.NAME%TYPE;
397: L_ATTRIBUTE_TYPE AME_ATTRIBUTES.ATTRIBUTE_TYPE%TYPE;
398: L_DESCRIPTION AME_ATTRIBUTES_TL.DESCRIPTION%TYPE;
399: L_LINE_ITEM AME_ATTRIBUTES.LINE_ITEM%TYPE;
400: L_ORIG_SYSTEM AME_APPROVER_TYPES.ORIG_SYSTEM%TYPE;
401: L_ITEM_CLASS_NAME AME_ITEM_CLASSES.NAME%TYPE;
402: L_ITEM_CLASS_ID number;
403: L_APPROVER_TYPE_ID number;
437: ROWID
438: into L_ATTRIBUTE_ID,
439: L_OBJECT_VERSION_NUMBER,
440: L_ROWID
441: from AME_ATTRIBUTES AA
442: where AA.NAME = X_ATTRIBUTE_NAME
443: and sysdate between AA.START_DATE and nvl(AA.END_DATE - (1/86400),sysdate);
444:
445: if X_CUSTOM_MODE = 'FORCE' then
514:
515: begin
516: select AA.ATTRIBUTE_ID
517: into X_ATTRIBUTE_ID
518: from AME_ATTRIBUTES_TL AATL,
519: AME_ATTRIBUTES AA
520: where AA.NAME = X_ATTRIBUTE_NAME
521: and AA.ATTRIBUTE_ID = AATL.ATTRIBUTE_ID
522: and AATL.LANGUAGE = userenv('LANG')
515: begin
516: select AA.ATTRIBUTE_ID
517: into X_ATTRIBUTE_ID
518: from AME_ATTRIBUTES_TL AATL,
519: AME_ATTRIBUTES AA
520: where AA.NAME = X_ATTRIBUTE_NAME
521: and AA.ATTRIBUTE_ID = AATL.ATTRIBUTE_ID
522: and AATL.LANGUAGE = userenv('LANG')
523: and sysdate between AA.START_DATE and nvl(AA.END_DATE - (1/86400),sysdate);
521: and AA.ATTRIBUTE_ID = AATL.ATTRIBUTE_ID
522: and AATL.LANGUAGE = userenv('LANG')
523: and sysdate between AA.START_DATE and nvl(AA.END_DATE - (1/86400),sysdate);
524:
525: update AME_ATTRIBUTES_TL AATL
526: set DESCRIPTION = nvl(X_DESCRIPTION,AATL.DESCRIPTION),
527: SOURCE_LANG = userenv('LANG'),
528: LAST_UPDATE_DATE = AME_SEED_UTILITY.DATE_AS_DATE(X_LAST_UPDATE_DATE),
529: LAST_UPDATED_BY = AME_SEED_UTILITY.OWNER_AS_INTEGER(X_OWNER),
554: AME_SEED_UTILITY.OWNER_AS_STRING(AATL.CREATED_BY)
555: into X_CURRENT_OWNER,
556: X_CURRENT_LAST_UPDATE_DATE,
557: X_CREATED_BY
558: from AME_ATTRIBUTES_TL AATL,
559: AME_ATTRIBUTES AA
560: where AATL.ATTRIBUTE_ID = AA.ATTRIBUTE_ID
561: and AA.NAME = X_ATTRIBUTE_NAME
562: and sysdate between AA.START_DATE and nvl(AA.END_DATE - (1/86400),sysdate)
555: into X_CURRENT_OWNER,
556: X_CURRENT_LAST_UPDATE_DATE,
557: X_CREATED_BY
558: from AME_ATTRIBUTES_TL AATL,
559: AME_ATTRIBUTES AA
560: where AATL.ATTRIBUTE_ID = AA.ATTRIBUTE_ID
561: and AA.NAME = X_ATTRIBUTE_NAME
562: and sysdate between AA.START_DATE and nvl(AA.END_DATE - (1/86400),sysdate)
563: and AATL.LANGUAGE = userenv('LANG');
581: select AA.LAST_UPDATED_BY,
582: AME_SEED_UTILITY.DATE_AS_STRING(AA.LAST_UPDATE_DATE)
583: into X_CURRENT_OWNER,
584: X_CURRENT_LAST_UPDATE_DATE
585: from AME_ATTRIBUTES AA
586: where AA.NAME = X_ATTRIBUTE_NAME
587: and sysdate between AA.START_DATE and nvl(AA.END_DATE - (1/86400),sysdate);
588: return AME_SEED_UTILITY.MERGE_ROW_TEST
589: (X_CURRENT_OWNER => X_CURRENT_OWNER
610: ,X_LAST_UPDATE_DATE in varchar2
611: ,X_UPLOAD_MODE in varchar2
612: ,X_CUSTOM_MODE in varchar2
613: ) as
614: L_ATTRIBUTE_NAME AME_ATTRIBUTES.NAME%TYPE;
615: begin
616: AME_SEED_UTILITY.INIT_AME_INSTALLATION_LEVEL;
617:
618: L_ATTRIBUTE_NAME := X_ATTRIBUTE_NAME;
671: (X_ATTRIBUTE_NAME in varchar2
672: ) as
673: begin
674: if AME_SEED_UTILITY.MLS_ENABLED then
675: delete from AME_ATTRIBUTES_TL
676: where ATTRIBUTE_ID in (select ATTRIBUTE_ID
677: from AME_ATTRIBUTES
678: where NAME = X_ATTRIBUTE_NAME);
679: end if;
673: begin
674: if AME_SEED_UTILITY.MLS_ENABLED then
675: delete from AME_ATTRIBUTES_TL
676: where ATTRIBUTE_ID in (select ATTRIBUTE_ID
677: from AME_ATTRIBUTES
678: where NAME = X_ATTRIBUTE_NAME);
679: end if;
680: delete from AME_ATTRIBUTES
681: where NAME = X_ATTRIBUTE_NAME;
676: where ATTRIBUTE_ID in (select ATTRIBUTE_ID
677: from AME_ATTRIBUTES
678: where NAME = X_ATTRIBUTE_NAME);
679: end if;
680: delete from AME_ATTRIBUTES
681: where NAME = X_ATTRIBUTE_NAME;
682: if sql%notfound then
683: raise no_data_found;
684: end if;
683: raise no_data_found;
684: end if;
685: end DELETE_ROW;
686:
687: end AME_ATTRIBUTES_API;