martes, 30 de septiembre de 2014

Entrada 9

Acciones realizadas:

-El día de ayer se trabajó arduamente con la aplicación de escritorio, hubo problemas pequeños a la hora de realizar ciertos metodos sin embargo gracias a que C# cuenta con una alta similitud con el lenguaje de  programación Java las soluciones surgieron de una muy similar que a como estuvieramos programando en este ultimo. Sin embargo no se finalizó la aplicación de Escritorio.

-Se terminó el store procedure que nos garantiza el correcto funcionar de la página web, este store procedure permite mostrar las planillas de los empleados. Y se implementara o al menos se tiene planeado implementarlo en horas de la tarde o bien horas de la noche.

-Además para que la Aplicación de Escritorio funcionara de una manera correcta hizo  falta implementar nuevos store procedures como por ejemplo el SP_ExtraerCedulaAdmin. Lo que hace que hasta el momento existan 26 stored procedures.




Horas Trabajas:  5 horas

Participantes: -Jonathan Salazar
                      -Mariano Montero


Entrada 8

Acciones Realizadas:
-Luego de un extenso trabajo se logro finalizar el Store Procedure de generar planilla, un método que es de más de 250 lineas de código.

Se trabajo el método en horas no continuas, a esto nos referimos a que el metodo se realizo tanto entre semana Jueves en horas de la noche(hasta media noche) y otras horas se trabajaron por aparte (Cartago y Guanacaste) lo cual no nos pareció tan efectivo como trabajar en conjunto ya que se lograba una mejor comunicación.

En el archivo adjunto se observan los resultados de ejecutar al store Procedure en su fase inicial de elaboracion:


y aqui esta el procedure al final de ejecutarse ya con todos los cambios realizados, correcciones, modificaciones y todo el trabajo realizado:





Horas Trabajadas: 2 horas.

Participantes: Jonathan Salazar
                       Mariano Montero


jueves, 25 de septiembre de 2014

Entrada 7

Acciones Realizadas:

- Para este momento se terminó la realización de dos de los 3 archivos de prueba para el proyecto, los mismos son datosgenerales.txt y movimientos3meses.xml el archivo xml se módifico debido a que se encontraron pequeñas pulgas como por ejemplo errores al cerrar nodos entre otros.


-Se terminaron de realizar algunos stored procedures como por ejemplo LLendoMovimiento3Meses, LecturaArchivosSemanal y BorradoBase. Este ultimo, si bien es cierto no es parte inmediata de la funcionalidad del proyecto, da un valor agregado cuando se realizan modificaciones en los campos con identity.

 Ademas se trabajo en corregir ciertos problemas de la aplicación de usuario para poder hacer la aplicación más "user-friendly". 

Se inicia lo conexión de la base de datos Planillas con la aplicación de escritorio escrita en C#.

Horas Trabajadas: 2 horas


Participantes:-Mariano Montero.
                      -Jonathan Salazar.

martes, 23 de septiembre de 2014

Entrada 6

Acciones Realizadas

-Se realizó el stored procedure de lectura de archivos de movimientos de 3 meses, para el mismo se utilizan 3 tables variantes para cada tipo de movimiento(Horas Normal, Horas Extra Simple, Horas Extra doble), una vez llenas las tablas variantes se procedio a iniciar la transaccion para insertar los datos en la base de datos de manera masiva.

-Se realizó la plantilla de la página web utilizando html y como css Semantic-UI para
un diseño agradable para el usuario.Se crearon dos archivos html uno de pagina para Loggearse y el otro para realizar las consultas de las planillas del empleado. Posteriormente se utilizara php para conectar la base de datos.

-Se realizaron cambios en el modelo agregando 3 nuevas tablas para cada tipo de movimiento y la tabla de planillaXempleado, las mismas se utilizarán para resolver problemas relacionados al foreign key hacia planillaXEmpleado que estaba en cada tabla de movimiento, puesto que en el modelo original habia un problema debido a que no podian existir movimientos que no estuvieran en planilla, ademas se agrego una tabla entre archivo de datos y a tabla planilla por el mismo motivo.




Horas trabajadas: 2 horas 18 minutos

Participantes:

Mariano Montero Muñoz 
Jonathan Salazar Garcia


sábado, 6 de septiembre de 2014

Entrada 5

Fecha: 05/09/2014

Hora de inicio: 7:00pm

Hora de Fin: 9:00pm

Acciones:

- Se comenzo y termino los bosetos iniciales para la interfaz grafica de la aplicacion de escritorio para el proyecto, dicha aplicacion sera utilizada tanto como para administradores de sistemas como para administradores de empresas puesto que ambos pueden realizar modificaciones de datos importantes ya sea datos de la empresa(administrador de sistemas) como tambien modificaciones para cada empleado(administrador de empresas) , la aplicacion sera realizada realizada en el lenguaje C# , este fue utilizado por su mayor facilidad para poder conectarse con SQL SERVER, aunque por el momento solo es un "cascaron" pues aun no esta conectada con la base de datos, las imagenes de la interfaz puede ser vista en la seccion de Fotos.


- Se realizaron Todos los stored procedures que corresponden a las acciones que puede realizar un administrador de sistemas dentro de la aplicacion de escritorio, de los stored procedures creados fueron implementados con transacciones de bases de datos solo los procedures que son UPDATE de la informacion de la base, todos aquellos que son unicamente SELECT no se implementaron con transacciones y esto es debido a lo visto en clases cuando el profesor dio las instrucciones sobre cuales procedures son transaccionales y cuales no, En la seccion de Fotos se muestran los nombres de los SP que actualmente tiene la base de datos.

Fotos:
                                                                       Interfaz Grafica:










Stored Procedures hasta el momento:



Horas trabajadas:    2 horas 


Participantes:

-Jonathan Salazar Garcia
-Mariano Montero Muñoz


miércoles, 3 de septiembre de 2014

Entrada 4

Fecha: 02/09/2014

Hora de inicio: 6:00pm

Hora de Fin: 12:00 pm


Acciones:

-Se finalizo la creacion de los Archivos de prueba de la base de Datos y fueron publicados en el grupo de la clase (ver foto #1)
- Se actualizo el modelo de la base de datos  agregando la tabla de Administradores , la Tabla de estados y algunos atributos adicionales que fueron necesarios (ver foto #2)- Se realizo un store procedure para leer el archivo de datos generales que inserta los datos de manera masiva y transaccional , en la seccion Codigo se adjunta el codigo del mismo.



Fotos:

#1



#2




Codigo:

USE [Planillas]
GO
/****** Object:  StoredProcedure [dbo].[Llenado]    Script Date: 03/09/2014 11:03:32 a.m. ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[Llenado]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

    --Declaracion de Variables

DECLARE @fileName varchar(255)
DECLARE @ExecCmd varchar(255)
DECLARE @y int
DECLARE @x int 
DECLARE @fileContents varchar(MAX) 
DECLARE @Xml xml
DECLARE @tempXML TABLE (PK INT NOT NULL IDENTITY(1,1),ThisLine varchar(255) NOT NULL)
DECLARE @DatosPrueba TABLE (TipoOperacion VARCHAR(50) NOT NULL, DatosEmpresa VARCHAR (100) NOT NULL, DatosPuestos VARCHAR(100) NOT NULL,
       DatosDocId VARCHAR (50) NOT NULL, DatosValoresConfiguracion VARCHAR (100) NOT NULL, DatosTipoEmpleado VARCHAR(100) NOT NULL, DatosEmpleado VARCHAR(100) NOT NULL)
    DECLARE @start INT, @end INT   -- variables para hacer el split de las cadenas
--Set algunas variables

SET @fileName= 'C:\DatosGenerales.xml'
SET @ExecCmd= 'type '+@fileName
SET @fileContents= ''

INSERT INTO @tempXML EXEC MASTER.dbo.xp_cmdshell @ExecCmd;

SELECT @y= count(*) from @tempXML --Obtiene la cantidad de lineas del archivo

SET @x=0

while @x<>@y
BEGIN
SET @x=@x+1
SELECT @fileContents=@fileContents + ThisLine from @tempXML where PK=@x
END

SET @Xml= cast (@fileContents as XML)

INSERT INTO @DatosPrueba
SELECT
archivo.filas.value('TipoOperacion[1]','varchar(50)') AS TipoOperacion,
archivo.filas.value('DatosEmpresa[1]','varchar(100)') AS DatosEmpresa,
archivo.filas.value('DatosPuestos[1]','VARCHAR(100)') AS DatosPuestos,
archivo.filas.value('DatosDocId[1]','VARCHAR(50)') AS DatosDocId,
archivo.filas.value('DatosValoresConfiguracion[1]','VARCHAR(100)') AS DatosValoresConfiguracion,
archivo.filas.value('DatosTipoEmpleado[1]','VARCHAR(100)') AS DatosTipoEmpleado,
    archivo.filas.value('DatosEmpleado[1]','VARCHAR(100)') AS DatosEmpleado
FROM @Xml.nodes('Archivo/Fila') AS archivo(filas);

--select * from @DatosPrueba

--Declaracion de tablas temporales para cada tabla a modificar--
DECLARE @empresas Table(ID int NOT NULL identity(1,1),Nombre varchar(50) NOT NULL, DiaDeCorte varchar(10) NOT NULL,
                                       fechaCreacion date NOT NULL, UltimoCorte date NOT NULL,Activo bit NOT NULL)

DECLARE @TipoEmpleados Table(ID int NOT NULL identity(1,1),Nombre varchar(50) NOT NULL)

DECLARE @Puestos Table(ID int NOT NULL identity(1,1),Nombre varchar(50) NOT NULL,SalarioPorHora money NOT NULL)

DECLARE @TipoDocId Table(ID int NOT NULL identity(1,1),Nombre varchar(50) NOT NULL)

DECLARE @ValoresConfiguracion Table(ID int NOT NULL identity(1,1),Nombre varchar(50) NOT NULL,
                                        Tipo varchar(10) NOT NULL,Valor varchar(20) NOT NULL)

DECLARE @Empleados Table(ID int NOT NULL identity(1,1),FK_TipoEmpleado int NOT NULL,FK_TipoDocId int NOT NULL,FK_Empresa INT NOT NULL,
FK_Puesto INT NOT NULL,Nombre VARCHAR(50) NOT NULL,Identificacion VARCHAR(30) NOT NULL,
Email VARCHAR(50) NOT NULL, Usuario VARCHAR(50) NOT NULL, Contraseña VARCHAR(32) NOT NULL,
fechaContratacion date NOT NULL, activo bit NOT NULL)


--************************************************************************************************************************************
--************************************************Insercion de empresas***************************************************************
--************************************************************************************************************************************

DECLARE @empresasTemp Table(ID int NOT NULL identity(1,1),Datos varchar(MAX) NOT NULL)
DECLARE @LineaDeArchivo varchar(max)
INSERT INTO @empresasTemp (Datos) (SELECT DatosEmpresa FROM @DatosPrueba where TipoOperacion='insercionEmpresa')

set @x=0
select @y=  count(*) from @empresasTemp

DECLARE @nombre varchar(50),@DiaCorte varchar(10)
DECLARE @fecha date
    while @x<>@y
BEGIN
SET @x=@x+1
Set @LineaDeArchivo=(select Datos from @empresasTemp where ID=@x)

   set @start=3
   set @end= CHARINDEX('/', @LineaDeArchivo,@start)
   set @nombre =SUBSTRING(@LineaDeArchivo, @start, @end - @start)

SET @start = @end + 1 
SET @end = CHARINDEX('/', @LineaDeArchivo, @start)
set @DiaCorte= SUBSTRING(@LineaDeArchivo, @start, @end - @start)

SET @start = @end + 1 
set @fecha= CONVERT(DATE,SUBSTRING(@LineaDeArchivo, @start,  LEN(@LineaDeArchivo)))

INSERT INTO @empresas (Nombre,DiaDeCorte,fechaCreacion,UltimoCorte,Activo)  VALUES(@nombre,@DiaCorte,@fecha,@fecha,1) 
        

END

--***********************************************************************************************************************************
--************************************************Insercion de Puestos***************************************************************
--***********************************************************************************************************************************
DECLARE @puestosTemp Table(ID int NOT NULL identity(1,1),Datos varchar(MAX) NOT NULL)
INSERT INTO @puestosTemp (Datos) (SELECT DatosPuestos FROM @DatosPrueba where TipoOperacion=' insercionPuesto')
DECLARE @SalarioPorHora MONEY
set @x=0
select @y=  count(*) from @puestosTemp

    while @x<>@y
BEGIN
SET @x=@x+1
Set @LineaDeArchivo=(select Datos from @PuestosTemp where ID=@x)

   set @start=5
   set @end= CHARINDEX('/', @LineaDeArchivo,@start)
   set @nombre =SUBSTRING(@LineaDeArchivo, @start, @end - @start)

SET @start = @end + 1 
set @SalarioPorHora= CONVERT(MONEY,SUBSTRING(@LineaDeArchivo, @start,  LEN(@LineaDeArchivo)))

INSERT INTO @Puestos (Nombre,SalarioPorHora)  VALUES(@nombre,@SalarioPorHora) 
        

END
--*********************************************************************************************************************************
--**********************************************Insercion de Documentos Id*********************************************************
--*********************************************************************************************************************************
DECLARE @DocIdTemp Table(ID int NOT NULL identity(1,1),Datos varchar(MAX) NOT NULL)
INSERT INTO @DocIdTemp (Datos) (SELECT DatosDocId FROM @DatosPrueba where TipoOperacion=' insercionDocId')

set @x=0
select @y=  count(*) from @DocIdTemp

    while @x<>@y
BEGIN
SET @x=@x+1
Set @LineaDeArchivo=(select Datos from @DocIdTemp where ID=@x)

   set @start=4
set @nombre= SUBSTRING(@LineaDeArchivo, @start,  LEN(@LineaDeArchivo))

INSERT INTO @TipoDocId (Nombre)  VALUES(@nombre) 
        

END

--*********************************************************************************************************************************
--********************************************Insercion de Valor Configuracion*****************************************************
--*********************************************************************************************************************************
DECLARE @ValorConfiTemp Table(ID int NOT NULL identity(1,1),Datos varchar(MAX) NOT NULL)
INSERT INTO @ValorConfiTemp (Datos) (SELECT DatosValoresConfiguracion FROM @DatosPrueba where TipoOperacion=' insercionValorConfi')

set @x=0
select @y=  count(*) from @ValorConfiTemp
DECLARE @Tipo varchar(50), @valor varchar(50)
    while @x<>@y 
BEGIN
SET @x=@x+1
Set @LineaDeArchivo=(select Datos from @ValorConfiTemp where ID=@x)

   set @start=2
   set @end= CHARINDEX('/', @LineaDeArchivo,@start)
   set @nombre =SUBSTRING(@LineaDeArchivo, @start, @end - @start)

SET @start = @end + 1 
SET @end = CHARINDEX('/', @LineaDeArchivo, @start)
set @Tipo= SUBSTRING(@LineaDeArchivo, @start, @end - @start)

SET @start = @end + 1 
set @Valor= SUBSTRING(@LineaDeArchivo, @start,  LEN(@LineaDeArchivo))

INSERT INTO @ValoresConfiguracion (Nombre,Tipo,Valor)  VALUES(@nombre,@Tipo,@valor) 
        

END

--*********************************************************************************************************************************
--********************************************Insercion de Empleados***************************************************************
--*********************************************************************************************************************************
DECLARE @empleadosTemp Table(ID int NOT NULL identity(1,1),Datos varchar(MAX) NOT NULL,TIPO varchar(50) NOT NULL)
INSERT INTO @empleadosTemp (Datos,TIPO) (SELECT DatosEmpleado,DatosTipoEmpleado FROM @DatosPrueba where TipoOperacion=' insercionEmpleado')

INSERT INTO @TipoEmpleados (Nombre) 
(Select DatosTipoEmpleado from @DatosPrueba where TipoOperacion=' insercionEmpleado' group by DatosTipoEmpleado)

Declare @Cedula varchar(50), @usuario varchar(50)
Declare @FKempresa int, @FKpuesto int,@FKTipo int, @FKdoc int
DECLARE @correo varchar(50)
set @x=0
select @y=  count(*) from @empleadosTemp
    while @x<>@y
BEGIN
SET @x=@x+1
Set @LineaDeArchivo=(select Datos from @empleadosTemp where ID=@x)
set @FKTipo=(SELECT ID from @TipoEmpleados where Nombre = (select TIPO from @empleadosTemp where ID=@x))

   set @start=4
   set @end= CHARINDEX('/', @LineaDeArchivo,@start)
   set @nombre =SUBSTRING(@LineaDeArchivo, @start, @end - @start)

SET @start = @end + 1 
SET @end = CHARINDEX('/', @LineaDeArchivo, @start)
set @Cedula= SUBSTRING(@LineaDeArchivo, @start, @end - @start)

SET @start = @end + 1 
SET @end = CHARINDEX('/', @LineaDeArchivo, @start)
set @FKdoc= CONVERT(INT,SUBSTRING(@LineaDeArchivo, @start, @end - @start))

SET @start = @end + 1 
SET @end = CHARINDEX('/', @LineaDeArchivo, @start)
set @FKempresa= CONVERT(INT,SUBSTRING(@LineaDeArchivo, @start, @end - @start))

SET @start = @end + 1 
SET @end = CHARINDEX('/', @LineaDeArchivo, @start)
set @fecha= CONVERT(DATE,SUBSTRING(@LineaDeArchivo, @start, @end - @start))

SET @start = @end + 1 
SET @end = CHARINDEX('/', @LineaDeArchivo, @start)
set @correo= SUBSTRING(@LineaDeArchivo, @start, @end - @start)


SET @start = @end + 1 
SET @end = CHARINDEX('/', @LineaDeArchivo, @start)
set @FKpuesto= CONVERT(INT,SUBSTRING(@LineaDeArchivo, @start, @end - @start))

SET @start = @end + 1 
SET @end = CHARINDEX('/', @LineaDeArchivo, @start)
set @usuario= SUBSTRING(@LineaDeArchivo, @start, @end - @start)

SET @start = @end + 1 
set @Valor= HASHBYTES('MD5',SUBSTRING(@LineaDeArchivo, @start,  LEN(@LineaDeArchivo)))

INSERT INTO @Empleados (Nombre,Identificacion,FK_Empresa,fechaContratacion,Email,FK_Puesto,Usuario,Contraseña,FK_TipoEmpleado,FK_TipoDocId,activo)  
VALUES(@nombre,@Cedula,@FKempresa,@fecha,@correo,@FKpuesto,@usuario,@valor,@FKTipo,@FKdoc,1) 
        

END

--*********************************************************************************************************************************
--*********************************************************************************************************************************
--********************************************Inicia la Transaccion****************************************************************
--*********************************************************************************************************************************
--*********************************************************************************************************************************
-- Variables para control de transaccion
DECLARE @ErrorNumber INT, @ErrorSeverity INT, @ErrorState INT, @CustomError INT
DECLARE @Message VARCHAR(200)
DECLARE @InicieTransaccion BIT


SET @InicieTransaccion = 0 -- control de transacciones
IF @@TRANCOUNT=0 BEGIN
SET @InicieTransaccion = 1
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
BEGIN TRANSACTION
END

BEGIN TRY -- control de excepciones

INSERT INTO dbo.ValoresConfiguracion (Nombre,Tipo,Valor) (SELECT Nombre,Tipo,Valor FROM @ValoresConfiguracion)

iNSERT INTO dbo.Puesto (Nombre,SalarioPorHora) (SELECT Nombre,SalarioPorHora FROM @Puestos)

iNSERT INTO dbo.TipoDocId (Nombre) (SELECT Nombre FROM @TipoDocId)

iNSERT INTO dbo.TipoEmpleado (Nombre) (SELECT Nombre FROM @TipoEmpleados)

INSERT INTO dbo.Empresa (Nombre,fechaCreacion,UltimoCorte,DiaDeCorte,Activo)
                             (Select Nombre,fechaCreacion,UltimoCorte,DiaDeCorte,Activo FROM @empresas)

INSERT INTO dbo.Empleado (FK_Empresa,FK_Puesto,FK_TipoDocId,FK_TipoEmpleado,Nombre,Identificacion,fechaContratacion,Email,Usuario,Contraseña,activo)
          (Select FK_Empresa,FK_Puesto,FK_TipoDocId,FK_TipoEmpleado,Nombre,Identificacion,fechaContratacion,Email,Usuario,Contraseña,activo
           from @Empleados)


IF @InicieTransaccion=1 BEGIN
COMMIT
END
END TRY
BEGIN CATCH
SET @ErrorNumber = ERROR_NUMBER()
SET @ErrorSeverity = ERROR_SEVERITY()
SET @ErrorState = ERROR_STATE()
SET @Message = ERROR_MESSAGE()

IF @InicieTransaccion=1 BEGIN
ROLLBACK
END
RAISERROR('%s - Error Number: %i', 
@ErrorSeverity, @ErrorState, @Message, @CustomError)
END CATCH

END


Horas trabajadas:    6 horas 


Participantes:

-Jonathan Salazar Garcia
-Mariano Montero Muñoz