<?php

/**
 * This is the model class for table "pagos".
 *
 * The followings are the available columns in table 'pagos':
 * @property integer $id_pago
 * @property integer $id_prestamo
 * @property integer $id_gestor
 * @property string $cuota
 * @property string $mora
 * @property string $combustible
 * @property string $fecha
 * @property string $hora
 * @property string $estatus
 * @property integer $id_usuario_creador
 * @property integer $id_usuario_modificador
 * @property integer $id_usuario_eliminador
 * @property string $fecha_creacion
 * @property string $hora_creacion
 * @property string $fecha_modificacion
 * @property string $fecha_eliminaacion
 * @property string $borrado
 */
class Balance extends CActiveRecord
{
	public $fecha_desde;
        public $fecha_hasta;
        public $dni;
        public $nombre;
        public $apellido;
        public $modalidad;
        public $gestor;

        
	public function tableName()
	{
		return 'pagos';
	}

	public function rules()
	{
		
		return array(
			array('fecha_desde, fecha_hasta','required'),
			array('id_prestamo, id_gestor, id_usuario_creador, id_usuario_modificador, id_usuario_eliminador', 'numerical', 'integerOnly'=>true),
			array('cuota, mora, combustible, estatus', 'length', 'max'=>100),
			array('borrado', 'length', 'max'=>1),
			array('fecha_creacion, hora_creacion, fecha_modificacion, fecha_eliminaacion', 'safe'),
			array('id_pago,dni,nombre,apellido,modalidad,gestor, id_prestamo, id_gestor, cuota, mora, combustible, fecha, hora, estatus, id_usuario_creador, id_usuario_modificador, id_usuario_eliminador, fecha_creacion, hora_creacion, fecha_modificacion, fecha_eliminaacion, borrado', 'safe', 'on'=>'search'),
		);
	}

	
	public function relations()
	{
		return array(
		);
	}


	public function attributeLabels()
	{
		return array(
			'id_pago' => 'ID',
			'id_prestamo' => 'Prestamo',
			'id_gestor' => 'Gestor',
			'cuota' => 'Cuota',
			'mora' => 'Mora',
			'combustible' => 'Combustible',
			'fecha' => 'Fecha',
			'hora' => 'Hora',
			'estatus' => 'Estatus',
			'id_usuario_creador' => 'Usuario Creador',
			'id_usuario_modificador' => 'Usuario Modificador',
			'id_usuario_eliminador' => 'Usuario Eliminador',
			'fecha_creacion' => 'Fecha Creacion',
			'hora_creacion' => 'Hora Creacion',
			'fecha_modificacion' => 'Fecha Modificacion',
			'fecha_eliminaacion' => 'Fecha Eliminaacion',
			'borrado' => 'Borrado',
		);
	}


	public function search()
	{
		
		$criteria=new CDbCriteria;
          
        
		$criteria->compare('id_pago',$this->id_pago);
		$criteria->compare('id_prestamo',$this->id_prestamo);
		$criteria->compare('id_gestor',$this->id_gestor);
		$criteria->compare('cuota',$this->cuota,true);
		$criteria->compare('mora',$this->mora,true);
		$criteria->compare('combustible',$this->combustible,true);
		$criteria->compare('fecha',$this->fecha,true);
		$criteria->compare('hora',$this->hora,true);
		$criteria->compare('estatus',$this->estatus,true);
		$criteria->compare('id_usuario_creador',$this->id_usuario_creador);
		$criteria->compare('id_usuario_modificador',$this->id_usuario_modificador);
		$criteria->compare('id_usuario_eliminador',$this->id_usuario_eliminador);
		$criteria->compare('fecha_creacion',$this->fecha_creacion,true);
		$criteria->compare('hora_creacion',$this->hora_creacion,true);
		$criteria->compare('fecha_modificacion',$this->fecha_modificacion,true);
		$criteria->compare('fecha_eliminaacion',$this->fecha_eliminaacion,true);
		$criteria->compare('borrado',0,true);

		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
		));
	}


	public static function model($className=__CLASS__)
	{
		return parent::model($className);
	}
        
        
        
        
  
     public static function numPagoss($gestor,$fecha_desde,$fecha_hasta){
        $sql="SELECT * FROM pagos where  borrado=0  and id_getor='".$gestor."' and fecha  BETWEEN '".$fecha_desde."' AND '".$fecha_hasta."' ";
        $row=   Yii::app()->db->createCommand($sql)->queryAll();
        return $row;
    }
    
    public static function numClientesPagaron($gestor,$fecha_desde,$fecha_hasta){
        $sql="SELECT * FROM pagos where borrado=0 and fecha and id_getor='".$gestor."' GROUP BY id_cliente HAVING fecha BETWEEN '".$fecha_desde."' and '".$fecha_hasta."'";
        $row=   Yii::app()->db->createCommand($sql)->queryAll();
        return $row;
    }
    

    public static function numCuotasDeberiaHabercanceadoFecha($id,$fecha){
         $numero=0;
         $prestamo= Balance::prestamoID($id);

           if(!empty($prestamo)){
            $sql="SELECT TIMESTAMPDIFF(DAY, fecha_inicio,'".$fecha."') AS dias FROM prestamo where id_prestamo='".$id."'   LIMIT 1  ";
            $row=   Yii::app()->db->createCommand($sql)->queryRow(); 
            $prestamo= Pagos::prestamoID($id);
            $duracion=$prestamo['id_duracion']-1;
            
            $fechas=Pagos::forFechas($prestamo['fecha_inicio'], $duracion, 1);
            $sql2="SELECT TIMESTAMPDIFF(DAY,'".$fecha."','".$fechas[$duracion]["fecha"]."') AS diasv FROM prestamo where id_prestamo='".$id."'   LIMIT 1  ";
            $row2=   Yii::app()->db->createCommand($sql2)->queryRow(); 

                if(!empty($row)){
               
               
               
                                  
                     $numero=   $row['dias']-1;
              
        
//                   $semanas=intval($row['dias']/1);
//                   if($semanas==$prestamo['id_duracion']){
//                       $numero=$prestamo['id_duracion'];
//                   }elseif($semanas>$prestamo['id_duracion']){
//                       $numero=$prestamo['id_duracion'];
//                   }elseif($semanas<$prestamo['id_duracion']){
//                      $numero= $semanas;
//                   }
//                
                   
                   
                   
                   
                
            }
            
            $hora=date('H:i:s');        
            if($row2['diasv']>0){
               $f='13:00:00';
            }else{
               $f='08:00:00'; 
            }     
            $day = date("l");
            $d='';
            switch ($day) {
                case "Sunday":
                       $d= "DOMINGO";
                break;
                case "Monday":
                       $d= "LUNES";
                break;
                case "Tuesday":
                       $d="MARTES";
                break;
                case "Wednesday":
                       $d="MIERCOLES";
                break;
                case "Thursday":
                       $d= "JUEVES";
                break;
                case "Friday":
                       $d= "VIERNES";
                break;
                case "Saturday":
                       $d="SABADO";
                break;
            }


         if(($hora<$f)  and ($numero>=1) and  ($prestamo['dia_prestamo']===$d)   ){
             $numero=$numero-1;
         }
         }  
         return $numero;
         
    }
    
    
public static function totalMoraFecha($id,$fecha){
      $total=0;
      if(!empty($id)){
        $sql="SELECT SUM(mora) as total FROM pagos WHERE borrado=0 and id_prestamo='".$id."'  and fecha<='".$fecha."' "; 
        $row=   Yii::app()->db->createCommand($sql)->queryRow();
        
        if(!empty($row)){
        $total=$row['total'];   
        }
        return $total;
      }
  }
 public static function cuotasCanceladasFecha($id,$fecha){
        $num_cuotas_canceladas=0;
        if(!empty($id)){
            $prestamo=  Balance::prestamoID($id);
            
            if(!empty($prestamo)){
                    $duracion=$prestamo['id_duracion'];
                    $sql="SELECT SUM(cuota) as total FROM pagos WHERE borrado=0 and id_prestamo='".$id."'  and fecha<='".$fecha."' ";
            
                    $row=   Yii::app()->db->createCommand($sql)->queryRow();
                    $total=$row['total']; 
         
                    if($total>0){
                    $num_cuotas_canceladas=$total/$prestamo['cuota'];
                    $num_cuotas_canceladas=  intval($num_cuotas_canceladas);
                }
        }
    }
   
     return $num_cuotas_canceladas;
    
  }




  
   public static function saldoDiasMoraFecha($id,$fecha){
        $saldo=0;
        $dias=0;

        if(!empty($id)){
          $prestamo= Pagos::prestamoID($id); 
          if(!empty($prestamo)){
             $dias=  Balance::diasMoraFecha($id,$fecha);
             if($dias>0){
             $saldo=Pagos::calcularSaldoMora($dias,$prestamo['id_monto']);
             }
          }  
          return $saldo; 
   }}
   
      public static function diasMoraFecha($id,$fecha){
        $dias=0;
        $num_cuota=1;
        $d=0;
        if(!empty($id)){
            $prestamo= Pagos::prestamoID($id);
            if(!empty($prestamo)){
                $duracion=$prestamo['id_duracion']-1;
                $fecha_vencimiento=Pagos::forFechas($prestamo['fecha_inicio'], $duracion, 7);
                if(!empty($fecha_vencimiento)){
                    
                    $numero_cuotas_canceladas= Balance::cuotasCanceladasFecha($id,$fecha); 
                    if($numero_cuotas_canceladas>0){
         
                       
                        for ($i=0;$i<$numero_cuotas_canceladas;$i++){
                            $fecha= Pagos::fechaPagoCuota($id,$num_cuota);
                            if($i<  count($fecha_vencimiento)){
                            $x=Pagos::diferenciafechas($fecha_vencimiento[$i]['fecha'], $fecha);
                            }
                            $dias=$dias+$x;
                            $num_cuota++;
                        }
                    }
                }
            }
        }
        return $dias; 
    }
   
   public static function prestamoID($id){
        $prestamo= Prestamo::model()->find('id_prestamo=?',array($id));
        return $prestamo;
    }
     //saber si la mora fue cancelada
    public static function moraCancelada($id){
        $aux=0;
        if(!empty($id)){
        $reg= Prestamo::model()->find('id_prestamo=? and mora_cancelada=1',array($id));
        if(!empty($reg)){
            $aux=$reg["mora_cancelada"];
        }
        }
        return $aux;
    }
public static function  estatusPrestamoFecha($id,$fecha){
        $estatus='';
        
        if(!empty($id)){
          $prestamo=Balance::prestamoID($id);   
          if(!empty($prestamo)){
            $duracion=  $prestamo["id_duracion"];      
            
            
            //$mora_cancelada=Balance::moraCancelada($id); 
            //$abono_mora=Balance::totalMoraFecha($prestamo["id_prestamo"],$fecha);
         
            //$saldo_mora=Balance::saldoDiasMoraFecha($prestamo["id_prestamo"],$fecha);
            //$dias_mora=Balance::diasMoraFecha($id,$fecha);
            //$mora=0;
            
            //if($mora_cancelada==0){
              // $n= $saldo_mora-$abono_mora;
              // if($n>0){
                // $mora=$n;  
              // }
            //}
            $cuotas_canceladas= Balance::cuotasCanceladasFecha($id,$fecha);
            
            
            //$num_pagos_cancelar=Balance::numCuotasDeberiaHabercanceadoFecha($id,$fecha);
   
            //$atrazos=$num_pagos_cancelar-$cuotas_canceladas;
            
            
            //$fecha_final=  Pagos::fechaFinal($id);
            //$dias_vencimiento=Pagos::diferenciafechas($fecha_final, $fecha);
            //$sql2="SELECT TIMESTAMPDIFF(DAY,'".$fecha."','".$fecha_final."') AS diasv FROM prestamo where id_prestamo='".$id."'   LIMIT 1  ";
            //$row2=   Yii::app()->db->createCommand($sql2)->queryRow();
            //if($row2['diasv']==0){
              //  $row2['diasv']=$row2['diasv']+1; 
            //}
            
            
            if(($cuotas_canceladas>=$duracion)){
                $estatus='CANCELADO';
            }else{
                $estatus='AL DIA';
            }
            
            
            
          }
        }
 
      return $estatus;
      
    }
    

    public static function numAldia($lista,$estatus){
        $n=0;
        $es='';
 
        for ($index = 0; $index < count($lista); $index++) {
            $fecha=$lista[$index]['fecha'];
            $id=$lista[$index]['id_prestamo'];
            $es=Balance::estatusPrestamoFecha($id,$fecha);
            if($estatus==$es){
                $n=$n+1;
            }
        }  
        return $n;
    }
    public static function atrazosFecha($id,$fecha){
       
       $num=0; 
       if(!empty($id)){
          $cuotas_canceladas= Balance::cuotasCanceladasFecha($id,$fecha);
          $num_pago=Balance::numCuotasDeberiaHabercanceadoFecha($id,$fecha);
            if($num_pago>0){
              $num= $num_pago-$cuotas_canceladas;
              if($num<0){
                 $num=  0; 
              }
          }
       }
       return $num;
    }

    
       public static function numPagossSingestor($fecha_desde,$fecha_hasta){
        $sql="SELECT * FROM pagos where  borrado=0 and fecha  BETWEEN '".$fecha_desde."' AND '".$fecha_hasta."' ";
        $row=   Yii::app()->db->createCommand($sql)->queryAll();
        return $row;
    }
    
    //monto del prestamos mas el interes por gestor y estatus
    public static function total_prestamo_interes_gestor($id_gestor,$estatus,$fecha_desde,$fecha_hasta){
        $sql="SELECT SUM(cuota*id_duracion) as total FROM prestamo where borrado=0 and id_gestor='".$id_gestor."' and estatus='".$estatus."'  ";
        $row=   Yii::app()->db->createCommand($sql)->queryRow();
        return $row['total'];
    }
   
     //numero de prestamos por gestor y estatus
    public static function num_prestamos__estatus_gestor($id_gestor,$estatus,$fecha_desde,$fecha_hasta){
        $sql="SELECT COUNT(id) as total FROM prestamo where borrado=0 and id_gestor='".$id_gestor."' and estatus='".$estatus."'  ";
        $row=   Yii::app()->db->createCommand($sql)->queryRow();
        return $row['total'];
    }
    
    //formas de pago por id_gestor
     public static function num_pagoss_gestor($id_getor,$fecha_desde,$fecha_hasta){
        $sql="SELECT COUNT(id) as total  FROM pagos where   id_getor='".$id_getor."' and fecha >= '$fecha_desde' and fecha <= '$fecha_hasta'  and borrado = 0 ";
        $row=   Yii::app()->db->createCommand($sql)->queryRow();
        return $row['total'];
    } 
  
    
    //monto de pagos por estatus y gestor
      public static function monto_pagoss_estatus_gestor($id_gestor,$estatus,$fecha_desde,$fecha_hasta){
        $sql="SELECT SUM(cuota) as total FROM pagos where  borrado=0 and   id_getor='".$id_gestor."' and estatus='".$estatus."' and   fecha >= '$fecha_desde' and fecha <= '$fecha_hasta'   ";
        $row=   Yii::app()->db->createCommand($sql)->queryRow();
        return $row['total'];
    }
      public static function monto_pagoss_estatus_gestor_mora($id_gestor,$estatus,$fecha_desde,$fecha_hasta){
        $sql="SELECT SUM(mora) as total FROM pagos where  borrado=0 and   id_getor='".$id_gestor."' and estatus='".$estatus."' and   fecha >= '$fecha_desde' and fecha <= '$fecha_hasta'   ";
        $row=   Yii::app()->db->createCommand($sql)->queryRow();
        return $row['total'];
    }
    
    //cantidad de pagos por estatus y gestor
    public static function num_pago_estatus_gestor($id_gestor,$estatus,$fecha_desde,$fecha_hasta){
        $sql="SELECT * FROM pagos as c, cliente as cl, prestamo as p WHERE "
                . "c.id_prestamo=p.id_prestamo and p.estatus='".$estatus."' and p.id_gestor='".$id_gestor."' and  "
                . "p.id_cliente=cl.id_cliente and c.borrado=0 and c.fecha >= '$fecha_desde' and c.fecha <= '$fecha_hasta' group by cl.id_cliente ";
        $row=   Yii::app()->db->createCommand($sql)->queryAll();
        $num=0;
        foreach ($row as $row){
            $num++;
        }

        return $num;
    }
    
    
    /////////////////////////////SIN GESTOR////////////////////////////////////
    
       //numero de prestamos  estatus
    public static function num_prestamos__estatus($estatus,$fecha_desde,$fecha_hasta){
        $sql="SELECT COUNT(id) as total FROM prestamo where borrado=0 and  estatus='".$estatus."'  ";
        $row=   Yii::app()->db->createCommand($sql)->queryRow();
        return $row['total'];
    }
    
    //formas de pago por id_gestor
     public static function num_pagoss($fecha_desde,$fecha_hasta){
        $sql="SELECT COUNT(id) as total  FROM pagos where  fecha >= '$fecha_desde' and fecha <= '$fecha_hasta'  and borrado = 0 ";
        $row=   Yii::app()->db->createCommand($sql)->queryRow();
        return $row['total'];
    } 
  
    
    //monto de pagos por estatus y gestor
      public static function monto_pagoss_estatus($estatus,$fecha_desde,$fecha_hasta){
        $sql="SELECT SUM(cuota) as total FROM pagos where  borrado=0  and estatus='".$estatus."' and   fecha >= '$fecha_desde' and fecha <= '$fecha_hasta'   ";
        $row=   Yii::app()->db->createCommand($sql)->queryRow();
        return $row['total'];
    }
      public static function monto_pagoss_estatus_mora($estatus,$fecha_desde,$fecha_hasta){
        $sql="SELECT SUM(mora) as total FROM pagos where  borrado=0  and estatus='".$estatus."' and   fecha >= '$fecha_desde' and fecha <= '$fecha_hasta'   ";
        $row=   Yii::app()->db->createCommand($sql)->queryRow();
        return $row['total'];
    }
    //cantidad de pagos por estatus y gestor
    public static function num_pago_estatus($estatus,$fecha_desde,$fecha_hasta){
        $sql="SELECT * FROM pagos as c, cliente as cl, prestamo as p WHERE "
                . "p.id_cliente=cl.id_cliente  and p.estatus='".$estatus."' and   "
                . "p.id_prestamo=c.id_prestamo and c.borrado=0 and c.fecha >= '$fecha_desde' and c.fecha <= '$fecha_hasta' group by cl.id_cliente";
        
        
        
        $row=   Yii::app()->db->createCommand($sql)->queryAll();
        
        $num=0;
    
        
        foreach ($row as $row){
            $num++;
            
        }

        return $num;
    }


    public static function total_prestamo_interes($estatus,$fecha_desde,$fecha_hasta){
        $sql="SELECT SUM(cuota*id_duracion) as total FROM prestamo where borrado=0 and estatus='".$estatus."'  ";
        $row=   Yii::app()->db->createCommand($sql)->queryRow();
        return $row['total'];
    }
    
    
      public static  function datos($gestor,$estatus){
       
        $sql1="";
        $sql2="";
        
        if(!empty($gestor)){  
        $sql1=" AND t.id_gestor='".$gestor."'";
        }

        if(!empty($estatus)){
        $sql2=" AND t.estatus='".$estatus."'";
        }

        $consulta= $sql1.$sql2;
        
        
       $row= Yii::app()->db->createCommand("SELECT COUNT(t.id_cliente) as clientes,SUM(t.id_monto) as soles,SUM(t.cuota*t.id_duracion) as capitalinteres, SUM(t.total) as ingreso , SUM((t.cuota*t.id_duracion)-t.total) as porcobrar FROM prestamo as t inner join cliente AS c on c.id_cliente=t.id_cliente   inner join gestor as g on t.id_gestor=g.id_gestor inner join zona as z on c.id_zona=z.id_zona WHERE  t.borrado=0 ".$consulta)->queryRow();
       return $row;
    }
    
    public static  function datos2($estatus){
       
        $sql1="";


        if(!empty($estatus)){
        $sql1=" AND t.estatus='".$estatus."'";
        }

        $consulta= $sql1;
        
        
       $row= Yii::app()->db->createCommand(" SELECT COUNT(t.id_cliente) as clientes,SUM(t.id_monto) as soles,SUM(t.cuota*t.id_duracion) as capitalinteres, SUM(t.total) as ingreso , SUM((t.cuota*t.id_duracion)-t.total) as porcobrar FROM prestamo as t inner join cliente AS c on c.id_cliente=t.id_cliente   inner join gestor as g on t.id_gestor=g.id_gestor  inner join zona as z on c.id_zona=z.id_zona WHERE  t.borrado=0 ".$consulta)->queryRow();
       return $row;
    }
        
        
         public static function num_cobros_gestor($id_getor,$fecha_desde,$fecha_hasta){
        $sql="SELECT COUNT(id_pago) as total  FROM pagos where   id_gestor='".$id_getor."' and fecha >= '$fecha_desde' and fecha <= '$fecha_hasta'  and borrado = 0 ";
        $row=   Yii::app()->db->createCommand($sql)->queryRow();
        return $row['total'];
    } 
    
       public static function monto_cobros_estatus_gestor($id_gestor,$estatus_credito,$fecha_desde,$fecha_hasta){
        $sql="SELECT SUM(cuota) as total FROM pagos where  borrado=0 and   id_gestor='".$id_gestor."' and estatus='".$estatus_credito."' and   fecha >= '$fecha_desde' and fecha <= '$fecha_hasta'   ";
        $row=   Yii::app()->db->createCommand($sql)->queryRow();
        return $row['total'];
    }
    
        public static function monto_cobros_estatus_gestor_mora($id_gestor,$estatus_credito,$fecha_desde,$fecha_hasta){
        $sql="SELECT SUM(mora) as total FROM pagos where  borrado=0 and   id_gestor='".$id_gestor."' and estatus='".$estatus_credito."' and   fecha >= '$fecha_desde' and fecha <= '$fecha_hasta'   ";
        $row=   Yii::app()->db->createCommand($sql)->queryRow();
        return $row['total'];
    }  
        
   public static function monto_cobros_estatus($estatus_credito,$fecha_desde,$fecha_hasta){
        $sql="SELECT SUM(cuota) as total FROM pagos where  borrado=0  and estatus='".$estatus_credito."' and   fecha >= '$fecha_desde' and fecha <= '$fecha_hasta'   ";
        $row=   Yii::app()->db->createCommand($sql)->queryRow();
        return $row['total'];
    }
    
      public static function monto_cobros_estatus_mora($estatus_credito,$fecha_desde,$fecha_hasta){
        $sql="SELECT SUM(mora) as total FROM pagos where  borrado=0  and estatus='".$estatus_credito."' and   fecha>= '$fecha_desde' and fecha <= '$fecha_hasta'   ";
        $row=   Yii::app()->db->createCommand($sql)->queryRow();
        return $row['total'];
    }
 public static function num_cobros($fecha_desde,$fecha_hasta){
        $sql="SELECT COUNT(id_pago) as total  FROM pagos where  fecha >= '$fecha_desde' and fecha <= '$fecha_hasta'  and borrado = 0 ";
        $row=   Yii::app()->db->createCommand($sql)->queryRow();
        return $row['total'];
    } 
    
}
