Jump to content

andresena47

Members
  • Posts

    2
  • Joined

  • Last visited

andresena47's Achievements

Newbie

Newbie (1/14)

  • Week One Done
  • One Month Later
  • First Post Rare
  • Conversation Starter Rare

Recent Badges

0

Reputation

  1. im solved just add set nocount on; and set nocount off; in the start and the end of query and dataset
  2. this error is appearing in my report, but I already checked everything and everything seems to be right, the name of the procedure, the parameters, the order of the parameters, the name of the jasper file, but I still get this error, I'm trying to make the report in jaspersoft studio 6 community edition using cake php and a SQL Server database, When I test it in jasper with the same parameters it runs perfectly, testing the procedure also works perfectly, but when I try to pass the cake parameters to jasper it gives an error here is the procedure CREATE PROCEDURE dbo.GERA_REL_DADOS_RESUMO_MOVIMENTACAO (@COD_USUARIO INT, @DAT_INI VARCHAR(10), @DAT_FIM VARCHAR(10), @COD_FARMACIA INT, @COD_MEDICAMENTO INT=NULL) AS BEGIN DECLARE @DATA_INICIAL DATETIME, @DATA_FINAL DATETIME, @NME_FARMACIA VARCHAR(200), @COD_TIPO_AJUSTE_ACERTO INT SET @DATA_INICIAL = CONVERT(DATETIME, @DAT_INI + ' 00:00:00', 103) SET @DATA_FINAL = CONVERT(DATETIME, @DAT_FIM + ' 23:59:59', 103) DECLARE @RSTMP TABLE( cod_farmacia INT NOT NULL, cod_medicamento NUMERIC(6,0) NOT NULL, nme_medicamento VARCHAR(5000) Collate Latin1_General_CI_AI NOT NULL, --num_lote varchar(200) Collate Latin1_General_CI_AI NOT NULL, qtd_entrada_periodo INT DEFAULT 0 NOT NULL, qtd_saida_periodo INT DEFAULT 0 NOT NULL, saldo INT DEFAULT 0 NOT NULL, qtd_entrada_aquisicao INT DEFAULT 0 NOT NULL, prc_unit NUMERIC(15,4) DEFAULT 0 NOT NULL, estoque_dia INT DEFAULT 0 NOT NULL, vlr_estoque_dia NUMERIC(15,3) DEFAULT 0 NOT NULL, prc_unit_medio_ant_2017 NUMERIC(15,4) DEFAULT 0 NOT NULL ) SELECT TOP 1 @COD_TIPO_AJUSTE_ACERTO = COD_TIPO_AJUSTE FROM TIPO_AJUSTE WHERE NME_TIPO_AJUSTE = 'ACERTO DE CÓDIGO' -----================================== DELETE historico_movimentacao_resumo WHERE cod_usuario = @cod_usuario INSERT INTO historico_movimentacao_resumo SELECT @COD_USUARIO AS cod_usuario, CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AS dth_movimentacao, 'Inventário' AS tipo_movimentacao, invent.cod_farmacia, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio, SUM(itens.qtd_movimentada) AS qtd_movimentada, CASE WHEN ISNULL(itens.vlr_unit_medicamento ,0) > 0 THEN itens.vlr_unit_medicamento ELSE ISNULL(( SELECT top 1 cm.vlr_unit_medicamento FROM custo_medicamento cm WHERE cm.cod_medicamento = itens.cod_medicamento AND cm.cod_laboratorio = itens.cod_laboratorio AND cm.data_custo = MAX(CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103)) AND cm.vlr_unit_medicamento > 0 ),0) END AS prc_unit FROM dbo.itens_movimentacao itens INNER JOIN dbo.inventario_medicamento invent ON invent.cod_invent = itens.cod_invent INNER JOIN dbo.movimentacao_medicamento mov ON mov.cod_invent = invent.cod_invent INNER JOIN medicamento med ON med.cod_medicamento = itens.cod_medicamento WHERE invent.status = 'EFETIVADO' AND mov.dth_movimentacao <=@DATA_FINAL AND invent.cod_farmacia = @COD_FARMACIA AND itens.cod_medicamento = ISNULL(@COD_MEDICAMENTO,itens.cod_medicamento) GROUP BY CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), invent.cod_farmacia, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio, itens.vlr_unit_medicamento UNION ALL -- Dispensação SELECT @COD_USUARIO AS cod_usuario, CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AS dth_movimentacao, 'Dispensação' AS tipo_movimentacao, disp.cod_farmacia, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio, - SUM(itens.qtd_movimentada) AS qtd_movimentada, ISNULL( ( SELECT TOP 1 im.vlr_unit_medicamento FROM itens_movimentacao im WHERE im.cod_medicamento = itens.cod_medicamento AND im.num_lote = itens.num_lote AND im.cod_laboratorio = itens.cod_laboratorio AND ISNULL(im.cod_invent, im.cod_entrada) is not null AND im.cod_movimentacao < max(itens.cod_movimentacao) ), ISNULL(( SELECT top 1 cm.vlr_unit_medicamento FROM custo_medicamento cm WHERE cm.cod_medicamento = itens.cod_medicamento AND cm.cod_laboratorio = itens.cod_laboratorio --AND cm.data_custo < CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AND cm.data_custo = MAX(CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103)) AND cm.vlr_unit_medicamento > 0 --ORDER BY cm.data_custo DESC ),0) ) AS prc_unit FROM dbo.itens_movimentacao itens INNER JOIN dbo.dispensacao disp ON disp.cod_dispensacao = itens.cod_dispensacao INNER JOIN dbo.movimentacao_medicamento mov ON mov.cod_dispensacao = disp.cod_dispensacao INNER JOIN medicamento med ON med.cod_medicamento = itens.cod_medicamento WHERE disp.status = 'EFETIVADO' AND mov.dth_movimentacao <=@DATA_FINAL AND disp.cod_farmacia = @COD_FARMACIA AND itens.cod_medicamento = ISNULL(@COD_MEDICAMENTO,itens.cod_medicamento) GROUP BY CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), disp.cod_farmacia, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio UNION ALL -- Ajuste de Estoque SELECT @COD_USUARIO AS cod_usuario, dth_movimentacao, 'Ajuste de Estoque' AS tipo_movimentacao, cod_farmacia, cod_medicamento, nme_medicamento, num_lote, cod_laboratorio, SUM(qtd_movimentada) AS qtd_movimentada, ISNULL( ( SELECT TOP 1 im.vlr_unit_medicamento FROM itens_movimentacao im WHERE im.cod_medicamento = tmp_ajuste.cod_medicamento AND im.num_lote = tmp_ajuste.num_lote AND im.cod_laboratorio = tmp_ajuste.cod_laboratorio AND ISNULL(im.cod_invent, im.cod_entrada) is not null AND im.cod_movimentacao < max(tmp_ajuste.cod_movimentacao) ), ISNULL(( SELECT top 1 cm.vlr_unit_medicamento FROM custo_medicamento cm WHERE cm.cod_medicamento = tmp_ajuste.cod_medicamento AND cm.cod_laboratorio = tmp_ajuste.cod_laboratorio --AND cm.data_custo < CONVERT(DATETIME, CONVERT(VARCHAR, tmp_ajuste.dth_movimentacao, 103), 103) AND cm.data_custo = MAX(CONVERT(DATETIME, CONVERT(VARCHAR, tmp_ajuste.dth_movimentacao, 103), 103)) AND cm.vlr_unit_medicamento > 0 --ORDER BY cm.data_custo DESC ),0) ) AS prc_unit FROM ( SELECT CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AS dth_movimentacao, itens.cod_movimentacao, ajuste.cod_farmacia, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio, ( CASE itens.sinal WHEN '-' THEN - itens.qtd_movimentada ELSE itens.qtd_movimentada END ) AS qtd_movimentada FROM dbo.itens_movimentacao itens INNER JOIN dbo.ajuste_estoque ajuste ON ajuste.cod_ajuste = itens.cod_ajuste INNER JOIN dbo.movimentacao_medicamento mov ON mov.cod_ajuste = ajuste.cod_ajuste INNER JOIN medicamento med ON med.cod_medicamento = itens.cod_medicamento WHERE ajuste.status = 'EFETIVADO' AND mov.dth_movimentacao <=@DATA_FINAL AND ajuste.cod_farmacia = @COD_FARMACIA AND ISNULL(itens.cod_tipo_ajuste,0) <> @COD_TIPO_AJUSTE_ACERTO AND itens.cod_medicamento = ISNULL(@COD_MEDICAMENTO,itens.cod_medicamento) ) AS TMP_AJUSTE GROUP BY dth_movimentacao, cod_farmacia, cod_medicamento, nme_medicamento, num_lote, cod_laboratorio UNION ALL -- Ajuste de Estoque (ACERTO DE CÓDIGO) SELECT @COD_USUARIO AS cod_usuario, dth_movimentacao, 'ACERTO' AS tipo_movimentacao, cod_farmacia, cod_medicamento, nme_medicamento, num_lote, cod_laboratorio, SUM(qtd_movimentada) AS qtd_movimentada, ISNULL( ( SELECT TOP 1 im.vlr_unit_medicamento FROM itens_movimentacao im WHERE im.cod_medicamento = tmp_ajuste.cod_medicamento AND im.num_lote = tmp_ajuste.num_lote AND im.cod_laboratorio = tmp_ajuste.cod_laboratorio AND ISNULL(im.cod_invent, im.cod_entrada) is not null AND im.cod_movimentacao < max(tmp_ajuste.cod_movimentacao) ), ISNULL(( SELECT top 1 cm.vlr_unit_medicamento FROM custo_medicamento cm WHERE cm.cod_medicamento = tmp_ajuste.cod_medicamento AND cm.cod_laboratorio = tmp_ajuste.cod_laboratorio --AND cm.data_custo < CONVERT(DATETIME, CONVERT(VARCHAR, tmp_ajuste.dth_movimentacao, 103), 103) AND cm.data_custo = MAX(CONVERT(DATETIME, CONVERT(VARCHAR, tmp_ajuste.dth_movimentacao, 103), 103)) AND cm.vlr_unit_medicamento > 0 --ORDER BY cm.data_custo DESC ),0) ) AS prc_unit FROM ( SELECT CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AS dth_movimentacao, itens.cod_movimentacao, ajuste.cod_farmacia, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio, ( CASE itens.sinal WHEN '-' THEN - itens.qtd_movimentada ELSE itens.qtd_movimentada END ) AS qtd_movimentada FROM dbo.itens_movimentacao itens INNER JOIN dbo.ajuste_estoque ajuste ON ajuste.cod_ajuste = itens.cod_ajuste INNER JOIN dbo.movimentacao_medicamento mov ON mov.cod_ajuste = ajuste.cod_ajuste INNER JOIN medicamento med ON med.cod_medicamento = itens.cod_medicamento WHERE ajuste.status = 'EFETIVADO' AND mov.dth_movimentacao <=@DATA_FINAL AND ajuste.cod_farmacia = @COD_FARMACIA AND ISNULL(itens.cod_tipo_ajuste,0) = @COD_TIPO_AJUSTE_ACERTO AND itens.cod_medicamento = ISNULL(@COD_MEDICAMENTO,itens.cod_medicamento) ) AS TMP_AJUSTE GROUP BY dth_movimentacao, cod_farmacia, cod_medicamento, nme_medicamento, num_lote, cod_laboratorio UNION ALL -- Entrada de Medicamento SELECT @COD_USUARIO AS cod_usuario, CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AS dth_movimentacao, 'Entrada de Medicamento' AS tipo_movimentacao, entrada.cod_farmacia, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio, SUM(itens.qtd_movimentada) AS qtd_movimentada, CASE WHEN ISNULL(itens.vlr_unit_medicamento ,0) > 0 THEN itens.vlr_unit_medicamento ELSE ( ISNULL((SELECT top 1 cm.vlr_unit_medicamento FROM custo_medicamento cm WHERE cm.cod_medicamento = itens.cod_medicamento AND cm.cod_laboratorio = itens.cod_laboratorio --AND cm.data_custo < CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AND cm.data_custo = MAX(CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103)) AND cm.vlr_unit_medicamento > 0 --ORDER BY cm.data_custo DESC ),0) ) END AS prc_unit FROM dbo.itens_movimentacao itens INNER JOIN dbo.entrada_medicamento entrada ON entrada.cod_entrada = itens.cod_entrada INNER JOIN dbo.movimentacao_medicamento mov ON mov.cod_entrada = entrada.cod_entrada AND mov.cod_medicamento = itens.cod_medicamento AND mov.num_lote = itens.num_lote INNER JOIN medicamento med ON med.cod_medicamento = itens.cod_medicamento WHERE entrada.status = 'EFETIVADO' AND mov.dth_movimentacao <=@DATA_FINAL AND entrada.cod_farmacia = @COD_FARMACIA AND itens.cod_medicamento = ISNULL(@COD_MEDICAMENTO,itens.cod_medicamento) GROUP BY CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), entrada.cod_farmacia, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio, itens.vlr_unit_medicamento UNION ALL -- Saída por Requisição SELECT @COD_USUARIO AS cod_usuario, CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AS dth_movimentacao, 'Saída por Requisição' AS tipo_movimentacao, t.cod_farmacia_origem, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio, - SUM(itens.qtd_movimentada), ISNULL( ( SELECT TOP 1 im.vlr_unit_medicamento FROM itens_movimentacao im WHERE im.cod_medicamento = itens.cod_medicamento AND im.num_lote = itens.num_lote AND im.cod_laboratorio = itens.cod_laboratorio AND ISNULL(im.cod_invent, im.cod_entrada) is not null AND im.cod_movimentacao < max(itens.cod_movimentacao) ), ISNULL(( SELECT top 1 cm.vlr_unit_medicamento FROM custo_medicamento cm WHERE cm.cod_medicamento = itens.cod_medicamento AND cm.cod_laboratorio = itens.cod_laboratorio --AND cm.data_custo < CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AND cm.data_custo = MAX(CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103)) AND cm.vlr_unit_medicamento > 0 --ORDER BY cm.data_custo DESC ),0) ) AS prc_unit FROM dbo.itens_movimentacao itens INNER JOIN dbo.transferencia t ON t.cod_transferencia = itens.cod_transferencia INNER JOIN dbo.movimentacao_medicamento mov ON mov.cod_transferencia = itens.cod_transferencia AND mov.num_lote = itens.num_lote AND mov.cod_medicamento = itens.cod_medicamento AND mov.cod_laboratorio = itens.cod_laboratorio AND mov.cod_farmacia = t.cod_farmacia_origem INNER JOIN medicamento med ON med.cod_medicamento = itens.cod_medicamento WHERE t.idr_tipo_transf = 'R' AND mov.cod_controle = 3 AND mov.dth_movimentacao <=@DATA_FINAL AND t.cod_farmacia_origem = @COD_FARMACIA AND itens.cod_medicamento = ISNULL(@COD_MEDICAMENTO,itens.cod_medicamento) GROUP BY CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), t.cod_farmacia_origem, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio UNION ALL -- Entrada por Requisição SELECT @COD_USUARIO AS cod_usuario, CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AS dth_movimentacao, 'Entrada por Requisição' AS tipo_movimentacao, t.cod_farmacia_destino, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio, SUM(itens.qtd_movimentada) qtd_movimentada, ISNULL( ( SELECT TOP 1 im.vlr_unit_medicamento FROM itens_movimentacao im WHERE im.cod_medicamento = itens.cod_medicamento AND im.num_lote = itens.num_lote AND im.cod_laboratorio = itens.cod_laboratorio AND ISNULL(im.cod_invent, im.cod_entrada) is not null AND im.cod_movimentacao < max(itens.cod_movimentacao) ), ISNULL(( SELECT top 1 cm.vlr_unit_medicamento FROM custo_medicamento cm WHERE cm.cod_medicamento = itens.cod_medicamento AND cm.cod_laboratorio = itens.cod_laboratorio --AND cm.data_custo < CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AND cm.data_custo = MAX(CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103)) AND cm.vlr_unit_medicamento > 0 --ORDER BY cm.data_custo DESC ),0) ) AS prc_unit FROM dbo.itens_movimentacao itens INNER JOIN dbo.transferencia t ON t.cod_transferencia = itens.cod_transferencia INNER JOIN dbo.transferencia_medicamento tm ON tm.cod_transferencia = itens.cod_transferencia AND tm.cod_medicamento = itens.cod_medicamento AND tm.cod_farmacia = t.cod_farmacia_destino INNER JOIN dbo.movimentacao_medicamento mov ON mov.cod_transferencia = itens.cod_transferencia AND mov.cod_medicamento = tm.cod_medicamento INNER JOIN medicamento med ON med.cod_medicamento = itens.cod_medicamento WHERE t.idr_tipo_transf = 'R' AND itens.idr_recebimento = 1 AND mov.cod_controle = 8 AND mov.dth_movimentacao <=@DATA_FINAL AND t.cod_farmacia_destino = @COD_FARMACIA AND itens.cod_medicamento = ISNULL(@COD_MEDICAMENTO,itens.cod_medicamento) GROUP BY CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), t.cod_farmacia_destino, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio UNION ALL -- Entrada por Rejeição SELECT @COD_USUARIO AS cod_usuario, CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AS dth_movimentacao, 'Entrada por Rejeição' AS tipo_movimentacao, mov.cod_farmacia, --onde recebeu os itens itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio, SUM(mov.qtd_movimentada), ISNULL( ( SELECT TOP 1 im.vlr_unit_medicamento FROM itens_movimentacao im WHERE im.cod_medicamento = itens.cod_medicamento AND im.num_lote = itens.num_lote AND im.cod_laboratorio = itens.cod_laboratorio AND ISNULL(im.cod_invent, im.cod_entrada) is not null AND im.cod_movimentacao < max(itens.cod_movimentacao) ), ISNULL(( SELECT top 1 cm.vlr_unit_medicamento FROM custo_medicamento cm WHERE cm.cod_medicamento = itens.cod_medicamento AND cm.cod_laboratorio = itens.cod_laboratorio -- AND cm.data_custo < CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AND cm.data_custo = MAX(CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103)) AND cm.vlr_unit_medicamento > 0 ---ORDER BY cm.data_custo DESC ),0) ) AS prc_unit FROM dbo.itens_movimentacao itens INNER JOIN dbo.transferencia t ON t.cod_transferencia = itens.cod_transferencia INNER JOIN dbo.transferencia_medicamento tm ON tm.cod_transferencia = itens.cod_transferencia AND tm.cod_medicamento = itens.cod_medicamento AND tm.cod_farmacia = t.cod_farmacia_destino INNER JOIN dbo.movimentacao_medicamento mov ON mov.cod_transferencia = itens.cod_transferencia AND mov.cod_medicamento = tm.cod_medicamento AND mov.num_lote = itens.num_lote AND mov.cod_laboratorio = itens.cod_laboratorio INNER JOIN medicamento med ON med.cod_medicamento = itens.cod_medicamento WHERE t.idr_tipo_transf = 'R' AND mov.cod_controle = 17 AND mov.dth_movimentacao <=@DATA_FINAL AND mov.cod_farmacia = @COD_FARMACIA AND itens.cod_medicamento = ISNULL(@COD_MEDICAMENTO,itens.cod_medicamento) GROUP BY CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), mov.cod_farmacia, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio UNION ALL -- Saída por Devolução SELECT @COD_USUARIO AS cod_usuario, CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), 'Saída por Devolução' AS tipo_movimentacao, t.cod_farmacia_origem, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio, - SUM(itens.qtd_movimentada), ISNULL( ( SELECT TOP 1 im.vlr_unit_medicamento FROM itens_movimentacao im WHERE im.cod_medicamento = itens.cod_medicamento AND im.num_lote = itens.num_lote AND im.cod_laboratorio = itens.cod_laboratorio AND ISNULL(im.cod_invent, im.cod_entrada) is not null AND im.cod_movimentacao < max(itens.cod_movimentacao) ), ISNULL(( SELECT top 1 cm.vlr_unit_medicamento FROM custo_medicamento cm WHERE cm.cod_medicamento = itens.cod_medicamento AND cm.cod_laboratorio = itens.cod_laboratorio --AND cm.data_custo < CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AND cm.data_custo = MAX(CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103)) AND cm.vlr_unit_medicamento > 0 --ORDER BY cm.data_custo DESC ),0) ) AS prc_unit FROM dbo.itens_movimentacao itens INNER JOIN dbo.transferencia t ON t.cod_transferencia = itens.cod_transferencia INNER JOIN dbo.movimentacao_medicamento mov ON mov.cod_transferencia = itens.cod_transferencia INNER JOIN medicamento med ON med.cod_medicamento = itens.cod_medicamento WHERE t.idr_tipo_transf = 'D' AND mov.cod_controle = 10 AND mov.dth_movimentacao <=@DATA_FINAL AND t.cod_farmacia_origem = @COD_FARMACIA AND itens.cod_medicamento = ISNULL(@COD_MEDICAMENTO,itens.cod_medicamento) GROUP BY CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), t.cod_farmacia_origem, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio UNION ALL -- Entrada por Devolução SELECT @COD_USUARIO AS cod_usuario, CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), 'Entrada por Devolução' AS tipo_movimentacao, t.cod_farmacia_destino, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio, SUM(itens.qtd_movimentada), ISNULL( ( SELECT TOP 1 im.vlr_unit_medicamento FROM itens_movimentacao im WHERE im.cod_medicamento = itens.cod_medicamento AND im.num_lote = itens.num_lote AND im.cod_laboratorio = itens.cod_laboratorio AND ISNULL(im.cod_invent, im.cod_entrada) is not null AND im.cod_movimentacao < max(itens.cod_movimentacao) ), ISNULL(( SELECT top 1 cm.vlr_unit_medicamento FROM custo_medicamento cm WHERE cm.cod_medicamento = itens.cod_medicamento AND cm.cod_laboratorio = itens.cod_laboratorio --AND cm.data_custo < CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AND cm.data_custo = MAX(CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103)) AND cm.vlr_unit_medicamento > 0 --ORDER BY cm.data_custo DESC ),0) ) AS prc_unit FROM dbo.itens_movimentacao itens INNER JOIN dbo.transferencia t ON t.cod_transferencia = itens.cod_transferencia INNER JOIN dbo.transferencia_medicamento tm ON tm.cod_transferencia = itens.cod_transferencia AND tm.cod_medicamento = itens.cod_medicamento AND tm.cod_farmacia = t.cod_farmacia_destino INNER JOIN dbo.movimentacao_medicamento mov ON mov.cod_transferencia = itens.cod_transferencia AND mov.cod_medicamento = tm.cod_medicamento INNER JOIN medicamento med ON med.cod_medicamento = itens.cod_medicamento WHERE t.idr_tipo_transf = 'D' AND tm.idr_recebimento = 1 AND mov.cod_controle = 11 AND mov.dth_movimentacao <=@DATA_FINAL AND t.cod_farmacia_destino = @COD_FARMACIA AND itens.cod_medicamento = ISNULL(@COD_MEDICAMENTO,itens.cod_medicamento) GROUP BY CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), t.cod_farmacia_destino, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio UNION ALL -- Saída por Transferência SELECT @COD_USUARIO AS cod_usuario, CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), 'Saída por Transferência' AS tipo_movimentacao, t.cod_farmacia_origem, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio, - SUM(itens.qtd_movimentada), ISNULL( ( SELECT TOP 1 im.vlr_unit_medicamento FROM itens_movimentacao im WHERE im.cod_medicamento = itens.cod_medicamento AND im.num_lote = itens.num_lote AND im.cod_laboratorio = itens.cod_laboratorio AND ISNULL(im.cod_invent, im.cod_entrada) is not null AND im.cod_movimentacao < max(itens.cod_movimentacao) ), ISNULL(( SELECT top 1 cm.vlr_unit_medicamento FROM custo_medicamento cm WHERE cm.cod_medicamento = itens.cod_medicamento AND cm.cod_laboratorio = itens.cod_laboratorio ---AND cm.data_custo < CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AND cm.data_custo = MAX(CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103)) AND cm.vlr_unit_medicamento > 0 ---ORDER BY cm.data_custo DESC ),0) ) AS prc_unit FROM dbo.itens_movimentacao itens INNER JOIN dbo.transferencia t ON t.cod_transferencia = itens.cod_transferencia INNER JOIN dbo.movimentacao_medicamento mov ON mov.cod_transferencia = itens.cod_transferencia INNER JOIN medicamento med ON med.cod_medicamento = itens.cod_medicamento WHERE t.idr_tipo_transf = 'T' AND mov.cod_controle = 12 AND mov.dth_movimentacao <=@DATA_FINAL AND t.cod_farmacia_origem = @COD_FARMACIA AND itens.cod_medicamento = ISNULL(@COD_MEDICAMENTO,itens.cod_medicamento) GROUP BY CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), t.cod_farmacia_origem, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio UNION ALL -- Entrada por Transferência SELECT @COD_USUARIO AS cod_usuario, CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), 'Entrada por Transferência' AS tipo_movimentacao, t.cod_farmacia_destino, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio, SUM(itens.qtd_movimentada), ISNULL( ( SELECT TOP 1 im.vlr_unit_medicamento FROM itens_movimentacao im WHERE im.cod_medicamento = itens.cod_medicamento AND im.num_lote = itens.num_lote AND im.cod_laboratorio = itens.cod_laboratorio AND ISNULL(im.cod_invent, im.cod_entrada) is not null AND im.cod_movimentacao < max(itens.cod_movimentacao) ), ISNULL(( SELECT top 1 cm.vlr_unit_medicamento FROM custo_medicamento cm WHERE cm.cod_medicamento = itens.cod_medicamento AND cm.cod_laboratorio = itens.cod_laboratorio --AND cm.data_custo < CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AND cm.data_custo = MAX(CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103)) AND cm.vlr_unit_medicamento > 0 ---ORDER BY cm.data_custo DESC ),0) ) AS prc_unit FROM dbo.itens_movimentacao itens INNER JOIN dbo.transferencia t ON t.cod_transferencia = itens.cod_transferencia INNER JOIN dbo.transferencia_medicamento tm ON tm.cod_transferencia = itens.cod_transferencia AND tm.cod_medicamento = itens.cod_medicamento AND tm.cod_farmacia = t.cod_farmacia_destino INNER JOIN dbo.movimentacao_medicamento mov ON mov.cod_transferencia = itens.cod_transferencia AND mov.cod_medicamento = tm.cod_medicamento INNER JOIN medicamento med ON med.cod_medicamento = itens.cod_medicamento WHERE t.idr_tipo_transf = 'T' AND tm.idr_recebimento = 1 AND mov.cod_controle = 13 AND mov.dth_movimentacao <=@DATA_FINAL AND t.cod_farmacia_destino = @COD_FARMACIA AND itens.cod_medicamento = ISNULL(@COD_MEDICAMENTO,itens.cod_medicamento) GROUP BY CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), t.cod_farmacia_destino, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio UNION ALL -- Saída por PDME SELECT @COD_USUARIO AS cod_usuario, CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), 'Saída por PDME' AS tipo_movimentacao, pdme.cod_farmacia_reqtd, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio, - SUM(itens.qtd_movimentada), ISNULL( ( SELECT TOP 1 im.vlr_unit_medicamento FROM itens_movimentacao im WHERE im.cod_medicamento = itens.cod_medicamento AND im.num_lote = itens.num_lote AND im.cod_laboratorio = itens.cod_laboratorio AND ISNULL(im.cod_invent, im.cod_entrada) is not null AND im.cod_movimentacao < max(itens.cod_movimentacao) ), ISNULL(( SELECT top 1 cm.vlr_unit_medicamento FROM custo_medicamento cm WHERE cm.cod_medicamento = itens.cod_medicamento AND cm.cod_laboratorio = itens.cod_laboratorio --AND cm.data_custo < CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AND cm.data_custo = MAX(CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103)) AND cm.vlr_unit_medicamento > 0 --ORDER BY cm.data_custo DESC ),0) ) AS prc_unit FROM dbo.itens_movimentacao itens INNER JOIN dbo.transferencia_pdme pdme ON pdme.cod_trans_pdme = itens.cod_trans_pdme INNER JOIN dbo.movimentacao_medicamento mov ON mov.cod_trans_pdme = itens.cod_trans_pdme AND mov.num_lote = itens.num_lote AND mov.cod_medicamento = itens.cod_medicamento AND mov.cod_laboratorio = itens.cod_laboratorio INNER JOIN medicamento med ON med.cod_medicamento = itens.cod_medicamento WHERE mov.cod_controle = 15 AND pdme.idr_tipo_transf = 'R' AND mov.dth_movimentacao <=@DATA_FINAL AND pdme.cod_farmacia_reqtd = @COD_FARMACIA AND itens.cod_medicamento = ISNULL(@COD_MEDICAMENTO,itens.cod_medicamento) GROUP BY CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), pdme.cod_farmacia_reqtd, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio UNION ALL -- Entrada por PDME SELECT @COD_USUARIO AS cod_usuario, CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), 'Entrada por PDME' AS tipo_movimentacao, pdme.cod_farmacia_reqst, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio, SUM(itens.qtd_movimentada), ISNULL( ( SELECT TOP 1 im.vlr_unit_medicamento FROM itens_movimentacao im WHERE im.cod_medicamento = itens.cod_medicamento AND im.num_lote = itens.num_lote AND im.cod_laboratorio = itens.cod_laboratorio AND ISNULL(im.cod_invent, im.cod_entrada) is not null AND im.cod_movimentacao < max(itens.cod_movimentacao) ), ISNULL(( SELECT top 1 cm.vlr_unit_medicamento FROM custo_medicamento cm WHERE cm.cod_medicamento = itens.cod_medicamento AND cm.cod_laboratorio = itens.cod_laboratorio --AND cm.data_custo < CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103) AND cm.data_custo = MAX(CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103)) AND cm.vlr_unit_medicamento > 0 --ORDER BY cm.data_custo DESC ),0) ) AS prc_unit FROM dbo.itens_movimentacao itens INNER JOIN dbo.transferencia_pdme pdme ON pdme.cod_trans_pdme = itens.cod_trans_pdme INNER JOIN dbo.transferencia_medicamento_pdme tpdme ON tpdme.cod_trans_pdme = pdme.cod_trans_pdme AND tpdme.cod_farmacia = pdme.cod_farmacia_reqst AND tpdme.cod_medicamento = itens.cod_medicamento INNER JOIN dbo.movimentacao_medicamento mov ON mov.cod_trans_pdme = itens.cod_trans_pdme AND mov.cod_medicamento = itens.cod_medicamento INNER JOIN medicamento med ON med.cod_medicamento = itens.cod_medicamento WHERE mov.cod_controle = 14 AND pdme.idr_tipo_transf = 'R' AND tpdme.idr_recebimento = 1 AND mov.dth_movimentacao <=@DATA_FINAL AND pdme.cod_farmacia_reqst = @COD_FARMACIA AND itens.cod_medicamento = ISNULL(@COD_MEDICAMENTO,itens.cod_medicamento) GROUP BY CONVERT(DATETIME, CONVERT(VARCHAR, mov.dth_movimentacao, 103), 103), pdme.cod_farmacia_reqst, itens.cod_medicamento, med.nme_medicamento, itens.num_lote, itens.cod_laboratorio -----================================== DELETE rel_resumo_movimentacao WHERE cod_usuario = @cod_usuario --'Ajuste de Estoque' IF (YEAR(@DATA_FINAL) <=2017) BEGIN INSERT INTO @RSTMP --Preço médio das entradas até o fim do período de 2017 SELECT vw.cod_farmacia, vw.cod_medicamento, nme_medicamento, 0 AS qtd_entrada_periodo, 0 AS qtd_saida_periodo, 0 AS saldo, 0 AS qtd_entrada_aquisicao, 0 AS prc_unit, 0 AS estoque_dia, 0 AS vlr_estoque_dia, SUM(vw.qtd_movimentada * vw.prc_unit)/ SUM(vw.qtd_movimentada) AS prc_unit_medio_ant_2017 FROM historico_movimentacao_resumo vw WHERE vw.qtd_movimentada > 0 AND vw.prc_unit > 0 AND vw.cod_usuario = @COD_USUARIO AND vw.dth_movimentacao <=@DATA_FINAL GROUP BY vw.cod_farmacia, vw.cod_medicamento, nme_medicamento HAVING SUM(vw.qtd_movimentada) <> 0 END INSERT INTO @RSTMP --Preço médio das entradas do período SELECT vw.cod_farmacia, vw.cod_medicamento, nme_medicamento, 0 AS qtd_entrada_periodo, 0 AS qtd_saida_periodo, 0 AS saldo, 0 AS qtd_entrada_aquisicao, SUM(vw.qtd_movimentada * vw.prc_unit)/ SUM(vw.qtd_movimentada) AS prc_unit, 0 AS estoque_dia, 0 AS vlr_estoque_dia, 0 AS prc_unit_medio_ant_2017 FROM historico_movimentacao_resumo vw WHERE vw.dth_movimentacao BETWEEN @DATA_INICIAL AND @DATA_FINAL AND vw.qtd_movimentada > 0 AND vw.prc_unit > 0 AND vw.cod_usuario = @COD_USUARIO AND vw.cod_farmacia = @COD_FARMACIA GROUP BY vw.cod_farmacia, vw.cod_medicamento, nme_medicamento HAVING SUM(vw.qtd_movimentada) <> 0 UNION ALL SELECT vw.cod_farmacia, vw.cod_medicamento, nme_medicamento, SUM(vw.qtd_movimentada) AS qtd_entrada_periodo, 0 AS qtd_saida_periodo, 0 AS saldo, 0 AS qtd_entrada_aquisicao, 0 AS prc_unit, 0 AS estoque_dia, 0 AS vlr_estoque_dia, 0 AS prc_unit_medio_ant_2017 FROM historico_movimentacao_resumo vw WHERE vw.dth_movimentacao BETWEEN @DATA_INICIAL AND @DATA_FINAL AND ((vw.qtd_movimentada > 0) OR ( vw.qtd_movimentada < 0 AND vw.tipo_movimentacao='ACERTO') ) AND vw.cod_usuario = @COD_USUARIO AND vw.cod_farmacia = @COD_FARMACIA GROUP BY vw.cod_farmacia, vw.cod_medicamento, nme_medicamento HAVING SUM(vw.qtd_movimentada) <> 0 UNION ALL --Saidas no período SELECT vw.cod_farmacia, vw.cod_medicamento, nme_medicamento, 0 AS qtd_entrada_periodo, SUM(vw.qtd_movimentada) AS qtd_saida_periodo, 0 AS saldo, 0 AS qtd_entrada_aquisicao, 0 AS prc_unit, 0 AS estoque_dia, 0 AS vlr_estoque_dia, 0 AS prc_unit_medio_ant_2017 FROM historico_movimentacao_resumo vw WHERE vw.dth_movimentacao BETWEEN @DATA_INICIAL AND @DATA_FINAL AND vw.qtd_movimentada < 0 AND vw.tipo_movimentacao <> 'ACERTO' AND vw.cod_usuario = @COD_USUARIO AND vw.cod_farmacia = @COD_FARMACIA GROUP BY vw.cod_farmacia, vw.cod_medicamento, nme_medicamento HAVING SUM(vw.qtd_movimentada) <> 0 UNION ALL --Cálculo do saldo SELECT vw.cod_farmacia, vw.cod_medicamento, nme_medicamento, 0 AS qtd_entrada_periodo, 0 AS qtd_saida_periodo, SUM(vw.qtd_movimentada) AS saldo, 0 AS qtd_entrada_aquisicao , 0 AS prc_unit , 0 AS estoque_dia, 0 AS vlr_estoque_dia, 0 AS prc_unit_medio_ant_2017 FROM historico_movimentacao_resumo vw WHERE vw.dth_movimentacao <= @DATA_FINAL AND vw.cod_usuario = @COD_USUARIO AND vw.cod_farmacia = @COD_FARMACIA GROUP BY vw.cod_farmacia, vw.cod_medicamento, nme_medicamento HAVING SUM(vw.qtd_movimentada) <> 0 UNION ALL SELECT vw.cod_farmacia, vw.cod_medicamento, nme_medicamento, 0 AS qtd_entrada_periodo, 0 AS qtd_saida_periodo, 0 AS saldo, 0 AS qtd_entrada_aquisicao, 0 AS prc_unit, SUM(vw.qtd_movimentada) ESTOQUE_DIA, SUM(vw.qtd_movimentada * vw.prc_unit) vlr_estoque_dia, 0 AS prc_unit_medio_ant_2017 FROM historico_movimentacao_resumo vw WHERE vw.dth_movimentacao < @DATA_INICIAL AND vw.cod_usuario = @COD_USUARIO AND vw.cod_farmacia = @COD_FARMACIA GROUP BY vw.cod_farmacia, vw.cod_medicamento, nme_medicamento HAVING SUM(vw.qtd_movimentada) <> 0 SELECT @NME_FARMACIA = nme_farmacia FROM farmacia WHERE cod_farmacia = @COD_FARMACIA INSERT INTO rel_resumo_movimentacao (cod_farmacia, nme_farmacia, cod_usuario, cod_medicamento, nme_medicamento, qtd_entrada_periodo, qtd_saida_periodo, saldo_fim, qtd_entrada_aquisicao, prc_medio_entrada, prc_unit_medio_ant_2017, saldo_ini, vlr_saldo_ini) SELECT tmp.cod_farmacia, @NME_FARMACIA, @COD_USUARIO, tmp.cod_medicamento AS COD_MAT_EST, tmp.nme_medicamento AS DESC_RESU_MAT, SUM(tmp.qtd_entrada_periodo) AS QTD_ENTRADA_PERIODO, SUM(ABS(tmp.qtd_saida_periodo)) AS QTD_SAIDA_PERIODO, SUM(tmp.saldo) AS SALDO, SUM(tmp.qtd_entrada_aquisicao) AS QTD_ENTRADA_AQUISICAO, MAX(tmp.prc_unit) AS VLR_UNIT_MEDICAMENTO, MAX(tmp.prc_unit_medio_ant_2017) AS PRC_UNIT_MEDIO_ANT_2017, SUM(ESTOQUE_DIA) AS ESTOQUE_DIA, SUM(ESTOQUE_DIA) * MAX(prc_unit_medio_ant_2017) AS VLR_ESTOQUE_DIA FROM @RSTMP AS tmp GROUP BY tmp.cod_farmacia, tmp.cod_medicamento, tmp.nme_medicamento HAVING SUM(tmp.QTD_ENTRADA_PERIODO) > 0 OR ABS(SUM(tmp.qtd_saida_periodo)) > 0 OR SUM(tmp.saldo) > 0 OR SUM(ESTOQUE_DIA) > 0 OR MAX(tmp.prc_unit) > 0 ORDER BY tmp.nme_medicamento DELETE historico_movimentacao_resumo WHERE cod_usuario = @cod_usuario SELECT COD_FARMACIA, NME_FARMACIA, cod_medicamento as COD_MAT_EST, nme_medicamento AS DESC_RESU_MAT, QTD_ENTRADA_PERIODO, QTD_SAIDA_PERIODO, saldo_fim AS SALDO, QTD_ENTRADA_AQUISICAO, PRC_MEDIO_ENTRADA, saldo_ini AS ESTOQUE_DIA, vlr_saldo_ini AS VLR_SALDO_INI_ATE_2017 FROM rel_resumo_movimentacao WHERE cod_usuario = @cod_usuario END
×
×
  • Create New...