mySQL functions: Paro Forzoso (II parte)

Y bueno, del anterior post (SSO) vamos a presentar el código que calcula el Paro Forzoso, es bastante más sencilla que la anterior función asi que la posteo completa y sin comentarios adicionales:

 

DELIMITER $$
 DROP FUNCTION IF EXISTS `nomina`.`paro_forzoso`$$
CREATE DEFINER=`root`@`localhost` FUNCTION `paro_forzoso`(sueldo DECIMAL(8,2)) RETURNS decimal(8,2)
READS SQL DATA
BEGINDECLARE porcentaje DECIMAL(2,2);
DECLARE lunes INT;
DECLARE mes INT;
DECLARE fecha DATE;
DECLARE primero DATE;
DECLARE quince DATE;
SELECT curdate() INTO fecha;
SELECT DAYOFMONTH(fecha)  INTO mes;
SELECT STR_TO_DATE(CONCAT(YEAR(fecha), '-', MONTH(fecha), '-', 1), '%Y-%m-%d') INTO primero;
SELECT STR_TO_DATE(CONCAT(YEAR(fecha), '-', MONTH(fecha), '-', 15), '%Y-%m-%d') INTO quince;
SELECT valor INTO porcentaje FROM parametros WHERE parametro = 'paro';
IF mes <= 15 THEN
BEGIN
SELECT (WEEK(quince,5) - WEEK(primero,5)) INTO lunes;
END;
ELSE
BEGIN
SELECT (WEEK(LAST_DAY(fecha),5) - WEEK(quince,5)) INTO lunes;
END;
END IF;
return TRUNCATE((((sueldo*12)/52)*(porcentaje*lunes)), 2);
END$$
DELIMITER ;

Lo unico importante de comentar es agregar a la tabla parametros el porcentaje del paro forzoso (0.005) o lo que es igual:

 

INSERT INTO parametros VALUES('paro', 0.005, 0);

y es todo! … para calcular ambos (paro forzoso y sso) desde una tabla, digamos “empleados”, donde tenemos el sueldo base, eso sería:

 

SELECT sueldo_base, sso(sueldo_base, 0) as seguro, paro_forzoso(sueldo_base) as paro FROM empleados.

Acerca de phenobarbital

http://about.me/phenobarbital

Publicado el 17 septiembre 2007 en Databases, Linux, PlanetaLinux. Añade a favoritos el enlace permanente. Deja un comentario.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: