<?php
// ####################################################
// pedido_procesa.php
// parte de shoop
// © ff 2005

ini_set ('error_reporting', E_ALL);
ini_set ('display_errors', '0');

// wfcart siempre antes del inicio de sesion
include('_incl/wfCart.php');
session_start();

include('db.php');
include('_incl/code.php');

function creaCliente($conexion, $datosCliente, &$body) {
	$cliente_id = 0;
	$query = 'INSERT INTO shoop_clientes(	cliente_nombre, 
											cliente_direccion, 
											cliente_codigopostal, 
											cliente_localidad, 
											cliente_provincia, 
											cliente_telefono, 
											cliente_fax, 
											cliente_email, 
											cliente_nif, 
											cliente_added)
											
							VALUES(	"' . addslashes($datosCliente['nombre']) . '", 
									"' . addslashes($datosCliente['direccion']) . '", 
									"' . addslashes($datosCliente['codigopostal']) . '", 
									"' . addslashes($datosCliente['localidad']) . '", 
									"' . addslashes($datosCliente['provincia']) . '", 
									"' . addslashes($datosCliente['telefono']) . '", 
									"' . addslashes($datosCliente['fax']) . '", 
									"' . addslashes($datosCliente['email']) . '", 					
									"' . addslashes($datosCliente['nif']) . '", 
									NOW());';
	
	$result = mysql_query($query, $conexion);
	if($result) {
		$cliente_id = mysql_insert_id($conexion);
		
		// creo el bloque de texto de los datos del cliente
		$body .=	'Datos del cliente:' . "\n\n" .
					$_REQUEST['nombre'] . "\n\n" .
					$_REQUEST['direccion'] . "\n" .
					$_REQUEST['codigopostal']  . ' ' . $_REQUEST['localidad'] . "\n" .
					$_REQUEST['provincia'] . "\n\n" .
					'Tel&eacute;fono: ' . $_REQUEST['telefono'] . "\n" .
					'Fax: ' . $_REQUEST['fax'] . "\n" .
					'email: ' . $_REQUEST['email'] . "\n" .
					'NIF: ' . $_REQUEST['nif'] . "\n\n";

	} else {
		// ha ocurrido un error al crear la linea de pedido. que hago?
	}

	return $cliente_id;
}

function creaPedido($conexion, $clienteID, $formaPago, &$body) {
	$pedido_id = 0;
	$query = 'INSERT INTO shoop_pedidos(pedido_fecha, pedido_cliente, pedido_forma_pago)
								VALUES (NOW(), ' . $clienteID . ', "' . addslashes($formaPago) . '");';

	$result = mysql_query($query, $conexion);
	if($result) {
		$pedidoID = mysql_insert_id($conexion);		

		$body .=	'Numero de Pedido: ' . date(dm) . '-' . substr(10000 + $pedidoID, 1, 4) . "\n\n" .
					'Forma de Pago: ' . $formaPago . "\n\n";
	} else {
		// ha ocurrido un error al crear el pedido...
	}
	
	return $pedidoID;
}

function creaLineaPedido($conexion, $pedidoID, $datosProducto, &$body) {

	$query = 'INSERT INTO shoop_pedi_productos(	pp_id_pedido, 
												pp_id_producto, 
												pp_cantidad, 
												pp_precio_ud, 
												pp_subtotal,
												pp_prd_tipo,
												pp_prd_marca,
												pp_prd_modelo,
												pp_prd_color)
								VALUES (' . $pedidoID . ', ' . 
											$datosProducto['id'] . ', ' . 
											$datosProducto['qty'] . ', ' . 
											$datosProducto['price'] . ', ' . 
											$datosProducto['subtotal'] . ', ' . 
											'"' . addslashes($datosProducto['info']['tipo']) . '", ' .
											'"' . addslashes($datosProducto['info']['marca']) . '", ' . 
											'"' . addslashes($datosProducto['info']['modelo']) . '", ' . 
											'"' . addslashes($datosProducto['info']['color']) . '");';
											
	$result = mysql_query($query, $conexion);
	If($result) {
	
		$body .= $datosProducto['qty'] . '    ';
		$body .= $datosProducto['info']['tipo'] . ' ' . $datosProducto['info']['marca'] . ' ' . $datosProducto['info']['modelo'] . (strlen($datosProducto['info']['color']) ? ' (Acabado ' . ucwords($datosProducto['info']['color']) . ')' : '') . '    ';
		$body .= miNumberFormat($datosProducto['price']) . 'euros    ';
		$body .= miNumberFormat($datosProducto['subtotal']) . 'euros' . "\n\n";

	} else {
		// deberia devolver un error aqu’
	
	}
}

function formaPago($formadepago) {
//	echo $formadepago;
}

function notifica($body, $direccion1 = '', $direccion2 = '') {

	require_once("_incl/class.phpmailer.php");

	$mail = new PHPMailer();

	$mail->IsSMTP();                                      // set mailer to use SMTP
	$mail->Host = "mail.claveaudio.com";  // specify main and backup server
	$mail->SMTPAuth = true;     // turn on SMTP authentication
	$mail->Username = "webbot@claveaudio.com";  // SMTP username
	$mail->Password = "IB425"; // SMTP password

	$mail->From = "claveaudio@claveaudio.com";
	$mail->FromName = "Clave Audio";
	$mail->AddAddress($direccion1);
	$mail->AddReplyTo("info@claveaudio.com");

	$mail->IsHTML(false);                                  // set email format to HTML

	$mail->Subject = "Se ha realizado el siguiente pedido:\n\n\n";
	$mail->Body    = $body . "\n\n";

	if(!$mail->Send())
	{
/*
		echo "Message could not be sent. <p>";
		echo "Mailer Error: " . $mail->ErrorInfo;
*/
		return false;
	} else {
/*
		echo "Message has been sent to " . $emailTo;
*/
		return true;
	}
}

// ####################################################
// cargo el carrito o lo creo nuevo si fuera menester

	$cart =& $_SESSION['cart'];
	if(!is_object($cart)) $cart = new wfCart();

	$numProducts = 0;
	$subTotal = 0;
	
	if(is_object($cart)) {
		$numProducts = $cart->itemcount;
		$subTotal = $cart->total;
	} else {
		Header("Location:" . $_SERVER["HTTP_REFERER"]);
		exit;
// ####################################################
// OJO: como he llegado aqui sin pedido?
	}

	if($numProducts) {

		$conn = db_connect();
		if($conn) {

// ####################################################
// por un lado tengo los datos del cliente.
			$cliente = creaCliente($conn, $_REQUEST, &$cuerpo);
			
			if($cliente) {
				$formaPago = $_REQUEST['formapago'];
				$pedidoID = creaPedido($conn, $cliente, $formaPago, &$cuerpo);

// ####################################################
// por otro lado tengo el pedido
				if($pedidoID) {
					$totalPedido = 0;
					$items = $cart->get_contents();
					foreach($items as $item) {
						creaLineaPedido($conn, $pedidoID, $item, &$cuerpo);
						$totalPedido += $item['subtotal'];
					}	// foreach item
					// todo ok. guardo el numero de cliente, el de pedido y la forma de pago en sendas variables de sesion y voy a la salida de la tienda

					$cuerpo .= 'Subtotal del pedido: ' . $totalPedido;
					
					$_SESSION['clave.cliente'] = $cliente;
					$_SESSION['clave.pedido'] = $pedidoID;
					$_SESSION['clave.pago'] = $formaPago;
					
					// e informo a la tienda
					notifica($cuerpo, 'info@claveaudio.com');

					Header("Location:pedido_ok.php");
					
				} else {	// si se ha creado el pedido
					// el pedido no se ha creado
					
				}
			} else {// si se ha creado el cliente
				// el cliente no se ha creado
			}
		} else {
			// no hay conexion
		}
	} else {	// if $numProductos
		// no hay productos
		Header("Location:" . $_SERVER["HTTP_REFERER"]);
	}
?>