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


	//implementamos nuestro constructor
public function __construct(){

}

//metodo insertar registro
public function insertar($idcliente,$idusuario,$tipo_comprobante,$serie_comprobante,$num_comprobante,$fecha_hora,$impuesto,
$total_venta,$total_ventad,$total_ventai,$total_ventaid,$idtransportista,$idvendedor,$tasa_dollar,$idclientedespacho,$idtransporte,$pesof,$cajasf,$capacidadf,$idarticulo,$cantidad,$precio_venta,$descuento,$nrolote,$idpedidosolo,$idalmacen,$impoart18,$precio_ventapvp){
	$sql="INSERT INTO ordendecompra (idcliente,idusuario,tipo_comprobante,serie_comprobante,num_comprobante,fecha_hora,impuesto,total_venta,total_ventad,total_ventaimpuesto,total_ventaimpuestod,estado,idtransportista,tasa_dollar,idclientedespacho,idvendedor,idtransporte,idtransportec,pesof,cajasf,capacidadf) 
	VALUES ('$idcliente','$idusuario','$tipo_comprobante','$serie_comprobante','$num_comprobante','$fecha_hora','$impuesto','$total_venta','$total_ventad','$total_ventai','$total_ventaid','Pendiente','$idtransportista','$tasa_dollar','$idclientedespacho','$idvendedor','$idtransporte','$idtransporte','$pesof','$cajasf','$capacidadf')";
	//return ejecutarConsulta($sql);
	//echo $sql;
	$idordendecompranew		=ejecutarConsulta_retornarID($sql);
	$num_elementos	=0;
	$num_pedidos	=0;
	$pedido 		=0;
	$pedidoactual	=0;
	$sw				=true;
	
	while ($num_elementos < count($idarticulo)) {
		//Se verifica si es un articulo o un servicio
		if ($nrolote[$num_elementos]=='N/A'){
			//Solo para Fisioterapeuta
			$sql_detalles="INSERT INTO detalle_servicio (idordendecompra, idservicio, idcita, cantidad, precio_venta, descuento) VALUES ('$idordendecompranew','$idarticulo[$num_elementos]','$idpedidosolo[$num_elementos]','$cantidad[$num_elementos]','$precio_venta[$num_elementos]','$descuento[$num_elementos]')";
			
			//$sql_detalles="INSERT INTO detalle_servicio (idordendecompra, idservicio, cantidad, precio_venta, descuento) VALUES ('$idordendecompranew','$idarticulo[$num_elementos]','$cantidad[$num_elementos]','$precio_venta[$num_elementos]','$descuento[$num_elementos]')";
			//echo $sql_detalles;
			ejecutarConsulta($sql_detalles) or $sw=false;
		}else{
			$sql_lote 	= "SELECT idlote, idarticulo, numerolote, fecha, cantidad FROM lote WHERE idarticulo='$idarticulo[$num_elementos]'";
			//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_ordendecompra (idordendecompra,idarticulo,cantidad,precio_venta,descuento,numerolote,idalmacen,impuestoart18,preciopvp) VALUES('$idordendecompranew','$idarticulo[$num_elementos]','$cantidadl','$precio_venta[$num_elementos]','$descuento[$num_elementos]','$numerolote','$idalmacen[$num_elementos]','$impoart18[$num_elementos]','$precio_ventapvp[$num_elementos]')";
						//echo $sql_detalle;
						ejecutarConsulta($sql_detalle) or $sw=false;
					}else{
						$sql_detalle="INSERT INTO detalle_ordendecompra (idordendecompra,idarticulo,cantidad,precio_venta,descuento,numerolote,idalmacen,impuestoart18,preciopvp) VALUES('$idordendecompranew','$idarticulo[$num_elementos]','$cantidadi','$precio_venta[$num_elementos]','$descuento[$num_elementos]','$numerolote','$idalmacen[$num_elementos]','$impoart18[$num_elementos]','$precio_ventapvp[$num_elementos]')";
						//echo $sql_detalle;
						ejecutarConsulta($sql_detalle) or $sw=false;
						break;
					}
				}   
			} else {
				die("Error: No hay datos en la tabla seleccionada");
			}
			//echo ' Pedido : '.$idpedidosolo[$num_elementos];
			//Se actualiza el pedido si lo hay
			$pedidonro=$idpedidosolo[$num_elementos]*1;
			if ($pedidonro>0){
				$sql_update_pedido	= "UPDATE detalle_pedido 
				SET cantidad_facturada=cantidad_facturada+$cantidad[$num_elementos], 
				backorder= 
				CASE 
					WHEN backorder-$cantidad[$num_elementos]<=0 THEN 0 
					ELSE backorder-$cantidad[$num_elementos]
				END 
				WHERE idarticulo='$idarticulo[$num_elementos]' AND idpedido='$idpedidosolo[$num_elementos]'";
				//echo $sql_update_pedido;
				ejecutarConsulta($sql_update_pedido) or $sw=false;
				// Se verifica el estado del pedido
				$sql_update_estado = "UPDATE pedido p SET p.estado = 
				CASE 
					WHEN (SELECT SUM(de.backorder) FROM detalle_pedido de WHERE de.idpedido='$pedidonro' > 0) AND (SELECT SUM(de.cantidad_facturada) FROM detalle_pedido de WHERE de.idpedido='$pedidonro' <= 0) THEN 'Pendiente' 
					WHEN (SELECT SUM(de.backorder) FROM detalle_pedido de WHERE de.idpedido='$pedidonro' > 0) AND (SELECT SUM(de.cantidad_facturada) FROM detalle_pedido de WHERE de.idpedido='$pedidonro' > 0) THEN 'Parcial' 
					WHEN (SELECT SUM(de.backorder) FROM detalle_pedido de WHERE de.idpedido='$pedidonro' <= 0) AND (SELECT SUM(de.cantidad_facturada) FROM detalle_pedido de WHERE de.idpedido='$pedidonro' > 0) THEN 'Facturado' 
					ELSE 'NO' END WHERE p.idpedido='$pedidonro'"; 
				ejecutarConsulta($sql_update_estado) or $sw=false;
				//
			}
		}
		$num_elementos=$num_elementos+1;	   
	}
	if ($sw) {
		// Actualizamos los numeros de facturas
		$idempresa_venta 		= 	$_SESSION['idempresa_venta_empresa'];
		$nrocontrolnotaentrega	=	$num_comprobante + 1;
		$nronotaentrega			=	$serie_comprobante + 1;
			$sql_update		=	"UPDATE empresa_venta SET nronotaentrega='$nronotaentrega',nrocontrolnotaentrega='$nrocontrolnotaentrega'
			WHERE idempresa_venta='$idempresa_venta'";
		//	echo $sql_update;
		ejecutarConsulta($sql_update);
	}

	return $sw;
	
}

public function anular($idordendecompra){
	$sql="UPDATE ordendecompra SET estado='Anulado' WHERE idordendecompra='$idordendecompra'";
	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($idordendecompra){
	$sql="SELECT v.idordendecompra,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.idtransporte,v.idtransportista,v.idvendedor, v.idtransportec,v.tipo_comprobante,v.serie_comprobante,v.num_comprobante,v.total_venta,v.impuesto,v.estado,v.pesof,v.cajasf,v.capacidadf FROM ordendecompra v INNER JOIN persona p ON v.idcliente=p.idpersona INNER JOIN usuario u ON v.idusuario=u.idusuario WHERE idordendecompra='$idordendecompra'";
	return ejecutarConsultaSimpleFila($sql);
}

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

//listar registros
public function listar(){
	//fisioterapia
	//$sql="SELECT v.idventa,DATE(v.fecha_hora) as fecha,v.idcliente, CONCAT(p.nombre1,' ',p.apellido1) 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 ordendecompra v INNER JOIN registro p ON v.idcliente=p.idpaciente INNER JOIN usuario u ON v.idusuario=u.idusuario ORDER BY v.idordendecompra DESC";
	//
	$sql="SELECT v.idordendecompra,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 ordendecompra v INNER JOIN persona p ON v.idcliente=p.idpersona INNER JOIN usuario u ON v.idusuario=u.idusuario ORDER BY v.idordendecompra DESC";
	return ejecutarConsulta($sql);
}

public function listarf(){
	//fisioterapia
	$sql="SELECT v.idordendecompra,DATE(v.fecha_hora) as fecha,v.idcliente, CONCAT(p.nombre1,' ',p.apellido1) 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 ordendecompra v INNER JOIN registro p ON v.idcliente=p.idpaciente INNER JOIN usuario u ON v.idusuario=u.idusuario ORDER BY v.idordendecompra DESC";
	//
	//$sql="SELECT v.idordendecompra,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 ordendecompra v INNER JOIN persona p ON v.idcliente=p.idpersona INNER JOIN usuario u ON v.idusuario=u.idusuario ORDER BY v.idordendecompra DESC";
	return ejecutarConsulta($sql);
}


public function ventacabecera($idordendecompra){
	$sql= "SELECT v.idordendecompra, v.idcliente, p.nombre AS cliente,d.nombred as cliented, p.direccion,d.direcciond,p.licencia_licor,d.licencia_licord, p.tipo_documento,d.tipo_documentod, p.num_documento, d.num_documentod, p.email, d.emaild, p.telefono,d.telefonod, p.resenaendollar, v.idusuario, ve.nombre AS vendedor, v.tipo_comprobante, v.serie_comprobante, v.num_comprobante, DATE(v.fecha_hora) AS fecha, v.impuesto, v.total_venta, v.tasa_dollar, t.nombre as nombretransporte, t.vehiculo, t.placa FROM ordendecompra v INNER JOIN persona p ON v.idcliente=p.idpersona LEFT JOIN despacho d ON v.idclientedespacho=d.idclientedespacho LEFT JOIN usuario u ON v.idusuario=u.idusuario LEFT JOIN transportista t ON t.idtransportista=v.idtransportista LEFT JOIN vendedor ve ON ve.idvendedor=v.idvendedor WHERE v.idordendecompra='$idordendecompra'";
	return ejecutarConsulta($sql);
}

public function ventacabecerafisioterapia($idordendecompra){
	$sql= "SELECT v.idordendecompra, v.idcliente, p.nombre1 AS cliente,p.apellido1 AS cliented, p.direccion,p.direccion as direcciond,'N/A' AS licencia_licor,'N/A' AS licencia_licord, 'CEDULA' AS tipo_documento, 'CEDULA' AS tipo_documentod, p.ci AS num_documento, p.ci as num_documentod,p.email, p.email AS emaild, p.telefonocel AS telefono,p.telefonohab AS telefonod, 'si' AS resenaendollar, v.idusuario, u.nombre AS vendedor, v.tipo_comprobante, v.serie_comprobante, v.num_comprobante, DATE(v.fecha_hora) AS fecha, v.impuesto, v.total_venta, v.tasa_dollar, 'N/A' as nombretransporte, 'N/A' as vehiculo, 'N/A' as placa FROM ordendecompra v INNER JOIN registro p ON v.idcliente=p.idpaciente LEFT JOIN despacho d ON v.idclientedespacho=d.idclientedespacho LEFT JOIN usuario u ON v.idusuario=u.idusuario WHERE v.idordendecompra='$idordendecompra'";
	return ejecutarConsulta($sql);
}

public function ventadetalles($idordendecompra){
	$sql="SELECT a.nombre AS articulo, a.codigo, d.cantidad as cajas, f.factorconversion as unidadesxcaja, (f.factorconversion*d.cantidad) as unidades, a.unidademedidad as capacidad, (f.factorconversion*d.cantidad*a.unidademedidad) as litro, a.gradoalcohol, d.precio_ordendecompra, d.impuestoart18 as impuestoart16, (d.cantidad*d.precio_venta+d.descuento) AS subtotal, d.porcentaje, c.idcategoriadeunidades, c.nombre, u.idunidademedidad, u.nombre, a.exento, t.codigotipoarticulo,al.porcentaje as alicuota,d.preciopvp FROM detalle_ordendecompra d INNER JOIN articulo a ON d.idarticulo=a.idarticulo INNER JOIN categoriadeunidades c ON c.idcategoriadeunidades=a.idcategoriadeunidades INNER JOIN unidademedidad u ON u.idunidademedidad=a.idunidademedidad INNER JOIN factorunidademedidad f ON f.idfactorunidademedidad=a.idfactorunidademedidad INNER JOIN tipoarticulo t ON t.idtipoarticulo=a.idtipoarticulo INNER JOIN alicuota al ON al.idalicuota=a.idalicuota WHERE d.idordendecompra='$idordendecompra'";
    return ejecutarConsulta($sql);
}

public function ventadetallesfisioterapia($idordendecompra){
	$sql="SELECT a.descripcion AS articulo, a.codigo, d.cantidad as cajas, 1 as unidadesxcaja, 1 as unidades, 1 as capacidad, 1 as litro, 0 as gradoalcohol, d.precio_venta, 0 as impuestoart16, ((d.cantidad*d.precio_venta)-d.descuento) AS subtotal, d.porcentaje, 1 as idcategoriadeunidades, 'N/A' as nombre, 1 as idunidademedidad, 'N/A' as nombre, a.exento, 'N/A' as codigotipoarticulo,0 as alicuota,0 as preciopvp,c.fecha,c.descripcion,f.nombre as fisioterapeuta FROM detalle_servicio d INNER JOIN servicio a ON d.idservicio=a.idservicio INNER JOIN citas c ON d.idcita=c.id RIGHT JOIN fisioterapeuta f ON c.idfisioterapeuta=f.idfisioterapeuta WHERE d.idordendecompra='$idordendecompra'";
    return ejecutarConsulta($sql);
}

public function ventatasacambio(){
	$sql="SELECT tasa_dollar,tasa_euro FROM empresa_tasacambio WHERE idempresa='1'";
    return ejecutarConsulta($sql);
}

public function listarFacturas($idcliente){
	$sql="SELECT v.idordendecompra,v.idalmacen,v.idcliente,v.idusuario,v.idtransportista,v.idclientedespacho,v.tipo_comprobante,v.serie_comprobante,v.num_comprobante,v.fecha_hora,v.total_ventaimpuesto as precio,v.total_ventaimpuestod as preciod,v.estado FROM ordendecompra v WHERE v.idcliente='$idcliente' AND v.estado<>'Anulado' ORDER BY v.serie_comprobante DESC";
	return ejecutarConsulta($sql);
}

}

 ?>
