Vous êtes sur la page 1sur 9

SOLUCION PROCEDIMIENTOS, FUNCIONES Y DESENCADENADORES REALIZADOS A LA BASE DE

DATOS VARIEDADES LUCERITO.

Identificación de elementos de programación:


Los elementos de programación a implementar en esta base de datos son los de ingresos de
proveedores, y clientes que está reflejado en la tabla de Terceros, otro elemento de programación
a implementar es el de creación y registro de productos y el de facturación o venta.

1. PROCEDIMIENTOS ALMACENADOS DE INSERCION DE REGISTROS.


PROCEDIMIENTO PARA INSERTAR UN TERCERO. ESTE PROCEDIMIENTO AYUDA A LA
INSERCION DE MANERA SISTEMATIZADA DE UN TERCERO, IDENTIFICANDO SI ES CLIENTE O
PROVEEDOR ESTO APOYA EL INGRESO DE DATOS EN EL MODULO DE REGISTRO DE
PROVEEDORES.

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `Ingresar_Tercero`(in Tercero_Nit varchar(15), in
Tercero_Nombre1 varchar(45), in Tercero_Nombre2 varchar(45), in Tercero_Apellido1
varchar(45), in Tercero_Apellido2 varchar(45), in Tercero_Direccion varchar(45),
in Tercero_Ciudad varchar(45), in Tercero_Celular varchar (15), in Tercero_Razon_Social
varchar(45), in Tercero_Tipo_Pers varchar(1), in Tercero_Tipo varchar (1), in Tercero_Cargo
varchar(45))
begin
insert into tercero values (Tercero_Nit, tercero_nombre1,Tercero_Nombre2,
Tercero_Apellido1, Tercero_Apellido2, Tercero_Direccion, Tercero_Ciudad,
Tercero_Celular, Tercero_Razon_Social, Tercero_Tipo_Pers, Tercero_Tipo, Tercero_Cargo);
End

2. PROCEDIMIENTO ALMACENADO PARA LLENAR LA TABLA DE TIPOS DE TERCERO. ESTE


PROCEDIMIENTO AYUDA A LA INSERCION DE DATOS EN EL MODULO DE REGISTRO DE
TERCERO, DEFINIENDO EL TIPO.

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `Llenartiposterceros`(in Tipo_Tercero_tipo
varchar(1), in Tipo_Tercero_Nombre Varchar(45))
BEGIN
insert into tipo_tercero values (Tipo_Tercero_Tipo, Tipo_Tercero_Nombre);
END
3. PROCEDIMIENTO ALMACENADO PARA INSERCION DE LA TABLA TIPOS DE PERSONA.
DE IGUAL FORMA QUE EL PROCEDIMIENTO ANTERIOR ESTE APOYA AL MODULO DE REGISTRO
DE PROVEEDORES O CLIENTE.

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `Llenartipospersona`(in Tipo_Persona_Tipo


varchar(1), in Tipo_Persona_Nombre varchar(1))
BEGIN
insert into tipo_persona values (Tipo_Persona_Tipo, Tipo_Persona_Nombre);
END

4. PROCEDIMIENTO ALMACENADO PARA INSERTAR LOS CODIGOS DE VENDEDORES


ESTE PROCEDIMIENTO AYUDA AL MODULO DE VENTAS EN DONDE DE UNA MANERA RAPIDA
SE LOGRAN INGRESAR LOS CODIGOS DE LOS DIFERENTES VENDEDORES. APOYO AL MODULO
DE REGISTRO DE PROVEEDORES.

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `ingresar_vendedor`(in Vendedor_Codigo
varchar(15), in Vendedor_Identificacion varchar (15))
BEGIN
insert into vendedor values (Vendedor_Codigo, Vendedor_Identificacion);
END

5. PROCEDIMIENTO ALMACENADO PARA INGRESAR LOS DATOS DE LA TABLA PRODUCTO


ESTE PROCEDIMIENTO APOYA AL MODULO O CASO DE USO DE REGISTRO DE PRODUCTOS
EN LA PARTE DE INSERCION DE PRODUCTOS.

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `ingresar_producto`(in Producto_Codigo varchar
(15), in Producto_Nombre varchar(45), in producto_marca varchar(45),
in producto_ubicacion varchar(45), in producto_codigo_categoria varchar(15), in
producto_tarifa_iva int,
in producto_unidad int, in producto_costo int, in producto_precio_venta int, in producto_foto
varchar(15),
in producto_vendedor varchar (15) )
BEGIN
insert into producto values (Producto_Codigo, Producto_Nombre, producto_marca,
producto_ubicacion, producto_codigo_categoria, producto_tarifa_iva, producto_unidad,
producto_costo, producto_precio_venta, producto_foto, producto_vendedor);
END
6. PROCEDIMIENTO ALMACENADO PARA INGRESAR LOS DATOS DE LA TABLA MOVIMIENTO
ESTE PROCEDIMIENTO ES DE GRAN MOVIMIENTO Y ES EL QUE APOYA EL CASO DE USO O
MODULO DE REGISTRO DE VENTA EN EL SISTEMA.

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `ingreso_movimiento`(in
movimiento_numero_factura varchar (15),
in movimiento_fecha date, in movimiento_tercero varchar(15), in movimiento_vendedor
varchar(15),
in movimiento_detalle varchar(45), in movimiento_codigo_producto varchar(15), in
movimiento_cantidad_producto int,
in movimiento_costo_unitario int)
BEGIN
insert into movimiento values (movimiento_numero_factura, movimiento_fecha,
movimiento_tercero, movimiento_vendedor, movimiento_detalle,
movimiento_codigo_producto,
movimiento_cantidad_producto, movimiento_costo_unitario);
END

7. PROCEDIMIENTO ALMACENADO CON PARAMETRO DE ENTRADA PARA LISTAR EN ORDEN


SEGÚN CRITERIO POR “NOMBRE” O “APELLIDO”
ESTE PROCEDIMIENTO APOYA EL MODULO DE REGISTRO DE PROVEEDORES Y CLIENTES CON
EL CUAL SE PUEDE OBTENER LOS LISTADOS RAPIDOS DE CLIENTES O PROVEEDORES
ORDENADOS DEPENDIENDO EL CRITERIO POR NOMBRE O APELLIDOS.

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `listadoxorden`(in criterio varchar(45))
BEGIN
if criterio = "nombre" THEN
select * from tercero order by tercero_nombre1 asc;
end if;
if criterio = "apellido" then
select * from tercero order by tercero_apellidos1 asc;
end if;
END
8. PROCEDIMIENTO ALMACENADO CON PARAMETRO DE ENTRADA PARA LISTAR LAS PERSONAS
QUE PERTENECEN A NATURALES “N” O JURIDICAS “J”.
AL IGUAL QUE EL ANTERIOR PROCEDIMIENTO ESTE APOYA AL MODULO DE REGISTRO DE
PROVEEDORES EN DONDE PODEMOS OBTENER UN LISTADO DE PROVEEDORES O CLIENTES
QUE ESTAN EN UNO DE LOS DOS REGIMENES YA SEA NATURAL O JURIDICO.

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `listarxtipo`(in criterio varchar(1))
BEGIN
select * from tercero where tercero_tipo_pers = criterio;
END
1. FUNCION PARA HALLAR LA GANANCIA DE UN DETERMINADO PRODUCTO.
ESTA FUNCION ES ESENCIAL PARA HALLAR CALCULOS RAPIDOS EN CUANTO A LOS COSTOS Y
LA RELACION DE GANANCIA QUE HAY EN CADA PRODUCTO. ESTA FUNCION SE IMPLEMENTA
EN EL MODULO DE REGISTRO DE PRODUCTOS.

DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `ganancia`(codigo varchar(15)) RETURNS int(11)
DETERMINISTIC
BEGIN
declare gan integer;
select (producto_precio_venta - producto_costo) into gan from producto where
producto_codigo = codigo;
RETURN gan;
END

2. FUNCION PARA HALLAR EL PRECIO MINIMO DE COSTO DE LOS PRODUCTOS INSERTADOS EN


LA TABLE PRODUCTO.
AL IGUAL QUE EL ANTERIOR FUNCION ESTE DETERMINADA EN TIEMPO REAL EL MENOR
PRECIO DE TODOS LOS PRODUCTOS QUE SE REGISTRAN EN LA BASE DE DATOS EN LA TABLA
DE PRODUCTOS. APOYANDO EL MODULO DE REGISTRO DE PRODUCTOS.

DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `MINIMO`() RETURNS int(11)
DETERMINISTIC
BEGIN
DECLARE MINI INTEGER;
SELECT MIN(PRODUCTO_COSTO) INTO MINI FROM PRODUCTO;
RETURN MINI;
END
3. FUNCION PARA DETERMINAR EL PRODUCTO CON EL PRECIO MAS CARO DENTRO DE LA TABLA
PRODUCTO.
ESTA FUNCION DETERMINA EL PRECIO DE VENTA MAS ALTO QUE SE TIENE EN LA BASE DE
DATOS, APOYANDO EL MODULO DE REGISTRO DE PRODUCTOS.

DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `MAXIMO`() RETURNS int(11)
DETERMINISTIC
BEGIN
DECLARE MASCARO INTEGER;
SELECT MAX(PRODUCTO_PRECIO_VENTA) INTO MASCARO FROM PRODUCTO;
RETURN MASCARO;
END

4. FUNCION PARA DETERMINAR LA CANTIDAD DE PERSONAS NATURALES O JURIDICAS Y LA


CANTIDAD DE PROVEEDORES O CLIENTE DEPENDIENDO DEL PARAMETRO INSERTADO.
ESTA FUNCION APOYA AL ELEMENTO DE PROGRAMACION DEL MODULO DE REGISTRO DE
PROVEEDORES O CLIENTE, DONDE PODEMOS DETERMINAR LA CANTIDAD TOTAL DE CUANTAS
PERSONAS ESTAN REGISTRADAS EN LA BASE DE DATOS EN LA PARTE DE PROVEEDORES O
CLIENTES.

DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `contador`(buscar varchar(1)) RETURNS int(11)
DETERMINISTIC
BEGIN
declare total integer;
if buscar = "p" or buscar = "c" then
select count(*) into total from tercero where tercero_tipo = buscar;
end if;
if buscar = "n" or buscar = "j" then
select count(*) into total from tercero where tercero_tipo_pers = buscar;
end if;

RETURN total;
END
DESENCADENADORES – DISPARADORES - TRIGGERS
1. CREAMOS UNA NUEVA TABLA PARA EMPLEAR UN DISPARADOR PARA CUANDO SE
MODIFIQUEN O ACTUALICEN DATOS DE LA TABLA TERCERO.
ESTE TRIGGERS ES MUY IMPORTANTE APOYA AL MODULO DE PROVEEDORES O CLIENTES Y
TIENE COMO FUNCION GUARDAR EL REGISTRO CUANDO SE MODIFICA UN REGISTRO Y ESTE SE
PUEDA RECUPERAR EN UN FUTURO.

CREATE TABLE `audi_tercero` (


`idaudi_tercero` int(11) NOT NULL AUTO_INCREMENT,
`nombre1_ant` varchar(45) DEFAULT NULL,
`nombre2_ant` varchar(45) DEFAULT NULL,
`ape1_ant` varchar(45) DEFAULT NULL,
`ape2_ant` varchar(45) DEFAULT NULL,
`dir_ant` varchar(45) DEFAULT NULL,
`ciu_ant` varchar(45) DEFAULT NULL,
`celu_ant` varchar(15) DEFAULT NULL,
`rsocial_ant` varchar(45) DEFAULT NULL,
`tipoper_ant` varchar(1) DEFAULT NULL,
`tipoter_ant` varchar(1) DEFAULT NULL,
`cargo_ant` varchar(45) DEFAULT NULL,
`nombre1_nw` varchar(45) DEFAULT NULL,
`nombre2_nw` varchar(45) DEFAULT NULL,
`ape1_nw` varchar(45) DEFAULT NULL,
`ape2_nw` varchar(45) DEFAULT NULL,
`dir_nw` varchar(45) DEFAULT NULL,
`ciu_nw` varchar(45) DEFAULT NULL,
`celu_nw` varchar(15) DEFAULT NULL,
`rsocial_nw` varchar(45) DEFAULT NULL,
`tipopers_nw` varchar(1) DEFAULT NULL,
`tipoter_nw` varchar(1) DEFAULT NULL,
`cargo_nw` varchar(45) DEFAULT NULL,
`audi_fecha` datetime DEFAULT NULL,
`audi_usuario` varchar(45) DEFAULT NULL,
`audi_accion` varchar(45) DEFAULT NULL,
`audi_tercero_nit` varchar(15) NOT NULL,
PRIMARY KEY (`idaudi_tercero`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

USE `variedadeslucerito1`;
DELIMITER $$
CREATE DEFINER=`root`@`localhost` TRIGGER tercero_BUPD BEFORE UPDATE ON tercero FOR
EACH ROW
INSERT into audi_tercero (nombre1_ant, nombre2_ant, ape1_ant, ape2_ant,
dir_ant, ciu_ant, celu_ant, rsocial_ant, tipoper_ant, tipoter_ant, cargo_ant,
nombre1_nw, nombre2_nw, ape1_nw, ape2_nw, dir_nw, ciu_nw, celu_nw, rsocial_nw,
tipoper_nw, tipoter_nw, cargo_nw, audi_fecha, audi_usuario, audi_accion, audi_tercero_nit)
values (old.tercero_nombre1, old.tercero_nombre2, old.tercero_apellidos1,
old.tercero_apellidos2,
old.tercero_direccion, old.tercero_ciudad, old.tercero_celular, old.tercero_razon_social,
old.tercero_tipo_pers, old.tercero_tipo, old.tercero_cargo, new.tercero_nombre1,
new.tercero_nombre2, new.tercero_apellidos1, new.tercero_apellidos2,
new.tercero_direccion, new.tercero_ciudad, new.tercero_celular, new.tercero_razon_social,
new.tercero_tipo_pers, new.tercero_tipo, new.tercero_cargo, now(),
current_user(),"Actualizacion", new.tercero_nit)

2. DISPARADOR PARA TABLA PRODUCTO CUANDO SE HAGA ALGUNA MODIFICACION, CREACION


DE TABLA AUDI_PRODUCTO.
ESTE TRIGGERS APOYA AL MODULO DE REGISTRO DE PRODUCTOS Y SE ACTIVA CUANDO SE
HAGA UNA MODIFICACION SOBRE ESTE. PARA ASI PODER RECUPERAR LA INFORMACION
MODIFICADA EN CUALQUIER RESPECTIVO MOMENTO TENIENDO LA OPORTUNIDAD DE LA
INFORMACION ANTES MODIFICADA.

CREATE TABLE `audi_producto` (


`idaudi_producto` int(11) NOT NULL AUTO_INCREMENT,
`nombre_ant` varchar(45) DEFAULT NULL,
`marca_ant` varchar(45) DEFAULT NULL,
`ubica_ant` varchar(45) DEFAULT NULL,
`categ_ant` varchar(45) DEFAULT NULL,
`iva_ant` int(11) DEFAULT NULL,
`un_ant` int(11) DEFAULT NULL,
`costo_ant` int(11) DEFAULT NULL,
`precio_ant` int(11) DEFAULT NULL,
`foto_ant` varchar(15) DEFAULT NULL,
`provee_ant` varchar(15) DEFAULT NULL,
`nombre_nw` varchar(45) DEFAULT NULL,
`marca_nw` varchar(45) DEFAULT NULL,
`ubica_nw` varchar(45) DEFAULT NULL,
`categ_nw` varchar(45) DEFAULT NULL,
`iva_nw` int(11) DEFAULT NULL,
`un_nw` int(11) DEFAULT NULL,
`costo_nw` int(11) DEFAULT NULL,
`precio_nw` int(11) DEFAULT NULL,
`foto_nw` varchar(15) DEFAULT NULL,
`provee_nw` varchar(15) DEFAULT NULL,
`audi_fecha` datetime DEFAULT NULL,
`audi_usuario` varchar(45) DEFAULT NULL,
`audi_accion` varchar(45) DEFAULT NULL,
`audi_producto_codigo` varchar(45) DEFAULT NULL,
PRIMARY KEY (`idaudi_producto`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

USE `variedadeslucerito1`;
DELIMITER $$
CREATE DEFINER=`root`@`localhost` TRIGGER producto_BUPD BEFORE UPDATE ON producto FOR
EACH ROW
INSERT INTO AUDI_PRODUCTO (nombre_ant, marca_ant, ubica_ant, categ_ant, iva_ant,
un_ant, costo_ant, precio_ant, foto_ant, provee_ant, nombre_nw, marca_nw, ubica_nw,
categ_nw, iva_nw, un_nw, costo_nw, precio_nw, foto_nw, provee_nw, audi_fecha,
audi_usuario, audi_accion, audi_producto_codigo)
VALUES (old.producto_nombre, old.producto_marca, old.producto_ubicacion,
old.producto_codigo_categoria,
old.producto_tarifa_iva, old.producto_unidad, old.producto_costo, old.producto_precio_venta,
old.producto_foto, old.producto_proveedor, new.producto_nombre, new.producto_marca,
new.producto_ubicacion, new.producto_codigo_categoria,
new.producto_tarifa_iva, new.producto_unidad, new.producto_costo,
new.producto_precio_venta,
new.producto_foto, new.producto_proveedor, sysdate(), current_user(), "Actualizacion",
new.producto_codigo)

Vous aimerez peut-être aussi