Descripción de los stored
procedures y demás formas de acceder a la base
de datos para realizar las funciones del sistema.
| Historial de revisiones |
|---|
| Revisión Entrega009.01 | 2007-11-03 | |
| Creación del documento. |
| Revisión Entrega009.02 | 2007-11-04 | |
| Última revisión entrega. |
| Revisión Entrega012.01 | 2007-11-26 | |
| Documento pasa a ser general para todo el
desarrollo del sistema. |
| Revisión Entrega012.02 | 2007-11-30 | |
| Agregados comandos relacionados con obtención de
estados y de informes, sucesos y operaciones existentes. |
| Revisión Entrega012.03 | 2007-12-03 | |
| Última revisión. |
| Revisión Entrega013.01 | 2008-01-08 | |
| Agregados comandos de edición de encabezados de los
informes y sucesos y de eliminación de operaciones, sucesos e
informes. |
En un intento de separar claramente las capas de la
aplicación, se describe la interfase de la base de datos como una
API, de esta manera, se oculta la organización interna de los
datos y la forma en que estos se procesan y generan.
Las capas superiores solo deberían acceder a los datos a
través de esta interfase.
Documentos relacionados: En el documento
General-Acceso_Base_de_Datos.pdf
se describe como
acceder a la base de datos y ejecutar los comandos descriptos en
este documento.
El control de acceso al servidor de la base de datos lo
realiza el propio servidor
Firebird™. Para verificar los perfiles del
usuario logueado en el servidor pueden ejecutarse una serie de
comandos que en caso de no corresponder el perfil generan una
excepción.
- Verificar si el usuario pertenece al perfil ROL_ADMINCLAVES
PROCEDURE SPS_VRF_ADMINCLAVES |
En caso de que el usuario conectado no pertenezca al
perfil ROL_ADMINCLAVES genera una excepción.
- Verificar si el usuario pertenece al
perfil ROL_CONFIGURADOR
PROCEDURE SPS_VRF_ROL_CONFIGURADOR |
En caso de que el usuario conectado no pertenezca al
perfil ROL_CONFIGURADOR genera una excepción.
- Verificar que el usuario pertenezca al
perfil ROL_USUARIO
PROCEDURE SPS_VRF_ROL_USUARIO |
En caso de que el usuario conectado no pertenezca al
perfil ROL_USUARIO genera una excepción.
- Crear una plantilla de artículos
EXECUTE PROCEDURE SPP_NEW_ARTICULO (
NBP_ARTICULO D_NOMBRE,
UBICABLE D_BOOLEANO,
CONTENIBLE D_BOOLEANO,
CONTINENTE D_BOOLEANO)
RETURNING_VALUES (IDP_ARTICULO D_ID) |
- Crear una plantilla de atributo
EXECUTE PROCEDURE SPP_NEW_ATRIBUTO(
NB_ATRIBUTO D_NOMBRE,
TIPO D_TIPO_ATRIB,
DEFECTO D_VALOR_ATRIB)
RETURNING_VALUES (IDATRIBUTO D_ID) |
- Asociar un atributo a una plantilla de artículos
EXECUTE PROCEDURE SPP_NEW_ATRIB_ART (
NB_ATRIBUTO D_NOMBRE,
NBP_ARTICULO D_NOMBRE,
DEFECTO D_VALOR_ATRIB) |
- Crear una parte para una plantilla de artículos
EXECUTE PROCEDURE SPP_NEW_PARTE (
NB_PARTE D_NOMBRE,
MULTIPLE D_BOOLEANO,
NBP_CONTINENTE D_NOMBRE,
NBP_CONTENIBLE D_NOMBRE)
RETURNING_VALUES (ID_PARTE D_ID) |
- Eliminar una plantilla de artículos
EXECUTE PROCEDURE SPP_DEL_ARTICULO (NBP_ARTICULO D_DESCRIPCION) |
- Eliminar una plantilla de atributo
EXECUTE PROCEDURE SPP_DEL_ATRIBUTO (NB_ATRIBUTO D_NOMBRE) |
- Eliminar un atributo de una plantilla de artículos
EXECUTE PROCEDURE SPP_DEL_ATRIB_ART (
NB_ATRIBUTO D_NOMBRE,
NBP_ARTICULO D_NOMBRE) |
- Eliminar una parte de una plantilla de artículos
EXECUTE PROCEDURE SPP_DEL_PARTE (
NB_PARTE D_NOMBRE,
NBP_CONTINENTE D_NOMBRE) |
- Modificar el valor por defecto de una plantilla de atributo
EXECUTE PROCEDURE SPP_EDT_ATRIBUTO (
NB_ATRIBUTO_ACTUAL D_NOMBRE,
NB_ATRIBUTO_NUEVO D_NOMBRE,
DEFECTONUEVO D_VALOR_ATRIB) |
- Modificar el valor por defecto de un atributo de una
plantilla de artículos
EXECUTE PROCEDURE SPP_EDT_ATRIB_ART (
NB_ATRIBUTO D_NOMBRE,
NBP_ARTICULO D_NOMBRE,
DEFECTO D_VALOR_ATRIB) |
- Renombrar una plantilla de artículos
EXECUTE PROCEDURE SPP_REN_ARTICULO (
NBP_ARTICULO_ACTUAL D_NOMBRE,
NBP_ARTICULO_NUEVO D_NOMBRE) |
- Renombrar una parte de una plantilla de artículos
EXECUTE PROCEDURE SPP_REN_PARTE (
NB_PARTE D_NOMBRE,
NBP_CONTINENTE D_NOMBRE,
NB_PARTE_NUEVO D_NOMBRE) |
- Listar las plantillas de artículos
SELECT
IDP_ARTICULO D_ID,
NBP_ARTICULO D_NOMBRE,
UBICABLE D_BOOLEANO,
CONTENIBLE D_BOOLEANO,
CONTINENTE D_BOOLEANO
FROM SPP_LST_ARTICULOS (
FESPECIFICACION D_NOMBRE,
FUBICABLE D_BOOLEANO,
FCONTENIBLE D_BOOLEANO,
FCONTINENTE D_BOOLEANO) |
- Listar las plantillas de atributos
SELECT
ID_ATRIBUTO D_ID,
NB_ATRIBUTO D_NOMBRE,
TIPO D_TIPO_ATRIB,
DEFECTO D_VALOR_ATRIB
FROM SPP_LST_ATRIBUTOS (
FATRIBUTOPOS D_NOMBRE,
FTIPO D_TIPO_ATRIB) |
- Listar los atributos de una plantilla de artículos
SELECT
NBP_ARTICULO D_NOMBRE,
NB_ATRIBUTO D_NOMBRE,
TIPO D_TIPO_ATRIB,
DEFECTO D_VALOR_ATRIB
FROM SPP_LST_ATRIB_ART (ESPECIFICACION D_NOMBRE) |
- Listar las partes de una plantilla de artículos
SELECT
NB_PARTE D_NOMBRE,
MULTIPLE D_BOOLEANO,
NBP_CONTINENTE D_NOMBRE,
NBP_CONTENIBLE D_NOMBRE
FROM SPP_LST_PARTES (NCONTINENTE D_NOMBRE) |
- Cargar un nuevo informe
EXECUTE PROCEDURE SPO_NEW_INFORME (
FECHA_RECEPCION D_FECHA,
DESCRIPCION D_DESCRIPCION)
RETURNING_VALUES (
ID_INFORME D_ID) |
La carga de un informe consiste en ejecutar
SPO_NEW_INFORME y luego cargar los sucesos
correspondientes.
- Cargar un suceso de un informe
EXECUTE PROCEDURE SPO_NEW_SUCESO (
ID_INFORME D_ID,
FECHA_SUCESO D_FECHA,
DESCRIPCION D_DESCRIPCION)
RETURNING_VALUES (
ID_SUCESO D_ID) |
La carga de un suceso consiste en ejecutar
SPO_NEW_SUCESO y luego cargar las operaciones
correspondientes.
- Cargar operación de creación de artículos
EXECUTE PROCEDURE SPC_NEW_ARTICULOS (
ID_SUCESO D_ID,
ID_OPERACION D_ID, -- siempre ID_OPERACION = 0
NBP_ARTICULO D_NOMBRE,
CANTIDAD D_ID, -- CANTIDAD = 1
ID D_ID)
RETURNING_VALUES (
ID_ARTICULO D_ID,
ID_OPERACION_O D_ID) |
O bien:
SELECT
ID_ARTICULO D_ID,
ID_OPERACION_O D_ID
FROM SPC_NEW_ARTICULOS (
ID_SUCESO D_ID,
ID_OPERACION D_ID, -- siempre ID_OPERACION = 0
NBP_ARTICULO D_NOMBRE,
CANTIDAD D_ID, -- CANTIDAD > 1
ID D_ID)
|
Si se crea un único artículo, puede ejecutarse el stored
procedure mediante EXECUTE PROCEDURE y devolverá el ID del
artículo creado. Si se crea mas de un artículo al ejecutarse
mediante SELECT se obtiene el listado de IDs de los
artículos creados.
- Cargar operación de cambio de atributo de artículos
EXECUTE PROCEDURE SPC_EDT_ATRIB_ART (
ID_SUCESO D_ID,
ID_OPERACION D_ID, -- En primera ejecución ID_OPERACION = 0
ID_ARTICULO D_ID,
NB_ATRIBUTO D_NOMBRE,
VALOR_ANTERIOR D_VALOR_ATRIB,
VALOR_NUEVO D_VALOR_ATRIB)
RETURNING_VALUES (
ID_OPERACION_O D_ID) |
En caso de cambiar el atributo de mas de un artículo
en una misma operación, se deberá ejecutar
SPC_EDT_ATRIB_ART iterativamente para cada
artículo. En la primer ejecución, deberá asignarse valor 0
a ID_OPERACION de manera que genere una nueva operación;
para las demás ejecuciones se obtendrá el valor de
ID_OPERACION del resultado ID_OPERACION_O.
- Cargar operación de agregar componente
EXECUTE PROCEDURE SPC_ADD_PARTE_ART (
ID_SUCESO D_ID,
ID_OPERACION D_ID,
ID_CONTIENTE D_ID,
NB_PARTE D_NOMBRE,
ID_CONTENIBLE D_ID)
RETURNING_VALUES (
ID_OPERACION_O D_ID) |
En caso de agregar mas de un artículo contenible en la
misma operación, se deberá ejecutarSPC_ADD_PARTE_ART
iterativamente para cada contenible. En la primer
ejecución, deberá asignarse valor 0 a ID_OPERACION de
manera que genere una nueva operación; para las demás
ejecuciones se obtendrá el valor de ID_OPERACION del
resultado ID_OPERACION_O.
- Cargar operación de quitar componente
EXECUTE PROCEDURE SPC_REM_PARTES_ART_1 (
ID_SUCESO D_ID,
ID_OPERACION D_ID,
ID_CONTENIBLE D_ID)
RETURNING_VALUES (
ID_OPERACION_O D_ID,
ID_CONTINENTE D_ID,
ID_PARTE D_ID) |
O bien:
SELECT
ID_OPERACION_O D_ID,
ID_CONTENIBLE D_ID
FROM SPC_REM_PARTES_ART_2 (
ID_SUCESO D_ID,
ID_OPERACION D_ID,
ID_CONTINENTE D_ID,
NB_PARTE D_NOMBRE)
|
Existen dos formas de expresar que se desea quitar
componentes: indicando el o los artículo contenibles o bien
indicando el artículo continente y la parte.
En el caso de que se indiquen los artículos
contenibles, debe ejecutarse SPC_REM_PARTES_ART_1
iterativamente para cada contenible a quitar. En la primer
ejecución, deberá asignarse valor 0 a ID_OPERACION; para las
demás ejecuciones se deberá asignar el resultado de ID_OPERACION_O a
ID_OPERACION.
En el caso de que se indique el artículo continente y
la parte a liberar, debe ejecutarse
SPC_REM_PARTES_ART_2 mediante un SELECT de manera que
devuelva la lista de contenibles liberados.
- Listar los informes
SELECT
ID_INFORME,
FECHA_RECEPCION,
DESCRIPCION
FROM
SPO_LST_INFORMES
|
Devuelve el listado de informes activos en el
sistema.
- Listar los sucesos de un informe
SELECT
ID_INFORME,
ID_SUCESO,
FECHA_SUCESO,
DESCRIPCION
FROM
SPO_LST_SUCESOS(ID_INFORME) |
Devuelve el listado de sucesos de un informe.
- Listar las operaciones de un suceso
SELECT
ID_SUCESO,
ID_OPERACION,
TIPO
FROM
SPO_LST_OPERACIONES(ID_SUCESO) |
Devuelve el listado de operaciones del suceso indicado.
- Listar los cambios producidos por una operación de
Agregar Componentes
SELECT
ID_CONTINENTE,
NB_PARTE,
ID_CONTENIBLE
FROM
SPC_LST_OPAGREGARCOMPONENTES(ID_OPERACION)
|
Devuelve el detalle de la operación.
- Listar los cambios producidos por una operación de
Ingresar Artículos
SELECT
NBP_ARTICULO,
CANTIDAD,
ID_ARTICULO
FROM
SPC_LST_OPINGRESARARTICULOS(ID_OPERACION)
|
Devuelve el detalle de la operación.
- Listar los cambios producidos por una operación de
Quitar Componentes
SELECT
ID_CONTENIBLE
FROM
SPC_LST_OPQUITARCOMPONENTES(ID_OPERACION)
|
Devuelve el detalle de la operación.
- Listar sucesos clave
SELECT
FECHA_CLAVE
FROM
SPE_LST_FECHAS_CLAVE(FECHA)
|
Devuelve el listado de fechas en que ocurrieron
sucesos que influyen directamente en el estado de la fecha
indicada.
- Listar existencia de artículos
SELECT
ID_ARTICULO,
FECHA_CREACION,
NBP_ARTICULO
FROM
SPE_LST_EXISTENCIA(FECHA)
|
Devuelve el listado de artículos existentes en la
fecha indicada y su fecha de creación.
- Listar artículos contenidos
SELECT
FECHA_SUCESO,
ID_CONTINENTE,
NB_PARTE,
ID_CONTENIBLE
FROM
SPE_LST_CONTENIDOS(FECHA)
|
Devuelve el listado de artículos contenidos por
otros, en la fecha indicada, y desde cuando lo están.
- Listar estado de atributos de artículos
SELECT
FECHA_SUCESO,
ID_ARTICULO,
NB_ATRIBUTO,
VALOR
FROM
SPE_LST_VALORES_ATRIB_ART(FECHA)
|
Devuelve el listado de los atributos de cada
artículo en existencia con su valor en el momento
indicado, y desde cuando tiene dicho valor.
- Editar encabezado de informe
EXECUTE PROCEDURE SPO_EDT_INFORME (
ID_INFORME D_ID,
FECHA_RECEPCION D_FECHA,
DESCRIPCION D_DESCRIPCION) |
La edición de un informe consiste en
ejecutar SPO_EDT_INFORME para editar el encabezado
(además de aplicar o deshacer los sucesos que lo
componen.
- Editar encabezado de suceso
EXECUTE PROCEDURE SPO_EDT_SUCESO (
ID_SUCESO D_ID,
FECHA_RECEPCION D_FECHA,
DESCRIPCION D_DESCRIPCION) |
La edición de un suceso consiste en
ejecutar SPO_EDT_SUCESO para editar el encabezado
(además de aplicar o deshacer las operaciones que lo
componen.
Estas acciones solo deberían utilizarse al deshacer
informes, sucesos u operaciones durante la creación iterativa ya
que al eliminar físicamente se pierde el registro de la
existencia de dichos elementos.
- Eliminar informe
EXECUTE PROCEDURE SPO_DEL_INFORME(ID_INFORME D_ID) |
Para eliminar un informe, este no debe tener
sucesos asociados.
- Eliminar informe
EXECUTE PROCEDURE SPO_DEL_SUCESO(ID_SUCESO D_ID) |
Para eliminar un suceso, este no debe tener
operaciones asociadas.
- Eliminar operación
EXECUTE PROCEDURE SPO_DEL_OPERACION(ID_OPERACION D_ID) |
Para eliminar una operación, no debe interferir con
operaciones creadas posteriormente.