01. DADOS GERAIS
| Linha de Produto: | TOTVS RENTAL |
|---|---|
| Segmento: | Serviços |
| Módulo: | SIGALOC |
| Função: | APPQueryresult |
| Ticket: | Não há. |
| Story: | DSERLOCA-4098 |
02. SITUAÇÃO/REQUISITO
Criar API do Tipo Post (Regra tipo API Sync) para receber o Body com a informações do Resultado da Query
03. SOLUÇÃO
Foi criada a API no seguinte end point: /APPQueryresult
Parâmetros de entrada:
Parâmetros de entrada para Retornar (01) Quantidade de Multas, (02) Motoristas por Cliente, (03) Qtde de Notificação de Multas, (05) Qtde de Bens em Manutenção, (05) Qtde de Motoristas
- cnpj_empresa- Empresa logada no aplicativo - SIGAMAT
- cod_query- Código da Query que será executada para a exbição dos dados de retorno no APP, as queries são executadas juntamente com a rotina banco de queries do APP, rotina LOCA098
- cod_cli - Código do cliente a ser filtrado na query
- loj_cli - Loja do cliente a ser filtrado na query
Obrigatórios:
- cnpj_empresa
- cod_query
- cod_cli
- loj_cli
Parâmetros de entrada para retornar os Serviços de Manutenção do Tipo Corretiva (06)
- cnpj_empresa- Empresa logada no aplicativo - SIGAMAT
- cod_query- Código da Query que será executada para a exbição dos dados de retorno no APP, as queries são executadas juntamente com a rotina banco de queries do APP, rotina LOCA098
Obrigatórios:
- cnpj_empresa
- cod_query
Parâmetros de entrada para retornar os Serviços de Manutenção do Tipo Corretiva (07)
- cnpj_empresa- Empresa logada no aplicativo - SIGAMAT
- cod_query- Código da Query que será executada para a exbição dos dados de retorno no APP, as queries são executadas juntamente com a rotina banco de queries do APP, rotina LOCA098
- cod_bem - código do Bem a ser filtrado
- placa - placa informada no bem a ser filtrado
Obrigatórios:
- cnpj_empresa
- cod_query
- cod_bem
- placa
Parâmetros de entrada para retornar Notas de Retorno e seus respectivos títulos a pagar (08)
- cnpj_empresa- Empresa logada no aplicativo - SIGAMAT
- cod_query- Código da Query que será executada para a exbição dos dados de retorno no APP, as queries são executadas juntamente com a rotina banco de queries do APP, rotina LOCA098
- cod_for - Código do Fornecedor da filial logada
- loj_for - Loja do Fornecedor da filial logada
- cdtini - data de inicio da emissão do titulo - tem que ser no formato americano - yyyymmdd
- cdfin - data de fim da emissão do titulo - tem que ser no formato americano - yyyymmdd
Obrigatórios:
- cnpj_empresa
- cod_query
- cod_for
- loj_for
- cdtini
- cdtfim
Parâmetros de entrada para retornar Tabela de Preço de Compras por Fornecedor (09)
- cnpj_empresa- Empresa logada no aplicativo - SIGAMAT
- cod_query- Código da Query que será executada para a exbição dos dados de retorno no APP, as queries são executadas juntamente com a rotina banco de queries do APP, rotina LOCA098
- cod_for - Código do Fornecedor da filial logada
- loj_for - Loja do Fornecedor da filial logada
Obrigatórios:
- cnpj_empresa
- cod_query
- cod_for
- loj_for
Parâmetros de entrada para retornar a ultima AS, o ultimo Projeto e Obra da FQ4 (10)
- cnpj_empresa- Empresa logada no aplicativo - SIGAMAT
- cod_query- Código da Query que será executada para a exibição dos dados de retorno no APP, as queries são executadas juntamente com a rotina banco de queries do APP, rotina LOCA098
- cod_bem - código do Bem a ser filtrado
Obrigatórios:
- cnpj_empresa
- cod_query
- tabela
- campopesq
- referencia
- retornos
- qtd
Parâmetros de entrada para retornar com a lista de uma tabela (11)
- cnpj_empresa- Empresa logada no aplicativo - SIGAMAT
- cod_query- Código da Query que será executada para a exibição dos dados de retorno no APP, as queries são executadas juntamente com a rotina banco de queries do APP, rotina LOCA098 (neste caso sempre "11")
- tabela - alias da tabela, por exemplo: "SA2" (para fornecedores), "SE4" (para condição de pagamento), "SB1" (produtos), etc
- campopesq - nome do campo em que será pesquisado no banco de dados, por exemplo: "A2_NOME"
- referencia - o que será pesquisado no campopesq, por exemplo: "JOAO"
- retornos - os campos que a consulta deverá retornar, por exemplo: "A2_COD, A2_LOJA, A2_NOME"
- qtd - quantidade de registros que a consulta poderá retornar, por exemplo: "10"
Request:
Para execução da Query 01 { Para execução da Query 02 { Para execução da Query 03 { Para execução da Query 04 { Para execução da Query 05 { Para execução da Query 06 { Para execução da Query 07 { Para execução da Query 08 { Para execução da Query 09 { Para execução da Query 10 { Para execução da Query 11 (Fornecedores) { Para execução da Query 11 (Condição de pagamento) { Para execução da Query 11 (Produtos) { | |
Retorno esperado:
Response:
cod_query = 01 { cod_query = 02 { cod_query = 03 { cod_query = 04 { cod_query = 05 { cod_query = 06 { } cod_query = 07 { cod_query = 08 { cod_query = 09 { cod_query = 10 { cod_query = 11 (Fornecedores) { cod_query = 11 (Condição de pagamento) { cod_query = 11 (Produtos) { |
04. DEMAIS INFORMAÇÕES
Para saber as queries que são executadas no app, seguem abaixo com seus respectivos códigos:
cod 01
SELECT TRX_NOME, COUNT(*) MULTAS
FROM xEmp('TRX') TRX
INNER JOIN xEmp('FP0') FP0
ON FP0_FILIAL = xFilial('FP0')
AND FP0.D_E_L_E_T_ = ' '
AND FP0_CLI = '${CLIENT_ID}'
AND FP0_LOJA = '${CLIENT_LOJA}'
INNER JOIN xEmp('FPA') FPA
ON FPA_FILIAL = xFilial('FPA')
AND FPA_PROJET = FP0_PROJET
AND FPA.D_E_L_E_T_ = ' '
AND FPA_AS <> ''
WHERE TRX_FILIAL = xFilial('TRX')
AND TRX_AS = FPA_AS
AND TRX_TPMULT = 'TRANSITO'
AND TRX.D_E_L_E_T_ = ' '
GROUP BY TRX_NOME
ORDER BY TRX_NOME
cod 02
SELECT DA4_COD,DA4_NOME,DA4_CGC,DA4_NUMCNH
FROM "+RETSQLNAME("DA4")+" DA4 "
WHERE DA4_FILIAL = '" + xFilial('DA4') + "' "
AND DA4_CODCLI = '"+cCli+"' "
AND DA4_LOJCLI = '"+cLoja+"' "
AND DA4.D_E_L_E_T_ = ' ' "
cod03
SELECT COUNT(*) AS QTDE_NOTIFICACOES_MULTAS
FROM xEmp('TRX') TRX
INNER JOIN xEmp('FP0') FP0
ON FP0_FILIAL = xFilial('FP0')
AND FP0.D_E_L_E_T_ = ' '
AND FP0_CLI = '${CLIENT_ID}'
AND FP0_LOJA = '${CLIENT_LOJA}'
INNER JOIN xEmp('FPA') FPA
ON FPA_FILIAL = xFilial('FPA')
AND FPA_PROJET = FP0_PROJET
AND FPA.D_E_L_E_T_ = ' '
AND FPA_AS <> ''
AND TRX_TPMULT = 'NOTIFICACAO'
WHERE TRX_FILIAL = xFilial('TRX')
AND TRX_AS = FPA_AS
AND TRX.D_E_L_E_T_ = ' '
cod04
SELECT COUNT(*) AS QTDE_BENS_MANUTENCAO
FROM xEmp('FQF') FQF
INNER JOIN xEmp('FP0') FP0
ON FP0_FILIAL = xFilial('FP0')
AND FQF_PROJET = FP0_PROJET
AND FP0.D_E_L_E_T_ = ' '
AND FP0_CLI = '${CLIENT_ID}'
AND FP0_LOJA = '${CLIENT_LOJA}'
INNER JOIN xEmp('FQE') FQE
ON FQE_FILIAL = xFilial('FQE')
AND FQE_CODIGO = FQF_SUBST
AND FQE.D_E_L_E_T_ = ' '
WHERE FQF_FILIAL = ' '
AND FQF_OS <> ''
AND FQF_DPRFIM = ''
AND FQF.D_E_L_E_T_ = ' '
cod05
SELECT COUNT(*) AS QTDE_MOTORISTAS
FROM xEmp('DA4') DA4
WHERE DA4_FILIAL = xFilial('DA4')
AND DA4_CODCLI = '${CLIENT_ID}'
AND DA4_LOJCLI = '${CLIENT_LOJA}'
AND DA4.D_E_L_E_T_ = ' '
cod06
SELECT T4_SERVICO, T4_NOME,TE_CARACTE "
FROM "+RETSQLNAME("ST4")+" ST4 "
INNER JOIN "+RetSqlName("STE")+" STE ON TE_TIPOMAN = T4_TIPOMAN AND STE.D_E_L_E_T_ = ' ' AND TE_CARACTE = 'C' "
WHERE T4_FILIAL = '" + xFilial('ST4') + "' "
AND ST4.D_E_L_E_T_ = ' ' "
cod06
cQuery := "SELECT T9_FILIAL, T9_CODBEM, T9_NOME, T9_PLACA, T9_CODFAMI, T6_NOME "
cQuery += "FROM "+RETSQLNAME("ST9")+" ST9 "
cQuery += "INNER JOIN "+RetSqlName("ST6")+" ST6 ON T6_CODFAMI = T9_CODFAMI AND ST6.D_E_L_E_T_ = '' "
cQuery += "WHERE T9_FILIAL = '" + xFilial('ST9') + "' "
If !Empty(cPlaca)
cQuery += "AND LTRIM(RTRIM(REPLACE(T9_PLACA,'-',''))) = '" + cPlaca + "' "
EndIf
If !Empty(cBem)
cQuery += "AND T9_CODBEM = '" + cBem + "' "
EndIf
cQuery += "AND ST9.D_E_L_E_T_ = ' ' "
EndIf
cod07
cQuery := "SELECT T9_FILIAL, T9_CODBEM, T9_NOME, T9_PLACA, T9_CODFAMI, T6_NOME "
cQuery += "FROM "+RETSQLNAME("ST9")+" ST9 "
cQuery += "INNER JOIN "+RetSqlName("ST6")+" ST6 ON T6_CODFAMI = T9_CODFAMI AND ST6.D_E_L_E_T_ = '' "
cQuery += "WHERE T9_FILIAL = '" + xFilial('ST9') + "' "
If !Empty(cPlaca)
cQuery += "AND LTRIM(RTRIM(REPLACE(T9_PLACA,'-',''))) = '" + cPlaca + "' "
EndIf
If !Empty(cBem)
cQuery += "AND T9_CODBEM = '" + cBem + "' "
EndIf
cQuery += "AND ST9.D_E_L_E_T_ = ' ' "
cod08
cQuery := "SELECT SF1.F1_DOC NOTA, "
cQuery += "MAX(FH1.FH1_ORDEM) OS, "
cQuery += "MAX(FH1.FH1_PEDCOM) PED_COMPRA, "
cQuery += "SE2.E2_VALOR VLR_TOTAL, "
cQuery += "MAX(SF1.F1_EMISSAO) EMISS_NOTA, SE2.E2_NUM NUM_TITU, "
cQuery += "MAX(SE2.E2_EMISSAO) EMISS_TIT, "
cQuery += "(SE2.E2_PARCELA) PARCELA, "
cQuery += "MAX(SE2.E2_VENCREA) PREV_PAGTO, "
cQuery += "MAX(SE2.E2_BAIXA) PAGO_EM "
cQuery += "FROM "+RETSQLNAME("SE2")+" SE2 "
cQuery += "LEFT JOIN "+RetSqlName("SD1")+" SD1 ON SD1.D1_FILIAL = SE2.E2_FILIAL "
cQuery += "AND SD1.D1_DOC = SE2.E2_NUM AND SD1.D_E_L_E_T_ = '' "
cQuery += "AND SD1.D1_FORNECE = SE2.E2_FORNECE AND SD1.D1_LOJA = SE2.E2_LOJA "
cQuery += "LEFT JOIN "+RetSqlName("SF1")+" SF1 ON SF1.F1_FILIAL = SD1.D1_FILIAL "
//cQuery += "AND SF1.F1_DOC = SD1.D1_DOC AND SF1.D_E_L_E_T_ = '' AND SF1.F1_FORNECE = '"+cCodFor+"' AND SF1.F1_LOJA = '"+cLojFor+"' "
cQuery += "AND SF1.F1_DOC = SD1.D1_DOC AND SF1.D_E_L_E_T_ = '' "
cQuery += "LEFT JOIN "+RetSqlName("FH1")+" FH1 ON FH1.FH1_FILIAL = SD1.D1_FILIAL "
cQuery += "AND FH1.FH1_PEDCOM = SD1.D1_PEDIDO AND FH1.FH1_CODIGO = SD1.D1_COD AND FH1.D_E_L_E_T_ = '' "
cQuery += "WHERE SE2.E2_FILIAL = '" + xFilial('SE2') + "' AND SE2.D_E_L_E_T_ = '' "
cQuery += "AND SE2.E2_FORNECE = '"+cCodFor+"' AND SE2.E2_LOJA = '"+cLojFor+"' "
cQuery += "AND SE2.E2_EMISSAO >= '"+cdtini+"' AND SE2.E2_EMISSAO <= '"+cdtfim+"' "
cQuery += "GROUP BY SF1.F1_DOC,SE2.E2_VALOR,SE2.E2_PARCELA,SE2.E2_NUM "
cod09
cQuery := "SELECT AIA_DATATE,AIB.AIB_CODFOR,AIB.AIB_LOJFOR, AIB.AIB_CODPRO, "
cQuery += "SB1.B1_DESC, SB1.B1_UM,AIB.AIB_PRCCOM,AIB_CODTAB, AIB.AIB_ITEM "
cQuery += "FROM "+RETSQLNAME("AIA")+" AIA "
cQuery += "INNER JOIN "+RetSqlName("AIB")+" AIB ON AIA.AIA_CODTAB = AIB.AIB_CODTAB "
cQuery += "AND AIA.AIA_FILIAL = AIB.AIB_FILIAL AND AIB.AIB_FILIAL = '" + xFilial('AIB') + "' AND AIB.D_E_L_E_T_ = '' "
cQuery += "AND AIB.AIB_CODFOR = '"+cCodFor+"' AND AIB.AIB_LOJFOR = '"+cLojFor+"' AND AIB.D_E_L_E_T_ = '' "
cQuery += "INNER JOIN "+RetSqlName("SB1")+" SB1 ON AIB.AIB_CODPRO = SB1.B1_COD "
cQuery += "AND SB1.B1_FILIAL = '" + xFilial('SB1') + "'AND SB1.D_E_L_E_T_ = '' "
cQuery += "WHERE AIA.AIA_FILIAL = '" + xFilial('AIA') + "' AND AIA.D_E_L_E_T_ = '' "
cQuery += "AND AIA.AIA_DATATE >= '"+DTOS(dDataBase)+"' "
cQuery += "ORDER BY AIB.AIB_CODTAB "
cod10
cQuer := "SELECT * "
cQuer += "FROM "+RETSQLNAME("FQ4")+" FQ41 "
cQuer += "WHERE FQ41.FQ4_FILIAL = '" + xFilial('FQ4') + "' AND FQ41.D_E_L_E_T_ = '' "
cQuer += "AND FQ41.R_E_C_N_O_ = '"+str(TRBFQ4->RECNO)+"' "
cod11
If Upper(TCGetDB()) $ "MSSQL"
cLinha := "SELECT TOP "+alltrim(cQtd)+" "+cRetornos
cComando := 'cQuery += cLinha '
&(cComando)
else
cLinha := "SELECT "+cRetornos
cComando := 'cQuery += cLinha '
&(cComando)
EndIf
cLinha := " FROM "+retsqlname(cTabela)+" "+cTabela
cComando := 'cQuery += cLinha '
&(cComando)
cLinha := " WHERE "+alltrim(cTabela)+".D_E_L_E_T_ = ' ' "
cComando := 'cQuery += cLinha '
&(cComando)
cLinha := " AND UPPER("+alltrim(cTabela)+"."+cCampoPesq+") LIKE '%"+cReferencia+"%' "
cComando := 'cQuery += cLinha '
&(cComando)
If Upper(TCGetDB()) $ "POSTGRES"
cQuery += " LIMIT "+alltrim(cQtd)
EndIF
If Upper(TCGetDB()) $ "ORACLE"
cQuery += " AND ROWNUM <= "+alltrim(cQtd)
EndIf