Integração DAV via Stored Procedure
Interface de Integração de Orçamento via Stored Procedure:
Índice
Conceito
O processo de integração de pré-venda (DAVs) via stored procedure serve para que sistemas parceiros similares ao Totall Order possam enviar DAVs para serem resgatadas pelo Commerce Checkout.
A imagem abaixo ilustra o uso das stored procedures para enviar um pedido de venda para o banco de dados.
ENVIA_DAV
Método responsável pela inserção ou atualização de uma DAV ou Pré-venda. Quando o orçamento é novo ele não ficará disponível para ser vendido enquanto não for executado o método VALIDA_DAV. Caso alguma inconsistência seja verificada o método gerará exceção. Para PostgreSQL foi implementado como uma função que retorna o campo NUMPED. No Oracle deve-se chamar como Stored Procedure passando os valores por parâmetro e pegando o retorno no parâmetro NUMPED.
Parâmetro | Significado | Tipo | Tamanho | Aceita Nulo | Default | Domínio | Coluna Retorno? |
---|---|---|---|---|---|---|---|
CODEXT | Código Externo | NUMBER | 15,0 | Sim | |||
CODSER | Série Padrão para a Venda | CHAR | 2 | Sim | |||
DOCNFP | Documento p/ NFP | VARCHAR2 | 15 | Sim | |||
DATAPR | Data de aprovação | DATE | 7 | Sim | |||
CODFIL | Filial | CHAR | 3 | ||||
TIPPED | Tipo de Pedido/OS | CHAR | 1 | '0' | O - DAV
P - Pré-Venda |
||
CLIEXT | Código externo do Cliente | VARCHAR | 20 | ||||
VLRTOT | Valor Total | NUMBER | 12,2 | ||||
VLRPAR | Valor da Parcela | NUMBER | 12,2 | ||||
VLRDES | Valor do Desconto/Acréscimo | NUMBER | 12,2 | ||||
QTDPAR | Qtd. de Parcelas | NUMBER | 5,0 | ||||
FILFAT | Filial. End. Fatura | CHAR | 3 | ||||
NUMFAT | Núm. End. Fatura | NUMBER | 4,0 | ||||
FILENT | Filial. End. Entrega | CHAR | 3 | ||||
NUMENT | Núm. End. Entrega | NUMBER | 4,0 | ||||
FILCOB | Filial. End Cobrança | CHAR | 3 | ||||
NUMCOB | Núm. End Cobrança | NUMBER | 4,0 | ||||
DATVAL | Validade | DATE | 7 | ||||
DATPRI | 1º Parcela | DATE | 7 | ||||
APEVEN | Apelido Vendedor | VARCHAR | 10 | ||||
PLANO | Plano | CHAR | 9 | ||||
DESPRE | Descrição da Tabela de Preços (se nulo utiliza VAREJO) | VARCHAR | 30 | Sim | |||
RESERV | Reserva? | VARCHAR2 | 1 | 'F' | |||
EMIDES | Frete pelo Emitente? | VARCHAR2 | 1 | 'F' | |||
PESLIQ | Peso Líquido | NUMBER | 12,2 | Sim | |||
PESBRU | Peso Bruto | NUMBER | 12,2 | Sim | |||
VLRSEG | Valor do Seguro | NUMBER | 12,2 | Sim | |||
VLRFRE | Valor do Frete | NUMBER | 12,2 | Sim | |||
SINAL | Sinal ou Entrada | NUMBER | 12,2 | Sim | |||
OBSERV | Observações de venda | VARCHAR2 | 4000 | Sim | |||
NUMBLO | Número do Bloco | VARCHAR2 | 8 | Sim | |||
OBSORC | Observação Orçamento | VARCHAR2 | 4000 | Sim | |||
DATSEG | 2º Parcela | DATE | 7 | Sim | |||
APROVA | Tipo Aprovação | CHAR | 1 | 'A' | A - Aprovado
E - Em Aprovação |
||
APRCLI | Aprovação Cliente | CHAR | 1 | '1' | 1 - Aprovado
A - Em Aberto 2 - Reprovado |
||
PLACAS | Placa Veículo | VARCHAR2 | 7 | Sim | |||
QTD_KM | Qtde KM | NUMBER | 7,0 | Sim | |||
CODSEQ | Cód. Sequen. NSU | NUMBER | 22 | Sim | |||
CODEMP | Código da Empresa da Retaguarda | NUMBER | 5 | 0 - TOTALL 1 - INTERSYS 2 - ADVANCE 3 - SARAIVA |
|||
ASSINA | Assinatura do Registro | VARCHAR | 256 | Sim | |||
NUMPED | Número da DAV ou Pré-Venda | CHAR | 8 | Sim | Sim |
ENVIAITEM_DAV
Método responsável pela inserção ou atualização de um item de DAV ou Pré-venda. Somente pode ser executado após ter sido incluso o DAV pelo método ENVIA_DAV. Caso alguma inconsistência seja verificada gerará exceção.
Parâmetro | Significado | Tipo | Tamanho | Aceita Nulo | Default | Domínio | Coluna Retorno? |
---|---|---|---|---|---|---|---|
CODFIL | Filial da DAV | CHAR | 3 | ||||
TIPPED | Tipo Pedido/OS | CHAR | 1 | 'O' | O - DAV
P - Pré-Venda |
||
NUMPED | Número da DAV ou Pré-Venda | CHAR | 8 | ||||
NUMITE | Item (número seqüencial por DAV) | NUMBER | 5,0 | ||||
VLRCUS | Valor Total | NUMBER | 12,2 | ||||
VLRPGT | Valor Total Sem Desc/Acrés | NUMBER | 12,2 | ||||
QTDITE | Quantidade | NUMBER | 12,4 | ||||
VLRITE | Vlr. Unitário | NUMBER | 14,4 | ||||
VLRENT | Vlr. Unitário Sem desconto/Acrés. | NUMBER | 14,4 | ||||
PROEXT | Código externo do Produto | VARCHAR | 20 | ||||
PROMOC | Promoção | CHAR | 1 | 'N' | N - Não promocional no plano
E - Promocional no plano Q ? Promocional para qualquer plano |
||
PREUNI | Preço Unitário | NUMBER | 12,2 | Sim | |||
DESMUL | Sub-Estoque | VARCHAR | 30 | Sim | Nulo | ||
OBSERV | Observação | VARCHAR2 | 4000 | Sim | |||
PERIPI | % IPI ÿltima Compra | NUMBER | 5,2 | Sim | |||
ASSINA | Assinatura do Registro | VARCHAR | 256 | Sim |
EXCLUIITEM_DAV
Método responsável pela exclusão de um item de DAV. Caso não encontre o item ou o mesmo não possa ser excluído gerará uma exceção.
Parâmetro | Significado | Tipo | Tamanho | Aceita Nulo | Default | Domínio | Coluna Retorno? |
---|---|---|---|---|---|---|---|
CODFIL | Filial da DAV | CHAR | 3 | ||||
TIPPED | Tipo Pedido/OS | CHAR | 1 | 'O' | O - DAV
P - Pré-Venda |
||
NUMPED | Número da DAV ou Pré-Venda | CHAR | 8 | ||||
NUMITE | Item (número seqüencial por DAV) | NUMBER | 5,0 |
VALIDA_DAV
Método responsável pela verificação do DAV e liberação para o Checkout. Realizando validações entre o DAV e seus itens. Caso a validação não gere exceção o DAV ficará disponível para ser resgatado na Venda. Caso alguma inconsistência seja verificada gerará exceção.
Parâmetro | Significado | Tipo | Tamanho | Aceita Nulo | Default | Domínio | Coluna Retorno? |
---|---|---|---|---|---|---|---|
CODFIL | Filial da DAV | CHAR | 3 | ||||
NUMPED | Número da DAV ou Pré-Venda | CHAR | 8 | ||||
TIPPED | Tipo Pedido/OS | CHAR | 1 | 'O' | O - DAV
P - Pré-Venda |
CANCELA_DAV
Função responsável pelo cancelamento de uma DAV.
Obs.: Função não existente para Pré-Venda por obrigação do PAF. Caso não seja possível o cancelamento gerará exceção.
Parâmetro | Significado | Tipo | Tamanho | Aceita Nulo | Default | Domínio | Coluna Retorno? |
---|---|---|---|---|---|---|---|
CODFIL | Filial da DAV | CHAR | 3 | ||||
NUMPED | Número da DAV ou Pré-Venda | CHAR | 8 |
ASSINA_DAV
Método serve para gravar a coluna ASSINA da TT_ORC em caso de inclusão de um novo orçamento. Isto porque é necessário executar ENVIA_DAV para obter o NUMPED. E o NUMPED faz parte da assinatura.
Parâmetro | Significado | Tipo | Tamanho | Aceita Nulo | Default | Domínio | Coluna Retorno? |
---|---|---|---|---|---|---|---|
CODFIL | Filial da DAV | CHAR | 3 | ||||
NUMPED | Número da DAV ou Pré-Venda | CHAR | 8 | ||||
TIPPED | Tipo Pedido/OS | CHAR | 1 | 'O' | O - DAV
P - Pré-Venda |
||
ASSINA | Assinatura do Registro | VARCHAR | 256 | Sim |
Procedimentos para Assinatura
Assinatura de DAV
1. Chamar a função conecta para o código da empresa parceira na Totall:
SELECT Conecta(:CodigoEmpresa, path_ttsegur) AS pConecta, path_ttsegur AS pPathSegur FROM tt_cfg
CodigoEmpresa:
0 - TOTALL
1 - INTERSYS
2 - ADVANCE
3 - SARAIVA
2. Gerar Hash:
pSenhaFixa: ÿ uma constante de segurança enviada parceiro por e-mail.
pHashConexao := md5(pConecta || pSenhaFixa)
3. Enviar a DAV:
SELECT ENVIA_DAV(...) as pNumped FROM dual
ou
DECLARE BEGIN ENVIA_DAV(..., pNumped); END;
4. Gerar texto a ser criptografado:
SELECT ConcatenaORC(CODFIL, TIPPED, NUMPED, NUMPED, PED_EM, VLRTOT, CODEMP) as pTexto FROM tt_orc WHERE CODFIL = :CODFIL AND TIPPED = :TIPPED AND NUMPED = :NUMPED
ÿ importante concatenar os campos da TT_ORC da forma indicada para garantir que os dados concatenados sejam idênticos aos gravados.
5. Assinar os dados da DAV:
SELECT AssinaTab('TT_ORC' :pTexto :pConecta IN NUMBER, :pHashConexao IN VARCHAR2, '', :CodigoEmpresa, path_ttsegur) FROM tt_cfg;
6. Gravar Assinatura:
DECLARE BEGIN ASSINA_DAV(:CODFIL, :NUMPED, :TIPPED, :ASSINA) END;
ou
SELECT ASSINA_DAV(:CODFIL, :NUMPED, :TIPPED, :ASSINA);
Assinatura de Item de DAV
1. Chamar a função conecta:
SELECT Conecta (:CodigoEmpresa, path_ttsegur) as pConecta, path_ttsegur as pPathSegur FROM tt_cfg
CodigoEmpresa: N ? Empresa
2. Gerar Hash da mesma forma como foi feita na assinatura da DAV.
3. Gerar texto a ser criptografado:
SELECT ConcatenaIOR(:CODFIL, :TIPPED, :NUMPED, :NUMITE, :COOVEN) as pTexto FROM dual
Parâmetro COOVEN é gravado pelo Checkout. Deve-se passar null.
4. Assinar os dados do item:
SELECT AssinaTab('TT_IOR', :pTexto, :pConecta IN NUMBER, :pHashConexao IN VARCHAR2, '', :CodigoEmpresa, path_ttsegur) FROM tt_cfg
5. Gravar Item da DAV.