DarrenF
[WD12] Creating a set of CSV files from corresponding HF files... June 18, 2010 07:13PM |
// Get counts of the 3 tables I'm sending data from to use with progress bars HExecuteQuery(QRY_CountActiveCategories) glocaliCatCount is int = HNbRec(QRY_CountActiveCategories) HExecuteQuery(QRY_CountActiveWebProducts) glocaliProdCount is int = HNbRec(QRY_CountActiveWebProducts) HExecuteQuery(QRY_CountProducts2Categories) glocaliPrd2CatCount is int = HNbRec(QRY_CountProducts2Categories) // Set-up progress bars WPBAR_Products..MinValue = 0 WPBAR_Products..MaxValue = glocaliProdCount WPBAR_PageNodes..MinValue = 0 WPBAR_PageNodes..MaxValue = glocaliCatCount WPBAR_PageProducts..MinValue = 0 WPBAR_PageProducts..MaxValue = glocaliPrd2CatCount //Set up actual counts glocaliPBarProdCount,glocaliPBarCatCount,glocaliPBarP2CCount is int = 0 // Set-up variables glocaliTempCount is int glocalsSep is string = WEDIT_TypeOfSeparator glocalsQuotes is string = WEDIT_TypeOfQuotes glocalsSampleData is string = "" nFileID1,nFileID2,nFileID3 is int sMyString is string // Decide if quotes are required around the data IF WCB_IncludeQuotes = False THEN glocalsQuotes = "" END // Create the blank files in the "ftp" folder nFileID1 = fOpen(WEDIT_CSVFielname1, foCreate+foReadWrite) nFileID2 = fOpen(WEDIT_CSVFielname2, foCreate+foReadWrite) nFileID3 = fOpen(WEDIT_CSVFielname3, foCreate+foReadWrite) // Did any of the files fail to open correctly? IF nFileID1 = -1 OR nFileID2 = -1 OR nFileID3 = -1 THEN // Error trying to open the Product CSV file in read/write mode IF nFileID1 = -1 THEN Error("Error: Unable to create the Product CSV file!", ErrorInfo()) RETURN END // Error trying to open the PageNodes CSV file in read/write mode IF nFileID2 = -1 THEN Error("Error: Unable to create the PageNodes CSV file!", ErrorInfo()) RETURN END // Error trying to open the PageProducts CSV file in read/write mode IF nFileID3 = -1 THEN Error("Error: Unable to create the PageProducts CSV file!", ErrorInfo()) RETURN END ELSE // Reset counter glocaliTempCount = 0 // Tax Rate control var glocaliTempSTDID is int glocaliTempZEROID is int glocalsTempTaxCode is string // Read the STD Tax Rate to get ID HReadSeek(Tax_Rates,cCode,"STD") IF HFound() THEN // Set depending on what glocaliTempSTDID = Tax_Rates.ID ELSE // Error getting tax info... Error("Error: Unable to find the STD VAT tax record!" + CR + "There should be a VAT tax record with a code of STD, and I can't find it on the database." + CR + "Please check via the VAT Maintenance option and try this option again.", ErrorInfo()) RETURN END // Read the ZERO Tax Rate to get ID HReadSeek(Tax_Rates,cCode,"ZERO") IF HFound() THEN // Set depending on what glocaliTempZEROID = Tax_Rates.ID ELSE // Error getting tax info... Error("Error: Unable to find the ZERO VAT tax record!" + CR + "There should be a VAT tax record with a code of ZERO, and I can't find it on the database." + CR + "Please check via the VAT Maintenance option and try this option again.", ErrorInfo()) RETURN END // Loop through each product FOR EACH Product_Variants // Only consider products that are flagged as Web products and are also flagged as Active IF Product_Variants.bWeb = True AND Product_Variants.bActive = True THEN // Fill the string to write in the file // prod_id = ID sMyString = glocalsQuotes + Product_Variants.ID + glocalsQuotes + glocalsSep //sMyString = glocalsQuotes + Product_Variants.cCode_External + glocalsQuotes + glocalsSep // product_name = cTitle sMyString = sMyString + Charact(34) + Product_Variants.cTitle + Charact(34) + glocalsSep // unitprice = cyRetail sMyString = sMyString + glocalsQuotes + Product_Variants.cyRetail + glocalsQuotes + glocalsSep // rrp_proce = cySRP sMyString = sMyString + glocalsQuotes + Product_Variants.cySRP + glocalsQuotes + glocalsSep // weight = nWeight sMyString = sMyString + glocalsQuotes + Product_Variants.nWeight + glocalsQuotes + glocalsSep // taxcode = See code... IF Product_Variants.FK_Tax = glocaliTempSTDID THEN glocalsTempTaxCode = "0" ELSE IF Product_Variants.FK_Tax = glocaliTempZEROID THEN glocalsTempTaxCode = "2" END sMyString = sMyString + glocalsQuotes + glocalsTempTaxCode + glocalsQuotes + glocalsSep // displayoff = "1" sMyString = sMyString + glocalsQuotes + "1" + glocalsQuotes + glocalsSep // options = ??? sMyString = sMyString + glocalsQuotes + "" + glocalsQuotes + glocalsSep // description = cDescription sMyString = sMyString + Charact(34) + Product_Variants.cDescription + Charact(34) + glocalsSep // long_description = <various> see code... IF Product_Variants.cWebDesc <> "" THEN // First use the Web description if it's not empty sMyString = sMyString + Charact(34) + Product_Variants.cWebDesc + Charact(34) ELSE IF Product_Variants.cB2BDesc <> "" THEN // If Web description is blank, then use B2B description sMyString = sMyString + Charact(34) + Product_Variants.cB2BDesc + Charact(34) ELSE // If both the above are empty then put something in there sMyString = sMyString + Charact(34) + Product_Variants.cDescription + Charact(34) END // Write to the Products CSV file fWriteLine(nFileID1, sMyString) // Create Preview string for output later IF glocaliTempCount < 100 THEN // Add this row to the preview IF glocaliTempCount = 1 THEN glocalsSampleData = glocalsSampleData + sMyString ELSE glocalsSampleData = glocalsSampleData + CR + sMyString END END // Now write to the the PageProducts CSV file sMyString = glocalsQuotes + Product_Variants.FK_Category + glocalsQuotes + glocalsSep sMyString = sMyString + glocalsQuotes + Product_Variants.ID + glocalsQuotes + glocalsSep sMyString = sMyString + glocalsQuotes + "0" + glocalsQuotes +glocalsSep // Just for me - not required for Get Trolleyed system sMyString = sMyString + glocalsQuotes + Product_Variants.cTitle + glocalsQuotes // Write to the PageProducts CSV file based on the current product fWriteLine(nFileID3, sMyString) // Keep track of the number of records in the file glocaliTempCount ++ glocaliPBarP2CCount ++ glocaliPBarProdCount ++ WPBAR_Products = glocaliPBarProdCount WPBAR_PageProducts = glocaliPBarP2CCount END END END // Write all the PageNodes to a CSV file FOR EACH Categories // Now write to the the PageProducts CSV file sMyString = glocalsQuotes + Categories.ID + glocalsQuotes + glocalsSep sMyString = sMyString + glocalsQuotes + Categories.FK_Parent + glocalsQuotes + glocalsSep sMyString = sMyString + glocalsQuotes + Categories.cDescription + glocalsQuotes + glocalsSep sMyString = sMyString + glocalsQuotes + "" + glocalsQuotes + glocalsSep sMyString = sMyString + glocalsQuotes + Categories.cTreeBranch + glocalsQuotes + glocalsSep sMyString = sMyString + glocalsQuotes + "" + glocalsQuotes + glocalsSep sMyString = sMyString + glocalsQuotes + "" + glocalsQuotes + glocalsSep sMyString = sMyString + glocalsQuotes + "" + glocalsQuotes + glocalsSep sMyString = sMyString + glocalsQuotes + "0" + glocalsQuotes // Write into the PageProducts CSV file based on the current product fWriteLine(nFileID2, sMyString) glocaliPBarCatCount ++ WPBAR_PageNodes = glocaliPBarCatCount END // Now close the CSV files fClose(nFileID1) fClose(nFileID3) fClose(nFileID2) // Set the on screen preview field with the preview data... WEDIT_Preview = glocalsSampleData IF glocaliTempCount > 0 THEN // Show the user a message NextTitle("File Created") Info("Product Data Feed files were successfully created!" + CR + "The required Data Feed files have been created containing " + glocaliTempCount + " products." + CR + "Don't forget to press the Send Data Feed Files button to actually send the files to your FTP server.") ELSE // Show the user a message NextTitle("File Create Error!") Info("Sorry, I couldn't find any products to put into the Product Data Feed file!" + CR + "Remember: Only products which have the 'Web' check box set on the Product Maintenance screen will be selected for processing.") END
nishith
Re: [WD12] Creating a set of CSV files from corresponding HF files... July 26, 2011 12:30PM |