none
Procedimiento almacenado para calcular costos de un proyecto RRS feed

  • Pregunta

  • Hola a todos,  les comento estoy realizando un pequeño software que regularice los costos de una empresa en cada proyecto que esta participe. Tengo una tabla trabajador que tiene una columna sueldo, de esta se deriva el costo por hora, y costo por hora extra del trabajador. Hace un tiempo hice unas consultas para crear un SP, que me entregara los costos de cada trabajador en un proyecto determinado, me refiero a las horas de participación en ese proyecto estas se sumen y me los entregue en una columna llamada H.H. Se resolvió ese tema pero ahora me surge una duda existencial, que pasaría si a un trabajador le suben el sueldo? El nuevo valor hora de este trabajador modificaría los valores de los proyectos antiguos. Mi consulta es que podria hacer para que si a un trabajador le suben el sueldo, este cambio no afecte a todos os proyectos que haya participado, y el nuevo valor hora solo se apliquen desde la fecha que se cambio el sueldo en adelante? dejo el SP, para que me entiendan de mejor manera, espero haber sido claro. 

    	WITH EgresosTrabajador AS
    (
        SELECT
    	p.Fecha_Creacion as [Fecha Creación Proyecto],
    	P.Descripcion_Proyecto as "Nombre Proyecto", 
    	P.Fecha_Inicio_Obra as "F. Ini. Obra", 
    	P.Fecha_Termino_Obra as "F. Ter. Obra", 
    	P.Status_Factura as "Status Factura", 
    	(T.Primer_Nombre +' '+ T.Apellido_Paterno +' '+ T.Apellido_Materno) AS "Jefe Proyecto",
    	P.Estado_Proyecto as "Estado Proyecto", 
    	P.Centro_Costo AS [Centro_Costo],
    	P.Rut_Cliente AS [Rut_Cliente],
    	isnull(MAX(P.Valor_Total), 0) AS [Valor Proyecto],
    	isnull(Sum(E.Monto), 0) AS [Logistica],	   
    	ISNULL((MAX(P.Valor_Total) * p.Administracion), 0) AS [Administración]
        FROM 
    	   tbl_proyecto P
    	   LEFT JOIN Tbl_Trabajador T ON (P.Jefe_Proyecto = T.Rut)
    	   LEFT JOIN Tbl_Egresos E ON (E.Centro_Costo_Proyecto = P.Centro_Costo) and E.Estado = 'Aprobado'
    	   
    	       
        GROUP BY
    	p.Fecha_Creacion, 
    	P.Descripcion_Proyecto, 
    	P.Fecha_Inicio_Obra, 
    	P.Fecha_Termino_Obra, 
    	P.Status_Factura, 
    	T.Primer_Nombre, 
    	T.Apellido_Paterno, 
    	T.Apellido_Materno, 
    	P.Estado_Proyecto, 
    	P.Centro_Costo, 
    	P.Rut_Cliente,
    	T.valor_hora,
    	T.Valor_Hora_Extra,
    	P.Valor_Total,
    	p.Administracion
       )
    
    	SELECT 
    	[Fecha Creación Proyecto],
    	C.Nombre as [Empresa],
    	[Nombre Proyecto],
    	[F. Ini. Obra],
    	[F. Ter. Obra], 
    	[Status Factura], 
    	[Jefe Proyecto],
    	[Estado Proyecto], 
    	isnull(MAX(E.[Valor Proyecto]), 0) AS [Valor Proyecto],
    	[Logistica],
    	Isnull(Sum((Isnull(H.Horas_Normales, 0) * t.Valor_Hora) + (isnull(h.Horas_Extras, 0) * t.Valor_Hora_Extra)), 0) as [HH],
    	MAX(E.Administración) as [Administración],
    	(isnull(MAX(E.[Valor Proyecto]), 0) - isnull(MAX(E.Logistica), 0) - Isnull(Sum((Isnull(H.Horas_Normales, 0) * t.Valor_Hora) + (isnull(h.Horas_Extras, 0) * t.Valor_Hora_Extra)), 0) - MAX(E.Administración)) as [Utilidad]
    
    	from   EgresosTrabajador E
        LEFT JOIN Tbl_Cliente C ON (E.Rut_Cliente = C.Rut)
        LEFT JOIN tbl_hh H ON (E.centro_costo = H.centro_costo_proyecto)
    	left join Tbl_Trabajador t on (h.Rut_Trabajador = t.Rut)
    	
    		
    GROUP BY
        e.Centro_Costo, 
    	C.Nombre, 
    	[Nombre Proyecto],
    	[F. Ini. Obra],
    	[F. Ter. Obra], 
    	[Status Factura], 
    	[Jefe Proyecto],
    	[Estado Proyecto], [Fecha Creación Proyecto],
    	[Logistica];
    End
    

    viernes, 7 de abril de 2017 13:41

Respuestas

  • Willams pero como podría hacer ese calculo? Tendría que agregar una tabla con el valor sueldo del trabajador y un campo fecha? y tomar el valor mas cercano a la fecha de boleta pago? algo así sugieres?

    Si no puedes acceder a la base de datos donde contienen dicha información ni consumirla a través de un servicio web entonces no veo mayor opción que agregar una nueva tabla que contenga el registro de los pagos:

    PagosRealizados(id, idTrabajador, FechaInicio, FechaFin, MontoNeto)

    Con dicha información tienes lo necesario para descontar el costo de un recurso hombre en un determinado periodo de tiempo.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 7 de abril de 2017 16:58

Todas las respuestas

  • El costo de un recurso hombre no sólo se basa en un monto fijo (sueldo) sino que existen conceptos variables como bonificaciones, descuentos, etc., en ese contexto, la información de lo que te cuesta un recurso hombre deberías obtenerlo de la boleta de pago según las fechas del proyecto, dicho documento tiene la información precisa de lo que costo un recurso hombre en un determinado periodo de trabajo. 


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 7 de abril de 2017 15:59
  • Willams pero como podría hacer ese calculo? Tendría que agregar una tabla con el valor sueldo del trabajador y un campo fecha? y tomar el valor mas cercano a la fecha de boleta pago? algo así sugieres?
    viernes, 7 de abril de 2017 16:45
  • Willams pero como podría hacer ese calculo? Tendría que agregar una tabla con el valor sueldo del trabajador y un campo fecha? y tomar el valor mas cercano a la fecha de boleta pago? algo así sugieres?

    Si no puedes acceder a la base de datos donde contienen dicha información ni consumirla a través de un servicio web entonces no veo mayor opción que agregar una nueva tabla que contenga el registro de los pagos:

    PagosRealizados(id, idTrabajador, FechaInicio, FechaFin, MontoNeto)

    Con dicha información tienes lo necesario para descontar el costo de un recurso hombre en un determinado periodo de tiempo.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 7 de abril de 2017 16:58
  • ok, desde un principio tenia la idea de que hacer otra tabla era lo mejor, pero queria conocer la opinion de ustedes. Te agradesco la ayuda 

    viernes, 7 de abril de 2017 17:12