andresena47 Posted March 23, 2023 Share Posted March 23, 2023 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 errorhere is the procedureCREATE 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 SELECTCOD_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_2017FROM rel_resumo_movimentacaoWHERE cod_usuario = @cod_usuario END Link to comment Share on other sites More sharing options...
eduardo_rhamos Posted March 24, 2023 Share Posted March 24, 2023 What is the error??? provide more information Link to comment Share on other sites More sharing options...
anish.rai Posted March 28, 2023 Share Posted March 28, 2023 Thank you for posting to the Jaspersoft Community. Our team of experts has read your question and we are working to get you an answer as quickly as we can. If you have a Jaspersoft Professional Subscription plan, please visit https://support.tibco.com/s/ for direct access to our technical support teams offering guaranteed response times. Link to comment Share on other sites More sharing options...
prparame Posted March 28, 2023 Share Posted March 28, 2023 Could you please provide more details? 1. What is the error? Please share your jasperserver.log file/ error trace(webappsjasperserver[-pro]WEB-INFlogs)2. You mentioned that the report was working as expected while testing from Jasper server? Are you invoking the same procedure from Jaspersoft as well?3. if possible, please attach your .jrxml file here.4. How do you pass the parameters from cake php? Are you using any rest api call for this? Link to comment Share on other sites More sharing options...
Mehak Rajkumar Posted April 13, 2023 Share Posted April 13, 2023 Dear user, we eagerly await your response to the comment mentioned above. Please provide the requested information so that we can assist you in addressing your question effectively. Thank you. Link to comment Share on other sites More sharing options...
andresena47 Posted May 29, 2023 Author Share Posted May 29, 2023 im solved just add set nocount on; and set nocount off; in the start and the end of query and dataset Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now