<?php
class Cobro extends AppObjeto {
	
	//Propiedades
	protected $numero;
	protected $contrato;
	protected $fecha;
	protected $importe;
	protected $cliente;
	
			
		/* para conectar con bd */
	protected static $_aliasTabla = 'cob';
	protected static $_nombreTabla = 'COBROS';
	protected static $_campoPK = 'NUMERO';
	
	const COBRO_FORMA_PAGO_EFECTIVO = 1;
	const COBRO_FORMA_PAGO_CHEQUE = 7;
	// InitMetaDatos
	
	protected static function initMetaDatos(){
		
		self::addPropiedadBD('cob', 'NUMERO', 'numero', self::META_VARCHAR);
		self::addPropiedadBD('cob', 'CONTRATO', 'contrato', self::META_VARCHAR);
		self::addPropiedadBD('cob', 'FECHA', 'fecha', self::META_DATE);
		self::addPropiedadBD('cob', 'IMPORTE', 'importe', self::META_DECIMAL);
		self::addPropiedadBD('cob', 'CLIENTE', 'cliente', self::META_VARCHAR);
		
	}

	// Métodos
	
	public static function loadPendientesOtrosServicios($numeroServicio){
		$sql = sprintf("

SELECT CV.CONTRATO,CV.LINEA,CV.CONTACTO,CV.DIRESPA,CV.DIRFRAN,CV.IMPORTE,CV.PAGADO,CV.OBS,CV.PAX,CV.IDA,CV.PAQUETES,CV.FPAGO,CV.FECHA_ESPA,DATEFORMAT(CV.HORA_ESPA, 'hh:nn') HORA_ESPA,CV.ORD_ORIGEN_ESPA,CV.FECHA_REAL_ESPA,DATEFORMAT(CV.HORA_REAL_ESPA, 'hh:nn') HORA_REAL_ESPA,CV.ORD_DESTINO_ESPA,CV.FECHA_DESTINO_ESPA,DATEFORMAT(CV.HORA_DESTINO_ESPA, 'hh:nn') HORA_DESTINO_ESPA,CV.PREC_PAX,CV.IMPORTE_PAQ,CV.COD_CLIENTE,CV.USUCREA_CVI,CV.USUMODI_CVI,CV.ULTMODI_CVI,CV.ULTCREA_CVI,CV.FAC_ATIPICA,CV.GPSE,CV.GPSF,CV.PAGADO_K, P.NOMBRE AS NOMCONTACTO, FP.NOMBRE AS NOMPAGO,

(SELECT SUM(IMPORTE) FROM COBROS CB  WHERE ISNULL(IMPORTE,0) > 0 AND  CB.CONTRATO = CV.CONTRATO AND ISNULL(PAX_PAQ, 0) = 1  AND ISNULL(CV.IDA, 0) = ISNULL(CB.IDA, 0) AND CLIENTE = CV.COD_CLIENTE) IMP_COBRADO_PAX_T, ISNULL(IMPORTE, 0) - ISNULL(IMP_COBRADO_PAX_T, 0) PEND_COBRO_PAX,

(SELECT SUM(IMPORTE) FROM COBROS CB  WHERE  ISNULL(IMPORTE,0) > 0 AND CB.CONTRATO = CV.CONTRATO AND ISNULL(PAX_PAQ, 0) = 2  AND ISNULL(CV.IDA, 0) = ISNULL(CB.IDA, 0) AND CLIENTE = CV.COD_CLIENTE) IMP_COBRADO_PAQ_T, ISNULL(IMPORTE_PAQ,0) - ISNULL(IMP_COBRADO_PAQ_T,0) IMP_PEND_PAQ,

(SELECT SUM(IMPORTE) FROM COBROS CB  WHERE ISNULL(IMPORTE,0) > 0 AND  CB.CONTRATO = CV.CONTRATO AND ISNULL(PAX_PAQ, 0) = 1  AND ISNULL(CV.IDA, 0) = ISNULL(CB.IDA, 0)  AND COBRADO_DESDE_CTR = '%s' AND CLIENTE = CV.COD_CLIENTE) IMP_COBRADO_PAX,

(SELECT SUM(IMPORTE) FROM COBROS CB  WHERE  ISNULL(IMPORTE,0) > 0 AND CB.CONTRATO = CV.CONTRATO AND ISNULL(PAX_PAQ, 0) = 2  AND ISNULL(CV.IDA, 0) = ISNULL(CB.IDA, 0)  AND COBRADO_DESDE_CTR = '%s' AND CLIENTE = CV.COD_CLIENTE) IMP_COBRADO_PAQ  FROM CONTRA_VIAJES CV

 LEFT OUTER JOIN POTENCIALES P ON CV.CONTACTO = NUMERO

 LEFT OUTER JOIN FORMAS FP ON CV.FPAGO = FP.CODIGO

 WHERE ((CV.CONTACTO IN (select contacto
from contra_viajes
where contrato ='%s')

 AND (ISNULL(IMP_PEND_PAQ, 0) <> 0 OR ISNULL(PEND_COBRO_PAX, 0) <> 0) OR

  ISNULL(

  ( 

  SELECT COUNT(*)

  FROM COBROS CB

  WHERE CB.CONTRATO = CV.CONTRATO AND ISNULL(CV.IDA, 0) = ISNULL(CB.IDA, 0)  AND CLIENTE = CV.COD_CLIENTE 

  AND COBRADO_DESDE_CTR = '%s'

  )

  ,0) <> 0 )) AND ISNULL(PAGADO_K, 0) = 0 AND CONTRATO IN( SELECT NUMERO FROM CONTRATOS1 WHERE ISNULL(HECHOCONCHOFER_CON1,0) <> 0)AND CONTRATO <> '%s'

 ORDER BY CONTRATO, LINEA

 ",$numeroServicio,$numeroServicio,$numeroServicio,$numeroServicio,$numeroServicio);
		$db = self::getDb();
		$adapter = $db->getAdapter();
		
		try {
			$stmt = $adapter->query($sql);
		} catch (Exception $e) {
			echo $e->getMessage();
		}
		$rows = $stmt->fetchAll();
		print_r($rows);
		
	}
	
	public static function loadPorContrato($numeroContrato){
		$servicio = new Servicio($numeroContrato);
		$contratoFrancia = $servicio->getCodigoParaViaje();
		
		$db= self::getDb();
		$select = $db->select();
		$select->setIntegrityCheck(FALSE);
		$select->from(array('co'=>'COBROS'), array( 'importePagado'=>new Zend_Db_Expr('sum(IMPORTE)')));
		$select->joinInner(array('pt'=>'potenciales'), 'pt.cliente=co.cliente',array('potencial'=>'pt.numero'));
		$select->where('co.CONTRATO=?',$contratoFrancia);
		$select->group('pt.numero');

		$res = self::selectExecute($select);
		$datos = $res->getDatos();
		$sal = array();
		foreach ($datos as $reg) {
			$sal[$reg['potencial']] = $reg['importePagado'];
			
		}
		unset($datos);
		return $sal;
	}
	
	// Get y Set
	
}