-- View: public.view_stq_ficha_estoque -- DROP VIEW public.view_stq_ficha_estoque; CREATE OR REPLACE VIEW public.view_stq_ficha_estoque AS SELECT stq_mov_estoque.filial_mov, stq_mov_estoque.sequencial, stq_mov_estoque.filial_origem, stq_mov_estoque.filial_destino, stq_mov_estoque.almox_origem, stq_mov_estoque.almox_destino, stq_mov_estoque.filial_pro, stq_mov_estoque.produto, stq_mov_estoque.unidade_mvto, stq_mov_estoque.data_movimento, stq_mov_estoque.hora_movimento, stq_mov_estoque.filial_usu, stq_mov_estoque.usuario, stq_mov_estoque.filial_for, stq_mov_estoque.fornecedor, stq_mov_estoque.filial_cli, stq_mov_estoque.cliente, stq_mov_estoque.filial_nota_sai, stq_mov_estoque.nota_saida, stq_mov_estoque.filial_nota_ent, stq_mov_estoque.nota_entrada, stq_mov_estoque.vlr_custo, stq_mov_estoque.vlr_bruto, stq_mov_estoque.vlr_medio, stq_mov_estoque.vlr_servico, stq_mov_estoque.peso, stq_mov_estoque.seq_item_pedido, stq_mov_estoque.filial_vend, stq_mov_estoque.vendedor, stq_mov_estoque.filial_inv, stq_mov_estoque.inventario, stq_mov_estoque.observacao, stq_mov_estoque.nr_documento, stq_mov_estoque.serie, stq_mov_estoque.tipo_documento, stq_mov_estoque.data_acao, stq_mov_estoque.hora_acao, stq_mov_estoque.tipo_movimento, bas_tipo_mov.descricao, bas_tipo_mov.operacao, stq_mov_estoque.quantidade, COALESCE((COALESCE(stq_saldo_estoque.quantidade, 0.000000) + (( SELECT COALESCE(sum(mv_stq_ent.quantidade), 0.000000) AS "coalesce" FROM (stq_mov_estoque mv_stq_ent LEFT JOIN bas_tipo_mov tp_mov_ent ON ((tp_mov_ent.codigo = mv_stq_ent.tipo_movimento))) WHERE ((mv_stq_ent.filial_mov = stq_mov_estoque.filial_mov) AND (mv_stq_ent.almox_origem = stq_mov_estoque.almox_origem) AND (mv_stq_ent.filial_pro = stq_mov_estoque.filial_pro) AND (mv_stq_ent.produto = stq_mov_estoque.produto) AND (mv_stq_ent.sequencia_lote = stq_mov_estoque.sequencia_lote) AND (mv_stq_ent.data_movimento = stq_mov_estoque.data_movimento) AND (mv_stq_ent.sequencial < stq_mov_estoque.sequencial) AND ((tp_mov_ent.operacao)::text = 'E'::text))) - ( SELECT COALESCE(sum(mv_stq_sai.quantidade), 0.000000) AS "coalesce" FROM (stq_mov_estoque mv_stq_sai LEFT JOIN bas_tipo_mov tp_mov_sai ON ((tp_mov_sai.codigo = mv_stq_sai.tipo_movimento))) WHERE ((mv_stq_sai.filial_mov = stq_mov_estoque.filial_mov) AND (mv_stq_sai.almox_origem = stq_mov_estoque.almox_origem) AND (mv_stq_sai.filial_pro = stq_mov_estoque.filial_pro) AND (mv_stq_sai.produto = stq_mov_estoque.produto) AND (mv_stq_sai.sequencia_lote = stq_mov_estoque.sequencia_lote) AND (mv_stq_sai.data_movimento = stq_mov_estoque.data_movimento) AND (mv_stq_sai.sequencial < stq_mov_estoque.sequencial) AND ((tp_mov_sai.operacao)::text = 'S'::text))))), (0)::numeric) AS saldo_anterior, COALESCE((COALESCE(stq_saldo_estoque.quantidade, 0.000000) + (( SELECT COALESCE(sum(mv_stq_ent.quantidade), 0.000000) AS "coalesce" FROM (stq_mov_estoque mv_stq_ent LEFT JOIN bas_tipo_mov tp_mov_ent ON ((tp_mov_ent.codigo = mv_stq_ent.tipo_movimento))) WHERE ((mv_stq_ent.filial_mov = stq_mov_estoque.filial_mov) AND (mv_stq_ent.almox_origem = stq_mov_estoque.almox_origem) AND (mv_stq_ent.filial_pro = stq_mov_estoque.filial_pro) AND (mv_stq_ent.produto = stq_mov_estoque.produto) AND (mv_stq_ent.data_movimento = stq_mov_estoque.data_movimento) AND (mv_stq_ent.sequencial <= stq_mov_estoque.sequencial) AND (mv_stq_ent.sequencia_lote = stq_mov_estoque.sequencia_lote) AND ((tp_mov_ent.operacao)::text = 'E'::text))) - ( SELECT COALESCE(sum(mv_stq_sai.quantidade), 0.000000) AS "coalesce" FROM (stq_mov_estoque mv_stq_sai LEFT JOIN bas_tipo_mov tp_mov_sai ON ((tp_mov_sai.codigo = mv_stq_sai.tipo_movimento))) WHERE ((mv_stq_sai.filial_mov = stq_mov_estoque.filial_mov) AND (mv_stq_sai.almox_origem = stq_mov_estoque.almox_origem) AND (mv_stq_sai.filial_pro = stq_mov_estoque.filial_pro) AND (mv_stq_sai.produto = stq_mov_estoque.produto) AND (mv_stq_sai.data_movimento = stq_mov_estoque.data_movimento) AND (mv_stq_sai.sequencial <= stq_mov_estoque.sequencial) AND (mv_stq_sai.sequencia_lote = stq_mov_estoque.sequencia_lote) AND ((tp_mov_sai.operacao)::text = 'S'::text))))), (0)::numeric) AS saldo_atual, COALESCE(COALESCE(stq_saldo_estoque.vlr_estoque, 0.000000)) AS saldo_anterior_vlr_estoque, COALESCE((COALESCE(stq_saldo_estoque.vlr_estoque, 0.000000) + (( SELECT COALESCE(sum( CASE WHEN (mv_stq_ent.tipo_movimento <> 1) THEN trunc((mv_stq_ent.vlr_custo * mv_stq_ent.quantidade), 2) ELSE round((mv_stq_ent.vlr_custo * mv_stq_ent.quantidade), 2) END), 0.000000) AS "coalesce" FROM (stq_mov_estoque mv_stq_ent LEFT JOIN bas_tipo_mov tp_mov_ent ON ((tp_mov_ent.codigo = mv_stq_ent.tipo_movimento))) WHERE ((mv_stq_ent.filial_mov = stq_mov_estoque.filial_mov) AND (mv_stq_ent.almox_origem = stq_mov_estoque.almox_origem) AND (mv_stq_ent.filial_pro = stq_mov_estoque.filial_pro) AND (mv_stq_ent.produto = stq_mov_estoque.produto) AND (mv_stq_ent.data_movimento = stq_mov_estoque.data_movimento) AND (mv_stq_ent.sequencial < stq_mov_estoque.sequencial) AND ((tp_mov_ent.operacao)::text = 'E'::text))) - ( SELECT COALESCE(sum( CASE WHEN (mv_stq_sai.tipo_movimento <> ALL (ARRAY[1, 2])) THEN trunc((mv_stq_sai.vlr_custo * mv_stq_sai.quantidade), 2) ELSE round((mv_stq_sai.vlr_custo * mv_stq_sai.quantidade), 2) END), 0.000000) AS "coalesce" FROM (stq_mov_estoque mv_stq_sai LEFT JOIN bas_tipo_mov tp_mov_sai ON ((tp_mov_sai.codigo = mv_stq_sai.tipo_movimento))) WHERE ((mv_stq_sai.filial_mov = stq_mov_estoque.filial_mov) AND (mv_stq_sai.almox_origem = stq_mov_estoque.almox_origem) AND (mv_stq_sai.filial_pro = stq_mov_estoque.filial_pro) AND (mv_stq_sai.produto = stq_mov_estoque.produto) AND (mv_stq_sai.data_movimento = stq_mov_estoque.data_movimento) AND (mv_stq_sai.sequencial < stq_mov_estoque.sequencial) AND ((tp_mov_sai.operacao)::text = 'S'::text))))), (0)::numeric) AS saldo_valor_anterior, CASE WHEN ((COALESCE(stq_saldo_estoque.quantidade, 0.000000) + (( SELECT COALESCE(sum(mv_stq_ent.quantidade), 0.000000) AS "coalesce" FROM (stq_mov_estoque mv_stq_ent LEFT JOIN bas_tipo_mov tp_mov_ent ON ((tp_mov_ent.codigo = mv_stq_ent.tipo_movimento))) WHERE ((mv_stq_ent.filial_mov = stq_mov_estoque.filial_mov) AND (mv_stq_ent.almox_origem = stq_mov_estoque.almox_origem) AND (mv_stq_ent.filial_pro = stq_mov_estoque.filial_pro) AND (mv_stq_ent.produto = stq_mov_estoque.produto) AND (mv_stq_ent.data_movimento = stq_mov_estoque.data_movimento) AND (mv_stq_ent.sequencial <= stq_mov_estoque.sequencial) AND ((tp_mov_ent.operacao)::text = 'E'::text))) - ( SELECT COALESCE(sum(mv_stq_sai.quantidade), 0.000000) AS "coalesce" FROM (stq_mov_estoque mv_stq_sai LEFT JOIN bas_tipo_mov tp_mov_sai ON ((tp_mov_sai.codigo = mv_stq_sai.tipo_movimento))) WHERE ((mv_stq_sai.filial_mov = stq_mov_estoque.filial_mov) AND (mv_stq_sai.almox_origem = stq_mov_estoque.almox_origem) AND (mv_stq_sai.filial_pro = stq_mov_estoque.filial_pro) AND (mv_stq_sai.produto = stq_mov_estoque.produto) AND (mv_stq_sai.data_movimento = stq_mov_estoque.data_movimento) AND (mv_stq_sai.sequencial <= stq_mov_estoque.sequencial) AND ((tp_mov_sai.operacao)::text = 'S'::text))))) = (0)::numeric) THEN 0.000000 ELSE COALESCE((COALESCE(stq_saldo_estoque.vlr_estoque, 0.000000) + (( SELECT COALESCE(sum( CASE WHEN (mv_stq_ent.tipo_movimento <> 1) THEN trunc((mv_stq_ent.vlr_custo * mv_stq_ent.quantidade), 2) ELSE round((mv_stq_ent.vlr_custo * mv_stq_ent.quantidade), 2) END), 0.000000) AS "coalesce" FROM (stq_mov_estoque mv_stq_ent LEFT JOIN bas_tipo_mov tp_mov_ent ON ((tp_mov_ent.codigo = mv_stq_ent.tipo_movimento))) WHERE ((mv_stq_ent.filial_mov = stq_mov_estoque.filial_mov) AND (mv_stq_ent.almox_origem = stq_mov_estoque.almox_origem) AND (mv_stq_ent.filial_pro = stq_mov_estoque.filial_pro) AND (mv_stq_ent.produto = stq_mov_estoque.produto) AND (mv_stq_ent.data_movimento = stq_mov_estoque.data_movimento) AND (mv_stq_ent.sequencial <= stq_mov_estoque.sequencial) AND ((tp_mov_ent.operacao)::text = 'E'::text))) - ( SELECT COALESCE(sum( CASE WHEN (mv_stq_sai.tipo_movimento <> ALL (ARRAY[1, 2])) THEN trunc((mv_stq_sai.vlr_custo * mv_stq_sai.quantidade), 2) ELSE round((mv_stq_sai.vlr_custo * mv_stq_sai.quantidade), 2) END), 0.000000) AS "coalesce" FROM (stq_mov_estoque mv_stq_sai LEFT JOIN bas_tipo_mov tp_mov_sai ON ((tp_mov_sai.codigo = mv_stq_sai.tipo_movimento))) WHERE ((mv_stq_sai.filial_mov = stq_mov_estoque.filial_mov) AND (mv_stq_sai.almox_origem = stq_mov_estoque.almox_origem) AND (mv_stq_sai.filial_pro = stq_mov_estoque.filial_pro) AND (mv_stq_sai.produto = stq_mov_estoque.produto) AND (mv_stq_sai.data_movimento = stq_mov_estoque.data_movimento) AND (mv_stq_sai.sequencial <= stq_mov_estoque.sequencial) AND ((tp_mov_sai.operacao)::text = 'S'::text))))), (0)::numeric) END AS saldo_valor_atual, stq_mov_estoque.sequencia_lote FROM ((stq_mov_estoque LEFT JOIN bas_tipo_mov ON ((bas_tipo_mov.codigo = stq_mov_estoque.tipo_movimento))) LEFT JOIN stq_saldo_estoque ON (((stq_saldo_estoque.filial_stq = stq_mov_estoque.filial_mov) AND (stq_saldo_estoque.almoxarifado = stq_mov_estoque.almox_origem) AND (stq_saldo_estoque.filial_pro = stq_mov_estoque.filial_pro) AND (stq_saldo_estoque.produto = stq_mov_estoque.produto) AND (stq_saldo_estoque.data = ( SELECT max(stq_saldo_estoque_1.data) AS max FROM stq_saldo_estoque stq_saldo_estoque_1 WHERE ((stq_saldo_estoque_1.filial_stq = stq_mov_estoque.filial_mov) AND (stq_saldo_estoque_1.almoxarifado = stq_mov_estoque.almox_origem) AND (stq_saldo_estoque_1.filial_pro = stq_mov_estoque.filial_pro) AND (stq_saldo_estoque_1.produto = stq_mov_estoque.produto) AND (stq_saldo_estoque_1.data < stq_mov_estoque.data_movimento)))) AND (stq_saldo_estoque.sequencia_lote = stq_mov_estoque.sequencia_lote) ))) ORDER BY stq_mov_estoque.filial_mov, stq_mov_estoque.filial_pro, stq_mov_estoque.sequencia_lote, stq_mov_estoque.produto, stq_mov_estoque.data_movimento, stq_mov_estoque.sequencial; ALTER TABLE public.view_stq_ficha_estoque OWNER TO postgres; COMMENT ON VIEW public.view_stq_ficha_estoque IS 'View Padrao da Ficha do Estoque';