// --
// Written by MB
// $Revision$
// $Id$
	
        // Aanroep van deze jscript-file vereist 4 parameters
        
        // 1) 4lettercode van de klant (= customer-ID)
       var cust = WScript.Arguments(0); // customer-id (4 chars)
		
		// 2) Folder waar het uiteindelijke resultaat (zip-bestand) terecht moet komen
		//    In de productieomgeving is dat d:/apps/facilitor/Webdav/ gevolgd door de customer-ID
		var G_ftp_folder = WScript.Arguments(1); 
		G_ftp_folder = G_ftp_folder + cust;
		
		// 3) Folder waar het tussenresultaat tzi-bestand terecht moet komen
		//    Dit moet gelijk zijn aan LOCALPATH uit export.ini!!
		//    Let op gebruik van deze param: ALLE slashes een FORWARD '/' en pad MOET eindigen op forwardslash
		//    DUS b.v. ./CAK/
		var G_foldernaam = WScript.Arguments(2); // moet gelijk zijn aan LOCALPATH uit export.ini
		
		// 4) Mode = 1 (compleet bestand) of Mode = 2 (alleen wijzingen agv correctie)
		//    
		var G_Mode = WScript.Arguments(3); // Mode = 1 of 2 (compleet of correctie)
			
		
		var str = 'File Name=..\\oracle.udl';
		var Oracle = new ActiveXObject("ADODB.Connection");
		
		Oracle.Open(str);
		
		tzi_2_zip();

		

function tzi_2_zip ()
{

		l_exp_file = GetTZIFile(G_foldernaam);
		l_tzi_file = get_TZI_bestandsnaam();

		var oStream = new ActiveXObject("ADODB.Stream");
		oStream.Type = 1; // adTypeBinary
        oStream.Open;
      
		
		// copy file en lees in
		copyfile(G_foldernaam + l_exp_file,G_foldernaam + l_tzi_file);
		oStream.LoadFromFile (G_foldernaam + l_tzi_file);
		oStream.Position = 0 // We gaan nu over in uitvoermode
		
		//Zippen gebeurt hier...
		// Let op: Dit moet runtime op de webserver draaien, aangezien SLNKDWF aldaar is geregistereerd.
		var ZipObjOut = new ActiveXObject("SLNKDWF.Zip");
		if (G_Mode == 1){
		l_zip_file = G_ftp_folder + '/' + l_tzi_file + '.zip';
	  }
		else {
			// G_mode moet dan 2 zijn!
			l_sysdate = get_sysdate();
			l_zip_file = G_ftp_folder + '/' + l_tzi_file + "_" + l_sysdate + '.zip';
		}	
		ZipObjOut.New (l_zip_file) // Helaas niet *naar* stream
		l_wachtwoord = get_TZI_wachtwoord();
         
		ZipObjOut.ZipFromStream(l_tzi_file, oStream, l_wachtwoord);
		oStream.Close;
        ZipObjOut.Close();
}






// Bepaalt de naam van de gegenereerde TZI bestand in folder 'p_folder'.
// Resultaat: Indien geen TZI bestand gevonden, dan wordt lege string "" geretourneerd.
// 						Indien 1 TZI bestand, de naam van dit bestand incl extensie TZI
//            Indien meerdere TZI-bestanden gevonden, een willekeurige naam van een der bestanden (incl ext)

function GetTZIFile(p_folder)
{
	 var fso1, f, fc, s, l_result;
   fso1 = new ActiveXObject("Scripting.FileSystemObject");
   
   f = fso1.GetFolder(p_folder);
   fc = new Enumerator(f.files);
   s = "";
   l_result="";
   for (fc.moveFirst(); !fc.atEnd(); fc.moveNext())
   {	l_filenaam = fc.item().name;
   		if (get_extensieOfFileName(l_filenaam) == "tzi"){
   			l_result = l_filenaam;
   		}
   }
   return(l_result);
}



function get_extensieOfFileName(p_filenaam){
	l_result="";
	l_pos = p_filenaam.indexOf(".");
	if (l_pos != -1){
		l_result = p_filenaam.substring(l_pos+1);
	}
	return (l_result);
}

function get_NameOfFileName(p_filenaam){
	l_result=p_filenaam;
	l_pos = p_filenaam.indexOf(".");
	if (l_pos != -1){
		l_result = p_filenaam.substring(0,l_pos);
	}
	return (l_result);
}


function copyfile(p_file1, p_file2){
		fso = new ActiveXObject("Scripting.FileSystemObject");
		f = fso.GetFile(p_file1);
		f.Copy(p_file2);
}


function get_WZACode(){
l_result = "WZAWZA"
sql = "SELECT prs_leverancier_nr FROM prs_bedrijf WHERE prs_bedrijf_key=2"
oRs = Oracle.Execute(sql)
if (!oRs.eof)
{
    l_result = (oRs(0).value);
}
oRs.Close
return (l_result);
}

function get_ThisWeeknr(){
l_result = "WW"
sql = "SELECT to_char(SYSDATE,'IW') FROM DUAL"
oRs = Oracle.Execute(sql)
if (!oRs.eof)
{
    l_result = (oRs(0).value);
}
oRs.Close
return (l_result);
}

function get_ThisYearYYYY(){
l_result = "YYYY"
sql = "SELECT to_char(SYSDATE,'YYYY') FROM DUAL"
oRs = Oracle.Execute(sql)
if (!oRs.eof)
{
    l_result = (oRs(0).value);
}
oRs.Close
return (l_result);
}

function get_ThisYearYY(){
l_result = "YY"
sql = "SELECT to_char(SYSDATE,'YY') FROM DUAL"
oRs = Oracle.Execute(sql)
if (!oRs.eof)
{
    l_result = (oRs(0).value);
}
oRs.Close
return (l_result);
}

function get_sysdate (){
l_result="";
sql = "SELECT to_char(SYSDATE,'YYYY-MM-DD') FROM DUAL"
oRs = Oracle.Execute(sql)
if (!oRs.eof)
{
    l_result = (oRs(0).value);
}
oRs.Close
return (l_result);
}


// Bepaalt de periode die hoort bij het gegenereerde CAK-bestand, welke is gebaseerd op een keuze die de gebruiker
// heeft gemaakt. 
// De gekozen periode is opgeslagen in fac_usrdata met fac_usrdata_key = 47 ($SYSTEM-CAK, waarde code = PERIODE)

function get_Periode_Van_CAKBestand(){
l_result = "000"
sql = "SELECT LPAD(SUBSTR(fac_usrdata_omschr,6,2),3,'0') FROM fac_usrdata WHERE fac_usrdata_key = 47"
oRs = Oracle.Execute(sql)
if (!oRs.eof)
{
    l_result = (oRs(0).value);
}
oRs.Close
return (l_result);
}

function get_JJ_Van_CAKBestand(){
l_result = "0000"
sql = "SELECT LPAD(SUBSTR(fac_usrdata_omschr,3,2),2,'0') FROM fac_usrdata WHERE fac_usrdata_key = 47"
oRs = Oracle.Execute(sql)
if (!oRs.eof)
{
    l_result = (oRs(0).value);
}
oRs.Close
return (l_result);
}


function get_TZI_bestandsnaam(){
l_result = get_WZACode() + get_JJ_Van_CAKBestand() + "." + get_Periode_Van_CAKBestand() // + ".tzi";
return(l_result);
}

function get_TZI_wachtwoord(){
l_result = get_WZACode() + get_ThisWeeknr() + get_ThisYearYYYY();
return(l_result);
}


