1 PACKAGE ASL_EXCEL_UTIL_PVT as
2 /* $Header: aslvxlus.pls 120.1 2005/11/11 02:11:50 vjayamoh noship $ */
3
4 /*
5 ** Server Side Primary Key ID MAX. Any number larger than this,
6 ** is considered as records created by mobile sales/laptop.
7 ** Temporary consider them to be NEW always.
8 */
9 M_SERVER_PK_ID_MAX NUMBER := 2147483647;
10 /*
11 ** Define the NEW_RECORD caches
12 ** Because it might contain parties that not qualified with download preference
13 ** default it is 'N'.
14 */
15 /* BLAM */
16 TYPE ASL_NEW_CUST_REC_TYPE IS RECORD
17 (CUSTOMER_ID NUMBER
18 ,DOWNLOAD_FLAG VARCHAR2(1)
19 );
20 /* BLAM */
21
22 TYPE ASL_NEW_LEAD_REC_TYPE IS RECORD
23 (SALES_LEAD_ID NUMBER
24 ,CUSTOMER_ID NUMBER
25 ,DOWNLOAD_FLAG VARCHAR2(1)
26 );
27
28 TYPE ASL_NEW_OPPORTUNITY_REC_TYPE IS RECORD
29 (OPPORTUNITY_ID NUMBER
30 ,CUSTOMER_ID NUMBER
31 ,DOWNLOAD_FLAG VARCHAR2(1)
32 );
33
34 TYPE ASL_NEW_OPP_LINE_REC_TYPE IS RECORD
35 (OPPORTUNITY_ID NUMBER
36 ,OPPORTUNITY_LINE_ID NUMBER
37 );
38
39 /* agmoore - changes for opportunity classifications 2744023 */
40 TYPE ASL_NEW_OPP_CLASS_REC_TYPE IS RECORD
41 (OPPORTUNITY_ID NUMBER
42 ,OPPORTUNITY_CLASS_ID NUMBER
43 );
44
45 /* lcooper - record type for opportunity issues 2675493 */
46 TYPE ASL_NEW_OPP_ISSUES_REC_TYPE IS RECORD
47 (OPPORTUNITY_ID NUMBER,
48 OPPORTUNITY_ISSUE_ID NUMBER
49 );
50
51 TYPE ASL_NEW_CONTACT_REC_TYPE IS RECORD
52 (CONTACT_PARTY_ID NUMBER
53 ,CONTACT_PERSON_ID NUMBER
54 ,CUSTOMER_ID NUMBER
55 );
56
57 /*
58 ** QUOTE RECORD TYPES
59 */
60 TYPE ASL_NEW_QUOTE_REC_TYPE IS RECORD
61 (QUOTE_HEADER_ID NUMBER
62 ,DOWNLOAD_FLAG VARCHAR2(1)
63 );
64
65 TYPE ASL_NEW_QUOTE_DET_REC_TYPE IS RECORD
66 (QUOTE_HEADER_ID NUMBER
67 ,QUOTE_LINE_ID NUMBER
68 ,QUOTE_LINE_DETAIL_ID NUMBER
69 );
70
71 TYPE ASL_OLD_INV_CATEGORY_REC_TYPE IS RECORD
72 (CATEGORY_ID NUMBER
73 );
74
75 TYPE ASL_OLD_PRICE_LIST_REC_TYPE IS RECORD
76 (LIST_HEADER_ID NUMBER
77 );
78
79 TYPE ASL_NEW_QUOTE_TBL_TYPE IS TABLE OF ASL_NEW_QUOTE_REC_TYPE INDEX BY BINARY_INTEGER;
80 TYPE ASL_NEW_QUOTE_DET_TBL_TYPE IS TABLE OF ASL_NEW_QUOTE_DET_REC_TYPE INDEX BY BINARY_INTEGER;
81 TYPE ASL_OLD_INV_CATEGORY_TBL_TYPE IS TABLE OF ASL_OLD_INV_CATEGORY_REC_TYPE INDEX BY BINARY_INTEGER;
82 TYPE ASL_OLD_PRICE_LIST_TBL_TYPE IS TABLE OF ASL_OLD_PRICE_LIST_REC_TYPE INDEX BY BINARY_INTEGER;
83
84 M_NEW_QOT_TBL ASL_NEW_QUOTE_TBL_TYPE;
85 M_NEW_QOT_DET_TBL ASL_NEW_QUOTE_DET_TBL_TYPE;
86 M_OLD_INV_TBL ASL_OLD_INV_CATEGORY_TBL_TYPE;
87 M_OLD_PRICE_LIST_TBL ASL_OLD_PRICE_LIST_TBL_TYPE;
88
89 /*
90 **END OF QUOTE RECORD TYPES
91 */
92 /* BLAM */
93 TYPE ASL_NEW_CUST_TBL_TYPE IS TABLE OF ASL_NEW_CUST_REC_TYPE INDEX BY BINARY_INTEGER;
94 /* BLAM */
95 TYPE ASL_NEW_CNT_TBL_TYPE IS TABLE OF ASL_NEW_CONTACT_REC_TYPE INDEX BY BINARY_INTEGER;
96 TYPE ASL_NEW_OPP_TBL_TYPE IS TABLE OF ASL_NEW_OPPORTUNITY_REC_TYPE INDEX BY BINARY_INTEGER;
97 TYPE ASL_NEW_OPP_LINE_TBL_TYPE IS TABLE OF ASL_NEW_OPP_LINE_REC_TYPE INDEX BY BINARY_INTEGER;
98 /* agmoore - changes for opportunity classifications 2744023 */
99 TYPE ASL_NEW_OPP_CLASS_TBL_TYPE IS TABLE OF ASL_NEW_OPP_CLASS_REC_TYPE INDEX BY BINARY_INTEGER;
100 /* lcooper - table type for opportunity issues 2675493 */
101 TYPE ASL_NEW_OPP_ISSUES_TBL_TYPE IS TABLE OF ASL_NEW_OPP_ISSUES_REC_TYPE INDEX BY BINARY_INTEGER;
102 TYPE ASL_NEW_LEAD_TBL_TYPE IS TABLE OF ASL_NEW_LEAD_REC_TYPE INDEX BY BINARY_INTEGER;
103
104 /* BLAM */
105 M_NEW_CUST_TBL ASL_NEW_CUST_TBL_TYPE;
106 /* BLAM */
107 M_NEW_CNT_TBL ASL_NEW_CNT_TBL_TYPE;
108 M_NEW_OPP_TBL ASL_NEW_OPP_TBL_TYPE;
109 M_NEW_OPP_LINE_TBL ASL_NEW_OPP_LINE_TBL_TYPE;
110 /* agmoore - changes for opportunity classifications 2744023 */
111 M_NEW_OPP_CLASS_TBL ASL_NEW_OPP_CLASS_TBL_TYPE;
112 /* lcooper - table variable for opportunity issues 2675493 */
113 M_NEW_OPP_ISSUES_TBL ASL_NEW_OPP_ISSUES_TBL_TYPE;
114 M_NEW_LEAD_TBL ASL_NEW_LEAD_TBL_TYPE;
115
116 /*
117 ** Customer Account Record Types
118 ** No longer defaulting any values in PL/SQL Record
119 */
120 TYPE ASL_CUSTOMER_ACCOUNT_REC_TYPE IS RECORD
121 (CUST_ACCOUNT_ID NUMBER
122 );
123
124
125
126 TYPE ASL_NEW_CUST_ACCOUNT_TBL_TYPE IS TABLE OF ASL_CUSTOMER_ACCOUNT_REC_TYPE INDEX BY BINARY_INTEGER;
127
128 M_NEW_CUST_ACCOUNT_TBL ASL_NEW_CUST_ACCOUNT_TBL_TYPE;
129
130 /*
131 ** The flag to indicate whether a full sync will be operated.
132 */
133 M_FULL_SYNC BOOLEAN := TRUE;
134
135 /*
136 ** Hard code the Date to VARCHAR2 conversion Format. Precision is to seconds.
137 */
138 M_CONVERSION_DATE_FORMAT VARCHAR2(60) := 'YYYY-MM-DD:HH24:MI:SS';
139 /*
140 ** Save Sync Context for a particular sales rep.
141 ** It doesn't do any validation on the passed in values. Assumeably ASF_PAGE
142 ** Already done that.
143 */
144 PROCEDURE SAVE_SYNC_CONTEXT
145 ( p_salesforce_id IN NUMBER,
146 p_salesgroup_id IN NUMBER,
147 p_person_id IN NUMBER,
148 p_user_id IN NUMBER,
149 p_full_sync IN NUMBER,
150 x_curr_sync_time_str OUT NOCOPY VARCHAR2
151 );
152
153 PROCEDURE SET_ACCESS_PROFILE_VALUES
154 (p_cust_access IN VARCHAR2
155 ,p_lead_access IN VARCHAR2
156 ,p_opp_access IN VARCHAR2
157 ,p_mgr_update IN VARCHAR2
158 ,p_admin_update IN VARCHAR2
159 );
160
161 PROCEDURE SET_DEFAUL_ORG_ID
162 (p_default_org_id IN NUMBER
163 );
164
165 PROCEDURE SET_ENABLED_MODULES
166 (p_module_name VARCHAR2
167 );
168
169 /*
170 ** Given the de-normalized customer information, figure out
171 ** whether this record is newer than last update, and meanwhile,
172 ** do the security check
173 */
174 FUNCTION Check_Organization_Download
175 (p_customer_id IN NUMBER
176 ,p_org_creation_date IN DATE
177 ,p_org_update_date IN DATE
178 ,p_profile_creation_date IN DATE
179 ,p_ploc_update_date IN DATE
180 ,p_sloc_update_date IN DATE
181 ,p_bloc_update_date IN DATE
182 ,p_phone_update_date IN DATE
183 ,p_email_update_date IN DATE
184 ) RETURN VARCHAR2;
185
186 /* BLAM -- Remain separate functions just in case any client schema change */
187 FUNCTION Check_Person_Download
188 (p_customer_id IN NUMBER
189 ,p_per_creation_date IN DATE
190 ,p_per_update_date IN DATE
191 ,p_profile_creation_date IN DATE
192 ,p_phone_update_date IN DATE
193 ,p_email_update_date IN DATE
194 ) RETURN VARCHAR2;
195 /* BLAM */
196
197 FUNCTION Check_Opp_Download
198 (p_opp_creation_date IN DATE
199 ,p_opp_update_date IN DATE
200 ,p_opportunity_id IN NUMBER
201 ,p_customer_id IN NUMBER
202 ,p_customer_update_date IN DATE
203 ,p_contact_party_update_date IN DATE
204 ,p_contact_person_update_date IN DATE
205 ,p_rel_update_date IN DATE
206 ) RETURN VARCHAR2;
207
208 FUNCTION Check_Opp_Det_Download
209 (p_line_creation_date IN DATE
210 ,p_line_update_date IN DATE
211 ,p_opportunity_id IN NUMBER
212 ,p_opp_line_id IN NUMBER
213 ) RETURN VARCHAR2;
214
215 /* created by agmoore for opportunity classifications 2744023 */
216 FUNCTION Check_Opp_Class_Download
217 (p_class_creation_date IN DATE
218 ,p_class_update_date IN DATE
219 ,p_opportunity_id IN NUMBER
220 ,p_opp_class_id IN NUMBER
221 ) RETURN VARCHAR2;
222
223 /* lcooper - created for opportunity win/loss other issues 2744023 */
224 FUNCTION Check_Opp_Issues_Download
225 (p_issue_creation_date IN DATE,
226 p_issue_update_date IN DATE,
227 p_opportunity_id IN NUMBER,
228 p_opp_issue_id IN NUMBER
229 ) RETURN VARCHAR2;
230
231 FUNCTION Check_Opp_Credit_Download
232 (p_credit_creation_date IN DATE
233 ,p_credit_last_update_date IN DATE
234 ,p_lead_line_id IN NUMBER
235 ,p_group_last_update_date IN DATE
236 ,p_resource_last_update_date IN DATE
237 ) RETURN VARCHAR2;
238
239 FUNCTION Check_Contact_Download
240 (p_contact_creation_date IN DATE
241 ,p_contact_party_id IN NUMBER
242 ,p_contact_person_id IN NUMBER
243 ,p_customer_id IN NUMBER
244 ,p_person_update_date IN DATE
245 ,p_contact_update_date IN DATE
246 ,p_loc_update_date IN DATE
247 ,p_phone_update_date IN DATE
248 ,p_email_update_date IN DATE
249 ) RETURN VARCHAR2;
250
251 FUNCTION Check_Notes_Download
252 (p_note_creation_date IN DATE
253 ,p_note_source_object_code IN VARCHAR2
254 ,p_note_source_object_id IN NUMBER
255 ,p_tl_update_date IN DATE
256 ) RETURN VARCHAR2;
257
258 FUNCTION Check_Lead_Download
259 (p_lead_CREATION_DATE IN DATE
260 ,p_lead_last_update_date IN DATE
261 ,p_sales_lead_id IN NUMBER
262 ,p_customer_id IN NUMBER
263 ,p_customer_update_date IN DATE
264 ,p_cnt_party_update_date IN DATE
265 ,p_rel_last_update_date IN DATE
266 ,p_cnt_person_update_date IN DATE
267 ) RETURN VARCHAR2;
268
269 FUNCTION Check_Lead_Det_Download
270 (p_line_creation_date IN DATE
271 ,p_line_last_update_date IN DATE
272 ,p_sales_lead_id IN NUMBER
273 ) RETURN VARCHAR2;
274
275 FUNCTION Check_CST_SalesTeam_Download
276 (p_team_creation_date IN DATE
277 ,p_team_last_update_date IN DATE
278 ,p_customer_id IN NUMBER
279 ,p_group_last_update_date IN DATE
280 ,p_resource_last_update_date IN DATE
281 ) RETURN VARCHAR2;
282
283 FUNCTION Check_Opp_SalesTeam_Download
284 (p_team_creation_date IN DATE
285 ,p_team_last_update_date IN DATE
286 ,p_opportunity_id IN NUMBER
287 ,p_group_last_update_date IN DATE
288 ,p_resource_last_update_date IN DATE
289 ) RETURN VARCHAR2;
290
291
292 FUNCTION Check_Lead_SalesTeam_Download
293 (p_team_creation_date IN DATE
294 ,p_team_last_update_date IN DATE
295 ,p_lead_id IN NUMBER
296 ,p_group_last_update_date IN DATE
297 ,p_resource_last_update_date IN DATE
298 ) RETURN VARCHAR2;
299
300
301 FUNCTION Check_Address_Download
302 (p_customer_id IN NUMBER
303 ,p_add_creation_date IN DATE
304 ,p_add_update_date IN DATE
305 ) RETURN VARCHAR2;
306
307 /*
308 ** Quote Incremental Sync Functions
309 */
310 FUNCTION Check_Quote_Download
311 (p_qot_creation_date IN DATE
312 ,p_qot_update_date IN DATE
313 ,p_qot_header_id IN NUMBER
314 ,p_cust_accnt_update_date IN DATE
315 ,p_customer_update_date IN DATE
316 ,p_org_contact_update_date IN DATE
317 ,p_rel_update_date IN DATE
318 ,p_contact_party_update_date IN DATE
319 ,p_sold_to_party_update_date IN DATE
320 ,p_related_obj_update_date IN DATE
321 ,p_related_opp_update_date IN DATE
322 ) RETURN VARCHAR2;
323
324 FUNCTION Check_Quote_Det_Download
325 (p_quote_line_creation_date IN DATE
326 ,p_quote_line_update_date IN DATE
327 ,p_quote_line_det_update_date IN DATE
328 ,p_quote_header_id IN NUMBER
329 ,p_quote_line_id IN NUMBER
330 ,p_quote_line_detail_id IN NUMBER
331 ) RETURN VARCHAR2;
332
333 FUNCTION Check_Quote_Shipment_Download
334 (p_quote_shipment_creation_date IN DATE
335 ,p_quote_shipment_update_date IN DATE
336 ,p_quote_header_id IN NUMBER
337 ,p_quote_shipment_id IN NUMBER
338 ,p_ship_to_site_update_date IN DATE
339 ,p_ship_to_relation_update_date IN DATE
340 ,p_ship_to_contact_update_date IN DATE
341 ) RETURN VARCHAR2;
342
343 FUNCTION Check_Quote_Payment_Download
344 (p_quote_payment_creation_date IN DATE
345 ,p_quote_payment_update_date IN DATE
346 ,p_quote_header_id IN NUMBER
347 ,p_quote_payment_id IN NUMBER
348
349 ) RETURN VARCHAR2;
350
351 FUNCTION Check_Quote_Price_Adj_Download
352 (p_price_Adj_creation_date IN DATE
353 ,p_price_Adj_update_date IN DATE
354 ,p_quote_header_id IN NUMBER
355 ,p_quote_line_id IN NUMBER
356 ,p_price_adjustment_id IN NUMBER
357 ) RETURN VARCHAR2;
358
359 FUNCTION Check_Quote_Salesteam_Download
360 (p_qot_Salesteam_creation_date IN DATE
361 ,p_qot_Salesteam_update_date IN DATE
362 ,p_quote_header_id IN NUMBER
363 ,p_quote_access_id IN NUMBER
364 ) RETURN VARCHAR2;
365
366 FUNCTION Check_Qot_Salescredit_Download
367 (p_qot_scredit_creation_date IN DATE
368 ,p_qot_scredit_update_date IN DATE
369 ,p_quote_header_id IN NUMBER
370 ,p_quote_sales_credit_id IN NUMBER
371 ) RETURN VARCHAR2;
372
373 FUNCTION Check_Inv_Item_Download
374 (p_inv_item_creation_date IN DATE
375 ,p_inv_item_b_update_date IN DATE
376 ,p_inv_item_tl_update_date IN DATE
377 ,p_inv_catgry_update_date IN DATE
378 ,p_inv_uom_update_date IN DATE
379 ,p_inv_category_id IN NUMBER
380 ,p_inv_item_id IN NUMBER
381 ) RETURN VARCHAR2;
382
383 FUNCTION Check_Price_List_Download
384 (p_list_line_creation_date IN DATE
385 ,p_list_line_update_date IN DATE
386 ,p_line_attr_update_date IN DATE
387 ,p_list_header_id IN NUMBER
388 ,p_inv_category_id IN NUMBER
389 ) RETURN VARCHAR2;
390
391 FUNCTION Check_Cust_Account_Download
392 (p_customer_id IN NUMBER
393 ,p_cust_accnt_id IN NUMBER
394 ,p_cust_accnt_creation_date IN DATE
395 ,p_cust_update_date IN DATE
396 ,p_cust_accnt_update_date IN DATE
397 ,p_loc_update_date IN DATE
398 ,p_site_update_date IN DATE
399 ,p_site_use_update_date IN DATE
400 ) RETURN VARCHAR2;
401
402 FUNCTION Check_Rel_Cust_Addr_Download
403 (p_cust_accnt_id IN NUMBER
404 ,p_cust_rel_creation_date IN DATE
405 ,p_cust_update_date IN DATE
406 ,p_loc_update_date IN DATE
407 ,p_site_update_date IN DATE
408 ) RETURN VARCHAR2;
409
410 FUNCTION Check_Rel_Cust_Cont_Download
411 (p_cust_accnt_id IN NUMBER
412 ,p_cust_rel_creation_date IN DATE
413 ,p_cust_update_date IN DATE
414 ,p_contact_update_date IN DATE
415 ) RETURN VARCHAR2;
416
417 /*
418 ** Passing in a customer, check if it is updateable by this particular
419 ** resource
420 ** For contact access priv, the sql will pass in the object_id to check.
421 ** because contact's updateable belongs to its object that it relates to.
422 */
423 FUNCTION CHECK_CUSTOMER_UPDATEBLE
424 (p_api_version_number IN NUMBER
425 ,p_init_msg_list IN VARCHAR2
426 ,p_validation_level IN NUMBER
427 ,p_customer_id IN NUMBER
428 ,p_party_type IN VARCHAR2 DEFAULT NULL
429 ) RETURN VARCHAR2 ;
430
434 ,p_validation_level IN NUMBER
431 FUNCTION CHECK_OPPORTUNITY_UPDATEBLE
432 (p_api_version_number IN NUMBER
433 ,p_init_msg_list IN VARCHAR2
435 ,p_opportunity_id IN NUMBER
436 ) RETURN VARCHAR2 ;
437
438 FUNCTION CHECK_LEAD_UPDATEBLE
439 (p_api_version_number IN NUMBER
440 ,p_init_msg_list IN VARCHAR2
441 ,p_validation_level IN NUMBER
442 ,p_sales_lead_id IN NUMBER
443 ) RETURN VARCHAR2 ;
444
445 /*FUNCTION CHECK_CUSTOMER_UPDATEBLE(p_customer_id IN NUMBER) RETURN VARCHAR2;
446 */
447 FUNCTION CHECK_MANAGER_FLAG(p_group_id IN NUMBER) RETURN VARCHAR2;
448
449 FUNCTION GET_SOURCE_NAME(p_source_code_id IN NUMBER) RETURN VARCHAR2;
450
451 /*
452 *Overload lead/opp dirty flag for incremental sync home page
453 *display problem caused by a change in the related org.
454 */
455 FUNCTION GET_LEAD_DIRTY
456 (p_lead_creation_date IN DATE
457 ,p_lead_last_update_date IN DATE
458 ,p_customer_update_date IN DATE
459 ) RETURN VARCHAR2;
460
461 FUNCTION GET_OPPORTUNITY_DIRTY
462 (p_opp_creation_date IN DATE
463 ,p_opp_update_date IN DATE
464 ,p_customer_update_date IN DATE
465 ) RETURN VARCHAR2;
466
467 END ASL_EXCEL_UTIL_PVT;
468