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

jueves, 21 de agosto de 2014

Entrada 3

Hora de inicio: 8:00pm

Hora de Fin: 12:00 pm


Acciones:

-Se inicio la aplicacion en java tratando de implementar el login de administradores ( ver seccion Fotos ) pero un error desconocido al momento de conectar la base de datos con java no nos permitio realizar un avance mayor.
-Una vez aprendido lo basico del nuevo lenguaje de trabajo se empezo a trabajar con las primeras pruebas de interfaz grafica
Observaciones:
- Se decidio cambiar el lenguaje para la aplicacion de escritorio de java a C#, por lo cual se visito el siguiente canal en youtube para aprender este lenguaje https://www.youtube.com/watch?v=tYeXlp0zKDA
- Para el trabajo con interfaz se consulto el siguiente Video https://www.youtube.com/watch?v=yzAeRi6kcOs
-usuarios youtube consultados de manera adicional : csharpdemos, MyCyberAcademy
-Con el siguiente video se logro establecer la conexion con sql server https://www.youtube.com/watch?v=ZaDfBNSlMaI
Fotos:








Horas trabajadas:    4 horas 


Participantes:

-Jonathan Salazar Garcia
-Mariano Montero Muñoz

lunes, 18 de agosto de 2014

Entrada 2

Hora de inicio: 7:15pm

Hora de Fin: 9:35 pm


Acciones:

- Se instalo wamp server en una de las maquinas del equipo para la utilizacion de php como medio para realizar las aplicaciones web.
- Se logro instalar SQL en la computadora que anteriormente si presentaba el error por el internet y para resolver esto se cambio el lugar de trabajo del tec a un apartamento de un miembro del grupo de trabajo.


Observaciones:

- Surgio la duda sobre la utilidad de los 3 estados para representar a los archivos de prueba subidos, y se preguntara si se puede eliminar el estado "Valido" para que solo queden los estados "Procesado" y "Con Error".
- https://www.youtube.com/watch?v=b4GtxaEqy3A  de este link no basamos para la instalar wamp server
-https://www.youtube.com/watch?v=udpvZv_C7js este link se utilizo como guia para instalar sql server


Fotos:

No se requirieron para esta entrada




Horas trabajadas:     2 horas 20 minutos 


Participantes:

-Jonathan Salazar Garcia
-Mariano Montero Muñoz

Entrada 1

Hora de inicio: 2:55 pm

Hora de Fin: 5:15 pm


Acciones:

- Finalización del modelo fisico de la base de datos y la imagen del mismo se encuentra en la sección de Fotos de esta publicación.
- Intento de instalacion Fallido de SQL server en la computadora de uno de los miembros del equipo de trabajo por problemas con el internet puesto que nos encontramos en la LAIMI y la red de internet se encuentra muy bloqueada.



Observaciones:

-La tabla EmpleadosXEmpresa,Usuarios y empleados se unificaron en una sola Tabla de empleados, y se agrego una tabla de Tipo de empleado, Ya con eso se podra diferenciar cada tipo de usuario entre si y el problema de NULL en el FK con empresa no existe, puesto que para que un Empleado sea Empleado, debe pertenecer a una empresa.
-La contraseña en la tabla de empleados se hizo con un varchar(32) puesto que la contraseña de manejara encriptada utilizando MD5 el cual tiene un tamaño de 32 caracteres.
-Surgio la duda sobre si en la tabla PanillasPorEmpleado el campo TotalDeduccionesLey es igual , al total total de la cuota Obrera o igual al Total de Cuota Obrera+ Total de Cuota Patronal.



Fotos:






Horas trabajadas:       2 Horas 20 Minutos


Participantes:

-Jonathan Salazar Garcia
-Mariano Montero Muñoz