Bom dia Rodolfo.
Você tem o comando inteiro na opção de SQL dentro da sua consulta, certo?
no final do comando, onde você usa coloca as condições do filtro, você vai trocar os filtros por uma variável. Ficaria mais ou menos assim usa consulta SQL do scriptcase:
SELECT P.NUMERO_CONTRATO, P.STATUS_CONTRATO, P.CLIEN, C.CLI_RAZA, C.CLI_NOME, P.DATA_DIGITACAO, P.DATA_VALIDADE, P.DATA_CONTRATO, P.ORDEM_COMPRA, P.GRUPO_NEGOCIO,
SITUACAO = case P.Status_Contrato
when 1 then ‘Aberto’
when 2 then ‘Em Andamento’
when 3 then ‘Fechado’
when 4 then ‘Cancelado’
when 5 then ‘Bloqueado’
else ‘E R R O’
end,
(SELECT IsNull(SUM(I.QUANTIDADE),0) FROM ITENS_CONTRATO_PEDIDO I
WHERE I.EMP_CODI = P.EMP_CODI
AND I.FIL_CODI = P.FIL_CODI
AND I.NUMERO_CONTRATO = P.NUMERO_CONTRATO) AS QUANTIDADE_PEDIDA,
(SELECT IsNull(SUM(IT.QUANTIDADE * IT.FATOR_CONVERSAO),0) FROM ITENS_NOTA_FISCAL_VENDA IT, NOTA_FISCAL_VENDA NF
WHERE IT.EMP_CODI = NF.EMP_CODI
AND IT.FIL_CODI = NF.FIL_CODI
AND IT.NUMERO_NFISCAL = NF.NUMERO_NFISCAL
AND IT.SERIE_NFISCAL = NF.SERIE_NFISCAL
AND NF.EMP_CODI = P.EMP_CODI
AND NF.FIL_CODI = P.FIL_CODI
AND NF.NUMERO_CONTRATO = P.NUMERO_CONTRATO
AND NF.DT_CANCELAMENTO is NULL
AND ((NF.NFREM_MER_CONTA_ORD_TER_C = ‘0’) or (NF.NFREM_MER_CONTA_ORD_TER_C is NULL))
AND (NF.nf_venda_entrega_futura <> ‘S’ or NF.nf_venda_entrega_futura is null) ) AS QUANTIDADE_CARREGADA,
((SELECT IsNull(SUM(I.QUANTIDADE),0) FROM ITENS_CONTRATO_PEDIDO I
WHERE I.EMP_CODI = P.EMP_CODI
AND I.FIL_CODI = P.FIL_CODI
AND I.NUMERO_CONTRATO = P.NUMERO_CONTRATO) -
(SELECT IsNull(SUM(IT.QUANTIDADE * IT.FATOR_CONVERSAO),0) FROM ITENS_NOTA_FISCAL_VENDA IT, NOTA_FISCAL_VENDA NF
WHERE IT.EMP_CODI = NF.EMP_CODI
AND IT.FIL_CODI = NF.FIL_CODI
AND IT.NUMERO_NFISCAL = NF.NUMERO_NFISCAL
AND IT.SERIE_NFISCAL = NF.SERIE_NFISCAL
AND NF.EMP_CODI = P.EMP_CODI
AND NF.FIL_CODI = P.FIL_CODI
AND NF.NUMERO_CONTRATO = P.NUMERO_CONTRATO
AND NF.DT_CANCELAMENTO is NULL
AND ((NF.NFREM_MER_CONTA_ORD_TER_C = ‘0’) or (NF.NFREM_MER_CONTA_ORD_TER_C is NULL))
AND (NF.nf_venda_entrega_futura <> ‘S’ or NF.nf_venda_entrega_futura is null) )) AS QUANTIDADE_SALDO
FROM CONTRATO_PEDIDO P, CLI C
[variavel com o restante do SQL]
No evento onScriptInit, ou no AppInit, você vai verificar se o campo GRUPO_NEGOCIOS = ‘S’.
sua lógica será:
IF (GRUPO_NEGOCIOS == ‘S’){
[variavel com o restante do SQL] = “WHERE P.CLIEN = C.CLI_CODI
AND P.GRUPO_NEGOCIOS = [glo_gnegocios]
AND P.CLIEN = [cod_cliente]”
}else{
[variavel com o restante do SQL] = “WHERE P.CLIEN = C.CLI_CODI
AND P.EMP_CODI = [glo_empresa]
AND P.FIL_CODI = [glo_filial]
AND P.CLIEN = [cod_cliente]”
}
Desta forma, o seu comando SQL será complementado com toda essa string.
Não cheguei a testar, mas acredito que vai funcionar com as devidas concatenações das variáveis.
Att.
André.