Hola NickName:
Tengo yo realizo el proceso de costear el inventario de un almacen de la siguiente manera: en una tabla tengo los datos de la compra y en otro los de la venta(cabeceras), cada una con su respectiva tabla de detalles. Es con las tablas de detalles con las q trabajo. En la tabla detalles de compras es donde guardo el precio de compra, y en la tabla detalles de ventas el precio de venta.
Luego lo q hago es mediante vistas, unir los datos de la cabecera(fecha, proveedor/cliente, id_articulo, precio compra, precio venta). Una vista para lo q es compras y otra para lo q es ventas.
De ahi uno las dos vistas mandando el rango de fechas q desea procesar y voy realizando el costo de inv. Todo esto ultimo en un procedimiento almacenado:
Aqui te envio el procedimiento:
Código SQL
[-]
create procedure costeo_articulo(codart, fecini, fecfin)
results(tipo, fecha, proveed_cliente, cantidad, precio, total, precio_costo)
for select tipo, fecha,
from (
select 'C' tipo, fecha, proveedor proveed_cliente, cantidad, precio_compra
from vista_compras
where codart=:codart and fecha between :fecini and :fecfin
union all
select 'V' tipo, fecha, cliente proveed_cliente, cantid, precio_venta
from vista_ventas
where codart=:codart and fecha between :fecini and :fecfin
)
order by fecha
into :tipo, :fecha, roveed_cliente, :cantidad, recio do
begin
total = recio * :cantidad;
if (:tipo = 'C') then
precio_costo = :cantidad/recio;
else
total = recio_costo * :cantidad;
suspend;
end
Si revisas el codigo el procedimiento realiza el proceso de costeo por articulo
q lo puedes anexar a otro procedimeinto para poder sacar el costeo de todos los articulos
Espero te sirva.
Saludos