<?php
	
	function verarbeite_UNH($line, &$produkt, $blocktrenner, $elementtrenner)
	{

		$blocks=explode($blocktrenner, $line);
		$befund_nummer=$blocks[1];
		$befund=$befund_nummer."\n";
		//echo "Befund: XX".$befund."XX";
		return($befund);
	}
	function verarbeite_PAT($line, &$produkt, $blocktrenner, $elementtrenner)
	{
		// PAT+FRANSCHITZ+ANNA ELISABETH+BSC.MSC.+STOLBERGG. 10/40+WIEN+1050+4377+110590'		#Nachname + Vorname + Titel + Strasse + Ort + PLZ + SVNR + Geburtsdatum  in Textbox als zweite Zeile
		$blocks=explode($blocktrenner, $line);
		$nachname=$blocks[1];
		$vorname=$blocks[2];
		$titel=$blocks[3];
		$strasse=$blocks[4];
		$ort=$blocks[5];
		$plz=$blocks[6];
		$svnr=$blocks[7];
		$geb_datum=$blocks[8];
		$zeile1=$nachname." ".$vorname." ".$titel."\n";
		if (strlen(trim($zeile1)) == 0) $zeile1="";
		$zeile2_1=$plz." ".$ort;
		$zeile2_2=$strasse."\n";
		if (strlen(trim($zeile2_1)) == 0)
		{
			if (strlen(trim($zeile2_2)) == 0) $zeile2=""; 	// beide Leer
			else $zeile2=$zeile2_2;							// nur zweiter Teil befüllt
		}
		else
		{
			if (strlen(trim($zeile2_2)) == 0) $zeile2=$zeile2_1; 	// nur erster Teil ist befüllt
			else $zeile2=$zeile2_1.", ".$zeile2_2; 					// Beide sind befüllt
		}
		
		
		if (strlen(trim($zeile1)) == 0) $zeile3="";
		else $zeile3=ltrim($svnr." ".$geb_datum."\n");
		
		$patient=$zeile1.$zeile2.$zeile3;
		//echo "Patient: XX".$patient."XX";
		return($patient);
	}
	function verarbeite_KON($line, &$produkt, $blocktrenner, $elementtrenner)
	{
		// PAT+FRANSCHITZ+ANNA ELISABETH+BSC.MSC.+STOLBERGG. 10/40+WIEN+1050+4377+110590'		#Nachname + Vorname + Titel + Strasse + Ort + PLZ + SVNR + Geburtsdatum  in Textbox als zweite Zeile
		$blocks=explode($blocktrenner, $line);
		$telefon=$blocks[1];
		$email=$blocks[2];
		
		//if (strlen(trim($str)) > 0) 
		$kontakt=$line=ltrim($telefon." ".$email."\n");
		//else $kontakt="";
		
		//echo "Kontakt: XX".$kontakt."XX";
		return($kontakt);
	}
	function verarbeite_ARB($line, &$produkt, $blocktrenner, $elementtrenner)
	{
		// ARB+Roche Austria+++Engelhorngasse 3+Wien+1210'						#Arbeitgeber Nachname + Arbeitgeber Vorname + Arbeitgeber Titel + Arbeitgeber Strasse + Arbeitgeber Ort + Arbeitgeber PLZ		#Kundendaten wenn vorhanden Kunden anlegen
		$blocks=explode($blocktrenner, $line);
		$nachname=$blocks[1];
		$vorname=$blocks[2];
		$titel=$blocks[3];
		$strasse=$blocks[4];
		$ort=$blocks[5];
		$plz=$blocks[6];
		//echo "Arbeitgeben: ".$nachname." ".$vorname."\n";
		$kunden_id=kunden_suchen_oder_anlegen($nachname, $vorname, $titel, $strasse, $ort, $plz);
		return($kunden_id);

	}
	function verarbeite_ANF($line, &$produkt, $blocktrenner, $elementtrenner)
	{
		$produkt_array=array();
		$blocks=explode($blocktrenner, $line);
		//echo "Artikel: ";
		//echo "Line : $line";
		$blocks=array_slice($blocks, 1); // das erste Element weg (ANF)
		foreach ($blocks as $block)
		{
			array_push($produkt_array, $block);
		}
		//var_dump( $produkt_array);
		return($produkt_array);
	}
	
	function import_edi_file($sourcefile, $warenkorb)
	{
		$blocktrenner = "+";
		$elementtrenner = ":";
		$delimiter = "'";
		$produkt_array=array();
	
		//echo "<pre>";
		$produkt=array();
		$header=array();
		$kunden_id=0;
		$additional_text="";
		if (($handle = fopen($sourcefile, "r")) !== FALSE) {
			mysql_query("Start transaction;");
			while (($data = fgetcsv($handle, 0, $delimiter)) !== FALSE) 
			{
				if ($header == 1) {
					$header = 0;
					continue;
				}
				foreach ($data as $line)
				{
					//echo $line."\n";
					$line=ltrim($line);
					// ANF wird vom Patientensystem falsch exportiert -ohne + - hier wird das richtig gestellt
					if (substr($line,0,3)=='ANF') 
					{
						//echo "ANF gefunden";
						$line=str_replace("ANF","ANF+",$line);
						$line=preg_replace('/\s+/', '+', $line);
						echo $line;
					}
					$blocks=explode($blocktrenner, $line);
					print_r($blocks);
					switch($blocks[0])
					{
						case 'UNH': 
							$befund_nummer=verarbeite_UNH($line, $produkt, $blocktrenner, $elementtrenner);
							$additional_text.=$befund_nummer;
						break;
						case 'PAT': 
							$patient=verarbeite_PAT($line, $produkt, $blocktrenner, $elementtrenner);
							$additional_text.=$patient;
						break;
						case 'KON': 
							$kontakt=verarbeite_KON($line, $produkt, $blocktrenner, $elementtrenner);
							$additional_text.=$kontakt;
						break;
						case 'ARB': 
							if ($kunden_id==0)
							{
								$kunden_id=verarbeite_ARB($line, $produkt, $blocktrenner, $elementtrenner);
							}
						break;
						case 'ANF': 
							$produkt_array_temp=verarbeite_ANF($line, $produkt, $blocktrenner, $elementtrenner);
							if (!empty($produkt_array_temp))
							{
								$produkt_array=array_merge($produkt_array, $produkt_array_temp);
								var_dump($produkt_array_temp);
								//var_dump($produkt_array);
							}
						break;
					}
				}
				
		
			}
			mysql_query("commit;");
			//$additional_text=$befund_nummer.$patient.$kontakt;
			schreibe_additional_text_in_db($warenkorb, $additional_text);
			if ($kunden_id>0)
			{
				// Alex, Kunde soll nach zahlung gelöscht werden
				//$_SESSION['customerToEmptyBon']=$kunden_id;
				//echo "Kunde :$kunden_id";
			}
			
			schreibe_produkte_in_offenen_bon($warenkorb, $produkt_array, $kunden_id);
			fclose($handle);
			moveEdiFileToArchive($sourcefile);
		}
	}
	
	function moveEdiFileToArchive($ediFileToMove)
	{
		$xTime=date('Ymd_His');
		$fName=preg_replace('/\'/', '', basename($ediFileToMove));
		$ediFileArchiveName='C:\\sitpos\\import\\archive\\'.$fName.$xTime.'.txt';
		$copyToArchive=copy("C:\\sitpos\\import\\".$fName, $ediFileArchiveName);
		
		echo "$copyToArchive bin in löschen";
		$delIpFile=false;
		if($copyToArchive === true){
			$delIpFile=unlink("C:\\sitpos\\import\\".$fName);		
		}
		//echo json_encode(array("", "EDI move ", ""));
	}
	
	
	function schreibe_produkte_in_offenen_bon($warenkorb, $produkt_array, $kunden_id)
	{
		foreach ($produkt_array as $produkt_id)
		{
			if (!empty($produkt_id))
			{
				//echo "Produkt $produkt_id";
				schreibe_ein_produkt_in_offenen_bon($warenkorb, $produkt_id, $kunden_id);
				//produkt_hinzufuegen($produkt_id, 1, 1, $warenkorb);
			}
		}
	}
	
	function schreibe_ein_produkt_in_offenen_bon($warenkorb, $produkt_id, $kunden_id)
	{
		$ediErrorMsg="";
		$ediError=0;
		$curUser=$_SESSION['userId'];
		$selQl=mysql_query("SELECT * FROM products WHERE REFERENCE = '".$produkt_id."' LIMIT 1");
		if(mysql_num_rows($selQl) == 0){						
			$ediErrorMsg.="Übergebener Artikel '".$produkt_id."' nicht gefunden ! ".mysql_error();
			$ediError+=1;
			echo json_encode(array("Error", "EDI Fehler Artikerl $produkt_id existiert nicht!", "", ""));
			//exit;
		}
		else
		{
		while($rowQl=mysql_fetch_array($selQl)){
			$taxC=$rowQl['TAXCAT'];
			$prodId=$rowQl['ID'];
			$prodNo=$rowQl['REFERENCE'];
			$prodName=$rowQl['NAME'];
			$priceS=$rowQl['PRICESELL'];
			$prodCat=$rowQl['CATEGORY'];
			$displ=$rowQl['DISPLAY'];
			$varPr=$rowQl['VARPRICE'];
			$prntN=$rowQl['PRINTNAME'];
			$negPr=$rowQl['NEGATIVEPRICE'];
			$prodOrd=$rowQl['PRODUKTORDER'];
			$sichtb=$rowQl['SICHTBAR'];
			$suplPrint=$rowQl['supplyprint'];
			$articleQty=1;
			
			if($prntN == false || strlen($prntN) == 0)$prntN=$prodName;
			
		}
		if($taxC >= 0){
			$taxQl=mysql_fetch_array(mysql_query("SELECT RATE FROM taxes WHERE ID = '".$taxC."' LIMIT 1"));
			$taxRate=$taxQl['RATE'];
			
		}
		
		if($taxRate >=0){
				# Artikel und dazu tax Rate gefunden -> insert offener_bon							
			$insQl=mysql_query("INSERT INTO offener_bon SET bon_id='".$warenkorb."', produkt_id='".$prodId."', REFERENCE='".$prodNo."', PRICESELL='".$priceS."',
					CATEGORY='".$prodCat."', TAXCAT='".$taxC."', IMAGE=NULL, DISPLAY=NULL, VARPRICE='".$varPr."', NAME='".$prodName."',
					printname='".$prntN."', NEGATIVEPRICE='".$negPr."', PRODUKTORDER='".$prodOrd."', SICHTBAR='".$sichtb."', supplyprint=NULL, 
					articlePrinted=0, stueck=".$articleQty.", tax_rate='".$taxRate."', aus_ls_nr=Null, article_art_id=0, beilagen_aenderung_minus='', 
					beilagen_aenderung_plus='', kunden_id='".$kunden_id."', beilagen_prod_orig_preis='".$priceS."', beilagen_sum_netto='0', beilagen_sum_brutto='0', 
					beilagen_basispreis_key='0', benutzer_id='".$curUser."', parent_id='0',   has_childs='0', has_parent='0', childPrint='0', abholschein_nr = NULL ");
		
			if(!$insQl){
				$ediErrorMsg.="Sql Insert Fehler. ".mysql_error();
				$ediError+=1;
			}	
		}
		else {
			$ediErrorMsg.="Sql Lese Fehler. ".mysql_error();
			#$ediError+=1;	
		}
		}
	}
							
	function schreibe_additional_text_in_db($warenkorb, $text)
	{
		//echo "Schreibe Zusatztext in Warenkorb ".$warenkorb;
		if(	$text != ''){
			// Falls es schon einen Zusatztext im Warenkorb gibt, dann löschen
			$Q1=mysql_query("SELECT * FROM bon_add_text WHERE offenerbon_id = '".$warenkorb."'");
			if (mysql_num_rows($Q1)>0)
			{
				mysql_query("DELETE FROM bon_add_text WHERE offenerbon_id = '".$warenkorb."'");
			}

			// jetzt den neuen Zusatztext reinschreiben
			$insQl=mysql_query("INSERT INTO bon_add_text SET offenerbon_id = '".$warenkorb."', bon_text = '".utf8_encode($text)."'");
			if(!$insQl){
				$ediErrorMsg.="Sql Insert Error. ".mysql_error();
				echo json_encode(array("Error", "EDI Fehler ".mysql_error()." erstellt", "", ""));
			}
			else
			{	
				//echo json_encode(array("", "EDI ".$befundNr." übernommen ", $befundNr, "'".$ediFiles[0]."'", ""));							
				//echo "Zusatztext eingefügt in Warenkorb $warenkorb";
			}
		}
	}
	// sucht den Warenkorb in den importiert werden soll
	function get_leeren_warenkorb()
	{
		$curCart=$_SESSION['aktuellerWarenkorb'];
		$checkWarenkorb=mysql_fetch_array(mysql_query("SELECT bon_id FROM offener_bon WHERE bon_id = ".$curCart." LIMIT 1"));
				
		if($checkWarenkorb[0] != 0){ 
				# Wenn im Warernkorb schon was drinnen ist lassen wir kein Edi Import zu. zurück zum ajax call, da wird
				#     ein neuer warenkorb geöfnet und der import neu aufgerufen. deswegn hier aussteigen, mein neu aufruf kommen wir da nicht mehr
				#     herein
			//echo json_encode(array("addNewCart", "Neuer Warenkorb wird geladen"));
			//exit;
			$curCart++;
			$_SESSION['aktuellerWarenkorb'];
			echo json_encode(array("neuer_warenkorb", $curCart));
		}
		//else echo json_encode(array("leerer_warenkorb", $curCart));
		require_once("ajax_funktionen_kp.php");
		clearSelectedCustomer();
		return($curCart);
	}
	
	// Sucht die KundenID heraus oder legt einen Neuen Kunden angelegt
	// gibt die KundenID zurück
	function kunden_suchen_oder_anlegen($nachname, $vorname, $titel, $strasse, $ort, $plz)
	{
		$ediErrorMsg="";
		$ediError=0;
		$custId=0;
		# Kundendaten vorhanden check, schon angelegt    Firma, strasse1, plz ODER vorname, nachname, strasse1, plz
		$sql="SELECT id, firma FROM kunden WHERE vorname='".utf8_encode($vorname)."' AND 
						nachname= '".utf8_encode($nachname)."' AND strasse1 = '".utf8_encode($strasse)."' 
						AND plz = '".utf8_encode($plz)."' LIMIT 1";
		/*$sql="SELECT id, firma FROM kunden WHERE vorname='".utf8_encode($vorname)."' AND 
						nachname= '".utf8_encode($nachname)."' LIMIT 1";*/
		echo $sql;
		$Q1=mysql_query($sql);
		if (mysql_num_rows($Q1)>0)
		{
			$row=mysql_fetch_assoc($Q1);
			$custId=$row['id'];
			//echo "Kunde gefunden mit ID: $custId";
			writeLog(basename( __FILE__)." ". __LINE__ , "edi Import kunde gefunden, ist angelegt -> ".$custId."\n");
		}
		else 
		{	// kunden neu anlegen
				# Kundenname, straße und plz gibts, sonst machen wir keinen insert. ->	Kunden nicht in DB -> anlegen !!!	
			$insertStr="";
			//if(empty($arbeitGeber[0]) !== true) $insertStr.=", firma='".utf8_encode($arbeitGeber[0])."'";
			if(empty($vorname) !== true) $insertStr.=", vorname='".utf8_encode($vorname)."'";
			if(empty($nachname) !== true) $insertStr.=", nachname='".utf8_encode($nachname)."'";
			if(empty($ort) !== true) $insertStr.=", Ort='".utf8_encode($ort)."'";

			$insCustQl=mysql_query("INSERT INTO kunden SET loyality_card='', strasse1='".utf8_encode($strasse)."', plz='".utf8_encode($plz)."' ".$insertStr."				");
			$custId=mysql_insert_id();
			if(!$insCustQl){
				$custId=0;
				$ediErrorMsg.="Edi Error, Kunden anlegen. ".mysql_error();
				$ediError+=1;																	
			}
			echo "Kunde Angelegt: $custId";
		}	
		return($custId);
			# else -> bleibt bei custId 0 !!!  oben schon definiert.
		
	}
?>