Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/03/2010, 18:27
andruxand
 
Fecha de Ingreso: marzo-2010
Ubicación: Cali
Mensajes: 203
Antigüedad: 16 años, 6 meses
Puntos: 5
Alguien me puede ayudar por favor

Holaa soy nuevo en esto asi que pues si cometo alguna infracción mis disculpas y espero que entiendan. bueno el problema que tengo es que tengo un modulo de liquidaciones para licencias de construccion en el cual se trabaja con php y funciones en ajax para que las casillas de texto calculen el valor y lo muestren sin necesidad recargar la pagina. la funcion en ajax contiene un array donde estan capturados los nombre que hacen referencia a las casillas de texto utilizadas por las licencias y los case donde estan los procesos para el calculo del valor ingresado en cada casilla de texto, hay que tener en cuenta que muchos de los valores estan en la base de datos y son llamados a traves de una consulta como por ejemplo el salario minimo entre otras.los tipos de licencia que mencione son construccion, reconocimiento y urbanismo, lo que quiero es agregar adecuacion pero en esta el valor que muestre cada casilla que da el resultado debe ser el 50% de descuento a difierencia de la de contrucion y la otras, es la misma operacion y todo solo que el resultado es la mitad. he intentado crear otro case, hacer la condicion en los case pero nada. por favor si me pueden ayudar se los agradeceria demasiado. aca les dejo el codigo php referente a las casillas donde se ingresa el valor y las casillas que muestar el resultado.

Código PHP:
if(!session_is_registered('SALARIO_MIN')){
        
mysql_select_db($database_cx, $cx);
        
//consulta el salario minimo mensual vijente
        
$query = "SELECT valor
                  FROM configuracion
                  WHERE estado = 1 AND
                          descripcion = 'SALARIO_MIN_MENSUAL'
                  ORDER BY fecha_registro DESC
                  LIMIT 1"
;
        
$temp = mysql_query($query, $cx) or die("Error ".__FILE__." - ".__LINE__."<br /><br />".mysql_error());
        
$result = mysql_fetch_assoc($temp);
        
        
session_register('SALARIO_MIN', 'CV', 'CF', 'SALARIO_MIN_DIA');
        
        
$_SESSION['SALARIO_MIN'] = $result['valor'];
        
$_SESSION['SALARIO_MIN_DIA'] = number_format(($_SESSION['SALARIO_MIN'] / 30), 2, '.', '');
        
        
//consulta el porcentaje de CV
        
$query = "SELECT valor
                  FROM configuracion
                  WHERE estado = 1 AND
                          descripcion = 'PORCENTAJE_CV'
                  ORDER BY fecha_registro DESC
                  LIMIT 1"
;
        
$temp = mysql_query($query, $cx) or die("Error ".__FILE__." - ".__LINE__."<br /><br />".mysql_error());
        
$result = mysql_fetch_assoc($temp);
        
        
$_SESSION['CV'] = number_format(($_SESSION['SALARIO_MIN'] * $result['valor']), 2, '.', '');
        
        
//consulta el porcentaje de CF
        
$query = "SELECT valor
                  FROM configuracion
                  WHERE estado = 1 AND
                          descripcion = 'PORCENTAJE_CF'
                  ORDER BY fecha_registro DESC
                  LIMIT 1"
;
        
$temp = mysql_query($query, $cx) or die("Error ".__FILE__." - ".__LINE__."<br /><br />".mysql_error());
        
$result = mysql_fetch_assoc($temp);
        
        
$_SESSION['CF'] = number_format(($_SESSION['SALARIO_MIN'] * $result['valor']), 2, '.', '');    
        
        
//consulta el cargo fijo de la ciudad (m)
        
$query = "SELECT valor
                  FROM configuracion
                  WHERE estado = 1 AND
                          descripcion = 'CARGO_FIJO_CIUDAD'
                  ORDER BY fecha_registro DESC
                  LIMIT 1"
;
        
$temp = mysql_query($query, $cx) or die("Error ".__FILE__." - ".__LINE__."<br /><br />".mysql_error());
        
$result = mysql_fetch_assoc($temp);
        
        
$_SESSION['M'] = $result['valor'];            
    }

    
// Funcion verifica que no existan dos cargos fijos en la generacion del oficio

    
function verificacion_cf($formulario){
            
$objResponse = new xajaxResponse();      
            
            
$array_tipos = array('VIVIENDA', 'VIVIENDA_VIS', 'COMERCIO', 'INDUSTRIA', 'INSTITUCIONAL');
            
            for(
$cont_p = 1; $cont_p <= 3; $cont_p++){
                for(
$cont = 0; $cont < count($array_tipos); $cont++){
                    
$name_campo = strtolower($array_tipos[$cont])."_".$cont_p;
                    if(
$formulario[$name_campo] != '' && $formulario[$name_campo] != '0,00'){
                        
$totalCf++;
                    }
                }
            }    
            
            if(
$totalCf > 1){
                
$objResponse->addAlert('No debe existir mas de un cargo fijo al tiempo');    
            }else{
                
$objResponse->addScript("document.form1.submit();");
            }
            
            return 
$objResponse;        
    }

    
// Funcion que recive le numero de vecinos que se van a digitar.

    
function liquidacion($formulario){
            global 
$database_cx, $cx;
            
$objResponse = new xajaxResponse();  
            
mysql_select_db($database_cx, $cx);
            
            
$array_tipos = array('VIVIENDA', 'VIVIENDA_VIS', 'COMERCIO', 'INDUSTRIA', 'INSTITUCIONAL');
            
            for(
$cont_p = 1; $cont_p <= 3; $cont_p++){
                for(
$cont = 0; $cont < count($array_tipos); $cont++){
                    
                    
$name_campo = strtolower($array_tipos[$cont])."_cant_".$cont_p;
                    
$name = strtolower($array_tipos[$cont])."_".$cont_p;
                    
                    
//descuenta el reforzamiento estructural (si aplica)
                                                
                        
$metros = $formulario[$name_campo];
                                        
                    if(
$metros <= 0){
                        
$objResponse->addAssign($name, "value", "");
                        
$objResponse->addAssign(strtolower($array_tipos[$cont])."_total_".$cont_p, "value", "");
                        
$objResponse->addAssign("d_".strtolower($array_tipos[$cont])."_total_".$cont_p, "innerHTML", "");
                        continue;
                    }
                
                    switch(
$array_tipos[$cont]){
                        case 
'VIVIENDA':
                                        
//consulta el factor i
                                        
$query = sprintf("SELECT valor
                                                          FROM configuracion
                                                          WHERE estado = 1 AND
                                                                descripcion = 'I_VIVIENDA_%s'
                                                          ORDER BY fecha_registro DESC
                                                          LIMIT 1"
, $formulario['estrato_'.$cont_p]);
                                                          
                                        
$temp = mysql_query($query, $cx) or die("Error ".__FILE__." - ".__LINE__."<br /><br />".mysql_error());
                                        
$result = mysql_fetch_assoc($temp);            
                                        
                                        if(
mysql_num_rows($temp) == 1){
                                            
$total = $_SESSION['CF'] * $result['valor'] *  $_SESSION['M'];
                                        }else{
                                            
$total = 0;
                                        }
                                        
                                        
                                        
//descuenta la VIS (si aplica)
                                        
if($formulario['vivienda_VISD_'.$cont_p] == 1){
                                           
                                            
$descuento = 1;
                                        }
                                        
                                        
                                        
$total = number_format($total, 2, '.', '');
                                        
                                        
$tipo_j = 'CONSTRUCCION';
                                        
                                        break;
                        case 
'VIVIENDA_VIS':
                                        
$total = ($_SESSION['SALARIO_MIN_DIA'] * 5) * $metros;
                                        
$total = number_format($total, 2, '.', '');
                                        
                                        
                                        break;                                        
                        case 
'INSTITUCIONAL':
                        case 
'COMERCIO'   :
                        case 
'INDUSTRIA'  :
                                        
//consulta el factor i
                                        
$query = sprintf("SELECT valor
                                                          FROM configuracion
                                                          WHERE estado = 1 AND
                                                                descripcion = 'OTRO_USOS_%s' AND
                                                                rango1 <= %s AND
                                                                rango2 >= %s
                                                          ORDER BY fecha_registro DESC
                                                          LIMIT 1"
, $array_tipos[$cont], $metros, $metros);
                                                          
                                        
$temp = mysql_query($query, $cx) or die("Error ".__FILE__." - ".__LINE__."<br /><br />".mysql_error());
                                        
$result = mysql_fetch_assoc($temp);            
                                        
                                        if(
mysql_num_rows($temp) == 1){
                                            
$total = $_SESSION['CF'] * $result['valor'] *  $_SESSION['M'];
                                        }else{
                                            
$total = 0;
                                        }
                                        
                                        
$total = number_format($total, 2, '.', '');
                                        
                                        
$tipo_j = 'CONSTRUCCION';
                                        
                                        
                                        
//descuenta la DOT (si aplica)
                                        
if($formulario['institucional_dot_'.$cont_p] == 1){
                                            
$descuento = 1;
                                        }
                                        
                                        break;
                                            
                    }
//fin del switch
                    
                    
if($cont_p == 3){
                        
$tipo_j = 'URBANISMO_PARCELACION';
                    }
                    
                    if(
$formulario[strtolower($array_tipos[$cont]).'_ref_est_1'] == 1){
                        
$descuento_ref = 1;
                    }
                    
                    
//verifica si el cargo fijo lo setearon en CERO
                    
if($formulario['cero_'.$name] == 1){
                        
$total = 0;
                    }
                    
                    
//asigna el cargo fijo
                    
$objResponse->addAssign($name, "value", number_format(floor($total), 2, ',', '.'));
                    
$cargo_fijo = $total;
                    
$cargo_fijo_total += $cargo_fijo;
                    
                    
$I = $result['valor'];
                    
                    
//consulta el factor J
                    
if($metros > 0){
                        if(
$tipo_j == 'URBANISMO_PARCELACION'){
                            
$query = sprintf("SELECT *
                                              FROM configuracion
                                              WHERE estado = 1 AND
                                                    descripcion = 'J_%s' 
                                              ORDER BY fecha_registro DESC
                                              LIMIT 1"
, $tipo_j);
                        }else{
                            
$query = sprintf("SELECT *
                                          FROM configuracion
                                          WHERE estado = 1 AND
                                                descripcion = 'J_%s' AND
                                                rango1 <= %s AND
                                                rango2 > %s
                                          ORDER BY fecha_registro DESC
                                          LIMIT 1"
, $tipo_j, $metros, $metros);
                        }                  
                        
$temp = mysql_query($query, $cx) or die("Error ".__FILE__." - ".__LINE__."<br /><br />".mysql_error());
                        
                        
$result = mysql_fetch_assoc($temp);            
                        
                        if(
mysql_num_rows($temp) == 1){
                            if(
$result['comentario'] == NULL || $result['comentario'] == 'NULL'){
                                
$J = $result['valor'];
                            }else{
                                
$J = $result['valor'] / ($result['comentario'] + ($result['valor2'] / $metros));
                            }    
                        }
                    }
                    
                    
$cargo_variable = number_format(($_SESSION['CV'] * $I * $_SESSION['M'] * $J), 2, '.', '');
                    
$cargo_variable_total += $cargo_variable;
                    
                    
//carga el total en el campo oculto
                    
$rvalor = $total + $cargo_variable;
                    if(isset(
$descuento)){
                        
$rvalor = $rvalor / 2;
                        unset(
$descuento);
                    }
                    if(isset(
$descuento_ref)){
                        
$rvalor = $rvalor * 0.3;
                        unset(
$descuento_ref);
                    }
                    
                    
$totales_ocultos += $rvalor;
                                
                    
$objResponse->addAssign(strtolower($array_tipos[$cont])."_total_".$cont_p, "value", $rvalor);
                    
$objResponse->addAssign("d_".strtolower($array_tipos[$cont])."_total_".$cont_p, "innerHTML", $rvalor);