<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of datosbd
 *
 * @author Charly
 */
require_once __DIR__."../../conexion/conectar.php";
require_once __DIR__."../../libs/funciones.php";

Class datosbd extends CONDB{
    var $mensajeerror = "";
    var $noerror = "";
    var $cMetodosPago = null;
    var $cFormasPago = null;
    var $cFormaPago = null;
    var $cProveedores = null;
    var $cFolioSiguiente = null;
    var $cMonedas = null;
    var $cEmisores = null;
    var $cReceptores = null;
	var $cUUIDPendientesCancelacion = null;
    var $cDoce = null;
    var $cRecibeDoce = null;
    var $cNombreProveedor = null;
    var $cPagoDocumentosRef = null;
    var $cTotalPagoDocumentosRef = null;
    var $cRutaPDF = null;
    var $cRutaXML = null;
    var $cUUID = null;
	var $cConfig = null;
    var $cCorreosProveedores = null;
    var $cNombreEmisor = null;
    
    function datosbd(){
        $this->conectar();
    }
    function getDoce($uuid){
		$q = "SELECT rfcemisor, tipodocto, serie, folio, rfcreceptor, nombrerec, fecha,iva, total,
		moneda, tipocambio, metodopago,formadepago,alta_manual,taxid,adicionala,adicionalb,archpdf,archxml,status FROM doce
		WHERE adicionala='$uuid'";
		if(!$r = mysqli_query($this->CONEXION,$q)){
				$this->mensajeerror = mysqli_error($this->CONEXION);
				$this->noerror = -1;
				return false;
		}
			$this->mensajeerror = "";
			$this->noerror = 0;
		if(mysqli_num_rows($r) > 0){
				$this->cDoce = mysqli_fetch_assoc($r);
				return true;
		}else{
				$this->cDoce = null;
				return true;
		}
    }
	function getRecibeDoce($uuid){
		$camposExtraModulos=getINI("CAMPOS_EXTRA_TABLA_RECIBEDOCE=","../config.ini");
		if($camposExtraModulos === false){
			$camposExtraModulos="";
		}else{
			$camposExtraModulos=",".$camposExtraModulos;
		}
		
		$q = "SELECT rd.id, rd.rfcEmisor, rd.tipoDocto, rd.serie, rd.folio, rd.uuid, rd.fechaDocto, rd.rfc_receptor, rd.total, rd.tipoMoneda,rd. status, rd.fechaRecibido, rd.nombreemi, rd.comentarios, rd.ArchivoXML, rd.ArchivoPDF, rd.adicional, rd.tipo_documento, rd.fecha_pago, rd.asignado_a, rd.nombrerec, rd.totalmxn, rd.tipo_cambio, rd.subtotal, rd.subtotal_xml, rd.comentario_status, rd.status_pago, rd.referencia, rd.verificacionSAT, rd.concepto_pago, rd.TipoCambio, rd.tipoComprobante,rd.FormaDePago, rd.status_activa, rd.MetodoDePago, t.rutaPDF_P,t.rutaXML_P,t.usarRutaDistribuida $camposExtraModulos FROM recibedoce rd left join receptor r ON rd.rfc_receptor=r.rfc inner join tdoctos_r t ON r.idReceptor=t.idReceptor WHERE rd.tipoDocto = t.tipodocto and uuid='$uuid'";
		
		if(!$r = mysqli_query($this->CONEXION,$q)){
				$this->mensajeerror = mysqli_error($this->CONEXION);
				$this->noerror = -1;
				return false;
		}
			$this->mensajeerror = "";
			$this->noerror = 0;
		if(mysqli_num_rows($r) > 0){
				$this->cRecibeDoce = mysqli_fetch_assoc($r);
				return true;
		}else{
				$this->cRecibeDoce = null;
				return true;
		}
    }
	function getIconoArchivoRecibeDoce(){
		$nombreArchivo = explode(".",$this->cRecibeDoce["ArchivoXML"],-1);
		$nombrePart="";
		for($j=0; $j < count($nombreArchivo); $j++){
				if($nombrePart != "")
					$nombrePart.=".".$nombreArchivo[$j];
				else
					$nombrePart.=$nombreArchivo[$j];
					
		}
		$STD = $nombrePart."_STD.pdf";
						
		if($this->cRecibeDoce["usarRutaDistribuida"] === "SI"){
			$year = substr($this->cRecibeDoce["fechaRecibido"],0,4);
			$mes = substr($this->cRecibeDoce["fechaRecibido"],5,2);
			$rutaSTD=$this->cRecibeDoce["rutaPDF_P"].$year."/".$mes."/".$STD;
			$this->cRecibeDoce["rutaXML_P"].=$year."/".$mes."/".$this->cRecibeDoce["ArchivoXML"];
			$this->cRecibeDoce["rutaPDF_P"].=$year."/".$mes."/".$this->cRecibeDoce["ArchivoPDF"];				
		}else{
			$rutaSTD=$this->cRecibeDoce["rutaPDF_P"].$STD;
			
			$this->cRecibeDoce["rutaXML_P"]=$this->cRecibeDoce["rutaXML_P"].$this->cRecibeDoce["ArchivoXML"];
			$this->cRecibeDoce["rutaPDF_P"]=$this->cRecibeDoce["rutaPDF_P"].$this->cRecibeDoce["ArchivoPDF"];
		}
		
		$this->cRecibeDoce["rutaXML_P"] = trim(str_replace("<<RFCRECEPTOR>>",$row['rfc_receptor'],str_replace('\\','/',$this->cRecibeDoce["rutaXML_P"])));
		$this->cRecibeDoce["rutaPDF_P"] = trim(str_replace("<<RFCRECEPTOR>>",$row['rfc_receptor'],str_replace('\\','/',$this->cRecibeDoce["rutaPDF_P"])));
		
		
		$rutaSTD = trim(str_replace('\\','/',$rutaSTD));
		
		if($_SESSION["mostrar_pdf_std"] == "SI"){
			if(is_file($rutaSTD)){
				$iconoSTD=' <img src="grids/Imagenes/solocirculochico.png" width="32" height="32" style="cursor:pointer" title="Descargar PDF Standard" onClick="descargar(\''.urlencode($STD).'\',\''.urlencode(str_replace('../','',$rutaSTD)).'\',\''.$this->cRecibeDoce["status"].'\'); return false;"/> ';
			}
		}
		if(is_file($this->cRecibeDoce["rutaXML_P"])){
				$iconoXML='<img src="grids/Imagenes/xml.png" width="32" height="32" style="cursor:pointer" title="Descargar XML" 
				onClick="descargar(\''.urlencode($this->cRecibeDoce["ArchivoXML"]).'\',\''.urlencode(str_replace('../','',$this->cRecibeDoce["rutaXML_P"])).'\',\''.$this->cRecibeDoce["status"].'\'); return false;"/>';
		}else{
			$iconoXML='<img src="grids/Imagenes/nodisponible.jpg" width="32" height="32" title="XML no disponible"/>';
		}
					
					
		if(is_file($this->cRecibeDoce["rutaPDF_P"])){
			$iconoPDF='<img src="grids/Imagenes/pdf.png" width="32" height="32" style="cursor:pointer" title="Descargar PDF" 
			onClick="descargar(\''.urlencode($this->cRecibeDoce["ArchivoPDF"]).'\',\''.urlencode(str_replace('../','',$this->cRecibeDoce["rutaPDF_P"])).'\',\''.$this->cRecibeDoce["status"].'\'); return false;"/>';
		}else{
			$iconoPDF='<img src="grids/Imagenes/nodisponible.jpg" width="32" height="32" style="cursor:pointer" title="PDF no disponible"/>';
		}
		
		$iconos = '<center><pre>'.$iconoXML.' '.$iconoPDF.$iconoSTD.'</pre></center>';
		return $iconos;
	}
    function getPagoDocumentosRef($uuid){
	$q = $queryDocs = "SELECT tipocambio,monto,numparcialidad,uuidcfdirelacionado,moneda FROM pago_documentos_ref
	WHERE doce_uuid='$uuid'";
	if(!$r = mysqli_query($this->CONEXION,$q)){
            $this->mensajeerror = mysqli_error($this->CONEXION);
            $this->noerror = -1;
            return false;
	}
        $this->mensajeerror = "";
        $this->noerror = 0;
	if(mysqli_num_rows($r) > 0){
            $this->cPagoDocumentosRef = $r;
            return true;
	}else{
            $this->cPagoDocumentosRef = null;
            return true;
	}
    }
    function getTotalPagoDocumentosRef($uuid){
	$q = $queryDocs = "SELECT sum(monto) as sumatotal FROM pago_documentos_ref
	WHERE doce_uuid='$uuid'";
	if(!$r = mysqli_query($this->CONEXION,$q)){
            $this->mensajeerror = mysqli_error($this->CONEXION);
            $this->noerror = -1;
            return false;
	}
        $this->mensajeerror = "";
        $this->noerror = 0;
	if(mysqli_num_rows($r) > 0){
            $tmp = mysqli_fetch_assoc($r);
            $this->cTotalPagoDocumentosRef = $tmp["sumatotal"];
            return true;
	}else{
            $this->cTotalPagoDocumentosRef = null;
            return true;
	}
    }
    function getProveedores(){
	$q = "SELECT rfcemisor,nombreemi FROM recibedoce r group by rfcemisor";
	if(!$r = mysqli_query($this->CONEXION,$q)){
            $this->mensajeerror = mysqli_error($this->CONEXION);
            $this->noerror = -1;
            return false;
	}
        $this->mensajeerror = "";
        $this->noerror = 0;
	if(mysqli_num_rows($r) > 0){
            $this->cProveedores =$r;
            return true;
	}else{
            $this->cProveedores = null;
            return true;
	}
    }
    function getCorreosProveedor($rfc){
	$q = "SELECT group_concat(correo SEPARATOR ',') as correo FROM correos_proveedores where rfc='$rfc'";
	if(!$r = mysqli_query($this->CONEXION,$q)){
            $this->mensajeerror = mysqli_error($this->CONEXION);
            $this->noerror = -1;
            return false;
	}
        $this->mensajeerror = "";
        $this->noerror = 0;
	if(mysqli_num_rows($r) > 0){
            $this->cCorreosProveedores = mysqli_fetch_assoc($r);
            return true;
	}else{
            $this->cCorreosProveedores = null;
            return true;
	}
    }
    function getNombreProveedor($rfc,$taxid){
        $cq = "";
        /*if($rfc == "XEXX010101000"){
            if(trim($taxid) != ""){
                $cq = " and taxid='$taxid'";
            }
        }*/
        
	$q = "SELECT nombreemi FROM recibedoce where rfcemisor='$rfc' $cq limit 1";
	if(!$r = mysqli_query($this->CONEXION,$q)){
            $this->mensajeerror = mysqli_error($this->CONEXION);
            $this->noerror = -1;
            return false;
	}
        $this->mensajeerror = "";
        $this->noerror = 0;
	if(mysqli_num_rows($r) > 0){
            $this->cNombreProveedor = $r;
            return true;
	}else{
            $this->cNombreProveedor = null;
            return true;
	}
    }
    function getNombreEmisor($rfc){
	$q = "SELECT nombre FROM emisor where rfc='$rfc' limit 1";
	if(!$r = mysqli_query($this->CONEXION,$q)){
            $this->mensajeerror = mysqli_error($this->CONEXION);
            $this->noerror = -1;
            return false;
	}
        $this->mensajeerror = "";
        $this->noerror = 0;
	if(mysqli_num_rows($r) > 0){
            $this->cNombreEmisor = mysqli_fetch_assoc($r);
            return true;
	}else{
            $this->cNombreEmisor = null;
            return true;
	}
    }
    function getRutaPDF($rfcemisor,$tipodocto){
	$q = "SELECT rutaPDF_P,rutaXML_P FROM emisor e inner join tdoctos t on e.idemisor=t.idemisor where e.rfc='$rfcemisor' and t.tipodocto='$tipodocto' limit 1";
	if(!$r = mysqli_query($this->CONEXION,$q)){
            $this->mensajeerror = mysqli_error($this->CONEXION);
            $this->noerror = -1;
            return false;
	}
        $this->mensajeerror = "";
        $this->noerror = 0;
	if(mysqli_num_rows($r) > 0){
            $tmp = mysqli_fetch_assoc($r);
            $this->cRutaPDF = $tmp["rutaPDF_P"];
            $this->cRutaXML = $tmp["rutaXML_P"];
            return true;
	}else{
            $this->cRutaPDF = null;
            return true;
	}
    }
    function getUUID(){
	$q = "SELECT replace(uuid(),'-','') as uuid";
	if(!$r = mysqli_query($this->CONEXION,$q)){
            $this->mensajeerror = mysqli_error($this->CONEXION);
            $this->noerror = -1;
            return false;
	}
        $this->mensajeerror = "";
        $this->noerror = 0;
	if(mysqli_num_rows($r) > 0){
            $tmp = mysqli_fetch_assoc($r);
            $this->cUUID = $tmp["uuid"];
            return true;
	}else{
            $this->cUUID = null;
            return true;
	}
    }
    
    function getMetodosPago(){
	$q = "SELECT c_metodopago as metodopago,descripcion FROM c_metodopago";
	if(!$r = mysqli_query($this->CONEXION,$q)){
            $this->mensajeerror = mysqli_error($this->CONEXION);
            $this->noerror = -1;
            return false;
	}
        $this->mensajeerror = "";
        $this->noerror = 0;
	if(mysqli_num_rows($r) > 0){
            $this->cMetodosPago = $r;
            return true;
	}else{
            $this->cMetodosPago = null;
            return true;
	}
    }
    
    function getFormasPago(){
	$q = "SELECT c_formapago as formapago,descripcion FROM c_formapago";
	if(!$r = mysqli_query($this->CONEXION,$q)){
            $this->mensajeerror = mysqli_error($this->CONEXION);
            $this->noerror = -1;
            return false;
	}
        $this->mensajeerror = "";
        $this->noerror = 0;
	if(mysqli_num_rows($r) > 0){
            $this->cFormasPago =$r;
            return true;
	}else{
            $this->cFormasPago = null;
            return true;
	}
    }
    
    function getFormaPago($formapago){
		$q = "SELECT c_formapago as formapago,descripcion FROM c_formapago where c_formapago='$formapago' limit 1";
		if(!$r = mysqli_query($this->CONEXION,$q)){
				$this->mensajeerror = mysqli_error($this->CONEXION);
				$this->noerror = -1;
				return false;
		}
			$this->mensajeerror = "";
			$this->noerror = 0;
		if(mysqli_num_rows($r) > 0){
				$this->cFormaPago = mysqli_fetch_assoc($r);
				return true;
		}else{
				$this->cFormaPago = null;
				return true;
		}
    }
    
    function getMonedas(){
	$q = "SELECT c_moneda as moneda,descripcion FROM c_moneda where c_moneda in('MXN','USD','EUR')";
	if(!$r = mysqli_query($this->CONEXION,$q)){
            $this->mensajeerror = mysqli_error($this->CONEXION);
            $this->noerror = -1;
            return false;
	}
        $this->mensajeerror = "";
        $this->noerror = 0;
	if(mysqli_num_rows($r) > 0){
            $this->cMonedas =$r;
            return true;
	}else{
            $this->cMonedas = null;
            return true;
	}
    }
	
	function getEmisores(){
		$q = "select rfc from emisor";
		if(!$r = mysqli_query($this->CONEXION,$q)){
				$this->mensajeerror = mysqli_error($this->CONEXION);
				$this->noerror = -1;
				return false;
		}
		$this->mensajeerror = "";
		$this->noerror = 0;
		if(mysqli_num_rows($r) > 0){
				$this->cEmisores =$r;
				return true;
		}else{
				$this->cEmisores = null;
				return true;
		}
    }
	
	function getUUIDPendientesCancelacion($rfc){
		$q = "select uuid,fechaInsercion from uuid_pendientes_cancelacion where rfc='$rfc' and status='0'";
		if(!$r = mysqli_query($this->CONEXION,$q)){
				$this->mensajeerror = mysqli_error($this->CONEXION);
				$this->noerror = -1;
				return false;
		}
		$this->mensajeerror = "";
		$this->noerror = 0;
		if(mysqli_num_rows($r) > 0){
				$this->cUUIDPendientesCancelacion =$r;
				return true;
		}else{
				$this->cUUIDPendientesCancelacion = null;
				return true;
		}
    }
	
	function getReceptores(){
		$q = "select rfc,nombre from receptor";
		if(!$r = mysqli_query($this->CONEXION,$q)){
				$this->mensajeerror = mysqli_error($this->CONEXION);
				$this->noerror = -1;
				return false;
		}
		$this->mensajeerror = "";
		$this->noerror = 0;
		if(mysqli_num_rows($r) > 0){
				$this->cReceptores =$r;
				return true;
		}else{
				$this->cReceptores = null;
				return true;
		}
    }
	
	function getReceptor($rfc){
		$completaQuery="";
		
		if($_SESSION["MODULO_PENDIENTES_CANCELAR"] === "1"){
			$completaQuery=",cerPass,cerB64,keyB64";
		}
		
		$q = "select rfc,nombre $completaQuery from receptor where rfc='$rfc'";
		if(!$r = mysqli_query($this->CONEXION,$q)){
				$this->mensajeerror = mysqli_error($this->CONEXION);
				$this->noerror = -1;
				return false;
		}
		$this->mensajeerror = "";
		$this->noerror = 0;
		if(mysqli_num_rows($r) > 0){
				$this->cReceptor =mysqli_fetch_assoc($r);
				return true;
		}else{
				$this->cReceptor = null;
				return true;
		}
    }
    
    function getFolioSiguiente($tipoDocto){
	$q = "SELECT tipoDocto,serie,folio FROM config_folios_tipos_documento
	WHERE tipoDocto='$tipoDocto'";
	if(!$r = mysqli_query($this->CONEXION,$q)){
            $this->mensajeerror = mysqli_error($this->CONEXION);
            $this->noerror = -1;
            return false;
	}
	$this->mensajeerror = "";
        $this->noerror = 0;	
	if(mysqli_num_rows($r) > 0){
            $this->cFolioSiguiente = mysqli_fetch_assoc($r);
            return true;
	}else{
            $this->cFolioSiguiente = null;
            return true;
	}
    }
    function incrementaFolio($tipoDocto){
	$q = "update config_folios_tipos_documento set folio=folio+1 WHERE tipoDocto='$tipoDocto'";
	if(!$r = mysqli_query($this->CONEXION,$q)){
            $this->mensajeerror = mysqli_error($this->CONEXION);
            $this->noerror = -1;
            return false;
	}
	if(mysqli_affected_rows($this->CONEXION) > 0){
            $this->mensajeerror = "";
            $this->noerror = 0;
            return true;
	}else{
            $this->mensajeerror = "No se afecto ningún registro.";
            $this->noerror = 201;
            return true;
	}
    }
    function Alert($mensaje){
        ?><script>
            if (typeof $j_6 != "undefined") {
                $j_6.messager.alert("Error.","<?=htmlentities($mensaje,ENT_QUOTES);?>","error");
            }else{
                $j_7.messager.alert("Error.","<?=htmlentities($mensaje,ENT_QUOTES);?>","error");
            }
            
        </script><?exit;
    }
    function InfoContinua($mensaje){
        ?><script>
            if (typeof $j_6 != "undefined") {
                $j_6.messager.alert("Aviso.","<?=htmlentities($mensaje,ENT_QUOTES);?>","info");
            }else{
                $j_7.messager.alert("Aviso.","<?=htmlentities($mensaje,ENT_QUOTES);?>","info");
            }
        </script><?
    }
    function Info($mensaje){
        ?><script>
            if (typeof $j_6 != "undefined") {
                $j_6.messager.alert("Aviso.","<?=htmlentities($mensaje,ENT_QUOTES);?>","info");
            }else{
                $j_7.messager.alert("Aviso.","<?=htmlentities($mensaje,ENT_QUOTES);?>","info");
            }
        </script><?exit;
    }
	function getConfig($rfc){
		$q = "select notificar_dias,notificar_despuesde,notificar_repetirdias,notificar_correos,notificar_asunto,notificar_correos_cc,notificar_fecha_inicio,tolerancia_NPvsComplemento,tolerancia_NPvsFactura,tolerancia_FacturaPagada,tolerancia_CompensacionEgreso,tolerancia_tipoCambio from configpagina where rfc_receptor='$rfc' limit 1";
		if(!$r = mysqli_query($this->CONEXION,$q)){
				$this->mensajeerror = mysqli_error($this->CONEXION);
				$this->noerror = -1;
				return false;
		}
		$this->mensajeerror = "";
		$this->noerror = 0;
		if(mysqli_num_rows($r) > 0){
				$this->cConfig =$r;
				$this->cConfig = mysqli_fetch_assoc($r);
				$this->cConfig["tolerancia_NPvsComplemento"] = (float) $this->cConfig["tolerancia_NPvsComplemento"];
				$this->cConfig["tolerancia_NPvsFactura"] = (float) $this->cConfig["tolerancia_NPvsFactura"];
				$this->cConfig["tolerancia_FacturaPagada"] = (float) $this->cConfig["tolerancia_FacturaPagada"];
				$this->cConfig["tolerancia_CompensacionEgreso"] = (float) $this->cConfig["tolerancia_CompensacionEgreso"];
				$this->cConfig["tolerancia_tipoCambio"] = (float) $this->cConfig["tolerancia_tipoCambio"];
		}else{
				$this->cConfig = null;
		}
		
		$this->cConfig["tolerancia_NPvsComplemento"] = (trim($this->cConfig["tolerancia_NPvsComplemento"]) == "")? 0 : $this->cConfig["tolerancia_NPvsComplemento"];
		$this->cConfig["tolerancia_NPvsFactura"] = (trim($this->cConfig["tolerancia_NPvsFactura"]) == "")? 0 : $this->cConfig["tolerancia_NPvsFactura"];
		$this->cConfig["tolerancia_FacturaPagada"] = (trim($this->cConfig["tolerancia_FacturaPagada"]) == "")? 0 : $this->cConfig["tolerancia_FacturaPagada"];
		$this->cConfig["tolerancia_CompensacionEgreso"] = (trim($this->cConfig["tolerancia_CompensacionEgreso"]) == "")? 0 : $this->cConfig["tolerancia_CompensacionEgreso"];
		$this->cConfig["tolerancia_tipoCambio"] = (trim($this->cConfig["tolerancia_tipoCambio"]) == "")? 0 : $this->cConfig["tolerancia_tipoCambio"];
		
		return true;
	}
    function enviarNotificacion($uuid,$rfc){
        ?><script>enviaNotificacionDePago('<?=$uuid?>','<?=$rfc?>');</script><?
    }
    function Error($mensaje){
        ?><h1><?=$mensaje;?></h1><?exit;
    }
    function limpiaCursor($cursor){
        mysqli_free_result($cursor);
    }
    function setValueForm($idInput,$id){
        ?><script>$j_6("#<?=$idInput?>").val('<?=$id?>')</script><?
    }
    function setReadOnly($idInput){
        ?><script>$j_6("#<?=$idInput?>").attr('readonly','true')</script><?
    }
    function setDisabled($idInput){
        ?><script>$j_6("#<?=$idInput?>").attr('disabled','true')</script><?
    }
}
