Olá, bom dia!
Estou precisando criar uma aplicação de consulta que me mostre um comparativo entre contabilidade e financeiro.
Tudo estaria resolvido se eu conseguisse criar uma view e puxar para a aplicação do ScriptCase, porém eu consigo obter a informação através da seguinte estrutura:
SELECT ‘01’ AS EMPRESA, D.E2_FILIAL, D.E2_NUM, D.E2_TIPO, D.E2_VALOR, S.A2_CONTA,
(CASE WHEN D.E2_TIPO = ‘PA’ AND D.E2_BAIXA = ‘’ THEN (D.E2_VALOR * (-1))
WHEN D.E2_TIPO = ‘PA’ AND D.E2_BAIXA > ‘20170228’ THEN (D.E2_VALOR * (-1))
WHEN D.E2_TIPO = ‘PA’ AND D.E2_BAIXA <> ‘’ THEN (D.E2_SALDO * (-1))
WHEN D.E2_TIPO <> ‘PA’ AND D.E2_BAIXA = ‘’ THEN (D.E2_VALOR)
WHEN D.E2_TIPO <> ‘PA’ AND D.E2_BAIXA > '20170228’ THEN(D.E2_VALOR)
WHEN D.E2_TIPO <> ‘PA’ AND D.E2_BAIXA <> ‘’ THEN (D.E2_SALDO)
END ) AS SALDO_MES, D.E2_SALDO,
(CASE WHEN D.E2_BAIXA > ‘20170228’ THEN ‘’
ELSE D.E2_BAIXA END) AS E2_BAIXA_T, D.R_E_C_N_O_, D.E2_EMIS1, D.E2_VENCREA
FROM SE2010 D
LEFT JOIN .SA2010 S ON S.A2_COD = D.E2_FORNECE AND D.E2_LOJA = S.A2_LOJA
WHERE (D.D_E_L_E_T_ <> ‘’ OR D.D_E_L_E_T_ IS NULL)
AND (S.D_E_L_E_T_ <> '’ OR S.D_E_L_E_T_ IS NULL)
AND D.E2_EMIS1 BETWEEN ‘20140401’ AND ‘20170228’
AND D.E2_VENCREA BETWEEN ‘20110101’ AND ‘20411231’
Ocorre que esse campos negritos tenho que deixar dinamico para ficar a critério do usuário.
Pensei em criar uma procedure onde iria me gerar as informações…
porém meu questionamento é teria como eu fazer essa consulta sem que fosse necessario eu gravar o resultado dessa estrutura em outra tabela e só ai criar uma view e puxar para o scriptcase?
Alguém poderia me ajudar com essa aplicação?
Obs.: eu havia pensando em colocar dentro do sql do scriptcase e substiuir por campos ficando assim:
SELECT ‘01’ AS EMPRESA, D.E2_FILIAL, D.E2_NUM, D.E2_TIPO, D.E2_VALOR, S.A2_CONTA,
(CASE WHEN D.E2_TIPO = ‘PA’ AND D.E2_BAIXA = ‘’ THEN (D.E2_VALOR * (-1))
WHEN D.E2_TIPO = ‘PA’ AND D.E2_BAIXA > ‘{campo_criado_no_sc}’ THEN (D.E2_VALOR * (-1))
WHEN D.E2_TIPO = ‘PA’ AND D.E2_BAIXA <> ‘’ THEN (D.E2_SALDO * (-1))
WHEN D.E2_TIPO <> ‘PA’ AND D.E2_BAIXA = ‘’ THEN (D.E2_VALOR)
WHEN D.E2_TIPO <> ‘PA’ AND D.E2_BAIXA >’{campo_criado_no_sc}’ THEN(D.E2_VALOR)
WHEN D.E2_TIPO <> ‘PA’ AND D.E2_BAIXA <> ‘’ THEN (D.E2_SALDO)
END ) AS SALDO_MES, D.E2_SALDO,
(CASE WHEN D.E2_BAIXA > '{campo_criado_no_sc}’ THEN ‘’
ELSE D.E2_BAIXA END) AS E2_BAIXA_T, D.R_E_C_N_O_, D.E2_EMIS1, D.E2_VENCREA
FROM SE2010 D
LEFT JOIN SA2010 S ON S.A2_COD = D.E2_FORNECE AND D.E2_LOJA = S.A2_LOJA
WHERE (D.D_E_L_E_T_ <> ‘’ OR D.D_E_L_E_T_ IS NULL)
AND (S.D_E_L_E_T_ <> '’ OR S.D_E_L_E_T_ IS NULL)
AND D.E2_EMIS1 BETWEEN ‘{campo_criado_no_sc}’ AND’{campo_criado_no_sc}’
AND D.E2_VENCREA BETWEEN ‘’{campo_criado_no_sc}’ AND’{campo_criado_no_sc}
porém acaba dando BUG na aplicação pois o banco do TOTVS para cada empresa ele trabalha com uma estrutura de tabela diferente e no nosso caso temos "6 "
e ficaria essa consulta ligada a outras 5 através do union e o scriptcase acaba ‘bugando’