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);