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


class Escritoriod{


	//implementamos nuestro constructor
public function __construct(){

}

//listar registros
public function comprasfecha($fecha_inicio,$fecha_fin){
	$sql="SELECT DATE(i.fecha_hora) as fecha, u.nombre as usuario, p.nombre as proveedor, i.tipo_comprobante, i.serie_comprobante, i.num_comprobante, i.total_compra,i.impuesto,i.estado FROM ingreso i INNER JOIN persona p ON i.idproveedor=p.idpersona INNER JOIN usuario u ON i.idusuario=u.idusuario WHERE DATE(i.fecha_hora)>='$fecha_inicio' AND DATE(i.fecha_hora)<='$fecha_fin'";
	return ejecutarConsulta($sql);
}


public function ventasfechacliente($fecha_inicio,$fecha_fin,$idcliente){
	$sql="SELECT DATE(v.fecha_hora) as fecha, u.nombre as usuario, p.nombre as cliente, 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 DATE(v.fecha_hora)>='$fecha_inicio' AND DATE(v.fecha_hora)<='$fecha_fin' AND v.idcliente='$idcliente'";
	return ejecutarConsulta($sql);
}

public function totalcomprahoy(){
	$sql="SELECT IFNULL(SUM(total_compra),0) as total_compra FROM ingreso WHERE DATE(fecha_hora)=curdate()";
	return ejecutarConsulta($sql);
}

public function totalventahoy(){
	$sql="SELECT IFNULL(SUM(total_venta),0) as total_venta FROM venta WHERE DATE(fecha_hora)=curdate()";
	return ejecutarConsulta($sql);
}

public function totalcomprayear(){
	$sql="SELECT IFNULL(SUM(total_compraid),0) as total_compra,YEAR(fecha_hora) AS ano FROM ingreso WHERE YEAR(fecha_hora)=YEAR(curdate()) AND estado<>'Anulado'";
	return ejecutarConsulta($sql);
}

public function totalventayear(){
	$sql="SELECT IFNULL(SUM(total_ventaimpuestod),0) as total_venta,YEAR(fecha_hora) AS ano FROM venta WHERE YEAR(fecha_hora)=YEAR(curdate()) AND estado<>'Anulado'";
	return ejecutarConsulta($sql);
}

public function totalcuentasporpagar(){
	$sql="SELECT @cuentasporpagar := (SELECT IFNULL(SUM(total_compraid),0) as total_compra FROM ingreso WHERE estado<>'Anulado' AND estado<>'Pagada')-(SELECT IFNULL(SUM(total_pago),0) as total_pagos FROM pagos p INNER JOIN detalle_pagos d ON d.idpagocliente=p.idpagoproveedor INNER JOIN ingreso i ON i.idingreso=d.iddocumento WHERE i.estado<>'Anulado' AND i.estado<>'Pagada') as cuentasporpagar";
	return ejecutarConsulta($sql);
}

public function totalcuentasporcobrar(){
	$sql="SELECT @cuentasporcobrar := (SELECT SUM(vt.saldod) as saldod FROM persona p 	INNER JOIN (SELECT v.idcliente, SUM( IF (v.montopendiente>0,v.montopendiente,v.total_ventaimpuesto+v.montoigtfporcentaje/v.tasa_dollar-(v.montocxc*v.tasa_dollar)-(v.montodev*v.tasa_dollar)) ) as saldo, SUM( IF (v.montopendiente>0,v.montopendiente/v.tasa_dollar,IF(v.total_ventaimpuesto=0,0,(v.total_ventaimpuesto/v.tasa_dollar+v.montoigtfporcentaje))-v.montocxc-v.montodev) ) as saldod, SUM(IF((v.estado='Pendiente' OR v.estado='Parcial'),1,0)) as nrodocumento, v.fecha_hora,MIN(IF(v.estado='Pendiente' OR v.estado='Parcial',v.num_comprobante1,999999999)) as num_comprobante1,v.montocxc,v.montodev,IF(v.montocxc+v.montodev>0,'si','no') as notacredito1, DATE_FORMAT(MIN(v.fecha_hora),'%d-%m-%Y') as fecha,@curRank := @curRank + 1 AS rank 	FROM venta v,	(SELECT @curRank := 0) q 	WHERE (v.estado='Parcial' OR v.estado='Pendiente')	GROUP BY v.idcliente	UNION ALL	SELECT v.idcliente, SUM(IF(v.montopendiente>0,v.montopendiente,v.total_credito)) as saldo, 	SUM(IF(v.montopendiente>0,v.montopendiente/v.tasa_dollar,IF(v.total_creditod=0,0,v.total_creditod))) as saldod, v.num_notadebito as nrodocumento, 	v.fecha_hora,	v.num_notadebito as num_comprobante1,	0 as montocxc, 	0 as montodev,	'no' as notacredito1, DATE_FORMAT(MIN(v.fecha_hora),'%d-%m-%Y') as fecha,@curRank := @curRank + 1 AS rank 	FROM notadebito v, 	(SELECT @curRank := 0) q 	WHERE (v.estado='Parcial' OR v.estado='Pendiente')	GROUP BY v.idcliente) vt ON vt.idcliente=p.idpersona	WHERE p.tipo_persona='Cliente') as cuentasporcobrar";
	return ejecutarConsulta($sql);
}

public function totalcuentasporcobrarc($idusuario){
	$sql="SELECT @cuentasporcobrar := (SELECT SUM(vt.saldod) as saldod FROM persona p INNER JOIN (SELECT v.idcliente, SUM( IF (v.montopendiente>0,v.montopendiente,v.total_ventaimpuesto+v.montoigtfporcentaje/v.tasa_dollar-(v.montocxc*v.tasa_dollar)-(v.montodev*v.tasa_dollar)) ) as saldo, SUM( IF (v.montopendiente>0,v.montopendiente/v.tasa_dollar,IF(v.total_ventaimpuesto=0,0,(v.total_ventaimpuesto/v.tasa_dollar+v.montoigtfporcentaje))-v.montocxc-v.montodev) ) as saldod, SUM(IF((v.estado='Pendiente' OR v.estado='Parcial'),1,0)) as nrodocumento, v.fecha_hora,MIN(IF(v.estado='Pendiente' OR v.estado='Parcial',v.num_comprobante1,999999999)) as num_comprobante1,v.montocxc,v.montodev,IF(v.montocxc+v.montodev>0,'si','no') as notacredito1, DATE_FORMAT(MIN(v.fecha_hora),'%d-%m-%Y') as fecha,@curRank := @curRank + 1 AS rank 	FROM venta v,	(SELECT @curRank := 0) q 	WHERE (v.estado='Parcial' OR v.estado='Pendiente')	GROUP BY v.idcliente	UNION ALL	SELECT v.idcliente, SUM(IF(v.montopendiente>0,v.montopendiente,v.total_credito)) as saldo, 	SUM(IF(v.montopendiente>0,v.montopendiente/v.tasa_dollar,IF(v.total_creditod=0,0,v.total_creditod))) as saldod, v.num_notadebito as nrodocumento, 	v.fecha_hora,	v.num_notadebito as num_comprobante1,	0 as montocxc, 	0 as montodev,	'no' as notacredito1, DATE_FORMAT(MIN(v.fecha_hora),'%d-%m-%Y') as fecha,@curRank := @curRank + 1 AS rank 	FROM notadebito v, 	(SELECT @curRank := 0) q 	WHERE (v.estado='Parcial' OR v.estado='Pendiente')	GROUP BY v.idcliente) vt ON vt.idcliente=p.idpersona INNER JOIN relacionvendedorusuario r ON r.idvendedor=p.idvendedor	WHERE p.tipo_persona='Cliente' AND r.idusuario='$idusuario') as cuentasporcobrar";
	return ejecutarConsulta($sql);
}

public function totalinventariounidades(){
	//$sql="SELECT IFNULL(SUM(stock),0) as total_cajas FROM articulo WHERE condicion='1'";
	$sql="SELECT SUM(i.stock) AS total_cajas FROM articulosporalmacen i INNER JOIN articulo a ON a.idarticulo=i.idarticulo	WHERE a.tipoproducto='Negocio' AND i.stock>0;";
	return ejecutarConsulta($sql);
}

public function totalinventariounidadespendiente(){
	//$sql="SELECT IFNULL(SUM(stock),0) as total_cajas FROM articulo WHERE condicion='1'";
	$sql="SELECT v.idventa, v.estado, IF(l.estado IS null,IF(v.estado='Parcial','Pendiente',v.estado),l.estado) as estadol,SUM(d.cantidad-d.cantidadev) as total_cajaspendiente	FROM venta v INNER JOIN detalle_venta d ON d.idventa=v.idventa	LEFT JOIN logisticadespacho l ON l.idventa=v.idventa WHERE v.estado<>'Anulado' AND v.estado<>'Pagada' AND v.tipo_comprobante<>'Regalo' AND v.fecha_hora>='2023-01-01' AND (((IF(l.estado IS null,IF(v.estado='Parcial','Pendiente',v.estado),l.estado))='EnTransito') OR ((IF(l.estado IS null,IF(v.estado='Parcial','Pendiente',v.estado),l.estado))='Pendiente')) ORDER BY v.idventa DESC";
	return ejecutarConsulta($sql);
}


public function totalinventariomonto(){
	$sql="SELECT IFNULL(SUM(stock*preciod),0) as total_inventario FROM articulo WHERE condicion='1'";
	return ejecutarConsulta($sql);
}

//Total pedidod de un usuario
public function totalpedidospendiente($idusuario){
	$sql="SELECT COUNT(p.idpedido) as nropedidos FROM pedido p INNER JOIN persona pe ON pe.idpersona=p.idcliente INNER JOIN relacionvendedorusuario r ON r.idvendedor=pe.idvendedor WHERE p.estado='Pendiente' AND r.idusuario='$idusuario'";
	return ejecutarConsulta($sql);
}

public function comprasultimos_10dias(){
	$sql="SELECT CONCAT(DAY(fecha_hora),'-',MONTH(fecha_hora),'-',YEAR(fecha_hora)) AS fecha, SUM(total_compraid) AS total FROM ingreso GROUP BY fecha_hora ORDER BY fecha_hora DESC LIMIT 0,10";
	return ejecutarConsulta($sql);
}

public function ventasultimos_12meses(){
	$sql="SELECT CONCAT(mes(fecha_hora,'es_ES'),'-',YEAR(fecha_hora)) AS fecha,SUM(total_ventaimpuestod) AS total,SUM(v1.deudad) AS total1,MONTH(fecha_hora) as mes,YEAR(fecha_hora) as ano FROM venta v LEFT JOIN (SELECT vt.idventa,vt.num_comprobante1,p.idpersona as idcliente,p.nombre,p.num_documento as rif_ci,SUM(vt.deuda) AS deuda, SUM(vt.deudad) AS deudad, SUM(vt.pagado) as pagado,	SUM(vt.pagadod) as pagadod, 	SUM(vt.saldo) as saldo, 	SUM(vt.saldod) as saldod, vt.notacredito,		vt.fecha  as fecha,	MIN(vt.fechanumero) as fechanumero, vt.rank AS rank, sum(vt.montoigtf) as montoigtf, SUM(vt.montoigtfporcentaje) as montoigtfporcentaje,SUM(vt.nrodocumento) as nrodocumento  FROM ((SELECT v.idventa,v.num_comprobante1,v.idcliente as idcliente, IF(v.tipo_comprobante='Regado',0,( SUM(IF(v.estado='Anulado',0,IF((v.total_ventaimpuestod-v.montocxc-v.montodev)<=0,0,v.total_ventaimpuesto-v.montocxc*v.tasa_dollar-v.montodev*v.tasa_dollar+v.montoigtfporcentaje*v.tasa_dollar))))) AS deuda, IF(v.tipo_comprobante='Regalo',0,(SUM(IF(v.estado='Anulado',0,IF((v.total_ventaimpuestod-v.montocxc-v.montodev)<=0,0,v.total_ventaimpuestod-v.montocxc-v.montodev)))+SUM(v.montoigtfporcentaje))) AS deudad, IF(v.tipo_comprobante='Regalo',0,(SUM(IF(v.estado='Pagada',v.total_ventaimpuesto+v.montoigtfporcentaje/v.tasa_dollar,IF(v.estado='Parcial',v.total_ventaimpuesto-v.montocxc*v.tasa_dollar-v.montodev*v.tasa_dollar+v.montoigtfporcentaje*v.tasa_dollar-v.montopendiente,0))))) as pagado,	IF(v.tipo_comprobante='Regalo',0,(SUM(IF(v.estado='Pagada',v.total_ventaimpuestod+v.montoigtfporcentaje-v.montocxc-v.montodev,IF(v.estado='Parcial',v.total_ventaimpuestod-v.montocxc-v.montodev+v.montoigtfporcentaje-(v.montopendiente/v.tasa_dollar),0))))) as pagadod, 	 IF(v.tipo_comprobante='Regalo',0,(SUM(IF(v.estado='Pendiente', v.total_ventaimpuesto+v.montoigtfporcentaje/v.tasa_dollar-v.montocxc*v.tasa_dollar-v.montodev*v.tasa_dollar,IF(v.estado='Parcial',v.montopendiente,0))))) as saldo,IF(v.tipo_comprobante='Regalo',0,(SUM(IF(v.estado='Pendiente', v.total_ventaimpuestod+v.montoigtfporcentaje-v.montocxc-v.montodev,IF(v.estado='Parcial',v.montopendiente/v.tasa_dollar,0))))) as saldod, 	IF(v.montocxc+v.montodev>0,'si','no') as notacredito,		 DATE_FORMAT(MIN(IF(v.estado='Pendiente',v.fecha_hora,IF(v.estado='Parcial',v.fecha_hora,'2121-01-01'))),'%d-%m-%Y')  as fecha,	DATEDIFF(MIN(IF(v.estado='Pendiente',v.fecha_hora,IF(v.estado='Parcial',v.fecha_hora,'2121-01-01'))),'1899-12-30') as fechanumero, v.fecha_hora,IF((SUM(IF(v.estado='Pendiente', v.total_ventaimpuesto-v.montocxc*v.tasa_dollar-v.montodev*v.tasa_dollar,IF(v.estado='Parcial',v.montopendiente-v.montocxc*v.tasa_dollar-v.montodev*v.tasa_dollar,0))))=0,0,@curRank := @curRank + 1) AS rank, sum(v.montoigtf) as montoigtf, SUM(v.montoigtfporcentaje) as montoigtfporcentaje,COUNT(v.idventa) as nrodocumento FROM venta v, (SELECT @curRank := 0) q  GROUP BY v.idventa UNION ALL SELECT v.idnotadebito+100000 as idventa,v.numcontrol_notadebito+10000000 AS num_comprobante1,v.idcliente as idcliente, SUM(IF(v.estado='Anulado',0,v.total_credito)) AS deuda, SUM(IF(v.estado='Anulado',0,v.total_creditod)) AS deudad, SUM(IF(v.estado='Pagada',v.total_credito,IF(v.estado='Parcial',v.total_credito-v.montopendiente,0))) as pagado,	SUM(IF(v.estado='Pagada',v.total_creditod,IF(v.estado='Parcial',v.total_creditod-(v.montopendiente/v.tasa_dollar),0))) as pagadod, SUM(IF(v.estado='Pendiente', v.total_credito,IF(v.estado='Parcial',v.montopendiente,0))) as saldo, 	 SUM(IF(v.estado='Pendiente', v.total_creditod,IF(v.estado='Parcial',v.montopendiente/v.tasa_dollar,0))) as saldod, 'no' as notacredito, DATE_FORMAT(MIN(IF(v.estado='Pendiente',v.fecha_hora,IF(v.estado='Parcial',v.fecha_hora,'2121-01-01'))),'%d-%m-%Y')  as fecha,	DATEDIFF(MIN(IF(v.estado='Pendiente',v.fecha_hora,IF(v.estado='Parcial',v.fecha_hora,'2121-01-01'))),'1899-12-30') as fechanumero, v.fecha_hora, IF((SUM(IF(v.estado='Pendiente', v.total_creditod,IF(v.estado='Parcial',v.montopendiente,0))))=0,0,@curRank := @curRank + 1) AS rank, 0 as montoigtf, 0 as montoigtfporcentaje,COUNT(v.idventa) as nrodocumento  FROM notadebito v,(SELECT @curRank := 0) q  GROUP BY v.idnotadebito)) vt LEFT JOIN persona p ON p.idpersona=vt.idcliente GROUP BY vt.idventa	ORDER BY vt.idventa ASC) v1 ON v1.idventa=v.idventa	GROUP BY YEAR(fecha_hora),MONTH(fecha_hora) ORDER BY YEAR(fecha_hora) DESC,MONTH(fecha_hora) DESC LIMIT 12";
	return ejecutarConsulta($sql);
}

public function saldocajachica(){
	//$sql="SELECT SUM(montob) as saldob, SUM(montod) as saldod FROM saldocajachica";
	$sql="SELECT SUM(montob) as saldob, SUM(montod) as saldod FROM saldodecuentas WHERE idbancocuenta='3'";
//	return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function saldofacebank(){
	$sql="SELECT SUM(montob) as saldob, SUM(montod) as saldod FROM saldofacebank";
//	return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function movimientosdeldia($idbancocuenta){
	$sql="SELECT SUM(IF(tiporegistro='CARGO' OR tiporegistro='PAGO',montod*-1,montod)) AS movimientosdeldia FROM detallederegistrodecuentas WHERE fecha=CURDATE() AND idbancocuenta='$idbancocuenta'";
	return ejecutarConsulta($sql);

}

public function movimientosdelmes($idbancocuenta){
	$sql="SELECT SUM(IF(tiporegistro='CARGO' OR tiporegistro='PAGO',montod*-1,montod)) AS movimientosdelmes FROM detallederegistrodecuentas WHERE MONTH(fecha) = MONTH(CURRENT_DATE()) AND idbancocuenta='$idbancocuenta'";
	return ejecutarConsulta($sql);
}

public function cargosdelmes($idbancocuenta){
	$sql="SELECT SUM(IF(montod is null,0,montod)) AS cargosdelmes FROM detallederegistrodecuentas WHERE MONTH(fecha) = MONTH(CURRENT_DATE()) AND tiporegistro='CARGO' AND idbancocuenta='$idbancocuenta'";
	return ejecutarConsulta($sql);
}


public function ultimos10movimiento($idbancocuenta){
	$sql="SELECT idregistrodecuentas,fecha,detalle,IF(tiporegistro='CARGO' OR tiporegistro='PAGO',montod*-1,montod) AS monto,tiporegistro,estado FROM detallederegistrodecuentas WHERE idbancocuenta='$idbancocuenta' ORDER BY fecha DESC, idregistrodecuentas DESC LIMIT 10";
	return ejecutarConsulta($sql);
}

public function cuentasporpagarmasvieja(){
	$sql="SELECT 
	p.idpersona as idproveedor, 
	p.nombre, 
	p.num_documento as rif_ci,	
	SUM(v.total_compraid) as deudasinretenciones,	
	SUM(IF(v.estado<>'Aceptado',IF(v.estado<>'Parcial',0,(v.total_comprad+(v.total_compraid-v.total_comprad-(IF(p.agenteretencion='si',(v.total_compraid-v.total_comprad)*(p.agenteretencionp/100),0)))-(IF(v.islr='si',v.total_comprad*i.porcentaje,0)))),v.total_comprad+(v.total_compraid-v.total_comprad-(IF(p.agenteretencion='si',(v.total_compraid-v.total_comprad)*(p.agenteretencionp/100),0)))-(IF(v.islr='si',v.total_comprad*i.porcentaje,0))))+v.montoigtfporcentaje AS deuda, SUM(IF (v.estado='Aceptado', 0, IF(v.estado='Anulado',0,IF(v.montopendiente>0,(v.total_comprad+(v.total_compraid-v.total_comprad-(IF(p.agenteretencion='si',(v.total_compraid-v.total_comprad)*(p.agenteretencionp/100),0)))-(IF(v.islr='si',v.total_comprad*i.porcentaje,0)))-v.montopendiente,(v.total_comprad+(v.total_compraid-v.total_comprad-(IF(p.agenteretencion='si',(v.total_compraid-v.total_comprad)*(p.agenteretencionp/100),0)))-(IF(v.islr='si',v.total_comprad*i.porcentaje,0))))))) as pagado, 
	SUM(IF (v.estado<>'Pagada',IF(v.estado='Anulado',0,IF (v.montopendiente>0,v.montopendiente,(v.total_comprad+(v.total_compraid-v.total_comprad-(IF(p.agenteretencion='si',(v.total_compraid-v.total_comprad)*(p.agenteretencionp/100),0)))-(IF(v.islr='si',v.total_comprad*i.porcentaje,0))))),0))+v.montoigtfporcentaje as saldo,
	v.num_suministro,
	DATE_FORMAT(MIN(v.fecha_hora),'%d-%m-%Y') as  fechamasantigua,
	DATEDIFF(MIN(IF(v.estado='Aceptado',v.fecha_hora,IF(v.estado='Parcial',v.fecha_hora,'2121-01-01'))),'1899-12-30') as fechanumero,
	MIN(IF(v.estado='Aceptado',v.fecha_hora,IF(v.estado='Parcial',v.fecha_hora,'2121-01-01'))) AS fechaminima	
	FROM persona p 
	INNER JOIN ingreso v ON p.idpersona=v.idproveedor	
	LEFT JOIN impuestosrl i ON i.idimpuestoslr=v.idimpuestoslr	
	WHERE 
	(p.tipo_persona='Proveedor' OR p.tipo_persona='Proveedorinsumos' OR p.tipo_persona='Proveedorfabricante') AND 
	v.num_suministro=''  AND 
	v.estado<>'Pagada'	
	GROUP BY p.idpersona	
	ORDER by (SUM(IF (v.estado<>'Pagada',IF(v.estado='Anulado',0,IF (v.montopendiente>0,v.montopendiente,(v.total_comprad+(v.total_compraid-v.total_comprad-(IF(p.agenteretencion='si',(v.total_compraid-v.total_comprad)*(p.agenteretencionp/100),0)))-(IF(v.islr='si',v.total_comprad*i.porcentaje,0))))),0))+v.montoigtfporcentaje) DESC, (DATEDIFF(MIN(IF(v.estado='Aceptado',v.fecha_hora,IF(v.estado='Parcial',v.fecha_hora,'2121-01-01'))),'1899-12-30')) ASC LIMIT 10";
	return ejecutarConsulta($sql);
}

public function cuentasporcobrarmasvieja(){
	$sql="SELECT 
	p.idpersona as idcliente,
	p.nombre, 
	p.num_documento as rif_ci, 
	SUM(vt.saldo) as saldo, 
	SUM(vt.saldod) as saldod, 
	vt.nrodocumento, 
	DATE_FORMAT(MIN(vt.fecha_hora),'%d-%m-%Y') as fecha,
	vt.num_comprobante1,
	SUM(vt.montocxc) as montocxc,
	SUM(vt.montodev) as montodev, 
	IF(vt.notacredito1='si','si','no') as notacredito, 
	DATEDIFF(vt.fecha_hora,'1899-12-30') as fechanumero	
	FROM persona p 	
	INNER JOIN (SELECT v.idcliente, SUM( IF (v.montopendiente>0,v.montopendiente,v.total_ventaimpuesto+v.montoigtfporcentaje/v.tasa_dollar-(v.montocxc*v.tasa_dollar)-(v.montodev*v.tasa_dollar)) ) as saldo, SUM( IF (v.montopendiente>0,v.montopendiente/v.tasa_dollar,IF(v.total_ventaimpuesto=0,0,(v.total_ventaimpuesto/v.tasa_dollar+v.montoigtfporcentaje))-v.montocxc-v.montodev) ) as saldod, SUM(IF((v.estado='Pendiente' OR v.estado='Parcial'),1,0)) as nrodocumento, v.fecha_hora,MIN(IF(v.estado='Pendiente' OR v.estado='Parcial',v.num_comprobante1,999999999)) as num_comprobante1,v.montocxc,v.montodev,IF(v.montocxc+v.montodev>0,'si','no') as notacredito1, DATE_FORMAT(MIN(v.fecha_hora),'%d-%m-%Y') as fecha,@curRank := @curRank + 1 AS rank 	FROM venta v,	(SELECT @curRank := 0) q 	WHERE (v.estado='Parcial' OR v.estado='Pendiente')	GROUP BY v.idcliente	
	            UNION ALL	
	            SELECT v.idcliente, SUM(IF(v.montopendiente>0,v.montopendiente,v.total_credito)) as saldo, 	SUM(IF(v.montopendiente>0,v.montopendiente/v.tasa_dollar,IF(v.total_creditod=0,0,v.total_creditod))) as saldod, v.num_notadebito as nrodocumento, 	v.fecha_hora,	v.num_notadebito as num_comprobante1,	0 as montocxc, 	0 as montodev,	'no' as notacredito1, DATE_FORMAT(MIN(v.fecha_hora),'%d-%m-%Y') as fecha,@curRank := @curRank + 1 AS rank 	FROM notadebito v, 	(SELECT @curRank := 0) q 	WHERE (v.estado='Parcial' OR v.estado='Pendiente')	GROUP BY v.idcliente) vt ON vt.idcliente=p.idpersona
	WHERE p.tipo_persona='Cliente'	
	GROUP BY p.idpersona	
	ORDER BY  DATEDIFF(vt.fecha_hora,'1899-12-30'),SUM(vt.saldod) ASC LIMIT 10";
	return ejecutarConsulta($sql);
}


public function cajasultimos_12meses(){
	$sql="SELECT DATE_FORMAT(fecha,'%M') AS fecha, SUM(IF(tiporegistro='CARGO',montod*-1,montod)) AS total FROM registrocajachica WHERE YEAR(fecha)>2020 GROUP BY MONTH(fecha) ORDER BY MONTH(fecha) ASC LIMIT 0,12";
	return ejecutarConsulta($sql);
}

public function stockporalmacen(){
	$sql="SELECT 
	a.idarticulo,
	a.nombre,
	a.preciod,
	al1.nombre as na1,
	a1.stock as almacen1,
	a1.stock*a.preciod almacen1p,
	al2.nombre as na2 ,
	a2.stock almacen2,
	a2.stock*a.preciod almacen2c,
	al3.nombre as na3,
	a3.stock almacen3,
	a3.stock*a.preciod almacen3c,
	al4.nombre as na4,
	a4.stock almacen4,
	a4.stock*a.preciod almacen4c,
	al5.nombre as na5,
	a5.stock almacen5,
	a5.stock*a.preciod almacen5c,
	a.condicion 
	FROM articulo a 
	LEFT JOIN almacen1 a1 ON a.idarticulo=a1.idarticulo 
	LEFT JOIN almacen al1 ON a1.idalmacen=al1.idalmacen 
	LEFT JOIN almacen2 a2 ON a.idarticulo=a2.idarticulo 
	LEFT JOIN almacen al2 ON a2.idalmacen=al2.idalmacen 
	LEFT JOIN almacen3 a3 ON a.idarticulo=a3.idarticulo 
	LEFT JOIN almacen al3 ON a3.idalmacen=al3.idalmacen 
	LEFT JOIN almacen4 a4 ON a.idarticulo=a4.idarticulo 
	LEFT JOIN almacen al4 ON a4.idalmacen=al4.idalmacen 
	LEFT JOIN almacen5 a5 ON a.idarticulo=a5.idarticulo 
	LEFT JOIN almacen al5 ON a5.idalmacen=al5.idalmacen 
	WHERE a.condicion=1 AND 
	(a.tipoproducto='Compuesto' OR a.tipoproducto='Negocio' OR a.tipoproducto='Combo')";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function listadeprecio(){
	$sql="SELECT 
	a.idarticulo,
	a.nombre,
	a.preciod,
	a.condicion,
	a.imagen 
	FROM articulo a 
	WHERE a.condicion=1 AND 
	(a.tipoproducto='Compuesto' OR a.tipoproducto='Negocio' OR a.tipoproducto='Combo')";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function ventasproductovendedor()
{
	$sql="SELECT 
	a.idarticulo,
	a.nombre as articulo, 
	IF(SUM(d.cantidad-d.cantidadev) IS null,0,SUM(d.cantidad-d.cantidadev)) AS cajas, 
	IF(p.idvendedor IS null,'N/A',p.idvendedor) as idvendedor 
	FROM detalle_venta d 
	INNER JOIN venta v ON v.idventa=d.idventa 
	INNER JOIN persona p ON p.idpersona=v.idcliente 
	RIGHT JOIN articulo a ON a.idarticulo=d.idarticulo 
	WHERE YEAR(v.fecha_hora)=YEAR(NOW()) AND 
	MONTH(v.fecha_hora)=MONTH(NOW()) AND 
	v.estado<>'Anulado' AND 
	(a.tipoproducto='Compuesto' OR a.tipoproducto='Negocio') 
	GROUP BY p.idvendedor,a.idarticulo 
	ORDER BY a.idarticulo,p.idvendedor";
	return ejecutarConsulta($sql);
}

//Ultimos 3 meses
public function ventasproductovendedorpromedio()
{
	//$sql="SELECT a.idarticulo,a.nombre as articulo, IF(AVG(d.cantidad-d.cantidadev) IS null,0,AVG(d.cantidad-d.cantidadev)) AS cajas, IF(p.idvendedor IS null,'N/A',p.idvendedor) as idvendedor FROM detalle_venta d INNER JOIN venta v ON v.idventa=d.idventa INNER JOIN persona p ON p.idpersona=v.idcliente RIGHT JOIN articulo a ON a.idarticulo=d.idarticulo WHERE YEAR(v.fecha_hora)=YEAR(NOW()) AND MONTH(v.fecha_hora)>=MONTH(DATE_SUB(NOW(), INTERVAL 3 MONTH)) AND MONTH(v.fecha_hora)<>MONTH(NOW()) AND v.estado<>'Anulado' AND (a.tipoproducto='Compuesto' OR a.tipoproducto='Negocio') GROUP BY p.idvendedor,a.idarticulo ORDER BY a.idarticulo,p.idvendedor";
	$sql="SELECT 
	a.idarticulo,
	a.nombre as articulo, 
	(IF(sum(d.cantidad-d.cantidadev) IS null,0,sum(d.cantidad-d.cantidadev)))/3 AS cajas, 
	IF(p.idvendedor IS null,'N/A',p.idvendedor) as idvendedor 
	FROM detalle_venta d 
	INNER JOIN venta v ON v.idventa=d.idventa 
	INNER JOIN persona p ON p.idpersona=v.idcliente 
	RIGHT JOIN articulo a ON a.idarticulo=d.idarticulo 
	WHERE 
	YEAR(v.fecha_hora)=YEAR(NOW()) AND 
	MONTH(v.fecha_hora)>=MONTH(DATE_SUB(NOW(), INTERVAL 3 MONTH)) AND 
	MONTH(v.fecha_hora)<>MONTH(NOW()) AND 
	v.estado<>'Anulado' AND 
	(a.tipoproducto='Negocio') 
	GROUP BY p.idvendedor,a.idarticulo 
	ORDER BY a.idarticulo,p.idvendedor";
	return ejecutarConsulta($sql);
}

/** solo para bocatto y chocomilk */
public function articulos(){
	$sql="SELECT * FROM articulo WHERE (tipoproducto='Negocio' OR tipoproducto='Combo') AND condicion='1' ORDER BY orden";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

/**Para todos */
/* public function articulos(){
	$sql="SELECT * FROM articulo WHERE (tipoproducto='Negocio' OR tipoproducto='Compuesto' OR tipoproducto='Combo') AND condicion='1' ORDER BY orden";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
} */

public function vendedores(){
	$sql="SELECT * FROM vendedor WHERE tipo_persona='vendedor' AND condicion='1' ORDER BY orden";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function almacenes(){
	$sql="SELECT idalmacen,nombre,descripcion,condicion FROM almacen";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function ventasarticulos30diasmesaencurso(){
	$sql="SELECT 
	a.idarticulo,
	a.nombre,
	IF(sum(d.cantidad) is null,0,sum(d.cantidad)) as unidades,
	MONTH(v.fecha_hora) as mes,
	v.estado,
	DATE(fecha_hora) as fecha 
	FROM articulo a 
	LEFT JOIN detalle_venta d ON a.idarticulo=d.idarticulo 
	LEFT JOIN venta v ON v.idventa=d.idventa 
	WHERE 
	v.estado<>'Anulado' AND 
	YEAR(NOW())=YEAR(v.fecha_hora) AND 
	DATE(fecha_hora)>=(DATE_FORMAT(NOW(),'%Y-%m-%d')-INTERVAL 30 DAY) and 
	DATE(fecha_hora)<=DATE_FORMAT(NOW(),'%Y-%m-%d') 
	GROUP BY a.idarticulo 
	ORDER BY a.idarticulo";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function ventasarticulos60diasmesanteriorencurso(){
	$sql="SELECT 
	a.idarticulo,
	a.nombre,
	IF(sum(d.cantidad) is null,0,sum(d.cantidad)) as unidades,
	MONTH(v.fecha_hora) as mes,
	v.estado,
	DATE(fecha_hora) as fecha 
	FROM articulo a 
	LEFT JOIN detalle_venta d ON a.idarticulo=d.idarticulo 
	LEFT JOIN venta v ON v.idventa=d.idventa 
	WHERE v.estado<>'Anulado' AND 
	YEAR(NOW())=YEAR(v.fecha_hora) AND 
	DATE(fecha_hora)>=(DATE_FORMAT(NOW(),'%Y-%m-%d')-INTERVAL 60 DAY) and 
	DATE(fecha_hora)<=(DATE_FORMAT(NOW(),'%Y-%m-%d')-INTERVAL 30 DAY) 
	GROUP BY a.idarticulo 
	ORDER BY a.idarticulo";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function vendedormesanterior(){
	$sql="SELECT 
	v.idvendedor,
	ve.nombre, 
	SUM(v.total_ventaimpuestod) as venta,
	YEAR(v.fecha_hora) AS ANO,
	MONTH(v.fecha_hora) as mes,
	SUM(d.cajas) as cajas	
	FROM venta v 	
	INNER JOIN (SELECT idventa,SUM(cantidad -cantidadev) as cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa=v.idventa	
	INNER JOIN vendedor ve ON ve.idvendedor=v.idvendedor	
	WHERE v.estado<>'Anulado' AND 
	YEAR(NOW())=YEAR(v.fecha_hora) AND 
	DATE(fecha_hora)>=(DATE_FORMAT(NOW(),'%Y-%m-%d')-INTERVAL 60 DAY) and 
	DATE(fecha_hora)<=(DATE_FORMAT(NOW(),'%Y-%m-%d')-INTERVAL 30 DAY) 
	GROUP BY v.idvendedor 
	ORDER BY v.idvendedor";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function vendedormesencurso(){
	$sql="SELECT 
	v.idvendedor,
	ve.nombre, 
	SUM(v.total_ventaimpuestod) as venta,
	YEAR(v.fecha_hora) AS ANO,
	MONTH(v.fecha_hora) as mes,
	SUM(d.cajas) as cajas	
	FROM venta v 	
	INNER JOIN (SELECT idventa,SUM(cantidad -cantidadev) as cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa=v.idventa	
	INNER JOIN vendedor ve ON ve.idvendedor=v.idvendedor
	WHERE v.estado<>'Anulado' AND 
	YEAR(NOW())=YEAR(v.fecha_hora) AND 
	DATE(fecha_hora)>=(DATE_FORMAT(NOW(),'%Y-%m-%d')-INTERVAL 30 DAY) and DATE(fecha_hora)<=DATE_FORMAT(NOW(),'%Y-%m-%d') 
	GROUP BY v.idvendedor 
	ORDER BY v.idvendedor";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function ventasyearendollaryunidades(){
	$sql="SELECT 
	SUM(v.total_ventaimpuestod-v.montocxc-v.montodev+v.montoigtfporcentaje) as venta,
	SUM(d.cajas) as cajas,
	YEAR(v.fecha_hora) AS ANO 
	FROM venta v INNER JOIN (SELECT idventa,SUM(cantidad -cantidadev) as cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa=v.idventa 
	WHERE v.estado<>'Anulado' AND 
	YEAR(NOW())=YEAR(v.fecha_hora) 
	GROUP BY YEAR(v.fecha_hora) ORDER BY v.idvendedor";
	return ejecutarConsulta($sql);
}

public function ventasyearendollaryunidadesc($idusuario){
	$sql="SELECT SUM(v.total_ventaimpuestod-v.montocxc-v.montodev+v.montoigtfporcentaje) as venta,SUM(d.cajas) as cajas,YEAR(v.fecha_hora) AS ANO FROM venta v INNER JOIN (SELECT idventa,SUM(cantidad -cantidadev) as cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa=v.idventa INNER JOIN persona p ON p.idpersona=v.idcliente INNER JOIN relacionvendedorusuario r ON r.idvendedor=p.idvendedor WHERE v.estado<>'Anulado' AND YEAR(NOW())=YEAR(v.fecha_hora) AND r.idusuario='$idusuario' GROUP BY YEAR(v.fecha_hora) ORDER BY v.idvendedor";
	return ejecutarConsulta($sql);
}

public function ventasmesendollaryunidades(){
	//$sql="SELECT SUM(v.total_ventaimpuestod-v.montocxc-v.montodev+v.montoigtfporcentaje) as venta,SUM(d.cajas) as cajas,YEAR(v.fecha_hora) AS ANO,MONTH(v.fecha_hora) as mes FROM venta v INNER JOIN (SELECT idventa,SUM(cantidad -cantidadev) as cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa=v.idventa WHERE v.estado<>'Anulado' AND YEAR(NOW())=YEAR(v.fecha_hora) AND DATE(fecha_hora)>=(DATE_FORMAT(NOW(),'%Y-%m-%d')-INTERVAL 30 DAY) and DATE(fecha_hora)<=DATE_FORMAT(NOW(),'%Y-%m-%d') GROUP BY MONTH(v.fecha_hora)";
	$sql="SELECT 
	SUM(v.total_ventaimpuestod-v.montocxc-v.montodev+v.montoigtfporcentaje) as venta,
	SUM(d.cajas) as cajas,
	YEAR(v.fecha_hora) AS ANO,
	MONTH(v.fecha_hora) as mes, 
	COUNT(v.idventa) as numerocxc 
	FROM venta v 
	INNER JOIN (SELECT idventa,SUM(cantidad -cantidadev) as cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa=v.idventa	WHERE v.estado<>'Anulado' AND YEAR(NOW())=YEAR(v.fecha_hora) AND MONTH(v.fecha_hora)= MONTH(NOW()) GROUP BY MONTH(v.fecha_hora)";
	return ejecutarConsulta($sql);
}

public function ventasmesendollaryunidadesc($idusuario){
	//$sql="SELECT SUM(v.total_ventaimpuestod-v.montocxc-v.montodev+v.montoigtfporcentaje) as venta,SUM(d.cajas) as cajas,YEAR(v.fecha_hora) AS ANO,MONTH(v.fecha_hora) as mes FROM venta v INNER JOIN (SELECT idventa,SUM(cantidad -cantidadev) as cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa=v.idventa WHERE v.estado<>'Anulado' AND YEAR(NOW())=YEAR(v.fecha_hora) AND DATE(fecha_hora)>=(DATE_FORMAT(NOW(),'%Y-%m-%d')-INTERVAL 30 DAY) and DATE(fecha_hora)<=DATE_FORMAT(NOW(),'%Y-%m-%d') GROUP BY MONTH(v.fecha_hora)";
	$sql="SELECT SUM(v.total_ventaimpuestod-v.montocxc-v.montodev+v.montoigtfporcentaje) as venta,
	SUM(d.cajas) as cajas,
	YEAR(v.fecha_hora) AS ANO,
	MONTH(v.fecha_hora) as mes 
	FROM venta v 
	INNER JOIN (SELECT idventa,SUM(cantidad -cantidadev) as cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa=v.idventa 
	INNER JOIN persona p ON p.idpersona=v.idcliente 
	INNER JOIN relacionvendedorusuario r ON r.idvendedor=p.idvendedor 
	WHERE v.estado<>'Anulado' AND 
	YEAR(NOW())=YEAR(v.fecha_hora) AND 
	MONTH(v.fecha_hora)= MONTH(NOW()) AND 
	r.idusuario='$idusuario' 
	GROUP BY MONTH(v.fecha_hora)";
	return ejecutarConsulta($sql);
}

public function pedidosv(){
	$sql="SELECT COUNT(idpedido) as numeropedidov FROM pedido WHERE estado='Verificado'";
	return ejecutarConsulta($sql);
}

public function pedidosp(){
	$sql="SELECT COUNT(idpedido) as numeropedidop FROM pedido WHERE estado='Pendiente' AND idcliente<>0 AND idusuario<>0 AND idvendedor<>0";
	return ejecutarConsulta($sql);
}

public function vendedoraperturacliente(){
	$sql="SELECT ve.idvendedor,ve.nombre,IF(c1.nropersona IS null,0,c1.nropersona) AS clientes,
	IF(c4.nroclientenuevo IS null,0,c4.nroclientenuevo) AS nroclientenuevo,
	IF(c2.nroclientemas90 IS null,0,c2.nroclientemas90) AS nroclientemas90,
	IF(c3.nroclientemes IS null,0,c3.nroclientemes) AS nroclientemes,
	round(((IF(c3.nroclientemes IS null,0,c3.nroclientemes))/(IF(c1.nropersona IS null,0,c1.nropersona)))*100,2) AS pornroclientemes,
	IF(c9.nroclientemesatentido3meses IS null,0,c9.nroclientemesatentido3meses) AS nroclientemesatentido3meses,
	round(((IF(c9.nroclientemesatentido3meses IS null,0,c9.nroclientemesatentido3meses))/(IF(c1.nropersona IS null,0,c1.nropersona)))*100,2) AS pornroclientemesatentido3meses,
	IF(c5.nrocxcmes IS null,0,c5.nrocxcmes) AS nrocxcmes,
	round((IF(c6.nrocxctremes is null,0,c6.nrocxctremes))/3,0) AS promedionrocxctremes,
	IF(c7.nrocxcpendiente is null,0,c7.nrocxcpendiente) AS nrocxcpendiente,
	IF(c8.nrocxcpendientemas90 IS null,0,c8.nrocxcpendientemas90) AS nrocxcpendientemas90
	FROM vendedor ve 
	LEFT JOIN (SELECT idvendedor,COUNT(idpersona) as nropersona FROM persona WHERE condicion=1 GROUP BY idvendedor) c1 ON c1.idvendedor=ve.idvendedor
	LEFT JOIN (SELECT per.idvendedor,COUNT(per.idpersona) AS nroclientemas90 FROM persona per RIGHT JOIN (SELECT sub.idcliente, sub.idventa, sub.ultima_fecha_venta, sub.mes, MONTH(CURDATE()) AS mescurso,DATE_SUB(CURDATE(), INTERVAL 90 DAY) FROM ( SELECT v.idcliente, v.idventa, MAX(v.fecha_hora) AS ultima_fecha_venta, MONTH(MAX(v.fecha_hora)) AS mes FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' GROUP BY v.idcliente ) sub WHERE sub.ultima_fecha_venta <= DATE_SUB(CURDATE(), INTERVAL 90 DAY)) v1 ON v1.idcliente=per.idpersona WHERE per.condicion=1 GROUP BY per.idvendedor) c2 ON c2.idvendedor=ve.idvendedor
	LEFT JOIN (SELECT per.idvendedor,COUNT(per.idpersona) AS nroclientemes FROM persona per RIGHT JOIN (SELECT sub.idcliente, sub.idventa, sub.ultima_fecha_venta, sub.mes, MONTH(CURDATE()) AS mescurso FROM ( SELECT v.idcliente, v.idventa, MAX(v.fecha_hora) AS ultima_fecha_venta, MONTH(MAX(v.fecha_hora)) AS mes FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' GROUP BY v.idcliente ) sub WHERE sub.mes = MONTH(CURDATE())) v1 ON v1.idcliente=per.idpersona WHERE per.condicion=1 GROUP BY per.idvendedor) c3 ON c3.idvendedor=ve.idvendedor
	LEFT JOIN (SELECT c.idvendedor,COUNT(c.idpersona) as nroclientenuevo FROM persona c INNER JOIN (SELECT v.idcliente, v.idventa, MAX(v.fecha_hora) AS ultima_fecha_venta, MONTH(MAX(v.fecha_hora)) AS mes FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' GROUP BY v.idcliente) v ON v.idcliente = c.idpersona WHERE MONTH(c.fechacreacion) = MONTH(CURDATE()) GROUP BY c.idvendedor) c4 ON c4.idvendedor=ve.idvendedor
	LEFT JOIN (SELECT p.idvendedor,COUNT(v.idventa) as nrocxcmes FROM venta v INNER JOIN persona p ON p.idpersona=v.idcliente WHERE YEAR(v.fecha_hora) = YEAR(CURDATE()) AND MONTH(v.fecha_hora) = MONTH(CURDATE()) AND v.tipo_comprobante<>'Regalo' AND v.estado<>'Anulado' GROUP BY p.idvendedor) c5 ON c5.idvendedor=ve.idvendedor
	LEFT JOIN (SELECT p.idvendedor,COUNT(v.idventa) as nrocxctremes FROM venta v INNER JOIN persona p ON p.idpersona=v.idcliente WHERE v.fecha_hora >= DATE_SUB(CURDATE(), INTERVAL 3 MONTH) AND v.tipo_comprobante<>'Regalo' AND v.estado<>'Anulado' GROUP BY p.idvendedor) c6 ON c6.idvendedor=ve.idvendedor
	LEFT JOIN (SELECT p.idvendedor,COUNT(v.idventa) as nrocxcpendiente FROM venta v INNER JOIN persona p ON p.idpersona=v.idcliente WHERE v.estado='Pendiente' OR v.estado='Parcial' GROUP BY p.idvendedor) c7 ON c7.idvendedor=ve.idvendedor
	LEFT JOIN (SELECT p.idvendedor,COUNT(v.idventa) as nrocxcpendientemas90 FROM venta v INNER JOIN persona p ON p.idpersona=v.idcliente WHERE v.fecha_hora < DATE_SUB(CURDATE(), INTERVAL 3 MONTH) AND (v.estado='Pendiente' OR v.estado='Parcial') GROUP BY p.idvendedor) c8 ON c8.idvendedor=ve.idvendedor
	LEFT JOIN (SELECT per.idvendedor,COUNT(per.idpersona) AS nroclientemesatentido3meses FROM persona per RIGHT JOIN (SELECT sub.idcliente, sub.idventa, sub.ultima_fecha_venta FROM (SELECT v.idcliente, v.idventa, MAX(v.fecha_hora) AS ultima_fecha_venta FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante<> 'Regalo' GROUP BY v.idcliente) sub WHERE sub.ultima_fecha_venta >= DATE_SUB(CURDATE(), INTERVAL 3 MONTH)) v1 ON v1.idcliente=per.idpersona WHERE per.condicion=1 GROUP BY per.idvendedor) c9 ON c9.idvendedor=ve.idvendedor
	WHERE ve.condicion=1";
	return ejecutarConsulta($sql);
}

/* public function listarcliente($idvendedor){
	$sql="SELECT idvendedor,idpersona,nombre,condicion FROM persona WHERE condicion=1 AND idvendedor='$idvendedor'";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
} */

public function listarcliente($idvendedor){
	$sql="SELECT idvendedor,idpersona,nombre,condicion FROM persona WHERE condicion=1 AND tipo_persona='Cliente' AND idvendedor='$idvendedor'";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function listarclientenuevo($idvendedor){
	$sql="SELECT c.idvendedor,c.idpersona,c.nombre,DATE_FORMAT(v.ultima_fecha_venta,'%d-%m-%Y') as fechafaturacion FROM persona c INNER JOIN (SELECT v.idcliente, v.idventa, MAX(v.fecha_hora) AS ultima_fecha_venta, MONTH(MAX(v.fecha_hora)) AS mes FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' GROUP BY v.idcliente) v ON v.idcliente = c.idpersona WHERE MONTH(c.fechacreacion) = MONTH(CURDATE()) AND YEAR(c.fechacreacion) = YEAR(CURDATE()) AND c.idvendedor='$idvendedor'";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

/*
public function listarclientemas90dias($idvendedor){
	$sql="SELECT per.idvendedor,per.idpersona,per.nombre,per.condicion,per.telefono,per.direcciond, DATE_FORMAT(v1.ultima_fecha_venta,'%d-%m-%Y') as fechafaturacion FROM persona per RIGHT JOIN (SELECT sub.idcliente, sub.idventa, sub.ultima_fecha_venta FROM (SELECT v.idcliente, v.idventa, MAX(v.fecha_hora) AS ultima_fecha_venta FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante<> 'Regalo' GROUP BY v.idcliente) sub WHERE sub.ultima_fecha_venta < DATE_SUB(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 3 MONTH) AND sub.ultima_fecha_venta <= LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))) v1 ON v1.idcliente=per.idpersona WHERE per.condicion=1 AND per.idvendedor='$idvendedor'";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}*/

public function listarclientemas90dias($idvendedor){
	//$sql="SELECT per.idvendedor,per.idpersona,per.nombre,per.condicion,per.telefono,per.direcciond, DATE_FORMAT(v1.ultima_fecha_venta,'%d-%m-%Y') as fechafaturacion FROM persona per RIGHT JOIN (SELECT sub.idcliente, sub.idventa, sub.ultima_fecha_venta FROM (SELECT v.idcliente, v.idventa, MAX(v.fecha_hora) AS ultima_fecha_venta FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante<> 'Regalo' GROUP BY v.idcliente) sub WHERE sub.ultima_fecha_venta < DATE_SUB(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 3 MONTH) AND sub.ultima_fecha_venta <= LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))) v1 ON v1.idcliente=per.idpersona WHERE per.condicion=1 AND per.idvendedor='$idvendedor'";
	//$sql="SELECT per.idvendedor,per.idpersona,per.nombre,per.condicion,per.telefono,per.direcciond, DATE_FORMAT(v1.ultima_fecha_venta,'%d-%m-%Y') as fechafaturacion,IF(co.saldo IS null,0,co.saldo) AS saldo,IF(co.saldo>0,'Pendiente','Sin Deuda') as estados FROM persona per RIGHT JOIN (SELECT sub.idcliente, sub.idventa, sub.ultima_fecha_venta FROM (SELECT v.idcliente, v.idventa, MAX(v.fecha_hora) AS ultima_fecha_venta FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante<> 'Regalo' GROUP BY v.idcliente) sub WHERE sub.ultima_fecha_venta < DATE_SUB(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 3 MONTH) AND sub.ultima_fecha_venta <= LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))) v1 ON v1.idcliente=per.idpersona LEFT JOIN (SELECT v.idcliente,FORMAT(SUM(v.total_ventaimpuestod-v.montocxc-v.montodev),2) AS monto,FORMAT(SUM(IF(v.estado='Pagada',(v.total_ventaimpuestod-v.montocxc-v.montodev),(IF(v.estado='Pendiente',0,((v.total_ventaimpuestod-v.montocxc-v.montodev)-(v.montopendiente/v.tasa_dollar)))))),2) AS cobrado, FORMAT(SUM(IF(v.estado='Pagada',0,IF(v.estado='Pendiente',(v.total_ventaimpuestod-v.montocxc-v.montodev),(v.montopendiente/v.tasa_dollar)))),2) as saldo FROM venta v INNER JOIN persona p ON p.idpersona=v.idcliente WHERE (v.estado='Pendiente' OR v.estado='Parcial') AND v.tipo_comprobante<>'Regalo' AND v.estado<>'Anulado' GROUP BY v.idcliente) co ON co.idcliente=per.idpersona WHERE per.condicion=1 AND per.idvendedor='$idvendedor'";
	//$sql="SELECT per.idvendedor,per.idpersona,per.nombre,per.condicion,per.telefono,per.direcciond, DATE_FORMAT(v1.ultima_fecha_venta,'%d-%m-%Y') as fechafaturacion,IF(co.saldo IS null,0,co.saldo) AS saldo,IF(co.saldo>0,'Pendiente','Sin Deuda') as estados FROM persona per RIGHT JOIN (SELECT sub.idcliente, sub.idventa, sub.ultima_fecha_venta FROM (SELECT v.idcliente, v.idventa, MAX(v.fecha_hora) AS ultima_fecha_venta FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante<> 'Regalo' GROUP BY v.idcliente) sub WHERE sub.ultima_fecha_venta < DATE_SUB(CURDATE(), INTERVAL 3 MONTH) AND sub.ultima_fecha_venta <= LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))) v1 ON v1.idcliente=per.idpersona LEFT JOIN (SELECT v.idcliente,FORMAT(SUM(v.total_ventaimpuestod-v.montocxc-v.montodev),2) AS monto,FORMAT(SUM(IF(v.estado='Pagada',(v.total_ventaimpuestod-v.montocxc-v.montodev),(IF(v.estado='Pendiente',0,((v.total_ventaimpuestod-v.montocxc-v.montodev)-(v.montopendiente/v.tasa_dollar)))))),2) AS cobrado, FORMAT(SUM(IF(v.estado='Pagada',0,IF(v.estado='Pendiente',(v.total_ventaimpuestod-v.montocxc-v.montodev),(v.montopendiente/v.tasa_dollar)))),2) as saldo FROM venta v INNER JOIN persona p ON p.idpersona=v.idcliente WHERE (v.estado='Pendiente' OR v.estado='Parcial') AND v.tipo_comprobante<>'Regalo' AND v.estado<>'Anulado' GROUP BY v.idcliente) co ON co.idcliente=per.idpersona WHERE per.condicion=1 AND per.idvendedor='$idvendedor'";
	$sql="SELECT per.idvendedor,per.idpersona,per.nombre,per.condicion,per.telefono,per.direcciond, DATE_FORMAT(v1.ultima_fecha_venta,'%d-%m-%Y') as fechafaturacion,IF(co.saldo IS null,0,co.saldo) AS saldo,IF(co.saldo>0,'Pendiente','Sin Deuda') as estados FROM persona per RIGHT JOIN (SELECT idcliente, MAX(fecha_hora) AS ultima_fecha_venta FROM venta WHERE estado <> 'Anulado' AND tipo_comprobante <> 'Regalo' GROUP BY idcliente HAVING MAX(fecha_hora) <= DATE_SUB(CURDATE(), INTERVAL 90 DAY)) v1 ON v1.idcliente=per.idpersona LEFT JOIN (SELECT v.idcliente,FORMAT(SUM(v.total_ventaimpuestod-v.montocxc-v.montodev),2) AS monto,FORMAT(SUM(IF(v.estado='Pagada',(v.total_ventaimpuestod-v.montocxc-v.montodev),(IF(v.estado='Pendiente',0,((v.total_ventaimpuestod-v.montocxc-v.montodev)-(v.montopendiente/v.tasa_dollar)))))),2) AS cobrado, FORMAT(SUM(IF(v.estado='Pagada',0,IF(v.estado='Pendiente',(v.total_ventaimpuestod-v.montocxc-v.montodev),(v.montopendiente/v.tasa_dollar)))),2) as saldo FROM venta v INNER JOIN persona p ON p.idpersona=v.idcliente WHERE (v.estado='Pendiente' OR v.estado='Parcial') AND v.tipo_comprobante<>'Regalo' AND v.estado<>'Anulado' GROUP BY v.idcliente) co ON co.idcliente=per.idpersona WHERE per.condicion=1 AND per.idvendedor='$idvendedor'";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function listarclientemes($idvendedor){
	$sql="SELECT per.idvendedor,per.idpersona,per.nombre,DATE_FORMAT(v1.ultima_fecha_venta,'%d-%m-%Y') as fechafaturacion FROM persona per RIGHT JOIN (SELECT sub.idcliente, sub.idventa, sub.ultima_fecha_venta, sub.mes, MONTH(CURDATE()) AS mescurso,sub.ano FROM ( SELECT v.idcliente, v.idventa, MAX(v.fecha_hora) AS ultima_fecha_venta, MONTH(MAX(v.fecha_hora)) AS mes,YEAR(MAX(v.fecha_hora)) AS ano FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' GROUP BY v.idcliente ) sub WHERE sub.mes = MONTH(CURDATE()) AND sub.ano= YEAR(CURDATE())) v1 ON v1.idcliente=per.idpersona WHERE per.condicion=1 AND per.idvendedor='$idvendedor'";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}



//No incluye el mes en curso
/* 
public function listarcliente90dias($idvendedor){
	$sql="SELECT per.idvendedor,per.idpersona,per.nombre,per.condicion,per.telefono,per.direcciond, DATE_FORMAT(v1.ultima_fecha_venta,'%d-%m-%Y') as fechafaturacion FROM persona per RIGHT JOIN (SELECT sub.idcliente, sub.idventa, sub.ultima_fecha_venta FROM (SELECT v.idcliente, v.idventa, MAX(v.fecha_hora) AS ultima_fecha_venta FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante<> 'Regalo' GROUP BY v.idcliente) sub WHERE sub.ultima_fecha_venta >= DATE_SUB(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 3 MONTH) AND sub.ultima_fecha_venta <= LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))) v1 ON v1.idcliente=per.idpersona WHERE per.condicion=1 AND per.idvendedor='$idvendedor'";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
} */

//Incluye el mes en curso
public function listarcliente90dias($idvendedor){
	$sql="SELECT per.idvendedor,per.idpersona,per.nombre,per.condicion,per.telefono,per.direcciond, DATE_FORMAT(v1.ultima_fecha_venta,'%d-%m-%Y') as fechafaturacion FROM persona per RIGHT JOIN (SELECT sub.idcliente, sub.idventa, sub.ultima_fecha_venta FROM (SELECT v.idcliente, v.idventa, MAX(v.fecha_hora) AS ultima_fecha_venta FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante<> 'Regalo' GROUP BY v.idcliente) sub WHERE sub.ultima_fecha_venta >= DATE_SUB(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 3 MONTH)) v1 ON v1.idcliente=per.idpersona WHERE per.condicion=1 AND per.idvendedor='$idvendedor'";
	//$sql="SELECT per.idvendedor,per.idpersona,per.nombre,per.condicion,per.telefono,per.direcciond, DATE_FORMAT(v1.ultima_fecha_venta,'%d-%m-%Y') as fechafaturacion FROM persona per RIGHT JOIN (SELECT sub.idcliente, sub.idventa, sub.ultima_fecha_venta FROM (SELECT v.idcliente, v.idventa, MAX(v.fecha_hora) AS ultima_fecha_venta FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante<> 'Regalo' GROUP BY v.idcliente) sub WHERE sub.ultima_fecha_venta >= DATE_SUB(CURDATE(), INTERVAL 3 MONTH)) v1 ON v1.idcliente=per.idpersona WHERE per.condicion=1 AND per.idvendedor='$idvendedor'";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function listarclientecxcmes($idvendedor){
	$sql="SELECT p.idvendedor,v.idventa,p.nombre,v.num_comprobante1 as nrocxc,DATE_FORMAT(v.fecha_hora,'%d-%m-%Y') as fechafaturacion, FORMAT(v.total_ventaimpuestod-v.montocxc-v.montodev,2) AS monto,FORMAT(IF(v.estado='Pagada',(v.total_ventaimpuestod-v.montocxc-v.montodev),(IF(v.estado='Pendiente',0,((v.total_ventaimpuestod-v.montocxc-v.montodev)-(v.montopendiente/v.tasa_dollar))))),2) AS cobrado, FORMAT(IF(v.estado='Pagada',0,IF(v.estado='Pendiente',(v.total_ventaimpuestod-v.montocxc-v.montodev),(v.montopendiente/v.tasa_dollar))),2) as saldo,v.estado FROM venta v INNER JOIN persona p ON p.idpersona=v.idcliente WHERE YEAR(v.fecha_hora) = YEAR(CURDATE()) AND MONTH(v.fecha_hora) = MONTH(CURDATE()) AND v.tipo_comprobante<>'Regalo' AND v.estado<>'Anulado' AND p.idvendedor='$idvendedor'";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function listarclientecxc90dias($idvendedor){
	$sql="SELECT p.idvendedor,v.idventa,p.nombre,v.num_comprobante1 as nrocxc,DATE_FORMAT(v.fecha_hora,'%d-%m-%Y') as fechafaturacion,FORMAT(v.total_ventaimpuestod-v.montocxc-v.montodev,2) AS monto,FORMAT(IF(v.estado='Pagada',(v.total_ventaimpuestod-v.montocxc-v.montodev),(IF(v.estado='Pendiente',0,((v.total_ventaimpuestod-v.montocxc-v.montodev)-(v.montopendiente/v.tasa_dollar))))),2) AS cobrado, FORMAT(IF(v.estado='Pagada',0,IF(v.estado='Pendiente',(v.total_ventaimpuestod-v.montocxc-v.montodev),(v.montopendiente/v.tasa_dollar))),2) as saldo,v.estado  FROM venta v INNER JOIN persona p ON p.idpersona=v.idcliente WHERE v.fecha_hora >= DATE_SUB(CURDATE(), INTERVAL 3 MONTH) AND v.tipo_comprobante<>'Regalo' AND v.estado<>'Anulado' AND p.idvendedor='$idvendedor'";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function listarclientecxcpendiente($idvendedor){
	$sql="SELECT p.idvendedor,v.idventa,p.nombre,v.num_comprobante1 as nrocxc,DATE_FORMAT(v.fecha_hora,'%d-%m-%Y') as fechafaturacion,FORMAT(v.total_ventaimpuestod-v.montocxc-v.montodev,2) AS monto,FORMAT(IF(v.estado='Pagada',(v.total_ventaimpuestod-v.montocxc-v.montodev),(IF(v.estado='Pendiente',0,((v.total_ventaimpuestod-v.montocxc-v.montodev)-(v.montopendiente/v.tasa_dollar))))),2) AS cobrado, FORMAT(IF(v.estado='Pagada',0,IF(v.estado='Pendiente',(v.total_ventaimpuestod-v.montocxc-v.montodev),(v.montopendiente/v.tasa_dollar))),2) as saldo,v.estado FROM venta v INNER JOIN persona p ON p.idpersona=v.idcliente WHERE (v.estado='Pendiente' OR v.estado='Parcial') AND v.tipo_comprobante<>'Regalo' AND v.estado<>'Anulado' AND p.idvendedor='$idvendedor'";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function listarclientecxcpendientemas90dias($idvendedor){
	$sql="SELECT p.idvendedor,v.idventa,p.nombre,v.num_comprobante1 as nrocxc,DATE_FORMAT(v.fecha_hora,'%d-%m-%Y') as fechafaturacion,FORMAT(v.total_ventaimpuestod-v.montocxc-v.montodev,2) AS monto,FORMAT(IF(v.estado='Pagada',(v.total_ventaimpuestod-v.montocxc-v.montodev),(IF(v.estado='Pendiente',0,((v.total_ventaimpuestod-v.montocxc-v.montodev)-(v.montopendiente/v.tasa_dollar))))),2) AS cobrado, FORMAT(IF(v.estado='Pagada',0,IF(v.estado='Pendiente',(v.total_ventaimpuestod-v.montocxc-v.montodev),(v.montopendiente/v.tasa_dollar))),2) as saldo,v.estado FROM venta v INNER JOIN persona p ON p.idpersona=v.idcliente WHERE v.fecha_hora < DATE_SUB(CURDATE(), INTERVAL 3 MONTH) AND (v.estado='Pendiente' OR v.estado='Parcial') AND v.tipo_comprobante<>'Regalo' AND v.estado<>'Anulado' AND p.idvendedor='$idvendedor'";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

/* public function listarclientenuncaantendido($idvendedor){
	$sql="SELECT p.idpersona,p.nombre,p.idvendedor,p.condicion FROM persona p LEFT JOIN (SELECT v.idcliente,MAX(v.fecha_hora) AS ultima_fecha_venta FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante<> 'Regalo' GROUP BY idcliente) vc ON vc.idcliente=p.idpersona WHERE vc.ultima_fecha_venta IS null AND p.idvendedor='$idvendedor'";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
} */

/*
public function listarclientenuncaantendido($idvendedor){
	$sql="SELECT p.idpersona,p.nombre,p.idvendedor,p.condicion,p.direcciond,p.telefono FROM persona p LEFT JOIN (SELECT v.idcliente,MAX(v.fecha_hora) AS ultima_fecha_venta FROM venta v WHERE v.estado <> 'Anulado' GROUP BY idcliente) vc ON vc.idcliente=p.idpersona WHERE vc.ultima_fecha_venta IS null AND p.tipo_persona='Cliente' AND p.condicion=1 AND p.idvendedor='$idvendedor'";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}*/

public function listarclientenuncaantendido($idvendedor){
	//$sql="SELECT p.idpersona,p.nombre,p.idvendedor,p.condicion,p.direcciond,p.telefono FROM persona p LEFT JOIN (SELECT v.idcliente,MAX(v.fecha_hora) AS ultima_fecha_venta FROM venta v WHERE v.estado <> 'Anulado' GROUP BY idcliente) vc ON vc.idcliente=p.idpersona WHERE vc.ultima_fecha_venta IS null AND p.tipo_persona='Cliente' AND p.condicion=1 AND p.idvendedor='$idvendedor'";
	$sql="SELECT 
	p.idpersona,
	p.nombre,
	p.idvendedor,
	p.condicion,
	p.direcciond,
	p.telefono,
	IF(co.saldo IS null,0,co.saldo) AS saldo,
	IF(co.saldo>0,'Pendiente','Sin Deuda') as estados 
	FROM persona p 
	LEFT JOIN (SELECT v.idcliente,MAX(v.fecha_hora) AS ultima_fecha_venta FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' GROUP BY idcliente) vc ON vc.idcliente=p.idpersona 
	LEFT JOIN (SELECT v.idcliente,FORMAT(SUM(v.total_ventaimpuestod-v.montocxc-v.montodev),2) AS monto,FORMAT(SUM(IF(v.estado='Pagada',(v.total_ventaimpuestod-v.montocxc-v.montodev),(IF(v.estado='Pendiente',0,((v.total_ventaimpuestod-v.montocxc-v.montodev)-(v.montopendiente/v.tasa_dollar)))))),2) AS cobrado, FORMAT(SUM(IF(v.estado='Pagada',0,IF(v.estado='Pendiente',(v.total_ventaimpuestod-v.montocxc-v.montodev),(v.montopendiente/v.tasa_dollar)))),2) as saldo FROM venta v INNER JOIN persona p ON p.idpersona=v.idcliente WHERE (v.estado='Pendiente' OR v.estado='Parcial') AND v.tipo_comprobante<>'Regalo' AND v.estado<>'Anulado' GROUP BY v.idcliente) co ON co.idcliente=p.idpersona 
	WHERE vc.ultima_fecha_venta IS null AND 
	p.tipo_persona='Cliente' AND 
	p.condicion=1 AND 
	p.idvendedor='$idvendedor'";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}


/** Indicadores Principales */

public function listarclientecxcyear(){
	$sql="SELECT 
	p.idvendedor,
	v.idventa,
	p.nombre,
	v.num_comprobante1 as nrocxc,
	DATE_FORMAT(v.fecha_hora,'%d-%m-%Y') as fechafaturacion, 
	FORMAT((v.total_ventaimpuestod-v.montocxc-v.montodev+v.montoigtfporcentaje),2) AS monto,
	FORMAT(IF(v.estado='Pagada',(v.total_ventaimpuestod-v.montocxc-v.montodev+v.montoigtfporcentaje),(IF(v.estado='Pendiente',0,((v.total_ventaimpuestod-v.montocxc-v.montodev+v.montoigtfporcentaje)-(v.montopendiente/v.tasa_dollar))))),2) AS cobrado, 
	FORMAT(IF(v.estado='Pagada',0,IF(v.estado='Pendiente',(v.total_ventaimpuestod-v.montocxc-v.montodev+v.montoigtfporcentaje),(v.montopendiente/v.tasa_dollar))),2) as saldo,
	v.estado 
	FROM venta v 
	INNER JOIN persona p ON p.idpersona=v.idcliente 
	INNER JOIN (SELECT idventa,SUM(cantidad -cantidadev) as cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa=v.idventa 
	WHERE YEAR(v.fecha_hora) = YEAR(CURDATE()) AND 
	v.tipo_comprobante<>'Regalo' AND 
	v.estado<>'Anulado'";
	return ejecutarConsulta($sql);
}

public function listarclientecxcunidadesyear(){
	$sql="SELECT 
	p.idvendedor,
	v.idventa,
	MAX(p.nombre) AS nombre,
	v.num_comprobante1 as nrocxc,
	DATE_FORMAT(v.fecha_hora,'%d-%m-%Y') as fechafaturacion,
	d.idarticulo,
	a.nombre AS articulo,
	SUM(d.cajas) AS cajas, 
	v.estado 
	FROM venta v 
	INNER JOIN persona p ON p.idpersona=v.idcliente 
	INNER JOIN (SELECT idventa,idarticulo,SUM(cantidad -cantidadev) as cajas FROM detalle_venta GROUP BY idventa,idarticulo) d ON d.idventa=v.idventa 
	LEFT JOIN articulo a ON a.idarticulo=d.idarticulo 
	WHERE YEAR(v.fecha_hora) = YEAR(CURDATE()) AND 
	v.tipo_comprobante<>'Regalo' AND 
	v.estado<>'Anulado' 
	GROUP BY v.idventa,d.idarticulo 
	ORDER BY v.idventa,d.idarticulo";
	return ejecutarConsulta($sql);
}

public function listarclientecxcmesp(){
	$sql="SELECT 
	p.idvendedor,
	v.idventa,
	p.nombre,
	v.num_comprobante1 as nrocxc,
	DATE_FORMAT(v.fecha_hora,'%d-%m-%Y') as fechafaturacion, 
	FORMAT((v.total_ventaimpuestod-v.montocxc-v.montodev+v.montoigtfporcentaje),2) AS monto,
	FORMAT(IF(v.estado='Pagada',(v.total_ventaimpuestod-v.montocxc-v.montodev+v.montoigtfporcentaje),(IF(v.estado='Pendiente',0,((v.total_ventaimpuestod-v.montocxc-v.montodev+v.montoigtfporcentaje)-(v.montopendiente/v.tasa_dollar))))),2) AS cobrado, 
	FORMAT(IF(v.estado='Pagada',0,IF(v.estado='Pendiente',(v.total_ventaimpuestod-v.montocxc-v.montodev+v.montoigtfporcentaje),(v.montopendiente/v.tasa_dollar))),2) as saldo,
	v.estado 
	FROM venta v 
	INNER JOIN persona p ON p.idpersona=v.idcliente 
	INNER JOIN (SELECT idventa,SUM(cantidad -cantidadev) as cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa=v.idventa 
	WHERE YEAR(v.fecha_hora) = YEAR(CURDATE()) AND 
	MONTH(v.fecha_hora) = MONTH(CURDATE()) AND 
	v.tipo_comprobante<>'Regalo' AND 
	v.estado<>'Anulado'";
	return ejecutarConsulta($sql);
}

public function listarclientecxcunidadesmes(){
	$sql="SELECT p.idvendedor,
	v.idventa,
	MAX(p.nombre) AS nombre,
	v.num_comprobante1 as nrocxc,
	DATE_FORMAT(v.fecha_hora,'%d-%m-%Y') as fechafaturacion,
	d.idarticulo,
	a.nombre AS articulo,
	SUM(d.cajas) AS cajas, 
	v.estado 
	FROM venta v 
	INNER JOIN persona p ON p.idpersona=v.idcliente 
	INNER JOIN (SELECT idventa,idarticulo,SUM(cantidad -cantidadev) as cajas FROM detalle_venta GROUP BY idventa,idarticulo) d ON d.idventa=v.idventa 
	LEFT JOIN articulo a ON a.idarticulo=d.idarticulo 
	WHERE YEAR(v.fecha_hora) = YEAR(CURDATE()) AND
	MONTH(v.fecha_hora) = MONTH(CURDATE()) AND 
	v.tipo_comprobante<>'Regalo' AND 
	v.estado<>'Anulado' 
	GROUP BY v.idventa,d.idarticulo 
	ORDER BY v.idventa,d.idarticulo";
	return ejecutarConsulta($sql);
}

public function listarclientecxcpendientep(){
	$sql="SELECT p.idvendedor,
        ve.nombre as vendedor,
        v.idventa,
        p.nombre,
        v.num_comprobante1 as nrocxc,
        DATE_FORMAT(v.fecha_hora,'%d-%m-%Y') as fechafaturacion,
        FORMAT(v.total_ventaimpuestod-v.montocxc-v.montodev,2) AS monto,
        FORMAT(IF(v.estado='Pagada',(v.total_ventaimpuestod-v.montocxc-v.montodev),(IF(v.estado='Pendiente',0,((v.total_ventaimpuestod-v.montocxc-v.montodev)-(v.montopendiente/v.tasa_dollar))))),2) AS cobrado, 
        FORMAT(IF(v.estado='Pagada',0,IF(v.estado='Pendiente',(v.total_ventaimpuestod-v.montocxc-v.montodev),(v.montopendiente/v.tasa_dollar))),2) as saldo,
        v.estado 
        FROM venta v 
        INNER JOIN persona p ON p.idpersona=v.idcliente 
        LEFT JOIN vendedor ve ON ve.idvendedor=v.idvendedor 
        WHERE (v.estado='Pendiente' OR v.estado='Parcial') AND 
        v.tipo_comprobante<>'Regalo' AND 
        v.estado<>'Anulado'";
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function listarinventario($idalmacen,$idarticulo){
	if ($idalmacen==0){
		$sql ="SELECT ar.idalmacen,' ' AS almacen,COUNT(ar.idalmacen) as nroalmacen,al.nombre as almacennombre,ar.idarticulo,ar.articulo,SUM(ar.stock ) as stock, 'todo' as alm,a.nombre,a.condicion,a.tipo,m.nombre as marca,c.nombre AS categoria,IF(lo.primera_fecha IS null,'-',date_format(DATE(lo.primera_fecha), '%d-%m-%Y')) AS primera_fecha,IF(lo.ultima_fecha IS null,'-',date_format(DATE(lo.ultima_fecha), '%d-%m-%Y')) AS ultima_fecha,a.codigo FROM articulosporalmacen ar INNER JOIN articulo a ON a.idarticulo=ar.idarticulo LEFT JOIN marca m ON m.idmarca=a.idmarca LEFT JOIN categoria c ON c.idcategoria=a.idcategoria LEFT JOIN almacen al ON al.idalmacen=ar.idalmacen LEFT JOIN (SELECT l.idarticulo, l.numerolote, MIN(l.fecha) AS primera_fecha, MAX(l.fecha) AS ultima_fecha FROM lote l WHERE l.cantidad>0 GROUP BY l.idarticulo) lo ON lo.idarticulo=ar.idarticulo WHERE a.condicion=1 AND ar.stock>0 AND a.tipoproducto='Negocio' GROUP BY ar.articulo";
		//$sql="SELECT ar.idalmacen,' ' AS almacen,COUNT(ar.idalmacen) as nroalmacen,al.nombre as almacennombre,ar.idarticulo,ar.articulo,SUM(ar.stock ) as stock, 'todo' as alm,a.nombre,a.condicion,a.tipo,m.nombre as marca,IF(lo.primera_fecha IS null,'-',date_format(DATE(lo.primera_fecha), '%d-%m-%Y')) AS primera_fecha,IF(lo.ultima_fecha IS null,'-',date_format(DATE(lo.ultima_fecha), '%d-%m-%Y')) AS ultima_fecha,a.codigo FROM articulosporalmacen ar INNER JOIN articulo a ON a.idarticulo=ar.idarticulo LEFT JOIN marca m ON m.idmarca=a.idmarca LEFT JOIN almacen al ON al.idalmacen=ar.idalmacen LEFT JOIN (SELECT l.idarticulo, l.numerolote, MIN(l.fecha) AS primera_fecha, MAX(l.fecha) AS ultima_fecha FROM lote l WHERE l.cantidad>0 GROUP BY l.idarticulo) lo ON lo.idarticulo=ar.idarticulo WHERE a.condicion=1 AND ar.stock>0 GROUP BY ar.articulo";
	}else{
		if ($idarticulo==0){
			$sql="SELECT ar.idalmacen,' ' AS almacen,COUNT(ar.idalmacen) as nroalmacen,al.nombre as almacennombre,ar.idarticulo,ar.articulo,SUM(ar.stock ) as stock, 'todo' as alm,a.nombre,a.condicion,a.tipo,m.nombre as marca,c.nombre AS categoria,IF(lo.primera_fecha IS null,'-',date_format(DATE(lo.primera_fecha), '%d-%m-%Y')) AS primera_fecha,IF(lo.ultima_fecha IS null,'-',date_format(DATE(lo.ultima_fecha), '%d-%m-%Y')) AS ultima_fecha,a.codigo FROM articulosporalmacen ar INNER JOIN articulo a ON a.idarticulo=ar.idarticulo LEFT JOIN marca m ON m.idmarca=a.idmarca LEFT JOIN categoria c ON c.idcategoria=a.idcategoria LEFT JOIN almacen al ON al.idalmacen=ar.idalmacen LEFT JOIN (SELECT l.idarticulo, l.numerolote, MIN(l.fecha) AS primera_fecha, MAX(l.fecha) AS ultima_fecha FROM lote l WHERE l.cantidad>0 GROUP BY l.idarticulo) lo ON lo.idarticulo=ar.idarticulo WHERE a.condicion=1 AND ar.stock>0 AND a.tipoproducto='Negocio' AND ar.idalmacen='$idalmacen' GROUP BY ar.articulo";
		}else{
			$sql="SELECT ar.idalmacen,' ' AS almacen,COUNT(ar.idalmacen) as nroalmacen,al.nombre as almacennombre,ar.idarticulo,ar.articulo,SUM(ar.stock ) as stock, 'todo' as alm,a.nombre,a.condicion,a.tipo,m.nombre as marca,c.nombre AS categoria,IF(lo.primera_fecha IS null,'-',date_format(DATE(lo.primera_fecha), '%d-%m-%Y')) AS primera_fecha,IF(lo.ultima_fecha IS null,'-',date_format(DATE(lo.ultima_fecha), '%d-%m-%Y')) AS ultima_fecha,a.codigo FROM articulosporalmacen ar INNER JOIN articulo a ON a.idarticulo=ar.idarticulo LEFT JOIN marca m ON m.idmarca=a.idmarca LEFT JOIN categoria c ON c.idcategoria=a.idcategoria LEFT JOIN almacen al ON al.idalmacen=ar.idalmacen LEFT JOIN (SELECT l.idarticulo, l.numerolote, MIN(l.fecha) AS primera_fecha, MAX(l.fecha) AS ultima_fecha FROM lote l WHERE l.cantidad>0 GROUP BY l.idarticulo) lo ON lo.idarticulo=ar.idarticulo WHERE a.condicion=1 AND ar.stock>0 AND a.tipoproducto='Negocio' AND ar.idalmacen='$idalmacen' AND ar.idarticulo='$idarticulo' GROUP BY ar.articulo";
		}
	}
	//$sql="SELECT DATE(v.fecha_hora) as fecha, u.nombre as usuario, p.nombre as cliente, 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";
	//echo $sql;
	return ejecutarConsulta($sql);
}

//listar registros de pedidos pero por producto
public function listarpedidop(){
	$sql="SELECT v.num_pedido,v.estado,date_format(DATE(v.fecha_hora), '%d-%m-%Y') as fecha,p.nombre as cliente,v1.nombre AS vendedor,d.idarticulo,a.nombre as articulo,FORMAT(IF( d.cantidad IS null,0,d.cantidad),0) as cajas FROM pedido v LEFT JOIN detalle_pedido d ON d.idpedido=v.idpedido INNER JOIN persona p ON v.idcliente=p.idpersona INNER JOIN usuario u ON v.idusuario=u.idusuario INNER JOIN vendedor v1 ON v1.idvendedor=p.idvendedor LEFT JOIN articulo a ON a.idarticulo=d.idarticulo WHERE v.estado='Pendiente'  ORDER BY v.idpedido DESC";
	return ejecutarConsulta($sql);
}

//listar registros de pedidos pero por producto
public function listarpedidov(){
	$sql="SELECT v.num_pedido,v.estado,date_format(DATE(v.fecha_hora), '%d-%m-%Y') as fecha,p.nombre as cliente,v1.nombre AS vendedor,d.idarticulo,a.nombre as articulo,FORMAT(IF( d.cantidad IS null,0,d.cantidad),0) as cajas FROM pedido v LEFT JOIN detalle_pedido d ON d.idpedido=v.idpedido INNER JOIN persona p ON v.idcliente=p.idpersona INNER JOIN usuario u ON v.idusuario=u.idusuario INNER JOIN vendedor v1 ON v1.idvendedor=p.idvendedor LEFT JOIN articulo a ON a.idarticulo=d.idarticulo WHERE v.estado='Verificado' ORDER BY v.idpedido DESC";
	return ejecutarConsulta($sql);
}


public function listarnumeroarticulominimod(){
	$sql="SELECT a.idarticulo, a.codigo, a.descripcion as articulo,a.imagen,ROUND(l.cantidad,0) as stock,ROUND(a.stockminimo,0) AS stockminimo FROM articulo a INNER JOIN (SELECT idarticulo,SUM(cantidad) AS cantidad FROM lote GROUP BY idarticulo) l ON l.idarticulo=a.idarticulo WHERE l.cantidad<=a.stockminimo AND l.cantidad>=0 AND a.stockminimo>0";
	return ejecutarConsulta($sql);
}

public function listarclientecxcmas90(){
	/*
	$sql="SELECT p.idvendedor,v.idventa,p.nombre,v.num_comprobante1 as nrocxc,DATE_FORMAT(v.fecha_hora,'%d-%m-%Y') as fechafaturacion,
	FORMAT(v.total_ventaimpuestod-v.montocxc-v.montodev,2) AS monto,
	FORMAT(IF(v.estado='Pagada',(v.total_ventaimpuestod-v.montocxc-v.montodev),(IF(v.estado='Pendiente',0,((v.total_ventaimpuestod-v.montocxc-v.montodev)-(v.montopendiente/v.tasa_dollar))))),2) AS cobrado, 
	FORMAT(IF(v.estado='Pagada',0,IF(v.estado='Pendiente',(v.total_ventaimpuestod-v.montocxc-v.montodev),(v.montopendiente/v.tasa_dollar))),2) as saldo,
	v.estado 
	FROM venta v 
	INNER JOIN persona p ON p.idpersona=v.idcliente 
	WHERE v.fecha_hora < DATE_SUB(CURDATE(), INTERVAL 3 MONTH) 
	AND (v.estado='Pendiente' OR v.estado='Parcial') 
	AND v.tipo_comprobante<>'Regalo' 
	AND v.estado<>'Anulado'"; 
	*/
	
	$sql="SELECT p.idvendedor,v.idventa,p.nombre,v.num_comprobante1 as nrocxc,DATE_FORMAT(v.fecha_hora,'%d-%m-%Y') as fechafaturacion,
	FORMAT(v.total_ventaimpuestod-v.montocxc-v.montodev,2) AS monto,
	FORMAT(IF(v.estado='Pagada',(v.total_ventaimpuestod-v.montocxc-v.montodev),(IF(v.estado='Pendiente',0,((v.total_ventaimpuestod-v.montocxc-v.montodev)-(v.montopendiente/v.tasa_dollar))))),2) AS cobrado, 
	FORMAT(IF(v.estado='Pagada',0,IF(v.estado='Pendiente',(v.total_ventaimpuestod-v.montocxc-v.montodev),(v.montopendiente/v.tasa_dollar))),2) as saldo,
	v.estado,ve.nombre as vendedor,v.nrodias,
    (DATEDIFF((IF(dcd.fechacobro IS NOT null,dcd.fechacobro,(IF(v.estado<>'Pagada',CURDATE(),(IF(v.fechadespacho = '0000-00-00' OR v.fechadespacho IS NULL, v.fecha_hora, v.fechadespacho)))))), 
             IF(v.fechadespacho = '0000-00-00' OR v.fechadespacho IS NULL, v.fecha_hora, v.fechadespacho)))-v.nrodias AS diascalle,
    IF(dcd.fechacobro IS null AND v.estado='Pagada',(IF(v.fechadespacho = '0000-00-00' OR v.fechadespacho IS NULL, v.fecha_hora, v.fechadespacho)),dcd.fechacobro) AS fechac
    FROM venta v 
    INNER JOIN persona p ON p.idpersona=v.idcliente 
    LEFT JOIN vendedor ve ON ve.idvendedor=v.idvendedor
    LEFT JOIN 
    (SELECT c.idcobrocliente, dc.iddocumento, dc.num_comprobante, MAX(c.fecha_hora) as fechacobro 
     FROM detalle_cobros dc 
     INNER JOIN cobros c ON c.idcobrocliente = dc.idcobrocliente 
     WHERE c.estado <> 'Anulado' 
     GROUP BY dc.iddocumento 
     ORDER BY dc.iddocumento ASC) dcd ON dcd.iddocumento=v.idventa 
    WHERE 
    v.fecha_hora < DATE_SUB(CURDATE(), INTERVAL 3 MONTH) 
    AND (v.estado='Pendiente' OR v.estado='Parcial') 
    AND v.tipo_comprobante<>'Regalo' 
    AND v.estado<>'Anulado'";
	
	//return ejecutarConsulta($sql);
	return ejecutarConsulta($sql);
}

public function listarcobranzayear(){
	//$sql="SELECT c.*, u.nombre as usuario, p.nombre as cliente, b.nombre as cuenta,f.nombre as formapago,date_format(DATE(c.fecha_hora), '%d-%m-%Y') as fecha,de.nroscxc,de.nrosfacturas	FROM cobros c LEFT JOIN usuario u ON u.idusuario=c.idusuario LEFT JOIN persona p ON p.idpersona=c.idcliente LEFT JOIN bancocuenta b ON b.idbancocuenta=c.idbancocuenta LEFT JOIN formapago f ON f.idformapago=c.idformapago LEFT JOIN (SELECT d.idcobrocliente,GROUP_CONCAT(v.num_comprobante1 SEPARATOR ' - ') AS nroscxc,IF(v.num_comprobante=0,'',GROUP_CONCAT(v.num_comprobante SEPARATOR ' - ')) AS nrosfacturas FROM detalle_cobros d LEFT JOIN venta v ON v.idventa=d.iddocumento GROUP BY d.idcobrocliente) de ON de.idcobrocliente=c.idcobrocliente	WHERE YEAR(c.fecha_hora) = YEAR(CURDATE()) AND c.estado<>'Anulado' AND c.total_pago>0";
	$sql="SELECT c.*, u.nombre as usuario, p.nombre as cliente, b.nombre as cuenta,f.nombre as formapago,date_format(DATE(c.fecha_hora), '%d-%m-%Y') as fecha,de.nroscxc,de.nrosfacturas,	
	ve.nombre as vendedor
    FROM cobros c 
    LEFT JOIN usuario u ON u.idusuario=c.idusuario 
    LEFT JOIN persona p ON p.idpersona=c.idcliente
    LEFT JOIN vendedor ve ON ve.idvendedor=p.idvendedor
    LEFT JOIN bancocuenta b ON b.idbancocuenta=c.idbancocuenta 
    LEFT JOIN formapago f ON f.idformapago=c.idformapago 
    LEFT JOIN (SELECT d.idcobrocliente,GROUP_CONCAT(v.num_comprobante1 SEPARATOR ' - ') AS nroscxc,IF(v.num_comprobante=0,'',GROUP_CONCAT(v.num_comprobante SEPARATOR ' - ')) AS nrosfacturas FROM detalle_cobros d LEFT JOIN venta v ON v.idventa=d.iddocumento GROUP BY d.idcobrocliente) de ON de.idcobrocliente=c.idcobrocliente	
    WHERE YEAR(c.fecha_hora) = YEAR(CURDATE()) 
    AND c.estado<>'Anulado' 
    AND c.total_pago>0";
	return ejecutarConsulta($sql);
}

public function listarcobranzames(){
	$sql="SELECT c.*, u.nombre as usuario, p.nombre as cliente, b.nombre as cuenta,f.nombre as formapago,date_format(DATE(c.fecha_hora), '%d-%m-%Y') as fecha,de.nroscxc,de.nrosfacturas,
	ve.nombre as vendedor
	FROM cobros c 
	LEFT JOIN usuario u ON u.idusuario=c.idusuario 
	LEFT JOIN persona p ON p.idpersona=c.idcliente 
	LEFT JOIN vendedor ve ON ve.idvendedor=p.idvendedor
	LEFT JOIN bancocuenta b ON b.idbancocuenta=c.idbancocuenta 
	LEFT JOIN formapago f ON f.idformapago=c.idformapago 
	LEFT JOIN (SELECT d.idcobrocliente,GROUP_CONCAT(v.num_comprobante1 SEPARATOR ' - ') AS nroscxc,IF(v.num_comprobante=0,'',GROUP_CONCAT(v.num_comprobante SEPARATOR ' - ')) AS nrosfacturas FROM detalle_cobros d LEFT JOIN venta v ON v.idventa=d.iddocumento GROUP BY d.idcobrocliente) de ON de.idcobrocliente=c.idcobrocliente	
	WHERE 
	MONTH(c.fecha_hora) = MONTH(CURDATE()) 
	AND YEAR(c.fecha_hora) = YEAR(CURDATE()) AND c.estado<>'Anulado' AND c.total_pago>0";
	return ejecutarConsulta($sql);
}

//Mes Anterior
public function listarcobranzamesa(){
	$sql="SELECT 
    c.*, 
    u.nombre as usuario, 
    p.nombre as cliente, 
    b.nombre as cuenta, 
    f.nombre as formapago, 
    date_format(DATE(c.fecha_hora), '%d-%m-%Y') as fecha, 
    de.nroscxc, 
    de.nrosfacturas,
    ve.nombre as vendedor
    FROM cobros c 
    LEFT JOIN usuario u ON u.idusuario=c.idusuario 
    LEFT JOIN persona p ON p.idpersona=c.idcliente
    LEFT JOIN vendedor ve ON ve.idvendedor=p.idvendedor
    LEFT JOIN bancocuenta b ON b.idbancocuenta=c.idbancocuenta 
    LEFT JOIN formapago f ON f.idformapago=c.idformapago 
    LEFT JOIN (
    SELECT 
        d.idcobrocliente,
        GROUP_CONCAT(v.num_comprobante1 SEPARATOR ' - ') AS nroscxc,
        IF(v.num_comprobante=0, '', GROUP_CONCAT(v.num_comprobante SEPARATOR ' - ')) AS nrosfacturas 
    FROM detalle_cobros d 
    LEFT JOIN venta v ON v.idventa=d.iddocumento 
    GROUP BY d.idcobrocliente
    ) de ON de.idcobrocliente=c.idcobrocliente 
    WHERE 
    MONTH(c.fecha_hora) = MONTH(CURDATE() - INTERVAL 1 MONTH) 
    AND YEAR(c.fecha_hora) = YEAR(CURDATE() - INTERVAL 1 MONTH) 
    AND c.estado<>'Anulado' 
    AND c.total_pago>0;";
	return ejecutarConsulta($sql);
}

public function listarcajasdeschadasmes(){
	$sql="SELECT ve.nombre as vendedor,de.articulo,sum(de.cajas) as cajas FROM venta v LEFT JOIN logisticadespacho l ON l.idventa=v.idventa INNER JOIN (SELECT d.idventa,d.idarticulo,ar.nombre as articulo,SUM(d.cantidad-d.cantidadev) as cajas FROM detalle_venta d INNER JOIN articulo ar ON ar.idarticulo=d.idarticulo GROUP BY idventa,idarticulo) de ON de.idventa=v.idventa INNER JOIN persona p ON p.idpersona=v.idcliente LEFT JOIN vendedor ve ON ve.idvendedor=p.idvendedor INNER JOIN usuario u ON v.idusuario=u.idusuario WHERE l.estado='Despachada' AND v.tipo_comprobante<>'Regalo' AND v.fechadespacho >= DATE_FORMAT(CURDATE(), '%Y-%m-01') AND v.fechadespacho < DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01') GROUP BY p.idvendedor,de.idarticulo ORDER BY ve.nombre ASC,de.idarticulo";
	return ejecutarConsulta($sql);
}

public function listarinventariounidadespendiente($idalmacen,$idarticulo){
	$sql="SELECT v.idventa, 
        v.estado, 
        IF(l.estado IS null,IF(v.estado='Parcial','Pendiente',v.estado),l.estado) as estadol,
        SUM(d.cantidad-d.cantidadev) as total_cajaspendiente,
        a.nombre as articulo,
        al.nombre as almacen,
        c.nombre AS categoria,
        a.codigo 
        FROM venta v 
        INNER JOIN detalle_venta d ON d.idventa=v.idventa 
        LEFT JOIN articulo a ON a.idarticulo=d.idarticulo 
        LEFT JOIN categoria c ON c.idcategoria=a.idcategoria 
        LEFT join almacen al ON al.idalmacen=d.idalmacen 
        LEFT JOIN logisticadespacho l ON l.idventa=v.idventa 
        WHERE v.estado<>'Anulado' AND 
        v.estado<>'Pagada' AND 
        v.tipo_comprobante<>'Regalo' AND 
        v.fecha_hora>='2023-01-01' AND 
        (((IF(l.estado IS null,IF(v.estado='Parcial','Pendiente',v.estado),l.estado))='EnTransito') OR ((IF(l.estado IS null,IF(v.estado='Parcial','Pendiente',v.estado),l.estado))='Pendiente')) 
        GROUP BY d.idarticulo,d.idalmacen 
        ORDER BY d.idarticulo";
	return ejecutarConsulta($sql);
}

public function listarinventarioalmacen(){
	$sql="(SELECT ar.idarticulo, ar.articulo, SUM(ar.stock) AS stock, c.nombre AS categoria, a.codigo, al.nombre AS almacen, 'Disponible' AS estado
         FROM articulosporalmacen ar
         INNER JOIN articulo a ON a.idarticulo = ar.idarticulo
         LEFT JOIN marca m ON m.idmarca = a.idmarca
         LEFT JOIN categoria c ON c.idcategoria = a.idcategoria
         LEFT JOIN almacen al ON al.idalmacen = ar.idalmacen
         LEFT JOIN (SELECT l.idarticulo, l.numerolote, MIN(l.fecha) AS primera_fecha, MAX(l.fecha) AS ultima_fecha FROM lote l WHERE l.cantidad > 0 GROUP BY l.idarticulo) lo ON lo.idarticulo = ar.idarticulo
         WHERE a.condicion = 1 AND ar.stock > 0 AND a.tipoproducto = 'Negocio'
         GROUP BY ar.articulo)
        UNION ALL
        (SELECT d.idarticulo, a.nombre AS articulo, SUM(d.cantidad - d.cantidadev) AS stock, c.nombre AS categoria, a.codigo, al.nombre AS almacen, 'Por-Despachar' AS estado
         FROM venta v
         INNER JOIN detalle_venta d ON d.idventa = v.idventa
         LEFT JOIN articulo a ON a.idarticulo = d.idarticulo
         LEFT JOIN categoria c ON c.idcategoria = a.idcategoria
         LEFT JOIN almacen al ON al.idalmacen = d.idalmacen
         LEFT JOIN logisticadespacho l ON l.idventa = v.idventa
         WHERE v.estado <> 'Anulado' AND v.estado <> 'Pagada' AND v.tipo_comprobante <> 'Regalo' AND v.fecha_hora >= '2023-01-01'
           AND (((IF(l.estado IS NULL, IF(v.estado = 'Parcial', 'Pendiente', v.estado), l.estado)) = 'EnTransito')
                OR ((IF(l.estado IS NULL, IF(v.estado = 'Parcial', 'Pendiente', v.estado), l.estado)) = 'Pendiente'))
         GROUP BY d.idarticulo, d.idalmacen)
        ORDER BY idarticulo, estado";
	return ejecutarConsulta($sql);
}





public function listarclientecxcmespa(){
	$sql="SELECT 
    v.idvendedor,
    v.idventa,
    p.nombre,
    v.num_comprobante1 as nrocxc,
    DATE_FORMAT(v.fecha_hora, '%d-%m-%Y') as fechafaturacion,
    FORMAT((v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje), 2) AS monto,
    FORMAT(
        IF(
            v.estado = 'Pagada',
            (v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje),
            IF(
                v.estado = 'Pendiente',
                0,
                ((v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje) - (v.montopendiente / v.tasa_dollar))
            )
        ),
        2
    ) AS cobrado,
    FORMAT(
        IF(
            v.estado = 'Pagada',
            0,
            IF(
                v.estado = 'Pendiente',
                (v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje),
                (v.montopendiente / v.tasa_dollar)
            )
        ),
        2
    ) as saldo,
    v.estado
FROM 
    venta v
INNER JOIN 
    persona p ON p.idpersona = v.idcliente
INNER JOIN 
    (SELECT idventa, SUM(cantidad - cantidadev) as cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa = v.idventa
WHERE 
    YEAR(v.fecha_hora) = YEAR(CURDATE() - INTERVAL 1 MONTH)
    AND MONTH(v.fecha_hora) = MONTH(CURDATE() - INTERVAL 1 MONTH)
    AND v.tipo_comprobante <> 'Regalo'
    AND v.estado <> 'Anulado';
";
	return ejecutarConsulta($sql);
}

// por cliente y articulo
/*
public function listarclientecxcunidadesmesa(){
	$sql="SELECT 
    p.idvendedor,
    v.idventa,
    MAX(p.nombre) AS nombre,
    v.num_comprobante1 as nrocxc,
    DATE_FORMAT(v.fecha_hora, '%d-%m-%Y') as fechafaturacion,
    d.idarticulo,
    a.nombre AS articulo,
    SUM(d.cajas) AS cajas,
    v.estado 
FROM 
    venta v
INNER JOIN 
    persona p ON p.idpersona = v.idcliente
INNER JOIN 
    (SELECT idventa, idarticulo, SUM(cantidad - cantidadev) as cajas FROM detalle_venta GROUP BY idventa, idarticulo) d ON d.idventa = v.idventa
LEFT JOIN 
    articulo a ON a.idarticulo = d.idarticulo 
WHERE 
    YEAR(v.fecha_hora) = YEAR(CURDATE() - INTERVAL 1 MONTH)
    AND MONTH(v.fecha_hora) = MONTH(CURDATE() - INTERVAL 1 MONTH)
    AND v.tipo_comprobante <> 'Regalo'
    AND v.estado <> 'Anulado' 
GROUP BY 
    v.idventa, d.idarticulo 
ORDER BY 
    v.idventa, d.idarticulo;
";
	return ejecutarConsulta($sql);
}
*/

//por vendedor y articulo
public function listarclientecxcunidadesmesa(){
	$sql="SELECT p.idvendedor, 
        ve.nombre as vendedor, 
        v.idventa, 
        MAX(p.nombre) AS nombre, 
        v.num_comprobante1 as nrocxc, 
        DATE_FORMAT(v.fecha_hora, '%d-%m-%Y') as fechafaturacion, 
        d.idarticulo, a.nombre AS articulo, 
        SUM(d.cajas) AS cajas, v.estado 
        FROM venta v 
        INNER JOIN persona p ON p.idpersona = v.idcliente 
        LEFT JOIN vendedor ve ON ve.idvendedor=v.idvendedor 
        INNER JOIN (SELECT idventa, idarticulo, SUM(cantidad - cantidadev) as cajas FROM detalle_venta GROUP BY idventa, idarticulo) d ON d.idventa = v.idventa LEFT JOIN articulo a ON a.idarticulo = d.idarticulo 
        WHERE 
        YEAR(v.fecha_hora) = YEAR(CURDATE() - INTERVAL 1 MONTH) AND 
        MONTH(v.fecha_hora) = MONTH(CURDATE() - INTERVAL 1 MONTH) AND 
        v.tipo_comprobante <> 'Regalo' 
        AND v.estado <> 'Anulado' 
        GROUP BY p.idvendedor, d.idarticulo 
        ORDER BY p.idvendedor, d.idarticulo";
	return ejecutarConsulta($sql);
}



public function listarcajasdeschadasmesanterior(){
	//Fecha de la factura
	//$sql="SELECT ve.nombre as vendedor,de.articulo,sum(de.cajas) as cajas FROM venta v LEFT JOIN logisticadespacho l ON l.idventa=v.idventa INNER JOIN (SELECT d.idventa,d.idarticulo,ar.nombre as articulo,SUM(d.cantidad-d.cantidadev) as cajas FROM detalle_venta d INNER JOIN articulo ar ON ar.idarticulo=d.idarticulo GROUP BY idventa,idarticulo) de ON de.idventa=v.idventa INNER JOIN persona p ON p.idpersona=v.idcliente LEFT JOIN vendedor ve ON ve.idvendedor=p.idvendedor INNER JOIN usuario u ON v.idusuario=u.idusuario WHERE l.estado='Despachada' AND v.tipo_comprobante<>'Regalo' AND v.fecha_hora >= DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01') AND v.fecha_hora < DATE_FORMAT(CURDATE(), '%Y-%m-01') GROUP BY p.idvendedor,de.idarticulo ORDER BY ve.nombre ASC,de.idarticulo";
	
	//Fecha de Despacho
	$sql="SELECT ve.nombre as vendedor,
        de.articulo,
        sum(de.cajas) as cajas 
        FROM venta v LEFT JOIN logisticadespacho l ON l.idventa=v.idventa 
        INNER JOIN (SELECT d.idventa,d.idarticulo,ar.nombre as articulo,SUM(d.cantidad-d.cantidadev) as cajas FROM detalle_venta d INNER JOIN articulo ar ON ar.idarticulo=d.idarticulo GROUP BY idventa,idarticulo) de ON de.idventa=v.idventa 
        INNER JOIN persona p ON p.idpersona=v.idcliente 
        LEFT JOIN vendedor ve ON ve.idvendedor=v.idvendedor 
        INNER JOIN usuario u ON v.idusuario=u.idusuario 
        WHERE l.estado='Despachada' AND v.tipo_comprobante<>'Regalo' AND v.fechadespacho >= DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01') AND v.fechadespacho < DATE_FORMAT(CURDATE(), '%Y-%m-01') GROUP BY p.idvendedor,de.idarticulo ORDER BY ve.nombre ASC,de.idarticulo";
	return ejecutarConsulta($sql);
}

//Nuevos mes en curso
public function ventasmesvendedor(){
	$sql="SELECT 
    v.idvendedor, 
    ve.nombre AS vendedor, 
    ve.idgerente, 
    IFNULL(ve1.nombre, 'OFICINA') AS gerente, 
    IFNULL(ve1.color, '#d5ffff') AS color, 
    FORMAT(SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje), 2) AS venta, 
    FORMAT(SUM(d.cajas), 0) AS cajas,
    ROUND(SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje) / (SELECT SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje) FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' AND YEAR(NOW()) = YEAR(v.fecha_hora) AND MONTH(NOW()) = MONTH(v.fecha_hora)) * 100, 2) 
        AS porcentaje_venta,
    ROUND(SUM(d.cajas) / (SELECT SUM(d.cajas) FROM venta v INNER JOIN (SELECT idventa, SUM(cantidad - cantidadev) AS cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa = v.idventa WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' AND YEAR(NOW()) = YEAR(v.fecha_hora) AND MONTH(NOW()) = MONTH(v.fecha_hora)) * 100, 2) 
        AS porcentaje_cajas,
    YEAR(v.fecha_hora) AS ANO 
    FROM 
        venta v 
    INNER JOIN 
        (SELECT idventa, SUM(cantidad - cantidadev) AS cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa = v.idventa 
    LEFT JOIN 
        persona p ON p.idpersona = v.idcliente 
    LEFT JOIN 
        vendedor ve ON ve.idvendedor = v.idvendedor 
    LEFT JOIN 
        vendedor ve1 ON ve1.idvendedor = ve.idgerente 
    WHERE 
        v.estado <> 'Anulado' 
        AND v.tipo_comprobante <> 'Regalo' 
        AND YEAR(NOW()) = YEAR(v.fecha_hora) 
        AND MONTH(NOW()) = MONTH(v.fecha_hora) 
    GROUP BY 
        v.idvendedor, ve1.idvendedor 
    ORDER BY 
        ve.idgerente DESC, porcentaje_cajas DESC";
	
	return ejecutarConsulta($sql);
}

public function ventasmesproducto(){
	$sql="SELECT 
    d.idventa,
    d.idarticulo,
    a.nombre AS articulo,
    FORMAT(SUM(d.cantidad - d.cantidadev), 0) AS cajas,
    ROUND(SUM(d.cantidad - d.cantidadev) / (SELECT SUM(d.cantidad - d.cantidadev) 
                                             FROM detalle_venta d 
                                             INNER JOIN venta v ON v.idventa = d.idventa 
                                             WHERE v.estado <> 'Anulado' 
                                               AND v.tipo_comprobante <> 'Regalo' 
                                               AND YEAR(NOW()) = YEAR(v.fecha_hora) 
                                               AND MONTH(NOW()) = MONTH(v.fecha_hora)) * 100, 2) 
    AS porcentaje_cajas
    FROM 
        detalle_venta d
    INNER JOIN 
        venta v ON v.idventa = d.idventa
    LEFT JOIN 
        articulo a ON a.idarticulo = d.idarticulo
    WHERE 
        v.estado <> 'Anulado' 
        AND v.tipo_comprobante <> 'Regalo' 
        AND YEAR(NOW()) = YEAR(v.fecha_hora) 
        AND MONTH(NOW()) = MONTH(v.fecha_hora)
    GROUP BY 
        d.idarticulo
    ORDER BY 
        porcentaje_cajas DESC";
	
	return ejecutarConsulta($sql);
}

public function ventasmescanales(){
	$sql="SELECT 
    v.idvendedor, 
    ve.nombre AS vendedor, 
    ve.idgerente, 
    IFNULL(ve1.nombre, 'OFICINA') AS gerente, 
    IFNULL(ve1.color, '#d5ffff') AS color, 
    FORMAT(SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje), 2) AS venta, 
    FORMAT(SUM(d.cajas), 2) AS cajas,
    ROUND(SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje) / (SELECT SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje) FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' AND YEAR(NOW()) = YEAR(v.fecha_hora) AND MONTH(NOW()) = MONTH(v.fecha_hora)) * 100, 2) 
        AS porcentaje_venta,
    ROUND(SUM(d.cajas) / (SELECT SUM(d.cajas) FROM venta v INNER JOIN (SELECT idventa, SUM(cantidad - cantidadev) AS cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa = v.idventa WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' AND YEAR(NOW()) = YEAR(v.fecha_hora) AND MONTH(NOW()) = MONTH(v.fecha_hora)) * 100, 2) 
        AS porcentaje_cajas,
    YEAR(v.fecha_hora) AS ANO 
    FROM 
        venta v 
    INNER JOIN 
        (SELECT idventa, SUM(cantidad - cantidadev) AS cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa = v.idventa 
    LEFT JOIN 
        persona p ON p.idpersona = v.idcliente 
    LEFT JOIN 
        vendedor ve ON ve.idvendedor = v.idvendedor 
    LEFT JOIN 
        vendedor ve1 ON ve1.idvendedor = ve.idgerente 
    WHERE 
        v.estado <> 'Anulado' 
        AND v.tipo_comprobante <> 'Regalo' 
        AND YEAR(NOW()) = YEAR(v.fecha_hora) 
        AND MONTH(NOW()) = MONTH(v.fecha_hora) 
    GROUP BY 
        ve1.idvendedor 
    ORDER BY 
        porcentaje_cajas DESC;
";
	
	return ejecutarConsulta($sql);
}

//Nuevos mes en anterior
public function ventasmesvendedora(){
	$sql="SELECT 
    v.idvendedor, 
    ve.nombre AS vendedor, 
    ve.idgerente, 
    IFNULL(ve1.nombre, 'OFICINA') AS gerente, 
    IFNULL(ve1.color, '#d5ffff') AS color, 
    FORMAT(SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje), 2) AS venta, 
    FORMAT(SUM(d.cajas), 0) AS cajas,
    ROUND(SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje) / (SELECT SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje) FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' AND YEAR(v.fecha_hora) = YEAR(CURDATE() - INTERVAL 1 MONTH) AND MONTH(v.fecha_hora) = MONTH(CURDATE() - INTERVAL 1 MONTH)) * 100, 2) 
        AS porcentaje_venta,
    ROUND(SUM(d.cajas) / (SELECT SUM(d.cajas) FROM venta v INNER JOIN (SELECT idventa, SUM(cantidad - cantidadev) AS cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa = v.idventa WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' AND YEAR(v.fecha_hora) = YEAR(CURDATE() - INTERVAL 1 MONTH) AND MONTH(v.fecha_hora) = MONTH(CURDATE() - INTERVAL 1 MONTH)) * 100, 2) 
        AS porcentaje_cajas,
    YEAR(v.fecha_hora) AS ANO 
    FROM 
        venta v 
    INNER JOIN 
        (SELECT idventa, SUM(cantidad - cantidadev) AS cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa = v.idventa 
    LEFT JOIN 
        persona p ON p.idpersona = v.idcliente 
    LEFT JOIN 
        vendedor ve ON ve.idvendedor = v.idvendedor 
    LEFT JOIN 
        vendedor ve1 ON ve1.idvendedor = ve.idgerente 
    WHERE 
        v.estado <> 'Anulado' 
        AND v.tipo_comprobante <> 'Regalo' 
        AND YEAR(v.fecha_hora) = YEAR(CURDATE() - INTERVAL 1 MONTH) 
	    AND MONTH(v.fecha_hora) = MONTH(CURDATE() - INTERVAL 1 MONTH) 
    GROUP BY 
        v.idvendedor, ve1.idvendedor 
    ORDER BY 
        ve.idgerente DESC, porcentaje_cajas DESC";
	
	return ejecutarConsulta($sql);
}

public function ventasmesproductoa(){
	$sql="SELECT 
    d.idventa,
    d.idarticulo,
    a.nombre AS articulo,
    FORMAT(SUM(d.cantidad - d.cantidadev), 0) AS cajas,
    ROUND(SUM(d.cantidad - d.cantidadev) / (SELECT SUM(d.cantidad - d.cantidadev) 
                                             FROM detalle_venta d 
                                             INNER JOIN venta v ON v.idventa = d.idventa 
                                             WHERE v.estado <> 'Anulado' 
                                               AND v.tipo_comprobante <> 'Regalo' 
                                               AND YEAR(NOW()) = YEAR(v.fecha_hora) 
                                               AND MONTH(NOW()) = MONTH(v.fecha_hora)) * 100, 2) 
    AS porcentaje_cajas
    FROM 
        detalle_venta d
    INNER JOIN 
        venta v ON v.idventa = d.idventa
    LEFT JOIN 
        articulo a ON a.idarticulo = d.idarticulo
    WHERE 
        v.estado <> 'Anulado' 
        AND v.tipo_comprobante <> 'Regalo' 
        AND YEAR(v.fecha_hora) = YEAR(CURDATE() - INTERVAL 1 MONTH) 
	    AND MONTH(v.fecha_hora) = MONTH(CURDATE() - INTERVAL 1 MONTH)
    GROUP BY 
        d.idarticulo
    ORDER BY 
        porcentaje_cajas DESC";
	
	return ejecutarConsulta($sql);
}

public function ventasmescanalesa(){
	$sql="SELECT 
    v.idvendedor, 
    ve.nombre AS vendedor, 
    ve.idgerente, 
    IFNULL(ve1.nombre, 'OFICINA') AS gerente, 
    IFNULL(ve1.color, '#d5ffff') AS color, 
    FORMAT(SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje), 2) AS venta, 
    FORMAT(SUM(d.cajas), 2) AS cajas,
    ROUND(SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje) / (SELECT SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje) FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' AND YEAR(v.fecha_hora) = YEAR(CURDATE() - INTERVAL 1 MONTH) AND MONTH(v.fecha_hora) = MONTH(CURDATE() - INTERVAL 1 MONTH)) * 100, 2) 
        AS porcentaje_venta,
    ROUND(SUM(d.cajas) / (SELECT SUM(d.cajas) FROM venta v INNER JOIN (SELECT idventa, SUM(cantidad - cantidadev) AS cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa = v.idventa WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' AND YEAR(v.fecha_hora) = YEAR(CURDATE() - INTERVAL 1 MONTH) AND MONTH(v.fecha_hora) = MONTH(CURDATE() - INTERVAL 1 MONTH)) * 100, 2) 
        AS porcentaje_cajas,
    YEAR(v.fecha_hora) AS ANO 
    FROM 
        venta v 
    INNER JOIN 
        (SELECT idventa, SUM(cantidad - cantidadev) AS cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa = v.idventa 
    LEFT JOIN 
        persona p ON p.idpersona = v.idcliente 
    LEFT JOIN 
        vendedor ve ON ve.idvendedor = v.idvendedor 
    LEFT JOIN 
        vendedor ve1 ON ve1.idvendedor = ve.idgerente 
    WHERE 
        v.estado <> 'Anulado' 
        AND v.tipo_comprobante <> 'Regalo' 
        AND YEAR(v.fecha_hora) = YEAR(CURDATE() - INTERVAL 1 MONTH) 
	    AND MONTH(v.fecha_hora) = MONTH(CURDATE() - INTERVAL 1 MONTH) 
    GROUP BY 
        ve1.idvendedor 
    ORDER BY 
        porcentaje_cajas DESC;
";
	
	return ejecutarConsulta($sql);
}

//Año
public function ventasvendedoryear(){
	$sql="SELECT 
     v.idvendedor, 
    ve.nombre AS vendedor, 
    ve.idgerente, 
    IFNULL(ve1.nombre, 'OFICINA') AS gerente, 
    IFNULL(ve1.color, '#d5ffff') AS color, 
    FORMAT(SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje), 2) AS venta, 
    FORMAT(SUM(d.cajas), 0) AS cajas,
    ROUND(SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje) / (SELECT SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje) FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' AND YEAR(v.fecha_hora) = YEAR(CURDATE() - INTERVAL 1 MONTH) AND MONTH(v.fecha_hora) = MONTH(CURDATE() - INTERVAL 1 MONTH)) * 100, 2) 
        AS porcentaje_venta,
    ROUND(SUM(d.cajas) / (SELECT SUM(d.cajas) FROM venta v INNER JOIN (SELECT idventa, SUM(cantidad - cantidadev) AS cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa = v.idventa WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' AND YEAR(v.fecha_hora) = YEAR(CURDATE() - INTERVAL 1 MONTH) AND MONTH(v.fecha_hora) = MONTH(CURDATE() - INTERVAL 1 MONTH)) * 100, 2) 
        AS porcentaje_cajas,
    YEAR(v.fecha_hora) AS ANO 
	FROM 
		venta v 
	INNER JOIN 
		(SELECT idventa, SUM(cantidad - cantidadev) AS cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa = v.idventa 
	LEFT JOIN 
		persona p ON p.idpersona = v.idcliente 
	LEFT JOIN 
		vendedor ve ON ve.idvendedor = v.idvendedor 
	LEFT JOIN 
		vendedor ve1 ON ve1.idvendedor = ve.idgerente 
	WHERE 
		v.estado <> 'Anulado' 
		AND v.tipo_comprobante <> 'Regalo' 
		AND YEAR(v.fecha_hora) = YEAR(CURDATE())
	GROUP BY 
		v.idvendedor, ve1.idvendedor
	ORDER BY 
        ve.idgerente DESC, porcentaje_cajas DESC;
	";
	return ejecutarConsulta($sql);
}

public function ventasproductoyear(){
	$sql="SELECT 
    d.idventa,
    d.idarticulo,
    a.nombre AS articulo,
    FORMAT(SUM(d.cantidad - d.cantidadev), 0) AS cajas,
    ROUND(SUM(d.cantidad - d.cantidadev) / (SELECT SUM(d.cantidad - d.cantidadev) 
                                             FROM detalle_venta d 
                                             INNER JOIN venta v ON v.idventa = d.idventa 
                                             WHERE v.estado <> 'Anulado' 
                                               AND v.tipo_comprobante <> 'Regalo' 
                                               AND YEAR(NOW()) = YEAR(v.fecha_hora) 
                                               AND MONTH(NOW()) = MONTH(v.fecha_hora)) * 100, 2) 
    AS porcentaje_cajas
	FROM 
		detalle_venta d 
	INNER JOIN 
		venta v ON v.idventa = d.idventa 
	LEFT JOIN 
		articulo a ON a.idarticulo = d.idarticulo 
	WHERE 
		v.estado <> 'Anulado' 
		AND v.tipo_comprobante <> 'Regalo' 
		AND YEAR(v.fecha_hora) = YEAR(CURDATE())
	GROUP BY 
		d.idarticulo
	ORDER BY 
        porcentaje_cajas DESC
	";
	return ejecutarConsulta($sql);
}

public function ventascanalesyear(){
	$sql="SELECT 
     v.idvendedor, 
    ve.nombre AS vendedor, 
    ve.idgerente, 
    IFNULL(ve1.nombre, 'OFICINA') AS gerente, 
    IFNULL(ve1.color, '#d5ffff') AS color, 
    FORMAT(SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje), 2) AS venta, 
    FORMAT(SUM(d.cajas), 0) AS cajas,
    ROUND(SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje) / (SELECT SUM(v.total_ventaimpuestod - v.montocxc - v.montodev + v.montoigtfporcentaje) FROM venta v WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' AND YEAR(v.fecha_hora) = YEAR(CURDATE() - INTERVAL 1 MONTH) AND MONTH(v.fecha_hora) = MONTH(CURDATE() - INTERVAL 1 MONTH)) * 100, 2) 
        AS porcentaje_venta,
    ROUND(SUM(d.cajas) / (SELECT SUM(d.cajas) FROM venta v INNER JOIN (SELECT idventa, SUM(cantidad - cantidadev) AS cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa = v.idventa WHERE v.estado <> 'Anulado' AND v.tipo_comprobante <> 'Regalo' AND YEAR(v.fecha_hora) = YEAR(CURDATE() - INTERVAL 1 MONTH) AND MONTH(v.fecha_hora) = MONTH(CURDATE() - INTERVAL 1 MONTH)) * 100, 2) 
        AS porcentaje_cajas,
    YEAR(v.fecha_hora) AS ANO  
	FROM 
		venta v 
	INNER JOIN 
		(SELECT idventa, SUM(cantidad - cantidadev) AS cajas FROM detalle_venta GROUP BY idventa) d ON d.idventa = v.idventa 
	LEFT JOIN 
		persona p ON p.idpersona = v.idcliente 
	LEFT JOIN 
		vendedor ve ON ve.idvendedor = v.idvendedor 
	LEFT JOIN 
		vendedor ve1 ON ve1.idvendedor = ve.idgerente 
	WHERE 
		v.estado <> 'Anulado' 
		AND v.tipo_comprobante <> 'Regalo' 
		AND YEAR(v.fecha_hora) = YEAR(CURDATE())
	GROUP BY 
        ve1.idvendedor 
    ORDER BY 
        porcentaje_cajas DESC
	";
	return ejecutarConsulta($sql);
}

public function cajasdeschadasyear(){
	$sql="SELECT 
		v.idventa, 
		IF(v.fechadespacho = '0000-00-00', 'sin fecha', DATE_FORMAT(v.fechadespacho, '%d-%m-%Y')) AS fechadespacho,
		IF(v.fechadespacho = '0000-00-00', DATEDIFF(NOW(), DATE(v.fecha_hora)), DATEDIFF(NOW(), DATE(v.fechadespacho))) AS diasdecobranza,
		DATE_FORMAT(DATE(v.fecha_hora), '%d-%m-%Y') AS fecha,
		u.nombre AS usuario,
		p.nombre AS cliente,
		IF(l.estado IS NULL, IF(v.estado = 'Parcial', 'Pendiente', v.estado), l.estado) AS estadol,
		p.idvendedor,
		ve.nombre AS vendedor,
		SUM(de.cajas) AS total_cajas
		FROM 
			venta v 
		LEFT JOIN 
			logisticadespacho l ON l.idventa = v.idventa
		INNER JOIN 
			(SELECT idventa, SUM(cantidad - cantidadev) AS cajas FROM detalle_venta GROUP BY idventa) de ON de.idventa = v.idventa
		INNER JOIN 
			persona p ON p.idpersona = v.idcliente 
		LEFT JOIN 
			vendedor ve ON ve.idvendedor = p.idvendedor  
		INNER JOIN 
			usuario u ON v.idusuario = u.idusuario 
		WHERE 
			l.estado = 'Despachada' 
			AND v.tipo_comprobante <> 'Regalo' 
			AND YEAR(v.fechadespacho) = YEAR(CURDATE())
		ORDER BY 
			v.idventa DESC;
		";
        
	return ejecutarConsulta($sql);
}




}

 ?>
