[Home] [Help]
PACKAGE BODY: APPS.HZ_STYLE_FMT_VARIATIONS_PKG
Source
1 package body HZ_STYLE_FMT_VARIATIONS_PKG as
2 /* $Header: ARHPSFVB.pls 115.7 2004/02/25 23:15:47 geliu noship $ */
3
4 L_USER_ID_FOR_SEED NUMBER := NULL;
5
6 procedure INSERT_ROW (
7 X_ROWID in out NOCOPY VARCHAR2,
8 X_STYLE_FORMAT_CODE in VARCHAR2,
9 X_VARIATION_NUMBER in out NOCOPY NUMBER,
10 X_VARIATION_RANK in NUMBER,
11 X_SELECTION_CONDITION in VARCHAR2,
12 X_START_DATE_ACTIVE in DATE,
13 X_END_DATE_ACTIVE in DATE,
14 X_OBJECT_VERSION_NUMBER in NUMBER
15 ) is
16 cursor C is select ROWID from HZ_STYLE_FMT_VARIATIONS
17 where STYLE_FORMAT_CODE = X_STYLE_FORMAT_CODE and
18 VARIATION_NUMBER = X_VARIATION_NUMBER
19 ;
20 begin
21 if X_VARIATION_NUMBER is null then
22 select nvl(max(VARIATION_NUMBER),0)+1 into X_VARIATION_NUMBER
23 from HZ_STYLE_FMT_VARIATIONS where STYLE_FORMAT_CODE = X_STYLE_FORMAT_CODE;
24 end if;
25 insert into HZ_STYLE_FMT_VARIATIONS (
26 STYLE_FORMAT_CODE,
27 VARIATION_NUMBER,
28 VARIATION_RANK,
29 SELECTION_CONDITION,
30 START_DATE_ACTIVE,
31 END_DATE_ACTIVE,
32 CREATED_BY,
33 CREATION_DATE,
34 LAST_UPDATE_LOGIN,
35 LAST_UPDATE_DATE,
36 LAST_UPDATED_BY,
37 OBJECT_VERSION_NUMBER
38 ) values (
39 DECODE( X_STYLE_FORMAT_CODE, FND_API.G_MISS_CHAR, NULL, X_STYLE_FORMAT_CODE ),
40 DECODE( X_VARIATION_NUMBER, FND_API.G_MISS_NUM, NULL, X_VARIATION_NUMBER ),
41 DECODE( X_VARIATION_RANK, FND_API.G_MISS_NUM, NULL, X_VARIATION_RANK ),
42 DECODE( X_SELECTION_CONDITION, FND_API.G_MISS_CHAR, NULL, X_SELECTION_CONDITION ),
43 DECODE( X_START_DATE_ACTIVE, FND_API.G_MISS_DATE, NULL, X_START_DATE_ACTIVE ),
44 DECODE( X_END_DATE_ACTIVE, FND_API.G_MISS_DATE, NULL, X_END_DATE_ACTIVE ),
45 NVL(L_USER_ID_FOR_SEED,HZ_UTILITY_V2PUB.CREATED_BY),
46 HZ_UTILITY_V2PUB.CREATION_DATE,
47 NVL(L_USER_ID_FOR_SEED,HZ_UTILITY_V2PUB.LAST_UPDATE_LOGIN),
48 HZ_UTILITY_V2PUB.LAST_UPDATE_DATE,
49 NVL(L_USER_ID_FOR_SEED,HZ_UTILITY_V2PUB.LAST_UPDATED_BY),
50 DECODE( X_OBJECT_VERSION_NUMBER, FND_API.G_MISS_NUM, NULL, X_OBJECT_VERSION_NUMBER )
51 );
52
53 open c;
54 fetch c into X_ROWID;
55 if (c%notfound) then
56 close c;
57 raise no_data_found;
58 end if;
59 close c;
60
61 end INSERT_ROW;
62
63 procedure LOCK_ROW (
64 X_STYLE_FORMAT_CODE in VARCHAR2,
65 X_VARIATION_NUMBER in NUMBER,
66 X_VARIATION_RANK in NUMBER,
67 X_SELECTION_CONDITION in VARCHAR2
68 ) is
69 cursor c is select
70 VARIATION_RANK,
71 SELECTION_CONDITION
72 from HZ_STYLE_FMT_VARIATIONS
73 where STYLE_FORMAT_CODE = X_STYLE_FORMAT_CODE
74 and VARIATION_NUMBER = X_VARIATION_NUMBER
75 for update of VARIATION_RANK nowait;
76 recinfo c%rowtype;
77
78 begin
79 open c;
80 fetch c into recinfo;
81 if (c%notfound) then
82 close c;
83 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
84 app_exception.raise_exception;
85 end if;
86 close c;
87 if ( (recinfo.VARIATION_RANK = X_VARIATION_RANK)
88 AND (recinfo.SELECTION_CONDITION = X_SELECTION_CONDITION)
89 ) then
90 null;
91 else
92 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
93 app_exception.raise_exception;
94 end if;
95
96 return;
97 end LOCK_ROW;
98
99 procedure UPDATE_ROW (
100 X_STYLE_FORMAT_CODE in VARCHAR2,
101 X_VARIATION_NUMBER in NUMBER,
102 X_VARIATION_RANK in NUMBER,
103 X_SELECTION_CONDITION in VARCHAR2,
104 X_START_DATE_ACTIVE in DATE,
105 X_END_DATE_ACTIVE in DATE,
106 X_OBJECT_VERSION_NUMBER in NUMBER
107 ) is
108 begin
109
110 update HZ_STYLE_FMT_VARIATIONS set
111 VARIATION_RANK = DECODE( X_VARIATION_RANK, NULL, VARIATION_RANK, FND_API.G_MISS_CHAR, NULL, X_VARIATION_RANK ),
112 SELECTION_CONDITION = DECODE( X_SELECTION_CONDITION, NULL, SELECTION_CONDITION, FND_API.G_MISS_CHAR, NULL, X_SELECTION_CONDITION ),
113 START_DATE_ACTIVE = DECODE( X_START_DATE_ACTIVE, NULL, START_DATE_ACTIVE, FND_API.G_MISS_DATE, NULL, X_START_DATE_ACTIVE ),
114 END_DATE_ACTIVE = DECODE( X_END_DATE_ACTIVE, NULL, END_DATE_ACTIVE, FND_API.G_MISS_DATE, NULL, X_END_DATE_ACTIVE ),
115 LAST_UPDATE_DATE = HZ_UTILITY_V2PUB.LAST_UPDATE_DATE,
116 LAST_UPDATED_BY = NVL(L_USER_ID_FOR_SEED,HZ_UTILITY_V2PUB.LAST_UPDATED_BY),
117 LAST_UPDATE_LOGIN = NVL(L_USER_ID_FOR_SEED,HZ_UTILITY_V2PUB.LAST_UPDATE_LOGIN),
118 OBJECT_VERSION_NUMBER = DECODE(X_OBJECT_VERSION_NUMBER, NULL, OBJECT_VERSION_NUMBER,
119 FND_API.G_MISS_NUM, NULL, X_OBJECT_VERSION_NUMBER)
120 where
121 STYLE_FORMAT_CODE = X_STYLE_FORMAT_CODE and
122 VARIATION_NUMBER = X_VARIATION_NUMBER;
123
124 if (sql%notfound) then
125 raise no_data_found;
126 end if;
127
128 end UPDATE_ROW;
129
130 PROCEDURE SELECT_ROW (
131 X_STYLE_FORMAT_CODE IN OUT NOCOPY VARCHAR2,
132 X_VARIATION_NUMBER IN OUT NOCOPY NUMBER,
133 X_VARIATION_RANK OUT NOCOPY NUMBER,
134 X_SELECTION_CONDITION OUT NOCOPY VARCHAR2,
135 X_START_DATE_ACTIVE OUT NOCOPY DATE,
136 X_END_DATE_ACTIVE OUT NOCOPY DATE
137 ) IS
138 BEGIN
139 SELECT
140 NVL( STYLE_FORMAT_CODE, FND_API.G_MISS_CHAR ),
141 NVL( VARIATION_NUMBER, FND_API.G_MISS_NUM ),
142 NVL( VARIATION_RANK, FND_API.G_MISS_NUM ),
143 NVL( SELECTION_CONDITION, FND_API.G_MISS_CHAR ),
144 NVL( START_DATE_ACTIVE, FND_API.G_MISS_DATE ),
145 NVL( END_DATE_ACTIVE, FND_API.G_MISS_DATE )
146 INTO X_STYLE_FORMAT_CODE,
147 X_VARIATION_NUMBER,
148 X_VARIATION_RANK,
149 X_SELECTION_CONDITION,
150 X_START_DATE_ACTIVE,
151 X_END_DATE_ACTIVE
152 FROM HZ_STYLE_FMT_VARIATIONS
153 WHERE STYLE_FORMAT_CODE = X_STYLE_FORMAT_CODE
154 AND VARIATION_NUMBER = X_VARIATION_NUMBER ;
155
156 EXCEPTION
157 WHEN NO_DATA_FOUND THEN
158 FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_NO_RECORD' );
159 FND_MESSAGE.SET_TOKEN( 'RECORD', 'style_fmt_variation_rec');
160 FND_MESSAGE.SET_TOKEN( 'VALUE', 'STYLE_FORMAT_CODE, VARIATION_NUMBER' );
161 FND_MSG_PUB.ADD;
162 RAISE FND_API.G_EXC_ERROR;
163
164 END SELECT_ROW;
165
166
167
168 procedure DELETE_ROW (
169 X_STYLE_FORMAT_CODE in VARCHAR2,
170 X_VARIATION_NUMBER in NUMBER
171 ) is
172 begin
173 delete from HZ_STYLE_FMT_VARIATIONS
174 where STYLE_FORMAT_CODE = X_STYLE_FORMAT_CODE
175 and VARIATION_NUMBER = X_VARIATION_NUMBER;
176
177 if (sql%notfound) then
178 raise no_data_found;
179 end if;
180 end DELETE_ROW;
181
182 procedure ADD_LANGUAGE
183 is
184 begin
185 null;
186 end ADD_LANGUAGE;
187
188 procedure LOAD_ROW (
189 X_STYLE_FORMAT_CODE in VARCHAR2,
190 X_VARIATION_NUMBER in NUMBER,
191 X_VARIATION_RANK in NUMBER,
192 X_SELECTION_CONDITION in VARCHAR2,
193 X_START_DATE_ACTIVE in DATE,
194 X_END_DATE_ACTIVE in DATE,
195 X_OWNER in VARCHAR2, -- "SEED" or "CUSTOM"
196 X_LAST_UPDATE_DATE in DATE,
197 X_CUSTOM_MODE in VARCHAR2
198 ) is
199 l_variation_number number := x_variation_number;
200 l_f_luby number; -- entity owner in file
201 l_f_ludate date; -- entity update date in file
202 l_db_luby number; -- entity owner in db
203 l_db_ludate date; -- entity update date in db
204 l_rowid varchar2(64);
205 l_object_version_number number;
206 begin
207
208 -- Translate owner to file_last_updated_by
209 if (x_owner = 'SEED') then
210 l_f_luby := 1;
211 L_USER_ID_FOR_SEED := 1;
212 else
213 l_f_luby := 0;
214 end if;
215
216 -- Get last update date of ldt entity
217 l_f_ludate := nvl(x_last_update_date, sysdate);
218
219 begin
220 select LAST_UPDATED_BY, LAST_UPDATE_DATE, OBJECT_VERSION_NUMBER
221 into l_db_luby, l_db_ludate, l_object_version_number
222 from HZ_STYLE_FMT_VARIATIONS
223 where STYLE_FORMAT_CODE = x_style_format_code
224 and VARIATION_NUMBER = x_variation_number;
225
226 -- Update record, honoring customization mode.
227 -- Record should be updated only if:
228 -- a. CUSTOM_MODE = FORCE, or
229 -- b. file owner is CUSTOM, db owner is SEED
230 -- c. owners are the same, and file_date > db_date
231
232 if ((x_custom_mode = 'FORCE') or
233 ((l_f_luby = 0) and (l_db_luby = 1)) or
234 ((l_f_luby = l_db_luby) and (l_f_ludate > l_db_ludate)))
235 then
236 hz_style_fmt_variations_pkg.update_row (
237 X_STYLE_FORMAT_CODE => X_STYLE_FORMAT_CODE,
238 X_VARIATION_NUMBER => X_VARIATION_NUMBER,
239 X_VARIATION_RANK => X_VARIATION_RANK,
240 X_SELECTION_CONDITION => X_SELECTION_CONDITION,
241 X_START_DATE_ACTIVE => X_START_DATE_ACTIVE,
242 X_END_DATE_ACTIVE => X_END_DATE_ACTIVE,
243 X_OBJECT_VERSION_NUMBER => l_object_version_number
244 );
245 end if;
246
247 exception
248 when no_data_found then
249 -- record not found, insert in all cases
250 hz_style_fmt_variations_pkg.insert_row(
251 x_rowid => l_rowid,
252 x_style_format_code => X_STYLE_FORMAT_CODE,
253 x_variation_number => l_variation_number,
254 x_variation_rank => X_VARIATION_RANK,
255 x_selection_condition => X_SELECTION_CONDITION,
256 x_start_date_active => X_START_DATE_ACTIVE,
257 x_end_date_active => X_END_DATE_ACTIVE,
258 x_object_version_number => 1
259 );
260 end;
261
262 end LOAD_ROW;
263
264 end HZ_STYLE_FMT_VARIATIONS_PKG;