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


	//implementamos nuestro constructor
public function __construct(){

}


/*bade de datos
idpagocliente,  idcliente, idformapago, idusuario, idtipopagos, idbancocuenta, 
referencia, fecha_hora, total_pago, retencion, estado

insertar($idpersona,$idformapago,$idusuario,$idtipopagos,$idbancocuenta,$referencia,$fecha_hora,
		$total_pago,$agenteretencion,		
		$_POST["iddocumento"], $_POST["num_comprobante"], $_POST["tipo_comprobante"], $_POST["montod"], $_POST["abono"],
		$_POST["pendiente"], $_POST["estado"], $_POST["pago"])
*/
//metodo insertar regiustro
public function insertar($idpersona,$idformapago,$idusuario,$idtipopagos,$idbancocuenta,$referencia,$fecha_hora,
$total_pago,$total_pagob,$tasacambioventa,$agenteretencion,$iddocumento, $num_comprobante, $tipo_comprobante, $montod,$montodd, $abono,$pendiente, $estado, $idventa){
	$total_pagob1=$total_pago*$tasacambioventa;
	$sql="INSERT INTO cobros (idcliente,idformapago,idusuario,idtipopagos,idbancocuenta,referencia,fecha_hora,
	total_pago,total_pagob,tasacambioventa,retencion,estado) 
	VALUES ('$idpersona','$idformapago','$idusuario','$idtipopagos','$idbancocuenta','$referencia','$fecha_hora','$total_pago','$total_pagob1','$tasacambioventa','no','Pago')";
	//echo $sql;
	$sw				=	true;
	$idpagosnew		=	ejecutarConsulta_retornarID($sql) or $sw=false;
	$num_elementos	=	0;
	/* echo ' Numero de elemento : '.count($num_comprobante);
	echo ' Estado : '.$estado[$num_elementos];
	echo ' num_comprobante : '.$num_comprobante[1]; */
	//Pagada, Parcial, Pendiente estado de los documentos
	while ($num_elementos < count($num_comprobante)) {
		//Se agrega el detalle de la compra
		if (($estado[$num_elementos]=='Pagada')||($estado[$num_elementos]=='Parcial')) {
			if (($estado[$num_elementos]=='Pagada')){
				$montobs = $montodd[$num_elementos]*$tasacambioventa;
				$sql_detalle = "INSERT INTO detalle_cobros (idcobrocliente, iddocumento, num_comprobante, tipo_comprobante, montod, montob,abono, pendiente, estado)
				VALUES('$idpagosnew','$idventa[$num_elementos]','$num_comprobante[$num_elementos]','$tipo_comprobante[$num_elementos]','$montodd[$num_elementos]','$montobs','$abono[$num_elementos]','$pendiente[$num_elementos]','Pago')";
				//echo $sql_detalle;
				ejecutarConsulta($sql_detalle) or $sw=false;
				//Ahora actualizamos la factura
				if ($sw){
					if ($tipo_comprobante[$num_elementos]=='Notadebito') {
						$sql_update = "UPDATE notadebito SET montopendiente=$pendiente[$num_elementos]*tasa_dollar, estado='$estado[$num_elementos]' WHERE idnotadebito='$idventa[$num_elementos]'";
					} else {
						$sql_update = "UPDATE venta SET montopendiente=$pendiente[$num_elementos]*tasa_dollar, estado='$estado[$num_elementos]' WHERE idventa='$idventa[$num_elementos]'";
					}
					
					
				//	echo $sql_update;
					ejecutarConsulta($sql_update) or $sw=false;
				}
			}else{
				if (($estado[$num_elementos]=='Parcial')and($abono[$num_elementos]>0)){
					$montobs = $montodd[$num_elementos]*$tasacambioventa;
					$sql_detalle = "INSERT INTO detalle_cobros (idcobrocliente, iddocumento, num_comprobante, tipo_comprobante, montod, montob,abono, pendiente, estado)
					VALUES('$idpagosnew','$idventa[$num_elementos]','$num_comprobante[$num_elementos]','$tipo_comprobante[$num_elementos]','$montodd[$num_elementos]','$montobs','$abono[$num_elementos]','$pendiente[$num_elementos]','Pago')";
				//	echo $sql_detalle;
					ejecutarConsulta($sql_detalle) or $sw=false;
					//Ahora actualizamos la factura
					if ($sw){
						if ($tipo_comprobante[$num_elementos]=='Notadebito') {
							$sql_update = "UPDATE notadebito SET montopendiente=$pendiente[$num_elementos]*tasa_dollar, estado='$estado[$num_elementos]' WHERE idnotadebito='$idventa[$num_elementos] AND $abono[$num_elementos]>0'";
						} else {
							$sql_update = "UPDATE venta SET montopendiente=$pendiente[$num_elementos]*tasa_dollar, estado='$estado[$num_elementos]' WHERE idventa='$idventa[$num_elementos]' AND $abono[$num_elementos]>0";
						}
						;
				//		echo $sql_update;
						ejecutarConsulta($sql_update) or $sw=false;
					}
				}
			}
		}
		$num_elementos=$num_elementos+1;
	 }
	 //Ahora actualizamos banco
	 if ($sw){
		$sql_banco = "INSERT INTO detalle_movimientobanco (idbancocuenta, idmovimiento, tipo_movimiento, montod, estado) 
		VALUES('$idbancocuenta','$idpagosnew','Cobro','$total_pago','Cobro')";
	//	echo $sql_banco;
		ejecutarConsulta($sql_banco) or $sw=false;
	 }
	 return $sw;
}

public function insertarfueraruta($idpersona,$idformapago,$idusuario,$idtipopagos,$idbancocuenta,$referencia,$fecha_hora,
$total_pago,$total_pagob,$tasacambioventa,$agenteretencion,$iddocumento, $num_comprobante, $tipo_comprobante, $montod,$montodd, $abono,$pendiente, $estado, $idventa){
	$sql="INSERT INTO cobrosv (idcliente,idformapago,idusuario,idtipopagos,idbancocuenta,referencia,fecha_hora,
	total_pago,total_pagob,tasacambioventa,retencion,estado) 
	VALUES ('$idpersona','$idformapago','$idusuario','$idtipopagos','$idbancocuenta','$referencia','$fecha_hora','$total_pago','$total_pagob','$tasacambioventa','no','Pago')";
	//echo $sql;
	$sw				=	true;
	$idpagosnew		=	ejecutarConsulta_retornarID($sql) or $sw=false;
	$num_elementos	=	0;
	/* echo ' Numero de elemento : '.count($num_comprobante);
	echo ' Estado : '.$estado[$num_elementos];
	echo ' num_comprobante : '.$num_comprobante[1]; */
	//Pagada, Parcial, Pendiente estado de los documentos
	while ($num_elementos < count($num_comprobante)) {
		//Se agrega el detalle de la compra
		if (($estado[$num_elementos]=='Pagada')||($estado[$num_elementos]=='Parcial')) {
			if (($estado[$num_elementos]=='Pagada')){
				$sql_detalle = "INSERT INTO detalle_cobrosv (idcobrocliente, iddocumento, num_comprobante, tipo_comprobante, montod, montob,abono, pendiente, estado)
				VALUES('$idpagosnew','$idventa[$num_elementos]','$num_comprobante[$num_elementos]','$tipo_comprobante[$num_elementos]','$montodd[$num_elementos]','$montod[$num_elementos]','$abono[$num_elementos]','$pendiente[$num_elementos]','Pago')";
				//echo $sql_detalle;
				ejecutarConsulta($sql_detalle) or $sw=false;
				//Ahora actualizamos la factura
			/* 	if ($sw){
					$sql_update = "UPDATE venta SET montopendiente=$pendiente[$num_elementos]*tasa_dollar, estado='$estado[$num_elementos]' 
					WHERE idventa='$idventa[$num_elementos]'";
				//	echo $sql_update;
					ejecutarConsulta($sql_update) or $sw=false;
				} */
			}else{
				if (($estado[$num_elementos]=='Parcial')and($abono[$num_elementos]>0)){
					$sql_detalle = "INSERT INTO detalle_cobrosv (idcobrocliente, iddocumento, num_comprobante, tipo_comprobante, montod, montob,abono, pendiente, estado)
					VALUES('$idpagosnew','$idventa[$num_elementos]','$num_comprobante[$num_elementos]','$tipo_comprobante[$num_elementos]','$montodd[$num_elementos]','$montod[$num_elementos]','$abono[$num_elementos]','$pendiente[$num_elementos]','Pago')";
				//	echo $sql_detalle;
					ejecutarConsulta($sql_detalle) or $sw=false;
					//Ahora actualizamos la factura
				/* 	if ($sw){
						$sql_update = "UPDATE venta SET montopendiente=$pendiente[$num_elementos]*tasa_dollar, estado='$estado[$num_elementos]' 
						WHERE idventa='$idventa[$num_elementos]'";
				//		echo $sql_update;
						ejecutarConsulta($sql_update) or $sw=false;
					} */
				}
			}
		}
		$num_elementos=$num_elementos+1;
	 }
	 //Ahora actualizamos banco
	 if ($sw){
		$sql_banco = "INSERT INTO detalle_movimientobanco (idbancocuenta, idmovimiento, tipo_movimiento, montod, estado) 
		VALUES('$idbancocuenta','$idpagosnew','Cobro','$total_pago','Cobro')";
	//	echo $sql_banco;
		ejecutarConsulta($sql_banco) or $sw=false;
	 }
	 return $sw;
}

/*
public function insertarvendedorruta($idpersona,$idformapago,$idusuario,$idtipopagos,$idbancocuenta,$referencia,$fecha_hora,
$total_pago,$total_pagob,$tasacambioventa,$agenteretencion,$iddocumento, $num_comprobante, $tipo_comprobante, $montod,$montodd, $abono,$pendiente, $estado, $idventa){
	$total_pagob1=$total_pago*$tasacambioventa;
	$sql="INSERT INTO cobrosv (idcliente,idformapago,idusuario,idtipopagos,idbancocuenta,referencia,fecha_hora,
	total_pago,total_pagob,tasacambioventa,retencion,estado) 
	VALUES ('$idpersona','$idformapago','$idusuario','$idtipopagos','$idbancocuenta','$referencia','$fecha_hora','$total_pago','$total_pagob1','$tasacambioventa','no','Pago')";
	//echo $sql;
	$sw				=	true;
	$idpagosnew		=	ejecutarConsulta_retornarID($sql) or $sw=false;
	$num_elementos	=	0;
	/// echo ' Numero de elemento : '.count($num_comprobante);
	//echo ' Estado : '.$estado[$num_elementos];
	//echo ' num_comprobante : '.$num_comprobante[1]; 
	//Pagada, Parcial, Pendiente estado de los documentos
	while ($num_elementos < count($num_comprobante)) {
		//Se agrega el detalle de la compra
		
		
		//Buscamos saldo del documento para corregir cualquier dato erroneo
		$sqls       ="SELECT idventa, total_ventaimpuestod,IF(montopendiente>0,(montopendiente/tasa_dollar),(total_ventaimpuestod-montocxc-montodev)) as saldo,estado 
		              FROM venta WHERE idventa = '$idventa[$num_elementos]'";
		echo $sqls;
		$results    =ejecutarConsulta($sqls);
		$filas 	= mysqli_fetch_assoc($results);
		$saldo  = $filas["saldo"];
		if($montodd[$num_elementos]!=$saldo){
		    $montodd[$num_elementos]=$saldo;
		}
		        
		if (($estado[$num_elementos]=='Pagada')||($estado[$num_elementos]=='Parcial')) {
			if (($estado[$num_elementos]=='Pagada')){
				$montobs = $montodd[$num_elementos]*$tasacambioventa;
				$sql_detalle = "INSERT INTO detalle_cobrosv (idcobrocliente, iddocumento, num_comprobante, tipo_comprobante, montod, montob,abono, pendiente, estado)
				VALUES('$idpagosnew','$idventa[$num_elementos]','$num_comprobante[$num_elementos]','$tipo_comprobante[$num_elementos]','$montodd[$num_elementos]','$montobs','$abono[$num_elementos]','$pendiente[$num_elementos]','Pago')";
				//echo $sql_detalle;
				ejecutarConsulta($sql_detalle) or $sw=false;
				//Ahora actualizamos la factura
				// if ($sw){
				//	$sql_update = "UPDATE venta SET montopendiente=$pendiente[$num_elementos]*tasa_dollar, estado='$estado[$num_elementos]' 
				//	WHERE idventa='$idventa[$num_elementos]'";
				//	echo $sql_update;
				//	ejecutarConsulta($sql_update) or $sw=false;
				//} 
			}else{
				if (($estado[$num_elementos]=='Parcial')and($abono[$num_elementos]>0)){
					$montobs = $montodd[$num_elementos]*$tasacambioventa;
					$sql_detalle = "INSERT INTO detalle_cobrosv (idcobrocliente, iddocumento, num_comprobante, tipo_comprobante, montod, montob,abono, pendiente, estado)
					VALUES('$idpagosnew','$idventa[$num_elementos]','$num_comprobante[$num_elementos]','$tipo_comprobante[$num_elementos]','$montodd[$num_elementos]','$montobs','$abono[$num_elementos]','$pendiente[$num_elementos]','Pago')";
				//	echo $sql_detalle;
					ejecutarConsulta($sql_detalle) or $sw=false;
					//Ahora actualizamos la factura
					// if ($sw){
					//	$sql_update = "UPDATE venta SET montopendiente=$pendiente[$num_elementos]*tasa_dollar, estado='$estado[$num_elementos]' 
					//	WHERE idventa='$idventa[$num_elementos]'";
				//		echo $sql_update;
					//	ejecutarConsulta($sql_update) or $sw=false;
					//} 
				}
			}
		}
		$num_elementos=$num_elementos+1;
	 }
	 //Ahora actualizamos banco
	//	 if ($sw){
	//		$sql_banco = "INSERT INTO detalle_movimientobancov (idbancocuenta, idmovimiento, tipo_movimiento, montod, estado) 
	//		VALUES('$idbancocuenta','$idpagosnew','Cobro','$total_pago','Cobro')";
		//	echo $sql_banco;
	//		ejecutarConsulta($sql_banco) or $sw=false;
	//	 }
	 return $sw;
}
*/

public function insertarretencion($idpersona,$idformapago,$idusuario,$idtipopagos,$idbancocuenta,$referencia,$fecha_hora,
$total_pago,$total_pagob,$tasacambioventa,$agenteretencion,$iddocumento, $num_comprobante, $tipo_comprobante, $montod,$montodd, $abono,$pendiente, $estado, $idventa){
	$total_pagob1=$total_pago*$tasacambioventa;
	$sql="INSERT INTO cobros (idcliente,idformapago,idusuario,idtipopagos,idbancocuenta,referencia,fecha_hora,
	total_pago,total_pagob,tasacambioventa,retencion,estado) 
	VALUES ('$idpersona','$idformapago','$idusuario','$idtipopagos','$idbancocuenta','$referencia','$fecha_hora','$total_pago','$total_pagob1','$tasacambioventa','si','Retencion')";
	//echo $sql;
	$sw				=	true;
	$idpagosnew		=	ejecutarConsulta_retornarID($sql) or $sw=false;
	$num_elementos	=	0;
	$num_elementos1	=	0;
	/* echo ' Numero de elemento : '.count($num_comprobante);
	echo ' Estado : '.$estado[$num_elementos];
	echo ' num_comprobante : '.$num_comprobante[1]; */
	//Pagada, Parcial, Pendiente estado de los documentos
	while ($num_elementos < count($num_comprobante)) {
		//Se agrega el detalle de la compra
		if (($estado[$num_elementos]=='Pagada')||($estado[$num_elementos]=='Parcial')) {
			if (($estado[$num_elementos]=='Pagada')){
				$montobs = $montodd[$num_elementos]*$tasacambioventa;
				$sql_detalle = "INSERT INTO detalle_cobros (idcobrocliente, iddocumento, num_comprobante, tipo_comprobante, montod, montob,abono, pendiente, estado)
				VALUES('$idpagosnew','$idventa[$num_elementos]','$num_comprobante[$num_elementos]','$tipo_comprobante[$num_elementos]','$montodd[$num_elementos]','$montobs','$abono[$num_elementos]','$pendiente[$num_elementos]','Pago')";
				//echo $sql_detalle;
				ejecutarConsulta($sql_detalle) or $sw=false;
				//Ahora actualizamos la factura
				if ($sw){
					$sql_update = "UPDATE venta SET montopendiente=$pendiente[$num_elementos]*tasa_dollar, estado='$estado[$num_elementos]' 
					WHERE idventa='$idventa[$num_elementos]'";
				//	echo $sql_update;
					ejecutarConsulta($sql_update) or $sw=false;
				}
			}else{
				if (($estado[$num_elementos]=='Parcial')and($abono[$num_elementos]>0)){
					$montobs = $montodd[$num_elementos]*$tasacambioventa;
					$sql_detalle = "INSERT INTO detalle_cobros (idcobrocliente, iddocumento, num_comprobante, tipo_comprobante, montod, montob,abono, pendiente, estado)
					VALUES('$idpagosnew','$idventa[$num_elementos]','$num_comprobante[$num_elementos]','$tipo_comprobante[$num_elementos]','$montodd[$num_elementos]','$montobs','$abono[$num_elementos]','$pendiente[$num_elementos]','Pago')";
				//	echo $sql_detalle;
					ejecutarConsulta($sql_detalle) or $sw=false;
					//Ahora actualizamos la factura
					if ($sw){
						$sql_update = "UPDATE venta SET montopendiente=$pendiente[$num_elementos]*tasa_dollar, estado='$estado[$num_elementos]' 
						WHERE idventa='$idventa[$num_elementos]' AND $abono[$num_elementos]>0";
				//		echo $sql_update;
						ejecutarConsulta($sql_update) or $sw=false;
					}
				}
			}
		}
		if($sw == false){
			$num_elementos1=$num_elementos1+1;
		}	
		$num_elementos=$num_elementos+1;
	}
	 //Ahora actualizamos banco
	 //if ($sw){
	//	$sql_banco = "INSERT INTO detalle_movimientobanco (idbancocuenta, idmovimiento, tipo_movimiento, montod, estado) 
	//	VALUES('$idbancocuenta','$idpagosnew','Cobro','$total_pago','Cobro')";
	//	echo $sql_banco;
	//	ejecutarConsulta($sql_banco) or $sw=false;
	// }
	$sw = true;
	if($num_elementos1>0){
		$sw = false;
	}
	 return $sw;
}

//Pagocliente->editar('1', '', '2', '', '1', '1-Dollar', '455555', '', '', '', '4,43', '', Array, Array, Array, Array, Array, Array, Array) 
/*
public function editar($idpagocliente,$idpersona,$idformapago,$idusuario,$idtipopagos,$idbancocuenta,$referencia,$fecha_hora,
$total_pago,$total_pagob,$tasacambioventa,$agenteretencion,$iddocumento, $num_comprobante, $tipo_comprobante, $montod,$montodb, $abono,$pendiente, $estado){
	$sql="UPDATE cobrosv SET idcliente='$idpersona',idformapago='$idformapago',idusuario='$idusuario',idtipopagos='$idtipopagos',
	idbancocuenta='$idbancocuenta',referencia='$referencia',fecha_hora='$fecha_hora',total_pago='$total_pago',total_pagob='$total_pagob',tasacambioventa='$tasacambioventa' 
	WHERE idcobrocliente='$idpagocliente'";
	// idcliente,idformapago,idusuario,idtipopagos,idbancocuenta,referencia,fecha_hora,
	//total_pago,total_pagob,tasacambioventa,retencion,estado 
	return($sql);
// 	return ejecutarConsulta($sql); 
}
*/

public function editarfueraruta($idpagocliente,$idpersona,$idformapago,$idusuario,$idtipopagos,$idbancocuenta,$referencia,$fecha_hora,
$total_pago,$total_pagob,$tasacambioventa,$agenteretencion,$iddocumento, $num_comprobante, $tipo_comprobante, $montod,$montodb, $abono,$pendiente, $estado){
	$sql="UPDATE cobrosv SET idcliente='$idpersona',idformapago='$idformapago',idusuario='$idusuario',idtipopagos='$idtipopagos',
	idbancocuenta='$idbancocuenta',referencia='$referencia',fecha_hora='$fecha_hora',total_pago='$total_pago',total_pagob='$total_pagob',tasacambioventa='$tasacambioventa' 
	WHERE idcobrocliente='$idpagocliente'";
	/* idcliente,idformapago,idusuario,idtipopagos,idbancocuenta,referencia,fecha_hora,
	total_pago,total_pagob,tasacambioventa,retencion,estado */
	return($sql);
/* 	return ejecutarConsulta($sql); */
}

/* $rspta=$pagocliente->editarv($idpagocliente,$idpersonap,$idformapago,$idusuario,$idtipopagos,$idbancocuentap,$referencia,$fecha_horap,
			$total_pagov,$total_pagovb,$tasacambioventa,		
			$_POST["iddocumento"], $_POST["num_comprobante"], $_POST["tipo_comprobante"], $_POST["montod"],$_POST["montodb"] ,$_POST["abono"],
			$_POST["pendiente"],$_POST["idcobrocliente"],$_POST["iddetalle_cobro"]); */

public function editarv($idpagocliente,$idpersona,$idformapago,$idusuario,$idtipopagos,$idbancocuenta,$referencia,$fecha_hora,
$total_pago,$total_pagob,$tasacambioventa,$iddocumento, $num_comprobante, $tipo_comprobante, $montod,$montodb, $abono,$pendiente,$idcobrocliente,$iddetalle_cobro){
	
	$sql="UPDATE cobrosv SET idcliente='$idpersona',idformapago='$idformapago',idusuario='$idusuario',idtipopagos='$idtipopagos',
	idbancocuenta='$idbancocuenta',referencia='$referencia',fecha_hora='$fecha_hora',total_pago='$total_pago',total_pagob='$total_pagob',tasacambioventa='$tasacambioventa' 
	WHERE idcobrocliente='$idpagocliente'";
	$sw				=	true;
	ejecutarConsulta($sql) or $sw=false;
	$num_elementos	=	0;
	if ($sw){
		while ($num_elementos < count($num_comprobante)) {
			$sqld	="UPDATE detalle_cobrosv SET abono='$abono[$num_elementos]',pendiente='$pendiente[$num_elementos]'	WHERE iddetalle_cobro='$iddetalle_cobro[$num_elementos]'";
			$sw		=	true;
			ejecutarConsulta($sqld) or $sw=false;
			$num_elementos=$num_elementos+1;
		}
	}
	return $sw;
}

public function editarvv($idpagocliente,$idpersona,$idformapago,$idusuario,$idtipopagos,$idbancocuenta,$referencia,$fecha_hora,
$total_pago,$total_pagob,$tasacambioventa,$iddocumento, $num_comprobante, $tipo_comprobante, $montod,$montodb, $abono,$pendiente,$idcobrocliente,$iddetalle_cobro){
	
	$sql="UPDATE cobros SET idcliente='$idpersona',idformapago='$idformapago',idusuario='$idusuario',idtipopagos='$idtipopagos',
	idbancocuenta='$idbancocuenta',referencia='$referencia',fecha_hora='$fecha_hora',total_pago='$total_pago',total_pagob='$total_pagob',tasacambioventa='$tasacambioventa' 
	WHERE idcobrocliente='$idpagocliente'";
	$sw				=	true;
	ejecutarConsulta($sql) or $sw=false;
	//echo $sql;
	//Procesar Movimiento Bancarios
	if ($sw){
		$sql_banco = "UPDATE detalle_movimientobanco SET idbancocuenta='$idbancocuenta', montod='$total_pago' WHERE idmovimiento='$idpagocliente' AND tipo_movimiento='Cobro'";
			ejecutarConsulta($sql_banco) or $sw=false;
		//	echo $sql_banco;
	}
	//Procesamos el detalle de movimiento
	$num_elementos	=	0;
	if ($sw){
		while ($num_elementos < count($num_comprobante)) {
			$sqld	="UPDATE detalle_cobros SET abono='$abono[$num_elementos]',pendiente='$pendiente[$num_elementos]'	WHERE iddetalle_cobro='$iddetalle_cobro[$num_elementos]'";
			$sw		=	true;
			ejecutarConsulta($sqld) or $sw=false;
		//	echo $sqld.' id documento: '.$iddocumento[$num_elementos];
			
			//Se verifica el documento de venta y se actualiza su estado
			if ($sw){
				$iddoc 				= $iddocumento[$num_elementos];
				$sqldv 				= "SELECT v.total_ventaimpuestod, IF(((SELECT SUM(d.montod) FROM detalle_cobros d WHERE d.iddocumento='$iddoc')) is null,0,((SELECT SUM(IF(d.pendiente>0,d.abono,d.montod)) FROM detalle_cobros d WHERE d.iddocumento='$iddoc' AND estado<>'Anulado'))) as cobrado,v.tasa_dollar FROM venta v WHERE v.idventa='$iddoc'";
				$result				=	ejecutarConsulta($sqldv) or $sw=false;
				$sw						=	true;
			//	echo $sqldv;
				if (mysqli_num_rows($result) > 0) {
					while($fila 	= mysqli_fetch_assoc($result)){
						$cobrado1 							= $fila["cobrado"];
						$total_ventaimpuestod1	= $fila["total_ventaimpuestod"];
						$tasa_dollar1						= $fila["tasa_dollar"];
						$estado1 								='Pendiente';
						$pendiente1							= 0;
						if($cobrado1>0){
							$pendiente1	=	$total_ventaimpuestod1 - $cobrado1;
							$estado1 		=	'Parcial';
							if($pendiente1<=0){
								$pendiente1	= 0;
								$estado1 		=	'Pagada';
							}
						}
						$montopendiente1	=$pendiente1*$tasa_dollar1;
						$sql_update 		= "UPDATE venta SET montopendiente='$montopendiente1', estado='$estado1' WHERE idventa='$iddoc'";
						$sw							=	true;
						ejecutarConsulta($sql_update) or $sw=false;
					//	echo $sql_update;
					}	
				}	
			}	

			$num_elementos=$num_elementos+1;
		}
	}

	return $sw;
}

//Pagocliente->editar('1', '', '2', '', '1', '1-Dollar', '455555', '', '', '', '4,43', '', Array, Array, Array, Array, Array, Array, Array) 
public function editarretencion($idpagocliente,$idpersona,$idformapago,$idusuario,$idtipopagos,$idbancocuenta,$referencia,$fecha_hora,
$total_pago,$total_pagob,$tasacambioventa,$agenteretencion,$iddocumento, $num_comprobante, $tipo_comprobante, $montod,$montodb, $abono,$pendiente, $estado){
	$sql="UPDATE cobrosv SET idcliente='$idpersona',idformapago='$idformapago',idusuario='$idusuario',idtipopagos='$idtipopagos',
	idbancocuenta='$idbancocuenta',referencia='$referencia',fecha_hora='$fecha_hora',total_pago='$total_pago',total_pagob='$total_pagob',tasacambioventa='$tasacambioventa' 
	WHERE idcobrocliente='$idpagocliente'";
	/* idcliente,idformapago,idusuario,idtipopagos,idbancocuenta,referencia,fecha_hora,
	total_pago,total_pagob,tasacambioventa,retencion,estado */
	return($sql);
    /* 	return ejecutarConsulta($sql); */
}

public function eliminarp($idpagocliente){
	
	$sql="UPDATE cobros SET estado='Anulado',total_pago=0,total_pagob=0 WHERE idcobrocliente='$idpagocliente'";
	$sw				=	true;
	ejecutarConsulta($sql) or $sw=false;
	//echo $sql;
	//Guardamos el cobro en otra tabla
	$sql1="INSERT INTO cobrosd (idcobrocliente,idcliente,idformapago,idusuario,idtipopagos,idbancocuenta,referencia,fecha_hora,
				total_pago,total_pagob,tasacambioventa,retencion,estado)
  			SELECT idcobrocliente,idcliente,idformapago,idusuario,idtipopagos,idbancocuenta,referencia,fecha_hora,
				total_pago,total_pagob,tasacambioventa,retencion,'Anulado' as estado
  			FROM cobros WHERE idcobrocliente='$idpagocliente'";
	ejecutarConsulta($sql1) or $sw=false;
	//echo $sql1;
	//Procesar Movimiento Bancarios
	if ($sw){
		$sql_banco = "UPDATE detalle_movimientobanco SET estado='Anulado' WHERE idmovimiento='$idpagocliente' AND tipo_movimiento='Cobro'";
		ejecutarConsulta($sql_banco) or $sw=false;
		//echo $sql_banco;
		$sql_banco1 = "INSERT INTO detalle_movimientobancod (iddetalle_movimientobanco, idbancocuenta, idmovimiento, tipo_movimiento, montod, adicional, adicional2, estado) 
								SELECT iddetalle_movimientobanco, idbancocuenta, idmovimiento, tipo_movimiento, montod, adicional, adicional2, 'Anulado' as estado
								FROM detalle_movimientobanco WHERE idmovimiento='$idpagocliente' AND tipo_movimiento='Cobro'";
	
		ejecutarConsulta($sql_banco1) or $sw=false;
		//echo $sql_banco1;
	}
	//Procesamos el detalle de movimiento
	$num_elementos	=	0;
	if ($sw){
		$sqldc 		= "SELECT iddetalle_cobro,idcobrocliente, iddocumento, num_comprobante, tipo_comprobante, 
		montod, montob, abono, pendiente, estado FROM detalle_cobros WHERE idcobrocliente='$idpagocliente'";
		$result1	=	ejecutarConsulta($sqldc) or $sw=false;
		//echo $sqldc;
			if (mysqli_num_rows($result1) > 0) {
				while($fila1 	= mysqli_fetch_assoc($result1)){
					$iddetalle_cobro 	= $fila1["iddetalle_cobro"];
					$iddocumento			= $fila1["iddocumento"];
					$sqld	="UPDATE detalle_cobros SET estado='Anulado' WHERE iddetalle_cobro='$iddetalle_cobro'";
					$sw		=	true;
					ejecutarConsulta($sqld) or $sw=false;
					//echo $sqld;
					
					$sqld1="INSERT INTO detalle_cobrosd (idcobrocliente, iddocumento, num_comprobante, tipo_comprobante, 
					montod, montob, abono, pendiente, estado) SELECT idcobrocliente, iddocumento, num_comprobante, tipo_comprobante, 
					montod, montob, abono, pendiente, estado FROM detalle_cobros WHERE iddetalle_cobro='$iddetalle_cobro'";
					ejecutarConsulta($sqld1) or $sw=false;
					//echo $sqld1;
				
					
					//Se verifica el documento de venta y se actualiza su estado
					if ($sw){
						$iddoc 				= $iddocumento;
						$sqldv 				= "SELECT v.total_ventaimpuestod, IF(((SELECT SUM(d.montod) FROM detalle_cobros d WHERE d.iddocumento='$iddoc')) is null,0,((SELECT SUM(IF(d.pendiente>0,d.abono,d.montod)) FROM detalle_cobros d WHERE d.iddocumento='$iddoc' AND estado<>'Anulado'))) as cobrado,v.tasa_dollar FROM venta v WHERE v.idventa='$iddoc'";
						$result				=	ejecutarConsulta($sqldv) or $sw=false;
					
						//echo $sqldv;
						if (mysqli_num_rows($result) > 0) {
							while($fila 	= mysqli_fetch_assoc($result)){
								$cobrado1 							= $fila["cobrado"];
								$total_ventaimpuestod1	= $fila["total_ventaimpuestod"];
								$tasa_dollar1						= $fila["tasa_dollar"];
								$estado1 								='Pendiente';
								$pendiente1							= 0;
								if($cobrado1>0){
									$pendiente1	=	$total_ventaimpuestod1 - $cobrado1;
									$estado1 		=	'Parcial';
									if($pendiente1<=0){
										$pendiente1	= 0;
										$estado1 		=	'Pagada';
									}
								}
								$montopendiente1	=$pendiente1*$tasa_dollar1;
								$sql_update 		= "UPDATE venta SET montopendiente='$montopendiente1', estado='$estado1' WHERE idventa='$iddoc'";
								$sw							=	true;
								ejecutarConsulta($sql_update) or $sw=false;
								//echo $sql_update;
							}	
						}	
					}	

					$num_elementos=$num_elementos+1;
				
				}
			}	
	}


	return $sw;
}


/* INSERT INTO table1 (col1, col2, col3, …)
  SELECT col1, col2, col3, …
  FROM table2 */



public function procesarp($idpagocliente,$tasacambioventa){
	/* 
	
	Para ChocoMilk este proceso no se realizar solamente se va validar el pago
	
	//Procesar Pago cobros
	$sql="INSERT INTO cobros (idcliente,idformapago,idusuario,idtipopagos,idbancocuenta,referencia,fecha_hora,
				total_pago,total_pagob,tasacambioventa,retencion,estado)
				SELECT idcliente,idformapago,idusuario,idtipopagos,idbancocuenta,referencia,fecha_hora,
				total_pago,total_pagob,tasacambioventa,retencion,estado
  			FROM cobrosv WHERE idcobrocliente='$idpagocliente' AND estado='Pago' LIMIT 1";
	$sw						=	true;
	$idpagosnew		=	ejecutarConsulta_retornarID($sql) or $sw=false;

	//Procesar Movimiento Bancarios
	if ($sw){
		$sql_banco = "INSERT INTO detalle_movimientobanco (idbancocuenta, idmovimiento, tipo_movimiento, montod, estado) 
								SELECT idbancocuenta, $idpagosnew as idmovimiento, 'Cobro' as tipo_movimiento, total_pago, 'Cobro' as estado
								FROM cobros WHERE idcobrocliente='$idpagosnew'";
	
		ejecutarConsulta($sql_banco) or $sw=false;
	 }

	//Procesar Detalle de Pago
	if ($sw){
		$sqld="INSERT INTO detalle_cobros (idcobrocliente, iddocumento, num_comprobante, tipo_comprobante, 
					montod, montob, abono, pendiente, estado) SELECT $idpagosnew as idcobrocliente, iddocumento, num_comprobante, tipo_comprobante, 
					montod, montob, abono, pendiente, estado FROM detalle_cobrosv WHERE idcobrocliente='$idpagocliente'";
		ejecutarConsulta($sqld) or $sw=false;
	}
	//Procesar Pago en Documento
	if ($sw){
		$sqldv = "SELECT iddetalle_cobro, idcobrocliente, iddocumento, num_comprobante, tipo_comprobante, montod, montob, abono, pendiente, estado 
		FROM detalle_cobros WHERE idcobrocliente='$idpagosnew'";
		$result		=	ejecutarConsulta($sqldv);
		$sw=false;
		if (mysqli_num_rows($result) > 0) {
			$sw=true;
			while($fila 	= mysqli_fetch_assoc($result)){
				$iddocumento 	= $fila["iddocumento"];
				$pendiente		= $fila["pendiente"];
				$estado				= 'Pagada';
				if ($pendiente>0){
					$estado				= 'Parcial';
				}
				$mp					= $pendiente*$tasacambioventa;				
				$sql_update = "UPDATE venta SET montopendiente='$mp', estado='$estado' WHERE idventa='$iddocumento'";
				$sw		=	true;
				ejecutarConsulta($sql_update) or $sw=false;
			}
		}
	}
	
	*/
    $sw						=	true;
	//Procesar el pago y se le cambia en estado
	if ($sw){
		$sql_estado = "UPDATE cobrosv SET estado='Procesado' WHERE idcobrocliente='$idpagocliente'";
	
		ejecutarConsulta($sql_estado) or $sw=false;
	 }
	return $sw;
}


//funcion para eliminar datos
public function eliminar($idpersona){
	$sql="DELETE FROM persona WHERE idpersona='$idpersona'";
	return ejecutarConsulta($sql);
}

//funcion para anular un pago
public function anular($idpagocliente){
	$sql="UPDATE cobrosv SET estado='Anulado' WHERE idcobrocliente='$idpagocliente'";
	return ejecutarConsulta($sql);
}

//metodo para mostrar registros
public function mostrar($idpagocliente){
	$sql="SELECT * FROM cobros WHERE idcobrocliente='$idpagocliente'";
	return ejecutarConsultaSimpleFila($sql);
}

public function mostrarcv($idpagocliente){
	$sql="SELECT v.*, DATE(fecha_hora) AS fecha,b.tipomoneda, CONCAT(v.idbancocuenta,'-',b.tipomoneda) AS idbancocuenta1 FROM cobrosv v LEFT JOIN bancocuenta b ON b.idbancocuenta=v.idbancocuenta WHERE idcobrocliente='$idpagocliente'";
	return ejecutarConsultaSimpleFila($sql);
}

public function mostrarcv1($idpagocliente){
	$sql="SELECT v.*, DATE(fecha_hora) AS fecha,b.tipomoneda, CONCAT(v.idbancocuenta,'-',b.tipomoneda) AS idbancocuenta1 FROM cobros v LEFT JOIN bancocuenta b ON b.idbancocuenta=v.idbancocuenta WHERE idcobrocliente='$idpagocliente'";
	return ejecutarConsultaSimpleFila($sql);
}

public function mostrarcobros($iddocumento){
	$sql="SELECT d.idcobrocliente,d.iddocumento,d.num_comprobante,d.tipo_comprobante,d.montod,d.montob,d.abono,d.pendiente,d.estado, c.idformapago,c.idtipopagos,c.idbancocuenta,c.referencia,c.tasacambioventa,c.estado,b.nombre as cuenta, f.nombre as formapago,date(c.fecha_hora) as fecha FROM detalle_cobros d INNER JOIN cobros c ON c.idcobrocliente=d.idcobrocliente LEFT JOIN bancocuenta b ON b.idbancocuenta=c.idbancocuenta LEFT JOIN formapago f ON f.idformapago=c.idformapago WHERE d.estado<>'Anulado' AND d.iddocumento='$iddocumento'";
	return ejecutarConsulta($sql);
//return $sql;
}



//listar registros
public function listarp(){
	$sql="SELECT * FROM persona WHERE tipo_persona='Proveedor'";
	return ejecutarConsulta($sql);
}

public function listar(){
	$sql="SELECT * FROM persona WHERE tipo_persona='Cliente'";
	return ejecutarConsulta($sql);
}

public function listarmovimientocobro($idmovimiento){
	$sql="SELECT d.*,v.total_ventaimpuestod-v.montocxc-v.montodev AS montodocumento FROM detalle_cobros d INNER JOIN venta v ON v.idventa=d.iddocumento WHERE idcobrocliente='$idmovimiento'";
	return ejecutarConsulta($sql);
}

public function listarmovimientocobrov($idmovimiento){
	$sql="SELECT d.*,c.*,d.montod*c.tasacambioventa as montodb,IF(d.abono=0,d.montod,d.abono) as abono1,IF(d.abono=0,d.montod,d.abono)*c.tasacambioventa as abonob1,IF(d.abono=0,0,d.montod-d.abono) as pendiente1, IF(d.abono=0,0,d.montod-d.abono)*c.tasacambioventa as pendienteb1,v.num_comprobante AS num_comprobantef,v.num_comprobante1 AS num_comprobanten FROM detalle_cobrosv d INNER JOIN cobrosv c ON c.idcobrocliente=d.idcobrocliente INNER JOIN venta v ON v.idventa=d.iddocumento WHERE d.idcobrocliente='$idmovimiento'";
	return ejecutarConsulta($sql);
}

public function listarmovimientocobrov1($idmovimiento){
	$sql="SELECT d.*,c.*,d.montod*c.tasacambioventa as montodb,IF(d.abono=0,d.montod,d.abono) as abono1,IF(d.abono=0,d.montod,d.abono)*c.tasacambioventa as abonob1,IF(d.abono=0,0,d.montod-d.abono) as pendiente1, IF(d.abono=0,0,d.montod-d.abono)*c.tasacambioventa as pendienteb1,v.num_comprobante AS num_comprobantef,v.num_comprobante1 AS num_comprobanten FROM detalle_cobros d INNER JOIN cobros c ON c.idcobrocliente=d.idcobrocliente INNER JOIN venta v ON v.idventa=d.iddocumento WHERE d.idcobrocliente='$idmovimiento'";
	return ejecutarConsulta($sql);
}

/*
public function listarpagovendedores(){
	$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 FROM cobrosv 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 
	-- WHERE c.estado='Pago'";
	//$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 FROM cobrosv 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";
	return ejecutarConsulta($sql);
}
*/

public function listarpagovendedores(){
	//$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 FROM cobrosv 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 WHERE c.estado='Pago'";
	$sql="SELECT 
			c.*, 
			u.nombre AS usuario, 
			p.nombre AS cliente,
            ve.nombre as vendedor,
			b.nombre AS cuenta,
			f.nombre AS formapago, 
			DATE_FORMAT(c.fecha_hora, '%d-%m-%Y') AS fecha, 
			CONCAT(d.num_comprobantes, ' / ', DATE_FORMAT(c.fecha_hora, '%d-%m-%Y')) AS referencias,
			d.num_comprobantes AS cxc,
            if(c.estado='Pago',1,if(c.estado='Procesado',2,3)) as orden
		FROM 
			cobrosv c
		-- Subconsulta optimizada con índices y agrupación
		INNER JOIN (
			SELECT 
				idcobrocliente,
				GROUP_CONCAT(num_comprobante SEPARATOR ' - ') AS num_comprobantes,
				SUM(montod) AS total_montod,
				SUM(montob) AS total_montob,
				SUM(abono) AS total_abono,
				SUM(pendiente) AS total_pendiente,
				estado
			FROM 
				detalle_cobrosv
			GROUP BY 
				idcobrocliente
		) d ON d.idcobrocliente = c.idcobrocliente
		-- Uso de LEFT JOIN optimizados
		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
		-- Opcional: Añadir índice para acelerar la consulta
		-- ORDER BY c.fecha_hora DESC;
        ORDER BY orden ASC
		";
	return ejecutarConsulta($sql);
}

/*
public function listarpagovendedores1(){
	$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 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";
	//$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 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 WHERE c.estado='Pago'";
	return ejecutarConsulta($sql);
}*/

public function listarpagovendedores1(){
	$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";
	//$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 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 WHERE c.estado='Pago'";
	return ejecutarConsulta($sql);
}

//Chocomilk y Bocatto
public function procesarpc($idpagocliente,$tasacambioventa){
	$sw						=	true;
	//Procesar el pago y se le cambia en estado
	if ($sw){
		$sql_estado = "UPDATE cobrosv SET estado='Procesado' WHERE idcobrocliente='$idpagocliente'";
		ejecutarConsulta($sql_estado) or $sw=false;
	 }
	return $sw;
}

public function procesarpcq($idpagocliente,$tasacambioventa){
	$sw						=	true;
	//Procesar el pago y se le cambia en estado
	if ($sw){
		$sql_estado = "UPDATE cobrosv SET estado='Pago' WHERE idcobrocliente='$idpagocliente'";
		ejecutarConsulta($sql_estado) or $sw=false;
	 }
	return $sw;
}

//Nuevo Chocomilk y Bocatto

//Listar solicitud de nota de credito

public function listarnotacreditovendedores(){
	$sql = "SELECT
			d.iddetalle_cobro,
			d.iddocumento,
			v.tipo_comprobante,
			d.num_comprobante AS num_comprobantec,
			v.num_comprobante1 AS cxc,
            IF(v.num_comprobante='','-',v.num_comprobante) AS num_factura,
			c.idcliente,
			d.idcobrocliente,
			p.nombre AS cliente,
			c.idusuario,
			u.nombre AS usuario,
			v.idvendedor,
			ve.nombre AS vendedor,
			DATE_FORMAT(c.fecha_hora, '%d-%m-%Y') as fecha,
			c.notacredito as notacreditoc,
			d.notacredito as notacreditodc,
			c.tiponotacredito,
			v.total_ventaimpuestod AS totaldocumento,
			ROUND(
				CASE 
					WHEN v.estado = 'Parcial' 
						THEN v.montopendiente / v.tasa_dollar
						ELSE (v.total_ventaimpuestod + v.montoigtfporcentaje) - (v.montocxc + v.montodev)
				END, 
			2) AS saldo,
			d.abono AS pago,
			d.estado as estadoc,
			v.estado as estadov,
			d.estadonc as estadonc,
			d.montonc   
		FROM detalle_cobrosv d
		INNER JOIN cobrosv c ON c.idcobrocliente = d.idcobrocliente
		LEFT JOIN venta v ON v.idventa = d.iddocumento
		LEFT JOIN usuario u ON u.idusuario = c.idusuario
		LEFT JOIN vendedor ve ON ve.idvendedor = v.idvendedor
		LEFT JOIN persona p ON p.idpersona = c.idcliente
		WHERE d.notacredito = 'si'
		ORDER BY 
        CASE 
            WHEN d.estadonc = 'Pendiente' THEN 1
            WHEN d.estadonc = 'Validado' THEN 2
            WHEN d.estadonc = 'Procesada' THEN 3
            ELSE 4
        END;";
	return ejecutarConsulta($sql);
}

public function listarnotacreditovendedoresv(){
	$sql = "SELECT
			c.idcliente,
			c.idusuario,
			v.idvendedor,
			s.idservicio,
			d.iddocumento as idventa,
			v.tipo_comprobante,
			-- Falta el num_notacredito y numcontrol_notacredito
			-- Se buscan aparte al momento de procesar la nota de cretido
			CURDATE() as fecha_hora,
			v.tasa_dollar*d.montonc AS total_venta,
            d.montonc AS total_ventad,
            d.montonc AS totalncd,
            v.tasa_dollar AS tasa_dollar,
            v.idclientedespacho,
            CONCAT('Solicitada por el vendedor ',ve.nombre,'  y aprobada por el Departamento de Cobranza.') AS observacion,
			-- s.idservicio as idarticulo,
			v.idventa as idarticulo,
			'N/A' as idalmacen,
			1 as cantidad,
			v.total_ventaimpuesto-(v.total_ventaimpuesto-v.total_venta) AS precio_venta,
            v.total_ventaimpuestod-(v.total_ventaimpuestod-v.total_ventad) AS precio_ventad,
			'N/A' as nrolote,
			0 as porcentaje,
			d.montonc as subtotald,
			d.iddetalle_cobro,
			d.iddocumento,
			d.num_comprobante AS num_comprobantec,
			v.num_comprobante1 AS cxc,
            IF(v.num_comprobante='','-',v.num_comprobante) AS num_factura,
			d.idcobrocliente,
			p.nombre AS cliente,
			u.nombre AS usuario,
			ve.nombre AS vendedor,
			DATE_FORMAT(c.fecha_hora, '%d-%m-%Y') as fecha,
			c.notacredito as notacreditoc,
			d.notacredito as notacreditodc,
			c.tiponotacredito,
			s.idservicio,
            s.nombre as servicio,
			v.total_ventaimpuestod AS totaldocumento,
			ROUND(
				CASE 
					WHEN v.estado = 'Parcial' 
						THEN v.montopendiente / v.tasa_dollar
						ELSE (v.total_ventaimpuestod + v.montoigtfporcentaje) - (v.montocxc + v.montodev)
				END, 
			2) AS saldo,
			d.abono AS pago,
			d.estado as estadoc,
			v.estado as estadov,
			d.estadonc as estadonc, 
			d.montonc   
		FROM detalle_cobrosv d
		INNER JOIN cobrosv c ON c.idcobrocliente = d.idcobrocliente
		LEFT JOIN venta v ON v.idventa = d.iddocumento
		LEFT JOIN usuario u ON u.idusuario = c.idusuario
		LEFT JOIN vendedor ve ON ve.idvendedor = v.idvendedor
		LEFT JOIN persona p ON p.idpersona = c.idcliente
		LEFT JOIN servicio s ON s.nombre=c.tiponotacredito
		WHERE 
		d.notacredito = 'si'
		AND (d.estadonc ='Validado' OR d.estadonc ='Procesada') 
		ORDER BY fecha ASC";
	return ejecutarConsulta($sql);
}

public function procesarncv($iddetalle_cobro,$idusuario){
	$sw						=	true;
	//Procesar el pago y se le cambia en estado
	if ($sw){
		$sql_estado = "UPDATE detalle_cobrosv SET estadonc='Validado' WHERE iddetalle_cobro='$iddetalle_cobro'";
		ejecutarConsulta($sql_estado) or $sw=false;
		//Ahora actualizamos la NC y el usuario
		$sql_nc="UPDATE cobrosv 
				SET 
				idusuario='$idusuario'
				WHERE idcobrocliente=(
					SELECT idcobrocliente 
					FROM detalle_cobrosv 
					WHERE iddetalle_cobro = '$iddetalle_cobro'
					LIMIT 1
				)";
		ejecutarConsulta($sql_nc) or $sw=false;
	 }
	return $sw;
}

public function procesarncvno($iddetalle_cobro,$idusuario){
	$sw						=	true;
	//Procesar el pago y se le cambia en estado
	if ($sw){
		$sql_estado = "UPDATE detalle_cobrosv SET estadonc='Pendiente' WHERE iddetalle_cobro='$iddetalle_cobro'";
		ejecutarConsulta($sql_estado) or $sw=false;
		//Ahora actualizamos la NC y el usuario
		$sql_nc="UPDATE cobrosv 
				SET 
				idusuario='$idusuario'
				WHERE idcobrocliente=(
					SELECT idcobrocliente 
					FROM detalle_cobrosv 
					WHERE iddetalle_cobro = '$iddetalle_cobro'
					LIMIT 1
				)";
		ejecutarConsulta($sql_nc) or $sw=false;
	 }
	return $sw;
}

public function anularnc($iddetalle_cobro,$idusuario){
	$sw						=	true;
	//Procesar el pago y se le cambia en estado
	if ($sw){
		$sql_estado = "UPDATE detalle_cobrosv SET estadonc='NoAplica' WHERE iddetalle_cobro='$iddetalle_cobro'";
		ejecutarConsulta($sql_estado) or $sw=false;
		//Ahora actualizamos la NC y el usuario
		$sql_nc="UPDATE cobrosv 
				SET 
				idusuario='$idusuario'
				WHERE idcobrocliente=(
					SELECT idcobrocliente 
					FROM detalle_cobrosv 
					WHERE iddetalle_cobro = '$iddetalle_cobro'
					LIMIT 1
				)";
		ejecutarConsulta($sql_nc) or $sw=false;
	 }
	return $sw;
}

public function procesarncvv($iddetalle_cobro,$idusuario){
	$sw						=	true;
	//Procesar el pago y se le cambia en estado
	if ($sw){
		$sql_estado = "UPDATE detalle_cobrosv SET estadonc='Procesada' WHERE iddetalle_cobro='$iddetalle_cobro'";
		ejecutarConsulta($sql_estado) or $sw=false;
		//Ahora actualizamos la NC y el usuario
		$sql_nc="UPDATE cobrosv 
				SET 
				idusuario='$idusuario'
				WHERE idcobrocliente=(
					SELECT idcobrocliente 
					FROM detalle_cobrosv 
					WHERE iddetalle_cobro = '$iddetalle_cobro'
					LIMIT 1
				)";
		ejecutarConsulta($sql_nc) or $sw=false;
	 }
	return $sw;
}

public function procesarncvnov($iddetalle_cobro,$idusuario){
	$sw						=	true;
	//Procesar el pago y se le cambia en estado
	if ($sw){
		$sql_estado = "UPDATE detalle_cobrosv SET estadonc='Validado' WHERE iddetalle_cobro='$iddetalle_cobro'";
		ejecutarConsulta($sql_estado) or $sw=false;
		//Ahora actualizamos la NC y el usuario
		$sql_nc="UPDATE cobrosv 
				SET 
				idusuario='$idusuario'
				WHERE idcobrocliente=(
					SELECT idcobrocliente 
					FROM detalle_cobrosv 
					WHERE iddetalle_cobro = '$iddetalle_cobro'
					LIMIT 1
				)";
		ejecutarConsulta($sql_nc) or $sw=false;
	 }
	return $sw;
}

public function actualizarnc($iddetalle_cobro,$montoncm,$tiponcm,$idusuario){
	$sw						=	true;
	//Procesar el pago y se le cambia en estado
	if ($sw){
		$sql_estado = "UPDATE detalle_cobrosv SET montonc='$montoncm' WHERE iddetalle_cobro='$iddetalle_cobro'";
		ejecutarConsulta($sql_estado) or $sw=false;
		//Ahora actualizamos la NC y el usuario
		$sql_nc="UPDATE cobrosv 
				SET 
				tiponotacredito='$tiponcm',
				idusuario='$idusuario'
				WHERE idcobrocliente=(
					SELECT idcobrocliente 
					FROM detalle_cobrosv 
					WHERE iddetalle_cobro = '$iddetalle_cobro'
					LIMIT 1
				)";
		ejecutarConsulta($sql_nc) or $sw=false;
	 }
	return $sw;
}

public function insertarvendedorruta($idpersona,$idformapago,$idusuario,$idtipopagos,$idbancocuenta,$referencia,$fecha_hora,
$total_pago,$total_pagob,$tasacambioventa,$agenteretencion,$notacredito,$tiponotacredito,
$iddocumento,$num_comprobante, $tipo_comprobante, $montod,$montodd, $abono,
$pendiente, $estado, $idventa,$notacredito1,$montonc){
	$total_pagob1=$total_pago*$tasacambioventa;
	$sql="INSERT INTO cobrosv (idcliente,idformapago,idusuario,idtipopagos,idbancocuenta,referencia,fecha_hora,
	total_pago,total_pagob,tasacambioventa,retencion,estado,notacredito,tiponotacredito) 
	VALUES ('$idpersona','$idformapago','$idusuario','$idtipopagos','$idbancocuenta','$referencia','$fecha_hora',
	'$total_pago','$total_pagob1','$tasacambioventa','no','Pago','$notacredito','$tiponotacredito')";
	//echo $sql;
	$sw				=	true;
	$idpagosnew		=	ejecutarConsulta_retornarID($sql) or $sw=false;
	$num_elementos	=	0;
	/* echo ' Numero de elemento : '.count($num_comprobante);
	echo ' Estado : '.$estado[$num_elementos];
	echo ' num_comprobante : '.$num_comprobante[1]; */
	//Pagada, Parcial, Pendiente estado de los documentos
	while ($num_elementos < count($num_comprobante)) {
		//Buscamos saldo del documento para corregir cualquier dato erroneo
		$sqls       ="SELECT idventa, total_ventaimpuestod,IF(montopendiente>0,(montopendiente/tasa_dollar),(total_ventaimpuestod-montocxc-montodev)) as saldo,estado 
		              FROM venta WHERE idventa = '$idventa[$num_elementos]'";
		echo $sqls;
		$results    =ejecutarConsulta($sqls);
		$filas 	= mysqli_fetch_assoc($results);
		$saldo  = $filas["saldo"];
		if($montodd[$num_elementos]!=$saldo){
		    $montodd[$num_elementos]=$saldo;
		}
        echo 'num_elementos : '.$num_elementos;
        echo '$estado[$num_elementos]: '.$estado[$num_elementos];
		//Se agrega el detalle de la compra
		if (($estado[$num_elementos]=='Pagada')||($estado[$num_elementos]=='Parcial')) {
			if (($estado[$num_elementos]=='Pagada')){
				$montobs = $montodd[$num_elementos]*$tasacambioventa;
				if (isset($notacredito1[$num_elementos])) {
					$notac = $notacredito1[$num_elementos];
				}else{
					$notac = "no";
				}
				$sql_detalle = "INSERT INTO detalle_cobrosv (idcobrocliente, iddocumento, num_comprobante, tipo_comprobante, montod, montob,abono, pendiente, estado,notacredito,montonc)
				VALUES('$idpagosnew','$idventa[$num_elementos]','$num_comprobante[$num_elementos]','$tipo_comprobante[$num_elementos]','$montodd[$num_elementos]','$montobs','$abono[$num_elementos]',
				'$pendiente[$num_elementos]','Pago','$notac','$montonc[$num_elementos]')";
				echo $sql_detalle;
				ejecutarConsulta($sql_detalle) or $sw=false;
				//Ahora actualizamos la factura
				/* if ($sw){
					$sql_update = "UPDATE venta SET montopendiente=$pendiente[$num_elementos]*tasa_dollar, estado='$estado[$num_elementos]' 
					WHERE idventa='$idventa[$num_elementos]'";
				//	echo $sql_update;
					ejecutarConsulta($sql_update) or $sw=false;
				} */
			}else{
				if (($estado[$num_elementos]=='Parcial')and($abono[$num_elementos]>0)){
					$montobs = $montodd[$num_elementos]*$tasacambioventa;
					
					if (isset($notacredito1[$num_elementos])) {
						$notac = $notacredito1[$num_elementos];
					}else{
						$notac = "no";
					}
					$sql_detalle = "INSERT INTO detalle_cobrosv (idcobrocliente, iddocumento, num_comprobante, tipo_comprobante, montod, montob,abono, pendiente, estado,notacredito,montonc)
					VALUES('$idpagosnew','$idventa[$num_elementos]','$num_comprobante[$num_elementos]','$tipo_comprobante[$num_elementos]','$montodd[$num_elementos]','$montobs','$abono[$num_elementos]',
					'$pendiente[$num_elementos]','Pago','$notac','$montonc[$num_elementos]')";
					echo $sql_detalle;
					ejecutarConsulta($sql_detalle) or $sw=false;
					//Ahora actualizamos la factura
					/* if ($sw){
						$sql_update = "UPDATE venta SET montopendiente=$pendiente[$num_elementos]*tasa_dollar, estado='$estado[$num_elementos]' 
						WHERE idventa='$idventa[$num_elementos]'";
				//		echo $sql_update;
						ejecutarConsulta($sql_update) or $sw=false;
					} */
				}
			}
		}
		$num_elementos=$num_elementos+1;
	}
	 //Ahora actualizamos banco
	//	 if ($sw){
	//		$sql_banco = "INSERT INTO detalle_movimientobancov (idbancocuenta, idmovimiento, tipo_movimiento, montod, estado) 
	//		VALUES('$idbancocuenta','$idpagosnew','Cobro','$total_pago','Cobro')";
		//	echo $sql_banco;
	//		ejecutarConsulta($sql_banco) or $sw=false;
	//	 }
	 return $sw;
}

public function editar($idpagocliente,$idpersona,$idformapago,$idusuario,$idtipopagos,$idbancocuenta,$referencia,$fecha_hora,
$total_pago,$total_pagob,$tasacambioventa,$agenteretencion,$notacredito,$tiponotacredito,$iddocumento, $num_comprobante, $tipo_comprobante, $montod,$montodb, $abono,$pendiente, $estado,$notacredito1,$montonc){
	$sql="UPDATE cobrosv SET idcliente='$idpersona',idformapago='$idformapago',idusuario='$idusuario',idtipopagos='$idtipopagos',
	idbancocuenta='$idbancocuenta',referencia='$referencia',fecha_hora='$fecha_hora',total_pago='$total_pago',total_pagob='$total_pagob',
	tasacambioventa='$tasacambioventa',notacredito='$notacredito',tiponotacredito='$tiponotacredito'
	WHERE idcobrocliente='$idpagocliente'";
	/* idcliente,idformapago,idusuario,idtipopagos,idbancocuenta,referencia,fecha_hora,
	total_pago,total_pagob,tasacambioventa,retencion,estado */
	return($sql);
/* 	return ejecutarConsulta($sql); */
}




}

 ?>
