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


	//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,$tasacambiocompra,$agenteretencion,$iddocumento, $num_comprobante, $tipo_comprobante, $montodd,$montod ,$abono,$pendiente, $estado, $idventa){
	$sql="INSERT INTO pagos (idproveedor,idformapago,idusuario,idtipopagos,idbancocuenta,referencia,fecha_hora,
	total_pago,total_pagob,tasacambiocompra,retencion,estado) 
	VALUES ('$idpersona','$idformapago','$idusuario','$idtipopagos','$idbancocuenta','$referencia','$fecha_hora','$total_pago','$total_pagob','$tasacambiocompra','no','Pago')";
	//echo $sql;
	$sw						=	true;
	//	echo $sql;
	$idpagosnew		=	ejecutarConsulta_retornarID($sql) or $sw=false;
	 $num_elementos	=	0;
	//	echo 'cantidad de elemento: '.count($num_comprobante);
	//Pagada, Parcial, Pendiente estado de los documentos
	while ($num_elementos < count($num_comprobante)) {
		//Se agrega el detalle de la compra
		//	echo 'estado de elemento: '.$estado[$num_elementos];
		if (($estado[$num_elementos]=='Pagada')||($estado[$num_elementos]=='Parcial')) {
			if (($estado[$num_elementos]=='Pagada')){
				$montobs = $montodd[$num_elementos]*$tasacambiocompra;
				$sql_detalle = "INSERT INTO detalle_pagos (idpagocliente, 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','$montodd[$num_elementos]','$pendiente[$num_elementos]','Pago')";
				echo $sql_detalle;
				ejecutarConsulta($sql_detalle) or $sw=false;
				//Ahora actualizamos la factura de ingreso
				if ($sw){
					$sql_update = "UPDATE ingreso SET montopendiente='$pendiente[$num_elementos]', estado='$estado[$num_elementos]' 
					WHERE idingreso='$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]*$tasacambiocompra;
					$sql_detalle = "INSERT INTO detalle_pagos (idpagocliente, 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 de ingreso
					if ($sw){
						$sql_update = "UPDATE ingreso SET montopendiente='$pendiente[$num_elementos]', estado='$estado[$num_elementos]' 
						WHERE idingreso='$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','Pago','$total_pago','Pago')";
		//	echo $sql_banco;
		ejecutarConsulta($sql_banco) or $sw=false;
	 }
	 return $sw;
}

public function insertaro($idpersona,$idformapago,$idusuario,$idtipopagos,$idbancocuenta,$referencia,$fecha_hora,
	$total_pago,$total_pagob,$tasacambiocompra,$agenteretencion,$iddocumento, $num_comprobante, $tipo_comprobante, $montodd,$montod ,$abono,$pendiente, $estado, $idventa){
	$sql="INSERT INTO pagos (idproveedor,idformapago,idusuario,idtipopagos,idbancocuenta,referencia,fecha_hora,
	total_pago,total_pagob,tasacambiocompra,retencion,estado) 
	VALUES ('$idpersona','$idformapago','$idusuario','$idtipopagos','$idbancocuenta','$referencia','$fecha_hora','$total_pago','$total_pagob','$tasacambiocompra','no','Pago')";
	//echo $sql;
	$sw						=	true;
	//	echo $sql;
	$idpagosnew		=	ejecutarConsulta_retornarID($sql) or $sw=false;
	 $num_elementos	=	0;
	//	echo 'cantidad de elemento: '.count($num_comprobante);
	//Pagada, Parcial, Pendiente estado de los documentos
	while ($num_elementos < count($num_comprobante)) {
		//Se agrega el detalle de la compra
		//	echo 'estado de elemento: '.$estado[$num_elementos];
		if (($estado[$num_elementos]=='Pagada')||($estado[$num_elementos]=='Parcial')) {
			$sql_detalle = "INSERT INTO detalle_pagos (idpagocliente, 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 de ingreso
		 	if ($sw){
				$sql_update = "UPDATE ordencompraingreso SET montopendiente='$pendiente[$num_elementos]', estado='$estado[$num_elementos]' 
				WHERE idordencompraingreso='$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','Pago','$total_pago','Pago')";
		//	echo $sql_banco;
		ejecutarConsulta($sql_banco) or $sw=false;
	 }
	 return $sw;
}

public function insertara($idpersona,$idformapago,$idusuario,$idtipopagos,$idbancocuenta,$referencia,$fecha_hora,
	$total_pago,$total_pagob,$tasacambiocompra,$agenteretencion,$iddocumento, $num_comprobante, $tipo_comprobante, $montodd,$montod ,$abono,$pendiente, $estado, $idventa){
	$sql="INSERT INTO pagos (idproveedor,idformapago,idusuario,idtipopagos,idbancocuenta,referencia,fecha_hora,
	total_pago,total_pagob,tasacambiocompra,retencion,estado) 
	VALUES ('$idpersona','$idformapago','$idusuario','$idtipopagos','$idbancocuenta','$referencia','$fecha_hora','$total_pago','$total_pagob','$tasacambiocompra','no','Pago')";
	//echo $sql;
	$sw						=	true;
	//	echo $sql;
	$idpagosnew		=	ejecutarConsulta_retornarID($sql) or $sw=false;
	 $num_elementos	=	0;
	//	echo 'cantidad de elemento: '.count($num_comprobante);
	//Pagada, Parcial, Pendiente estado de los documentos
	while ($num_elementos < count($num_comprobante)) {
		//Se agrega el detalle de la compra
		//	echo 'estado de elemento: '.$estado[$num_elementos];
		if (($estado[$num_elementos]=='Pagada')||($estado[$num_elementos]=='Parcial')) {
			$sql_detalle = "INSERT INTO detalle_pagos (idpagocliente, 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 de ingreso
		 /* 	if ($sw){
				$sql_update = "UPDATE ordencompraingreso SET montopendiente='$pendiente[$num_elementos]', estado='$estado[$num_elementos]' 
				WHERE idordencompraingreso='$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','Pago','$total_pago','Pago')";
		//	echo $sql_banco;
		ejecutarConsulta($sql_banco) or $sw=false;
	 }
	 return $sw;
}


public function editar($idpersona,$tipo_persona,$nombre,$tipo_documento,$num_documento,$direccion,$telefono,$email){
	$sql="UPDATE persona SET tipo_persona='$tipo_persona', nombre='$nombre',tipo_documento='$tipo_documento',num_documento='$num_documento',direccion='$direccion',telefono='$telefono',email='$email' 
	WHERE idpersona='$idpersona'";
	return ejecutarConsulta($sql);
}

//editarv($idpagoproveedor,$idpersonap,$idformapago,$idusuario,$idtipopagos,$idbancocuentap,$referencia,$fecha_horap,
//$total_pago,$total_pagob,$tasacambiocompra,		
//$_POST["iddocumento"], $_POST["num_comprobante"], $_POST["tipo_comprobante"], $_POST["montod"],$_POST["montodb"] ,$_POST["abono"],
//$_POST["pendiente"],$_POST["idcobrocliente"],$_POST["iddetalle_cobro"])

public function editarv($idpagoproveedor,$idpersona,$idformapago,$idusuario,$idtipopagos,$idbancocuenta,$referencia,$fecha_hora,
$total_pago,$total_pagob,$tasacambiocompra,$iddocumento, $num_comprobante, $tipo_comprobante, $montod,$montodb, $abono,$pendiente,$idcobrocliente,$iddetalle_cobro){
	
	$sql="UPDATE pagos SET idproveedor='$idpersona',idformapago='$idformapago',idusuario='$idusuario',idtipopagos='$idtipopagos',
	idbancocuenta='$idbancocuenta',referencia='$referencia',fecha_hora='$fecha_hora',total_pago='$total_pago',total_pagob='$total_pagob',tasacambiocompra='$tasacambiocompra' 
	WHERE idpagoproveedor='$idpagoproveedor'";
	$sw				=	true;
	echo $sql;
	ejecutarConsulta($sql) or $sw=false;
	$num_elementos	=	0;
	
	if ($sw){
		while ($num_elementos < count($num_comprobante)) {
			$sqld	="UPDATE detalle_pagos SET abono='$abono[$num_elementos]',pendiente='$pendiente[$num_elementos]'	WHERE iddetalle_venta='$iddetalle_cobro[$num_elementos]'";
			$sw		=	true;
			ejecutarConsulta($sqld) or $sw=false;
			
			//Se verifica el documento de compra y se actualiza su estado
			if ($sw){
				$iddoc 				= $iddocumento[$num_elementos];
				// Me quede aqui en modificar pago.........Ojojojo
				$sqldv 				= "SELECT i.total_compraid, IF(((SELECT SUM(d.montod) FROM detalle_pagos d WHERE d.iddocumento='$iddoc')) is null,0,((SELECT SUM(IF(d.pendiente>0,d.abono,d.montod)) FROM detalle_pagos d WHERE d.iddocumento='$iddoc' AND estado<>'Anulado'))) as pagado,(SELECT tasa_dollar FROM empresa_tasacambio WHERE 1) AS tasa_dollar FROM ingreso i WHERE i.idingreso='$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["pagado"];
						$total_ventaimpuestod1	= $fila["total_compraid"];
						$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;
						$montopendiente1	=$pendiente1;
						$sql_update 		= "UPDATE ingreso SET montopendiente='$montopendiente1', estado='$estado1' WHERE idingreso='$iddoc'";
						$sw							=	true;
						ejecutarConsulta($sql_update) or $sw=false;
						echo $sql_update;
					}	
				}	
			}
			$num_elementos=$num_elementos+1;
		}
	} 

		//Procesar Movimiento Bancarios
	if ($sw){
		$sql_banco = "UPDATE detalle_movimientobanco SET idbancocuenta='$idbancocuenta', montod='$total_pago' WHERE idmovimiento='$idpagoproveedor' AND tipo_movimiento='Pago'";
		echo $sql_banco;	
		ejecutarConsulta($sql_banco) or $sw=false;
		
	}
	

	return $sw;
}

public function eliminarp($idpagoproveedor){
	
	$sql="UPDATE pagos SET estado='Anulado' WHERE idpagoproveedor='$idpagoproveedor'";
	$sw				=	true;
	echo $sql;
	ejecutarConsulta($sql) or $sw=false;

	
	//Guardamos el cobro en otra tabla
	$sql1="INSERT INTO pagosd (idpagoproveedor, idformapago, idproveedor, idusuario, idtipopagos, idbancocuenta, referencia, fecha_hora, total_pago, total_pagob, tasacambiocompra, retencion,estado)
  			SELECT idpagoproveedor, idformapago, idproveedor, idusuario, idtipopagos, idbancocuenta, referencia, fecha_hora, total_pago, total_pagob, tasacambiocompra, retencion, 'Anulado' as estado
  			FROM pagos WHERE idpagoproveedor='$idpagoproveedor'";
	ejecutarConsulta($sql1) or $sw=false;
	echo $sql1;
	//Procesar Movimiento Bancarios
 	if ($sw){
		$sql_banco = "UPDATE detalle_movimientobanco SET estado='Anulado' WHERE idmovimiento='$idpagoproveedor' AND tipo_movimiento='Pago'";
		echo $sql_banco;
		ejecutarConsulta($sql_banco) or $sw=false;
	
		$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='$idpagoproveedor' AND tipo_movimiento='Pago'";
	
		ejecutarConsulta($sql_banco1) or $sw=false;
		echo $sql_banco1;
	} 


	//Procesamos el detalle de movimiento
		$sw				=	true;
	$num_elementos	=	0;
	if ($sw){
		$sqldc 		= "SELECT iddetalle_venta, idpagocliente, iddocumento, num_comprobante, tipo_comprobante, montod, montob, abono, pendiente, estado FROM detalle_pagos WHERE idpagocliente='$idpagoproveedor'";
		echo $sqldc;
		$result1	=	ejecutarConsulta($sqldc) or $sw=false;
		
		if (mysqli_num_rows($result1) > 0) {
			while($fila1 	= mysqli_fetch_assoc($result1)){
				$iddetalle_venta 	= $fila1["iddetalle_venta"];
				$iddocumento			= $fila1["iddocumento"];
				$sqld	="UPDATE detalle_pagos SET estado='Anulado' WHERE iddetalle_venta='$iddetalle_venta'";
				$sw		=	true;
				ejecutarConsulta($sqld) or $sw=false;
				echo $sqld;
					
				$sqld1="INSERT INTO detalle_pagosd (iddetalle_venta, idpagocliente, iddocumento, num_comprobante, tipo_comprobante, montod, montob, abono, pendiente, estado) 
				SELECT iddetalle_venta, idpagocliente, iddocumento, num_comprobante, tipo_comprobante, montod, montob, abono, pendiente, 'Anulado' AS estado FROM detalle_pagos 
				WHERE iddetalle_venta='$iddetalle_venta'";
				echo $sqld1;
				ejecutarConsulta($sqld1) or $sw=false;
				
				
					
					//Se verifica el documento de venta y se actualiza su estado
					if ($sw){
						$iddoc 				= $iddocumento;
						$sqldv 				= "SELECT i.total_compraid, IF(((SELECT SUM(d.montod) FROM detalle_pagos d WHERE d.iddocumento='$iddoc')) is null,0,((SELECT SUM(IF(d.pendiente>0,d.abono,d.montod)) FROM detalle_pagos d WHERE d.iddocumento='$iddoc' AND estado<>'Anulado'))) as cobrado,(SELECT tasa_dollar FROM empresa_tasacambio WHERE 1) as tasa_dollar FROM ingreso i WHERE i.idingreso='$iddoc'";
						echo $sqldv;
						$result				=	ejecutarConsulta($sqldv) or $sw=false;
						if (mysqli_num_rows($result) > 0) {
							while($fila 	= mysqli_fetch_assoc($result)){
								$cobrado1 							= $fila["cobrado"];
								$total_ventaimpuestod1	= $fila["total_compraid"];
								$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;
								$montopendiente1	=$pendiente1;
								$sql_update 		= "UPDATE ingreso SET montopendiente='$montopendiente1', estado='$estado1' WHERE idingreso='$iddoc'";
								$sw							=	true;
								ejecutarConsulta($sql_update) or $sw=false;
								echo $sql_update;
							}	
						}	
					}	

					$num_elementos=$num_elementos+1;
				
			}
		}	
	}
 

	return $sw;
}

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

//metodo para mostrar registros
public function mostrar($idpersona){
	$sql="SELECT * FROM persona WHERE idpersona='$idpersona'";
	return ejecutarConsultaSimpleFila($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 listarmovimientopago($idmovimiento){
	$sql="SELECT * FROM detalle_pagos WHERE idpagocliente='$idmovimiento'";
	return ejecutarConsulta($sql);
}


public function listarpagodetalle($idpagoproveedor){
	$sql="SELECT d.*,c.*,d.montod*c.tasacambiocompra as montodb,IF(d.abono=0,d.montod,d.abono) as abono1,IF(d.abono=0,d.montod,d.abono)*c.tasacambiocompra as abonob1,IF(d.abono=0,0,d.montod-d.abono) as pendiente1, IF(d.abono=0,0,d.montod-d.abono)*c.tasacambiocompra as pendienteb1 FROM detalle_pagos d INNER JOIN pagos c ON c.idpagoproveedor=d.idpagocliente WHERE d.idpagocliente='$idpagoproveedor'";
	return ejecutarConsulta($sql);
}

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

//metodo para mostrar registros
public function comprobantedepago($idpagoproveedor){
	$sql=	"SELECT p.idpagoproveedor,p.idproveedor,pe.nombre as proveedor,pe.direccion,pe.telefono,pe.tipo_documento,pe.num_documento,p.fecha_hora,p.total_pago,p.total_pagob FROM pagos p INNER JOIN persona pe ON pe.idpersona=p.idproveedor WHERE p.idpagoproveedor='$idpagoproveedor'";
//	return ejecutarConsultaSimpleFila($sql);
	return ejecutarConsulta($sql);
}

public function mostrarpagos($iddocumento){
	$sql="SELECT d.idpagocliente,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.tasacambiocompra,c.estado,b.nombre as cuenta, f.nombre as formapago,date(c.fecha_hora) as fecha FROM detalle_pagos d INNER JOIN pagos c ON c.idpagoproveedor=d.idpagocliente 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;
}

}

 ?>
