Вы находитесь на странице: 1из 3

Trabajo Semestral (Apocalptico)

Asignatura
Profesor
Fecha de entrega

: Programacin de Base de Datos.


: Orlando Seplveda
: 20-06-2016, antes de que cenicienta pierda el zapato

Use el script proporcionado para crear la base

El ingeniero a cargo del departamento de informtica de una cadena de supermercados, le ha asignado a Ud. la tarea de
construir una serie de procesos que permitan automatizar la gestin de las ventas diarias y el manejo de stock de los
productos. Para ello, y de acuerdo con la arquitectura del sistema, los procesos deben considerar lo siguiente:
1.

Un Package que contenga los siguientes constructores pblicos


a)
b)
c)
d)
e)

Una variable de tipo EXCEPTION llamada sueldoNovalido.


Una funcin que retorne el total de los montos de la boletas emitidas por un empleado en un da de un mes y
ao en particular, ingresados como parmetros.
Una funcin pblica que devuelva un arreglo (TABLE OF) con el detalle de una boleta, cuya id se proporcione,
incluyendo el nombre de cada producto.
Una variable de tipo TABLE OF que pueda ser devuelta por la funcin anterior.
Al efectuar el pago, los clientes pueden adjudicarse un descuento, para ello pueden deben presentar un cupn
de descuento o una tarjeta. Se solicita implementar una funcin sobrecargada que devuelva el monto del
descuento sobre el monto de una boleta, de acuerdo con los siguientes requerimientos:
o
o
o
o

f)

g)
2.

Si la tarjeta es Platinum
Si la tarjeta es Gold
Si la tarjeta es Silver
0% sin tarjeta

20%
15%
10%

o
o
o
o

Si el cupn es de tipo 1
Si el cupn es de tipo 2
Si el cupn es de tipo 3
0% sin cupn

10%
7%
5%

La Gerencia desea contar con un procedimiento que permita aumentar el sueldo de un vendedor cuya id se
pase como parmetro con el monto en dinero que se especifique como parmetro. El procedimiento debe
usar una funcin local, (la que se indica en el punto g) para verificar si el sueldo del empleado, ms el monto
del aumento est dentro del rango permitido para su categora. Si el sueldo aumentado est dentro del rango
permitido, el procedimiento debe actualizar el sueldo del empleado con el monto del aumento especificado,
en caso contrario, use un error de usuario para capturar la excepcin producida, mostrando el mensaje El
sueldo est fuera del rango para esta categora.
Una funcin local que realice la verificacin del sueldo aumentado requerida por el procedimiento anterior.

Una funcin almacenada que retorne el nmero de ventas efectuadas por un empleado (cuntas) en un da de un mes
y ao en particular, ingresados como parmetros.

3.

Un procedimiento almacenado que permita procesar todas las ventas efectuadas durante un mes y ao en
particular, los que se ingresarn como parmetros, segn los siguientes requerimientos:
a) Se deben procesar todas las ventas diarias efectuadas durante el mes y ao ingresados como parmetros.
b) Por cada da procesado, se deben almacenar en tabla VENTAS_DIARIAS_VENDEDOR las ventas atendidas
por cada vendedor. En esta tabla se debe almacenar la identificacin del vendedor, total de ventas
efectuadas (usar para obtener este valor, la funcin almacenada solicitada en el punto 2) y el monto total
de las ventas efectuadas (usar funcin solicitada en letra b del package).
El proceso debe considerar todos los vendedores, por lo que, si alguno de ellos no efectu ventas en el da
procesado, los valores de total de ventas y monto total de las ventas efectuadas deben quedar en cero
para ese vendedor.
De producirse algn error, debe procurar que el programa no se interrumpa, guardando las excepciones
producidas en una tabla preparada para tal efecto con (id_de_error, nombresubprograma, numero de
error oracle y mensaje de error oracle). Para la id del error cree una secuencia.
c)

Adems, por cada da procesado se debe almacenar en tabla RESUMEN_VENTAS_DIARIAS el total de


ventas efectuadas y el monto total de las ventas para ese da.

Testear la procedure con el mes de mayo de 2016


Al finalizar el proceso, los valores resultantes en las tablas deben ser los siguientes:
TABLA VENTAS_DIARIAS_VENDEDOR

TABLA RESUMEN_VENTAS_DIARIAS

4.

Elabore un procedimiento almacenado que permita testear la funcin del punto c del paquete. El procedimiento
debe recorrer el arreglo y mostrar el detalle de la boleta, indicando rut del cliente y del empleado que la emiti y el
monto total de la misma. Tambin se debe mostrar el monto del descuento (funcin del punto e del package)
suponiendo que el cliente paga con alguno de los cupones o alguna de las tarjetas. La salida debe ser similar a la
siguiente. (Los valores mostrados pueden ser distintos).

5.

La Gerencia desea que se puedan controlar las transacciones que se efectan sobre la tabla DETALLE_BOLETA. Para
ello, Ud. deber implementar un trigger que permita asegurar que slo se pueda insertar, eliminar o actualizar una
fila de esta tabla de lunes a viernes y en horario laboral (entre las 08:00 y las 18:00). Si alguien inserta, elimina o
actualiza datos en da u horario no laborales se debe abortar la transaccin.

6.

Un trigger que permita dejar registro en una tabla creada para tal efecto, de las transacciones en la tabla
DETALLE_BOLETA. Se debe vigilar inserciones, borrados y actualizacin de los campos cantidad y valor_unitario
(indicando, en este caso, con lujo de detalle, cul fue la modificacin efectuada), la ip de la estacin desde la que se
hizo la modificacin y el usuario de sistema operativo utilizado. La tabla de registro, llamada auditadetalles debe
contar con los campos
fecha
hora
tabla
transaccion
observaciones
usuario_oracle
ip
os_user

7.

Otras de las modificaciones que la Gerencia desea incorporar al Sistemas Informtico, es que cuando se ingrese,
actualice o elimine una lnea de detalle de alguna boleta, se actualice automticamente el stock de los productos de
forma que:

8.

date
varchar2(8)
varchar2(30)
char(1)
varchar2(500)
varchar2(30)
varchar2(15)
varchar2(30)

Si se inserta una nueva lnea de detalle, se debe restar del stock actual la cantidad vendida del producto que
corresponde.
Si se actualiza la cantidad vendida de un producto en una boleta, se debe actualizar el stock actual segn la nueva
cantidad modificada del producto.
Si se elimina una lnea de detalle, la cantidad del o los productos de esa boleta deben ser sumados al stock actual
de ese producto.

Otras de las modificaciones que la Gerencia desea incorporar al Sistemas Informtico, es que cuando se ingrese u
empleado o se actualice el supervisor de un empleado, un proceso verifique si el supervisor tiene el nmero de
empleados a cargo que especifica la regla de negocio. La regla dice que un supervisor no puede tener ms de 9
empleados a cargo; de violarse la regla, el proceso debe anular la transaccin.