Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-01-2009
esimon esimon is offline
Miembro
 
Registrado: ago 2005
Ubicación: República Dominica
Posts: 149
Poder: 19
esimon Va por buen camino
Como puedo aplicar un descuento con excepción

Hola saludo para todos los usuarios de este marabillo Club.......

La preguenta es la siguiente: como puedo hacer para que los sueldo que sean mayor de 112,700.00, igualarlo a dicha cantidad y aplicarle un descuento de un 3.01%, claro incluyendo los que estan por debajo de esa cantidad.
estoy usando delphi 7 y accesse.
estuve haciendo esto
Código:
procedure TFrm_Reporte_de_Nomina.ppVariable2Print(Sender: TObject);
var Sueldo_Bruto_Empleado : Double;
begin
      if Qry_Hacer_CalculoSueldo_Bruto_Empleado > 112700 then begin
         sueldo_Bruto_Empleado = 112700
       ppVariable2.Value := Qry_Hacer_CalculoSueldo_Bruto_Empleado.Value * 3.01 /100;
end;
y me da los erroes siguientes.
Código:
[Error] Un_Reporte_de_Nomina.pas(119): Incompatible types
[Error] Un_Reporte_de_Nomina.pas(120): ':=' expected but '=' found
[Error] Un_Reporte_de_Nomina.pas(121): Missing operator or semicolon
[Error] Un_Reporte_de_Nomina.pas(124): Statement expected but 'PROCEDURE' found
[Fatal Error] Prj_NominaExterior.dpr(8): Could not compile used unit 'Un_Reporte_de_Nomina.pas'
gracias

Última edición por esimon fecha: 10-01-2009 a las 15:24:50.
Responder Con Cita
  #2  
Antiguo 10-01-2009
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
creo que las instrucciones un poco corregidas quedarian asi:

Código Delphi [-]
procedure TFrm_Reporte_de_Nomina.ppVariable2Print(Sender: TObject);
var Sueldo_Bruto_Empleado : Double;
begin
      if Qry_Hacer_CalculoSueldo_Bruto_Empleado.value > 112700 then begin
         sueldo_Bruto_Empleado := 112700
       ppVariable2.Value := Qry_Hacer_CalculoSueldo_Bruto_Empleado.Value * 3.01 /100;
      end;
end;

lo que esta en negritas es lo corregido aunque no por eso puede quedar bien jeje
Responder Con Cita
  #3  
Antiguo 10-01-2009
esimon esimon is offline
Miembro
 
Registrado: ago 2005
Ubicación: República Dominica
Posts: 149
Poder: 19
esimon Va por buen camino
mucha gracias LuisGutierrez por tu ayuda, tengo que probar luego de digo como fue
Responder Con Cita
  #4  
Antiguo 11-01-2009
esimon esimon is offline
Miembro
 
Registrado: ago 2005
Ubicación: República Dominica
Posts: 149
Poder: 19
esimon Va por buen camino
gracias LuisGutierrezd nuevamente, estuve probando la modificacion de la rutina que me hiciste y le hice alguna modificaciones proque me daba un erro y quedo asi.
Código:
procedure TFrm_Reporte_de_Nomina.ppVariable2Print(Sender: TObject);
var Sueldo_Bruto_Empleado : Double;
begin
      if Qry_Hacer_CalculoSueldo_Bruto_Empleado.value > 112700.00 then begin
         Qry_Hacer_Calculosueldo_Bruto_Empleado.Value := 112700.00;
         ppVariable2.Value := Qry_Hacer_CalculoSueldo_Bruto_Empleado.Value * 3.01 /100;
      end;
end;
me esta arrojando esto
Código:
[Hint] Un_Reporte_de_Nomina.pas(118): Variable 'Sueldo_Bruto_Empleado' is declared but never used in 'TFrm_Reporte_de_Nomina.ppVariable2Print'
y no tengo idea de que se trata, pero tampoco me hace los calculos que quiero.
Responder Con Cita
  #5  
Antiguo 12-01-2009
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Lo que te está diciendo el compilador es que has declarado la variable "Sueldo_Bruto_Empleado" en el procedimiento "ppVariable2Print" y no se usa dicha variable.

Código Delphi [-]
procedure TFrm_Reporte_de_Nomina.ppVariable2Print(Sender: TObject);
// var Sueldo_Bruto_Empleado : Double;  <- borra o entrecomenta esta linea del codigo
begin
      if Qry_Hacer_CalculoSueldo_Bruto_Empleado.value > 112700.00 then begin
         Qry_Hacer_Calculosueldo_Bruto_Empleado.Value := 112700.00;
         ppVariable2.Value := Qry_Hacer_CalculoSueldo_Bruto_Empleado.Value * 3.01 /100;
      end;
end;
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #6  
Antiguo 12-01-2009
esimon esimon is offline
Miembro
 
Registrado: ago 2005
Ubicación: República Dominica
Posts: 149
Poder: 19
esimon Va por buen camino
mucha gracias defcon1_es, por tu ayuda pero puedes decirme porque me muestra 00 el resulta de la operación, no se que tiene de malo la rutina.

mil gracias nuevamente y disculpa por la molestia
Responder Con Cita
  #7  
Antiguo 12-01-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola esimon,
Viendo ese código que tienes no te sabría decir. Puede que se deba a un error trasladado de otro lado.

¿Podrías comentarnos la descripción y tipo de datos? ¿Cómo y donde estás mostrando los datos? En resumen, ¿Podrías comentarnos más detalles de tu duda, inquietud, problema, acompañado de los componentes que estás empleando?

El tema es que no sueltas tu problema pero no explicas lo absolutamente necesario como para hacer una prueba y ver si podemos conseguir los mismos resultados y de ese modo poder saber donde está la falla.

Déjame ver si entiendo:
1. Por un lado deseas que el sueldo no sobrepase de cierto valor: 112700.
2. Después quieres actualizar el sueldo a TODOS a un 3,1% inferior.

Para hacerlo simple, y que se entienda, yo lo veo así:
1. Una SQL de este tipo:
Código SQL [-]
update TU_TABLA
set CAMPO_SUELDO_BRUTO = 112700.00 
where SUELDO_BRUTO > 112700.00

2. Otra SQL de forma similar:

Código SQL [-]
update TU_TABLA
set CAMPO_SUELDO_BRUTO = CAMPO_SUELDO_BRUTO * 0.969

Ahora que veo, es posible que ese 00 que ves se debe a que estás realizando no una quita del 3,1%, sino que estás haciendo la quita del 96,9%

¿Se entiende la idea?

Por cierto, cuando copies y pegues código emplea las etiquetas DELPHI y no la etiqueta CODE por favor.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #8  
Antiguo 12-01-2009
esimon esimon is offline
Miembro
 
Registrado: ago 2005
Ubicación: República Dominica
Posts: 149
Poder: 19
esimon Va por buen camino
Gracias Delphuis por tu repuesta.
Estoy elaborando un sistema de nomina, este me maneja dos moneda Dollar y Euro, sin incluir la de mi pais que es (Pesos). tengo una Captura de Datos, los cuales son Nombre, Cedula,Cargo, Sueldo y Tipo de Moneda. Todo bien por el momento.

Estoy creando un Reporte, el cual aparte de los campos que explese mas ariba tiene los Descuentos, pero para aplicar esos descuentos tengo que combertir el sueldo de los emplados en pesos lo cual hago esto.
Código:
ppVariable6.Value := Qry_Hacer_CalculoSueldo_Bruto_Empleado.Value * StrToInt(edit1.Text);
hago esto porque, cuando voy a generar el reporte llamo un form donde le digo el tipo de Moneda y la tasa que tengo en ese momento, cuando yo hago la combersion tengo sueldo que llegan hasta RD$200,000.00, cuando voy a calcular el Seguro Familar de Salub = S.F.S, medice que el monto maximo no muedes ser mayor de 112,700, tengo que buscar la forma de decir al sistema que le aplique un 3.01% a 112,700.00 de los 200,000.00.
todos los descuento tiene reglas pero es similar para todos.

se que lo espuesto es muy largo, solo pero que comprenda. esto es ReportBuilder.
Responder Con Cita
  #9  
Antiguo 12-01-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola esimon,
Disculpame sigo sin entender.

Entiendo ahora que no se trata de actualizar los valores en la base de datos, sino de conformar un reporte.

Lo que no termino de comprender, es el manejo de los 200,000.00, de los 112,700.00 y el 3.1% (espero haber colocado bien el símbolo decimal y de miles de tu moneda, yo soy Argentino).

¿Se debe aplicar el 3.1% a los sueldos (que como señalas que no superan los 200,000.00) y en caso de que ese 3.1% sea superior a 112,700.00 que se establezca como tope dicho valor?

¿O es que de los sueldos se toma 112,700.00 y luego se le aplica un descuento del 3.1%?

Como vez, son dos cosas distintas y está todo muy confuso. Por favor te pediría que te tomes el tiempo adecuado para redactar apropiadamente tu duda. Y nuevamente te pido que por favor emplees las etiquetas DELPHI para que el código que coloques quede adecuadamente formateado.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #10  
Antiguo 12-01-2009
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Por lo que entiendo, devuelves en ppVariable2.Value el 3.01% del Sueldo Bruto, si no pasa de 112700. Si sobrepasa ese valor devuelves el 3.01% de 112700.
Creo que deberías hacerlo así:
Código Delphi [-]
procedure TFrm_Reporte_de_Nomina.ppVariable2Print(Sender: TObject);
// var Sueldo_Bruto_Empleado : Double;  <- borra o entrecomenta esta linea del codigo
begin
      if Qry_Hacer_CalculoSueldo_Bruto_Empleado.value > 112700.00 then 
         ppVariable2.Value := 112700.00 * 3.01 / 100
      else
         ppVariable2.Value := Qry_Hacer_CalculoSueldo_Bruto_Empleado.Value * 3.01 /100;
end;
Responder Con Cita
  #11  
Antiguo 12-01-2009
esimon esimon is offline
Miembro
 
Registrado: ago 2005
Ubicación: República Dominica
Posts: 149
Poder: 19
esimon Va por buen camino
ok. por ejemplo tu puedes ganar un sueldo de 112,701.00, pero yo tengo que hablicarte el descuento en base a 112,700.00, claro esta tu sueldo sigue siendo 112,701.00. y el S.F.S seria 3,392.27 el sueldo neto seria 109,307.73.

y lo que hice fue esto para tratar de resolver el problema.
Código:
procedure TFrm_Reporte_de_Nomina.ppVariable2Print(Sender: TObject);
begin
      if Qry_Hacer_CalculoSueldo_Bruto_Empleado.value > 112700.00 then begin
         Qry_Hacer_Calculosueldo_Bruto_Empleado.Value := 112700.00;
         ppVariable2.Value := ppVariable6.Value * 3.01 /100;
      end;
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cómo puedo capturar una excepción en delphi? Fenix_Dark OOP 3 29-04-2008 14:17:47
Como Aplicar Transacción en ADO ???? AGAG4 Conexión con bases de datos 3 07-10-2006 20:48:06
aplicar sentencias SQL , como ? Pascual Montes SQL 3 08-04-2005 23:22:03
Como aplicar tranparencia a un componente quetzal Varios 1 21-09-2004 10:11:00
¿Cómo podemos dejar de aplicar un filtro? vhirginia Conexión con bases de datos 3 27-04-2004 17:34:24


La franja horaria es GMT +2. Ahora son las 21:04:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi