<?
/** 
 * Class: Pagos
 
 * @version 	1.0 00/00/2007-Ultima_Modificacion:00/00/2007 
 * @author		Systweb 	
 * @copyright	Copyright (c) 2007
 */
require_once("DBManager.class.php");

class Cobros{
	
	private $codorden;
	private $fecha;	
	private $concepto;	
	private $abono;
	private $suma;
			
	function Pagos($codorden="",$fecha="",$concepto="",$abono=""){
         $this->codorden=$codorden;
         $this->fecha=$fecha;
		 $this->concepto=$concepto;
         $this->abono=$abono;		 
        }	
	
	public function Correlativo()
	{
		$vCorre2 = 1;		
		$vCont = 1;
		$vCeros = "";
		$delta_ceros = 0;
		$AnoSiguiente = 0;
		$AnoActual = 0;
		$fecha = getdate();
		
		$db= new DBManager();	
		$rs=$db->execute("SELECT codorden FROM cobros ORDER BY codorden;");
		
		//Entra a este bloque si existe algun valor en el campo INroOrd		
		if($rs->lastRow())
		{			
			
		
			$vCorre1 = substr($rs->fields['codorden'],0,4);//variable que almacena los 4 primeros caracteres de INroOrd
			$vCorre2 = substr($rs->fields['codorden'],5); //extraigo los ultimos 5 caracteres de INroOrd 			
			
			$vCorre1 = intval($vCorre1); //obtengo el valor entero
			$vCorre2 = intval($vCorre2); //obtengo el valor entero
							
			$vCorre2++;//se incrementa en 1, es decir el correlativo
			
			//verifico si el correlativo llega a ocupar los 5 digitos
		 	$delta_ceros = 5 - strlen($vCorre2);
			
			if( $delta_ceros == 0 )// Si en el codigo  correlativo ya no existen ceros que poner es decir vCorre2 = 10000
			{
				//Si es que he pasado al siguiente año
				$AnoActual = intval($fecha['year']);
				if($AnoActual>$vCorre1)
				{   
					$AnoSiguiente = $vCorre1+=1;
					return $AnoSiguiente."000001";
				}
				else{

						return ($vCorre1.$vCorre2);
					}			
			}
			
			if( $delta_ceros < 0 /*-1*/)// Si en el codigo correlativo ya no existen ceros que poner y ya llego al limite, en este caso delta_ceros = -1
			{
				$AnoSiguiente = $vCorre1+=1;
				return $AnoSiguiente."000001";
			}
			
			if( $delta_ceros > 0) // Si en el codigo correlativo existen ceros que poner
			{
			
				//Si es que he pasado al siguiente año
				$AnoActual = intval($fecha['year']);
				if($AnoActual>$vCorre1)
				{   
					$AnoSiguiente = $vCorre1+=1;
					return $AnoSiguiente."000001";
				}
				else{
						for($i=1; $i<$delta_ceros; $i++)
						{
							$vCont++;//contador de ceros
						}			
						$vCeros=str_pad($vCeros,$vCont,'0',STR_PAD_RIGHT);//rellenar de ceros al lado derecho		
						return($vCorre1.$vCeros.$vCorre2);
					}			
			}			

		}else{ 
				//Caso contrario esta vacio el campo al inicio de las acciones				
				return ($fecha['year']."00000".$vCorre2);				
			 }

		$rs->close();
		$db->closeConnection();//opcional			
	}
//metodo para guardar un nuevo detalle de orden de compra
	public function Crear($vid,$vfecha,$vconcepto,$vabono)
	{
		$resp=false;		
		$db= new DBManager();	
		$hora = getdate();
		$vhora = $hora['hours'].":".$hora['minutes'].":".$hora['seconds'];
		$vfechadep = implode("-", array_reverse(explode("-", $vfecha)));	
		//$vfechadep	= $vfecha." ".$vhora;
		//$vprecio = number_format($vprecio,2);	
		if($db->_execute("INSERT INTO cobros (codorden,fecha,concepto,abono) VALUES ('".$vid."','".$vfechadep."','".$vconcepto."',".$vabono.")"))   
		{
			$resp=true;
		}
		return $resp;		
	}//fin metodo
	public function BuscarPagos($vid)
	{  
		$vector=null;		
		$db= new DBManager();	
		$rs=$db->execute("SELECT codorden,DATE_FORMAT(fecha,'%d-%m-%Y') AS fecha,concepto,abono FROM cobros WHERE(codorden = '".$vid."');");
		$num_rows=$rs->getNumOfRows();
		if($num_rows>0)
		{	$row=0;
			$rs->firstRow(); // opcional, pero recomendado
			while (!$rs->EOF) {
                // Coleccion de campos accesible mediante arrays asociativos también
              $vector[$row]=array("codorden"	=> $rs->fields["codorden"],
   			    					"fecha" 	=> $rs->fields["fecha"],									
									"concepto" 	=> $rs->fields["concepto"],
									"abono" 	=> $rs->fields["abono"]);
                $row++;
				$rs->nextRow(); // Nota: nextRow() Esta situado al final				
         	}			
        	return $vector;			
		}else return null;
		$rs->close(); 
		$db->closeConnection();						
	}
	
	public function ListarPorFechas($fi,$ff)
	{  
		$vector=null;		
		$db= new DBManager();	
		$fi = implode("-", array_reverse(explode("-", $fi)));
		$ff = implode("-", array_reverse(explode("-", $ff)));	
		$rs=$db->execute("SELECT codorden,DATE_FORMAT(fecha,'%d-%m-%Y') AS fecha,concepto,abono FROM cobros WHERE (fecha BETWEEN '".$fi."' and '".$ff."');");
		$num_rows=$rs->getNumOfRows();
		if($num_rows>0)
		{	$row=0;
			$rs->firstRow(); // opcional, pero recomendado
			while (!$rs->EOF) {
                // Coleccion de campos accesible mediante arrays asociativos también
              $vector[$row]=array("codorden"	=> $rs->fields["codorden"],
   			    					"fecha" 	=> $rs->fields["fecha"],									
									"concepto" 	=> $rs->fields["concepto"],
									"abono" 	=> $rs->fields["abono"]);
                $row++;
				$rs->nextRow(); // Nota: nextRow() Esta situado al final				
         	}			
        	return $vector;			
		}else return null;
		$rs->close(); 
		$db->closeConnection();						
	}
	
	public function VerificaPagos($vcod)
	{
		
		$resp=false;
		$num_rows=0;//numero de filas afectada por la consulta
		$db= new DBManager();	
		$rs=$db->execute("SELECT codorden,DATE_FORMAT(fecha,'%d-%m-%Y') AS fecha,concepto,abono,sum(abono) as suma FROM cobros WHERE(codorden = '".$vcod."')  group by codorden;");
		$num_rows=$rs->getNumOfRows();
		if($num_rows>0)
		{	$resp=true;
			$rs->firstRow(); // opcional, pero recomendado
			while (!$rs->EOF) {
                // Coleccion de campos accesible mediante arrays asociativos también
                $this->codorden=$rs->fields["codorden"];
				$this->fecha=$rs->fields["fecha"];
				$this->concepto=$rs->fields["concepto"];
				$this->abono=$rs->fields["abono"];
				$this->suma=$rs->fields["suma"];
 				$rs->nextRow(); // Nota: nextRow() Esta situado al final				
        	}			
		}
		$rs->close(); 
		$db->closeConnection();//opcional cierra el enlace de la Base de Datos              
		return $resp;							
	}
	
	
	
	
	public function Eliminar($vcod,$vfecha,$vconcepto,$vabono)
	{
		$resp=false;		
		$db= new DBManager();	
		$vfecha = implode("-", array_reverse(explode("-", $vfecha)));		
		if($db->_execute("DELETE FROM cobros WHERE (codorden='".$vcod."' AND fecha = '".$vfecha."' AND concepto='".$vconcepto."' AND abono = ".$vabono.");"))   
		{
			$resp=true;
		}
		return $resp;		
	}
	
	public function getCodorden(){ return $this->codorden;}
	public function getFecha(){ return $this->fecha;}
	public function getConcepto(){ return $this->concepto;}
	public function getAbono(){ return $this->abono;}
	public function getsuma(){ return $this->suma;}
}//fin de clase
?>