<?php 


class ControladorCompras{

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

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

		$tabla = "compras";

		$respuesta = ModeloCompras::mdlRangoFechasCompras($tabla, $fechaInicial, $fechaFinal);

		return $respuesta;
		
	}

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

		$tabla = "compras";

		$respuesta = ModeloCompras::mdlRangoFechasCompras3($tabla, $fechaInicial, $fechaFinal);

		return $respuesta;
		
	}

	/*=============================================
	MOSTRAR COMPRAS
	=============================================*/

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

		$tabla = "compras";

		$respuesta = ModeloCompras::mdlMostrarCompras($tabla, $item, $valor);

		return $respuesta;

	}

		/*=============================================
	MOSTRAR COMPRAS DE PRODUCTOS
	=============================================*/

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

		$tabla = "compras";

		$respuesta = ModeloCompras::mdlMostrarComprasProductos($tabla, $item, $valor);

		return $respuesta;

	}

	/*=============================================
	MOSTRAR DETALLE COMPRAS
	=============================================*/

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

		$tabla = "detalle_compras";

		$respuesta = ModeloCompras::mdlMostrarDetalleCompras($tabla, $item, $valor);

		return $respuesta;

	}

	/*=============================================
	CREAR COMPRA
	=============================================*/

	static public function ctrCrearCompra(){
		if(isset($_POST["nuevaSerie"])){
			if (isset($_POST['conditions']) && $_POST['conditions'] == '1') {
				/*=============================================
				ACTUALIZAR EL STOCK Y AUMENTAR CAMBIA LOS PRECIOS DE LOS PRODUCTOS
				=============================================*/
				$listaProductos = json_decode($_POST["listaProductos"], true);
				$sucursal = 1;
				
					foreach ($listaProductos as $key => $value) {
						$tablaProductos = "productos";
						$tablaSucursal = "stock_sucursal";
						$item = "id";
						$valor = $value["id"];
						$orden = "id";
		
						$traerProducto = ModeloProductos::mdlMostrarProductos1($tablaProductos, $item, $valor, $orden);
		
						$costo = $value["costo"];
						$costo = round($costo,2);

						$decimalMe = (float)($traerProducto["porcentaje_menor"]/100);
						$decimalMe = round($decimalMe,2);

						// OBTENEMOS EL PRECIO POR MENOR
						$precioMenor = ($costo * $decimalMe) + $costo;
						$precioMenor = round($precioMenor,2);

						$item1b = "stock_fisico";
						$valor1b = $value["stock"];

						$nuevoStock1 = ModeloProductos::mdlActualizarProducto3($tablaSucursal, $item1b, $valor1b, $valor);

						$item2b = "precio_compra_promedio";
						$valor2b = $costo;

						$item4b = "precio_venta_sugerido";
						$valor4b = $precioMenor;


						$nuevoStock = ModeloProductos::mdlActualizarProducto2($tablaProductos, $item2b, $valor2b, $item4b, $valor4b, $valor);
					}
				
					/*=============================================
						GUARDAR LA COMPRA
					=============================================*/	
						$tabla = "compras";
						$estado = 0;
						$datos = array(
								"id_proveedor"=>$_POST["seleccionarProveedor"],
								"id_usuario" => $_POST["idVendedor"],
								"sucursal_id" => $sucursal,
								"serie"=>$_POST["nuevaSerie"],
								"numero"=>$_POST["numero"],
								"fecha_emision"=>$_POST["fecha_emision"],
								"fecha_registro"=>$_POST["fecha_registro"],
								"moneda"=>$_POST["nuevoCambio"],
								"igv"=>$_POST["igv"],
								"neto"=>$_POST["subtotal"], 
								"total"=>$_POST["totalVenta"],
								"forma_pago"=>$_POST["metodoPago"],
								"estado"=>$estado);

						$respuesta = ModeloCompras::mdlIngresarCompra($tabla, $datos, $listaProductos);
						if($respuesta == "ok"){

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

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

					}
			}else {
				/*=============================================
				SOLO ACTUALIZA EL STOCK DEL PRODUCTO
				=============================================*/	
				$listaProductos = json_decode($_POST["listaProductos"], true);
				$sucursal = 1;
				foreach ($listaProductos as $key => $value) {

						$tablaProductos = "productos";
						$tablaSucursal = "stock_sucursal";

						$item = "id";
						$valor = $value["id"];
						$orden = "id";
		
						$traerProducto = ModeloProductos::mdlMostrarProductos1($tablaProductos, $item, $valor, $orden);

						$item1b = "stock_fisico";
						$valor1b = $value["stock"];

						$nuevoStock1 = ModeloProductos::mdlActualizarProducto3($tablaSucursal, $item1b, $valor1b, $valor);	
				}
				/*=============================================
						GUARDAR LA COMPRA
					=============================================*/	
					$tabla = "compras";
					$estado = 0;
					$datos = array(
								"id_proveedor"=>$_POST["seleccionarProveedor"],
								"id_usuario" => $_POST["idVendedor"],
								"sucursal_id" => $sucursal,
								"serie"=>$_POST["nuevaSerie"],
								"numero"=>$_POST["numero"],
								"fecha_emision"=>$_POST["fecha_emision"],
								"fecha_registro"=>$_POST["fecha_registro"],
								"moneda"=>$_POST["nuevoCambio"],
								"igv"=>$_POST["igv"],
								"neto"=>$_POST["subtotal"], 
								"total"=>$_POST["totalVenta"],
								"forma_pago"=>$_POST["metodoPago"],
								"estado"=>$estado);

					$respuesta = ModeloCompras::mdlIngresarCompra($tabla, $datos,  $listaProductos);
					if($respuesta == "ok"){
						echo'<script>
						localStorage.removeItem("rango");
						swal({
							type: "warning",
							title: "Estas seguro de Guardar la Compra",
							showCancelButton: true,
							confirmButtonText: "Confirmar",
							cancelButtonColor: "#d33"
							}).then(function(result){
								if(result.value){
									window.location = "compras";
								}
							});
						</script>';
					}
			}
		} 



	}

	static public function ctrCrearOtraCompra(){
		if(isset($_POST["nuevaSerie"])){
					$tabla = "compras";
					$productos = "no productos";
					$total = $_POST["totalVenta"];
					$neto =  round($total/1.18, 2);
					$igv =  $total - $neto;
					$estado = 0;
					$datos = array(
								"tipo_documento"=>$_POST["seleccionarComprobante"],
								"tipo_factura" =>$_POST["tipoFactura"],
								"serie"=>$_POST["nuevaSerie"],
								"numero"=>$_POST["numero"],
								"id_proveedor"=>$_POST["seleccionarProveedor"],
								"productos"=>$productos,
								"descripcion"=>$_POST["descripcion"],
								"fecha_emision"=>$_POST["fecha_emision"],
								"fecha_registro"=>$_POST["fecha_registro"],
								"moneda"=>$_POST["nuevoCambio"],
								"igv"=>$igv,
								"neto"=>$neto, 
								"total"=>$_POST["totalVenta"],
								"forma_pago"=>$_POST["metodoPago"],
								"estado"=>$estado);

					$respuesta = ModeloCompras::mdlIngresarOtraCompra($tabla, $datos);
					if($respuesta == "ok"){
						echo'<script>
						localStorage.removeItem("rango");
						swal({
							type: "warning",
							title: "Estas seguro de Guardar la Compra",
							showCancelButton: true,
							confirmButtonText: "Confirmar",
							cancelButtonColor: "#d33"
							}).then(function(result){
								if(result.value){
									window.location = "compras";

								}

							});

						</script>';

					}
		}
	}

	static public function ctrEditarCompra(){
		if (!isset($_POST["editarCompra"])) return;

			if (empty($_POST["listaProductos"])) {
				echo '<script>
					swal({
						type: "warning",
						title: "¡Por favor Ingresar Productos!",
						confirmButtonText: "Cerrar"
					});
				</script>';
				return;
			}
			$codigoCompra = $_POST["editarCompra"];
			$sucursal_id = 1; // o dinámico
			$listaProductos = json_decode($_POST["listaProductos"], true);
	
			$datos = array("id_proveedor"=>$_POST["seleccionarProveedor"],
						   "serie"=>$_POST["editarSerie"],
						   "sucursal_id" => $sucursal_id,
						   "numero"=>$_POST["editarNumero"],
						   "fecha_emision"=>$_POST["fecha_emision"],
						   "fecha_registro"=>$_POST["fecha_registro"],
						   "moneda"=>$_POST["nuevoCambio"],
						   "igv"=>$_POST["igv"],
						   "neto"=>$_POST["subtotal"], 
						   "total"=>$_POST["totalVenta"],
						   "forma_pago"=>$_POST["metodoPago"],
						   "id"=>$_POST["editarCompra"]);

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

		
	}

	/*=============================================
	ELIMINAR COMPRA
	=============================================*/
	static public function ctrEliminarCompra(){
		if(isset($_GET["idCompra"])){
			$tabla = "compras";
			$compra_id = $_GET["idCompra"];
			$sucursal_id = 1;
			$respuesta = ModeloCompras::mdlEliminarCompra($tabla, $compra_id, $sucursal_id);
		
			if ($respuesta === "ok") {
            echo '<script>
                swal({
                    type: "success",
                    title: "¡La compra ha sido anulada correctamente!",
                    showConfirmButton: true,
                    confirmButtonText: "Cerrar"
                }).then(function(result){
                    if(result.value){
                        window.location = "compras";
                    }
                });
            </script>';
				} else {
					echo '<script>
						swal({
							type: "error",
							title: "Error al anular la compra",
							text: "' . $respuesta . '",
							confirmButtonText: "Cerrar"
						});
					</script>';
				}

		}

	}

	static public function ctrConsultarDetalleCompras($compra_id){

		$tabla = "detalle_compras";

		$respuesta = ModeloCompras::mdlConsultarDetalleCompras($tabla, $compra_id);

		return $respuesta;
		
	}


} 

