viernes, 29 de mayo de 2015

Viernes 29/05/2015 (SP relacionado con InsertRequest)

Tiempo invertido: 4 horas y 30 minutos, aproximadamente

19:00-21:30

Luego de realizar la verficación mencionada en la entrada anterior se procede a realizar las inserciones de los diferentes tipos de solicitudes que se pueden realizar, pero para poder realizarlo debemos primero saber que tipo de solicitud es, ya sea de servicios, suministros o maquinaria.

Para entender mejor este procedimiento explicaremos como se inserta una solicitud de servicios.
Primero se verifica que el ServiceID sea diferente de cero, si es diferente de cero se declaran dos variables tipo varchar, llamadas ServiceRequestDescription, y ServiceHistoricalDescripcion, en la variable ServiceRequestDescription lo que se va a tener es un codigo generado de la concatenación de varios string entre los cuales van: FK_LotXCycle, FK_ActivityType, RequestTypeID, ServiceID y el máximo ID guardado, ademas del código generado también dentro de la descripción esta el Request, la cantidad de saldo y las horas.

SELECT @ServiceRequestDescription =  'COD' + CONVERT(VARCHAR(10), @FK_LotXCycle) + CONVERT(VARCHAR(10), @FK_ActivityType) + CONVERT(VARCHAR(10), dbo.APFN_RequestTypeID(@RequestType)) + CONVERT(VARCHAR(10), dbo.APFN_ServiceID(@Request))  + CONVERT(VARCHAR(10), ISNULL(MAX(SR.ID), 0) + 1) + '. ' + @Request + ', cantidad: ' + CONVERT(VARCHAR(50), @Amount) + ' hora(s).'

En la variable ServiceHistoricalDescripcion lo que va a tener es: la descripción de la fecha en la cual fue registrada la solicitud.

Luego de tener todos los datos dentro de las variables, se verifica si la solicitud esta aprobada o pendiente.
Si esta Pendiente se hace un insert sin modificar o afectar el saldo de servicios, ya que esta pendiente.

Pero si la solicitud esta Aprobada se debe realizar la modificación de saldo de servicios, para poder realizar esto se debe declarar otra variable llamada ServiceMovementDescription, esta variable contiene la fecha de proceso, el request, la cantidad de horas, ademas tiene el nuevo saldo de servicios el cual es la siguiente sumatoria: LC.ServicesBalance + dbo.APFN_ServiceCost(@Request) * @Amount, con esta suma se obtiene el nuevo saldo de servicios.

SELECT @ServiceMovementDescription = 'Fecha de proceso: ' + CONVERT(VARCHAR(10), GETDATE(), 103) + '. ' + @Request + ', cantidad: ' + CONVERT(VARCHAR(50), @Amount) + ' hora(s). Nuevo saldo de servicios: ' + CONVERT(VARCHAR(200), (LC.ServicesBalance + dbo.APFN_ServiceCost(@Request) * @Amount))
FROM dbo.AP_LotXCycle LC 

Luego de tener todo en las variables se procede a realizar la inserción de la solicitud.



jueves, 28 de mayo de 2015

Jueves 28/05/2015 (SP relacionado con InsertRequest)

Tiempo invertido: 3 horas y 30 minutos, aproximadamente

19:00-20:30

Para poder realizar la inserción de una solicitud, se deben tener en cuenta varias cosas de suma importancia, ya que una solicitud puede ser de tres tipos diferentes, ya que puede ser solicitud de suministros, servicios o maquinaria, para la cual cada una de las solicitudes tienen distintos atributos que se deben tener en cuenta a la hora de insertar una nueva solicitud.

Lo primero que se debe hacer antes de querer insertar una solicitud es tener como parámetros todos los atributos que son necesarios para crear una solicitud, los cuales son: FK_LotXCycle,  FK_ActivityType, FK_Attendant, RequestType, Request, Amount, State, todos estos atributos se tienen como parámetros del Store Procedure como se puede aprecia continuación.

CREATE PROCEDURE APSP_InsertRequest(@FK_LotXCycle INT,  @FK_ActivityType INT, @FK_Attendant INT, @RequestType VARCHAR(50), @Request VARCHAR(50), @Amount FLOAT, @State VARCHAR(50))

Luego de tener todos estos parámetros se debe verificar que el RequestTypeID sea diferente de cero, que el RequestTypeManagerID también sea diferentes de cero y que el Amount sea mayor que cero, si esto se cumple se puede insertar la nueva solicitud de lo contrario no se podrá.

IF (dbo.APFN_RequestTypeID(@RequestType) <> 0 and dbo.APFN_RequestTypeManagerID(@RequestType) <> 0 and @Amount > 0) 

miércoles, 27 de mayo de 2015

Miercoles 27/05/2015 (Recuento de funcionalidad de las aplicaciones)

Tiempo invertido: 3 horas y 30 minutos, aproximadamente.

17:00-20:30

Con respecto a la aplicación web luego de discutir como se iba a llevar acabo, en la cual se podría observar las diferentes solicitudes realizadas para cada departamento o de una forma general. 
Después de comprender mejor la especificación se decido hacerlo de una forma mas general, por medio del con el nombre de la propiedad se pueda ingresar al historial de cada lote y cada ciclo que tiene esta propiedad.

Por otra parte se podrán realizar nuevas solicitudes a los diferentes departamentos, dentro de una respectiva propiedad en su respectivo ciclo y lote.
Con respecto a la aplicación de escritorio luego de discutir que seria lo mejor para esta aplicación, decidimos que lo mejor seria que en dicha aplicación se pudiera hacer dos actividades diferentes.

Una de las actividades que se realizara es la modificación de diferentes solicitudes ya creadas, para poder realizar de una mejor forma la diferentes solicitudes a los distintos departamentos. Esta actividad se hace como un medio de seguridad, ya que puede que en alguna solicitud creada con anterioridad se pudo enviar con algún error , y esto nos permitirá resolverlo.

La segunda actividad que se podrá realizar en dicha aplicación es la aprobación de las diferentes solicitudes, esta actividad es la encargada de dejar la solicitud en pendiente o aprobar dicha actividad para que se puede realizar el uso del suministro, maquinaria o servicio solicitado. 

martes, 26 de mayo de 2015

Martes 26/05/2015 (Reorganización del trabajo grupal)

Tiempo invertido: 2 horas y 30 minutos, aproximadamente.

17:00-19:30
Cuando se inicio con la creación del proyecto hablamos acerca de como íbamos hacer con las actualizaciones de diferentes archivos para poder ser utilizados por todos los miembros del grupo, en un inicio llegamos a un acuerdo de utilizar una carpeta de dropbox para ir haciendo actualizaciones de cada archivo que se crea o se modificara en la realización del proyecto.

En un principio la utilización de dropbox nos estaba funcionando de una forma muy excelente, pero tuvimos una serie de problemas a la hora de buscar diferentes archivos, ya que se extraviaron y no se pudieron recuperar, tuvimos la fortuna de que los archivos que se perdieron no eran los principales de todo el avance que tenemos.

Para poder evitar este tipo de problemas con perdida de información o archivos al realizar actualizaciones, decidimos reorganizar la forma de guardar los archivos, y de esta forma dejamos de usar el dropbox, investigamos acerca de diferentes tipos de repositorios que podíamos usar para guardar información en la nube, decidimos utilizar un repositorio llamada GitHub, la cual es una mejor opción para poder tener una mejor forma de guardar toda la información sin tener los problemas de perdida de archivos.

lunes, 25 de mayo de 2015

Lunes 25/05/2015 (SP relacionados con las solicitudes 2)

Tiempo invertido: 3 horas, aproximadamente.

13:00-16:00
Una vez aplicados los cambios correspondientes al modelo de la Base de Datos, los cuales consideramos esenciales para el desarrollo óptimo de las soluciones, procedimos a empezar a crear elaborar la estructura del Store Procedure para la inserción de Solicitudes.

Se tomó en cuenta la inconsistencia de la implementación, debido a que aún no se tenía la estructura del archivo de migración a cargo de otro grupo desarrollador del proyecto, lo cual afecta considerablemente el alcance de las posibles soluciones.

Para realizar la inserción de una Solicitud se tomó en cuenta la siguiente información, para realizar el proceso correspondiente:
  • Lote X Ciclo.
  • Tipo de Actividad.
  • Tipo de Solicitud.
  • Fecha del proceso.
  • Solicitud correpondiente (El suministro, máquina o servicio).
  • Decripción de la Solicitud. 
  • Cantidad (Ejemplares u horas).
  • Estado de la Solicitud (Aprobada o pendiente).
Se procedió a crear la plantilla del SP en SQL, a pesar del problema anteriormente mencionado, el cual nos da inseguridad a la hora de programar.

viernes, 22 de mayo de 2015

Viernes 22/05/2015 (SP relacionados con las solicitudes 1)

Tiempo invertido: 3 horas, aproximadamente.

16:00-19:00
Basados en los recientes cambios realizados en el modelo de Bases de Datos nos enfocamos en la creación de los diferentes tipos de Store Procedures, que modificaran la tabla de las solicitudes.

Debido al atraso que supone no tener el formato de archivo para la migración de datos listo, nos enfocamos en realizar estos procedimientos muy generales suponiendo que la estructura no varié mucho con lo esperado por lo miembros del grupo de desarrolladores.

Para realizar este tipo de procedimientos, se tomo en cuenta que los mismos recaban y modifican información de las siguientes tablas y fuentes externas de información (usuarios):
  • Lote X Ciclo
  • Tipo de Actividad
  • Solicitudes
  • Fecha de la solicitud (provista por el usuario)
  • Información a modificar de las solicitudes (provista por el usuario)
  • Solicitudes de servicios
  • Solicitudes de maquinaria
  • Solicitudes de suministros
  • Lote
  • Ciclo
Se creo una plantilla para este tipo de SP en SQL, pero los mismos siguen siendo generales; ya que no sabemos a ciencia cierta si estos serán lo definitivos, debido a el problema antes descrito.

jueves, 21 de mayo de 2015

Jueves 21/05/2015 (Organización de la Aplicación Web)

Tiempo invertido: 2 horas y 30 minutos, aproximadamente

17:00-19:30

Como fue mencionado anteriormente para la realización de la pagina web, seguiremos utilizando Nodejs, ya que nos dio resultados muy positivos en el primer proyecto programado. También utilizaremos los frameworks como Angularjs y Bootstrap.

En esta aplicación web se podrá observa el historial de las actividades realizadas en un lote especifico de una propiedad especifica y en un ciclo especifico. La visualización del historial se puede ver de una forma general, o se puede especificar cual historial se quiere ver, ya sea el de suministros, maquinaria, o servicios.

Otra opción que tiene esta aplicación web es la creación de solicitudes, para la creación de solicitudes podrá escoger entre los tres tipos existentes de solicitudes que son: Maquinaria, Servicios, Suministros. Luego deberá llenar los datos necesarios para enviar la solicitud.



miércoles, 20 de mayo de 2015

Miércoles 20/05/2015 (Organización de la Aplicación Escritorio)

Tiempo invertido: 2 horas y 30 minutos, aproximadamente.

20:00-22:30
En este proyecto se llevara acabo la creación de una aplicación de escritorio, la cual no estaba contemplada en la descripción del proyecto, pero por motivo de que el grupo de trabajo esta integrado por tres estudiantes, el profesor Franco Quiros nos pidió incorporar una aplicación de escritorio para que de esta manera sea equitativo el trabajo entre los diferentes grupos.

La aplicación de escritorio la finalidad que va a tener dentro del proyecto es, que por medio de ella se puedan realizar la aprobación de solicitudes como también poder permitir la edición de las mismas.
Para realizar esta aplicación de escritorio se utilizara el modelo de diseño llamado MVC, el cual fue también implementado en el proyecto anterior.

Este tipo de modelo de diseño es de gran ayuda para poder realizar el trabajo de una forma mas ordenada, ya que como su nombre lo indica tendremos el el modelo, la vista y el controlador por separa, lo cual nos permite realizar todo de una forma mas ordenada y clara.

martes, 19 de mayo de 2015

Martes 19/05/2015 (Estructuración del desarrollo de procedimientos)

Tiempo invertido: 2 horas y 30 minutos aproximadamente.

19:00-21:30
Con el desarrollo de varias funciones utilitarias y procedimientos almacenados empezamos a desarrollar algunos de los scripts de consultas. Los mismos nos ayudaran en la obtención de datos para la aplicación de usuario. Estos reciben (como entrada) un identificador único, como lo puede ser un ID.

Este es un ejemplo de uno de los scripts de consultas desarrollados:
CREATE PROCEDURE APSP_CropType(@ID INT)
AS
BEGIN
BEGIN TRY
SELECT CT.ID, CT.Name FROM dbo.AP_CropType CT
WHERE CT.ID = @ID
END TRY
BEGIN CATCH
RETURN @@ERROR * -1
END CATCH
END

Cabe resaltar que también se desarrollaron procedimientos almacenados que no reciben ID, los cuales sirven para mostrar toda la información de una tabla, como por ejemplo toda la información de todos los tipos de cultivos en una finca.

En conclusión se desarrollo gran parte de las funciones y procedimientos que nos van a ayudar a la creación de la aplicación web y la aplicación de escritorio.

lunes, 18 de mayo de 2015

Lunes 18/05/2015 (Estructuración del desarrollo de funciones)

Tiempo invertido: 2 horas y 30 minutos, aproximadamente.

18:00-20:30
Con el modelo conceptual creado y con un mejor conocimiento acerca del proyecto que debemos realizar, se comenzó a trabajar en la creación de las primeras funciones generales para cada tabla de la base de datos, las cuales consisten que por medio del nombre  que es un atributo único se pueda verificar si ya existe algún atributo y poder obtener el ID de dicho atributo que tenga el nombre dado.
Estas funciones son muy similares en todas las tablas, a continuación se podrá apreciar un ejemplo de dichas funciones.

CREATE FUNCTION APFN_SupplyID(@Name VARCHAR(50))
RETURNS INT
AS
BEGIN
DECLARE @Result INT
SET @Result = 0
SELECT @Result = S.ID FROM dbo.AP_Supply S
WHERE S.Name = @Name
RETURN @Result
END

Este sera el diseño general para la creación de todas las funciones para comprobar si existe o no, y así poder obtener el ID del tributo de la tabla que se desee. Estas funciones son las mas generales, ya que con ellas lo que podemos hacer es verificar si existe o no un atributo en una tabla.

viernes, 15 de mayo de 2015

Viernes 15/05/2015 (Organización del proyecto, desarrollo grupal)

Tiempo invertido: 2 horas, aproximadamente.

16:00-18:00
Como parte de los requerimientos del proyecto, se debía realizar una migración de dato masiva, a partir de un archivo de texto, un archivo XML, o alguna fuente proporcionada. Esto a cargo de otro grupo de trabajo del mismo proyecto.

Debido a lo anterior la organización del proyecto se puede ver afectada, ya que se debe tomar en cuenta la posibilidad de reestructuración del modelo de la base de datos, hasta las soluciones del mismo. La organización se resume en comunicación del equipo de desarrollo, partiendo de lo establecido previamente.

jueves, 14 de mayo de 2015

Jueves 14/05/2015 (Desarrollo del modelo conceptual)

Tiempo invertido: 2 horas, aproximadamente.

12:00-14:00
Realizando un análisis exhuastivo del modelo conceptual desarrollado el días martes 12/05, a cargo del profesor Franco Quirós, se obtuvieron ciertos criterios y conclusiones, las cuales se citan a continuación:

  • El uso de herencia en la implementación del modelo provee facilidades para la búsqueda de soluciones consistentes.
  • La relaciones redundantes proporcionan disminuyen la claridad, pero aportar eficiencia a la hora de realizar consultas.
  • Para obtener los resultados deseados, en la implementación de las soluciones correspondientes, se necesita el desarrollo de un modelo consiste.

El modelo conceptual resultó ser afectado por nuestro análisis, se realizaron distintos cambios y se agregaron tablas catálogos que consideramos necesarias.


miércoles, 13 de mayo de 2015

Miércoles 13/05/2015 (Generalidades del proyecto)

Tiempo invertido: 2 horas, aproximadamente.

16:00-18:00
Para facilitar el desarrollo del proyecto se creó, nuevamente, una carpeta compartida en Dropbox, para almacenar las actualizaciones diarias del proyecto, donde se siguen ciertos lineamientos para respetar el orden y la claridad de las soluciones.
Se debe incluir actualización del trabajo en un .rar de la forma:
Actualización dd-mm-aaaa (Especificación de lo actualizado)

Incluyendo la carpeta del proyecto previamente definida, con los archivos modificados o nuevos únicamente, para así evitar reemplazar información a la hora de copiar el contenido de la carpeta de cada uno de los desarrolladores.

Gracias a los buenos resultados obtenidos en el desarrollo del primer proyecto, se decidió realizar las aplicaciones correspondiente con Nodejs, haciendo uso de los frameworks: Angulajs y Bootstrap.

martes, 12 de mayo de 2015

Martes 12/05/2015 (Asignación del proyecto y desarrollo del modelo conceptual)

Tiempo invertido: 2 horas y 30 minutos, aproximadamente.

07:30-09:20
En el transcurso de la clase, se oficializó la asignación del proyecto, a cargo del profesor Franco Quirós, además se desarrollo del modelo conceptual del mismo.
El modelo incluye el patrón de diseño Saldo-Movimiento, incluido como parte del desarrollo y aprendizaje en el curso.

11:30-13:00
Se estableció el grupo de trabajo para el desarrollo del nuevo proyecto asignado, conservando los desarrolladores del proyecto anterior en conjunto con la integración de otro miembro. Se creó un grupo de mensajería instantánea para facilitar la comunicación entre el equipo. Acordamos, como política del grupo, escribir el código SQL pues se acostumbraba a escribirlo en español.