<?php 
//incluir la conexion de base de datos
require "../config/Conexion.php";
class Venta{


	//implementamos nuestro constructor
public function __construct(){

}

//metodo insertar registro
public function insertar($idcliente,$idusuario,$tipo_comprobante,$tipo_comprobante1,$serie_comprobante,$num_comprobante,$fecha_hora,$impuesto,$total_venta,$tasa_dollar,$idarticulo,$cantidad,$precio_venta,$descuento,$nrolote,$idpedidosolo,$idalmacen,
$idmetodopago1,$idmetodopago2,$idmetodopago3,$idmetodopago4,$idmetodopago5,$idmetodopago6,$montotc,$montotd,$montoeb,$montoed,$montoee,$montotz){
	$total_ventad = $total_venta / $tasa_dollar;
	$sql="INSERT INTO venta (idcliente,idusuario,tipo_comprobante,tipo_comprobante1,serie_comprobante,num_comprobante,fecha_hora,impuesto,total_venta,estado,total_ventad,tasa_dollar) 
	VALUES ('$idcliente','$idusuario','$tipo_comprobante','$tipo_comprobante1','$serie_comprobante','$num_comprobante','$fecha_hora','$impuesto','$total_venta','Pendiente','$total_ventad','$tasa_dollar')";
	//return ejecutarConsulta($sql);
	echo $sql;
	$idventanew			=ejecutarConsulta_retornarID($sql);
	$num_elementos	=0;
	$num_pedidos		=0;
	$pedido 				=0;
	$pedidoactual		=0;
	$sw							=true;
	$idarticulopro	=$idarticulo;
	while ($num_elementos < count($idarticulo)) {
		$sql_lote 	= "SELECT idlote, idarticulo, numerolote, fecha, cantidad FROM lote WHERE idarticulo='$idarticulo[$num_elementos]' AND cantidad>0";
		echo $sql_lote;
		$result		=	ejecutarConsulta($sql_lote);
		if (mysqli_num_rows($result) > 0) {
			$cantidad1=$cantidad[$num_elementos];
			while($fila = mysqli_fetch_assoc($result)){
				$cantidadi 	= $cantidad1;
				$numerolote = $fila["numerolote"];
				$fecha		= $fila["fecha"];
				$cantidadl	= $fila["cantidad"];
				$cantidad1 	= $cantidad1 - $cantidadl;
				if ($cantidad1>0){
					$sql_detalle="INSERT INTO detalle_venta (idventa,idarticulo,cantidad,precio_venta,descuento,numerolote,idalmacen) VALUES('$idventanew','$idarticulo[$num_elementos]','$cantidadl','$precio_venta[$num_elementos]','$descuento[$num_elementos]','$numerolote','$idalmacen[$num_elementos]')";
					echo $sql_detalle;
					ejecutarConsulta($sql_detalle) or $sw=false;
				}else{
					$sql_detalle="INSERT INTO detalle_venta (idventa,idarticulo,cantidad,precio_venta,descuento,numerolote,idalmacen) VALUES('$idventanew','$idarticulo[$num_elementos]','$cantidadi','$precio_venta[$num_elementos]','$descuento[$num_elementos]','$numerolote','$idalmacen[$num_elementos]')";
					echo $sql_detalle;
					ejecutarConsulta($sql_detalle) or $sw=false;
				break;
				}
			}   
		} else {
			die("Error: No hay datos en la tabla seleccionada");
		}
		$num_elementos=$num_elementos+1;
	}

	/************************************
	 * Ahora verificamos si el producto es de promoción
	************************************/
	 if ($sw) {
		$num_elementosc	=0;
		//echo 'Inicial --- $num_elementosc: '.$num_elementosc.'count($articulo): '.count($idarticulopro);
		while ($num_elementosc < count($idarticulopro)) {
			$sql_combo 	= "SELECT d.idarticulopromociones,d.idarticuloorigen,d.idarticulo,d.idalmacen,d.cantidad,d.preciod FROM detalle_articulopromociones d WHERE d.idarticuloorigen='$idarticulopro[$num_elementosc]'";
			echo $sql_combo;
			$resultc		=	ejecutarConsulta($sql_combo);
			if (mysqli_num_rows($resultc) > 0) {
				while($filac = mysqli_fetch_assoc($resultc)){
					$idarticulo = $filac["idarticulo"];
					$sql_lote1 	= "SELECT idlote, idarticulo, numerolote, fecha, cantidad FROM lote WHERE idarticulo='$idarticulo' AND cantidad>0";
					echo $sql_lote1;

					$result2		=	ejecutarConsulta($sql_lote1);
					if (mysqli_num_rows($result2) > 0) {
						$cantidad1		=$filac["cantidad"];
						$idarticulo		=$filac["idarticulo"];
						$precio_venta	=$filac["preciod"]*$tasa_dollar;
						$descuento		= 0;
						$idalmacen		=$filac["idalmacen"];
						while($fila2 = mysqli_fetch_assoc($result2)){
							$cantidadi 	= $cantidad1;
							$numerolote = $fila2["numerolote"];
							$fecha			= $fila2["fecha"];
							$cantidadl	= $fila2["cantidad"];
							$cantidad1 	= $cantidad1 - $cantidadl;
							if ($cantidad1>0){
								$sql_detalle2="INSERT INTO detalle_ventap (idventa,idarticulo,cantidad,precio_venta,descuento,numerolote,idalmacen) VALUES('$idventanew','$idarticulo','$cantidadl','$precio_venta','$descuento','$numerolote','$idalmacen')";
								echo $sql_detalle2;
								ejecutarConsulta($sql_detalle2) or $sw=false;
							}else{
								$sql_detalle2="INSERT INTO detalle_ventap (idventa,idarticulo,cantidad,precio_venta,descuento,numerolote,idalmacen) VALUES('$idventanew','$idarticulo','$cantidadi','$precio_venta','$descuento','$numerolote','$idalmacen')";
								echo $sql_detalle2;
								ejecutarConsulta($sql_detalle2) or $sw=false;
							break;
							}
						}   
					} else {
						die("Error: No hay datos en la tabla seleccionada");
					}
				}		
			}
			$num_elementosc=$num_elementosc+1;
			//echo 'Sumando --- $num_elementosc: '.$num_elementosc.'count($articulo): '.count($idarticulopro);
		}
	}  

		//Ahora verificamos si el articulo es de promoción
		/* 	
		if ($sw){
			$cantidadf			= $cantidad[$num_elementos];
			$sql_promocion 	= "SELECT a.idarticulo as idarticulop,de.idarticulo as idarticulopindividual,de.idarticuloorigen,de.idalmacen,de.cantidad,de.preciod FROM articulopromociones a INNER JOIN detalle_articulopromociones de ON de.idarticuloorigen=a.idarticulo WHERE a.idarticulo='$idarticulo[$num_elementos]'";
			$resultp				=	ejecutarConsulta($sql_promocion);
			if (mysqli_num_rows($resultp) > 0) {
				while($filap = mysqli_fetch_assoc($resultp)){
					$idarticulop 	= $filap["idarticulopindividual"];
					$preciop			= $filap["preciod"];
					$cantidadp		= $filap["cantidad"]*$cantidadf;
					$idalmacenp		= $filap["idalmacen"];
					$sql_detallep="INSERT INTO detalle_ventap (idventa,idarticulo,cantidad,precio_venta,descuento,numerolote,idalmacen) 
					VALUES('$idventanew','$idarticulop','$cantidadp','$preciop','0','N/A','$idalmacenp')";
					echo $sql_detallep;
					ejecutarConsulta($sql_detallep) or $sw=false;
				}
			}	
		}
 */

	/* 
	

	*/
	if ($sw) {
		// actualizamos la tabla de pedidos de la cafeteria
		while ($num_pedidos < count($idpedidosolo)) {
			$pedido	= $idpedidosolo[$num_pedidos];
			if ($pedido>0) {
				if ($pedidoactual<>$pedido) {
					$sql_cafeteria = "UPDATE barra SET estado='Facturado' WHERE idpedido='$pedido'";
					ejecutarConsulta($sql_cafeteria) or $sw=false;
					$pedidoactual = $pedido;
				}
			}
			$num_pedidos=$num_pedidos+1;
		}	 

		// Actualizamos los numeros de facturas
		$idempresa_venta 	= 	$_SESSION['idempresa_venta_empresa'];
		$nrofactura			=	$num_comprobante + 1;
		$nrocontrol			=	$serie_comprobante + 1;
		 $sql_update		=	"UPDATE empresa_venta SET nrofactura='$nrofactura',nrocontrol='$nrocontrol'
		 WHERE idempresa_venta='$idempresa_venta'";
			echo $sql_update;
		ejecutarConsulta($sql_update);
		
		// Actualizamos la tabla de pagos
		$sql_pagos 			= "INSERT INTO venta_pagos(idventa, idcliente, idusuario, fecha_hora, total_pago,total_pagod, estado) 
		VALUES ('$idventanew','$idcliente','$idusuario','$fecha_hora','$total_venta','$total_ventad','pagado')";
		echo $sql_pagos;
		$idventa_pagonew	=	ejecutarConsulta_retornarID($sql_pagos);
		//echo $idventa_pagonew;
		// Ahora actualizamos el detalle del pago, para registrar el metodo de pago
		// El modulo de pago solo tiene activo 6 (Tarjeta de credito, tarjeta de debito, efectivo, dollar, euro, zelle)
		// si se activa uno mas hay actualizar el ciclo.
		//echo $montotc;
		//echo 'tc';
		//echo $montotc;
		if ($montotc>0){
			$sql_pagosdetalle = "INSERT INTO detalle_ventasformapagos(idventapago, idformapago, monto, fecha) 
			VALUES ('$idventa_pagonew','1','$montotc','$fecha_hora')";
			echo $sql_pagosdetalle;
			ejecutarConsulta($sql_pagosdetalle) or $sw=false;
		}
		//echo 'td';
		//echo $montotd;	
		if ($montotd>0){
			$sql_pagosdetalle = "INSERT INTO detalle_ventasformapagos(idventapago, idformapago, monto, fecha) 
			VALUES ('$idventa_pagonew','2','$montotd','$fecha_hora')";
			echo $sql_pagosdetalle;
			ejecutarConsulta($sql_pagosdetalle) or $sw=false;
		}
		//echo 'ed';
		//echo $montoed;
		if ($montoed>0){
			$sql_pagosdetalle = "INSERT INTO detalle_ventasformapagos(idventapago, idformapago, monto, fecha) 
			VALUES ('$idventa_pagonew','4','$montoed','$fecha_hora')";
			echo $sql_pagosdetalle;
			ejecutarConsulta($sql_pagosdetalle) or $sw=false;
		}
		//echo 'eb';
		//echo $montoeb;
		if ($montoeb>0){
			$sql_pagosdetalle = "INSERT INTO detalle_ventasformapagos(idventapago, idformapago, monto, fecha) 
			VALUES ('$idventa_pagonew','3','$montoeb','$fecha_hora')";
			echo $sql_pagosdetalle;
			ejecutarConsulta($sql_pagosdetalle) or $sw=false;
		}
		//echo 'tz';
		//echo $montotz;
		if ($montotz>0){
			$sql_pagosdetalle = "INSERT INTO detalle_ventasformapagos(idventapago, idformapago, monto, fecha) 
			VALUES ('$idventa_pagonew','6','$montotz','$fecha_hora')";
			echo $sql_pagosdetalle;
			ejecutarConsulta($sql_pagosdetalle) or $sw=false;
		}
		//echo 'ee';
		//echo $montoee;
		if ($montoee>0){
			$sql_pagosdetalle = "INSERT INTO detalle_ventasformapagos(idventapago, idformapago, monto, fecha) 
			VALUES ('$idventa_pagonew','5','$montoee','$fecha_hora')";
			echo $sql_pagosdetalle;
			ejecutarConsulta($sql_pagosdetalle) or $sw=false;
		}					
		
		//Actualizamos el estado de la factura emitada a pagada
		$sql_ventapago = "UPDATE venta SET estado='Pagada' WHERE idventa='$idventanew'";
		echo $sql_ventapago;
		ejecutarConsulta($sql_ventapago) or $sw=false;
	}

	return $sw;
	
}

public function anular($idventa){
	$sql="UPDATE venta SET estado='Anulado' WHERE idventa='$idventa'";
	return ejecutarConsulta($sql);
}

public function eliminararticulodecafeteriabd($iddetallec,$idpedidoc,$idarticuloc){
	$sql="DELETE FROM detalle_barra WHERE iddetalle_pedido='$iddetallec' AND idpedido='$idpedidoc' AND idarticulo='$idarticuloc'";
	return ejecutarConsulta($sql);
}


//implementar un metodopara mostrar los datos de unregistro a modificar
public function mostrar($idventa){
	$sql="SELECT v.idventa,DATE(v.fecha_hora) as fecha,v.idcliente,p.nombre as cliente, p.tipo_documento,p.num_documento,u.idusuario,u.nombre as usuario, v.tipo_comprobante,v.serie_comprobante,v.num_comprobante,v.total_venta,v.impuesto,v.estado FROM venta v INNER JOIN persona p ON v.idcliente=p.idpersona INNER JOIN usuario u ON v.idusuario=u.idusuario WHERE idventa='$idventa'";
	return ejecutarConsultaSimpleFila($sql);
}

public function listarDetalle($idventa){
	$sql="SELECT dv.idventa,dv.idarticulo,a.nombre,dv.cantidad,dv.precio_venta,dv.descuento,(dv.cantidad*dv.precio_venta-dv.descuento) as subtotal, dv.idalmacen, dv.numerolote FROM detalle_venta dv INNER JOIN articulo a ON dv.idarticulo=a.idarticulo WHERE dv.idventa='$idventa'";
	return ejecutarConsulta($sql);
}

//listar registros
public function listar(){
	$sql="SELECT v.idventa,DATE(v.fecha_hora) as fecha,v.idcliente,p.nombre as cliente,u.idusuario,u.nombre as usuario, v.tipo_comprobante,v.serie_comprobante,v.num_comprobante,v.total_venta,v.impuesto,v.estado FROM venta v INNER JOIN persona p ON v.idcliente=p.idpersona INNER JOIN usuario u ON v.idusuario=u.idusuario ORDER BY v.idventa DESC";
	return ejecutarConsulta($sql);
}


public function ventacabecera($idventa){
	//$sql= "SELECT v.idventa, v.idcliente, p.nombre AS cliente, p.direccion, p.tipo_documento, p.num_documento, p.email, p.telefono, v.idusuario, u.nombre AS usuario, v.tipo_comprobante, v.serie_comprobante, v.num_comprobante, DATE(v.fecha_hora) AS fecha, v.impuesto, v.total_venta FROM venta v INNER JOIN persona p ON v.idcliente=p.idpersona INNER JOIN usuario u ON v.idusuario=u.idusuario WHERE v.idventa='$idventa'";
	
	$sql="SELECT v.idventa, v.idcliente, p.nombre AS cliente, p.direccion, p.tipo_documento, p.num_documento, p.email, p.telefono, v.idusuario, u.nombre AS usuario, v.tipo_comprobante, v.serie_comprobante, v.num_comprobante, DATE(v.fecha_hora) AS fecha, v.impuesto, v.total_venta,ve.nombre as vendedor FROM venta v INNER JOIN persona p ON v.idcliente=p.idpersona INNER JOIN usuario u ON v.idusuario=u.idusuario INNER JOIN vendedor ve ON ve.idvendedor=v.idvendedor WHERE v.idventa='$idventa'";
	return ejecutarConsulta($sql);
}

public function ventadetalles($idventa){
	$sql="SELECT a.nombre AS articulo, a.codigo, a.exento, d.cantidad, d.precio_venta, d.descuento, (d.cantidad*d.precio_venta-d.descuento) AS subtotal FROM detalle_venta d INNER JOIN articulo a ON d.idarticulo=a.idarticulo WHERE d.idventa='$idventa'";
         return ejecutarConsulta($sql);
}


}

 ?>
