You are on page 1of 21

Universidad Nacional de Ingeniera

Recinto Universitario Simn Bolvar


Facultad de Electrotecnia y Computacin
Ingeniera en Computacin
Administradores de Base de Datos

Nombre del Proyecto: Sistema de Control de Inventario de Materia


Prima de Distribuidora el Carmen S.A.

MANUAL
Integrantes:

TCNICO

Liesel Carolina Cruz Contreras 2009-29757


Freddy Ren Escobar Ortz

Docente:

Geovani Senz

Grupo :

4T3 Co.

2009-29731

Base de Datos: Sistema_Inventario_Discarsa


Procedimientos Almacenados:
PROCEDIMIENTO ALMACENADO: Actualizar_Cantidad_Existente

Funcion:

Actualiza la cantidad de materia prima que se est extrayendo


en la tabla existencia.

Parmetros: @Cod_Mat = Codigo de la Materia Prima que se va actualizar


@Cant_Extraida= Cantidad de materia prima que se le va a
restar al registro
Donde

se

utiliza:

Se

usa

en

el

procedimiento

almacenado

de

insertar_salida_material. En la aplicacin esto es cuando el


usuario est registrando una nueva selida de materia prima
Procedimiento Almacenado: Actualizar_Entrada_Materia
Funcion:

Actualiza

el

registro

de

existencia

que

se

est

usando

actualmente cuando se ha extrado toda la cantidad, se carga


un nuevo registro procedente de una Entrada_de Material. Al
mismo tiempo actualiza en la tabla Entrada_Material que el
ultimo registro que se us, ahora pasa a estar AGOTADO.
Parmetros: @Id_Ent_M -> Clave Principal de la Entrada Material que se ha
agotado, la que se va a reemplazar.
@Cantida -> Cantidad que se est extrayendo para restarla en
Entrada_Material.
Donde se utiliza: Lo

usamos

dentro

Insertar_Salida_Material

cuando

del
se

procedimiento
agota

un

registro

de
de

existencia, entonces mandamos a registrar uno nuevo.


Procedimiento Almacenado: Calcular_Costo_Total_De_1Entrada
Objetivo:

Calcular el costo total de una entrada, es decir sumar todos


los costos de sus sub-registros de Materias Primas.

Parmetros: @NoEntrada -> El numero de la entrada de la cual queremos


sumar sus registros.
Donde se utiliza: Lo usamos en la aplicacin, para visualizar los totales
de cada una de las salidas.

Procedimiento Almacenado: Costo_de_Produccion_Insertar


Objetivo:

Insertar un nuevo registro en la tabla Costo_de_Produccion

Parmetros:

Donde se utiliza: En la aplicacin, cuando el usuario registra una nueva hoja de costos.
Procedimiento Almacenado: Costo_Salida_Insertar
Objetivo:

Inserta un nuevo registro en la tabla Costo_Salida

Parmetros: @No_Salida -> Numero de Salida que est relacionado a una


hoja de costos

Donde se utiliza: En la aplicacin para agregar una nueva hoja de costos


Procedimiento Almacenado: Devolucion_Mostrar_Datos_De_1Devolucion
Objetivo:

Sirve para mostrar los subregistros de una Devolucion

Parmetros: @No-> Numero de la devolucion de la cual vamos a conseguir


suus subregistros
Donde se utiliza: En la aplicacin cuando vamos a modificar o eliminar
una DEvolucion, entonces mandamos primero a visualizarla.
Procedimiento Almacenado: Devolucion_Insertar
Objetivo: Inserta un nuevo registro en la tabla Devolucion
Parmetros: @No_Devoluc numeric(5), Nuevo numero de devolucion
@Fecha date,

, Fecha de la devolucion

@No_Op varchar(10)

,Orden de Produccion de la cual se

esta devolviendo material


Donde se utiliza: Cuando se registra una devolucion

Procedimiento Almacenado: Devolucion_Actualizar


Objetivo:

Sirve para actualizar un registro de la tabla devolucion

Parmetros: @Fecha,@No_OP -> Valores a insertar en el registro que tieni


llave princial= NoDev
Procedimiento Almacenado: Devolucion_Eliminar
Objetivo:

Elimina un registro de la Tabla devolucion

Parmetros: @No_Devolucion -> Numero de la devolucion que vamos a


eliminar.
Donde se utiliza: En la aplicacin, para la opcion de eliminar una
devolucion

Procedimiento Almacenado: Devolucion_Material_Actualizar

Objetivo:

Sirve para actualizar un registro de la tabla


devolucion_material

Parmetros: @No_Dev,@Cod_M,@Cant,@Cost. -> Valores a insertar en el


registro que tieni llave fornea= NoDev

Procedimiento Almacenado: Devolucion_Material_Insertar


Objetivo: Insertar un nuevo registro en la tabla Devolucion_Maaterial
Parmetros:@No_Devolucion int, Numero de la devolucion a la que pertenece
@Cod_Materia int, codigo de materi que se est devolviendo
@Cant float,

cantida de materia que se devuelve

@Costo float

el costo de la materia

Donde se utiliza: Cuando se ingresa un nuevo registro de DEvolucion


Material
Procedimiento Almacenado: Devolver_Existencia
Objetivo: Devolver al Registro de Entrada Material una cantidad de
material que se ha devuelto
Parmetros:
@No_OP varchar(20),

Orden de produccion de la cual se devuelve el

material
@Cod_Mat int,

Codigo de material que se devuelve

@Prec float,

precio del material en el momento que fue sacada de

bodega
@Cant float cantidad de material que se devuelve
Donde se utiliza: Cuando registramos una devolucion de materiales
Procedimiento Almacenado: Entrada_Insertar
Objetivo: Inserta un nuevo registro en la tabla Entrada

Parmetros: @No_Entrada numeric(5),

Numero de la entrada

@FecHa date,

Fecha de la entrada

@ID_Proveedor numeric(4) Proveedor al que se le hizo la


compra
Donde se utiliza: Cuando se registra una entrada
Procedimiento Almacenado: Entrada_Material_Insertar
Objetivo: Inserta un nuevo registro en la tabla Entrada_Material,
Verifica si hay registro existente en Existencia, la tabla
que contiene las materias primas de las cuales actualmente se
est extrayendo, si no existe se inserta.
Parmetros: @No_Entrada numeric,

Numero de la entrada

@Cod_Materia numeric,

Coodigo del material que entra

@Costo_Unitario float,

Costo al que entra

@Cantidad float

Cantida qu entra

Donde se utiliza: Cuando se registra una entrada

Procedimiento Almacenado: Get_Cod_Salida


Objetivo:

Consigue todos los codigos de materiales que corresponden a


las salidas de una orden de produccion

Parmetros: @No_OP varchar(20) Numero de la orden de produccion


Donde se utiliza: Cuando el usuario va ingresar devoluciones, sirve para
cargar los codigos de los materiales que salieron.
Procedimiento Almacenado: Get_Materiales_Salida
Objetivo:

Consigue Todos los campos que le interesan al usuario sobre


las salidas de material de una orden de produccion: Codigo de
Materia,Nombre,Presentacion,Cantidad,CostoUnitario,CostoTotal

Parmetros: @No_OP varchar(20) Numero de la orden de produccion


Donde se utiliza: Cuando el usuario va ingresar devoluciones, sirve para
cargar los datos de los materiales que salieron.

Procedimiento Almacenado: GetRequisasFromOP


Objetivo: Consigue todos los numeros de requisa vinculados a una Orden de
Produccion
Parmetros: @No_OP as varchar(50) Numero de la orden de produccion
Donde se utiliza: Cuando el usuario desea ingresar una hoja de costos,
esto le sirve para agregar las requisas de salida que se
usaron
Procedimiento Almacenado: Material_Actualizar
Objetivo:

Actualizar un registro de Material con clave principal=


@Cod_Mat

Parmetros:
@Cod_Mat numeric,
@Nomb varchar(50),
@Pres varchar(10)
Donde se utiliza: Cuando el usuario quiere modificar algun dato de una
materia prima
Procedimiento Almacenado: Material_Buscar
Objetivo:

Procedimiento que busca un Materila a partir de un codigo de


material

Parmetros: @Cod_Mater int


Donde se utiliza: No se usa en la aplicacin
Procedimiento Almacenado: Material_Buscar_Palabra
Objetivo:

Buscar una materia prima que coincida con la palabra que se


recibe como parametro

Parmetros: @Palabra as varchar(30) ->Palabra que coincide con el nombre


de un material
Donde se utiliza: No se usa en la aplicacion
Procedimiento Almacenado: Material_Buscar_Por_Inicial

Objetivo:

Procedimiento que busca los materiales cuyo nombre comience


con un a letra que recibe.

Parmetros: @Letra_Inicio as varchar -> Letra con la que empieza el


material
Donde se utiliza:No se usa en la aplicacin

Procedimiento Almacenado:

Materia_Buscar_Presentacin

Objetivo:Procedimiento almacenado que busca todos los materiales con


presetacion igual al parametro que recibe.
Parmetros: @Present
Donde se utiliza:No se utiliza
Procedimiento Almacenado: Material_Buscar_Rango
Objetivo:Procedimiento que busca todos los materiales que tienen codigo
de materia entre un rango recibido, se reciben dos variables
@Cod_Mater_From y @Cod_Mater_To que son los rangos.
Parmetros: @Cod_Mater_From int, Rango Menor
@Cod_Mater_To int

Rango Mayor

Donde se utiliza: no se usa en la aplicacin


Procedimiento Almacenado: Material_Eliminar
Objetivo:

Elimina un registro de la Tabla Material

Parmetros: @Cod -> Numero de material que vamos a eliminar.


Donde se utiliza: En la aplicacin, para la opcion de eliminar un
material

Procedimiento Almacenado: Material_Insertar


Objetivo: Inserta un nuevo registro en la tabla Material
Parmetros: @Cod integer,
@Nomb varchar(100),

Codigo del MAterial


Nombre del material

@Presentacion varchar(10)

Presentaicon del material

Donde se utiliza: Cuando se registr un Material


Procedimiento Almacenado: Material_Mostrar_Entradas_De_Uno_Por_Fechas
Objetivo: Muestra todas las entradas de una materia prima en un rango de
fecha
Parmetros:
@Cod_Materia numeric,

Materia prima que se quiere visualizar

@fecha1 datetime,

Rango de Fecha Minimo

@fecha2 datetime

Rango de Fecha Mximo

Donde se utiliza: En la parte de visualizacion. Cuando el usuario quiera


ver un reporte.

Procedimiento almacenado: Materia_Buscar_Presentacin


Objetivo:

Procedimiento almacenado que busca todos los materiales que


son bolsas.

Parmetros: No recibe parametros


Donde se utiliza: En la parte de visualizcin-Reportes
Procedimiento almacenado: Materia_Buscar_Presentacin
Objetivo:

Procedimiento almacenado que busca todos los materiales que t


tengan la presentacion recibida

Prmetros: @Presentacion

Donde se utiliza: En la parte de visualizcin-Reportes

Procedimiento almacenado: Material_Ver_Etiquetas_BolsasPapel


Objetivo:

Procedimiento almacenado que busca todos los materiales cuyo


Que sean bolsas de apel

Prmetros: no recibe.
Donde se utiliza: En la parte de visualizcin-Reportes

Procedimiento almacenado: Material_Visualizar

Objetivo:Procedimiento que visualiza la tabla Material con todos sus


campos
Parmetros:No recibe
Donde se utiliza: En la parte de visualizcin-Reportes
Procedimiento almacenado: Orden_Produccion_Actualizar
Objetivo: Sirve para actualizar un registro de la tabla Orden_Produccion
con una llave principal = @No_OP
Parmetros: @No_OP varchar(10),

codigo de orden

@Lot varchar(50),

codigo de lote

@Prod varchar(100)

producto a elaborar

Donde se utiliza: Para modifiar una orde de produccion existente

Procedimiento Almacenado: Orden_Produccion_Insertar

Objetivo: Inserta un nuevo registro en la tabla Orden_Produccion


Parmetros: @No_OP varchar(10),

codigo de orden

@Lot varchar(50),

codigo de lote

@Prod varchar(100)

producto a elaborar

Donde se utiliza: Cuando se registra una Orden de Produccion

Procedimiento almacenado:
Orden_Produccion_Mostrar_Datos_De_1OdenProduccion

Objetivo:Procedimiento que visualiza un Registro de la tabla


Orden_Produccion con todos sus campos
Parmetros:@No -> Codigo de la orden de produccion que se quiere
visualizar
Donde se utiliza: En la parte de visualizcin-Reportes

Procedimiento Almacenado:
Objetivo:

Producto_Terminado_Actualizar

Actualizar un registro de Producto_Terminado con clave


principal= @Cod_Prod

Parmetros:
@Cod_Prod numeric,
@Nomb varchar(50),
@Pres varchar(10)
Donde se utiliza: Cuando el usuario quiere modificar algun dato de un
producto terminado
Procedimiento Almacenado:
Producto_Terminado_Mostrar_Datos_1ProductoTerminado

Objetivo:Procedimiento que visualiza un Registro de la tabla


ProductoTerminado con todos sus campos

Parmetros:@Codigo -> Codigo del producto terminado que se quiere


visualizar
Donde se utiliza: En la parte de visualizcin-Reportes

Procedimiento Almacenado: Proveedor_Actualizar


Objetivo:

Procedimiento que actualiza todos los campos de un registro


a partir de su clave principal

Parmetro:

@Id_prov int,

Clave Principal del Proveedor

@Nomb varchar(50),

Nombre del Proveedor

@Pro varchar(50)

Nombre del Propietario del Proveedor

Donde se utiliza: Cundo el usuario quiere modificar la informacion de un


proveedor

Procedimiento Almacenado: Proveedor_Actulizar_Ubicacion


Objetivo:

Procedimiento que actualiza todos los campos de un registro


De la ubicaion del proveedor a partir de su clave principal

Parmetro:

@ID numeric(5) ,

Identificador del proveedor

@NuevaDireccion varchar (50), Nuevos datos


@NuevoPais varchar (15),
@NuevoCiudad varchar (15)
Donde se utiliza: Cundo el usuario quiere modificar la informacion de un
proveedor

Procedimiento Almacenado:
Proveedor_Mostrar_Entradas_Por_Un_Proveedor_En_Fechas]
Objetivo:

Procedimiento que muestra todas las compras hechas a un

proveedor en un rango de fechas recibido

Parametros:
@IDP AS numeric,

Proveedor

@FECHA1 AS DATE,

Fecha minimo

@FECHA2 AS DATE

Fecha maximo

Donde se utiliza: En la parte de visualizcin-Reportes


Procedimiento Almacenado:
Proveedor_Mostrar_Entradas_Por_Un_Proveedor_Ulitmos_15Dias
Objetivo: Procedimiento que nos visualiza las entradas de un proveedor de
los ultmos 15 dias
Parmetros: @IdProveedor numeric id del proveedor
Donde se utiliza: En la parte de visualizcin-Reportes

Procedimiento Almacenado: Salida_Insertar


Objetivos:

Inserta un registro en la tabla Salida

Parmetros: @No_Salida int,

Id de la Salida

@Fecha date,

Fecha de la Salida

@No_OP varchar(20)

Numero de orden de produccio que


solicita la salida

Donde se utiliza: Cuando el usuario esta registrando una salida de


material
Procedimiento Almacenado: Salida_Material_Insertar
Objetivos: Procedimiento de vital importancia en nuestro sistema, es el
que guarda las salidas de materia prima y les asigna es costo unitario a
los materiales de acuerdo al costo de existencia actual
Parmetros: @No_Salida NUMERIC, Numero de salida vinculada
@Cod_Mat NUMERIC,
@Cantidad NUMERIC,

Material que se esta sacando


Cantidad de material extrado

@Descripcion varchar(30)

si el material es para

produccion o para limpieza del laboratorio


Donde se utiliza: Cuando el usuario est registrando una nueva salida de
material.

Procedimeinto Almacenado: Ubicacion_Get


Objetivos:

Consigue la ubicacin de un proveedor, en tres campos,


Pais,Ciudad,Direccion

Parmetros: @IdProv as bigint Identificador del Proveedor


Donde se utiliza: En la opcion de modificar

y eliminar proveedor

Para visualizar antes de eliminar.


Procedimeinto Almacenado:SP_GetFecha_From_Entrada
Objetivos:

Consigue la fecha de una entrada de material

Parmetros: @Cod_Entra numeric Codigo de la entrada que se desea obtener


la fecha
Donde se utiliza: Cuando estamos consiguendo la entrada con la fecha mas
anterior y asi hacer que ese material salga antes que los que
tienen fecha mas reciente.

Cursores:
Cursor: Cursor_CambiarPresentacion
Objetivo del Cursor:

Modificar una Presentacion deseada por otra en toda

la tabla de materiales
Instruccin Select:
select Cod_Materia,Presentacion
from Material
where Presentacion=@Presentacion_Actual
Actualizacion del Registro:
update Material
set Presentacion =@Presentacion_Nueva
where Cod_Materia =@Cod_Materia
Donde

se utiliza: En la Tabla Material, cuando el proveedor quiere hacer

le cambio explicado en el objetivo del cursor.


Cursor: Cursor_Entradas_Dolares
Objetivo del Cursor: Cursor para mostrar las entradas
de materia prime segun el tipo de cambio actual, el cual debe
ser especificado
Instruccin Select:
select Entrada.No_Entrada,Entrada_Material .Costo_Unitario
,Material.Nombre
from Material inner join Entrada_Material on MAterial.Cod_Materia
=Entrada_Material .Cod_Materia
inner join Entrada on Entrada_Material .No_Entrada
=Entrada.No_Entrada
Impresin en Pantalla:
set @Costo_Dolar=
print
print
print
print
print
print
print
print
print

@Costo_Unit/@Tipo_Cambio;
'Entrada: '
@No_Ent
'Material: '
@Nombre
'Costo_Cordoba:'
@Costo_Unit
'Costo_Dolar:'
@Costo_Dolar
'---------------------------------------------'

Cursor: Cursor_Imprime_Proveedores
Objetivo del Cursor:

Imprime informacion de los Proveedores con sus

Proppietarios
Instruccin Select:
declare Cursor_Proveedores cursor for
select P.Nombre,P.Propietario,U.Direccion
from Proveedor P inner join Ubicacion U on P.ID_Proveedor=U.ID_Proveedor
Impresin:
open Cursor_Proveedores
fetch next from Cursor_Proveedores
into @Nomb,@Propie,@Dir
while @@FETCH_STATUS =0
begin
print 'El Proveedor: '+@Nomb+' con propietario ' +@Propie +'
est ubicado en ' +@Dir
fetch next from Cursor_Proveedores
into @Nomb,@Propie,@Dir
end

Cursor: Cursor_Modificar_Telefono
Objetivo del Cursor:

Procedimiento que usa un cursor para modificar los

registros de la tabla Telefonos, para agregar algun nuevo digito, o un


nuevo codigo de rea a los numeros de telefono de un pas.
Instruccin Select:
declare cursor_telefono cursor for
select P.ID_Proveedor,T.ID_Tel,T.No_Telefono
from Ubicacion F inner join Proveedor P on F.ID_Proveedor
=P.ID_Proveedor inner join Telefonos T on P.ID_Proveedor =T.ID_Proveedor
where F.Pais =@Pais
Actualizacion del Registro:
while @@FETCH_STATUS =0
begin
set @Tel_char = Cast(@Agregar as varchar(5)) + CAST (@No_Tel
as varchar(12))
update Telefonos
set No_Telefono = CAST (@Tel_char as bigint)
where ID_Tel = @ID_Tel
fetch next from cursor_telefono
into @ID_Prov,@ID_Tel,@No_Tel
end

Triggers:
Trigger: TR_Entrada
Objetivo: Copiar en otra tabla los registros originales cuando se elimine
o actualice en la tabala entrada.
Donde se utiliza:

En la tabla entrada, cuando se va elimnar o actualizar

registros de la tabla
Instrucciones:
after delete,update -> para especificar cuando se va desencadenar la
accion
set nocount on
insert into DEL_Entrada (No_Entrada ,ID_Proveedor ,Fecha )
Insertamos en la tabla de Respaldo
select No_Entrada,ID_Proveedor,Fecha / seleccionamos los valores de
la tabla deleted(tabla del sistema)
from deleted
Trigger: TR_Entrada_Material
Objetivo: Copiar en otra tabla los registros originales cuando se elimine
o actualice en la tabala entrada_material
Donde se utiliza:

En la tabla entrada_material, cuando se va elimnar o

actualizar registros de la tabla


Instrucciones:
after delete,update -> para especificar cuando se va desencadenar la
accion
insert into DEL_Entrada_Material /Insertamos en tabla de respaldo
(No_Entrada,Cod_Materia,Costo_Unitario,Cantidad,Estado)
/Seleccionamos los valores de la tabla deleted(tabla del sistema)
select No_Entrada,Cod_Materia,Costo_Unitario,Cantidad_TOTAL ,Estado
from deleted

Trigger: TR_Salida
Objetivo: Copiar en otra tabla los registros originales cuando se elimine
o actualice en la tabala salida.
Donde se utiliza:

En la tabla salida, cuando se va elimnar o actualizar

registros de la tabla
Instrucciones:
after delete,update -> para especificar cuando se va desencadenar la
accion
insert into DEL_Salida(No_Salida,Fecha,No_OP) /insertamos en tabla de
respaldo
select No_Salida,Fecha,No_OP /seleccionamos los valores de la tabla
deleted(tabla del sistema)
from deleted
Trigger: TR_Salida_Material
Objetivo: Copiar en otra tabla los registros originales cuando se elimine
o actualice en la tabala salida_material
Donde se utiliza:

En la tabla salida_material, cuando se va elimnar o

actualizar registros de la tabla


Instrucciones:
after delete,update -> para especificar cuando se va desencadenar la
accion
insert into
DEL_Salida_Material(No_Salida,No_Entrada,Cod_Materia,Costo_Unitario,Canti
dad,Descripcion) /Insertamos en una tabla de respaldo
select No_Salida,ID_Entrada
,Cod_Materia,Costo_Unitario,Cantidad,Descripcion
from deleted /seleccionamos los datos de la tabla deleted(tabla del
sistema)

Trigger: TR_Seguridad_Entrada
Objetivo: Restringir las operacions de Insertar,Modificar,Eliminar de la
tabla Entrada
Donde se usa: En la tabla entrada, cuando el usuario quiere ingresar un
nuevo registro y no tiene permisos.
Instrucciones:
Create trigger [dbo].[TR_Seguridad_Entrada]
on [dbo].[Entrada]->Especificamos la tabla
after insert,delete,update
->Especificamos las operaiciones
as
begin
set nocount on
RAISERROR('No Puedes Ingresar Datos en la Tabla Entrada',16,1)
/Mensaje de error
ROLLBACK TRANSACTION /Cancelamos la transaccion
end
Trigger: TR_Seguridad_Entrada_Material
Objetivo: Restringir las operacions de Insertar,Modificar,Eliminar de la
tabla Entrada_Material
Donde se usa: En la tabla entrada_material, cuando el usuario quiere
ingresar un nuevo registro y no tiene permisos.
Instrucciones:
Create trigger [dbo].[TR_Seguridad_Entrada_Material]
on [dbo].[Entrada_Material]->Especificamos la tabla
after insert,delete,update
->Especificamos las operaiciones
as
begin
set nocount on
RAISERROR('No Puedes Ingresar Datos en la Tabla
Entrada_Material',16,1) /Mensaje de error
ROLLBACK TRANSACTION /Cancelamos la transaccion
End

Vistas:
Vista:

Materiales

Objetivo: Mostrar todos los registros con todos los campos de la tabla
materiales
Donde se usa: Para crear un Reporte de Materiales

Vista:

Productos_Terminados

Objetivo: Mostrar todos los registros con todos los campos de la tabla
productos terminados
Donde se usa: Para crear un Reporte de Productos Terminados
Vista:

Proveedores

Objetivo:
proveedor

Mostrar todos los registros con todos los campos de la tabla

Donde se usa: Para crear un Reporte de Proveedores

Vista:

Hoja de Costos

Objetivo:

Mostrar los registros que componen una hoja de costos

Donde se usa: Para crear un Reporte de Hoja de Costos


Tablas que utiliza:
Costo_de_Procuccion,Costos_Salidas,Orden_Produccion,Salida,Producto_Termi
nado

Vista:

Salidas Material

Objetivo:

Mostrar los registros que componen una requisa de salida

Donde se usa: Para crear un Reporte de Requisa de Salida


Tablas que utiliza: Orden_Produccion,Salida,Salida_Material,Material
Vista:

Entradas_Materiales

Objetivo:

Mostrar los registros que componen una requisa de entrada

Donde se usa: Para crear un Reporte de Requisa de Entrada

Tablas que utiliza: Proveedor,Entrada,Entrada_Material,Material


Vista:

Devoluciones_Material

Objetivo:

Mostrar los registros que componen una Devolucion de Material

Donde se usa: Para crear un Reporte de Devoluciones


Tablas que utiliza:
Orden_Produccion,Devolucion,DEvolucion_Material,Material