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
What is the error??? provide more information
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.
Could you please provide more details?
1. What is the error? Please share your jasperserver.log file/ error trace(\webapps\jasperserver[-pro]\WEB-INF\logs)
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?
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.