Pessoal deu quase certo.mas devo estar fazendo algo de errado para os valores não bater. Vou postar meu código aqui. assim fica melhor de entender.
Selecionar tudo
SELECT data
, documento
, ds_produto produto
, ds_unidade unidade
, operacao
, quantidade
, ds_estoque estoque_origem
, Upper(ds_destino) estoque_destino
,SUM(quantidade) OVER (PARTITION BY NULL ORDER BY DATA)SALDO
FROM (
-----------------------------CONTAGENS DE ESTOQUE----------------------------------------------------------------------
SELECT
Itcontagem.Cd_produto Cd_produto
,Produto.Ds_produto Ds_produto
,dbamv.verif_ds_unid_prod(ITCONTAGEM.CD_PRODUTO) Ds_unidade
,Sum(( Nvl(Itcontagem.Qt_estoque,0) +
Nvl( Itcontagem.Qt_estoque_doado,0) +
Nvl(Itcontagem.Qt_Kit,0) ) * UNI_PRO.VL_FATOR ) / dbamv.verif_vl_fator_prod(ITCONTAGEM.CD_PRODUTO) Quantidade
,Trunc(Contagem.Dt_geracao) Data
,Contagem.Hr_geracao Hora
,Contagem.Cd_contagem Documento
,'Contagem - ' || Estoque.Ds_estoque Ds_destino
,'Contagem' Operacao
,0 Valor
,Estoque.Cd_estoque Cd_estoque
,Estoque.Ds_estoque Ds_estoque
,dbamv.verif_vl_fator_prod(ITCONTAGEM.CD_PRODUTO) Vl_fator
,'1' Tp_ordem
,'N' Sn_consignado
,Produto.Sn_Consignado Produto_Sn_Consig
FROM
Dbamv.Itcontagem Itcontagem
,Dbamv.Contagem Contagem
,Dbamv.Produto Produto
,Dbamv.Uni_pro Uni_pro
,Dbamv.Estoque Estoque
WHERE
Trunc(contagem.dt_geracao) BETWEEN To_Date('27/12/2014','dd/mm/yyyy') AND To_Date('31/12/2014','dd/mm/yyyy')
AND produto.cd_produto IN(104010,104011,101001,199513,113002,105001,112014,116006,113014,113010,310006,106052,112015,103018,112013,110005,300018,130001,106061,222016,140006,300020, 111023,102020,132004,102003,102013,106037,102014,102004,102010,102011,199433,199430,199336)
AND estoque.cd_estoque = 1
AND Itcontagem.Cd_produto = Produto.Cd_produto
AND Itcontagem.Cd_contagem = Contagem.Cd_contagem
AND Itcontagem.Cd_uni_pro = Uni_pro.Cd_uni_pro
AND Contagem.Cd_estoque = Estoque.Cd_estoque
AND Estoque.Cd_Multi_empresa = 3
AND CONTAGEM.TP_CONTAGEM IN ( 'G', 'S' )
AND PRODUTO.cd_produto = 130001
GROUP BY Itcontagem.Cd_produto, Produto.Ds_produto, Produto.Vl_custo_medio, dbamv.verif_ds_unid_prod(ITCONTAGEM.CD_PRODUTO), Contagem.Dt_geracao, Contagem.Hr_geracao
,Contagem.Cd_contagem,Estoque.Cd_estoque,Estoque.Ds_estoque,dbamv.verif_vl_fator_prod(ITCONTAGEM.CD_PRODUTO),Produto.Sn_Consignado
UNION ALL
-----------------------------MOVIMENTAÇÕES DE ESTOQUE----------------------------------------------------------------------
SELECT
Itmvto_estoque.Cd_produto cd_produto
,Produto.Ds_produto ds_produto
,VERIF_DS_UNID_PROD(Itmvto_estoque.Cd_produto ) Ds_Unidade
,Sum(Decode( Mvto_estoque.Tp_mvto_estoque,'D', Itmvto_estoque.Qt_movimentacao,'C' , Itmvto_estoque.Qt_movimentacao,
Itmvto_estoque.Qt_movimentacao * -1 ) * uni_pro.vl_fator/
dbamv.VERIF_VL_FATOR_PROD(itmvto_estoque.cd_produto)) Quantidade
,Trunc(Mvto_estoque.Dt_mvto_estoque) Data
,Mvto_estoque.Hr_mvto_estoque Hora
,Mvto_estoque.Cd_mvto_estoque Documento
,Initcap(Nvl( Paciente.Nm_paciente,
Decode(Mvto_estoque.Tp_mvto_estoque, 'T', Estoque_destino.Ds_estoque, 'B', 'Tombamento Patrimonio','E',Fornecedor.Nm_fornecedor, Setor.Nm_setor ) ) ) Ds_destino
,Initcap(Decode( Mvto_estoque.Tp_mvto_estoque,
'X', 'Baixa De Produtos',
'S', 'Saída Setor' ,
'B', 'Tombamento' ,
'P', 'Saída Paciente' ,
'D', 'Devol. De Setor' ,
'C', 'Devol. De Paciente' ,
'T', 'Transf. De Estoque ',
'M', 'Manipul. Produtos' ,
'O', 'Doação Produtos',
'E', 'Saída De Empréstimo',
'R','Transf. Empresas',
'V', 'Venda De Produtos' ,
'N','Devolução De Vendas')) Operacao
,0 Valor
,Estoque.Cd_estoque Cd_estoque
,Estoque.Ds_estoque Ds_estoque
,dbamv.VERIF_VL_FATOR_PROD(itmvto_estoque.cd_produto) Vl_fator
,'3' Tp_ordem
,'N' Sn_consignado
,Produto.Sn_Consignado Produto_Sn_Consig
From Dbamv.Mvto_estoque Mvto_estoque
, Dbamv.Itmvto_estoque Itmvto_estoque
, Dbamv.Produto Produto
, Dbamv.Uni_pro Uni_pro
, Dbamv.Atendime Atendimento
, Dbamv.Paciente Paciente
, Dbamv.Setor Setor
, Dbamv.Estoque Estoque
, Dbamv.Estoque Estoque_destino
, Dbamv.Fornecedor Fornecedor
Where Trunc(mvto_estoque.dt_mvto_estoque) BETWEEN To_Date('27/12/2014','dd/mm/yyyy') AND To_Date('31/12/2014','dd/mm/yyyy')
AND produto.cd_produto IN(104010,104011,101001,199513,113002,105001,112014,116006,113014,113010,310006,106052,112015,103018,112013,110005,300018,130001,106061,222016,140006,300020, 111023,102020,132004,102003,102013,106037,102014,102004,102010,102011,199433,199430,199336)
AND estoque.cd_estoque = 1
And Itmvto_estoque.Cd_produto = Produto.Cd_produto
And Itmvto_estoque.Cd_mvto_estoque = Mvto_estoque.Cd_mvto_estoque
And Itmvto_estoque.Cd_uni_pro = Uni_pro.Cd_uni_pro
And Mvto_estoque.Cd_atendimento = Atendimento.Cd_atendimento (+)
And Atendimento.Cd_paciente = Paciente.Cd_paciente (+)
And Mvto_estoque.Cd_setor = Setor.Cd_setor(+)
And Mvto_estoque.Cd_estoque_destino = Estoque_destino.Cd_estoque(+)
And Itmvto_estoque.Cd_uni_pro = Uni_pro.Cd_uni_pro
And Mvto_estoque.Cd_estoque = Estoque.Cd_estoque
And Mvto_estoque.Cd_fornecedor = Fornecedor.Cd_fornecedor(+)
And Estoque.Cd_Multi_empresa = 3
AND PRODUTO.cd_produto = 130001
GROUP BY Itmvto_estoque.Cd_produto
, Produto.Ds_produto
, VERIF_DS_UNID_PROD(Itmvto_estoque.Cd_produto )
, Mvto_estoque.Dt_mvto_estoque
, Mvto_estoque.Hr_mvto_estoque
, Mvto_estoque.Cd_mvto_estoque
, Initcap( Nvl( Paciente.Nm_paciente,
Decode( Mvto_estoque.Tp_mvto_estoque, 'T', Estoque_destino.Ds_estoque, 'B', 'Tombamento Patrimonio','E',Fornecedor.Nm_fornecedor, Setor.Nm_setor ) ) )
, Initcap( Decode( Mvto_estoque.Tp_mvto_estoque,
'X', 'Baixa De Produtos',
'S', 'Saída Setor' ,
'B', 'Tombamento' ,
'P', 'Saída Paciente' ,
'D', 'Devol. De Setor' ,
'C', 'Devol. De Paciente' ,
'T', 'Transf. De Estoque ',
'M', 'Manipul. Produtos' ,
'O', 'Doação Produtos',
'E', 'Saída De Empréstimo',
'R', 'Transf. Empresas',
'V', 'Venda De Produtos' ,
'N', 'Devolução De Vendas'))
, Estoque.Cd_estoque
, Estoque.Ds_estoque
, dbamv.VERIF_VL_FATOR_PROD(itmvto_estoque.cd_produto)
, Produto.Sn_Consignado
)ORDER BY data,produto, operacao ASC;