# Reporte Lento Movimiento PT ###### tags: `DataStudio` :::info Query Actual 21/01/2020 (Este presenta repote de lento movimiento pero no cumple con los requerimientos totales por el usuario) ::: --- ## ACCESO A LA BD | | CREDENCIALES | | ----------------- |:----------------------- | | HOST | odoo.raloy.com.mx | | USER | odoo | | PASS | R4l0y.DB | | BD | raloy_productivo | --- - Reporte DataStudio ➜ [Lento Movimiento PT](https://datastudio.google.com/u/2/reporting/1p2R--BGr_vyNl1zprzCbGv3eEz6k4YfG/page/4H3t/edit) --- :::spoiler PUEBAS ::: ```sql= select * from procurement_order ; select * from product_product pp ; select * from product_template pt where default_code in ('P7986','P8822'); ``` :::warning ACTUAL ::: ```sql= SELECT * FROM ( SELECT pp.id, pc3.name AS categoria, CASE WHEN pp2.default_code ISNULL THEN ' --- ' ELSE pp2.default_code END AS ept, pt.default_code AS clave, pt.name AS descripcion, pu.name AS uom, CASE WHEN (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date ISNULL THEN '2018-11-01'::date ELSE (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date END AS fecha, CASE WHEN (now() AT TIME ZONE 'UTC-6')::timestamp::date - (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date ISNULL THEN (now() AT TIME ZONE 'UTC-6')::timestamp::date - '2018-11-01'::date ELSE (now() AT TIME ZONE 'UTC-6')::timestamp::date - (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date END AS s_mov, CASE WHEN (now() AT TIME ZONE 'UTC-6')::timestamp::date - (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date ISNULL THEN TRUNC( ((now() AT TIME ZONE 'UTC-6')::timestamp::date - '2018-11-1'::date)::numeric / 30.41, 2) ELSE TRUNC(((now() AT TIME ZONE 'UTC-6')::timestamp::date - (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date)::numeric / 30.41, 2) END AS s_mov_mes, CASE WHEN (now() AT TIME ZONE 'UTC-6')::timestamp::date - (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date ISNULL THEN 'Obsoleto' ELSE '-----' END AS estado, CASE WHEN t_qty.qty_ ISNULL THEN 0 ELSE t_qty.qty_ END AS inv -- CASE -- WHEN t_qty.costo ISNULL THEN 0 -- ELSE t_qty.costo -- END FROM product_template pt INNER JOIN product_product pp ON pt.id = pp.product_tmpl_id AND pp.default_code LIKE 'P%' INNER JOIN product_uom pu ON pt.uom_id = pu.id INNER JOIN mrp_bom mb ON pp.id = mb.product_id LEFT JOIN mrp_bom_line mbl ON mb.id = mbl.bom_id and mbl.product_uom_id IN ('11', '3') LEFT JOIN product_product pp2 ON mbl.product_id = pp2.id LEFT JOIN product_category pc ON pt.categ_id = pc.id LEFT JOIN product_category pc1 ON pc.parent_id = pc1.id LEFT JOIN product_category pc2 ON pc1.parent_id = pc2.id LEFT JOIN product_category pc3 ON pc2.parent_id = pc3.id INNER JOIN (SELECT stock_pack_operation.product_id AS pid, MAX(sp.date_done) AS fecha FROM stock_pack_operation INNER JOIN stock_picking sp ON stock_pack_operation.picking_id = sp.id AND sp.location_dest_id = 9 --AND sp.picking_type_id IN (4, 125) AND sp.state IN ('done', 'documentado') INNER JOIN stock_picking_type spt ON sp.picking_type_id = spt.id AND code = 'outgoing' GROUP BY stock_pack_operation.product_id ORDER BY fecha DESC) AS last_date ON pp.id = last_date.pid LEFT JOIN (SELECT sq.product_id AS pid, sum(sq.qty) AS qty_, sum(sq.cost) AS costo FROM stock_quant sq WHERE sq.location_id = '15' GROUP BY product_id) AS t_qty ON pp.id = t_qty.pid -- WHERE pt.default_code = 'P4797' ORDER BY pc3.name ASC) moves WHERE s_mov > 120 AND inv > 0.0; ``` ### MOVIMIENTO :::info 23/01/2020 ::: ```sql= SELECT * FROM ( SELECT pp.id, pc3.name AS categoria, CASE WHEN pp2.default_code ISNULL THEN ' --- ' ELSE pp2.default_code END AS ept, pt.default_code AS clave, pt.name AS descripcion, pu.name AS uom, CASE WHEN (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date ISNULL THEN '2018-11-01'::date ELSE (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date END AS fecha, CASE WHEN (now() AT TIME ZONE 'UTC-6')::timestamp::date - (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date ISNULL THEN (now() AT TIME ZONE 'UTC-6')::timestamp::date - '2018-11-01'::date ELSE (now() AT TIME ZONE 'UTC-6')::timestamp::date - (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date END AS s_mov, CASE WHEN (now() AT TIME ZONE 'UTC-6')::timestamp::date - (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date ISNULL THEN TRUNC( ((now() AT TIME ZONE 'UTC-6')::timestamp::date - '2018-11-1'::date)::numeric / 30.41, 2) ELSE TRUNC(((now() AT TIME ZONE 'UTC-6')::timestamp::date - (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date)::numeric / 30.41, 2) END AS s_mov_mes, CASE WHEN (now() AT TIME ZONE 'UTC-6')::timestamp::date - (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date ISNULL THEN 'Obsoleto' ELSE '-----' END AS estado, CASE WHEN t_qty.qty_ ISNULL THEN 0 ELSE t_qty.qty_ END AS inv -- CASE -- WHEN t_qty.costo ISNULL THEN 0 -- ELSE t_qty.costo -- END FROM product_template pt INNER JOIN product_product pp ON pt.id = pp.product_tmpl_id AND pp.default_code LIKE 'P%' INNER JOIN product_uom pu ON pt.uom_id = pu.id INNER JOIN mrp_bom mb ON pp.id = mb.product_id LEFT JOIN mrp_bom_line mbl ON mb.id = mbl.bom_id --and mbl.product_uom_id IN ('11', '3') LEFT JOIN product_product pp2 ON mbl.product_id = pp2.id LEFT JOIN product_category pc ON pt.categ_id = pc.id LEFT JOIN product_category pc1 ON pc.parent_id = pc1.id LEFT JOIN product_category pc2 ON pc1.parent_id = pc2.id LEFT JOIN product_category pc3 ON pc2.parent_id = pc3.id INNER JOIN (SELECT stock_pack_operation.product_id AS pid, MAX(sp.date_done) AS fecha FROM stock_pack_operation INNER JOIN stock_picking sp ON stock_pack_operation.picking_id = sp.id AND sp.location_dest_id = 9 --AND sp.picking_type_id IN (4, 125) --AND sp.state IN ('done', 'documentado') INNER JOIN stock_picking_type spt ON sp.picking_type_id = spt.id --AND code = 'outgoing' GROUP BY stock_pack_operation.product_id ORDER BY fecha DESC) AS last_date ON pp.id = last_date.pid LEFT JOIN (SELECT sq.product_id AS pid, sum(sq.qty) AS qty_, sum(sq.cost) AS costo FROM stock_quant sq WHERE sq.location_id = '15' GROUP BY product_id) AS t_qty ON pp.id = t_qty.pid -- WHERE pt.default_code = 'P4797' ORDER BY pc3.name ASC) moves WHERE s_mov > 120 AND inv > 0.0; ``` :::info EN PRUEBA ::: ```sql= SELECT * FROM ( SELECT pp.id, pc3.name AS categoria, CASE WHEN pp2.default_code ISNULL THEN ' --- ' ELSE pp2.default_code END AS ept, pt.default_code AS clave, pt.name AS descripcion, pu.name AS uom, CASE WHEN (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date ISNULL THEN '2018-11-01'::date ELSE (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date END AS fecha, CASE WHEN (now() AT TIME ZONE 'UTC-6')::timestamp::date - (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date ISNULL THEN (now() AT TIME ZONE 'UTC-6')::timestamp::date - '2018-11-01'::date ELSE (now() AT TIME ZONE 'UTC-6')::timestamp::date - (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date END AS s_mov, CASE WHEN (now() AT TIME ZONE 'UTC-6')::timestamp::date - (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date ISNULL THEN TRUNC( ((now() AT TIME ZONE 'UTC-6')::timestamp::date - '2018-11-1'::date)::numeric / 30.41, 2) ELSE TRUNC(((now() AT TIME ZONE 'UTC-6')::timestamp::date - (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date)::numeric / 30.41, 2) END AS s_mov_mes, CASE WHEN (now() AT TIME ZONE 'UTC-6')::timestamp::date - (last_date.fecha AT TIME ZONE 'UTC-6')::timestamp::date ISNULL THEN 'Obsoleto' ELSE '-----' END AS estado, CASE WHEN t_qty.qty_ ISNULL THEN 0 ELSE t_qty.qty_ END AS inv -- CASE -- WHEN t_qty.costo ISNULL THEN 0 -- ELSE t_qty.costo -- END FROM product_template pt INNER JOIN product_product pp ON pt.id = pp.product_tmpl_id AND pp.default_code LIKE 'P%' INNER JOIN product_uom pu ON pt.uom_id = pu.id INNER JOIN mrp_bom mb ON pp.id = mb.product_id LEFT JOIN mrp_bom_line mbl ON mb.id = mbl.bom_id and mbl.product_uom_id IN ('11', '3') LEFT JOIN product_product pp2 ON mbl.product_id = pp2.id LEFT JOIN product_category pc ON pt.categ_id = pc.id LEFT JOIN product_category pc1 ON pc.parent_id = pc1.id LEFT JOIN product_category pc2 ON pc1.parent_id = pc2.id LEFT JOIN product_category pc3 ON pc2.parent_id = pc3.id INNER JOIN (SELECT stock_pack_operation.product_id AS pid, MAX(sp.date_done) AS fecha FROM stock_pack_operation INNER JOIN stock_picking sp ON stock_pack_operation.picking_id = sp.id AND sp.location_dest_id in (9,15) --AND sp.picking_type_id IN (4, 125) AND sp.state IN ('done', 'documentado') INNER JOIN stock_picking_type spt ON sp.picking_type_id = spt.id AND code = 'outgoing' GROUP BY stock_pack_operation.product_id ORDER BY fecha DESC) AS last_date ON pp.id = last_date.pid LEFT JOIN (SELECT sq.product_id AS pid, sum(sq.qty) AS qty_, sum(sq.cost) AS costo FROM stock_quant sq WHERE sq.location_id in (9,15) GROUP BY product_id) AS t_qty ON pp.id = t_qty.pid -- WHERE pt.default_code = 'P4797' ORDER BY pc3.name ASC) moves WHERE s_mov > 120 AND inv > 0.0; ``` ```sql= select a.id, a.location_stock_id , a.familia_producto , a.nave_fabricacion , a.stock_qty_location AS Cantidad_sistema, a.product_id , a.name, a.product_tmpl_name , a.year_month , a.year_month_2 , a.year_month_3 , a.year_month_4 , a.platform_pieces , a.product_ept_id , a.location_stock_id_name , a.udv , a.product_ept_id , a.product_ept_id_name , a.categ_id , a.package_type , a.product_name , a.tipo_abastecimiento, a.abc_log_error from analisis_productos_abc a where a.stock_qty_location is not null; ``` :::success ultimo ::: ```sql= select a.id, a.location_stock_id , a.familia_producto , a.nave_fabricacion , a.stock_qty_location AS Cantidad_sistema, a.product_id , a.name, a.product_tmpl_name , a.year_month , a.year_month_2 , a.year_month_3 , a.year_month_4 , a.platform_pieces , a.product_ept_id , a.location_stock_id_name , a.udv , a.product_ept_id , a.product_ept_id_name , a.categ_id , a.package_type , a.product_name , a.tipo_abastecimiento, a.abc_log_error from analisis_productos_abc a where a.stock_qty_location is not null and current_count_sales_by_month = 0; ```