<?php 
class ControladorVentas{

	/*=============================================
	MOSTRAR VENTAS
	=============================================*/

	static public function ctrMostrarVentas($item, $valor){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlMostrarVentas($tabla, $item, $valor);

		return $respuesta;

	}

	/*=============================================
	MOSTRAR DETALLE VENTAS
	=============================================*/

	static public function ctrMostrarDetalleVentas($item, $valor){

		$tabla = "detalle_ventas";

		$respuesta = ModeloVentas::mdlMostrarDetalleVentas($tabla, $item, $valor);

		return $respuesta;

	}
	/*=============================================
	MOSTRAR VENTAS x cliente
	=============================================*/

	static public function ctrMostrarVentasCliente($item, $valor){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlMostrarVentasCliente($tabla, $item, $valor);

		return $respuesta;

	}

	/*=============================================
	MOSTRAR UTILIDADES
	=============================================*/

	static public function ctrMostrarUtilidad($item, $valor){

		$tabla = "utilidad";

		$respuesta = ModeloVentas::mdlMostrarUtilidad($tabla, $item, $valor);

		return $respuesta;

	}

		/*=============================================
		 nuevo
	=============================================*/
	
	static public function ctrVentasCorrectas($fechaInicial, $fechaFinal){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlVentasCorrectas($tabla, $fechaInicial, $fechaFinal);

		return $respuesta;

	}

	// static public function ctrVentasIncorrectas($item, $valor){

	// // 	$tabla = "ventas";

	// // 	$respuesta = ModeloVentas::mdlVentasIncorrectas($tabla, $item, $valor);

	// // 	return $respuesta;

	// // }


	/*=============================================
	CREAR VENTA
	=============================================*/
	static public function ctrCrearVenta(){
		if(isset($_POST["nuevaVenta"])){
			if ($_POST["listaProductos"] == "") {
				echo'<script>

					swal({
						  type: "warning",
						  title: "¡Por favor Ingresar Productos!",
						  confirmButtonText: "Cerrar"
						})
			  	</script>';
				return;

			}
			/*=============================================
			ACTUALIZAR LAS COMPRAS DEL CLIENTE Y REDUCIR EL STOCK Y AUMENTAR LAS VENTAS DE LOS PRODUCTOS
			=============================================*/
			$listaProductos = json_decode($_POST["listaProductos"], true);
			$totalProductosComprados = array();
			$totalCompra = array();
			$sucursal = 1;
			foreach ($listaProductos as $key => $value) {
			   array_push($totalProductosComprados, $value["cantidad"]);
			   array_push($totalCompra, $value["total"]);
			   $tablaProductos = "productos";
			   $tablaSucursal = "stock_sucursal";
			    $item = "id";
			    $valor = $value["id"];
				$orden = "id";
			    $traerProducto = ModeloProductos::mdlMostrarProductos1($tablaProductos, $item, $valor, $orden);
				$item1a = "ventas";
				$valor1a = $value["cantidad"] + $traerProducto["ventas"];
			    $nuevasVentas = ModeloProductos::mdlActualizarProducto1($tablaProductos, $item1a, $valor1a, $valor);
				$item1b = "stock_fisico";
				$valor1b = $value["stock"];
				$nuevoStock = ModeloProductos::mdlActualizarProducto3($tablaSucursal, $item1b, $valor1b, $valor);
			}
			$tablaClientes = "clientes";
			$tablaUtilidad = "utilidad";
			$item = "id";
			$valor = $_POST["seleccionarCliente"];
			$traerCliente = ModeloClientes::MdlMostrarClientes($tablaClientes, $item, $valor);
			$item1a = "total_compras";
			$valor1a = array_sum($totalCompra) + $traerCliente["total_compras"];
			$comprasCliente = ModeloClientes::mdlActualizarCliente($tablaClientes, $item1a, $valor1a, $valor);
			$item1b = "ultima_compra";
			date_default_timezone_set('America/Lima');
			$fecha = date('Y-m-d');
			$hora = date('H:i:s');
			$valor1b = $fecha.' '.$hora;
			$fechaCliente = ModeloClientes::mdlActualizarCliente($tablaClientes, $item1b, $valor1b, $valor);
			
			/*=============================================
			REGISTRAR LA UTILIDAD GENERADA DE LA VENTA
			=============================================*/
			$utilidad = round($_POST["Utilidad"],2);
			$costo = round($_POST["CostoTotal"],2);
			$datosUtilidad = array("codigo_venta" => $_POST["nuevaVenta"],
									"utilidad" => $utilidad,
									"costo" => $costo,
									"fecha" => $valor1b);
			$ingresarUtilidad = ModeloVentas:: mdlIngresarUtilidad($tablaUtilidad, $datosUtilidad);
				/*=============================================
					GUARDAR LA VENTA
				=============================================*/					
					$tabla = "ventas";
					$estado = 0;
					$datos = array("id_vendedor"=>$_POST["idVendedor"],
								"id_cliente"=>$_POST["seleccionarCliente"],
								"codigo"=>$_POST["nuevaVenta"],
								"impuesto"=>$_POST["igv"],
								"neto"=>$_POST["subtotal"],
								"total"=>$_POST["totalVenta"],
								"sucursal_id"=>$sucursal,
								"fecha"=>$fecha,
								"estado"=>$estado);

					$respuesta = ModeloVentas::mdlIngresarVenta($tabla, $datos, $listaProductos);

					if($respuesta == "ok"){

						 echo '<script>
								localStorage.removeItem("rango");
								swal({
									type: "success",
									title: "¡Venta guardada correctamente!",
									showConfirmButton: true,
									confirmButtonText: "Cerrar"
								}).then(function(result){
									if(result.value){
										window.location = "ventas";
									}
								});
							</script>';

					}else{
						echo '<script>
								swal({
									type: "error",
									title: "¡Error al guardar la venta!",
									text: "' . $respuesta . '",
									confirmButtonText: "Cerrar"
								});
							</script>';

					}
			
		}
	}

	/*=============================================
	EDITAR VENTA
	=============================================*/

	static public function ctrEditarVenta(){

		    if (!isset($_POST["editarVenta"])) return;

			// Validación básica
			if (empty($_POST["listaProductos"])) {
				echo '<script>
					swal({
						type: "warning",
						title: "¡Por favor Ingresar Productos!",
						confirmButtonText: "Cerrar"
					});
				</script>';
				return;
			}

			// Preparar datos
			$codigoVenta = $_POST["editarVenta"];
			$sucursal_id = 1; // O dinámico si lo manejas por sesión
			$listaProductos = json_decode($_POST["listaProductos"], true);

			date_default_timezone_set("America/Lima");
			$fechaActual = date('Y-m-d H:i:s');

			$datosVenta = [
				"id_vendedor"   => $_POST["idVendedor"],
				"id_cliente"    => $_POST["seleccionarCliente"],
				"codigo"        => $codigoVenta,
				"impuesto"      => $_POST["igv"],
				"neto"          => $_POST["subtotal"],
				"total"         => $_POST["totalVenta"],
				"fecha"         => $_POST["fecha"],
				"sucursal_id"   => $sucursal_id
			];

			// Ejecutar edición
			$respuesta = ModeloVentas::mdlEditarVenta("ventas", $datosVenta, $listaProductos);

			if ($respuesta === "ok") {
				echo '<script>
					localStorage.removeItem("rango");
					swal({
						type: "success",
						title: "¡Venta editada correctamente!",
						showConfirmButton: true,
						confirmButtonText: "Cerrar"
					}).then(function(result){
						if(result.value){
							window.location = "ventas";
						}
					});
				</script>';
			} else {
				echo '<script>
					swal({
						type: "error",
						title: "Error al editar la venta",
						text: "' . $respuesta . '",
						confirmButtonText: "Cerrar"
					});
				</script>';
			}

	}

	/*=============================================
	EDITAR VENTA PARA EL VENDEDOR
	=============================================*/
	static public function ctrEditarVenta1(){

		if(isset($_POST["codigoVenta"])){

			$tabla = "ventas";
			$item = "metodo_pago";
			$item2 = "fecha";
			$item3 = "fecha_salida";
			$item4 = "codigointerno";
			$item5 = "id_cobra";

			date_default_timezone_set("America/Lima");
			$fechaActual = date('Y-m-d H:i:s');

			/*=============================================
			GUARDAR EL CREDITO 
			=============================================*/	

			if ($_POST["editarMetodoPago"] == "CREDITO") {

				$tablaC = "credito";
				$datosC = array("id_venta"=>$_POST["nuevoid"],
								"id_usuario"=>$_POST["idCobrador"],
						   		"total_pagado"=>$_POST["Totalpagado"]);

				$credito = ModeloVentas::mdlIngresarCredito($tablaC, $datosC);

				/*=============================================
				GUARDAR CAMBIOS DE LA COMPRA
				=============================================*/	

				$valor1 = $_POST["editarMetodoPago"];
				$valor2 = $_POST["codigoVenta"];
				$valor3 = $_POST["fecha"];
				$valor4 = $fechaActual;
				$valor5 = $_POST["codigo"];
				$valor6 = $_POST["idCobrador"];

				$respuesta = ModeloVentas::mdlEditarVenta1($tabla, $item, $item2, $item3, $item4, $item5, $valor1, $valor2, $valor3, $valor4, $valor5, $valor6);

				if($respuesta == "ok"){

					echo '<script>

					swal({

						type: "success",
						title: "¡La venta ha sido guardado correctamente!",
						showConfirmButton: true,
						confirmButtonText: "Cerrar"

					}).then(function(result){

						if(result.value){
						
							window.location = "ventas";

						}

					});
				

					</script>';


				}


			}else {

				/*=============================================
				GUARDAR CAMBIOS DE LA COMPRA
				=============================================*/	

				$valor1 = $_POST["editarMetodoPago"];
				$valor2 = $_POST["codigoVenta"];
				$valor3 = $_POST["fecha"];
				$valor4 = $fechaActual;
				$valor6 = $_POST["idCobrador"];

				$respuesta = ModeloVentas::mdlEditarVenta2($tabla, $item, $item2, $item3, $item5, $valor1, $valor2, $valor3, $valor4, $valor6);

				if($respuesta == "ok"){

					echo '<script>

					swal({

						type: "success",
						title: "¡La venta ha sido guardado correctamente!",
						showConfirmButton: true,
						confirmButtonText: "Cerrar"

					}).then(function(result){

						if(result.value){
						
							window.location = "ventas";

						}

					});
				

					</script>';


				}

			}

		}
	}

	/*=============================================
	ELIMINAR VENTA
	=============================================*/
	static public function ctrEliminarVenta(){

		 if (isset($_GET["idVenta"])) {

        $venta_id = $_GET["idVenta"];
        $codigo = $_GET["codigo"];
        $sucursal_id = 1; // O dinámico si lo manejas por sesión

        $respuesta = ModeloVentas::mdlEliminarVenta($venta_id, $codigo, $sucursal_id);

        if ($respuesta === "ok") {
            echo '<script>
                swal({
                    type: "success",
                    title: "¡La venta ha sido eliminada correctamente!",
                    showConfirmButton: true,
                    confirmButtonText: "Cerrar"
                }).then(function(result){
                    if(result.value){
                        window.location = "ventas";
                    }
                });
            </script>';
        } else {
            echo '<script>
                swal({
                    type: "error",
                    title: "Error al eliminar la venta",
                    text: "' . $respuesta . '",
                    confirmButtonText: "Cerrar"
                });
            </script>';
        }
    }


	}

	/*=============================================
	RANGO FECHAS
	=============================================*/	

	static public function ctrRangoFechasVentas($fechaInicial, $fechaFinal){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlRangoFechasVentas($tabla, $fechaInicial, $fechaFinal);

		return $respuesta;
		
	}

	/*=============================================
	RANGO FECHAS
	=============================================*/	

	static public function ctrRangoFechasTasaPedidos($fechaInicial, $fechaFinal){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlRangoFechasTasaPedidos($tabla, $fechaInicial, $fechaFinal);

		return $respuesta;
		
	}

	static public function ctrRangoFechasVentas5($fechaInicial, $fechaFinal){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlRangoFechasVentas5($tabla, $fechaInicial, $fechaFinal);

		return $respuesta;
		
	}

	/*=============================================
	RANGO FECHAS
	=============================================*/	

	static public function ctrRangoFechasVentas3($fechaInicial, $fechaFinal){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlRangoFechasVentas3($tabla, $fechaInicial, $fechaFinal);

		return $respuesta;
		
	}
	/*=============================================
	RANGO FECHAS
	=============================================*/	

	static public function ctrRangoFechasUtilidadMes($fechaInicial, $fechaFinal){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlRangoFechasUtilidadMes($tabla, $fechaInicial, $fechaFinal);

		return $respuesta;
		
	}

	/*=============================================
	RANGO FECHAS
	=============================================*/	

	static public function ctrRangoFechasVentas1($fechaInicial, $fechaFinal, $item , $valor){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlRangoFechasVentas1($tabla, $fechaInicial, $fechaFinal, $item , $valor);

		return $respuesta;
		
	}

	/*=============================================
	RANGO FECHAS
	=============================================*/	

	static public function ctrRangoFechasVentas2($fechaInicial, $fechaFinal ){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlRangoFechasVentas2($tabla, $fechaInicial, $fechaFinal);

		return $respuesta;
		
	}

	/*=============================================
	RANGO FECHAS
	=============================================*/	

	static public function ctrRangoFechasUtilidad($fechaInicial, $fechaFinal ){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlRangoFechasUtilidad($tabla, $fechaInicial, $fechaFinal);

		return $respuesta;
		
	}

	/*=============================================
	CONSULTAR VENTAS PARA EL VENDEDOR PENDIENTES PARA DESCARGO
	=============================================*/	

	static public function ctrConsultarVentas(){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlConsultarVentas($tabla);

		return $respuesta;
		
	}

	static public function ctrConsultarDetalleVentas($venta_id){

		$tabla = "detalle_ventas";

		$respuesta = ModeloVentas::mdlConsultarDetalleVentas($tabla, $venta_id);

		return $respuesta;
		
	}

	/*=============================================
	DESCARGAR EXCEL
	=============================================*/

	static public function ctrDescargarReporte(){

		if(isset($_GET["reporte"])){

			$tabla = "ventas";
			if(isset($_GET["fechaInicial"]) && isset($_GET["fechaFinal"])){
				$ventas = ModeloVentas::mdlRangoFechasVentas($tabla, $_GET["fechaInicial"], $_GET["fechaFinal"]);
			}else{
				$item = null;
				$valor = null;
				$ventas = ModeloVentas::mdlMostrarVentas($tabla, $item, $valor);
			}
			/*=============================================
			CREAMOS EL ARCHIVO DE EXCEL
			=============================================*/
			$Name = $_GET["reporte"].'.xls';
			header('Expires: 0');
			header('Cache-control: private');
			header("Content-type: application/vnd.ms-excel"); // Archivo de Excel
			header("Cache-Control: cache, must-revalidate"); 
			header('Content-Description: File Transfer');
			header('Last-Modified: '.date('D, d M Y H:i:s'));
			header("Pragma: public"); 
			header('Content-Disposition:; filename="'.$Name.'"');
			header("Content-Transfer-Encoding: binary");
			
			echo utf8_decode("<table border='0'> 
					<tr> 
					<td style='font-weight:bold; border:1px solid #eee;'>CÓDIGO</td> 
					<td style='font-weight:bold; border:1px solid #eee;'>CLIENTE</td>
					<td style='font-weight:bold; border:1px solid #eee;'>VENDEDOR</td>
					<td style='font-weight:bold; border:1px solid #eee;'>CANTIDAD</td>
					<td style='font-weight:bold; border:1px solid #eee;'>PRODUCTOS</td>
					<td style='font-weight:bold; border:1px solid #eee;'>IMPUESTO</td>
					<td style='font-weight:bold; border:1px solid #eee;'>NETO</td>		
					<td style='font-weight:bold; border:1px solid #eee;'>TOTAL</td>		
					<td style='font-weight:bold; border:1px solid #eee;'>METODO DE PAGO</td	
					<td style='font-weight:bold; border:1px solid #eee;'>FECHA</td>		
					</tr>");
			foreach ($ventas as $row => $item){
				$cliente = ControladorClientes::ctrMostrarClientes("id", $item["id_cliente"]);
				$vendedor = ControladorUsuarios::ctrMostrarUsuarios("id", $item["id_vendedor"]);
			 echo utf8_decode("<tr>
			 			<td style='border:1px solid #eee;'>".$item["codigo"]."</td> 
			 			<td style='border:1px solid #eee;'>".$cliente["razon_social"]."</td>
			 			<td style='border:1px solid #eee;'>".$vendedor["usuario"]."</td>
			 			<td style='border:1px solid #eee;'>");
			 	$productos =  json_decode($item["productos"], true);
			 	foreach ($productos as $key => $valueProductos) {
			 			echo utf8_decode($valueProductos["cantidad"]."<br>");
			 		}
			 	echo utf8_decode("</td><td style='border:1px solid #eee;'>");	
		 		foreach ($productos as $key => $valueProductos) {	
		 			echo utf8_decode($valueProductos["descripcion"]."<br>");
		 		}
		 		echo utf8_decode("</td>
					<td style='border:1px solid #eee;'>".number_format($item["impuesto"],2)."</td>
					<td style='border:1px solid #eee;'>".number_format($item["neto"],2)."</td>	
					<td style='border:1px solid #eee;'>".number_format($item["total"],2)."</td>
					<td style='border:1px solid #eee;'>".$item["metodo_pago"]."</td>
					<td style='border:1px solid #eee;'>".substr($item["fecha"],0,10)."</td>		
		 			</tr>");
			}
			echo "</table>";			
		}
	}

	// static public function ctrDescargarPrecision(){

	
	// 		$tabla = "presicion_inventario";

		
	// 		$item = "id";
	// 		$valor = $this->$_GET["codigo"];

	// 		$respuesta = ControladorAlmacen::ctrMostrarInventario($item, $valor);

	// 		$productos = json_decode($respuesta["productos"], true);

	// 		/*=============================================
	// 		CREAMOS EL ARCHIVO DE EXCEL
	// 		=============================================*/


	// 		$Name = $_GET["tasa_precision"].'.xls';

			

	// 		header('Expires: 0');
	// 		header('Cache-control: private');
	// 		header("Content-type: application/vnd.ms-excel"); // Archivo de Excel
	// 		header("Cache-Control: cache, must-revalidate"); 
	// 		header('Content-Description: File Transfer');
	// 		header('Last-Modified: '.date('D, d M Y H:i:s'));
	// 		header("Pragma: public"); 
	// 		header('Content-Disposition:; filename="'.$Name.'"');
	// 		header("Content-Transfer-Encoding: binary");


			

	// 		echo utf8_decode("<table border='0'> 

	// 				<tr> 
	// 				<td style='font-weight:bold; border:1px solid #eee;'>ID</td> 
	// 				<td style='font-weight:bold; border:1px solid #eee;'>DESCRIPCION</td>
	// 				<td style='font-weight:bold; border:1px solid #eee;'>NAR</td>
	// 				<td style='font-weight:bold; border:1px solid #eee;'>NTAV</td>
	// 				<td style='font-weight:bold; border:1px solid #eee;'>TASA DE PRECISION</td>
	// 				</tr>");

	// 		 	foreach ($productos as $key => $valueProductos) {
			 			
	// 				echo utf8_decode("</td>
	// 				<td style='border:1px solid #eee;'>".$valueProductos["id"]."</td>
	// 				<td style='border:1px solid #eee;'>".$valueProductos["descripcion"]."</td>	
	// 				<td style='border:1px solid #eee;'>".$valueProductos["stockSistema"]."</td>
	// 				<td style='border:1px solid #eee;'>".$valueProductos["stockFisico"]."</td>
	// 				<td style='border:1px solid #eee;'>".$valueProductos["precision"]."</td>		
	// 	 			</tr>");
	// 		 		}

	// 		echo "</table>";

			

		

	// }


	/*=============================================
	SUMA TOTAL VENTAS
	=============================================*/

	static public function ctrSumaTotalVentas($fechaInicial, $fechaFinal){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlSumaTotalVentas($tabla,$fechaInicial, $fechaFinal);

		return $respuesta;

	}

	static public function ctrSumaTotalVentasPendientes(){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlSumaTotalVentasPendientes($tabla);

		return $respuesta;

	}

	static public function ctrSumaTotalIngresosDiario($fechaInicial, $fechaFinal){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlSumaTotalIngresosDiario($tabla, $fechaInicial, $fechaFinal);

		return $respuesta;

	}

	static public function ctrSumaTotalIngresostarjetaDebito($fechaInicial, $fechaFinal){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlSumaTotalIngresostarjetaDebito($tabla, $fechaInicial, $fechaFinal);

		return $respuesta;

	}

	static public function ctrSumaTotalUtilidades($fechaInicial, $fechaFinal){

		$tabla = "utilidad";

		$respuesta = ModeloVentas::mdlSumaTotalUtilidades($tabla, $fechaInicial, $fechaFinal);

		return $respuesta;

	}

	static public function ctrSumaTotalCreditosCobrados($fechaInicial, $fechaFinal){

		$tabla = "credito";

		$respuesta = ModeloVentas::mdlSumaTotalCreditosCobrados($tabla, $fechaInicial, $fechaFinal);

		return $respuesta;

	}

	/*=============================================
	MOSTRAR VENTAS YA LISTA PARA SALIR PARA LA REMISION
	=============================================*/

	static public function ctrMostrarVentasRemision($item, $valor){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlMostrarVentasRemision($tabla,$item, $valor);

		return $respuesta;

	}

	static public function ctrMostrarVentas1($item, $valor){

		$tabla = "ventas";

		$respuesta = ModeloVentas::mdlMostrarVentas1($tabla, $item, $valor);

		return $respuesta;

	}
	
}