jueves, 23 de febrero de 2012
Validar cuentas contables de los productos
/*
Este script SQL ayuda a los contadores a validar con mayor facilidad
las cuentas contables asignadas a cada producto
*/
-- Tabla temporal para los productos
drop table if exists tmp_productos;
-- Tablas temporales para las cuentas contables de un producto
drop table if exists tmp_inventario_producto;
drop table if exists tmp_ajustar_costo;
drop table if exists tmp_cogs_producto;
drop table if exists tmp_variacion_precio;
drop table if exists tmp_variancia_costo;
drop table if exists tmp_descuento_recibido;
drop table if exists tmp_ingresos_producto;
drop table if exists tmp_costos_producto;
-- Tabla temporal para mostrar el resultado
drop table if exists tmp_contabilidad_productos;
-- Total de productos ubicados por almacenes
select
l.m_locator_id cod_ubicacion,
l.value ubicacion,
w.m_warehouse_id cod_almacen,
w.name almacen,
p.*
into tmp_productos
from m_product p
join m_locator l
on p.m_locator_id = l.m_locator_id
join m_warehouse w
on l.m_warehouse_id = w.m_warehouse_id
where p.ad_client_id = 1000000;
/******************************************************************************/
-- Cuentas contables que deben tener los productos
-- Inventario de Producto
select
ev.c_elementvalue_id id_cuenta,
ev.value codigo_cuenta,
ev.name nombre_cuenta,
p.*
into tmp_inventario_producto
from tmp_productos p
join m_product_acct pc
on p.m_product_id = pc.m_product_id
join c_validcombination vc
on pc.p_asset_acct = vc.c_validcombination_id
join c_elementvalue ev
on vc.account_id = ev.c_elementvalue_id
where ev.ad_client_id = 1000000;
-- Ajustar Costo
select
ev.c_elementvalue_id id_cuenta,
ev.value codigo_cuenta,
ev.name nombre_cuenta,
p.*
into tmp_ajustar_costo
from tmp_productos p
join m_product_acct pc
on p.m_product_id = pc.m_product_id
join c_validcombination vc
on pc.p_costadjustment_acct = vc.c_validcombination_id
join c_elementvalue ev
on vc.account_id = ev.c_elementvalue_id
where ev.ad_client_id = 1000000;
-- COGS del Producto
select
ev.c_elementvalue_id id_cuenta,
ev.value codigo_cuenta,
ev.name nombre_cuenta,
p.*
into tmp_cogs_producto
from tmp_productos p
join m_product_acct pc
on p.m_product_id = pc.m_product_id
join c_validcombination vc
on pc.p_cogs_acct = vc.c_validcombination_id
join c_elementvalue ev
on vc.account_id = ev.c_elementvalue_id
where ev.ad_client_id = 1000000;
-- Variacion Precio de OC
select
ev.c_elementvalue_id id_cuenta,
ev.value codigo_cuenta,
ev.name nombre_cuenta,
p.*
into tmp_variacion_precio
from tmp_productos p
join m_product_acct pc
on p.m_product_id = pc.m_product_id
join c_validcombination vc
on pc.p_purchasepricevariance_acct = vc.c_validcombination_id
join c_elementvalue ev
on vc.account_id = ev.c_elementvalue_id
where ev.ad_client_id = 1000000;
-- Variancia Costo Promedio
select
ev.c_elementvalue_id id_cuenta,
ev.value codigo_cuenta,
ev.name nombre_cuenta,
p.*
into tmp_variancia_costo
from tmp_productos p
join m_product_acct pc
on p.m_product_id = pc.m_product_id
join c_validcombination vc
on pc.p_averagecostvariance_acct = vc.c_validcombination_id
join c_elementvalue ev
on vc.account_id = ev.c_elementvalue_id
where ev.ad_client_id = 1000000;
-- Descuento Comercial Recibido
select
ev.c_elementvalue_id id_cuenta,
ev.value codigo_cuenta,
ev.name nombre_cuenta,
p.*
into tmp_descuento_recibido
from tmp_productos p
join m_product_acct pc
on p.m_product_id = pc.m_product_id
join c_validcombination vc
on pc.p_tradediscountrec_acct = vc.c_validcombination_id
join c_elementvalue ev
on vc.account_id = ev.c_elementvalue_id
where ev.ad_client_id = 1000000;
-- Ingresos Producto
select
ev.c_elementvalue_id id_cuenta,
ev.value codigo_cuenta,
ev.name nombre_cuenta,
p.*
into tmp_ingresos_producto
from tmp_productos p
join m_product_acct pc
on p.m_product_id = pc.m_product_id
join c_validcombination vc
on pc.p_revenue_acct = vc.c_validcombination_id
join c_elementvalue ev
on vc.account_id = ev.c_elementvalue_id
where ev.ad_client_id = 1000000;
-- Costos o Gastos Producto
-- NOTA: Esta cuenta contable solamente aplica para los productos terminados para la venta
select
ev.c_elementvalue_id id_cuenta,
ev.value codigo_cuenta,
ev.name nombre_cuenta,
p.*
into tmp_costos_producto
from tmp_productos p
join m_product_acct pc
on p.m_product_id = pc.m_product_id
join c_validcombination vc
on pc.p_expense_acct = vc.c_validcombination_id
join c_elementvalue ev
on vc.account_id = ev.c_elementvalue_id
where ev.ad_client_id = 1000000;
/******************************************************************************/
select
p.almacen almacen,
p.value codigo_producto,
p.name nombre_producto,
coalesce((select t.codigo_cuenta from tmp_inventario_producto t
where t.m_product_id = p.m_product_id), null) cod_inventario_producto,
coalesce((select t.nombre_cuenta from tmp_inventario_producto t
where t.m_product_id = p.m_product_id), null) inventario_producto,
coalesce((select t.codigo_cuenta from tmp_ajustar_costo t
where t.m_product_id = p.m_product_id), null) cod_ajustar_costo,
coalesce((select t.nombre_cuenta from tmp_ajustar_costo t
where t.m_product_id = p.m_product_id), null) ajustar_costo,
coalesce((select t.codigo_cuenta from tmp_cogs_producto t
where t.m_product_id = p.m_product_id), null) cod_cogs_producto,
coalesce((select t.nombre_cuenta from tmp_cogs_producto t
where t.m_product_id = p.m_product_id), null) cogs_producto,
coalesce((select t.codigo_cuenta from tmp_variacion_precio t
where t.m_product_id = p.m_product_id), null) cod_variacion_precio,
coalesce((select t.nombre_cuenta from tmp_variacion_precio t
where t.m_product_id = p.m_product_id), null) variacion_precio,
coalesce((select t.codigo_cuenta from tmp_variancia_costo t
where t.m_product_id = p.m_product_id), null) cod_variancia_costo,
coalesce((select t.nombre_cuenta from tmp_variancia_costo t
where t.m_product_id = p.m_product_id), null) variancia_costo,
coalesce((select t.codigo_cuenta from tmp_descuento_recibido t
where t.m_product_id = p.m_product_id), null) cod_descuento_recibido,
coalesce((select t.nombre_cuenta from tmp_descuento_recibido t
where t.m_product_id = p.m_product_id), null) descuento_recibido,
coalesce((select t.codigo_cuenta from tmp_ingresos_producto t
where t.m_product_id = p.m_product_id), null) cod_ingresos_producto,
coalesce((select t.nombre_cuenta from tmp_ingresos_producto t
where t.m_product_id = p.m_product_id), null) ingresos_producto,
coalesce((select t.codigo_cuenta from tmp_costos_producto t
where t.m_product_id = p.m_product_id), null) cod_costos_producto,
coalesce((select t.nombre_cuenta from tmp_costos_producto t
where t.m_product_id = p.m_product_id), null) costos_producto
into tmp_contabilidad_productos
from tmp_productos p
order by
p.almacen,
p.name;
select cp.* from tmp_contabilidad_productos cp;
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario