Jump to content
We've recently updated our Privacy Statement, available here ×

Error filling reportError executing SQL statement for


andresena47

Recommended Posts

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
 

Link to comment
Share on other sites

  • Replies 5
  • Created
  • Last Reply

Top Posters In This Topic

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

  • 3 weeks later...
  • 1 month later...

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...