· 7 years ago · Feb 13, 2019, 08:38 PM
1* Program....: LOADPKMS.PRG
2* Version....: 1.0
3* Author.....: Richard Berry & Henry Han.
4* Date.......: April 08, 2002
5* Notice.....: Copyright (c) 1997 Garpac Corp, All Rights Reserved.
6* Compiler...: Visual FoxPro 05.00.00.0402 for Windows
7* Abstract...: Import PKMS Flat File Business Class (TAN 30752).
8* Changes....:
9
10#INCLUDE SYSTEM.h
11
12#DEFINE PKMS_FILE_TYPE_CSV "CSV"
13#DEFINE PKMS_FILE_TYPE_SDF "SDF"
14
15DEFINE CLASS BPOPKMSImport AS BaseBusiness
16 Name = "BPOPKMSImport"
17
18 cMapCode = ""
19 cVersionCode = ""
20 cTargetTable = ""
21 cImportFile = "" && With fullpath
22 cHistoryFile = "" && With fullpath
23 cOutFile = "" && 35129. Temporary output file for processing. A snapshot of the original file.
24
25 *--- TR 1016437 12-Apr-2006 Goutam
26 *cFileType = "SDF" && TAN 35060 SST for handling CSV files
27 cFileType = ""
28 *=== TR 1016437 12-Apr-2006 Goutam
29
30 cImportFilter = "" && TAN 35063 SST
31 cFieldList ="" && TAN 35060 SST
32 cImportView = ""
33 lNoDataFound = false
34 lUpdateMode = true
35
36 lSkipEmptyFileLoad = false &&--- TechRec 1054669 23-Aug-2011 jjanand ===
37
38 nImportRecords = 0 && # of imported records
39
40 DIMENSION aPKMSImportViews[1]
41 aPKMSImportViews = NULL
42 *---Tan33879 HH 08/23/02
43 DIMENSION aPKMSImportCursor[1]
44 aPKMSImportCursor = NULL
45
46 DIMENSION aPKMSImportFiles[1]
47 aPKMSImportFiles = NULL
48
49 cImportCursor = ""
50 *===Tan33879 HH 08/23/02
51
52 *---TR 1016936 5/20/2006 YE
53 cTemplateCursor = ""
54 lIgnoreFieldOK = false && sparrow driven
55 nIgnoreFieldCount = 0 && Number of fields in flat file that should be ignored
56 lFormulaEnabled = false && Is zzyobrvh.expr_ok = 'I'? (Formula enabled for import)
57 *===TR 1016936 5/20/2006 YE
58
59 *--- TR 1020489 08-Jan-2007 Partha ---
60 lCSVHeaderRow = true
61 *=== TR 1020489 08-Jan-2007 Partha ===
62
63 *--- TR 1019594 22-Feb-2007 HNisar ---
64 cCustomInboundFolder = ""
65 cCustomHistoryFolder = ""
66 *=== TR 1019594 22-Feb-2007 HNisar ===
67
68 *--- TR 1027199 18-10-2007 HNISAR
69 cDelimiter = ""
70 *=== TR 1027199 18-10-2007 HNISAR
71
72 *=======================================================
73
74 FUNCTION ImportPKMSFile
75 LPARAMETERS pcMapCode, pcVersionCode, pcTargetTable
76 LOCAL llRetVal, lnSelect, lcHeading
77
78 *--- TR 1045408 16-Apr-2010 Goutam
79 LOCAL llDeleted
80 *=== TR 1045408 16-Apr-2010 Goutam
81
82 llRetVal = true
83 lnSelect = SELECT()
84 lcHeading = "Processing flat file"
85
86 WITH This
87 .cMapCode = pcMapCode
88 .cVersionCode = pcVersionCode
89 .cTargetTable = pcTargetTable
90 .cImportView = .GetViewName(.cTargetTable)
91 *---Tan33879 HH 08/23/02
92 .cImportCursor = .GetCursorName(.cTargetTable)
93 *===Tan33879 HH 08/23/02
94
95 *--- TR 1020489 08-Jan-2007 Partha ---
96 llRetVal = vl_map_version(.cMapCode, ,"tcMapCursor" , .cVersionCode)
97 llRetVal = llRetVal AND USED("tcMapCursor") AND RECCOUNT("tcMapCursor") > 0
98
99 .lCSVHeaderRow = (SysGetFieldValue("tcMapCursor", "File_Hdr") = 'Y')
100 *=== TR 1020489 08-Jan-2007 Partha ===
101
102 *--- TR 1016437 12-Apr-2006 Goutam
103
104 *--- TR 1020489 08-Jan-2007 Partha ---
105 *.cFileType = vl_map_version(.cMapCode, 'file_type', , .cVersionCode)
106 .cFileType = SysGetFieldValue("tcMapCursor", "file_type")
107
108 *--- TR 1027199 18-10-2007 HNISAR
109 .cDelimiter = SysGetFieldValue("tcMapCursor", "separator")
110 .cDelimiter = IIF(EMPTY(.cDelimiter) , "," , .cDelimiter)
111
112 *=== TR 1027199 18-10-2007 HNISAR
113
114 *=== TR 1020489 08-Jan-2007 Partha ===
115
116 *=== TR 1016437 12-Apr-2006 Goutam
117
118 *---TR 1016936 5/20/2006 YE
119 .lIgnoreFieldOK = goEnv.SV("PKMS_IMPORT_IGNORE_FIELD_ALLOWED", "N") == "Y"
120
121 *--- TR 1020489 08-Jan-2007 Partha ---
122 *.lFormulaEnabled = (vl_map_version(.cMapCode, 'expr_ok', , .cVersionCode) = 'I')
123 .lFormulaEnabled = (SysGetFieldValue("tcMapCursor", "expr_ok") = 'I')
124 *=== TR 1020489 08-Jan-2007 Partha ===
125
126 *===TR 1016936 5/20/2006 YE
127
128 .AppendToImportViews(.cImportView)
129
130 * Logging object is opened and assigned in calling program (see e.g. clspix.prg)
131 .oLog.LogProgram("loadpkms.prg")
132 .oLog.LogEntry(lcHeading)
133 .oLog.LogEntry("Map code: " + .cMapCode, true)
134 .oLog.LogEntry("Version code: " + .cVersionCode)
135 .oLog.LogEntry("Target table: " + .cTargetTable)
136 .oLog.LogEntry("File Type: " + .cFileType) &&--- TR 1016437 12-Apr-2006 Goutam
137
138 *---TR 1016936 5/20/2006 YE
139 .oLog.LogLogical("Ignoring Fields in Flat File", .lIgnoreFieldOK)
140 .oLog.LogLogical("Formula Enabled In Import" , .lFormulaEnabled)
141 *---TR 1016936 5/20/2006 YE
142
143 *--- TR 1020489 08-Jan-2007 Partha ---
144 IF .cFileType = PKMS_FILE_TYPE_CSV
145 *--- 1027199 18-OCT-2007 HNISAR
146*!* .oLog.LogLogical("Header Row in CSV file", .lCSVHeaderRow)
147 .oLog.LogLogical("Header Row in " + IIF(.cDelimiter="," ,"CSV" ,"Delimited") + " file", .lCSVHeaderRow)
148 *=== 1027199 18-OCT-2007 HNISAR
149 ENDIF
150
151 IF USED("tcMapCursor")
152 USE IN "tcMapCursor"
153 ENDIF
154 *=== TR 1020489 08-Jan-2007 Partha ===
155
156 *---Tan35129 HH 11/11/02 For multi-files, we call multiInitializeImport()
157 IF .lUpdateMode
158 llRetVal = llRetVal AND .InitializeImport()
159 Endif
160
161 IF NOT .lNoDataFound
162 llRetVal = llRetVal AND .OpenImportView()
163 llRetVal = llRetVal AND .ProcessFlatFile()
164 *---Tan35129 HH 11/11/02 Delete temp file
165 IF .lUpdateMode
166 *llRetVal = llRetVal AND .MoveFlatFileToHistory()
167
168 *--- TR 1045408 16-Apr-2010 Goutam. We must delete temporary file if it is created.
169 *llRetVal = llRetVal AND .DeleteTempFiles()
170 llDeleted = .DeleteTempFiles()
171 llRetVal = llRetVal AND llDeleted
172 *=== TR 1045408 16-Apr-2010 Goutam
173
174 Endif
175 *===Tan35129 HH 11/11/02
176 ENDIF
177
178 IF .lUpdateMode
179 .TableClose(.cImportView, true) && Delete view
180 ENDIF
181
182 .oLog.LogResult(llRetVal, lcHeading)
183 .oLog.LogSkip()
184 ENDWITH
185
186 SELECT (lnSelect)
187 RETURN llRetVal
188 ENDFUNC
189
190*=========================================================
191
192 FUNCTION Destroy
193 LOCAL ARRAY laPKMSImportViews[1]
194
195 WITH This
196 If Not Isnull(.aPKMSImportViews)
197 ACOPY(.aPKMSImportViews, laPKMSImportViews)
198 .TableClose(@laPKMSImportViews, true) && Delete views
199
200 *---Tan33879
201 IF Not .lUpdateMode
202 ACOPY(.aPKMSImportCursor, laPKMSImportViews)
203 .TableClose(@laPKMSImportViews)
204 Endif
205 Endif
206 *===Tan33879
207 DoDefault()
208 ENDWITH
209 RETURN true
210 ENDFUNC
211
212*=========================================================
213
214 FUNCTION InitializeImport
215 LOCAL llRetVal, lcFileName, lcFolder, lcHeading, lcMsg, lcOutPath, lcInPath, lcDatetimeString, ;
216 lcTagFileSearch, lnCount, lcImportString, lcWorkFile, lBatchPKMSProcess
217
218 *--- 1003913 03/12/04 IM:
219 * Batch mode flag for inbound files. If .T. - look for *.tag file along with *.dat file.
220 * Ignore .dat files without .tag files. File's name is <bridgename>_CCYYMMDDHHMMSS.*,
221 * as in "bcstyle_2004031204152731.tag,bcstyle_2004031204152731.txt"
222 lBatchPKMSProcess = (goEnv.SV("PKMS_BATCH_SUPPORT","N") == "Y")
223 *=== 1003913 03/12/04 IM
224
225 DIMENSION laBatchFiles(1,5)
226 laBatchFiles = ""
227
228 llRetVal = true
229 lcTagFileSearch = ""
230 lcImportString = ""
231 lcInPath = ""
232 lcOutPath = ""
233
234 *---Tan35129 HH 11/11/02 Generate the datetime string
235 lcDatetimeString = CurrentDateTimeAsString()
236 *===Tan35129 HH 11/11/02
237
238 WITH This
239 lcHeading = "Initializing import"
240 .oLog.LogEntry(lcHeading, true)
241
242 IF llRetVal
243 lcFileName = ALLTRIM(vl_map_version(.cMapCode, 'TextFile',, .cVersionCode))
244 IF EMPTY(lcFileName)
245 llRetVal = false
246 lcMsg = "File name was not declared on bridge map maintenance."
247 .oLog.LogEntry(lcMsg)
248 .ErrorBox(lcMsg)
249 ENDIF
250 ENDIF
251
252 IF llRetVal
253 *--- TR 1019594 22-Feb-2007 HNisar ---
254*!* lcFolder = goEnv.sv("cFIntIn")
255 lcFolder = IIF(EMPTY(.cCustomInboundFolder), goEnv.sv("cFIntIn"),.cCustomInboundFolder)
256 *=== TR 1019594 08-Jan-2007 HNisar ===
257
258 IF goInit.FolderConfirm(lcFolder)
259 .cImportFile = lcFolder + lcFileName
260
261 *---Tan35129 HH 11/11/02 Keep down the temp file name for later use.
262 lcInPath = JUSTPATH(.cImportFile)
263 lcInPath = ADDBS(lcInPath)
264 .cOutFile = lcInPath + JUSTSTEM(.cImportFile) + "_Unprocessed_" + ;
265 lcDatetimeString + "." + JUSTEXT(.cImportFile)
266 *===Tan35129 HH 11/11/02
267
268 ELSE
269 llRetVal = false
270 lcMsg = "Inbound interface folder " + lcFolder + " does not exist."
271 .oLog.LogEntry(lcMsg)
272 .ErrorBox(lcMsg)
273 ENDIF
274 ENDIF
275
276 IF llRetVal
277 *--- TR 1019594 22-Feb-2007 HNisar ---
278*!* lcFolder = goEnv.sv("cFIntHst")
279 lcFolder = IIF(EMPTY(.cCustomHistoryFolder), goEnv.sv("cFIntHst"),.cCustomHistoryFolder)
280 *=== TR 1019594 08-Jan-2007 HNisar ===
281
282
283 IF goInit.FolderConfirm(lcFolder)
284 *---Tan35129 HH 11/11/02 use the same datetime string with temp file
285 *so as to avoid confusion
286 .cHistoryFile = lcFolder + JUSTSTEM(lcFileName) + "_" + ;
287 lcDatetimeString + ".hst"
288 *===Tan35129 HH 11/11/12
289
290 *--- 1003913 03/12/2004 Ilya:
291 lcOutPath = JUSTPATH(.cHistoryFile)
292 lcOutPath = ADDBS(lcOutPath)
293 *=== 1003913 03/12/2004 Ilya.
294 ELSE
295 llRetVal = false
296 lcMsg = "History interface folder " + lcFolder + " does not exist."
297 .oLog.LogEntry(lcMsg)
298 .ErrorBox(lcMsg)
299 ENDIF
300 ENDIF
301
302 *--- 1003913 03/12/04 Ilya: Batch processing
303 IF llRetVal
304 IF lBatchPKMSProcess
305 * Look for batch *.tag files. Merge files into one Import, one History, then keep going old way
306 * If no *.tag files found, then quit
307 lcTagFileSearch = lcInPath + JUSTSTEM(.cImportFile) + "_??????????????.tag"
308 lnBatchCount = ADIR(laBatchFiles,lcTagFileSearch)
309 IF lnBatchCount > 0
310 * Merge files into one
311 llRetVal = (ASORT(laBatchFiles,1) = 1) && Sort in chronological order
312 IF llRetVal
313 IF lnBatchCount > 1
314 lcWorkFile = lcInPath + JUSTSTEM(laBatchFiles[1,1]) + "_MERGE." + JUSTEXT(.cImportFile)
315 ELSE
316 lcWorkFile = lcInPath + JUSTSTEM(laBatchFiles[1,1]) + "." + JUSTEXT(.cImportFile)
317 ENDIF
318
319 lcImportString = ""
320 FOR lnCount = 1 TO lnBatchCount
321 lcFile = lcInPath + JUSTSTEM(laBatchFiles[lnCount,1]) + "." + JUSTEXT(.cImportFile)
322 IF FILE(lcFile)
323 lcImportString = lcImportString + FILETOSTR(lcFile)
324 ELSE
325 llRetVal = false
326 ENDIF
327
328 .cHistoryFile = lcOutPath + JUSTSTEM(laBatchFiles[lnCount,1]) + ".hst"
329 llRetVal = llRetVal AND .MoveFlatFileToHistory(lcFile)
330 IF !llRetVal
331 EXIT
332 ENDIF
333 ENDFOR
334
335 IF !EMPTY(lcImportString)
336 .cImportFile = lcWorkFile
337 .cHistoryFile = lcOutPath + JUSTSTEM(lcWorkFile) + ".hst"
338
339 IF lnBatchCount > 1
340 * Create "merge" file. If lnBatchCount is 1, leave import file as is.
341 =STRTOFILE(lcImportString,lcWorkFile)
342 llRetVal = llRetVal AND .MoveFlatFileToHistory(.cImportFile)
343 ENDIF
344
345 .AppendToImportFiles(.cImportFile, .cHistoryFile, .cOutFile)
346
347 IF llRetVal
348 * Delete .tag file(s)
349 FOR lnCount = 1 TO lnBatchCount
350 llRetVal = llRetVal AND SysNoError("DELETE FILE " + lcInPath + laBatchFiles[lnCount,1])
351 ENDFOR
352 ENDIF
353
354 ELSE
355 .lNoDataFound = true
356
357 lcMsg = "Inbound interface file(s) " + JUSTSTEM(.cImportFile) + "_?????????????? empty."
358 .oLog.LogEntry(lcMsg)
359 lcMsg = "Records imported: 0"
360 .oLog.LogEntry(lcMsg)
361 ENDIF
362 ENDIF
363 ELSE
364 .lNoDataFound = true
365
366 lcMsg = "Inbound interface file " + JUSTSTEM(.cImportFile) + "_?????????????? does not exist."
367 .oLog.LogEntry(lcMsg)
368 lcMsg = "Records imported: 0"
369 .oLog.LogEntry(lcMsg)
370 ENDIF
371 ELSE
372 *--- 1003913 03/12/04 Ilya: Old way:
373 * Inbound file is optional
374 IF NOT FILE(.cImportFile)
375 .lNoDataFound = true
376
377 lcMsg = "Inbound interface file " + .cImportFile + " does not exist."
378 .oLog.LogEntry(lcMsg)
379 lcMsg = "Records imported: 0"
380 .oLog.LogEntry(lcMsg)
381 *---TAN33879 HH 08/23/02
382 ELSE
383 .AppendToImportFiles(.cImportFile, .cHistoryFile, .cOutFile)
384 llRetVal = .MoveFlatFileToHistory(.cImportFile)
385 *===TAN33879 HH 08/23/02
386 ENDIF
387 ENDIF
388 ENDIF
389 *=== 1003913
390
391 .oLog.LogResult(llRetVal, lcHeading)
392 ENDWITH
393 RETURN llRetVal
394 ENDFUNC
395
396*===================================================================================
397
398 FUNCTION OpenImportView
399 LOCAL llRetVal, lnSelect, lcSQLString, lcHeading, lcTempCursor
400
401 llRetVal = true
402 lnSelect = SELECT()
403
404 lcTempCursor = GetUniqueFileName()
405
406 WITH This
407 lcHeading = "Creating import view"
408 .oLog.LogEntry(lcHeading, true)
409
410 lcSQLString = "SELECT * FROM " + .cTargetTable
411
412 llRetVal = llRetVal AND .CreateSQLView(.cImportView, lcSQLString)
413 llRetVal = llRetVal AND .OpenTable(.cImportView,,,,,,true) && No data
414
415 IF NOT llRetVal
416 .ErrorBox("Cannot open import view." + CRLF + MSG_CONTACT_SYSADMIN)
417 Else
418 *---Tan33879 HH 08/23/02
419 If Not .lUpdateMode
420 Select * from (.cImportView) into cursor (lcTempCursor)
421 MakeCursorWritable(lcTempCursor, .cImportCursor)
422 .TableClose(lcTempCursor)
423 Endif
424 *===Tan33879 HH 08/23/02
425 ENDIF
426
427 .oLog.LogResult(llRetVal, lcHeading)
428 ENDWITH
429
430 SELECT (lnSelect)
431 RETURN llRetVal
432 ENDFUNC
433
434*=====================================================================
435
436 FUNCTION ProcessFlatFile
437 LOCAL llRetVal, lnSelect, lcHeading, lcTemplateCursor, lcImportCursor, ;
438 lnLastPKey, lnCurrPkey, lnImportRecs, lcFieldName, lcFieldString, ;
439 lcLineString, loImport
440
441 *---TR 1016936 5/20/2006 YE
442 LOCAL lnIgnoreFieldCount, llFillChar
443 *===TR 1016936 5/20/2006 YE
444
445 llRetVal = true
446 lnSelect = SELECT()
447
448 lcTemplateCursor = GetUniqueFileName()
449 lcImportCursor = GetUniqueFileName()
450
451 WITH This
452 lcHeading = "Importing flat file"
453 .oLog.LogEntry(lcHeading, true)
454 .oLog.LogEntry("File name: " + .cImportFile)
455
456 IF llRetVal
457 vl_map_detail(.cMapCode,, lcTemplateCursor, .cVersionCode)
458 llRetVal = llRetVal AND USED(lcTemplateCursor) AND RECCOUNT(lcTemplateCursor) > 0
459
460 *---TR 1016936 5/20/2006 YE
461 .cTemplateCursor = lcTemplateCursor && Because I need to use it in another function later.
462 *===TR 1016936 5/20/2006 YE
463
464 ENDIF
465
466 *---TR 1016936 5/20/2006 YE
467 lnIgnoreFieldCount = 0
468 *===TR 1016936 5/20/2006 YE
469
470 IF llRetVal
471 .cFieldList = ""
472
473 SELECT (lcTemplateCursor)
474 SCAN
475 *---TR 1016936 5/17/06 YE
476*!* IF NOT EMPTY(.cFieldList)
477 llFillChar = (LEFT(ALLTRIM(field_name),9) == 'FILL_CHAR')
478 IF NOT EMPTY(.cFieldList) AND NOT llFillChar
479 *===TR 1016936 5/17/06 YE
480
481 .cFieldList = .cFieldList + ","
482 ENDIF
483
484 *---TR 1016936 5/17/06 YE
485*!* .cFieldList = .cFieldList + ALLTRIM(field_name)
486 IF llFillChar
487 lnIgnoreFieldCount = lnIgnoreFieldCount + 1
488 ELSE
489 .cFieldList = .cFieldList + ALLTRIM(field_name)
490 ENDIF
491 *===TR 1016936 5/17/06 YE
492
493 ENDSCAN
494
495 *---TR 1016936 5/17/06 YE - Need to use it in another function later.
496 .nIgnoreFieldCount = lnIgnoreFieldCount
497 *===TR 1016936 5/17/06 YE
498
499 * TAN 33122 More flat-file positions required - RRB.
500 *---TAN 35063 SST 12/11/02
501 llRetVal = llRetVal AND .CreateImportCursor(lcImportCursor)
502 *===TAN 35063 SST 12/11/02
503
504 *---TAN35129 AZ 10/29/02 commented out 1 line
505 * APPEND FROM (.cImportFile) TYPE SDF
506 llRetVal = llRetVal AND .AppendFromFlatFile(.cOutFile, lcImportCursor)
507 *---TAN35129 AZ 10/29/02
508
509 *---HH 08/28/02 0 record modification
510 *llRetVal = llRetVal AND USED(lcImportCursor) AND RECCOUNT(lcImportCursor) > 0
511 llRetVal = llRetVal AND USED(lcImportCursor)
512 *===HH 08/28/02
513 ENDIF
514
515 IF llRetVal
516 *--- NH TR 1010128 following modification is for specific condition and should not be
517 *--- under generic code execution path.
518 *--- HD TR 1008612 02-28-2005
519*!* select (lcImportCursor)
520*!* scan
521*!* if !empty(delv_code)
522*!* lcSQLCommand = "replace "+alltrim(lcImportCursor)+".fcast_from_year with 0"
523*!* &lcSQLCommand
524*!* lcSQLCommand = "replace "+alltrim(lcImportCursor)+".fcast_from_month with 0"
525*!* &lcSQLCommand
526*!* lcSQLCommand = "replace "+alltrim(lcImportCursor)+".fcast_from_week with 0"
527*!* &lcSQLCommand
528*!* lcSQLCommand = "replace "+alltrim(lcImportCursor)+".fcast_to_year with 0"
529*!* &lcSQLCommand
530*!* lcSQLCommand = "replace "+alltrim(lcImportCursor)+".fcast_to_month with 0"
531*!* &lcSQLCommand
532*!* lcSQLCommand = "replace "+alltrim(lcImportCursor)+".fcast_to_week with 0"
533*!* &lcSQLCommand
534*!* endif
535*!* endscan
536 * === HD TR 1008612 02-28-2005
537 *=== TR 1010128 NH
538
539 lnImportRecs = RECCOUNT(lcImportCursor)
540 .nImportRecords = lnImportRecs
541 lnLastPKey = v_NextPkey(.cTargetTable, lnImportRecs)
542 lnCurrPkey = lnLastPKey - lnImportRecs + 1 && Starting pKey
543 llRetVal = llRetVal AND lnLastPKey > 0
544
545 *---HH 08/28/02 0 record modification
546 *IF llRetVal
547 IF llRetVal And lnImportRecs>0
548 *===HH 08/28/02
549 SELECT (lcImportCursor)
550
551 SCAN
552 * TAN 33122 More flat-file positions required - RRB.
553 *lcLineString = pkms_text_1 + pkms_text_2 + pkms_text_3 + pkms_text_4
554
555 * --- TR 1021629 1/22/07 NSD
556 * This is a simple data validation. If the file type is SDF,
557 * we are on the last record, and the record is empty, then skip
558 * this record. It should not exist. The flat file has an extra carriage
559 * return that will create bad data in transaction maintenance.
560
561 * --- TR 1022341 NSD 6/20/07
562 * Looking at last record only does not necessarily filter it out.
563 * Remove any blank records.
564 *IF .cFileType = PKMS_FILE_TYPE_SDF ;
565 * AND RECNO(lcImportCursor) = RECCOUNT(lcImportCursor) ;
566 * AND EMPTY(pkms_text_1 + pkms_text_2 + pkms_text_3 + pkms_text_4)
567 * * We have imported a blank line. Warning user and skipping line
568 * .oLog.LogEntry("Warning: Record #" + TRANSFORM(RECNO(lcImportCursor)) + ;
569 * " is empty. This record will be skipped.")
570 * LOOP
571 *ENDIF
572
573 IF .cFileType = PKMS_FILE_TYPE_SDF ;
574 AND EMPTY(pkms_text_1 + pkms_text_2 + pkms_text_3 + pkms_text_4)
575 * We have imported a blank line. Warning user and skipping line
576 .oLog.LogEntry("Warning: Record #" + TRANSFORM(RECNO(lcImportCursor)) + ;
577 " is empty. This record will be skipped.")
578 LOOP
579 ENDIF
580 * === TR 1022341 NSD 6/20/07
581 * === TR 1021629 1/22/07 NSD
582
583 *---Tan33879 HH 08/23/02
584 IF .lUpdateMode
585 SELECT (.cImportView)
586 Else
587 SELECT (.cImportCursor)
588 Endif
589 *===Tan33879 HH 08/23/02
590
591 SCATTER NAME loImport MEMO BLANK
592
593 *---TAN 35060 - SST - 12/20/02
594 * For CSV fil ImportCursors field from map
595 *SELECT (lcTemplateCursor)
596 *SCAN
597 * lcFieldName = "loImport." + ALLTRIM(field_name)
598 * lcFieldString = ALLTRIM(SUBSTR(lcLineString, output_pos, output_len))
599
600 * IF NOT EMPTY(output_fmt)
601 * lcFieldString = .FormatField(lcFieldString, output_fmt)
602 * ENDIF
603
604 * &lcFieldName = IIF(output_len > 0, lcFieldString, output_def)
605 *ENDSCAN
606
607 IF .cFileType = PKMS_FILE_TYPE_CSV
608 SELECT (lcTemplateCursor)
609 SCAN
610
611 *---TR 1016936 5/17/06 YE - Fill_Char fields should be ignored +
612 * if field has formula it overrides its value in flat file
613*!* lcFieldName = "loImport." + ALLTRIM(field_name)
614*!* lcFieldString = lcImportCursor+"."+ALLTRIM(field_name)
615*!* &lcFieldName = EVAL(lcFieldString)
616 IF NOT LEFT(ALLTRIM(field_name),9) == 'FILL_CHAR'
617 lcFieldName = "loImport." + ALLTRIM(field_name)
618 IF .lFormulaEnabled AND !EMPTY(formula)
619 lcFieldString = ALLTRIM(formula)
620 SELECT (lcImportCursor)
621 &lcFieldName = EVAL(lcFieldString)
622 SELECT (lcTemplateCursor)
623 ELSE
624 lcFieldString = lcImportCursor+"."+ALLTRIM(field_name)
625
626
627 *--- TR 1030325 Goutam
628 *&lcFieldName = EVAL(lcFieldString)
629 *--- TechRec 1048113/1030325 30-Jul-2010 MA --- date defaultas
630* &lcFieldName = IIF(NOT EMPTY(output_def) AND EMPTY(EVAL(lcFieldString)), output_def, EVAL(lcFieldString))
631 *=== TR 1030325 Goutam
632 IF !EMPTY(output_def) AND ( "DD" $ output_fmt AND "YY" $ output_fmt AND "MM" $ output_fmt)
633
634 lnCentPos = AT('CC',output_fmt)
635 lcCent = IIF(lnCentPos = 0,"",SUBSTR(output_def,lnCentPos,2))
636
637 lnYearPos = AT('YY',output_fmt)
638 lcYear = IIF(lnCentPos = 0,"",SUBSTR(output_def,lnYearPos,2))
639
640 lnMonPos = AT('MM',output_fmt)
641 lcMon = IIF(lnMonPos = 0,"",SUBSTR(output_def,lnMonPos,2))
642
643 lnDayPos = AT('DD',output_fmt)
644 lcDay = IIF(lnDayPos = 0,"",SUBSTR(output_def,lnDayPos,2))
645
646 lcDateDef = lcCent + lcYear + ','+ lcMon + ','+ lcDay
647 TRY
648 lcoutput_def = DTOC(DATE(&lcDateDef))
649 CATCH
650 lcoutput_def =""
651 ENDTRY
652
653 ELSE
654 lcoutput_def = output_def
655 ENDIF
656
657 &lcFieldName = IIF(!EMPTY(output_def) AND EMPTY(EVAL(lcFieldString)), lcOutput_Def, EVAL(lcFieldString))
658 *=== TechRec 1048113 30-Jul-2010 MA ===
659
660 ENDIF
661
662 ENDIF
663 *===TR 1016936 5/17/06 YE
664
665 ENDSCAN
666 ELSE && SDF
667 * TAN 33122 More flat-file positions required - RRB.
668
669 *--- TR1001092 16-SEP-2003 UB
670 * lcLineString = &lcImportCursor..pkms_text_1 + &lcImportCursor..pkms_text_2 + ;
671 * &lcImportCursor..pkms_text_3 + &lcImportCursor..pkms_text_4
672 SELECT (lcImportCursor)
673 lcLineString = pkms_text_1 + pkms_text_2 + ;
674 pkms_text_3 + pkms_text_4
675 *=== TR1001092 16-SEP-2003 UB
676
677 SELECT (lcTemplateCursor)
678 SCAN
679 *---TR 1016936 5/17/06 YE - Fill_Char fields should be ignored +
680 * if field has formula it overrides its value in flat file
681*!* lcFieldName = "loImport." + ALLTRIM(field_name)
682*!* lcFieldString = ALLTRIM(SUBSTR(lcLineString, INT(output_pos), output_len))
683*!* IF NOT EMPTY(output_fmt)
684*!* lcFieldString = .FormatField(lcFieldString, output_fmt)
685*!* ENDIF
686*!* &lcFieldName = IIF(output_len > 0, lcFieldString, output_def)
687
688 IF NOT LEFT(ALLTRIM(field_name),9) == 'FILL_CHAR'
689 lcFieldName = "loImport." + ALLTRIM(field_name)
690 IF .lFormulaEnabled AND !EMPTY(formula)
691 lcFieldString = ALLTRIM(formula)
692 SELECT (lcImportCursor)
693 &lcFieldName = EVAL(lcFieldString)
694 SELECT (lcTemplateCursor)
695 ELSE
696 lcFieldString = ALLTRIM(SUBSTR(lcLineString, INT(output_pos), output_len))
697 IF NOT EMPTY(output_fmt)
698 lcFieldString = .FormatField(lcFieldString, output_fmt)
699 ENDIF
700 *--- 1031236 03/07/08 SKG
701*!* &lcFieldName = IIF(output_len > 0, lcFieldString, output_def)
702 &lcFieldName = IIF(!EMPTY(lcFieldString), lcFieldString, output_def)
703 *=== 1031236 03/07/08 SKG
704 ENDIF
705 ENDIF
706 *===TR 1016936 5/17/06 YE
707
708 ENDSCAN
709 ENDIF
710 *===TAN 35060 - SST - 12/20/02
711 loImport.pKey = lnCurrPkey
712
713 *---Tan33879 HH 08/23/02
714 IF .lUpdateMode
715 SELECT (.cImportView)
716 APPEND BLANK IN (.cImportView)
717 GATHER NAME loImport MEMO
718 .TimeStampDocument(.cImportView)
719 Else
720 SELECT (.cImportCursor)
721 APPEND BLANK IN (.cImportCursor)
722 GATHER NAME loImport MEMO
723 .TimeStampDocument(.cImportCursor)
724 Endif
725 *===Tan33879 HH 08/23/02
726
727 lnCurrPkey = lnCurrPkey + 1
728
729 SELECT (lcImportCursor)
730 ENDSCAN
731
732 * Update back-end with transaction
733 IF .lUpdateMode
734 llRetVal = llRetVal AND .TableUpdateWithTransaction(.cImportView)
735 ENDIF
736 ENDIF
737 ENDIF
738
739 IF llRetVal
740 .oLog.LogEntry("Records imported: " + ALLTRIM(STR(lnImportRecs)))
741 ELSE
742 .ErrorBox("Could not process flat file " + .cImportFile + "." + ;
743 CRLF + MSG_CONTACT_SYSADMIN)
744 ENDIF
745
746 .oLog.LogResult(llRetVal, lcHeading)
747
748 .TableClose(lcImportCursor)
749 .TableClose(lcTemplateCursor)
750 ENDWITH
751
752 SELECT (lnSelect)
753 RETURN llRetVal
754 ENDFUNC
755
756*=====================================================================
757
758 FUNCTION MoveFlatFileToHistory
759 LPARAMETERS tcImportFile && TAN 35129
760 LOCAL llRetVal, lnSelect, lcHeading, lcMsg, lcImportFile, lcCommand
761
762 llRetVal = true
763 lnSelect = SELECT()
764
765 WITH This
766 lcHeading = "Moving flat file to history"
767 .oLog.LogEntry(lcHeading, true)
768
769 * If file has no extension, rename requires filename to have a period at the end
770 lcImportFile = IIF(EMPTY(tcImportFile), .cImportFile, tcImportFile)
771 IF EMPTY(JUSTEXT(lcImportFile))
772 lcImportFile = lcImportFile + "."
773 ENDIF
774
775 *=== TAN 35129 AZ
776 * RENAME (lcImportFile) TO (.cHistoryFile)
777 lcCommand = "RENAME " + lcImportFile + " TO " + .cHistoryFile
778 llRetVal = llRetVal AND SysNoError(lcCommand)
779 *=== TAN 35129
780
781 llRetVal = llRetVal AND FILE(.cHistoryFile)
782
783 IF llRetVal
784 lcMsg = "Old file: " + .cImportFile
785 .oLog.LogEntry(lcMsg)
786 lcMsg = "New file: " + .cHistoryFile
787 .oLog.LogEntry(lcMsg)
788 ELSE
789 .ErrorBox("Could not move flat file to history." + CRLF + MSG_CONTACT_SYSADMIN)
790 ENDIF
791
792 .oLog.LogResult(llRetVal, lcHeading)
793 ENDWITH
794
795 SELECT (lnSelect)
796 RETURN llRetVal
797 ENDFUNC
798
799*====================================================================
800
801 FUNCTION FormatField
802 LPARAMETERS pcFieldString, pcOutput_Fmt
803 LOCAL lcFieldString, lnFirstSpace, lnLengthOfWord, lcNumberOfDecimals, ;
804 lnNumberOfDecimals, lcDay, lcMonth, lcYear, lcCentury
805
806 lcFieldString = pcFieldString
807
808 *--- Tan32981 HH Convert date format
809 IF AT('MM',pcOutput_Fmt)>0 && means date value
810 STORE "" TO lcDay, lcMonth, lcYear, lcCentury
811 lcMonth=SubStr(lcFieldString, at('MM',pcOutput_Fmt),2)
812 IF AT('DD',pcOutput_Fmt)>0
813 lcDay=SubStr(lcFieldString, at('DD',pcOutput_Fmt),2)
814 ENDIF
815 IF AT('YY',pcOutput_Fmt)>0
816 lcYear=SubStr(lcFieldString, at('YY',pcOutput_Fmt),2)
817 ENDIF
818 IF AT('CC',pcOutput_Fmt)>0
819 lcCentury=SubStr(lcFieldString, at('CC',pcOutput_Fmt),2)
820 ENDIF
821 lcFieldString = lcMonth + "/" + lcDay + "/" + lcCentury + lcYear
822 Else
823 *=== End of Tan32981
824 lnFirstSpace = AT(SPACE(1), pcOutput_Fmt)
825 lnLengthOfWord = lnFirstSpace - 1
826 lcNumberOfDecimals = UPPER(SUBSTR(pcOutput_Fmt, 1, lnLengthOfWord))
827
828 DO CASE
829 CASE lcNumberOfDecimals = 'ONE'
830 lnNumberOfDecimals = 1
831 CASE lcNumberOfDecimals = 'TWO'
832 lnNumberOfDecimals = 2
833 CASE lcNumberOfDecimals = 'THREE'
834 lnNumberOfDecimals = 3
835 CASE lcNumberOfDecimals = 'FOUR'
836 lnNumberOfDecimals = 4
837 CASE lcNumberOfDecimals = 'FIVE'
838 lnNumberOfDecimals = 5
839 CASE lcNumberOfDecimals = 'SIX'
840 lnNumberOfDecimals = 6
841 CASE lcNumberOfDecimals = 'SEVEN'
842 lnNumberOfDecimals = 7
843 CASE lcNumberOfDecimals = 'EIGHT'
844 lnNumberOfDecimals = 8
845 OTHERWISE
846 lnNumberOfDecimals = 0
847 ENDCASE
848
849 IF lnNumberOfDecimals > 0
850 *--- TechRec 1059340 16-Mar-2012 TShenbagavalli ---
851 *lcFieldString = SUBSTR(lcFieldString, 1, LEN(lcFieldString) - lnNumberOfDecimals)
852 IF NOT ("." $ ALLTRIM(lcFieldString))
853 lcFieldString = SUBSTR(lcFieldString, 1, LEN(lcFieldString) - lnNumberOfDecimals)
854 ELSE
855 lcFieldString = SUBSTR(lcFieldString, 1, LEN(lcFieldString) - lnNumberOfDecimals-1)
856 ENDIF
857 *=== TechRec 1059340 16-Mar-2012 TShenbagavalli ===
858 ENDIF
859
860 *--- TAN 35063 SST - 12/03/2002 patch for the decimal point
861 *--- TechRec 1059340 16-Mar-2012 TShenbagavalli ---
862 *IF NOT ("." $ ALLTRIM(pcFieldString))
863 IF NOT ("." $ ALLTRIM(lcFieldString)) AND lnNumberOfDecimals > 0
864 *=== TechRec 1059340 16-Mar-2012 TShenbagavalli ===
865 lcFieldString = ALLTRIM(lcFieldString) + "." + ;
866 ALLTRIM(SUBSTR(pcFieldString, ;
867 LEN(pcFieldString) - lnNumberOfDecimals+1, lnNumberOfDecimals))
868 ENDIF
869 *===TAN 35063 SST - 12/03/2002
870 ENDIF
871 RETURN lcFieldString
872 ENDFUNC
873
874*=================================================================
875
876 FUNCTION AppendToImportViews
877 LPARAMETERS pcImportView
878 LOCAL lnDimension
879
880 WITH This
881 lnDimension = IIF(IsNull(.aPKMSImportViews), 1, ALEN(.aPKMSImportViews) + 1)
882
883 DIMENSION .aPKMSImportViews[lnDimension]
884 .aPKMSImportViews[lnDimension] = pcImportView
885
886 *---Tan33879 HH 08/23/02
887 DIMENSION .aPKMSImportCursor[lnDimension]
888 .aPKMSImportCursor[lnDimension] = pcImportView+"Cursor"
889 *===Tan33879 HH 08/23/02
890 ENDWITH
891 RETURN true
892 ENDFUNC
893
894*=================================================================
895 *---Tan33879 HH 08/23/02
896 FUNCTION AppendToImportFiles
897 LPARAMETERS pcImportFile, pcHistoryFile, pcOutFile
898 LOCAL lnDimension
899
900 WITH This
901 lnDimension = IIF(IsNull(.aPKMSImportFiles), 1, ALEN(.aPKMSImportFiles,1) + 1)
902
903 *---Tan35129 HH 11/11/02 Added pcOutFile into the array
904 DIMENSION .aPKMSImportFiles[lnDimension,3]
905 .aPKMSImportFiles[lnDimension,1] = pcImportFile
906 .aPKMSImportFiles[lnDimension,2] = pcHistoryFile
907 .aPKMSImportFiles[lnDimension,3] = pcOutFile
908 ENDWITH
909 RETURN true
910 ENDFUNC
911 *===Tan33879 HH 08/23/02
912
913*=================================================================
914
915 FUNCTION GetViewName
916 LPARAMETERS pcImportTable
917 LOCAL lcImportView
918
919 WITH This
920 lcImportView = "V" + pcImportTable + "_PKMS_Import"
921 ENDWITH
922 RETURN lcImportView
923 ENDFUNC
924
925*=================================================================
926
927 *---Tan33879 HH 08/23/02
928 FUNCTION GetCursorName
929 LPARAMETERS pcImportTable
930 LOCAL lcImportCursor
931
932 WITH This
933 lcImportCursor = "V"+pcImportTable + "_PKMS_ImportCursor"
934 ENDWITH
935 RETURN lcImportCursor
936 ENDFUNC
937 *===Tan33879 HH 08/23/02
938*=================================================================
939
940 FUNCTION SyncHeaderDetail
941 LPARAMETERS pcHeaderTable, pcDetailTable, pcJoinField, poParent, pnStart, pnLen
942 LOCAL lcHeaderView, lcDetailView, llRetVal, lnSelect, lvJoinValue, ;
943 lnPkey, lnTotal, lcHeading, lcErrorMsg, lnCnt, lcCursorName, lcSQLCommand, llAllowBlankDetail, llPre_InvFldExists
944 *--- TechRec 1037759 15-Apr-2009 T.Shenbagavalli added llAllowBlankDetail, llPre_InvFldExists ---
945
946 llRetVal = true
947 lnSelect = SELECT()
948 lcCursorName = GetUniqueFileName()
949
950 *--- TechRec 1037759 15-Apr-2009 T.Shenbagavalli ---
951 llAllowBlankDetail = False
952 llPre_InvFldExists = False
953 *=== TechRec 1037759 15-Apr-2009 T.Shenbagavalli ===
954
955
956 WITH This
957 *---Tan33879 HH 08/23/02
958*!* lcHeaderView = .GetViewName(pcHeaderTable)
959*!* lcDetailView = .GetViewName(pcDetailTable)
960 lcHeaderView = .GetCursorName(pcHeaderTable)
961 lcDetailView = .GetCursorName(pcDetailTable)
962 *===Tan33879 HH 08/23/02
963
964 lcHeading = "Connecting header and detail records"
965 .oLog.LogEntry(lcHeading, true)
966 .oLog.LogEntry("Header view: " + lcHeaderView)
967 .oLog.LogEntry("Detail view: " + lcDetailView)
968 .oLog.LogEntry("Join field: " + pcJoinField)
969
970 SELECT (lcHeaderView)
971
972 *--- TechRec 1037759 15-Apr-2009 T.Shenbagavalli ---
973 llPre_InvFldExists = FieldExists("Pre_Inv", lcHeaderView )
974 *=== TechRec 1037759 15-Apr-2009 T.Shenbagavalli ===
975
976 lnCnt = Reccount()
977 SCAN
978 lvJoinValue = &lcHeaderView..&pcJoinField
979 lnPkey = &lcHeaderView..pKey
980
981 *--- TechRec 1037759 15-Apr-2009 T.Shenbagavalli ---
982 llAllowBlankDetail = llPre_InvFldExists AND (INLIST(&lcHeaderView..pre_inv, '99', 'C'))
983 *=== TechRec 1037759 15-Apr-2009 T.Shenbagavalli ===
984
985 REPLACE ALL fKey WITH lnPkey ;
986 FOR &pcJoinField = lvJoinValue ;
987 IN (lcDetailView)
988
989 * Childless parent
990 SELECT (lcDetailView)
991 COUNT FOR fKey = lnPkey TO lnTotal
992 *---Tan35592 HH 12/11/02
993 *llRetVal = llRetVal AND lnTotal > 0
994
995 *IF NOT llRetVal
996 *--- TechRec 1037759 15-Apr-2009 T.Shenbagavalli And NOT llAllowBlankDetail ---
997 If lnTotal = 0 And NOT llAllowBlankDetail
998 lcErrorMsg = "No detail records exist for " + ;
999 pcJoinField + " = " + ConvertToString(lvJoinValue)
1000 .oLog.LogEntry("ERROR: " + lcErrorMsg)
1001 DELETE IN (lcHeaderView)
1002 *EXIT && Exit SCAN
1003 ENDIF
1004 *===Tan35592 HH 12/11/02
1005
1006 SELECT (lcHeaderView)
1007 If Type("poParent")="O"
1008 poParent.AdvanceThermo(pnStart+Recno()/lnCnt*pnLen)
1009 Endif
1010 ENDSCAN
1011
1012 *--- 1005944 07/09/2004 Ilya:
1013 * Account for case when header has several records with same JoinField. Details are synced
1014 * only to one of those headers. Will delete the headers that are without synced details.
1015 SELECT (lcHeaderView)
1016 SCAN
1017 lnPkey = EVALUATE(lcHeaderView + ".pKey")
1018
1019 *--- TechRec 1037759 15-Apr-2009 T.Shenbagavalli ---
1020 llAllowBlankDetail = llPre_InvFldExists AND (INLIST(&lcHeaderView..pre_inv, '99', 'C'))
1021
1022 IF NOT llAllowBlankDetail
1023 *=== TechRec 1037759 15-Apr-2009 T.Shenbagavalli ===
1024
1025 SELECT (lcDetailView)
1026 LOCATE FOR fKey = lnPkey
1027 IF !FOUND()
1028 DELETE IN (lcHeaderView)
1029 ENDIF
1030 SELECT (lcHeaderView)
1031 *--- TechRec 1037759 15-Apr-2009 T.Shenbagavalli ---
1032 ENDIF
1033 *=== TechRec 1037759 15-Apr-2009 T.Shenbagavalli ===
1034
1035 ENDSCAN
1036 *=== 1005944 07/09/2004
1037
1038 * Orphans
1039 IF llRetVal
1040 SELECT (lcDetailView)
1041 *---Tan35592 HH 12/11/02
1042 lcSQLCommand = "SELECT Distinct " + pcJoinField + " as KeyField "+;
1043 "FROM " + lcDetailView + " WHERE FKey=0 order by 1"
1044 If v_SQLExec(lcSQLCommand, lcCursorName, , true) &&Local command
1045 Select (lcCursorName)
1046 SCAN &&FOR fKey = 0
1047 *lvJoinValue = &lcDetailView..&pcJoinField
1048 lcErrorMsg = "Orphans records exist for " + ;
1049 pcJoinField + " = " + ConvertToString(KeyField)
1050 .oLog.LogEntry("ERROR: " + lcErrorMsg)
1051 *COUNT FOR fKey = 0 TO lnTotal
1052 *llRetVal = llRetVal AND lnTotal = 0
1053
1054 *IF NOT llRetVal
1055 * lcErrorMsg = "Orphans records exist on the detail flat file"
1056 * .oLog.LogEntry("ERROR: " + lcErrorMsg)
1057 *ENDIF
1058 ENDSCAN
1059 .TableClose(lcCursorName)
1060 DELETE From (lcDetailView) where FKey = 0
1061 Else
1062 llRetVal = false
1063 Endif
1064 *===Tan35592 HH 12/11/02
1065 ENDIF
1066
1067 .oLog.LogResult(llRetVal, lcHeading)
1068 ENDWITH
1069
1070 SELECT (lnSelect)
1071 RETURN llRetVal
1072 ENDFUNC
1073
1074*======================================================
1075
1076 FUNCTION ResolveCandidateKey
1077 LPARAMETERS pcHeaderTable, pcDetailTable, pcKeyField, poParent, pnStart, pnLen
1078 LOCAL lcHeaderView, lcDetailView, llRetVal, lnSelect, lnPkey, lcHeading, ;
1079 lvKeyValue, lnCnt
1080
1081 llRetVal = true
1082 lnSelect = SELECT()
1083
1084 WITH This
1085 *---Tan33879 HH 08/23/02
1086*!* lcHeaderView = .GetViewName(pcHeaderTable)
1087*!* lcDetailView = .GetViewName(pcDetailTable)
1088 lcHeaderView = .GetCursorName(pcHeaderTable)
1089 lcDetailView = .GetCursorName(pcDetailTable)
1090 *===Tan33879 HH 08/23/02
1091
1092 lcHeading = "Resolving candidate keys"
1093 .oLog.LogEntry(lcHeading, true)
1094 .oLog.LogEntry("Header cursor: " + lcHeaderView)
1095 .oLog.LogEntry("Detail cursor: " + lcDetailView)
1096 .oLog.LogEntry("Key field: " + pcKeyField)
1097
1098 SELECT (lcHeaderView)
1099 lnCnt = Reccount()
1100 SCAN
1101 lvKeyValue = &lcHeaderView..&pcKeyField
1102 lnPKey = &lcHeaderView..PKey
1103
1104 REPLACE &pcKeyField WITH lvKeyValue FOR fKey = lnPKey IN (lcDetailView)
1105
1106 If Type("poParent")="O"
1107 poParent.AdvanceThermo(pnStart+Recno()/lnCnt*pnLen)
1108 Endif
1109 ENDSCAN
1110
1111 .oLog.LogResult(llRetVal, lcHeading)
1112 ENDWITH
1113
1114 SELECT (lnSelect)
1115 RETURN llRetVal
1116 ENDFUNC
1117
1118*======================================================
1119 *---Tan33879 HH 08/23/02
1120 FUNCTION SaveData
1121 LPARAMETERS pcHeaderTable, pcDetailTable, poParent, pnStart, pnLen
1122
1123 LOCAL lcHeaderView, lcHeaderCursor, lcDetailView, lcDetailCursor, ;
1124 llRetVal, lnSelect, lnI, lnCnt
1125 LOCAL ARRAY laPKMSImportViews[1]
1126
1127 llRetVal = true
1128 lnSelect = SELECT()
1129
1130 WITH This
1131 lcHeaderView = .GetViewName(pcHeaderTable)
1132 lcHeaderCursor = .GetCursorName(pcHeaderTable)
1133 lcDetailView = .GetViewName(pcDetailTable)
1134 lcDetailCursor = .GetCursorName(pcDetailTable)
1135
1136 lcHeading = "Appending data from cursors to views"
1137 .oLog.LogEntry(lcHeading, true)
1138 .oLog.LogEntry("Header view: " + lcHeaderView)
1139 .oLog.LogEntry("Detail view: " + lcDetailView)
1140
1141 SELECT (lcHeaderCursor)
1142 lnCnt = Reccount()
1143 SCAN
1144 *scan through the cursors and dump it into views
1145 Scatter Memvar memo
1146 Insert into (lcHeaderView) From Memvar
1147
1148 If Type("poParent")="O"
1149 poParent.AdvanceThermo(pnStart+Recno()/lnCnt*pnLen*0.4)
1150 Endif
1151 ENDSCAN
1152
1153
1154 SELECT (lcDetailCursor)
1155 lnCnt = Reccount()
1156 SCAN
1157 *scan through the cursors and dump it into views
1158 Scatter Memvar memo
1159 Insert into (lcDetailView) From Memvar
1160
1161 If Type("poParent")="O"
1162 poParent.AdvanceThermo(pnStart+0.4+Recno()/lnCnt*pnLen*0.4)
1163 Endif
1164 ENDSCAN
1165
1166 ACOPY(.aPKMSImportViews, laPKMSImportViews)
1167 llRetVal = llRetVal AND .TableUpdateWithTransaction(@laPKMSImportViews)
1168
1169 *---Tan35129 HH 11/11/02
1170 llRetVal = llRetVal AND .DeleteTempFiles()
1171 *===Tan35129 HH 11/11/02
1172
1173 .oLog.LogResult(llRetVal, lcHeading)
1174 ENDWITH
1175
1176 SELECT (lnSelect)
1177 RETURN llRetVal
1178 ENDFUNC
1179 *===Tan33879 HH 08/23/02
1180
1181*======================================================
1182
1183 *===Tan35129 AZ 10/31/02
1184 *---Tan35129 HH 11/11/02 Make a snapshot of the original file and then move it to history
1185 FUNCTION AppendFromFlatFile
1186 LPARAMETERS tcSourceFile, tcTargetAlias
1187 LOCAL lcOutFile, lcMsg, llRetVal, lnSelect, lcPath, lcCommand, lcHeading, ;
1188 lcWorkAlias, lcImportFilter
1189
1190 *---TR 1016936 5/21/2006 YE
1191 *--- TechRec 1054669 23-Aug-2011 jjanand === Added ,llSkipEmptyFileLoad, lnSourceFileHandle, lnEnd
1192 LOCAL lcSQLCommand, llSkipEmptyFileLoad, lnSourceFileHandle, lnEnd
1193 *===TR 1016936 5/21/2006 YE
1194
1195 * TAN 35063 SST Included temporary lcWorkAlias and lcImport Filter
1196 * for the purpose of filtering the incoming document - 12/11/02.
1197 llRetVal = true
1198 lnSelect = SELECT()
1199 lcHeading = "Appending record from flat file to local cursor"
1200
1201 llSkipEmptyFileLoad = false &&TechRec 1054669
1202
1203 *---TAN 35063 SST - 12/11/02
1204 lcWorkAlias = GetUniqueFileName()
1205 *===TAN 35063 SST - 12/11/02
1206
1207 WITH This
1208 *---TAN 35063 SST - 12/11/02
1209 lcImportFilter = IIF(EMPTY(.cImportFilter), "", " FOR " + .cImportFilter)
1210 *===TAN 35063 SST - 12/11/02
1211
1212 .oLog.LogEntry(lcHeading)
1213
1214 llRetVal = llRetVal AND .CreateImportCursor(lcWorkAlias) && TAN 35063 SST - 12/11/02
1215 llRetVal = llRetVal AND .CreateTemporaryFile(.cHistoryFile, tcSourceFile)
1216
1217
1218 IF llRetVal
1219 *--- TAN 35060 - SST
1220 *--- TR 1027199 18-OCT-2007 HNISAR
1221 *lcCommand = "APPEND FROM "+ tcSourceFile + " TYPE SDF "
1222*!* lcCommand = "APPEND FROM "+ tcSourceFile + " TYPE "+ .cFileType
1223
1224 *--- TR 1026665 14-Nov-2007 Goutam
1225 *IF (.cFileType) = "SDF"
1226 IF (.cFileType = "SDF") OR (.cFileType = "CSV" AND .cDelimiter = ",")
1227 *=== TR 1026665 14-Nov-2007 Goutam
1228 lcCommand = "APPEND FROM "+ tcSourceFile + " TYPE "+ .cFileType
1229 ELSE
1230 lcCommand = "APPEND FROM "+ tcSourceFile + " TYPE DELIMITED WITH '' WITH CHARACTER " + .cDelimiter
1231 ENDIF
1232 *=== TR 1027199 18-OCT-2007 HNISAR
1233 *=== TAN 35060 - SST
1234 *---TR 1016936 5/21/2006 YE - tcTargetAlias and lcWorkAlias don't match the flat file if there are fields to ignore!
1235 IF .lIgnoreFieldOK AND .nIgnoreFieldCount > 0
1236 llRetVal = llRetVal AND .ModifyImportCursor(tcTargetAlias)
1237 llRetVal = llRetVal AND .CreateCursorStructure(tcTargetAlias, ,lcWorkAlias)
1238 ENDIF
1239 *===TR 1016936 5/21/2006 YE
1240
1241 *--- TechRec 1054669 23-Aug-2011 jjanand ---
1242 IF .lSkipEmptyFileLoad
1243 lnSourceFileHandle = FOPEN(tcSourceFile, 0)
1244
1245 IF (lnSourceFileHandle = -1)
1246 llRetVal = .F.
1247 ENDIF
1248
1249 lnEnd = FSEEK(lnSourceFileHandle, 0, 2) && Move pointer to EOF
1250
1251 .lNoDataFound = lnEnd < 1
1252
1253 llSkipEmptyFileLoad = .lSkipEmptyFileLoad AND .lNoDataFound
1254
1255 FCLOSE(lnSourceFileHandle)
1256 ENDIF
1257 *=== TechRec 1054669 23-Aug-2011 jjanand ===
1258
1259 *--- TR 1027199 23-OCT-2007 HNISAR && Commented Call to InsertDummyCSVHeader Call as now theser files is not teated as CSV file
1260 *--- TR 1020489 08-Jan-2007 Partha ---
1261 * insert a blank header for CSV, if required
1262*!* IF (llRetVal) AND (.cFileType = PKMS_FILE_TYPE_CSV) AND NOT (.lCSVHeaderRow)
1263*!* llRetVal = .InsertDummyCSVHeader(tcSourceFile)
1264*!* ENDIF
1265 *=== TR 1020489 08-Jan-2007 Partha ===
1266 *=== TR 1027199 23-OCT-2007 HNISAR
1267
1268 *--- TR 1026665 15-Nov-2007 Partha --- blank CSV header was required because we are still using APPEND FROM..TYPE CSV
1269 *--- TechRec 1054669 23-Aug-2011 jjanand === Added AND NOT llSkipEmptyFileLoad
1270 IF (llRetVal) AND (.cFileType = PKMS_FILE_TYPE_CSV) AND NOT (.lCSVHeaderRow) AND .cDelimiter = "," AND NOT llSkipEmptyFileLoad
1271 llRetVal = .InsertDummyCSVHeader(tcSourceFile)
1272 ENDIF
1273 *=== TR 1026665 15-Nov-2007 Partha ===
1274
1275 IF NOT llSkipEmptyFileLoad &&--- TechRec 1054669 23-Aug-2011 jjanand ===
1276 IF EMPTY(lcImportFilter)
1277 SELECT (tcTargetAlias)
1278 llRetVal = llRetVal AND SysNoError(lcCommand)
1279 ELSE
1280 SELECT (lcWorkAlias)
1281 llRetVal = llRetVal AND SysNoError(lcCommand)
1282 IF llRetVal
1283 SELECT (tcTargetAlias)
1284 APPEND FROM DBF(lcWorkAlias) &lcImportFilter
1285 ENDIF
1286 ENDIF
1287 ENDIF &&--- TechRec 1054669 23-Aug-2011 jjanand ===
1288 ENDIF
1289
1290
1291 .oLog.LogResult(llRetVal, lcHeading)
1292 .TableClose(lcWorkAlias)
1293 ENDWITH
1294
1295 SELECT (lnSelect)
1296 RETURN llRetVal
1297 ENDFUNC
1298 *===Tan35129 HH 11/11/02
1299*===========================================
1300
1301 *---35129 HH 11/11/02 Delete temp files after transaction has been successfully saved
1302 FUNCTION DeleteTempFiles
1303 LOCAL llRetVal, lnSelect, lnI, lcCommand, lcHeading
1304
1305 llRetVal = true
1306 lnSelect = SELECT()
1307 lcHeading = "Deleting temporary file(s)"
1308
1309 WITH This
1310 .oLog.LogEntry(lcHeading)
1311 For lnI= 1 to Alen(.aPKMSImportFiles,1)
1312 lcCommand = "delete file " + .aPKMSImportFiles[lnI,3]
1313 If Not SysNoError(lcCommand)
1314 llRetVal = false
1315 Exit
1316 Endif
1317 .oLog.LogEntry("Temporary file: " + .aPKMSImportFiles[lnI,3] + " deleted")
1318 EndFor
1319 .oLog.LogResult(llRetVal, lcHeading)
1320 ENDWITH
1321
1322 SELECT (lnSelect)
1323 RETURN llRetVal
1324 ENDFUNC
1325 *===35129 HH 11/11/02
1326*======================================
1327
1328 FUNCTION LoadFlatFilesToCursor
1329 LPARAMETERS paMapInfo
1330 LOCAL llRetVal, lnSelect, lnIndex
1331
1332 llRetVal = true
1333 lnSelect = SELECT()
1334
1335 WITH This
1336 For lnIndex = 1 to Alen(paMapInfo, 1)
1337 .cMapCode = paMapInfo[lnIndex, 1]
1338 .cVersionCode = paMapInfo[lnIndex, 2]
1339 llRetVal = .InitializeImport()
1340
1341 If .lNoDataFound Or Not llRetVal
1342 Exit
1343 Endif
1344 EndFor
1345
1346 If Not .lNoDataFound And llRetVal
1347 For lnIndex = 1 to Alen(paMapInfo, 1)
1348 ***Switch the file
1349 .cHistoryFile = .aPKMSImportFiles[lnIndex,2]
1350 .cImportFile = .aPKMSImportFiles[lnIndex,3]
1351 .cOutFile = .aPKMSImportFiles[lnIndex,3]
1352
1353 llRetVal = .ImportPKMSFile(paMapInfo[lnIndex, 1], ;
1354 paMapInfo[lnIndex, 2], paMapInfo[lnIndex, 3])
1355 If Not llRetVal
1356 Exit
1357 Endif
1358 EndFor
1359 Endif
1360 ENDWITH
1361
1362 SELECT (lnSelect)
1363 RETURN llRetVal
1364 ENDFUNC
1365
1366*=========================================
1367
1368 FUNCTION CreateTemporaryFile
1369 LPARAMETERS pcSourceFile, pcDestFile
1370 LOCAL llRetVal, lnSelect, lcWorkStr
1371
1372 llRetVal = true
1373 lnSelect = SELECT()
1374
1375 WITH This
1376 .oLog.LogEntry("Creating temporary file for processing")
1377 .oLog.LogEntry("Temporary File: " + .cOutFile)
1378
1379 lcWorkStr = FILETOSTR(pcSourceFile)
1380 STRTOFILE(lcWorkStr, pcDestFile)
1381
1382 .oLog.LogEntry("Temporary file created")
1383 ENDWITH
1384
1385 SELECT (lnSelect)
1386 RETURN llRetVal
1387 ENDFUNC
1388
1389*============================================================
1390*---TAN 35063 SST 12/11/02
1391 FUNCTION CreateImportCursor
1392 LPARAMETERS tcImportCursor
1393 LOCAL llRetVal, lnSelect
1394
1395 llRetVal = true
1396 lnSelect = SELECT()
1397
1398 WITH This
1399 *--- TAN 35060 - SST - 12/20/02
1400 * Sending Fieldlist to pick the columns in order from Bridge map
1401 IF .cFileType = PKMS_FILE_TYPE_CSV
1402 CreateStructureFromSQL(.cTargetTable,tcImportCursor,.cFieldList)
1403 ELSE
1404 CREATE CURSOR &tcImportCursor(pkms_text_1 c(254), pkms_text_2 c(254), ;
1405 pkms_text_3 c(254), pkms_text_4 c(254))
1406
1407 ENDIF
1408 *--- TAN 35060 - SST - 12/20/02
1409 llRetVal = USED(tcImportCursor)
1410 ENDWITH
1411
1412 SELECT (lnSelect)
1413 RETURN llRetVal
1414 ENDFUNC
1415*===TAN 35063 SST 12/11/02
1416
1417*============================================================
1418*---TR 1016936 5/22/2006 YE
1419*- New Function to modify lcImportCursor to match the flat file when there are fields in the flat file
1420*- that should be ignored. It's called before appending from flat file.
1421
1422 FUNCTION ModifyImportCursor
1423 LPARAMETERS tcImportCursor
1424
1425 LOCAL llRetVal, lnSelect, lnIgnoreToProcess, luValue, llInsertSuccess, llAddColumn, lnRows, lcMsg
1426
1427 llRetVal = true
1428 lnSelect = SELECT()
1429 llInsertSuccess = false
1430 llAddColumn = false
1431
1432 WITH This
1433 lcHeading = "Modifying local Import Cursor"
1434 .oLog.LogEntry(lcHeading, true)
1435
1436 SELECT (.cTemplateCursor)
1437 Select distinct field_name From (.cTemplateCursor) Into Array laTemp ORDER BY output_pos
1438
1439 lnIgnoreToProcess = .nIgnoreFieldCount
1440
1441 SELECT (tcImportCursor)
1442 AFIELDS(laTarget)
1443 FOR lnX = 1 TO ALEN(laTemp,1)
1444
1445 llAddColumn = false
1446 llInsertSuccess = false
1447
1448 IF (lnX > ALEN(laTarget,1)) && if fill_char is the last field we need to add a column first
1449 lnRows = ALEN(laTarget, 1) + 1
1450 DIMENSION laTarget[lnRows, ALEN(laTarget, 2)]
1451 laTarget[lnRows, 1] = ""
1452 llAddColumn = true
1453 llInsertSuccess = true
1454 ENDIF
1455
1456 IF llRetVal AND (lnIgnoreToProcess > 0)
1457 FOR lnY = 1 TO ALEN(laTarget,2)
1458 DO CASE
1459 CASE laTarget[lnX,lnY] = ALLTRIM(laTemp[lnX])
1460 EXIT
1461 OTHERWISE
1462 IF NOT llAddColumn && don't add a row if we already added one above.
1463 lnRows = ALEN(laTarget, 1) + 1
1464 DIMENSION laTarget[lnRows, ALEN(laTarget, 2)]
1465 llInsertSuccess = (AINS(laTarget,lnX) = 1)
1466 ENDIF
1467
1468 IF llInsertSuccess
1469 FOR lnY = 1 TO ALEN(laTarget, 2) && 18
1470 DO CASE
1471 CASE lnY = 1 && Field Name
1472 luValue = ALLTRIM(laTemp[lnX])
1473 CASE lnY = 2 && Type
1474 luValue = "C"
1475 CASE lnY = 3 && Size
1476 luValue = 20
1477 CASE lnY = 4 && Precision
1478 luValue = 0
1479 CASE lnY = 5 && null allowed
1480 luValue = false
1481 CASE lnY = 6
1482 luValue = false
1483 CASE lnY = 7
1484 luValue = ""
1485 CASE lnY = 8
1486 luValue = ""
1487 CASE lnY = 9 && default value
1488 luValue = ""
1489 CASE lnY = 10
1490 luValue = ""
1491 CASE lnY = 11
1492 luValue = ""
1493 CASE lnY = 12
1494 luValue = ""
1495 CASE lnY = 13
1496 luValue = ""
1497 CASE lnY = 14
1498 luValue = ""
1499 CASE lnY = 15
1500 luValue = ""
1501 CASE lnY = 16
1502 luValue = ""
1503 CASE lnY = 17
1504 luValue = 0
1505 CASE lnY = 18
1506 luValue = 0
1507 OTHERWISE
1508
1509 ENDCASE
1510 laTarget[lnX, lnY] = luValue
1511 ENDFOR
1512 lnIgnoreToProcess = lnIgnoreToProcess - 1
1513 ELSE
1514 llRetVal = false
1515 lcMsg = "Inserting a row into the cursor structure array failed."
1516 .oLog.LogEntry(lcMsg)
1517 .ErrorBox(lcMsg)
1518 ENDIF
1519 EXIT
1520 ENDCASE
1521
1522 ENDFOR
1523
1524 ELSE
1525 EXIT
1526 ENDIF
1527 ENDFOR
1528
1529 IF llRetVal
1530 CREATE CURSOR (tcImportCursor) FROM ARRAY laTarget
1531 ENDIF
1532 llRetVal = llRetVal AND USED(tcImportCursor)
1533 .oLog.LogResult(llRetVal, lcHeading)
1534 ENDWITH
1535
1536 SELECT (lnSelect)
1537 RETURN llRetVal
1538
1539 ENDFUNC
1540*===TR 1016936 5/22/2006 YE
1541
1542*--- TR 1020489 08-Jan-2007 Partha ---
1543 FUNCTION InsertDummyCSVHeader
1544 LPARAMETERS tcSourceFile
1545
1546 LOCAL llRetVal
1547 LOCAL lnReadBlock, lnSourceFileHandle, lnEnd, lnTop
1548 LOCAL lcError, lcTargetFile, lcReadBuffer
1549
1550 llRetVal = .T.
1551 lnReadBlock = 512 * 1024
1552
1553 lcTargetFile = ADDBS(JUSTPATH(tcSourceFile)) + SYS(3) +".tmp"
1554
1555 lnSourceFileHandle = FOPEN(tcSourceFile, 0)
1556 IF (lnSourceFileHandle = -1)
1557 llRetVal = .F.
1558 lcError = "Could not open source file"
1559 ENDIF
1560
1561 lnEnd = FSEEK(lnSourceFileHandle, 0, 2) && Move pointer to EOF
1562 lnTop = FSEEK(lnSourceFileHandle, 0) && Move pointer to BOF
1563 IF (lnEnd < 1) && is file empty?
1564 llRetVal = .F.
1565 lcError = "File is empty"
1566 ENDIF
1567
1568 IF (llRetVal)
1569 lnTargetFileHandle = FCREATE(lcTargetFile)
1570 IF (lnTargetFileHandle = -1)
1571 llRetVal = .F.
1572 lcError = "Could not create temp file"
1573 ENDIF
1574 ENDIF
1575
1576 IF (llRetVal)
1577
1578 * insert new line
1579 *llRetVal = NOT (FPUTS(lnTargetFileHandle, "") = 2 )
1580 IF NOT (FPUTS(lnTargetFileHandle, "") = 2)
1581 llRetVal = .F.
1582 ENDIF
1583 IF NOT (llRetVal)
1584 lcError = "Failed to Create Dummy Header " + lcTargetFile
1585 ENDIF
1586
1587 DO WHILE (llRetVal) AND NOT FEOF(lnSourceFileHandle)
1588 lcReadBuffer = FREAD(lnSourceFileHandle, lnReadBlock)
1589 IF FWRITE(lnTargetFileHandle, lcReadBuffer) < LEN(lcReadBuffer)
1590 llRetVal = .f.
1591 lcError = "Failed to Write to " + lcTargetFile
1592 ENDIF
1593 ENDDO
1594
1595 ENDIF
1596
1597 FCLOSE(lnSourceFileHandle)
1598
1599 *--- TR 1045408 16-Apr-2010 Goutam. lnTargetFileHandle Generates error if input file is empty.
1600 *FCLOSE(lnTargetFileHandle)
1601 IF TYPE("lnTargetFileHandle") = "N"
1602 FCLOSE(lnTargetFileHandle)
1603 ENDIF
1604 *=== TR 1045408 16-Apr-2010 Goutam
1605
1606 IF (llRetVAl)
1607 ERASE "&tcSourceFile"
1608 RENAME "&lcTargetFile" TO "&tcSourceFile"
1609 ELSE
1610 This.oLog.LogEntry("Couldn't Insert Dummy Header because " + lcError)
1611 ENDIF
1612
1613 RETURN (llRetVal)
1614 ENDFUNC
1615*=== TR 1020489 08-Jan-2007 Partha ===
1616
1617*--- TechRec 1037759 20-Apr-2009 T.Shenbagavalli ---
1618*===============================================================================================================
1619 FUNCTION LoadInvoiceFlatFilesToCursor
1620 LPARAMETERS paMapInfo
1621 LOCAL llRetVal, lnSelect, lnIndex
1622
1623 llRetVal = true
1624 lnSelect = SELECT()
1625
1626 WITH This
1627 For lnIndex = 1 to Alen(paMapInfo, 1)
1628 .cMapCode = paMapInfo[lnIndex, 1]
1629 .cVersionCode = paMapInfo[lnIndex, 2]
1630 llRetVal = .InitializeImport()
1631
1632 IF .lNoDataFound Or !llRetVal
1633 EXIT
1634 ELSE
1635 .cHistoryFile = .aPKMSImportFiles[lnIndex,2]
1636 .cImportFile = .aPKMSImportFiles[lnIndex,3]
1637 .cOutFile = .aPKMSImportFiles[lnIndex,3]
1638
1639 llRetVal = .ImportPKMSFile(paMapInfo[lnIndex, 1], paMapInfo[lnIndex, 2], paMapInfo[lnIndex, 3])
1640 ENDIF
1641
1642 EndFor
1643
1644 ENDWITH
1645
1646 SELECT (lnSelect)
1647 RETURN llRetVal
1648 ENDFUNC
1649*===============================================================================================================
1650 FUNCTION CreateBlankDetailCursor
1651 LPARAMETERS pcMapCode, pcVersionCode, pcTargetTable
1652 LOCAL llRetVal, lnSelect, lcHeading
1653 llRetVal = true
1654 lnSelect = SELECT()
1655 lcHeading = "Processing flat file"
1656
1657 WITH This
1658 .cMapCode = pcMapCode
1659 .cVersionCode = pcVersionCode
1660 .cTargetTable = pcTargetTable
1661 .cImportView = .GetViewName(.cTargetTable)
1662
1663 .cImportCursor = .GetCursorName(.cTargetTable)
1664
1665 llRetVal = vl_map_version(.cMapCode, ,"tcMapCursor" , .cVersionCode)
1666 llRetVal = llRetVal AND USED("tcMapCursor") AND RECCOUNT("tcMapCursor") > 0
1667
1668 .lCSVHeaderRow = (SysGetFieldValue("tcMapCursor", "File_Hdr") = 'Y')
1669
1670 .cFileType = SysGetFieldValue("tcMapCursor", "file_type")
1671
1672 .lIgnoreFieldOK = goEnv.SV("PKMS_IMPORT_IGNORE_FIELD_ALLOWED", "N") == "Y"
1673
1674 .lFormulaEnabled = (SysGetFieldValue("tcMapCursor", "expr_ok") = 'I')
1675
1676 .AppendToImportViews(.cImportView)
1677
1678 .oLog.LogProgram("loadpkms.prg")
1679 .oLog.LogEntry("Creating Blank Detail Cursor")
1680 .oLog.LogEntry("Target table: " + .cTargetTable)
1681
1682 * Logging object is opened and assigned in calling program (see e.g. clspix.prg)
1683 .oLog.LogLogical("Ignoring Fields in Flat File", .lIgnoreFieldOK)
1684 .oLog.LogLogical("Formula Enabled In Import" , .lFormulaEnabled)
1685
1686 IF .cFileType = PKMS_FILE_TYPE_CSV
1687 .oLog.LogLogical("Header Row in CSV file", .lCSVHeaderRow)
1688 ENDIF
1689
1690 IF USED("tcMapCursor")
1691 USE IN "tcMapCursor"
1692 ENDIF
1693
1694 llRetVal = llRetVal AND .OpenImportView()
1695
1696 ENDWITH
1697
1698 SELECT (lnSelect)
1699 RETURN llRetVal
1700 ENDFUNC
1701*===============================================================================================================
1702*=== TechRec 1037759 20-Apr-2009 T.Shenbagavalli ===
1703*--- TechRec 1041152 05-Jan-2010 T.Shenbagavalli ---
1704 *========================================================================================
1705 * Make sure that each of the bridges in the group has a default version OR selected version exists for bridge
1706 *========================================================================================
1707 Procedure RetrieveVersionCode
1708 LPARAMETERS paParamBROS, pcMapCode, pcBROName, pcVersionCode
1709 LOCAL llRetval, lnSelect, lnVersIndex
1710
1711 llRetval = .T.
1712 lnSelect = Select()
1713
1714 With This
1715
1716 .oLog.LogEntry('Starting: Retrieving selected version ' )
1717
1718 .InitThermo(1)
1719 .UpdateThermoCaption('Retrieving selected version(s)...')
1720
1721 lnVersIndex = ASCAN(paParamBROS,pcBROName,1,ALEN(paParamBROS,1),1,9)
1722
1723 IF lnVersIndex > 0
1724 pcVersionCode = ALLTRIM(paParamBROS[lnVersIndex, 2])
1725
1726 llRetval = vl_map_version(pcMapCode,,,pcVersionCode)
1727 .oLog.LogEntry(" Map version : " + pcVersionCode)
1728 IF NOT llRetval
1729 .cMessage = "Invalid Version Code"
1730 .oLog.LogWarning("Invalid Version Code.")
1731 ENDIF
1732 ENDIF
1733
1734 .AdvanceThermo(1)
1735
1736 Endwith
1737
1738 Select (lnSelect)
1739
1740 Return llRetval
1741 ENDPROC
1742*===============================================================================
1743 FUNCTION IsValidVersionForMapCode
1744 LPARAMETERS pcMapCode, pcVersCode, pcTablename, pcMsg
1745 LOCAL llRetVal, lnSelect, lcSQLString
1746
1747 llRetVal = true
1748 lnSelect = SELECT()
1749
1750 WITH This
1751 lcSQLString = " SELECT distinct tbl_name " + ;
1752 " FROM zzyobrvd d " + ;
1753 " WHERE map_code = " + SQLFormatChar(pcMapCode) + ;
1754 " AND vers_Code = " + SQLFormatChar(pcVersCode) + ;
1755 " AND tbl_name <> " + SQLFormatChar(pcTablename)
1756
1757 llRetVal = v_SQLExec(lcSQLString, "tcTempVersValid")
1758
1759 IF llRetVal AND USED("tcTempVersValid") AND RECCOUNT("tcTempVersValid") > 0
1760 llRetVal = False
1761 .cMessage = "Version Code : " + pcVersCode + " is invalid for " + pcMsg
1762 .oLog.LogEntry(.cMessage)
1763 ENDIF
1764 .TableClose("tcTempVersValid")
1765 ENDWITH
1766
1767 SELECT (lnSelect)
1768 RETURN llRetVal
1769 ENDFUNC
1770*============================================================
1771*=== TechRec 1041152 05-Jan-2010 T.Shenbagavalli ===
1772
1773ENDDEFINE