header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
	header("Cache-Control: private",false);
	header("X-LIGHTTPD-SID: ".session_id()); 

	//--------------Declaraciones e Inicializaciones-----------------------//
	require_once('../../shared/class_folder/class_pdf.php');
	require_once("../../shared/class_folder/class_mensajes.php");
	require_once("../../shared/class_folder/class_funciones.php");
	require_once("../../shared/class_folder/sigesp_include.php");
	require_once("../../shared/class_folder/class_datastore.php");
	require_once("../../shared/class_folder/class_sql.php");
	require_once("../../shared/class_folder/class_sigesp_int.php");
	require_once("../../shared/class_folder/class_fecha.php");
	require_once("../../shared/class_folder/class_sigesp_int_scg.php");
	require_once("../../shared/class_folder/class_sigesp_int_spg.php");
	$int_spg=new class_sigesp_int_spg();
	$in=new sigesp_include();
	$con=$in->uf_conectar();
	$io_sql=new class_sql($con);	
	require_once("sigesp_scb_report.php");
	$class_report=new sigesp_scb_report($con);
	$io_funciones=new class_funciones();				
	$ds_voucher=new class_datastore();	
	$ds_dt_scg=new class_datastore();				
	$ds_dt_spg=new class_datastore();
	//Instancio a la clase de conversión de numeros a letras.
	include("../../shared/class_folder/cnumero_letra.php");
	$numalet= new cnumero_letra();
	
	$ls_codemp=$_SESSION["la_empresa"]["codemp"];
	$ls_nomemp=$_SESSION["la_empresa"]["nombre"];
	function uf_validar_cuentas($as_codnom,$as_codperi)
	{
		//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//	     Function: uf_validar_cuentas
		//		   Access: private
		//		 Argument: as_numsol // Número de solicitud
		//				   as_estsol  // Estatus de la solicitud
		//	  Description: Función que busca que las cuentas presupuestarias estén en la programática seleccionada
		//				   de ser asi coloca la sep en emitida sino la coloca en registrada
		//	   Creado Por: Ing. Yesenia Moreno/ Ing. Luis Lang
		// Modificado Por: Ing. Yozelin Barragan
		// Fecha Creación: 17/03/2007								Fecha Última Modificación : 
		//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$lb_valido=true;
		$ls_mensaje="";
		require_once("../shared/class_folder/class_sigesp_int.php");
		require_once("../shared/class_folder/class_sigesp_int_scg.php");
		require_once("../shared/class_folder/class_sigesp_int_spg.php");
		$io_intspg=new class_sigesp_int_spg();		
		$ls_sql="SELECT codestpro1, codestpro2, codestpro3, codestpro4, codestpro5,estcla, TRIM(spg_cuenta) AS spg_cuenta, monto, ".
				"	    (SELECT (asignado-(comprometido+precomprometido)+aumento-disminucion) ".
				"		   FROM spg_cuentas ".
				"		  WHERE spg_cuentas.codemp = sno_dt_spg.codemp ".
				"			AND spg_cuentas.codestpro1 = sno_dt_spg.codestpro1 ".
				"		    AND spg_cuentas.codestpro2 = sno_dt_spg.codestpro2 ".
				"		    AND spg_cuentas.codestpro3 = sno_dt_spg.codestpro3 ".
				"		    AND spg_cuentas.codestpro4 = sno_dt_spg.codestpro4 ".
				"		    AND spg_cuentas.codestpro5 = sno_dt_spg.codestpro5 ".
				"           AND spg_cuentas.estcla=sno_dt_spg.estcla".
				"			AND spg_cuentas.spg_cuenta = sno_dt_spg.spg_cuenta) AS disponibilidad, ".		
				"		(SELECT COUNT(codemp) ".
				"		   FROM spg_cuentas ".
				"		  WHERE spg_cuentas.codemp = sno_dt_spg.codemp ".
				"			AND spg_cuentas.codestpro1 = sno_dt_spg.codestpro1 ".
				"		    AND spg_cuentas.codestpro2 = sno_dt_spg.codestpro2 ".
				"		    AND spg_cuentas.codestpro3 = sno_dt_spg.codestpro3 ".
				"		    AND spg_cuentas.codestpro4 = sno_dt_spg.codestpro4 ".
				"		    AND spg_cuentas.codestpro5 = sno_dt_spg.codestpro5 ".
				"           AND spg_cuentas.estcla=sno_dt_spg.estcla".
				"			AND spg_cuentas.spg_cuenta = sno_dt_spg.spg_cuenta) AS existe ".		
				"  FROM sno_dt_spg  ".
				" WHERE codemp='".$this->ls_codemp."' ".
				"   AND codnom='".$as_codnom."' ";
		$rs_data=$this->io_sql->select($ls_sql);
		if($rs_data===false)
		{
			$this->io_mensajes->message("CLASE->Cierre_Periodo_4 MÉTODO->uf_validar_cuentas ERROR->".$this->io_funciones->uf_convertirmsg($this->io_sql->message)); 
			$lb_valido=true;
		}
		else
		{
			$lb_existe=true;
			while(($row=$this->io_sql->fetch_row($rs_data))&&($lb_existe))
			{
				$ls_codestpro1=$row["codestpro1"];
				$ls_codestpro2=$row["codestpro2"];
				$ls_codestpro3=$row["codestpro3"];
				$ls_codestpro4=$row["codestpro4"];
				$ls_codestpro5=$row["codestpro5"];
				$ls_estcla=$row["estcla"];
				$ls_spg_cuenta=$row["spg_cuenta"];
				$li_monto=$row["monto"];
				$li_existe=$row["existe"];
				$estprog[0]=$row["codestpro1"];
				$estprog[1]=$row["codestpro2"];
				$estprog[2]=$row["codestpro3"];
				$estprog[3]=$row["codestpro4"];
				$estprog[4]=$row["codestpro5"];
				$estprog[5]=$row["estcla"];
				$lb_valido=$io_intspg->uf_spg_saldo_select($this->ls_codemp, $estprog, $ls_spg_cuenta, &$ls_status, &$adec_asignado, 
				                                           &$adec_aumento,&$adec_disminucion,&$adec_precomprometido,
													   	   &$adec_comprometido,&$adec_causado,&$adec_pagado);
				$lb_valido=true;
				$li_disponibilidad=($adec_asignado-($adec_comprometido+$adec_precomprometido)+$adec_aumento-$adec_disminucion);
				if($li_existe>0)
				{
					$li_monto=number_format($li_monto,2,".","");
					$li_disponibilidad=number_format($li_disponibilidad,2,".","");
					if($li_monto>$li_disponibilidad)
					{
						$ls_estmodest = $_SESSION["la_empresa"]["estmodest"];
						if($ls_estmodest==1)
						{
							$ls_codestpro1 = substr($ls_codestpro1,-$_SESSION["la_empresa"]["loncodestpro1"]);
							$ls_codestpro2 = substr($ls_codestpro2,-$_SESSION["la_empresa"]["loncodestpro2"]);
							$ls_codestpro3 = substr($ls_codestpro3,-$_SESSION["la_empresa"]["loncodestpro3"]);
							$ls_codestpro  = $ls_codestpro1.'-'.$ls_codestpro2.'-'.$ls_codestpro3;
						}
						else
						{
							$ls_codestpro=substr($ls_codestpro1,-2)."-".substr($ls_codestpro2,-2)."-".substr($ls_codestpro3,-2)."-".substr($ls_codestpro4,-2)."-".substr($ls_codestpro5,-2);
						}
						$li_monto=number_format($li_monto,2,",",".");
						$li_disponibilidad=number_format($li_disponibilidad,2,",",".");
						$ls_mensaje = $ls_mensaje.' Estructura: '.$ls_codestpro.' - '.'Cuenta:'.$ls_spg_cuenta.', Disponible:'.$li_disponibilidad.' , Monto:'.$li_monto.' No Posee Disponibilidad'.'\n';
					}
					else
					{
						$ls_estmodest = $_SESSION["la_empresa"]["estmodest"];
						if($ls_estmodest==1)
						{
							$ls_codestpro1 = substr($ls_codestpro1,-$_SESSION["la_empresa"]["loncodestpro1"]);
							$ls_codestpro2 = substr($ls_codestpro2,-$_SESSION["la_empresa"]["loncodestpro2"]);
							$ls_codestpro3 = substr($ls_codestpro3,-$_SESSION["la_empresa"]["loncodestpro3"]);
							$ls_codestpro  = $ls_codestpro1.'-'.$ls_codestpro2.'-'.$ls_codestpro3;
						}
						else
						{
							$ls_codestpro=substr($ls_codestpro1,-2)."-".substr($ls_codestpro2,-2)."-".substr($ls_codestpro3,-2)."-".substr($ls_codestpro4,-2)."-".substr($ls_codestpro5,-2);
						}
						$li_monto=number_format($li_monto,2,",",".");
						$li_disponibilidad=number_format($li_disponibilidad,2,",",".");
						$ls_mensaje = $ls_mensaje.' Estructura: '.$ls_codestpro.'  -  '.'Cuenta:'.$ls_spg_cuenta.', Disponible:'.$li_disponibilidad.' , Monto:'.$li_monto.' Posee Disponibilidad'.'\n';
						
					}
				}
				else
				{
					$lb_existe = true;
					$this->io_mensajes->message("La cuenta ".$ls_spg_cuenta." No Existe en la Estructura ".$ls_codestpro1.$ls_codestpro2.$ls_codestpro3.$ls_codestpro4.$ls_codestpro5.""); 
				}
			}
			if($ls_mensaje!="")
				{
					$ls_mensaje=' Disponibilidad para contabilizar la Nomina: \n\n  '.$ls_mensaje;
					$this->io_mensajes->message($ls_mensaje);
				}
			$this->io_sql->free_result($rs_data);	
		}
		return $lb_valido;
	}// end function uf_validar_cuentas
	function uf_validar_cuentas($as_numordcom,&$as_estcom,$as_estcondat)
	{
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//	     Function: uf_validar_cuentas
		//		   Access: private
		//		 Argument: as_numordcom ---> mumero de la orden de compra
		//				   as_estcom  ---> estatus de la orden de compra
		//                 as_estcondat ---> tipo de la orden de compra bienes o servicios
		//	  Description: Función que busca que las cuentas presupuestarias estén en la programática seleccionada
		//				   de ser asi coloca la sep en emitida sino la coloca en registrada
		//	   Creado Por: Ing. Yesenia Moreno/ Ing. Luis Lang
		// Modificado Por: Ing. Yozelin Barragan
		// Fecha Creación: 17/03/2007								Fecha Última Modificación : 12/05/2007
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$lb_valido=true;
		global $as_pathaux;
		require_once($as_pathaux."shared/class_folder/class_sigesp_int.php");
		require_once($as_pathaux."shared/class_folder/class_sigesp_int_scg.php");
		require_once($as_pathaux."shared/class_folder/class_sigesp_int_spg.php");
		$io_intspg=new class_sigesp_int_spg();		
		$ls_sql="SELECT codestpro1, codestpro2, codestpro3, codestpro4, codestpro5, TRIM(spg_cuenta) AS spg_cuenta, estcla, monto, ".
				"	    (SELECT (asignado-(comprometido+precomprometido)+aumento-disminucion) ".
				"		   FROM spg_cuentas ".
				"		  WHERE spg_cuentas.codemp = soc_cuentagasto.codemp ".
				"			AND spg_cuentas.codestpro1 = soc_cuentagasto.codestpro1 ".
				"		    AND spg_cuentas.codestpro2 = soc_cuentagasto.codestpro2 ".
				"		    AND spg_cuentas.codestpro3 = soc_cuentagasto.codestpro3 ".
				"		    AND spg_cuentas.codestpro4 = soc_cuentagasto.codestpro4 ".
				"		    AND spg_cuentas.codestpro5 = soc_cuentagasto.codestpro5 ".
				"		    AND spg_cuentas.estcla = soc_cuentagasto.estcla ".
				"			AND spg_cuentas.spg_cuenta = soc_cuentagasto.spg_cuenta) AS disponibilidad, ".		
				"		(SELECT COUNT(codemp) ".
				"		   FROM spg_cuentas ".
				"		  WHERE spg_cuentas.codemp = soc_cuentagasto.codemp ".
				"			AND spg_cuentas.codestpro1 = soc_cuentagasto.codestpro1 ".
				"		    AND spg_cuentas.codestpro2 = soc_cuentagasto.codestpro2 ".
				"		    AND spg_cuentas.codestpro3 = soc_cuentagasto.codestpro3 ".
				"		    AND spg_cuentas.codestpro4 = soc_cuentagasto.codestpro4 ".
				"		    AND spg_cuentas.codestpro5 = soc_cuentagasto.codestpro5 ".
				"		    AND spg_cuentas.estcla = soc_cuentagasto.estcla ".
				"			AND spg_cuentas.spg_cuenta = soc_cuentagasto.spg_cuenta) AS existe ".		
				"  FROM soc_cuentagasto  ".
				" WHERE codemp='".$this->ls_codemp."' ".
				"   AND numordcom='".$as_numordcom."' ".
				"   AND estcondat='".$as_estcondat."' "; //print $ls_sql;
		$rs_data=$this->io_sql->select($ls_sql);
		if($rs_data===false)
		{
			$this->io_mensajes->message("CLASE->sigesp_soc_c_registro_orden_compra.php;MÉTODO->uf_validar_cuentas ERROR->".$this->io_funciones->uf_convertirmsg($this->io_sql->message)); 
			$lb_valido=false;
		}
		else
		{
			$lb_existe=true;
			while(($row=$this->io_sql->fetch_row($rs_data))&&($lb_existe))
			{
				$ls_estcla     = trim($row["estcla"]);
				$ls_codestpro1 = trim($row["codestpro1"]);
				$ls_codestpro2 = trim($row["codestpro2"]);
				$ls_codestpro3 = trim($row["codestpro3"]);
				$ls_codestpro4 = trim($row["codestpro4"]);
				$ls_codestpro5 = trim($row["codestpro5"]);
				$ls_spg_cuenta = trim($row["spg_cuenta"]);
				$li_monto      = $row["monto"];
				$estprog[0]=$row["codestpro1"];
				$estprog[1]=$row["codestpro2"];
				$estprog[2]=$row["codestpro3"];
				$estprog[3]=$row["codestpro4"];
				$estprog[4]=$row["codestpro5"];
				$estprog[5]=$row["estcla"];
				$lb_valido=$io_intspg->uf_spg_saldo_select($this->ls_codemp, $estprog, $ls_spg_cuenta, &$ls_status, &$adec_asignado, 
				                                           &$adec_aumento,&$adec_disminucion,&$adec_precomprometido,
													   	   &$adec_comprometido,&$adec_causado,&$adec_pagado);
				$li_disponibilidad=($adec_asignado-($adec_comprometido+$adec_precomprometido)+$adec_aumento-$adec_disminucion);
				$li_existe=$row["existe"];
				if($li_existe>0)
				{
					$li_monto=number_format($li_monto,2,".","");
					$li_disponibilidad=number_format($li_disponibilidad,2,".","");
					if($li_monto>$li_disponibilidad)
					{
						$li_monto=number_format($li_monto,2,",",".");
						$li_disponibilidad=number_format($li_disponibilidad,2,",",".");
						$this->io_mensajes->message("No hay Disponibilidad en la cuenta ".$ls_spg_cuenta." Disponible=[".$li_disponibilidad."] Cuenta=[".$li_monto."]"); 
					}
				}
				else
				{
					$lb_existe = false;
					$this->io_mensajes->message("La cuenta ".$ls_spg_cuenta." No Existe en la Estructura ".$ls_codestpro1.'-'.$ls_codestpro2.'-'.$ls_codestpro3.'-'.$ls_codestpro4.'-'.$ls_codestpro5."; Tipo = ".$ls_estcla); 
				}
				
			}
			$this->io_sql->free_result($rs_data);	
			if($lb_existe)
			{
				$as_estcom=1; // EMITIDA SE DEBE CAMBIAR EN LETRAS (E)
			}
			else
			{
				$as_estcom=0; // REGISTRO SE DEBE CAMBIAR EN LETRAS (R)
			}
			$ls_sql="UPDATE soc_ordencompra ".
					"   SET estcom='".$as_estcom."' ".
					" WHERE codemp = '".$this->ls_codemp."' AND ".
					"	    numordcom = '".$as_numordcom."' AND ".
					"       estcondat= '".$as_estcondat."'  ";
			$li_row=$this->io_sql->execute($ls_sql);
			if($li_row===false)
			{
				$lb_valido=false;
				$this->io_mensajes->message("CLASE->sigesp_soc_c_registro_orden_compra.php;MÉTODO->uf_validar_cuentas ERROR->".$this->io_funciones->uf_convertirmsg($this->io_sql->message)); 
			}
		}
		return $lb_valido;
	}// end function uf_validar_cuentas
		{
			$lb_permisos=$_POST["permisos"];
		}
	}
	else
	{
		$lb_permisos=$io_seguridad->uf_sss_select_permisos($ls_empresa,$ls_logusr,$ls_sistema,$ls_ventana);
	}
//////////////////////////////////////////////         SEGURIDAD               /////////////////////////////////////////////
$sig_inc=new sigesp_include();
$con=$sig_inc->uf_conectar();
$fun_db=new class_funciones_db($con);
$in_classcmp=new sigesp_spg_c_mod_presupuestarias();
$fun=new class_funciones();
$int_scg=new class_sigesp_int_scg();
$int_spg=new class_sigesp_int_spg();
$msg=new class_mensajes();
$io_grid=new grid_param();
$int_fec=new class_fecha();

$la_emp=$_SESSION["la_empresa"];
$li_estmodest=$la_emp["estmodest"];

if(array_key_exists("operacion",$_POST))
{
	$ls_operacion=$_POST["operacion"];
 	$ls_procede = $_POST["txtproccomp"];
	$ls_comprobante = $_POST["txtcomprobante"];
	$ls_fecha     = $_POST["txtfecha"];
	$ls_descripcion = $_POST["txtdesccomp"];
	$ls_procede	  = $_POST["txtproccomp"];
function uf_print_cuentasspg()
{
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //	     Function: uf_print_cuentasspg
    //		   Access: private
    //	    Arguments:
    //	  Description: Método que inprime el resultado de la busqueda de las cuentas presupuestarias
    //	   Creado Por: Ing. Yesenia Moreno/ Ing. Luis Lang
    // Fecha Creación: 07/04/2007								Fecha Última Modificación :
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    global $io_funciones_cxp;
    require_once "../../shared/class_folder/sigesp_include.php";
    $io_include = new sigesp_include();
    $io_conexion = $io_include->uf_conectar();
    require_once "../../shared/class_folder/class_sql.php";
    $io_sql = new class_sql($io_conexion);
    require_once "../../shared/class_folder/class_mensajes.php";
    $io_mensajes = new class_mensajes();
    require_once "../../shared/class_folder/class_funciones.php";
    $io_funciones = new class_funciones();
    require_once "../../shared/class_folder/class_fecha.php";
    require_once "../../shared/class_folder/class_sigesp_int.php";
    require_once "../../shared/class_folder/class_sigesp_int_scg.php";
    require_once "../../shared/class_folder/class_sigesp_int_spg.php";
    $io_intspg = new class_sigesp_int_spg();
    $ls_spgcuenta = "%" . $_POST['spgcuenta'] . "%";
    $ls_dencue = "%" . $_POST['dencue'] . "%";
    $ls_estcla = $_POST['estcla'];
    $ls_codestpro1 = str_pad($_POST['codestpro1'], 25, 0, 0);
    $ls_codestpro2 = str_pad($_POST['codestpro2'], 25, 0, 0);
    $ls_codestpro3 = str_pad($_POST['codestpro3'], 25, 0, 0);
    $ls_codestpro4 = str_pad($_POST['codestpro4'], 25, 0, 0);
    $ls_codestpro5 = str_pad($_POST['codestpro5'], 25, 0, 0);
    $ls_codemp = $_SESSION['la_empresa']['codemp'];
    $ls_orden = $_POST['orden'];
    $ls_campoorden = $_POST['campoorden'];
    $_SESSION["fechacomprobante"] = date('Y-m-d');
    if ($ls_campoorden == "codpro") {
        $ls_campoorden = "codestpro1,codestpro2,codestpro3,codestpro4,codestpro5";
    }
    $io_funciones_cxp->uf_loadmodalidad(&$li_len1, &$li_len2, &$li_len3, &$li_len4, &$li_len5, &$ls_titulo);
    $ls_cuentas = "";
    $ls_tipocuenta = "";
    $ls_sql = "SELECT TRIM(spg_cuenta) AS spg_cuenta , denominacion, codestpro1,codestpro2, codestpro3, codestpro4, codestpro5, status, " . "       (asignado-(comprometido+precomprometido)+aumento-disminucion) as disponible, sc_cuenta, estcla " . "  FROM spg_cuentas " . " WHERE codemp = '" . $ls_codemp . "'  " . "\tAND codestpro1 = '" . $ls_codestpro1 . "' " . "\tAND codestpro2 = '" . $ls_codestpro2 . "' " . "\tAND codestpro3 = '" . $ls_codestpro3 . "' " . "\tAND codestpro4 = '" . $ls_codestpro4 . "' " . "\tAND codestpro5 = '" . $ls_codestpro5 . "' " . "\tAND estcla = '" . $ls_estcla . "' " . "\tAND spg_cuenta like '" . $ls_spgcuenta . "' " . "   AND denominacion like '" . $ls_dencue . "' " . " ORDER BY " . $ls_campoorden . " " . $ls_orden . " ";
    $rs_data = $io_sql->select($ls_sql);
    if ($rs_data === false) {
        $io_mensajes->uf_mensajes_ajax("Error al cargar Cuentas Presupuestarias ", "ERROR->" . $io_funciones->uf_convertirmsg($io_sql->message), false, "");
    } else {
        print "<table width=620 border=0 cellpadding=1 cellspacing=1 class=fondo-tabla align=center>";
        print "<tr class=titulo-celda>";
        print "<td width=100 style='cursor:pointer' title='Ordenar por Programatica'          align='center' onClick=ue_orden('codpro')>" . $ls_titulo . "</td>";
        print "<td width=50>" . utf8_encode("Estatus") . "</td>";
        print "<td width=100 style='cursor:pointer' title='Ordenar por Cuenta Presupuestaria' align='center' onClick=ue_orden('spg_cuenta')>Presupuestaria</td>";
        print "<td width=100 style='cursor:pointer' title='Ordenar por Cuenta Contable'       align='center' onClick=ue_orden('sc_cuenta')>Contable</td>";
        print "<td width=170 style='cursor:pointer' title='Ordenar por Denominacion'          align='center' onClick=ue_orden('denominacion')>Denominacion</td>";
        print "<td width=100 style='cursor:pointer' title='Ordenar por Disponible'            align='center' onClick=ue_orden('disponible')>Disponible</td>";
        print "</tr>";
        while ($row = $io_sql->fetch_row($rs_data)) {
            $li_disponible = 0;
            $ls_spg_cuenta = trim($row["spg_cuenta"]);
            $ls_sccuenta = trim($row["sc_cuenta"]);
            $ls_status = trim($row["status"]);
            $ls_denominacion = utf8_encode(rtrim($row["denominacion"]));
            $ls_estcla = utf8_encode(rtrim($row["estcla"]));
            $ls_codestpro = $row["codestpro1"] . $row["codestpro2"] . $row["codestpro3"] . $row["codestpro4"] . $row["codestpro5"];
            $estprog[0] = $row["codestpro1"];
            $estprog[1] = $row["codestpro2"];
            $estprog[2] = $row["codestpro3"];
            $estprog[3] = $row["codestpro4"];
            $estprog[4] = $row["codestpro5"];
            $estprog[5] = $row["estcla"];
            $lb_valido = $io_intspg->uf_spg_saldo_select($ls_codemp, $estprog, $ls_spg_cuenta, &$ls_status, &$adec_asignado, &$adec_aumento, &$adec_disminucion, &$adec_precomprometido, &$adec_comprometido, &$adec_causado, &$adec_pagado);
            $li_disponible = $adec_asignado - ($adec_comprometido + $adec_precomprometido) + $adec_aumento - $adec_disminucion;
            $li_disponible = number_format($li_disponible, 2, ",", ".");
            $ls_estatus = "";
            switch ($ls_estcla) {
                case "A":
                    $ls_estatus = utf8_encode("Acción");
                    break;
                case "P":
                    $ls_estatus = utf8_encode("Proyecto");
                    break;
            }
            $ls_programatica = "";
            $io_funciones_cxp->uf_formatoprogramatica($ls_codestpro, &$ls_programatica);
            if ($ls_status == "C") {
                print "<tr class=celdas-azules>";
                print "<td align='center'><a href=\"javascript: ue_aceptar('" . $ls_spg_cuenta . "','" . $ls_denominacion . "','" . $ls_sccuenta . "','" . $li_disponible . "');\">" . $ls_programatica . "</a></td>";
                print "<td align='center'>" . $ls_estatus . "</td>";
                print "<td align='center'>" . $ls_spg_cuenta . "</td>";
                print "<td align='center'>" . $ls_sccuenta . "</td>";
                print "<td align='left'>" . $ls_denominacion . "</td>";
                print "<td align='right'>" . $li_disponible . "</td>";
                print "</tr>";
            } else {
                print "<tr class=celdas-blancas>";
                print "<td align='center'>" . $ls_programatica . "</td>";
                print "<td align='center'>" . $ls_estatus . "</td>";
                print "<td align='center'>" . $ls_spg_cuenta . "</td>";
                print "<td align='center'>" . $ls_sccuenta . "</td>";
                print "<td align='left'>" . $ls_denominacion . "</td>";
                print "<td align='right'>" . $li_disponible . "</td>";
                print "</tr>";
            }
        }
        $io_sql->free_result($rs_data);
        print "</table>";
    }
    unset($io_include, $io_conexion, $io_sql, $io_mensajes, $io_funciones, $ls_codemp, $_SESSION["fechacomprobante"]);
}
	function uf_validar_cuentas($as_numsol,&$as_estsol,$as_operacion)
	{
		//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//	     Function: uf_validar_cuentas
		//		   Access: private
		//		 Argument: as_numsol // Número de solicitud
		//				   as_estsol  // Estatus de la solicitud
		//	  Description: Función que busca que las cuentas presupuestarias estén en la programática seleccionada
		//				   de ser asi coloca la sep en emitida sino la coloca en registrada
		//	   Creado Por: Ing. Yesenia Moreno/ Ing. Luis Lang
		// Modificado Por: Ing. Yozelin Barragan
		// Fecha Creación: 17/03/2007								Fecha Última Modificación : 
		//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$lb_valido=true;
		global $as_pathaux;
		require_once($as_pathaux."shared/class_folder/class_sigesp_int.php");
		require_once($as_pathaux."shared/class_folder/class_sigesp_int_scg.php");
		require_once($as_pathaux."shared/class_folder/class_sigesp_int_spg.php");
		$io_intspg=new class_sigesp_int_spg();		
		$ls_sql="SELECT codestpro1, codestpro2, codestpro3, codestpro4, codestpro5,estcla, TRIM(spg_cuenta) AS spg_cuenta, monto, ".
				"	    (SELECT (asignado-(comprometido+precomprometido)+aumento-disminucion) ".
				"		   FROM spg_cuentas ".
				"		  WHERE spg_cuentas.codemp = sep_cuentagasto.codemp ".
				"			AND spg_cuentas.codestpro1 = sep_cuentagasto.codestpro1 ".
				"		    AND spg_cuentas.codestpro2 = sep_cuentagasto.codestpro2 ".
				"		    AND spg_cuentas.codestpro3 = sep_cuentagasto.codestpro3 ".
				"		    AND spg_cuentas.codestpro4 = sep_cuentagasto.codestpro4 ".
				"		    AND spg_cuentas.codestpro5 = sep_cuentagasto.codestpro5 ".
				"           AND spg_cuentas.estcla=sep_cuentagasto.estcla".
				"			AND spg_cuentas.spg_cuenta = sep_cuentagasto.spg_cuenta) AS disponibilidad, ".		
				"		(SELECT COUNT(codemp) ".
				"		   FROM spg_cuentas ".
				"		  WHERE spg_cuentas.codemp = sep_cuentagasto.codemp ".
				"			AND spg_cuentas.codestpro1 = sep_cuentagasto.codestpro1 ".
				"		    AND spg_cuentas.codestpro2 = sep_cuentagasto.codestpro2 ".
				"		    AND spg_cuentas.codestpro3 = sep_cuentagasto.codestpro3 ".
				"		    AND spg_cuentas.codestpro4 = sep_cuentagasto.codestpro4 ".
				"		    AND spg_cuentas.codestpro5 = sep_cuentagasto.codestpro5 ".
				"           AND spg_cuentas.estcla=sep_cuentagasto.estcla".
				"			AND spg_cuentas.spg_cuenta = sep_cuentagasto.spg_cuenta) AS existe ".		
				"  FROM sep_cuentagasto  ".
				" WHERE codemp='".$this->ls_codemp."' ".
				"   AND numsol='".$as_numsol."'";
		$rs_data=$this->io_sql->select($ls_sql);
		if($rs_data===false)
		{
			$this->io_mensajes->message("CLASE->Solicitud MÉTODO->uf_validar_cuentas ERROR->".$this->io_funciones->uf_convertirmsg($this->io_sql->message)); 
			$lb_valido=false;
		}
		else
		{
			$lb_existe=true;
			while(($row=$this->io_sql->fetch_row($rs_data))&&($lb_existe))
			{
				$ls_codestpro1=$row["codestpro1"];
				$ls_codestpro2=$row["codestpro2"];
				$ls_codestpro3=$row["codestpro3"];
				$ls_codestpro4=$row["codestpro4"];
				$ls_codestpro5=$row["codestpro5"];
				$ls_estcla=$row["estcla"];
				$ls_spg_cuenta=$row["spg_cuenta"];
				$li_monto=$row["monto"];
				$li_existe=$row["existe"];
				$estprog[0]=$row["codestpro1"];
				$estprog[1]=$row["codestpro2"];
				$estprog[2]=$row["codestpro3"];
				$estprog[3]=$row["codestpro4"];
				$estprog[4]=$row["codestpro5"];
				$estprog[5]=$row["estcla"];
				$lb_valido=$io_intspg->uf_spg_saldo_select($this->ls_codemp, $estprog, $ls_spg_cuenta, &$ls_status, &$adec_asignado, 
				                                           &$adec_aumento,&$adec_disminucion,&$adec_precomprometido,
													   	   &$adec_comprometido,&$adec_causado,&$adec_pagado);
				$li_disponibilidad=($adec_asignado-($adec_comprometido+$adec_precomprometido)+$adec_aumento-$adec_disminucion);
			 	if($li_existe>0)
				{
					$li_monto=number_format($li_monto,2,".","");
					$li_disponibilidad=number_format($li_disponibilidad,2,".","");
					if($li_monto>$li_disponibilidad)
					{
						$li_monto=number_format($li_monto,2,",",".");
						$li_disponibilidad=number_format($li_disponibilidad,2,",",".");
						if($as_operacion!='S')
						{
							$this->io_mensajes->message("No hay Disponibilidad en la cuenta ".$ls_spg_cuenta." Disponible=[".$li_disponibilidad."] Cuenta=[".$li_monto."]"); 
						}							
					}
				}
				else
				{
					$lb_existe = false;
					$this->io_mensajes->message("La cuenta ".$ls_spg_cuenta." No Existe en la Estructura ".$ls_codestpro1.$ls_codestpro2.$ls_codestpro3.$ls_codestpro4.$ls_codestpro5.""); 
				}
			}
			$this->io_sql->free_result($rs_data);	
			if($lb_existe)
			{
				$as_estsol="E";
			}
			else
			{
				$as_estsol="R";
			}
			$ls_sql="UPDATE sep_solicitud ".
					"   SET estsol='".$as_estsol."' ".
					" WHERE codemp = '".$this->ls_codemp."'".
					"	AND numsol = '".$as_numsol."' ";
			$this->io_sql->begin_transaction();				
			$li_row=$this->io_sql->execute($ls_sql);
			if($li_row===false)
			{
				$lb_valido=false;
				$this->io_mensajes->message("CLASE->Solicitud MÉTODO->uf_validar_cuentas ERROR->".$this->io_funciones->uf_convertirmsg($this->io_sql->message)); 
				$this->io_sql->rollback();
			}
			else
			{
				$this->io_sql->commit();			
			}
		}
		return $lb_valido;
	}// end function uf_validar_cuentas
$li_size5 = $li_loncodestpro5+10;
      
require_once("../shared/class_folder/class_sql.php");
require_once("../shared/class_folder/class_fecha.php");
require_once("../shared/class_folder/sigesp_include.php");
require_once("../shared/class_folder/class_funciones.php");
require_once("../shared/class_folder/class_sigesp_int.php");
require_once("../shared/class_folder/class_sigesp_int_scg.php");
require_once("../shared/class_folder/class_sigesp_int_spg.php");

$la_empresa = $_SESSION["la_empresa"];
$io_include = new sigesp_include();
$ls_conect  = $io_include->uf_conectar();
$io_msg     = new class_mensajes();
$io_sql		= new class_sql($ls_conect);
$io_intspg  = new class_sigesp_int_spg();

if (array_key_exists("operacion",$_POST))
   {  
	 $ls_operacion  = $_POST["operacion"];
	 $ls_spgcta     = $_POST["txtcodctaspg"];
	 $ls_denctaspg  = $_POST["txtdenctaspg"];
	 $ls_scgcta     = $_POST["txtcuentascg"];
	 $ls_codestpro1 = $_POST["codestpro1"];
	 $ls_codestpro2 = $_POST["codestpro2"];
	 $ls_codestpro3 = $_POST["codestpro3"];
 	 $ls_denestpro1 = $_POST["txtdenestpro1"];
	 $ls_denestpro2 = $_POST["txtdenestpro2"];
	 $ls_denestpro3 = $_POST["txtdenestpro3"];
	 if (array_key_exists("codestpro4",$_POST))
	    {
	require_once("../shared/class_folder/class_fecha.php");
	require_once("../shared/class_folder/class_sigesp_int.php");
	require_once("../shared/class_folder/class_sigesp_int_scg.php");
	require_once("sigesp_spg_class_progrep.php");
	require_once("../shared/class_folder/class_sigesp_int_spg.php");
	require_once("../shared/class_folder/class_sigesp_int_spi.php");
	require_once("../shared/class_folder/grid_param.php");
	$io_include = new sigesp_include();
	$io_connect= $io_include->uf_conectar ();
	$io_sql=new class_sql($io_connect);
	$io_msg=new class_mensajes();
	$io_function=new class_funciones();
    $io_fecha=new class_fecha();
	$io_class_progrep=new sigesp_spg_class_progrep();
	$sig_int=new class_sigesp_int();
	$int_spg=new class_sigesp_int_spg();
	$ds_progrep=new class_datastore();
	$io_class_grid=new grid_param();

	if(array_key_exists("operacion",$_POST))
	{
	  $ls_operacion=$_POST["operacion"];
	}
	else
	{
	  $ls_operacion="";
	}

	if(array_key_exists("li_totnum",$_POST))
	{
	  $li_totnum=$_POST["li_totnum"];
	else
	{
		$lb_permisos=$io_seguridad->uf_sss_select_permisos($ls_empresa,$ls_logusr,$ls_sistema,$ls_ventana);
	}

//////////////////////////////////////////////         SEGURIDAD               /////////////////////////////////////////////
$io_include=new sigesp_include();
$io_connect=$io_include->uf_conectar();
$io_sql=new class_sql($io_connect);
$io_function=new class_funciones();	
$io_fecha=new class_fecha();
$io_msg = new class_mensajes();
$io_function_db=new class_funciones_db($io_connect);
$in_classcmp=new sigesp_spg_c_comprobante();
$io_int_scg=new class_sigesp_int_scg();
$io_int_spg=new class_sigesp_int_spg();
$io_msg=new class_mensajes();
$io_grid=new grid_param();
$io_funciones_gasto= new class_funciones_gasto();

$la_emp=$_SESSION["la_empresa"];
$li_estmodest=$la_emp["estmodest"];
if(array_key_exists("operacion",$_POST))
{
	$ls_operacion = $_POST["operacion"];
 	$ls_procede = $_POST["txtproccomp"];
	$ls_comprobante = $_POST["txtcomprobante"];
	$ls_fecha     = $_POST["txtfecha"];
	$ls_provbene  = $_POST["txtprovbene"];
	$ls_desproben  = $_POST["txtdesproben"];
	$ls_tipo      = $_POST["tipo"];
 function uf_spg_saldos_ajusta($estprog, $as_cuenta, $as_mensaje, $as_status, $adec_monto_anterior, $adec_monto_actual, &$adec_asignado, &$adec_aumento, &$adec_disminucion, &$adec_precomprometido, &$adec_comprometido, &$adec_causado, &$adec_pagado, $as_sin_validacion)
 {
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //	 Function: uf_spg_saldos_ajusta
     //	  Returns:  boolean si existe o  no
     //Description:  ajusta el saldo de una cuenta
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     $la_empresa = $_SESSION["la_empresa"];
     $ls_vali_nivel = $la_empresa["vali_nivel"];
     $lb_valido = true;
     $int_spg = new class_sigesp_int_spg();
     $ldec_disponible = $adec_asignado + $adec_aumento - ($adec_disminucion + $adec_comprometido + $adec_precomprometido);
     $li_nivel = $int_spg->uf_spg_obtener_nivel($as_cuenta);
     $as_mensaje = strtoupper($as_mensaje);
     $li_pos_i = strpos($as_mensaje, "I");
     //I-Asignacion
     if ($as_sin_validacion == 0) {
         if (!($li_pos_i === false)) {
             $adec_asignado = $adec_asignado - $adec_monto_anterior + $adec_monto_actual;
             $lb_procesado = true;
         }
         $li_pos_a = strpos($as_mensaje, "A");
         // A-Aumento
         if (!($li_pos_a === false)) {
             $adec_aumento = $adec_aumento - $adec_monto_anterior + $adec_monto_actual;
             $lb_procesado = true;
         }
         $li_pos_d = strpos($as_mensaje, "D");
         //	D-Disminucion
         if (!($li_pos_d === false)) {
             if ($adec_monto_actual <= $ldec_disponible + $adec_monto_anterior) {
                 $adec_disminucion = $adec_disminucion - $adec_monto_anterior + $adec_monto_actual;
             } else {
                 $lb_valido = false;
                 $this->io_message->message("El monto a disminuir es mayor que la Disponibilidad. ");
             }
             $lb_procesado = true;
         }
         $li_pos_r = strpos($as_mensaje, "R");
         //R-PreComprometer
         if (!($li_pos_r === false)) {
             if ($li_nivel < $ls_vali_nivel) {
                 if ($adec_monto_actual > $ldec_disponible + $adec_monto_anterior) {
                     $lb_valido = false;
                     $this->io_message->message("Error de disponibilidad Presupuestaria");
                 } else {
                     $adec_precomprometido = $adec_precomprometido - $adec_monto_anterior + $adec_monto_actual;
                 }
             } else {
                 $adec_precomprometido = $adec_precomprometido - $adec_monto_anterior + $adec_monto_actual;
             }
             $lb_procesado = true;
         }
         $li_pos_o = strpos($as_mensaje, "O");
         //	O-Comprometer
         if (!($li_pos_o === false)) {
             if ($li_nivel < $ls_vali_nivel) {
                 if ($adec_monto_actual > $ldec_disponible + $adec_monto_anterior) {
                     $lb_valido = false;
                     $this->io_message->message("Error de disponibilidad Presupuestaria");
                 } else {
                     $adec_comprometido = $adec_comprometido - $adec_monto_anterior + $adec_monto_actual;
                 }
             } else {
                 $adec_comprometido = $adec_comprometido - $adec_monto_anterior + $adec_monto_actual;
             }
             $lb_procesado = true;
         }
         $li_pos_c = strpos($as_mensaje, "C");
         //	C-Causar
         if (!($li_pos_c === false)) {
             if ($as_status == "C") {
                 if ($ldec_causado - $adec_monto_anterior + $adec_monto_actual <= $ldec_comprometido) {
                     $adec_causado = $adec_causado - $adec_monto_anterior + $adec_monto_actual;
                 } else {
                     $lb_valido = false;
                     $this->io_message->message("Intenta Causar mas que lo Comprometido " . $ls_programatica_cuenta);
                 }
             } else {
                 $adec_causado = $adec_causado - $adec_monto_anterior + $adec_monto_actual;
             }
             $lb_procesado = true;
         }
         $li_pos_p = strpos($as_mensaje, "P");
         // P-Pagar
         if (!($li_pos_p === false)) {
             if ($as_status == "C") {
                 if ($ldec_pagado - $adec_monto_anterior + $adec_monto_actual <= $ldec_causado) {
                     $adec_pagado = $adec_pagado - $adec_monto_anterior + $adec_monto_actual;
                 } else {
                     $lb_valido = false;
                     $this->io_message->message(" Intenta Pagar mas que lo Causado " . $ls_programatica_cuenta);
                 }
             } else {
                 $adec_pagado = $adec_pagado - $adec_monto_anterior + $adec_monto_actual;
             }
             $lb_procesado = true;
         }
         if (!$lb_procesado) {
             $this->io_message->message(" El codigo de mensaje es Invalido : " . as_mensaje);
             $lb_valido = false;
         }
     } elseif ($as_sin_validacion == 1) {
         if (!($li_pos_i === false)) {
             $adec_asignado = $adec_asignado - $adec_monto_anterior + $adec_monto_actual;
             $lb_procesado = true;
         }
         $li_pos_a = strpos($as_mensaje, "A");
         // A-Aumento
         if (!($li_pos_a === false)) {
             $adec_aumento = $adec_aumento - $adec_monto_anterior + $adec_monto_actual;
             $lb_procesado = true;
         }
         $li_pos_d = strpos($as_mensaje, "D");
         //	D-Disminucion
         if (!($li_pos_d === false)) {
             if ($adec_monto_actual <= $ldec_disponible + $adec_monto_anterior) {
                 $adec_disminucion = $adec_disminucion - $adec_monto_anterior + $adec_monto_actual;
             }
             $lb_procesado = true;
         }
         $li_pos_r = strpos($as_mensaje, "R");
         //R-PreComprometer
         if (!($li_pos_r === false)) {
             if ($li_nivel < $ls_vali_nivel) {
                 $adec_precomprometido = $adec_precomprometido - $adec_monto_anterior + $adec_monto_actual;
             } else {
                 $adec_precomprometido = $adec_precomprometido - $adec_monto_anterior + $adec_monto_actual;
             }
             $lb_procesado = true;
         }
         $li_pos_o = strpos($as_mensaje, "O");
         //	O-Comprometer
         if (!($li_pos_o === false)) {
             if ($li_nivel < $ls_vali_nivel) {
                 $adec_comprometido = $adec_comprometido - $adec_monto_anterior + $adec_monto_actual;
             } else {
                 $adec_comprometido = $adec_comprometido - $adec_monto_anterior + $adec_monto_actual;
             }
             $lb_procesado = true;
         }
         $li_pos_c = strpos($as_mensaje, "C");
         //	C-Causar
         if (!($li_pos_c === false)) {
             if ($as_status == "C") {
                 if ($adec_causado - $adec_monto_anterior + $adec_monto_actual <= $adec_comprometido) {
                     $adec_causado = $adec_causado - $adec_monto_anterior + $adec_monto_actual;
                 } else {
                     $adec_causado = $adec_causado - $adec_monto_anterior + $adec_monto_actual;
                 }
             } else {
                 $adec_causado = $adec_causado - $adec_monto_anterior + $adec_monto_actual;
             }
             $lb_procesado = true;
         }
         $li_pos_p = strpos($as_mensaje, "P");
         // P-Pagar
         if (!($li_pos_p === false)) {
             if ($as_status == "C") {
                 if ($adec_pagado - $adec_monto_anterior + $adec_monto_actual <= $adec_causado) {
                     $adec_pagado = $adec_pagado - $adec_monto_anterior + $adec_monto_actual;
                 } else {
                     $adec_pagado = $adec_pagado - $adec_monto_anterior + $adec_monto_actual;
                 }
             } else {
                 $adec_pagado = $adec_pagado - $adec_monto_anterior + $adec_monto_actual;
             }
             $lb_procesado = true;
         }
         if (!$lb_procesado) {
             $this->io_message->message(" El codigo de mensaje es Invalido : " . as_mensaje);
             $lb_valido = false;
         }
     }
     return $lb_valido;
 }
   <tr>
    <td height="20" class="toolbar"><img src="imagebank/tools20/espacio.gif" width="4" height="20"><a href="javascript: ue_nuevo();"><img src="../../shared/imagebank/tools20/nuevo.gif" title="Nuevo" alt="Nuevo" width="20" height="20" border="0"></a><a href="javascript: ue_guardar();"><img src="../../shared/imagebank/tools20/grabar.gif" title="Guardar" alt="Grabar" width="20" height="20" border="0"></a><a href="javascript: ue_buscar();"><img src="../../shared/imagebank/tools20/buscar.gif" title="Buscar" alt="Buscar" width="20" height="20" border="0"></a><a href="javascript: ue_eliminar();"><img src="../../shared/imagebank/tools20/eliminar.gif" title="Eliminar" alt="Eliminar" width="20" height="20" border="0"></a><a href="javascript: ue_close();"><img src="../../shared/imagebank/tools20/salir.gif" title="Salir" alt="Salir" width="20" height="20" border="0"></a></td>
  </tr>
</table>

<?php 
require_once "../../shared/class_folder/sigesp_include.php";
require_once "../../shared/class_folder/class_fecha.php";
require_once "../../shared/class_folder/class_sql.php";
require_once "../../shared/class_folder/class_funciones.php";
require_once "../../shared/class_folder/class_datastore.php";
require_once "../../shared/class_folder/class_mensajes.php";
require_once "../../shared/class_folder/class_sigesp_int.php";
require_once "../../shared/class_folder/class_sigesp_int_scg.php";
require_once "../../shared/class_folder/class_sigesp_int_spg.php";
$int_spg = new class_sigesp_int_spg();
$in = new sigesp_include();
$con = $in->uf_conectar();
$msg = new class_mensajes();
//Instanciando la clase mensajes
$SQL = new class_sql($con);
//Instanciando  la clase sql
require_once "sigesp_scg_class_definicion.php";
$def = new sigesp_scg_class_definicion();
$ds_plan = new class_datastore();
//Instanciando la clase datastore
$dat = $_SESSION["la_empresa"];
$ls_format = $dat["formplan"];
$ls_format = str_replace("-", "", $ls_format);
$li_size_form = strlen(trim($ls_format));
//////////////////////////////////////////////  SEGURIDAD   /////////////////////////////////////////////