Manuestaire / megacorporation

2 stars 1 forks source link

Impuestos #10

Closed NiciusB closed 11 years ago

NiciusB commented 11 years ago

Estaría bien que alguien empezara ya con los impuestos... Mi idea es hacer una función en datos_db.php que se llame calcular_impuestos($id_usuario);

Yo me encargaría de restarla del dinero en el archivo que se ejecuta cada minuto... próximamente os pondré accesibles los crons.

Cuales son las variables para tener impuestos?

Manuestaire commented 11 years ago

Si no recuerdo mal, los impuestos dependen de los ingresos, y de si tienes un casino, creo que casino era ¿+3% impuestos?

NiciusB commented 11 years ago

Tambien era al entrar a un clan, no?

Manuestaire commented 11 years ago

DamageESP commented 11 years ago

Esta sería la función, habría que crear el campo beneficios, que sería el resultado de la operación.

function calcular_impuestos($id_user){
$user_datos=mysql_fetch_array(mysql_query("SELECT ingresos,impuestos FROM usuarios WHERE nick='".$_SESSION['nick']."'"));
$impuestos = $user_datos['ingresos'] * $user_datos['impuestos'] / 100;
$beneficios = round($user_datos['ingresos'] - $impuestos);
mysql_query("UPDATE usuarios SET beneficios=$beneficios");
}
NiciusB commented 11 years ago

e.e lo que quiero es la que calcula los porcentajes de impuestos xDD

DamageESP commented 11 years ago

No estoy muy seguro, pero creo que sería algo así.

function calcular_impuestos ($id_user) 
{
$user_datos=mysql_fetch_array(mysql_query("SELECT ingresos,impuestos FROM usuarios WHERE nick='".$_SESSION['nick']."'"));
var ingresos = <?=$user_datos['ingresos']?>;

var bajo = 10000000; // Desde aqui se empieza a aumentar la cantidad de impuestos.
var alto = 20000000; // Aqui acaba un nivel de impuestos y empieza otro.
var impuestos = 3; // Minimo de impuestos para mas de 10.000.000 € ingresos.

// Si tiene menos de 10.000.000 € de ingresos, pagara solo 2% de impuestos.

if (ingresos < 10000000) 
{
$impuestos = 2;
<? mysql_query("UPDATE usuarios SET impuestos = $impuestos WHERE nick='".$_SESSION['nick']."'"); ?>
}
else {

// Si tiene mas de 10 millones, calculara cuanto tiene que pagar.

function calcular ()
{
if (ingresos >= bajo && ingresos < alto)
{
$impuestos = impuestos;
<? mysql_query("UPDATE usuarios SET impuestos = $impuestos WHERE nick='".$_SESSION['nick']."'"); ?>
} 
else {aumentar();} // Si no esta entre estos parametros, se aumentan en 10 millones los limites y se hace de nuevo la comprobacion.
}

function aumentar()
{
var bajo = 10000000 + bajo;
var alto = 10000000 + alto;
var impuestos = 1 + impuestos;
calcular();
}
}
}
NiciusB commented 11 years ago

Hombre, cambiando un poco el código para hacerlo coherente yo creo que está bien :P Solo faltan los casinos y las alianzas etc xD

DamageESP commented 11 years ago

Por cierto, habría que sumar el personal... A la funcion donde se asignan los beneficios:


$mantguardias = $user_datos['guardias']*500;
$mantsabots = $user_datos['saboteadores']*100;
$manttotal = $mantguardias + $mantsabots;
DamageESP commented 11 years ago

A la espera de que @NiciusB incluya las funciones en el cron de cada minuto.

NiciusB commented 11 years ago

Vosotros tambien podeis cambiarlo ehh

NiciusB commented 11 years ago

Ya te da el dinero sin impuestos y quitando el mantenimiento de las tropas El dinero ganado que se calcula con javascript aun no tiene en cuenta estos cambios. El campo impuestos se actualiza cada media hora y es:

//Calcular impuestos
$cantidad= 10000000; // Aqui acaba un nivel de impuestos y empieza otro.
mysql_query("UPDATE usuarios SET impuestos=2 WHERE ingresos<=$cantidad");
$impuestos = 3; // Minimo de impuestos para mas de 10.000.000 € ingresos.
for($i=0;$i<48;$i++){
mysql_query("UPDATE usuarios SET impuestos=$impuestos WHERE ingresos>$cantidad");
$cantidad+=10000000;
$impuestos +=1;
}

Faltan cosas por añadir

Manuestaire commented 11 years ago

@NiciusB la función que hizo @DamageESP para calcular los impuestos está por aquí arriba...

Dinos si no que falta para poder cerrar.

NiciusB commented 11 years ago

Falta añadir los impuestos de alianzas y de casinos, y posible ventaja de eliminación de impuestos. También es muy posible que este mal el codigo

NiciusB commented 11 years ago

Da 3 mas de impuestos si tienes un casino, y otros 3 si tienes alianza, es asi? mysql_query("UPDATE usuarios SET impuestos=impuestos+3 WHERE alianza!=0"); mysql_query("UPDATE usuarios SET impuestos=impuestos+3 WHERE id IN (SELECT creador FROM casinos)");

Ahora el javascript ya calcula el dinero que te dan correctamente Añadida ventaja de no impuestos

confirmadme eso y cierro

DamageESP commented 11 years ago

Creo que es +2 cuando creas casinos. Por lo que veo esta todo ok.

Puedes cerrar.

Manuestaire commented 11 years ago

No se pueden usar constantes para cada tipo de impuesto?

así luego se cambia rápido si hay que equilibrar cosas...

DamageESP commented 11 years ago

Si hay que cambiarlo pues se modifica el 3 por lo que sea y ya esta no? xD

No se a lo que te refieres.

Manuestaire commented 11 years ago

Nunca es bueno poner números fijos sin saber lo que son... Piensa que cuando haces un código tienes que intentar que la persona que venga por detrás a verlo lo entienda...

Una constante es un identificador (nombre) para expresar un valor simple. Como el nombre sugiere, este valor no puede variar durante la ejecucción del script. (A excepción de las constantes predefinidas, que en realidad no son constantes). Una constante es sensible a mayúsculas por defecto. Por convención, los identificadores de contantes siempre suelen declararse en mayúsculas.

define('TAX_CASINO', '2'); define('TAX_CLAN', '3');

o con variables directamente...

NiciusB commented 11 years ago

Pero si solo van a estar en esa linea xDD que mas da que sea un int directamente? Cambiados los impuestos de casinos a 2%

Manuestaire commented 11 years ago

Pues en teoría poner un int directamente es un "error de estilo" para ese tipo de valores de deben definir constantes.

NiciusB commented 11 years ago

Bueno, no se xD como quieras jajaja Hago un archivo de constantes?

Manuestaire commented 11 years ago

una clase mejor no?

NiciusB commented 11 years ago

pero es que con clases en php no me manejo xDD solo las se usar en java xDD

Manuestaire commented 11 years ago
<?php

define('MIN_VALUE', '0.0');   // RIGHT - Works OUTSIDE of a class definition.
define('MAX_VALUE', '1.0');   // RIGHT - Works OUTSIDE of a class definition.

//const MIN_VALUE = 0.0;         WRONG - Works INSIDE of a class definition.
//const MAX_VALUE = 1.0;         WRONG - Works INSIDE of a class definition.

class Constants
{
  //define('MIN_VALUE', '0.0');  WRONG - Works OUTSIDE of a class definition.
  //define('MAX_VALUE', '1.0');  WRONG - Works OUTSIDE of a class definition.

  const MIN_VALUE = 0.0;      // RIGHT - Works INSIDE of a class definition.
  const MAX_VALUE = 1.0;      // RIGHT - Works INSIDE of a class definition.

  public static function getMinValue()
  {
    return self::MIN_VALUE;
  }

  public static function getMaxValue()
  {
    return self::MAX_VALUE;
  }
}

?>

#Example 1:
You can access these constants DIRECTLY like so:
 * type the class name exactly.
 * type two (2) colons.
 * type the const name exactly.

#Example 2:
Because our class definition provides two (2) static functions, you can also access them like so:
 * type the class name exactly.
 * type two (2) colons.
 * type the function name exactly (with the parentheses).

<?php

#Example 1:
$min = Constants::MIN_VALUE;
$max = Constants::MAX_VALUE;

#Example 2:
$min = Constants::getMinValue();
$max = Constants::getMaxValue();

?>
NiciusB commented 11 years ago

Realmente, no es mas facil hacer <? $min=0 $max=1 ?>???

Manuestaire commented 11 years ago

y también más rápido a la hora de ejecutarlo, yo con que no me pongaís los numeros tal cual, y pongaís $tax_clan, $tax_casino. Me doy más que por satisfecho...

NiciusB commented 11 years ago

Las constantes se almacenarán en el array $constante que esta en /constantes_juego.php que es referenciado por /funciones_conjuntas.php que es referenciado por el archivo /cron/config.php y /public_html/datos_db.php

DamageESP commented 11 years ago

Con el archivo de las constantes se podra hacer un panel de administracion donde se puedan cambiar todas ellas no? En ese caso perfecto.

Manuestaire commented 11 years ago

Teniendo en cuenta que las constantes no las debería poder cambiar cualquiera no hace ninguna falta, pero técnicamente creo que sí. Pero habría que modificar un archivo php, dado que no se guardan en BD.

NiciusB commented 11 years ago

Dudo que sea necesario eso, ya que los unicos admins somos nosotros 3 y sabemos modificar unas variables php, no? xD

DamageESP commented 11 years ago

Obv xD lo decia para hacerlo más comodo. Pero no es necesario :P